@ai-sdk/openai 2.0.10 → 2.0.11

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,23 @@
1
1
  # @ai-sdk/openai
2
2
 
3
+ ## 2.0.11
4
+
5
+ ### Patch Changes
6
+
7
+ - 097b452: feat(openai, azure): add configurable file ID prefixes for Responses API
8
+
9
+ - Added `fileIdPrefixes` option to OpenAI Responses API configuration
10
+ - Azure OpenAI now supports `assistant-` prefixed file IDs (replacing previous `file-` prefix support)
11
+ - OpenAI maintains backward compatibility with default `file-` prefix
12
+ - File ID detection is disabled when `fileIdPrefixes` is undefined, gracefully falling back to base64 processing
13
+
14
+ - 87cf954: feat(provider/openai): add support for prompt_cache_key
15
+ - a3d98a9: feat(provider/openai): add support for safety_identifier
16
+ - 110d167: fix(openai): add missing file_search_call handlers in responses streaming
17
+ - 8d3c747: chore(openai): remove deprecated GPT-4.5-preview models and improve autocomplete control
18
+ - Updated dependencies [38ac190]
19
+ - @ai-sdk/provider-utils@3.0.2
20
+
3
21
  ## 2.0.10
4
22
 
5
23
  ### Patch Changes
package/dist/index.d.mts CHANGED
@@ -3,7 +3,7 @@ import * as _ai_sdk_provider_utils from '@ai-sdk/provider-utils';
3
3
  import { FetchFunction } from '@ai-sdk/provider-utils';
4
4
  import { z } from 'zod/v4';
5
5
 
6
- type OpenAIChatModelId = 'o1' | 'o1-2024-12-17' | 'o3-mini' | 'o3-mini-2025-01-31' | 'o3' | 'o3-2025-04-16' | 'o4-mini' | 'o4-mini-2025-04-16' | 'gpt-4.1' | 'gpt-4.1-2025-04-14' | 'gpt-4.1-mini' | 'gpt-4.1-mini-2025-04-14' | 'gpt-4.1-nano' | 'gpt-4.1-nano-2025-04-14' | 'gpt-4o' | 'gpt-4o-2024-05-13' | 'gpt-4o-2024-08-06' | 'gpt-4o-2024-11-20' | 'gpt-4o-audio-preview' | 'gpt-4o-audio-preview-2024-10-01' | 'gpt-4o-audio-preview-2024-12-17' | 'gpt-4o-search-preview' | 'gpt-4o-search-preview-2025-03-11' | 'gpt-4o-mini-search-preview' | 'gpt-4o-mini-search-preview-2025-03-11' | 'gpt-4o-mini' | 'gpt-4o-mini-2024-07-18' | 'gpt-4-turbo' | 'gpt-4-turbo-2024-04-09' | 'gpt-4-turbo-preview' | 'gpt-4-0125-preview' | 'gpt-4-1106-preview' | 'gpt-4' | 'gpt-4-0613' | 'gpt-4.5-preview' | 'gpt-4.5-preview-2025-02-27' | 'gpt-3.5-turbo-0125' | 'gpt-3.5-turbo' | 'gpt-3.5-turbo-1106' | 'chatgpt-4o-latest' | 'gpt-5' | 'gpt-5-2025-08-07' | 'gpt-5-mini' | 'gpt-5-mini-2025-08-07' | 'gpt-5-nano' | 'gpt-5-nano-2025-08-07' | 'gpt-5-chat-latest' | (string & {});
6
+ type OpenAIChatModelId = 'o1' | 'o1-2024-12-17' | 'o3-mini' | 'o3-mini-2025-01-31' | 'o3' | 'o3-2025-04-16' | 'gpt-4.1' | 'gpt-4.1-2025-04-14' | 'gpt-4.1-mini' | 'gpt-4.1-mini-2025-04-14' | 'gpt-4.1-nano' | 'gpt-4.1-nano-2025-04-14' | 'gpt-4o' | 'gpt-4o-2024-05-13' | 'gpt-4o-2024-08-06' | 'gpt-4o-2024-11-20' | 'gpt-4o-mini' | 'gpt-4o-mini-2024-07-18' | 'gpt-4-turbo' | 'gpt-4-turbo-2024-04-09' | 'gpt-4' | 'gpt-4-0613' | 'gpt-4.5-preview' | 'gpt-4.5-preview-2025-02-27' | 'gpt-3.5-turbo-0125' | 'gpt-3.5-turbo' | 'gpt-3.5-turbo-1106' | 'chatgpt-4o-latest' | 'gpt-5' | 'gpt-5-2025-08-07' | 'gpt-5-mini' | 'gpt-5-mini-2025-08-07' | 'gpt-5-nano' | 'gpt-5-nano-2025-08-07' | 'gpt-5-chat-latest' | (string & {});
7
7
 
