ai 7.0.34 → 7.0.36
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 +28 -0
- package/dist/index.d.ts +26 -10
- package/dist/index.js +144 -47
- package/dist/index.js.map +1 -1
- package/dist/internal/index.d.ts +5 -2
- package/dist/internal/index.js +26 -3
- package/dist/internal/index.js.map +1 -1
- package/docs/03-ai-sdk-core/25-settings.mdx +15 -2
- package/docs/03-ai-sdk-core/65-devtools.mdx +6 -0
- package/docs/03-ai-sdk-harnesses/02-harness-agent.mdx +42 -0
- package/docs/04-ai-sdk-ui/03-chatbot-tool-usage.mdx +29 -0
- package/docs/04-ai-sdk-ui/21-error-handling.mdx +10 -4
- package/docs/07-reference/01-ai-sdk-core/02-stream-text.mdx +4 -4
- package/docs/07-reference/01-ai-sdk-core/16-tool-loop-agent.mdx +10 -8
- package/docs/07-reference/02-ai-sdk-ui/42-pipe-ui-message-stream-to-response.mdx +6 -1
- package/docs/08-migration-guides/24-migration-guide-6-0.mdx +28 -0
- package/package.json +2 -2
- package/src/agent/agent.ts +4 -1
- package/src/agent/pipe-agent-ui-stream-to-response.ts +1 -1
- package/src/generate-object/stream-object-result.ts +4 -1
- package/src/generate-object/stream-object.ts +1 -1
- package/src/generate-text/generate-text-events.ts +2 -1
- package/src/generate-text/stream-text-result.ts +5 -2
- package/src/generate-text/stream-text.ts +113 -33
- package/src/generate-text/tool-approval-signature.ts +54 -2
- package/src/prompt/index.ts +1 -0
- package/src/prompt/request-options.ts +20 -2
- package/src/text-stream/pipe-text-stream-to-response.ts +3 -2
- package/src/ui-message-stream/pipe-ui-message-stream-to-response.ts +3 -2
- package/src/util/create-stitchable-stream.ts +41 -15
- package/src/util/write-to-server-response.ts +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,33 @@
|
|
|
1
1
|
# ai
|
|
2
2
|
|
|
3
|
+
## 7.0.36
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 7fa85b2: fix(ai): use injective serialization for tool approval HMAC payload
|
|
8
|
+
|
|
9
|
+
The tool approval signature (`experimental_toolApprovalSecret`) built its HMAC
|
|
10
|
+
payload by joining fields with `\n`. Because fields such as `toolName` and
|
|
11
|
+
`toolCallId` can themselves contain a newline, distinct field tuples could
|
|
12
|
+
serialize to identical bytes, allowing a signed approval to verify against a
|
|
13
|
+
different tuple. The payload is now serialized with `JSON.stringify` (with a
|
|
14
|
+
versioned domain-separation prefix), which escapes delimiter/control characters
|
|
15
|
+
and makes the encoding injective.
|
|
16
|
+
|
|
17
|
+
Verification remains backwards compatible: a signature in the old format still
|
|
18
|
+
verifies, but only when no field contains the `\n` delimiter (the condition
|
|
19
|
+
that made the old format ambiguous), so a pending approval that straddles an
|
|
20
|
+
upgrade is not rejected while the collision stays closed.
|
|
21
|
+
|
|
22
|
+
## 7.0.35
|
|
23
|
+
|
|
24
|
+
### Patch Changes
|
|
25
|
+
|
|
26
|
+
- 7f6650b: Return response piping promises so callers can catch stream read and write errors.
|
|
27
|
+
- 106ea59: feat(ai): add per-step first content timeout for streaming generations
|
|
28
|
+
- Updated dependencies [2112ff1]
|
|
29
|
+
- @ai-sdk/gateway@4.0.27
|
|
30
|
+
|
|
3
31
|
## 7.0.34
|
|
4
32
|
|
|
5
33
|
### Patch Changes
|
package/dist/index.d.ts
CHANGED
|
@@ -589,13 +589,15 @@ type LanguageModelCallOptions = {
|
|
|
589
589
|
* - A number representing milliseconds
|
|
590
590
|
* - An object with `totalMs` property for the total timeout in milliseconds
|
|
591
591
|
* - An object with `stepMs` property for the timeout of each step in milliseconds
|
|
592
|
-
* - An object with `
|
|
592
|
+
* - An object with `firstChunkMs` property for the timeout until the first content chunk of each step (streaming only)
|
|
593
|
+
* - An object with `chunkMs` property for the timeout between content chunks (streaming only)
|
|
593
594
|
* - An object with `toolMs` property for the default timeout for all tool executions
|
|
594
595
|
* - An object with `tools` property for per-tool timeout overrides using `{toolName}Ms` keys
|
|
595
596
|
*/
|
|
596
597
|
type TimeoutConfiguration<TOOLS extends ToolSet> = number | {
|
|
597
598
|
totalMs?: number;
|
|
598
599
|
stepMs?: number;
|
|
600
|
+
firstChunkMs?: number;
|
|
599
601
|
chunkMs?: number;
|
|
600
602
|
toolMs?: number;
|
|
601
603
|
tools?: Partial<Record<`${keyof TOOLS & string}Ms`, number>>;
|
|
@@ -614,9 +616,17 @@ declare function getTotalTimeoutMs(timeout: TimeoutConfiguration<any> | undefine
|
|
|
614
616
|
* @returns The step timeout in milliseconds, or undefined if no step timeout is configured.
|
|
615
617
|
*/
|
|
616
618
|
declare function getStepTimeoutMs(timeout: TimeoutConfiguration<any> | undefined): number | undefined;
|
|
619
|
+
/**
|
|
620
|
+
* Extracts the first chunk timeout value in milliseconds from a TimeoutConfiguration.
|
|
621
|
+
* This timeout is for streaming only - it aborts if no content chunk is received within the specified duration.
|
|
622
|
+
*
|
|
623
|
+
* @param timeout - The timeout configuration.
|
|
624
|
+
* @returns The first chunk timeout in milliseconds, or undefined if no first chunk timeout is configured.
|
|
625
|
+
*/
|
|
626
|
+
declare function getFirstChunkTimeoutMs(timeout: TimeoutConfiguration<any> | undefined): number | undefined;
|
|
617
627
|
/**
|
|
618
628
|
* Extracts the chunk timeout value in milliseconds from a TimeoutConfiguration.
|
|
619
|
-
* This timeout is for streaming only - it aborts if no new chunk is received within the specified duration.
|
|
629
|
+
* This timeout is for streaming only - it aborts if no new content chunk is received within the specified duration.
|
|
620
630
|
*
|
|
621
631
|
* @param timeout - The timeout configuration.
|
|
622
632
|
* @returns The chunk timeout in milliseconds, or undefined if no chunk timeout is configured.
|
|
@@ -2758,7 +2768,7 @@ interface StreamTextResult<TOOLS extends ToolSet, RUNTIME_CONTEXT extends Contex
|
|
|
2758
2768
|
* `pipeUIMessageStreamToResponse` helpers from `'ai'` with `result.stream`
|
|
2759
2769
|
* instead. This method will be removed in the next major release.
|
|
2760
2770
|
*/
|
|
2761
|
-
pipeUIMessageStreamToResponse<UI_MESSAGE extends UIMessage>(response: ServerResponse, options?: UIMessageStreamResponseInit & UIMessageStreamOptions<UI_MESSAGE>): void
|
|
2771
|
+
pipeUIMessageStreamToResponse<UI_MESSAGE extends UIMessage>(response: ServerResponse, options?: UIMessageStreamResponseInit & UIMessageStreamOptions<UI_MESSAGE>): Promise<void>;
|
|
2762
2772
|
/**
|
|
2763
2773
|
* Writes text delta output to a Node.js response-like object.
|
|
2764
2774
|
* It sets a `Content-Type` header to `text/plain; charset=utf-8` and
|
|
@@ -2771,7 +2781,7 @@ interface StreamTextResult<TOOLS extends ToolSet, RUNTIME_CONTEXT extends Contex
|
|
|
2771
2781
|
* `pipeTextStreamToResponse` helpers from `'ai'` with `result.stream`
|
|
2772
2782
|
* instead. This method will be removed in the next major release.
|
|
2773
2783
|
*/
|
|
2774
|
-
pipeTextStreamToResponse(response: ServerResponse, init?: ResponseInit): void
|
|
2784
|
+
pipeTextStreamToResponse(response: ServerResponse, init?: ResponseInit): Promise<void>;
|
|
2775
2785
|
/**
|
|
2776
2786
|
* Converts the result to a streamed response object with a stream data part stream.
|
|
2777
2787
|
*
|
|
@@ -3778,7 +3788,8 @@ type GenerateTextStartEvent<TOOLS extends ToolSet = ToolSet, RUNTIME_CONTEXT ext
|
|
|
3778
3788
|
readonly maxRetries: number;
|
|
3779
3789
|
/**
|
|
3780
3790
|
* Timeout configuration for the generation.
|
|
3781
|
-
* Can be a number (milliseconds) or an object with totalMs, stepMs,
|
|
3791
|
+
* Can be a number (milliseconds) or an object with totalMs, stepMs,
|
|
3792
|
+
* firstChunkMs (streaming only), chunkMs, toolMs, and per-tool overrides via tools.
|
|
3782
3793
|
*/
|
|
3783
3794
|
readonly timeout: TimeoutConfiguration<TOOLS> | undefined;
|
|
3784
3795
|
/** Additional HTTP headers sent with the request. */
|
|
@@ -4474,7 +4485,10 @@ type AgentCallParameters<CALL_OPTIONS, TOOLS extends ToolSet = {}, RUNTIME_CONTE
|
|
|
4474
4485
|
*/
|
|
4475
4486
|
abortSignal?: AbortSignal;
|
|
4476
4487
|
/**
|
|
4477
|
-
* Timeout in milliseconds. Can be specified as a number or as an object
|
|
4488
|
+
* Timeout in milliseconds. Can be specified as a number or as an object
|
|
4489
|
+
* with total, per-step, first-content, inter-content, and tool timeouts.
|
|
4490
|
+
* First-content and inter-content timeouts are only enforced by streaming
|
|
4491
|
+
* calls.
|
|
4478
4492
|
*/
|
|
4479
4493
|
timeout?: TimeoutConfiguration<TOOLS>;
|
|
4480
4494
|
/**
|
|
@@ -5915,11 +5929,12 @@ declare class JsonToSseTransformStream extends TransformStream<unknown, string>
|
|
|
5915
5929
|
* @param options.headers - Additional HTTP headers to include in the response.
|
|
5916
5930
|
* @param options.stream - The UI message chunk stream to send.
|
|
5917
5931
|
* @param options.consumeSseStream - Optional callback to consume a copy of the SSE stream independently.
|
|
5932
|
+
* @returns A promise that resolves when the stream has been written.
|
|
5918
5933
|
*/
|
|
5919
5934
|
declare function pipeUIMessageStreamToResponse({ response, status, statusText, headers, stream, consumeSseStream, }: {
|
|
5920
5935
|
response: ServerResponse;
|
|
5921
5936
|
stream: ReadableStream<UIMessageChunk>;
|
|
5922
|
-
} & UIMessageStreamResponseInit): void
|
|
5937
|
+
} & UIMessageStreamResponseInit): Promise<void>;
|
|
5923
5938
|
|
|
5924
5939
|
/**
|
|
5925
5940
|
* Transforms a stream of `UIMessageChunk`s into an `AsyncIterableStream` of `UIMessage`s.
|
|
@@ -7369,7 +7384,7 @@ interface StreamObjectResult<PARTIAL, RESULT, ELEMENT_STREAM> {
|
|
|
7369
7384
|
* @param response A Node.js response-like object (ServerResponse).
|
|
7370
7385
|
* @param init Optional headers, status code, and status text.
|
|
7371
7386
|
*/
|
|
7372
|
-
pipeTextStreamToResponse(response: ServerResponse$1, init?: ResponseInit): void
|
|
7387
|
+
pipeTextStreamToResponse(response: ServerResponse$1, init?: ResponseInit): Promise<void>;
|
|
7373
7388
|
/**
|
|
7374
7389
|
* Creates a simple text stream response.
|
|
7375
7390
|
* The response has a `Content-Type` header set to `text/plain; charset=utf-8`.
|
|
@@ -8512,11 +8527,12 @@ declare function createTextStreamResponse({ status, statusText, headers, stream,
|
|
|
8512
8527
|
* @param options.statusText - Optional HTTP status text.
|
|
8513
8528
|
* @param options.headers - Optional response headers.
|
|
8514
8529
|
* @param options.stream - The text stream to pipe.
|
|
8530
|
+
* @returns A promise that resolves when the stream has been written.
|
|
8515
8531
|
*/
|
|
8516
8532
|
declare function pipeTextStreamToResponse({ response, status, statusText, headers, stream, }: {
|
|
8517
8533
|
response: ServerResponse;
|
|
8518
8534
|
stream: ReadableStream<string>;
|
|
8519
|
-
} & ResponseInit): void
|
|
8535
|
+
} & ResponseInit): Promise<void>;
|
|
8520
8536
|
|
|
8521
8537
|
/**
|
|
8522
8538
|
* Converts a stream of `TextStreamPart` chunks into a stream of text deltas.
|
|
@@ -8827,4 +8843,4 @@ declare function uploadSkill({ api, files, displayTitle, providerOptions, }: {
|
|
|
8827
8843
|
files: UploadSkillFile[];
|
|
8828
8844
|
}): Promise<UploadSkillResult>;
|
|
8829
8845
|
|
|
8830
|
-
export { AI_SDK_TELEMETRY_TRACING_CHANNEL, AbstractChat, ActiveTools, Agent, AgentCallParameters, AgentStreamParameters, AsyncIterableStream, CallSettings, CallWarning, ChatAddToolApproveResponseFunction, ChatAddToolOutputFunction, ChatInit, ChatOnDataCallback, ChatOnErrorCallback, ChatOnFinishCallback, ChatOnToolCallCallback, ChatRequestOptions, ChatState, ChatStatus, ChatTransport, ChunkDetector, CompletionRequestOptions, ContentPart, CreateUIMessage, CustomContentUIPart, DataUIPart, DeepPartial, DefaultChatTransport, DefaultGeneratedFile, DirectChatTransport, DirectChatTransportOptions, DynamicToolCall, DynamicToolError, DynamicToolResult, DynamicToolUIPart, EmbedEndEvent, EmbedManyResult, EmbedResult, EmbedStartEvent, Embedding, EmbeddingModel, EmbeddingModelCallEndEvent, EmbeddingModelCallStartEvent, EmbeddingModelMiddleware, EmbeddingModelUsage, ErrorHandler, AbstractRealtimeSession as Experimental_AbstractRealtimeSession, ToolLoopAgent as Experimental_Agent, ToolLoopAgentSettings as Experimental_AgentSettings, DownloadFunction as Experimental_DownloadFunction, GeneratedFile as Experimental_GeneratedImage, InferAgentUIMessage as Experimental_InferAgentUIMessage, LanguageModelStreamPart as Experimental_LanguageModelStreamPart, LogWarningsFunction as Experimental_LogWarningsFunction, RealtimeClientEvent as Experimental_RealtimeClientEvent, RealtimeFactory as Experimental_RealtimeFactory, RealtimeFactoryGetTokenOptions as Experimental_RealtimeFactoryGetTokenOptions, RealtimeFactoryGetTokenResult as Experimental_RealtimeFactoryGetTokenResult, RealtimeModel as Experimental_RealtimeModel, RealtimeServerEvent as Experimental_RealtimeServerEvent, RealtimeSessionConfig as Experimental_RealtimeSessionConfig, RealtimeSessionOptions as Experimental_RealtimeSessionOptions, RealtimeSetupResponse as Experimental_RealtimeSetupResponse, RealtimeState as Experimental_RealtimeState, RealtimeStatus as Experimental_RealtimeStatus, RealtimeToolDefinition as Experimental_RealtimeToolDefinition, Experimental_SpeechResult, Experimental_TranscriptionResult, FileUIPart, FinishReason, GenerateImageResult, GenerateObjectEndEvent, GenerateObjectResult, GenerateObjectStartEvent, GenerateObjectStepEndEvent, GenerateObjectStepStartEvent, GenerateTextAbortEvent, GenerateTextEndEvent, GenerateTextInclude, GenerateTextOnAbortCallback, GenerateTextOnEndCallback, GenerateTextOnFinishCallback, GenerateTextOnStartCallback, GenerateTextOnStepEndCallback, GenerateTextOnStepFinishCallback, GenerateTextOnStepStartCallback, GenerateTextResult, GenerateTextStartEvent, GenerateTextStepEndEvent, GenerateTextStepStartEvent, GenerateVideoPrompt, GenerateVideoResult, GeneratedAudioFile, GeneratedFile, GenericToolApprovalFunction, HttpChatTransport, HttpChatTransportInitOptions, ImageModel, ImageModelMiddleware, ImageModelProviderMetadata, ImageModelResponseMetadata, ImageModelUsage, InferAgentUIMessage, InferCompleteOutput as InferGenerateOutput, InferPartialOutput as InferStreamOutput, InferTelemetryEvent, InferUIDataParts, InferUIMessageChunk, InferUITool, InferUITools, Instructions, InvalidArgumentError, InvalidDataContentError, InvalidMessageRoleError, InvalidStreamPartError, InvalidToolApprovalError, InvalidToolApprovalSignatureError, InvalidToolInputError, JSONValue, JsonToSseTransformStream, LanguageModel, LanguageModelCallEndEvent, LanguageModelCallOptions, LanguageModelCallStartEvent, LanguageModelMiddleware, LanguageModelRequestMetadata, LanguageModelResponseMetadata, LanguageModelUsage, LogWarningsFunction, MessageConversionError, MissingToolResultsError, ModelInfo, NoImageGeneratedError, NoObjectGeneratedError, NoOutputGeneratedError, NoSpeechGeneratedError, NoSuchProviderError, NoSuchToolError, NoTranscriptGeneratedError, NoVideoGeneratedError, ObjectStreamPart, OnFinishEvent, OnLanguageModelCallEndCallback, OnLanguageModelCallStartCallback, OnStartEvent, OnStepFinishEvent, OnStepStartEvent, OnToolCallFinishEvent, OnToolCallStartEvent, OnToolExecutionEndCallback, OnToolExecutionStartCallback, output as Output, OutputChunkTimingStats, PrepareReconnectToStreamRequest, PrepareSendMessagesRequest, PrepareStepFunction, PrepareStepResult, Prompt, Provider, ProviderMetadata, ProviderReference, ProviderRegistryProvider, ReasoningFileOutput, ReasoningFileUIPart, ReasoningOutput, ReasoningUIPart, RepairTextFunction, RequestOptions, RerankEndEvent, RerankResult, RerankStartEvent, RerankingModel, RerankingModelCallEndEvent, RerankingModelCallStartEvent, RetryError, SafeValidateUIMessagesResult, SerialJobExecutor, SingleToolApprovalFunction, SourceDocumentUIPart, SourceUrlUIPart, SpeechModel, SpeechModelResponseMetadata, SpeechResult, StaticToolCall, StaticToolError, StaticToolOutputDenied, StaticToolResult, StepResult, StepResultPerformance, StepStartUIPart, StopCondition, StreamObjectOnFinishCallback, StreamObjectResult, StreamTextInclude, StreamTextOnChunkCallback, StreamTextOnErrorCallback, StreamTextResult, StreamTextTransform, StreamTranscriptionResult, Telemetry, TelemetryOptions, TelemetryTracingChannelMessage, TelemetryTracingEventType, TextStreamChatTransport, TextStreamPart, TextUIPart, TimeoutConfiguration, ToUIMessageChunkOptions, ToolApprovalConfiguration, ToolApprovalRequestOutput, ToolApprovalResponseOutput, ToolApprovalStatus, ToolCallNotFoundForApprovalError, ToolCallRepairError, ToolCallRepairFunction, ToolChoice, ToolExecutionEndEvent, ToolExecutionStartEvent, ToolInputRefinement, ToolLoopAgent, ToolLoopAgentSettings, ToolOrder, ToolUIPart, TranscriptionModel, TranscriptionModelResponseMetadata, TranscriptionResult, TranscriptionStreamPart, TypedToolCall, TypedToolError, TypedToolOutputDenied, TypedToolResult, UIDataPartSchemas, UIDataTypes, UIMessage, UIMessageChunk, UIMessagePart, UIMessageStreamError, UIMessageStreamOnEndCallback, UIMessageStreamOnFinishCallback, UIMessageStreamOnStepEndCallback, UIMessageStreamOnStepFinishCallback, UIMessageStreamOptions, UIMessageStreamWriter, UITool, UIToolInvocation, UITools, UI_MESSAGE_STREAM_HEADERS, UnsupportedModelVersionError, UploadFileResult, UploadSkillResult, UseCompletionOptions, Warning, addToolInputExamplesMiddleware, assistantModelMessageSchema, callCompletionApi, consumeStream, convertDataContentToBase64String, convertFileListToFileUIParts, convertToModelMessages, cosineSimilarity, createAgentUIStream, createAgentUIStreamResponse, createDownload, createProviderRegistry, createTextStreamResponse, createUIMessageStream, createUIMessageStreamResponse, customProvider, defaultEmbeddingSettingsMiddleware, defaultSettingsMiddleware, detectToolDrift, embed, embedMany, experimental_createProviderRegistry, decodeRealtimeAudio as experimental_decodeRealtimeAudio, encodeRealtimeAudio as experimental_encodeRealtimeAudio, filterActiveTools as experimental_filterActiveTools, experimental_generateSpeech, experimental_generateVideo, getRealtimeToolDefinitions as experimental_getRealtimeToolDefinitions, resampleAudio as experimental_resampleAudio, streamLanguageModelCall as experimental_streamLanguageModelCall, streamTranscribe as experimental_streamTranscribe, experimental_transcribe, extractJsonMiddleware, extractReasoningMiddleware, fingerprintTools, generateImage, generateObject, generateSpeech, generateText, getChunkTimeoutMs, getStaticToolName, getStepTimeoutMs, getTextFromDataUrl, getToolName, getToolOrDynamicToolName, getToolTimeoutMs, getTotalTimeoutMs, hasToolCall, isCustomContentUIPart, isDataUIPart, isDeepEqualData, isDynamicToolUIPart, isFileUIPart, isLoopFinished, isReasoningFileUIPart, isReasoningUIPart, isStaticToolUIPart, isStepCount, isTextUIPart, isToolUIPart, lastAssistantMessageIsCompleteWithApprovalResponses, lastAssistantMessageIsCompleteWithToolCalls, modelMessageSchema, parsePartialJson, pipeAgentUIStreamToResponse, pipeTextStreamToResponse, pipeUIMessageStreamToResponse, pruneMessages, readUIMessageStream, registerTelemetry, rerank, safeValidateUIMessages, simulateReadableStream, simulateStreamingMiddleware, smoothStream, isStepCount as stepCountIs, streamObject, streamText, systemModelMessageSchema, toTextStream, toUIMessageChunk, toUIMessageStream, toolModelMessageSchema, transcribe, uiMessageChunkSchema, uploadFile, uploadSkill, userModelMessageSchema, validateUIMessages, wrapEmbeddingModel, wrapImageModel, wrapLanguageModel, wrapProvider };
|
|
8846
|
+
export { AI_SDK_TELEMETRY_TRACING_CHANNEL, AbstractChat, ActiveTools, Agent, AgentCallParameters, AgentStreamParameters, AsyncIterableStream, CallSettings, CallWarning, ChatAddToolApproveResponseFunction, ChatAddToolOutputFunction, ChatInit, ChatOnDataCallback, ChatOnErrorCallback, ChatOnFinishCallback, ChatOnToolCallCallback, ChatRequestOptions, ChatState, ChatStatus, ChatTransport, ChunkDetector, CompletionRequestOptions, ContentPart, CreateUIMessage, CustomContentUIPart, DataUIPart, DeepPartial, DefaultChatTransport, DefaultGeneratedFile, DirectChatTransport, DirectChatTransportOptions, DynamicToolCall, DynamicToolError, DynamicToolResult, DynamicToolUIPart, EmbedEndEvent, EmbedManyResult, EmbedResult, EmbedStartEvent, Embedding, EmbeddingModel, EmbeddingModelCallEndEvent, EmbeddingModelCallStartEvent, EmbeddingModelMiddleware, EmbeddingModelUsage, ErrorHandler, AbstractRealtimeSession as Experimental_AbstractRealtimeSession, ToolLoopAgent as Experimental_Agent, ToolLoopAgentSettings as Experimental_AgentSettings, DownloadFunction as Experimental_DownloadFunction, GeneratedFile as Experimental_GeneratedImage, InferAgentUIMessage as Experimental_InferAgentUIMessage, LanguageModelStreamPart as Experimental_LanguageModelStreamPart, LogWarningsFunction as Experimental_LogWarningsFunction, RealtimeClientEvent as Experimental_RealtimeClientEvent, RealtimeFactory as Experimental_RealtimeFactory, RealtimeFactoryGetTokenOptions as Experimental_RealtimeFactoryGetTokenOptions, RealtimeFactoryGetTokenResult as Experimental_RealtimeFactoryGetTokenResult, RealtimeModel as Experimental_RealtimeModel, RealtimeServerEvent as Experimental_RealtimeServerEvent, RealtimeSessionConfig as Experimental_RealtimeSessionConfig, RealtimeSessionOptions as Experimental_RealtimeSessionOptions, RealtimeSetupResponse as Experimental_RealtimeSetupResponse, RealtimeState as Experimental_RealtimeState, RealtimeStatus as Experimental_RealtimeStatus, RealtimeToolDefinition as Experimental_RealtimeToolDefinition, Experimental_SpeechResult, Experimental_TranscriptionResult, FileUIPart, FinishReason, GenerateImageResult, GenerateObjectEndEvent, GenerateObjectResult, GenerateObjectStartEvent, GenerateObjectStepEndEvent, GenerateObjectStepStartEvent, GenerateTextAbortEvent, GenerateTextEndEvent, GenerateTextInclude, GenerateTextOnAbortCallback, GenerateTextOnEndCallback, GenerateTextOnFinishCallback, GenerateTextOnStartCallback, GenerateTextOnStepEndCallback, GenerateTextOnStepFinishCallback, GenerateTextOnStepStartCallback, GenerateTextResult, GenerateTextStartEvent, GenerateTextStepEndEvent, GenerateTextStepStartEvent, GenerateVideoPrompt, GenerateVideoResult, GeneratedAudioFile, GeneratedFile, GenericToolApprovalFunction, HttpChatTransport, HttpChatTransportInitOptions, ImageModel, ImageModelMiddleware, ImageModelProviderMetadata, ImageModelResponseMetadata, ImageModelUsage, InferAgentUIMessage, InferCompleteOutput as InferGenerateOutput, InferPartialOutput as InferStreamOutput, InferTelemetryEvent, InferUIDataParts, InferUIMessageChunk, InferUITool, InferUITools, Instructions, InvalidArgumentError, InvalidDataContentError, InvalidMessageRoleError, InvalidStreamPartError, InvalidToolApprovalError, InvalidToolApprovalSignatureError, InvalidToolInputError, JSONValue, JsonToSseTransformStream, LanguageModel, LanguageModelCallEndEvent, LanguageModelCallOptions, LanguageModelCallStartEvent, LanguageModelMiddleware, LanguageModelRequestMetadata, LanguageModelResponseMetadata, LanguageModelUsage, LogWarningsFunction, MessageConversionError, MissingToolResultsError, ModelInfo, NoImageGeneratedError, NoObjectGeneratedError, NoOutputGeneratedError, NoSpeechGeneratedError, NoSuchProviderError, NoSuchToolError, NoTranscriptGeneratedError, NoVideoGeneratedError, ObjectStreamPart, OnFinishEvent, OnLanguageModelCallEndCallback, OnLanguageModelCallStartCallback, OnStartEvent, OnStepFinishEvent, OnStepStartEvent, OnToolCallFinishEvent, OnToolCallStartEvent, OnToolExecutionEndCallback, OnToolExecutionStartCallback, output as Output, OutputChunkTimingStats, PrepareReconnectToStreamRequest, PrepareSendMessagesRequest, PrepareStepFunction, PrepareStepResult, Prompt, Provider, ProviderMetadata, ProviderReference, ProviderRegistryProvider, ReasoningFileOutput, ReasoningFileUIPart, ReasoningOutput, ReasoningUIPart, RepairTextFunction, RequestOptions, RerankEndEvent, RerankResult, RerankStartEvent, RerankingModel, RerankingModelCallEndEvent, RerankingModelCallStartEvent, RetryError, SafeValidateUIMessagesResult, SerialJobExecutor, SingleToolApprovalFunction, SourceDocumentUIPart, SourceUrlUIPart, SpeechModel, SpeechModelResponseMetadata, SpeechResult, StaticToolCall, StaticToolError, StaticToolOutputDenied, StaticToolResult, StepResult, StepResultPerformance, StepStartUIPart, StopCondition, StreamObjectOnFinishCallback, StreamObjectResult, StreamTextInclude, StreamTextOnChunkCallback, StreamTextOnErrorCallback, StreamTextResult, StreamTextTransform, StreamTranscriptionResult, Telemetry, TelemetryOptions, TelemetryTracingChannelMessage, TelemetryTracingEventType, TextStreamChatTransport, TextStreamPart, TextUIPart, TimeoutConfiguration, ToUIMessageChunkOptions, ToolApprovalConfiguration, ToolApprovalRequestOutput, ToolApprovalResponseOutput, ToolApprovalStatus, ToolCallNotFoundForApprovalError, ToolCallRepairError, ToolCallRepairFunction, ToolChoice, ToolExecutionEndEvent, ToolExecutionStartEvent, ToolInputRefinement, ToolLoopAgent, ToolLoopAgentSettings, ToolOrder, ToolUIPart, TranscriptionModel, TranscriptionModelResponseMetadata, TranscriptionResult, TranscriptionStreamPart, TypedToolCall, TypedToolError, TypedToolOutputDenied, TypedToolResult, UIDataPartSchemas, UIDataTypes, UIMessage, UIMessageChunk, UIMessagePart, UIMessageStreamError, UIMessageStreamOnEndCallback, UIMessageStreamOnFinishCallback, UIMessageStreamOnStepEndCallback, UIMessageStreamOnStepFinishCallback, UIMessageStreamOptions, UIMessageStreamWriter, UITool, UIToolInvocation, UITools, UI_MESSAGE_STREAM_HEADERS, UnsupportedModelVersionError, UploadFileResult, UploadSkillResult, UseCompletionOptions, Warning, addToolInputExamplesMiddleware, assistantModelMessageSchema, callCompletionApi, consumeStream, convertDataContentToBase64String, convertFileListToFileUIParts, convertToModelMessages, cosineSimilarity, createAgentUIStream, createAgentUIStreamResponse, createDownload, createProviderRegistry, createTextStreamResponse, createUIMessageStream, createUIMessageStreamResponse, customProvider, defaultEmbeddingSettingsMiddleware, defaultSettingsMiddleware, detectToolDrift, embed, embedMany, experimental_createProviderRegistry, decodeRealtimeAudio as experimental_decodeRealtimeAudio, encodeRealtimeAudio as experimental_encodeRealtimeAudio, filterActiveTools as experimental_filterActiveTools, experimental_generateSpeech, experimental_generateVideo, getRealtimeToolDefinitions as experimental_getRealtimeToolDefinitions, resampleAudio as experimental_resampleAudio, streamLanguageModelCall as experimental_streamLanguageModelCall, streamTranscribe as experimental_streamTranscribe, experimental_transcribe, extractJsonMiddleware, extractReasoningMiddleware, fingerprintTools, generateImage, generateObject, generateSpeech, generateText, getChunkTimeoutMs, getFirstChunkTimeoutMs, getStaticToolName, getStepTimeoutMs, getTextFromDataUrl, getToolName, getToolOrDynamicToolName, getToolTimeoutMs, getTotalTimeoutMs, hasToolCall, isCustomContentUIPart, isDataUIPart, isDeepEqualData, isDynamicToolUIPart, isFileUIPart, isLoopFinished, isReasoningFileUIPart, isReasoningUIPart, isStaticToolUIPart, isStepCount, isTextUIPart, isToolUIPart, lastAssistantMessageIsCompleteWithApprovalResponses, lastAssistantMessageIsCompleteWithToolCalls, modelMessageSchema, parsePartialJson, pipeAgentUIStreamToResponse, pipeTextStreamToResponse, pipeUIMessageStreamToResponse, pruneMessages, readUIMessageStream, registerTelemetry, rerank, safeValidateUIMessages, simulateReadableStream, simulateStreamingMiddleware, smoothStream, isStepCount as stepCountIs, streamObject, streamText, systemModelMessageSchema, toTextStream, toUIMessageChunk, toUIMessageStream, toolModelMessageSchema, transcribe, uiMessageChunkSchema, uploadFile, uploadSkill, userModelMessageSchema, validateUIMessages, wrapEmbeddingModel, wrapImageModel, wrapLanguageModel, wrapProvider };
|
package/dist/index.js
CHANGED
|
@@ -1089,7 +1089,7 @@ import {
|
|
|
1089
1089
|
} from "@ai-sdk/provider-utils";
|
|
1090
1090
|
|
|
1091
1091
|
// src/version.ts
|
|
1092
|
-
var VERSION = true ? "7.0.
|
|
1092
|
+
var VERSION = true ? "7.0.36" : "0.0.0-test";
|
|
1093
1093
|
|
|
1094
1094
|
// src/util/download/download.ts
|
|
1095
1095
|
var download = async ({
|
|
@@ -2147,6 +2147,12 @@ function getStepTimeoutMs(timeout) {
|
|
|
2147
2147
|
}
|
|
2148
2148
|
return timeout.stepMs;
|
|
2149
2149
|
}
|
|
2150
|
+
function getFirstChunkTimeoutMs(timeout) {
|
|
2151
|
+
if (timeout == null || typeof timeout === "number") {
|
|
2152
|
+
return void 0;
|
|
2153
|
+
}
|
|
2154
|
+
return timeout.firstChunkMs;
|
|
2155
|
+
}
|
|
2150
2156
|
function getChunkTimeoutMs(timeout) {
|
|
2151
2157
|
if (timeout == null || typeof timeout === "number") {
|
|
2152
2158
|
return void 0;
|
|
@@ -4847,6 +4853,17 @@ async function importKey(secret) {
|
|
|
4847
4853
|
);
|
|
4848
4854
|
}
|
|
4849
4855
|
function buildPayload(approvalId, toolCallId, toolName, inputDigest) {
|
|
4856
|
+
return encoder2.encode(
|
|
4857
|
+
JSON.stringify([
|
|
4858
|
+
"ai-sdk-tool-approval-v1",
|
|
4859
|
+
approvalId,
|
|
4860
|
+
toolCallId,
|
|
4861
|
+
toolName,
|
|
4862
|
+
inputDigest
|
|
4863
|
+
])
|
|
4864
|
+
);
|
|
4865
|
+
}
|
|
4866
|
+
function buildLegacyPayload(approvalId, toolCallId, toolName, inputDigest) {
|
|
4850
4867
|
return encoder2.encode(
|
|
4851
4868
|
`${approvalId}
|
|
4852
4869
|
${toolCallId}
|
|
@@ -4877,9 +4894,21 @@ async function verifyToolApprovalSignature({
|
|
|
4877
4894
|
}) {
|
|
4878
4895
|
const key = await importKey(secret);
|
|
4879
4896
|
const inputDigest = await hashCanonical(input);
|
|
4880
|
-
const payload = buildPayload(approvalId, toolCallId, toolName, inputDigest);
|
|
4881
4897
|
const sigBytes = fromBase64url(signature);
|
|
4882
|
-
|
|
4898
|
+
const payload = buildPayload(approvalId, toolCallId, toolName, inputDigest);
|
|
4899
|
+
if (await crypto.subtle.verify("HMAC", key, sigBytes, payload)) {
|
|
4900
|
+
return true;
|
|
4901
|
+
}
|
|
4902
|
+
if (!approvalId.includes("\n") && !toolCallId.includes("\n") && !toolName.includes("\n")) {
|
|
4903
|
+
const legacyPayload = buildLegacyPayload(
|
|
4904
|
+
approvalId,
|
|
4905
|
+
toolCallId,
|
|
4906
|
+
toolName,
|
|
4907
|
+
inputDigest
|
|
4908
|
+
);
|
|
4909
|
+
return crypto.subtle.verify("HMAC", key, sigBytes, legacyPayload);
|
|
4910
|
+
}
|
|
4911
|
+
return false;
|
|
4883
4912
|
}
|
|
4884
4913
|
async function maybeSignApproval({
|
|
4885
4914
|
secret,
|
|
@@ -6128,7 +6157,7 @@ function writeToServerResponse({
|
|
|
6128
6157
|
response.end();
|
|
6129
6158
|
}
|
|
6130
6159
|
};
|
|
6131
|
-
read();
|
|
6160
|
+
return read();
|
|
6132
6161
|
}
|
|
6133
6162
|
|
|
6134
6163
|
// src/text-stream/pipe-text-stream-to-response.ts
|
|
@@ -6139,7 +6168,7 @@ function pipeTextStreamToResponse({
|
|
|
6139
6168
|
headers,
|
|
6140
6169
|
stream
|
|
6141
6170
|
}) {
|
|
6142
|
-
writeToServerResponse({
|
|
6171
|
+
return writeToServerResponse({
|
|
6143
6172
|
response,
|
|
6144
6173
|
status,
|
|
6145
6174
|
statusText,
|
|
@@ -6229,7 +6258,7 @@ function pipeUIMessageStreamToResponse({
|
|
|
6229
6258
|
sseStream = stream1;
|
|
6230
6259
|
consumeSseStream({ stream: stream2 });
|
|
6231
6260
|
}
|
|
6232
|
-
writeToServerResponse({
|
|
6261
|
+
return writeToServerResponse({
|
|
6233
6262
|
response,
|
|
6234
6263
|
status,
|
|
6235
6264
|
statusText,
|
|
@@ -7665,32 +7694,37 @@ function createResolvablePromise() {
|
|
|
7665
7694
|
|
|
7666
7695
|
// src/util/create-stitchable-stream.ts
|
|
7667
7696
|
function createStitchableStream() {
|
|
7668
|
-
let
|
|
7697
|
+
let innerStreams = [];
|
|
7669
7698
|
let controller = null;
|
|
7670
7699
|
let isClosed = false;
|
|
7671
7700
|
let waitForNewStream = createResolvablePromise();
|
|
7672
7701
|
const terminate = () => {
|
|
7673
7702
|
isClosed = true;
|
|
7674
7703
|
waitForNewStream.resolve();
|
|
7675
|
-
|
|
7676
|
-
|
|
7704
|
+
innerStreams.forEach(({ reader, onCancel }) => {
|
|
7705
|
+
onCancel == null ? void 0 : onCancel();
|
|
7706
|
+
reader.cancel();
|
|
7707
|
+
});
|
|
7708
|
+
innerStreams = [];
|
|
7677
7709
|
controller == null ? void 0 : controller.close();
|
|
7678
7710
|
};
|
|
7679
7711
|
const processPull = async () => {
|
|
7680
|
-
|
|
7712
|
+
var _a22;
|
|
7713
|
+
if (isClosed && innerStreams.length === 0) {
|
|
7681
7714
|
controller == null ? void 0 : controller.close();
|
|
7682
7715
|
return;
|
|
7683
7716
|
}
|
|
7684
|
-
if (
|
|
7717
|
+
if (innerStreams.length === 0) {
|
|
7685
7718
|
waitForNewStream = createResolvablePromise();
|
|
7686
7719
|
await waitForNewStream.promise;
|
|
7687
7720
|
return await processPull();
|
|
7688
7721
|
}
|
|
7722
|
+
const currentStream = innerStreams[0];
|
|
7689
7723
|
try {
|
|
7690
|
-
const { value, done } = await
|
|
7724
|
+
const { value, done } = await currentStream.reader.read();
|
|
7691
7725
|
if (done) {
|
|
7692
|
-
|
|
7693
|
-
if (
|
|
7726
|
+
innerStreams.shift();
|
|
7727
|
+
if (innerStreams.length === 0 && isClosed) {
|
|
7694
7728
|
controller == null ? void 0 : controller.close();
|
|
7695
7729
|
} else {
|
|
7696
7730
|
await processPull();
|
|
@@ -7699,8 +7733,9 @@ function createStitchableStream() {
|
|
|
7699
7733
|
controller == null ? void 0 : controller.enqueue(value);
|
|
7700
7734
|
}
|
|
7701
7735
|
} catch (error) {
|
|
7736
|
+
(_a22 = currentStream.onError) == null ? void 0 : _a22.call(currentStream, error);
|
|
7702
7737
|
controller == null ? void 0 : controller.error(error);
|
|
7703
|
-
|
|
7738
|
+
innerStreams.shift();
|
|
7704
7739
|
terminate();
|
|
7705
7740
|
}
|
|
7706
7741
|
};
|
|
@@ -7711,18 +7746,22 @@ function createStitchableStream() {
|
|
|
7711
7746
|
},
|
|
7712
7747
|
pull: processPull,
|
|
7713
7748
|
async cancel() {
|
|
7714
|
-
for (const reader of
|
|
7749
|
+
for (const { reader, onCancel } of innerStreams) {
|
|
7750
|
+
onCancel == null ? void 0 : onCancel();
|
|
7715
7751
|
await reader.cancel();
|
|
7716
7752
|
}
|
|
7717
|
-
|
|
7753
|
+
innerStreams = [];
|
|
7718
7754
|
isClosed = true;
|
|
7719
7755
|
}
|
|
7720
7756
|
}),
|
|
7721
|
-
addStream: (innerStream) => {
|
|
7757
|
+
addStream: (innerStream, callbacks) => {
|
|
7722
7758
|
if (isClosed) {
|
|
7723
7759
|
throw new Error("Cannot add inner stream: outer stream is closed");
|
|
7724
7760
|
}
|
|
7725
|
-
|
|
7761
|
+
innerStreams.push({
|
|
7762
|
+
reader: innerStream.getReader(),
|
|
7763
|
+
...callbacks
|
|
7764
|
+
});
|
|
7726
7765
|
waitForNewStream.resolve();
|
|
7727
7766
|
},
|
|
7728
7767
|
/**
|
|
@@ -7732,7 +7771,7 @@ function createStitchableStream() {
|
|
|
7732
7771
|
close: () => {
|
|
7733
7772
|
isClosed = true;
|
|
7734
7773
|
waitForNewStream.resolve();
|
|
7735
|
-
if (
|
|
7774
|
+
if (innerStreams.length === 0) {
|
|
7736
7775
|
controller == null ? void 0 : controller.close();
|
|
7737
7776
|
}
|
|
7738
7777
|
},
|
|
@@ -8443,23 +8482,23 @@ var originalGenerateCallId3 = createIdGenerator3({
|
|
|
8443
8482
|
});
|
|
8444
8483
|
var isOutputChunkType = {
|
|
8445
8484
|
file: true,
|
|
8446
|
-
custom:
|
|
8447
|
-
source:
|
|
8448
|
-
"text-start":
|
|
8449
|
-
"text-end":
|
|
8485
|
+
custom: false,
|
|
8486
|
+
source: false,
|
|
8487
|
+
"text-start": false,
|
|
8488
|
+
"text-end": false,
|
|
8450
8489
|
"text-delta": true,
|
|
8451
|
-
"reasoning-start":
|
|
8452
|
-
"reasoning-end":
|
|
8490
|
+
"reasoning-start": false,
|
|
8491
|
+
"reasoning-end": false,
|
|
8453
8492
|
"reasoning-delta": true,
|
|
8454
8493
|
"reasoning-file": true,
|
|
8455
|
-
"tool-input-start":
|
|
8456
|
-
"tool-input-end":
|
|
8494
|
+
"tool-input-start": false,
|
|
8495
|
+
"tool-input-end": false,
|
|
8457
8496
|
"tool-input-delta": true,
|
|
8458
|
-
"tool-approval-request":
|
|
8459
|
-
"tool-approval-response":
|
|
8497
|
+
"tool-approval-request": false,
|
|
8498
|
+
"tool-approval-response": false,
|
|
8460
8499
|
"tool-call": true,
|
|
8461
|
-
"tool-result":
|
|
8462
|
-
"tool-error":
|
|
8500
|
+
"tool-result": false,
|
|
8501
|
+
"tool-error": false,
|
|
8463
8502
|
"tool-execution-end": false,
|
|
8464
8503
|
"model-call-start": false,
|
|
8465
8504
|
"model-call-response-metadata": false,
|
|
@@ -8467,6 +8506,24 @@ var isOutputChunkType = {
|
|
|
8467
8506
|
error: false,
|
|
8468
8507
|
raw: false
|
|
8469
8508
|
};
|
|
8509
|
+
function isOutputChunk2(chunk) {
|
|
8510
|
+
if (!isOutputChunkType[chunk.type]) {
|
|
8511
|
+
return false;
|
|
8512
|
+
}
|
|
8513
|
+
switch (chunk.type) {
|
|
8514
|
+
case "text-delta":
|
|
8515
|
+
case "reasoning-delta":
|
|
8516
|
+
return chunk.text.length > 0;
|
|
8517
|
+
case "tool-input-delta":
|
|
8518
|
+
return chunk.delta.length > 0;
|
|
8519
|
+
case "file":
|
|
8520
|
+
case "reasoning-file":
|
|
8521
|
+
case "tool-call":
|
|
8522
|
+
return true;
|
|
8523
|
+
default:
|
|
8524
|
+
return false;
|
|
8525
|
+
}
|
|
8526
|
+
}
|
|
8470
8527
|
function streamText({
|
|
8471
8528
|
model,
|
|
8472
8529
|
tools,
|
|
@@ -8532,8 +8589,10 @@ function streamText({
|
|
|
8532
8589
|
var _a22, _b, _c, _d;
|
|
8533
8590
|
const totalTimeoutMs = getTotalTimeoutMs(timeout);
|
|
8534
8591
|
const stepTimeoutMs = getStepTimeoutMs(timeout);
|
|
8592
|
+
const firstChunkTimeoutMs = getFirstChunkTimeoutMs(timeout);
|
|
8535
8593
|
const chunkTimeoutMs = getChunkTimeoutMs(timeout);
|
|
8536
8594
|
const stepAbortController = stepTimeoutMs != null ? new AbortController() : void 0;
|
|
8595
|
+
const firstChunkAbortController = firstChunkTimeoutMs != null ? new AbortController() : void 0;
|
|
8537
8596
|
const chunkAbortController = chunkTimeoutMs != null ? new AbortController() : void 0;
|
|
8538
8597
|
const resolvedOnStart = onStart != null ? onStart : experimental_onStart;
|
|
8539
8598
|
const resolvedOnStepStart = onStepStart != null ? onStepStart : experimental_onStepStart;
|
|
@@ -8552,10 +8611,13 @@ function streamText({
|
|
|
8552
8611
|
abortSignal,
|
|
8553
8612
|
totalTimeoutMs,
|
|
8554
8613
|
stepAbortController == null ? void 0 : stepAbortController.signal,
|
|
8614
|
+
firstChunkAbortController == null ? void 0 : firstChunkAbortController.signal,
|
|
8555
8615
|
chunkAbortController == null ? void 0 : chunkAbortController.signal
|
|
8556
8616
|
),
|
|
8557
8617
|
stepTimeoutMs,
|
|
8558
8618
|
stepAbortController,
|
|
8619
|
+
firstChunkTimeoutMs,
|
|
8620
|
+
firstChunkAbortController,
|
|
8559
8621
|
chunkTimeoutMs,
|
|
8560
8622
|
chunkAbortController,
|
|
8561
8623
|
instructions,
|
|
@@ -8681,6 +8743,8 @@ var DefaultStreamTextResult = class {
|
|
|
8681
8743
|
abortSignal,
|
|
8682
8744
|
stepTimeoutMs,
|
|
8683
8745
|
stepAbortController,
|
|
8746
|
+
firstChunkTimeoutMs,
|
|
8747
|
+
firstChunkAbortController,
|
|
8684
8748
|
chunkTimeoutMs,
|
|
8685
8749
|
chunkAbortController,
|
|
8686
8750
|
instructions,
|
|
@@ -9246,6 +9310,23 @@ var DefaultStreamTextResult = class {
|
|
|
9246
9310
|
label: "Step",
|
|
9247
9311
|
timeoutMs: stepTimeoutMs
|
|
9248
9312
|
});
|
|
9313
|
+
let firstChunkTimeoutId = void 0;
|
|
9314
|
+
function startFirstChunkTimeout() {
|
|
9315
|
+
if (abortSignal == null ? void 0 : abortSignal.aborted) {
|
|
9316
|
+
return;
|
|
9317
|
+
}
|
|
9318
|
+
firstChunkTimeoutId = setAbortTimeout({
|
|
9319
|
+
abortController: firstChunkAbortController,
|
|
9320
|
+
label: "First chunk",
|
|
9321
|
+
timeoutMs: firstChunkTimeoutMs
|
|
9322
|
+
});
|
|
9323
|
+
}
|
|
9324
|
+
function clearFirstChunkTimeout() {
|
|
9325
|
+
if (firstChunkTimeoutId != null) {
|
|
9326
|
+
clearTimeout(firstChunkTimeoutId);
|
|
9327
|
+
firstChunkTimeoutId = void 0;
|
|
9328
|
+
}
|
|
9329
|
+
}
|
|
9249
9330
|
let chunkTimeoutId = void 0;
|
|
9250
9331
|
function resetChunkTimeout() {
|
|
9251
9332
|
if (chunkTimeoutId != null) {
|
|
@@ -9268,8 +9349,18 @@ var DefaultStreamTextResult = class {
|
|
|
9268
9349
|
clearTimeout(stepTimeoutId);
|
|
9269
9350
|
}
|
|
9270
9351
|
}
|
|
9271
|
-
|
|
9272
|
-
|
|
9352
|
+
function clearStepTimeouts() {
|
|
9353
|
+
clearStepTimeout();
|
|
9354
|
+
clearFirstChunkTimeout();
|
|
9355
|
+
clearChunkTimeout();
|
|
9356
|
+
}
|
|
9357
|
+
function cleanupStepTimeouts() {
|
|
9358
|
+
abortSignal == null ? void 0 : abortSignal.removeEventListener("abort", cleanupStepTimeouts);
|
|
9359
|
+
clearStepTimeouts();
|
|
9360
|
+
}
|
|
9361
|
+
abortSignal == null ? void 0 : abortSignal.addEventListener("abort", cleanupStepTimeouts, {
|
|
9362
|
+
once: true
|
|
9363
|
+
});
|
|
9273
9364
|
try {
|
|
9274
9365
|
stepFinish = new DelayedPromise();
|
|
9275
9366
|
const stepTracingChannelContext = (_a23 = telemetryDispatcher.startTracingChannelContext) == null ? void 0 : _a23.call(telemetryDispatcher, {
|
|
@@ -9406,6 +9497,7 @@ var DefaultStreamTextResult = class {
|
|
|
9406
9497
|
}
|
|
9407
9498
|
)
|
|
9408
9499
|
);
|
|
9500
|
+
startFirstChunkTimeout();
|
|
9409
9501
|
const streamAfterToolCallbackInvocation = invokeToolCallbacksFromStream({
|
|
9410
9502
|
stream: languageModelStream,
|
|
9411
9503
|
tools,
|
|
@@ -9479,7 +9571,6 @@ var DefaultStreamTextResult = class {
|
|
|
9479
9571
|
new TransformStream({
|
|
9480
9572
|
async transform(chunk, controller) {
|
|
9481
9573
|
var _a24, _b2, _c2;
|
|
9482
|
-
resetChunkTimeout();
|
|
9483
9574
|
if (chunk.type === "model-call-start") {
|
|
9484
9575
|
warnings = chunk.warnings;
|
|
9485
9576
|
return;
|
|
@@ -9493,8 +9584,12 @@ var DefaultStreamTextResult = class {
|
|
|
9493
9584
|
});
|
|
9494
9585
|
}
|
|
9495
9586
|
const chunkType = chunk.type;
|
|
9496
|
-
if (
|
|
9587
|
+
if (isOutputChunk2(chunk)) {
|
|
9588
|
+
if (!hasReceivedOutputChunk) {
|
|
9589
|
+
clearFirstChunkTimeout();
|
|
9590
|
+
}
|
|
9497
9591
|
hasReceivedOutputChunk = true;
|
|
9592
|
+
resetChunkTimeout();
|
|
9498
9593
|
}
|
|
9499
9594
|
switch (chunkType) {
|
|
9500
9595
|
case "file":
|
|
@@ -9589,8 +9684,7 @@ var DefaultStreamTextResult = class {
|
|
|
9589
9684
|
message: "No output generated. The model stream ended without a finish chunk."
|
|
9590
9685
|
})
|
|
9591
9686
|
});
|
|
9592
|
-
|
|
9593
|
-
clearChunkTimeout();
|
|
9687
|
+
cleanupStepTimeouts();
|
|
9594
9688
|
self.closeStream();
|
|
9595
9689
|
return;
|
|
9596
9690
|
}
|
|
@@ -9643,8 +9737,7 @@ var DefaultStreamTextResult = class {
|
|
|
9643
9737
|
pendingDeferredToolCalls.delete(output2.toolCallId);
|
|
9644
9738
|
}
|
|
9645
9739
|
}
|
|
9646
|
-
|
|
9647
|
-
clearChunkTimeout();
|
|
9740
|
+
cleanupStepTimeouts();
|
|
9648
9741
|
if (
|
|
9649
9742
|
// Continue if:
|
|
9650
9743
|
// 1. There are client tool calls that have all been executed or denied, OR
|
|
@@ -9680,11 +9773,14 @@ var DefaultStreamTextResult = class {
|
|
|
9680
9773
|
}
|
|
9681
9774
|
}
|
|
9682
9775
|
})
|
|
9683
|
-
)
|
|
9776
|
+
),
|
|
9777
|
+
{
|
|
9778
|
+
onError: cleanupStepTimeouts,
|
|
9779
|
+
onCancel: cleanupStepTimeouts
|
|
9780
|
+
}
|
|
9684
9781
|
);
|
|
9685
9782
|
} catch (error) {
|
|
9686
|
-
|
|
9687
|
-
clearChunkTimeout();
|
|
9783
|
+
cleanupStepTimeouts();
|
|
9688
9784
|
throw error;
|
|
9689
9785
|
}
|
|
9690
9786
|
}
|
|
@@ -9951,7 +10047,7 @@ var DefaultStreamTextResult = class {
|
|
|
9951
10047
|
onError,
|
|
9952
10048
|
...init
|
|
9953
10049
|
} = {}) {
|
|
9954
|
-
pipeUIMessageStreamToResponse({
|
|
10050
|
+
return pipeUIMessageStreamToResponse({
|
|
9955
10051
|
response,
|
|
9956
10052
|
stream: this.toUIMessageStream({
|
|
9957
10053
|
originalMessages,
|
|
@@ -9968,7 +10064,7 @@ var DefaultStreamTextResult = class {
|
|
|
9968
10064
|
});
|
|
9969
10065
|
}
|
|
9970
10066
|
pipeTextStreamToResponse(response, init) {
|
|
9971
|
-
pipeTextStreamToResponse({
|
|
10067
|
+
return pipeTextStreamToResponse({
|
|
9972
10068
|
response,
|
|
9973
10069
|
stream: this.textStream,
|
|
9974
10070
|
...init
|
|
@@ -11175,7 +11271,7 @@ async function pipeAgentUIStreamToResponse({
|
|
|
11175
11271
|
consumeSseStream,
|
|
11176
11272
|
...options
|
|
11177
11273
|
}) {
|
|
11178
|
-
pipeUIMessageStreamToResponse({
|
|
11274
|
+
return pipeUIMessageStreamToResponse({
|
|
11179
11275
|
response,
|
|
11180
11276
|
headers,
|
|
11181
11277
|
status,
|
|
@@ -13182,7 +13278,7 @@ var DefaultStreamObjectResult = class {
|
|
|
13182
13278
|
return createAsyncIterableStream(this.baseStream);
|
|
13183
13279
|
}
|
|
13184
13280
|
pipeTextStreamToResponse(response, init) {
|
|
13185
|
-
pipeTextStreamToResponse({
|
|
13281
|
+
return pipeTextStreamToResponse({
|
|
13186
13282
|
response,
|
|
13187
13283
|
stream: this.textStream,
|
|
13188
13284
|
...init
|
|
@@ -17236,6 +17332,7 @@ export {
|
|
|
17236
17332
|
generateSpeech,
|
|
17237
17333
|
generateText,
|
|
17238
17334
|
getChunkTimeoutMs,
|
|
17335
|
+
getFirstChunkTimeoutMs,
|
|
17239
17336
|
getStaticToolName,
|
|
17240
17337
|
getStepTimeoutMs,
|
|
17241
17338
|
getTextFromDataUrl,
|