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

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
@@ -644,7 +647,7 @@ function prepareChatTools({
644
647
  }
645
648
 
646
649
  // src/chat/openai-chat-language-model.ts
647
- var OpenAIChatLanguageModel = class {
650
+ var OpenAIChatLanguageModel = class _OpenAIChatLanguageModel {
648
651
  constructor(modelId, config) {
649
652
  this.specificationVersion = "v4";
650
653
  this.supportedUrls = {
@@ -653,6 +656,15 @@ var OpenAIChatLanguageModel = class {
653
656
  this.modelId = modelId;
654
657
  this.config = config;
655
658
  }
659
+ static [WORKFLOW_SERIALIZE](model) {
660
+ return serializeModelOptions({
661
+ modelId: model.modelId,
662
+ config: model.config
663
+ });
664
+ }
665
+ static [WORKFLOW_DESERIALIZE](options) {
666
+ return new _OpenAIChatLanguageModel(options.modelId, options.config);
667
+ }
656
668
  get provider() {
657
669
  return this.config.provider;
658
670
  }
@@ -840,7 +852,7 @@ var OpenAIChatLanguageModel = class {
840
852
  };
841
853
  }
842
854
  async doGenerate(options) {
843
- var _a, _b, _c, _d, _e, _f;
855
+ var _a, _b, _c, _d, _e, _f, _g, _h;
844
856
  const { args: body, warnings } = await this.getArgs(options);
845
857
  const {
846
858
  responseHeaders,
@@ -851,7 +863,7 @@ var OpenAIChatLanguageModel = class {
851
863
  path: "/chat/completions",
852
864
  modelId: this.modelId
853
865
  }),
854
- headers: combineHeaders(this.config.headers(), options.headers),
866
+ headers: combineHeaders((_b = (_a = this.config).headers) == null ? void 0 : _b.call(_a), options.headers),
855
867
  body,
856
868
  failedResponseHandler: openaiFailedResponseHandler,
857
869
  successfulResponseHandler: createJsonResponseHandler(
@@ -866,15 +878,15 @@ var OpenAIChatLanguageModel = class {
866
878
  if (text != null && text.length > 0) {
867
879
  content.push({ type: "text", text });
868
880
  }
869
- for (const toolCall of (_a = choice.message.tool_calls) != null ? _a : []) {
881
+ for (const toolCall of (_c = choice.message.tool_calls) != null ? _c : []) {
870
882
  content.push({
871
883
  type: "tool-call",
872
- toolCallId: (_b = toolCall.id) != null ? _b : generateId(),
884
+ toolCallId: (_d = toolCall.id) != null ? _d : generateId(),
873
885
  toolName: toolCall.function.name,
874
886
  input: toolCall.function.arguments
875
887
  });
876
888
  }
877
- for (const annotation of (_c = choice.message.annotations) != null ? _c : []) {
889
+ for (const annotation of (_e = choice.message.annotations) != null ? _e : []) {
878
890
  content.push({
879
891
  type: "source",
880
892
  sourceType: "url",
@@ -883,7 +895,7 @@ var OpenAIChatLanguageModel = class {
883
895
  title: annotation.url_citation.title
884
896
  });
885
897
  }
886
- const completionTokenDetails = (_d = response.usage) == null ? void 0 : _d.completion_tokens_details;
898
+ const completionTokenDetails = (_f = response.usage) == null ? void 0 : _f.completion_tokens_details;
887
899
  const providerMetadata = { openai: {} };
888
900
  if ((completionTokenDetails == null ? void 0 : completionTokenDetails.accepted_prediction_tokens) != null) {
889
901
  providerMetadata.openai.acceptedPredictionTokens = completionTokenDetails == null ? void 0 : completionTokenDetails.accepted_prediction_tokens;
@@ -891,14 +903,14 @@ var OpenAIChatLanguageModel = class {
891
903
  if ((completionTokenDetails == null ? void 0 : completionTokenDetails.rejected_prediction_tokens) != null) {
892
904
  providerMetadata.openai.rejectedPredictionTokens = completionTokenDetails == null ? void 0 : completionTokenDetails.rejected_prediction_tokens;
893
905
  }
894
- if (((_e = choice.logprobs) == null ? void 0 : _e.content) != null) {
906
+ if (((_g = choice.logprobs) == null ? void 0 : _g.content) != null) {
895
907
  providerMetadata.openai.logprobs = choice.logprobs.content;
896
908
  }
897
909
  return {
898
910
  content,
899
911
  finishReason: {
900
912
  unified: mapOpenAIFinishReason(choice.finish_reason),
901
- raw: (_f = choice.finish_reason) != null ? _f : void 0
913
+ raw: (_h = choice.finish_reason) != null ? _h : void 0
902
914
  },
903
915
  usage: convertOpenAIChatUsage(response.usage),
904
916
  request: { body },
@@ -912,6 +924,7 @@ var OpenAIChatLanguageModel = class {
912
924
  };
913
925
  }
914
926
  async doStream(options) {
927
+ var _a, _b;
915
928
  const { args, warnings } = await this.getArgs(options);
916
929
  const body = {
917
930
  ...args,
@@ -925,7 +938,7 @@ var OpenAIChatLanguageModel = class {
925
938
  path: "/chat/completions",
926
939
  modelId: this.modelId
927
940
  }),
928
- headers: combineHeaders(this.config.headers(), options.headers),
941
+ headers: combineHeaders((_b = (_a = this.config).headers) == null ? void 0 : _b.call(_a), options.headers),
929
942
  body,
930
943
  failedResponseHandler: openaiFailedResponseHandler,
931
944
  successfulResponseHandler: createEventSourceResponseHandler(
@@ -950,7 +963,7 @@ var OpenAIChatLanguageModel = class {
950
963
  controller.enqueue({ type: "stream-start", warnings });
951
964
  },
952
965
  transform(chunk, controller) {
953
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q;
966
+ var _a2, _b2, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q;
954
967
  if (options.includeRawChunks) {
955
968
  controller.enqueue({ type: "raw", rawValue: chunk.rawValue });
956
969
  }
@@ -977,8 +990,8 @@ var OpenAIChatLanguageModel = class {
977
990
  }
978
991
  if (value.usage != null) {
979
992
  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;
993
+ if (((_a2 = value.usage.completion_tokens_details) == null ? void 0 : _a2.accepted_prediction_tokens) != null) {
994
+ providerMetadata.openai.acceptedPredictionTokens = (_b2 = value.usage.completion_tokens_details) == null ? void 0 : _b2.accepted_prediction_tokens;
982
995
  }
983
996
  if (((_c = value.usage.completion_tokens_details) == null ? void 0 : _c.rejected_prediction_tokens) != null) {
984
997
  providerMetadata.openai.rejectedPredictionTokens = (_d = value.usage.completion_tokens_details) == null ? void 0 : _d.rejected_prediction_tokens;
@@ -1134,7 +1147,10 @@ import {
1134
1147
  createEventSourceResponseHandler as createEventSourceResponseHandler2,
1135
1148
  createJsonResponseHandler as createJsonResponseHandler2,
1136
1149
  parseProviderOptions as parseProviderOptions2,
1137
- postJsonToApi as postJsonToApi2
1150
+ postJsonToApi as postJsonToApi2,
1151
+ serializeModelOptions as serializeModelOptions2,
1152
+ WORKFLOW_DESERIALIZE as WORKFLOW_DESERIALIZE2,
1153
+ WORKFLOW_SERIALIZE as WORKFLOW_SERIALIZE2
1138
1154
  } from "@ai-sdk/provider-utils";
1139
1155
 
1140
1156
  // src/completion/convert-openai-completion-usage.ts
@@ -1389,7 +1405,7 @@ var openaiLanguageModelCompletionOptions = lazySchema4(
1389
1405
  );
1390
1406
 
1391
1407
  // src/completion/openai-completion-language-model.ts
1392
- var OpenAICompletionLanguageModel = class {
1408
+ var OpenAICompletionLanguageModel = class _OpenAICompletionLanguageModel {
1393
1409
  constructor(modelId, config) {
1394
1410
  this.specificationVersion = "v4";
1395
1411
  this.supportedUrls = {
@@ -1401,6 +1417,15 @@ var OpenAICompletionLanguageModel = class {
1401
1417
  get providerOptionsName() {
1402
1418
  return this.config.provider.split(".")[0].trim();
1403
1419
  }
1420
+ static [WORKFLOW_SERIALIZE2](model) {
1421
+ return serializeModelOptions2({
1422
+ modelId: model.modelId,
1423
+ config: model.config
1424
+ });
1425
+ }
1426
+ static [WORKFLOW_DESERIALIZE2](options) {
1427
+ return new _OpenAICompletionLanguageModel(options.modelId, options.config);
1428
+ }
1404
1429
  get provider() {
1405
1430
  return this.config.provider;
1406
1431
  }
@@ -1476,7 +1501,7 @@ var OpenAICompletionLanguageModel = class {
1476
1501
  };
1477
1502
  }
1478
1503
  async doGenerate(options) {
1479
- var _a;
1504
+ var _a, _b, _c;
1480
1505
  const { args, warnings } = await this.getArgs(options);
1481
1506
  const {
1482
1507
  responseHeaders,
@@ -1487,7 +1512,7 @@ var OpenAICompletionLanguageModel = class {
1487
1512
  path: "/completions",
1488
1513
  modelId: this.modelId
1489
1514
  }),
1490
- headers: combineHeaders2(this.config.headers(), options.headers),
1515
+ headers: combineHeaders2((_b = (_a = this.config).headers) == null ? void 0 : _b.call(_a), options.headers),
1491
1516
  body: args,
1492
1517
  failedResponseHandler: openaiFailedResponseHandler,
1493
1518
  successfulResponseHandler: createJsonResponseHandler2(
@@ -1506,7 +1531,7 @@ var OpenAICompletionLanguageModel = class {
1506
1531
  usage: convertOpenAICompletionUsage(response.usage),
1507
1532
  finishReason: {
1508
1533
  unified: mapOpenAIFinishReason2(choice.finish_reason),
1509
- raw: (_a = choice.finish_reason) != null ? _a : void 0
1534
+ raw: (_c = choice.finish_reason) != null ? _c : void 0
1510
1535
  },
1511
1536
  request: { body: args },
1512
1537
  response: {
@@ -1519,6 +1544,7 @@ var OpenAICompletionLanguageModel = class {
1519
1544
  };
1520
1545
  }
1521
1546
  async doStream(options) {
1547
+ var _a, _b;
1522
1548
  const { args, warnings } = await this.getArgs(options);
1523
1549
  const body = {
1524
1550
  ...args,
@@ -1532,7 +1558,7 @@ var OpenAICompletionLanguageModel = class {
1532
1558
  path: "/completions",
1533
1559
  modelId: this.modelId
1534
1560
  }),
1535
- headers: combineHeaders2(this.config.headers(), options.headers),
1561
+ headers: combineHeaders2((_b = (_a = this.config).headers) == null ? void 0 : _b.call(_a), options.headers),
1536
1562
  body,
1537
1563
  failedResponseHandler: openaiFailedResponseHandler,
1538
1564
  successfulResponseHandler: createEventSourceResponseHandler2(
@@ -1625,7 +1651,10 @@ import {
1625
1651
  combineHeaders as combineHeaders3,
1626
1652
  createJsonResponseHandler as createJsonResponseHandler3,
1627
1653
  parseProviderOptions as parseProviderOptions3,
1628
- postJsonToApi as postJsonToApi3
1654
+ postJsonToApi as postJsonToApi3,
1655
+ serializeModelOptions as serializeModelOptions3,
1656
+ WORKFLOW_DESERIALIZE as WORKFLOW_DESERIALIZE3,
1657
+ WORKFLOW_SERIALIZE as WORKFLOW_SERIALIZE3
1629
1658
  } from "@ai-sdk/provider-utils";
1630
1659
 
1631
1660
  // src/embedding/openai-embedding-options.ts
@@ -1661,7 +1690,7 @@ var openaiTextEmbeddingResponseSchema = lazySchema6(
1661
1690
  );
1662
1691
 
1663
1692
  // src/embedding/openai-embedding-model.ts
1664
- var OpenAIEmbeddingModel = class {
1693
+ var OpenAIEmbeddingModel = class _OpenAIEmbeddingModel {
1665
1694
  constructor(modelId, config) {
1666
1695
  this.specificationVersion = "v4";
1667
1696
  this.maxEmbeddingsPerCall = 2048;
@@ -1669,6 +1698,15 @@ var OpenAIEmbeddingModel = class {
1669
1698
  this.modelId = modelId;
1670
1699
  this.config = config;
1671
1700
  }
1701
+ static [WORKFLOW_SERIALIZE3](model) {
1702
+ return serializeModelOptions3({
1703
+ modelId: model.modelId,
1704
+ config: model.config
1705
+ });
1706
+ }
1707
+ static [WORKFLOW_DESERIALIZE3](options) {
1708
+ return new _OpenAIEmbeddingModel(options.modelId, options.config);
1709
+ }
1672
1710
  get provider() {
1673
1711
  return this.config.provider;
1674
1712
  }
@@ -1678,7 +1716,7 @@ var OpenAIEmbeddingModel = class {
1678
1716
  abortSignal,
1679
1717
  providerOptions
1680
1718
  }) {
1681
- var _a;
1719
+ var _a, _b, _c;
1682
1720
  if (values.length > this.maxEmbeddingsPerCall) {
1683
1721
  throw new TooManyEmbeddingValuesForCallError({
1684
1722
  provider: this.provider,
@@ -1701,7 +1739,7 @@ var OpenAIEmbeddingModel = class {
1701
1739
  path: "/embeddings",
1702
1740
  modelId: this.modelId
1703
1741
  }),
1704
- headers: combineHeaders3(this.config.headers(), headers),
1742
+ headers: combineHeaders3((_c = (_b = this.config).headers) == null ? void 0 : _c.call(_b), headers),
1705
1743
  body: {
1706
1744
  model: this.modelId,
1707
1745
  input: values,
@@ -1733,7 +1771,10 @@ import {
1733
1771
  createJsonResponseHandler as createJsonResponseHandler4,
1734
1772
  downloadBlob,
1735
1773
  postFormDataToApi,
1736
- postJsonToApi as postJsonToApi4
1774
+ postJsonToApi as postJsonToApi4,
1775
+ serializeModelOptions as serializeModelOptions4,
1776
+ WORKFLOW_DESERIALIZE as WORKFLOW_DESERIALIZE4,
1777
+ WORKFLOW_SERIALIZE as WORKFLOW_SERIALIZE4
1737
1778
  } from "@ai-sdk/provider-utils";
1738
1779
 
1739
1780
  // src/image/openai-image-api.ts
@@ -1788,12 +1829,21 @@ function hasDefaultResponseFormat(modelId) {
1788
1829
  }
1789
1830
 
1790
1831
  // src/image/openai-image-model.ts
1791
- var OpenAIImageModel = class {
1832
+ var OpenAIImageModel = class _OpenAIImageModel {
1792
1833
  constructor(modelId, config) {
1793
1834
  this.modelId = modelId;
1794
1835
  this.config = config;
1795
1836
  this.specificationVersion = "v4";
1796
1837
  }
1838
+ static [WORKFLOW_SERIALIZE4](model) {
1839
+ return serializeModelOptions4({
1840
+ modelId: model.modelId,
1841
+ config: model.config
1842
+ });
1843
+ }
1844
+ static [WORKFLOW_DESERIALIZE4](options) {
1845
+ return new _OpenAIImageModel(options.modelId, options.config);
1846
+ }
1797
1847
  get maxImagesPerCall() {
1798
1848
  var _a;
1799
1849
  return (_a = modelMaxImagesPerCall[this.modelId]) != null ? _a : 1;
@@ -1813,7 +1863,7 @@ var OpenAIImageModel = class {
1813
1863
  headers,
1814
1864
  abortSignal
1815
1865
  }) {
1816
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;
1866
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o;
1817
1867
  const warnings = [];
1818
1868
  if (aspectRatio != null) {
1819
1869
  warnings.push({
@@ -1832,7 +1882,7 @@ var OpenAIImageModel = class {
1832
1882
  path: "/images/edits",
1833
1883
  modelId: this.modelId
1834
1884
  }),
1835
- headers: combineHeaders4(this.config.headers(), headers),
1885
+ headers: combineHeaders4((_e = (_d = this.config).headers) == null ? void 0 : _e.call(_d), headers),
1836
1886
  formData: convertToFormData({
1837
1887
  model: this.modelId,
1838
1888
  prompt,
@@ -1853,7 +1903,7 @@ var OpenAIImageModel = class {
1853
1903
  mask: mask != null ? await fileToBlob(mask) : void 0,
1854
1904
  n,
1855
1905
  size,
1856
- ...(_d = providerOptions.openai) != null ? _d : {}
1906
+ ...(_f = providerOptions.openai) != null ? _f : {}
1857
1907
  }),
1858
1908
  failedResponseHandler: openaiFailedResponseHandler,
1859
1909
  successfulResponseHandler: createJsonResponseHandler4(
@@ -1866,9 +1916,9 @@ var OpenAIImageModel = class {
1866
1916
  images: response2.data.map((item) => item.b64_json),
1867
1917
  warnings,
1868
1918
  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
1919
+ inputTokens: (_g = response2.usage.input_tokens) != null ? _g : void 0,
1920
+ outputTokens: (_h = response2.usage.output_tokens) != null ? _h : void 0,
1921
+ totalTokens: (_i = response2.usage.total_tokens) != null ? _i : void 0
1872
1922
  } : void 0,
1873
1923
  response: {
1874
1924
  timestamp: currentDate,
@@ -1902,13 +1952,13 @@ var OpenAIImageModel = class {
1902
1952
  path: "/images/generations",
1903
1953
  modelId: this.modelId
1904
1954
  }),
1905
- headers: combineHeaders4(this.config.headers(), headers),
1955
+ headers: combineHeaders4((_k = (_j = this.config).headers) == null ? void 0 : _k.call(_j), headers),
1906
1956
  body: {
1907
1957
  model: this.modelId,
1908
1958
  prompt,
1909
1959
  n,
1910
1960
  size,
1911
- ...(_h = providerOptions.openai) != null ? _h : {},
1961
+ ...(_l = providerOptions.openai) != null ? _l : {},
1912
1962
  ...!hasDefaultResponseFormat(this.modelId) ? { response_format: "b64_json" } : {}
1913
1963
  },
1914
1964
  failedResponseHandler: openaiFailedResponseHandler,
@@ -1922,9 +1972,9 @@ var OpenAIImageModel = class {
1922
1972
  images: response.data.map((item) => item.b64_json),
1923
1973
  warnings,
1924
1974
  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
1975
+ inputTokens: (_m = response.usage.input_tokens) != null ? _m : void 0,
1976
+ outputTokens: (_n = response.usage.output_tokens) != null ? _n : void 0,
1977
+ totalTokens: (_o = response.usage.total_tokens) != null ? _o : void 0
1928
1978
  } : void 0,
1929
1979
  response: {
1930
1980
  timestamp: currentDate,
@@ -1987,7 +2037,10 @@ import {
1987
2037
  createJsonResponseHandler as createJsonResponseHandler5,
1988
2038
  mediaTypeToExtension,
1989
2039
  parseProviderOptions as parseProviderOptions4,
1990
- postFormDataToApi as postFormDataToApi2
2040
+ postFormDataToApi as postFormDataToApi2,
2041
+ serializeModelOptions as serializeModelOptions5,
2042
+ WORKFLOW_DESERIALIZE as WORKFLOW_DESERIALIZE5,
2043
+ WORKFLOW_SERIALIZE as WORKFLOW_SERIALIZE5
1991
2044
  } from "@ai-sdk/provider-utils";
1992
2045
 
1993
2046
  // src/transcription/openai-transcription-api.ts
@@ -2116,12 +2169,21 @@ var languageMap = {
2116
2169
  vietnamese: "vi",
2117
2170
  welsh: "cy"
2118
2171
  };
2119
- var OpenAITranscriptionModel = class {
2172
+ var OpenAITranscriptionModel = class _OpenAITranscriptionModel {
2120
2173
  constructor(modelId, config) {
2121
2174
  this.modelId = modelId;
2122
2175
  this.config = config;
2123
2176
  this.specificationVersion = "v4";
2124
2177
  }
2178
+ static [WORKFLOW_SERIALIZE5](model) {
2179
+ return serializeModelOptions5({
2180
+ modelId: model.modelId,
2181
+ config: model.config
2182
+ });
2183
+ }
2184
+ static [WORKFLOW_DESERIALIZE5](options) {
2185
+ return new _OpenAITranscriptionModel(options.modelId, options.config);
2186
+ }
2125
2187
  get provider() {
2126
2188
  return this.config.provider;
2127
2189
  }
@@ -2177,7 +2239,7 @@ var OpenAITranscriptionModel = class {
2177
2239
  };
2178
2240
  }
2179
2241
  async doGenerate(options) {
2180
- var _a, _b, _c, _d, _e, _f, _g, _h;
2242
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
2181
2243
  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
2244
  const { formData, warnings } = await this.getArgs(options);
2183
2245
  const {
@@ -2189,7 +2251,7 @@ var OpenAITranscriptionModel = class {
2189
2251
  path: "/audio/transcriptions",
2190
2252
  modelId: this.modelId
2191
2253
  }),
2192
- headers: combineHeaders5(this.config.headers(), options.headers),
2254
+ headers: combineHeaders5((_e = (_d = this.config).headers) == null ? void 0 : _e.call(_d), options.headers),
2193
2255
  formData,
2194
2256
  failedResponseHandler: openaiFailedResponseHandler,
2195
2257
  successfulResponseHandler: createJsonResponseHandler5(
@@ -2201,17 +2263,17 @@ var OpenAITranscriptionModel = class {
2201
2263
  const language = response.language != null && response.language in languageMap ? languageMap[response.language] : void 0;
2202
2264
  return {
2203
2265
  text: response.text,
2204
- segments: (_g = (_f = (_d = response.segments) == null ? void 0 : _d.map((segment) => ({
2266
+ segments: (_i = (_h = (_f = response.segments) == null ? void 0 : _f.map((segment) => ({
2205
2267
  text: segment.text,
2206
2268
  startSecond: segment.start,
2207
2269
  endSecond: segment.end
2208
- }))) != null ? _f : (_e = response.words) == null ? void 0 : _e.map((word) => ({
2270
+ }))) != null ? _h : (_g = response.words) == null ? void 0 : _g.map((word) => ({
2209
2271
  text: word.word,
2210
2272
  startSecond: word.start,
2211
2273
  endSecond: word.end
2212
- }))) != null ? _g : [],
2274
+ }))) != null ? _i : [],
2213
2275
  language,
2214
- durationInSeconds: (_h = response.duration) != null ? _h : void 0,
2276
+ durationInSeconds: (_j = response.duration) != null ? _j : void 0,
2215
2277
  warnings,
2216
2278
  response: {
2217
2279
  timestamp: currentDate,
@@ -2228,7 +2290,10 @@ import {
2228
2290
  combineHeaders as combineHeaders6,
2229
2291
  createBinaryResponseHandler,
2230
2292
  parseProviderOptions as parseProviderOptions5,
2231
- postJsonToApi as postJsonToApi5
2293
+ postJsonToApi as postJsonToApi5,
2294
+ serializeModelOptions as serializeModelOptions6,
2295
+ WORKFLOW_DESERIALIZE as WORKFLOW_DESERIALIZE6,
2296
+ WORKFLOW_SERIALIZE as WORKFLOW_SERIALIZE6
2232
2297
  } from "@ai-sdk/provider-utils";
2233
2298
 
2234
2299
  // src/speech/openai-speech-options.ts
@@ -2244,12 +2309,21 @@ var openaiSpeechModelOptionsSchema = lazySchema10(
2244
2309
  );
2245
2310
 
2246
2311
  // src/speech/openai-speech-model.ts
2247
- var OpenAISpeechModel = class {
2312
+ var OpenAISpeechModel = class _OpenAISpeechModel {
2248
2313
  constructor(modelId, config) {
2249
2314
  this.modelId = modelId;
2250
2315
  this.config = config;
2251
2316
  this.specificationVersion = "v4";
2252
2317
  }
2318
+ static [WORKFLOW_SERIALIZE6](model) {
2319
+ return serializeModelOptions6({
2320
+ modelId: model.modelId,
2321
+ config: model.config
2322
+ });
2323
+ }
2324
+ static [WORKFLOW_DESERIALIZE6](options) {
2325
+ return new _OpenAISpeechModel(options.modelId, options.config);
2326
+ }
2253
2327
  get provider() {
2254
2328
  return this.config.provider;
2255
2329
  }
@@ -2309,7 +2383,7 @@ var OpenAISpeechModel = class {
2309
2383
  };
2310
2384
  }
2311
2385
  async doGenerate(options) {
2312
- var _a, _b, _c;
2386
+ var _a, _b, _c, _d, _e;
2313
2387
  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
2388
  const { requestBody, warnings } = await this.getArgs(options);
2315
2389
  const {
@@ -2321,7 +2395,7 @@ var OpenAISpeechModel = class {
2321
2395
  path: "/audio/speech",
2322
2396
  modelId: this.modelId
2323
2397
  }),
2324
- headers: combineHeaders6(this.config.headers(), options.headers),
2398
+ headers: combineHeaders6((_e = (_d = this.config).headers) == null ? void 0 : _e.call(_d), options.headers),
2325
2399
  body: requestBody,
2326
2400
  failedResponseHandler: openaiFailedResponseHandler,
2327
2401
  successfulResponseHandler: createBinaryResponseHandler(),
@@ -2356,7 +2430,10 @@ import {
2356
2430
  generateId as generateId2,
2357
2431
  isCustomReasoning as isCustomReasoning2,
2358
2432
  parseProviderOptions as parseProviderOptions7,
2359
- postJsonToApi as postJsonToApi6
2433
+ postJsonToApi as postJsonToApi6,
2434
+ serializeModelOptions as serializeModelOptions7,
2435
+ WORKFLOW_DESERIALIZE as WORKFLOW_DESERIALIZE7,
2436
+ WORKFLOW_SERIALIZE as WORKFLOW_SERIALIZE7
2360
2437
  } from "@ai-sdk/provider-utils";
2361
2438
 
2362
2439
  // src/responses/convert-openai-responses-usage.ts
@@ -3144,23 +3221,25 @@ async function convertToOpenAIResponsesInput({
3144
3221
  switch (item.type) {
3145
3222
  case "text":
3146
3223
  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
3224
  case "file-data":
3225
+ if (item.mediaType.startsWith("image/")) {
3226
+ return {
3227
+ type: "input_image",
3228
+ image_url: `data:${item.mediaType};base64,${item.data}`
3229
+ };
3230
+ }
3158
3231
  return {
3159
3232
  type: "input_file",
3160
3233
  filename: (_a2 = item.filename) != null ? _a2 : "data",
3161
3234
  file_data: `data:${item.mediaType};base64,${item.data}`
3162
3235
  };
3163
3236
  case "file-url":
3237
+ if (item.mediaType.startsWith("image/")) {
3238
+ return {
3239
+ type: "input_image",
3240
+ image_url: item.url
3241
+ };
3242
+ }
3164
3243
  return {
3165
3244
  type: "input_file",
3166
3245
  file_url: item.url
@@ -3204,19 +3283,13 @@ async function convertToOpenAIResponsesInput({
3204
3283
  case "text": {
3205
3284
  return { type: "input_text", text: item.text };
3206
3285
  }
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
3286
  case "file-data": {
3287
+ if (item.mediaType.startsWith("image/")) {
3288
+ return {
3289
+ type: "input_image",
3290
+ image_url: `data:${item.mediaType};base64,${item.data}`
3291
+ };
3292
+ }
3220
3293
  return {
3221
3294
  type: "input_file",
3222
3295
  filename: (_a2 = item.filename) != null ? _a2 : "data",
@@ -3224,6 +3297,12 @@ async function convertToOpenAIResponsesInput({
3224
3297
  };
3225
3298
  }
3226
3299
  case "file-url": {
3300
+ if (item.mediaType.startsWith("image/")) {
3301
+ return {
3302
+ type: "input_image",
3303
+ image_url: item.url
3304
+ };
3305
+ }
3227
3306
  return {
3228
3307
  type: "input_file",
3229
3308
  file_url: item.url
@@ -5026,7 +5105,7 @@ function extractApprovalRequestIdToToolCallIdMapping(prompt) {
5026
5105
  }
5027
5106
  return mapping;
5028
5107
  }
5029
- var OpenAIResponsesLanguageModel = class {
5108
+ var OpenAIResponsesLanguageModel = class _OpenAIResponsesLanguageModel {
5030
5109
  constructor(modelId, config) {
5031
5110
  this.specificationVersion = "v4";
5032
5111
  this.supportedUrls = {
@@ -5036,6 +5115,15 @@ var OpenAIResponsesLanguageModel = class {
5036
5115
  this.modelId = modelId;
5037
5116
  this.config = config;
5038
5117
  }
5118
+ static [WORKFLOW_SERIALIZE7](model) {
5119
+ return serializeModelOptions7({
5120
+ modelId: model.modelId,
5121
+ config: model.config
5122
+ });
5123
+ }
5124
+ static [WORKFLOW_DESERIALIZE7](options) {
5125
+ return new _OpenAIResponsesLanguageModel(options.modelId, options.config);
5126
+ }
5039
5127
  get provider() {
5040
5128
  return this.config.provider;
5041
5129
  }
@@ -5291,7 +5379,7 @@ var OpenAIResponsesLanguageModel = class {
5291
5379
  };
5292
5380
  }
5293
5381
  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;
5382
+ 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
5383
  const {
5296
5384
  args: body,
5297
5385
  warnings,
@@ -5311,7 +5399,7 @@ var OpenAIResponsesLanguageModel = class {
5311
5399
  rawValue: rawResponse
5312
5400
  } = await postJsonToApi6({
5313
5401
  url,
5314
- headers: combineHeaders7(this.config.headers(), options.headers),
5402
+ headers: combineHeaders7((_b = (_a = this.config).headers) == null ? void 0 : _b.call(_a), options.headers),
5315
5403
  body,
5316
5404
  failedResponseHandler: openaiFailedResponseHandler,
5317
5405
  successfulResponseHandler: createJsonResponseHandler6(
@@ -5348,7 +5436,7 @@ var OpenAIResponsesLanguageModel = class {
5348
5436
  providerMetadata: {
5349
5437
  [providerOptionsName]: {
5350
5438
  itemId: part.id,
5351
- reasoningEncryptedContent: (_a = part.encrypted_content) != null ? _a : null
5439
+ reasoningEncryptedContent: (_c = part.encrypted_content) != null ? _c : null
5352
5440
  }
5353
5441
  }
5354
5442
  });
@@ -5374,7 +5462,7 @@ var OpenAIResponsesLanguageModel = class {
5374
5462
  break;
5375
5463
  }
5376
5464
  case "tool_search_call": {
5377
- const toolCallId = (_b = part.call_id) != null ? _b : part.id;
5465
+ const toolCallId = (_d = part.call_id) != null ? _d : part.id;
5378
5466
  const isHosted = part.execution === "server";
5379
5467
  if (isHosted) {
5380
5468
  hostedToolSearchCallIds.push(toolCallId);
@@ -5397,7 +5485,7 @@ var OpenAIResponsesLanguageModel = class {
5397
5485
  break;
5398
5486
  }
5399
5487
  case "tool_search_output": {
5400
- const toolCallId = (_d = (_c = part.call_id) != null ? _c : hostedToolSearchCallIds.shift()) != null ? _d : part.id;
5488
+ const toolCallId = (_f = (_e = part.call_id) != null ? _e : hostedToolSearchCallIds.shift()) != null ? _f : part.id;
5401
5489
  content.push({
5402
5490
  type: "tool-result",
5403
5491
  toolCallId,
@@ -5468,7 +5556,7 @@ var OpenAIResponsesLanguageModel = class {
5468
5556
  }
5469
5557
  case "message": {
5470
5558
  for (const contentPart of part.content) {
5471
- if (((_f = (_e = options.providerOptions) == null ? void 0 : _e[providerOptionsName]) == null ? void 0 : _f.logprobs) && contentPart.logprobs) {
5559
+ if (((_h = (_g = options.providerOptions) == null ? void 0 : _g[providerOptionsName]) == null ? void 0 : _h.logprobs) && contentPart.logprobs) {
5472
5560
  logprobs.push(contentPart.logprobs);
5473
5561
  }
5474
5562
  const providerMetadata2 = {
@@ -5490,7 +5578,7 @@ var OpenAIResponsesLanguageModel = class {
5490
5578
  content.push({
5491
5579
  type: "source",
5492
5580
  sourceType: "url",
5493
- id: (_i = (_h = (_g = this.config).generateId) == null ? void 0 : _h.call(_g)) != null ? _i : generateId2(),
5581
+ id: (_k = (_j = (_i = this.config).generateId) == null ? void 0 : _j.call(_i)) != null ? _k : generateId2(),
5494
5582
  url: annotation.url,
5495
5583
  title: annotation.title
5496
5584
  });
@@ -5498,7 +5586,7 @@ var OpenAIResponsesLanguageModel = class {
5498
5586
  content.push({
5499
5587
  type: "source",
5500
5588
  sourceType: "document",
5501
- id: (_l = (_k = (_j = this.config).generateId) == null ? void 0 : _k.call(_j)) != null ? _l : generateId2(),
5589
+ id: (_n = (_m = (_l = this.config).generateId) == null ? void 0 : _m.call(_l)) != null ? _n : generateId2(),
5502
5590
  mediaType: "text/plain",
5503
5591
  title: annotation.filename,
5504
5592
  filename: annotation.filename,
@@ -5514,7 +5602,7 @@ var OpenAIResponsesLanguageModel = class {
5514
5602
  content.push({
5515
5603
  type: "source",
5516
5604
  sourceType: "document",
5517
- id: (_o = (_n = (_m = this.config).generateId) == null ? void 0 : _n.call(_m)) != null ? _o : generateId2(),
5605
+ id: (_q = (_p = (_o = this.config).generateId) == null ? void 0 : _p.call(_o)) != null ? _q : generateId2(),
5518
5606
  mediaType: "text/plain",
5519
5607
  title: annotation.filename,
5520
5608
  filename: annotation.filename,
@@ -5530,7 +5618,7 @@ var OpenAIResponsesLanguageModel = class {
5530
5618
  content.push({
5531
5619
  type: "source",
5532
5620
  sourceType: "document",
5533
- id: (_r = (_q = (_p = this.config).generateId) == null ? void 0 : _q.call(_p)) != null ? _r : generateId2(),
5621
+ id: (_t = (_s = (_r = this.config).generateId) == null ? void 0 : _s.call(_r)) != null ? _t : generateId2(),
5534
5622
  mediaType: "application/octet-stream",
5535
5623
  title: annotation.file_id,
5536
5624
  filename: annotation.file_id,
@@ -5599,7 +5687,7 @@ var OpenAIResponsesLanguageModel = class {
5599
5687
  break;
5600
5688
  }
5601
5689
  case "mcp_call": {
5602
- const toolCallId = part.approval_request_id != null ? (_s = approvalRequestIdToDummyToolCallIdFromPrompt[part.approval_request_id]) != null ? _s : part.id : part.id;
5690
+ const toolCallId = part.approval_request_id != null ? (_u = approvalRequestIdToDummyToolCallIdFromPrompt[part.approval_request_id]) != null ? _u : part.id : part.id;
5603
5691
  const toolName = `mcp.${part.name}`;
5604
5692
  content.push({
5605
5693
  type: "tool-call",
@@ -5633,8 +5721,8 @@ var OpenAIResponsesLanguageModel = class {
5633
5721
  break;
5634
5722
  }
5635
5723
  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();
5724
+ const approvalRequestId = (_v = part.approval_request_id) != null ? _v : part.id;
5725
+ const dummyToolCallId = (_y = (_x = (_w = this.config).generateId) == null ? void 0 : _x.call(_w)) != null ? _y : generateId2();
5638
5726
  const toolName = `mcp.${part.name}`;
5639
5727
  content.push({
5640
5728
  type: "tool-call",
@@ -5684,13 +5772,13 @@ var OpenAIResponsesLanguageModel = class {
5684
5772
  toolName: toolNameMapping.toCustomToolName("file_search"),
5685
5773
  result: {
5686
5774
  queries: part.queries,
5687
- results: (_y = (_x = part.results) == null ? void 0 : _x.map((result) => ({
5775
+ results: (_A = (_z = part.results) == null ? void 0 : _z.map((result) => ({
5688
5776
  attributes: result.attributes,
5689
5777
  fileId: result.file_id,
5690
5778
  filename: result.filename,
5691
5779
  score: result.score,
5692
5780
  text: result.text
5693
- }))) != null ? _y : null
5781
+ }))) != null ? _A : null
5694
5782
  }
5695
5783
  });
5696
5784
  break;
@@ -5761,10 +5849,10 @@ var OpenAIResponsesLanguageModel = class {
5761
5849
  content,
5762
5850
  finishReason: {
5763
5851
  unified: mapOpenAIResponseFinishReason({
5764
- finishReason: (_z = response.incomplete_details) == null ? void 0 : _z.reason,
5852
+ finishReason: (_B = response.incomplete_details) == null ? void 0 : _B.reason,
5765
5853
  hasFunctionCall
5766
5854
  }),
5767
- raw: (_B = (_A = response.incomplete_details) == null ? void 0 : _A.reason) != null ? _B : void 0
5855
+ raw: (_D = (_C = response.incomplete_details) == null ? void 0 : _C.reason) != null ? _D : void 0
5768
5856
  },
5769
5857
  usage: convertOpenAIResponsesUsage(usage),
5770
5858
  request: { body },
@@ -5780,6 +5868,7 @@ var OpenAIResponsesLanguageModel = class {
5780
5868
  };
5781
5869
  }
5782
5870
  async doStream(options) {
5871
+ var _a, _b;
5783
5872
  const {
5784
5873
  args: body,
5785
5874
  warnings,
@@ -5794,7 +5883,7 @@ var OpenAIResponsesLanguageModel = class {
5794
5883
  path: "/responses",
5795
5884
  modelId: this.modelId
5796
5885
  }),
5797
- headers: combineHeaders7(this.config.headers(), options.headers),
5886
+ headers: combineHeaders7((_b = (_a = this.config).headers) == null ? void 0 : _b.call(_a), options.headers),
5798
5887
  body: {
5799
5888
  ...body,
5800
5889
  stream: true
@@ -5830,7 +5919,7 @@ var OpenAIResponsesLanguageModel = class {
5830
5919
  controller.enqueue({ type: "stream-start", warnings });
5831
5920
  },
5832
5921
  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;
5922
+ 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
5923
  if (options.includeRawChunks) {
5835
5924
  controller.enqueue({ type: "raw", rawValue: chunk.rawValue });
5836
5925
  }
@@ -5945,7 +6034,7 @@ var OpenAIResponsesLanguageModel = class {
5945
6034
  ongoingToolCalls[value.output_index] = {
5946
6035
  toolName,
5947
6036
  toolCallId,
5948
- toolSearchExecution: (_a = value.item.execution) != null ? _a : "server"
6037
+ toolSearchExecution: (_a2 = value.item.execution) != null ? _a2 : "server"
5949
6038
  };
5950
6039
  if (isHosted) {
5951
6040
  controller.enqueue({
@@ -6002,7 +6091,7 @@ var OpenAIResponsesLanguageModel = class {
6002
6091
  } else if (value.item.type === "shell_call_output") {
6003
6092
  } else if (value.item.type === "message") {
6004
6093
  ongoingAnnotations.splice(0, ongoingAnnotations.length);
6005
- activeMessagePhase = (_b = value.item.phase) != null ? _b : void 0;
6094
+ activeMessagePhase = (_b2 = value.item.phase) != null ? _b2 : void 0;
6006
6095
  controller.enqueue({
6007
6096
  type: "text-start",
6008
6097
  id: value.item.id,