@supertools-ai/core 0.1.1 → 0.1.3

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/README.md CHANGED
@@ -1,10 +1,10 @@
1
1
  # Supertools
2
2
 
3
3
  <p align="center">
4
- <img src="assets/banner.svg" alt="Supertools - Let LLMs write code that calls your tools" width="100%">
4
+ <img src="https://raw.githubusercontent.com/bxxf/supertools/refs/heads/main/assets/banner.svg" alt="Supertools - Let LLMs write code that calls your tools" width="100%">
5
5
  </p>
6
6
 
7
- > **🚧 Work in Progress** — This project is under active development. The npm package will be published soon. Contributions are welcome, especially for adding support for other AI providers (OpenAI, Vercel AI SDK, etc.)!
7
+ > **🚧 Work in Progress** — This project is under active development. Contributions are welcome, especially for adding support for other AI providers (OpenAI, Vercel AI SDK, etc.)!
8
8
 
9
9
  <p align="center">
10
10
  <a href="#quick-start">Quick Start</a> •
@@ -50,55 +50,75 @@ User Request → LLM generates code → Sandbox executes → Result
50
50
  bun add @supertools-ai/core @anthropic-ai/sdk e2b
51
51
  ```
52
52
 
53
+ Create a `.env` file with your API keys:
54
+ ```bash
55
+ ANTHROPIC_API_KEY=your-key # Get at console.anthropic.com
56
+ E2B_API_KEY=your-key # Get at e2b.dev
57
+ ```
58
+
59
+ Create `index.ts` and run with `bun run index.ts`:
60
+
53
61
  ```typescript
54
62
  import { supertools, defineTool, z } from '@supertools-ai/core';
55
63
  import { Sandbox } from 'e2b';
56
64
  import Anthropic from '@anthropic-ai/sdk';
57
65
 
