@ai-sdk/openai 2.0.39 → 2.0.40

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