@cogitator-ai/wasm-tools 0.7.4 → 0.7.5

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.
Files changed (2) hide show
  1. package/README.md +24 -12
  2. package/package.json +2 -2
package/README.md CHANGED
@@ -4,11 +4,11 @@ WASM-based tools for Cogitator agents. Secure, sandboxed tool execution using We
4
4
 
5
5
  ## Features
6
6
 
7
- - 🚀 **100-500x faster cold start** than Docker containers
8
- - 🔒 **Memory-safe execution** in isolated Extism sandbox
9
- - 📦 **~20x lower memory footprint** compared to containers
10
- - 🛠️ **Custom tool framework** - create your own WASM tools
11
- - 🔄 **Hot-reload support** - update WASM modules without restart
7
+ - **14 pre-built tools** - calculator, JSON, hash, Base64, slug, validation, diff, regex, CSV, Markdown, XML, datetime, compression, Ed25519 signing
8
+ - **Isolated execution** - every call runs in an Extism sandbox in a worker thread, without filesystem or network access
9
+ - **Fast startup** - no container to start; compiled modules are cached per file
10
+ - **Custom tool framework** - `defineWasmTool()` for your own WASM modules
11
+ - **Hot-reload support** - `WasmToolManager` reloads modules when their files change
12
12
 
13
13
  ## Installation
14
14
 
@@ -18,6 +18,8 @@ pnpm add @cogitator-ai/wasm-tools
18
18
 
19
19
  `@extism/extism` (>= 2.0.0-rc13, the current `latest` on npm) is installed as a dependency; the pre-built plugins are compiled with `extism-js` and need its host functions and WASI.
20
20
 
21
+ Website docs: [WASM Tools](https://cogitator.app/docs/tools/wasm-tools), [Sandbox](https://cogitator.app/docs/deployment/sandbox).
22
+
21
23
  ## How Tools Execute
22
24
 
23
25
  Every tool created here carries a `sandbox: { type: 'wasm', ... }` config and a real `execute()`:
@@ -60,7 +62,8 @@ import { Cogitator, Agent } from '@cogitator-ai/core';
60
62
 
61
63
  const agent = new Agent({
62
64
  name: 'utility-assistant',
63
- model: 'gpt-6.1-sol',
65
+ model: 'openai/gpt-6.1-sol',
66
+ instructions: 'Use your tools for calculations and data transformations.',
64
67
  tools: [
65
68
  createCalcTool(),
66
69
  createJsonTool(),
@@ -79,7 +82,9 @@ const agent = new Agent({
79
82
  ],
80
83
  });
81
84
 
82
- const cog = new Cogitator({ llm: { defaultProvider: 'openai' } });
85
+ const cog = new Cogitator({
86
+ llm: { providers: { openai: { apiKey: process.env.OPENAI_API_KEY! } } },
87
+ });
83
88
  const result = await cog.run(agent, {
84
89
  input: 'Calculate the SHA-256 hash of "hello world"',
85
90
  });
@@ -91,6 +96,7 @@ Create custom tools that run in the WASM sandbox:
91
96
 
92
97
  ```typescript
93
98
  import { defineWasmTool } from '@cogitator-ai/wasm-tools';
99
+ import { Agent } from '@cogitator-ai/core';
94
100
  import { z } from 'zod';
95
101
 
96
102
  const hashTool = defineWasmTool({
@@ -109,6 +115,8 @@ const hashTool = defineWasmTool({
109
115
 
110
116
  const agent = new Agent({
111
117
  name: 'hasher',
118
+ model: 'openai/gpt-6.1-sol',
119
+ instructions: 'Hash text on request.',
112
120
  tools: [hashTool],
113
121
  });
114
122
  ```
@@ -137,12 +145,16 @@ const calcTool = await manager.load('./plugins/calc.wasm');
137
145
  // Get all tools for agent
138
146
  const agent = new Agent({
139
147
  name: 'wasm-agent',
148
+ model: 'openai/gpt-6.1-sol',
149
+ instructions: 'Use the loaded tools.',
140
150
  tools: manager.getTools(),
141
151
  });
142
152
 
143
153
  // Tools automatically use the latest plugin version after reload
144
- const cogitator = new Cogitator({ llm: { defaultProvider: 'openai' } });
145
- await cogitator.run(agent, 'Calculate 2 + 2');
154
+ const cogitator = new Cogitator({
155
+ llm: { providers: { openai: { apiKey: process.env.OPENAI_API_KEY! } } },
156
+ });
157
+ await cogitator.run(agent, { input: 'Calculate 2 + 2' });
146
158
 
147
159
  // Cleanup when done
148
160
  await manager.close();
@@ -360,7 +372,7 @@ const signing = createSigningTool({ timeout: 10000 });
360
372
  // Verify: { operation: "verify", algorithm: "ed25519", message: "hello", publicKey: "...", signature: "..." }
361
373
  ```
362
374
 
363
- WASM has no secure random source, so `signingToolSchema` generates a 32-byte seed on the host with `node:crypto` when `generateKeypair` is called without `seed`; the seed is the private key. Keys and signatures use `encoding: 'hex'` (default) or `'base64'`. Signatures are RFC 8032 Ed25519 and interoperate with `node:crypto`; non-canonical or off-curve public keys fail verification. Empty messages are allowed.
375
+ WASM has no secure random source, so the tool generates a 32-byte seed on the host with `node:crypto` when `generateKeypair` is called without `seed`; the seed is the private key. Keys and signatures use `encoding: 'hex'` (default) or `'base64'`. Signatures are RFC 8032 Ed25519 and interoperate with `node:crypto`; non-canonical or off-curve public keys fail verification. Empty messages are allowed.
364
376
 
365
377
  ### getWasmPath(name)
366
378
 
@@ -391,7 +403,7 @@ interface WasmToolCallbacks {
391
403
  onError?: (name: string, path: string, error: Error) => void;
392
404
  }
393
405
 
394
- class WasmToolManager {
406
+ declare class WasmToolManager {
395
407
  constructor(options?: WasmToolManagerOptions);
396
408
 
397
409
  // Watch a glob pattern for WASM files
@@ -419,7 +431,7 @@ Manager tools call the module's exported `run` function with the JSON-encoded pa
419
431
 
420
432
  ### Legacy Exports
421
433
 
422
- For direct sandbox usage:
434
+ For direct sandbox usage (pre-built modules are also reachable as `@cogitator-ai/wasm-tools/wasm/<name>.wasm`):
423
435
 
424
436
  | Export | Description |
425
437
  | ------------------ | ----------------------------------------- |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cogitator-ai/wasm-tools",
3
- "version": "0.7.4",
3
+ "version": "0.7.5",
4
4
  "description": "WASM-based tools for Cogitator agents",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -19,7 +19,7 @@
19
19
  "node": ">=22.12.0"
20
20
  },
21
21
  "dependencies": {
22
- "@cogitator-ai/types": "0.28.0",
22
+ "@cogitator-ai/types": "0.29.0",
23
23
  "@extism/extism": "^2.0.0-rc13",
24
24
  "chokidar": "^5.0.0",
25
25
  "zod": "^4.6.5"