@yourgpt/llm-sdk 2.5.1-beta.0 → 2.5.1-beta.1

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.
Files changed (52) hide show
  1. package/README.md +19 -1
  2. package/dist/adapters/index.d.mts +4 -4
  3. package/dist/adapters/index.d.ts +4 -4
  4. package/dist/adapters/index.js +139 -12
  5. package/dist/adapters/index.mjs +139 -12
  6. package/dist/{base-tNgbBaSo.d.mts → base-BYQKp9TW.d.mts} +5 -1
  7. package/dist/{base-C58Dsr9p.d.ts → base-Cxq3ni0t.d.ts} +5 -1
  8. package/dist/fallback/index.d.mts +4 -4
  9. package/dist/fallback/index.d.ts +4 -4
  10. package/dist/index.d.mts +60 -8
  11. package/dist/index.d.ts +60 -8
  12. package/dist/index.js +59 -0
  13. package/dist/index.mjs +59 -0
  14. package/dist/providers/anthropic/index.d.mts +3 -3
  15. package/dist/providers/anthropic/index.d.ts +3 -3
  16. package/dist/providers/anthropic/index.js +91 -10
  17. package/dist/providers/anthropic/index.mjs +91 -10
  18. package/dist/providers/azure/index.d.mts +3 -3
  19. package/dist/providers/azure/index.d.ts +3 -3
  20. package/dist/providers/fireworks/index.d.mts +1 -1
  21. package/dist/providers/fireworks/index.d.ts +1 -1
  22. package/dist/providers/google/index.d.mts +3 -3
  23. package/dist/providers/google/index.d.ts +3 -3
  24. package/dist/providers/google/index.js +51 -2
  25. package/dist/providers/google/index.mjs +51 -2
  26. package/dist/providers/ollama/index.d.mts +4 -4
  27. package/dist/providers/ollama/index.d.ts +4 -4
  28. package/dist/providers/openai/index.d.mts +3 -3
  29. package/dist/providers/openai/index.d.ts +3 -3
  30. package/dist/providers/openai/index.js +51 -2
  31. package/dist/providers/openai/index.mjs +51 -2
  32. package/dist/providers/openrouter/index.d.mts +3 -3
  33. package/dist/providers/openrouter/index.d.ts +3 -3
  34. package/dist/providers/openrouter/index.js +51 -2
  35. package/dist/providers/openrouter/index.mjs +51 -2
  36. package/dist/providers/togetherai/index.d.mts +3 -3
  37. package/dist/providers/togetherai/index.d.ts +3 -3
  38. package/dist/providers/togetherai/index.js +51 -2
  39. package/dist/providers/togetherai/index.mjs +51 -2
  40. package/dist/providers/xai/index.d.mts +3 -3
  41. package/dist/providers/xai/index.d.ts +3 -3
  42. package/dist/providers/xai/index.js +51 -2
  43. package/dist/providers/xai/index.mjs +51 -2
  44. package/dist/{types-BSSiJW2o.d.mts → types-BvkiJ1dd.d.mts} +2 -2
  45. package/dist/{types-CCxPmkmK.d.ts → types-ChORafYS.d.ts} +1 -1
  46. package/dist/{types-BkQCSiIt.d.mts → types-D774b0dg.d.mts} +57 -2
  47. package/dist/{types-BkQCSiIt.d.ts → types-D774b0dg.d.ts} +57 -2
  48. package/dist/{types-BQ31QIsA.d.ts → types-TMilS-Dz.d.ts} +2 -2
  49. package/dist/{types-B6dhnguR.d.mts → types-mwMhCwOq.d.mts} +1 -1
  50. package/dist/yourgpt/index.d.mts +1 -1
  51. package/dist/yourgpt/index.d.ts +1 -1
  52. package/package.json +1 -1
package/dist/index.d.mts CHANGED
@@ -1,13 +1,13 @@
1
- import { G as GenerateTextParams, a as GenerateTextResult, S as StreamTextParams, b as StreamTextResult, T as ToolContext, c as Tool, A as ActionDefinition, d as ToolDefinition, e as ToolProfile, K as KnowledgeBaseConfig, W as WebSearchConfig, f as StorageAdapter, R as ResponseFormat, D as DoneEventMessage, g as StreamEvent, h as ToolCallInfo, i as TokenUsageRaw, P as ProviderToolRuntimeOptions, M as Message, j as ToolResponse, k as StorageMessage } from './types-BkQCSiIt.mjs';
2
- export { a4 as AnthropicProviderToolOptions, a1 as AnthropicToolSelectionHints, p as AssistantMessage, a5 as Citation, C as CoreMessage, V as DEFAULT_CAPABILITIES, m as DoGenerateParams, n as DoGenerateResult, H as ErrorChunk, F as FilePart, E as FinishChunk, N as FinishReason, v as GenerateStep, I as ImagePart, X as LLMConfig, L as LanguageModel, l as ModelCapabilities, a3 as OpenAIProviderToolOptions, a0 as OpenAIToolSelectionHints, O as ResponseOptions, Q as StorageFile, x as StreamChunk, w as StreamPart, o as SystemMessage, y as TextDeltaChunk, s as TextPart, J as TokenUsage, t as ToolCall, z as ToolCallChunk, $ as ToolExecution, Y as ToolLocation, q as ToolMessage, a2 as ToolNativeProviderHints, u as ToolResult, B as ToolResultChunk, Z as UnifiedToolCall, _ as UnifiedToolResult, r as UserContentPart, U as UserMessage } from './types-BkQCSiIt.mjs';
1
+ import { G as GenerateTextParams, a as GenerateTextResult, S as StreamTextParams, b as StreamTextResult, T as ToolContext, c as Tool, A as ActionDefinition, d as ToolDefinition, e as ToolProfile, K as KnowledgeBaseConfig, W as WebSearchConfig, f as StorageAdapter, R as ResponseFormat, M as McpServerConfig, g as ReasoningEffort, D as DoneEventMessage, h as StreamEvent, i as ToolCallInfo, j as TokenUsageRaw, P as ProviderToolRuntimeOptions, k as Message, l as ToolResponse, m as StorageMessage } from './types-D774b0dg.mjs';
2
+ export { a6 as AnthropicProviderToolOptions, a3 as AnthropicToolSelectionHints, r as AssistantMessage, a7 as Citation, C as CoreMessage, Y as DEFAULT_CAPABILITIES, o as DoGenerateParams, p as DoGenerateResult, N as ErrorChunk, F as FilePart, J as FinishChunk, Q as FinishReason, x as GenerateStep, I as ImagePart, Z as LLMConfig, L as LanguageModel, n as ModelCapabilities, a5 as OpenAIProviderToolOptions, a2 as OpenAIToolSelectionHints, V as ResponseOptions, X as StorageFile, z as StreamChunk, y as StreamPart, q as SystemMessage, B as TextDeltaChunk, u as TextPart, O as TokenUsage, v as ToolCall, E as ToolCallChunk, a1 as ToolExecution, _ as ToolLocation, s as ToolMessage, a4 as ToolNativeProviderHints, w as ToolResult, H as ToolResultChunk, $ as UnifiedToolCall, a0 as UnifiedToolResult, t as UserContentPart, U as UserMessage } from './types-D774b0dg.mjs';
3
3
  import { z } from 'zod';
