@ai-sdk/openai-compatible 1.0.58 → 1.0.60

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,21 @@
1
1
  # @ai-sdk/openai-compatible
2
2
 
3
+ ## 1.0.60
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [a1a772f]
8
+ - @ai-sdk/provider-utils@3.0.43
9
+
10
+ ## 1.0.59
11
+
12
+ ### Patch Changes
13
+
14
+ - 9944649: Defer validation schema construction until first use to reduce provider import time.
15
+ - Updated dependencies [d7b0ffa]
16
+ - Updated dependencies [4146790]
17
+ - @ai-sdk/provider-utils@3.0.42
18
+
3
19
  ## 1.0.58
4
20
 
5
21
  ### Patch Changes
package/dist/index.d.mts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { SharedV2ProviderMetadata, LanguageModelV2, LanguageModelV2Usage, EmbeddingModelV2, ImageModelV2, ProviderV2 } from '@ai-sdk/provider';
2
- import { FetchFunction } from '@ai-sdk/provider-utils';
2
+ import * as _ai_sdk_provider_utils from '@ai-sdk/provider-utils';
3
+ import { FetchFunction, InferSchema } from '@ai-sdk/provider-utils';
3
4
  import { z, ZodType } from 'zod/v4';
4
5
 
5
6
  type OpenAICompatibleChatModelId = string;
@@ -97,7 +98,7 @@ type OpenAICompatibleChatConfig = {
97
98
  * Optional usage converter for OpenAI-compatible providers with different
98
99
  * token accounting semantics.
99
100
  */
100
- convertUsage?: (usage: z.infer<typeof openaiCompatibleTokenUsageSchema>) => LanguageModelV2Usage;
101
+ convertUsage?: (usage: z.infer<ReturnType<typeof openaiCompatibleTokenUsageSchema>>) => LanguageModelV2Usage;
101
102
  };
