ai 6.0.283 → 6.0.285

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.
@@ -164,7 +164,7 @@ function detectMediaType({
164
164
  var import_provider_utils2 = require("@ai-sdk/provider-utils");
165
165
 
166
166
  // src/version.ts
167
- var VERSION = true ? "6.0.283" : "0.0.0-test";
167
+ var VERSION = true ? "6.0.285" : "0.0.0-test";
168
168
 
169
169
  // src/util/download/download.ts
170
170
  var download = async ({
@@ -144,7 +144,7 @@ import {
144
144
  } from "@ai-sdk/provider-utils";
145
145
 
146
146
  // src/version.ts
147
- var VERSION = true ? "6.0.283" : "0.0.0-test";
147
+ var VERSION = true ? "6.0.285" : "0.0.0-test";
148
148
 
149
149
  // src/util/download/download.ts
150
150
  var download = async ({
@@ -1,40 +1,134 @@
1
1
  ---
2
2
  title: AI SDK Errors
3
- description: Troubleshooting information for common AI SDK errors.
3
+ description: Reference for AI SDK error classes and typed error handling.
4
4
  collapsed: true
5
5
  ---
6
6
 
7
7
  # AI SDK Errors
8
8
 
9
- - [AI_APICallError](/docs/reference/ai-sdk-errors/ai-api-call-error)
10
- - [AI_DownloadError](/docs/reference/ai-sdk-errors/ai-download-error)
11
- - [AI_EmptyResponseBodyError](/docs/reference/ai-sdk-errors/ai-empty-response-body-error)
12
- - [AI_InvalidArgumentError](/docs/reference/ai-sdk-errors/ai-invalid-argument-error)
13
- - [AI_InvalidDataContentError](/docs/reference/ai-sdk-errors/ai-invalid-data-content-error)
14
- - [AI_InvalidMessageRoleError](/docs/reference/ai-sdk-errors/ai-invalid-message-role-error)
15
- - [AI_InvalidPromptError](/docs/reference/ai-sdk-errors/ai-invalid-prompt-error)
16
- - [AI_InvalidResponseDataError](/docs/reference/ai-sdk-errors/ai-invalid-response-data-error)
17
- - [AI_InvalidToolApprovalError](/docs/reference/ai-sdk-errors/ai-invalid-tool-approval-error)
18
- - [AI_InvalidToolInputError](/docs/reference/ai-sdk-errors/ai-invalid-tool-input-error)
19
- - [AI_JSONParseError](/docs/reference/ai-sdk-errors/ai-json-parse-error)
20
- - [AI_LoadAPIKeyError](/docs/reference/ai-sdk-errors/ai-load-api-key-error)
21
- - [AI_LoadSettingError](/docs/reference/ai-sdk-errors/ai-load-setting-error)
22
- - [AI_MessageConversionError](/docs/reference/ai-sdk-errors/ai-message-conversion-error)
23
- - [AI_NoSpeechGeneratedError](/docs/reference/ai-sdk-errors/ai-no-speech-generated-error)
24
- - [AI_NoContentGeneratedError](/docs/reference/ai-sdk-errors/ai-no-content-generated-error)
25
- - [AI_NoImageGeneratedError](/docs/reference/ai-sdk-errors/ai-no-image-generated-error)
26
- - [AI_NoTranscriptGeneratedError](/docs/reference/ai-sdk-errors/ai-no-transcript-generated-error)
27
- - [AI_NoVideoGeneratedError](/docs/reference/ai-sdk-errors/ai-no-video-generated-error)
28
- - [AI_NoObjectGeneratedError](/docs/reference/ai-sdk-errors/ai-no-object-generated-error)
29
- - [AI_NoOutputGeneratedError](/docs/reference/ai-sdk-errors/ai-no-output-generated-error)
30
- - [AI_NoSuchModelError](/docs/reference/ai-sdk-errors/ai-no-such-model-error)
31
- - [AI_NoSuchProviderError](/docs/reference/ai-sdk-errors/ai-no-such-provider-error)
32
- - [AI_NoSuchToolError](/docs/reference/ai-sdk-errors/ai-no-such-tool-error)
33
- - [AI_RetryError](/docs/reference/ai-sdk-errors/ai-retry-error)
34
- - [AI_ToolCallNotFoundForApprovalError](/docs/reference/ai-sdk-errors/ai-tool-call-not-found-for-approval-error)
35
- - [AI_ToolCallRepairError](/docs/reference/ai-sdk-errors/ai-tool-call-repair-error)
36
- - [AI_ToolChoiceViolationError](/docs/reference/ai-sdk-errors/ai-tool-choice-violation-error)
37
- - [AI_TooManyEmbeddingValuesForCallError](/docs/reference/ai-sdk-errors/ai-too-many-embedding-values-for-call-error)
38
- - [AI_TypeValidationError](/docs/reference/ai-sdk-errors/ai-type-validation-error)
39
- - [AI_UIMessageStreamError](/docs/reference/ai-sdk-errors/ai-ui-message-stream-error)
40
- - [AI_UnsupportedFunctionalityError](/docs/reference/ai-sdk-errors/ai-unsupported-functionality-error)
9
+ The AI SDK exposes typed errors so applications can handle expected failure
10
+ modes without matching error message strings.
11
+
12
+ ## Importing Errors
13
+
14
+ The application package is named `ai`, not `@ai-sdk/ai`. It re-exports common
15
+ provider-level errors from `@ai-sdk/provider` together with the higher-level
16
+ errors raised by AI SDK Core:
17
+
18
+ ```typescript
19
+ import { APICallError, NoObjectGeneratedError } from 'ai';
20
+ ```
21
+
22
+ Provider implementations that depend directly on `@ai-sdk/provider` can import
23
+ its provider-level errors from that package instead:
24
+
25
+ ```typescript
26
+ import { APICallError, InvalidResponseDataError } from '@ai-sdk/provider';
27
+ ```
28
+
29
+ ## Migrating to Typed Error Handling
30
+
31
+ Replace message matching or an unconditionally generic `catch` block with the
32
+ most specific static `isInstance` guard available. Check `AISDKError` last when
33
+ you need a fallback for any AI SDK error:
34
+
35
+ ```typescript
36
+ import { AISDKError, APICallError, generateText } from 'ai';
37
+
38
+ try {
39
+ await generateText({
40
+ model,
41
+ prompt: 'Write a vegetarian lasagna recipe for 4 people.',
42
+ });
43
+ } catch (error) {
44
+ if (APICallError.isInstance(error)) {
45
+ console.error('Provider request failed:', error.statusCode);
46
+ return;
47
+ }
48
+
49
+ if (AISDKError.isInstance(error)) {
50
+ console.error('AI SDK error:', error.name);
51
+ return;
52
+ }
53
+
54
+ throw error;
55
+ }
56
+ ```
57
+
58
+ Prefer `ErrorClass.isInstance(error)` over `error instanceof ErrorClass` when
59
+ the class provides it. The static guard also works when multiple AI SDK package
60
+ versions are loaded.
61
+
62
+ ## Common Failure Modes
63
+
64
+ | Failure mode | Error to check |
65
+ | -------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
66
+ | A provider request fails because of a network error or non-success response | [`APICallError`](/docs/reference/ai-sdk-errors/ai-api-call-error) |
67
+ | Automatic retries fail after multiple attempts | [`RetryError`](/docs/reference/ai-sdk-errors/ai-retry-error) |
68
+ | A structured output cannot be parsed or validated | [`NoObjectGeneratedError`](/docs/reference/ai-sdk-errors/ai-no-object-generated-error); inspect its `cause` for [`JSONParseError`](/docs/reference/ai-sdk-errors/ai-json-parse-error) or [`TypeValidationError`](/docs/reference/ai-sdk-errors/ai-type-validation-error) |
69
+ | A generation call returns no usable output | [`NoOutputGeneratedError`](/docs/reference/ai-sdk-errors/ai-no-output-generated-error) or the modality-specific `No*GeneratedError` |
70
+ | A model calls a missing tool or supplies invalid tool input | [`NoSuchToolError`](/docs/reference/ai-sdk-errors/ai-no-such-tool-error) or [`InvalidToolInputError`](/docs/reference/ai-sdk-errors/ai-invalid-tool-input-error) |
71
+ | Tool-call repair fails | [`ToolCallRepairError`](/docs/reference/ai-sdk-errors/ai-tool-call-repair-error) |
72
+ | A response violates an enforced `toolChoice` | [`ToolChoiceViolationError`](/docs/reference/ai-sdk-errors/ai-tool-choice-violation-error) |
73
+ | Message history contains unresolved tool calls or invalid approvals | [`MissingToolResultsError`](/docs/troubleshooting/missing-tool-results-error), [`InvalidToolApprovalError`](/docs/reference/ai-sdk-errors/ai-invalid-tool-approval-error), or [`InvalidToolApprovalSignatureError`](/docs/reference/ai-sdk-errors/ai-invalid-tool-approval-signature-error) |
74
+ | A provider or model cannot be resolved | [`NoSuchProviderError`](/docs/reference/ai-sdk-errors/ai-no-such-provider-error) or [`NoSuchModelError`](/docs/reference/ai-sdk-errors/ai-no-such-model-error) |
75
+ | A provider response is empty, malformed, or invalid | [`EmptyResponseBodyError`](/docs/reference/ai-sdk-errors/ai-empty-response-body-error), [`JSONParseError`](/docs/reference/ai-sdk-errors/ai-json-parse-error), or [`InvalidResponseDataError`](/docs/reference/ai-sdk-errors/ai-invalid-response-data-error) |
76
+ | The requested model or provider does not support a capability or specification version | [`UnsupportedFunctionalityError`](/docs/reference/ai-sdk-errors/ai-unsupported-functionality-error) or [`UnsupportedModelVersionError`](/docs/troubleshooting/unsupported-model-version) |
77
+ | UI messages cannot be converted or a UI message stream is invalid | [`MessageConversionError`](/docs/reference/ai-sdk-errors/ai-message-conversion-error) or [`UIMessageStreamError`](/docs/reference/ai-sdk-errors/ai-ui-message-stream-error) |
78
+
79
+ ## Error Reference
80
+
81
+ ### Base Error
82
+
83
+ - `AISDKError`: Base class and broad type guard for AI SDK errors.
84
+
85
+ ### Provider Requests and Responses
86
+
87
+ - [`APICallError`](/docs/reference/ai-sdk-errors/ai-api-call-error)
88
+ - [`DownloadError`](/docs/reference/ai-sdk-errors/ai-download-error)
89
+ - [`EmptyResponseBodyError`](/docs/reference/ai-sdk-errors/ai-empty-response-body-error)
90
+ - [`InvalidPromptError`](/docs/reference/ai-sdk-errors/ai-invalid-prompt-error)
91
+ - [`InvalidResponseDataError`](/docs/reference/ai-sdk-errors/ai-invalid-response-data-error)
92
+ - [`JSONParseError`](/docs/reference/ai-sdk-errors/ai-json-parse-error)
93
+ - [`LoadAPIKeyError`](/docs/reference/ai-sdk-errors/ai-load-api-key-error)
94
+ - [`LoadSettingError`](/docs/reference/ai-sdk-errors/ai-load-setting-error)
95
+ - [`NoContentGeneratedError`](/docs/reference/ai-sdk-errors/ai-no-content-generated-error)
96
+ - [`NoSuchModelError`](/docs/reference/ai-sdk-errors/ai-no-such-model-error)
97
+ - [`RetryError`](/docs/reference/ai-sdk-errors/ai-retry-error)
98
+ - [`TooManyEmbeddingValuesForCallError`](/docs/reference/ai-sdk-errors/ai-too-many-embedding-values-for-call-error)
99
+ - [`TypeValidationError`](/docs/reference/ai-sdk-errors/ai-type-validation-error)
100
+ - [`UnsupportedFunctionalityError`](/docs/reference/ai-sdk-errors/ai-unsupported-functionality-error)
101
+
102
+ ### Inputs and Message Streams
103
+
104
+ - [`InvalidArgumentError`](/docs/reference/ai-sdk-errors/ai-invalid-argument-error)
105
+ - [`InvalidDataContentError`](/docs/reference/ai-sdk-errors/ai-invalid-data-content-error)
106
+ - [`InvalidMessageRoleError`](/docs/reference/ai-sdk-errors/ai-invalid-message-role-error)
107
+ - `InvalidStreamPartError`
108
+ - [`MessageConversionError`](/docs/reference/ai-sdk-errors/ai-message-conversion-error)
109
+ - [`UIMessageStreamError`](/docs/reference/ai-sdk-errors/ai-ui-message-stream-error)
110
+
111
+ ### Generated Output
112
+
113
+ - [`NoImageGeneratedError`](/docs/reference/ai-sdk-errors/ai-no-image-generated-error)
114
+ - [`NoObjectGeneratedError`](/docs/reference/ai-sdk-errors/ai-no-object-generated-error)
115
+ - [`NoOutputGeneratedError`](/docs/reference/ai-sdk-errors/ai-no-output-generated-error)
116
+ - [`NoSpeechGeneratedError`](/docs/reference/ai-sdk-errors/ai-no-speech-generated-error)
117
+ - [`NoTranscriptGeneratedError`](/docs/reference/ai-sdk-errors/ai-no-transcript-generated-error)
118
+ - [`NoVideoGeneratedError`](/docs/reference/ai-sdk-errors/ai-no-video-generated-error)
119
+
120
+ ### Providers and Model Compatibility
121
+
122
+ - [`NoSuchProviderError`](/docs/reference/ai-sdk-errors/ai-no-such-provider-error)
123
+ - [`UnsupportedModelVersionError`](/docs/troubleshooting/unsupported-model-version)
124
+
125
+ ### Tools and Approvals
126
+
127
+ - [`InvalidToolApprovalError`](/docs/reference/ai-sdk-errors/ai-invalid-tool-approval-error)
128
+ - [`InvalidToolApprovalSignatureError`](/docs/reference/ai-sdk-errors/ai-invalid-tool-approval-signature-error)
129
+ - [`InvalidToolInputError`](/docs/reference/ai-sdk-errors/ai-invalid-tool-input-error)
130
+ - [`MissingToolResultsError`](/docs/troubleshooting/missing-tool-results-error)
131
+ - [`NoSuchToolError`](/docs/reference/ai-sdk-errors/ai-no-such-tool-error)
132
+ - [`ToolCallNotFoundForApprovalError`](/docs/reference/ai-sdk-errors/ai-tool-call-not-found-for-approval-error)
133
+ - [`ToolCallRepairError`](/docs/reference/ai-sdk-errors/ai-tool-call-repair-error)
134
+ - [`ToolChoiceViolationError`](/docs/reference/ai-sdk-errors/ai-tool-choice-violation-error)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ai",
3
- "version": "6.0.283",
3
+ "version": "6.0.285",
4
4
  "description": "AI SDK by Vercel - build apps like ChatGPT, Claude, Gemini, and more with a single interface for any model using the Vercel AI Gateway or go direct to OpenAI, Anthropic, Google, or any other model provider.",
5
5
  "license": "Apache-2.0",
6
6
  "sideEffects": false,
@@ -45,7 +45,7 @@
45
45
  },
46
46
  "dependencies": {
47
47
  "@opentelemetry/api": "^1.9.0",
48
- "@ai-sdk/gateway": "3.0.194",
48
+ "@ai-sdk/gateway": "3.0.196",
49
49
  "@ai-sdk/provider": "3.0.16",
50
50
  "@ai-sdk/provider-utils": "4.0.51"
51
51
  },
@@ -2,6 +2,7 @@ import {
2
2
  withUserAgentSuffix,
3
3
  type ProviderOptions,
4
4
  } from '@ai-sdk/provider-utils';
5
+ import { InvalidResponseDataError } from '../error';
5
6
  import { logWarnings } from '../logger/log-warnings';
6
7
  import { resolveEmbeddingModel } from '../model/resolve-model';
7
8
  import { assembleOperationName } from '../telemetry/assemble-operation-name';
@@ -159,6 +160,13 @@ export async function embed({
159
160
  }),
160
161
  );
161
162
 
163
+ if (embedding == null) {
164
+ throw new InvalidResponseDataError({
165
+ data: modelResponse.embeddings,
166
+ message: 'No embedding generated.',
167
+ });
168
+ }
169
+
162
170
  return {
163
171
  embedding,
164
172
  usage,
@@ -1,4 +1,9 @@
1
- import type { JSONObject, RerankingModelV3CallOptions } from '@ai-sdk/provider';
1
+ import {
2
+ InvalidResponseDataError,
3
+ type JSONObject,
4
+ type RerankingModelV3,
5
+ type RerankingModelV3CallOptions,
6
+ } from '@ai-sdk/provider';
2
7
  import type { ProviderOptions } from '@ai-sdk/provider-utils';
3
8
  import { prepareRetries } from '../../src/util/prepare-retries';
4
9
  import { assembleOperationName } from '../telemetry/assemble-operation-name';
@@ -192,6 +197,8 @@ export async function rerank<VALUE extends JSONObject | string>({
192
197
  }),
193
198
  );
194
199
 
200
+ validateRankingIndices({ ranking, documents });
201
+
195
202
  logWarnings({
196
203
  warnings: warnings ?? [],
197
204
  provider: model.provider,
@@ -218,6 +225,23 @@ export async function rerank<VALUE extends JSONObject | string>({
218
225
  });
219
226
  }
220
227
 
228
+ function validateRankingIndices<VALUE>({
229
+ ranking,
230
+ documents,
231
+ }: {
232
+ ranking: Awaited<ReturnType<RerankingModelV3['doRerank']>>['ranking'];
233
+ documents: Array<VALUE>;
234
+ }) {
235
+ for (const { index } of ranking) {
236
+ if (!Number.isInteger(index) || index < 0 || index >= documents.length) {
237
+ throw new InvalidResponseDataError({
238
+ data: ranking,
239
+ message: `Invalid ranking index ${index}. Expected an integer between 0 and ${documents.length - 1}.`,
240
+ });
241
+ }
242
+ }
243
+ }
244
+
221
245
  class DefaultRerankResult<VALUE> implements RerankResult<VALUE> {
222
246
  readonly originalDocuments: RerankResult<VALUE>['originalDocuments'];
223
247
  readonly ranking: RerankResult<VALUE>['ranking'];