@tanstack/openai-base 0.7.0 → 0.8.0

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.
@@ -1,4 +1,4 @@
1
- import { ComputerTool as ComputerUseToolConfig } from 'openai/resources/responses/responses';
1
+ import { ComputerUsePreviewTool as ComputerUseToolConfig } from 'openai/resources/responses/responses';
2
2
  import { Tool } from '@tanstack/ai';
3
3
  export type { ComputerUseToolConfig };
4
4
  /** @deprecated Renamed to `ComputerUseToolConfig`. Will be removed in a future release. */
@@ -1 +1 @@
1
- {"version":3,"file":"computer-use-tool.js","sources":["../../../src/tools/computer-use-tool.ts"],"sourcesContent":["import type { ComputerTool as ComputerUseToolConfig } from 'openai/resources/responses/responses'\nimport type { Tool } from '@tanstack/ai'\n\nexport type { ComputerUseToolConfig }\n\n/** @deprecated Renamed to `ComputerUseToolConfig`. Will be removed in a future release. */\nexport type ComputerUseTool = ComputerUseToolConfig\n\n/**\n * Converts a standard Tool to OpenAI ComputerUseTool format\n */\nexport function convertComputerUseToolToAdapterFormat(\n tool: Tool,\n): ComputerUseToolConfig {\n const metadata = tool.metadata as ComputerUseToolConfig\n return {\n type: 'computer_use_preview',\n display_height: metadata.display_height,\n display_width: metadata.display_width,\n environment: metadata.environment,\n }\n}\n\n/**\n * Creates a standard Tool from ComputerUseTool parameters.\n *\n * Base (non-branded) factory. Providers that need branded return types should\n * re-wrap this in their own package.\n */\nexport function computerUseTool(toolData: ComputerUseToolConfig): Tool {\n return {\n name: 'computer_use_preview',\n description: 'Control a virtual computer',\n metadata: {\n ...toolData,\n },\n }\n}\n"],"names":[],"mappings":"AAWO,SAAS,sCACd,MACuB;AACvB,QAAM,WAAW,KAAK;AACtB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,gBAAgB,SAAS;AAAA,IACzB,eAAe,SAAS;AAAA,IACxB,aAAa,SAAS;AAAA,EAAA;AAE1B;AAQO,SAAS,gBAAgB,UAAuC;AACrE,SAAO;AAAA,IACL,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,MACR,GAAG;AAAA,IAAA;AAAA,EACL;AAEJ;"}
1
+ {"version":3,"file":"computer-use-tool.js","sources":["../../../src/tools/computer-use-tool.ts"],"sourcesContent":["import type { ComputerUsePreviewTool as ComputerUseToolConfig } from 'openai/resources/responses/responses'\nimport type { Tool } from '@tanstack/ai'\n\nexport type { ComputerUseToolConfig }\n\n/** @deprecated Renamed to `ComputerUseToolConfig`. Will be removed in a future release. */\nexport type ComputerUseTool = ComputerUseToolConfig\n\n/**\n * Converts a standard Tool to OpenAI ComputerUseTool format\n */\nexport function convertComputerUseToolToAdapterFormat(\n tool: Tool,\n): ComputerUseToolConfig {\n const metadata = tool.metadata as ComputerUseToolConfig\n return {\n type: 'computer_use_preview',\n display_height: metadata.display_height,\n display_width: metadata.display_width,\n environment: metadata.environment,\n }\n}\n\n/**\n * Creates a standard Tool from ComputerUseTool parameters.\n *\n * Base (non-branded) factory. Providers that need branded return types should\n * re-wrap this in their own package.\n */\nexport function computerUseTool(toolData: ComputerUseToolConfig): Tool {\n return {\n name: 'computer_use_preview',\n description: 'Control a virtual computer',\n metadata: {\n ...toolData,\n },\n }\n}\n"],"names":[],"mappings":"AAWO,SAAS,sCACd,MACuB;AACvB,QAAM,WAAW,KAAK;AACtB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,gBAAgB,SAAS;AAAA,IACzB,eAAe,SAAS;AAAA,IACxB,aAAa,SAAS;AAAA,EAAA;AAE1B;AAQO,SAAS,gBAAgB,UAAuC;AACrE,SAAO;AAAA,IACL,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,MACR,GAAG;AAAA,IAAA;AAAA,EACL;AAEJ;"}
@@ -4,13 +4,23 @@ export type { ShellToolConfig };
4
4
  /** @deprecated Renamed to `ShellToolConfig`. Will be removed in a future release. */
5
5
  export type ShellTool = ShellToolConfig;