8
8
  type OpenAICompletionModelId = 'gpt-3.5-turbo-instruct' | (string & {});
9
9
 
@@ -46,8 +46,7 @@ declare const openaiTools: {
46
46
  }>;
47
47
  };
48
48
 
49
- declare const openaiResponsesModelIds: readonly ["gpt-4.1", "gpt-4.1-2025-04-14", "gpt-4.1-mini", "gpt-4.1-mini-2025-04-14", "gpt-4.1-nano", "gpt-4.1-nano-2025-04-14", "gpt-4o", "gpt-4o-2024-05-13", "gpt-4o-2024-08-06", "gpt-4o-2024-11-20", "gpt-4o-audio-preview", "gpt-4o-audio-preview-2024-10-01", "gpt-4o-audio-preview-2024-12-17", "gpt-4o-search-preview", "gpt-4o-search-preview-2025-03-11", "gpt-4o-mini-search-preview", "gpt-4o-mini-search-preview-2025-03-11", "gpt-4o-mini", "gpt-4o-mini-2024-07-18", "gpt-4-turbo", "gpt-4-turbo-2024-04-09", "gpt-4-turbo-preview", "gpt-4-0125-preview", "gpt-4-1106-preview", "gpt-4", "gpt-4-0613", "gpt-4.5-preview", "gpt-4.5-preview-2025-02-27", "gpt-3.5-turbo-0125", "gpt-3.5-turbo", "gpt-3.5-turbo-1106", "chatgpt-4o-latest", "o1", "o1-2024-12-17", "o3-mini", "o3-mini-2025-01-31", "o3", "o3-2025-04-16", "o4-mini", "o4-mini-2025-04-16", "codex-mini-latest", "computer-use-preview", "gpt-5", "gpt-5-2025-08-07", "gpt-5-mini", "gpt-5-mini-2025-08-07", "gpt-5-nano", "gpt-5-nano-2025-08-07", "gpt-5-chat-latest"];
50
- type OpenAIResponsesModelId = (typeof openaiResponsesModelIds)[number] | (string & {});
49
+ type OpenAIResponsesModelId = 'o1' | 'o1-2024-12-17' | 'o3-mini' | 'o3-mini-2025-01-31' | 'o3' | 'o3-2025-04-16' | 'gpt-5' | 'gpt-5-2025-08-07' | 'gpt-5-mini' | 'gpt-5-mini-2025-08-07' | 'gpt-5-nano' | 'gpt-5-nano-2025-08-07' | 'gpt-5-chat-latest' | 'gpt-4.1' | 'gpt-4.1-2025-04-14' | 'gpt-4.1-mini' | 'gpt-4.1-mini-2025-04-14' | 'gpt-4.1-nano' | 'gpt-4.1-nano-2025-04-14' | 'gpt-4o' | 'gpt-4o-2024-05-13' | 'gpt-4o-2024-08-06' | 'gpt-4o-2024-11-20' | 'gpt-4o-mini' | 'gpt-4o-mini-2024-07-18' | 'gpt-4-turbo' | 'gpt-4-turbo-2024-04-09' | 'gpt-4' | 'gpt-4-0613' | 'gpt-3.5-turbo-0125' | 'gpt-3.5-turbo' | 'gpt-3.5-turbo-1106' | 'chatgpt-4o-latest' | (string & {});
51
50
 
52
51
  type OpenAISpeechModelId = 'tts-1' | 'tts-1-hd' | 'gpt-4o-mini-tts' | (string & {});
