@tyvm/knowhow 0.0.107 → 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.
Files changed (193) hide show
  1. package/README.md +45 -0
  2. package/package.json +9 -4
  3. package/scripts/publish.sh +86 -0
  4. package/src/agents/base/base.ts +10 -0
  5. package/src/agents/tools/execCommand.ts +49 -6
  6. package/src/agents/tools/index.ts +0 -1
  7. package/src/agents/tools/list.ts +0 -2
  8. package/src/chat/CliChatService.ts +7 -1
  9. package/src/chat/modules/AgentModule.ts +55 -30
  10. package/src/chat/modules/SessionsModule.ts +7 -2
  11. package/src/chat/renderer/CompactRenderer.ts +20 -0
  12. package/src/chat/renderer/ConsoleRenderer.ts +19 -0
  13. package/src/chat/renderer/FancyRenderer.ts +19 -0
  14. package/src/chat/renderer/types.ts +11 -0
  15. package/src/cli.ts +79 -661
  16. package/src/clients/anthropic.ts +19 -16
  17. package/src/clients/types.ts +23 -4
  18. package/src/cloudWorker.ts +75 -1
  19. package/src/commands/agent.ts +246 -0
  20. package/src/commands/misc.ts +169 -0
  21. package/src/commands/modules.ts +182 -0
  22. package/src/commands/services.ts +72 -0
  23. package/src/commands/workers.ts +160 -0
  24. package/src/config.ts +37 -0
  25. package/src/index.ts +18 -0
  26. package/src/plugins/embedding.ts +11 -6
  27. package/src/plugins/plugins.ts +0 -21
  28. package/src/plugins/vim.ts +5 -16
  29. package/src/processors/JsonCompressor.ts +6 -6
  30. package/src/services/KnowhowClient.ts +22 -2
  31. package/src/services/S3.ts +10 -0
  32. package/src/services/modules/index.ts +58 -49
  33. package/src/services/modules/types.ts +4 -0
  34. package/src/tunnel.ts +216 -0
  35. package/src/types.ts +0 -1
  36. package/src/worker.ts +105 -312
  37. package/src/workers/auth/WsMiddleware.ts +99 -0
  38. package/src/workers/auth/authMiddleware.ts +104 -0
  39. package/src/workers/auth/types.ts +14 -2
  40. package/src/workers/tools/index.ts +2 -0
  41. package/src/workers/tools/reloadConfig.ts +84 -0
  42. package/tests/services/WorkerReloadConfig.test.ts +141 -0
  43. package/tests/unit/modules/moduleLoading.test.ts +0 -25
  44. package/tests/unit/plugins/pluginLoading.test.ts +0 -85
  45. package/ts_build/package.json +9 -4
  46. package/ts_build/src/agents/base/base.js +11 -0
  47. package/ts_build/src/agents/base/base.js.map +1 -1
  48. package/ts_build/src/agents/tools/execCommand.d.ts +1 -1
  49. package/ts_build/src/agents/tools/execCommand.js +39 -5
  50. package/ts_build/src/agents/tools/execCommand.js.map +1 -1
  51. package/ts_build/src/agents/tools/index.d.ts +0 -1
  52. package/ts_build/src/agents/tools/index.js +0 -1
  53. package/ts_build/src/agents/tools/index.js.map +1 -1
  54. package/ts_build/src/agents/tools/list.js +0 -2
  55. package/ts_build/src/agents/tools/list.js.map +1 -1
  56. package/ts_build/src/chat/CliChatService.js +10 -1
  57. package/ts_build/src/chat/CliChatService.js.map +1 -1
  58. package/ts_build/src/chat/modules/AgentModule.d.ts +1 -1
  59. package/ts_build/src/chat/modules/AgentModule.js +39 -19
  60. package/ts_build/src/chat/modules/AgentModule.js.map +1 -1
  61. package/ts_build/src/chat/modules/SessionsModule.js +7 -2
  62. package/ts_build/src/chat/modules/SessionsModule.js.map +1 -1
  63. package/ts_build/src/chat/renderer/CompactRenderer.d.ts +4 -0
  64. package/ts_build/src/chat/renderer/CompactRenderer.js +16 -0
  65. package/ts_build/src/chat/renderer/CompactRenderer.js.map +1 -1
  66. package/ts_build/src/chat/renderer/ConsoleRenderer.d.ts +4 -0
  67. package/ts_build/src/chat/renderer/ConsoleRenderer.js +16 -0
  68. package/ts_build/src/chat/renderer/ConsoleRenderer.js.map +1 -1
  69. package/ts_build/src/chat/renderer/FancyRenderer.d.ts +4 -0
  70. package/ts_build/src/chat/renderer/FancyRenderer.js +16 -0
  71. package/ts_build/src/chat/renderer/FancyRenderer.js.map +1 -1
  72. package/ts_build/src/chat/renderer/types.d.ts +2 -0
  73. package/ts_build/src/cli.js +40 -519
  74. package/ts_build/src/cli.js.map +1 -1
  75. package/ts_build/src/clients/anthropic.d.ts +5 -5
  76. package/ts_build/src/clients/anthropic.js +19 -16
  77. package/ts_build/src/clients/anthropic.js.map +1 -1
  78. package/ts_build/src/clients/types.d.ts +5 -2
  79. package/ts_build/src/cloudWorker.d.ts +9 -0
  80. package/ts_build/src/cloudWorker.js +36 -0
  81. package/ts_build/src/cloudWorker.js.map +1 -1
  82. package/ts_build/src/commands/agent.d.ts +6 -0
  83. package/ts_build/src/commands/agent.js +229 -0
  84. package/ts_build/src/commands/agent.js.map +1 -0
  85. package/ts_build/src/commands/misc.d.ts +10 -0
  86. package/ts_build/src/commands/misc.js +195 -0
  87. package/ts_build/src/commands/misc.js.map +1 -0
  88. package/ts_build/src/commands/modules.d.ts +3 -0
  89. package/ts_build/src/commands/modules.js +160 -0
  90. package/ts_build/src/commands/modules.js.map +1 -0
  91. package/ts_build/src/commands/services.d.ts +5 -0
  92. package/ts_build/src/commands/services.js +86 -0
  93. package/ts_build/src/commands/services.js.map +1 -0
  94. package/ts_build/src/commands/workers.d.ts +6 -0
  95. package/ts_build/src/commands/workers.js +163 -0
  96. package/ts_build/src/commands/workers.js.map +1 -0
  97. package/ts_build/src/config.d.ts +1 -0
  98. package/ts_build/src/config.js +32 -0
  99. package/ts_build/src/config.js.map +1 -1
  100. package/ts_build/src/index.d.ts +1 -0
  101. package/ts_build/src/index.js +17 -1
  102. package/ts_build/src/index.js.map +1 -1
  103. package/ts_build/src/plugins/embedding.js +4 -3
  104. package/ts_build/src/plugins/embedding.js.map +1 -1
  105. package/ts_build/src/plugins/plugins.d.ts +0 -2
  106. package/ts_build/src/plugins/plugins.js +0 -11
  107. package/ts_build/src/plugins/plugins.js.map +1 -1
  108. package/ts_build/src/plugins/vim.js +3 -9
  109. package/ts_build/src/plugins/vim.js.map +1 -1
  110. package/ts_build/src/processors/JsonCompressor.js +4 -4
  111. package/ts_build/src/processors/JsonCompressor.js.map +1 -1
  112. package/ts_build/src/services/KnowhowClient.d.ts +12 -0
  113. package/ts_build/src/services/KnowhowClient.js +11 -0
  114. package/ts_build/src/services/KnowhowClient.js.map +1 -1
  115. package/ts_build/src/services/S3.js +7 -0
  116. package/ts_build/src/services/S3.js.map +1 -1
  117. package/ts_build/src/services/modules/index.d.ts +33 -0
  118. package/ts_build/src/services/modules/index.js +38 -42
  119. package/ts_build/src/services/modules/index.js.map +1 -1
  120. package/ts_build/src/services/modules/types.d.ts +4 -0
  121. package/ts_build/src/tunnel.d.ts +27 -0
  122. package/ts_build/src/tunnel.js +112 -0
  123. package/ts_build/src/tunnel.js.map +1 -0
  124. package/ts_build/src/types.d.ts +0 -1
  125. package/ts_build/src/types.js.map +1 -1
  126. package/ts_build/src/worker.d.ts +1 -4
  127. package/ts_build/src/worker.js +59 -227
  128. package/ts_build/src/worker.js.map +1 -1
  129. package/ts_build/src/workers/auth/WsMiddleware.d.ts +8 -0
  130. package/ts_build/src/workers/auth/WsMiddleware.js +65 -0
  131. package/ts_build/src/workers/auth/WsMiddleware.js.map +1 -0
  132. package/ts_build/src/workers/auth/authMiddleware.d.ts +3 -0
  133. package/ts_build/src/workers/auth/authMiddleware.js +60 -0
  134. package/ts_build/src/workers/auth/authMiddleware.js.map +1 -0
  135. package/ts_build/src/workers/auth/types.d.ts +8 -1
  136. package/ts_build/src/workers/tools/index.d.ts +2 -0
  137. package/ts_build/src/workers/tools/index.js +4 -1
  138. package/ts_build/src/workers/tools/index.js.map +1 -1
  139. package/ts_build/src/workers/tools/reloadConfig.d.ts +14 -0
  140. package/ts_build/src/workers/tools/reloadConfig.js +48 -0
  141. package/ts_build/src/workers/tools/reloadConfig.js.map +1 -0
  142. package/ts_build/tests/services/WorkerReloadConfig.test.d.ts +1 -0
  143. package/ts_build/tests/services/WorkerReloadConfig.test.js +86 -0
  144. package/ts_build/tests/services/WorkerReloadConfig.test.js.map +1 -0
  145. package/ts_build/tests/unit/modules/moduleLoading.test.js +0 -19
  146. package/ts_build/tests/unit/modules/moduleLoading.test.js.map +1 -1
  147. package/ts_build/tests/unit/plugins/pluginLoading.test.js +0 -65
  148. package/ts_build/tests/unit/plugins/pluginLoading.test.js.map +1 -1
  149. package/src/agents/tools/executeScript/README.md +0 -94
  150. package/src/agents/tools/executeScript/definition.ts +0 -79
  151. package/src/agents/tools/executeScript/examples/dependency-injection-validation.ts +0 -272
  152. package/src/agents/tools/executeScript/examples/quick-test.ts +0 -74
  153. package/src/agents/tools/executeScript/examples/serialization-test.ts +0 -321
  154. package/src/agents/tools/executeScript/examples/test-runner.ts +0 -197
  155. package/src/agents/tools/executeScript/index.ts +0 -98
  156. package/src/services/script-execution/SandboxContext.ts +0 -282
  157. package/src/services/script-execution/ScriptExecutor.ts +0 -441
  158. package/src/services/script-execution/ScriptPolicy.ts +0 -194
  159. package/src/services/script-execution/ScriptTracer.ts +0 -249
  160. package/src/services/script-execution/types.ts +0 -134
  161. package/ts_build/src/agents/tools/executeScript/definition.d.ts +0 -2
  162. package/ts_build/src/agents/tools/executeScript/definition.js +0 -76
  163. package/ts_build/src/agents/tools/executeScript/definition.js.map +0 -1
  164. package/ts_build/src/agents/tools/executeScript/examples/dependency-injection-validation.d.ts +0 -18
  165. package/ts_build/src/agents/tools/executeScript/examples/dependency-injection-validation.js +0 -192
  166. package/ts_build/src/agents/tools/executeScript/examples/dependency-injection-validation.js.map +0 -1
  167. package/ts_build/src/agents/tools/executeScript/examples/quick-test.d.ts +0 -3
  168. package/ts_build/src/agents/tools/executeScript/examples/quick-test.js +0 -64
  169. package/ts_build/src/agents/tools/executeScript/examples/quick-test.js.map +0 -1
  170. package/ts_build/src/agents/tools/executeScript/examples/serialization-test.d.ts +0 -15
  171. package/ts_build/src/agents/tools/executeScript/examples/serialization-test.js +0 -266
  172. package/ts_build/src/agents/tools/executeScript/examples/serialization-test.js.map +0 -1
  173. package/ts_build/src/agents/tools/executeScript/examples/test-runner.d.ts +0 -4
  174. package/ts_build/src/agents/tools/executeScript/examples/test-runner.js +0 -208
  175. package/ts_build/src/agents/tools/executeScript/examples/test-runner.js.map +0 -1
  176. package/ts_build/src/agents/tools/executeScript/index.d.ts +0 -28
  177. package/ts_build/src/agents/tools/executeScript/index.js +0 -72
  178. package/ts_build/src/agents/tools/executeScript/index.js.map +0 -1
  179. package/ts_build/src/services/script-execution/SandboxContext.d.ts +0 -34
  180. package/ts_build/src/services/script-execution/SandboxContext.js +0 -189
  181. package/ts_build/src/services/script-execution/SandboxContext.js.map +0 -1
  182. package/ts_build/src/services/script-execution/ScriptExecutor.d.ts +0 -19
  183. package/ts_build/src/services/script-execution/ScriptExecutor.js +0 -269
  184. package/ts_build/src/services/script-execution/ScriptExecutor.js.map +0 -1
  185. package/ts_build/src/services/script-execution/ScriptPolicy.d.ts +0 -28
  186. package/ts_build/src/services/script-execution/ScriptPolicy.js +0 -115
  187. package/ts_build/src/services/script-execution/ScriptPolicy.js.map +0 -1
  188. package/ts_build/src/services/script-execution/ScriptTracer.d.ts +0 -19
  189. package/ts_build/src/services/script-execution/ScriptTracer.js +0 -186
  190. package/ts_build/src/services/script-execution/ScriptTracer.js.map +0 -1
  191. package/ts_build/src/services/script-execution/types.d.ts +0 -108
  192. package/ts_build/src/services/script-execution/types.js +0 -3
  193. package/ts_build/src/services/script-execution/types.js.map +0 -1
