@ai-sdk/openai 2.0.39 → 2.0.41

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
@@ -1,6 +1,7 @@
1
1
  // src/openai-provider.ts
2
2
  import {
3
3
  loadApiKey,
4
+ loadOptionalSetting,
4
5
  withoutTrailingSlash,
5
6
  withUserAgentSuffix
6
7
  } from "@ai-sdk/provider-utils";
@@ -1793,39 +1794,62 @@ var imageGeneration = (args = {}) => {
1793
1794
  return imageGenerationToolFactory(args);
1794
1795
  };
1795
1796
 
1797
+ // src/tool/local-shell.ts
1798
+ import { createProviderDefinedToolFactoryWithOutputSchema as createProviderDefinedToolFactoryWithOutputSchema4 } from "@ai-sdk/provider-utils";
1799
+ import { z as z12 } from "zod/v4";
1800
+ var localShellInputSchema = z12.object({
1801
+ action: z12.object({
1802
+ type: z12.literal("exec"),
1803
+ command: z12.array(z12.string()),
1804
+ timeoutMs: z12.number().optional(),
1805
+ user: z12.string().optional(),
1806
+ workingDirectory: z12.string().optional(),
1807
+ env: z12.record(z12.string(), z12.string()).optional()
1808
+ })
1809
+ });
1810
+ var localShellOutputSchema = z12.object({
1811
+ output: z12.string()
1812
+ });
1813
+ var localShell = createProviderDefinedToolFactoryWithOutputSchema4({
1814
+ id: "openai.local_shell",
1815
+ name: "local_shell",
1816
+ inputSchema: localShellInputSchema,
1817
+ outputSchema: localShellOutputSchema
1818
+ });
1819
+
1796
1820
  // src/tool/web-search.ts
1797
1821
  import { createProviderDefinedToolFactory } from "@ai-sdk/provider-utils";
