ai 6.0.0-beta.68 → 6.0.0-beta.70

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/dist/index.js CHANGED
@@ -876,7 +876,7 @@ function detectMediaType({
876
876
  var import_provider_utils2 = require("@ai-sdk/provider-utils");
877
877
 
878
878
  // src/version.ts
879
- var VERSION = true ? "6.0.0-beta.68" : "0.0.0-test";
879
+ var VERSION = true ? "6.0.0-beta.70" : "0.0.0-test";
880
880
 
881
881
  // src/util/download/download.ts
882
882
  var download = async ({ url }) => {
@@ -7291,13 +7291,13 @@ var DefaultEmbedResult = class {
7291
7291
  var import_provider_utils21 = require("@ai-sdk/provider-utils");
7292
7292
 
7293
7293
  // src/util/split-array.ts
7294
- function splitArray(array, chunkSize) {
7294
+ function splitArray(array2, chunkSize) {
7295
7295
  if (chunkSize <= 0) {
7296
7296
  throw new Error("chunkSize must be greater than 0");
7297
7297
  }
7298
7298
  const result = [];
7299
- for (let i = 0; i < array.length; i += chunkSize) {
7300
- result.push(array.slice(i, i + chunkSize));
7299
+ for (let i = 0; i < array2.length; i += chunkSize) {
7300
+ result.push(array2.slice(i, i + chunkSize));
7301
7301
  }
7302
7302
  return result;
7303
7303
  }
@@ -7808,9 +7808,9 @@ var arrayOutputStrategy = (schema) => {
7808
7808
  transform(chunk, controller) {
7809
7809
  switch (chunk.type) {
7810
7810
  case "object": {
7811
- const array = chunk.object;
7812
- for (; publishedElements < array.length; publishedElements++) {
7813
- controller.enqueue(array[publishedElements]);
7811
+ const array2 = chunk.object;
7812
+ for (; publishedElements < array2.length; publishedElements++) {
7813
+ controller.enqueue(array2[publishedElements]);
7814
7814
  }
7815
7815
  break;
7816
7816
  }
@@ -9119,18 +9119,21 @@ var DefaultSpeechResult = class {
9119
9119
  // src/generate-text/output.ts
9120
9120
  var output_exports = {};
9121
9121
  __export(output_exports, {
9122
+ array: () => array,
9123
+ choice: () => choice,
9122
9124
  object: () => object,
9123
9125
  text: () => text
9124
9126
  });
9127
+ var import_provider28 = require("@ai-sdk/provider");
9125
9128
  var import_provider_utils29 = require("@ai-sdk/provider-utils");
9126
9129
  var text = () => ({
9127
9130
  type: "text",
9128
9131
  responseFormat: Promise.resolve({ type: "text" }),
9129
- async parsePartial({ text: text2 }) {
9130
- return { partial: text2 };
9131
- },
9132
9132
  async parseOutput({ text: text2 }) {
9133
9133
  return text2;
9134
+ },
9135
+ async parsePartial({ text: text2 }) {
9136
+ return { partial: text2 };
9134
9137
  }
9135
9138
  });
9136
9139
  var object = ({
@@ -9143,24 +9146,174 @@ var object = ({
9143
9146
  type: "json",
9144
9147
  schema: jsonSchema3
9145
9148
  })),
9149
+ async parseOutput({ text: text2 }, context) {
9150
+ const parseResult = await (0, import_provider_utils29.safeParseJSON)({ text: text2 });
9151
+ if (!parseResult.success) {
9152
+ throw new NoObjectGeneratedError({
9153
+ message: "No object generated: could not parse the response.",
9154
+ cause: parseResult.error,
9155
+ text: text2,
9156
+ response: context.response,
9157
+ usage: context.usage,
9158
+ finishReason: context.finishReason
9159
+ });
9160
+ }
9161
+ const validationResult = await (0, import_provider_utils29.safeValidateTypes)({
9162
+ value: parseResult.value,
9163
+ schema
9164
+ });
9165
+ if (!validationResult.success) {
9166
+ throw new NoObjectGeneratedError({
9167
+ message: "No object generated: response did not match schema.",
9168
+ cause: validationResult.error,
9169
+ text: text2,
9170
+ response: context.response,
9171
+ usage: context.usage,
9172
+ finishReason: context.finishReason
9173
+ });
9174
+ }
9175
+ return validationResult.value;
9176
+ },
9146
9177
  async parsePartial({ text: text2 }) {
9147
9178
  const result = await parsePartialJson(text2);
9148
9179
  switch (result.state) {
9149
9180
  case "failed-parse":
9150
- case "undefined-input":
9181
+ case "undefined-input": {
9151
9182
  return void 0;
9183
+ }
9152
9184
  case "repaired-parse":
9153
- case "successful-parse":
9185
+ case "successful-parse": {
9154
9186
  return {
9155
9187
  // Note: currently no validation of partial results:
9156
9188
  partial: result.value
9157
9189
  };
9190
+ }
9158
9191
  default: {
9159
9192
  const _exhaustiveCheck = result.state;
9160
9193
  throw new Error(`Unsupported parse state: ${_exhaustiveCheck}`);
9161
9194
  }
9162
9195
  }
9196
+ }
9197
+ };
9198
+ };
9199
+ var array = ({
9200
+ element: inputElementSchema
9201
+ }) => {
9202
+ const elementSchema = (0, import_provider_utils29.asSchema)(inputElementSchema);
9203
+ return {
9204
+ type: "object",
9205
+ // JSON schema that describes an array of elements:
9206
+ responseFormat: (0, import_provider_utils29.resolve)(elementSchema.jsonSchema).then((jsonSchema3) => {
9207
+ const { $schema, ...itemSchema } = jsonSchema3;
9208
+ return {
9209
+ type: "json",
9210
+ schema: {
9211
+ $schema: "http://json-schema.org/draft-07/schema#",
9212
+ type: "object",
9213
+ properties: {
9214
+ elements: { type: "array", items: itemSchema }
9215
+ },
9216
+ required: ["elements"],
9217
+ additionalProperties: false
9218
+ }
9219
+ };
9220
+ }),
9221
+ async parseOutput({ text: text2 }, context) {
9222
+ const parseResult = await (0, import_provider_utils29.safeParseJSON)({ text: text2 });
9223
+ if (!parseResult.success) {
9224
+ throw new NoObjectGeneratedError({
9225
+ message: "No object generated: could not parse the response.",
9226
+ cause: parseResult.error,
9227
+ text: text2,
9228
+ response: context.response,
9229
+ usage: context.usage,
9230
+ finishReason: context.finishReason
9231
+ });
9232
+ }
9233
+ const outerValue = parseResult.value;
9234
+ if (outerValue == null || typeof outerValue !== "object" || !("elements" in outerValue) || !Array.isArray(outerValue.elements)) {
9235
+ throw new NoObjectGeneratedError({
9236
+ message: "No object generated: response did not match schema.",
9237
+ cause: new import_provider28.TypeValidationError({
9238
+ value: outerValue,
9239
+ cause: "response must be an object with an elements array"
9240
+ }),
9241
+ text: text2,
9242
+ response: context.response,
9243
+ usage: context.usage,
9244
+ finishReason: context.finishReason
9245
+ });
9246
+ }
9247
+ for (const element of outerValue.elements) {
9248
+ const validationResult = await (0, import_provider_utils29.safeValidateTypes)({
9249
+ value: element,
9250
+ schema: elementSchema
9251
+ });
9252
+ if (!validationResult.success) {
9253
+ throw new NoObjectGeneratedError({
9254
+ message: "No object generated: response did not match schema.",
9255
+ cause: validationResult.error,
9256
+ text: text2,
9257
+ response: context.response,
9258
+ usage: context.usage,
9259
+ finishReason: context.finishReason
9260
+ });
9261
+ }
9262
+ }
9263
+ return outerValue.elements;
9163
9264
  },
9265
+ async parsePartial({ text: text2 }) {
9266
+ const result = await parsePartialJson(text2);
9267
+ switch (result.state) {
9268
+ case "failed-parse":
9269
+ case "undefined-input": {
9270
+ return void 0;
9271
+ }
9272
+ case "repaired-parse":
9273
+ case "successful-parse": {
9274
+ const outerValue = result.value;
9275
+ if (outerValue == null || typeof outerValue !== "object" || !("elements" in outerValue) || !Array.isArray(outerValue.elements)) {
9276
+ return void 0;
9277
+ }
9278
+ const rawElements = result.state === "repaired-parse" && outerValue.elements.length > 0 ? outerValue.elements.slice(0, -1) : outerValue.elements;
9279
+ const parsedElements = [];
9280
+ for (const rawElement of rawElements) {
9281
+ const validationResult = await (0, import_provider_utils29.safeValidateTypes)({
9282
+ value: rawElement,
9283
+ schema: elementSchema
9284
+ });
9285
+ if (validationResult.success) {
9286
+ parsedElements.push(validationResult.value);
9287
+ }
9288
+ }
9289
+ return { partial: parsedElements };
9290
+ }
9291
+ default: {
9292
+ const _exhaustiveCheck = result.state;
9293
+ throw new Error(`Unsupported parse state: ${_exhaustiveCheck}`);
9294
+ }
9295
+ }
9296
+ }
9297
+ };
9298
+ };
9299
+ var choice = ({
9300
+ options: choiceOptions
9301
+ }) => {
9302
+ return {
9303
+ type: "object",
9304
+ // JSON schema that describes an enumeration:
9305
+ responseFormat: Promise.resolve({
9306
+ type: "json",
9307
+ schema: {
9308
+ $schema: "http://json-schema.org/draft-07/schema#",
9309
+ type: "object",
9310
+ properties: {
9311
+ result: { type: "string", enum: choiceOptions }
9312
+ },
9313
+ required: ["result"],
9314
+ additionalProperties: false
9315
+ }
9316
+ }),
9164
9317
  async parseOutput({ text: text2 }, context) {
9165
9318
  const parseResult = await (0, import_provider_utils29.safeParseJSON)({ text: text2 });
9166
9319
  if (!parseResult.success) {
@@ -9173,21 +9326,49 @@ var object = ({
9173
9326
  finishReason: context.finishReason
9174
9327
  });
9175
9328
  }
9176
- const validationResult = await (0, import_provider_utils29.safeValidateTypes)({
9177
- value: parseResult.value,
9178
- schema
9179
- });
9180
- if (!validationResult.success) {
9329
+ const outerValue = parseResult.value;
9330
+ if (outerValue == null || typeof outerValue !== "object" || !("result" in outerValue) || typeof outerValue.result !== "string" || !choiceOptions.includes(outerValue.result)) {
9181
9331
  throw new NoObjectGeneratedError({
9182
9332
  message: "No object generated: response did not match schema.",
9183
- cause: validationResult.error,
9333
+ cause: new import_provider28.TypeValidationError({
9334
+ value: outerValue,
9335
+ cause: "response must be an object that contains a choice value."
9336
+ }),
9184
9337
  text: text2,
9185
9338
  response: context.response,
9186
9339
  usage: context.usage,
9187
9340
  finishReason: context.finishReason
9188
9341
  });
9189
9342
  }
9190
- return validationResult.value;
9343
+ return outerValue.result;
9344
+ },
9345
+ async parsePartial({ text: text2 }) {
9346
+ const result = await parsePartialJson(text2);
9347
+ switch (result.state) {
9348
+ case "failed-parse":
9349
+ case "undefined-input": {
9350
+ return void 0;
9351
+ }
9352
+ case "repaired-parse":
9353
+ case "successful-parse": {
9354
+ const outerValue = result.value;
9355
+ if (outerValue == null || typeof outerValue !== "object" || !("result" in outerValue) || typeof outerValue.result !== "string") {
9356
+ return void 0;
9357
+ }
9358
+ const potentialMatches = choiceOptions.filter(
9359
+ (choiceOption) => choiceOption.startsWith(outerValue.result)
9360
+ );
9361
+ if (result.state === "successful-parse") {
9362
+ return potentialMatches.includes(outerValue.result) ? { partial: outerValue.result } : void 0;
9363
+ } else {
9364
+ return potentialMatches.length === 1 ? { partial: potentialMatches[0] } : void 0;
9365
+ }
9366
+ }
9367
+ default: {
9368
+ const _exhaustiveCheck = result.state;
9369
+ throw new Error(`Unsupported parse state: ${_exhaustiveCheck}`);
9370
+ }
9371
+ }
9191
9372
  }
9192
9373
  };
9193
9374
  };
@@ -9273,7 +9454,7 @@ function pruneMessages({
9273
9454
 
9274
9455
  // src/generate-text/smooth-stream.ts
9275
9456
  var import_provider_utils30 = require("@ai-sdk/provider-utils");
9276
- var import_provider28 = require("@ai-sdk/provider");
9457
+ var import_provider29 = require("@ai-sdk/provider");
9277
9458
  var CHUNKING_REGEXPS = {
9278
9459
  word: /\S+\s+/m,
9279
9460
  line: /\n+/m
@@ -9303,7 +9484,7 @@ function smoothStream({
9303
9484
  } else {
9304
9485
  const chunkingRegex = typeof chunking === "string" ? CHUNKING_REGEXPS[chunking] : chunking;
9305
9486
  if (chunkingRegex == null) {
9306
- throw new import_provider28.InvalidArgumentError({
9487
+ throw new import_provider29.InvalidArgumentError({
9307
9488
  argument: "chunking",
9308
9489
  message: `Chunking must be "word" or "line" or a RegExp. Received: ${chunking}`
9309
9490
  });
@@ -9675,7 +9856,7 @@ function wrapProvider({
9675
9856
  }
9676
9857
 
9677
9858
  // src/registry/custom-provider.ts
9678
- var import_provider29 = require("@ai-sdk/provider");
9859
+ var import_provider30 = require("@ai-sdk/provider");
9679
9860
  function customProvider({
9680
9861
  languageModels,
9681
9862
  textEmbeddingModels,
@@ -9692,7 +9873,7 @@ function customProvider({
9692
9873
  if (fallbackProvider) {
9693
9874
  return fallbackProvider.languageModel(modelId);
9694
9875
  }
9695
- throw new import_provider29.NoSuchModelError({ modelId, modelType: "languageModel" });
9876
+ throw new import_provider30.NoSuchModelError({ modelId, modelType: "languageModel" });
9696
9877
  },
9697
9878
  textEmbeddingModel(modelId) {
9698
9879
  if (textEmbeddingModels != null && modelId in textEmbeddingModels) {
@@ -9701,7 +9882,7 @@ function customProvider({
9701
9882
  if (fallbackProvider) {
9702
9883
  return fallbackProvider.textEmbeddingModel(modelId);
9703
9884
  }
9704
- throw new import_provider29.NoSuchModelError({ modelId, modelType: "textEmbeddingModel" });
9885
+ throw new import_provider30.NoSuchModelError({ modelId, modelType: "textEmbeddingModel" });
9705
9886
  },
9706
9887
  imageModel(modelId) {
9707
9888
  if (imageModels != null && modelId in imageModels) {
@@ -9710,7 +9891,7 @@ function customProvider({
9710
9891
  if (fallbackProvider == null ? void 0 : fallbackProvider.imageModel) {
9711
9892
  return fallbackProvider.imageModel(modelId);
9712
9893
  }
9713
- throw new import_provider29.NoSuchModelError({ modelId, modelType: "imageModel" });
9894
+ throw new import_provider30.NoSuchModelError({ modelId, modelType: "imageModel" });
9714
9895
  },
9715
9896
  transcriptionModel(modelId) {
9716
9897
  if (transcriptionModels != null && modelId in transcriptionModels) {
@@ -9719,7 +9900,7 @@ function customProvider({
9719
9900
  if (fallbackProvider == null ? void 0 : fallbackProvider.transcriptionModel) {
9720
9901
  return fallbackProvider.transcriptionModel(modelId);
9721
9902
  }
9722
- throw new import_provider29.NoSuchModelError({ modelId, modelType: "transcriptionModel" });
9903
+ throw new import_provider30.NoSuchModelError({ modelId, modelType: "transcriptionModel" });
9723
9904
  },
9724
9905
  speechModel(modelId) {
9725
9906
  if (speechModels != null && modelId in speechModels) {
@@ -9728,19 +9909,19 @@ function customProvider({
9728
9909
  if (fallbackProvider == null ? void 0 : fallbackProvider.speechModel) {
9729
9910
  return fallbackProvider.speechModel(modelId);
9730
9911
  }
9731
- throw new import_provider29.NoSuchModelError({ modelId, modelType: "speechModel" });
9912
+ throw new import_provider30.NoSuchModelError({ modelId, modelType: "speechModel" });
9732
9913
  }
9733
9914
  };
9734
9915
  }
9735
9916
  var experimental_customProvider = customProvider;
9736
9917
 
9737
9918
  // src/registry/no-such-provider-error.ts
9738
- var import_provider30 = require("@ai-sdk/provider");
9919
+ var import_provider31 = require("@ai-sdk/provider");
9739
9920
  var name16 = "AI_NoSuchProviderError";
9740
9921
  var marker16 = `vercel.ai.error.${name16}`;
9741
9922
  var symbol16 = Symbol.for(marker16);
9742
9923
  var _a16;
9743
- var NoSuchProviderError = class extends import_provider30.NoSuchModelError {
9924
+ var NoSuchProviderError = class extends import_provider31.NoSuchModelError {
9744
9925
  constructor({
9745
9926
  modelId,
9746
9927
  modelType,
@@ -9754,13 +9935,13 @@ var NoSuchProviderError = class extends import_provider30.NoSuchModelError {
9754
9935
  this.availableProviders = availableProviders;
9755
9936
  }
9756
9937
  static isInstance(error) {
9757
- return import_provider30.AISDKError.hasMarker(error, marker16);
9938
+ return import_provider31.AISDKError.hasMarker(error, marker16);
9758
9939
  }
9759
9940
  };
9760
9941
  _a16 = symbol16;
9761
9942
 
9762
9943
  // src/registry/provider-registry.ts
9763
- var import_provider31 = require("@ai-sdk/provider");
9944
+ var import_provider32 = require("@ai-sdk/provider");
9764
9945
  function createProviderRegistry(providers, {
9765
9946
  separator = ":",
9766
9947
  languageModelMiddleware
@@ -9805,7 +9986,7 @@ var DefaultProviderRegistry = class {
9805
9986
  splitId(id, modelType) {
9806
9987
  const index = id.indexOf(this.separator);
9807
9988
  if (index === -1) {
9808
- throw new import_provider31.NoSuchModelError({
9989
+ throw new import_provider32.NoSuchModelError({
9809
9990
  modelId: id,
9810
9991
  modelType,
9811
9992
  message: `Invalid ${modelType} id for registry: ${id} (must be in the format "providerId${this.separator}modelId")`
@@ -9821,7 +10002,7 @@ var DefaultProviderRegistry = class {
9821
10002
  modelId
9822
10003
  );
9823
10004
  if (model == null) {
9824
- throw new import_provider31.NoSuchModelError({ modelId: id, modelType: "languageModel" });
10005
+ throw new import_provider32.NoSuchModelError({ modelId: id, modelType: "languageModel" });
9825
10006
  }
9826
10007
  if (this.languageModelMiddleware != null) {
9827
10008
  model = wrapLanguageModel({
@@ -9837,7 +10018,7 @@ var DefaultProviderRegistry = class {
9837
10018
  const provider = this.getProvider(providerId, "textEmbeddingModel");
9838
10019
  const model = (_a17 = provider.textEmbeddingModel) == null ? void 0 : _a17.call(provider, modelId);
9839
10020
  if (model == null) {
9840
- throw new import_provider31.NoSuchModelError({
10021
+ throw new import_provider32.NoSuchModelError({
9841
10022
  modelId: id,
9842
10023
  modelType: "textEmbeddingModel"
9843
10024
  });
@@ -9850,7 +10031,7 @@ var DefaultProviderRegistry = class {
9850
10031
  const provider = this.getProvider(providerId, "imageModel");
9851
10032
  const model = (_a17 = provider.imageModel) == null ? void 0 : _a17.call(provider, modelId);
9852
10033
  if (model == null) {
9853
- throw new import_provider31.NoSuchModelError({ modelId: id, modelType: "imageModel" });
10034
+ throw new import_provider32.NoSuchModelError({ modelId: id, modelType: "imageModel" });
9854
10035
  }
9855
10036
  return model;
9856
10037
  }
@@ -9860,7 +10041,7 @@ var DefaultProviderRegistry = class {
9860
10041
  const provider = this.getProvider(providerId, "transcriptionModel");
9861
10042
  const model = (_a17 = provider.transcriptionModel) == null ? void 0 : _a17.call(provider, modelId);
9862
10043
  if (model == null) {
9863
- throw new import_provider31.NoSuchModelError({
10044
+ throw new import_provider32.NoSuchModelError({
9864
10045
  modelId: id,
9865
10046
  modelType: "transcriptionModel"
9866
10047
  });
@@ -9873,7 +10054,7 @@ var DefaultProviderRegistry = class {
9873
10054
  const provider = this.getProvider(providerId, "speechModel");
9874
10055
  const model = (_a17 = provider.speechModel) == null ? void 0 : _a17.call(provider, modelId);
9875
10056
  if (model == null) {
9876
- throw new import_provider31.NoSuchModelError({ modelId: id, modelType: "speechModel" });
10057
+ throw new import_provider32.NoSuchModelError({ modelId: id, modelType: "speechModel" });
9877
10058
  }
9878
10059
  return model;
9879
10060
  }
@@ -10460,8 +10641,8 @@ var DefaultMCPClient = class {
10460
10641
  var import_provider_utils33 = require("@ai-sdk/provider-utils");
10461
10642
 
10462
10643
  // src/error/no-transcript-generated-error.ts
10463
- var import_provider32 = require("@ai-sdk/provider");
10464
- var NoTranscriptGeneratedError = class extends import_provider32.AISDKError {
10644
+ var import_provider33 = require("@ai-sdk/provider");
10645
+ var NoTranscriptGeneratedError = class extends import_provider33.AISDKError {
10465
10646
  constructor(options) {
10466
10647
  super({
10467
10648
  name: "AI_NoTranscriptGeneratedError",