4
- import { A as AIProvider } from './types-BSSiJW2o.mjs';
5
- export { a as AnthropicProviderConfig, f as AnthropicTool, h as AnthropicToolResult, g as AnthropicToolUse, b as AzureProviderConfig, B as BaseProviderConfig, m as GeminiFunctionCall, l as GeminiFunctionDeclaration, n as GeminiFunctionResponse, G as GoogleProviderConfig, d as OllamaModelOptions, c as OllamaProviderConfig, O as OpenAIProviderConfig, i as OpenAITool, j as OpenAIToolCall, k as OpenAIToolResult, P as ProviderCapabilities, e as ProviderFormatter, X as XAIProviderConfig } from './types-BSSiJW2o.mjs';
6
- import { L as LLMAdapter } from './base-tNgbBaSo.mjs';
7
- export { A as AdapterFactory, C as ChatCompletionRequest } from './base-tNgbBaSo.mjs';
4
+ import { A as AIProvider } from './types-BvkiJ1dd.mjs';
5
+ export { a as AnthropicProviderConfig, f as AnthropicTool, h as AnthropicToolResult, g as AnthropicToolUse, b as AzureProviderConfig, B as BaseProviderConfig, m as GeminiFunctionCall, l as GeminiFunctionDeclaration, n as GeminiFunctionResponse, G as GoogleProviderConfig, d as OllamaModelOptions, c as OllamaProviderConfig, O as OpenAIProviderConfig, i as OpenAITool, j as OpenAIToolCall, k as OpenAIToolResult, P as ProviderCapabilities, e as ProviderFormatter, X as XAIProviderConfig } from './types-BvkiJ1dd.mjs';
6
+ import { L as LLMAdapter } from './base-BYQKp9TW.mjs';
7
+ export { A as AdapterFactory, C as ChatCompletionRequest } from './base-BYQKp9TW.mjs';
8
8
  import * as hono from 'hono';
9
9
  import { Hono } from 'hono';
10
- export { F as FallbackChainConfig, c as FallbackFailure, d as FallbackInfo, b as RetryBackoff, e as RetryInfo, R as RoutingStore, a as RoutingStrategy } from './types-B6dhnguR.mjs';
10
+ export { F as FallbackChainConfig, c as FallbackFailure, d as FallbackInfo, b as RetryBackoff, e as RetryInfo, R as RoutingStore, a as RoutingStrategy } from './types-mwMhCwOq.mjs';
11
11
 
12
12
  /**
13
13
  * generateText - Generate text using a language model
@@ -389,6 +389,8 @@ interface ChatRequest {
389
389
  temperature?: number;
390
390
  maxTokens?: number;
391
391
  responseFormat?: ResponseFormat;
392
+ mcpServers?: McpServerConfig[];
393
+ reasoningEffort?: ReasoningEffort;
392
394
  };
393
395
  /** System prompt override */
394
396
  systemPrompt?: string;
@@ -798,6 +800,11 @@ declare function createStreamResult(generator: AsyncGenerator<StreamEvent>): Str
798
800
  * ```
799
801
  */
800
802
 
803
+ interface GenerateUsage {
804
+ promptTokens: number;
805
+ completionTokens: number;
806
+ totalTokens: number;
807
+ }
801
808
  interface GenerateResultData {
802
809
  text: string;
803
810
  messages: DoneEventMessage[];
@@ -811,6 +818,7 @@ interface GenerateResultData {
811
818
  result: unknown;
812
819
  }>;
813
820
  requiresAction: boolean;
821
+ usage?: GenerateUsage;
814
822
  error?: {
815
823
  message: string;
816
824
  code?: string;
@@ -864,6 +872,12 @@ declare class GenerateResult {
864
872
  * Whether client action is required (e.g., tool approval)
865
873
  */
866
874
  get requiresAction(): boolean;
875
+ /**
876
+ * Token usage for the call — present when the underlying provider emitted
877
+ * a usage payload on the `done` event. May be undefined for streaming
878
+ * responses that don't yield usage (e.g. mid-stream errors).
879
+ */
880
+ get usage(): GenerateUsage | undefined;
867
881
  /**
868
882
  * Error if generation failed
869
883
  */
@@ -1123,6 +1137,44 @@ declare class Runtime {
1123
1137
  * ```