53
52
 
@@ -168,6 +167,8 @@ declare const openaiResponsesProviderOptionsSchema: z.ZodObject<{
168
167
  medium: "medium";
169
168
  high: "high";
170
169
  }>>>;
170
+ promptCacheKey: z.ZodOptional<z.ZodNullable<z.ZodString>>;
171
+ safetyIdentifier: z.ZodOptional<z.ZodNullable<z.ZodString>>;
171
172
  }, z.core.$strip>;
172
173
  type OpenAIResponsesProviderOptions = z.infer<typeof openaiResponsesProviderOptionsSchema>;
173
174
 
package/dist/index.d.ts CHANGED
@@ -3,7 +3,7 @@ import * as _ai_sdk_provider_utils from '@ai-sdk/provider-utils';
3
3
  import { FetchFunction } from '@ai-sdk/provider-utils';
4
4
  import { z } from 'zod/v4';
5
5
 
6
- type OpenAIChatModelId = 'o1' | 'o1-2024-12-17' | 'o3-mini' | 'o3-mini-2025-01-31' | 'o3' | 'o3-2025-04-16' | 'o4-mini' | 'o4-mini-2025-04-16' | 'gpt-4.1' | 'gpt-4.1-2025-04-14' | 'gpt-4.1-mini' | 'gpt-4.1-mini-2025-04-14' | 'gpt-4.1-nano' | 'gpt-4.1-nano-2025-04-14' | 'gpt-4o' | 'gpt-4o-2024-05-13' | 'gpt-4o-2024-08-06' | 'gpt-4o-2024-11-20' | 'gpt-4o-audio-preview' | 'gpt-4o-audio-preview-2024-10-01' | 'gpt-4o-audio-preview-2024-12-17' | 'gpt-4o-search-preview' | 'gpt-4o-search-preview-2025-03-11' | 'gpt-4o-mini-search-preview' | 'gpt-4o-mini-search-preview-2025-03-11' | 'gpt-4o-mini' | 'gpt-4o-mini-2024-07-18' | 'gpt-4-turbo' | 'gpt-4-turbo-2024-04-09' | 'gpt-4-turbo-preview' | 'gpt-4-0125-preview' | 'gpt-4-1106-preview' | 'gpt-4' | 'gpt-4-0613' | 'gpt-4.5-preview' | 'gpt-4.5-preview-2025-02-27' | 'gpt-3.5-turbo-0125' | 'gpt-3.5-turbo' | 'gpt-3.5-turbo-1106' | 'chatgpt-4o-latest' | 'gpt-5' | 'gpt-5-2025-08-07' | 'gpt-5-mini' | 'gpt-5-mini-2025-08-07' | 'gpt-5-nano' | 'gpt-5-nano-2025-08-07' | 'gpt-5-chat-latest' | (string & {});
6
+ type OpenAIChatModelId = 'o1' | 'o1-2024-12-17' | 'o3-mini' | 'o3-mini-2025-01-31' | 'o3' | 'o3-2025-04-16' | 'gpt-4.1' | 'gpt-4.1-2025-04-14' | 'gpt-4.1-mini' | 'gpt-4.1-mini-2025-04-14' | 'gpt-4.1-nano' | 'gpt-4.1-nano-2025-04-14' | 'gpt-4o' | 'gpt-4o-2024-05-13' | 'gpt-4o-2024-08-06' | 'gpt-4o-2024-11-20' | 'gpt-4o-mini' | 'gpt-4o-mini-2024-07-18' | 'gpt-4-turbo' | 'gpt-4-turbo-2024-04-09' | 'gpt-4' | 'gpt-4-0613' | 'gpt-4.5-preview' | 'gpt-4.5-preview-2025-02-27' | 'gpt-3.5-turbo-0125' | 'gpt-3.5-turbo' | 'gpt-3.5-turbo-1106' | 'chatgpt-4o-latest' | 'gpt-5' | 'gpt-5-2025-08-07' | 'gpt-5-mini' | 'gpt-5-mini-2025-08-07' | 'gpt-5-nano' | 'gpt-5-nano-2025-08-07' | 'gpt-5-chat-latest' | (string & {});
7
7
 