@@ -0,0 +1,14 @@
1
+ import { Tool } from "../../clients/types";
2
+ import { McpServerService } from "../../services/McpServer";
3
+ import { McpService } from "../../services/Mcp";
4
+ import { ToolsService } from "../../services/Tools";
5
+ export interface ReloadConfigResult {
6
+ success: boolean;
7
+ toolCount: number;
8
+ mcpCount: number;
9
+ message: string;
10
+ }
11
+ export declare function makeReloadConfigTool(Mcp: McpService, Tools: ToolsService, mcpServer: McpServerService, setToolsToUse: (tools: ReturnType<typeof Tools.getToolsByNames>) => void): {
12
+ reloadConfig: () => Promise<ReloadConfigResult>;
13
+ reloadConfigDefinition: Tool;
14
+ };
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeReloadConfigTool = makeReloadConfigTool;
4
+ const config_1 = require("../../config");
5
+ function makeReloadConfigTool(Mcp, Tools, mcpServer, setToolsToUse) {
6
+ const reloadConfig = async () => {
7
+ try {
8
+ const freshConfig = await (0, config_1.getConfig)();
9
+ await Mcp.closeAll();
10
+ await Mcp.connectToConfigured(Tools);
11
+ const allowedToolNames = freshConfig.worker?.allowedTools ?? Tools.getToolNames();
12
+ const newToolsToUse = Tools.getToolsByNames(allowedToolNames);
13
+ setToolsToUse(newToolsToUse);
14
+ mcpServer.withTools(newToolsToUse);
15
+ const mcpCount = freshConfig.mcps?.length ?? 0;
16
+ return {
17
+ success: true,
18
+ toolCount: newToolsToUse.length,
19
+ mcpCount,
20
+ message: `Config reloaded: ${newToolsToUse.length} tools active, ${mcpCount} MCP(s) configured`,
21
+ };
22
+ }
23
+ catch (err) {
24
+ const message = err instanceof Error ? err.message : String(err);
25
+ return {
26
+ success: false,
27
+ toolCount: 0,
28
+ mcpCount: 0,
29
+ message: `Failed to reload config: ${message}`,
30
+ };
31
+ }
32
+ };
33
+ const reloadConfigDefinition = {
34
+ type: "function",
35
+ function: {
36
+ name: "reloadConfig",
37
+ description: "Reload the worker config from disk, reconnect all MCPs, and rebuild the active tool list. " +
38
+ "Call this after running `knowhow cloudworker --pull <id>` to apply updated MCPs without restarting the worker.",
39
+ parameters: {
40
+ type: "object",
41
+ properties: {},
42
+ required: [],
43
+ },
44
+ },
45
+ };
46
+ return { reloadConfig, reloadConfigDefinition };
47
+ }
48
+ //# sourceMappingURL=reloadConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reloadConfig.js","sourceRoot":"","sources":["../../../../src/workers/tools/reloadConfig.ts"],"names":[],"mappings":";;AAsBA,oDA6DC;AAlFD,yCAAyC;AAqBzC,SAAgB,oBAAoB,CAClC,GAAe,EACf,KAAmB,EACnB,SAA2B,EAC3B,aAAwE;IAExE,MAAM,YAAY,GAAG,KAAK,IAAiC,EAAE;QAC3D,IAAI,CAAC;YAEH,MAAM,WAAW,GAAG,MAAM,IAAA,kBAAS,GAAE,CAAC;YAGtC,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC;YAGrB,MAAM,GAAG,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YAGrC,MAAM,gBAAgB,GACpB,WAAW,CAAC,MAAM,EAAE,YAAY,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;YAC3D,MAAM,aAAa,GAAG,KAAK,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;YAC9D,aAAa,CAAC,aAAa,CAAC,CAAC;YAG7B,SAAS,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;YAEnC,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,CAAC;YAE/C,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE,aAAa,CAAC,MAAM;gBAC/B,QAAQ;gBACR,OAAO,EAAE,oBAAoB,aAAa,CAAC,MAAM,kBAAkB,QAAQ,oBAAoB;aAChG,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,SAAS,EAAE,CAAC;gBACZ,QAAQ,EAAE,CAAC;gBACX,OAAO,EAAE,4BAA4B,OAAO,EAAE;aAC/C,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,sBAAsB,GAAS;QACnC,IAAI,EAAE,UAAmB;QACzB,QAAQ,EAAE;YACR,IAAI,EAAE,cAAc;YACpB,WAAW,EACT,4FAA4F;gBAC5F,gHAAgH;YAClH,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,EAAE;gBACd,QAAQ,EAAE,EAAE;aACb;SACF;KACF,CAAC;IAEF,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,CAAC;AAClD,CAAC"}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const Mcp_1 = require("../../src/services/Mcp");
4
+ const Tools_1 = require("../../src/services/Tools");
5
+ async function simulateReloadConfig(Mcp, Tools, mcpServer, getConfig, toolsToUseRef) {
6
+ const freshConfig = await getConfig();
7
+ await Mcp.closeAll();
8
+ await Mcp.connectToConfigured(Tools);
9
+ const allowedToolNames = freshConfig.worker?.allowedTools ?? Tools.getToolNames();
10
+ toolsToUseRef.value = Tools.getToolsByNames(allowedToolNames);
11
+ mcpServer.withTools(toolsToUseRef.value);
12
+ }
13
+ describe("Worker reloadConfig handler", () => {
14
+ let Mcp;
15
+ let Tools;
16
+ let mcpServer;
17
+ let toolsToUseRef;
18
+ beforeEach(() => {
19
+ Mcp = new Mcp_1.McpService();
20
+ Tools = new Tools_1.ToolsService();
21
+ mcpServer = { withTools: jest.fn() };
22
+ toolsToUseRef = { value: [] };
23
+ jest.spyOn(Mcp, "closeAll").mockResolvedValue(undefined);
24
+ jest.spyOn(Mcp, "connectToConfigured").mockResolvedValue(undefined);
25
+ });
26
+ afterEach(() => {
27
+ jest.restoreAllMocks();
28
+ });
29
+ it("should call closeAll() to tear down existing MCP connections", async () => {
30
+ const getConfig = jest
31
+ .fn()
32
+ .mockResolvedValue({ worker: { allowedTools: [] } });
33
+ await simulateReloadConfig(Mcp, Tools, mcpServer, getConfig, toolsToUseRef);
34
+ expect(Mcp.closeAll).toHaveBeenCalledTimes(1);
35
+ });
36
+ it("should call connectToConfigured() to reconnect MCPs from fresh config", async () => {
37
+ const getConfig = jest
38
+ .fn()
39
+ .mockResolvedValue({ worker: { allowedTools: [] } });
40
+ await simulateReloadConfig(Mcp, Tools, mcpServer, getConfig, toolsToUseRef);
41
+ expect(Mcp.connectToConfigured).toHaveBeenCalledWith(Tools);
42
+ });
43
+ it("should rebuild the tool list from allowedTools in fresh config", async () => {
44
+ const toolsByNamesSpy = jest
45
+ .spyOn(Tools, "getToolsByNames")
46
+ .mockReturnValue([{ function: { name: "execCommand" } }]);
47
+ const getConfig = jest
48
+ .fn()
49
+ .mockResolvedValue({ worker: { allowedTools: ["execCommand"] } });
50
+ await simulateReloadConfig(Mcp, Tools, mcpServer, getConfig, toolsToUseRef);
51
+ expect(toolsByNamesSpy).toHaveBeenCalledWith(["execCommand"]);
52
+ expect(toolsToUseRef.value).toHaveLength(1);
53
+ });
54
+ it("should fall back to all tool names when allowedTools is not set", async () => {
55
+ const allNames = ["execCommand", "readFile", "writeFileChunk"];
56
+ jest.spyOn(Tools, "getToolNames").mockReturnValue(allNames);
57
+ const toolsByNamesSpy = jest
58
+ .spyOn(Tools, "getToolsByNames")
59
+ .mockReturnValue([]);
60
+ const getConfig = jest.fn().mockResolvedValue({});
61
+ await simulateReloadConfig(Mcp, Tools, mcpServer, getConfig, toolsToUseRef);
62
+ expect(toolsByNamesSpy).toHaveBeenCalledWith(allNames);
63
+ });
64
+ it("should call mcpServer.withTools() with the rebuilt tool list", async () => {
65
+ const fakeTools = [{ function: { name: "readFile" } }];
66
+ jest.spyOn(Tools, "getToolsByNames").mockReturnValue(fakeTools);
67
+ const getConfig = jest
68
+ .fn()
69
+ .mockResolvedValue({ worker: { allowedTools: ["readFile"] } });
70
+ await simulateReloadConfig(Mcp, Tools, mcpServer, getConfig, toolsToUseRef);
71
+ expect(mcpServer.withTools).toHaveBeenCalledWith(fakeTools);
72
+ });
73
+ it("should re-read the config on every reload (not use stale config)", async () => {
74
+ const getConfig = jest
75
+ .fn()
76
+ .mockResolvedValueOnce({ worker: { allowedTools: ["execCommand"] } })
77
+ .mockResolvedValueOnce({ worker: { allowedTools: ["readFile", "writeFileChunk"] } });
78
+ jest.spyOn(Tools, "getToolsByNames").mockReturnValue([]);
79
+ await simulateReloadConfig(Mcp, Tools, mcpServer, getConfig, toolsToUseRef);
80
+ await simulateReloadConfig(Mcp, Tools, mcpServer, getConfig, toolsToUseRef);
81
+ expect(getConfig).toHaveBeenCalledTimes(2);
82
+ expect(Mcp.closeAll).toHaveBeenCalledTimes(2);
83
+ expect(Mcp.connectToConfigured).toHaveBeenCalledTimes(2);
84
+ });
85
+ });
86
+ //# sourceMappingURL=WorkerReloadConfig.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkerReloadConfig.test.js","sourceRoot":"","sources":["../../../tests/services/WorkerReloadConfig.test.ts"],"names":[],"mappings":"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"}
@@ -28,7 +28,6 @@ function makeContext(overrides) {
28
28
  },