6
6
  /**
7
- * Converts a standard Tool to OpenAI ShellTool format
7
+ * Config accepted by {@link shellTool}. `environment` mirrors the OpenAI
8
+ * Responses API shell tool environment (e.g. `container_auto` + `skills`).
9
+ * Typed via indexed access so it tracks the installed SDK without naming the
10
+ * union members directly.
8
11
  */
9
- export declare function convertShellToolToAdapterFormat(_tool: Tool): ShellToolConfig;
12
+ export interface ShellToolFactoryConfig {
13
+ environment?: NonNullable<ShellToolConfig['environment']>;
14
+ }
15
+ /**
16
+ * Converts a standard Tool to OpenAI ShellTool format, preserving any
17
+ * `environment` (container config + skills) stored in metadata.
18
+ */
19
+ export declare function convertShellToolToAdapterFormat(tool: Tool): ShellToolConfig;
10
20
  /**
11
21
  * Creates a standard Tool from ShellTool parameters.
12
22
  *
13
23
  * Base (non-branded) factory. Providers that need branded return types should
14
24
  * re-wrap this in their own package.
15
25
  */
16
- export declare function shellTool(): Tool;
26
+ export declare function shellTool(config?: ShellToolFactoryConfig): Tool;
@@ -1,13 +1,21 @@
1
- function convertShellToolToAdapterFormat(_tool) {
1
+ function convertShellToolToAdapterFormat(tool) {
2
+ const metadata = tool.metadata ?? {};
2
3
  return {
3
- type: "shell"
4
+ type: "shell",
5
+ ...metadata.environment !== void 0 && {
6
+ environment: metadata.environment
7
+ }
4
8
  };
5
9
  }
6
- function shellTool() {
10
+ function shellTool(config = {}) {
7
11
  return {
8
12
  name: "shell",
9
13
  description: "Execute shell commands",
10
- metadata: {}
14
+ metadata: {
15
+ ...config.environment !== void 0 && {
16
+ environment: config.environment
17
+ }
18
+ }
11
19
  };
12
20
  }
13
21
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"shell-tool.js","sources":["../../../src/tools/shell-tool.ts"],"sourcesContent":["import type { FunctionShellTool as ShellToolConfig } from 'openai/resources/responses/responses'\nimport type { Tool } from '@tanstack/ai'\n\nexport type { ShellToolConfig }\n\n/** @deprecated Renamed to `ShellToolConfig`. Will be removed in a future release. */\nexport type ShellTool = ShellToolConfig\n\n/**\n * Converts a standard Tool to OpenAI ShellTool format\n */\nexport function convertShellToolToAdapterFormat(_tool: Tool): ShellToolConfig {\n return {\n type: 'shell',\n }\n}\n\n/**\n * Creates a standard Tool from ShellTool parameters.\n *\n * Base (non-branded) factory. Providers that need branded return types should\n * re-wrap this in their own package.\n */\nexport function shellTool(): Tool {\n return {\n name: 'shell',\n description: 'Execute shell commands',\n metadata: {},\n }\n}\n"],"names":[],"mappings":"AAWO,SAAS,gCAAgC,OAA8B;AAC5E,SAAO;AAAA,IACL,MAAM;AAAA,EAAA;AAEV;AAQO,SAAS,YAAkB;AAChC,SAAO;AAAA,IACL,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU,CAAA;AAAA,EAAC;AAEf;"}
1
+ {"version":3,"file":"shell-tool.js","sources":["../../../src/tools/shell-tool.ts"],"sourcesContent":["import type { FunctionShellTool as ShellToolConfig } from 'openai/resources/responses/responses'\nimport type { Tool } from '@tanstack/ai'\n\nexport type { ShellToolConfig }\n\n/** @deprecated Renamed to `ShellToolConfig`. Will be removed in a future release. */\nexport type ShellTool = ShellToolConfig\n\n/**\n * Config accepted by {@link shellTool}. `environment` mirrors the OpenAI\n * Responses API shell tool environment (e.g. `container_auto` + `skills`).\n * Typed via indexed access so it tracks the installed SDK without naming the\n * union members directly.\n */\nexport interface ShellToolFactoryConfig {\n environment?: NonNullable<ShellToolConfig['environment']>\n}\n\n/**\n * Converts a standard Tool to OpenAI ShellTool format, preserving any\n * `environment` (container config + skills) stored in metadata.\n */\nexport function convertShellToolToAdapterFormat(tool: Tool): ShellToolConfig {\n const metadata = (tool.metadata ?? {}) as ShellToolFactoryConfig\n return {\n type: 'shell',\n ...(metadata.environment !== undefined && {\n environment: metadata.environment,\n }),\n }\n}\n\n/**\n * Creates a standard Tool from ShellTool parameters.\n *\n * Base (non-branded) factory. Providers that need branded return types should\n * re-wrap this in their own package.\n */\nexport function shellTool(config: ShellToolFactoryConfig = {}): Tool {\n return {\n name: 'shell',\n description: 'Execute shell commands',\n metadata: {\n ...(config.environment !== undefined && {\n environment: config.environment,\n }),\n },\n }\n}\n"],"names":[],"mappings":"AAsBO,SAAS,gCAAgC,MAA6B;AAC3E,QAAM,WAAY,KAAK,YAAY,CAAA;AACnC,SAAO;AAAA,IACL,MAAM;AAAA,IACN,GAAI,SAAS,gBAAgB,UAAa;AAAA,MACxC,aAAa,SAAS;AAAA,IAAA;AAAA,EACxB;AAEJ;AAQO,SAAS,UAAU,SAAiC,IAAU;AACnE,SAAO;AAAA,IACL,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,MACR,GAAI,OAAO,gBAAgB,UAAa;AAAA,QACtC,aAAa,OAAO;AAAA,MAAA;AAAA,IACtB;AAAA,EACF;AAEJ;"}
@@ -43,7 +43,7 @@ function convertToolsToProviderFormat(tools) {
43
43
  case "mcp":
44
44
  return convertMCPToolToAdapterFormat(tool);
45
45
  case "shell":
46
- return convertShellToolToAdapterFormat();
46
+ return convertShellToolToAdapterFormat(tool);
47
47
  case "web_search_preview":
48
48
  return convertWebSearchPreviewToolToAdapterFormat(tool);
49
49
  case "web_search":
@@ -1 +1 @@
1
- {"version":3,"file":"tool-converter.js","sources":["../../../src/tools/tool-converter.ts"],"sourcesContent":["import { convertApplyPatchToolToAdapterFormat } from './apply-patch-tool'\nimport { convertCodeInterpreterToolToAdapterFormat } from './code-interpreter-tool'\nimport { convertComputerUseToolToAdapterFormat } from './computer-use-tool'\nimport { convertCustomToolToAdapterFormat } from './custom-tool'\nimport { convertFileSearchToolToAdapterFormat } from './file-search-tool'\nimport { convertFunctionToolToAdapterFormat } from './function-tool'\nimport { convertImageGenerationToolToAdapterFormat } from './image-generation-tool'\nimport { convertLocalShellToolToAdapterFormat } from './local-shell-tool'\nimport { convertMCPToolToAdapterFormat } from './mcp-tool'\nimport { convertShellToolToAdapterFormat } from './shell-tool'\nimport { convertWebSearchPreviewToolToAdapterFormat } from './web-search-preview-tool'\nimport { convertWebSearchToolToAdapterFormat } from './web-search-tool'\nimport type { OpenAITool } from './index'\nimport type { Tool } from '@tanstack/ai'\n\nconst SPECIAL_TOOL_NAMES = new Set([\n 'apply_patch',\n 'code_interpreter',\n 'computer_use_preview',\n 'file_search',\n 'image_generation',\n 'local_shell',\n 'mcp',\n 'shell',\n 'web_search_preview',\n 'web_search',\n 'custom',\n])\n\n/**\n * Converts an array of standard Tools to OpenAI-specific format\n */\nexport function convertToolsToProviderFormat(\n tools: Array<Tool>,\n): Array<OpenAITool> {\n return tools.map((tool) => {\n const toolName = tool.name\n\n if (SPECIAL_TOOL_NAMES.has(toolName)) {\n switch (toolName) {\n case 'apply_patch':\n return convertApplyPatchToolToAdapterFormat(tool)\n case 'code_interpreter':\n return convertCodeInterpreterToolToAdapterFormat(tool)\n case 'computer_use_preview':\n return convertComputerUseToolToAdapterFormat(tool)\n case 'file_search':\n return convertFileSearchToolToAdapterFormat(tool)\n case 'image_generation':\n return convertImageGenerationToolToAdapterFormat(tool)\n case 'local_shell':\n return convertLocalShellToolToAdapterFormat(tool)\n case 'mcp':\n return convertMCPToolToAdapterFormat(tool)\n case 'shell':\n return convertShellToolToAdapterFormat(tool)\n case 'web_search_preview':\n return convertWebSearchPreviewToolToAdapterFormat(tool)\n case 'web_search':\n return convertWebSearchToolToAdapterFormat(tool)\n case 'custom':\n return convertCustomToolToAdapterFormat(tool)\n }\n }\n\n return convertFunctionToolToAdapterFormat(tool)\n })\n}\n"],"names":[],"mappings":";;;;;;;;;;;;AAeA,MAAM,yCAAyB,IAAI;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAKM,SAAS,6BACd,OACmB;AACnB,SAAO,MAAM,IAAI,CAAC,SAAS;AACzB,UAAM,WAAW,KAAK;AAEtB,QAAI,mBAAmB,IAAI,QAAQ,GAAG;AACpC,cAAQ,UAAA;AAAA,QACN,KAAK;AACH,iBAAO,qCAAyC;AAAA,QAClD,KAAK;AACH,iBAAO,0CAA0C,IAAI;AAAA,QACvD,KAAK;AACH,iBAAO,sCAAsC,IAAI;AAAA,QACnD,KAAK;AACH,iBAAO,qCAAqC,IAAI;AAAA,QAClD,KAAK;AACH,iBAAO,0CAA0C,IAAI;AAAA,QACvD,KAAK;AACH,iBAAO,qCAAyC;AAAA,QAClD,KAAK;AACH,iBAAO,8BAA8B,IAAI;AAAA,QAC3C,KAAK;AACH,iBAAO,gCAAoC;AAAA,QAC7C,KAAK;AACH,iBAAO,2CAA2C,IAAI;AAAA,QACxD,KAAK;AACH,iBAAO,oCAAoC,IAAI;AAAA,QACjD,KAAK;AACH,iBAAO,iCAAiC,IAAI;AAAA,MAAA;AAAA,IAElD;AAEA,WAAO,mCAAmC,IAAI;AAAA,EAChD,CAAC;AACH;"}
1
+ {"version":3,"file":"tool-converter.js","sources":["../../../src/tools/tool-converter.ts"],"sourcesContent":["import { convertApplyPatchToolToAdapterFormat } from './apply-patch-tool'\nimport { convertCodeInterpreterToolToAdapterFormat } from './code-interpreter-tool'\nimport { convertComputerUseToolToAdapterFormat } from './computer-use-tool'\nimport { convertCustomToolToAdapterFormat } from './custom-tool'\nimport { convertFileSearchToolToAdapterFormat } from './file-search-tool'\nimport { convertFunctionToolToAdapterFormat } from './function-tool'\nimport { convertImageGenerationToolToAdapterFormat } from './image-generation-tool'\nimport { convertLocalShellToolToAdapterFormat } from './local-shell-tool'\nimport { convertMCPToolToAdapterFormat } from './mcp-tool'\nimport { convertShellToolToAdapterFormat } from './shell-tool'\nimport { convertWebSearchPreviewToolToAdapterFormat } from './web-search-preview-tool'\nimport { convertWebSearchToolToAdapterFormat } from './web-search-tool'\nimport type { OpenAITool } from './index'\nimport type { Tool } from '@tanstack/ai'\n\nconst SPECIAL_TOOL_NAMES = new Set([\n 'apply_patch',\n 'code_interpreter',\n 'computer_use_preview',\n 'file_search',\n 'image_generation',\n 'local_shell',\n 'mcp',\n 'shell',\n 'web_search_preview',\n 'web_search',\n 'custom',\n])\n\n/**\n * Converts an array of standard Tools to OpenAI-specific format\n */\nexport function convertToolsToProviderFormat(\n tools: Array<Tool>,\n): Array<OpenAITool> {\n return tools.map((tool) => {\n const toolName = tool.name\n\n if (SPECIAL_TOOL_NAMES.has(toolName)) {\n switch (toolName) {\n case 'apply_patch':\n return convertApplyPatchToolToAdapterFormat(tool)\n case 'code_interpreter':\n return convertCodeInterpreterToolToAdapterFormat(tool)\n case 'computer_use_preview':\n return convertComputerUseToolToAdapterFormat(tool)\n case 'file_search':\n return convertFileSearchToolToAdapterFormat(tool)\n case 'image_generation':\n return convertImageGenerationToolToAdapterFormat(tool)\n case 'local_shell':\n return convertLocalShellToolToAdapterFormat(tool)\n case 'mcp':\n return convertMCPToolToAdapterFormat(tool)\n case 'shell':\n return convertShellToolToAdapterFormat(tool)\n case 'web_search_preview':\n return convertWebSearchPreviewToolToAdapterFormat(tool)\n case 'web_search':\n return convertWebSearchToolToAdapterFormat(tool)\n case 'custom':\n return convertCustomToolToAdapterFormat(tool)\n }\n }\n\n return convertFunctionToolToAdapterFormat(tool)\n })\n}\n"],"names":[],"mappings":";;;;;;;;;;;;AAeA,MAAM,yCAAyB,IAAI;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAKM,SAAS,6BACd,OACmB;AACnB,SAAO,MAAM,IAAI,CAAC,SAAS;AACzB,UAAM,WAAW,KAAK;AAEtB,QAAI,mBAAmB,IAAI,QAAQ,GAAG;AACpC,cAAQ,UAAA;AAAA,QACN,KAAK;AACH,iBAAO,qCAAyC;AAAA,QAClD,KAAK;AACH,iBAAO,0CAA0C,IAAI;AAAA,QACvD,KAAK;AACH,iBAAO,sCAAsC,IAAI;AAAA,QACnD,KAAK;AACH,iBAAO,qCAAqC,IAAI;AAAA,QAClD,KAAK;AACH,iBAAO,0CAA0C,IAAI;AAAA,QACvD,KAAK;AACH,iBAAO,qCAAyC;AAAA,QAClD,KAAK;AACH,iBAAO,8BAA8B,IAAI;AAAA,QAC3C,KAAK;AACH,iBAAO,gCAAgC,IAAI;AAAA,QAC7C,KAAK;AACH,iBAAO,2CAA2C,IAAI;AAAA,QACxD,KAAK;AACH,iBAAO,oCAAoC,IAAI;AAAA,QACjD,KAAK;AACH,iBAAO,iCAAiC,IAAI;AAAA,MAAA;AAAA,IAElD;AAEA,WAAO,mCAAmC,IAAI;AAAA,EAChD,CAAC;AACH;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tanstack/openai-base",
3
- "version": "0.7.0",
3
+ "version": "0.8.0",
4
4
  "description": "Shared OpenAI SDK base adapters for TanStack AI providers using Chat Completions and Responses APIs.",
5
5
  "author": "",
6
6
  "license": "MIT",
@@ -35,7 +35,7 @@
35
35
  "structured-outputs"
36
36
  ],
37
37
  "dependencies": {
38
- "openai": "^6.9.1",
38
+ "openai": "^6.41.0",
39
39
  "@tanstack/ai-utils": "0.2.1"
40
40
  },
41
41
  "peerDependencies": {
@@ -1,4 +1,4 @@
1
- import type { ComputerTool as ComputerUseToolConfig } from 'openai/resources/responses/responses'
1
+ import type { ComputerUsePreviewTool as ComputerUseToolConfig } from 'openai/resources/responses/responses'
2
2
  import type { Tool } from '@tanstack/ai'
3
3
 
4
4
  export type { ComputerUseToolConfig }
@@ -7,11 +7,26 @@ export type { ShellToolConfig }
7
7
  export type ShellTool = ShellToolConfig
8
8
 
9
9
  /**
10
- * Converts a standard Tool to OpenAI ShellTool format
10
+ * Config accepted by {@link shellTool}. `environment` mirrors the OpenAI
11
+ * Responses API shell tool environment (e.g. `container_auto` + `skills`).
12
+ * Typed via indexed access so it tracks the installed SDK without naming the
13
+ * union members directly.
11
14
  */
12
- export function convertShellToolToAdapterFormat(_tool: Tool): ShellToolConfig {
15
+ export interface ShellToolFactoryConfig {
16
+ environment?: NonNullable<ShellToolConfig['environment']>
17
+ }
18
+
19
+ /**
20
+ * Converts a standard Tool to OpenAI ShellTool format, preserving any
21
+ * `environment` (container config + skills) stored in metadata.
22
+ */
23
+ export function convertShellToolToAdapterFormat(tool: Tool): ShellToolConfig {
24
+ const metadata = (tool.metadata ?? {}) as ShellToolFactoryConfig
13
25
  return {
14
26
  type: 'shell',
27
+ ...(metadata.environment !== undefined && {
28
+ environment: metadata.environment,
29
+ }),
15
30
  }
16
31
  }
17
32
 
@@ -21,10 +36,14 @@ export function convertShellToolToAdapterFormat(_tool: Tool): ShellToolConfig {
21
36
  * Base (non-branded) factory. Providers that need branded return types should
22
37
  * re-wrap this in their own package.
23
38
  */
24
- export function shellTool(): Tool {
39
+ export function shellTool(config: ShellToolFactoryConfig = {}): Tool {
25
40
  return {
26
41
  name: 'shell',
27
42
  description: 'Execute shell commands',
28
- metadata: {},
43
+ metadata: {
44
+ ...(config.environment !== undefined && {
45
+ environment: config.environment,
46
+ }),
47
+ },
29
48
  }
30
49
  }