universal-llm-client 4.2.0 → 4.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +139 -103
- package/LICENSE +21 -21
- package/README.md +591 -591
- package/dist/ai-model.js.map +1 -1
- package/dist/auditor.js.map +1 -1
- package/dist/client.js.map +1 -1
- package/dist/http.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/interfaces.d.ts +20 -0
- package/dist/interfaces.d.ts.map +1 -1
- package/dist/interfaces.js.map +1 -1
- package/dist/mcp.js.map +1 -1
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/google.d.ts.map +1 -1
- package/dist/providers/google.js +2 -0
- package/dist/providers/google.js.map +1 -1
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/ollama.js.map +1 -1
- package/dist/providers/openai.js.map +1 -1
- package/dist/router.js.map +1 -1
- package/dist/stream-decoder.js.map +1 -1
- package/dist/structured-output.js.map +1 -1
- package/dist/tools.js.map +1 -1
- package/dist/zod-adapter.js.map +1 -1
- package/package.json +115 -116
- package/src/ai-model.ts +0 -350
- package/src/auditor.ts +0 -213
- package/src/client.ts +0 -402
- package/src/debug/debug-google-streaming.ts +0 -97
- package/src/debug/debug-tool-execution.ts +0 -86
- package/src/debug/test-lmstudio-tools.ts +0 -155
- package/src/demos/README.md +0 -47
- package/src/demos/basic/universal-llm-examples.ts +0 -161
- package/src/demos/mcp/astrid-memory-demo.ts +0 -295
- package/src/demos/mcp/astrid-persona-memory.ts +0 -357
- package/src/demos/mcp/mcp-mongodb-demo.ts +0 -275
- package/src/demos/mcp/simple-astrid-memory.ts +0 -148
- package/src/demos/mcp/simple-mcp-demo.ts +0 -68
- package/src/demos/mcp/working-mcp-demo.ts +0 -62
- package/src/demos/model-alias-demo.ts +0 -0
- package/src/demos/tools/RAG_MEMORY_INTEGRATION.md +0 -267
- package/src/demos/tools/astrid-memory-demo.ts +0 -270
- package/src/demos/tools/astrid-production-memory-clean.ts +0 -785
- package/src/demos/tools/astrid-production-memory.ts +0 -558
- package/src/demos/tools/basic-translation-test.ts +0 -66
- package/src/demos/tools/chromadb-similarity-tuning.ts +0 -390
- package/src/demos/tools/clean-multilingual-conversation.ts +0 -209
- package/src/demos/tools/clean-translation-test.ts +0 -119
- package/src/demos/tools/clean-universal-multilingual-test.ts +0 -131
- package/src/demos/tools/complete-rag-demo.ts +0 -369
- package/src/demos/tools/complete-tool-demo.ts +0 -132
- package/src/demos/tools/demo-tool-calling.ts +0 -124
- package/src/demos/tools/dynamic-language-switching-test.ts +0 -251
- package/src/demos/tools/hybrid-thinking-test.ts +0 -154
- package/src/demos/tools/memory-integration-test.ts +0 -420
- package/src/demos/tools/multilingual-memory-system.ts +0 -802
- package/src/demos/tools/ondemand-translation-demo.ts +0 -655
- package/src/demos/tools/production-tool-demo.ts +0 -245
- package/src/demos/tools/revolutionary-multilingual-test.ts +0 -151
- package/src/demos/tools/rigorous-language-analysis.ts +0 -218
- package/src/demos/tools/test-universal-memory-system.ts +0 -126
- package/src/demos/tools/translation-integration-guide.ts +0 -346
- package/src/demos/tools/universal-memory-system.ts +0 -560
- package/src/http.ts +0 -247
- package/src/index.ts +0 -161
- package/src/interfaces.ts +0 -657
- package/src/mcp.ts +0 -345
- package/src/providers/anthropic.ts +0 -762
- package/src/providers/google.ts +0 -620
- package/src/providers/index.ts +0 -8
- package/src/providers/ollama.ts +0 -469
- package/src/providers/openai.ts +0 -392
- package/src/router.ts +0 -780
- package/src/stream-decoder.ts +0 -361
- package/src/structured-output.ts +0 -759
- package/src/test-scripts/test-advanced-tools.ts +0 -310
- package/src/test-scripts/test-google-streaming-enhanced.ts +0 -147
- package/src/test-scripts/test-google-streaming.ts +0 -63
- package/src/test-scripts/test-google-system-prompt-comprehensive.ts +0 -189
- package/src/test-scripts/test-mcp-config.ts +0 -28
- package/src/test-scripts/test-mcp-connection.ts +0 -29
- package/src/test-scripts/test-system-message-positions.ts +0 -163
- package/src/test-scripts/test-system-prompt-improvement-demo.ts +0 -83
- package/src/test-scripts/test-tool-calling.ts +0 -231
- package/src/tests/ai-model.test.ts +0 -1614
- package/src/tests/auditor.test.ts +0 -224
- package/src/tests/http.test.ts +0 -200
- package/src/tests/interfaces.test.ts +0 -117
- package/src/tests/providers/google.test.ts +0 -660
- package/src/tests/providers/ollama.test.ts +0 -954
- package/src/tests/providers/openai.test.ts +0 -1122
- package/src/tests/router.test.ts +0 -254
- package/src/tests/stream-decoder.test.ts +0 -179
- package/src/tests/structured-output.test.ts +0 -1450
- package/src/tests/tools.test.ts +0 -175
- package/src/tools.ts +0 -246
- package/src/zod-adapter.ts +0 -72
package/dist/ai-model.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-model.js","sourceRoot":"","sources":["../src/ai-model.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ai-model.js","sourceRoot":"","sources":["../src/ai-model.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * Universal LLM Client v3 — AIModel (The Universal Client)\r\n *\r\n * The only public-facing class. Developers configure one model with\r\n * multiple provider backends for transparent failover.\r\n *\r\n * Provider classes are internal — the user never imports them.\r\n */\r\n\r\nimport {\r\n AIModelApiType,\r\n type AIModelConfig,\r\n type ProviderConfig,\r\n type LLMClientOptions,\r\n type LLMChatMessage,\r\n type LLMChatResponse,\r\n type ChatOptions,\r\n type ModelMetadata,\r\n type LLMFunction,\r\n type ToolHandler,\r\n} from './interfaces.js';\r\nimport type { DecodedEvent } from './stream-decoder.js';\r\nimport { Router, type RouterConfig, type ProviderStatus } from './router.js';\r\nimport type { Auditor } from './auditor.js';\r\nimport { NoopAuditor } from './auditor.js';\r\nimport { OllamaClient } from './providers/ollama.js';\r\nimport { OpenAICompatibleClient } from './providers/openai.js';\r\nimport { GoogleClient } from './providers/google.js';\r\nimport { AnthropicClient } from './providers/anthropic.js';\r\nimport { BaseLLMClient } from './client.js';\r\nimport {\r\n type StructuredOutputResult,\r\n type SchemaConfig,\r\n} from './structured-output.js';\r\n\r\n// ============================================================================\r\n// Default Provider URLs\r\n// ============================================================================\r\n\r\nconst DEFAULT_URLS: Record<string, string> = {\r\n ollama: 'http://localhost:11434',\r\n openai: 'https://api.openai.com',\r\n llamacpp: 'http://localhost:8080',\r\n anthropic: 'https://api.anthropic.com',\r\n // google and vertex build their own URLs internally\r\n};\r\n\r\n// ============================================================================\r\n// AIModel — The Universal Client\r\n// ============================================================================\r\n\r\nexport class AIModel {\r\n private router: Router;\r\n private auditor: Auditor;\r\n private config: AIModelConfig;\r\n\r\n constructor(config: AIModelConfig) {\r\n this.config = config;\r\n this.auditor = config.auditor ?? new NoopAuditor();\r\n\r\n const routerConfig: RouterConfig = {\r\n retriesPerProvider: config.retries ?? 2,\r\n auditor: this.auditor,\r\n };\r\n this.router = new Router(routerConfig);\r\n\r\n // Initialize providers in order\r\n for (let i = 0; i < config.providers.length; i++) {\r\n const providerConfig = config.providers[i]!;\r\n const client = this.createClient(providerConfig);\r\n const id = `${this.normalizeType(providerConfig.type)}-${i}`;\r\n\r\n this.router.addProvider({\r\n id,\r\n client,\r\n priority: providerConfig.priority ?? i,\r\n modelOverride: providerConfig.model,\r\n });\r\n }\r\n }\r\n\r\n // ========================================================================\r\n // Chat\r\n // ========================================================================\r\n\r\n /** Send a chat request with automatic failover across providers */\r\n async chat(\r\n messages: LLMChatMessage[],\r\n options?: ChatOptions,\r\n ): Promise<LLMChatResponse> {\r\n return this.router.chat(messages, options);\r\n }\r\n\r\n /** Chat with automatic tool execution (multi-turn loop) */\r\n async chatWithTools(\r\n messages: LLMChatMessage[],\r\n options?: ChatOptions & { maxIterations?: number },\r\n ): Promise<LLMChatResponse> {\r\n return this.router.chatWithTools(messages, options);\r\n }\r\n\r\n /** Stream chat response with pluggable decoder strategy */\r\n async *chatStream(\r\n messages: LLMChatMessage[],\r\n options?: ChatOptions,\r\n ): AsyncGenerator<DecodedEvent, LLMChatResponse | void, unknown> {\r\n return yield* this.router.chatStream(messages, options);\r\n }\r\n\r\n // ========================================================================\r\n // Structured Output\r\n // ========================================================================\r\n\r\n /**\r\n * Generate structured output from the LLM with automatic failover.\r\n * Validates the response against the provided Zod schema.\r\n * Throws StructuredOutputError on validation failure.\r\n *\r\n * @template T The output type\r\n * @param config Schema configuration (JSON Schema + optional validator)\r\n * @param messages Chat messages to send\r\n * @param options Additional options (temperature, maxTokens, etc.)\r\n * @returns Promise resolving to validated structured output\r\n * @throws StructuredOutputError if JSON parsing fails or validation fails\r\n *\r\n * @example\r\n * ```typescript\r\n * import { fromZod } from 'universal-llm-client/zod';\r\n * const UserConfig = fromZod(z.object({\r\n * name: z.string(),\r\n * age: z.number(),\r\n * }));\r\n *\r\n * const user = await model.generateStructured(UserConfig, [\r\n * { role: 'user', content: 'Generate a user profile' },\r\n * ]);\r\n * // user.name: string, user.age: number\r\n * ```\r\n */\r\n async generateStructured<T>(\r\n config: SchemaConfig<T>,\r\n messages: LLMChatMessage[],\r\n options?: ChatOptions,\r\n ): Promise<T> {\r\n return this.router.generateStructured(config, messages, options);\r\n }\r\n\r\n /**\r\n * Try to generate structured output, returning a result object instead of throwing.\r\n * Same as generateStructured but returns { ok: true, value } on success\r\n * and { ok: false, error, rawOutput } on failure.\r\n *\r\n * @template T The output type\r\n * @param config Schema configuration (JSON Schema + optional validator)\r\n * @param messages Chat messages to send\r\n * @param options Additional options (temperature, maxTokens, etc.)\r\n * @returns StructuredOutputResult<T> - either success with value or failure with error\r\n *\r\n * @example\r\n * ```typescript\r\n * const result = await model.tryParseStructured(config, messages);\r\n *\r\n * if (result.ok) {\r\n * console.log('User:', result.value.name);\r\n * } else {\r\n * console.log('Error:', result.error.message);\r\n * console.log('Raw output:', result.rawOutput);\r\n * }\r\n * ```\r\n */\r\n async tryParseStructured<T>(\r\n config: SchemaConfig<T>,\r\n messages: LLMChatMessage[],\r\n options?: ChatOptions,\r\n ): Promise<StructuredOutputResult<T>> {\r\n return this.router.tryParseStructured(config, messages, options);\r\n }\r\n\r\n /**\r\n * Stream structured output with partial validated objects.\r\n *\r\n * Yields partial validated objects as JSON generates, then returns the\r\n * complete validated object on stream completion.\r\n *\r\n * For invalid partial JSON, no yield occurs (partial validation is best-effort).\r\n * On stream completion, if the final JSON fails validation, throws StructuredOutputError.\r\n *\r\n * @template T The output type\r\n * @param config Schema configuration (JSON Schema + optional validator)\r\n * @param messages Chat messages to send\r\n * @param options Additional options (temperature, maxTokens, etc.)\r\n * @yields Partial validated objects as the JSON stream progresses\r\n * @returns Complete validated object on stream completion\r\n * @throws StructuredOutputError if final validation fails\r\n *\r\n * @example\r\n * ```typescript\r\n * import { fromZod } from 'universal-llm-client/zod';\r\n * const UserConfig = fromZod(z.object({\r\n * name: z.string(),\r\n * age: z.number(),\r\n * }));\r\n *\r\n * const stream = model.generateStructuredStream(UserConfig, [\r\n * { role: 'user', content: 'Generate a user' },\r\n * ]);\r\n *\r\n * for await (const partial of stream) {\r\n * console.log('Partial user:', partial);\r\n * }\r\n * ```\r\n */\r\n async *generateStructuredStream<T>(\r\n config: SchemaConfig<T>,\r\n messages: LLMChatMessage[],\r\n options?: ChatOptions,\r\n ): AsyncGenerator<T, T, unknown> {\r\n return yield* this.router.generateStructuredStream(config, messages, options);\r\n }\r\n\r\n // ========================================================================\r\n // Embeddings\r\n // ========================================================================\r\n\r\n /** Generate embedding for a single text */\r\n async embed(text: string): Promise<number[]> {\r\n return this.router.embed(text);\r\n }\r\n\r\n /** Generate embeddings for multiple texts */\r\n async embedArray(texts: string[]): Promise<number[][]> {\r\n return this.router.embedArray(texts);\r\n }\r\n\r\n // ========================================================================\r\n // Tool Registration\r\n // ========================================================================\r\n\r\n /** Register a tool callable by the LLM (broadcast to all providers) */\r\n registerTool(\r\n name: string,\r\n description: string,\r\n parameters: LLMFunction['parameters'],\r\n handler: ToolHandler,\r\n ): void {\r\n this.router.registerTool(name, description, parameters, handler);\r\n }\r\n\r\n /** Register multiple tools at once */\r\n registerTools(\r\n tools: Array<{\r\n name: string;\r\n description: string;\r\n parameters: LLMFunction['parameters'];\r\n handler: ToolHandler;\r\n }>,\r\n ): void {\r\n this.router.registerTools(tools);\r\n }\r\n\r\n // ========================================================================\r\n // Model Management\r\n // ========================================================================\r\n\r\n /** Get available models from all configured providers */\r\n async getModels(): Promise<string[]> {\r\n return this.router.getModels();\r\n }\r\n\r\n /** Get metadata about the current model (context length, capabilities) */\r\n async getModelInfo(): Promise<ModelMetadata> {\r\n return this.router.getModelInfo();\r\n }\r\n\r\n /** Switch model at runtime (updates all providers) */\r\n setModel(name: string): void {\r\n this.config.model = name;\r\n // The model name change will be picked up by the providers\r\n // through the router on next request\r\n }\r\n\r\n /** Get the current model name */\r\n get model(): string {\r\n return this.config.model;\r\n }\r\n\r\n // ========================================================================\r\n // Provider Status\r\n // ========================================================================\r\n\r\n /** Get health/status of all configured providers */\r\n getProviderStatus(): ProviderStatus[] {\r\n return this.router.getStatus();\r\n }\r\n\r\n // ========================================================================\r\n // Lifecycle\r\n // ========================================================================\r\n\r\n /** Clean shutdown — flush auditor, disconnect MCP, etc. */\r\n async dispose(): Promise<void> {\r\n await this.auditor.flush?.();\r\n }\r\n\r\n // ========================================================================\r\n // Internal: Provider Factory\r\n // ========================================================================\r\n\r\n private createClient(providerConfig: ProviderConfig): BaseLLMClient {\r\n const type = this.normalizeType(providerConfig.type);\r\n const modelName = providerConfig.model ?? this.config.model;\r\n\r\n const clientOptions: LLMClientOptions = {\r\n model: modelName,\r\n url: providerConfig.url ?? DEFAULT_URLS[type] ?? '',\r\n apiType: type as AIModelApiType,\r\n apiKey: providerConfig.apiKey,\r\n timeout: this.config.timeout ?? 30000,\r\n retries: this.config.retries ?? 2,\r\n debug: this.config.debug ?? false,\r\n defaultParameters: this.config.defaultParameters,\r\n thinking: this.config.thinking ?? false,\r\n region: providerConfig.region,\r\n apiVersion: providerConfig.apiVersion,\r\n };\r\n\r\n switch (type) {\r\n case 'ollama':\r\n return new OllamaClient(clientOptions, this.auditor);\r\n\r\n case 'openai':\r\n case 'llamacpp':\r\n return new OpenAICompatibleClient(clientOptions, this.auditor);\r\n\r\n case 'google':\r\n case 'vertex':\r\n return new GoogleClient(clientOptions, this.auditor);\r\n\r\n case 'anthropic':\r\n return new AnthropicClient(clientOptions, this.auditor);\r\n\r\n default:\r\n throw new Error(`Unknown provider type: ${type}`);\r\n }\r\n }\r\n\r\n private normalizeType(type: string): string {\r\n return type.toLowerCase();\r\n }\r\n}\r\n"]}
|
package/dist/auditor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auditor.js","sourceRoot":"","sources":["../src/auditor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"auditor.js","sourceRoot":"","sources":["../src/auditor.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * Universal LLM Client v3 — Auditor (Observability)\r\n *\r\n * Every LLM interaction (request, response, tool call, retry, failover)\r\n * is recorded through the Auditor interface. Frameworks inject their own\r\n * Auditor for dashboards, cost tracking, or behavioral scoring.\r\n */\r\n\r\nimport type { TokenUsageInfo, ToolExecutionResult } from './interfaces.js';\r\n\r\n// ============================================================================\r\n// Audit Event\r\n// ============================================================================\r\n\r\nexport type AuditEventType =\r\n | 'request'\r\n | 'response'\r\n | 'stream_start'\r\n | 'stream_end'\r\n | 'tool_call'\r\n | 'tool_result'\r\n | 'error'\r\n | 'retry'\r\n | 'failover'\r\n | 'structured_request'\r\n | 'structured_response'\r\n | 'structured_validation_error';\r\n\r\nexport interface AuditEvent {\r\n /** Unix timestamp in ms */\r\n timestamp: number;\r\n /** Event type */\r\n type: AuditEventType;\r\n /** Provider that generated this event */\r\n provider?: string;\r\n /** Model name */\r\n model?: string;\r\n /** Duration in ms (for request/response pairs) */\r\n duration?: number;\r\n /** Token usage (for response events) */\r\n usage?: TokenUsageInfo;\r\n /** Tool execution details (for tool_call/tool_result events) */\r\n toolExecution?: ToolExecutionResult;\r\n /** Error message (for error/retry events) */\r\n error?: string;\r\n /** Arbitrary metadata for framework-specific data */\r\n metadata?: Record<string, unknown>;\r\n /** Schema name for structured output events */\r\n schemaName?: string;\r\n /** Raw output snippet for validation errors */\r\n rawOutput?: string;\r\n}\r\n\r\n// ============================================================================\r\n// Auditor Interface\r\n// ============================================================================\r\n\r\n/**\r\n * Interface for LLM observability.\r\n *\r\n * Implement this to capture all LLM lifecycle events.\r\n * The library calls `record()` at every interaction point.\r\n */\r\nexport interface Auditor {\r\n /** Record an audit event */\r\n record(event: AuditEvent): void;\r\n /** Flush any buffered events (optional) */\r\n flush?(): Promise<void>;\r\n}\r\n\r\n// ============================================================================\r\n// Built-in Auditors\r\n// ============================================================================\r\n\r\n/**\r\n * Zero-overhead auditor that discards all events.\r\n * Used as the default when no auditor is configured.\r\n */\r\nexport class NoopAuditor implements Auditor {\r\n record(_event: AuditEvent): void {\r\n // Intentionally empty\r\n }\r\n}\r\n\r\n/**\r\n * Structured console logging auditor.\r\n * Useful for development and debugging.\r\n */\r\nexport class ConsoleAuditor implements Auditor {\r\n private prefix: string;\r\n\r\n constructor(prefix: string = '[LLM]') {\r\n this.prefix = prefix;\r\n }\r\n\r\n record(event: AuditEvent): void {\r\n const parts = [\r\n this.prefix,\r\n event.type.toUpperCase(),\r\n event.provider ? `[${event.provider}]` : '',\r\n event.model ? `(${event.model})` : '',\r\n ].filter(Boolean);\r\n\r\n switch (event.type) {\r\n case 'request':\r\n console.log(parts.join(' '), '→');\r\n break;\r\n case 'response':\r\n console.log(\r\n parts.join(' '),\r\n event.duration ? `${event.duration}ms` : '',\r\n event.usage ? `${event.usage.totalTokens} tokens` : '',\r\n );\r\n break;\r\n case 'stream_start':\r\n console.log(parts.join(' '), 'streaming...');\r\n break;\r\n case 'stream_end':\r\n console.log(\r\n parts.join(' '),\r\n 'done',\r\n event.duration ? `${event.duration}ms` : '',\r\n );\r\n break;\r\n case 'tool_call':\r\n console.log(parts.join(' '), event.toolExecution?.tool_call_id ?? '');\r\n break;\r\n case 'tool_result':\r\n console.log(\r\n parts.join(' '),\r\n event.toolExecution?.error ? '❌' : '✅',\r\n event.toolExecution?.duration ? `${event.toolExecution.duration}ms` : '',\r\n );\r\n break;\r\n case 'error':\r\n console.error(parts.join(' '), event.error ?? 'Unknown error');\r\n break;\r\n case 'retry':\r\n console.warn(parts.join(' '), event.error ?? '', event.metadata ?? '');\r\n break;\r\n case 'failover':\r\n console.warn(parts.join(' '), '→', event.metadata?.['nextProvider'] ?? '');\r\n break;\r\n case 'structured_request':\r\n console.log(\r\n parts.join(' '),\r\n `schema=${event.schemaName ?? 'unknown'}`,\r\n '→',\r\n );\r\n break;\r\n case 'structured_response':\r\n console.log(\r\n parts.join(' '),\r\n event.duration ? `${event.duration}ms` : '',\r\n `schema=${event.schemaName ?? 'unknown'}`,\r\n );\r\n break;\r\n case 'structured_validation_error':\r\n console.error(\r\n parts.join(' '),\r\n `schema=${event.schemaName ?? 'unknown'}`,\r\n event.error ?? 'Validation failed',\r\n event.rawOutput ? `raw=${event.rawOutput.slice(0, 50)}...` : '',\r\n );\r\n break;\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Buffered auditor that collects events for batch processing.\r\n * Useful for custom sinks (OpenTelemetry, DataDog, databases, etc.)\r\n */\r\nexport class BufferedAuditor implements Auditor {\r\n private events: AuditEvent[] = [];\r\n private maxBufferSize: number;\r\n private onFlush?: (events: AuditEvent[]) => Promise<void>;\r\n\r\n constructor(options: {\r\n maxBufferSize?: number;\r\n onFlush?: (events: AuditEvent[]) => Promise<void>;\r\n } = {}) {\r\n this.maxBufferSize = options.maxBufferSize ?? 1000;\r\n this.onFlush = options.onFlush;\r\n }\r\n\r\n record(event: AuditEvent): void {\r\n this.events.push(event);\r\n if (this.events.length >= this.maxBufferSize) {\r\n // Auto-flush when buffer is full (fire and forget)\r\n this.flush().catch(() => {});\r\n }\r\n }\r\n\r\n /** Get all buffered events */\r\n getEvents(): ReadonlyArray<AuditEvent> {\r\n return this.events;\r\n }\r\n\r\n /** Flush buffered events to the configured sink */\r\n async flush(): Promise<void> {\r\n if (this.events.length === 0) return;\r\n const batch = this.events.splice(0);\r\n if (this.onFlush) {\r\n await this.onFlush(batch);\r\n }\r\n }\r\n\r\n /** Clear all buffered events without flushing */\r\n clear(): void {\r\n this.events.length = 0;\r\n }\r\n}\r\n"]}
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * Universal LLM Client v3 — Base LLM Client\r\n *\r\n * Abstract base class for all LLM providers.\r\n * Handles tool registration, execution, and the autonomous\r\n * multi-turn tool execution loop.\r\n */\r\n\r\nimport type {\r\n LLMClientOptions,\r\n LLMChatMessage,\r\n LLMChatResponse,\r\n LLMToolDefinition,\r\n LLMToolCall,\r\n LLMFunction,\r\n ToolRegistry,\r\n ToolHandler,\r\n ToolExecutionResult,\r\n ChatOptions,\r\n ModelMetadata,\r\n} from './interfaces.js';\r\nimport {\r\n StructuredOutputError,\r\n type StructuredOutputOptions,\r\n type SchemaConfig,\r\n} from './structured-output.js';\r\nimport type { DecodedEvent } from './stream-decoder.js';\r\nimport type { Auditor } from './auditor.js';\r\nimport { NoopAuditor } from './auditor.js';\r\n\r\n// ============================================================================\r\n// Abstract Base Client\r\n// ============================================================================\r\n\r\nexport abstract class BaseLLMClient {\r\n protected options: LLMClientOptions;\r\n protected toolRegistry: ToolRegistry = {};\r\n protected auditor: Auditor;\r\n protected debug: boolean;\r\n\r\n constructor(options: LLMClientOptions, auditor?: Auditor) {\r\n this.options = options;\r\n this.auditor = auditor ?? new NoopAuditor();\r\n this.debug = options.debug ?? false;\r\n }\r\n\r\n // ========================================================================\r\n // Abstract Methods (implemented by providers)\r\n // ========================================================================\r\n\r\n /** Send a chat request and get a response */\r\n abstract chat(\r\n messages: LLMChatMessage[],\r\n options?: ChatOptions,\r\n ): Promise<LLMChatResponse>;\r\n\r\n /** Stream a chat response as decoded events */\r\n abstract chatStream(\r\n messages: LLMChatMessage[],\r\n options?: ChatOptions,\r\n ): AsyncGenerator<DecodedEvent, LLMChatResponse | void, unknown>;\r\n\r\n /** Get available models */\r\n abstract getModels(): Promise<string[]>;\r\n\r\n /** Generate embeddings for text */\r\n abstract embed(text: string): Promise<number[]>;\r\n\r\n /** Generate embeddings for multiple texts */\r\n async embedArray(texts: string[]): Promise<number[][]> {\r\n return Promise.all(texts.map(t => this.embed(t)));\r\n }\r\n\r\n /**\r\n * Get metadata about a model (context length, architecture, etc.)\r\n * Override per-provider for accurate data.\r\n */\r\n async getModelInfo(_modelName?: string): Promise<ModelMetadata> {\r\n return { contextLength: 8192 }; // Conservative default\r\n }\r\n\r\n // ========================================================================\r\n // Tool Registration\r\n // ========================================================================\r\n\r\n /**\r\n * Sanitize tool name for LLM compatibility.\r\n * LLM APIs require function names matching [a-zA-Z0-9_-].\r\n * Module-prefixed names like \"@core/computer:list_windows\" are cleaned.\r\n */\r\n private sanitizeToolName(name: string): string {\r\n return name\r\n .replace(/^@[^:]+:/, '') // Strip module prefix\r\n .replace(/[^a-zA-Z0-9_-]/g, '_') // Replace illegal chars\r\n .replace(/_+/g, '_') // Collapse\r\n .replace(/^_|_$/g, ''); // Trim\r\n }\r\n\r\n /** Register a tool/function callable by the model */\r\n registerTool(\r\n name: string,\r\n description: string,\r\n parameters: LLMFunction['parameters'],\r\n handler: ToolHandler,\r\n ): void {\r\n const safeName = this.sanitizeToolName(name);\r\n this.toolRegistry[name] = {\r\n definition: { name: safeName, description, parameters },\r\n handler,\r\n };\r\n // Index by sanitized name for reverse lookup\r\n if (safeName !== name && !this.toolRegistry[safeName]) {\r\n this.toolRegistry[safeName] = this.toolRegistry[name]!;\r\n }\r\n this.debugLog(`Registered tool: ${name} (LLM name: ${safeName})`);\r\n }\r\n\r\n /** Register multiple tools at once */\r\n registerTools(\r\n tools: Array<{\r\n name: string;\r\n description: string;\r\n parameters: LLMFunction['parameters'];\r\n handler: ToolHandler;\r\n }>,\r\n ): void {\r\n for (const tool of tools) {\r\n this.registerTool(tool.name, tool.description, tool.parameters, tool.handler);\r\n }\r\n }\r\n\r\n /** Get all registered tool definitions (deduplicated by sanitized name) */\r\n getToolDefinitions(): LLMToolDefinition[] {\r\n const seen = new Set<string>();\r\n const defs: LLMToolDefinition[] = [];\r\n for (const { definition } of Object.values(this.toolRegistry)) {\r\n if (seen.has(definition.name)) continue;\r\n seen.add(definition.name);\r\n defs.push({ type: 'function' as const, function: definition });\r\n }\r\n return defs;\r\n }\r\n\r\n // ========================================================================\r\n // Tool Execution\r\n // ========================================================================\r\n\r\n /** Execute a single tool call with fuzzy name matching */\r\n async executeTool(toolCall: LLMToolCall): Promise<ToolExecutionResult> {\r\n const toolName = toolCall.function.name;\r\n const start = Date.now();\r\n let tool = this.toolRegistry[toolName];\r\n\r\n // Fuzzy lookup: try suffix match (LLM stripped module prefix)\r\n if (!tool) {\r\n const entries = Object.entries(this.toolRegistry);\r\n const bySuffix = entries.find(([k]) => k.endsWith(`:${toolName}`));\r\n if (bySuffix) {\r\n tool = bySuffix[1];\r\n this.debugLog(`Fuzzy tool match: \"${toolName}\" → \"${bySuffix[0]}\"`);\r\n }\r\n\r\n // Try prefix match: if only one tool in that module, use it\r\n if (!tool) {\r\n const byPrefix = entries.filter(([k]) => k.startsWith(`${toolName}:`));\r\n if (byPrefix.length === 1) {\r\n tool = byPrefix[0]![1];\r\n this.debugLog(`Fuzzy tool match (single): \"${toolName}\" → \"${byPrefix[0]![0]}\"`);\r\n }\r\n }\r\n }\r\n\r\n if (!tool) {\r\n const result: ToolExecutionResult = {\r\n tool_call_id: toolCall.id,\r\n output: null,\r\n error: `Unknown tool: ${toolName}`,\r\n duration: Date.now() - start,\r\n };\r\n this.auditor.record({\r\n timestamp: Date.now(),\r\n type: 'tool_result',\r\n toolExecution: result,\r\n error: result.error,\r\n });\r\n return result;\r\n }\r\n\r\n this.auditor.record({\r\n timestamp: Date.now(),\r\n type: 'tool_call',\r\n metadata: { toolName, arguments: toolCall.function.arguments },\r\n });\r\n\r\n try {\r\n const args = JSON.parse(toolCall.function.arguments);\r\n const output = await tool.handler(args);\r\n const result: ToolExecutionResult = {\r\n tool_call_id: toolCall.id,\r\n output,\r\n duration: Date.now() - start,\r\n };\r\n this.auditor.record({\r\n timestamp: Date.now(),\r\n type: 'tool_result',\r\n toolExecution: result,\r\n });\r\n return result;\r\n } catch (error) {\r\n const result: ToolExecutionResult = {\r\n tool_call_id: toolCall.id,\r\n output: null,\r\n error: error instanceof Error ? error.message : String(error),\r\n duration: Date.now() - start,\r\n };\r\n this.auditor.record({\r\n timestamp: Date.now(),\r\n type: 'tool_result',\r\n toolExecution: result,\r\n error: result.error,\r\n });\r\n return result;\r\n }\r\n }\r\n\r\n /** Execute multiple tool calls in parallel */\r\n async executeTools(toolCalls: LLMToolCall[]): Promise<ToolExecutionResult[]> {\r\n return Promise.all(toolCalls.map(tc => this.executeTool(tc)));\r\n }\r\n\r\n // ========================================================================\r\n // Chat with Tools (multi-turn autonomous loop)\r\n // ========================================================================\r\n\r\n /**\r\n * Chat with automatic tool execution.\r\n * Continues until the model stops calling tools or max iterations reached.\r\n * Returns the complete execution trace in `toolExecutions`.\r\n */\r\n async chatWithTools(\r\n messages: LLMChatMessage[],\r\n options?: ChatOptions & { maxIterations?: number },\r\n ): Promise<LLMChatResponse> {\r\n const maxIterations = options?.maxIterations ?? 10;\r\n const conversationMessages = [...messages];\r\n const allToolExecutions: ToolExecutionResult[] = [];\r\n let iterations = 0;\r\n\r\n while (iterations < maxIterations) {\r\n const response = await this.chat(conversationMessages, {\r\n ...options,\r\n tools: this.getToolDefinitions(),\r\n });\r\n\r\n // If no tool calls, return with full trace\r\n if (!response.message.tool_calls?.length) {\r\n return {\r\n ...response,\r\n toolExecutions: allToolExecutions.length > 0 ? allToolExecutions : undefined,\r\n };\r\n }\r\n\r\n // Add assistant message with tool calls\r\n conversationMessages.push(response.message);\r\n\r\n // Execute tools in parallel\r\n const toolResults = await this.executeTools(response.message.tool_calls);\r\n allToolExecutions.push(...toolResults);\r\n\r\n // Add tool results as messages\r\n for (const result of toolResults) {\r\n conversationMessages.push({\r\n role: 'tool',\r\n content: typeof result.output === 'string'\r\n ? result.output\r\n : JSON.stringify(result.output),\r\n tool_call_id: result.tool_call_id,\r\n });\r\n }\r\n\r\n iterations++;\r\n }\r\n\r\n // Max iterations — final call without tools\r\n const finalResponse = await this.chat(conversationMessages);\r\n return {\r\n ...finalResponse,\r\n toolExecutions: allToolExecutions,\r\n };\r\n }\r\n\r\n // ========================================================================\r\n // Helpers\r\n // ========================================================================\r\n\r\n /** Set the model name at runtime */\r\n setModel(modelName: string): void {\r\n this.options.model = modelName;\r\n this.debugLog(`Model switched to: ${modelName}`);\r\n }\r\n\r\n /** Get the current model name */\r\n get model(): string {\r\n return this.options.model;\r\n }\r\n\r\n /** Get the base URL */\r\n get url(): string {\r\n return this.options.url;\r\n }\r\n\r\n /** Set the auditor instance */\r\n setAuditor(auditor: Auditor): void {\r\n this.auditor = auditor;\r\n }\r\n\r\n protected debugLog(message: string, data?: unknown): void {\r\n if (this.debug) {\r\n console.log(`[LLM:${this.options.model}] ${message}`, data ?? '');\r\n }\r\n }\r\n\r\n /**\r\n * Generate a unique ID for tool calls when the provider doesn't provide one.\r\n */\r\n protected generateToolCallId(): string {\r\n return `call_${Date.now()}_${Math.random().toString(36).slice(2, 9)}`;\r\n }\r\n\r\n // ========================================================================\r\n // Structured Output Helpers (shared across all providers)\r\n // ========================================================================\r\n\r\n /**\r\n * Extract schema options from ChatOptions.\r\n * Returns null if no schema is provided.\r\n * Returns a SchemaConfig if a schema was found.\r\n */\r\n protected extractSchemaOptions(options?: ChatOptions): (StructuredOutputOptions<unknown> & { schemaConfig: SchemaConfig<unknown> }) | null {\r\n if (!options) return null;\r\n\r\n if (options.schema) {\r\n return {\r\n schemaConfig: options.schema,\r\n name: options.schemaName,\r\n description: options.schemaDescription,\r\n };\r\n }\r\n\r\n if (options.jsonSchema) {\r\n // Raw JSON Schema without validation\r\n const config: SchemaConfig<unknown> = {\r\n jsonSchema: options.jsonSchema,\r\n };\r\n return {\r\n schemaConfig: config,\r\n name: options.schemaName,\r\n description: options.schemaDescription,\r\n };\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Validate structured response using a SchemaConfig.\r\n * Throws StructuredOutputError on failure.\r\n */\r\n protected validateStructuredResponse(content: string, config: SchemaConfig<unknown>): void {\r\n if (!content) {\r\n throw new StructuredOutputError(\r\n 'Empty response from LLM',\r\n { rawOutput: content },\r\n );\r\n }\r\n\r\n let parsed: unknown;\r\n try {\r\n parsed = JSON.parse(content);\r\n } catch (error) {\r\n const syntaxError = error instanceof SyntaxError\r\n ? error\r\n : new SyntaxError(String(error));\r\n throw new StructuredOutputError(\r\n `Failed to parse JSON: ${syntaxError.message}`,\r\n { rawOutput: content, cause: syntaxError },\r\n );\r\n }\r\n\r\n if (config.validate) {\r\n try {\r\n config.validate(parsed);\r\n } catch (error) {\r\n const validationError = error instanceof Error ? error : new Error(String(error));\r\n throw new StructuredOutputError(\r\n `Validation failed: ${validationError.message}`,\r\n { rawOutput: content, cause: validationError },\r\n );\r\n }\r\n }\r\n }\r\n}\r\n"]}
|
package/dist/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * Universal LLM Client v3 — HTTP Utilities\r\n *\r\n * Zero-dependency HTTP layer using native fetch.\r\n * Works on Node 22+, Bun, Deno, and browsers.\r\n */\r\n\r\nimport type { LLMClientOptions } from './interfaces.js';\r\n\r\n// ============================================================================\r\n// Types\r\n// ============================================================================\r\n\r\nexport interface HttpRequestOptions {\r\n method?: 'GET' | 'POST';\r\n headers?: Record<string, string>;\r\n body?: unknown;\r\n timeout?: number;\r\n signal?: AbortSignal;\r\n}\r\n\r\nexport interface HttpResponse<T = unknown> {\r\n ok: boolean;\r\n status: number;\r\n data: T;\r\n /** Response headers (when available) */\r\n headers?: Headers;\r\n}\r\n\r\n// ============================================================================\r\n// HTTP Request\r\n// ============================================================================\r\n\r\n/**\r\n * Make an HTTP request with timeout and error handling.\r\n * Uses native fetch (available in all target runtimes).\r\n */\r\nexport async function httpRequest<T = unknown>(\r\n url: string,\r\n options: HttpRequestOptions = {},\r\n): Promise<HttpResponse<T>> {\r\n const { method = 'GET', headers = {}, body, timeout = 30000, signal } = options;\r\n\r\n const controller = new AbortController();\r\n const timeoutId = setTimeout(() => controller.abort(), timeout);\r\n\r\n // Combine external signal with timeout\r\n const combinedSignal = signal\r\n ? AbortSignal.any([signal, controller.signal])\r\n : controller.signal;\r\n\r\n try {\r\n const response = await fetch(url, {\r\n method,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n ...headers,\r\n },\r\n body: body ? JSON.stringify(body) : undefined,\r\n signal: combinedSignal,\r\n });\r\n\r\n clearTimeout(timeoutId);\r\n\r\n if (!response.ok) {\r\n const errorText = await response.text().catch(() => 'Unknown error');\r\n throw new Error(`HTTP ${response.status}: ${errorText}`);\r\n }\r\n\r\n const data = (await response.json()) as T;\r\n\r\n return {\r\n ok: response.ok,\r\n status: response.status,\r\n data,\r\n headers: response.headers,\r\n };\r\n } catch (error) {\r\n clearTimeout(timeoutId);\r\n\r\n if (error instanceof Error && error.name === 'AbortError') {\r\n throw new Error(`Request timeout after ${timeout}ms: ${url}`);\r\n }\r\n throw error;\r\n }\r\n}\r\n\r\n// ============================================================================\r\n// Streaming HTTP\r\n// ============================================================================\r\n\r\n/**\r\n * Make a streaming HTTP request.\r\n * Yields raw string chunks as they arrive.\r\n */\r\nexport async function* httpStream(\r\n url: string,\r\n options: HttpRequestOptions = {},\r\n): AsyncGenerator<string, void, unknown> {\r\n const { method = 'POST', headers = {}, body, timeout = 120000, signal } = options;\r\n\r\n const controller = new AbortController();\r\n const timeoutId = setTimeout(() => controller.abort(), timeout);\r\n\r\n const combinedSignal = signal\r\n ? AbortSignal.any([signal, controller.signal])\r\n : controller.signal;\r\n\r\n try {\r\n const response = await fetch(url, {\r\n method,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n ...headers,\r\n },\r\n body: body ? JSON.stringify(body) : undefined,\r\n signal: combinedSignal,\r\n });\r\n\r\n clearTimeout(timeoutId);\r\n\r\n if (!response.ok) {\r\n const errorText = await response.text().catch(() => 'Unknown error');\r\n throw new Error(`HTTP ${response.status}: ${errorText}`);\r\n }\r\n\r\n if (!response.body) {\r\n throw new Error('No response body for streaming');\r\n }\r\n\r\n const reader = response.body.getReader();\r\n const decoder = new TextDecoder();\r\n\r\n try {\r\n while (true) {\r\n const { done, value } = await reader.read();\r\n if (done) break;\r\n yield decoder.decode(value, { stream: true });\r\n }\r\n } finally {\r\n reader.releaseLock();\r\n }\r\n } catch (error) {\r\n clearTimeout(timeoutId);\r\n\r\n if (error instanceof Error && error.name === 'AbortError') {\r\n throw new Error(`Stream timeout after ${timeout}ms: ${url}`);\r\n }\r\n throw error;\r\n }\r\n}\r\n\r\n// ============================================================================\r\n// Protocol Parsers\r\n// ============================================================================\r\n\r\n/**\r\n * Parse NDJSON (newline-delimited JSON) stream.\r\n * Used by Ollama's streaming API.\r\n */\r\nexport async function* parseNDJSON<T = unknown>(\r\n stream: AsyncGenerator<string>,\r\n): AsyncGenerator<T, void, unknown> {\r\n let buffer = '';\r\n\r\n for await (const chunk of stream) {\r\n buffer += chunk;\r\n const lines = buffer.split('\\n');\r\n buffer = lines.pop() ?? '';\r\n\r\n for (const line of lines) {\r\n const trimmed = line.trim();\r\n if (!trimmed) continue;\r\n\r\n try {\r\n yield JSON.parse(trimmed) as T;\r\n } catch {\r\n // Skip invalid JSON lines\r\n }\r\n }\r\n }\r\n\r\n // Handle remaining buffer\r\n if (buffer.trim()) {\r\n try {\r\n yield JSON.parse(buffer) as T;\r\n } catch {\r\n // Skip invalid JSON\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Parse Server-Sent Events stream.\r\n * Used by OpenAI-compatible APIs and LlamaCpp/vLLM.\r\n */\r\nexport async function* parseSSE(\r\n stream: AsyncGenerator<string>,\r\n): AsyncGenerator<{ event?: string; data: string }, void, unknown> {\r\n let buffer = '';\r\n\r\n for await (const chunk of stream) {\r\n buffer += chunk;\r\n\r\n // Split by double newlines (SSE event delimiter)\r\n const events = buffer.split('\\n\\n');\r\n buffer = events.pop() ?? '';\r\n\r\n for (const event of events) {\r\n const lines = event.split('\\n');\r\n let eventType: string | undefined;\r\n const dataLines: string[] = [];\r\n\r\n for (const line of lines) {\r\n if (line.startsWith('event:')) {\r\n eventType = line.slice(6).trim();\r\n } else if (line.startsWith('data:')) {\r\n dataLines.push(line.slice(5).trim());\r\n }\r\n }\r\n\r\n const data = dataLines.join('\\n');\r\n if (data && data !== '[DONE]') {\r\n yield { event: eventType, data };\r\n }\r\n }\r\n }\r\n}\r\n\r\n// ============================================================================\r\n// Header Utilities\r\n// ============================================================================\r\n\r\n/**\r\n * Build standard headers for LLM API requests.\r\n */\r\nexport function buildHeaders(options: LLMClientOptions): Record<string, string> {\r\n const headers: Record<string, string> = {\r\n 'Content-Type': 'application/json',\r\n };\r\n\r\n if (options.apiKey) {\r\n headers['Authorization'] = `Bearer ${options.apiKey}`;\r\n }\r\n\r\n return headers;\r\n}\r\n"]}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,+EAA+E;AAC/E,oCAAoC;AACpC,+EAA+E;AAE/E,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E,OAAO;AACH,QAAQ;AACR,cAAc,EACd,WAAW;AA6BX,UAAU;AACV,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,SAAS,EACT,YAAY,EACZ,QAAQ,GACX,MAAM,iBAAiB,CAAC;AAEzB,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E,OAAO,EAIH,WAAW,EACX,cAAc,EACd,eAAe,GAClB,MAAM,cAAc,CAAC;AAEtB,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E,OAAO,EAOH,aAAa,EACb,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,2BAA2B,GAC9B,MAAM,qBAAqB,CAAC;AAE7B,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E,OAAO,EACH,WAAW,EACX,YAAY,EACZ,cAAc,EACd,sBAAsB,GACzB,MAAM,YAAY,CAAC;AAEpB,+EAA+E;AAC/E,0CAA0C;AAC1C,+EAA+E;AAE/E,OAAO,EACH,WAAW,EACX,UAAU,EACV,WAAW,EACX,QAAQ,EACR,YAAY,GAGf,MAAM,WAAW,CAAC;AAEnB,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E,OAAO,EACH,aAAa,GAIhB,MAAM,UAAU,CAAC;AAElB,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,OAAO,EACH,qBAAqB,EAUrB,yBAAyB,EACzB,yBAAyB;AACzB,8BAA8B;AAC9B,mBAAmB,EACnB,uBAAuB,EACvB,wBAAwB,EACxB,aAAa,EACb,uBAAuB;AACvB,uBAAuB;AACvB,eAAe,EACf,kBAAkB,EAClB,wBAAwB,EACxB,eAAe;AACf,mBAAmB;AACnB,mBAAmB,GAEtB,MAAM,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,+EAA+E;AAC/E,oCAAoC;AACpC,+EAA+E;AAE/E,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E,OAAO;AACH,QAAQ;AACR,cAAc,EACd,WAAW;AA6BX,UAAU;AACV,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,SAAS,EACT,YAAY,EACZ,QAAQ,GACX,MAAM,iBAAiB,CAAC;AAEzB,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E,OAAO,EAIH,WAAW,EACX,cAAc,EACd,eAAe,GAClB,MAAM,cAAc,CAAC;AAEtB,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E,OAAO,EAOH,aAAa,EACb,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,2BAA2B,GAC9B,MAAM,qBAAqB,CAAC;AAE7B,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E,OAAO,EACH,WAAW,EACX,YAAY,EACZ,cAAc,EACd,sBAAsB,GACzB,MAAM,YAAY,CAAC;AAEpB,+EAA+E;AAC/E,0CAA0C;AAC1C,+EAA+E;AAE/E,OAAO,EACH,WAAW,EACX,UAAU,EACV,WAAW,EACX,QAAQ,EACR,YAAY,GAGf,MAAM,WAAW,CAAC;AAEnB,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E,OAAO,EACH,aAAa,GAIhB,MAAM,UAAU,CAAC;AAElB,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,OAAO,EACH,qBAAqB,EAUrB,yBAAyB,EACzB,yBAAyB;AACzB,8BAA8B;AAC9B,mBAAmB,EACnB,uBAAuB,EACvB,wBAAwB,EACxB,aAAa,EACb,uBAAuB;AACvB,uBAAuB;AACvB,eAAe,EACf,kBAAkB,EAClB,wBAAwB,EACxB,eAAe;AACf,mBAAmB;AACnB,mBAAmB,GAEtB,MAAM,wBAAwB,CAAC","sourcesContent":["/**\r\n * Universal LLM Client v3\r\n *\r\n * A universal LLM client with transparent provider failover,\r\n * streaming tool execution, pluggable reasoning, and native observability.\r\n *\r\n * @module universal-llm-client\r\n */\r\n\r\n// ============================================================================\r\n// Public API — The Universal Client\r\n// ============================================================================\r\n\r\nexport { AIModel } from './ai-model.js';\r\n\r\n// ============================================================================\r\n// Types & Interfaces\r\n// ============================================================================\r\n\r\nexport {\r\n // Enums\r\n AIModelApiType,\r\n AIModelType,\r\n // Config\r\n type AIModelConfig,\r\n type ProviderConfig,\r\n type LLMClientOptions,\r\n // Messages\r\n type LLMChatMessage,\r\n type LLMMessageContent,\r\n type LLMContentPart,\r\n type LLMTextContent,\r\n type LLMImageContent,\r\n type LLMAudioContent,\r\n // Responses\r\n type LLMChatResponse,\r\n type TokenUsageInfo,\r\n // Tools\r\n type LLMToolCall,\r\n type LLMToolDefinition,\r\n type LLMFunction,\r\n type ToolHandler,\r\n type ToolExecutionResult,\r\n type ToolRegistry,\r\n type ToolRegistryEntry,\r\n // Options\r\n type ChatOptions,\r\n type ResponseFormat,\r\n type OutputOptions,\r\n // Model info\r\n type ModelMetadata,\r\n // Helpers\r\n textContent,\r\n imageContent,\r\n multimodalMessage,\r\n extractTextContent,\r\n hasImages,\r\n audioContent,\r\n hasAudio,\r\n} from './interfaces.js';\r\n\r\n// ============================================================================\r\n// Observability\r\n// ============================================================================\r\n\r\nexport {\r\n type Auditor,\r\n type AuditEvent,\r\n type AuditEventType,\r\n NoopAuditor,\r\n ConsoleAuditor,\r\n BufferedAuditor,\r\n} from './auditor.js';\r\n\r\n// ============================================================================\r\n// Stream Decoding\r\n// ============================================================================\r\n\r\nexport {\r\n type StreamDecoder,\r\n type DecodedEvent,\r\n type DecoderCallback,\r\n type DecoderType,\r\n type DecoderOptions,\r\n type DecoderFactory,\r\n createDecoder,\r\n registerDecoder,\r\n getRegisteredDecoders,\r\n PassthroughDecoder,\r\n StandardChatDecoder,\r\n InterleavedReasoningDecoder,\r\n} from './stream-decoder.js';\r\n\r\n// ============================================================================\r\n// Tool Utilities\r\n// ============================================================================\r\n\r\nexport {\r\n ToolBuilder,\r\n ToolExecutor,\r\n createTimeTool,\r\n createRandomNumberTool,\r\n} from './tools.js';\r\n\r\n// ============================================================================\r\n// HTTP Utilities (for advanced use cases)\r\n// ============================================================================\r\n\r\nexport {\r\n httpRequest,\r\n httpStream,\r\n parseNDJSON,\r\n parseSSE,\r\n buildHeaders,\r\n type HttpRequestOptions,\r\n type HttpResponse,\r\n} from './http.js';\r\n\r\n// ============================================================================\r\n// MCP Integration\r\n// ============================================================================\r\n\r\nexport {\r\n MCPToolBridge,\r\n type MCPBridgeConfig,\r\n type MCPServerConfig,\r\n type MCPTool,\r\n} from './mcp.js';\r\n\r\n// ============================================================================\r\n// Structured Output\r\n// ============================================================================\r\n\r\nexport {\r\n StructuredOutputError,\r\n type StructuredOutputErrorOptions,\r\n type StructuredOutputOptions,\r\n type StructuredOutputResult,\r\n type StructuredOutputSuccess,\r\n type StructuredOutputFailure,\r\n type JSONSchema,\r\n type SchemaProvider,\r\n type ProviderSchema,\r\n type SchemaConfig,\r\n isStructuredOutputSuccess,\r\n isStructuredOutputFailure,\r\n // Schema conversion utilities\r\n normalizeJsonSchema,\r\n convertToProviderSchema,\r\n stripUnsupportedFeatures,\r\n getJsonSchema,\r\n getJsonSchemaFromConfig,\r\n // Validation functions\r\n parseStructured,\r\n tryParseStructured,\r\n validateStructuredOutput,\r\n stripJsonFences,\r\n // Streaming parser\r\n StreamingJsonParser,\r\n type StreamingStructuredResult,\r\n} from './structured-output.js';\r\n"]}
|
package/dist/interfaces.d.ts
CHANGED
|
@@ -315,9 +315,23 @@ export interface ChatOptions {
|
|
|
315
315
|
}
|
|
316
316
|
export interface TokenUsageInfo {
|
|
317
317
|
inputTokens: number;
|
|
318
|
+
/**
|
|
319
|
+
* Visible output tokens (the streamed `text` content). For providers
|
|
320
|
+
* that bill thinking separately (Google Gemini), this excludes the
|
|
321
|
+
* reasoning trace — see `reasoningTokens`.
|
|
322
|
+
*/
|
|
318
323
|
outputTokens: number;
|
|
319
324
|
totalTokens: number;
|
|
320
325
|
cachedTokens?: number;
|
|
326
|
+
/**
|
|
327
|
+
* Server-side reasoning/thinking tokens that were generated but not
|
|
328
|
+
* yielded as visible text. Currently populated by the Google provider
|
|
329
|
+
* from `usageMetadata.thoughtsTokenCount` for thinking-enabled models.
|
|
330
|
+
* Other providers may roll thinking into `outputTokens` (Ollama) or
|
|
331
|
+
* stream it as `thinking` events (the universal client surfaces these
|
|
332
|
+
* via `DecodedEvent { type: 'thinking' }`); consult the provider.
|
|
333
|
+
*/
|
|
334
|
+
reasoningTokens?: number;
|
|
321
335
|
}
|
|
322
336
|
export interface LLMChatResponse<T = unknown> {
|
|
323
337
|
message: LLMChatMessage;
|
|
@@ -485,6 +499,12 @@ export interface GoogleResponse {
|
|
|
485
499
|
candidatesTokenCount: number;
|
|
486
500
|
totalTokenCount: number;
|
|
487
501
|
cachedContentTokenCount?: number;
|
|
502
|
+
/**
|
|
503
|
+
* Server-side reasoning tokens emitted by Gemini thinking models
|
|
504
|
+
* (e.g. 2.5 Pro / 3.x Pro). Counted toward billing as output but
|
|
505
|
+
* not included in `candidatesTokenCount` and not streamed as text.
|
|
506
|
+
*/
|
|
507
|
+
thoughtsTokenCount?: number;
|
|
488
508
|
};
|
|
489
509
|
}
|
|
490
510
|
/** Create a text content part */
|
package/dist/interfaces.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":"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"}
|
package/dist/interfaces.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,+EAA+E;AAC/E,QAAQ;AACR,+EAA+E;AAE/E,MAAM,CAAN,IAAY,WAGX;AAHD,WAAY,WAAW;IACnB,4BAAa,CAAA;IACb,sCAAuB,CAAA;AAC3B,CAAC,EAHW,WAAW,KAAX,WAAW,QAGtB;AAED,MAAM,CAAN,IAAY,cAOX;AAPD,WAAY,cAAc;IACtB,mCAAiB,CAAA;IACjB,mCAAiB,CAAA;IACjB,mCAAiB,CAAA;IACjB,mCAAiB,CAAA;IACjB,uCAAqB,CAAA;IACrB,yCAAuB,CAAA;AAC3B,CAAC,EAPW,cAAc,KAAd,cAAc,QAOzB;AAyjBD,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,iCAAiC;AACjC,MAAM,UAAU,WAAW,CAAC,IAAY;IACpC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAClC,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,YAAY,CACxB,eAAuB,EACvB,WAAmB,YAAY,EAC/B,MAAgC;IAEhC,MAAM,GAAG,GAAG,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC;QACjF,CAAC,CAAC,eAAe;QACjB,CAAC,CAAC,QAAQ,QAAQ,WAAW,eAAe,EAAE,CAAC;IACnD,OAAO;QACH,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE;KAC7B,CAAC;AACN,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,iBAAiB,CAC7B,IAAY,EACZ,MAAgB,EAChB,WAAmB,YAAY;IAE/B,MAAM,OAAO,GAAqB;QAC9B,WAAW,CAAC,IAAI,CAAC;QACjB,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;KACpD,CAAC;IACF,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AACrC,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,kBAAkB,CAAC,OAA0B;IACzD,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC;IAChD,OAAO,OAAO;SACT,MAAM,CAAC,CAAC,IAAI,EAA0B,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;SAC9D,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;SACtB,IAAI,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,SAAS,CAAC,OAA0B;IAChD,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC9C,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;AAC3D,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,YAAY,CAAC,UAAkB,EAAE,QAAgB;IAC7D,OAAO;QACH,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE;KACxC,CAAC;AACN,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,QAAQ,CAAC,OAA0B;IAC/C,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC9C,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;AACvD,CAAC"}
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,+EAA+E;AAC/E,QAAQ;AACR,+EAA+E;AAE/E,MAAM,CAAN,IAAY,WAGX;AAHD,WAAY,WAAW;IACnB,4BAAa,CAAA;IACb,sCAAuB,CAAA;AAC3B,CAAC,EAHW,WAAW,KAAX,WAAW,QAGtB;AAED,MAAM,CAAN,IAAY,cAOX;AAPD,WAAY,cAAc;IACtB,mCAAiB,CAAA;IACjB,mCAAiB,CAAA;IACjB,mCAAiB,CAAA;IACjB,mCAAiB,CAAA;IACjB,uCAAqB,CAAA;IACrB,yCAAuB,CAAA;AAC3B,CAAC,EAPW,cAAc,KAAd,cAAc,QAOzB;AA6kBD,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,iCAAiC;AACjC,MAAM,UAAU,WAAW,CAAC,IAAY;IACpC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAClC,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,YAAY,CACxB,eAAuB,EACvB,WAAmB,YAAY,EAC/B,MAAgC;IAEhC,MAAM,GAAG,GAAG,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC;QACjF,CAAC,CAAC,eAAe;QACjB,CAAC,CAAC,QAAQ,QAAQ,WAAW,eAAe,EAAE,CAAC;IACnD,OAAO;QACH,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE;KAC7B,CAAC;AACN,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,iBAAiB,CAC7B,IAAY,EACZ,MAAgB,EAChB,WAAmB,YAAY;IAE/B,MAAM,OAAO,GAAqB;QAC9B,WAAW,CAAC,IAAI,CAAC;QACjB,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;KACpD,CAAC;IACF,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AACrC,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,kBAAkB,CAAC,OAA0B;IACzD,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC;IAChD,OAAO,OAAO;SACT,MAAM,CAAC,CAAC,IAAI,EAA0B,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;SAC9D,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;SACtB,IAAI,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,SAAS,CAAC,OAA0B;IAChD,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC9C,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;AAC3D,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,YAAY,CAAC,UAAkB,EAAE,QAAgB;IAC7D,OAAO;QACH,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE;KACxC,CAAC;AACN,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,QAAQ,CAAC,OAA0B;IAC/C,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC9C,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;AACvD,CAAC","sourcesContent":["/**\r\n * Universal LLM Client v3 — Core Interfaces\r\n *\r\n * All types, enums, and helper functions used throughout the library.\r\n * Zero dependencies — pure TypeScript types.\r\n */\r\n\r\n// ============================================================================\r\n// Enums\r\n// ============================================================================\r\n\r\nexport enum AIModelType {\r\n Chat = 'chat',\r\n Embedding = 'embedding',\r\n}\r\n\r\nexport enum AIModelApiType {\r\n Ollama = 'ollama',\r\n OpenAI = 'openai',\r\n Google = 'google',\r\n Vertex = 'vertex',\r\n LlamaCpp = 'llamacpp',\r\n Anthropic = 'anthropic',\r\n}\r\n\r\n// ============================================================================\r\n// Model Metadata\r\n// ============================================================================\r\n\r\nexport interface ModelMetadata {\r\n /** Model name as reported by provider */\r\n model?: string;\r\n /** Context window size in tokens */\r\n contextLength: number;\r\n /** Model architecture (e.g., \"llama\", \"mistral3\") */\r\n architecture?: string;\r\n /** Parameter count */\r\n parameterCount?: number;\r\n /** Model capabilities reported by provider (e.g., \"tools\", \"vision\", \"thinking\") */\r\n capabilities?: string[];\r\n}\r\n\r\n// ============================================================================\r\n// Provider Configuration (user-facing)\r\n// ============================================================================\r\n\r\nexport interface ProviderConfig {\r\n /** Provider type */\r\n type: AIModelApiType | 'ollama' | 'openai' | 'google' | 'vertex' | 'llamacpp' | 'anthropic';\r\n /** Provider endpoint URL (has sensible defaults per type) */\r\n url?: string;\r\n /** API key or Bearer token */\r\n apiKey?: string;\r\n /** Override model name for this specific provider */\r\n model?: string;\r\n /** Explicit priority (default: array order, lower = higher priority) */\r\n priority?: number;\r\n /** Vertex AI region (e.g., \"us-central1\") */\r\n region?: string;\r\n /** Google API version (default: \"v1beta\") */\r\n apiVersion?: 'v1' | 'v1beta';\r\n}\r\n\r\n// ============================================================================\r\n// AIModel Configuration (user-facing)\r\n// ============================================================================\r\n\r\nexport interface AIModelConfig {\r\n /** Model name (used across all providers unless overridden) */\r\n model: string;\r\n /** Ordered list of providers (first = highest priority) */\r\n providers: ProviderConfig[];\r\n /** Default parameters for all requests (temperature, top_p, etc.) */\r\n defaultParameters?: Record<string, unknown>;\r\n /** Enable thinking/reasoning mode */\r\n thinking?: boolean;\r\n /** Request timeout in ms (default: 30000) */\r\n timeout?: number;\r\n /** Retries per provider before failover (default: 2) */\r\n retries?: number;\r\n /** Observability hooks */\r\n auditor?: import('./auditor.js').Auditor;\r\n /** Enable debug logging */\r\n debug?: boolean;\r\n}\r\n\r\n// ============================================================================\r\n// Internal Client Options\r\n// ============================================================================\r\n\r\nexport interface LLMClientOptions {\r\n /** Model name */\r\n model: string;\r\n /** Base URL for the API */\r\n url: string;\r\n /** API type for protocol variations */\r\n apiType: AIModelApiType;\r\n /** Model type (chat or embedding) */\r\n modelType?: AIModelType;\r\n /** Default parameters for requests */\r\n defaultParameters?: Record<string, unknown>;\r\n /** Enable thinking/reasoning mode */\r\n thinking?: boolean;\r\n /** Request timeout in ms */\r\n timeout?: number;\r\n /** Number of retries for failed requests */\r\n retries?: number;\r\n /** API key for authenticated endpoints */\r\n apiKey?: string;\r\n /** Enable debug logging */\r\n debug?: boolean;\r\n /** Vertex AI region */\r\n region?: string;\r\n /** Google API version */\r\n apiVersion?: 'v1' | 'v1beta';\r\n}\r\n\r\n// ============================================================================\r\n// Multimodal Content Types\r\n// ============================================================================\r\n\r\nexport interface LLMTextContent {\r\n type: 'text';\r\n text: string;\r\n}\r\n\r\nexport interface LLMImageContent {\r\n type: 'image_url';\r\n image_url: {\r\n url: string;\r\n detail?: 'auto' | 'low' | 'high';\r\n };\r\n}\r\n\r\nexport interface LLMAudioContent {\r\n type: 'audio';\r\n audio: {\r\n /** Raw base64-encoded audio data */\r\n data: string;\r\n /** MIME type (e.g. 'audio/ogg', 'audio/wav', 'audio/mp3') */\r\n mimeType: string;\r\n };\r\n}\r\n\r\nexport type LLMContentPart = LLMTextContent | LLMImageContent | LLMAudioContent;\r\nexport type LLMMessageContent = string | LLMContentPart[];\r\n\r\n// ============================================================================\r\n// Chat Message Types\r\n// ============================================================================\r\n\r\nexport interface LLMChatMessage {\r\n role: 'system' | 'user' | 'assistant' | 'tool';\r\n content: LLMMessageContent;\r\n tool_call_id?: string;\r\n tool_calls?: LLMToolCall[];\r\n}\r\n\r\n// ============================================================================\r\n// Tool Types\r\n// ============================================================================\r\n\r\nexport interface LLMToolCall {\r\n id: string;\r\n type: 'function';\r\n function: {\r\n name: string;\r\n arguments: string;\r\n };\r\n /**\r\n * Gemini 3.x thought signature — encrypted reasoning context.\r\n * Must be echoed back exactly when sending conversation history\r\n * during multi-turn function calling. Mandatory for Gemini 3,\r\n * optional for Gemini 2.5, ignored by other providers.\r\n */\r\n thoughtSignature?: string;\r\n}\r\n\r\nexport interface LLMFunction {\r\n name: string;\r\n description: string;\r\n parameters: {\r\n type: 'object';\r\n properties?: Record<string, unknown>;\r\n required?: string[];\r\n };\r\n}\r\n\r\nexport interface LLMToolDefinition {\r\n type: 'function';\r\n function: LLMFunction;\r\n}\r\n\r\nexport interface ToolExecutionResult {\r\n tool_call_id: string;\r\n output: unknown;\r\n error?: string;\r\n duration?: number;\r\n}\r\n\r\nexport type ToolHandler = (args: unknown) => Promise<unknown> | unknown;\r\n\r\nexport interface ToolRegistryEntry {\r\n definition: LLMFunction;\r\n handler: ToolHandler;\r\n}\r\n\r\nexport interface ToolRegistry {\r\n [toolName: string]: ToolRegistryEntry;\r\n}\r\n\r\n// ============================================================================\r\n// Chat Options (per-call overrides)\r\n// ============================================================================\r\n\r\n/**\r\n * Response format for structured output.\r\n * \r\n * For json_schema mode, use: { type: 'json_schema', json_schema: { name, schema, strict } }\r\n * For json_object mode (legacy), use: { type: 'json_object' }\r\n */\r\nexport interface ResponseFormat {\r\n /** Response format type */\r\n type: 'json_object' | 'json_schema';\r\n /** JSON Schema definition (required for json_schema type) */\r\n json_schema?: {\r\n /** Name of the schema (for LLM guidance) */\r\n name: string;\r\n /** Schema description (optional, for LLM guidance) */\r\n description?: string;\r\n /** The JSON Schema */\r\n schema: Record<string, unknown>;\r\n /** Enable strict mode (required for reliable structured output) */\r\n strict?: boolean;\r\n };\r\n}\r\n\r\n/**\r\n * Output options for structured output in chat responses.\r\n * \r\n * When provided, the response will include a `structured` property with\r\n * the validated, typed result. This is the recommended way to request\r\n * structured output via the chat() method.\r\n * \r\n * @example\r\n * ```typescript\r\n * const UserSchema = z.object({\r\n * name: z.string(),\r\n * age: z.number(),\r\n * });\r\n * \r\n * const response = await model.chat(messages, {\r\n * output: { schema: UserSchema },\r\n * });\r\n * \r\n * // response.structured is typed as { name: string, age: number }\r\n * console.log(response.structured?.name);\r\n * ```\r\n */\r\nexport interface OutputOptions<T = unknown> {\r\n /**\r\n * Schema configuration for structured output.\r\n * Use `fromZod()` from `universal-llm-client/zod` to create from a Zod schema,\r\n * or provide a raw SchemaConfig with jsonSchema + optional validate function.\r\n */\r\n schema?: import('./structured-output.js').SchemaConfig<T>;\r\n \r\n /**\r\n * Raw JSON Schema for structured output.\r\n * Alternative to `schema` when you have a pre-defined schema.\r\n */\r\n jsonSchema?: import('./structured-output.js').JSONSchema;\r\n \r\n /**\r\n * Optional name for the schema.\r\n * Used by providers like OpenAI for better LLM guidance.\r\n */\r\n name?: string;\r\n \r\n /**\r\n * Optional description for the schema.\r\n * Used by providers like OpenAI for better LLM guidance.\r\n */\r\n description?: string;\r\n\r\n /**\r\n * Whether to use strict mode for schema validation (OpenAI only).\r\n * When true, OpenAI enforces the schema exactly (no additional properties,\r\n * limited schema subset). Defaults to `true`.\r\n */\r\n strict?: boolean;\r\n}\r\n\r\nexport interface ChatOptions {\r\n /** Override temperature */\r\n temperature?: number;\r\n /** Max tokens to generate */\r\n maxTokens?: number;\r\n /** Tool definitions (auto-populated from registry if not set) */\r\n tools?: LLMToolDefinition[];\r\n /** Tool choice mode */\r\n toolChoice?: 'none' | 'auto' | 'required';\r\n /** Additional provider-specific parameters */\r\n parameters?: Record<string, unknown>;\r\n /** Abort signal for cancellation (forwarded to HTTP layer) */\r\n signal?: AbortSignal;\r\n /** Enable/disable tool execution for chatWithTools */\r\n executeTools?: boolean;\r\n /** Enable prompt caching (Provider specific feature, opt-in for Anthropic) */\r\n enablePromptCaching?: boolean;\r\n /** Maximum tool execution rounds (default: 10) */\r\n maxIterations?: number;\r\n /**\r\n * Stream decoder selection. Accepts:\r\n * - A built-in type name: 'passthrough' | 'standard-chat' | 'interleaved-reasoning'\r\n * - A custom type name registered via `registerDecoder()`\r\n * - A pre-built `StreamDecoder` instance for full control\r\n */\r\n decoder?: import('./stream-decoder.js').DecoderType | string | import('./stream-decoder.js').StreamDecoder;\r\n \r\n // ========================================================================\r\n // Structured Output Options\r\n // ========================================================================\r\n \r\n /**\r\n * Structured output options for chat responses.\r\n * When provided, the response will include a `structured` property\r\n * with the validated result.\r\n * \r\n * **Note**: `output` and `tools` cannot be used together.\r\n * If both are provided, an error will be thrown.\r\n * \r\n * @example\r\n * ```typescript\r\n * const response = await model.chat(messages, {\r\n * output: { schema: UserSchema },\r\n * });\r\n * console.log(response.structured);\r\n * ```\r\n */\r\n output?: OutputOptions;\r\n \r\n /**\r\n * Schema configuration for structured output.\r\n * When provided, the response is validated against this schema.\r\n * \r\n * @deprecated Use `output.schema` or `generateStructured()` instead.\r\n */\r\n schema?: import('./structured-output.js').SchemaConfig<unknown>;\r\n \r\n /**\r\n * Raw JSON Schema for structured output.\r\n * Alternative to `schema` when you have a pre-defined schema.\r\n * \r\n * @deprecated Use `output.jsonSchema` or `generateStructured()` instead.\r\n */\r\n jsonSchema?: import('./structured-output.js').JSONSchema;\r\n \r\n /**\r\n * Name for the schema (optional, used for LLM guidance).\r\n * Required by some providers (e.g., OpenAI strict mode).\r\n * \r\n * @deprecated Use `output.name` or `generateStructured()` instead.\r\n */\r\n schemaName?: string;\r\n \r\n /**\r\n * Description for the schema (optional, used for LLM guidance).\r\n * \r\n * @deprecated Use `output.description` or `generateStructured()` instead.\r\n */\r\n schemaDescription?: string;\r\n \r\n /**\r\n * Response format for structured output (legacy json_object mode).\r\n * For new code, prefer `output` or `generateStructured()`.\r\n * \r\n * Use { type: 'json_object' } for legacy JSON mode without schema validation.\r\n */\r\n responseFormat?: ResponseFormat;\r\n\r\n // ========================================================================\r\n // Inference Tier Selection\r\n // ========================================================================\r\n\r\n /** Inference tier selection (provider-specific; Google supports 'flex' and 'priority').\r\n * - 'flex': 50% cost reduction, best-effort, higher latency (background tasks)\r\n * - 'priority': Premium pricing, lowest latency, highest reliability (interactive)\r\n * - 'standard': Default behavior (omitted from request) */\r\n serviceTier?: 'flex' | 'priority' | 'standard';\r\n}\r\n\r\n// ============================================================================\r\n// Token Usage\r\n// ============================================================================\r\n\r\nexport interface TokenUsageInfo {\r\n inputTokens: number;\r\n /**\r\n * Visible output tokens (the streamed `text` content). For providers\r\n * that bill thinking separately (Google Gemini), this excludes the\r\n * reasoning trace — see `reasoningTokens`.\r\n */\r\n outputTokens: number;\r\n totalTokens: number;\r\n cachedTokens?: number;\r\n /**\r\n * Server-side reasoning/thinking tokens that were generated but not\r\n * yielded as visible text. Currently populated by the Google provider\r\n * from `usageMetadata.thoughtsTokenCount` for thinking-enabled models.\r\n * Other providers may roll thinking into `outputTokens` (Ollama) or\r\n * stream it as `thinking` events (the universal client surfaces these\r\n * via `DecodedEvent { type: 'thinking' }`); consult the provider.\r\n */\r\n reasoningTokens?: number;\r\n}\r\n\r\n// ============================================================================\r\n// Response Types\r\n// ============================================================================\r\n\r\nexport interface LLMChatResponse<T = unknown> {\r\n message: LLMChatMessage;\r\n /** Reasoning/thinking content from the model (if supported) */\r\n reasoning?: string;\r\n /** Token usage info */\r\n usage?: TokenUsageInfo;\r\n /** Tool execution trace (populated by chatWithTools) */\r\n toolExecutions?: ToolExecutionResult[];\r\n /** Which provider served this response */\r\n provider?: string;\r\n /**\r\n * Validated structured output when `output` parameter is provided to chat().\r\n * This is the same type as inferred from the schema provided in `output.schema`.\r\n * \r\n * Undefined when:\r\n * - No `output` parameter was provided\r\n * - Structured output validation failed (throws StructuredOutputError instead)\r\n * \r\n * @example\r\n * ```typescript\r\n * const response = await model.chat(messages, {\r\n * output: { schema: UserSchema },\r\n * });\r\n * if (response.structured) {\r\n * console.log(response.structured.name); // Fully typed!\r\n * }\r\n * ```\r\n */\r\n structured?: T;\r\n /** Which inference tier actually served this response (from provider response headers, e.g. x-gemini-service-tier) */\r\n serviceTier?: 'flex' | 'priority' | 'standard';\r\n}\r\n\r\n// ============================================================================\r\n// Provider Response Types (internal)\r\n// ============================================================================\r\n\r\nexport interface OllamaResponse {\r\n model: string;\r\n created_at: string;\r\n message: {\r\n role: string;\r\n content: string;\r\n thinking?: string;\r\n tool_calls?: LLMToolCall[];\r\n };\r\n done: boolean;\r\n prompt_eval_count?: number;\r\n eval_count?: number;\r\n prompt_eval_duration?: number;\r\n eval_duration?: number;\r\n}\r\n\r\nexport interface OpenAIResponse {\r\n id: string;\r\n object: string;\r\n created: number;\r\n model: string;\r\n choices: Array<{\r\n index: number;\r\n message: {\r\n role: string;\r\n content: string | null;\r\n tool_calls?: LLMToolCall[];\r\n };\r\n finish_reason: string;\r\n }>;\r\n usage?: {\r\n prompt_tokens: number;\r\n completion_tokens: number;\r\n total_tokens: number;\r\n prompt_tokens_details?: {\r\n cached_tokens?: number;\r\n audio_tokens?: number;\r\n };\r\n };\r\n}\r\n\r\nexport interface OllamaModelInfo {\r\n name: string;\r\n size: number;\r\n digest: string;\r\n details: {\r\n format: string;\r\n family: string;\r\n families: string[];\r\n parameter_size: string;\r\n quantization_level: string;\r\n };\r\n modified_at: string;\r\n}\r\n\r\nexport interface OpenAIModelInfo {\r\n id: string;\r\n object: string;\r\n created: number;\r\n owned_by: string;\r\n}\r\n\r\n// ============================================================================\r\n// Google API Types\r\n// ============================================================================\r\n\r\nexport interface GooglePart {\r\n text?: string;\r\n functionCall?: {\r\n name: string;\r\n args: Record<string, unknown>;\r\n };\r\n functionResponse?: {\r\n name: string;\r\n response: Record<string, unknown>;\r\n };\r\n inlineData?: {\r\n mimeType: string;\r\n data: string;\r\n };\r\n /** Gemini 3.x thought signature — must be echoed back on functionCall parts */\r\n thoughtSignature?: string;\r\n}\r\n\r\nexport interface GoogleContent {\r\n role: 'user' | 'model' | 'function';\r\n parts: GooglePart[];\r\n}\r\n\r\nexport interface GoogleGenerationConfig {\r\n responseMimeType?: string;\r\n temperature?: number;\r\n maxOutputTokens?: number;\r\n topK?: number;\r\n topP?: number;\r\n thinkingConfig?: {\r\n thinkingBudget?: number;\r\n };\r\n}\r\n\r\nexport interface GoogleFunctionDeclaration {\r\n name: string;\r\n description: string;\r\n parameters: {\r\n type: 'object';\r\n properties: Record<string, unknown>;\r\n required?: string[];\r\n };\r\n}\r\n\r\nexport interface GoogleToolConfig {\r\n functionCallingConfig?: {\r\n mode: 'AUTO' | 'ANY' | 'NONE';\r\n allowedFunctionNames?: string[];\r\n };\r\n}\r\n\r\nexport interface GoogleRequest {\r\n contents: GoogleContent[];\r\n generationConfig?: GoogleGenerationConfig;\r\n systemInstruction?: { parts: Array<{ text: string }> };\r\n tools?: Array<{\r\n functionDeclarations: GoogleFunctionDeclaration[];\r\n }>;\r\n toolConfig?: GoogleToolConfig;\r\n /** Inference tier: FLEX (50% off, best-effort) or PRIORITY (premium, highest reliability) */\r\n service_tier?: 'FLEX' | 'PRIORITY' | 'STANDARD';\r\n}\r\n\r\nexport interface GoogleCandidate {\r\n content: {\r\n parts: GooglePart[];\r\n role: string;\r\n };\r\n finishReason?: string;\r\n index: number;\r\n}\r\n\r\nexport interface GoogleResponse {\r\n candidates: GoogleCandidate[];\r\n usageMetadata?: {\r\n promptTokenCount: number;\r\n candidatesTokenCount: number;\r\n totalTokenCount: number;\r\n cachedContentTokenCount?: number;\r\n /**\r\n * Server-side reasoning tokens emitted by Gemini thinking models\r\n * (e.g. 2.5 Pro / 3.x Pro). Counted toward billing as output but\r\n * not included in `candidatesTokenCount` and not streamed as text.\r\n */\r\n thoughtsTokenCount?: number;\r\n };\r\n}\r\n\r\n// ============================================================================\r\n// Helper Functions\r\n// ============================================================================\r\n\r\n/** Create a text content part */\r\nexport function textContent(text: string): LLMTextContent {\r\n return { type: 'text', text };\r\n}\r\n\r\n/** Create an image content part from base64 data or URL */\r\nexport function imageContent(\r\n base64DataOrUrl: string,\r\n mimeType: string = 'image/jpeg',\r\n detail?: 'auto' | 'low' | 'high',\r\n): LLMImageContent {\r\n const url = base64DataOrUrl.startsWith('data:') || base64DataOrUrl.startsWith('http')\r\n ? base64DataOrUrl\r\n : `data:${mimeType};base64,${base64DataOrUrl}`;\r\n return {\r\n type: 'image_url',\r\n image_url: { url, detail },\r\n };\r\n}\r\n\r\n/** Create a multimodal user message with text and images */\r\nexport function multimodalMessage(\r\n text: string,\r\n images: string[],\r\n mimeType: string = 'image/jpeg',\r\n): LLMChatMessage {\r\n const content: LLMContentPart[] = [\r\n textContent(text),\r\n ...images.map(img => imageContent(img, mimeType)),\r\n ];\r\n return { role: 'user', content };\r\n}\r\n\r\n/** Extract text content from a message content value */\r\nexport function extractTextContent(content: LLMMessageContent): string {\r\n if (typeof content === 'string') return content;\r\n return content\r\n .filter((part): part is LLMTextContent => part.type === 'text')\r\n .map(part => part.text)\r\n .join('');\r\n}\r\n\r\n/** Check if message content contains images */\r\nexport function hasImages(content: LLMMessageContent): boolean {\r\n if (typeof content === 'string') return false;\r\n return content.some(part => part.type === 'image_url');\r\n}\r\n\r\n/** Create an audio content part from raw base64 data */\r\nexport function audioContent(base64Data: string, mimeType: string): LLMAudioContent {\r\n return {\r\n type: 'audio',\r\n audio: { data: base64Data, mimeType },\r\n };\r\n}\r\n\r\n/** Check if message content contains audio */\r\nexport function hasAudio(content: LLMMessageContent): boolean {\r\n if (typeof content === 'string') return false;\r\n return content.some(part => part.type === 'audio');\r\n}\r\n"]}
|
package/dist/mcp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAKH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAkD3C,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E,MAAM,OAAO,aAAa;IACd,MAAM,CAAkB;IACxB,OAAO,CAAU;IACjB,OAAO,GAA+B,IAAI,GAAG,EAAE,CAAC;IAChD,UAAU,GAAyB,IAAI,GAAG,EAAE,CAAC;IAC7C,eAAe,GAAc,EAAE,CAAC;IAChC,SAAS,GAAG,KAAK,CAAC;IAE1B,YAAY,MAAuB;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,IAAI,WAAW,EAAE,CAAC;IACvD,CAAC;IAED,2EAA2E;IAC3E,uBAAuB;IACvB,2EAA2E;IAE3E;;;OAGG;IACH,KAAK,CAAC,OAAO;QACT,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QAE3B,8CAA8C;QAC9C,IAAI,GAIH,CAAC;QAEF,IAAI,CAAC;YACD,qDAAqD;YACrD,GAAG,GAAG,MAAM,MAAM,CAAC,2CAA2C,CAAC,CAAC;QACpE,CAAC;QAAC,MAAM,CAAC;YACL,MAAM,IAAI,KAAK,CACX,uDAAuD;gBACvD,+CAA+C,CAClD,CAAC;QACN,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAEpD,KAAK,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,IAAI,OAAO,EAAE,CAAC;YAC/C,IAAI,CAAC;gBACD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CACzB,EAAE,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,OAAO,EAAE,EAClD,EAAE,YAAY,EAAE,EAAE,EAAE,CACvB,CAAC;gBAEF,IAAI,SAAkB,CAAC;gBAEvB,IAAI,YAAY,CAAC,GAAG,EAAE,CAAC;oBACnB,gCAAgC;oBAChC,IAAI,CAAC,GAAG,CAAC,6BAA6B,EAAE,CAAC;wBACrC,2BAA2B;wBAC3B,qDAAqD;wBACrD,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,oDAAoD,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;wBACxG,IAAI,CAAC,UAAU,EAAE,6BAA6B,EAAE,CAAC;4BAC7C,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;wBACvF,CAAC;wBACD,SAAS,GAAG,IAAI,UAAU,CAAC,6BAA6B,CACpD,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,EACzB,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CACxF,CAAC;oBACN,CAAC;yBAAM,CAAC;wBACJ,SAAS,GAAG,IAAI,GAAG,CAAC,6BAA6B,CAC7C,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,EACzB,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CACxF,CAAC;oBACN,CAAC;gBACL,CAAC;qBAAM,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;oBAC9B,uCAAuC;oBACvC,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;wBAC5B,qDAAqD;wBACrD,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,2CAA2C,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;wBAChG,IAAI,CAAC,WAAW,EAAE,oBAAoB,EAAE,CAAC;4BACrC,MAAM,IAAI,KAAK,CACX,4EAA4E;gCAC5E,4DAA4D,CAC/D,CAAC;wBACN,CAAC;wBACD,SAAS,GAAG,IAAI,WAAW,CAAC,oBAAoB,CAAC;4BAC7C,OAAO,EAAE,YAAY,CAAC,OAAO;4BAC7B,IAAI,EAAE,YAAY,CAAC,IAAI;4BACvB,GAAG,EAAE,YAAY,CAAC,GAAG;yBACxB,CAAC,CAAC;oBACP,CAAC;yBAAM,CAAC;wBACJ,SAAS,GAAG,IAAI,GAAG,CAAC,oBAAoB,CAAC;4BACrC,OAAO,EAAE,YAAY,CAAC,OAAO;4BAC7B,IAAI,EAAE,YAAY,CAAC,IAAI;4BACvB,GAAG,EAAE,YAAY,CAAC,GAAG;yBACxB,CAAC,CAAC;oBACP,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACJ,MAAM,IAAI,KAAK,CAAC,eAAe,UAAU,kDAAkD,CAAC,CAAC;gBACjG,CAAC;gBAED,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBAChC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;gBACrC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;gBAE3C,iBAAiB;gBACjB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;gBAC1C,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;oBAChC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;wBACtB,UAAU;wBACV,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,aAAa,EAAE,GAAG,UAAU,IAAI,IAAI,CAAC,IAAI,EAAE;wBAC3C,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;wBACnC,WAAW,EAAE,IAAI,CAAC,WAAW;qBAChC,CAAC,CAAC;gBACP,CAAC;gBAED,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;oBAChB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;oBACrB,IAAI,EAAE,UAAU;oBAChB,QAAQ,EAAE;wBACN,KAAK,EAAE,eAAe;wBACtB,MAAM,EAAE,UAAU;wBAClB,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM;qBACnC;iBACJ,CAAC,CAAC;YACP,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;oBAChB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;oBACrB,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;oBAC7D,QAAQ,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,UAAU,EAAE;iBAChE,CAAC,CAAC;gBACH,MAAM,KAAK,CAAC;YAChB,CAAC;QACL,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,2EAA2E;IAC3E,oBAAoB;IACpB,2EAA2E;IAE3E;;;;OAIG;IACH,KAAK,CAAC,aAAa,CAAC,KAAc;QAC9B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAClB,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACzB,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC/C,IAAI,EAAE,OAAO,CAAC,aAAa;YAC3B,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,UAAU,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC;YACxD,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;SAC3C,CAAC,CAAC,CAAC;QAEJ,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,QAAQ;QACJ,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAED,2EAA2E;IAC3E,aAAa;IACb,2EAA2E;IAE3E;;OAEG;IACH,KAAK,CAAC,UAAU;QACZ,KAAK,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC9C,IAAI,CAAC;gBACD,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACzB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;oBAChB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;oBACrB,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;oBAC7D,QAAQ,EAAE,EAAE,KAAK,EAAE,uBAAuB,EAAE,MAAM,EAAE,UAAU,EAAE;iBACnE,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED,2EAA2E;IAC3E,WAAW;IACX,2EAA2E;IAEnE,iBAAiB,CAAC,OAAgB;QACtC,OAAO,KAAK,EAAE,IAAa,EAAE,EAAE;YAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACpD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACV,MAAM,IAAI,KAAK,CAAC,eAAe,OAAO,CAAC,UAAU,oBAAoB,CAAC,CAAC;YAC3E,CAAC;YAED,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;gBAChB,SAAS,EAAE,KAAK;gBAChB,IAAI,EAAE,WAAW;gBACjB,QAAQ,EAAE;oBACN,KAAK,EAAE,eAAe;oBACtB,MAAM,EAAE,OAAO,CAAC,UAAU;oBAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;iBACrB;aACJ,CAAC,CAAC;YAEH,IAAI,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC;oBACjC,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,SAAS,EAAE,IAA2C;iBACzD,CAAC,CAAC;gBAEH,yCAAyC;gBACzC,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO;qBAC3B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC;qBACxC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAEtB,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAE5E,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;oBAChB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;oBACrB,IAAI,EAAE,aAAa;oBACnB,QAAQ,EAAE;wBACN,KAAK,EAAE,iBAAiB;wBACxB,MAAM,EAAE,OAAO,CAAC,UAAU;wBAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;wBAClB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;qBAC/B;iBACJ,CAAC,CAAC;gBAEH,OAAO,MAAM,CAAC;YAClB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;oBAChB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;oBACrB,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;oBAC7D,QAAQ,EAAE;wBACN,KAAK,EAAE,gBAAgB;wBACvB,MAAM,EAAE,OAAO,CAAC,UAAU;wBAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;qBACrB;iBACJ,CAAC,CAAC;gBACH,MAAM,KAAK,CAAC;YAChB,CAAC;QACL,CAAC,CAAC;IACN,CAAC;IAEO,kBAAkB,CAAC,MAA+B;QACtD,OAAO;YACH,IAAI,EAAE,QAAQ;YACd,UAAU,EAAG,MAAM,CAAC,YAAY,CAA6B,IAAI,EAAE;YACnE,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAyB;SACvD,CAAC;IACN,CAAC;CACJ"}
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * Universal LLM Client v3 — MCP Integration\r\n *\r\n * Native MCP tool discovery and execution bridge.\r\n * Uses @modelcontextprotocol/sdk as a peer dependency.\r\n *\r\n * Supports:\r\n * - Stdio transport (Node/Bun/Deno — spawns server processes)\r\n * - Streamable HTTP transport (all runtimes including browsers)\r\n *\r\n * Usage:\r\n * const mcp = new MCPToolBridge({\r\n * servers: {\r\n * filesystem: { command: 'npx', args: ['-y', '@modelcontextprotocol/server-filesystem', './'] },\r\n * weather: { url: 'https://mcp.example.com/weather' },\r\n * }\r\n * });\r\n * await mcp.connect();\r\n * await mcp.registerTools(model); // or registerTools(model)\r\n * // ... use model.chatWithTools() — MCP tools are now callable\r\n * await mcp.disconnect();\r\n */\r\n\r\nimport type { AIModel } from './ai-model.js';\r\nimport type { LLMFunction, ToolHandler } from './interfaces.js';\r\nimport type { Auditor } from './auditor.js';\r\nimport { NoopAuditor } from './auditor.js';\r\n\r\n// ============================================================================\r\n// MCP Types\r\n// ============================================================================\r\n\r\nexport interface MCPServerConfig {\r\n /** Stdio transport: command to spawn the MCP server */\r\n command?: string;\r\n /** Stdio transport: arguments for the command */\r\n args?: string[];\r\n /** Stdio transport: environment variables for the spawned process */\r\n env?: Record<string, string>;\r\n /** HTTP transport: URL of the remote MCP server */\r\n url?: string;\r\n /** HTTP transport: additional headers for requests */\r\n headers?: Record<string, string>;\r\n}\r\n\r\nexport interface MCPBridgeConfig {\r\n /** Named MCP server configurations */\r\n servers: Record<string, MCPServerConfig>;\r\n /** Auditor for observability */\r\n auditor?: Auditor;\r\n}\r\n\r\nexport interface MCPTool {\r\n /** Server this tool came from */\r\n serverName: string;\r\n /** Tool name (as reported by the server) */\r\n name: string;\r\n /** Full qualified name (serverName:toolName) */\r\n qualifiedName: string;\r\n /** Tool description */\r\n description: string;\r\n /** JSON Schema for tool input */\r\n inputSchema: Record<string, unknown>;\r\n}\r\n\r\n// ============================================================================\r\n// Internal: SDK types (to avoid hard dependency)\r\n// ============================================================================\r\n\r\ninterface MCPClientLike {\r\n connect(transport: unknown): Promise<void>;\r\n close(): Promise<void>;\r\n listTools(): Promise<{ tools: Array<{ name: string; description?: string; inputSchema: Record<string, unknown> }> }>;\r\n callTool(params: { name: string; arguments?: Record<string, unknown> }): Promise<{ content: Array<{ type: string; text?: string }> }>;\r\n}\r\n\r\n// ============================================================================\r\n// MCPToolBridge\r\n// ============================================================================\r\n\r\nexport class MCPToolBridge {\r\n private config: MCPBridgeConfig;\r\n private auditor: Auditor;\r\n private clients: Map<string, MCPClientLike> = new Map();\r\n private transports: Map<string, unknown> = new Map();\r\n private discoveredTools: MCPTool[] = [];\r\n private connected = false;\r\n\r\n constructor(config: MCPBridgeConfig) {\r\n this.config = config;\r\n this.auditor = config.auditor ?? new NoopAuditor();\r\n }\r\n\r\n // ========================================================================\r\n // Connection Lifecycle\r\n // ========================================================================\r\n\r\n /**\r\n * Connect to all configured MCP servers and discover their tools.\r\n * Requires @modelcontextprotocol/sdk to be installed.\r\n */\r\n async connect(): Promise<void> {\r\n if (this.connected) return;\r\n\r\n // Dynamic import of MCP SDK (peer dependency)\r\n let sdk: {\r\n Client: new (info: { name: string; version: string }, opts?: { capabilities?: Record<string, unknown> }) => MCPClientLike;\r\n StdioClientTransport?: new (opts: { command: string; args?: string[]; env?: Record<string, string> }) => unknown;\r\n StreamableHTTPClientTransport?: new (url: URL, opts?: { requestInit?: { headers: Record<string, string> } }) => unknown;\r\n };\r\n\r\n try {\r\n // @ts-ignore — peer dependency, may not be installed\r\n sdk = await import('@modelcontextprotocol/sdk/client/index.js');\r\n } catch {\r\n throw new Error(\r\n 'MCP integration requires @modelcontextprotocol/sdk.\\n' +\r\n 'Install it: bun add @modelcontextprotocol/sdk'\r\n );\r\n }\r\n\r\n const entries = Object.entries(this.config.servers);\r\n\r\n for (const [serverName, serverConfig] of entries) {\r\n try {\r\n const client = new sdk.Client(\r\n { name: 'universal-llm-client', version: '3.0.0' },\r\n { capabilities: {} },\r\n );\r\n\r\n let transport: unknown;\r\n\r\n if (serverConfig.url) {\r\n // HTTP transport (all runtimes)\r\n if (!sdk.StreamableHTTPClientTransport) {\r\n // Try separate import path\r\n // @ts-ignore — peer dependency, may not be installed\r\n const httpModule = await import('@modelcontextprotocol/sdk/client/streamableHttp.js').catch(() => null);\r\n if (!httpModule?.StreamableHTTPClientTransport) {\r\n throw new Error('StreamableHTTPClientTransport not available in this SDK version');\r\n }\r\n transport = new httpModule.StreamableHTTPClientTransport(\r\n new URL(serverConfig.url),\r\n serverConfig.headers ? { requestInit: { headers: serverConfig.headers } } : undefined,\r\n );\r\n } else {\r\n transport = new sdk.StreamableHTTPClientTransport(\r\n new URL(serverConfig.url),\r\n serverConfig.headers ? { requestInit: { headers: serverConfig.headers } } : undefined,\r\n );\r\n }\r\n } else if (serverConfig.command) {\r\n // Stdio transport (Node/Bun/Deno only)\r\n if (!sdk.StdioClientTransport) {\r\n // @ts-ignore — peer dependency, may not be installed\r\n const stdioModule = await import('@modelcontextprotocol/sdk/client/stdio.js').catch(() => null);\r\n if (!stdioModule?.StdioClientTransport) {\r\n throw new Error(\r\n 'Stdio transport not available. This is expected in browser environments.\\n' +\r\n 'Use HTTP transport (url) instead, or run in Node/Bun/Deno.'\r\n );\r\n }\r\n transport = new stdioModule.StdioClientTransport({\r\n command: serverConfig.command,\r\n args: serverConfig.args,\r\n env: serverConfig.env,\r\n });\r\n } else {\r\n transport = new sdk.StdioClientTransport({\r\n command: serverConfig.command,\r\n args: serverConfig.args,\r\n env: serverConfig.env,\r\n });\r\n }\r\n } else {\r\n throw new Error(`MCP server \"${serverName}\" must have either \"url\" or \"command\" configured`);\r\n }\r\n\r\n await client.connect(transport);\r\n this.clients.set(serverName, client);\r\n this.transports.set(serverName, transport);\r\n\r\n // Discover tools\r\n const toolList = await client.listTools();\r\n for (const tool of toolList.tools) {\r\n this.discoveredTools.push({\r\n serverName,\r\n name: tool.name,\r\n qualifiedName: `${serverName}:${tool.name}`,\r\n description: tool.description ?? '',\r\n inputSchema: tool.inputSchema,\r\n });\r\n }\r\n\r\n this.auditor.record({\r\n timestamp: Date.now(),\r\n type: 'response',\r\n metadata: {\r\n event: 'mcp_connected',\r\n server: serverName,\r\n toolCount: toolList.tools.length,\r\n },\r\n });\r\n } catch (error) {\r\n this.auditor.record({\r\n timestamp: Date.now(),\r\n type: 'error',\r\n error: error instanceof Error ? error.message : String(error),\r\n metadata: { event: 'mcp_connect_failed', server: serverName },\r\n });\r\n throw error;\r\n }\r\n }\r\n\r\n this.connected = true;\r\n }\r\n\r\n // ========================================================================\r\n // Tool Registration\r\n // ========================================================================\r\n\r\n /**\r\n * Register all discovered MCP tools with an AIModel instance.\r\n * Each MCP tool becomes a callable tool that forwards execution\r\n * to the appropriate MCP server.\r\n */\r\n async registerTools(model: AIModel): Promise<void> {\r\n if (!this.connected) {\r\n await this.connect();\r\n }\r\n\r\n const tools = this.discoveredTools.map(mcpTool => ({\r\n name: mcpTool.qualifiedName,\r\n description: mcpTool.description,\r\n parameters: this.convertInputSchema(mcpTool.inputSchema),\r\n handler: this.createToolHandler(mcpTool),\r\n }));\r\n\r\n model.registerTools(tools);\r\n }\r\n\r\n /**\r\n * Get all discovered MCP tools (for inspection).\r\n */\r\n getTools(): ReadonlyArray<MCPTool> {\r\n return this.discoveredTools;\r\n }\r\n\r\n // ========================================================================\r\n // Disconnect\r\n // ========================================================================\r\n\r\n /**\r\n * Disconnect from all MCP servers and clean up.\r\n */\r\n async disconnect(): Promise<void> {\r\n for (const [serverName, client] of this.clients) {\r\n try {\r\n await client.close();\r\n } catch (error) {\r\n this.auditor.record({\r\n timestamp: Date.now(),\r\n type: 'error',\r\n error: error instanceof Error ? error.message : String(error),\r\n metadata: { event: 'mcp_disconnect_failed', server: serverName },\r\n });\r\n }\r\n }\r\n this.clients.clear();\r\n this.transports.clear();\r\n this.discoveredTools = [];\r\n this.connected = false;\r\n }\r\n\r\n // ========================================================================\r\n // Internal\r\n // ========================================================================\r\n\r\n private createToolHandler(mcpTool: MCPTool): ToolHandler {\r\n return async (args: unknown) => {\r\n const client = this.clients.get(mcpTool.serverName);\r\n if (!client) {\r\n throw new Error(`MCP server \"${mcpTool.serverName}\" is not connected`);\r\n }\r\n\r\n const start = Date.now();\r\n this.auditor.record({\r\n timestamp: start,\r\n type: 'tool_call',\r\n metadata: {\r\n event: 'mcp_tool_call',\r\n server: mcpTool.serverName,\r\n tool: mcpTool.name,\r\n },\r\n });\r\n\r\n try {\r\n const result = await client.callTool({\r\n name: mcpTool.name,\r\n arguments: args as Record<string, unknown> | undefined,\r\n });\r\n\r\n // Extract text content from MCP response\r\n const textParts = result.content\r\n .filter(c => c.type === 'text' && c.text)\r\n .map(c => c.text);\r\n\r\n const output = textParts.length === 1 ? textParts[0] : textParts.join('\\n');\r\n\r\n this.auditor.record({\r\n timestamp: Date.now(),\r\n type: 'tool_result',\r\n metadata: {\r\n event: 'mcp_tool_result',\r\n server: mcpTool.serverName,\r\n tool: mcpTool.name,\r\n duration: Date.now() - start,\r\n },\r\n });\r\n\r\n return output;\r\n } catch (error) {\r\n this.auditor.record({\r\n timestamp: Date.now(),\r\n type: 'error',\r\n error: error instanceof Error ? error.message : String(error),\r\n metadata: {\r\n event: 'mcp_tool_error',\r\n server: mcpTool.serverName,\r\n tool: mcpTool.name,\r\n },\r\n });\r\n throw error;\r\n }\r\n };\r\n }\r\n\r\n private convertInputSchema(schema: Record<string, unknown>): LLMFunction['parameters'] {\r\n return {\r\n type: 'object',\r\n properties: (schema['properties'] as Record<string, unknown>) ?? {},\r\n required: schema['required'] as string[] | undefined,\r\n };\r\n }\r\n}\r\n"]}
|