@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.
- package/README.md +19 -1
- package/dist/adapters/index.d.mts +4 -4
- package/dist/adapters/index.d.ts +4 -4
- package/dist/adapters/index.js +139 -12
- package/dist/adapters/index.mjs +139 -12
- package/dist/{base-tNgbBaSo.d.mts → base-BYQKp9TW.d.mts} +5 -1
- package/dist/{base-C58Dsr9p.d.ts → base-Cxq3ni0t.d.ts} +5 -1
- package/dist/fallback/index.d.mts +4 -4
- package/dist/fallback/index.d.ts +4 -4
- package/dist/index.d.mts +60 -8
- package/dist/index.d.ts +60 -8
- package/dist/index.js +59 -0
- package/dist/index.mjs +59 -0
- package/dist/providers/anthropic/index.d.mts +3 -3
- package/dist/providers/anthropic/index.d.ts +3 -3
- package/dist/providers/anthropic/index.js +91 -10
- package/dist/providers/anthropic/index.mjs +91 -10
- package/dist/providers/azure/index.d.mts +3 -3
- package/dist/providers/azure/index.d.ts +3 -3
- package/dist/providers/fireworks/index.d.mts +1 -1
- package/dist/providers/fireworks/index.d.ts +1 -1
- package/dist/providers/google/index.d.mts +3 -3
- package/dist/providers/google/index.d.ts +3 -3
- package/dist/providers/google/index.js +51 -2
- package/dist/providers/google/index.mjs +51 -2
- package/dist/providers/ollama/index.d.mts +4 -4
- package/dist/providers/ollama/index.d.ts +4 -4
- package/dist/providers/openai/index.d.mts +3 -3
- package/dist/providers/openai/index.d.ts +3 -3
- package/dist/providers/openai/index.js +51 -2
- package/dist/providers/openai/index.mjs +51 -2
- package/dist/providers/openrouter/index.d.mts +3 -3
- package/dist/providers/openrouter/index.d.ts +3 -3
- package/dist/providers/openrouter/index.js +51 -2
- package/dist/providers/openrouter/index.mjs +51 -2
- package/dist/providers/togetherai/index.d.mts +3 -3
- package/dist/providers/togetherai/index.d.ts +3 -3
- package/dist/providers/togetherai/index.js +51 -2
- package/dist/providers/togetherai/index.mjs +51 -2
- package/dist/providers/xai/index.d.mts +3 -3
- package/dist/providers/xai/index.d.ts +3 -3
- package/dist/providers/xai/index.js +51 -2
- package/dist/providers/xai/index.mjs +51 -2
- package/dist/{types-BSSiJW2o.d.mts → types-BvkiJ1dd.d.mts} +2 -2
- package/dist/{types-CCxPmkmK.d.ts → types-ChORafYS.d.ts} +1 -1
- package/dist/{types-BkQCSiIt.d.mts → types-D774b0dg.d.mts} +57 -2
- package/dist/{types-BkQCSiIt.d.ts → types-D774b0dg.d.ts} +57 -2
- package/dist/{types-BQ31QIsA.d.ts → types-TMilS-Dz.d.ts} +2 -2
- package/dist/{types-B6dhnguR.d.mts → types-mwMhCwOq.d.mts} +1 -1
- package/dist/yourgpt/index.d.mts +1 -1
- package/dist/yourgpt/index.d.ts +1 -1
- 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,
|
|
2
|
-
export {
|
|
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-
|
|
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-
|
|
6
|
-
import { L as LLMAdapter } from './base-
|
|
7
|
-
export { A as AdapterFactory, C as ChatCompletionRequest } from './base-
|
|
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-
|
|
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,
|
|
2
|
-
export {
|
|
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-
|
|
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-
|
|
6
|
-
import { L as LLMAdapter } from './base-
|
|
7
|
-
export { A as AdapterFactory, C as ChatCompletionRequest } from './base-
|
|
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-
|
|
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-
|
|
2
|
-
import { a as AnthropicProviderConfig, A as AIProvider } from '../../types-
|
|
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-
|
|
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-
|
|
2
|
-
import { a as AnthropicProviderConfig, A as AIProvider } from '../../types-
|
|
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-
|
|
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 =
|
|
990
|
+
if (outputConfig || thinkingTranslation.outputConfigEffort) {
|
|
991
|
+
options.output_config = {
|
|
992
|
+
...outputConfig ?? {},
|
|
993
|
+
...thinkingTranslation.outputConfigEffort ? { effort: thinkingTranslation.outputConfigEffort } : {}
|
|
994
|
+
};
|
|
930
995
|
}
|
|
931
|
-
if (
|
|
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
|
-
|
|
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
|
-
|
|
1032
|
+
finalOptions,
|
|
954
1033
|
request.debug
|
|
955
1034
|
);
|
|
956
|
-
const response = await
|
|
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
|
-
|
|
1079
|
+
finalOptions,
|
|
999
1080
|
request.debug
|
|
1000
1081
|
);
|
|
1001
|
-
const stream = await
|
|
1082
|
+
const stream = await streamApi.stream(finalOptions);
|
|
1002
1083
|
let currentToolUse = null;
|
|
1003
1084
|
let isInThinkingBlock = false;
|
|
1004
1085
|
const collectedCitations = [];
|