@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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-sdk/openai-compatible",
3
- "version": "3.0.0-beta.24",
3
+ "version": "3.0.0-beta.26",
4
4
  "type": "module",
5
5
  "license": "Apache-2.0",
6
6
  "sideEffects": false,
@@ -35,8 +35,8 @@
35
35
  }
36
36
  },
37
37
  "dependencies": {
38
- "@ai-sdk/provider": "4.0.0-beta.11",
39
- "@ai-sdk/provider-utils": "5.0.0-beta.19"
38
+ "@ai-sdk/provider": "4.0.0-beta.12",
39
+ "@ai-sdk/provider-utils": "5.0.0-beta.21"
40
40
  },
41
41
  "devDependencies": {
42
42
  "@types/node": "20.17.24",
@@ -24,6 +24,9 @@ import {
24
24
  ParseResult,
25
25
  postJsonToApi,
26
26
  ResponseHandler,
27
+ serializeModelOptions,
28
+ WORKFLOW_SERIALIZE,
29
+ WORKFLOW_DESERIALIZE,
27
30
  } from '@ai-sdk/provider-utils';
28
31
  import { z } from 'zod/v4';
29
32
  import {
@@ -48,7 +51,7 @@ import { prepareTools } from './openai-compatible-prepare-tools';
48
51
 
49
52
  export type OpenAICompatibleChatConfig = {
50
53
  provider: string;
51
- headers: () => Record<string, string | undefined>;
54
+ headers?: () => Record<string, string | undefined>;
52
55
  url: (options: { modelId: string; path: string }) => string;
53
56
  fetch?: FetchFunction;
54
57
  includeUsage?: boolean;
@@ -79,10 +82,27 @@ export class OpenAICompatibleChatLanguageModel implements LanguageModelV4 {
79
82
  readonly supportsStructuredOutputs: boolean;
80
83
 
81
84
  readonly modelId: OpenAICompatibleChatModelId;
82
- private readonly config: OpenAICompatibleChatConfig;
85
+ protected readonly config: OpenAICompatibleChatConfig;
83
86
  private readonly failedResponseHandler: ResponseHandler<APICallError>;
84
87
  private readonly chunkSchema; // type inferred via constructor
85
88
 
89
+ static [WORKFLOW_SERIALIZE](model: OpenAICompatibleChatLanguageModel) {
90
+ return serializeModelOptions({
91
+ modelId: model.modelId,
92
+ config: model.config,
93
+ });
94
+ }
95
+
96
+ static [WORKFLOW_DESERIALIZE](options: {
97
+ modelId: string;
98
+ config: OpenAICompatibleChatConfig;
99
+ }) {
100
+ return new OpenAICompatibleChatLanguageModel(
101
+ options.modelId,
102
+ options.config,
103
+ );
104
+ }
105
+
86
106
  constructor(
87
107
  modelId: OpenAICompatibleChatModelId,
88
108
  config: OpenAICompatibleChatConfig,
@@ -289,7 +309,7 @@ export class OpenAICompatibleChatLanguageModel implements LanguageModelV4 {
289
309
  path: '/chat/completions',
290
310
  modelId: this.modelId,
291
311
  }),
292
- headers: combineHeaders(this.config.headers(), options.headers),
312
+ headers: combineHeaders(this.config.headers?.(), options.headers),
293
313
  body: transformedBody,
294
314
  failedResponseHandler: this.failedResponseHandler,
295
315
  successfulResponseHandler: createJsonResponseHandler(
@@ -400,7 +420,7 @@ export class OpenAICompatibleChatLanguageModel implements LanguageModelV4 {
400
420
  path: '/chat/completions',
401
421
  modelId: this.modelId,
402
422
  }),
403
- headers: combineHeaders(this.config.headers(), options.headers),
423
+ headers: combineHeaders(this.config.headers?.(), options.headers),
404
424
  body,
405
425
  failedResponseHandler: this.failedResponseHandler,
406
426
  successfulResponseHandler: createEventSourceResponseHandler(
@@ -19,6 +19,9 @@ import {
19
19
  ParseResult,
20
20
  postJsonToApi,
21
21
  ResponseHandler,
22
+ serializeModelOptions,
23
+ WORKFLOW_SERIALIZE,
24
+ WORKFLOW_DESERIALIZE,
22
25
  } from '@ai-sdk/provider-utils';
23
26
  import { z } from 'zod/v4';
24
27
  import {
@@ -41,7 +44,7 @@ import {
41
44
  type OpenAICompatibleCompletionConfig = {
42
45
  provider: string;
43
46
  includeUsage?: boolean;
44
- headers: () => Record<string, string | undefined>;
47
+ headers?: () => Record<string, string | undefined>;
45
48
  url: (options: { modelId: string; path: string }) => string;
46
49
  fetch?: FetchFunction;
47
50
  errorStructure?: ProviderErrorStructure<any>;
@@ -60,6 +63,23 @@ export class OpenAICompatibleCompletionLanguageModel implements LanguageModelV4
60
63
  private readonly failedResponseHandler: ResponseHandler<APICallError>;
61
64
  private readonly chunkSchema; // type inferred via constructor
62
65
 
66
+ static [WORKFLOW_SERIALIZE](model: OpenAICompatibleCompletionLanguageModel) {
67
+ return serializeModelOptions({
68
+ modelId: model.modelId,
69
+ config: model.config,
70
+ });
71
+ }
72
+
73
+ static [WORKFLOW_DESERIALIZE](options: {
74
+ modelId: string;
75
+ config: OpenAICompatibleCompletionConfig;
76
+ }) {
77
+ return new OpenAICompatibleCompletionLanguageModel(
78
+ options.modelId,
79
+ options.config,
80
+ );
81
+ }
82
+
63
83
  constructor(
64
84
  modelId: OpenAICompatibleCompletionModelId,
65
85
  config: OpenAICompatibleCompletionConfig,
@@ -196,7 +216,7 @@ export class OpenAICompatibleCompletionLanguageModel implements LanguageModelV4
196
216
  path: '/completions',
197
217
  modelId: this.modelId,
198
218
  }),
199
- headers: combineHeaders(this.config.headers(), options.headers),
219
+ headers: combineHeaders(this.config.headers?.(), options.headers),
200
220
  body: args,
201
221
  failedResponseHandler: this.failedResponseHandler,
202
222
  successfulResponseHandler: createJsonResponseHandler(
@@ -251,7 +271,7 @@ export class OpenAICompatibleCompletionLanguageModel implements LanguageModelV4
251
271
  path: '/completions',
252
272
  modelId: this.modelId,
253
273
  }),
254
- headers: combineHeaders(this.config.headers(), options.headers),
274
+ headers: combineHeaders(this.config.headers?.(), options.headers),
255
275
  body,
256
276
  failedResponseHandler: this.failedResponseHandler,
257
277
  successfulResponseHandler: createEventSourceResponseHandler(
@@ -10,6 +10,9 @@ import {
10
10
  FetchFunction,
11
11
  parseProviderOptions,
12
12
  postJsonToApi,
13
+ serializeModelOptions,
14
+ WORKFLOW_SERIALIZE,
15
+ WORKFLOW_DESERIALIZE,
13
16
  } from '@ai-sdk/provider-utils';
14
17
  import { z } from 'zod/v4';
15
18
  import {
@@ -35,7 +38,7 @@ type OpenAICompatibleEmbeddingConfig = {
35
38
 
36
39
  provider: string;
37
40
  url: (options: { modelId: string; path: string }) => string;
38
- headers: () => Record<string, string | undefined>;
41
+ headers?: () => Record<string, string | undefined>;
39
42
  fetch?: FetchFunction;
40
43
  errorStructure?: ProviderErrorStructure<any>;
41
44
  };
@@ -58,6 +61,20 @@ export class OpenAICompatibleEmbeddingModel implements EmbeddingModelV4 {
58
61
  return this.config.supportsParallelCalls ?? true;
59
62
  }
60
63
 
64
+ static [WORKFLOW_SERIALIZE](model: OpenAICompatibleEmbeddingModel) {
65
+ return serializeModelOptions({
66
+ modelId: model.modelId,
67
+ config: model.config,
68
+ });
69
+ }
70
+
71
+ static [WORKFLOW_DESERIALIZE](options: {
72
+ modelId: string;
73
+ config: OpenAICompatibleEmbeddingConfig;
74
+ }) {
75
+ return new OpenAICompatibleEmbeddingModel(options.modelId, options.config);
76
+ }
77
+
61
78
  constructor(
62
79
  modelId: OpenAICompatibleEmbeddingModelId,
63
80
  config: OpenAICompatibleEmbeddingConfig,
@@ -134,7 +151,7 @@ export class OpenAICompatibleEmbeddingModel implements EmbeddingModelV4 {
134
151
  path: '/embeddings',
135
152
  modelId: this.modelId,
136
153
  }),
137
- headers: combineHeaders(this.config.headers(), headers),
154
+ headers: combineHeaders(this.config.headers?.(), headers),
138
155
  body: {
139
156
  model: this.modelId,
140
157
  input: values,
@@ -18,6 +18,9 @@ import {
18
18
  FetchFunction,
19
19
  postFormDataToApi,
20
20
  postJsonToApi,
21
+ serializeModelOptions,
22
+ WORKFLOW_SERIALIZE,
23
+ WORKFLOW_DESERIALIZE,
21
24
  } from '@ai-sdk/provider-utils';
22
25
  import { z } from 'zod/v4';
23
26
  import {
@@ -28,7 +31,7 @@ import { OpenAICompatibleImageModelId } from './openai-compatible-image-settings
28
31
 
29
32
  export type OpenAICompatibleImageModelConfig = {
30
33
  provider: string;
31
- headers: () => Record<string, string | undefined>;
34
+ headers?: () => Record<string, string | undefined>;
32
35
  url: (options: { modelId: string; path: string }) => string;
33
36
  fetch?: FetchFunction;
34
37
  errorStructure?: ProviderErrorStructure<any>;
@@ -52,6 +55,20 @@ export class OpenAICompatibleImageModel implements ImageModelV4 {
52
55
  return this.config.provider.split('.')[0].trim();
53
56
  }
54
57
 
58
+ static [WORKFLOW_SERIALIZE](model: OpenAICompatibleImageModel) {
59
+ return serializeModelOptions({
60
+ modelId: model.modelId,
61
+ config: model.config,
62
+ });
63
+ }
64
+
65
+ static [WORKFLOW_DESERIALIZE](options: {
66
+ modelId: string;
67
+ config: OpenAICompatibleImageModelConfig;
68
+ }) {
69
+ return new OpenAICompatibleImageModel(options.modelId, options.config);
70
+ }
71
+
55
72
  constructor(
56
73
  readonly modelId: OpenAICompatibleImageModelId,
57
74
  private readonly config: OpenAICompatibleImageModelConfig,
@@ -112,7 +129,7 @@ export class OpenAICompatibleImageModel implements ImageModelV4 {
112
129
  path: '/images/edits',
113
130
  modelId: this.modelId,
114
131
  }),
115
- headers: combineHeaders(this.config.headers(), headers),
132
+ headers: combineHeaders(this.config.headers?.(), headers),
116
133
  formData: convertToFormData<OpenAICompatibleFormDataInput>({
117
134
  model: this.modelId,
118
135
  prompt,
@@ -149,7 +166,7 @@ export class OpenAICompatibleImageModel implements ImageModelV4 {
149
166
  path: '/images/generations',
150
167
  modelId: this.modelId,
151
168
  }),
152
- headers: combineHeaders(this.config.headers(), headers),
169
+ headers: combineHeaders(this.config.headers?.(), headers),
153
170
  body: {
154
171
  model: this.modelId,
155
172
  prompt,