29
29
  Plugins: {
30
30
  registerPlugin: jest.fn(),
31
- loadPluginsFromConfig: jest.fn().mockResolvedValue(undefined),
32
31
  },
33
32
  Clients: {
34
33
  registerClient: jest.fn(),
@@ -141,24 +140,6 @@ describe("ModulesService.loadModulesFromConfig", () => {
141
140
  expect(context.Plugins.registerPlugin).toHaveBeenCalledWith("test-plugin", mockPluginInstance);
142
141
  spy.mockRestore();
143
142
  });
144
- it("should call loadPluginsFromConfig with both global and local configs", async () => {
145
- const localConfig = {
146
- modules: [],
147
- pluginPackages: { asana: "@knowhow/plugin-asana" },
148
- };
149
- const globalConfig = {
150
- modules: [],
151
- pluginPackages: { linear: "@knowhow/plugin-linear" },
152
- };
153
- mockGetConfig.mockResolvedValue(localConfig);
154
- mockGetGlobalConfig.mockResolvedValue(globalConfig);
155
- const service = new modules_1.ModulesService();
156
- const context = makeContext();
157
- await service.loadModulesFromConfig(context);
158
- expect(context.Plugins.loadPluginsFromConfig).toHaveBeenCalledTimes(2);
159
- expect(context.Plugins.loadPluginsFromConfig).toHaveBeenCalledWith(localConfig);
160
- expect(context.Plugins.loadPluginsFromConfig).toHaveBeenCalledWith(globalConfig);
161
- });
162
143
  it("should load modules from both global and local config paths", async () => {
163
144
  const globalModule = makeModule({ agents: [{ name: "GlobalAgent" }] });
164
145
  const localModule = makeModule({ agents: [{ name: "LocalAgent" }] });
@@ -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;YACzB,qBAAqB,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;SACvD;QACR,OAAO,EAAE;YACP,cAAc,EAAE,IAAI,CAAC,EAAE,EAAE;YACzB,cAAc,EAAE,IAAI,CAAC,EAAE,EAAE;SACnB;QACR,KAAK,EAAE;YACL,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE;YAClB,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE;SAChB;QACR,UAAU,EAAE;YACV,kBAAkB,EAAE,IAAI,CAAC,EAAE,EAAE;YAC7B,aAAa,EAAE,IAAI,CAAC,EAAE,EAAE;YACxB,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE;SACb;QACR,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,SAAkC;IACpD,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;QAC5C,MAAM,EAAE,EAAE;QACV,KAAK,EAAE,EAAE;QACT,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,EAAE;QACZ,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,sCAAsC,EAAE,GAAG,EAAE;IACpD,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,aAAa,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,EAAE,EAAuB,CAAC,CAAC;QACtE,mBAAmB,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,EAAE,EAAuB,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,SAAS,GAAG,EAAE,IAAI,EAAE,WAAW,EAAS,CAAC;QAC/C,MAAM,UAAU,GAAG,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAEvD,aAAa,CAAC,iBAAiB,CAAC;YAC9B,OAAO,EAAE,CAAC,eAAe,CAAC;SACN,CAAC,CAAC;QAExB,MAAM,OAAO,GAAG,IAAI,wBAAc,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;QAG9B,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAc,EAAE,uBAAuB,CAAC;aACnE,kBAAkB,CAAC,KAAK,EAAE,GAAmB,EAAE,EAAE;YAChD,MAAM,WAAW,GAAG,GAAG,IAAI,OAAO,CAAC;YACnC,MAAM,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAY,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACpE,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;gBACtC,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC,CAAC,CAAC;QAEL,MAAM,OAAO,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAE7C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;QACrE,UAAU,CAAC,WAAW,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QAC/C,MAAM,WAAW,GAAG;YAClB,IAAI,EAAE,UAAmB;YACzB,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,aAAa;gBAC1B,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;aAC7D;SACF,CAAC;QACF,MAAM,eAAe,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAClC,MAAM,UAAU,GAAG,UAAU,CAAC;YAC5B,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;SAC/E,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,IAAI,wBAAc,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;QAE9B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAc,EAAE,uBAAuB,CAAC;aAC5D,kBAAkB,CAAC,KAAK,EAAE,GAAmB,EAAE,EAAE;YAChD,MAAM,WAAW,GAAG,GAAG,IAAI,OAAO,CAAC;YACnC,MAAM,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAY,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACpE,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;gBACpC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC3C,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7E,CAAC;QACH,CAAC,CAAC,CAAC;QAEL,MAAM,OAAO,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAE7C,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;QAChE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;QAClF,GAAG,CAAC,WAAW,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACjD,MAAM,kBAAkB,GAAG;YACzB,IAAI,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE;YACjD,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI;YACrB,MAAM,EAAE,GAAG,EAAE,GAAE,CAAC;YAChB,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;YACjB,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/B,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACnC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;SACjC,CAAC;QAEF,MAAM,eAAe,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,CAAC;QAC/E,MAAM,UAAU,GAAG,UAAU,CAAC;YAC5B,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,eAAsB,EAAE,CAAC;SACnE,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,IAAI,wBAAc,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;QAE9B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAc,EAAE,uBAAuB,CAAC;aAC5D,kBAAkB,CAAC,KAAK,EAAE,GAAmB,EAAE,EAAE;YAChD,MAAM,WAAW,GAAG,GAAG,IAAI,OAAO,CAAC;YACnC,MAAM,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAY,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACpE,KAAK,MAAM,MAAM,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;gBACxC,MAAM,QAAQ,GAAG,IAAK,MAAM,CAAC,MAAc,CAAC,WAAW,CAAC,CAAC;gBACzD,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC,CAAC,CAAC;QAEL,MAAM,OAAO,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAE7C,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,oBAAoB,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;QAC/F,GAAG,CAAC,WAAW,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;QACpF,MAAM,WAAW,GAAG;YAClB,OAAO,EAAE,EAAE;YACX,cAAc,EAAE,EAAE,KAAK,EAAE,uBAAuB,EAAE;SAC9B,CAAC;QACvB,MAAM,YAAY,GAAG;YACnB,OAAO,EAAE,EAAE;YACX,cAAc,EAAE,EAAE,MAAM,EAAE,wBAAwB,EAAE;SAChC,CAAC;QAEvB,aAAa,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAC7C,mBAAmB,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAEpD,MAAM,OAAO,GAAG,IAAI,wBAAc,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;QAE9B,MAAM,OAAO,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAG7C,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACvE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;QAChF,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QAC3E,MAAM,YAAY,GAAG,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAS,CAAC,EAAE,CAAC,CAAC;QAC9E,MAAM,WAAW,GAAG,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAS,CAAC,EAAE,CAAC,CAAC;QAE5E,aAAa,CAAC,iBAAiB,CAAC;YAC9B,OAAO,EAAE,CAAC,gBAAgB,CAAC;SACP,CAAC,CAAC;QACxB,mBAAmB,CAAC,iBAAiB,CAAC;YACpC,OAAO,EAAE,CAAC,iBAAiB,CAAC;SACR,CAAC,CAAC;QAExB,MAAM,OAAO,GAAG,IAAI,wBAAc,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;QAE9B,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAc,EAAE,uBAAuB,CAAC;aAC5D,kBAAkB,CAAC,KAAK,EAAE,GAAmB,EAAE,EAAE;YAChD,MAAM,WAAW,GAAG,GAAG,IAAI,OAAO,CAAC;YACnC,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI;gBACxB,CAAC,iBAAiB,EAAE,YAAY,CAAC;gBACjC,CAAC,gBAAgB,EAAE,WAAW,CAAC;aACH,EAAE,CAAC;gBAC/B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACvB,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAY,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC7D,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;oBAC/B,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEL,MAAM,OAAO,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAE7C,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC,CAAC;QACnE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC9D,GAAG,CAAC,WAAW,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
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":"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"}
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
- };