@ai-sdk/openai 3.0.2 → 3.0.4

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.
@@ -2484,6 +2484,7 @@ async function convertToOpenAIResponsesInput({
2484
2484
  prompt,
2485
2485
  toolNameMapping,
2486
2486
  systemMessageMode,
2487
+ providerOptionsName,
2487
2488
  fileIdPrefixes,
2488
2489
  store,
2489
2490
  hasLocalShellTool = false,
@@ -2539,7 +2540,7 @@ async function convertToOpenAIResponsesInput({
2539
2540
  ...part.data instanceof URL ? { image_url: part.data.toString() } : typeof part.data === "string" && isFileId(part.data, fileIdPrefixes) ? { file_id: part.data } : {
2540
2541
  image_url: `data:${mediaType};base64,${convertToBase642(part.data)}`
2541
2542
  },
2542
- detail: (_b2 = (_a2 = part.providerOptions) == null ? void 0 : _a2.openai) == null ? void 0 : _b2.imageDetail
2543
+ detail: (_b2 = (_a2 = part.providerOptions) == null ? void 0 : _a2[providerOptionsName]) == null ? void 0 : _b2.imageDetail
2543
2544
  };
2544
2545
  } else if (part.mediaType === "application/pdf") {
2545
2546
  if (part.data instanceof URL) {
@@ -2571,7 +2572,7 @@ async function convertToOpenAIResponsesInput({
2571
2572
  for (const part of content) {
2572
2573
  switch (part.type) {
2573
2574
  case "text": {
2574
- const id = (_b = (_a = part.providerOptions) == null ? void 0 : _a.openai) == null ? void 0 : _b.itemId;
2575
+ const id = (_b = (_a = part.providerOptions) == null ? void 0 : _a[providerOptionsName]) == null ? void 0 : _b.itemId;
2575
2576
  if (store && id != null) {
2576
2577
  input.push({ type: "item_reference", id });
2577
2578
  break;
@@ -2584,7 +2585,7 @@ async function convertToOpenAIResponsesInput({
2584
2585
  break;
2585
2586
  }
2586
2587
  case "tool-call": {
2587
- 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;
2588
+ 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;
2588
2589
  if (part.providerExecuted) {
2589
2590
  if (store && id != null) {
2590
2591
  input.push({ type: "item_reference", id });
@@ -2651,7 +2652,7 @@ async function convertToOpenAIResponsesInput({
2651
2652
  break;
2652
2653
  }
2653
2654
  if (store) {
2654
- const itemId = (_j = (_i = (_h = part.providerMetadata) == null ? void 0 : _h.openai) == null ? void 0 : _i.itemId) != null ? _j : part.toolCallId;
2655
+ const itemId = (_j = (_i = (_h = part.providerMetadata) == null ? void 0 : _h[providerOptionsName]) == null ? void 0 : _i.itemId) != null ? _j : part.toolCallId;
2655
2656
  input.push({ type: "item_reference", id: itemId });
2656
2657
  } else {
2657
2658
  warnings.push({
@@ -2663,7 +2664,7 @@ async function convertToOpenAIResponsesInput({
2663
2664
  }
2664
2665
  case "reasoning": {
2665
2666
  const providerOptions = await parseProviderOptions6({
2666
- provider: "openai",
2667
+ provider: providerOptionsName,
2667
2668
  providerOptions: part.providerOptions,
2668
2669
  schema: openaiResponsesReasoningProviderOptionsSchema
2669
2670
  });
@@ -4354,11 +4355,19 @@ var OpenAIResponsesLanguageModel = class {
4354
4355
  if (stopSequences != null) {
4355
4356
  warnings.push({ type: "unsupported", feature: "stopSequences" });
4356
4357
  }
4357
- const openaiOptions = await parseProviderOptions7({
4358
- provider: "openai",
4358
+ const providerOptionsName = this.config.provider.includes("azure") ? "azure" : "openai";
4359
+ let openaiOptions = await parseProviderOptions7({
4360
+ provider: providerOptionsName,
4359
4361
  providerOptions,
4360
4362
  schema: openaiResponsesProviderOptionsSchema
4361
4363
  });
4364
+ if (openaiOptions == null && providerOptionsName !== "openai") {
4365
+ openaiOptions = await parseProviderOptions7({
4366
+ provider: "openai",
4367
+ providerOptions,
4368
+ schema: openaiResponsesProviderOptionsSchema
4369
+ });
4370
+ }
4362
4371
  const isReasoningModel = (_a = openaiOptions == null ? void 0 : openaiOptions.forceReasoning) != null ? _a : modelCapabilities.isReasoningModel;
4363
4372
  if ((openaiOptions == null ? void 0 : openaiOptions.conversation) && (openaiOptions == null ? void 0 : openaiOptions.previousResponseId)) {
4364
4373
  warnings.push({
@@ -4385,6 +4394,7 @@ var OpenAIResponsesLanguageModel = class {
4385
4394
  prompt,
4386
4395
  toolNameMapping,
4387
4396
  systemMessageMode: (_b = openaiOptions == null ? void 0 : openaiOptions.systemMessageMode) != null ? _b : isReasoningModel ? "developer" : modelCapabilities.systemMessageMode,
4397
+ providerOptionsName,
4388
4398
  fileIdPrefixes: this.config.fileIdPrefixes,
4389
4399
  store: (_c = openaiOptions == null ? void 0 : openaiOptions.store) != null ? _c : true,
4390
4400
  hasLocalShellTool: hasOpenAITool("openai.local_shell"),
@@ -4539,7 +4549,8 @@ var OpenAIResponsesLanguageModel = class {
4539
4549
  },
4540
4550
  warnings: [...warnings, ...toolWarnings],
4541
4551
  store,
4542
- toolNameMapping
4552
+ toolNameMapping,
4553
+ providerOptionsName
4543
4554
  };
4544
4555
  }
4545
4556
  async doGenerate(options) {
@@ -4548,13 +4559,13 @@ var OpenAIResponsesLanguageModel = class {
4548
4559
  args: body,
4549
4560
  warnings,
4550
4561
  webSearchToolName,
4551
- toolNameMapping
4562
+ toolNameMapping,
4563
+ providerOptionsName
4552
4564
  } = await this.getArgs(options);
4553
4565
  const url = this.config.url({
4554
4566
  path: "/responses",
4555
4567
  modelId: this.modelId
4556
4568
  });
4557
- const providerKey = this.config.provider.replace(".responses", "");
4558
4569
  const approvalRequestIdToDummyToolCallIdFromPrompt = extractApprovalRequestIdToToolCallIdMapping(options.prompt);
4559
4570
  const {
4560
4571
  responseHeaders,
@@ -4596,7 +4607,7 @@ var OpenAIResponsesLanguageModel = class {
4596
4607
  type: "reasoning",
4597
4608
  text: summary.text,
4598
4609
  providerMetadata: {
4599
- [providerKey]: {
4610
+ [providerOptionsName]: {
4600
4611
  itemId: part.id,
4601
4612
  reasoningEncryptedContent: (_a = part.encrypted_content) != null ? _a : null
4602
4613
  }
@@ -4632,7 +4643,7 @@ var OpenAIResponsesLanguageModel = class {
4632
4643
  action: part.action
4633
4644
  }),
4634
4645
  providerMetadata: {
4635
- [providerKey]: {
4646
+ [providerOptionsName]: {
4636
4647
  itemId: part.id
4637
4648
  }
4638
4649
  }
@@ -4650,7 +4661,7 @@ var OpenAIResponsesLanguageModel = class {
4650
4661
  }
4651
4662
  }),
4652
4663
  providerMetadata: {
4653
- [providerKey]: {
4664
+ [providerOptionsName]: {
4654
4665
  itemId: part.id
4655
4666
  }
4656
4667
  }
@@ -4659,7 +4670,7 @@ var OpenAIResponsesLanguageModel = class {
4659
4670
  }
4660
4671
  case "message": {
4661
4672
  for (const contentPart of part.content) {
4662
- if (((_c = (_b = options.providerOptions) == null ? void 0 : _b.openai) == null ? void 0 : _c.logprobs) && contentPart.logprobs) {
4673
+ if (((_c = (_b = options.providerOptions) == null ? void 0 : _b[providerOptionsName]) == null ? void 0 : _c.logprobs) && contentPart.logprobs) {
4663
4674
  logprobs.push(contentPart.logprobs);
4664
4675
  }
4665
4676
  const providerMetadata2 = {
@@ -4672,7 +4683,7 @@ var OpenAIResponsesLanguageModel = class {
4672
4683
  type: "text",
4673
4684
  text: contentPart.text,
4674
4685
  providerMetadata: {
4675
- [providerKey]: providerMetadata2
4686
+ [providerOptionsName]: providerMetadata2
4676
4687
  }
4677
4688
  });
4678
4689
  for (const annotation of contentPart.annotations) {
@@ -4694,7 +4705,7 @@ var OpenAIResponsesLanguageModel = class {
4694
4705
  filename: (_l = annotation.filename) != null ? _l : annotation.file_id,
4695
4706
  ...annotation.file_id ? {
4696
4707
  providerMetadata: {
4697
- [providerKey]: {
4708
+ [providerOptionsName]: {
4698
4709
  fileId: annotation.file_id
4699
4710
  }
4700
4711
  }
@@ -4709,7 +4720,7 @@ var OpenAIResponsesLanguageModel = class {
4709
4720
  title: (_q = (_p = annotation.filename) != null ? _p : annotation.file_id) != null ? _q : "Document",
4710
4721
  filename: (_r = annotation.filename) != null ? _r : annotation.file_id,
4711
4722
  providerMetadata: {
4712
- [providerKey]: {
4723
+ [providerOptionsName]: {
4713
4724
  fileId: annotation.file_id,
4714
4725
  containerId: annotation.container_id,
4715
4726
  ...annotation.index != null ? { index: annotation.index } : {}
@@ -4725,7 +4736,7 @@ var OpenAIResponsesLanguageModel = class {
4725
4736
  title: annotation.file_id,
4726
4737
  filename: annotation.file_id,
4727
4738
  providerMetadata: {
4728
- [providerKey]: {
4739
+ [providerOptionsName]: {
4729
4740
  fileId: annotation.file_id,
4730
4741
  ...annotation.index != null ? { index: annotation.index } : {}
4731
4742
  }
@@ -4744,7 +4755,7 @@ var OpenAIResponsesLanguageModel = class {
4744
4755
  toolName: part.name,
4745
4756
  input: part.arguments,
4746
4757
  providerMetadata: {
4747
- [providerKey]: {
4758
+ [providerOptionsName]: {
4748
4759
  itemId: part.id
4749
4760
  }
4750
4761
  }
@@ -4795,7 +4806,7 @@ var OpenAIResponsesLanguageModel = class {
4795
4806
  ...part.error != null ? { error: part.error } : {}
4796
4807
  },
4797
4808
  providerMetadata: {
4798
- [providerKey]: {
4809
+ [providerOptionsName]: {
4799
4810
  itemId: part.id
4800
4811
  }
4801
4812
  }
@@ -4899,7 +4910,7 @@ var OpenAIResponsesLanguageModel = class {
4899
4910
  operation: part.operation
4900
4911
  }),
4901
4912
  providerMetadata: {
4902
- [providerKey]: {
4913
+ [providerOptionsName]: {
4903
4914
  itemId: part.id
4904
4915
  }
4905
4916
  }
@@ -4909,13 +4920,13 @@ var OpenAIResponsesLanguageModel = class {
4909
4920
  }
4910
4921
  }
4911
4922
  const providerMetadata = {
4912
- [providerKey]: { responseId: response.id }
4923
+ [providerOptionsName]: { responseId: response.id }
4913
4924
  };
4914
4925
  if (logprobs.length > 0) {
4915
- providerMetadata[providerKey].logprobs = logprobs;
4926
+ providerMetadata[providerOptionsName].logprobs = logprobs;
4916
4927
  }
4917
4928
  if (typeof response.service_tier === "string") {
4918
- providerMetadata[providerKey].serviceTier = response.service_tier;
4929
+ providerMetadata[providerOptionsName].serviceTier = response.service_tier;
4919
4930
  }
4920
4931
  const usage = response.usage;
4921
4932
  return {
@@ -4946,7 +4957,8 @@ var OpenAIResponsesLanguageModel = class {
4946
4957
  warnings,
4947
4958
  webSearchToolName,
4948
4959
  toolNameMapping,
4949
- store
4960
+ store,
4961
+ providerOptionsName
4950
4962
  } = await this.getArgs(options);
4951
4963
  const { responseHeaders, value: response } = await postJsonToApi6({
4952
4964
  url: this.config.url({
@@ -4966,7 +4978,6 @@ var OpenAIResponsesLanguageModel = class {
4966
4978
  fetch: this.config.fetch
4967
4979
  });
4968
4980
  const self = this;
4969
- const providerKey = this.config.provider.replace(".responses", "");
4970
4981
  const approvalRequestIdToDummyToolCallIdFromPrompt = extractApprovalRequestIdToToolCallIdMapping(options.prompt);
4971
4982
  const approvalRequestIdToDummyToolCallIdFromStream = /* @__PURE__ */ new Map();
4972
4983
  let finishReason = {
@@ -5132,7 +5143,7 @@ var OpenAIResponsesLanguageModel = class {
5132
5143
  type: "text-start",
5133
5144
  id: value.item.id,
5134
5145
  providerMetadata: {
5135
- [providerKey]: {
5146
+ [providerOptionsName]: {
5136
5147
  itemId: value.item.id
5137
5148
  }
5138
5149
  }
@@ -5146,7 +5157,7 @@ var OpenAIResponsesLanguageModel = class {
5146
5157
  type: "reasoning-start",
5147
5158
  id: `${value.item.id}:0`,
5148
5159
  providerMetadata: {
5149
- [providerKey]: {
5160
+ [providerOptionsName]: {
5150
5161
  itemId: value.item.id,
5151
5162
  reasoningEncryptedContent: (_a = value.item.encrypted_content) != null ? _a : null
5152
5163
  }
@@ -5159,7 +5170,7 @@ var OpenAIResponsesLanguageModel = class {
5159
5170
  type: "text-end",
5160
5171
  id: value.item.id,
5161
5172
  providerMetadata: {
5162
- [providerKey]: {
5173
+ [providerOptionsName]: {
5163
5174
  itemId: value.item.id,
5164
5175
  ...ongoingAnnotations.length > 0 && {
5165
5176
  annotations: ongoingAnnotations
@@ -5180,7 +5191,7 @@ var OpenAIResponsesLanguageModel = class {
5180
5191
  toolName: value.item.name,
5181
5192
  input: value.item.arguments,
5182
5193
  providerMetadata: {
5183
- [providerKey]: {
5194
+ [providerOptionsName]: {
5184
5195
  itemId: value.item.id
5185
5196
  }
5186
5197
  }
@@ -5281,7 +5292,7 @@ var OpenAIResponsesLanguageModel = class {
5281
5292
  ...value.item.error != null ? { error: value.item.error } : {}
5282
5293
  },
5283
5294
  providerMetadata: {
5284
- [providerKey]: {
5295
+ [providerOptionsName]: {
5285
5296
  itemId: value.item.id
5286
5297
  }
5287
5298
  }
@@ -5319,7 +5330,7 @@ var OpenAIResponsesLanguageModel = class {
5319
5330
  operation: value.item.operation
5320
5331
  }),
5321
5332
  providerMetadata: {
5322
- [providerKey]: {
5333
+ [providerOptionsName]: {
5323
5334
  itemId: value.item.id
5324
5335
  }
5325
5336
  }
@@ -5365,7 +5376,7 @@ var OpenAIResponsesLanguageModel = class {
5365
5376
  }
5366
5377
  }),
5367
5378
  providerMetadata: {
5368
- [providerKey]: { itemId: value.item.id }
5379
+ [providerOptionsName]: { itemId: value.item.id }
5369
5380
  }
5370
5381
  });
5371
5382
  } else if (value.item.type === "shell_call") {
@@ -5380,7 +5391,7 @@ var OpenAIResponsesLanguageModel = class {
5380
5391
  }
5381
5392
  }),
5382
5393
  providerMetadata: {
5383
- [providerKey]: { itemId: value.item.id }
5394
+ [providerOptionsName]: { itemId: value.item.id }
5384
5395
  }
5385
5396
  });
5386
5397
  } else if (value.item.type === "reasoning") {
@@ -5395,7 +5406,7 @@ var OpenAIResponsesLanguageModel = class {
5395
5406
  type: "reasoning-end",
5396
5407
  id: `${value.item.id}:${summaryIndex}`,
5397
5408
  providerMetadata: {
5398
- [providerKey]: {
5409
+ [providerOptionsName]: {
5399
5410
  itemId: value.item.id,
5400
5411
  reasoningEncryptedContent: (_k = value.item.encrypted_content) != null ? _k : null
5401
5412
  }
@@ -5501,7 +5512,7 @@ var OpenAIResponsesLanguageModel = class {
5501
5512
  id: value.item_id,
5502
5513
  delta: value.delta
5503
5514
  });
5504
- if (((_m = (_l = options.providerOptions) == null ? void 0 : _l.openai) == null ? void 0 : _m.logprobs) && value.logprobs) {
5515
+ if (((_m = (_l = options.providerOptions) == null ? void 0 : _l[providerOptionsName]) == null ? void 0 : _m.logprobs) && value.logprobs) {
5505
5516
  logprobs.push(value.logprobs);
5506
5517
  }
5507
5518
  } else if (value.type === "response.reasoning_summary_part.added") {
@@ -5516,7 +5527,7 @@ var OpenAIResponsesLanguageModel = class {
5516
5527
  type: "reasoning-end",
5517
5528
  id: `${value.item_id}:${summaryIndex}`,
5518
5529
  providerMetadata: {
5519
- [providerKey]: { itemId: value.item_id }
5530
+ [providerOptionsName]: { itemId: value.item_id }
5520
5531
  }
5521
5532
  });
5522
5533
  activeReasoningPart.summaryParts[summaryIndex] = "concluded";
@@ -5526,7 +5537,7 @@ var OpenAIResponsesLanguageModel = class {
5526
5537
  type: "reasoning-start",
5527
5538
  id: `${value.item_id}:${value.summary_index}`,
5528
5539
  providerMetadata: {
5529
- [providerKey]: {
5540
+ [providerOptionsName]: {
5530
5541
  itemId: value.item_id,
5531
5542
  reasoningEncryptedContent: (_o = (_n = activeReasoning[value.item_id]) == null ? void 0 : _n.encryptedContent) != null ? _o : null
5532
5543
  }
@@ -5539,7 +5550,7 @@ var OpenAIResponsesLanguageModel = class {
5539
5550
  id: `${value.item_id}:${value.summary_index}`,
5540
5551
  delta: value.delta,
5541
5552
  providerMetadata: {
5542
- [providerKey]: {
5553
+ [providerOptionsName]: {
5543
5554
  itemId: value.item_id
5544
5555
  }
5545
5556
  }
@@ -5550,7 +5561,7 @@ var OpenAIResponsesLanguageModel = class {
5550
5561
  type: "reasoning-end",
5551
5562
  id: `${value.item_id}:${value.summary_index}`,
5552
5563
  providerMetadata: {
5553
- [providerKey]: { itemId: value.item_id }
5564
+ [providerOptionsName]: { itemId: value.item_id }
5554
5565
  }
5555
5566
  });
5556
5567
  activeReasoning[value.item_id].summaryParts[value.summary_index] = "concluded";
@@ -5589,7 +5600,7 @@ var OpenAIResponsesLanguageModel = class {
5589
5600
  filename: (_A = value.annotation.filename) != null ? _A : value.annotation.file_id,
5590
5601
  ...value.annotation.file_id ? {
5591
5602
  providerMetadata: {
5592
- [providerKey]: {
5603
+ [providerOptionsName]: {
5593
5604
  fileId: value.annotation.file_id
5594
5605
  }
5595
5606
  }
@@ -5604,7 +5615,7 @@ var OpenAIResponsesLanguageModel = class {
5604
5615
  title: (_F = (_E = value.annotation.filename) != null ? _E : value.annotation.file_id) != null ? _F : "Document",
5605
5616
  filename: (_G = value.annotation.filename) != null ? _G : value.annotation.file_id,
5606
5617
  providerMetadata: {
5607
- [providerKey]: {
5618
+ [providerOptionsName]: {
5608
5619
  fileId: value.annotation.file_id,
5609
5620
  containerId: value.annotation.container_id,
5610
5621
  ...value.annotation.index != null ? { index: value.annotation.index } : {}
@@ -5620,7 +5631,7 @@ var OpenAIResponsesLanguageModel = class {
5620
5631
  title: value.annotation.file_id,
5621
5632
  filename: value.annotation.file_id,
5622
5633
  providerMetadata: {
5623
- [providerKey]: {
5634
+ [providerOptionsName]: {
5624
5635
  fileId: value.annotation.file_id,
5625
5636
  ...value.annotation.index != null ? { index: value.annotation.index } : {}
5626
5637
  }
@@ -5633,15 +5644,15 @@ var OpenAIResponsesLanguageModel = class {
5633
5644
  },
5634
5645
  flush(controller) {
5635
5646
  const providerMetadata = {
5636
- [providerKey]: {
5647
+ [providerOptionsName]: {
5637
5648
  responseId
5638
5649
  }
5639
5650
  };
5640
5651
  if (logprobs.length > 0) {
5641
- providerMetadata[providerKey].logprobs = logprobs;
5652
+ providerMetadata[providerOptionsName].logprobs = logprobs;
5642
5653
  }
5643
5654
  if (serviceTier !== void 0) {
5644
- providerMetadata[providerKey].serviceTier = serviceTier;
5655
+ providerMetadata[providerOptionsName].serviceTier = serviceTier;
5645
5656
  }
5646
5657
  controller.enqueue({
5647
5658
  type: "finish",