58
- // Define your tools with Zod schemas
59
- const queryDatabase = defineTool({
60
- name: 'queryDatabase',
61
- description: 'Execute a SQL query',
66
+ // Sample data
67
+ const orders = [
68
+ { id: 1, customer: 'Alice', total: 150, status: 'completed' },
69
+ { id: 2, customer: 'Bob', total: 75, status: 'pending' },
70
+ { id: 3, customer: 'Alice', total: 200, status: 'completed' },
71
+ { id: 4, customer: 'Charlie', total: 50, status: 'completed' },
72
+ ];
73
+
74
+ // Define tools with Zod schemas
75
+ const getOrders = defineTool({
76
+ name: 'getOrders',
77
+ description: 'Get orders, optionally filtered by status',
62
78
  parameters: z.object({
63
- sql: z.string().describe('The SQL query to execute'),
79
+ status: z.enum(['pending', 'completed']).optional(),
64
80
  }),
65
- returns: z.array(z.record(z.unknown())), // Array of row objects
66
- execute: async ({ sql }) => db.query(sql),
81
+ returns: z.array(z.object({
82
+ id: z.number(),
83
+ customer: z.string(),
84
+ total: z.number(),
85
+ status: z.string(),
86
+ })),
87
+ execute: async ({ status }) =>
88
+ status ? orders.filter(o => o.status === status) : orders,
67
89
  });
68
90
 
69
- const sendEmail = defineTool({
70
- name: 'sendEmail',
71
- description: 'Send an email',
72
- parameters: z.object({
73
- to: z.string(),
74
- subject: z.string(),
75
- body: z.string(),
76
- }),
77
- returns: z.object({ success: z.boolean(), messageId: z.string() }),
78
- execute: async ({ to, subject, body }) => mailer.send({ to, subject, body }),
79
- });
80
-
81
- // Create sandbox and wrap your SDK client
82
- const sandbox = await Sandbox.create('supertools-bun');
83
- const client = supertools(new Anthropic(), {
84
- tools: [queryDatabase, sendEmail],
85
- sandbox,
91
+ // Main
92
+ const sandbox = await Sandbox.create('supertools-bun').catch((e) => {
93
+ console.error('Failed to create sandbox:', e);
94
+ process.exit(1);
86
95
  });
87
96
 
88
- // Use exactly like the normal Anthropic SDK
89
- const response = await client.messages.create({
90
- model: 'claude-haiku-4-5-20251001',
91
- max_tokens: 1024,
92
- messages: [{
93
- role: 'user',
94
- content: 'Query sales for all 50 states, find the top 5, and email a report to the CEO'
95
- }],
96
- });
97
+ try {
98
+ const client = supertools(new Anthropic(), {
99
+ tools: [getOrders],
100
+ sandbox,
101
+ onEvent: (e) => {
102
+ if (e.type === 'tool_call') console.log(`→ ${e.tool}()`);
103
+ if (e.type === 'result') console.log('Result:', e.data);
104
+ },
105
+ });
97
106
 
98
- // Traditional: 2-3 LLM round-trips + tokens for all 50 results in context
99
- // Supertools: 1 LLM call, loop runs in sandbox, only final result returned
107
+ await client.messages.create({
108
+ model: 'claude-sonnet-4-5',
109
+ max_tokens: 1024,
110
+ messages: [{
111
+ role: 'user',
112
+ content: 'Get all completed orders and calculate the total revenue',
113
+ }],
114
+ });
115
+ } finally {
116
+ await sandbox.kill();
117
+ }
100
118
  ```
101
119
 
120
+ **What happens:** The LLM writes code that calls `getOrders()`, loops through results, and calculates the sum — all in one API call.
121
+
102
122
  ## How It Works
103
123
 
104
124
  When you ask: *"Query sales for all 50 states, find top 5, email a report"*
@@ -139,7 +159,7 @@ return { topStates: top5, reportSent: true };
139
159
  ## Why Supertools?
140
160
 
141
161
  <p align="center">
142
- <img src="assets/benchmark.svg" alt="Benchmark Results" width="100%">
162
+ <img src="https://raw.githubusercontent.com/bxxf/supertools/refs/heads/main/assets/benchmark.svg" alt="Benchmark Results" width="100%">
143
163
  </p>
144
164
 
145
165
  The benchmark compares three approaches on the same model (Claude Sonnet 4.5):
@@ -179,8 +199,6 @@ const client = supertools(new Anthropic(), {
179
199
  // - 'tool_result': Tool completed (includes result and durationMs)
180
200
  // - 'tool_error': Tool execution failed
181
201
  // - 'result': Final execution result
182
- // - 'stdout': Standard output from sandbox
183
- // - 'stderr': Standard error from sandbox
184
202
  // - 'complete': Execution finished (success or error)
185
203
  if (event.type === 'tool_call') console.log(`Calling ${event.tool}...`);
186
204
  if (event.type === 'tool_result') console.log(`${event.tool} done in ${event.durationMs}ms`);
@@ -190,7 +208,7 @@ const client = supertools(new Anthropic(), {
190
208
 
191
209
  // Use exactly like the original SDK
192
210
  const response = await client.messages.create({
193
- model: 'claude-haiku-4-5-20251001',
211
+ model: 'claude-haiku-4-5',
194
212
  max_tokens: 1024,
195
213
  messages: [{ role: 'user', content: 'Your request here' }],
196
214
  });
@@ -1 +1 @@
1
- {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AASH,OAAO,KAAK,EAAE,cAAc,EAAW,MAAM,QAAQ,CAAC;AAEtD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,kBAAkB,EAAE,UAAU,EAAkB,MAAM,SAAS,CAAC;AAE/G,MAAM,WAAW,qBAAsB,SAAQ,cAAc;IAC3D,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;CAC1B;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,oBAAoB,CAEnF;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IACnD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAmB;IACnD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA8B;IACvD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAa;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAkC;gBAE/C,OAAO,EAAE,qBAAqB;IAW1C,OAAO,CAAC,IAAI;IAIN,GAAG,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA6CrD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;YAW3C,oBAAoB;IA8ClC,QAAQ,IAAI,SAAS,cAAc,EAAE;IAIrC,oBAAoB,IAAI,MAAM;YAIhB,YAAY;YAWZ,YAAY;YAsBZ,OAAO;IAcrB,OAAO,CAAC,GAAG;IAIX,OAAO,CAAC,SAAS;CAMlB"}
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AASH,OAAO,KAAK,EAAE,cAAc,EAAW,MAAM,QAAQ,CAAC;AAEtD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,kBAAkB,EAAE,UAAU,EAAkB,MAAM,SAAS,CAAC;AAE/G,MAAM,WAAW,qBAAsB,SAAQ,cAAc;IAC3D,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;CAC1B;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,oBAAoB,CAEnF;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IACnD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAmB;IACnD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA8B;IACvD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAa;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAkC;gBAE/C,OAAO,EAAE,qBAAqB;IAW1C,OAAO,CAAC,IAAI;IAIN,GAAG,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA6CrD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;YAW3C,oBAAoB;IA8ClC,QAAQ,IAAI,SAAS,cAAc,EAAE;IAIrC,oBAAoB,IAAI,MAAM;YAIhB,YAAY;YA6BZ,YAAY;YA2BZ,OAAO;IAcrB,OAAO,CAAC,GAAG;IAIX,OAAO,CAAC,SAAS;CAMlB"}
package/dist/index.d.ts CHANGED
@@ -25,7 +25,7 @@
25
25
  *
26
26
  * // Use exactly like normal - tools execute automatically
27
27
  * const response = await client.messages.create({
28
- * model: 'claude-haiku-4-5-20251001',
28
+ * model: 'claude-sonnet-4-5',
29
29
  * max_tokens: 1024,
30
30
  * messages: [{ role: 'user', content: 'List all admin users' }],
31
31
  * });
package/dist/index.js CHANGED
@@ -14367,7 +14367,19 @@ class ProgrammaticExecutor {
14367
14367
  try {
14368
14368
  return await this.llm.generateCode(request, systemPrompt);
14369
14369
  } catch (error46) {
14370
- throw new CodeGenerationError(`Failed to generate code: ${error46 instanceof Error ? error46.message : "Unknown error"}`, error46 instanceof Error ? error46 : undefined);
14370
+ const message = error46 instanceof Error ? error46.message : "Unknown error";
14371
+ if (message.includes("Could not resolve authentication")) {
14372
+ throw new CodeGenerationError("Missing ANTHROPIC_API_KEY. Set it with: export ANTHROPIC_API_KEY=your-key");
14373
+ }
14374
+ if (message.includes("not_found_error") && message.includes("model:")) {
14375
+ const modelMatch = message.match(/model:\s*([^\s"]+)/);
14376
+ const model = modelMatch?.[1] || "unknown";
14377
+ throw new CodeGenerationError(`Model "${model}" not found. Try: claude-sonnet-4-5 or claude-haiku-4-5`);
14378
+ }
14379
+ if (message.includes("invalid_api_key") || message.includes("Invalid API Key")) {
14380
+ throw new CodeGenerationError("Invalid ANTHROPIC_API_KEY. Check your key at console.anthropic.com");
14381
+ }
14382
+ throw new CodeGenerationError(`Failed to generate code: ${message}`);
14371
14383
  }
14372
14384
  }
14373
14385
  async connectRelay(url2, token) {
@@ -14384,7 +14396,11 @@ class ProgrammaticExecutor {
14384
14396
  await client.connect();
14385
14397
  return client;
14386
14398
  } catch (error46) {
14387
- throw new RelayConnectionError(`Failed to connect to relay: ${error46 instanceof Error ? error46.message : "Unknown error"}`, error46 instanceof Error ? error46 : undefined);
14399
+ const message = error46 instanceof Error ? error46.message : "Unknown error";
14400
+ if (message.includes("ECONNREFUSED") || message.includes("timeout")) {
14401
+ throw new RelayConnectionError("Could not connect to sandbox. Make sure E2B sandbox is running and accessible.");
14402
+ }
14403
+ throw new RelayConnectionError(`Failed to connect to sandbox relay: ${message}`);
14388
14404
  }
14389
14405
  }
14390
14406
  async cleanup(client) {
@@ -25,7 +25,7 @@
25
25
  *
26
26
  * // Use exactly like the normal SDK
27
27
  * const response = await client.messages.create({
28
- * model: 'claude-haiku-4-5-20251001',
28
+ * model: 'claude-sonnet-4-5',
29
29
  * max_tokens: 1024,
30
30
  * messages: [{ role: 'user', content: 'Query all users and summarize' }],
31
31
  * });
@@ -79,7 +79,7 @@ export declare function detectProvider(client: unknown): SupportedProvider | nul
79
79
  *
80
80
  * // Works exactly like the normal Anthropic SDK
81
81
  * const response = await client.messages.create({
82
- * model: 'claude-haiku-4-5-20251001',
82
+ * model: 'claude-sonnet-4-5',
83
83
  * max_tokens: 1024,
84
84
  * messages: [{ role: 'user', content: 'Find top users and email report' }],
85
85
  * });
package/dist/types.d.ts CHANGED
@@ -59,12 +59,6 @@ export type ExecutionEvent = {
59
59
  } | {
60
60
  readonly type: 'result';
61
61
  readonly data: unknown;
62
- } | {
63
- readonly type: 'stdout';
64
- readonly data: string;
65
- } | {
66
- readonly type: 'stderr';
67
- readonly data: string;
68
62
  } | {
69
63
  readonly type: 'complete';
70
64
  readonly success: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@supertools-ai/core",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "Programmatic tool calling for LLMs - let AI write code that orchestrates your tools",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -18,7 +18,8 @@
18
18
  "README.md"
19
19
  ],
20
20
  "scripts": {
21
- "build": "bun build src/index.ts --outdir dist --target node --format esm && tsc --emitDeclarationOnly",
21
+ "clean": "rm -rf dist",
22
+ "build": "bun run clean && bun build src/index.ts --outdir dist --target node --format esm && tsc --emitDeclarationOnly",
22
23
  "dev": "bun --watch src/index.ts",
23
24
  "test": "bun test",
24
25
  "typecheck": "tsc --noEmit",