1124
1138
  */
1125
1139
  generate(request: ChatRequest, options?: GenerateOptions): Promise<GenerateResult>;
1140
+ /**
1141
+ * One-shot non-streaming call bundling MCP servers, reasoning effort, and
1142
+ * structured output. Thin ergonomic wrapper around `generate()` — uses the
1143
+ * same adapter chain and the same translators, just expressed as a single
1144
+ * prompt-in / text-out call.
1145
+ *
1146
+ * @example
1147
+ * ```ts
1148
+ * const result = await runtime.response({
1149
+ * prompt: "Extract FAQs from this conversation.",
1150
+ * mcpServers: [{ label: "kb", url: "https://kb.example.com/sse", headers: { Authorization: token } }],
1151
+ * reasoningEffort: "high",
1152
+ * responseFormat: { type: "json_schema", json_schema: { name: "faqs", schema } },
1153
+ * });
1154
+ * const data = JSON.parse(result.text);
1155
+ * ```
1156
+ */
1157
+ response(request: {
1158
+ prompt: string;
1159
+ systemPrompt?: string;
1160
+ mcpServers?: McpServerConfig[];
1161
+ reasoningEffort?: ReasoningEffort;
1162
+ responseFormat?: ResponseFormat;
1163
+ maxTokens?: number;
1164
+ temperature?: number;
1165
+ }): Promise<{
1166
+ text: string;
1167
+ toolCalls: Array<{
1168
+ id: string;
1169
+ name: string;
1170
+ args: Record<string, unknown>;
1171
+ }>;
1172
+ usage?: {
1173
+ promptTokens: number;
1174
+ completionTokens: number;
1175
+ totalTokens: number;
1176
+ };
1177
+ }>;
1126
1178
  /**
1127
1179
  * Create Express-compatible handler middleware
1128
1180
  *
@@ -1537,4 +1589,4 @@ declare function generateThreadId(): string;
1537
1589
  */
1538
1590
  declare function generateToolCallId(): string;
1539
1591
 
1540
- export { AIProvider, ActionDefinition, type ActionRequest, type AgentLoopOptions, type ChatRequest, type CollectedResult, type CopilotChatResponse, DEFAULT_MAX_ITERATIONS, DoneEventMessage, GenerateResult, type GenerateResultData, GenerateTextParams, GenerateTextResult, LLMAdapter, Message, ProviderToolRuntimeOptions, type RequestContext, Runtime, type RuntimeConfig, StorageAdapter, StorageMessage, StreamEvent, StreamResult, type StreamResultOptions, StreamTextParams, StreamTextResult, TokenUsageRaw, Tool, ToolCallInfo, ToolContext, ToolDefinition, ToolProfile, ToolResponse, type ToolSearchMatch, WebSearchConfig, buildProviderToolOptions, createEventStream, createExpressHandler, createExpressMiddleware, createHonoApp, createNextHandler, createNodeHandler, createRuntime, createSSEHeaders, createSSEResponse, createStreamResult, createTextStreamHeaders, createTextStreamResponse, extractInputMessages, formatSSEData, formatToolsForAnthropic, formatToolsForGoogle, formatToolsForOpenAI, generateMessageId, generateText, generateThreadId, generateToolCallId, mapOutputMessages, pipeSSEToResponse, pipeTextToResponse, runAgentLoop, searchTools, selectTools, shouldExposeToolSearch, streamText, tool };
1592
+ export { AIProvider, ActionDefinition, type ActionRequest, type AgentLoopOptions, type ChatRequest, type CollectedResult, type CopilotChatResponse, DEFAULT_MAX_ITERATIONS, DoneEventMessage, GenerateResult, type GenerateResultData, GenerateTextParams, GenerateTextResult, LLMAdapter, McpServerConfig, Message, ProviderToolRuntimeOptions, ReasoningEffort, type RequestContext, ResponseFormat, Runtime, type RuntimeConfig, StorageAdapter, StorageMessage, StreamEvent, StreamResult, type StreamResultOptions, StreamTextParams, StreamTextResult, TokenUsageRaw, Tool, ToolCallInfo, ToolContext, ToolDefinition, ToolProfile, ToolResponse, type ToolSearchMatch, WebSearchConfig, buildProviderToolOptions, createEventStream, createExpressHandler, createExpressMiddleware, createHonoApp, createNextHandler, createNodeHandler, createRuntime, createSSEHeaders, createSSEResponse, createStreamResult, createTextStreamHeaders, createTextStreamResponse, extractInputMessages, formatSSEData, formatToolsForAnthropic, formatToolsForGoogle, formatToolsForOpenAI, generateMessageId, generateText, generateThreadId, generateToolCallId, mapOutputMessages, pipeSSEToResponse, pipeTextToResponse, runAgentLoop, searchTools, selectTools, shouldExposeToolSearch, streamText, tool };
package/dist/index.d.ts CHANGED
@@ -1,13 +1,13 @@
1
- import { G as GenerateTextParams, a as GenerateTextResult, S as StreamTextParams, b as StreamTextResult, T as ToolContext, c as Tool, A as ActionDefinition, d as ToolDefinition, e as ToolProfile, K as KnowledgeBaseConfig, W as WebSearchConfig, f as StorageAdapter, R as ResponseFormat, D as DoneEventMessage, g as StreamEvent, h as ToolCallInfo, i as TokenUsageRaw, P as ProviderToolRuntimeOptions, M as Message, j as ToolResponse, k as StorageMessage } from './types-BkQCSiIt.js';
2
- export { a4 as AnthropicProviderToolOptions, a1 as AnthropicToolSelectionHints, p as AssistantMessage, a5 as Citation, C as CoreMessage, V as DEFAULT_CAPABILITIES, m as DoGenerateParams, n as DoGenerateResult, H as ErrorChunk, F as FilePart, E as FinishChunk, N as FinishReason, v as GenerateStep, I as ImagePart, X as LLMConfig, L as LanguageModel, l as ModelCapabilities, a3 as OpenAIProviderToolOptions, a0 as OpenAIToolSelectionHints, O as ResponseOptions, Q as StorageFile, x as StreamChunk, w as StreamPart, o as SystemMessage, y as TextDeltaChunk, s as TextPart, J as TokenUsage, t as ToolCall, z as ToolCallChunk, $ as ToolExecution, Y as ToolLocation, q as ToolMessage, a2 as ToolNativeProviderHints, u as ToolResult, B as ToolResultChunk, Z as UnifiedToolCall, _ as UnifiedToolResult, r as UserContentPart, U as UserMessage } from './types-BkQCSiIt.js';
1
+ import { G as GenerateTextParams, a as GenerateTextResult, S as StreamTextParams, b as StreamTextResult, T as ToolContext, c as Tool, A as ActionDefinition, d as ToolDefinition, e as ToolProfile, K as KnowledgeBaseConfig, W as WebSearchConfig, f as StorageAdapter, R as ResponseFormat, M as McpServerConfig, g as ReasoningEffort, D as DoneEventMessage, h as StreamEvent, i as ToolCallInfo, j as TokenUsageRaw, P as ProviderToolRuntimeOptions, k as Message, l as ToolResponse, m as StorageMessage } from './types-D774b0dg.js';
2
+ export { a6 as AnthropicProviderToolOptions, a3 as AnthropicToolSelectionHints, r as AssistantMessage, a7 as Citation, C as CoreMessage, Y as DEFAULT_CAPABILITIES, o as DoGenerateParams, p as DoGenerateResult, N as ErrorChunk, F as FilePart, J as FinishChunk, Q as FinishReason, x as GenerateStep, I as ImagePart, Z as LLMConfig, L as LanguageModel, n as ModelCapabilities, a5 as OpenAIProviderToolOptions, a2 as OpenAIToolSelectionHints, V as ResponseOptions, X as StorageFile, z as StreamChunk, y as StreamPart, q as SystemMessage, B as TextDeltaChunk, u as TextPart, O as TokenUsage, v as ToolCall, E as ToolCallChunk, a1 as ToolExecution, _ as ToolLocation, s as ToolMessage, a4 as ToolNativeProviderHints, w as ToolResult, H as ToolResultChunk, $ as UnifiedToolCall, a0 as UnifiedToolResult, t as UserContentPart, U as UserMessage } from './types-D774b0dg.js';
3
3
  import { z } from 'zod';
