@ai-sdk/openai-compatible 2.0.86 → 2.0.87

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
@@ -896,7 +896,7 @@ var OpenAICompatibleChatLanguageModel = class {
896
896
  };
897
897
  }
898
898
  };
899
- var openaiCompatibleTokenUsageSchema = import_v43.z.looseObject({
899
+ var openaiCompatibleTokenUsageSchema = () => import_v43.z.looseObject({
900
900
  prompt_tokens: import_v43.z.number().nullish(),
901
901
  completion_tokens: import_v43.z.number().nullish(),
902
902
  total_tokens: import_v43.z.number().nullish(),
@@ -909,7 +909,7 @@ var openaiCompatibleTokenUsageSchema = import_v43.z.looseObject({
909
909
  rejected_prediction_tokens: import_v43.z.number().nullish()
910
910
  }).nullish()
911
911
  }).nullish();
912
- var openAICompatibleContentSchema = import_v43.z.union([
912
+ var openAICompatibleContentSchema = () => import_v43.z.union([
913
913
  import_v43.z.string(),
914
914
  import_v43.z.array(
915
915
  import_v43.z.looseObject({
@@ -941,39 +941,43 @@ function convertOpenAICompatibleContent(content) {
941
941
  }
942
942
  return result;
943
943
  }
944
- var OpenAICompatibleChatResponseSchema = import_v43.z.looseObject({
945
- id: import_v43.z.string().nullish(),
946
- created: import_v43.z.number().nullish(),
947
- model: import_v43.z.string().nullish(),
948
- choices: import_v43.z.array(
949
- import_v43.z.object({
950
- message: import_v43.z.object({
951
- role: import_v43.z.literal("assistant").nullish(),
952
- content: openAICompatibleContentSchema,
953
- reasoning_content: import_v43.z.string().nullish(),
954
- reasoning: import_v43.z.string().nullish(),
955
- tool_calls: import_v43.z.array(
956
- import_v43.z.object({
957
- id: import_v43.z.string().nullish(),
958
- function: import_v43.z.object({
959
- name: import_v43.z.string(),
960
- arguments: import_v43.z.string()
961
- }),
962
- // Support for Google Gemini thought signatures via OpenAI compatibility
963
- extra_content: import_v43.z.object({
964
- google: import_v43.z.object({
965
- thought_signature: import_v43.z.string().nullish()
966
- }).nullish()
967
- }).nullish()
968
- })
969
- ).nullish()
970
- }),
971
- finish_reason: import_v43.z.string().nullish()
944
+ var OpenAICompatibleChatResponseSchema = (0, import_provider_utils2.lazySchema)(
945
+ () => (0, import_provider_utils2.zodSchema)(
946
+ import_v43.z.looseObject({
947
+ id: import_v43.z.string().nullish(),
948
+ created: import_v43.z.number().nullish(),
949
+ model: import_v43.z.string().nullish(),
950
+ choices: import_v43.z.array(
951
+ import_v43.z.object({
952
+ message: import_v43.z.object({
953
+ role: import_v43.z.literal("assistant").nullish(),
954
+ content: openAICompatibleContentSchema(),
955
+ reasoning_content: import_v43.z.string().nullish(),
956
+ reasoning: import_v43.z.string().nullish(),
957
+ tool_calls: import_v43.z.array(
958
+ import_v43.z.object({
959
+ id: import_v43.z.string().nullish(),
960
+ function: import_v43.z.object({
961
+ name: import_v43.z.string(),
962
+ arguments: import_v43.z.string()
963
+ }),
964
+ // Support for Google Gemini thought signatures via OpenAI compatibility
965
+ extra_content: import_v43.z.object({
966
+ google: import_v43.z.object({
967
+ thought_signature: import_v43.z.string().nullish()
968
+ }).nullish()
969
+ }).nullish()
970
+ })
971
+ ).nullish()
972
+ }),
973
+ finish_reason: import_v43.z.string().nullish()
974
+ })
975
+ ),
976
+ usage: openaiCompatibleTokenUsageSchema()
972
977
  })
973
- ),
974
- usage: openaiCompatibleTokenUsageSchema
975
- });
976
- var chunkBaseSchema = import_v43.z.looseObject({
978
+ )
979
+ );
980
+ var chunkBaseSchema = () => import_v43.z.looseObject({
977
981
  id: import_v43.z.string().nullish(),
978
982
  created: import_v43.z.number().nullish(),
979
983
  model: import_v43.z.string().nullish(),
@@ -981,7 +985,7 @@ var chunkBaseSchema = import_v43.z.looseObject({
981
985
  import_v43.z.object({
982
986
  delta: import_v43.z.object({
983
987
  role: import_v43.z.enum(["assistant", ""]).nullish(),
984
- content: openAICompatibleContentSchema,
988
+ content: openAICompatibleContentSchema(),
985
989
  // Most openai-compatible models set `reasoning_content`, but some
986
990
  // providers serving `gpt-oss` set `reasoning`. See #7866
987
991
  reasoning_content: import_v43.z.string().nullish(),
@@ -1007,12 +1011,12 @@ var chunkBaseSchema = import_v43.z.looseObject({
1007
1011
  finish_reason: import_v43.z.string().nullish()
1008
1012
  })
1009
1013
  ),
1010
- usage: openaiCompatibleTokenUsageSchema
1014
+ usage: openaiCompatibleTokenUsageSchema()
1011
1015
  });
1012
- var createOpenAICompatibleChatChunkSchema = (errorSchema) => import_v43.z.union([chunkBaseSchema, errorSchema]);
1016
+ var createOpenAICompatibleChatChunkSchema = (errorSchema) => import_v43.z.union([chunkBaseSchema(), errorSchema]);
1013
1017
 
1014
1018
  // src/completion/openai-compatible-completion-language-model.ts
1015
- var import_provider_utils3 = require("@ai-sdk/provider-utils");
1019
+ var import_provider_utils4 = require("@ai-sdk/provider-utils");
1016
1020
  var import_v45 = require("zod/v4");
1017
1021
 
1018
1022
  // src/completion/convert-openai-compatible-completion-usage.ts
@@ -1158,29 +1162,34 @@ function mapOpenAICompatibleFinishReason2(finishReason) {
1158
1162
  }
1159
1163
 
1160
1164
  // src/completion/openai-compatible-completion-options.ts
1165
+ var import_provider_utils3 = require("@ai-sdk/provider-utils");
1161
1166
  var import_v44 = require("zod/v4");
1162
- var openaiCompatibleLanguageModelCompletionOptions = import_v44.z.object({
1163
- /**
1164
- * Echo back the prompt in addition to the completion.
1165
- */
1166
- echo: import_v44.z.boolean().optional(),
1167
- /**
1168
- * Modify the likelihood of specified tokens appearing in the completion.
1169
- *
1170
- * Accepts a JSON object that maps tokens (specified by their token ID in
1171
- * the GPT tokenizer) to an associated bias value from -100 to 100.
1172
- */
1173
- logitBias: import_v44.z.record(import_v44.z.string(), import_v44.z.number()).optional(),
1174
- /**
1175
- * The suffix that comes after a completion of inserted text.
1176
- */
1177
- suffix: import_v44.z.string().optional(),
1178
- /**
1179
- * A unique identifier representing your end-user, which can help providers to
1180
- * monitor and detect abuse.
1181
- */
1182
- user: import_v44.z.string().optional()
1183
- });
1167
+ var openaiCompatibleLanguageModelCompletionOptions = (0, import_provider_utils3.lazySchema)(
1168
+ () => (0, import_provider_utils3.zodSchema)(
1169
+ import_v44.z.object({
1170
+ /**
1171
+ * Echo back the prompt in addition to the completion.
1172
+ */
1173
+ echo: import_v44.z.boolean().optional(),
1174
+ /**
1175
+ * Modify the likelihood of specified tokens appearing in the completion.
1176
+ *
1177
+ * Accepts a JSON object that maps tokens (specified by their token ID in
1178
+ * the GPT tokenizer) to an associated bias value from -100 to 100.
1179
+ */
1180
+ logitBias: import_v44.z.record(import_v44.z.string(), import_v44.z.number()).optional(),
1181
+ /**
1182
+ * The suffix that comes after a completion of inserted text.
1183
+ */
1184
+ suffix: import_v44.z.string().optional(),
1185
+ /**
1186
+ * A unique identifier representing your end-user, which can help providers to
1187
+ * monitor and detect abuse.
1188
+ */
1189
+ user: import_v44.z.string().optional()
1190
+ })
1191
+ )
1192
+ );
1184
1193
 
1185
1194
  // src/completion/openai-compatible-completion-language-model.ts
1186
1195
  var OpenAICompatibleCompletionLanguageModel = class {
@@ -1194,7 +1203,7 @@ var OpenAICompatibleCompletionLanguageModel = class {
1194
1203
  this.chunkSchema = createOpenAICompatibleCompletionChunkSchema(
1195
1204
  errorStructure.errorSchema
1196
1205
  );
1197
- this.failedResponseHandler = (0, import_provider_utils3.createJsonErrorResponseHandler)(errorStructure);
1206
+ this.failedResponseHandler = (0, import_provider_utils4.createJsonErrorResponseHandler)(errorStructure);
1198
1207
  }
1199
1208
  get provider() {
1200
1209
  return this.config.provider;
@@ -1224,12 +1233,12 @@ var OpenAICompatibleCompletionLanguageModel = class {
1224
1233
  var _a, _b;
1225
1234
  const warnings = [];
1226
1235
  const completionOptions = Object.assign(
1227
- (_a = await (0, import_provider_utils3.parseProviderOptions)({
1236
+ (_a = await (0, import_provider_utils4.parseProviderOptions)({
1228
1237
  provider: this.providerOptionsName,
1229
1238
  providerOptions,
1230
1239
  schema: openaiCompatibleLanguageModelCompletionOptions
1231
1240
  })) != null ? _a : {},
1232
- (_b = await (0, import_provider_utils3.parseProviderOptions)({
1241
+ (_b = await (0, import_provider_utils4.parseProviderOptions)({
1233
1242
  provider: toCamelCase(this.providerOptionsName),
1234
1243
  providerOptions,
1235
1244
  schema: openaiCompatibleLanguageModelCompletionOptions
@@ -1285,15 +1294,15 @@ var OpenAICompatibleCompletionLanguageModel = class {
1285
1294
  responseHeaders,
1286
1295
  value: response,
1287
1296
  rawValue: rawResponse
1288
- } = await (0, import_provider_utils3.postJsonToApi)({
1297
+ } = await (0, import_provider_utils4.postJsonToApi)({
1289
1298
  url: this.config.url({
1290
1299
  path: "/completions",
1291
1300
  modelId: this.modelId
1292
1301
  }),
1293
- headers: (0, import_provider_utils3.combineHeaders)(this.config.headers(), options.headers),
1302
+ headers: (0, import_provider_utils4.combineHeaders)(this.config.headers(), options.headers),
1294
1303
  body: args,
1295
1304
  failedResponseHandler: this.failedResponseHandler,
1296
- successfulResponseHandler: (0, import_provider_utils3.createJsonResponseHandler)(
1305
+ successfulResponseHandler: (0, import_provider_utils4.createJsonResponseHandler)(
1297
1306
  openaiCompatibleCompletionResponseSchema
1298
1307
  ),
1299
1308
  abortSignal: options.abortSignal,
@@ -1328,15 +1337,15 @@ var OpenAICompatibleCompletionLanguageModel = class {
1328
1337
  // only include stream_options when in strict compatibility mode:
1329
1338
  stream_options: this.config.includeUsage ? { include_usage: true } : void 0
1330
1339
  };
1331
- const { responseHeaders, value: response } = await (0, import_provider_utils3.postJsonToApi)({
1340
+ const { responseHeaders, value: response } = await (0, import_provider_utils4.postJsonToApi)({
1332
1341
  url: this.config.url({
1333
1342
  path: "/completions",
1334
1343
  modelId: this.modelId
1335
1344
  }),
1336
- headers: (0, import_provider_utils3.combineHeaders)(this.config.headers(), options.headers),
1345
+ headers: (0, import_provider_utils4.combineHeaders)(this.config.headers(), options.headers),
1337
1346
  body,
1338
1347
  failedResponseHandler: this.failedResponseHandler,
1339
- successfulResponseHandler: (0, import_provider_utils3.createEventSourceResponseHandler)(
1348
+ successfulResponseHandler: (0, import_provider_utils4.createEventSourceResponseHandler)(
1340
1349
  this.chunkSchema
1341
1350
  ),
1342
1351
  abortSignal: options.abortSignal,
@@ -1416,23 +1425,27 @@ var OpenAICompatibleCompletionLanguageModel = class {
1416
1425
  };
1417
1426
  }
1418
1427
  };
1419
- var usageSchema = import_v45.z.looseObject({
1428
+ var usageSchema = () => import_v45.z.looseObject({
1420
1429
  prompt_tokens: import_v45.z.number(),
1421
1430
  completion_tokens: import_v45.z.number(),
1422
1431
  total_tokens: import_v45.z.number()
1423
1432
  });
1424
- var openaiCompatibleCompletionResponseSchema = import_v45.z.object({
1425
- id: import_v45.z.string().nullish(),
1426
- created: import_v45.z.number().nullish(),
1427
- model: import_v45.z.string().nullish(),
1428
- choices: import_v45.z.array(
1433
+ var openaiCompatibleCompletionResponseSchema = (0, import_provider_utils4.lazySchema)(
1434
+ () => (0, import_provider_utils4.zodSchema)(
1429
1435
  import_v45.z.object({
1430
- text: import_v45.z.string(),
1431
- finish_reason: import_v45.z.string()
1436
+ id: import_v45.z.string().nullish(),
1437
+ created: import_v45.z.number().nullish(),
1438
+ model: import_v45.z.string().nullish(),
1439
+ choices: import_v45.z.array(
1440
+ import_v45.z.object({
1441
+ text: import_v45.z.string(),
1442
+ finish_reason: import_v45.z.string()
1443
+ })
1444
+ ),
1445
+ usage: usageSchema().nullish()
1432
1446
  })
1433
- ),
1434
- usage: usageSchema.nullish()
1435
- });
1447
+ )
1448
+ );
1436
1449
  var createOpenAICompatibleCompletionChunkSchema = (errorSchema) => import_v45.z.union([
1437
1450
  import_v45.z.object({
1438
1451
  id: import_v45.z.string().nullish(),
@@ -1445,30 +1458,35 @@ var createOpenAICompatibleCompletionChunkSchema = (errorSchema) => import_v45.z.
1445
1458
  index: import_v45.z.number()
1446
1459
  })
1447
1460
  ),
1448
- usage: usageSchema.nullish()
1461
+ usage: usageSchema().nullish()
1449
1462
  }),
1450
1463
  errorSchema
1451
1464
  ]);
1452
1465
 
1453
1466
  // src/embedding/openai-compatible-embedding-model.ts
1454
1467
  var import_provider5 = require("@ai-sdk/provider");
1455
- var import_provider_utils4 = require("@ai-sdk/provider-utils");
1468
+ var import_provider_utils6 = require("@ai-sdk/provider-utils");
1456
1469
  var import_v47 = require("zod/v4");
1457
1470
 
1458
1471
  // src/embedding/openai-compatible-embedding-options.ts
1472
+ var import_provider_utils5 = require("@ai-sdk/provider-utils");
1459
1473
  var import_v46 = require("zod/v4");
1460
- var openaiCompatibleEmbeddingModelOptions = import_v46.z.object({
1461
- /**
1462
- * The number of dimensions the resulting output embeddings should have.
1463
- * Only supported in text-embedding-3 and later models.
1464
- */
1465
- dimensions: import_v46.z.number().optional(),
1466
- /**
1467
- * A unique identifier representing your end-user, which can help providers to
1468
- * monitor and detect abuse.
1469
- */
1470
- user: import_v46.z.string().optional()
1471
- });
1474
+ var openaiCompatibleEmbeddingModelOptions = (0, import_provider_utils5.lazySchema)(
1475
+ () => (0, import_provider_utils5.zodSchema)(
1476
+ import_v46.z.object({
1477
+ /**
1478
+ * The number of dimensions the resulting output embeddings should have.
1479
+ * Only supported in text-embedding-3 and later models.
1480
+ */
1481
+ dimensions: import_v46.z.number().optional(),
1482
+ /**
1483
+ * A unique identifier representing your end-user, which can help providers to
1484
+ * monitor and detect abuse.
1485
+ */
1486
+ user: import_v46.z.string().optional()
1487
+ })
1488
+ )
1489
+ );
1472
1490
 
1473
1491
  // src/embedding/openai-compatible-embedding-model.ts
1474
1492
  var OpenAICompatibleEmbeddingModel = class {
@@ -1499,7 +1517,7 @@ var OpenAICompatibleEmbeddingModel = class {
1499
1517
  }) {
1500
1518
  var _a, _b, _c;
1501
1519
  const warnings = [];
1502
- const deprecatedOptions = await (0, import_provider_utils4.parseProviderOptions)({
1520
+ const deprecatedOptions = await (0, import_provider_utils6.parseProviderOptions)({
1503
1521
  provider: "openai-compatible",
1504
1522
  providerOptions,
1505
1523
  schema: openaiCompatibleEmbeddingModelOptions
@@ -1512,12 +1530,12 @@ var OpenAICompatibleEmbeddingModel = class {
1512
1530
  }
1513
1531
  const compatibleOptions = Object.assign(
1514
1532
  deprecatedOptions != null ? deprecatedOptions : {},
1515
- (_a = await (0, import_provider_utils4.parseProviderOptions)({
1533
+ (_a = await (0, import_provider_utils6.parseProviderOptions)({
1516
1534
  provider: "openaiCompatible",
1517
1535
  providerOptions,
1518
1536
  schema: openaiCompatibleEmbeddingModelOptions
1519
1537
  })) != null ? _a : {},
1520
- (_b = await (0, import_provider_utils4.parseProviderOptions)({
1538
+ (_b = await (0, import_provider_utils6.parseProviderOptions)({
1521
1539
  provider: this.providerOptionsName,
1522
1540
  providerOptions,
1523
1541
  schema: openaiCompatibleEmbeddingModelOptions
@@ -1535,12 +1553,12 @@ var OpenAICompatibleEmbeddingModel = class {
1535
1553
  responseHeaders,
1536
1554
  value: response,
1537
1555
  rawValue
1538
- } = await (0, import_provider_utils4.postJsonToApi)({
1556
+ } = await (0, import_provider_utils6.postJsonToApi)({
1539
1557
  url: this.config.url({
1540
1558
  path: "/embeddings",
1541
1559
  modelId: this.modelId
1542
1560
  }),
1543
- headers: (0, import_provider_utils4.combineHeaders)(this.config.headers(), headers),
1561
+ headers: (0, import_provider_utils6.combineHeaders)(this.config.headers(), headers),
1544
1562
  body: {
1545
1563
  model: this.modelId,
1546
1564
  input: values,
@@ -1548,10 +1566,10 @@ var OpenAICompatibleEmbeddingModel = class {
1548
1566
  dimensions: compatibleOptions.dimensions,
1549
1567
  user: compatibleOptions.user
1550
1568
  },
1551
- failedResponseHandler: (0, import_provider_utils4.createJsonErrorResponseHandler)(
1569
+ failedResponseHandler: (0, import_provider_utils6.createJsonErrorResponseHandler)(
1552
1570
  (_c = this.config.errorStructure) != null ? _c : defaultOpenAICompatibleErrorStructure
1553
1571
  ),
1554
- successfulResponseHandler: (0, import_provider_utils4.createJsonResponseHandler)(
1572
+ successfulResponseHandler: (0, import_provider_utils6.createJsonResponseHandler)(
1555
1573
  openaiTextEmbeddingResponseSchema
1556
1574
  ),
1557
1575
  abortSignal,
@@ -1566,15 +1584,19 @@ var OpenAICompatibleEmbeddingModel = class {
1566
1584
  };
1567
1585
  }
1568
1586
  };
1569
- var openaiTextEmbeddingResponseSchema = import_v47.z.object({
1570
- data: import_v47.z.array(import_v47.z.object({ embedding: import_v47.z.array(import_v47.z.number()) })),
1571
- usage: import_v47.z.object({ prompt_tokens: import_v47.z.number() }).nullish(),
1572
- providerMetadata: import_v47.z.record(import_v47.z.string(), import_v47.z.record(import_v47.z.string(), import_v47.z.any())).optional()
1573
- });
1587
+ var openaiTextEmbeddingResponseSchema = (0, import_provider_utils6.lazySchema)(
1588
+ () => (0, import_provider_utils6.zodSchema)(
1589
+ import_v47.z.object({
1590
+ data: import_v47.z.array(import_v47.z.object({ embedding: import_v47.z.array(import_v47.z.number()) })),
1591
+ usage: import_v47.z.object({ prompt_tokens: import_v47.z.number() }).nullish(),
1592
+ providerMetadata: import_v47.z.record(import_v47.z.string(), import_v47.z.record(import_v47.z.string(), import_v47.z.any())).optional()
1593
+ })
1594
+ )
1595
+ );
1574
1596
 
1575
1597
  // src/image/openai-compatible-image-model.ts
1576
1598
  var import_provider6 = require("@ai-sdk/provider");
1577
- var import_provider_utils5 = require("@ai-sdk/provider-utils");
1599
+ var import_provider_utils7 = require("@ai-sdk/provider-utils");
1578
1600
  var import_v48 = require("zod/v4");
1579
1601
  var OpenAICompatibleImageModel = class {
1580
1602
  constructor(modelId, config) {
@@ -1630,12 +1652,12 @@ var OpenAICompatibleImageModel = class {
1630
1652
  path: isEditing ? "/images/edits" : "/images/generations",
1631
1653
  modelId: this.modelId
1632
1654
  });
1633
- const requestHeaders = (0, import_provider_utils5.combineHeaders)(this.config.headers(), headers);
1655
+ const requestHeaders = (0, import_provider_utils7.combineHeaders)(this.config.headers(), headers);
1634
1656
  if (isEditing) {
1635
- const { value: response2, responseHeaders: responseHeaders2 } = await (0, import_provider_utils5.postFormDataToApi)({
1657
+ const { value: response2, responseHeaders: responseHeaders2 } = await (0, import_provider_utils7.postFormDataToApi)({
1636
1658
  url,
1637
1659
  headers: requestHeaders,
1638
- formData: (0, import_provider_utils5.convertToFormData)({
1660
+ formData: (0, import_provider_utils7.convertToFormData)({
1639
1661
  model: this.modelId,
1640
1662
  prompt,
1641
1663
  image: await Promise.all(files.map((file) => fileToBlob(file))),
@@ -1644,10 +1666,10 @@ var OpenAICompatibleImageModel = class {
1644
1666
  size,
1645
1667
  ...args
1646
1668
  }),
1647
- failedResponseHandler: (0, import_provider_utils5.createJsonErrorResponseHandler)(
1669
+ failedResponseHandler: (0, import_provider_utils7.createJsonErrorResponseHandler)(
1648
1670
  (_d = this.config.errorStructure) != null ? _d : defaultOpenAICompatibleErrorStructure
1649
1671
  ),
1650
- successfulResponseHandler: (0, import_provider_utils5.createJsonResponseHandler)(
1672
+ successfulResponseHandler: (0, import_provider_utils7.createJsonResponseHandler)(
1651
1673
  openaiCompatibleImageResponseSchema
1652
1674
  ),
1653
1675
  abortSignal,
@@ -1667,7 +1689,7 @@ var OpenAICompatibleImageModel = class {
1667
1689
  }
1668
1690
  };
1669
1691
  }
1670
- const { value: response, responseHeaders } = await (0, import_provider_utils5.postJsonToApi)({
1692
+ const { value: response, responseHeaders } = await (0, import_provider_utils7.postJsonToApi)({
1671
1693
  url,
1672
1694
  headers: requestHeaders,
1673
1695
  body: {
@@ -1678,10 +1700,10 @@ var OpenAICompatibleImageModel = class {
1678
1700
  ...args,
1679
1701
  response_format: "b64_json"
1680
1702
  },
1681
- failedResponseHandler: (0, import_provider_utils5.createJsonErrorResponseHandler)(
1703
+ failedResponseHandler: (0, import_provider_utils7.createJsonErrorResponseHandler)(
1682
1704
  (_e = this.config.errorStructure) != null ? _e : defaultOpenAICompatibleErrorStructure
1683
1705
  ),
1684
- successfulResponseHandler: (0, import_provider_utils5.createJsonResponseHandler)(
1706
+ successfulResponseHandler: (0, import_provider_utils7.createJsonResponseHandler)(
1685
1707
  openaiCompatibleImageResponseSchema
1686
1708
  ),
1687
1709
  abortSignal,
@@ -1708,7 +1730,7 @@ var OpenAICompatibleImageModel = class {
1708
1730
  return Promise.all(
1709
1731
  data.map(async (image) => {
1710
1732
  if (image.b64_json != null) {
1711
- return (0, import_provider_utils5.convertBase64ToUint8Array)(image.b64_json);
1733
+ return (0, import_provider_utils7.convertBase64ToUint8Array)(image.b64_json);
1712
1734
  }
1713
1735
  if (image.url == null) {
1714
1736
  throw new import_provider6.InvalidResponseDataError({
@@ -1716,7 +1738,7 @@ var OpenAICompatibleImageModel = class {
1716
1738
  message: "Expected url in the image response"
1717
1739
  });
1718
1740
  }
1719
- const { value } = await (0, import_provider_utils5.getFromApi)({
1741
+ const { value } = await (0, import_provider_utils7.getFromApi)({
1720
1742
  url: image.url,
1721
1743
  validateUrl: true,
1722
1744
  trustedOrigin: options.url,
@@ -1724,47 +1746,51 @@ var OpenAICompatibleImageModel = class {
1724
1746
  headers: options.headers,
1725
1747
  abortSignal: options.abortSignal,
1726
1748
  fetch: this.config.fetch,
1727
- successfulResponseHandler: (0, import_provider_utils5.createBinaryResponseHandler)(),
1728
- failedResponseHandler: (0, import_provider_utils5.createStatusCodeErrorResponseHandler)()
1749
+ successfulResponseHandler: (0, import_provider_utils7.createBinaryResponseHandler)(),
1750
+ failedResponseHandler: (0, import_provider_utils7.createStatusCodeErrorResponseHandler)()
1729
1751
  });
1730
1752
  return value;
1731
1753
  })
1732
1754
  );
1733
1755
  }
1734
1756
  };
1735
- var openaiCompatibleImageResponseSchema = import_v48.z.object({
1736
- data: import_v48.z.array(
1757
+ var openaiCompatibleImageResponseSchema = (0, import_provider_utils7.lazySchema)(
1758
+ () => (0, import_provider_utils7.zodSchema)(
1737
1759
  import_v48.z.object({
1738
- b64_json: import_v48.z.string().nullish(),
1739
- url: import_v48.z.string().nullish()
1740
- }).refine((image) => image.b64_json != null || image.url != null, {
1741
- message: "Expected b64_json or url in the image response"
1760
+ data: import_v48.z.array(
1761
+ import_v48.z.object({
1762
+ b64_json: import_v48.z.string().nullish(),
1763
+ url: import_v48.z.string().nullish()
1764
+ }).refine((image) => image.b64_json != null || image.url != null, {
1765
+ message: "Expected b64_json or url in the image response"
1766
+ })
1767
+ )
1742
1768
  })
1743
1769
  )
1744
- });
1770
+ );
1745
1771
  async function fileToBlob(file) {
1746
1772
  if (file.type === "url") {
1747
- return (0, import_provider_utils5.downloadBlob)(file.url);
1773
+ return (0, import_provider_utils7.downloadBlob)(file.url);
1748
1774
  }
1749
- const data = file.data instanceof Uint8Array ? file.data : (0, import_provider_utils5.convertBase64ToUint8Array)(file.data);
1775
+ const data = file.data instanceof Uint8Array ? file.data : (0, import_provider_utils7.convertBase64ToUint8Array)(file.data);
1750
1776
  return new Blob([data], { type: file.mediaType });
1751
1777
  }
1752
1778
 
1753
1779
  // src/openai-compatible-provider.ts
1754
- var import_provider_utils6 = require("@ai-sdk/provider-utils");
1780
+ var import_provider_utils8 = require("@ai-sdk/provider-utils");
1755
1781
 
1756
1782
  // src/version.ts
1757
- var VERSION = true ? "2.0.86" : "0.0.0-test";
1783
+ var VERSION = true ? "2.0.87" : "0.0.0-test";
1758
1784
 
1759
1785
  // src/openai-compatible-provider.ts
1760
1786
  function createOpenAICompatible(options) {
1761
- const baseURL = (0, import_provider_utils6.withoutTrailingSlash)(options.baseURL);
1787
+ const baseURL = (0, import_provider_utils8.withoutTrailingSlash)(options.baseURL);
1762
1788
  const providerName = options.name;
1763
1789
  const headers = {
1764
1790
  ...options.apiKey && { Authorization: `Bearer ${options.apiKey}` },
1765
1791
  ...options.headers
1766
1792
  };
1767
- const getHeaders = () => (0, import_provider_utils6.withUserAgentSuffix)(headers, `ai-sdk/openai-compatible/${VERSION}`);
1793
+ const getHeaders = () => (0, import_provider_utils8.withUserAgentSuffix)(headers, `ai-sdk/openai-compatible/${VERSION}`);
1768
1794
  const getCommonModelConfig = (modelType) => ({
1769
1795
  provider: `${providerName}.${modelType}`,
1770
1796
  url: ({ path }) => {