@ai-sdk/openai-compatible 3.0.0-beta.24 → 3.0.0-beta.26

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/CHANGELOG.md CHANGED
@@ -1,5 +1,29 @@
1
1
  # @ai-sdk/openai-compatible
2
2
 
3
+ ## 3.0.0-beta.26
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [add1126]
8
+ - @ai-sdk/provider-utils@5.0.0-beta.21
9
+
10
+ ## 3.0.0-beta.25
11
+
12
+ ### Patch Changes
13
+
14
+ - b3976a2: Add workflow serialization support to all provider models.
15
+
16
+ **`@ai-sdk/provider-utils`:** New `serializeModel()` helper that extracts only serializable properties from a model instance, filtering out functions and objects containing functions. Third-party provider authors can use this to add workflow support to their own models.
17
+
18
+ **All providers:** `headers` is now optional in provider config types. This is non-breaking — existing code that passes `headers` continues to work. Custom provider implementations that construct model configs manually can now omit `headers`, which is useful when models are deserialized from a workflow step boundary where auth is provided separately.
19
+
20
+ All provider model classes now include `WORKFLOW_SERIALIZE` and `WORKFLOW_DESERIALIZE` static methods, enabling them to cross workflow step boundaries without serialization errors.
21
+
22
+ - Updated dependencies [b3976a2]
23
+ - Updated dependencies [ff5eba1]
24
+ - @ai-sdk/provider-utils@5.0.0-beta.20
25
+ - @ai-sdk/provider@4.0.0-beta.12
26
+
3
27
  ## 3.0.0-beta.24
4
28
 
5
29
  ### Major Changes
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
+ import * as _ai_sdk_provider from '@ai-sdk/provider';
1
2
  import { SharedV4ProviderMetadata, LanguageModelV4, LanguageModelV4CallOptions, LanguageModelV4GenerateResult, LanguageModelV4StreamResult, EmbeddingModelV4, ImageModelV4, ProviderV4 } from '@ai-sdk/provider';
2
- import { FetchFunction } from '@ai-sdk/provider-utils';
3
+ import { FetchFunction, WORKFLOW_SERIALIZE, WORKFLOW_DESERIALIZE } from '@ai-sdk/provider-utils';
3
4
  import { ZodType, z } from 'zod/v4';
4
5
 