4
- import { A as AIProvider } from './types-BQ31QIsA.js';
5
- export { a as AnthropicProviderConfig, f as AnthropicTool, h as AnthropicToolResult, g as AnthropicToolUse, b as AzureProviderConfig, B as BaseProviderConfig, m as GeminiFunctionCall, l as GeminiFunctionDeclaration, n as GeminiFunctionResponse, G as GoogleProviderConfig, d as OllamaModelOptions, c as OllamaProviderConfig, O as OpenAIProviderConfig, i as OpenAITool, j as OpenAIToolCall, k as OpenAIToolResult, P as ProviderCapabilities, e as ProviderFormatter, X as XAIProviderConfig } from './types-BQ31QIsA.js';
6
- import { L as LLMAdapter } from './base-C58Dsr9p.js';
7
- export { A as AdapterFactory, C as ChatCompletionRequest } from './base-C58Dsr9p.js';
4
+ import { A as AIProvider } from './types-TMilS-Dz.js';
5
+ export { a as AnthropicProviderConfig, f as AnthropicTool, h as AnthropicToolResult, g as AnthropicToolUse, b as AzureProviderConfig, B as BaseProviderConfig, m as GeminiFunctionCall, l as GeminiFunctionDeclaration, n as GeminiFunctionResponse, G as GoogleProviderConfig, d as OllamaModelOptions, c as OllamaProviderConfig, O as OpenAIProviderConfig, i as OpenAITool, j as OpenAIToolCall, k as OpenAIToolResult, P as ProviderCapabilities, e as ProviderFormatter, X as XAIProviderConfig } from './types-TMilS-Dz.js';
6
+ import { L as LLMAdapter } from './base-Cxq3ni0t.js';
7
+ export { A as AdapterFactory, C as ChatCompletionRequest } from './base-Cxq3ni0t.js';
8
8
  import * as hono from 'hono';
9
9
  import { Hono } from 'hono';
10
- export { F as FallbackChainConfig, c as FallbackFailure, d as FallbackInfo, b as RetryBackoff, e as RetryInfo, R as RoutingStore, a as RoutingStrategy } from './types-CCxPmkmK.js';
10
+ export { F as FallbackChainConfig, c as FallbackFailure, d as FallbackInfo, b as RetryBackoff, e as RetryInfo, R as RoutingStore, a as RoutingStrategy } from './types-ChORafYS.js';
11
11
 
12
12
  /**
13
13
  * generateText - Generate text using a language model
@@ -389,6 +389,8 @@ interface ChatRequest {
389
389
  temperature?: number;
390
390
  maxTokens?: number;
391
391
  responseFormat?: ResponseFormat;
392
+ mcpServers?: McpServerConfig[];
393
+ reasoningEffort?: ReasoningEffort;
392
394
  };
393
395
  /** System prompt override */
394
396
  systemPrompt?: string;