8
8
  type OpenAICompletionModelId = 'gpt-3.5-turbo-instruct' | (string & {});
9
9
 
@@ -46,8 +46,7 @@ declare const openaiTools: {
46
46
  }>;
47
47
  };
48
48
 
49
- declare const openaiResponsesModelIds: readonly ["gpt-4.1", "gpt-4.1-2025-04-14", "gpt-4.1-mini", "gpt-4.1-mini-2025-04-14", "gpt-4.1-nano", "gpt-4.1-nano-2025-04-14", "gpt-4o", "gpt-4o-2024-05-13", "gpt-4o-2024-08-06", "gpt-4o-2024-11-20", "gpt-4o-audio-preview", "gpt-4o-audio-preview-2024-10-01", "gpt-4o-audio-preview-2024-12-17", "gpt-4o-search-preview", "gpt-4o-search-preview-2025-03-11", "gpt-4o-mini-search-preview", "gpt-4o-mini-search-preview-2025-03-11", "gpt-4o-mini", "gpt-4o-mini-2024-07-18", "gpt-4-turbo", "gpt-4-turbo-2024-04-09", "gpt-4-turbo-preview", "gpt-4-0125-preview", "gpt-4-1106-preview", "gpt-4", "gpt-4-0613", "gpt-4.5-preview", "gpt-4.5-preview-2025-02-27", "gpt-3.5-turbo-0125", "gpt-3.5-turbo", "gpt-3.5-turbo-1106", "chatgpt-4o-latest", "o1", "o1-2024-12-17", "o3-mini", "o3-mini-2025-01-31", "o3", "o3-2025-04-16", "o4-mini", "o4-mini-2025-04-16", "codex-mini-latest", "computer-use-preview", "gpt-5", "gpt-5-2025-08-07", "gpt-5-mini", "gpt-5-mini-2025-08-07", "gpt-5-nano", "gpt-5-nano-2025-08-07", "gpt-5-chat-latest"];
50
- type OpenAIResponsesModelId = (typeof openaiResponsesModelIds)[number] | (string & {});
49
+ type OpenAIResponsesModelId = 'o1' | 'o1-2024-12-17' | 'o3-mini' | 'o3-mini-2025-01-31' | 'o3' | 'o3-2025-04-16' | 'gpt-5' | 'gpt-5-2025-08-07' | 'gpt-5-mini' | 'gpt-5-mini-2025-08-07' | 'gpt-5-nano' | 'gpt-5-nano-2025-08-07' | 'gpt-5-chat-latest' | 'gpt-4.1' | 'gpt-4.1-2025-04-14' | 'gpt-4.1-mini' | 'gpt-4.1-mini-2025-04-14' | 'gpt-4.1-nano' | 'gpt-4.1-nano-2025-04-14' | 'gpt-4o' | 'gpt-4o-2024-05-13' | 'gpt-4o-2024-08-06' | 'gpt-4o-2024-11-20' | 'gpt-4o-mini' | 'gpt-4o-mini-2024-07-18' | 'gpt-4-turbo' | 'gpt-4-turbo-2024-04-09' | 'gpt-4' | 'gpt-4-0613' | 'gpt-3.5-turbo-0125' | 'gpt-3.5-turbo' | 'gpt-3.5-turbo-1106' | 'chatgpt-4o-latest' | (string & {});
51
50
 
52
51
  type OpenAISpeechModelId = 'tts-1' | 'tts-1-hd' | 'gpt-4o-mini-tts' | (string & {});
53
52
 
@@ -168,6 +167,8 @@ declare const openaiResponsesProviderOptionsSchema: z.ZodObject<{
168
167
  medium: "medium";
169
168
  high: "high";
170
169
  }>>>;
170
+ promptCacheKey: z.ZodOptional<z.ZodNullable<z.ZodString>>;
171
+ safetyIdentifier: z.ZodOptional<z.ZodNullable<z.ZodString>>;
171
172
  }, z.core.$strip>;
172
173
  type OpenAIResponsesProviderOptions = z.infer<typeof openaiResponsesProviderOptionsSchema>;