1798
- import { z as z12 } from "zod/v4";
1799
- var webSearchArgsSchema = z12.object({
1800
- filters: z12.object({
1801
- allowedDomains: z12.array(z12.string()).optional()
1822
+ import { z as z13 } from "zod/v4";
1823
+ var webSearchArgsSchema = z13.object({
1824
+ filters: z13.object({
1825
+ allowedDomains: z13.array(z13.string()).optional()
1802
1826
  }).optional(),
1803
- searchContextSize: z12.enum(["low", "medium", "high"]).optional(),
1804
- userLocation: z12.object({
1805
- type: z12.literal("approximate"),
1806
- country: z12.string().optional(),
1807
- city: z12.string().optional(),
1808
- region: z12.string().optional(),
1809
- timezone: z12.string().optional()
1827
+ searchContextSize: z13.enum(["low", "medium", "high"]).optional(),
1828
+ userLocation: z13.object({
1829
+ type: z13.literal("approximate"),
1830
+ country: z13.string().optional(),
1831
+ city: z13.string().optional(),
1832
+ region: z13.string().optional(),
1833
+ timezone: z13.string().optional()
1810
1834
  }).optional()
1811
1835
  });
1812
1836
  var webSearchToolFactory = createProviderDefinedToolFactory({
1813
1837
  id: "openai.web_search",
1814
1838
  name: "web_search",
1815
- inputSchema: z12.object({
1816
- action: z12.discriminatedUnion("type", [
1817
- z12.object({
1818
- type: z12.literal("search"),
1819
- query: z12.string().nullish()
1839
+ inputSchema: z13.object({
1840
+ action: z13.discriminatedUnion("type", [
1841
+ z13.object({
1842
+ type: z13.literal("search"),
1843
+ query: z13.string().nullish()
1820
1844
  }),
1821
- z12.object({
1822
- type: z12.literal("open_page"),
1823
- url: z12.string()
1845
+ z13.object({
1846
+ type: z13.literal("open_page"),
1847
+ url: z13.string()
1824
1848
  }),
1825
- z12.object({
1826
- type: z12.literal("find"),
1827
- url: z12.string(),
1828
- pattern: z12.string()
1849
+ z13.object({
1850
+ type: z13.literal("find"),
1851
+ url: z13.string(),
1852
+ pattern: z13.string()
1829
1853
  })
1830
1854
  ]).nullish()
1831
1855
  })
@@ -1836,58 +1860,58 @@ var webSearch = (args = {}) => {
1836
1860
 
1837
1861
  // src/tool/web-search-preview.ts
1838
1862
  import { createProviderDefinedToolFactory as createProviderDefinedToolFactory2 } from "@ai-sdk/provider-utils";
1839
- import { z as z13 } from "zod/v4";
1840
- var webSearchPreviewArgsSchema = z13.object({
1863
+ import { z as z14 } from "zod/v4";
1864
+ var webSearchPreviewArgsSchema = z14.object({
1841
1865
  /**
1842
1866
  * Search context size to use for the web search.
1843
1867
  * - high: Most comprehensive context, highest cost, slower response
1844
1868
  * - medium: Balanced context, cost, and latency (default)
1845
1869
  * - low: Least context, lowest cost, fastest response
1846
1870
  */
1847
- searchContextSize: z13.enum(["low", "medium", "high"]).optional(),
1871
+ searchContextSize: z14.enum(["low", "medium", "high"]).optional(),
1848
1872
  /**
1849
1873
  * User location information to provide geographically relevant search results.
1850
1874
  */
1851
- userLocation: z13.object({
1875
+ userLocation: z14.object({
1852
1876
  /**
1853
1877
  * Type of location (always 'approximate')
1854
1878
  */
1855
- type: z13.literal("approximate"),
1879
+ type: z14.literal("approximate"),
1856
1880
  /**
1857
1881
  * Two-letter ISO country code (e.g., 'US', 'GB')
1858
1882
  */
1859
- country: z13.string().optional(),
1883
+ country: z14.string().optional(),
1860
1884
  /**
1861
1885
  * City name (free text, e.g., 'Minneapolis')
1862
1886
  */
1863
- city: z13.string().optional(),
1887
+ city: z14.string().optional(),
1864
1888
  /**
1865
1889
  * Region name (free text, e.g., 'Minnesota')
1866
1890
  */
1867
- region: z13.string().optional(),
1891
+ region: z14.string().optional(),
1868
1892
  /**
1869
1893
  * IANA timezone (e.g., 'America/Chicago')
1870
1894
  */
1871
- timezone: z13.string().optional()
1895
+ timezone: z14.string().optional()
1872
1896
  }).optional()
1873
1897
  });
1874
1898
  var webSearchPreview = createProviderDefinedToolFactory2({
1875
1899
  id: "openai.web_search_preview",
1876
1900
  name: "web_search_preview",
1877
- inputSchema: z13.object({
1878
- action: z13.discriminatedUnion("type", [
1879
- z13.object({
1880
- type: z13.literal("search"),
1881
- query: z13.string().nullish()
1901
+ inputSchema: z14.object({
1902
+ action: z14.discriminatedUnion("type", [
1903
+ z14.object({
1904
+ type: z14.literal("search"),
1905
+ query: z14.string().nullish()
1882
1906
  }),
1883
- z13.object({
1884
- type: z13.literal("open_page"),
1885
- url: z13.string()
1907
+ z14.object({
1908
+ type: z14.literal("open_page"),
1909
+ url: z14.string()
1886
1910
  }),
1887
- z13.object({
1888
- type: z13.literal("find"),
1889
- url: z13.string(),
1890
- pattern: z13.string()
1911
+ z14.object({
1912
+ type: z14.literal("find"),
1913
+ url: z14.string(),
1914
+ pattern: z14.string()
1891
1915
  })
1892
1916
  ]).nullish()
1893
1917
  })
@@ -1932,6 +1956,15 @@ var openaiTools = {
1932
1956
  * @param background - Transparent or opaque
1933
1957
  */
1934
1958
  imageGeneration,
1959
+ /**
1960
+ * Local shell is a tool that allows agents to run shell commands locally
1961
+ * on a machine you or the user provides.
1962
+ *
1963
+ * Supported models: `gpt-5-codex` and `codex-mini-latest`
1964
+ *
1965
+ * Must have name `local_shell`.
1966
+ */
1967
+ localShell,
1935
1968
  /**
1936
1969
  * Web search allows models to access up-to-date information from the internet
1937
1970
  * and provide answers with sourced citations.
@@ -1969,14 +2002,14 @@ import {
1969
2002
  parseProviderOptions as parseProviderOptions5,
1970
2003
  postJsonToApi as postJsonToApi5
1971
2004
  } from "@ai-sdk/provider-utils";
1972
- import { z as z15 } from "zod/v4";
2005
+ import { z as z16 } from "zod/v4";
1973
2006
 
1974
2007
  // src/responses/convert-to-openai-responses-input.ts
1975
2008
  import {
1976
2009
  UnsupportedFunctionalityError as UnsupportedFunctionalityError4
1977
2010
  } from "@ai-sdk/provider";
1978
2011
  import { convertToBase64 as convertToBase642, parseProviderOptions as parseProviderOptions4 } from "@ai-sdk/provider-utils";
1979
- import { z as z14 } from "zod/v4";
2012
+ import { z as z15 } from "zod/v4";
1980
2013
  function isFileId(data, prefixes) {
1981
2014
  if (!prefixes) return false;
1982
2015
  return prefixes.some((prefix) => data.startsWith(prefix));
@@ -1985,9 +2018,10 @@ async function convertToOpenAIResponsesInput({
1985
2018
  prompt,
1986
2019
  systemMessageMode,
1987
2020
  fileIdPrefixes,
1988
- store
2021
+ store,
2022
+ hasLocalShellTool = false
1989
2023
  }) {
1990
- var _a, _b, _c, _d, _e, _f;
2024
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i;
1991
2025
  const input = [];
1992
2026
  const warnings = [];
1993
2027
  for (const { role, content } of prompt) {
@@ -2080,12 +2114,29 @@ async function convertToOpenAIResponsesInput({
2080
2114
  if (part.providerExecuted) {
2081
2115
  break;
2082
2116
  }
2117
+ if (hasLocalShellTool && part.toolName === "local_shell") {
2118
+ const parsedInput = localShellInputSchema.parse(part.input);
2119
+ input.push({
2120
+ type: "local_shell_call",
2121
+ call_id: part.toolCallId,
2122
+ id: (_f = (_e = (_d = part.providerOptions) == null ? void 0 : _d.openai) == null ? void 0 : _e.itemId) != null ? _f : void 0,
2123
+ action: {
2124
+ type: "exec",
2125
+ command: parsedInput.action.command,
2126
+ timeout_ms: parsedInput.action.timeoutMs,
2127
+ user: parsedInput.action.user,
2128
+ working_directory: parsedInput.action.workingDirectory,
2129
+ env: parsedInput.action.env
2130
+ }
2131
+ });
2132
+ break;
2133
+ }
2083
2134
  input.push({
2084
2135
  type: "function_call",
2085
2136
  call_id: part.toolCallId,
2086
2137
  name: part.toolName,
2087
2138
  arguments: JSON.stringify(part.input),
2088
- id: (_f = (_e = (_d = part.providerOptions) == null ? void 0 : _d.openai) == null ? void 0 : _e.itemId) != null ? _f : void 0
2139
+ id: (_i = (_h = (_g = part.providerOptions) == null ? void 0 : _g.openai) == null ? void 0 : _h.itemId) != null ? _i : void 0
2089
2140
  });
2090
2141
  break;
2091
2142
  }
@@ -2159,6 +2210,14 @@ async function convertToOpenAIResponsesInput({
2159
2210
  case "tool": {
2160
2211
  for (const part of content) {
2161
2212
  const output = part.output;
2213
+ if (hasLocalShellTool && part.toolName === "local_shell" && output.type === "json") {
2214
+ input.push({
2215
+ type: "local_shell_call_output",
2216
+ call_id: part.toolCallId,
2217
+ output: localShellOutputSchema.parse(output.value).output
2218
+ });
2219
+ break;
2220
+ }
2162
2221
  let contentValue;
2163
2222
  switch (output.type) {
2164
2223
  case "text":
@@ -2187,9 +2246,9 @@ async function convertToOpenAIResponsesInput({
2187
2246
  }
2188
2247
  return { input, warnings };
2189
2248
  }
2190
- var openaiResponsesReasoningProviderOptionsSchema = z14.object({
2191
- itemId: z14.string().nullish(),
2192
- reasoningEncryptedContent: z14.string().nullish()
2249
+ var openaiResponsesReasoningProviderOptionsSchema = z15.object({
2250
+ itemId: z15.string().nullish(),
2251
+ reasoningEncryptedContent: z15.string().nullish()
2193
2252
  });
2194
2253
 
2195
2254
  // src/responses/map-openai-responses-finish-reason.ts
@@ -2252,6 +2311,12 @@ function prepareResponsesTools({
2252
2311
  });
2253
2312
  break;
2254
2313
  }
2314
+ case "openai.local_shell": {
2315
+ openaiTools2.push({
2316
+ type: "local_shell"
2317
+ });
2318
+ break;
2319
+ }
2255
2320
  case "openai.web_search_preview": {
2256
2321
  const args = webSearchPreviewArgsSchema.parse(tool.args);
2257
2322
  openaiTools2.push({
@@ -2331,66 +2396,79 @@ function prepareResponsesTools({
2331
2396
  }
2332
2397
 
2333
2398
  // src/responses/openai-responses-language-model.ts
2334
- var webSearchCallItem = z15.object({
2335
- type: z15.literal("web_search_call"),
2336
- id: z15.string(),
2337
- status: z15.string(),
2338
- action: z15.discriminatedUnion("type", [
2339
- z15.object({
2340
- type: z15.literal("search"),
2341
- query: z15.string().nullish()
2399
+ var webSearchCallItem = z16.object({
2400
+ type: z16.literal("web_search_call"),
2401
+ id: z16.string(),
2402
+ status: z16.string(),
2403
+ action: z16.discriminatedUnion("type", [
2404
+ z16.object({
2405
+ type: z16.literal("search"),
2406
+ query: z16.string().nullish()
2342
2407
  }),
2343
- z15.object({
2344
- type: z15.literal("open_page"),
2345
- url: z15.string()
2408
+ z16.object({
2409
+ type: z16.literal("open_page"),
2410
+ url: z16.string()
2346
2411
  }),
2347
- z15.object({
2348
- type: z15.literal("find"),
2349
- url: z15.string(),
2350
- pattern: z15.string()
2412
+ z16.object({
2413
+ type: z16.literal("find"),
2414
+ url: z16.string(),
2415
+ pattern: z16.string()
2351
2416
  })
2352
2417
  ]).nullish()
2353
2418
  });
2354
- var fileSearchCallItem = z15.object({
2355
- type: z15.literal("file_search_call"),
2356
- id: z15.string(),
2357
- queries: z15.array(z15.string()),
2358
- results: z15.array(
2359
- z15.object({
2360
- attributes: z15.record(z15.string(), z15.unknown()),
2361
- file_id: z15.string(),
2362
- filename: z15.string(),
2363
- score: z15.number(),
2364
- text: z15.string()
2419
+ var fileSearchCallItem = z16.object({
2420
+ type: z16.literal("file_search_call"),
2421
+ id: z16.string(),
2422
+ queries: z16.array(z16.string()),
2423
+ results: z16.array(
2424
+ z16.object({
2425
+ attributes: z16.record(z16.string(), z16.unknown()),
2426
+ file_id: z16.string(),
2427
+ filename: z16.string(),
2428
+ score: z16.number(),
2429
+ text: z16.string()
2365
2430
  })
2366
2431
  ).nullish()
2367
2432
  });
2368
- var codeInterpreterCallItem = z15.object({
2369
- type: z15.literal("code_interpreter_call"),
2370
- id: z15.string(),
2371
- code: z15.string().nullable(),
2372
- container_id: z15.string(),
2373
- outputs: z15.array(
2374
- z15.discriminatedUnion("type", [
2375
- z15.object({ type: z15.literal("logs"), logs: z15.string() }),
2376
- z15.object({ type: z15.literal("image"), url: z15.string() })
2433
+ var codeInterpreterCallItem = z16.object({
2434
+ type: z16.literal("code_interpreter_call"),
2435
+ id: z16.string(),
2436
+ code: z16.string().nullable(),
2437
+ container_id: z16.string(),
2438
+ outputs: z16.array(
2439
+ z16.discriminatedUnion("type", [
2440
+ z16.object({ type: z16.literal("logs"), logs: z16.string() }),
2441
+ z16.object({ type: z16.literal("image"), url: z16.string() })
2377
2442
  ])
2378
2443
  ).nullable()
2379
2444
  });
2380
- var imageGenerationCallItem = z15.object({
2381
- type: z15.literal("image_generation_call"),
2382
- id: z15.string(),
2383
- result: z15.string()
2445
+ var localShellCallItem = z16.object({
2446
+ type: z16.literal("local_shell_call"),
2447
+ id: z16.string(),
2448
+ call_id: z16.string(),
2449
+ action: z16.object({
2450
+ type: z16.literal("exec"),
2451
+ command: z16.array(z16.string()),
2452
+ timeout_ms: z16.number().optional(),
2453
+ user: z16.string().optional(),
2454
+ working_directory: z16.string().optional(),
2455
+ env: z16.record(z16.string(), z16.string()).optional()
2456
+ })
2457
+ });
2458
+ var imageGenerationCallItem = z16.object({
2459
+ type: z16.literal("image_generation_call"),
2460
+ id: z16.string(),
2461
+ result: z16.string()
2384
2462
  });
2385
2463
  var TOP_LOGPROBS_MAX = 20;
2386
- var LOGPROBS_SCHEMA = z15.array(
2387
- z15.object({
2388
- token: z15.string(),
2389
- logprob: z15.number(),
2390
- top_logprobs: z15.array(
2391
- z15.object({
2392
- token: z15.string(),
2393
- logprob: z15.number()
2464
+ var LOGPROBS_SCHEMA = z16.array(
2465
+ z16.object({
2466
+ token: z16.string(),
2467
+ logprob: z16.number(),
2468
+ top_logprobs: z16.array(
2469
+ z16.object({
2470
+ token: z16.string(),
2471
+ logprob: z16.number()
2394
2472
  })
2395
2473
  )
2396
2474
  })
@@ -2456,7 +2534,8 @@ var OpenAIResponsesLanguageModel = class {
2456
2534
  prompt,
2457
2535
  systemMessageMode: modelConfig.systemMessageMode,
2458
2536
  fileIdPrefixes: this.config.fileIdPrefixes,
2459
- store: (_a = openaiOptions == null ? void 0 : openaiOptions.store) != null ? _a : true
2537
+ store: (_a = openaiOptions == null ? void 0 : openaiOptions.store) != null ? _a : true,
2538
+ hasLocalShellTool: hasOpenAITool("openai.local_shell")
2460
2539
  });
2461
2540
  warnings.push(...inputWarnings);
2462
2541
  const strictJsonSchema = (_b = openaiOptions == null ? void 0 : openaiOptions.strictJsonSchema) != null ? _b : false;
@@ -2621,45 +2700,45 @@ var OpenAIResponsesLanguageModel = class {
2621
2700
  body,
2622
2701
  failedResponseHandler: openaiFailedResponseHandler,
2623
2702
  successfulResponseHandler: createJsonResponseHandler5(
2624
- z15.object({
2625
- id: z15.string(),
2626
- created_at: z15.number(),
2627
- error: z15.object({
2628
- code: z15.string(),
2629
- message: z15.string()
2703
+ z16.object({
2704
+ id: z16.string(),
2705
+ created_at: z16.number(),
2706
+ error: z16.object({
2707
+ code: z16.string(),
2708
+ message: z16.string()
2630
2709
  }).nullish(),
2631
- model: z15.string(),
2632
- output: z15.array(
2633
- z15.discriminatedUnion("type", [
2634
- z15.object({
2635
- type: z15.literal("message"),
2636
- role: z15.literal("assistant"),
2637
- id: z15.string(),
2638
- content: z15.array(
2639
- z15.object({
2640
- type: z15.literal("output_text"),
2641
- text: z15.string(),
2710
+ model: z16.string(),
2711
+ output: z16.array(
2712
+ z16.discriminatedUnion("type", [
2713
+ z16.object({
2714
+ type: z16.literal("message"),
2715
+ role: z16.literal("assistant"),
2716
+ id: z16.string(),
2717
+ content: z16.array(
2718
+ z16.object({
2719
+ type: z16.literal("output_text"),
2720
+ text: z16.string(),
2642
2721
  logprobs: LOGPROBS_SCHEMA.nullish(),
2643
- annotations: z15.array(
2644
- z15.discriminatedUnion("type", [
2645
- z15.object({
2646
- type: z15.literal("url_citation"),
2647
- start_index: z15.number(),
2648
- end_index: z15.number(),
2649
- url: z15.string(),
2650
- title: z15.string()
2722
+ annotations: z16.array(
2723
+ z16.discriminatedUnion("type", [
2724
+ z16.object({
2725
+ type: z16.literal("url_citation"),
2726
+ start_index: z16.number(),
2727
+ end_index: z16.number(),
2728
+ url: z16.string(),
2729
+ title: z16.string()
2651
2730
  }),
2652
- z15.object({
2653
- type: z15.literal("file_citation"),
2654
- file_id: z15.string(),
2655
- filename: z15.string().nullish(),
2656
- index: z15.number().nullish(),
2657
- start_index: z15.number().nullish(),
2658
- end_index: z15.number().nullish(),
2659
- quote: z15.string().nullish()
2731
+ z16.object({
2732
+ type: z16.literal("file_citation"),
2733
+ file_id: z16.string(),
2734
+ filename: z16.string().nullish(),
2735
+ index: z16.number().nullish(),
2736
+ start_index: z16.number().nullish(),
2737
+ end_index: z16.number().nullish(),
2738
+ quote: z16.string().nullish()
2660
2739
  }),
2661
- z15.object({
2662
- type: z15.literal("container_file_citation")
2740
+ z16.object({
2741
+ type: z16.literal("container_file_citation")
2663
2742
  })
2664
2743
  ])
2665
2744
  )
@@ -2670,33 +2749,34 @@ var OpenAIResponsesLanguageModel = class {
2670
2749
  fileSearchCallItem,
2671
2750
  codeInterpreterCallItem,
2672
2751
  imageGenerationCallItem,
2673
- z15.object({
2674
- type: z15.literal("function_call"),
2675
- call_id: z15.string(),
2676
- name: z15.string(),
2677
- arguments: z15.string(),
2678
- id: z15.string()
2752
+ localShellCallItem,
2753
+ z16.object({
2754
+ type: z16.literal("function_call"),
2755
+ call_id: z16.string(),
2756
+ name: z16.string(),
2757
+ arguments: z16.string(),
2758
+ id: z16.string()
2679
2759
  }),
2680
- z15.object({
2681
- type: z15.literal("computer_call"),
2682
- id: z15.string(),
2683
- status: z15.string().optional()
2760
+ z16.object({
2761
+ type: z16.literal("computer_call"),
2762
+ id: z16.string(),
2763
+ status: z16.string().optional()
2684
2764
  }),
2685
- z15.object({
2686
- type: z15.literal("reasoning"),
2687
- id: z15.string(),
2688
- encrypted_content: z15.string().nullish(),
2689
- summary: z15.array(
2690
- z15.object({
2691
- type: z15.literal("summary_text"),
2692
- text: z15.string()
2765
+ z16.object({
2766
+ type: z16.literal("reasoning"),
2767
+ id: z16.string(),
2768
+ encrypted_content: z16.string().nullish(),
2769
+ summary: z16.array(
2770
+ z16.object({
2771
+ type: z16.literal("summary_text"),
2772
+ text: z16.string()
2693
2773
  })
2694
2774
  )
2695
2775
  })
2696
2776
  ])
2697
2777
  ),
2698
- service_tier: z15.string().nullish(),
2699
- incomplete_details: z15.object({ reason: z15.string() }).nullish(),
2778
+ service_tier: z16.string().nullish(),
2779
+ incomplete_details: z16.object({ reason: z16.string() }).nullish(),
2700
2780
  usage: usageSchema2
2701
2781
  })
2702
2782
  ),
@@ -2756,6 +2836,20 @@ var OpenAIResponsesLanguageModel = class {
2756
2836
  });
2757
2837
  break;
2758
2838
  }
2839
+ case "local_shell_call": {
2840
+ content.push({
2841
+ type: "tool-call",
2842
+ toolCallId: part.call_id,
2843
+ toolName: "local_shell",
2844
+ input: JSON.stringify({ action: part.action }),
2845
+ providerMetadata: {
2846
+ openai: {
2847
+ itemId: part.id
2848
+ }
2849
+ }
2850
+ });
2851
+ break;
2852
+ }
2759
2853
  case "message": {
2760
2854
  for (const contentPart of part.content) {
2761
2855
  if (((_c = (_b = options.providerOptions) == null ? void 0 : _b.openai) == null ? void 0 : _c.logprobs) && contentPart.logprobs) {
@@ -3174,6 +3268,26 @@ var OpenAIResponsesLanguageModel = class {
3174
3268
  },
3175
3269
  providerExecuted: true
3176
3270
  });
3271
+ } else if (value.item.type === "local_shell_call") {
3272
+ ongoingToolCalls[value.output_index] = void 0;
3273
+ controller.enqueue({
3274
+ type: "tool-call",
3275
+ toolCallId: value.item.call_id,
3276
+ toolName: "local_shell",
3277
+ input: JSON.stringify({
3278
+ action: {
3279
+ type: "exec",
3280
+ command: value.item.action.command,
3281
+ timeoutMs: value.item.action.timeout_ms,
3282
+ user: value.item.action.user,
3283
+ workingDirectory: value.item.action.working_directory,
3284
+ env: value.item.action.env
3285
+ }
3286
+ }),
3287
+ providerMetadata: {
3288
+ openai: { itemId: value.item.id }
3289
+ }
3290
+ });
3177
3291
  } else if (value.item.type === "message") {
3178
3292
  controller.enqueue({
3179
3293
  type: "text-end",
@@ -3344,180 +3458,181 @@ var OpenAIResponsesLanguageModel = class {
3344
3458
  };
3345
3459
  }
3346
3460
  };
3347
- var usageSchema2 = z15.object({
3348
- input_tokens: z15.number(),
3349
- input_tokens_details: z15.object({ cached_tokens: z15.number().nullish() }).nullish(),
3350
- output_tokens: z15.number(),
3351
- output_tokens_details: z15.object({ reasoning_tokens: z15.number().nullish() }).nullish()
3461
+ var usageSchema2 = z16.object({
3462
+ input_tokens: z16.number(),
3463
+ input_tokens_details: z16.object({ cached_tokens: z16.number().nullish() }).nullish(),
3464
+ output_tokens: z16.number(),
3465
+ output_tokens_details: z16.object({ reasoning_tokens: z16.number().nullish() }).nullish()
3352
3466
  });
3353
- var textDeltaChunkSchema = z15.object({
3354
- type: z15.literal("response.output_text.delta"),
3355
- item_id: z15.string(),
3356
- delta: z15.string(),
3467
+ var textDeltaChunkSchema = z16.object({
3468
+ type: z16.literal("response.output_text.delta"),
3469
+ item_id: z16.string(),
3470
+ delta: z16.string(),
3357
3471
  logprobs: LOGPROBS_SCHEMA.nullish()
3358
3472
  });
3359
- var errorChunkSchema = z15.object({
3360
- type: z15.literal("error"),
3361
- code: z15.string(),
3362
- message: z15.string(),
3363
- param: z15.string().nullish(),
3364
- sequence_number: z15.number()
3473
+ var errorChunkSchema = z16.object({
3474
+ type: z16.literal("error"),
3475
+ code: z16.string(),
3476
+ message: z16.string(),
3477
+ param: z16.string().nullish(),
3478
+ sequence_number: z16.number()
3365
3479
  });
3366
- var responseFinishedChunkSchema = z15.object({
3367
- type: z15.enum(["response.completed", "response.incomplete"]),
3368
- response: z15.object({
3369
- incomplete_details: z15.object({ reason: z15.string() }).nullish(),
3480
+ var responseFinishedChunkSchema = z16.object({
3481
+ type: z16.enum(["response.completed", "response.incomplete"]),
3482
+ response: z16.object({
3483
+ incomplete_details: z16.object({ reason: z16.string() }).nullish(),
3370
3484
  usage: usageSchema2,
3371
- service_tier: z15.string().nullish()
3485
+ service_tier: z16.string().nullish()
3372
3486
  })
3373
3487
  });
3374
- var responseCreatedChunkSchema = z15.object({
3375
- type: z15.literal("response.created"),
3376
- response: z15.object({
3377
- id: z15.string(),
3378
- created_at: z15.number(),
3379
- model: z15.string(),
3380
- service_tier: z15.string().nullish()
3488
+ var responseCreatedChunkSchema = z16.object({
3489
+ type: z16.literal("response.created"),
3490
+ response: z16.object({
3491
+ id: z16.string(),
3492
+ created_at: z16.number(),
3493
+ model: z16.string(),
3494
+ service_tier: z16.string().nullish()
3381
3495
  })
3382
3496
  });
3383
- var responseOutputItemAddedSchema = z15.object({
3384
- type: z15.literal("response.output_item.added"),
3385
- output_index: z15.number(),
3386
- item: z15.discriminatedUnion("type", [
3387
- z15.object({
3388
- type: z15.literal("message"),
3389
- id: z15.string()
3497
+ var responseOutputItemAddedSchema = z16.object({
3498
+ type: z16.literal("response.output_item.added"),
3499
+ output_index: z16.number(),
3500
+ item: z16.discriminatedUnion("type", [
3501
+ z16.object({
3502
+ type: z16.literal("message"),
3503
+ id: z16.string()
3390
3504
  }),
3391
- z15.object({
3392
- type: z15.literal("reasoning"),
3393
- id: z15.string(),
3394
- encrypted_content: z15.string().nullish()
3505
+ z16.object({
3506
+ type: z16.literal("reasoning"),
3507
+ id: z16.string(),
3508
+ encrypted_content: z16.string().nullish()
3395
3509
  }),
3396
- z15.object({
3397
- type: z15.literal("function_call"),
3398
- id: z15.string(),
3399
- call_id: z15.string(),
3400
- name: z15.string(),
3401
- arguments: z15.string()
3510
+ z16.object({
3511
+ type: z16.literal("function_call"),
3512
+ id: z16.string(),
3513
+ call_id: z16.string(),
3514
+ name: z16.string(),
3515
+ arguments: z16.string()
3402
3516
  }),
3403
- z15.object({
3404
- type: z15.literal("web_search_call"),
3405
- id: z15.string(),
3406
- status: z15.string(),
3407
- action: z15.object({
3408
- type: z15.literal("search"),
3409
- query: z15.string().optional()
3517
+ z16.object({
3518
+ type: z16.literal("web_search_call"),
3519
+ id: z16.string(),
3520
+ status: z16.string(),
3521
+ action: z16.object({
3522
+ type: z16.literal("search"),
3523
+ query: z16.string().optional()
3410
3524
  }).nullish()
3411
3525
  }),
3412
- z15.object({
3413
- type: z15.literal("computer_call"),
3414
- id: z15.string(),
3415
- status: z15.string()
3526
+ z16.object({
3527
+ type: z16.literal("computer_call"),
3528
+ id: z16.string(),
3529
+ status: z16.string()
3416
3530
  }),
3417
- z15.object({
3418
- type: z15.literal("file_search_call"),
3419
- id: z15.string()
3531
+ z16.object({
3532
+ type: z16.literal("file_search_call"),
3533
+ id: z16.string()
3420
3534
  }),
3421
- z15.object({
3422
- type: z15.literal("image_generation_call"),
3423
- id: z15.string()
3535
+ z16.object({
3536
+ type: z16.literal("image_generation_call"),
3537
+ id: z16.string()
3424
3538
  }),
3425
- z15.object({
3426
- type: z15.literal("code_interpreter_call"),
3427
- id: z15.string(),
3428
- container_id: z15.string(),
3429
- code: z15.string().nullable(),
3430
- outputs: z15.array(
3431
- z15.discriminatedUnion("type", [
3432
- z15.object({ type: z15.literal("logs"), logs: z15.string() }),
3433
- z15.object({ type: z15.literal("image"), url: z15.string() })
3539
+ z16.object({
3540
+ type: z16.literal("code_interpreter_call"),
3541
+ id: z16.string(),
3542
+ container_id: z16.string(),
3543
+ code: z16.string().nullable(),
3544
+ outputs: z16.array(
3545
+ z16.discriminatedUnion("type", [
3546
+ z16.object({ type: z16.literal("logs"), logs: z16.string() }),
3547
+ z16.object({ type: z16.literal("image"), url: z16.string() })
3434
3548
  ])
3435
3549
  ).nullable(),
3436
- status: z15.string()
3550
+ status: z16.string()
3437
3551
  })
3438
3552
  ])
3439
3553
  });
3440
- var responseOutputItemDoneSchema = z15.object({
3441
- type: z15.literal("response.output_item.done"),
3442
- output_index: z15.number(),
3443
- item: z15.discriminatedUnion("type", [
3444
- z15.object({
3445
- type: z15.literal("message"),
3446
- id: z15.string()
3554
+ var responseOutputItemDoneSchema = z16.object({
3555
+ type: z16.literal("response.output_item.done"),
3556
+ output_index: z16.number(),
3557
+ item: z16.discriminatedUnion("type", [
3558
+ z16.object({
3559
+ type: z16.literal("message"),
3560
+ id: z16.string()
3447
3561
  }),
3448
- z15.object({
3449
- type: z15.literal("reasoning"),
3450
- id: z15.string(),
3451
- encrypted_content: z15.string().nullish()
3562
+ z16.object({
3563
+ type: z16.literal("reasoning"),
3564
+ id: z16.string(),
3565
+ encrypted_content: z16.string().nullish()
3452
3566
  }),
3453
- z15.object({
3454
- type: z15.literal("function_call"),
3455
- id: z15.string(),
3456
- call_id: z15.string(),
3457
- name: z15.string(),
3458
- arguments: z15.string(),
3459
- status: z15.literal("completed")
3567
+ z16.object({
3568
+ type: z16.literal("function_call"),
3569
+ id: z16.string(),
3570
+ call_id: z16.string(),
3571
+ name: z16.string(),
3572
+ arguments: z16.string(),
3573
+ status: z16.literal("completed")
3460
3574
  }),
3461
3575
  codeInterpreterCallItem,
3462
3576
  imageGenerationCallItem,
3463
3577
  webSearchCallItem,
3464
3578
  fileSearchCallItem,
3465
- z15.object({
3466
- type: z15.literal("computer_call"),
3467
- id: z15.string(),
3468
- status: z15.literal("completed")
3579
+ localShellCallItem,
3580
+ z16.object({
3581
+ type: z16.literal("computer_call"),
3582
+ id: z16.string(),
3583
+ status: z16.literal("completed")
3469
3584
  })
3470
3585
  ])
3471
3586
  });
3472
- var responseFunctionCallArgumentsDeltaSchema = z15.object({
3473
- type: z15.literal("response.function_call_arguments.delta"),
3474
- item_id: z15.string(),
3475
- output_index: z15.number(),
3476
- delta: z15.string()
3587
+ var responseFunctionCallArgumentsDeltaSchema = z16.object({
3588
+ type: z16.literal("response.function_call_arguments.delta"),
3589
+ item_id: z16.string(),
3590
+ output_index: z16.number(),
3591
+ delta: z16.string()
3477
3592
  });
3478
- var responseCodeInterpreterCallCodeDeltaSchema = z15.object({
3479
- type: z15.literal("response.code_interpreter_call_code.delta"),
3480
- item_id: z15.string(),
3481
- output_index: z15.number(),
3482
- delta: z15.string()
3593
+ var responseCodeInterpreterCallCodeDeltaSchema = z16.object({
3594
+ type: z16.literal("response.code_interpreter_call_code.delta"),
3595
+ item_id: z16.string(),
3596
+ output_index: z16.number(),
3597
+ delta: z16.string()
3483
3598
  });
3484
- var responseCodeInterpreterCallCodeDoneSchema = z15.object({
3485
- type: z15.literal("response.code_interpreter_call_code.done"),
3486
- item_id: z15.string(),
3487
- output_index: z15.number(),
3488
- code: z15.string()
3599
+ var responseCodeInterpreterCallCodeDoneSchema = z16.object({
3600
+ type: z16.literal("response.code_interpreter_call_code.done"),
3601
+ item_id: z16.string(),
3602
+ output_index: z16.number(),
3603
+ code: z16.string()
3489
3604
  });
3490
- var responseAnnotationAddedSchema = z15.object({
3491
- type: z15.literal("response.output_text.annotation.added"),
3492
- annotation: z15.discriminatedUnion("type", [
3493
- z15.object({
3494
- type: z15.literal("url_citation"),
3495
- url: z15.string(),
3496
- title: z15.string()
3605
+ var responseAnnotationAddedSchema = z16.object({
3606
+ type: z16.literal("response.output_text.annotation.added"),
3607
+ annotation: z16.discriminatedUnion("type", [
3608
+ z16.object({
3609
+ type: z16.literal("url_citation"),
3610
+ url: z16.string(),
3611
+ title: z16.string()
3497
3612
  }),
3498
- z15.object({
3499
- type: z15.literal("file_citation"),
3500
- file_id: z15.string(),
3501
- filename: z15.string().nullish(),
3502
- index: z15.number().nullish(),
3503
- start_index: z15.number().nullish(),
3504
- end_index: z15.number().nullish(),
3505
- quote: z15.string().nullish()
3613
+ z16.object({
3614
+ type: z16.literal("file_citation"),
3615
+ file_id: z16.string(),
3616
+ filename: z16.string().nullish(),
3617
+ index: z16.number().nullish(),
3618
+ start_index: z16.number().nullish(),
3619
+ end_index: z16.number().nullish(),
3620
+ quote: z16.string().nullish()
3506
3621
  })
3507
3622
  ])
3508
3623
  });
3509
- var responseReasoningSummaryPartAddedSchema = z15.object({
3510
- type: z15.literal("response.reasoning_summary_part.added"),
3511
- item_id: z15.string(),
3512
- summary_index: z15.number()
3624
+ var responseReasoningSummaryPartAddedSchema = z16.object({
3625
+ type: z16.literal("response.reasoning_summary_part.added"),
3626
+ item_id: z16.string(),
3627
+ summary_index: z16.number()
3513
3628
  });
3514
- var responseReasoningSummaryTextDeltaSchema = z15.object({
3515
- type: z15.literal("response.reasoning_summary_text.delta"),
3516
- item_id: z15.string(),
3517
- summary_index: z15.number(),
3518
- delta: z15.string()
3629
+ var responseReasoningSummaryTextDeltaSchema = z16.object({
3630
+ type: z16.literal("response.reasoning_summary_text.delta"),
3631
+ item_id: z16.string(),
3632
+ summary_index: z16.number(),
3633
+ delta: z16.string()
3519
3634
  });
3520
- var openaiResponsesChunkSchema = z15.union([
3635
+ var openaiResponsesChunkSchema = z16.union([
3521
3636
  textDeltaChunkSchema,
3522
3637
  responseFinishedChunkSchema,
3523
3638
  responseCreatedChunkSchema,
@@ -3530,7 +3645,7 @@ var openaiResponsesChunkSchema = z15.union([
3530
3645
  responseReasoningSummaryPartAddedSchema,
3531
3646
  responseReasoningSummaryTextDeltaSchema,
3532
3647
  errorChunkSchema,
3533
- z15.object({ type: z15.string() }).loose()
3648
+ z16.object({ type: z16.string() }).loose()
3534
3649
  // fallback for unknown chunks
3535
3650
  ]);
3536
3651
  function isTextDeltaChunk(chunk) {
@@ -3609,15 +3724,15 @@ function getResponsesModelConfig(modelId) {
3609
3724
  isReasoningModel: false
3610
3725
  };
3611
3726
  }
3612
- var openaiResponsesProviderOptionsSchema = z15.object({
3613
- include: z15.array(
3614
- z15.enum([
3727
+ var openaiResponsesProviderOptionsSchema = z16.object({
3728
+ include: z16.array(
3729
+ z16.enum([
3615
3730
  "reasoning.encrypted_content",
3616
3731
  "file_search_call.results",
3617
3732
  "message.output_text.logprobs"
3618
3733
  ])
3619
3734
  ).nullish(),
3620
- instructions: z15.string().nullish(),
3735
+ instructions: z16.string().nullish(),
3621
3736
  /**
3622
3737
  * Return the log probabilities of the tokens.
3623
3738
  *
@@ -3630,25 +3745,25 @@ var openaiResponsesProviderOptionsSchema = z15.object({
3630
3745
  * @see https://platform.openai.com/docs/api-reference/responses/create
3631
3746
  * @see https://cookbook.openai.com/examples/using_logprobs
3632
3747
  */
3633
- logprobs: z15.union([z15.boolean(), z15.number().min(1).max(TOP_LOGPROBS_MAX)]).optional(),
3748
+ logprobs: z16.union([z16.boolean(), z16.number().min(1).max(TOP_LOGPROBS_MAX)]).optional(),
3634
3749
  /**
3635
3750
  * The maximum number of total calls to built-in tools that can be processed in a response.
3636
3751
  * This maximum number applies across all built-in tool calls, not per individual tool.
3637
3752
  * Any further attempts to call a tool by the model will be ignored.
3638
3753
  */
3639
- maxToolCalls: z15.number().nullish(),
3640
- metadata: z15.any().nullish(),
3641
- parallelToolCalls: z15.boolean().nullish(),
3642
- previousResponseId: z15.string().nullish(),
3643
- promptCacheKey: z15.string().nullish(),
3644
- reasoningEffort: z15.string().nullish(),
3645
- reasoningSummary: z15.string().nullish(),
3646
- safetyIdentifier: z15.string().nullish(),
3647
- serviceTier: z15.enum(["auto", "flex", "priority"]).nullish(),
3648
- store: z15.boolean().nullish(),
3649
- strictJsonSchema: z15.boolean().nullish(),
3650
- textVerbosity: z15.enum(["low", "medium", "high"]).nullish(),
3651
- user: z15.string().nullish()
3754
+ maxToolCalls: z16.number().nullish(),
3755
+ metadata: z16.any().nullish(),
3756
+ parallelToolCalls: z16.boolean().nullish(),
3757
+ previousResponseId: z16.string().nullish(),
3758
+ promptCacheKey: z16.string().nullish(),
3759
+ reasoningEffort: z16.string().nullish(),
3760
+ reasoningSummary: z16.string().nullish(),
3761
+ safetyIdentifier: z16.string().nullish(),
3762
+ serviceTier: z16.enum(["auto", "flex", "priority"]).nullish(),
3763
+ store: z16.boolean().nullish(),
3764
+ strictJsonSchema: z16.boolean().nullish(),
3765
+ textVerbosity: z16.enum(["low", "medium", "high"]).nullish(),
3766
+ user: z16.string().nullish()
3652
3767
  });
3653
3768
 
3654
3769
  // src/speech/openai-speech-model.ts
@@ -3658,10 +3773,10 @@ import {
3658
3773
  parseProviderOptions as parseProviderOptions6,
3659
3774
  postJsonToApi as postJsonToApi6
3660
3775
  } from "@ai-sdk/provider-utils";
3661
- import { z as z16 } from "zod/v4";
3662
- var OpenAIProviderOptionsSchema = z16.object({
3663
- instructions: z16.string().nullish(),
3664
- speed: z16.number().min(0.25).max(4).default(1).nullish()
3776
+ import { z as z17 } from "zod/v4";
3777
+ var OpenAIProviderOptionsSchema = z17.object({
3778
+ instructions: z17.string().nullish(),
3779
+ speed: z17.number().min(0.25).max(4).default(1).nullish()
3665
3780
  });
3666
3781
  var OpenAISpeechModel = class {
3667
3782
  constructor(modelId, config) {
@@ -3772,33 +3887,33 @@ import {
3772
3887
  parseProviderOptions as parseProviderOptions7,
3773
3888
  postFormDataToApi
3774
3889
  } from "@ai-sdk/provider-utils";
3775
- import { z as z18 } from "zod/v4";
3890
+ import { z as z19 } from "zod/v4";
3776
3891
 
3777
3892
  // src/transcription/openai-transcription-options.ts
3778
- import { z as z17 } from "zod/v4";
3779
- var openAITranscriptionProviderOptions = z17.object({
3893
+ import { z as z18 } from "zod/v4";
3894
+ var openAITranscriptionProviderOptions = z18.object({
3780
3895
  /**
3781
3896
  * Additional information to include in the transcription response.
3782
3897
  */
3783
- include: z17.array(z17.string()).optional(),
3898
+ include: z18.array(z18.string()).optional(),
3784
3899
  /**
3785
3900
  * The language of the input audio in ISO-639-1 format.
3786
3901
  */
3787
- language: z17.string().optional(),
3902
+ language: z18.string().optional(),
3788
3903
  /**
3789
3904
  * An optional text to guide the model's style or continue a previous audio segment.
3790
3905
  */
3791
- prompt: z17.string().optional(),
3906
+ prompt: z18.string().optional(),
3792
3907
  /**
3793
3908
  * The sampling temperature, between 0 and 1.
3794
3909
  * @default 0
3795
3910
  */
3796
- temperature: z17.number().min(0).max(1).default(0).optional(),
3911
+ temperature: z18.number().min(0).max(1).default(0).optional(),
3797
3912
  /**
3798
3913
  * The timestamp granularities to populate for this transcription.
3799
3914
  * @default ['segment']
3800
3915
  */
3801
- timestampGranularities: z17.array(z17.enum(["word", "segment"])).default(["segment"]).optional()
3916
+ timestampGranularities: z18.array(z18.enum(["word", "segment"])).default(["segment"]).optional()
3802
3917
  });
3803
3918
 
3804
3919
  // src/transcription/openai-transcription-model.ts
@@ -3967,40 +4082,45 @@ var OpenAITranscriptionModel = class {
3967
4082
  };
3968
4083
  }
3969
4084
  };
3970
- var openaiTranscriptionResponseSchema = z18.object({
3971
- text: z18.string(),
3972
- language: z18.string().nullish(),
3973
- duration: z18.number().nullish(),
3974
- words: z18.array(
3975
- z18.object({
3976
- word: z18.string(),
3977
- start: z18.number(),
3978
- end: z18.number()
4085
+ var openaiTranscriptionResponseSchema = z19.object({
4086
+ text: z19.string(),
4087
+ language: z19.string().nullish(),
4088
+ duration: z19.number().nullish(),
4089
+ words: z19.array(
4090
+ z19.object({
4091
+ word: z19.string(),
4092
+ start: z19.number(),
4093
+ end: z19.number()
3979
4094
  })
3980
4095
  ).nullish(),
3981
- segments: z18.array(
3982
- z18.object({
3983
- id: z18.number(),
3984
- seek: z18.number(),
3985
- start: z18.number(),
3986
- end: z18.number(),
3987
- text: z18.string(),
3988
- tokens: z18.array(z18.number()),
3989
- temperature: z18.number(),
3990
- avg_logprob: z18.number(),
3991
- compression_ratio: z18.number(),
3992
- no_speech_prob: z18.number()
4096
+ segments: z19.array(
4097
+ z19.object({
4098
+ id: z19.number(),
4099
+ seek: z19.number(),
4100
+ start: z19.number(),
4101
+ end: z19.number(),
4102
+ text: z19.string(),
4103
+ tokens: z19.array(z19.number()),
4104
+ temperature: z19.number(),
4105
+ avg_logprob: z19.number(),
4106
+ compression_ratio: z19.number(),
4107
+ no_speech_prob: z19.number()
3993
4108
  })
3994
4109
  ).nullish()
3995
4110
  });
3996
4111
 
3997
4112
  // src/version.ts
3998
- var VERSION = true ? "2.0.39" : "0.0.0-test";
4113
+ var VERSION = true ? "2.0.41" : "0.0.0-test";
3999
4114
 
4000
4115
  // src/openai-provider.ts
4001
4116
  function createOpenAI(options = {}) {
4002
4117
  var _a, _b;
4003
- const baseURL = (_a = withoutTrailingSlash(options.baseURL)) != null ? _a : "https://api.openai.com/v1";
4118
+ const baseURL = (_a = withoutTrailingSlash(
4119
+ loadOptionalSetting({
4120
+ settingValue: options.baseURL,
4121
+ environmentVariableName: "OPENAI_BASE_URL"
4122
+ })
4123
+ )) != null ? _a : "https://api.openai.com/v1";
4004
4124
  const providerName = (_b = options.name) != null ? _b : "openai";
4005
4125
  const getHeaders = () => withUserAgentSuffix(
4006
4126
  {