@@ -798,6 +800,11 @@ declare function createStreamResult(generator: AsyncGenerator<StreamEvent>): Str
798
800
  * ```
799
801
  */
800
802
 
803
+ interface GenerateUsage {
804
+ promptTokens: number;
805
+ completionTokens: number;
806
+ totalTokens: number;
807
+ }
801
808
  interface GenerateResultData {
802
809
  text: string;
803
810
  messages: DoneEventMessage[];
@@ -811,6 +818,7 @@ interface GenerateResultData {
811
818
  result: unknown;
812
819
  }>;
813
820
  requiresAction: boolean;
821
+ usage?: GenerateUsage;
814
822
  error?: {
815
823
  message: string;
816
824
  code?: string;
@@ -864,6 +872,12 @@ declare class GenerateResult {
864
872
  * Whether client action is required (e.g., tool approval)
865
873
  */
866
874
  get requiresAction(): boolean;
875
+ /**
876
+ * Token usage for the call — present when the underlying provider emitted
877
+ * a usage payload on the `done` event. May be undefined for streaming
878
+ * responses that don't yield usage (e.g. mid-stream errors).
879
+ */
880
+ get usage(): GenerateUsage | undefined;
867
881
  /**
868
882
  * Error if generation failed
869
883
  */
@@ -1123,6 +1137,44 @@ declare class Runtime {
1123
1137
  * ```
1124
1138
  */
1125
1139
  generate(request: ChatRequest, options?: GenerateOptions): Promise<GenerateResult>;
1140
+ /**
1141
+ * One-shot non-streaming call bundling MCP servers, reasoning effort, and
1142
+ * structured output. Thin ergonomic wrapper around `generate()` — uses the
1143
+ * same adapter chain and the same translators, just expressed as a single
1144
+ * prompt-in / text-out call.
1145
+ *
1146
+ * @example
1147
+ * ```ts
1148
+ * const result = await runtime.response({
1149
+ * prompt: "Extract FAQs from this conversation.",
1150
+ * mcpServers: [{ label: "kb", url: "https://kb.example.com/sse", headers: { Authorization: token } }],
1151
+ * reasoningEffort: "high",
1152
+ * responseFormat: { type: "json_schema", json_schema: { name: "faqs", schema } },
1153
+ * });
1154
+ * const data = JSON.parse(result.text);
1155
+ * ```
1156
+ */
1157
+ response(request: {
1158
+ prompt: string;
1159
+ systemPrompt?: string;
1160
+ mcpServers?: McpServerConfig[];
1161
+ reasoningEffort?: ReasoningEffort;
1162
+ responseFormat?: ResponseFormat;
1163
+ maxTokens?: number;
1164
+ temperature?: number;
1165
+ }): Promise<{
1166
+ text: string;
1167
+ toolCalls: Array<{
1168
+ id: string;
1169
+ name: string;
1170
+ args: Record<string, unknown>;
1171
+ }>;
1172
+ usage?: {
1173
+ promptTokens: number;
1174
+ completionTokens: number;
1175
+ totalTokens: number;
1176
+ };
1177
+ }>;
1126
1178
  /**
1127
1179
  * Create Express-compatible handler middleware
1128
1180
  *
@@ -1537,4 +1589,4 @@ declare function generateThreadId(): string;
1537
1589
  */
1538
1590
  declare function generateToolCallId(): string;
1539
1591
 
1540
- export { AIProvider, ActionDefinition, type ActionRequest, type AgentLoopOptions, type ChatRequest, type CollectedResult, type CopilotChatResponse, DEFAULT_MAX_ITERATIONS, DoneEventMessage, GenerateResult, type GenerateResultData, GenerateTextParams, GenerateTextResult, LLMAdapter, Message, ProviderToolRuntimeOptions, type RequestContext, Runtime, type RuntimeConfig, StorageAdapter, StorageMessage, StreamEvent, StreamResult, type StreamResultOptions, StreamTextParams, StreamTextResult, TokenUsageRaw, Tool, ToolCallInfo, ToolContext, ToolDefinition, ToolProfile, ToolResponse, type ToolSearchMatch, WebSearchConfig, buildProviderToolOptions, createEventStream, createExpressHandler, createExpressMiddleware, createHonoApp, createNextHandler, createNodeHandler, createRuntime, createSSEHeaders, createSSEResponse, createStreamResult, createTextStreamHeaders, createTextStreamResponse, extractInputMessages, formatSSEData, formatToolsForAnthropic, formatToolsForGoogle, formatToolsForOpenAI, generateMessageId, generateText, generateThreadId, generateToolCallId, mapOutputMessages, pipeSSEToResponse, pipeTextToResponse, runAgentLoop, searchTools, selectTools, shouldExposeToolSearch, streamText, tool };
1592
+ export { AIProvider, ActionDefinition, type ActionRequest, type AgentLoopOptions, type ChatRequest, type CollectedResult, type CopilotChatResponse, DEFAULT_MAX_ITERATIONS, DoneEventMessage, GenerateResult, type GenerateResultData, GenerateTextParams, GenerateTextResult, LLMAdapter, McpServerConfig, Message, ProviderToolRuntimeOptions, ReasoningEffort, type RequestContext, ResponseFormat, Runtime, type RuntimeConfig, StorageAdapter, StorageMessage, StreamEvent, StreamResult, type StreamResultOptions, StreamTextParams, StreamTextResult, TokenUsageRaw, Tool, ToolCallInfo, ToolContext, ToolDefinition, ToolProfile, ToolResponse, type ToolSearchMatch, WebSearchConfig, buildProviderToolOptions, createEventStream, createExpressHandler, createExpressMiddleware, createHonoApp, createNextHandler, createNodeHandler, createRuntime, createSSEHeaders, createSSEResponse, createStreamResult, createTextStreamHeaders, createTextStreamResponse, extractInputMessages, formatSSEData, formatToolsForAnthropic, formatToolsForGoogle, formatToolsForOpenAI, generateMessageId, generateText, generateThreadId, generateToolCallId, mapOutputMessages, pipeSSEToResponse, pipeTextToResponse, runAgentLoop, searchTools, selectTools, shouldExposeToolSearch, streamText, tool };
package/dist/index.js CHANGED
@@ -155,6 +155,8 @@ async function generateText(params) {
155
155
  temperature: params.temperature,
156
156
  maxTokens: params.maxTokens,
157
157
  responseFormat: params.responseFormat,
158
+ mcpServers: params.mcpServers,
159
+ reasoningEffort: params.reasoningEffort,
158
160
  signal
159
161
  });