173
174
 
package/dist/index.js CHANGED
@@ -334,7 +334,20 @@ var openaiProviderOptions = import_v42.z.object({
334
334
  * Controls the verbosity of the model's responses.
335
335
  * Lower values will result in more concise responses, while higher values will result in more verbose responses.
336
336
  */
337
- textVerbosity: import_v42.z.enum(["low", "medium", "high"]).optional()
337
+ textVerbosity: import_v42.z.enum(["low", "medium", "high"]).optional(),
338
+ /**
339
+ * A cache key for prompt caching. Allows manual control over prompt caching behavior.
340
+ * Useful for improving cache hit rates and working around automatic caching issues.
341
+ */
342
+ promptCacheKey: import_v42.z.string().optional(),
343
+ /**
344
+ * A stable identifier used to help detect users of your application
345
+ * that may be violating OpenAI's usage policies. The IDs should be a
346
+ * string that uniquely identifies each user. We recommend hashing their
347
+ * username or email address, in order to avoid sending us any identifying
348
+ * information.
349
+ */
350
+ safetyIdentifier: import_v42.z.string().optional()
338
351
  });
339
352
 
340
353
  // src/chat/openai-chat-prepare-tools.ts
@@ -605,6 +618,8 @@ var OpenAIChatLanguageModel = class {
605
618
  prediction: openaiOptions.prediction,
606
619
  reasoning_effort: openaiOptions.reasoningEffort,
607
620
  service_tier: openaiOptions.serviceTier,
621
+ prompt_cache_key: openaiOptions.promptCacheKey,
622
+ safety_identifier: openaiOptions.safetyIdentifier,
608
623
  // messages:
609
624
  messages
610
625
  };
@@ -1811,9 +1826,14 @@ var import_provider6 = require("@ai-sdk/provider");
1811
1826
  var import_provider_utils10 = require("@ai-sdk/provider-utils");
1812
1827
  var import_v412 = require("zod/v4");
1813
1828
  var import_provider_utils11 = require("@ai-sdk/provider-utils");
