@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 +59 -41
- package/dist/executor.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +18 -2
- package/dist/supertools.d.ts +2 -2
- package/dist/types.d.ts +0 -6
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -2
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.
|
|
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
|
-
//
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
|
|
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
|
-
|
|
79
|
+
status: z.enum(['pending', 'completed']).optional(),
|
|
64
80
|
}),
|
|
65
|
-
returns: z.array(z.
|
|
66
|
-
|
|
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
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
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
|
-
|
|
89
|
-
const
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
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
|
-
|
|
99
|
-
|
|
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
|
|
211
|
+
model: 'claude-haiku-4-5',
|
|
194
212
|
max_tokens: 1024,
|
|
195
213
|
messages: [{ role: 'user', content: 'Your request here' }],
|
|
196
214
|
});
|
package/dist/executor.d.ts.map
CHANGED
|
@@ -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;
|
|
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-
|
|
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
|
-
|
|
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
|
-
|
|
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) {
|
package/dist/supertools.d.ts
CHANGED
|
@@ -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-
|
|
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-
|
|
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;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEtC,MAAM,MAAM,cAAc,GAAG,SAAS,OAAO,EAAE,CAAC;AAEhD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;CAClC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CACjF;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB;IAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GACzF;IAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC9D;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC3H;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACvI;IAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACvG;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GACnD;IAAE,QAAQ,CAAC,IAAI,EAAE,
|
|
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.
|
|
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
|
-
"
|
|
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",
|