160
162
  const stepToolResults = [];
@@ -303,6 +305,8 @@ async function streamText(params) {
303
305
  temperature: params.temperature,
304
306
  maxTokens: params.maxTokens,
305
307
  responseFormat: params.responseFormat,
308
+ mcpServers: params.mcpServers,
309
+ reasoningEffort: params.reasoningEffort,
306
310
  signal
307
311
  })) {
308
312
  switch (chunk.type) {
@@ -1171,6 +1175,14 @@ var GenerateResult = class {
1171
1175
  get requiresAction() {
1172
1176
  return this.data.requiresAction;
1173
1177
  }
1178
+ /**
1179
+ * Token usage for the call — present when the underlying provider emitted
1180
+ * a usage payload on the `done` event. May be undefined for streaming
1181
+ * responses that don't yield usage (e.g. mid-stream errors).
1182
+ */
1183
+ get usage() {
1184
+ return this.data.usage;
1185
+ }
1174
1186
  /**
1175
1187
  * Error if generation failed
1176
1188
  */
@@ -2957,6 +2969,7 @@ var Runtime = class {
2957
2969
  const toolResults = [];
2958
2970
  let messages = [];
2959
2971
  let requiresAction = false;
2972
+ let usage;
2960
2973
  let error;
2961
2974
  try {
2962
2975
  for await (const event of generator) {
@@ -2987,6 +3000,13 @@ var Runtime = class {
2987
3000
  case "done":
2988
3001
  messages = event.messages || [];
2989
3002
  requiresAction = event.requiresAction || false;
3003
+ if (event.usage) {
3004
+ usage = {
3005
+ promptTokens: event.usage.prompt_tokens,
3006
+ completionTokens: event.usage.completion_tokens,
3007
+ totalTokens: event.usage.total_tokens ?? event.usage.prompt_tokens + event.usage.completion_tokens
3008
+ };
3009
+ }
2990
3010
  break;
2991
3011
  case "error":
2992
3012
  error = { message: event.message, code: event.code };
@@ -3018,9 +3038,48 @@ var Runtime = class {
3018
3038
  toolCalls,
3019
3039
  toolResults,
3020
3040
  requiresAction,
3041
+ usage,
3021
3042
  error
3022
3043
  });
3023
3044
  }
3045
+ /**
3046
+ * One-shot non-streaming call bundling MCP servers, reasoning effort, and
3047
+ * structured output. Thin ergonomic wrapper around `generate()` — uses the
3048
+ * same adapter chain and the same translators, just expressed as a single
3049
+ * prompt-in / text-out call.
3050
+ *
3051
+ * @example
3052
+ * ```ts
3053
+ * const result = await runtime.response({
3054
+ * prompt: "Extract FAQs from this conversation.",
3055
+ * mcpServers: [{ label: "kb", url: "https://kb.example.com/sse", headers: { Authorization: token } }],
3056
+ * reasoningEffort: "high",
3057
+ * responseFormat: { type: "json_schema", json_schema: { name: "faqs", schema } },
3058
+ * });
3059
+ * const data = JSON.parse(result.text);
3060
+ * ```
3061
+ */
3062
+ async response(request) {
3063
+ const result = await this.generate({
3064
+ messages: [{ role: "user", content: request.prompt }],
3065
+ systemPrompt: request.systemPrompt,
3066
+ config: {
3067
+ temperature: request.temperature,
3068
+ maxTokens: request.maxTokens,
3069
+ responseFormat: request.responseFormat,
3070
+ mcpServers: request.mcpServers,
3071
+ reasoningEffort: request.reasoningEffort
3072
+ }
3073
+ });
3074
+ if (result.error) {
3075
+ throw new Error(`[llm-sdk] response() failed: ${result.error.message}`);
3076
+ }
3077
+ return {
3078
+ text: result.text,
3079
+ toolCalls: result.toolCalls,
3080
+ usage: result.usage
3081
+ };
3082
+ }
3024
3083
  /**
3025
3084
  * Create Express-compatible handler middleware
3026
3085
  *
package/dist/index.mjs CHANGED
@@ -153,6 +153,8 @@ async function generateText(params) {
153
153
  temperature: params.temperature,
154
154
  maxTokens: params.maxTokens,
155
155
  responseFormat: params.responseFormat,
156
+ mcpServers: params.mcpServers,
157
+ reasoningEffort: params.reasoningEffort,
156
158
  signal
157
159
  });
158
160
  const stepToolResults = [];
@@ -301,6 +303,8 @@ async function streamText(params) {
301
303
  temperature: params.temperature,
302
304
  maxTokens: params.maxTokens,
303
305
  responseFormat: params.responseFormat,
306
+ mcpServers: params.mcpServers,
307
+ reasoningEffort: params.reasoningEffort,
304
308
  signal
305
309
  })) {
306
310
  switch (chunk.type) {
@@ -1169,6 +1173,14 @@ var GenerateResult = class {
1169
1173
  get requiresAction() {
1170
1174
  return this.data.requiresAction;
1171
1175
  }
1176
+ /**
1177
+ * Token usage for the call — present when the underlying provider emitted
1178
+ * a usage payload on the `done` event. May be undefined for streaming
1179
+ * responses that don't yield usage (e.g. mid-stream errors).
1180
+ */
1181
+ get usage() {
1182
+ return this.data.usage;
1183
+ }
1172
1184
  /**
1173
1185
  * Error if generation failed
1174
1186
  */
@@ -2955,6 +2967,7 @@ var Runtime = class {
2955
2967
  const toolResults = [];
2956
2968
  let messages = [];
2957
2969
  let requiresAction = false;
2970
+ let usage;
2958
2971
  let error;
2959
2972
  try {
2960
2973
  for await (const event of generator) {
@@ -2985,6 +2998,13 @@ var Runtime = class {
2985
2998
  case "done":
2986
2999
  messages = event.messages || [];
2987
3000
  requiresAction = event.requiresAction || false;
3001
+ if (event.usage) {
3002
+ usage = {
3003
+ promptTokens: event.usage.prompt_tokens,
3004
+ completionTokens: event.usage.completion_tokens,
3005
+ totalTokens: event.usage.total_tokens ?? event.usage.prompt_tokens + event.usage.completion_tokens
3006
+ };
3007
+ }
2988
3008
  break;
2989
3009
  case "error":
2990
3010
  error = { message: event.message, code: event.code };
@@ -3016,9 +3036,48 @@ var Runtime = class {
3016
3036
  toolCalls,
3017
3037
  toolResults,
3018
3038
  requiresAction,
3039
+ usage,
3019
3040
  error
3020
3041
  });
3021
3042
  }
3043
+ /**
3044
+ * One-shot non-streaming call bundling MCP servers, reasoning effort, and
3045
+ * structured output. Thin ergonomic wrapper around `generate()` — uses the
3046
+ * same adapter chain and the same translators, just expressed as a single
3047
+ * prompt-in / text-out call.
3048
+ *
3049
+ * @example
3050
+ * ```ts
3051
+ * const result = await runtime.response({
3052
+ * prompt: "Extract FAQs from this conversation.",
3053
+ * mcpServers: [{ label: "kb", url: "https://kb.example.com/sse", headers: { Authorization: token } }],
3054
+ * reasoningEffort: "high",
3055
+ * responseFormat: { type: "json_schema", json_schema: { name: "faqs", schema } },
3056
+ * });
3057
+ * const data = JSON.parse(result.text);
3058
+ * ```
3059
+ */
3060
+ async response(request) {
3061
+ const result = await this.generate({
3062
+ messages: [{ role: "user", content: request.prompt }],
3063
+ systemPrompt: request.systemPrompt,
3064
+ config: {
3065
+ temperature: request.temperature,
3066
+ maxTokens: request.maxTokens,
3067
+ responseFormat: request.responseFormat,
3068
+ mcpServers: request.mcpServers,
3069
+ reasoningEffort: request.reasoningEffort
3070
+ }
3071
+ });
3072
+ if (result.error) {
3073
+ throw new Error(`[llm-sdk] response() failed: ${result.error.message}`);
3074
+ }
3075
+ return {
3076
+ text: result.text,
3077
+ toolCalls: result.toolCalls,
3078
+ usage: result.usage
3079
+ };
3080
+ }
3022
3081
  /**
3023
3082
  * Create Express-compatible handler middleware
3024
3083
  *
@@ -1,7 +1,7 @@
1
- import { L as LanguageModel } from '../../types-BkQCSiIt.mjs';
2
- import { a as AnthropicProviderConfig, A as AIProvider } from '../../types-BSSiJW2o.mjs';
1
+ import { L as LanguageModel } from '../../types-D774b0dg.mjs';
2
+ import { a as AnthropicProviderConfig, A as AIProvider } from '../../types-BvkiJ1dd.mjs';
3
3
  import 'zod';
4
- import '../../base-tNgbBaSo.mjs';
4
+ import '../../base-BYQKp9TW.mjs';
5
5
 
6
6
  /**
7
7
  * Anthropic Provider - Modern Pattern
@@ -1,7 +1,7 @@
1
- import { L as LanguageModel } from '../../types-BkQCSiIt.js';
2
- import { a as AnthropicProviderConfig, A as AIProvider } from '../../types-BQ31QIsA.js';
1
+ import { L as LanguageModel } from '../../types-D774b0dg.js';
2
+ import { a as AnthropicProviderConfig, A as AIProvider } from '../../types-TMilS-Dz.js';
3
3
  import 'zod';
4
- import '../../base-C58Dsr9p.js';
4
+ import '../../base-Cxq3ni0t.js';
5
5
 
6
6
  /**
7
7
  * Anthropic Provider - Modern Pattern
@@ -89,6 +89,63 @@ function toAnthropicOutputConfig(rf) {
89
89
  }
90
90
  };
91
91
  }
92
+ function toAnthropicMcp(mcpServers) {
93
+ if (!mcpServers || mcpServers.length === 0) {
94
+ return { mcpServers: [], tools: [], betas: [] };
95
+ }
96
+ const serverEntries = [];
97
+ const toolEntries = [];
98
+ for (const mcp of mcpServers) {
99
+ const authHeader = mcp.headers?.Authorization ?? mcp.headers?.authorization;
100
+ const token = authHeader?.replace(/^Bearer\s+/i, "");
101
+ serverEntries.push({
102
+ type: "url",
103
+ url: mcp.url,
104
+ name: mcp.label,
105
+ ...token ? { authorization_token: token } : {}
106
+ });
107
+ if (mcp.allowedTools && mcp.allowedTools.length > 0) {
108
+ toolEntries.push({
109
+ type: "mcp_toolset",
110
+ mcp_server_name: mcp.label,
111
+ configs: Object.fromEntries(
112
+ mcp.allowedTools.map((toolName) => [toolName, {}])
113
+ )
114
+ });
115
+ }
116
+ }
117
+ return {
118
+ mcpServers: serverEntries,
119
+ tools: toolEntries,
120
+ betas: ["mcp-client-2025-11-20"]
121
+ };
122
+ }
123
+ function isStringEffort(effort) {
124
+ return typeof effort === "string" && (effort === "minimal" || effort === "low" || effort === "medium" || effort === "high");
125
+ }
126
+ var ANTHROPIC_ADAPTIVE_MODELS = /(claude-opus-4-7|claude-opus-4-6|claude-sonnet-4-6)/i;
127
+ function toAnthropicThinking(effort, modelId) {
128
+ if (!effort) return {};
129
+ if (typeof effort === "object" && "raw" in effort) {
130
+ return { thinking: effort.raw };
131
+ }
132
+ const isAdaptive = !!modelId && ANTHROPIC_ADAPTIVE_MODELS.test(modelId);
133
+ if (typeof effort === "object" && "budgetTokens" in effort) {
134
+ return {
135
+ thinking: { type: "enabled", budget_tokens: effort.budgetTokens }
136
+ };
137
+ }
138
+ if (!isStringEffort(effort)) return {};
139
+ if (isAdaptive) {
140
+ const mapped = effort === "minimal" ? "low" : effort;
141
+ return {
142
+ thinking: { type: "adaptive" },
143
+ outputConfigEffort: mapped
144
+ };
145
+ }
146
+ const budget = effort === "high" ? 16e3 : effort === "medium" ? 8e3 : effort === "low" ? 4e3 : 2048;
147
+ return { thinking: { type: "enabled", budget_tokens: budget } };
148
+ }
92
149
  function hasMediaAttachments(message) {
93
150
  const attachments = message.metadata?.attachments;
94
151
  return attachments?.some(
@@ -924,36 +981,58 @@ var AnthropicAdapter = class {
924
981
  if (serverToolConfiguration) {
925
982
  options.server_tool_configuration = serverToolConfiguration;
926
983
  }
984
+ const modelForThinking = request.config?.model || this.model;
985
+ const thinkingTranslation = toAnthropicThinking(
986
+ request.config?.reasoningEffort,
987
+ modelForThinking
988
+ );
927
989
  const outputConfig = toAnthropicOutputConfig(responseFormat);
928
- if (outputConfig) {
929
- options.output_config = outputConfig;
990
+ if (outputConfig || thinkingTranslation.outputConfigEffort) {
991
+ options.output_config = {
992
+ ...outputConfig ?? {},
993
+ ...thinkingTranslation.outputConfigEffort ? { effort: thinkingTranslation.outputConfigEffort } : {}
994
+ };
930
995
  }
931
- if (this.config.thinking?.type === "enabled") {
996
+ if (thinkingTranslation.thinking) {
997
+ options.thinking = thinkingTranslation.thinking;
998
+ } else if (this.config.thinking?.type === "enabled") {
932
999
  options.thinking = {
933
1000
  type: "enabled",
934
1001
  budget_tokens: this.config.thinking.budgetTokens || 1e4
935
1002
  };
936
1003
  }
937
- return { options, messages };
1004
+ const mcp = toAnthropicMcp(request.config?.mcpServers);
1005
+ const betas = [];
1006
+ if (mcp.mcpServers.length > 0) {
1007
+ options.mcp_servers = mcp.mcpServers;
1008
+ betas.push(...mcp.betas);
1009
+ if (mcp.tools.length > 0) {
1010
+ const existingTools = Array.isArray(options.tools) ? options.tools : [];
1011
+ options.tools = [...existingTools, ...mcp.tools];
1012
+ }
1013
+ }
1014
+ return { options, messages, betas };
938
1015
  }
939
1016
  /**
940
1017
  * Non-streaming completion (for debugging/comparison with original studio-ai)
941
1018
  */
942
1019
  async complete(request) {
943
1020
  const client = await this.getClient();
944
- const { options } = this.buildRequestOptions(request);
1021
+ const { options, betas } = this.buildRequestOptions(request);
945
1022
  const nonStreamingOptions = {
946
1023
  ...options,
947
1024
  stream: false
948
1025
  };
949
1026
  try {
1027
+ const finalOptions = betas.length > 0 ? { ...nonStreamingOptions, betas } : nonStreamingOptions;
1028
+ const messagesApi = betas.length > 0 ? client.beta.messages : client.messages;
950
1029
  logProviderPayload(
951
1030
  "anthropic",
952
1031
  "request payload",
953
- nonStreamingOptions,
1032
+ finalOptions,
954
1033
  request.debug
955
1034
  );
956
- const response = await client.messages.create(nonStreamingOptions);
1035
+ const response = await messagesApi.create(finalOptions);
957
1036
  logProviderPayload(
958
1037
  "anthropic",
959
1038
  "response payload",
@@ -988,17 +1067,19 @@ var AnthropicAdapter = class {
988
1067
  }
989
1068
  async *stream(request) {
990
1069
  const client = await this.getClient();
991
- const { options } = this.buildRequestOptions(request);
1070
+ const { options, betas } = this.buildRequestOptions(request);
992
1071
  const messageId = generateMessageId();
993
1072
  yield { type: "message:start", id: messageId };
994
1073
  try {
1074
+ const finalOptions = betas.length > 0 ? { ...options, betas } : options;
1075
+ const streamApi = betas.length > 0 ? client.beta.messages : client.messages;
995
1076
  logProviderPayload(
996
1077
  "anthropic",
997
1078
  "request payload",
998
- options,
1079
+ finalOptions,
999
1080
  request.debug
1000
1081
  );
1001
- const stream = await client.messages.stream(options);
1082
+ const stream = await streamApi.stream(finalOptions);
1002
1083
  let currentToolUse = null;
1003
1084
  let isInThinkingBlock = false;
1004
1085
  const collectedCitations = [];