@ai-sdk/openai 3.0.0-beta.51 → 3.0.0-beta.53

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.
@@ -71,6 +71,15 @@ var openaiFailedResponseHandler = (0, import_provider_utils.createJsonErrorRespo
71
71
  errorToMessage: (data) => data.error.message
72
72
  });
73
73
 
74
+ // src/openai-is-reasoning-model.ts
75
+ function isReasoningModel(modelId) {
76
+ if (modelId.startsWith("gpt-3")) return false;
77
+ if (modelId.startsWith("gpt-4")) return false;
78
+ if (modelId.startsWith("chatgpt-4o")) return false;
79
+ if (modelId.startsWith("gpt-5-chat")) return false;
80
+ return true;
81
+ }
82
+
74
83
  // src/chat/convert-to-openai-chat-messages.ts
75
84
  var import_provider = require("@ai-sdk/provider");
76
85
  var import_provider_utils2 = require("@ai-sdk/provider-utils");
@@ -262,7 +271,7 @@ function getResponseMetadata({
262
271
  return {
263
272
  id: id != null ? id : void 0,
264
273
  modelId: model != null ? model : void 0,
265
- timestamp: created != null ? new Date(created * 1e3) : void 0
274
+ timestamp: created ? new Date(created * 1e3) : void 0
266
275
  };
267
276
  }
268
277
 
@@ -887,7 +896,7 @@ var OpenAIChatLanguageModel = class {
887
896
  outputTokens: void 0,
888
897
  totalTokens: void 0
889
898
  };
890
- let isFirstChunk = true;
899
+ let metadataExtracted = false;
891
900
  let isActiveText = false;
892
901
  const providerMetadata = { openai: {} };
893
902
  return {
@@ -912,12 +921,15 @@ var OpenAIChatLanguageModel = class {
912
921
  controller.enqueue({ type: "error", error: value.error });
913
922
  return;
914
923
  }
915
- if (isFirstChunk) {
916
- isFirstChunk = false;
917
- controller.enqueue({
918
- type: "response-metadata",
919
- ...getResponseMetadata(value)
920
- });
924
+ if (!metadataExtracted) {
925
+ const metadata = getResponseMetadata(value);
926
+ if (Object.values(metadata).some(Boolean)) {
927
+ metadataExtracted = true;
928
+ controller.enqueue({
929
+ type: "response-metadata",
930
+ ...getResponseMetadata(value)
931
+ });
932
+ }
921
933
  }
922
934
  if (value.usage != null) {
923
935
  usage.inputTokens = (_a = value.usage.prompt_tokens) != null ? _a : void 0;
@@ -1072,9 +1084,6 @@ var OpenAIChatLanguageModel = class {
1072
1084
  };
1073
1085
  }
1074
1086
  };
1075
- function isReasoningModel(modelId) {
1076
- return (modelId.startsWith("o") || modelId.startsWith("gpt-5")) && !modelId.startsWith("gpt-5-chat");
1077
- }
1078
1087
  function supportsFlexProcessing(modelId) {
1079
1088
  return modelId.startsWith("o3") || modelId.startsWith("o4-mini") || modelId.startsWith("gpt-5") && !modelId.startsWith("gpt-5-chat");
1080
1089
  }
@@ -1082,32 +1091,8 @@ function supportsPriorityProcessing(modelId) {
1082
1091
  return modelId.startsWith("gpt-4") || modelId.startsWith("gpt-5-mini") || modelId.startsWith("gpt-5") && !modelId.startsWith("gpt-5-nano") && !modelId.startsWith("gpt-5-chat") || modelId.startsWith("o3") || modelId.startsWith("o4-mini");
1083
1092
  }
1084
1093
  function getSystemMessageMode(modelId) {
1085
- var _a, _b;
1086
- if (!isReasoningModel(modelId)) {
1087
- return "system";
1088
- }
1089
- return (_b = (_a = reasoningModels[modelId]) == null ? void 0 : _a.systemMessageMode) != null ? _b : "developer";
1094
+ return isReasoningModel(modelId) ? "developer" : "system";
1090
1095
  }
1091
- var reasoningModels = {
1092
- o3: {
1093
- systemMessageMode: "developer"
1094
- },
1095
- "o3-2025-04-16": {
1096
- systemMessageMode: "developer"
1097
- },
1098
- "o3-mini": {
1099
- systemMessageMode: "developer"
1100
- },
1101
- "o3-mini-2025-01-31": {
1102
- systemMessageMode: "developer"
1103
- },
1104
- "o4-mini": {
1105
- systemMessageMode: "developer"
1106
- },
1107
- "o4-mini-2025-04-16": {
1108
- systemMessageMode: "developer"
1109
- }
1110
- };
1111
1096
 
1112
1097
  // src/completion/openai-completion-language-model.ts
1113
1098
  var import_provider_utils8 = require("@ai-sdk/provider-utils");
@@ -4479,27 +4464,13 @@ function isErrorChunk(chunk) {
4479
4464
  function getResponsesModelConfig(modelId) {
4480
4465
  const supportsFlexProcessing2 = modelId.startsWith("o3") || modelId.startsWith("o4-mini") || modelId.startsWith("gpt-5") && !modelId.startsWith("gpt-5-chat");
4481
4466
  const supportsPriorityProcessing2 = modelId.startsWith("gpt-4") || modelId.startsWith("gpt-5-mini") || modelId.startsWith("gpt-5") && !modelId.startsWith("gpt-5-nano") && !modelId.startsWith("gpt-5-chat") || modelId.startsWith("o3") || modelId.startsWith("o4-mini");
4482
- const defaults = {
4483
- systemMessageMode: "system",
4484
- supportsFlexProcessing: supportsFlexProcessing2,
4485
- supportsPriorityProcessing: supportsPriorityProcessing2
4486
- };
4487
- if (modelId.startsWith("gpt-5-chat")) {
4488
- return {
4489
- ...defaults,
4490
- isReasoningModel: false
4491
- };
4492
- }
4493
- if (modelId.startsWith("o") || modelId.startsWith("gpt-5") || modelId.startsWith("codex-") || modelId.startsWith("computer-use")) {
4494
- return {
4495
- ...defaults,
4496
- isReasoningModel: true,
4497
- systemMessageMode: "developer"
4498
- };
4499
- }
4467
+ const isReasoningModel2 = isReasoningModel(modelId);
4468
+ const systemMessageMode = isReasoningModel2 ? "developer" : "system";
4500
4469
  return {
4501
- ...defaults,
4502
- isReasoningModel: false
4470
+ systemMessageMode,
4471
+ supportsFlexProcessing: supportsFlexProcessing2,
4472
+ supportsPriorityProcessing: supportsPriorityProcessing2,
4473
+ isReasoningModel: isReasoningModel2
4503
4474
  };
4504
4475
  }
4505
4476
  function mapWebSearchOutput(action) {