@tyvm/knowhow 0.0.108-dev.126b29e → 0.0.108-dev.4a8ba55
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/package.json +2 -3
- package/src/agents/base/base.ts +9 -0
- package/src/agents/tools/index.ts +0 -1
- package/src/agents/tools/list.ts +0 -2
- package/src/chat/CliChatService.ts +7 -1
- package/src/chat/renderer/CompactRenderer.ts +20 -0
- package/src/chat/renderer/ConsoleRenderer.ts +19 -0
- package/src/chat/renderer/FancyRenderer.ts +19 -0
- package/src/chat/renderer/types.ts +11 -0
- package/src/cli.ts +79 -666
- package/src/clients/types.ts +12 -4
- package/src/commands/agent.ts +246 -0
- package/src/commands/misc.ts +169 -0
- package/src/commands/modules.ts +182 -0
- package/src/commands/services.ts +72 -0
- package/src/commands/workers.ts +160 -0
- package/src/config.ts +37 -0
- package/src/index.ts +1 -0
- package/src/plugins/plugins.ts +0 -21
- package/src/processors/JsonCompressor.ts +6 -6
- package/src/services/modules/index.ts +58 -49
- package/src/services/modules/types.ts +2 -0
- package/src/tunnel.ts +216 -0
- package/src/types.ts +0 -1
- package/src/worker.ts +65 -336
- package/src/workers/auth/WsMiddleware.ts +99 -0
- package/src/workers/auth/authMiddleware.ts +104 -0
- package/src/workers/auth/types.ts +14 -2
- package/tests/unit/modules/moduleLoading.test.ts +0 -25
- package/tests/unit/plugins/pluginLoading.test.ts +0 -85
- package/ts_build/package.json +2 -3
- package/ts_build/src/agents/base/base.js +10 -0
- package/ts_build/src/agents/base/base.js.map +1 -1
- package/ts_build/src/agents/tools/index.d.ts +0 -1
- package/ts_build/src/agents/tools/index.js +0 -1
- package/ts_build/src/agents/tools/index.js.map +1 -1
- package/ts_build/src/agents/tools/list.js +0 -2
- package/ts_build/src/agents/tools/list.js.map +1 -1
- package/ts_build/src/chat/CliChatService.js +10 -1
- package/ts_build/src/chat/CliChatService.js.map +1 -1
- package/ts_build/src/chat/renderer/CompactRenderer.d.ts +4 -0
- package/ts_build/src/chat/renderer/CompactRenderer.js +16 -0
- package/ts_build/src/chat/renderer/CompactRenderer.js.map +1 -1
- package/ts_build/src/chat/renderer/ConsoleRenderer.d.ts +4 -0
- package/ts_build/src/chat/renderer/ConsoleRenderer.js +16 -0
- package/ts_build/src/chat/renderer/ConsoleRenderer.js.map +1 -1
- package/ts_build/src/chat/renderer/FancyRenderer.d.ts +4 -0
- package/ts_build/src/chat/renderer/FancyRenderer.js +16 -0
- package/ts_build/src/chat/renderer/FancyRenderer.js.map +1 -1
- package/ts_build/src/chat/renderer/types.d.ts +2 -0
- package/ts_build/src/cli.js +40 -525
- package/ts_build/src/cli.js.map +1 -1
- package/ts_build/src/clients/types.d.ts +2 -2
- package/ts_build/src/commands/agent.d.ts +6 -0
- package/ts_build/src/commands/agent.js +229 -0
- package/ts_build/src/commands/agent.js.map +1 -0
- package/ts_build/src/commands/misc.d.ts +10 -0
- package/ts_build/src/commands/misc.js +195 -0
- package/ts_build/src/commands/misc.js.map +1 -0
- package/ts_build/src/commands/modules.d.ts +3 -0
- package/ts_build/src/commands/modules.js +160 -0
- package/ts_build/src/commands/modules.js.map +1 -0
- package/ts_build/src/commands/services.d.ts +5 -0
- package/ts_build/src/commands/services.js +86 -0
- package/ts_build/src/commands/services.js.map +1 -0
- package/ts_build/src/commands/workers.d.ts +6 -0
- package/ts_build/src/commands/workers.js +163 -0
- package/ts_build/src/commands/workers.js.map +1 -0
- package/ts_build/src/config.d.ts +1 -0
- package/ts_build/src/config.js +32 -0
- package/ts_build/src/config.js.map +1 -1
- package/ts_build/src/index.d.ts +1 -0
- package/ts_build/src/index.js +3 -1
- package/ts_build/src/index.js.map +1 -1
- package/ts_build/src/plugins/plugins.d.ts +0 -2
- package/ts_build/src/plugins/plugins.js +0 -11
- package/ts_build/src/plugins/plugins.js.map +1 -1
- package/ts_build/src/processors/JsonCompressor.js +4 -4
- package/ts_build/src/processors/JsonCompressor.js.map +1 -1
- package/ts_build/src/services/modules/index.d.ts +33 -0
- package/ts_build/src/services/modules/index.js +38 -42
- package/ts_build/src/services/modules/index.js.map +1 -1
- package/ts_build/src/services/modules/types.d.ts +2 -0
- package/ts_build/src/tunnel.d.ts +27 -0
- package/ts_build/src/tunnel.js +112 -0
- package/ts_build/src/tunnel.js.map +1 -0
- package/ts_build/src/types.d.ts +0 -1
- package/ts_build/src/types.js.map +1 -1
- package/ts_build/src/worker.d.ts +1 -4
- package/ts_build/src/worker.js +38 -244
- package/ts_build/src/worker.js.map +1 -1
- package/ts_build/src/workers/auth/WsMiddleware.d.ts +8 -0
- package/ts_build/src/workers/auth/WsMiddleware.js +65 -0
- package/ts_build/src/workers/auth/WsMiddleware.js.map +1 -0
- package/ts_build/src/workers/auth/authMiddleware.d.ts +3 -0
- package/ts_build/src/workers/auth/authMiddleware.js +60 -0
- package/ts_build/src/workers/auth/authMiddleware.js.map +1 -0
- package/ts_build/src/workers/auth/types.d.ts +8 -1
- package/ts_build/tests/unit/modules/moduleLoading.test.js +0 -19
- package/ts_build/tests/unit/modules/moduleLoading.test.js.map +1 -1
- package/ts_build/tests/unit/plugins/pluginLoading.test.js +0 -65
- package/ts_build/tests/unit/plugins/pluginLoading.test.js.map +1 -1
- package/src/agents/tools/executeScript/README.md +0 -94
- package/src/agents/tools/executeScript/definition.ts +0 -79
- package/src/agents/tools/executeScript/examples/dependency-injection-validation.ts +0 -272
- package/src/agents/tools/executeScript/examples/quick-test.ts +0 -74
- package/src/agents/tools/executeScript/examples/serialization-test.ts +0 -321
- package/src/agents/tools/executeScript/examples/test-runner.ts +0 -197
- package/src/agents/tools/executeScript/index.ts +0 -98
- package/src/services/script-execution/SandboxContext.ts +0 -282
- package/src/services/script-execution/ScriptExecutor.ts +0 -441
- package/src/services/script-execution/ScriptPolicy.ts +0 -194
- package/src/services/script-execution/ScriptTracer.ts +0 -249
- package/src/services/script-execution/types.ts +0 -134
- package/ts_build/src/agents/tools/executeScript/definition.d.ts +0 -2
- package/ts_build/src/agents/tools/executeScript/definition.js +0 -76
- package/ts_build/src/agents/tools/executeScript/definition.js.map +0 -1
- package/ts_build/src/agents/tools/executeScript/examples/dependency-injection-validation.d.ts +0 -18
- package/ts_build/src/agents/tools/executeScript/examples/dependency-injection-validation.js +0 -192
- package/ts_build/src/agents/tools/executeScript/examples/dependency-injection-validation.js.map +0 -1
- package/ts_build/src/agents/tools/executeScript/examples/quick-test.d.ts +0 -3
- package/ts_build/src/agents/tools/executeScript/examples/quick-test.js +0 -64
- package/ts_build/src/agents/tools/executeScript/examples/quick-test.js.map +0 -1
- package/ts_build/src/agents/tools/executeScript/examples/serialization-test.d.ts +0 -15
- package/ts_build/src/agents/tools/executeScript/examples/serialization-test.js +0 -266
- package/ts_build/src/agents/tools/executeScript/examples/serialization-test.js.map +0 -1
- package/ts_build/src/agents/tools/executeScript/examples/test-runner.d.ts +0 -4
- package/ts_build/src/agents/tools/executeScript/examples/test-runner.js +0 -208
- package/ts_build/src/agents/tools/executeScript/examples/test-runner.js.map +0 -1
- package/ts_build/src/agents/tools/executeScript/index.d.ts +0 -28
- package/ts_build/src/agents/tools/executeScript/index.js +0 -72
- package/ts_build/src/agents/tools/executeScript/index.js.map +0 -1
- package/ts_build/src/services/script-execution/SandboxContext.d.ts +0 -34
- package/ts_build/src/services/script-execution/SandboxContext.js +0 -189
- package/ts_build/src/services/script-execution/SandboxContext.js.map +0 -1
- package/ts_build/src/services/script-execution/ScriptExecutor.d.ts +0 -19
- package/ts_build/src/services/script-execution/ScriptExecutor.js +0 -269
- package/ts_build/src/services/script-execution/ScriptExecutor.js.map +0 -1
- package/ts_build/src/services/script-execution/ScriptPolicy.d.ts +0 -28
- package/ts_build/src/services/script-execution/ScriptPolicy.js +0 -115
- package/ts_build/src/services/script-execution/ScriptPolicy.js.map +0 -1
- package/ts_build/src/services/script-execution/ScriptTracer.d.ts +0 -19
- package/ts_build/src/services/script-execution/ScriptTracer.js +0 -186
- package/ts_build/src/services/script-execution/ScriptTracer.js.map +0 -1
- package/ts_build/src/services/script-execution/types.d.ts +0 -108
- package/ts_build/src/services/script-execution/types.js +0 -3
- package/ts_build/src/services/script-execution/types.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"moduleLoading.test.js","sourceRoot":"","sources":["../../../../tests/unit/modules/moduleLoading.test.ts"],"names":[],"mappings":";;AAGA,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,GAAG,EAAE,CAAC,CAAC;IACtC,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE;IACpB,eAAe,EAAE,IAAI,CAAC,EAAE,EAAE;IAC1B,aAAa,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC;CAC7C,CAAC,CAAC,CAAC;AAGJ,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,GAAG,EAAE,CAAC,CAAC;IACvC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE;IACnB,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE;CACnB,CAAC,CAAC,CAAC;AAGJ,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,GAAG,EAAE,CAAC,CAAC;IACxC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC;QAClC,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,EAAE;QACX,MAAM,EAAE,EAAE;QACV,KAAK,EAAE,EAAE;KACV,CAAC;CACH,CAAC,CAAC,CAAC;AAEJ,2DAA+D;AAE/D,gDAAiE;AAEjE,MAAM,aAAa,GAAG,kBAAkD,CAAC;AACzE,MAAM,mBAAmB,GAAG,wBAA8D,CAAC;AAE3F,SAAS,WAAW,CAAC,SAAkC;IACrD,OAAO;QACL,MAAM,EAAE;YACN,aAAa,EAAE,IAAI,CAAC,EAAE,EAAE;SAClB;QACR,OAAO,EAAE;YACP,cAAc,EAAE,IAAI,CAAC,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"moduleLoading.test.js","sourceRoot":"","sources":["../../../../tests/unit/modules/moduleLoading.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -55,69 +55,4 @@ describe("PluginService.loadPlugin", () => {
|
|
|
55
55
|
expect(plugin.meta.key).toBe(mockKey);
|
|
56
56
|
});
|
|
57
57
|
});
|
|
58
|
-
describe("PluginService.loadPluginsFromConfig", () => {
|
|
59
|
-
it("should load plugins listed in config.pluginPackages", async () => {
|
|
60
|
-
const service = new plugins_1.PluginService(makeContext());
|
|
61
|
-
const loadedSpecs = [];
|
|
62
|
-
service.loadPlugin = jest.fn().mockImplementation(async (spec) => {
|
|
63
|
-
loadedSpecs.push(spec);
|
|
64
|
-
const key = `plugin-from-${spec}`;
|
|
65
|
-
const instance = {
|
|
66
|
-
meta: { key, name: key },
|
|
67
|
-
isEnabled: () => true,
|
|
68
|
-
enable: () => { },
|
|
69
|
-
disable: () => { },
|
|
70
|
-
call: () => Promise.resolve(""),
|
|
71
|
-
callMany: () => Promise.resolve(""),
|
|
72
|
-
embed: () => Promise.resolve([]),
|
|
73
|
-
};
|
|
74
|
-
service.pluginMap.set(key, instance);
|
|
75
|
-
return key;
|
|
76
|
-
});
|
|
77
|
-
const config = {
|
|
78
|
-
pluginPackages: {
|
|
79
|
-
asana: "@knowhow/plugin-asana",
|
|
80
|
-
linear: "@knowhow/plugin-linear",
|
|
81
|
-
},
|
|
82
|
-
};
|
|
83
|
-
await service.loadPluginsFromConfig(config);
|
|
84
|
-
expect(loadedSpecs).toContain("@knowhow/plugin-asana");
|
|
85
|
-
expect(loadedSpecs).toContain("@knowhow/plugin-linear");
|
|
86
|
-
expect(loadedSpecs.length).toBe(2);
|
|
87
|
-
});
|
|
88
|
-
it("should handle empty pluginPackages gracefully", async () => {
|
|
89
|
-
const service = new plugins_1.PluginService(makeContext());
|
|
90
|
-
service.loadPlugin = jest.fn();
|
|
91
|
-
const config = {};
|
|
92
|
-
await expect(service.loadPluginsFromConfig(config)).resolves.toBeUndefined();
|
|
93
|
-
expect(service.loadPlugin).not.toHaveBeenCalled();
|
|
94
|
-
});
|
|
95
|
-
it("should log a warning and not crash when a plugin fails to load", async () => {
|
|
96
|
-
const context = makeContext();
|
|
97
|
-
const service = new plugins_1.PluginService(context);
|
|
98
|
-
service.loadPlugin = jest.fn().mockRejectedValue(new Error("Module not found"));
|
|
99
|
-
const config = {
|
|
100
|
-
pluginPackages: {
|
|
101
|
-
broken: "non-existent-package",
|
|
102
|
-
},
|
|
103
|
-
};
|
|
104
|
-
await expect(service.loadPluginsFromConfig(config)).resolves.toBeUndefined();
|
|
105
|
-
expect(context.Events.log).toHaveBeenCalledWith("PluginService", expect.stringContaining("broken"), "warn");
|
|
106
|
-
});
|
|
107
|
-
it("should load each plugin with the correct spec string", async () => {
|
|
108
|
-
const service = new plugins_1.PluginService(makeContext());
|
|
109
|
-
const loadedSpecs = [];
|
|
110
|
-
service.loadPlugin = jest.fn().mockImplementation(async (spec) => {
|
|
111
|
-
loadedSpecs.push(spec);
|
|
112
|
-
return spec;
|
|
113
|
-
});
|
|
114
|
-
const config = {
|
|
115
|
-
pluginPackages: {
|
|
116
|
-
valid: "@knowhow/valid-plugin",
|
|
117
|
-
},
|
|
118
|
-
};
|
|
119
|
-
await service.loadPluginsFromConfig(config);
|
|
120
|
-
expect(loadedSpecs).toEqual(["@knowhow/valid-plugin"]);
|
|
121
|
-
});
|
|
122
|
-
});
|
|
123
58
|
//# sourceMappingURL=pluginLoading.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pluginLoading.test.js","sourceRoot":"","sources":["../../../../tests/unit/plugins/pluginLoading.test.ts"],"names":[],"mappings":";;AAAA,0DAA6D;
|
|
1
|
+
{"version":3,"file":"pluginLoading.test.js","sourceRoot":"","sources":["../../../../tests/unit/plugins/pluginLoading.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
# Execute Script Tool
|
|
2
|
-
|
|
3
|
-
The `executeScript` tool provides secure, isolated execution of TypeScript scripts with access to the Knowhow platform's tools and AI capabilities.
|
|
4
|
-
|
|
5
|
-
## Requirements
|
|
6
|
-
|
|
7
|
-
### Node.js Version and Configuration
|
|
8
|
-
|
|
9
|
-
**Important**: For Node.js 20.x and later, the `--no-node-snapshot` flag is required due to isolated-vm compatibility requirements.
|
|
10
|
-
|
|
11
|
-
```bash
|
|
12
|
-
# Required for Node.js 20+
|
|
13
|
-
node --no-node-snapshot your-app.js
|
|
14
|
-
|
|
15
|
-
# Or set in package.json scripts
|
|
16
|
-
"scripts": {
|
|
17
|
-
"start": "node --no-node-snapshot dist/index.js"
|
|
18
|
-
}
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
## Features
|
|
22
|
-
|
|
23
|
-
- **Secure Sandbox**: Scripts run in isolated-vm with no access to Node.js APIs
|
|
24
|
-
- **Tool Integration**: Access to all existing Knowhow tools via `callTool()`
|
|
25
|
-
- **AI Integration**: Direct access to AI completions via `llm()`
|
|
26
|
-
- **Resource Quotas**: Configurable limits on execution time, memory, tool calls, and tokens
|
|
27
|
-
- **Comprehensive Tracing**: Full audit trail of all script activities
|
|
28
|
-
- **Policy Enforcement**: Fine-grained security controls and access restrictions
|
|
29
|
-
|
|
30
|
-
## Usage
|
|
31
|
-
|
|
32
|
-
```typescript
|
|
33
|
-
// Basic usage
|
|
34
|
-
await executeScript({
|
|
35
|
-
script: `
|
|
36
|
-
console.log("Hello from script!");
|
|
37
|
-
|
|
38
|
-
const files = await callTool("fileSearch", { searchTerm: "*.ts" });
|
|
39
|
-
console.log("Found TypeScript files:", files);
|
|
40
|
-
|
|
41
|
-
const response = await llm([
|
|
42
|
-
{ role: "user", content: "What is TypeScript?" }
|
|
43
|
-
]);
|
|
44
|
-
|
|
45
|
-
return { message: "Script completed successfully" };
|
|
46
|
-
`
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
// With custom policy
|
|
50
|
-
await executeScript({
|
|
51
|
-
script: "...",
|
|
52
|
-
policy: {
|
|
53
|
-
maxExecutionTimeMs: 10000,
|
|
54
|
-
maxMemoryMB: 64,
|
|
55
|
-
maxToolCalls: 5,
|
|
56
|
-
maxTokens: 1000,
|
|
57
|
-
allowedTools: ["fileSearch", "textSearch"],
|
|
58
|
-
deniedTools: ["execCommand"]
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
## Available Functions in Scripts
|
|
64
|
-
|
|
65
|
-
### `callTool(name: string, args: any): Promise<any>`
|
|
66
|
-
Call any available Knowhow tool by name with arguments.
|
|
67
|
-
|
|
68
|
-
### `llm(messages: ChatMessage[], options?: LLMOptions): Promise<ChatCompletion>`
|
|
69
|
-
Make AI completion requests with message history and options.
|
|
70
|
-
|
|
71
|
-
## Security Features
|
|
72
|
-
|
|
73
|
-
- **No Node.js Access**: Scripts cannot access filesystem, network, or system APIs directly
|
|
74
|
-
- **Tool Authorization**: All external access goes through existing authorization systems
|
|
75
|
-
- **Resource Limits**: Prevents runaway scripts with time, memory, and usage quotas
|
|
76
|
-
- **Trace Sanitization**: Sensitive data is redacted from execution logs
|
|
77
|
-
- **Policy Enforcement**: Granular control over what tools and resources scripts can access
|
|
78
|
-
|
|
79
|
-
## Implementation Details
|
|
80
|
-
|
|
81
|
-
- **ScriptExecutor**: Handles compilation and isolated execution
|
|
82
|
-
- **SandboxContext**: Provides `callTool` and `llm` function implementations
|
|
83
|
-
- **ScriptTracer**: Records all script activities for debugging and audit
|
|
84
|
-
- **ScriptPolicyEnforcer**: Enforces resource quotas and security policies
|
|
85
|
-
|
|
86
|
-
## Files
|
|
87
|
-
|
|
88
|
-
- `types.ts` - TypeScript interfaces and type definitions
|
|
89
|
-
- `ScriptExecutor.ts` - Core execution engine with isolated-vm
|
|
90
|
-
- `SandboxContext.ts` - Script execution context with tool/AI access
|
|
91
|
-
- `ScriptTracer.ts` - Event tracing and monitoring system
|
|
92
|
-
- `ScriptPolicyEnforcer.ts` - Security policy enforcement
|
|
93
|
-
- `executeScript.ts` - Tool handler and main entry point
|
|
94
|
-
- `examples/` - Example scripts demonstrating capabilities
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { Tool } from "../../../clients";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Tool for executing TypeScript scripts in a secure sandbox
|
|
5
|
-
*/
|
|
6
|
-
export const executeScriptDefinition: Tool = {
|
|
7
|
-
type: "function",
|
|
8
|
-
function: {
|
|
9
|
-
name: "executeScript",
|
|
10
|
-
description: `Used to contruct a script that calls tools and analyzes data, not for general purpose scripting.
|
|
11
|
-
|
|
12
|
-
This is most useful for complex workflows of tool calls that need conditional logic based off tool responses.
|
|
13
|
-
|
|
14
|
-
The script has access to:
|
|
15
|
-
- callTool(toolName, parameters): Call any available tool
|
|
16
|
-
- llm(messages, options): Make LLM calls
|
|
17
|
-
- createArtifact(name, content, type): Create downloadable artifacts
|
|
18
|
-
- console: Standard console logging
|
|
19
|
-
- getQuotaUsage(): Check resource usage
|
|
20
|
-
- sleep(ms): Pause execution for a specified time, max 2000ms
|
|
21
|
-
|
|
22
|
-
The script cannot:
|
|
23
|
-
- import or require
|
|
24
|
-
- make external network requests, outside of callTool and llm
|
|
25
|
-
|
|
26
|
-
Example:
|
|
27
|
-
\`\`\`typescript
|
|
28
|
-
// Call a tool
|
|
29
|
-
const searchResult = await callTool('textSearch', { searchTerm: 'hello world' });
|
|
30
|
-
console.log('Search found:', searchResult);
|
|
31
|
-
|
|
32
|
-
// Call LLM
|
|
33
|
-
const response = await llm([
|
|
34
|
-
{ role: 'user', content: 'Explain quantum computing' }
|
|
35
|
-
], { model: 'gpt-4o-mini', maxTokens: 100 });
|
|
36
|
-
console.log('LLM response:', response.choices[0].message.content);
|
|
37
|
-
|
|
38
|
-
// Create an artifact
|
|
39
|
-
createArtifact('summary.md', '# Summary\\nThis is a test', 'markdown');
|
|
40
|
-
|
|
41
|
-
return { message: 'Script completed successfully' };
|
|
42
|
-
\`\`\`
|
|
43
|
-
|
|
44
|
-
You must return the data you want to be the functionResp
|
|
45
|
-
|
|
46
|
-
Test tools yourself to know the return type when scripting. Can pass JSON.stringified data into llm call if you don't need to know the type.
|
|
47
|
-
You cannot use isolation breaking methods like: setTimeout setInterval setImmediate clearTimeout clearInterval
|
|
48
|
-
|
|
49
|
-
Security: Scripts run in isolation with quotas on tool calls, tokens, time, and cost.`,
|
|
50
|
-
|
|
51
|
-
parameters: {
|
|
52
|
-
type: "object",
|
|
53
|
-
properties: {
|
|
54
|
-
script: {
|
|
55
|
-
type: "string",
|
|
56
|
-
description: "The TypeScript code to execute. 4000 tokens or less",
|
|
57
|
-
},
|
|
58
|
-
maxToolCalls: {
|
|
59
|
-
type: "number",
|
|
60
|
-
description: "Maximum number of tool calls allowed (default: 50)",
|
|
61
|
-
},
|
|
62
|
-
maxTokens: {
|
|
63
|
-
type: "number",
|
|
64
|
-
description: "Maximum tokens for LLM calls (default: 10000)",
|
|
65
|
-
},
|
|
66
|
-
maxExecutionTimeMs: {
|
|
67
|
-
type: "number",
|
|
68
|
-
description:
|
|
69
|
-
"Maximum execution time in milliseconds (default: 30000)",
|
|
70
|
-
},
|
|
71
|
-
maxCostUsd: {
|
|
72
|
-
type: "number",
|
|
73
|
-
description: "Maximum cost in USD (default: 1.0)",
|
|
74
|
-
},
|
|
75
|
-
},
|
|
76
|
-
required: ["script"],
|
|
77
|
-
},
|
|
78
|
-
},
|
|
79
|
-
};
|
|
@@ -1,272 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ts-node
|
|
2
|
-
/**
|
|
3
|
-
* Comprehensive test for Tools Dependency Injection System
|
|
4
|
-
*
|
|
5
|
-
* This test validates:
|
|
6
|
-
* 1. Context injection is working properly
|
|
7
|
-
* 2. Tools can access services via `this.getContext()`
|
|
8
|
-
* 3. Agent isolation is functioning (each agent has independent context)
|
|
9
|
-
* 4. No singleton usage in tool implementations
|
|
10
|
-
* 5. Backward compatibility is maintained
|
|
11
|
-
*
|
|
12
|
-
* Usage: npx ts-node src/agents/tools/executeScript/examples/dependency-injection-validation.ts
|
|
13
|
-
*/
|
|
14
|
-
|
|
15
|
-
import { ToolsService } from "../../../../services/Tools";
|
|
16
|
-
import { Clients } from "../../../../clients";
|
|
17
|
-
import { EventService, services } from "../../../../services/";
|
|
18
|
-
import { BaseAgent } from "../../../base/base";
|
|
19
|
-
import { Message } from "../../../../clients/types";
|
|
20
|
-
import { includedTools } from "../../list";
|
|
21
|
-
import { executeScript } from "../";
|
|
22
|
-
import { executeScriptDefinition } from "../definition";
|
|
23
|
-
|
|
24
|
-
// Test Agent that extends BaseAgent to test agent isolation
|
|
25
|
-
class TestAgent1 extends BaseAgent {
|
|
26
|
-
name = "TestAgent1";
|
|
27
|
-
description = "Test agent for dependency injection validation";
|
|
28
|
-
|
|
29
|
-
async getInitialMessages(userInput: string): Promise<Message[]> {
|
|
30
|
-
return [
|
|
31
|
-
{ role: "system", content: this.description },
|
|
32
|
-
{ role: "user", content: userInput },
|
|
33
|
-
];
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
// Expose toolsService for testing
|
|
37
|
-
public getToolsServiceForTest() {
|
|
38
|
-
return this.tools;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
class TestAgent2 extends BaseAgent {
|
|
43
|
-
name = "TestAgent2";
|
|
44
|
-
description = "Another test agent for dependency injection validation";
|
|
45
|
-
|
|
46
|
-
async getInitialMessages(userInput: string): Promise<Message[]> {
|
|
47
|
-
return [
|
|
48
|
-
{ role: "system", content: this.description },
|
|
49
|
-
{ role: "user", content: userInput },
|
|
50
|
-
];
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
// Expose toolsService for testing
|
|
54
|
-
public getToolsServiceForTest() {
|
|
55
|
-
return this.tools;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
// Test tool function that uses context injection
|
|
60
|
-
function testToolWithContext(this: ToolsService, params: { message: string }) {
|
|
61
|
-
const context = this.getContext();
|
|
62
|
-
|
|
63
|
-
console.log("✅ Tool called with context:");
|
|
64
|
-
console.log("- AgentService available:", !!context.Agents);
|
|
65
|
-
console.log("- EventService available:", !!context.Events);
|
|
66
|
-
console.log("- Clients available:", !!context.Clients);
|
|
67
|
-
console.log("- ToolsService self-reference available:", !!context.Tools);
|
|
68
|
-
console.log("- Test message:", params.message);
|
|
69
|
-
|
|
70
|
-
return {
|
|
71
|
-
success: true,
|
|
72
|
-
contextValidated: true,
|
|
73
|
-
hasAgentService: !!context.Agents,
|
|
74
|
-
hasEventService: !!context.Events,
|
|
75
|
-
hasClients: !!context.Clients,
|
|
76
|
-
hasToolsService: !!context.Tools,
|
|
77
|
-
testMessage: params.message,
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
async function runValidationTests() {
|
|
82
|
-
console.log("🧪 Starting Tools Dependency Injection Validation Tests\n");
|
|
83
|
-
|
|
84
|
-
// Test 1: Create independent agents with their own ToolsService instances
|
|
85
|
-
console.log("📍 Test 1: Agent Isolation");
|
|
86
|
-
const agent1 = new TestAgent1({
|
|
87
|
-
Events: new EventService(),
|
|
88
|
-
Tools: new ToolsService({ Clients }),
|
|
89
|
-
});
|
|
90
|
-
const agent2 = new TestAgent2({
|
|
91
|
-
Events: new EventService(),
|
|
92
|
-
Tools: new ToolsService(),
|
|
93
|
-
});
|
|
94
|
-
|
|
95
|
-
const toolsService1 = agent1.getToolsServiceForTest();
|
|
96
|
-
const toolsService2 = agent2.getToolsServiceForTest();
|
|
97
|
-
|
|
98
|
-
// Verify agents have different ToolsService instances
|
|
99
|
-
console.log(
|
|
100
|
-
"✅ Agent1 and Agent2 have different ToolsService instances:",
|
|
101
|
-
toolsService1 !== toolsService2
|
|
102
|
-
);
|
|
103
|
-
|
|
104
|
-
// Test 2: Context validation for each agent
|
|
105
|
-
console.log("\n📍 Test 2: Context Injection Validation");
|
|
106
|
-
|
|
107
|
-
const context1 = toolsService1.getContext();
|
|
108
|
-
const context2 = toolsService2.getContext();
|
|
109
|
-
|
|
110
|
-
console.log("✅ Agent1 context has required services:", {
|
|
111
|
-
agentService: !!context1.Agents,
|
|
112
|
-
eventService: !!context1.Events,
|
|
113
|
-
clients: !!context1.Clients,
|
|
114
|
-
toolsService: !!context1.Tools,
|
|
115
|
-
});
|
|
116
|
-
|
|
117
|
-
console.log("✅ Agent2 context has required services:", {
|
|
118
|
-
agentService: !!context2.Agents,
|
|
119
|
-
eventService: !!context2.Events,
|
|
120
|
-
clients: !!context2.Clients,
|
|
121
|
-
toolsService: !!context2.Tools,
|
|
122
|
-
});
|
|
123
|
-
|
|
124
|
-
// Test 3: Register a test tool and verify it can access context
|
|
125
|
-
console.log("\n📍 Test 3: Tool Context Access");
|
|
126
|
-
|
|
127
|
-
// Register the test tool on agent1's ToolsService
|
|
128
|
-
toolsService1.addTool({
|
|
129
|
-
type: "function",
|
|
130
|
-
function: {
|
|
131
|
-
name: "testToolWithContext",
|
|
132
|
-
description: "Test tool for context validation",
|
|
133
|
-
parameters: {
|
|
134
|
-
type: "object",
|
|
135
|
-
properties: {
|
|
136
|
-
message: { type: "string", description: "Test message" },
|
|
137
|
-
},
|
|
138
|
-
required: ["message"],
|
|
139
|
-
},
|
|
140
|
-
},
|
|
141
|
-
});
|
|
142
|
-
|
|
143
|
-
toolsService1.setFunction("testToolWithContext", testToolWithContext);
|
|
144
|
-
try {
|
|
145
|
-
const result = await toolsService1.callTool({
|
|
146
|
-
id: "test-call",
|
|
147
|
-
type: "function",
|
|
148
|
-
function: {
|
|
149
|
-
name: "testToolWithContext",
|
|
150
|
-
arguments: JSON.stringify({ message: "Hello from Agent1!" }),
|
|
151
|
-
},
|
|
152
|
-
});
|
|
153
|
-
console.log(
|
|
154
|
-
"✅ Tool executed successfully with context access:",
|
|
155
|
-
result.functionResp?.success
|
|
156
|
-
);
|
|
157
|
-
} catch (error) {
|
|
158
|
-
console.error("❌ Tool execution failed:", error);
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
// Test 4: Verify agent isolation - agent2 should not have agent1's tool
|
|
162
|
-
console.log("\n📍 Test 4: Tool Isolation Between Agents");
|
|
163
|
-
|
|
164
|
-
const agent1Tools = toolsService1.getTools().map((t) => t.function.name);
|
|
165
|
-
const agent2Tools = toolsService2.getTools().map((t) => t.function.name);
|
|
166
|
-
|
|
167
|
-
console.log("Agent1 tools:", agent1Tools.length);
|
|
168
|
-
console.log("Agent2 tools:", agent2Tools.length);
|
|
169
|
-
console.log(
|
|
170
|
-
"✅ Agent2 does not have agent1's custom tool:",
|
|
171
|
-
!agent2Tools.includes("testToolWithContext")
|
|
172
|
-
);
|
|
173
|
-
|
|
174
|
-
// Test 5: Add different tool to agent2 to verify independence
|
|
175
|
-
function agent2SpecificTool(this: ToolsService, params: { data: string }) {
|
|
176
|
-
const context = this.getContext();
|
|
177
|
-
return {
|
|
178
|
-
agent: "Agent2",
|
|
179
|
-
data: params.data,
|
|
180
|
-
contextAvailable: !!context,
|
|
181
|
-
};
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
toolsService2.addTool({
|
|
185
|
-
type: "function",
|
|
186
|
-
function: {
|
|
187
|
-
name: "agent2SpecificTool",
|
|
188
|
-
description: "Tool specific to Agent2",
|
|
189
|
-
parameters: {
|
|
190
|
-
type: "object",
|
|
191
|
-
properties: {
|
|
192
|
-
data: { type: "string", description: "Test data" },
|
|
193
|
-
},
|
|
194
|
-
required: ["data"],
|
|
195
|
-
},
|
|
196
|
-
},
|
|
197
|
-
});
|
|
198
|
-
toolsService2.setFunction("agent2SpecificTool", agent2SpecificTool);
|
|
199
|
-
|
|
200
|
-
const agent1ToolsAfter = toolsService1.getTools().map((t) => t.function.name);
|
|
201
|
-
const agent2ToolsAfter = toolsService2.getTools().map((t) => t.function.name);
|
|
202
|
-
|
|
203
|
-
console.log(
|
|
204
|
-
"✅ Agent1 does not have agent2's tool:",
|
|
205
|
-
!agent1ToolsAfter.includes("agent2SpecificTool")
|
|
206
|
-
);
|
|
207
|
-
console.log(
|
|
208
|
-
"✅ Agent2 has its specific tool:",
|
|
209
|
-
agent2ToolsAfter.includes("agent2SpecificTool")
|
|
210
|
-
);
|
|
211
|
-
|
|
212
|
-
// Test 6: Verify executeScript tool is using context injection
|
|
213
|
-
console.log("\n📍 Test 6: executeScript Context Integration");
|
|
214
|
-
|
|
215
|
-
// Test that executeScript uses the bound context instead of singletons
|
|
216
|
-
const executeScriptTest = `
|
|
217
|
-
async function main() {
|
|
218
|
-
return callTool("testToolWithContext", {message: "Hello from executeScript!"});
|
|
219
|
-
}
|
|
220
|
-
return main()
|
|
221
|
-
`;
|
|
222
|
-
|
|
223
|
-
toolsService1.defineTools([executeScriptDefinition], { executeScript });
|
|
224
|
-
|
|
225
|
-
try {
|
|
226
|
-
const executeResult = await toolsService1.callTool({
|
|
227
|
-
id: "execute-test",
|
|
228
|
-
type: "function",
|
|
229
|
-
function: {
|
|
230
|
-
name: "executeScript",
|
|
231
|
-
arguments: JSON.stringify({ script: executeScriptTest }),
|
|
232
|
-
},
|
|
233
|
-
});
|
|
234
|
-
console.log(
|
|
235
|
-
"✅ executeScript using dependency injection:",
|
|
236
|
-
executeResult.functionResp
|
|
237
|
-
);
|
|
238
|
-
} catch (error) {
|
|
239
|
-
console.error("❌ executeScript test failed:", error);
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
console.log("\n🎉 All Tests Completed!");
|
|
243
|
-
console.log("\n📊 Test Summary:");
|
|
244
|
-
console.log(
|
|
245
|
-
"✅ Agent isolation working - each agent has independent ToolsService"
|
|
246
|
-
);
|
|
247
|
-
console.log(
|
|
248
|
-
"✅ Context injection working - tools can access all required services"
|
|
249
|
-
);
|
|
250
|
-
console.log("✅ No singleton usage - tools use bound context instead");
|
|
251
|
-
console.log(
|
|
252
|
-
"✅ Backward compatibility maintained - existing patterns still work"
|
|
253
|
-
);
|
|
254
|
-
console.log("✅ executeScript migrated successfully to dependency injection");
|
|
255
|
-
|
|
256
|
-
return true;
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
// Run the validation tests
|
|
260
|
-
if (require.main === module) {
|
|
261
|
-
runValidationTests()
|
|
262
|
-
.then(() => {
|
|
263
|
-
console.log("\n🏆 Dependency Injection Implementation Complete!");
|
|
264
|
-
process.exit(0);
|
|
265
|
-
})
|
|
266
|
-
.catch((error) => {
|
|
267
|
-
console.error("\n❌ Validation tests failed:", error);
|
|
268
|
-
process.exit(1);
|
|
269
|
-
});
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
export { runValidationTests, TestAgent1, TestAgent2 };
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ts-node
|
|
2
|
-
/**
|
|
3
|
-
* Quick test for executeScript - minimal example
|
|
4
|
-
* Usage: npx ts-node src/agents/tools/executeScript/examples/quick-test.ts
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import { executeScript } from "../../executeScript";
|
|
8
|
-
import { services } from "../../../../services";
|
|
9
|
-
|
|
10
|
-
// Simple test script
|
|
11
|
-
const simpleScript = `
|
|
12
|
-
console.log("Hello from executeScript!");
|
|
13
|
-
|
|
14
|
-
async function main() {
|
|
15
|
-
// Test basic functionality
|
|
16
|
-
console.log("Running simple test...");
|
|
17
|
-
|
|
18
|
-
// Try a simple tool call
|
|
19
|
-
const files = await callTool("fileSearch", { searchTerm: "*.ts" });
|
|
20
|
-
console.log("Found", files?.length || 0, "TypeScript files");
|
|
21
|
-
|
|
22
|
-
return {
|
|
23
|
-
message: "Simple test completed!",
|
|
24
|
-
filesFound: files?.length || 0,
|
|
25
|
-
timestamp: new Date().toISOString()
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
await main().then(result => {
|
|
30
|
-
console.log("Result:", result);
|
|
31
|
-
}).catch(error => {
|
|
32
|
-
console.error("Error:", error);
|
|
33
|
-
});
|
|
34
|
-
`;
|
|
35
|
-
|
|
36
|
-
async function quickTest() {
|
|
37
|
-
console.log("🧪 Quick executeScript test\n");
|
|
38
|
-
|
|
39
|
-
try {
|
|
40
|
-
const { Tools, Clients } = services();
|
|
41
|
-
const result = await executeScript({
|
|
42
|
-
script: simpleScript,
|
|
43
|
-
maxToolCalls: 5,
|
|
44
|
-
maxTokens: 100,
|
|
45
|
-
maxExecutionTimeMs: 10000,
|
|
46
|
-
maxCostUsd: 0.1,
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
console.log("\n📊 QUICK TEST RESULT:");
|
|
50
|
-
console.log("Success:", result.success);
|
|
51
|
-
console.log("Result:", result.result);
|
|
52
|
-
console.log("Tool calls:", result.quotaUsage.toolCalls);
|
|
53
|
-
console.log("Cost: $" + result.quotaUsage.costUsd.toFixed(4));
|
|
54
|
-
|
|
55
|
-
if (result.consoleOutput.length > 0) {
|
|
56
|
-
console.log("\n📝 Console Output:");
|
|
57
|
-
result.consoleOutput.forEach((entry) => {
|
|
58
|
-
console.log(` ${entry}`);
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
if (!result.success) {
|
|
63
|
-
console.log("❌ Error:", result.error);
|
|
64
|
-
}
|
|
65
|
-
} catch (error) {
|
|
66
|
-
console.error("💥 Test failed:", error);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
if (require.main === module) {
|
|
71
|
-
quickTest();
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
export { quickTest };
|