@ai-sdk/openai 3.0.2 → 3.0.3

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/dist/index.mjs CHANGED
@@ -2540,6 +2540,7 @@ async function convertToOpenAIResponsesInput({
2540
2540
  prompt,
2541
2541
  toolNameMapping,
2542
2542
  systemMessageMode,
2543
+ providerOptionsName,
2543
2544
  fileIdPrefixes,
2544
2545
  store,
2545
2546
  hasLocalShellTool = false,
@@ -2595,7 +2596,7 @@ async function convertToOpenAIResponsesInput({
2595
2596
  ...part.data instanceof URL ? { image_url: part.data.toString() } : typeof part.data === "string" && isFileId(part.data, fileIdPrefixes) ? { file_id: part.data } : {
2596
2597
  image_url: `data:${mediaType};base64,${convertToBase642(part.data)}`
2597
2598
  },
2598
- detail: (_b2 = (_a2 = part.providerOptions) == null ? void 0 : _a2.openai) == null ? void 0 : _b2.imageDetail
2599
+ detail: (_b2 = (_a2 = part.providerOptions) == null ? void 0 : _a2[providerOptionsName]) == null ? void 0 : _b2.imageDetail
2599
2600
  };
2600
2601
  } else if (part.mediaType === "application/pdf") {
2601
2602
  if (part.data instanceof URL) {
@@ -2627,7 +2628,7 @@ async function convertToOpenAIResponsesInput({
2627
2628
  for (const part of content) {
2628
2629
  switch (part.type) {
2629
2630
  case "text": {
2630
- const id = (_b = (_a = part.providerOptions) == null ? void 0 : _a.openai) == null ? void 0 : _b.itemId;
2631
+ const id = (_b = (_a = part.providerOptions) == null ? void 0 : _a[providerOptionsName]) == null ? void 0 : _b.itemId;
2631
2632
  if (store && id != null) {
2632
2633
  input.push({ type: "item_reference", id });
2633
2634
  break;
@@ -2640,7 +2641,7 @@ async function convertToOpenAIResponsesInput({
2640
2641
  break;
2641
2642
  }
2642
2643
  case "tool-call": {
2643
- const id = (_g = (_d = (_c = part.providerOptions) == null ? void 0 : _c.openai) == null ? void 0 : _d.itemId) != null ? _g : (_f = (_e = part.providerMetadata) == null ? void 0 : _e.openai) == null ? void 0 : _f.itemId;
2644
+ const id = (_g = (_d = (_c = part.providerOptions) == null ? void 0 : _c[providerOptionsName]) == null ? void 0 : _d.itemId) != null ? _g : (_f = (_e = part.providerMetadata) == null ? void 0 : _e[providerOptionsName]) == null ? void 0 : _f.itemId;
2644
2645
  if (part.providerExecuted) {
2645
2646
  if (store && id != null) {
2646
2647
  input.push({ type: "item_reference", id });
@@ -2707,7 +2708,7 @@ async function convertToOpenAIResponsesInput({
2707
2708
  break;
2708
2709
  }
2709
2710
  if (store) {
2710
- const itemId = (_j = (_i = (_h = part.providerMetadata) == null ? void 0 : _h.openai) == null ? void 0 : _i.itemId) != null ? _j : part.toolCallId;
2711
+ const itemId = (_j = (_i = (_h = part.providerMetadata) == null ? void 0 : _h[providerOptionsName]) == null ? void 0 : _i.itemId) != null ? _j : part.toolCallId;
2711
2712
  input.push({ type: "item_reference", id: itemId });
2712
2713
  } else {
2713
2714
  warnings.push({
@@ -2719,7 +2720,7 @@ async function convertToOpenAIResponsesInput({
2719
2720
  }
2720
2721
  case "reasoning": {
2721
2722
  const providerOptions = await parseProviderOptions4({
2722
- provider: "openai",
2723
+ provider: providerOptionsName,
2723
2724
  providerOptions: part.providerOptions,
2724
2725
  schema: openaiResponsesReasoningProviderOptionsSchema
2725
2726
  });
@@ -4094,11 +4095,19 @@ var OpenAIResponsesLanguageModel = class {
4094
4095
  if (stopSequences != null) {
4095
4096
  warnings.push({ type: "unsupported", feature: "stopSequences" });
4096
4097
  }
4097
- const openaiOptions = await parseProviderOptions5({
4098
- provider: "openai",
4098
+ const providerOptionsName = this.config.provider.includes("azure") ? "azure" : "openai";
4099
+ let openaiOptions = await parseProviderOptions5({
4100
+ provider: providerOptionsName,
4099
4101
  providerOptions,
4100
4102
  schema: openaiResponsesProviderOptionsSchema
4101
4103
  });
4104
+ if (openaiOptions == null && providerOptionsName !== "openai") {
4105
+ openaiOptions = await parseProviderOptions5({
4106
+ provider: "openai",
4107
+ providerOptions,
4108
+ schema: openaiResponsesProviderOptionsSchema
4109
+ });
4110
+ }
4102
4111
  const isReasoningModel = (_a = openaiOptions == null ? void 0 : openaiOptions.forceReasoning) != null ? _a : modelCapabilities.isReasoningModel;
4103
4112
  if ((openaiOptions == null ? void 0 : openaiOptions.conversation) && (openaiOptions == null ? void 0 : openaiOptions.previousResponseId)) {
4104
4113
  warnings.push({
@@ -4125,6 +4134,7 @@ var OpenAIResponsesLanguageModel = class {
4125
4134
  prompt,
4126
4135
  toolNameMapping,
4127
4136
  systemMessageMode: (_b = openaiOptions == null ? void 0 : openaiOptions.systemMessageMode) != null ? _b : isReasoningModel ? "developer" : modelCapabilities.systemMessageMode,
4137
+ providerOptionsName,
4128
4138
  fileIdPrefixes: this.config.fileIdPrefixes,
4129
4139
  store: (_c = openaiOptions == null ? void 0 : openaiOptions.store) != null ? _c : true,
4130
4140
  hasLocalShellTool: hasOpenAITool("openai.local_shell"),
@@ -4279,7 +4289,8 @@ var OpenAIResponsesLanguageModel = class {
4279
4289
  },
4280
4290
  warnings: [...warnings, ...toolWarnings],
4281
4291
  store,
4282
- toolNameMapping
4292
+ toolNameMapping,
4293
+ providerOptionsName
4283
4294
  };
4284
4295
  }
4285
4296
  async doGenerate(options) {
@@ -4288,13 +4299,13 @@ var OpenAIResponsesLanguageModel = class {
4288
4299
  args: body,
4289
4300
  warnings,
4290
4301
  webSearchToolName,
4291
- toolNameMapping
4302
+ toolNameMapping,
4303
+ providerOptionsName
4292
4304
  } = await this.getArgs(options);
4293
4305
  const url = this.config.url({
4294
4306
  path: "/responses",
4295
4307
  modelId: this.modelId
4296
4308
  });
4297
- const providerKey = this.config.provider.replace(".responses", "");
4298
4309
  const approvalRequestIdToDummyToolCallIdFromPrompt = extractApprovalRequestIdToToolCallIdMapping(options.prompt);
4299
4310
  const {
4300
4311
  responseHeaders,
@@ -4336,7 +4347,7 @@ var OpenAIResponsesLanguageModel = class {
4336
4347
  type: "reasoning",
4337
4348
  text: summary.text,
4338
4349
  providerMetadata: {
4339
- [providerKey]: {
4350
+ [providerOptionsName]: {
4340
4351
  itemId: part.id,
4341
4352
  reasoningEncryptedContent: (_a = part.encrypted_content) != null ? _a : null
4342
4353
  }
@@ -4372,7 +4383,7 @@ var OpenAIResponsesLanguageModel = class {
4372
4383
  action: part.action
4373
4384
  }),
4374
4385
  providerMetadata: {
4375
- [providerKey]: {
4386
+ [providerOptionsName]: {
4376
4387
  itemId: part.id
4377
4388
  }
4378
4389
  }
@@ -4390,7 +4401,7 @@ var OpenAIResponsesLanguageModel = class {
4390
4401
  }
4391
4402
  }),
4392
4403
  providerMetadata: {
4393
- [providerKey]: {
4404
+ [providerOptionsName]: {
4394
4405
  itemId: part.id
4395
4406
  }
4396
4407
  }
@@ -4399,7 +4410,7 @@ var OpenAIResponsesLanguageModel = class {
4399
4410
  }
4400
4411
  case "message": {
4401
4412
  for (const contentPart of part.content) {
4402
- if (((_c = (_b = options.providerOptions) == null ? void 0 : _b.openai) == null ? void 0 : _c.logprobs) && contentPart.logprobs) {
4413
+ if (((_c = (_b = options.providerOptions) == null ? void 0 : _b[providerOptionsName]) == null ? void 0 : _c.logprobs) && contentPart.logprobs) {
4403
4414
  logprobs.push(contentPart.logprobs);
4404
4415
  }
4405
4416
  const providerMetadata2 = {
@@ -4412,7 +4423,7 @@ var OpenAIResponsesLanguageModel = class {
4412
4423
  type: "text",
4413
4424
  text: contentPart.text,
4414
4425
  providerMetadata: {
4415
- [providerKey]: providerMetadata2
4426
+ [providerOptionsName]: providerMetadata2
4416
4427
  }
4417
4428
  });
4418
4429
  for (const annotation of contentPart.annotations) {
@@ -4434,7 +4445,7 @@ var OpenAIResponsesLanguageModel = class {
4434
4445
  filename: (_l = annotation.filename) != null ? _l : annotation.file_id,
4435
4446
  ...annotation.file_id ? {
4436
4447
  providerMetadata: {
4437
- [providerKey]: {
4448
+ [providerOptionsName]: {
4438
4449
  fileId: annotation.file_id
4439
4450
  }
4440
4451
  }
@@ -4449,7 +4460,7 @@ var OpenAIResponsesLanguageModel = class {
4449
4460
  title: (_q = (_p = annotation.filename) != null ? _p : annotation.file_id) != null ? _q : "Document",
4450
4461
  filename: (_r = annotation.filename) != null ? _r : annotation.file_id,
4451
4462
  providerMetadata: {
4452
- [providerKey]: {
4463
+ [providerOptionsName]: {
4453
4464
  fileId: annotation.file_id,
4454
4465
  containerId: annotation.container_id,
4455
4466
  ...annotation.index != null ? { index: annotation.index } : {}
@@ -4465,7 +4476,7 @@ var OpenAIResponsesLanguageModel = class {
4465
4476
  title: annotation.file_id,
4466
4477
  filename: annotation.file_id,
4467
4478
  providerMetadata: {
4468
- [providerKey]: {
4479
+ [providerOptionsName]: {
4469
4480
  fileId: annotation.file_id,
4470
4481
  ...annotation.index != null ? { index: annotation.index } : {}
4471
4482
  }
@@ -4484,7 +4495,7 @@ var OpenAIResponsesLanguageModel = class {
4484
4495
  toolName: part.name,
4485
4496
  input: part.arguments,
4486
4497
  providerMetadata: {
4487
- [providerKey]: {
4498
+ [providerOptionsName]: {
4488
4499
  itemId: part.id
4489
4500
  }
4490
4501
  }
@@ -4535,7 +4546,7 @@ var OpenAIResponsesLanguageModel = class {
4535
4546
  ...part.error != null ? { error: part.error } : {}
4536
4547
  },
4537
4548
  providerMetadata: {
4538
- [providerKey]: {
4549
+ [providerOptionsName]: {
4539
4550
  itemId: part.id
4540
4551
  }
4541
4552
  }
@@ -4639,7 +4650,7 @@ var OpenAIResponsesLanguageModel = class {
4639
4650
  operation: part.operation
4640
4651
  }),
4641
4652
  providerMetadata: {
4642
- [providerKey]: {
4653
+ [providerOptionsName]: {
4643
4654
  itemId: part.id
4644
4655
  }
4645
4656
  }
@@ -4649,13 +4660,13 @@ var OpenAIResponsesLanguageModel = class {
4649
4660
  }
4650
4661
  }
4651
4662
  const providerMetadata = {
4652
- [providerKey]: { responseId: response.id }
4663
+ [providerOptionsName]: { responseId: response.id }
4653
4664
  };
4654
4665
  if (logprobs.length > 0) {
4655
- providerMetadata[providerKey].logprobs = logprobs;
4666
+ providerMetadata[providerOptionsName].logprobs = logprobs;
4656
4667
  }
4657
4668
  if (typeof response.service_tier === "string") {
4658
- providerMetadata[providerKey].serviceTier = response.service_tier;
4669
+ providerMetadata[providerOptionsName].serviceTier = response.service_tier;
4659
4670
  }
4660
4671
  const usage = response.usage;
4661
4672
  return {
@@ -4686,7 +4697,8 @@ var OpenAIResponsesLanguageModel = class {
4686
4697
  warnings,
4687
4698
  webSearchToolName,
4688
4699
  toolNameMapping,
4689
- store
4700
+ store,
4701
+ providerOptionsName
4690
4702
  } = await this.getArgs(options);
4691
4703
  const { responseHeaders, value: response } = await postJsonToApi5({
4692
4704
  url: this.config.url({
@@ -4706,7 +4718,6 @@ var OpenAIResponsesLanguageModel = class {
4706
4718
  fetch: this.config.fetch
4707
4719
  });
4708
4720
  const self = this;
4709
- const providerKey = this.config.provider.replace(".responses", "");
4710
4721
  const approvalRequestIdToDummyToolCallIdFromPrompt = extractApprovalRequestIdToToolCallIdMapping(options.prompt);
4711
4722
  const approvalRequestIdToDummyToolCallIdFromStream = /* @__PURE__ */ new Map();
4712
4723
  let finishReason = {
@@ -4872,7 +4883,7 @@ var OpenAIResponsesLanguageModel = class {
4872
4883
  type: "text-start",
4873
4884
  id: value.item.id,
4874
4885
  providerMetadata: {
4875
- [providerKey]: {
4886
+ [providerOptionsName]: {
4876
4887
  itemId: value.item.id
4877
4888
  }
4878
4889
  }
@@ -4886,7 +4897,7 @@ var OpenAIResponsesLanguageModel = class {
4886
4897
  type: "reasoning-start",
4887
4898
  id: `${value.item.id}:0`,
4888
4899
  providerMetadata: {
4889
- [providerKey]: {
4900
+ [providerOptionsName]: {
4890
4901
  itemId: value.item.id,
4891
4902
  reasoningEncryptedContent: (_a = value.item.encrypted_content) != null ? _a : null
4892
4903
  }
@@ -4899,7 +4910,7 @@ var OpenAIResponsesLanguageModel = class {
4899
4910
  type: "text-end",
4900
4911
  id: value.item.id,
4901
4912
  providerMetadata: {
4902
- [providerKey]: {
4913
+ [providerOptionsName]: {
4903
4914
  itemId: value.item.id,
4904
4915
  ...ongoingAnnotations.length > 0 && {
4905
4916
  annotations: ongoingAnnotations
@@ -4920,7 +4931,7 @@ var OpenAIResponsesLanguageModel = class {
4920
4931
  toolName: value.item.name,
4921
4932
  input: value.item.arguments,
4922
4933
  providerMetadata: {
4923
- [providerKey]: {
4934
+ [providerOptionsName]: {
4924
4935
  itemId: value.item.id
4925
4936
  }
4926
4937
  }
@@ -5021,7 +5032,7 @@ var OpenAIResponsesLanguageModel = class {
5021
5032
  ...value.item.error != null ? { error: value.item.error } : {}
5022
5033
  },
5023
5034
  providerMetadata: {
5024
- [providerKey]: {
5035
+ [providerOptionsName]: {
5025
5036
  itemId: value.item.id
5026
5037
  }
5027
5038
  }
@@ -5059,7 +5070,7 @@ var OpenAIResponsesLanguageModel = class {
5059
5070
  operation: value.item.operation
5060
5071
  }),
5061
5072
  providerMetadata: {
5062
- [providerKey]: {
5073
+ [providerOptionsName]: {
5063
5074
  itemId: value.item.id
5064
5075
  }
5065
5076
  }
@@ -5105,7 +5116,7 @@ var OpenAIResponsesLanguageModel = class {
5105
5116
  }
5106
5117
  }),
5107
5118
  providerMetadata: {
5108
- [providerKey]: { itemId: value.item.id }
5119
+ [providerOptionsName]: { itemId: value.item.id }
5109
5120
  }
5110
5121
  });
5111
5122
  } else if (value.item.type === "shell_call") {
@@ -5120,7 +5131,7 @@ var OpenAIResponsesLanguageModel = class {
5120
5131
  }
5121
5132
  }),
5122
5133
  providerMetadata: {
5123
- [providerKey]: { itemId: value.item.id }
5134
+ [providerOptionsName]: { itemId: value.item.id }
5124
5135
  }
5125
5136
  });
5126
5137
  } else if (value.item.type === "reasoning") {
@@ -5135,7 +5146,7 @@ var OpenAIResponsesLanguageModel = class {
5135
5146
  type: "reasoning-end",
5136
5147
  id: `${value.item.id}:${summaryIndex}`,
5137
5148
  providerMetadata: {
5138
- [providerKey]: {
5149
+ [providerOptionsName]: {
5139
5150
  itemId: value.item.id,
5140
5151
  reasoningEncryptedContent: (_k = value.item.encrypted_content) != null ? _k : null
5141
5152
  }
@@ -5241,7 +5252,7 @@ var OpenAIResponsesLanguageModel = class {
5241
5252
  id: value.item_id,
5242
5253
  delta: value.delta
5243
5254
  });
5244
- if (((_m = (_l = options.providerOptions) == null ? void 0 : _l.openai) == null ? void 0 : _m.logprobs) && value.logprobs) {
5255
+ if (((_m = (_l = options.providerOptions) == null ? void 0 : _l[providerOptionsName]) == null ? void 0 : _m.logprobs) && value.logprobs) {
5245
5256
  logprobs.push(value.logprobs);
5246
5257
  }
5247
5258
  } else if (value.type === "response.reasoning_summary_part.added") {
@@ -5256,7 +5267,7 @@ var OpenAIResponsesLanguageModel = class {
5256
5267
  type: "reasoning-end",
5257
5268
  id: `${value.item_id}:${summaryIndex}`,
5258
5269
  providerMetadata: {
5259
- [providerKey]: { itemId: value.item_id }
5270
+ [providerOptionsName]: { itemId: value.item_id }
5260
5271
  }
5261
5272
  });
5262
5273
  activeReasoningPart.summaryParts[summaryIndex] = "concluded";
@@ -5266,7 +5277,7 @@ var OpenAIResponsesLanguageModel = class {
5266
5277
  type: "reasoning-start",
5267
5278
  id: `${value.item_id}:${value.summary_index}`,
5268
5279
  providerMetadata: {
5269
- [providerKey]: {
5280
+ [providerOptionsName]: {
5270
5281
  itemId: value.item_id,
5271
5282
  reasoningEncryptedContent: (_o = (_n = activeReasoning[value.item_id]) == null ? void 0 : _n.encryptedContent) != null ? _o : null
5272
5283
  }
@@ -5279,7 +5290,7 @@ var OpenAIResponsesLanguageModel = class {
5279
5290
  id: `${value.item_id}:${value.summary_index}`,
5280
5291
  delta: value.delta,
5281
5292
  providerMetadata: {
5282
- [providerKey]: {
5293
+ [providerOptionsName]: {
5283
5294
  itemId: value.item_id
5284
5295
  }
5285
5296
  }
@@ -5290,7 +5301,7 @@ var OpenAIResponsesLanguageModel = class {
5290
5301
  type: "reasoning-end",
5291
5302
  id: `${value.item_id}:${value.summary_index}`,
5292
5303
  providerMetadata: {
5293
- [providerKey]: { itemId: value.item_id }
5304
+ [providerOptionsName]: { itemId: value.item_id }
5294
5305
  }
5295
5306
  });
5296
5307
  activeReasoning[value.item_id].summaryParts[value.summary_index] = "concluded";
@@ -5329,7 +5340,7 @@ var OpenAIResponsesLanguageModel = class {
5329
5340
  filename: (_A = value.annotation.filename) != null ? _A : value.annotation.file_id,
5330
5341
  ...value.annotation.file_id ? {
5331
5342
  providerMetadata: {
5332
- [providerKey]: {
5343
+ [providerOptionsName]: {
5333
5344
  fileId: value.annotation.file_id
5334
5345
  }
5335
5346
  }
@@ -5344,7 +5355,7 @@ var OpenAIResponsesLanguageModel = class {
5344
5355
  title: (_F = (_E = value.annotation.filename) != null ? _E : value.annotation.file_id) != null ? _F : "Document",
5345
5356
  filename: (_G = value.annotation.filename) != null ? _G : value.annotation.file_id,
5346
5357
  providerMetadata: {
5347
- [providerKey]: {
5358
+ [providerOptionsName]: {
5348
5359
  fileId: value.annotation.file_id,
5349
5360
  containerId: value.annotation.container_id,
5350
5361
  ...value.annotation.index != null ? { index: value.annotation.index } : {}
@@ -5360,7 +5371,7 @@ var OpenAIResponsesLanguageModel = class {
5360
5371
  title: value.annotation.file_id,
5361
5372
  filename: value.annotation.file_id,
5362
5373
  providerMetadata: {
5363
- [providerKey]: {
5374
+ [providerOptionsName]: {
5364
5375
  fileId: value.annotation.file_id,
5365
5376
  ...value.annotation.index != null ? { index: value.annotation.index } : {}
5366
5377
  }
@@ -5373,15 +5384,15 @@ var OpenAIResponsesLanguageModel = class {
5373
5384
  },
5374
5385
  flush(controller) {
5375
5386
  const providerMetadata = {
5376
- [providerKey]: {
5387
+ [providerOptionsName]: {
5377
5388
  responseId
5378
5389
  }
5379
5390
  };
5380
5391
  if (logprobs.length > 0) {
5381
- providerMetadata[providerKey].logprobs = logprobs;
5392
+ providerMetadata[providerOptionsName].logprobs = logprobs;
5382
5393
  }
5383
5394
  if (serviceTier !== void 0) {
5384
- providerMetadata[providerKey].serviceTier = serviceTier;
5395
+ providerMetadata[providerOptionsName].serviceTier = serviceTier;
5385
5396
  }
5386
5397
  controller.enqueue({
5387
5398
  type: "finish",
@@ -5826,7 +5837,7 @@ var OpenAITranscriptionModel = class {
5826
5837
  };
5827
5838
 
5828
5839
  // src/version.ts
5829
- var VERSION = true ? "3.0.2" : "0.0.0-test";
5840
+ var VERSION = true ? "3.0.3" : "0.0.0-test";
5830
5841
 
5831
5842
  // src/openai-provider.ts
5832
5843
  function createOpenAI(options = {}) {