ai 6.0.33 → 6.0.35
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 +16 -0
- package/dist/index.d.mts +50 -21
- package/dist/index.d.ts +50 -21
- package/dist/index.js +348 -286
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +280 -219
- package/dist/index.mjs.map +1 -1
- package/dist/internal/index.js +1 -1
- package/dist/internal/index.mjs +1 -1
- package/docs/02-foundations/03-prompts.mdx +2 -2
- package/docs/03-ai-sdk-core/15-tools-and-tool-calling.mdx +1 -1
- package/docs/07-reference/01-ai-sdk-core/28-output.mdx +1 -1
- package/docs/07-reference/05-ai-sdk-errors/ai-ui-message-stream-error.mdx +67 -0
- package/package.json +6 -4
- package/src/agent/agent.ts +116 -0
- package/src/agent/create-agent-ui-stream-response.test.ts +258 -0
- package/src/agent/create-agent-ui-stream-response.ts +50 -0
- package/src/agent/create-agent-ui-stream.ts +73 -0
- package/src/agent/index.ts +33 -0
- package/src/agent/infer-agent-tools.ts +7 -0
- package/src/agent/infer-agent-ui-message.test-d.ts +54 -0
- package/src/agent/infer-agent-ui-message.ts +11 -0
- package/src/agent/pipe-agent-ui-stream-to-response.ts +52 -0
- package/src/agent/tool-loop-agent-on-finish-callback.ts +31 -0
- package/src/agent/tool-loop-agent-on-step-finish-callback.ts +11 -0
- package/src/agent/tool-loop-agent-settings.ts +182 -0
- package/src/agent/tool-loop-agent.test-d.ts +114 -0
- package/src/agent/tool-loop-agent.test.ts +442 -0
- package/src/agent/tool-loop-agent.ts +114 -0
- package/src/embed/__snapshots__/embed-many.test.ts.snap +191 -0
- package/src/embed/__snapshots__/embed.test.ts.snap +81 -0
- package/src/embed/embed-many-result.ts +53 -0
- package/src/embed/embed-many.test.ts +653 -0
- package/src/embed/embed-many.ts +378 -0
- package/src/embed/embed-result.ts +50 -0
- package/src/embed/embed.test.ts +298 -0
- package/src/embed/embed.ts +211 -0
- package/src/embed/index.ts +4 -0
- package/src/error/index.ts +35 -0
- package/src/error/invalid-argument-error.ts +34 -0
- package/src/error/invalid-stream-part-error.ts +28 -0
- package/src/error/invalid-tool-approval-error.ts +26 -0
- package/src/error/invalid-tool-input-error.ts +33 -0
- package/src/error/no-image-generated-error.ts +39 -0
- package/src/error/no-object-generated-error.ts +70 -0
- package/src/error/no-output-generated-error.ts +26 -0
- package/src/error/no-speech-generated-error.ts +18 -0
- package/src/error/no-such-tool-error.ts +35 -0
- package/src/error/no-transcript-generated-error.ts +20 -0
- package/src/error/tool-call-not-found-for-approval-error.ts +32 -0
- package/src/error/tool-call-repair-error.ts +30 -0
- package/src/error/ui-message-stream-error.ts +48 -0
- package/src/error/unsupported-model-version-error.ts +23 -0
- package/src/error/verify-no-object-generated-error.ts +27 -0
- package/src/generate-image/generate-image-result.ts +42 -0
- package/src/generate-image/generate-image.test.ts +1420 -0
- package/src/generate-image/generate-image.ts +360 -0
- package/src/generate-image/index.ts +18 -0
- package/src/generate-object/__snapshots__/generate-object.test.ts.snap +133 -0
- package/src/generate-object/__snapshots__/stream-object.test.ts.snap +297 -0
- package/src/generate-object/generate-object-result.ts +67 -0
- package/src/generate-object/generate-object.test-d.ts +49 -0
- package/src/generate-object/generate-object.test.ts +1191 -0
- package/src/generate-object/generate-object.ts +518 -0
- package/src/generate-object/index.ts +9 -0
- package/src/generate-object/inject-json-instruction.test.ts +181 -0
- package/src/generate-object/inject-json-instruction.ts +30 -0
- package/src/generate-object/output-strategy.ts +415 -0
- package/src/generate-object/parse-and-validate-object-result.ts +111 -0
- package/src/generate-object/repair-text.ts +12 -0
- package/src/generate-object/stream-object-result.ts +120 -0
- package/src/generate-object/stream-object.test-d.ts +74 -0
- package/src/generate-object/stream-object.test.ts +1950 -0
- package/src/generate-object/stream-object.ts +986 -0
- package/src/generate-object/validate-object-generation-input.ts +144 -0
- package/src/generate-speech/generate-speech-result.ts +30 -0
- package/src/generate-speech/generate-speech.test.ts +300 -0
- package/src/generate-speech/generate-speech.ts +190 -0
- package/src/generate-speech/generated-audio-file.ts +65 -0
- package/src/generate-speech/index.ts +3 -0
- package/src/generate-text/__snapshots__/generate-text.test.ts.snap +1872 -0
- package/src/generate-text/__snapshots__/stream-text.test.ts.snap +1255 -0
- package/src/generate-text/collect-tool-approvals.test.ts +553 -0
- package/src/generate-text/collect-tool-approvals.ts +116 -0
- package/src/generate-text/content-part.ts +25 -0
- package/src/generate-text/execute-tool-call.ts +129 -0
- package/src/generate-text/extract-reasoning-content.ts +17 -0
- package/src/generate-text/extract-text-content.ts +15 -0
- package/src/generate-text/generate-text-result.ts +168 -0
- package/src/generate-text/generate-text.test-d.ts +68 -0
- package/src/generate-text/generate-text.test.ts +7011 -0
- package/src/generate-text/generate-text.ts +1223 -0
- package/src/generate-text/generated-file.ts +70 -0
- package/src/generate-text/index.ts +57 -0
- package/src/generate-text/is-approval-needed.ts +29 -0
- package/src/generate-text/output-utils.ts +23 -0
- package/src/generate-text/output.test.ts +698 -0
- package/src/generate-text/output.ts +590 -0
- package/src/generate-text/parse-tool-call.test.ts +570 -0
- package/src/generate-text/parse-tool-call.ts +188 -0
- package/src/generate-text/prepare-step.ts +103 -0
- package/src/generate-text/prune-messages.test.ts +720 -0
- package/src/generate-text/prune-messages.ts +167 -0
- package/src/generate-text/reasoning-output.ts +20 -0
- package/src/generate-text/reasoning.ts +8 -0
- package/src/generate-text/response-message.ts +10 -0
- package/src/generate-text/run-tools-transformation.test.ts +1143 -0
- package/src/generate-text/run-tools-transformation.ts +420 -0
- package/src/generate-text/smooth-stream.test.ts +2101 -0
- package/src/generate-text/smooth-stream.ts +162 -0
- package/src/generate-text/step-result.ts +238 -0
- package/src/generate-text/stop-condition.ts +29 -0
- package/src/generate-text/stream-text-result.ts +463 -0
- package/src/generate-text/stream-text.test-d.ts +200 -0
- package/src/generate-text/stream-text.test.ts +19979 -0
- package/src/generate-text/stream-text.ts +2505 -0
- package/src/generate-text/to-response-messages.test.ts +922 -0
- package/src/generate-text/to-response-messages.ts +163 -0
- package/src/generate-text/tool-approval-request-output.ts +21 -0
- package/src/generate-text/tool-call-repair-function.ts +27 -0
- package/src/generate-text/tool-call.ts +47 -0
- package/src/generate-text/tool-error.ts +34 -0
- package/src/generate-text/tool-output-denied.ts +21 -0
- package/src/generate-text/tool-output.ts +7 -0
- package/src/generate-text/tool-result.ts +36 -0
- package/src/generate-text/tool-set.ts +14 -0
- package/src/global.ts +24 -0
- package/src/index.ts +50 -0
- package/src/logger/index.ts +6 -0
- package/src/logger/log-warnings.test.ts +351 -0
- package/src/logger/log-warnings.ts +119 -0
- package/src/middleware/__snapshots__/simulate-streaming-middleware.test.ts.snap +64 -0
- package/src/middleware/add-tool-input-examples-middleware.test.ts +476 -0
- package/src/middleware/add-tool-input-examples-middleware.ts +90 -0
- package/src/middleware/default-embedding-settings-middleware.test.ts +126 -0
- package/src/middleware/default-embedding-settings-middleware.ts +22 -0
- package/src/middleware/default-settings-middleware.test.ts +388 -0
- package/src/middleware/default-settings-middleware.ts +33 -0
- package/src/middleware/extract-json-middleware.test.ts +827 -0
- package/src/middleware/extract-json-middleware.ts +197 -0
- package/src/middleware/extract-reasoning-middleware.test.ts +1028 -0
- package/src/middleware/extract-reasoning-middleware.ts +238 -0
- package/src/middleware/index.ts +10 -0
- package/src/middleware/simulate-streaming-middleware.test.ts +911 -0
- package/src/middleware/simulate-streaming-middleware.ts +79 -0
- package/src/middleware/wrap-embedding-model.test.ts +358 -0
- package/src/middleware/wrap-embedding-model.ts +86 -0
- package/src/middleware/wrap-image-model.test.ts +423 -0
- package/src/middleware/wrap-image-model.ts +85 -0
- package/src/middleware/wrap-language-model.test.ts +518 -0
- package/src/middleware/wrap-language-model.ts +104 -0
- package/src/middleware/wrap-provider.test.ts +120 -0
- package/src/middleware/wrap-provider.ts +51 -0
- package/src/model/as-embedding-model-v3.test.ts +319 -0
- package/src/model/as-embedding-model-v3.ts +24 -0
- package/src/model/as-image-model-v3.test.ts +409 -0
- package/src/model/as-image-model-v3.ts +24 -0
- package/src/model/as-language-model-v3.test.ts +508 -0
- package/src/model/as-language-model-v3.ts +103 -0
- package/src/model/as-provider-v3.ts +36 -0
- package/src/model/as-speech-model-v3.test.ts +356 -0
- package/src/model/as-speech-model-v3.ts +24 -0
- package/src/model/as-transcription-model-v3.test.ts +529 -0
- package/src/model/as-transcription-model-v3.ts +24 -0
- package/src/model/resolve-model.test.ts +244 -0
- package/src/model/resolve-model.ts +126 -0
- package/src/prompt/call-settings.ts +148 -0
- package/src/prompt/content-part.ts +209 -0
- package/src/prompt/convert-to-language-model-prompt.test.ts +2018 -0
- package/src/prompt/convert-to-language-model-prompt.ts +442 -0
- package/src/prompt/create-tool-model-output.test.ts +508 -0
- package/src/prompt/create-tool-model-output.ts +34 -0
- package/src/prompt/data-content.test.ts +15 -0
- package/src/prompt/data-content.ts +134 -0
- package/src/prompt/index.ts +27 -0
- package/src/prompt/invalid-data-content-error.ts +29 -0
- package/src/prompt/invalid-message-role-error.ts +27 -0
- package/src/prompt/message-conversion-error.ts +28 -0
- package/src/prompt/message.ts +68 -0
- package/src/prompt/prepare-call-settings.test.ts +159 -0
- package/src/prompt/prepare-call-settings.ts +108 -0
- package/src/prompt/prepare-tools-and-tool-choice.test.ts +461 -0
- package/src/prompt/prepare-tools-and-tool-choice.ts +86 -0
- package/src/prompt/prompt.ts +43 -0
- package/src/prompt/split-data-url.ts +17 -0
- package/src/prompt/standardize-prompt.test.ts +82 -0
- package/src/prompt/standardize-prompt.ts +99 -0
- package/src/prompt/wrap-gateway-error.ts +29 -0
- package/src/registry/custom-provider.test.ts +211 -0
- package/src/registry/custom-provider.ts +155 -0
- package/src/registry/index.ts +7 -0
- package/src/registry/no-such-provider-error.ts +41 -0
- package/src/registry/provider-registry.test.ts +691 -0
- package/src/registry/provider-registry.ts +328 -0
- package/src/rerank/index.ts +2 -0
- package/src/rerank/rerank-result.ts +70 -0
- package/src/rerank/rerank.test.ts +516 -0
- package/src/rerank/rerank.ts +237 -0
- package/src/telemetry/assemble-operation-name.ts +21 -0
- package/src/telemetry/get-base-telemetry-attributes.ts +53 -0
- package/src/telemetry/get-tracer.ts +20 -0
- package/src/telemetry/noop-tracer.ts +69 -0
- package/src/telemetry/record-span.ts +63 -0
- package/src/telemetry/select-telemetry-attributes.ts +78 -0
- package/src/telemetry/select-temetry-attributes.test.ts +114 -0
- package/src/telemetry/stringify-for-telemetry.test.ts +114 -0
- package/src/telemetry/stringify-for-telemetry.ts +33 -0
- package/src/telemetry/telemetry-settings.ts +44 -0
- package/src/test/mock-embedding-model-v2.ts +35 -0
- package/src/test/mock-embedding-model-v3.ts +48 -0
- package/src/test/mock-image-model-v2.ts +28 -0
- package/src/test/mock-image-model-v3.ts +28 -0
- package/src/test/mock-language-model-v2.ts +72 -0
- package/src/test/mock-language-model-v3.ts +77 -0
- package/src/test/mock-provider-v2.ts +68 -0
- package/src/test/mock-provider-v3.ts +80 -0
- package/src/test/mock-reranking-model-v3.ts +25 -0
- package/src/test/mock-server-response.ts +69 -0
- package/src/test/mock-speech-model-v2.ts +24 -0
- package/src/test/mock-speech-model-v3.ts +24 -0
- package/src/test/mock-tracer.ts +156 -0
- package/src/test/mock-transcription-model-v2.ts +24 -0
- package/src/test/mock-transcription-model-v3.ts +24 -0
- package/src/test/mock-values.ts +4 -0
- package/src/test/not-implemented.ts +3 -0
- package/src/text-stream/create-text-stream-response.test.ts +38 -0
- package/src/text-stream/create-text-stream-response.ts +18 -0
- package/src/text-stream/index.ts +2 -0
- package/src/text-stream/pipe-text-stream-to-response.test.ts +38 -0
- package/src/text-stream/pipe-text-stream-to-response.ts +26 -0
- package/src/transcribe/index.ts +2 -0
- package/src/transcribe/transcribe-result.ts +60 -0
- package/src/transcribe/transcribe.test.ts +313 -0
- package/src/transcribe/transcribe.ts +173 -0
- package/src/types/embedding-model-middleware.ts +3 -0
- package/src/types/embedding-model.ts +18 -0
- package/src/types/image-model-middleware.ts +3 -0
- package/src/types/image-model-response-metadata.ts +16 -0
- package/src/types/image-model.ts +19 -0
- package/src/types/index.ts +29 -0
- package/src/types/json-value.ts +15 -0
- package/src/types/language-model-middleware.ts +3 -0
- package/src/types/language-model-request-metadata.ts +6 -0
- package/src/types/language-model-response-metadata.ts +21 -0
- package/src/types/language-model.ts +104 -0
- package/src/types/provider-metadata.ts +16 -0
- package/src/types/provider.ts +55 -0
- package/src/types/reranking-model.ts +6 -0
- package/src/types/speech-model-response-metadata.ts +21 -0
- package/src/types/speech-model.ts +6 -0
- package/src/types/transcription-model-response-metadata.ts +16 -0
- package/src/types/transcription-model.ts +9 -0
- package/src/types/usage.ts +200 -0
- package/src/types/warning.ts +7 -0
- package/src/ui/__snapshots__/append-response-messages.test.ts.snap +416 -0
- package/src/ui/__snapshots__/convert-to-model-messages.test.ts.snap +419 -0
- package/src/ui/__snapshots__/process-chat-text-response.test.ts.snap +142 -0
- package/src/ui/call-completion-api.ts +157 -0
- package/src/ui/chat-transport.ts +83 -0
- package/src/ui/chat.test-d.ts +233 -0
- package/src/ui/chat.test.ts +2695 -0
- package/src/ui/chat.ts +716 -0
- package/src/ui/convert-file-list-to-file-ui-parts.ts +36 -0
- package/src/ui/convert-to-model-messages.test.ts +2775 -0
- package/src/ui/convert-to-model-messages.ts +373 -0
- package/src/ui/default-chat-transport.ts +36 -0
- package/src/ui/direct-chat-transport.test.ts +446 -0
- package/src/ui/direct-chat-transport.ts +118 -0
- package/src/ui/http-chat-transport.test.ts +185 -0
- package/src/ui/http-chat-transport.ts +292 -0
- package/src/ui/index.ts +71 -0
- package/src/ui/last-assistant-message-is-complete-with-approval-responses.ts +44 -0
- package/src/ui/last-assistant-message-is-complete-with-tool-calls.test.ts +371 -0
- package/src/ui/last-assistant-message-is-complete-with-tool-calls.ts +39 -0
- package/src/ui/process-text-stream.test.ts +38 -0
- package/src/ui/process-text-stream.ts +16 -0
- package/src/ui/process-ui-message-stream.test.ts +8294 -0
- package/src/ui/process-ui-message-stream.ts +761 -0
- package/src/ui/text-stream-chat-transport.ts +23 -0
- package/src/ui/transform-text-to-ui-message-stream.test.ts +124 -0
- package/src/ui/transform-text-to-ui-message-stream.ts +27 -0
- package/src/ui/ui-messages.test.ts +48 -0
- package/src/ui/ui-messages.ts +534 -0
- package/src/ui/use-completion.ts +84 -0
- package/src/ui/validate-ui-messages.test.ts +1428 -0
- package/src/ui/validate-ui-messages.ts +476 -0
- package/src/ui-message-stream/create-ui-message-stream-response.test.ts +266 -0
- package/src/ui-message-stream/create-ui-message-stream-response.ts +32 -0
- package/src/ui-message-stream/create-ui-message-stream.test.ts +639 -0
- package/src/ui-message-stream/create-ui-message-stream.ts +124 -0
- package/src/ui-message-stream/get-response-ui-message-id.test.ts +55 -0
- package/src/ui-message-stream/get-response-ui-message-id.ts +24 -0
- package/src/ui-message-stream/handle-ui-message-stream-finish.test.ts +429 -0
- package/src/ui-message-stream/handle-ui-message-stream-finish.ts +135 -0
- package/src/ui-message-stream/index.ts +13 -0
- package/src/ui-message-stream/json-to-sse-transform-stream.ts +12 -0
- package/src/ui-message-stream/pipe-ui-message-stream-to-response.test.ts +90 -0
- package/src/ui-message-stream/pipe-ui-message-stream-to-response.ts +40 -0
- package/src/ui-message-stream/read-ui-message-stream.test.ts +122 -0
- package/src/ui-message-stream/read-ui-message-stream.ts +87 -0
- package/src/ui-message-stream/ui-message-chunks.test-d.ts +18 -0
- package/src/ui-message-stream/ui-message-chunks.ts +344 -0
- package/src/ui-message-stream/ui-message-stream-headers.ts +7 -0
- package/src/ui-message-stream/ui-message-stream-on-finish-callback.ts +32 -0
- package/src/ui-message-stream/ui-message-stream-response-init.ts +5 -0
- package/src/ui-message-stream/ui-message-stream-writer.ts +24 -0
- package/src/util/as-array.ts +3 -0
- package/src/util/async-iterable-stream.test.ts +241 -0
- package/src/util/async-iterable-stream.ts +94 -0
- package/src/util/consume-stream.ts +29 -0
- package/src/util/cosine-similarity.test.ts +57 -0
- package/src/util/cosine-similarity.ts +47 -0
- package/src/util/create-resolvable-promise.ts +30 -0
- package/src/util/create-stitchable-stream.test.ts +239 -0
- package/src/util/create-stitchable-stream.ts +112 -0
- package/src/util/data-url.ts +17 -0
- package/src/util/deep-partial.ts +84 -0
- package/src/util/detect-media-type.test.ts +670 -0
- package/src/util/detect-media-type.ts +184 -0
- package/src/util/download/download-function.ts +45 -0
- package/src/util/download/download.test.ts +69 -0
- package/src/util/download/download.ts +46 -0
- package/src/util/error-handler.ts +1 -0
- package/src/util/fix-json.test.ts +279 -0
- package/src/util/fix-json.ts +401 -0
- package/src/util/get-potential-start-index.test.ts +34 -0
- package/src/util/get-potential-start-index.ts +30 -0
- package/src/util/index.ts +11 -0
- package/src/util/is-deep-equal-data.test.ts +119 -0
- package/src/util/is-deep-equal-data.ts +48 -0
- package/src/util/is-non-empty-object.ts +5 -0
- package/src/util/job.ts +1 -0
- package/src/util/log-v2-compatibility-warning.ts +21 -0
- package/src/util/merge-abort-signals.test.ts +155 -0
- package/src/util/merge-abort-signals.ts +43 -0
- package/src/util/merge-objects.test.ts +118 -0
- package/src/util/merge-objects.ts +79 -0
- package/src/util/now.ts +4 -0
- package/src/util/parse-partial-json.test.ts +80 -0
- package/src/util/parse-partial-json.ts +30 -0
- package/src/util/prepare-headers.test.ts +51 -0
- package/src/util/prepare-headers.ts +14 -0
- package/src/util/prepare-retries.test.ts +10 -0
- package/src/util/prepare-retries.ts +47 -0
- package/src/util/retry-error.ts +41 -0
- package/src/util/retry-with-exponential-backoff.test.ts +446 -0
- package/src/util/retry-with-exponential-backoff.ts +154 -0
- package/src/util/serial-job-executor.test.ts +162 -0
- package/src/util/serial-job-executor.ts +36 -0
- package/src/util/simulate-readable-stream.test.ts +98 -0
- package/src/util/simulate-readable-stream.ts +39 -0
- package/src/util/split-array.test.ts +60 -0
- package/src/util/split-array.ts +20 -0
- package/src/util/value-of.ts +65 -0
- package/src/util/write-to-server-response.test.ts +266 -0
- package/src/util/write-to-server-response.ts +49 -0
- package/src/version.ts +5 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { AISDKError } from '@ai-sdk/provider';
|
|
2
|
+
import { ImageModelResponseMetadata } from '../types/image-model-response-metadata';
|
|
3
|
+
|
|
4
|
+
const name = 'AI_NoImageGeneratedError';
|
|
5
|
+
const marker = `vercel.ai.error.${name}`;
|
|
6
|
+
const symbol = Symbol.for(marker);
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
Thrown when no image could be generated. This can have multiple causes:
|
|
10
|
+
|
|
11
|
+
- The model failed to generate a response.
|
|
12
|
+
- The model generated a response that could not be parsed.
|
|
13
|
+
*/
|
|
14
|
+
export class NoImageGeneratedError extends AISDKError {
|
|
15
|
+
private readonly [symbol] = true; // used in isInstance
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
The response metadata for each call.
|
|
19
|
+
*/
|
|
20
|
+
readonly responses: Array<ImageModelResponseMetadata> | undefined;
|
|
21
|
+
|
|
22
|
+
constructor({
|
|
23
|
+
message = 'No image generated.',
|
|
24
|
+
cause,
|
|
25
|
+
responses,
|
|
26
|
+
}: {
|
|
27
|
+
message?: string;
|
|
28
|
+
cause?: Error;
|
|
29
|
+
responses?: Array<ImageModelResponseMetadata>;
|
|
30
|
+
}) {
|
|
31
|
+
super({ name, message, cause });
|
|
32
|
+
|
|
33
|
+
this.responses = responses;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
static isInstance(error: unknown): error is NoImageGeneratedError {
|
|
37
|
+
return AISDKError.hasMarker(error, marker);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { AISDKError } from '@ai-sdk/provider';
|
|
2
|
+
import { FinishReason } from '../types/language-model';
|
|
3
|
+
import { LanguageModelResponseMetadata } from '../types/language-model-response-metadata';
|
|
4
|
+
import { LanguageModelUsage } from '../types/usage';
|
|
5
|
+
|
|
6
|
+
const name = 'AI_NoObjectGeneratedError';
|
|
7
|
+
const marker = `vercel.ai.error.${name}`;
|
|
8
|
+
const symbol = Symbol.for(marker);
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
Thrown when no object could be generated. This can have several causes:
|
|
12
|
+
|
|
13
|
+
- The model failed to generate a response.
|
|
14
|
+
- The model generated a response that could not be parsed.
|
|
15
|
+
- The model generated a response that could not be validated against the schema.
|
|
16
|
+
|
|
17
|
+
The error contains the following properties:
|
|
18
|
+
|
|
19
|
+
- `text`: The text that was generated by the model. This can be the raw text or the tool call text, depending on the model.
|
|
20
|
+
*/
|
|
21
|
+
export class NoObjectGeneratedError extends AISDKError {
|
|
22
|
+
private readonly [symbol] = true; // used in isInstance
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
The text that was generated by the model. This can be the raw text or the tool call text, depending on the model.
|
|
26
|
+
*/
|
|
27
|
+
readonly text: string | undefined;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
The response metadata.
|
|
31
|
+
*/
|
|
32
|
+
readonly response: LanguageModelResponseMetadata | undefined;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
The usage of the model.
|
|
36
|
+
*/
|
|
37
|
+
readonly usage: LanguageModelUsage | undefined;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
Reason why the model finished generating a response.
|
|
41
|
+
*/
|
|
42
|
+
readonly finishReason: FinishReason | undefined;
|
|
43
|
+
|
|
44
|
+
constructor({
|
|
45
|
+
message = 'No object generated.',
|
|
46
|
+
cause,
|
|
47
|
+
text,
|
|
48
|
+
response,
|
|
49
|
+
usage,
|
|
50
|
+
finishReason,
|
|
51
|
+
}: {
|
|
52
|
+
message?: string;
|
|
53
|
+
cause?: Error;
|
|
54
|
+
text?: string;
|
|
55
|
+
response: LanguageModelResponseMetadata;
|
|
56
|
+
usage: LanguageModelUsage;
|
|
57
|
+
finishReason: FinishReason;
|
|
58
|
+
}) {
|
|
59
|
+
super({ name, message, cause });
|
|
60
|
+
|
|
61
|
+
this.text = text;
|
|
62
|
+
this.response = response;
|
|
63
|
+
this.usage = usage;
|
|
64
|
+
this.finishReason = finishReason;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
static isInstance(error: unknown): error is NoObjectGeneratedError {
|
|
68
|
+
return AISDKError.hasMarker(error, marker);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { AISDKError } from '@ai-sdk/provider';
|
|
2
|
+
|
|
3
|
+
const name = 'AI_NoOutputGeneratedError';
|
|
4
|
+
const marker = `vercel.ai.error.${name}`;
|
|
5
|
+
const symbol = Symbol.for(marker);
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
Thrown when no LLM output was generated, e.g. because of errors.
|
|
9
|
+
*/
|
|
10
|
+
export class NoOutputGeneratedError extends AISDKError {
|
|
11
|
+
private readonly [symbol] = true; // used in isInstance
|
|
12
|
+
|
|
13
|
+
constructor({
|
|
14
|
+
message = 'No output generated.',
|
|
15
|
+
cause,
|
|
16
|
+
}: {
|
|
17
|
+
message?: string;
|
|
18
|
+
cause?: Error;
|
|
19
|
+
} = {}) {
|
|
20
|
+
super({ name, message, cause });
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
static isInstance(error: unknown): error is NoOutputGeneratedError {
|
|
24
|
+
return AISDKError.hasMarker(error, marker);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { AISDKError } from '@ai-sdk/provider';
|
|
2
|
+
import { SpeechModelResponseMetadata } from '../types/speech-model-response-metadata';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
Error that is thrown when no speech audio was generated.
|
|
6
|
+
*/
|
|
7
|
+
export class NoSpeechGeneratedError extends AISDKError {
|
|
8
|
+
readonly responses: Array<SpeechModelResponseMetadata>;
|
|
9
|
+
|
|
10
|
+
constructor(options: { responses: Array<SpeechModelResponseMetadata> }) {
|
|
11
|
+
super({
|
|
12
|
+
name: 'AI_NoSpeechGeneratedError',
|
|
13
|
+
message: 'No speech audio generated.',
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
this.responses = options.responses;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { AISDKError } from '@ai-sdk/provider';
|
|
2
|
+
|
|
3
|
+
const name = 'AI_NoSuchToolError';
|
|
4
|
+
const marker = `vercel.ai.error.${name}`;
|
|
5
|
+
const symbol = Symbol.for(marker);
|
|
6
|
+
|
|
7
|
+
export class NoSuchToolError extends AISDKError {
|
|
8
|
+
private readonly [symbol] = true; // used in isInstance
|
|
9
|
+
|
|
10
|
+
readonly toolName: string;
|
|
11
|
+
readonly availableTools: string[] | undefined;
|
|
12
|
+
|
|
13
|
+
constructor({
|
|
14
|
+
toolName,
|
|
15
|
+
availableTools = undefined,
|
|
16
|
+
message = `Model tried to call unavailable tool '${toolName}'. ${
|
|
17
|
+
availableTools === undefined
|
|
18
|
+
? 'No tools are available.'
|
|
19
|
+
: `Available tools: ${availableTools.join(', ')}.`
|
|
20
|
+
}`,
|
|
21
|
+
}: {
|
|
22
|
+
toolName: string;
|
|
23
|
+
availableTools?: string[] | undefined;
|
|
24
|
+
message?: string;
|
|
25
|
+
}) {
|
|
26
|
+
super({ name, message });
|
|
27
|
+
|
|
28
|
+
this.toolName = toolName;
|
|
29
|
+
this.availableTools = availableTools;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
static isInstance(error: unknown): error is NoSuchToolError {
|
|
33
|
+
return AISDKError.hasMarker(error, marker);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { AISDKError } from '@ai-sdk/provider';
|
|
2
|
+
import { TranscriptionModelResponseMetadata } from '../types/transcription-model-response-metadata';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
Error that is thrown when no transcript was generated.
|
|
6
|
+
*/
|
|
7
|
+
export class NoTranscriptGeneratedError extends AISDKError {
|
|
8
|
+
readonly responses: Array<TranscriptionModelResponseMetadata>;
|
|
9
|
+
|
|
10
|
+
constructor(options: {
|
|
11
|
+
responses: Array<TranscriptionModelResponseMetadata>;
|
|
12
|
+
}) {
|
|
13
|
+
super({
|
|
14
|
+
name: 'AI_NoTranscriptGeneratedError',
|
|
15
|
+
message: 'No transcript generated.',
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
this.responses = options.responses;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { AISDKError } from '@ai-sdk/provider';
|
|
2
|
+
|
|
3
|
+
const name = 'AI_ToolCallNotFoundForApprovalError';
|
|
4
|
+
const marker = `vercel.ai.error.${name}`;
|
|
5
|
+
const symbol = Symbol.for(marker);
|
|
6
|
+
|
|
7
|
+
export class ToolCallNotFoundForApprovalError extends AISDKError {
|
|
8
|
+
private readonly [symbol] = true; // used in isInstance
|
|
9
|
+
|
|
10
|
+
readonly toolCallId: string;
|
|
11
|
+
readonly approvalId: string;
|
|
12
|
+
|
|
13
|
+
constructor({
|
|
14
|
+
toolCallId,
|
|
15
|
+
approvalId,
|
|
16
|
+
}: {
|
|
17
|
+
toolCallId: string;
|
|
18
|
+
approvalId: string;
|
|
19
|
+
}) {
|
|
20
|
+
super({
|
|
21
|
+
name,
|
|
22
|
+
message: `Tool call "${toolCallId}" not found for approval request "${approvalId}".`,
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
this.toolCallId = toolCallId;
|
|
26
|
+
this.approvalId = approvalId;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
static isInstance(error: unknown): error is ToolCallNotFoundForApprovalError {
|
|
30
|
+
return AISDKError.hasMarker(error, marker);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { AISDKError, getErrorMessage } from '@ai-sdk/provider';
|
|
2
|
+
import { InvalidToolInputError } from './invalid-tool-input-error';
|
|
3
|
+
import { NoSuchToolError } from './no-such-tool-error';
|
|
4
|
+
|
|
5
|
+
const name = 'AI_ToolCallRepairError';
|
|
6
|
+
const marker = `vercel.ai.error.${name}`;
|
|
7
|
+
const symbol = Symbol.for(marker);
|
|
8
|
+
|
|
9
|
+
export class ToolCallRepairError extends AISDKError {
|
|
10
|
+
private readonly [symbol] = true; // used in isInstance
|
|
11
|
+
|
|
12
|
+
readonly originalError: NoSuchToolError | InvalidToolInputError;
|
|
13
|
+
|
|
14
|
+
constructor({
|
|
15
|
+
cause,
|
|
16
|
+
originalError,
|
|
17
|
+
message = `Error repairing tool call: ${getErrorMessage(cause)}`,
|
|
18
|
+
}: {
|
|
19
|
+
message?: string;
|
|
20
|
+
cause: unknown;
|
|
21
|
+
originalError: NoSuchToolError | InvalidToolInputError;
|
|
22
|
+
}) {
|
|
23
|
+
super({ name, message, cause });
|
|
24
|
+
this.originalError = originalError;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
static isInstance(error: unknown): error is ToolCallRepairError {
|
|
28
|
+
return AISDKError.hasMarker(error, marker);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { AISDKError } from '@ai-sdk/provider';
|
|
2
|
+
|
|
3
|
+
const name = 'AI_UIMessageStreamError';
|
|
4
|
+
const marker = `vercel.ai.error.${name}`;
|
|
5
|
+
const symbol = Symbol.for(marker);
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Error thrown when a UI message stream contains invalid or out-of-sequence chunks.
|
|
9
|
+
*
|
|
10
|
+
* This typically occurs when:
|
|
11
|
+
* - A delta chunk is received without a corresponding start chunk
|
|
12
|
+
* - An end chunk is received without a corresponding start chunk
|
|
13
|
+
* - A tool invocation is not found for the given toolCallId
|
|
14
|
+
*
|
|
15
|
+
* @see https://ai-sdk.dev/docs/reference/ai-sdk-errors/ai-ui-message-stream-error
|
|
16
|
+
*/
|
|
17
|
+
export class UIMessageStreamError extends AISDKError {
|
|
18
|
+
private readonly [symbol] = true; // used in isInstance
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* The type of chunk that caused the error (e.g., 'text-delta', 'reasoning-end').
|
|
22
|
+
*/
|
|
23
|
+
readonly chunkType: string;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* The ID associated with the failing chunk (part ID or toolCallId).
|
|
27
|
+
*/
|
|
28
|
+
readonly chunkId: string;
|
|
29
|
+
|
|
30
|
+
constructor({
|
|
31
|
+
chunkType,
|
|
32
|
+
chunkId,
|
|
33
|
+
message,
|
|
34
|
+
}: {
|
|
35
|
+
chunkType: string;
|
|
36
|
+
chunkId: string;
|
|
37
|
+
message: string;
|
|
38
|
+
}) {
|
|
39
|
+
super({ name, message });
|
|
40
|
+
|
|
41
|
+
this.chunkType = chunkType;
|
|
42
|
+
this.chunkId = chunkId;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
static isInstance(error: unknown): error is UIMessageStreamError {
|
|
46
|
+
return AISDKError.hasMarker(error, marker);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { AISDKError } from '@ai-sdk/provider';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
Error that is thrown when a model with an unsupported version is used.
|
|
5
|
+
*/
|
|
6
|
+
export class UnsupportedModelVersionError extends AISDKError {
|
|
7
|
+
readonly version: string;
|
|
8
|
+
readonly provider: string;
|
|
9
|
+
readonly modelId: string;
|
|
10
|
+
|
|
11
|
+
constructor(options: { version: string; provider: string; modelId: string }) {
|
|
12
|
+
super({
|
|
13
|
+
name: 'AI_UnsupportedModelVersionError',
|
|
14
|
+
message:
|
|
15
|
+
`Unsupported model version ${options.version} for provider "${options.provider}" and model "${options.modelId}". ` +
|
|
16
|
+
`AI SDK 5 only supports models that implement specification version "v2".`,
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
this.version = options.version;
|
|
20
|
+
this.provider = options.provider;
|
|
21
|
+
this.modelId = options.modelId;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { expect } from 'vitest';
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
FinishReason,
|
|
5
|
+
LanguageModelResponseMetadata,
|
|
6
|
+
LanguageModelUsage,
|
|
7
|
+
} from '../types';
|
|
8
|
+
import { NoObjectGeneratedError } from './no-object-generated-error';
|
|
9
|
+
|
|
10
|
+
export function verifyNoObjectGeneratedError(
|
|
11
|
+
error: unknown,
|
|
12
|
+
expected: {
|
|
13
|
+
message: string;
|
|
14
|
+
response: LanguageModelResponseMetadata & {
|
|
15
|
+
body?: string;
|
|
16
|
+
};
|
|
17
|
+
usage: LanguageModelUsage;
|
|
18
|
+
finishReason: FinishReason;
|
|
19
|
+
},
|
|
20
|
+
) {
|
|
21
|
+
expect(NoObjectGeneratedError.isInstance(error)).toBeTruthy();
|
|
22
|
+
const noObjectGeneratedError = error as NoObjectGeneratedError;
|
|
23
|
+
expect(noObjectGeneratedError.message).toEqual(expected.message);
|
|
24
|
+
expect(noObjectGeneratedError.response).toEqual(expected.response);
|
|
25
|
+
expect(noObjectGeneratedError.usage).toEqual(expected.usage);
|
|
26
|
+
expect(noObjectGeneratedError.finishReason).toEqual(expected.finishReason);
|
|
27
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { GeneratedFile } from '../generate-text';
|
|
2
|
+
import { ImageModelProviderMetadata } from '../types/image-model';
|
|
3
|
+
import { ImageModelResponseMetadata } from '../types/image-model-response-metadata';
|
|
4
|
+
import { ImageModelUsage } from '../types/usage';
|
|
5
|
+
import { Warning } from '../types/warning';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
The result of a `generateImage` call.
|
|
9
|
+
It contains the images and additional information.
|
|
10
|
+
*/
|
|
11
|
+
export interface GenerateImageResult {
|
|
12
|
+
/**
|
|
13
|
+
The first image that was generated.
|
|
14
|
+
*/
|
|
15
|
+
readonly image: GeneratedFile;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
The images that were generated.
|
|
19
|
+
*/
|
|
20
|
+
readonly images: Array<GeneratedFile>;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
Warnings for the call, e.g. unsupported settings.
|
|
24
|
+
*/
|
|
25
|
+
readonly warnings: Array<Warning>;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
Response metadata from the provider. There may be multiple responses if we made multiple calls to the model.
|
|
29
|
+
*/
|
|
30
|
+
readonly responses: Array<ImageModelResponseMetadata>;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Provider-specific metadata. They are passed through from the provider to the AI SDK and enable provider-specific
|
|
34
|
+
* results that can be fully encapsulated in the provider.
|
|
35
|
+
*/
|
|
36
|
+
readonly providerMetadata: ImageModelProviderMetadata;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
Combined token usage across all underlying provider calls for this image generation.
|
|
40
|
+
*/
|
|
41
|
+
readonly usage: ImageModelUsage;
|
|
42
|
+
}
|