5
6
  declare const openaiCompatibleErrorDataSchema: z.ZodObject<{
@@ -71,7 +72,7 @@ type MetadataExtractor = {
71
72
 
72
73
  type OpenAICompatibleChatConfig = {
73
74
  provider: string;
74
- headers: () => Record<string, string | undefined>;
75
+ headers?: () => Record<string, string | undefined>;
75
76
  url: (options: {
76
77
  modelId: string;
77
78
  path: string;
@@ -99,9 +100,17 @@ declare class OpenAICompatibleChatLanguageModel implements LanguageModelV4 {
99
100
  readonly specificationVersion = "v4";
100
101
  readonly supportsStructuredOutputs: boolean;
101
102
  readonly modelId: OpenAICompatibleChatModelId;
102
- private readonly config;
103
+ protected readonly config: OpenAICompatibleChatConfig;
103
104
  private readonly failedResponseHandler;
104
105
  private readonly chunkSchema;
106
+ static [WORKFLOW_SERIALIZE](model: OpenAICompatibleChatLanguageModel): {
107
+ modelId: string;
108
+ config: _ai_sdk_provider.JSONObject;
109
+ };
110
+ static [WORKFLOW_DESERIALIZE](options: {
111
+ modelId: string;
112
+ config: OpenAICompatibleChatConfig;
113
+ }): OpenAICompatibleChatLanguageModel;
105
114
  constructor(modelId: OpenAICompatibleChatModelId, config: OpenAICompatibleChatConfig);
106
115
  get provider(): string;
107
116
  private get providerOptionsName();
@@ -124,7 +133,7 @@ type OpenAICompatibleLanguageModelCompletionOptions = z.infer<typeof openaiCompa
124
133
  type OpenAICompatibleCompletionConfig = {
125
134
  provider: string;
126
135
  includeUsage?: boolean;
127
- headers: () => Record<string, string | undefined>;
136
+ headers?: () => Record<string, string | undefined>;
128
137
  url: (options: {
129
138
  modelId: string;
130
139
  path: string;
@@ -142,6 +151,14 @@ declare class OpenAICompatibleCompletionLanguageModel implements LanguageModelV4
142
151
  private readonly config;
143
152
  private readonly failedResponseHandler;
144
153
  private readonly chunkSchema;
154
+ static [WORKFLOW_SERIALIZE](model: OpenAICompatibleCompletionLanguageModel): {
155
+ modelId: string;
156
+ config: _ai_sdk_provider.JSONObject;
157
+ };
158
+ static [WORKFLOW_DESERIALIZE](options: {
159
+ modelId: string;
160
+ config: OpenAICompatibleCompletionConfig;
161
+ }): OpenAICompatibleCompletionLanguageModel;
145
162
  constructor(modelId: OpenAICompatibleCompletionModelId, config: OpenAICompatibleCompletionConfig);
146
163
  get provider(): string;
147
164
  private get providerOptionsName();
@@ -172,7 +189,7 @@ type OpenAICompatibleEmbeddingConfig = {
172
189
  modelId: string;
173
190
  path: string;
174
191
  }) => string;
175
- headers: () => Record<string, string | undefined>;
192
+ headers?: () => Record<string, string | undefined>;
176
193
  fetch?: FetchFunction;
177
194
  errorStructure?: ProviderErrorStructure<any>;
178
195
  };
@@ -183,6 +200,14 @@ declare class OpenAICompatibleEmbeddingModel implements EmbeddingModelV4 {
183
200
  get provider(): string;
184
201
  get maxEmbeddingsPerCall(): number;
185
202
  get supportsParallelCalls(): boolean;
203
+ static [WORKFLOW_SERIALIZE](model: OpenAICompatibleEmbeddingModel): {
204
+ modelId: string;
205
+ config: _ai_sdk_provider.JSONObject;
206
+ };
207
+ static [WORKFLOW_DESERIALIZE](options: {
208
+ modelId: string;
209
+ config: OpenAICompatibleEmbeddingConfig;
210
+ }): OpenAICompatibleEmbeddingModel;
186
211
  constructor(modelId: OpenAICompatibleEmbeddingModelId, config: OpenAICompatibleEmbeddingConfig);
187
212
  private get providerOptionsName();
188
213
  doEmbed({ values, headers, abortSignal, providerOptions, }: Parameters<EmbeddingModelV4['doEmbed']>[0]): Promise<Awaited<ReturnType<EmbeddingModelV4['doEmbed']>>>;
@@ -192,7 +217,7 @@ type OpenAICompatibleImageModelId = string;
192
217
 
193
218
  type OpenAICompatibleImageModelConfig = {
194
219
  provider: string;
195
- headers: () => Record<string, string | undefined>;
220
+ headers?: () => Record<string, string | undefined>;
196
221
  url: (options: {
197
222
  modelId: string;
198
223
  path: string;
@@ -213,6 +238,14 @@ declare class OpenAICompatibleImageModel implements ImageModelV4 {
213
238
  * The provider options key used to extract provider-specific options.
214
239
  */
215
240
  private get providerOptionsKey();
241
+ static [WORKFLOW_SERIALIZE](model: OpenAICompatibleImageModel): {
242
+ modelId: string;
243
+ config: _ai_sdk_provider.JSONObject;
244
+ };
245
+ static [WORKFLOW_DESERIALIZE](options: {
246
+ modelId: string;
247
+ config: OpenAICompatibleImageModelConfig;
248
+ }): OpenAICompatibleImageModel;
216
249
  constructor(modelId: OpenAICompatibleImageModelId, config: OpenAICompatibleImageModelConfig);
217
250
  private getArgs;
218
251
  doGenerate({ prompt, n, size, aspectRatio, seed, providerOptions, headers, abortSignal, files, mask, }: Parameters<ImageModelV4['doGenerate']>[0]): Promise<Awaited<ReturnType<ImageModelV4['doGenerate']>>>;
package/dist/index.js CHANGED
@@ -11,7 +11,10 @@ import {
11
11
  isCustomReasoning,
12
12
  isParsableJson,
13
13
  parseProviderOptions,
14
- postJsonToApi
14
+ postJsonToApi,
15
+ serializeModelOptions,
16
+ WORKFLOW_SERIALIZE,
17
+ WORKFLOW_DESERIALIZE
15
18
  } from "@ai-sdk/provider-utils";
16
19
  import { z as z3 } from "zod/v4";
17
20
 
@@ -425,8 +428,7 @@ function prepareTools({
425
428
  }
426
429
 
427
430
  // src/chat/openai-compatible-chat-language-model.ts
428
- var OpenAICompatibleChatLanguageModel = class {
429
- // type inferred via constructor
431
+ var OpenAICompatibleChatLanguageModel = class _OpenAICompatibleChatLanguageModel {
430
432
  constructor(modelId, config) {
431
433
  this.specificationVersion = "v4";
432
434
  var _a, _b;
@@ -439,6 +441,19 @@ var OpenAICompatibleChatLanguageModel = class {
439
441
  this.failedResponseHandler = createJsonErrorResponseHandler(errorStructure);
440
442
  this.supportsStructuredOutputs = (_b = config.supportsStructuredOutputs) != null ? _b : false;
441
443
  }
444
+ // type inferred via constructor
445
+ static [WORKFLOW_SERIALIZE](model) {
446
+ return serializeModelOptions({
447
+ modelId: model.modelId,
448
+ config: model.config
449
+ });
450
+ }
451
+ static [WORKFLOW_DESERIALIZE](options) {
452
+ return new _OpenAICompatibleChatLanguageModel(
453
+ options.modelId,
454
+ options.config
455
+ );
456
+ }
442
457
  get provider() {
443
458
  return this.config.provider;
444
459
  }
@@ -575,7 +590,7 @@ var OpenAICompatibleChatLanguageModel = class {
575
590
  };
576
591
  }
577
592
  async doGenerate(options) {
578
- var _a, _b, _c, _d, _e, _f, _g, _h;
593
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
579
594
  const { args, warnings, metadataKey } = await this.getArgs({ ...options });
580
595
  const transformedBody = this.transformRequestBody(args);
581
596
  const body = JSON.stringify(transformedBody);
@@ -588,7 +603,7 @@ var OpenAICompatibleChatLanguageModel = class {
588
603
  path: "/chat/completions",
589
604
  modelId: this.modelId
590
605
  }),
591
- headers: combineHeaders(this.config.headers(), options.headers),
606
+ headers: combineHeaders((_b = (_a = this.config).headers) == null ? void 0 : _b.call(_a), options.headers),
592
607
  body: transformedBody,
593
608
  failedResponseHandler: this.failedResponseHandler,
594
609
  successfulResponseHandler: createJsonResponseHandler(
@@ -603,7 +618,7 @@ var OpenAICompatibleChatLanguageModel = class {
603
618
  if (text != null && text.length > 0) {
604
619
  content.push({ type: "text", text });
605
620
  }
606
- const reasoning = (_a = choice.message.reasoning_content) != null ? _a : choice.message.reasoning;
621
+ const reasoning = (_c = choice.message.reasoning_content) != null ? _c : choice.message.reasoning;
607
622
  if (reasoning != null && reasoning.length > 0) {
608
623
  content.push({
609
624
  type: "reasoning",
@@ -612,10 +627,10 @@ var OpenAICompatibleChatLanguageModel = class {
612
627
  }
613
628
  if (choice.message.tool_calls != null) {
614
629
  for (const toolCall of choice.message.tool_calls) {
615
- const thoughtSignature = (_c = (_b = toolCall.extra_content) == null ? void 0 : _b.google) == null ? void 0 : _c.thought_signature;
630
+ const thoughtSignature = (_e = (_d = toolCall.extra_content) == null ? void 0 : _d.google) == null ? void 0 : _e.thought_signature;
616
631
  content.push({
617
632
  type: "tool-call",
618
- toolCallId: (_d = toolCall.id) != null ? _d : generateId(),
633
+ toolCallId: (_f = toolCall.id) != null ? _f : generateId(),
619
634
  toolName: toolCall.function.name,
620
635
  input: toolCall.function.arguments,
621
636
  ...thoughtSignature ? {
@@ -628,11 +643,11 @@ var OpenAICompatibleChatLanguageModel = class {
628
643
  }
629
644
  const providerMetadata = {
630
645
  [metadataKey]: {},
631
- ...await ((_f = (_e = this.config.metadataExtractor) == null ? void 0 : _e.extractMetadata) == null ? void 0 : _f.call(_e, {
646
+ ...await ((_h = (_g = this.config.metadataExtractor) == null ? void 0 : _g.extractMetadata) == null ? void 0 : _h.call(_g, {
632
647
  parsedBody: rawResponse
633
648
  }))
634
649
  };
635
- const completionTokenDetails = (_g = responseBody.usage) == null ? void 0 : _g.completion_tokens_details;
650
+ const completionTokenDetails = (_i = responseBody.usage) == null ? void 0 : _i.completion_tokens_details;
636
651
  if ((completionTokenDetails == null ? void 0 : completionTokenDetails.accepted_prediction_tokens) != null) {
637
652
  providerMetadata[metadataKey].acceptedPredictionTokens = completionTokenDetails == null ? void 0 : completionTokenDetails.accepted_prediction_tokens;
638
653
  }
@@ -643,7 +658,7 @@ var OpenAICompatibleChatLanguageModel = class {
643
658
  content,
644
659
  finishReason: {
645
660
  unified: mapOpenAICompatibleFinishReason(choice.finish_reason),
646
- raw: (_h = choice.finish_reason) != null ? _h : void 0
661
+ raw: (_j = choice.finish_reason) != null ? _j : void 0
647
662
  },
648
663
  usage: convertOpenAICompatibleChatUsage(responseBody.usage),
649
664
  providerMetadata,
@@ -657,7 +672,7 @@ var OpenAICompatibleChatLanguageModel = class {
657
672
  };
658
673
  }
659
674
  async doStream(options) {
660
- var _a;
675
+ var _a, _b, _c;
661
676
  const { args, warnings, metadataKey } = await this.getArgs({
662
677
  ...options
663
678
  });
@@ -673,7 +688,7 @@ var OpenAICompatibleChatLanguageModel = class {
673
688
  path: "/chat/completions",
674
689
  modelId: this.modelId
675
690
  }),
676
- headers: combineHeaders(this.config.headers(), options.headers),
691
+ headers: combineHeaders((_c = (_b = this.config).headers) == null ? void 0 : _c.call(_b), options.headers),
677
692
  body,
678
693
  failedResponseHandler: this.failedResponseHandler,
679
694
  successfulResponseHandler: createEventSourceResponseHandler(
@@ -699,7 +714,7 @@ var OpenAICompatibleChatLanguageModel = class {
699
714
  controller.enqueue({ type: "stream-start", warnings });
700
715
  },
701
716
  transform(chunk, controller) {
702
- var _a2, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r;
717
+ var _a2, _b2, _c2, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r;
703
718
  if (options.includeRawChunks) {
704
719
  controller.enqueue({ type: "raw", rawValue: chunk.rawValue });
705
720
  }
@@ -739,7 +754,7 @@ var OpenAICompatibleChatLanguageModel = class {
739
754
  return;
740
755
  }
741
756
  const delta = choice.delta;
742
- const reasoningContent = (_b = delta.reasoning_content) != null ? _b : delta.reasoning;
757
+ const reasoningContent = (_b2 = delta.reasoning_content) != null ? _b2 : delta.reasoning;
743
758
  if (reasoningContent) {
744
759
  if (!isActiveReasoning) {
745
760
  controller.enqueue({
@@ -781,7 +796,7 @@ var OpenAICompatibleChatLanguageModel = class {
781
796
  isActiveReasoning = false;
782
797
  }
783
798
  for (const toolCallDelta of delta.tool_calls) {
784
- const index = (_c = toolCallDelta.index) != null ? _c : toolCalls.length;
799
+ const index = (_c2 = toolCallDelta.index) != null ? _c2 : toolCalls.length;
785
800
  if (toolCalls[index] == null) {
786
801
  if (toolCallDelta.id == null) {
787
802
  throw new InvalidResponseDataError({
@@ -878,7 +893,7 @@ var OpenAICompatibleChatLanguageModel = class {
878
893
  }
879
894
  },
880
895
  flush(controller) {
881
- var _a2, _b, _c, _d, _e;
896
+ var _a2, _b2, _c2, _d, _e;
882
897
  if (isActiveReasoning) {
883
898
  controller.enqueue({ type: "reasoning-end", id: "reasoning-0" });
884
899
  }
@@ -910,8 +925,8 @@ var OpenAICompatibleChatLanguageModel = class {
910
925
  [providerOptionsName]: {},
911
926
  ...metadataExtractor == null ? void 0 : metadataExtractor.buildMetadata()
912
927
  };
913
- if (((_b = usage == null ? void 0 : usage.completion_tokens_details) == null ? void 0 : _b.accepted_prediction_tokens) != null) {
914
- providerMetadata[providerOptionsName].acceptedPredictionTokens = (_c = usage == null ? void 0 : usage.completion_tokens_details) == null ? void 0 : _c.accepted_prediction_tokens;
928
+ if (((_b2 = usage == null ? void 0 : usage.completion_tokens_details) == null ? void 0 : _b2.accepted_prediction_tokens) != null) {
929
+ providerMetadata[providerOptionsName].acceptedPredictionTokens = (_c2 = usage == null ? void 0 : usage.completion_tokens_details) == null ? void 0 : _c2.accepted_prediction_tokens;
915
930
  }
916
931
  if (((_d = usage == null ? void 0 : usage.completion_tokens_details) == null ? void 0 : _d.rejected_prediction_tokens) != null) {
917
932
  providerMetadata[providerOptionsName].rejectedPredictionTokens = (_e = usage == null ? void 0 : usage.completion_tokens_details) == null ? void 0 : _e.rejected_prediction_tokens;
@@ -1020,7 +1035,10 @@ import {
1020
1035
  createJsonErrorResponseHandler as createJsonErrorResponseHandler2,
1021
1036
  createJsonResponseHandler as createJsonResponseHandler2,
1022
1037
  parseProviderOptions as parseProviderOptions2,
1023
- postJsonToApi as postJsonToApi2
1038
+ postJsonToApi as postJsonToApi2,
1039
+ serializeModelOptions as serializeModelOptions2,
1040
+ WORKFLOW_SERIALIZE as WORKFLOW_SERIALIZE2,
1041
+ WORKFLOW_DESERIALIZE as WORKFLOW_DESERIALIZE2
1024
1042
  } from "@ai-sdk/provider-utils";
1025
1043
  import { z as z5 } from "zod/v4";
1026
1044
 
@@ -1195,8 +1213,7 @@ var openaiCompatibleLanguageModelCompletionOptions = z4.object({
1195
1213
  });
1196
1214
 
1197
1215
  // src/completion/openai-compatible-completion-language-model.ts
1198
- var OpenAICompatibleCompletionLanguageModel = class {
1199
- // type inferred via constructor
1216
+ var OpenAICompatibleCompletionLanguageModel = class _OpenAICompatibleCompletionLanguageModel {
1200
1217
  constructor(modelId, config) {
1201
1218
  this.specificationVersion = "v4";
1202
1219
  var _a;
@@ -1208,6 +1225,19 @@ var OpenAICompatibleCompletionLanguageModel = class {
1208
1225
  );
1209
1226
  this.failedResponseHandler = createJsonErrorResponseHandler2(errorStructure);
1210
1227
  }
1228
+ // type inferred via constructor
1229
+ static [WORKFLOW_SERIALIZE2](model) {
1230
+ return serializeModelOptions2({
1231
+ modelId: model.modelId,
1232
+ config: model.config
1233
+ });
1234
+ }
1235
+ static [WORKFLOW_DESERIALIZE2](options) {
1236
+ return new _OpenAICompatibleCompletionLanguageModel(
1237
+ options.modelId,
1238
+ options.config
1239
+ );
1240
+ }
1211
1241
  get provider() {
1212
1242
  return this.config.provider;
1213
1243
  }
@@ -1297,6 +1327,7 @@ var OpenAICompatibleCompletionLanguageModel = class {
1297
1327
  };
1298
1328
  }
1299
1329
  async doGenerate(options) {
1330
+ var _a, _b;
1300
1331
  const { args, warnings } = await this.getArgs(options);
1301
1332
  const {
1302
1333
  responseHeaders,
@@ -1307,7 +1338,7 @@ var OpenAICompatibleCompletionLanguageModel = class {
1307
1338
  path: "/completions",
1308
1339
  modelId: this.modelId
1309
1340
  }),
1310
- headers: combineHeaders2(this.config.headers(), options.headers),
1341
+ headers: combineHeaders2((_b = (_a = this.config).headers) == null ? void 0 : _b.call(_a), options.headers),
1311
1342
  body: args,
1312
1343
  failedResponseHandler: this.failedResponseHandler,
1313
1344
  successfulResponseHandler: createJsonResponseHandler2(
@@ -1338,6 +1369,7 @@ var OpenAICompatibleCompletionLanguageModel = class {
1338
1369
  };
1339
1370
  }
1340
1371
  async doStream(options) {
1372
+ var _a, _b;
1341
1373
  const { args, warnings } = await this.getArgs(options);
1342
1374
  const body = {
1343
1375
  ...args,
@@ -1350,7 +1382,7 @@ var OpenAICompatibleCompletionLanguageModel = class {
1350
1382
  path: "/completions",
1351
1383
  modelId: this.modelId
1352
1384
  }),
1353
- headers: combineHeaders2(this.config.headers(), options.headers),
1385
+ headers: combineHeaders2((_b = (_a = this.config).headers) == null ? void 0 : _b.call(_a), options.headers),
1354
1386
  body,
1355
1387
  failedResponseHandler: this.failedResponseHandler,
1356
1388
  successfulResponseHandler: createEventSourceResponseHandler2(
@@ -1372,7 +1404,7 @@ var OpenAICompatibleCompletionLanguageModel = class {
1372
1404
  controller.enqueue({ type: "stream-start", warnings });
1373
1405
  },
1374
1406
  transform(chunk, controller) {
1375
- var _a;
1407
+ var _a2;
1376
1408
  if (options.includeRawChunks) {
1377
1409
  controller.enqueue({ type: "raw", rawValue: chunk.rawValue });
1378
1410
  }
@@ -1405,7 +1437,7 @@ var OpenAICompatibleCompletionLanguageModel = class {
1405
1437
  if ((choice == null ? void 0 : choice.finish_reason) != null) {
1406
1438
  finishReason = {
1407
1439
  unified: mapOpenAICompatibleFinishReason2(choice.finish_reason),
1408
- raw: (_a = choice.finish_reason) != null ? _a : void 0
1440
+ raw: (_a2 = choice.finish_reason) != null ? _a2 : void 0
1409
1441
  };
1410
1442
  }
1411
1443
  if ((choice == null ? void 0 : choice.text) != null) {
@@ -1476,7 +1508,10 @@ import {
1476
1508
  createJsonErrorResponseHandler as createJsonErrorResponseHandler3,
1477
1509
  createJsonResponseHandler as createJsonResponseHandler3,
1478
1510
  parseProviderOptions as parseProviderOptions3,
1479
- postJsonToApi as postJsonToApi3
1511
+ postJsonToApi as postJsonToApi3,
1512
+ serializeModelOptions as serializeModelOptions3,
1513
+ WORKFLOW_SERIALIZE as WORKFLOW_SERIALIZE3,
1514
+ WORKFLOW_DESERIALIZE as WORKFLOW_DESERIALIZE3
1480
1515
  } from "@ai-sdk/provider-utils";
1481
1516
  import { z as z7 } from "zod/v4";
1482
1517
 
@@ -1496,7 +1531,7 @@ var openaiCompatibleEmbeddingModelOptions = z6.object({
1496
1531
  });
1497
1532
 
1498
1533
  // src/embedding/openai-compatible-embedding-model.ts
1499
- var OpenAICompatibleEmbeddingModel = class {
1534
+ var OpenAICompatibleEmbeddingModel = class _OpenAICompatibleEmbeddingModel {
1500
1535
  constructor(modelId, config) {
1501
1536
  this.specificationVersion = "v4";
1502
1537
  this.modelId = modelId;
@@ -1513,6 +1548,15 @@ var OpenAICompatibleEmbeddingModel = class {
1513
1548
  var _a;
1514
1549
  return (_a = this.config.supportsParallelCalls) != null ? _a : true;
1515
1550
  }
1551
+ static [WORKFLOW_SERIALIZE3](model) {
1552
+ return serializeModelOptions3({
1553
+ modelId: model.modelId,
1554
+ config: model.config
1555
+ });
1556
+ }
1557
+ static [WORKFLOW_DESERIALIZE3](options) {
1558
+ return new _OpenAICompatibleEmbeddingModel(options.modelId, options.config);
1559
+ }
1516
1560
  get providerOptionsName() {
1517
1561
  return this.config.provider.split(".")[0].trim();
1518
1562
  }
@@ -1522,7 +1566,7 @@ var OpenAICompatibleEmbeddingModel = class {
1522
1566
  abortSignal,
1523
1567
  providerOptions
1524
1568
  }) {
1525
- var _a, _b, _c;
1569
+ var _a, _b, _c, _d, _e;
1526
1570
  const warnings = [];
1527
1571
  const deprecatedOptions = await parseProviderOptions3({
1528
1572
  provider: "openai-compatible",
@@ -1571,7 +1615,7 @@ var OpenAICompatibleEmbeddingModel = class {
1571
1615
  path: "/embeddings",
1572
1616
  modelId: this.modelId
1573
1617
  }),
1574
- headers: combineHeaders3(this.config.headers(), headers),
1618
+ headers: combineHeaders3((_d = (_c = this.config).headers) == null ? void 0 : _d.call(_c), headers),
1575
1619
  body: {
1576
1620
  model: this.modelId,
1577
1621
  input: values,
@@ -1580,7 +1624,7 @@ var OpenAICompatibleEmbeddingModel = class {
1580
1624
  user: compatibleOptions.user
1581
1625
  },
1582
1626
  failedResponseHandler: createJsonErrorResponseHandler3(
1583
- (_c = this.config.errorStructure) != null ? _c : defaultOpenAICompatibleErrorStructure
1627
+ (_e = this.config.errorStructure) != null ? _e : defaultOpenAICompatibleErrorStructure
1584
1628
  ),
1585
1629
  successfulResponseHandler: createJsonResponseHandler3(
1586
1630
  openaiTextEmbeddingResponseSchema
@@ -1612,10 +1656,13 @@ import {
1612
1656
  createJsonResponseHandler as createJsonResponseHandler4,
1613
1657
  downloadBlob,
1614
1658
  postFormDataToApi,
1615
- postJsonToApi as postJsonToApi4
1659
+ postJsonToApi as postJsonToApi4,
1660
+ serializeModelOptions as serializeModelOptions4,
1661
+ WORKFLOW_SERIALIZE as WORKFLOW_SERIALIZE4,
1662
+ WORKFLOW_DESERIALIZE as WORKFLOW_DESERIALIZE4
1616
1663
  } from "@ai-sdk/provider-utils";
1617
1664
  import { z as z8 } from "zod/v4";
1618
- var OpenAICompatibleImageModel = class {
1665
+ var OpenAICompatibleImageModel = class _OpenAICompatibleImageModel {
1619
1666
  constructor(modelId, config) {
1620
1667
  this.modelId = modelId;
1621
1668
  this.config = config;
@@ -1631,6 +1678,15 @@ var OpenAICompatibleImageModel = class {
1631
1678
  get providerOptionsKey() {
1632
1679
  return this.config.provider.split(".")[0].trim();
1633
1680
  }
1681
+ static [WORKFLOW_SERIALIZE4](model) {
1682
+ return serializeModelOptions4({
1683
+ modelId: model.modelId,
1684
+ config: model.config
1685
+ });
1686
+ }
1687
+ static [WORKFLOW_DESERIALIZE4](options) {
1688
+ return new _OpenAICompatibleImageModel(options.modelId, options.config);
1689
+ }
1634
1690
  getArgs(providerOptions, warnings) {
1635
1691
  warnIfDeprecatedProviderOptionsKey({
1636
1692
  rawName: this.providerOptionsKey,
@@ -1654,7 +1710,7 @@ var OpenAICompatibleImageModel = class {
1654
1710
  files,
1655
1711
  mask
1656
1712
  }) {
1657
- var _a, _b, _c, _d, _e;
1713
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i;
1658
1714
  const warnings = [];
1659
1715
  if (aspectRatio != null) {
1660
1716
  warnings.push({
@@ -1674,7 +1730,7 @@ var OpenAICompatibleImageModel = class {
1674
1730
  path: "/images/edits",
1675
1731
  modelId: this.modelId
1676
1732
  }),
1677
- headers: combineHeaders4(this.config.headers(), headers),
1733
+ headers: combineHeaders4((_e = (_d = this.config).headers) == null ? void 0 : _e.call(_d), headers),
1678
1734
  formData: convertToFormData({
1679
1735
  model: this.modelId,
1680
1736
  prompt,
@@ -1685,7 +1741,7 @@ var OpenAICompatibleImageModel = class {
1685
1741
  ...args
1686
1742
  }),
1687
1743
  failedResponseHandler: createJsonErrorResponseHandler4(
1688
- (_d = this.config.errorStructure) != null ? _d : defaultOpenAICompatibleErrorStructure
1744
+ (_f = this.config.errorStructure) != null ? _f : defaultOpenAICompatibleErrorStructure
1689
1745
  ),
1690
1746
  successfulResponseHandler: createJsonResponseHandler4(
1691
1747
  openaiCompatibleImageResponseSchema
@@ -1708,7 +1764,7 @@ var OpenAICompatibleImageModel = class {
1708
1764
  path: "/images/generations",
1709
1765
  modelId: this.modelId
1710
1766
  }),
1711
- headers: combineHeaders4(this.config.headers(), headers),
1767
+ headers: combineHeaders4((_h = (_g = this.config).headers) == null ? void 0 : _h.call(_g), headers),
1712
1768
  body: {
1713
1769
  model: this.modelId,
1714
1770
  prompt,
@@ -1718,7 +1774,7 @@ var OpenAICompatibleImageModel = class {
1718
1774
  response_format: "b64_json"
1719
1775
  },
1720
1776
  failedResponseHandler: createJsonErrorResponseHandler4(
1721
- (_e = this.config.errorStructure) != null ? _e : defaultOpenAICompatibleErrorStructure
1777
+ (_i = this.config.errorStructure) != null ? _i : defaultOpenAICompatibleErrorStructure
1722
1778
  ),
1723
1779
  successfulResponseHandler: createJsonResponseHandler4(
1724
1780
  openaiCompatibleImageResponseSchema
@@ -1755,7 +1811,7 @@ import {
1755
1811
  } from "@ai-sdk/provider-utils";
1756
1812
 
1757
1813
  // src/version.ts
1758
- var VERSION = true ? "3.0.0-beta.24" : "0.0.0-test";
1814
+ var VERSION = true ? "3.0.0-beta.26" : "0.0.0-test";
1759
1815
 
1760
1816
  // src/openai-compatible-provider.ts
1761
1817
  function createOpenAICompatible(options) {