@ai-sdk/openai 4.0.0-beta.30 → 4.0.0-beta.32

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.
@@ -10,7 +10,10 @@ import {
10
10
  isCustomReasoning,
11
11
  isParsableJson,
12
12
  parseProviderOptions,
13
- postJsonToApi
13
+ postJsonToApi,
14
+ serializeModelOptions,
15
+ WORKFLOW_DESERIALIZE,
16
+ WORKFLOW_SERIALIZE
14
17
  } from "@ai-sdk/provider-utils";
15
18
 
16
19
  // src/openai-error.ts
@@ -96,6 +99,9 @@ import {
96
99
  isProviderReference,
97
100
  resolveProviderReference
98
101
  } from "@ai-sdk/provider-utils";
102
+ function serializeToolCallArguments(input) {
103
+ return JSON.stringify(input === void 0 ? {} : input);
104
+ }
99
105
  function convertToOpenAIChatMessages({
100
106
  prompt,
101
107
  systemMessageMode = "system"
@@ -236,7 +242,7 @@ function convertToOpenAIChatMessages({
236
242
  type: "function",
237
243
  function: {
238
244
  name: part.toolName,
239
- arguments: JSON.stringify(part.input)
245
+ arguments: serializeToolCallArguments(part.input)
240
246
  }
241
247
  });
242
248
  break;
@@ -644,7 +650,7 @@ function prepareChatTools({
644
650
  }
645
651
 
646
652
  // src/chat/openai-chat-language-model.ts
647
- var OpenAIChatLanguageModel = class {
653
+ var OpenAIChatLanguageModel = class _OpenAIChatLanguageModel {
648
654
  constructor(modelId, config) {
649
655
  this.specificationVersion = "v4";
650
656
  this.supportedUrls = {
@@ -653,6 +659,15 @@ var OpenAIChatLanguageModel = class {
653
659
  this.modelId = modelId;
654
660
  this.config = config;
655
661
  }
662
+ static [WORKFLOW_SERIALIZE](model) {
663
+ return serializeModelOptions({
664
+ modelId: model.modelId,
665
+ config: model.config
666
+ });
667
+ }
668
+ static [WORKFLOW_DESERIALIZE](options) {
669
+ return new _OpenAIChatLanguageModel(options.modelId, options.config);
670
+ }
656
671
  get provider() {
657
672
  return this.config.provider;
658
673
  }
@@ -840,7 +855,7 @@ var OpenAIChatLanguageModel = class {
840
855
  };
841
856
  }
842
857
  async doGenerate(options) {
843
- var _a, _b, _c, _d, _e, _f;
858
+ var _a, _b, _c, _d, _e, _f, _g, _h;
844
859
  const { args: body, warnings } = await this.getArgs(options);
845
860
  const {
846
861
  responseHeaders,
@@ -851,7 +866,7 @@ var OpenAIChatLanguageModel = class {
851
866
  path: "/chat/completions",
852
867
  modelId: this.modelId
853
868
  }),
854
- headers: combineHeaders(this.config.headers(), options.headers),
869
+ headers: combineHeaders((_b = (_a = this.config).headers) == null ? void 0 : _b.call(_a), options.headers),
855
870
  body,
856
871
  failedResponseHandler: openaiFailedResponseHandler,
857
872
  successfulResponseHandler: createJsonResponseHandler(
@@ -866,15 +881,15 @@ var OpenAIChatLanguageModel = class {
866
881
  if (text != null && text.length > 0) {
867
882
  content.push({ type: "text", text });
868
883
  }
869
- for (const toolCall of (_a = choice.message.tool_calls) != null ? _a : []) {
884
+ for (const toolCall of (_c = choice.message.tool_calls) != null ? _c : []) {
870
885
  content.push({
871
886
  type: "tool-call",
872
- toolCallId: (_b = toolCall.id) != null ? _b : generateId(),
887
+ toolCallId: (_d = toolCall.id) != null ? _d : generateId(),
873
888
  toolName: toolCall.function.name,
874
889
  input: toolCall.function.arguments
875
890
  });
876
891
  }
877
- for (const annotation of (_c = choice.message.annotations) != null ? _c : []) {
892
+ for (const annotation of (_e = choice.message.annotations) != null ? _e : []) {
878
893
  content.push({
879
894
  type: "source",
880
895
  sourceType: "url",
@@ -883,7 +898,7 @@ var OpenAIChatLanguageModel = class {
883
898
  title: annotation.url_citation.title
884
899
  });
885
900
  }
886
- const completionTokenDetails = (_d = response.usage) == null ? void 0 : _d.completion_tokens_details;
901
+ const completionTokenDetails = (_f = response.usage) == null ? void 0 : _f.completion_tokens_details;
887
902
  const providerMetadata = { openai: {} };
888
903
  if ((completionTokenDetails == null ? void 0 : completionTokenDetails.accepted_prediction_tokens) != null) {
889
904
  providerMetadata.openai.acceptedPredictionTokens = completionTokenDetails == null ? void 0 : completionTokenDetails.accepted_prediction_tokens;
@@ -891,14 +906,14 @@ var OpenAIChatLanguageModel = class {
891
906
  if ((completionTokenDetails == null ? void 0 : completionTokenDetails.rejected_prediction_tokens) != null) {
892
907
  providerMetadata.openai.rejectedPredictionTokens = completionTokenDetails == null ? void 0 : completionTokenDetails.rejected_prediction_tokens;
893
908
  }
894
- if (((_e = choice.logprobs) == null ? void 0 : _e.content) != null) {
909
+ if (((_g = choice.logprobs) == null ? void 0 : _g.content) != null) {
895
910
  providerMetadata.openai.logprobs = choice.logprobs.content;
896
911
  }
897
912
  return {
898
913
  content,
899
914
  finishReason: {
900
915
  unified: mapOpenAIFinishReason(choice.finish_reason),
901
- raw: (_f = choice.finish_reason) != null ? _f : void 0
916
+ raw: (_h = choice.finish_reason) != null ? _h : void 0
902
917
  },
903
918
  usage: convertOpenAIChatUsage(response.usage),
904
919
  request: { body },
@@ -912,6 +927,7 @@ var OpenAIChatLanguageModel = class {
912
927
  };
913
928
  }
914
929
  async doStream(options) {
930
+ var _a, _b;
915
931
  const { args, warnings } = await this.getArgs(options);
916
932
  const body = {
917
933
  ...args,
@@ -925,7 +941,7 @@ var OpenAIChatLanguageModel = class {
925
941
  path: "/chat/completions",
926
942
  modelId: this.modelId
927
943
  }),
928
- headers: combineHeaders(this.config.headers(), options.headers),
944
+ headers: combineHeaders((_b = (_a = this.config).headers) == null ? void 0 : _b.call(_a), options.headers),
929
945
  body,
930
946
  failedResponseHandler: openaiFailedResponseHandler,
931
947
  successfulResponseHandler: createEventSourceResponseHandler(
@@ -950,7 +966,7 @@ var OpenAIChatLanguageModel = class {
950
966
  controller.enqueue({ type: "stream-start", warnings });
951
967
  },
952
968
  transform(chunk, controller) {
953
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q;
969
+ var _a2, _b2, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q;
954
970
  if (options.includeRawChunks) {
955
971
  controller.enqueue({ type: "raw", rawValue: chunk.rawValue });
956
972
  }
@@ -977,8 +993,8 @@ var OpenAIChatLanguageModel = class {
977
993
  }
978
994
  if (value.usage != null) {
979
995
  usage = value.usage;
980
- if (((_a = value.usage.completion_tokens_details) == null ? void 0 : _a.accepted_prediction_tokens) != null) {
981
- providerMetadata.openai.acceptedPredictionTokens = (_b = value.usage.completion_tokens_details) == null ? void 0 : _b.accepted_prediction_tokens;
996
+ if (((_a2 = value.usage.completion_tokens_details) == null ? void 0 : _a2.accepted_prediction_tokens) != null) {
997
+ providerMetadata.openai.acceptedPredictionTokens = (_b2 = value.usage.completion_tokens_details) == null ? void 0 : _b2.accepted_prediction_tokens;
982
998
  }
983
999
  if (((_c = value.usage.completion_tokens_details) == null ? void 0 : _c.rejected_prediction_tokens) != null) {
984
1000
  providerMetadata.openai.rejectedPredictionTokens = (_d = value.usage.completion_tokens_details) == null ? void 0 : _d.rejected_prediction_tokens;
@@ -1134,7 +1150,10 @@ import {
1134
1150
  createEventSourceResponseHandler as createEventSourceResponseHandler2,
1135
1151
  createJsonResponseHandler as createJsonResponseHandler2,
1136
1152
  parseProviderOptions as parseProviderOptions2,
1137
- postJsonToApi as postJsonToApi2
1153
+ postJsonToApi as postJsonToApi2,
1154
+ serializeModelOptions as serializeModelOptions2,
1155
+ WORKFLOW_DESERIALIZE as WORKFLOW_DESERIALIZE2,
1156
+ WORKFLOW_SERIALIZE as WORKFLOW_SERIALIZE2
1138
1157
  } from "@ai-sdk/provider-utils";
1139
1158
 
1140
1159
  // src/completion/convert-openai-completion-usage.ts
@@ -1389,7 +1408,7 @@ var openaiLanguageModelCompletionOptions = lazySchema4(
1389
1408
  );
1390
1409
 
1391
1410
  // src/completion/openai-completion-language-model.ts
1392
- var OpenAICompletionLanguageModel = class {
1411
+ var OpenAICompletionLanguageModel = class _OpenAICompletionLanguageModel {
1393
1412
  constructor(modelId, config) {
1394
1413
  this.specificationVersion = "v4";
1395
1414
  this.supportedUrls = {
@@ -1401,6 +1420,15 @@ var OpenAICompletionLanguageModel = class {
1401
1420
  get providerOptionsName() {
1402
1421
  return this.config.provider.split(".")[0].trim();
1403
1422
  }
1423
+ static [WORKFLOW_SERIALIZE2](model) {
1424
+ return serializeModelOptions2({
1425
+ modelId: model.modelId,
1426
+ config: model.config
1427
+ });
1428
+ }
1429
+ static [WORKFLOW_DESERIALIZE2](options) {
1430
+ return new _OpenAICompletionLanguageModel(options.modelId, options.config);
1431
+ }
1404
1432
  get provider() {
1405
1433
  return this.config.provider;
1406
1434
  }
@@ -1476,7 +1504,7 @@ var OpenAICompletionLanguageModel = class {
1476
1504
  };
1477
1505
  }
1478
1506
  async doGenerate(options) {
1479
- var _a;
1507
+ var _a, _b, _c;
1480
1508
  const { args, warnings } = await this.getArgs(options);
1481
1509
  const {
1482
1510
  responseHeaders,
@@ -1487,7 +1515,7 @@ var OpenAICompletionLanguageModel = class {
1487
1515
  path: "/completions",
1488
1516
  modelId: this.modelId
1489
1517
  }),
1490
- headers: combineHeaders2(this.config.headers(), options.headers),
1518
+ headers: combineHeaders2((_b = (_a = this.config).headers) == null ? void 0 : _b.call(_a), options.headers),
1491
1519
  body: args,
1492
1520
  failedResponseHandler: openaiFailedResponseHandler,
1493
1521
  successfulResponseHandler: createJsonResponseHandler2(
@@ -1506,7 +1534,7 @@ var OpenAICompletionLanguageModel = class {
1506
1534
  usage: convertOpenAICompletionUsage(response.usage),
1507
1535
  finishReason: {
1508
1536
  unified: mapOpenAIFinishReason2(choice.finish_reason),
1509
- raw: (_a = choice.finish_reason) != null ? _a : void 0
1537
+ raw: (_c = choice.finish_reason) != null ? _c : void 0
1510
1538
  },
1511
1539
  request: { body: args },
1512
1540
  response: {
@@ -1519,6 +1547,7 @@ var OpenAICompletionLanguageModel = class {
1519
1547
  };
1520
1548
  }
1521
1549
  async doStream(options) {
1550
+ var _a, _b;
1522
1551
  const { args, warnings } = await this.getArgs(options);
1523
1552
  const body = {
1524
1553
  ...args,
@@ -1532,7 +1561,7 @@ var OpenAICompletionLanguageModel = class {
1532
1561
  path: "/completions",
1533
1562
  modelId: this.modelId
1534
1563
  }),
1535
- headers: combineHeaders2(this.config.headers(), options.headers),
1564
+ headers: combineHeaders2((_b = (_a = this.config).headers) == null ? void 0 : _b.call(_a), options.headers),
1536
1565
  body,
1537
1566
  failedResponseHandler: openaiFailedResponseHandler,
1538
1567
  successfulResponseHandler: createEventSourceResponseHandler2(
@@ -1625,7 +1654,10 @@ import {
1625
1654
  combineHeaders as combineHeaders3,
1626
1655
  createJsonResponseHandler as createJsonResponseHandler3,
1627
1656
  parseProviderOptions as parseProviderOptions3,
1628
- postJsonToApi as postJsonToApi3
1657
+ postJsonToApi as postJsonToApi3,
1658
+ serializeModelOptions as serializeModelOptions3,
1659
+ WORKFLOW_DESERIALIZE as WORKFLOW_DESERIALIZE3,
1660
+ WORKFLOW_SERIALIZE as WORKFLOW_SERIALIZE3
1629
1661
  } from "@ai-sdk/provider-utils";
1630
1662
 
1631
1663
  // src/embedding/openai-embedding-options.ts
@@ -1661,7 +1693,7 @@ var openaiTextEmbeddingResponseSchema = lazySchema6(
1661
1693
  );
1662
1694
 
1663
1695
  // src/embedding/openai-embedding-model.ts
1664
- var OpenAIEmbeddingModel = class {
1696
+ var OpenAIEmbeddingModel = class _OpenAIEmbeddingModel {
1665
1697
  constructor(modelId, config) {
1666
1698
  this.specificationVersion = "v4";
1667
1699
  this.maxEmbeddingsPerCall = 2048;
@@ -1669,6 +1701,15 @@ var OpenAIEmbeddingModel = class {
1669
1701
  this.modelId = modelId;
1670
1702
  this.config = config;
1671
1703
  }
1704
+ static [WORKFLOW_SERIALIZE3](model) {
1705
+ return serializeModelOptions3({
1706
+ modelId: model.modelId,
1707
+ config: model.config
1708
+ });
1709
+ }
1710
+ static [WORKFLOW_DESERIALIZE3](options) {
1711
+ return new _OpenAIEmbeddingModel(options.modelId, options.config);
1712
+ }
1672
1713
  get provider() {
1673
1714
  return this.config.provider;
1674
1715
  }
@@ -1678,7 +1719,7 @@ var OpenAIEmbeddingModel = class {
1678
1719
  abortSignal,
1679
1720
  providerOptions
1680
1721
  }) {
1681
- var _a;
1722
+ var _a, _b, _c;
1682
1723
  if (values.length > this.maxEmbeddingsPerCall) {
1683
1724
  throw new TooManyEmbeddingValuesForCallError({
1684
1725
  provider: this.provider,
@@ -1701,7 +1742,7 @@ var OpenAIEmbeddingModel = class {
1701
1742
  path: "/embeddings",
1702
1743
  modelId: this.modelId
1703
1744
  }),
1704
- headers: combineHeaders3(this.config.headers(), headers),
1745
+ headers: combineHeaders3((_c = (_b = this.config).headers) == null ? void 0 : _c.call(_b), headers),
1705
1746
  body: {
1706
1747
  model: this.modelId,
1707
1748
  input: values,
@@ -1733,7 +1774,10 @@ import {
1733
1774
  createJsonResponseHandler as createJsonResponseHandler4,
1734
1775
  downloadBlob,
1735
1776
  postFormDataToApi,
1736
- postJsonToApi as postJsonToApi4
1777
+ postJsonToApi as postJsonToApi4,
1778
+ serializeModelOptions as serializeModelOptions4,
1779
+ WORKFLOW_DESERIALIZE as WORKFLOW_DESERIALIZE4,
1780
+ WORKFLOW_SERIALIZE as WORKFLOW_SERIALIZE4
1737
1781
  } from "@ai-sdk/provider-utils";
1738
1782
 
1739
1783
  // src/image/openai-image-api.ts
@@ -1788,12 +1832,21 @@ function hasDefaultResponseFormat(modelId) {
1788
1832
  }
1789
1833
 
1790
1834
  // src/image/openai-image-model.ts
1791
- var OpenAIImageModel = class {
1835
+ var OpenAIImageModel = class _OpenAIImageModel {
1792
1836
  constructor(modelId, config) {
1793
1837
  this.modelId = modelId;
1794
1838
  this.config = config;
1795
1839
  this.specificationVersion = "v4";
1796
1840
  }
1841
+ static [WORKFLOW_SERIALIZE4](model) {
1842
+ return serializeModelOptions4({
1843
+ modelId: model.modelId,
1844
+ config: model.config
1845
+ });
1846
+ }
1847
+ static [WORKFLOW_DESERIALIZE4](options) {
1848
+ return new _OpenAIImageModel(options.modelId, options.config);
1849
+ }
1797
1850
  get maxImagesPerCall() {
1798
1851
  var _a;
1799
1852
  return (_a = modelMaxImagesPerCall[this.modelId]) != null ? _a : 1;
@@ -1813,7 +1866,7 @@ var OpenAIImageModel = class {
1813
1866
  headers,
1814
1867
  abortSignal
1815
1868
  }) {
1816
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;
1869
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o;
1817
1870
  const warnings = [];
1818
1871
  if (aspectRatio != null) {
1819
1872
  warnings.push({
@@ -1832,7 +1885,7 @@ var OpenAIImageModel = class {
1832
1885
  path: "/images/edits",
1833
1886
  modelId: this.modelId
1834
1887
  }),
1835
- headers: combineHeaders4(this.config.headers(), headers),
1888
+ headers: combineHeaders4((_e = (_d = this.config).headers) == null ? void 0 : _e.call(_d), headers),
1836
1889
  formData: convertToFormData({
1837
1890
  model: this.modelId,
1838
1891
  prompt,
@@ -1853,7 +1906,7 @@ var OpenAIImageModel = class {
1853
1906
  mask: mask != null ? await fileToBlob(mask) : void 0,
1854
1907
  n,
1855
1908
  size,
1856
- ...(_d = providerOptions.openai) != null ? _d : {}
1909
+ ...(_f = providerOptions.openai) != null ? _f : {}
1857
1910
  }),
1858
1911
  failedResponseHandler: openaiFailedResponseHandler,
1859
1912
  successfulResponseHandler: createJsonResponseHandler4(
@@ -1866,9 +1919,9 @@ var OpenAIImageModel = class {
1866
1919
  images: response2.data.map((item) => item.b64_json),
1867
1920
  warnings,
1868
1921
  usage: response2.usage != null ? {
1869
- inputTokens: (_e = response2.usage.input_tokens) != null ? _e : void 0,
1870
- outputTokens: (_f = response2.usage.output_tokens) != null ? _f : void 0,
1871
- totalTokens: (_g = response2.usage.total_tokens) != null ? _g : void 0
1922
+ inputTokens: (_g = response2.usage.input_tokens) != null ? _g : void 0,
1923
+ outputTokens: (_h = response2.usage.output_tokens) != null ? _h : void 0,
1924
+ totalTokens: (_i = response2.usage.total_tokens) != null ? _i : void 0
1872
1925
  } : void 0,
1873
1926
  response: {
1874
1927
  timestamp: currentDate,
@@ -1902,13 +1955,13 @@ var OpenAIImageModel = class {
1902
1955
  path: "/images/generations",
1903
1956
  modelId: this.modelId
1904
1957
  }),
1905
- headers: combineHeaders4(this.config.headers(), headers),
1958
+ headers: combineHeaders4((_k = (_j = this.config).headers) == null ? void 0 : _k.call(_j), headers),
1906
1959
  body: {
1907
1960
  model: this.modelId,
1908
1961
  prompt,
1909
1962
  n,
1910
1963
  size,
1911
- ...(_h = providerOptions.openai) != null ? _h : {},
1964
+ ...(_l = providerOptions.openai) != null ? _l : {},
1912
1965
  ...!hasDefaultResponseFormat(this.modelId) ? { response_format: "b64_json" } : {}
1913
1966
  },
1914
1967
  failedResponseHandler: openaiFailedResponseHandler,
@@ -1922,9 +1975,9 @@ var OpenAIImageModel = class {
1922
1975
  images: response.data.map((item) => item.b64_json),
1923
1976
  warnings,
1924
1977
  usage: response.usage != null ? {
1925
- inputTokens: (_i = response.usage.input_tokens) != null ? _i : void 0,
1926
- outputTokens: (_j = response.usage.output_tokens) != null ? _j : void 0,
1927
- totalTokens: (_k = response.usage.total_tokens) != null ? _k : void 0
1978
+ inputTokens: (_m = response.usage.input_tokens) != null ? _m : void 0,
1979
+ outputTokens: (_n = response.usage.output_tokens) != null ? _n : void 0,
1980
+ totalTokens: (_o = response.usage.total_tokens) != null ? _o : void 0
1928
1981
  } : void 0,
1929
1982
  response: {
1930
1983
  timestamp: currentDate,
@@ -1987,7 +2040,10 @@ import {
1987
2040
  createJsonResponseHandler as createJsonResponseHandler5,
1988
2041
  mediaTypeToExtension,
1989
2042
  parseProviderOptions as parseProviderOptions4,
1990
- postFormDataToApi as postFormDataToApi2
2043
+ postFormDataToApi as postFormDataToApi2,
2044
+ serializeModelOptions as serializeModelOptions5,
2045
+ WORKFLOW_DESERIALIZE as WORKFLOW_DESERIALIZE5,
2046
+ WORKFLOW_SERIALIZE as WORKFLOW_SERIALIZE5
1991
2047
  } from "@ai-sdk/provider-utils";
1992
2048
 
1993
2049
  // src/transcription/openai-transcription-api.ts
@@ -2116,12 +2172,21 @@ var languageMap = {
2116
2172
  vietnamese: "vi",
2117
2173
  welsh: "cy"
2118
2174
  };
2119
- var OpenAITranscriptionModel = class {
2175
+ var OpenAITranscriptionModel = class _OpenAITranscriptionModel {
2120
2176
  constructor(modelId, config) {
2121
2177
  this.modelId = modelId;
2122
2178
  this.config = config;
2123
2179
  this.specificationVersion = "v4";
2124
2180
  }
2181
+ static [WORKFLOW_SERIALIZE5](model) {
2182
+ return serializeModelOptions5({
2183
+ modelId: model.modelId,
2184
+ config: model.config
2185
+ });
2186
+ }
2187
+ static [WORKFLOW_DESERIALIZE5](options) {
2188
+ return new _OpenAITranscriptionModel(options.modelId, options.config);
2189
+ }
2125
2190
  get provider() {
2126
2191
  return this.config.provider;
2127
2192
  }
@@ -2177,7 +2242,7 @@ var OpenAITranscriptionModel = class {
2177
2242
  };
2178
2243
  }
2179
2244
  async doGenerate(options) {
2180
- var _a, _b, _c, _d, _e, _f, _g, _h;
2245
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
2181
2246
  const currentDate = (_c = (_b = (_a = this.config._internal) == null ? void 0 : _a.currentDate) == null ? void 0 : _b.call(_a)) != null ? _c : /* @__PURE__ */ new Date();
2182
2247
  const { formData, warnings } = await this.getArgs(options);
2183
2248
  const {
@@ -2189,7 +2254,7 @@ var OpenAITranscriptionModel = class {
2189
2254
  path: "/audio/transcriptions",
2190
2255
  modelId: this.modelId
2191
2256
  }),
2192
- headers: combineHeaders5(this.config.headers(), options.headers),
2257
+ headers: combineHeaders5((_e = (_d = this.config).headers) == null ? void 0 : _e.call(_d), options.headers),
2193
2258
  formData,
2194
2259
  failedResponseHandler: openaiFailedResponseHandler,
2195
2260
  successfulResponseHandler: createJsonResponseHandler5(
@@ -2201,17 +2266,17 @@ var OpenAITranscriptionModel = class {
2201
2266
  const language = response.language != null && response.language in languageMap ? languageMap[response.language] : void 0;
2202
2267
  return {
2203
2268
  text: response.text,
2204
- segments: (_g = (_f = (_d = response.segments) == null ? void 0 : _d.map((segment) => ({
2269
+ segments: (_i = (_h = (_f = response.segments) == null ? void 0 : _f.map((segment) => ({
2205
2270
  text: segment.text,
2206
2271
  startSecond: segment.start,
2207
2272
  endSecond: segment.end
2208
- }))) != null ? _f : (_e = response.words) == null ? void 0 : _e.map((word) => ({
2273
+ }))) != null ? _h : (_g = response.words) == null ? void 0 : _g.map((word) => ({
2209
2274
  text: word.word,
2210
2275
  startSecond: word.start,
2211
2276
  endSecond: word.end
2212
- }))) != null ? _g : [],
2277
+ }))) != null ? _i : [],
2213
2278
  language,
2214
- durationInSeconds: (_h = response.duration) != null ? _h : void 0,
2279
+ durationInSeconds: (_j = response.duration) != null ? _j : void 0,
2215
2280
  warnings,
2216
2281
  response: {
2217
2282
  timestamp: currentDate,
@@ -2228,7 +2293,10 @@ import {
2228
2293
  combineHeaders as combineHeaders6,
2229
2294
  createBinaryResponseHandler,
2230
2295
  parseProviderOptions as parseProviderOptions5,
2231
- postJsonToApi as postJsonToApi5
2296
+ postJsonToApi as postJsonToApi5,
2297
+ serializeModelOptions as serializeModelOptions6,
2298
+ WORKFLOW_DESERIALIZE as WORKFLOW_DESERIALIZE6,
2299
+ WORKFLOW_SERIALIZE as WORKFLOW_SERIALIZE6
2232
2300
  } from "@ai-sdk/provider-utils";
2233
2301
 
2234
2302
  // src/speech/openai-speech-options.ts
@@ -2244,12 +2312,21 @@ var openaiSpeechModelOptionsSchema = lazySchema10(
2244
2312
  );
2245
2313
 
2246
2314
  // src/speech/openai-speech-model.ts
2247
- var OpenAISpeechModel = class {
2315
+ var OpenAISpeechModel = class _OpenAISpeechModel {
2248
2316
  constructor(modelId, config) {
2249
2317
  this.modelId = modelId;
2250
2318
  this.config = config;
2251
2319
  this.specificationVersion = "v4";
2252
2320
  }
2321
+ static [WORKFLOW_SERIALIZE6](model) {
2322
+ return serializeModelOptions6({
2323
+ modelId: model.modelId,
2324
+ config: model.config
2325
+ });
2326
+ }
2327
+ static [WORKFLOW_DESERIALIZE6](options) {
2328
+ return new _OpenAISpeechModel(options.modelId, options.config);
2329
+ }
2253
2330
  get provider() {
2254
2331
  return this.config.provider;
2255
2332
  }
@@ -2309,7 +2386,7 @@ var OpenAISpeechModel = class {
2309
2386
  };
2310
2387
  }
2311
2388
  async doGenerate(options) {
2312
- var _a, _b, _c;
2389
+ var _a, _b, _c, _d, _e;
2313
2390
  const currentDate = (_c = (_b = (_a = this.config._internal) == null ? void 0 : _a.currentDate) == null ? void 0 : _b.call(_a)) != null ? _c : /* @__PURE__ */ new Date();
2314
2391
  const { requestBody, warnings } = await this.getArgs(options);
2315
2392
  const {
@@ -2321,7 +2398,7 @@ var OpenAISpeechModel = class {
2321
2398
  path: "/audio/speech",
2322
2399
  modelId: this.modelId
2323
2400
  }),
2324
- headers: combineHeaders6(this.config.headers(), options.headers),
2401
+ headers: combineHeaders6((_e = (_d = this.config).headers) == null ? void 0 : _e.call(_d), options.headers),
2325
2402
  body: requestBody,
2326
2403
  failedResponseHandler: openaiFailedResponseHandler,
2327
2404
  successfulResponseHandler: createBinaryResponseHandler(),
@@ -2356,7 +2433,10 @@ import {
2356
2433
  generateId as generateId2,
2357
2434
  isCustomReasoning as isCustomReasoning2,
2358
2435
  parseProviderOptions as parseProviderOptions7,
2359
- postJsonToApi as postJsonToApi6
2436
+ postJsonToApi as postJsonToApi6,
2437
+ serializeModelOptions as serializeModelOptions7,
2438
+ WORKFLOW_DESERIALIZE as WORKFLOW_DESERIALIZE7,
2439
+ WORKFLOW_SERIALIZE as WORKFLOW_SERIALIZE7
2360
2440
  } from "@ai-sdk/provider-utils";
2361
2441
 
2362
2442
  // src/responses/convert-openai-responses-usage.ts
@@ -2628,6 +2708,9 @@ var toolSearchToolFactory = createProviderToolFactoryWithOutputSchema4({
2628
2708
  });
2629
2709
 
2630
2710
  // src/responses/convert-to-openai-responses-input.ts
2711
+ function serializeToolCallArguments2(input) {
2712
+ return JSON.stringify(input === void 0 ? {} : input);
2713
+ }
2631
2714
  function isFileId(data, prefixes) {
2632
2715
  if (!prefixes) return false;
2633
2716
  return prefixes.some((prefix) => data.startsWith(prefix));
@@ -2868,7 +2951,7 @@ async function convertToOpenAIResponsesInput({
2868
2951
  type: "function_call",
2869
2952
  call_id: part.toolCallId,
2870
2953
  name: resolvedToolName,
2871
- arguments: JSON.stringify(part.input),
2954
+ arguments: serializeToolCallArguments2(part.input),
2872
2955
  id
2873
2956
  });
2874
2957
  break;
@@ -3144,23 +3227,25 @@ async function convertToOpenAIResponsesInput({
3144
3227
  switch (item.type) {
3145
3228
  case "text":
3146
3229
  return { type: "input_text", text: item.text };
3147
- case "image-data":
3148
- return {
3149
- type: "input_image",
3150
- image_url: `data:${item.mediaType};base64,${item.data}`
3151
- };
3152
- case "image-url":
3153
- return {
3154
- type: "input_image",
3155
- image_url: item.url
3156
- };
3157
3230
  case "file-data":
3231
+ if (item.mediaType.startsWith("image/")) {
3232
+ return {
3233
+ type: "input_image",
3234
+ image_url: `data:${item.mediaType};base64,${item.data}`
3235
+ };
3236
+ }
3158
3237
  return {
3159
3238
  type: "input_file",
3160
3239
  filename: (_a2 = item.filename) != null ? _a2 : "data",
3161
3240
  file_data: `data:${item.mediaType};base64,${item.data}`
3162
3241
  };
3163
3242
  case "file-url":
3243
+ if (item.mediaType.startsWith("image/")) {
3244
+ return {
3245
+ type: "input_image",
3246
+ image_url: item.url
3247
+ };
3248
+ }
3164
3249
  return {
3165
3250
  type: "input_file",
3166
3251
  file_url: item.url
@@ -3204,19 +3289,13 @@ async function convertToOpenAIResponsesInput({
3204
3289
  case "text": {
3205
3290
  return { type: "input_text", text: item.text };
3206
3291
  }
3207
- case "image-data": {
3208
- return {
3209
- type: "input_image",
3210
- image_url: `data:${item.mediaType};base64,${item.data}`
3211
- };
3212
- }
3213
- case "image-url": {
3214
- return {
3215
- type: "input_image",
3216
- image_url: item.url
3217
- };
3218
- }
3219
3292
  case "file-data": {
3293
+ if (item.mediaType.startsWith("image/")) {
3294
+ return {
3295
+ type: "input_image",
3296
+ image_url: `data:${item.mediaType};base64,${item.data}`
3297
+ };
3298
+ }
3220
3299
  return {
3221
3300
  type: "input_file",
3222
3301
  filename: (_a2 = item.filename) != null ? _a2 : "data",
@@ -3224,6 +3303,12 @@ async function convertToOpenAIResponsesInput({
3224
3303
  };
3225
3304
  }
3226
3305
  case "file-url": {
3306
+ if (item.mediaType.startsWith("image/")) {
3307
+ return {
3308
+ type: "input_image",
3309
+ image_url: item.url
3310
+ };
3311
+ }
3227
3312
  return {
3228
3313
  type: "input_file",
3229
3314
  file_url: item.url
@@ -5026,7 +5111,7 @@ function extractApprovalRequestIdToToolCallIdMapping(prompt) {
5026
5111
  }
5027
5112
  return mapping;
5028
5113
  }
5029
- var OpenAIResponsesLanguageModel = class {
5114
+ var OpenAIResponsesLanguageModel = class _OpenAIResponsesLanguageModel {
5030
5115
  constructor(modelId, config) {
5031
5116
  this.specificationVersion = "v4";
5032
5117
  this.supportedUrls = {
@@ -5036,6 +5121,15 @@ var OpenAIResponsesLanguageModel = class {
5036
5121
  this.modelId = modelId;
5037
5122
  this.config = config;
5038
5123
  }
5124
+ static [WORKFLOW_SERIALIZE7](model) {
5125
+ return serializeModelOptions7({
5126
+ modelId: model.modelId,
5127
+ config: model.config
5128
+ });
5129
+ }
5130
+ static [WORKFLOW_DESERIALIZE7](options) {
5131
+ return new _OpenAIResponsesLanguageModel(options.modelId, options.config);
5132
+ }
5039
5133
  get provider() {
5040
5134
  return this.config.provider;
5041
5135
  }
@@ -5291,7 +5385,7 @@ var OpenAIResponsesLanguageModel = class {
5291
5385
  };
5292
5386
  }
5293
5387
  async doGenerate(options) {
5294
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B;
5388
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D;
5295
5389
  const {
5296
5390
  args: body,
5297
5391
  warnings,
@@ -5311,7 +5405,7 @@ var OpenAIResponsesLanguageModel = class {
5311
5405
  rawValue: rawResponse
5312
5406
  } = await postJsonToApi6({
5313
5407
  url,
5314
- headers: combineHeaders7(this.config.headers(), options.headers),
5408
+ headers: combineHeaders7((_b = (_a = this.config).headers) == null ? void 0 : _b.call(_a), options.headers),
5315
5409
  body,
5316
5410
  failedResponseHandler: openaiFailedResponseHandler,
5317
5411
  successfulResponseHandler: createJsonResponseHandler6(
@@ -5348,7 +5442,7 @@ var OpenAIResponsesLanguageModel = class {
5348
5442
  providerMetadata: {
5349
5443
  [providerOptionsName]: {
5350
5444
  itemId: part.id,
5351
- reasoningEncryptedContent: (_a = part.encrypted_content) != null ? _a : null
5445
+ reasoningEncryptedContent: (_c = part.encrypted_content) != null ? _c : null
5352
5446
  }
5353
5447
  }
5354
5448
  });
@@ -5374,7 +5468,7 @@ var OpenAIResponsesLanguageModel = class {
5374
5468
  break;
5375
5469
  }
5376
5470
  case "tool_search_call": {
5377
- const toolCallId = (_b = part.call_id) != null ? _b : part.id;
5471
+ const toolCallId = (_d = part.call_id) != null ? _d : part.id;
5378
5472
  const isHosted = part.execution === "server";
5379
5473
  if (isHosted) {
5380
5474
  hostedToolSearchCallIds.push(toolCallId);
@@ -5397,7 +5491,7 @@ var OpenAIResponsesLanguageModel = class {
5397
5491
  break;
5398
5492
  }
5399
5493
  case "tool_search_output": {
5400
- const toolCallId = (_d = (_c = part.call_id) != null ? _c : hostedToolSearchCallIds.shift()) != null ? _d : part.id;
5494
+ const toolCallId = (_f = (_e = part.call_id) != null ? _e : hostedToolSearchCallIds.shift()) != null ? _f : part.id;
5401
5495
  content.push({
5402
5496
  type: "tool-result",
5403
5497
  toolCallId,
@@ -5468,7 +5562,7 @@ var OpenAIResponsesLanguageModel = class {
5468
5562
  }
5469
5563
  case "message": {
5470
5564
  for (const contentPart of part.content) {
5471
- if (((_f = (_e = options.providerOptions) == null ? void 0 : _e[providerOptionsName]) == null ? void 0 : _f.logprobs) && contentPart.logprobs) {
5565
+ if (((_h = (_g = options.providerOptions) == null ? void 0 : _g[providerOptionsName]) == null ? void 0 : _h.logprobs) && contentPart.logprobs) {
5472
5566
  logprobs.push(contentPart.logprobs);
5473
5567
  }
5474
5568
  const providerMetadata2 = {
@@ -5490,7 +5584,7 @@ var OpenAIResponsesLanguageModel = class {
5490
5584
  content.push({
5491
5585
  type: "source",
5492
5586
  sourceType: "url",
5493
- id: (_i = (_h = (_g = this.config).generateId) == null ? void 0 : _h.call(_g)) != null ? _i : generateId2(),
5587
+ id: (_k = (_j = (_i = this.config).generateId) == null ? void 0 : _j.call(_i)) != null ? _k : generateId2(),
5494
5588
  url: annotation.url,
5495
5589
  title: annotation.title
5496
5590
  });
@@ -5498,7 +5592,7 @@ var OpenAIResponsesLanguageModel = class {
5498
5592
  content.push({
5499
5593
  type: "source",
5500
5594
  sourceType: "document",
5501
- id: (_l = (_k = (_j = this.config).generateId) == null ? void 0 : _k.call(_j)) != null ? _l : generateId2(),
5595
+ id: (_n = (_m = (_l = this.config).generateId) == null ? void 0 : _m.call(_l)) != null ? _n : generateId2(),
5502
5596
  mediaType: "text/plain",
5503
5597
  title: annotation.filename,
5504
5598
  filename: annotation.filename,
@@ -5514,7 +5608,7 @@ var OpenAIResponsesLanguageModel = class {
5514
5608
  content.push({
5515
5609
  type: "source",
5516
5610
  sourceType: "document",
5517
- id: (_o = (_n = (_m = this.config).generateId) == null ? void 0 : _n.call(_m)) != null ? _o : generateId2(),
5611
+ id: (_q = (_p = (_o = this.config).generateId) == null ? void 0 : _p.call(_o)) != null ? _q : generateId2(),
5518
5612
  mediaType: "text/plain",
5519
5613
  title: annotation.filename,
5520
5614
  filename: annotation.filename,
@@ -5530,7 +5624,7 @@ var OpenAIResponsesLanguageModel = class {
5530
5624
  content.push({
5531
5625
  type: "source",
5532
5626
  sourceType: "document",
5533
- id: (_r = (_q = (_p = this.config).generateId) == null ? void 0 : _q.call(_p)) != null ? _r : generateId2(),
5627
+ id: (_t = (_s = (_r = this.config).generateId) == null ? void 0 : _s.call(_r)) != null ? _t : generateId2(),
5534
5628
  mediaType: "application/octet-stream",
5535
5629
  title: annotation.file_id,
5536
5630
  filename: annotation.file_id,
@@ -5599,7 +5693,7 @@ var OpenAIResponsesLanguageModel = class {
5599
5693
  break;
5600
5694
  }
5601
5695
  case "mcp_call": {
5602
- const toolCallId = part.approval_request_id != null ? (_s = approvalRequestIdToDummyToolCallIdFromPrompt[part.approval_request_id]) != null ? _s : part.id : part.id;
5696
+ const toolCallId = part.approval_request_id != null ? (_u = approvalRequestIdToDummyToolCallIdFromPrompt[part.approval_request_id]) != null ? _u : part.id : part.id;
5603
5697
  const toolName = `mcp.${part.name}`;
5604
5698
  content.push({
5605
5699
  type: "tool-call",
@@ -5633,8 +5727,8 @@ var OpenAIResponsesLanguageModel = class {
5633
5727
  break;
5634
5728
  }
5635
5729
  case "mcp_approval_request": {
5636
- const approvalRequestId = (_t = part.approval_request_id) != null ? _t : part.id;
5637
- const dummyToolCallId = (_w = (_v = (_u = this.config).generateId) == null ? void 0 : _v.call(_u)) != null ? _w : generateId2();
5730
+ const approvalRequestId = (_v = part.approval_request_id) != null ? _v : part.id;
5731
+ const dummyToolCallId = (_y = (_x = (_w = this.config).generateId) == null ? void 0 : _x.call(_w)) != null ? _y : generateId2();
5638
5732
  const toolName = `mcp.${part.name}`;
5639
5733
  content.push({
5640
5734
  type: "tool-call",
@@ -5684,13 +5778,13 @@ var OpenAIResponsesLanguageModel = class {
5684
5778
  toolName: toolNameMapping.toCustomToolName("file_search"),
5685
5779
  result: {
5686
5780
  queries: part.queries,
5687
- results: (_y = (_x = part.results) == null ? void 0 : _x.map((result) => ({
5781
+ results: (_A = (_z = part.results) == null ? void 0 : _z.map((result) => ({
5688
5782
  attributes: result.attributes,
5689
5783
  fileId: result.file_id,
5690
5784
  filename: result.filename,
5691
5785
  score: result.score,
5692
5786
  text: result.text
5693
- }))) != null ? _y : null
5787
+ }))) != null ? _A : null
5694
5788
  }
5695
5789
  });
5696
5790
  break;
@@ -5761,10 +5855,10 @@ var OpenAIResponsesLanguageModel = class {
5761
5855
  content,
5762
5856
  finishReason: {
5763
5857
  unified: mapOpenAIResponseFinishReason({
5764
- finishReason: (_z = response.incomplete_details) == null ? void 0 : _z.reason,
5858
+ finishReason: (_B = response.incomplete_details) == null ? void 0 : _B.reason,
5765
5859
  hasFunctionCall
5766
5860
  }),
5767
- raw: (_B = (_A = response.incomplete_details) == null ? void 0 : _A.reason) != null ? _B : void 0
5861
+ raw: (_D = (_C = response.incomplete_details) == null ? void 0 : _C.reason) != null ? _D : void 0
5768
5862
  },
5769
5863
  usage: convertOpenAIResponsesUsage(usage),
5770
5864
  request: { body },
@@ -5780,6 +5874,7 @@ var OpenAIResponsesLanguageModel = class {
5780
5874
  };
5781
5875
  }
5782
5876
  async doStream(options) {
5877
+ var _a, _b;
5783
5878
  const {
5784
5879
  args: body,
5785
5880
  warnings,
@@ -5794,7 +5889,7 @@ var OpenAIResponsesLanguageModel = class {
5794
5889
  path: "/responses",
5795
5890
  modelId: this.modelId
5796
5891
  }),
5797
- headers: combineHeaders7(this.config.headers(), options.headers),
5892
+ headers: combineHeaders7((_b = (_a = this.config).headers) == null ? void 0 : _b.call(_a), options.headers),
5798
5893
  body: {
5799
5894
  ...body,
5800
5895
  stream: true
@@ -5830,7 +5925,7 @@ var OpenAIResponsesLanguageModel = class {
5830
5925
  controller.enqueue({ type: "stream-start", warnings });
5831
5926
  },
5832
5927
  transform(chunk, controller) {
5833
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D, _E, _F, _G, _H, _I, _J, _K, _L;
5928
+ var _a2, _b2, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D, _E, _F, _G, _H, _I, _J, _K, _L;
5834
5929
  if (options.includeRawChunks) {
5835
5930
  controller.enqueue({ type: "raw", rawValue: chunk.rawValue });
5836
5931
  }
@@ -5945,7 +6040,7 @@ var OpenAIResponsesLanguageModel = class {
5945
6040
  ongoingToolCalls[value.output_index] = {
5946
6041
  toolName,
5947
6042
  toolCallId,
5948
- toolSearchExecution: (_a = value.item.execution) != null ? _a : "server"
6043
+ toolSearchExecution: (_a2 = value.item.execution) != null ? _a2 : "server"
5949
6044
  };
5950
6045
  if (isHosted) {
5951
6046
  controller.enqueue({
@@ -6002,7 +6097,7 @@ var OpenAIResponsesLanguageModel = class {
6002
6097
  } else if (value.item.type === "shell_call_output") {
6003
6098
  } else if (value.item.type === "message") {
6004
6099
  ongoingAnnotations.splice(0, ongoingAnnotations.length);
6005
- activeMessagePhase = (_b = value.item.phase) != null ? _b : void 0;
6100
+ activeMessagePhase = (_b2 = value.item.phase) != null ? _b2 : void 0;
6006
6101
  controller.enqueue({
6007
6102
  type: "text-start",
6008
6103
  id: value.item.id,