102
103
  declare class OpenAICompatibleChatLanguageModel implements LanguageModelV2 {
103
104
  readonly specificationVersion = "v2";
@@ -116,7 +117,7 @@ declare class OpenAICompatibleChatLanguageModel implements LanguageModelV2 {
116
117
  doGenerate(options: Parameters<LanguageModelV2['doGenerate']>[0]): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>>;
117
118
  doStream(options: Parameters<LanguageModelV2['doStream']>[0]): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>>;
118
119
  }
119
- declare const openaiCompatibleTokenUsageSchema: z.ZodOptional<z.ZodNullable<z.ZodObject<{
120
+ declare const openaiCompatibleTokenUsageSchema: () => z.ZodOptional<z.ZodNullable<z.ZodObject<{
120
121
  prompt_tokens: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
121
122
  completion_tokens: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
122
123
  total_tokens: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
@@ -131,13 +132,13 @@ declare const openaiCompatibleTokenUsageSchema: z.ZodOptional<z.ZodNullable<z.Zo
131
132
  }, z.core.$strip>>>;
132
133
 
133
134
  type OpenAICompatibleCompletionModelId = string;
134
- declare const openaiCompatibleCompletionProviderOptions: z.ZodObject<{
135
- echo: z.ZodOptional<z.ZodBoolean>;
136
- logitBias: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
137
- suffix: z.ZodOptional<z.ZodString>;
138
- user: z.ZodOptional<z.ZodString>;
139
- }, z.core.$strip>;
140
- type OpenAICompatibleCompletionProviderOptions = z.infer<typeof openaiCompatibleCompletionProviderOptions>;
135
+ declare const openaiCompatibleCompletionProviderOptions: _ai_sdk_provider_utils.LazySchema<{
136
+ echo?: boolean | undefined;
137
+ logitBias?: Record<string, number> | undefined;
138
+ suffix?: string | undefined;
139
+ user?: string | undefined;
140
+ }>;
141
+ type OpenAICompatibleCompletionProviderOptions = InferSchema<typeof openaiCompatibleCompletionProviderOptions>;
141
142
 
142
143
  type OpenAICompatibleCompletionConfig = {
143
144
  provider: string;
@@ -170,11 +171,11 @@ declare class OpenAICompatibleCompletionLanguageModel implements LanguageModelV2
170
171
  }
171
172
 
172
173
  type OpenAICompatibleEmbeddingModelId = string;
173
- declare const openaiCompatibleEmbeddingProviderOptions: z.ZodObject<{
174
- dimensions: z.ZodOptional<z.ZodNumber>;
175
- user: z.ZodOptional<z.ZodString>;
176
- }, z.core.$strip>;
177
- type OpenAICompatibleEmbeddingProviderOptions = z.infer<typeof openaiCompatibleEmbeddingProviderOptions>;
174
+ declare const openaiCompatibleEmbeddingProviderOptions: _ai_sdk_provider_utils.LazySchema<{
175
+ dimensions?: number | undefined;
176
+ user?: string | undefined;
177
+ }>;
178
+ type OpenAICompatibleEmbeddingProviderOptions = InferSchema<typeof openaiCompatibleEmbeddingProviderOptions>;
178
179
 
179
180
  type OpenAICompatibleEmbeddingConfig = {
180
181
  /**
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { SharedV2ProviderMetadata, LanguageModelV2, LanguageModelV2Usage, EmbeddingModelV2, ImageModelV2, ProviderV2 } from '@ai-sdk/provider';
2
- import { FetchFunction } from '@ai-sdk/provider-utils';
2
+ import * as _ai_sdk_provider_utils from '@ai-sdk/provider-utils';
3
+ import { FetchFunction, InferSchema } from '@ai-sdk/provider-utils';
3
4
  import { z, ZodType } from 'zod/v4';
4
5
 
5
6
  type OpenAICompatibleChatModelId = string;
@@ -97,7 +98,7 @@ type OpenAICompatibleChatConfig = {
97
98
  * Optional usage converter for OpenAI-compatible providers with different
98
99
  * token accounting semantics.
99
100
  */
100
- convertUsage?: (usage: z.infer<typeof openaiCompatibleTokenUsageSchema>) => LanguageModelV2Usage;
101
+ convertUsage?: (usage: z.infer<ReturnType<typeof openaiCompatibleTokenUsageSchema>>) => LanguageModelV2Usage;
101
102
  };
102
103
  declare class OpenAICompatibleChatLanguageModel implements LanguageModelV2 {
103
104
  readonly specificationVersion = "v2";
@@ -116,7 +117,7 @@ declare class OpenAICompatibleChatLanguageModel implements LanguageModelV2 {
116
117
  doGenerate(options: Parameters<LanguageModelV2['doGenerate']>[0]): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>>;
117
118
  doStream(options: Parameters<LanguageModelV2['doStream']>[0]): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>>;
118
119
  }
119
- declare const openaiCompatibleTokenUsageSchema: z.ZodOptional<z.ZodNullable<z.ZodObject<{
120
+ declare const openaiCompatibleTokenUsageSchema: () => z.ZodOptional<z.ZodNullable<z.ZodObject<{
120
121
  prompt_tokens: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
121
122
  completion_tokens: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
122
123
  total_tokens: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
@@ -131,13 +132,13 @@ declare const openaiCompatibleTokenUsageSchema: z.ZodOptional<z.ZodNullable<z.Zo
131
132
  }, z.core.$strip>>>;
132
133
 
133
134
  type OpenAICompatibleCompletionModelId = string;
134
- declare const openaiCompatibleCompletionProviderOptions: z.ZodObject<{
135
- echo: z.ZodOptional<z.ZodBoolean>;
136
- logitBias: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
137
- suffix: z.ZodOptional<z.ZodString>;
138
- user: z.ZodOptional<z.ZodString>;
139
- }, z.core.$strip>;
140
- type OpenAICompatibleCompletionProviderOptions = z.infer<typeof openaiCompatibleCompletionProviderOptions>;
135
+ declare const openaiCompatibleCompletionProviderOptions: _ai_sdk_provider_utils.LazySchema<{
136
+ echo?: boolean | undefined;
137
+ logitBias?: Record<string, number> | undefined;
138
+ suffix?: string | undefined;
139
+ user?: string | undefined;
140
+ }>;
141
+ type OpenAICompatibleCompletionProviderOptions = InferSchema<typeof openaiCompatibleCompletionProviderOptions>;
141
142
 
142
143
  type OpenAICompatibleCompletionConfig = {
143
144
  provider: string;
@@ -170,11 +171,11 @@ declare class OpenAICompatibleCompletionLanguageModel implements LanguageModelV2
170
171
  }
171
172
 
172
173
  type OpenAICompatibleEmbeddingModelId = string;
173
- declare const openaiCompatibleEmbeddingProviderOptions: z.ZodObject<{
174
- dimensions: z.ZodOptional<z.ZodNumber>;
175
- user: z.ZodOptional<z.ZodString>;
176
- }, z.core.$strip>;
177
- type OpenAICompatibleEmbeddingProviderOptions = z.infer<typeof openaiCompatibleEmbeddingProviderOptions>;
174
+ declare const openaiCompatibleEmbeddingProviderOptions: _ai_sdk_provider_utils.LazySchema<{
175
+ dimensions?: number | undefined;
176
+ user?: string | undefined;
177
+ }>;
178
+ type OpenAICompatibleEmbeddingProviderOptions = InferSchema<typeof openaiCompatibleEmbeddingProviderOptions>;
178
179
 
179
180
  type OpenAICompatibleEmbeddingConfig = {
180
181
  /**
package/dist/index.js CHANGED
@@ -659,7 +659,7 @@ var OpenAICompatibleChatLanguageModel = class {
659
659
  };
660
660
  }
661
661
  };
662
- var openaiCompatibleTokenUsageSchema = import_v43.z.object({
662
+ var openaiCompatibleTokenUsageSchema = () => import_v43.z.object({
663
663
  prompt_tokens: import_v43.z.number().nullish(),
664
664
  completion_tokens: import_v43.z.number().nullish(),
665
665
  total_tokens: import_v43.z.number().nullish(),
@@ -682,32 +682,36 @@ function convertOpenAICompatibleChatUsage(usage) {
682
682
  cachedInputTokens: (_g = (_f = usage == null ? void 0 : usage.prompt_tokens_details) == null ? void 0 : _f.cached_tokens) != null ? _g : void 0
683
683
  };
684
684
  }
685
- var OpenAICompatibleChatResponseSchema = import_v43.z.object({
686
- id: import_v43.z.string().nullish(),
687
- created: import_v43.z.number().nullish(),
688
- model: import_v43.z.string().nullish(),
689
- choices: import_v43.z.array(
685
+ var OpenAICompatibleChatResponseSchema = (0, import_provider_utils2.lazySchema)(
686
+ () => (0, import_provider_utils2.zodSchema)(
690
687
  import_v43.z.object({
691
- message: import_v43.z.object({
692
- role: import_v43.z.literal("assistant").nullish(),
693
- content: import_v43.z.string().nullish(),
694
- reasoning_content: import_v43.z.string().nullish(),
695
- reasoning: import_v43.z.string().nullish(),
696
- tool_calls: import_v43.z.array(
697
- import_v43.z.object({
698
- id: import_v43.z.string().nullish(),
699
- function: import_v43.z.object({
700
- name: import_v43.z.string(),
701
- arguments: import_v43.z.string()
702
- })
703
- })
704
- ).nullish()
705
- }),
706
- finish_reason: import_v43.z.string().nullish()
688
+ id: import_v43.z.string().nullish(),
689
+ created: import_v43.z.number().nullish(),
690
+ model: import_v43.z.string().nullish(),
691
+ choices: import_v43.z.array(
692
+ import_v43.z.object({
693
+ message: import_v43.z.object({
694
+ role: import_v43.z.literal("assistant").nullish(),
695
+ content: import_v43.z.string().nullish(),
696
+ reasoning_content: import_v43.z.string().nullish(),
697
+ reasoning: import_v43.z.string().nullish(),
698
+ tool_calls: import_v43.z.array(
699
+ import_v43.z.object({
700
+ id: import_v43.z.string().nullish(),
701
+ function: import_v43.z.object({
702
+ name: import_v43.z.string(),
703
+ arguments: import_v43.z.string()
704
+ })
705
+ })
706
+ ).nullish()
707
+ }),
708
+ finish_reason: import_v43.z.string().nullish()
709
+ })
710
+ ),
711
+ usage: openaiCompatibleTokenUsageSchema()
707
712
  })
708
- ),
709
- usage: openaiCompatibleTokenUsageSchema
710
- });
713
+ )
714
+ );
711
715
  var createOpenAICompatibleChatChunkSchema = (errorSchema) => import_v43.z.union([
712
716
  import_v43.z.object({
713
717
  id: import_v43.z.string().nullish(),
@@ -734,16 +738,16 @@ var createOpenAICompatibleChatChunkSchema = (errorSchema) => import_v43.z.union(
734
738
  ).nullish()
735
739
  }).nullish(),
736
740
  finish_reason: import_v43.z.string().nullish(),
737
- usage: openaiCompatibleTokenUsageSchema
741
+ usage: openaiCompatibleTokenUsageSchema()
738
742
  })
739
743
  ),
740
- usage: openaiCompatibleTokenUsageSchema
744
+ usage: openaiCompatibleTokenUsageSchema()
741
745
  }),
742
746
  errorSchema
743
747
  ]);
744
748
 
745
749
  // src/completion/openai-compatible-completion-language-model.ts
746
- var import_provider_utils3 = require("@ai-sdk/provider-utils");
750
+ var import_provider_utils4 = require("@ai-sdk/provider-utils");
747
751
  var import_v45 = require("zod/v4");
748
752
 
749
753
  // src/completion/convert-to-openai-compatible-completion-prompt.ts
@@ -852,29 +856,34 @@ function mapOpenAICompatibleFinishReason2(finishReason) {
852
856
  }
853
857
 
854
858
  // src/completion/openai-compatible-completion-options.ts
859
+ var import_provider_utils3 = require("@ai-sdk/provider-utils");
855
860
  var import_v44 = require("zod/v4");
856
- var openaiCompatibleCompletionProviderOptions = import_v44.z.object({
857
- /**
858
- * Echo back the prompt in addition to the completion.
859
- */
860
- echo: import_v44.z.boolean().optional(),
861
- /**
862
- * Modify the likelihood of specified tokens appearing in the completion.
863
- *
864
- * Accepts a JSON object that maps tokens (specified by their token ID in
865
- * the GPT tokenizer) to an associated bias value from -100 to 100.
866
- */
867
- logitBias: import_v44.z.record(import_v44.z.string(), import_v44.z.number()).optional(),
868
- /**
869
- * The suffix that comes after a completion of inserted text.
870
- */
871
- suffix: import_v44.z.string().optional(),
872
- /**
873
- * A unique identifier representing your end-user, which can help providers to
874
- * monitor and detect abuse.
875
- */
876
- user: import_v44.z.string().optional()
877
- });
861
+ var openaiCompatibleCompletionProviderOptions = (0, import_provider_utils3.lazySchema)(
862
+ () => (0, import_provider_utils3.zodSchema)(
863
+ import_v44.z.object({
864
+ /**
865
+ * Echo back the prompt in addition to the completion.
866
+ */
867
+ echo: import_v44.z.boolean().optional(),
868
+ /**
869
+ * Modify the likelihood of specified tokens appearing in the completion.
870
+ *
871
+ * Accepts a JSON object that maps tokens (specified by their token ID in
872
+ * the GPT tokenizer) to an associated bias value from -100 to 100.
873
+ */
874
+ logitBias: import_v44.z.record(import_v44.z.string(), import_v44.z.number()).optional(),
875
+ /**
876
+ * The suffix that comes after a completion of inserted text.
877
+ */
878
+ suffix: import_v44.z.string().optional(),
879
+ /**
880
+ * A unique identifier representing your end-user, which can help providers to
881
+ * monitor and detect abuse.
882
+ */
883
+ user: import_v44.z.string().optional()
884
+ })
885
+ )
886
+ );
878
887
 
879
888
  // src/completion/openai-compatible-completion-language-model.ts
880
889
  var OpenAICompatibleCompletionLanguageModel = class {
@@ -888,7 +897,7 @@ var OpenAICompatibleCompletionLanguageModel = class {
888
897
  this.chunkSchema = createOpenAICompatibleCompletionChunkSchema(
889
898
  errorStructure.errorSchema
890
899
  );
891
- this.failedResponseHandler = (0, import_provider_utils3.createJsonErrorResponseHandler)(errorStructure);
900
+ this.failedResponseHandler = (0, import_provider_utils4.createJsonErrorResponseHandler)(errorStructure);
892
901
  }
893
902
  get provider() {
894
903
  return this.config.provider;
@@ -917,7 +926,7 @@ var OpenAICompatibleCompletionLanguageModel = class {
917
926
  }) {
918
927
  var _a;
919
928
  const warnings = [];
920
- const completionOptions = (_a = await (0, import_provider_utils3.parseProviderOptions)({
929
+ const completionOptions = (_a = await (0, import_provider_utils4.parseProviderOptions)({
921
930
  provider: this.providerOptionsName,
922
931
  providerOptions,
923
932
  schema: openaiCompatibleCompletionProviderOptions
@@ -972,15 +981,15 @@ var OpenAICompatibleCompletionLanguageModel = class {
972
981
  responseHeaders,
973
982
  value: response,
974
983
  rawValue: rawResponse
975
- } = await (0, import_provider_utils3.postJsonToApi)({
984
+ } = await (0, import_provider_utils4.postJsonToApi)({
976
985
  url: this.config.url({
977
986
  path: "/completions",
978
987
  modelId: this.modelId
979
988
  }),
980
- headers: (0, import_provider_utils3.combineHeaders)(this.config.headers(), options.headers),
989
+ headers: (0, import_provider_utils4.combineHeaders)(this.config.headers(), options.headers),
981
990
  body: args,
982
991
  failedResponseHandler: this.failedResponseHandler,
983
- successfulResponseHandler: (0, import_provider_utils3.createJsonResponseHandler)(
992
+ successfulResponseHandler: (0, import_provider_utils4.createJsonResponseHandler)(
984
993
  openaiCompatibleCompletionResponseSchema
985
994
  ),
986
995
  abortSignal: options.abortSignal,
@@ -1016,15 +1025,15 @@ var OpenAICompatibleCompletionLanguageModel = class {
1016
1025
  // only include stream_options when in strict compatibility mode:
1017
1026
  stream_options: this.config.includeUsage ? { include_usage: true } : void 0
1018
1027
  };
1019
- const { responseHeaders, value: response } = await (0, import_provider_utils3.postJsonToApi)({
1028
+ const { responseHeaders, value: response } = await (0, import_provider_utils4.postJsonToApi)({
1020
1029
  url: this.config.url({
1021
1030
  path: "/completions",
1022
1031
  modelId: this.modelId
1023
1032
  }),
1024
- headers: (0, import_provider_utils3.combineHeaders)(this.config.headers(), options.headers),
1033
+ headers: (0, import_provider_utils4.combineHeaders)(this.config.headers(), options.headers),
1025
1034
  body,
1026
1035
  failedResponseHandler: this.failedResponseHandler,
1027
- successfulResponseHandler: (0, import_provider_utils3.createEventSourceResponseHandler)(
1036
+ successfulResponseHandler: (0, import_provider_utils4.createEventSourceResponseHandler)(
1028
1037
  this.chunkSchema
1029
1038
  ),
1030
1039
  abortSignal: options.abortSignal,
@@ -1106,23 +1115,27 @@ var OpenAICompatibleCompletionLanguageModel = class {
1106
1115
  };
1107
1116
  }
1108
1117
  };
1109
- var usageSchema = import_v45.z.object({
1118
+ var usageSchema = () => import_v45.z.object({
1110
1119
  prompt_tokens: import_v45.z.number(),
1111
1120
  completion_tokens: import_v45.z.number(),
1112
1121
  total_tokens: import_v45.z.number()
1113
1122
  });
1114
- var openaiCompatibleCompletionResponseSchema = import_v45.z.object({
1115
- id: import_v45.z.string().nullish(),
1116
- created: import_v45.z.number().nullish(),
1117
- model: import_v45.z.string().nullish(),
1118
- choices: import_v45.z.array(
1123
+ var openaiCompatibleCompletionResponseSchema = (0, import_provider_utils4.lazySchema)(
1124
+ () => (0, import_provider_utils4.zodSchema)(
1119
1125
  import_v45.z.object({
1120
- text: import_v45.z.string(),
1121
- finish_reason: import_v45.z.string()
1126
+ id: import_v45.z.string().nullish(),
1127
+ created: import_v45.z.number().nullish(),
1128
+ model: import_v45.z.string().nullish(),
1129
+ choices: import_v45.z.array(
1130
+ import_v45.z.object({
1131
+ text: import_v45.z.string(),
1132
+ finish_reason: import_v45.z.string()
1133
+ })
1134
+ ),
1135
+ usage: usageSchema().nullish()
1122
1136
  })
1123
- ),
1124
- usage: usageSchema.nullish()
1125
- });
1137
+ )
1138
+ );
1126
1139
  var createOpenAICompatibleCompletionChunkSchema = (errorSchema) => import_v45.z.union([
1127
1140
  import_v45.z.object({
1128
1141
  id: import_v45.z.string().nullish(),
@@ -1135,30 +1148,35 @@ var createOpenAICompatibleCompletionChunkSchema = (errorSchema) => import_v45.z.
1135
1148
  index: import_v45.z.number()
1136
1149
  })
1137
1150
  ),
1138
- usage: usageSchema.nullish()
1151
+ usage: usageSchema().nullish()
1139
1152
  }),
1140
1153
  errorSchema
1141
1154
  ]);
1142
1155
 
1143
1156
  // src/embedding/openai-compatible-embedding-model.ts
1144
1157
  var import_provider5 = require("@ai-sdk/provider");
1145
- var import_provider_utils4 = require("@ai-sdk/provider-utils");
1158
+ var import_provider_utils6 = require("@ai-sdk/provider-utils");
1146
1159
  var import_v47 = require("zod/v4");
1147
1160
 
1148
1161
  // src/embedding/openai-compatible-embedding-options.ts
1162
+ var import_provider_utils5 = require("@ai-sdk/provider-utils");
1149
1163
  var import_v46 = require("zod/v4");
1150
- var openaiCompatibleEmbeddingProviderOptions = import_v46.z.object({
1151
- /**
1152
- * The number of dimensions the resulting output embeddings should have.
1153
- * Only supported in text-embedding-3 and later models.
1154
- */
1155
- dimensions: import_v46.z.number().optional(),
1156
- /**
1157
- * A unique identifier representing your end-user, which can help providers to
1158
- * monitor and detect abuse.
1159
- */
1160
- user: import_v46.z.string().optional()
1161
- });
1164
+ var openaiCompatibleEmbeddingProviderOptions = (0, import_provider_utils5.lazySchema)(
1165
+ () => (0, import_provider_utils5.zodSchema)(
1166
+ import_v46.z.object({
1167
+ /**
1168
+ * The number of dimensions the resulting output embeddings should have.
1169
+ * Only supported in text-embedding-3 and later models.
1170
+ */
1171
+ dimensions: import_v46.z.number().optional(),
1172
+ /**
1173
+ * A unique identifier representing your end-user, which can help providers to
1174
+ * monitor and detect abuse.
1175
+ */
1176
+ user: import_v46.z.string().optional()
1177
+ })
1178
+ )
1179
+ );
1162
1180
 
1163
1181
  // src/embedding/openai-compatible-embedding-model.ts
1164
1182
  var OpenAICompatibleEmbeddingModel = class {
@@ -1189,12 +1207,12 @@ var OpenAICompatibleEmbeddingModel = class {
1189
1207
  }) {
1190
1208
  var _a, _b, _c;
1191
1209
  const compatibleOptions = Object.assign(
1192
- (_a = await (0, import_provider_utils4.parseProviderOptions)({
1210
+ (_a = await (0, import_provider_utils6.parseProviderOptions)({
1193
1211
  provider: "openai-compatible",
1194
1212
  providerOptions,
1195
1213
  schema: openaiCompatibleEmbeddingProviderOptions
1196
1214
  })) != null ? _a : {},
1197
- (_b = await (0, import_provider_utils4.parseProviderOptions)({
1215
+ (_b = await (0, import_provider_utils6.parseProviderOptions)({
1198
1216
  provider: this.providerOptionsName,
1199
1217
  providerOptions,
1200
1218
  schema: openaiCompatibleEmbeddingProviderOptions
@@ -1212,12 +1230,12 @@ var OpenAICompatibleEmbeddingModel = class {
1212
1230
  responseHeaders,
1213
1231
  value: response,
1214
1232
  rawValue
1215
- } = await (0, import_provider_utils4.postJsonToApi)({
1233
+ } = await (0, import_provider_utils6.postJsonToApi)({
1216
1234
  url: this.config.url({
1217
1235
  path: "/embeddings",
1218
1236
  modelId: this.modelId
1219
1237
  }),
1220
- headers: (0, import_provider_utils4.combineHeaders)(this.config.headers(), headers),
1238
+ headers: (0, import_provider_utils6.combineHeaders)(this.config.headers(), headers),
1221
1239
  body: {
1222
1240
  model: this.modelId,
1223
1241
  input: values,
@@ -1225,10 +1243,10 @@ var OpenAICompatibleEmbeddingModel = class {
1225
1243
  dimensions: compatibleOptions.dimensions,
1226
1244
  user: compatibleOptions.user
1227
1245
  },
1228
- failedResponseHandler: (0, import_provider_utils4.createJsonErrorResponseHandler)(
1246
+ failedResponseHandler: (0, import_provider_utils6.createJsonErrorResponseHandler)(
1229
1247
  (_c = this.config.errorStructure) != null ? _c : defaultOpenAICompatibleErrorStructure
1230
1248
  ),
1231
- successfulResponseHandler: (0, import_provider_utils4.createJsonResponseHandler)(
1249
+ successfulResponseHandler: (0, import_provider_utils6.createJsonResponseHandler)(
1232
1250
  openaiTextEmbeddingResponseSchema
1233
1251
  ),
1234
1252
  abortSignal,
@@ -1242,14 +1260,18 @@ var OpenAICompatibleEmbeddingModel = class {
1242
1260
  };
1243
1261
  }
1244
1262
  };
1245
- var openaiTextEmbeddingResponseSchema = import_v47.z.object({
1246
- data: import_v47.z.array(import_v47.z.object({ embedding: import_v47.z.array(import_v47.z.number()) })),
1247
- usage: import_v47.z.object({ prompt_tokens: import_v47.z.number() }).nullish(),
1248
- providerMetadata: import_v47.z.record(import_v47.z.string(), import_v47.z.record(import_v47.z.string(), import_v47.z.any())).optional()
1249
- });
1263
+ var openaiTextEmbeddingResponseSchema = (0, import_provider_utils6.lazySchema)(
1264
+ () => (0, import_provider_utils6.zodSchema)(
1265
+ import_v47.z.object({
1266
+ data: import_v47.z.array(import_v47.z.object({ embedding: import_v47.z.array(import_v47.z.number()) })),
1267
+ usage: import_v47.z.object({ prompt_tokens: import_v47.z.number() }).nullish(),
1268
+ providerMetadata: import_v47.z.record(import_v47.z.string(), import_v47.z.record(import_v47.z.string(), import_v47.z.any())).optional()
1269
+ })
1270
+ )
1271
+ );
1250
1272
 
1251
1273
  // src/image/openai-compatible-image-model.ts
1252
- var import_provider_utils5 = require("@ai-sdk/provider-utils");
1274
+ var import_provider_utils7 = require("@ai-sdk/provider-utils");
1253
1275
  var import_v48 = require("zod/v4");
1254
1276
  var OpenAICompatibleImageModel = class {
1255
1277
  constructor(modelId, config) {
@@ -1290,12 +1312,12 @@ var OpenAICompatibleImageModel = class {
1290
1312
  warnings.push({ type: "unsupported-setting", setting: "seed" });
1291
1313
  }
1292
1314
  const currentDate = (_c = (_b = (_a = this.config._internal) == null ? void 0 : _a.currentDate) == null ? void 0 : _b.call(_a)) != null ? _c : /* @__PURE__ */ new Date();
1293
- const { value: response, responseHeaders } = await (0, import_provider_utils5.postJsonToApi)({
1315
+ const { value: response, responseHeaders } = await (0, import_provider_utils7.postJsonToApi)({
1294
1316
  url: this.config.url({
1295
1317
  path: "/images/generations",
1296
1318
  modelId: this.modelId
1297
1319
  }),
1298
- headers: (0, import_provider_utils5.combineHeaders)(this.config.headers(), headers),
1320
+ headers: (0, import_provider_utils7.combineHeaders)(this.config.headers(), headers),
1299
1321
  body: {
1300
1322
  model: this.modelId,
1301
1323
  prompt,
@@ -1304,10 +1326,10 @@ var OpenAICompatibleImageModel = class {
1304
1326
  ...providerOptions[this.providerOptionsKey],
1305
1327
  response_format: "b64_json"
1306
1328
  },
1307
- failedResponseHandler: (0, import_provider_utils5.createJsonErrorResponseHandler)(
1329
+ failedResponseHandler: (0, import_provider_utils7.createJsonErrorResponseHandler)(
1308
1330
  (_d = this.config.errorStructure) != null ? _d : defaultOpenAICompatibleErrorStructure
1309
1331
  ),
1310
- successfulResponseHandler: (0, import_provider_utils5.createJsonResponseHandler)(
1332
+ successfulResponseHandler: (0, import_provider_utils7.createJsonResponseHandler)(
1311
1333
  openaiCompatibleImageResponseSchema
1312
1334
  ),
1313
1335
  abortSignal,
@@ -1324,25 +1346,29 @@ var OpenAICompatibleImageModel = class {
1324
1346
  };
1325
1347
  }
1326
1348
  };
1327
- var openaiCompatibleImageResponseSchema = import_v48.z.object({
1328
- data: import_v48.z.array(import_v48.z.object({ b64_json: import_v48.z.string() }))
1329
- });
1349
+ var openaiCompatibleImageResponseSchema = (0, import_provider_utils7.lazySchema)(
1350
+ () => (0, import_provider_utils7.zodSchema)(
1351
+ import_v48.z.object({
1352
+ data: import_v48.z.array(import_v48.z.object({ b64_json: import_v48.z.string() }))
1353
+ })
1354
+ )
1355
+ );
1330
1356
 
1331
1357
  // src/openai-compatible-provider.ts
1332
- var import_provider_utils6 = require("@ai-sdk/provider-utils");
1358
+ var import_provider_utils8 = require("@ai-sdk/provider-utils");
1333
1359
 
1334
1360
  // src/version.ts
1335
- var VERSION = true ? "1.0.58" : "0.0.0-test";
1361
+ var VERSION = true ? "1.0.60" : "0.0.0-test";
1336
1362
 
1337
1363
  // src/openai-compatible-provider.ts
1338
1364
  function createOpenAICompatible(options) {
1339
- const baseURL = (0, import_provider_utils6.withoutTrailingSlash)(options.baseURL);
1365
+ const baseURL = (0, import_provider_utils8.withoutTrailingSlash)(options.baseURL);
1340
1366
  const providerName = options.name;
1341
1367
  const headers = {
1342
1368
  ...options.apiKey && { Authorization: `Bearer ${options.apiKey}` },
1343
1369
  ...options.headers
1344
1370
  };
1345
- const getHeaders = () => (0, import_provider_utils6.withUserAgentSuffix)(headers, `ai-sdk/openai-compatible/${VERSION}`);
1371
+ const getHeaders = () => (0, import_provider_utils8.withUserAgentSuffix)(headers, `ai-sdk/openai-compatible/${VERSION}`);
1346
1372
  const getCommonModelConfig = (modelType) => ({
1347
1373
  provider: `${providerName}.${modelType}`,
1348
1374
  url: ({ path }) => {