1829
+ function isFileId(data, prefixes) {
1830
+ if (!prefixes) return false;
1831
+ return prefixes.some((prefix) => data.startsWith(prefix));
1832
+ }
1814
1833
  async function convertToOpenAIResponsesMessages({
1815
1834
  prompt,
1816
- systemMessageMode
1835
+ systemMessageMode,
1836
+ fileIdPrefixes
1817
1837
  }) {
1818
1838
  var _a, _b, _c, _d, _e, _f;
1819
1839
  const messages = [];
@@ -1860,7 +1880,7 @@ async function convertToOpenAIResponsesMessages({
1860
1880
  const mediaType = part.mediaType === "image/*" ? "image/jpeg" : part.mediaType;
1861
1881
  return {
1862
1882
  type: "input_image",
1863
- ...part.data instanceof URL ? { image_url: part.data.toString() } : typeof part.data === "string" && part.data.startsWith("file-") ? { file_id: part.data } : {
1883
+ ...part.data instanceof URL ? { image_url: part.data.toString() } : typeof part.data === "string" && isFileId(part.data, fileIdPrefixes) ? { file_id: part.data } : {
1864
1884
  image_url: `data:${mediaType};base64,${(0, import_provider_utils11.convertToBase64)(part.data)}`
1865
1885
  },
1866
1886
  detail: (_b2 = (_a2 = part.providerOptions) == null ? void 0 : _a2.openai) == null ? void 0 : _b2.imageDetail
@@ -1873,7 +1893,7 @@ async function convertToOpenAIResponsesMessages({
1873
1893
  }
1874
1894
  return {
1875
1895
  type: "input_file",
1876
- ...typeof part.data === "string" && part.data.startsWith("file-") ? { file_id: part.data } : {
1896
+ ...typeof part.data === "string" && isFileId(part.data, fileIdPrefixes) ? { file_id: part.data } : {
1877
1897
  filename: (_c2 = part.filename) != null ? _c2 : `part-${index}.pdf`,
1878
1898
  file_data: `data:application/pdf;base64,${(0, import_provider_utils11.convertToBase64)(part.data)}`
1879
1899
  }
@@ -2160,7 +2180,8 @@ var OpenAIResponsesLanguageModel = class {
2160
2180
  }
2161
2181
  const { messages, warnings: messageWarnings } = await convertToOpenAIResponsesMessages({
2162
2182
  prompt,
2163
- systemMessageMode: modelConfig.systemMessageMode
2183
+ systemMessageMode: modelConfig.systemMessageMode,
2184
+ fileIdPrefixes: this.config.fileIdPrefixes
2164
2185
  });
2165
2186
  warnings.push(...messageWarnings);
2166
2187
  const openaiOptions = await (0, import_provider_utils12.parseProviderOptions)({
@@ -2200,6 +2221,8 @@ var OpenAIResponsesLanguageModel = class {
2200
2221
  instructions: openaiOptions == null ? void 0 : openaiOptions.instructions,
2201
2222
  service_tier: openaiOptions == null ? void 0 : openaiOptions.serviceTier,
2202
2223
  include: openaiOptions == null ? void 0 : openaiOptions.include,
2224
+ prompt_cache_key: openaiOptions == null ? void 0 : openaiOptions.promptCacheKey,
2225
+ safety_identifier: openaiOptions == null ? void 0 : openaiOptions.safetyIdentifier,
2203
2226
  // model-specific settings:
2204
2227
  ...modelConfig.isReasoningModel && ((openaiOptions == null ? void 0 : openaiOptions.reasoningEffort) != null || (openaiOptions == null ? void 0 : openaiOptions.reasoningSummary) != null) && {
2205
2228
  reasoning: {
@@ -2349,7 +2372,18 @@ var OpenAIResponsesLanguageModel = class {
2349
2372
  import_v413.z.object({
2350
2373
  type: import_v413.z.literal("file_search_call"),
2351
2374
  id: import_v413.z.string(),
2352
- status: import_v413.z.string().optional()
2375
+ status: import_v413.z.string().optional(),
2376
+ queries: import_v413.z.array(import_v413.z.string()).nullish(),
2377
+ results: import_v413.z.array(
2378
+ import_v413.z.object({
2379
+ attributes: import_v413.z.object({
2380
+ file_id: import_v413.z.string(),
2381
+ filename: import_v413.z.string(),
2382
+ score: import_v413.z.number(),
2383
+ text: import_v413.z.string()
2384
+ })
2385
+ })
2386
+ ).nullish()
2353
2387
  }),
2354
2388
  import_v413.z.object({
2355
2389
  type: import_v413.z.literal("reasoning"),
@@ -2491,7 +2525,9 @@ var OpenAIResponsesLanguageModel = class {
2491
2525
  toolName: "file_search",
2492
2526
  result: {
2493
2527
  type: "file_search_tool_result",
2494
- status: part.status || "completed"
2528
+ status: part.status || "completed",
2529
+ ...part.queries && { queries: part.queries },
2530
+ ...part.results && { results: part.results }
2495
2531
  },
2496
2532
  providerExecuted: true
2497
2533
  });
@@ -2606,6 +2642,16 @@ var OpenAIResponsesLanguageModel = class {
2606
2642
  id: value.item.id,
2607
2643
  toolName: "computer_use"
2608
2644
  });
2645
+ } else if (value.item.type === "file_search_call") {
2646
+ ongoingToolCalls[value.output_index] = {
2647
+ toolName: "file_search",
2648
+ toolCallId: value.item.id
2649
+ };
2650
+ controller.enqueue({
2651
+ type: "tool-input-start",
2652
+ id: value.item.id,
2653
+ toolName: "file_search"
2654
+ });
2609
2655
  } else if (value.item.type === "message") {
2610
2656
  controller.enqueue({
2611
2657
  type: "text-start",
@@ -2699,6 +2745,32 @@ var OpenAIResponsesLanguageModel = class {
2699
2745
  },
2700
2746
  providerExecuted: true
2701
2747
  });
2748
+ } else if (value.item.type === "file_search_call") {
2749
+ ongoingToolCalls[value.output_index] = void 0;
2750
+ hasToolCalls = true;
2751
+ controller.enqueue({
2752
+ type: "tool-input-end",
2753
+ id: value.item.id
2754
+ });
2755
+ controller.enqueue({
2756
+ type: "tool-call",
2757
+ toolCallId: value.item.id,
2758
+ toolName: "file_search",
2759
+ input: "",
2760
+ providerExecuted: true
2761
+ });
2762
+ controller.enqueue({
2763
+ type: "tool-result",
2764
+ toolCallId: value.item.id,
2765
+ toolName: "file_search",
2766
+ result: {
2767
+ type: "file_search_tool_result",
2768
+ status: value.item.status || "completed",
2769
+ ...value.item.queries && { queries: value.item.queries },
2770
+ ...value.item.results && { results: value.item.results }
2771
+ },
2772
+ providerExecuted: true
2773
+ });
2702
2774
  } else if (value.item.type === "message") {
2703
2775
  controller.enqueue({
2704
2776
  type: "text-end",
@@ -2877,7 +2949,18 @@ var responseOutputItemAddedSchema = import_v413.z.object({
2877
2949
  import_v413.z.object({
2878
2950
  type: import_v413.z.literal("file_search_call"),
2879
2951
  id: import_v413.z.string(),
2880
- status: import_v413.z.string()
2952
+ status: import_v413.z.string(),
2953
+ queries: import_v413.z.array(import_v413.z.string()).nullish(),
2954
+ results: import_v413.z.array(
2955
+ import_v413.z.object({
2956
+ attributes: import_v413.z.object({
2957
+ file_id: import_v413.z.string(),
2958
+ filename: import_v413.z.string(),
2959
+ score: import_v413.z.number(),
2960
+ text: import_v413.z.string()
2961
+ })
2962
+ })
2963
+ ).optional()
2881
2964
  })
2882
2965
  ])
2883
2966
  });
@@ -2915,7 +2998,18 @@ var responseOutputItemDoneSchema = import_v413.z.object({
2915
2998
  import_v413.z.object({
2916
2999
  type: import_v413.z.literal("file_search_call"),
2917
3000
  id: import_v413.z.string(),
2918
- status: import_v413.z.literal("completed")
3001
+ status: import_v413.z.literal("completed"),
3002
+ queries: import_v413.z.array(import_v413.z.string()).nullish(),
3003
+ results: import_v413.z.array(
3004
+ import_v413.z.object({
3005
+ attributes: import_v413.z.object({
3006
+ file_id: import_v413.z.string(),
3007
+ filename: import_v413.z.string(),
3008
+ score: import_v413.z.number(),
3009
+ text: import_v413.z.string()
3010
+ })
3011
+ })
3012
+ ).nullish()
2919
3013
  })
2920
3014
  ])
2921
3015
  });
@@ -3033,7 +3127,9 @@ var openaiResponsesProviderOptionsSchema = import_v413.z.object({
3033
3127
  reasoningSummary: import_v413.z.string().nullish(),
3034
3128
  serviceTier: import_v413.z.enum(["auto", "flex", "priority"]).nullish(),
3035
3129
  include: import_v413.z.array(import_v413.z.enum(["reasoning.encrypted_content", "file_search_call.results"])).nullish(),
3036
- textVerbosity: import_v413.z.enum(["low", "medium", "high"]).nullish()
3130
+ textVerbosity: import_v413.z.enum(["low", "medium", "high"]).nullish(),
3131
+ promptCacheKey: import_v413.z.string().nullish(),
3132
+ safetyIdentifier: import_v413.z.string().nullish()
3037
3133
  });
3038
3134
 
3039
3135
  // src/speech/openai-speech-model.ts
@@ -3396,7 +3492,8 @@ function createOpenAI(options = {}) {
3396
3492
  provider: `${providerName}.responses`,
3397
3493
  url: ({ path }) => `${baseURL}${path}`,
3398
3494
  headers: getHeaders,
3399
- fetch: options.fetch
3495
+ fetch: options.fetch,
3496
+ fileIdPrefixes: ["file-"]
3400
3497
  });
3401
3498
  };
3402
3499
  const provider = function(modelId) {