mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-16 09:59:41 +02:00
Create a shared LLM client package that provides a unified interface to the mana-llm service, replacing 9 individual fetch-based integrations with consistent error handling, retry logic, and JSON extraction. Package (@manacore/shared-llm): - LlmModule with forRoot/forRootAsync (NestJS dynamic module) - LlmClientService: chat, json, vision, visionJson, embed, stream - LlmClient standalone class for non-NestJS consumers - extractJson utility (consolidates 3 markdown-stripping implementations) - retryFetch with exponential backoff (429, 5xx, network errors) - 44 unit tests (json-extractor, retry, llm-client) Migrated backends: - mana-core-auth: raw fetch → llm.json() - planta: raw fetch + vision → llm.visionJson() - nutriphi: raw fetch + regex → llm.visionJson() + llm.json() - chat: custom OllamaService (175 LOC) → llm.chatMessages() - context: raw fetch → llm.chat() (keeps token tracking) - traces: 2x raw fetch → llm.chat() - manadeck: @google/genai SDK → llm.json() + llm.visionJson() - bot-services: raw Ollama API → LlmClient standalone - matrix-ollama-bot: raw fetch → llm.chatMessages() + llm.vision() New credit operations: - AI_PLANT_ANALYSIS (2 credits, planta) - AI_GUIDE_GENERATION (5 credits, traces) - AI_CONTEXT_GENERATION (2 credits, context) - AI_BOT_CHAT (0.1 credits, matrix) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
30 lines
706 B
TypeScript
30 lines
706 B
TypeScript
/**
|
|
* Standalone exports for non-NestJS consumers (e.g. bot-services).
|
|
*
|
|
* Usage:
|
|
* import { LlmClient } from '@manacore/shared-llm/standalone';
|
|
* const llm = new LlmClient({ manaLlmUrl: 'http://localhost:3025' });
|
|
*/
|
|
|
|
export { LlmClient } from './llm-client';
|
|
export { resolveOptions } from './interfaces/llm-options.interface';
|
|
export type { LlmModuleOptions, ResolvedLlmOptions } from './interfaces/llm-options.interface';
|
|
|
|
// Types
|
|
export type {
|
|
ChatMessage,
|
|
ContentPart,
|
|
TextContentPart,
|
|
ImageContentPart,
|
|
ChatOptions,
|
|
JsonOptions,
|
|
VisionOptions,
|
|
TokenUsage,
|
|
ChatResult,
|
|
JsonResult,
|
|
ModelInfo,
|
|
HealthStatus,
|
|
} from './types';
|
|
|
|
// Utilities
|
|
export { extractJson } from './utils';
|