@tyvm/knowhow 0.0.108 → 0.0.109-dev.2b94ba2

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 (236) hide show
  1. package/README.md +45 -0
  2. package/package.json +9 -4
  3. package/scripts/build-for-node.sh +10 -24
  4. package/scripts/publish.sh +86 -0
  5. package/src/agents/base/base.ts +10 -0
  6. package/src/agents/tools/execCommand.ts +49 -6
  7. package/src/agents/tools/index.ts +0 -1
  8. package/src/agents/tools/list.ts +2 -4
  9. package/src/chat/CliChatService.ts +11 -2
  10. package/src/chat/modules/AgentModule.ts +61 -31
  11. package/src/chat/modules/SessionsModule.ts +47 -3
  12. package/src/chat/modules/SystemModule.ts +2 -2
  13. package/src/chat/renderer/CompactRenderer.ts +20 -0
  14. package/src/chat/renderer/ConsoleRenderer.ts +19 -0
  15. package/src/chat/renderer/FancyRenderer.ts +19 -0
  16. package/src/chat/renderer/types.ts +11 -0
  17. package/src/cli.ts +91 -659
  18. package/src/clients/anthropic.ts +18 -17
  19. package/src/clients/index.ts +31 -11
  20. package/src/clients/openai.ts +8 -5
  21. package/src/clients/types.ts +48 -10
  22. package/src/clients/withRetry.ts +89 -0
  23. package/src/cloudWorker.ts +175 -113
  24. package/src/commands/agent.ts +246 -0
  25. package/src/commands/misc.ts +174 -0
  26. package/src/commands/modules.ts +552 -0
  27. package/src/commands/services.ts +77 -0
  28. package/src/commands/workers.ts +168 -0
  29. package/src/config.ts +38 -1
  30. package/src/fileSync.ts +70 -29
  31. package/src/hashes.ts +35 -13
  32. package/src/index.ts +18 -0
  33. package/src/logger.ts +197 -0
  34. package/src/plugins/embedding.ts +11 -6
  35. package/src/plugins/plugins.ts +0 -21
  36. package/src/plugins/vim.ts +5 -16
  37. package/src/processors/JsonCompressor.ts +6 -6
  38. package/src/services/EventService.ts +61 -1
  39. package/src/services/KnowhowClient.ts +34 -4
  40. package/src/services/MediaProcessorService.ts +79 -10
  41. package/src/services/modules/index.ts +102 -53
  42. package/src/services/modules/types.ts +6 -0
  43. package/src/tunnel.ts +216 -0
  44. package/src/types.ts +0 -1
  45. package/src/worker.ts +105 -312
  46. package/src/workers/auth/WsMiddleware.ts +99 -0
  47. package/src/workers/auth/authMiddleware.ts +104 -0
  48. package/src/workers/auth/types.ts +14 -2
  49. package/src/workers/tools/index.ts +2 -0
  50. package/src/workers/tools/reloadConfig.ts +84 -0
  51. package/tests/services/WorkerReloadConfig.test.ts +141 -0
  52. package/tests/unit/clients/AIClient.test.ts +446 -0
  53. package/tests/unit/clients/withRetry.test.ts +319 -0
  54. package/tests/unit/commands/github-credentials.test.ts +210 -0
  55. package/tests/unit/modules/moduleLoading.test.ts +39 -37
  56. package/tests/unit/plugins/pluginLoading.test.ts +0 -85
  57. package/ts_build/package.json +9 -4
  58. package/ts_build/src/agents/base/base.js +11 -0
  59. package/ts_build/src/agents/base/base.js.map +1 -1
  60. package/ts_build/src/agents/tools/execCommand.d.ts +1 -1
  61. package/ts_build/src/agents/tools/execCommand.js +39 -5
  62. package/ts_build/src/agents/tools/execCommand.js.map +1 -1
  63. package/ts_build/src/agents/tools/index.d.ts +0 -1
  64. package/ts_build/src/agents/tools/index.js +0 -1
  65. package/ts_build/src/agents/tools/index.js.map +1 -1
  66. package/ts_build/src/agents/tools/list.js +2 -4
  67. package/ts_build/src/agents/tools/list.js.map +1 -1
  68. package/ts_build/src/chat/CliChatService.js +14 -2
  69. package/ts_build/src/chat/CliChatService.js.map +1 -1
  70. package/ts_build/src/chat/modules/AgentModule.d.ts +1 -1
  71. package/ts_build/src/chat/modules/AgentModule.js +43 -20
  72. package/ts_build/src/chat/modules/AgentModule.js.map +1 -1
  73. package/ts_build/src/chat/modules/SessionsModule.js +37 -3
  74. package/ts_build/src/chat/modules/SessionsModule.js.map +1 -1
  75. package/ts_build/src/chat/modules/SystemModule.js +2 -2
  76. package/ts_build/src/chat/modules/SystemModule.js.map +1 -1
  77. package/ts_build/src/chat/renderer/CompactRenderer.d.ts +4 -0
  78. package/ts_build/src/chat/renderer/CompactRenderer.js +16 -0
  79. package/ts_build/src/chat/renderer/CompactRenderer.js.map +1 -1
  80. package/ts_build/src/chat/renderer/ConsoleRenderer.d.ts +4 -0
  81. package/ts_build/src/chat/renderer/ConsoleRenderer.js +16 -0
  82. package/ts_build/src/chat/renderer/ConsoleRenderer.js.map +1 -1
  83. package/ts_build/src/chat/renderer/FancyRenderer.d.ts +4 -0
  84. package/ts_build/src/chat/renderer/FancyRenderer.js +16 -0
  85. package/ts_build/src/chat/renderer/FancyRenderer.js.map +1 -1
  86. package/ts_build/src/chat/renderer/types.d.ts +2 -0
  87. package/ts_build/src/cli.js +47 -519
  88. package/ts_build/src/cli.js.map +1 -1
  89. package/ts_build/src/clients/anthropic.d.ts +5 -5
  90. package/ts_build/src/clients/anthropic.js +18 -17
  91. package/ts_build/src/clients/anthropic.js.map +1 -1
  92. package/ts_build/src/clients/index.js +9 -10
  93. package/ts_build/src/clients/index.js.map +1 -1
  94. package/ts_build/src/clients/openai.js +4 -4
  95. package/ts_build/src/clients/openai.js.map +1 -1
  96. package/ts_build/src/clients/types.d.ts +15 -8
  97. package/ts_build/src/clients/withRetry.d.ts +2 -0
  98. package/ts_build/src/clients/withRetry.js +60 -0
  99. package/ts_build/src/clients/withRetry.js.map +1 -0
  100. package/ts_build/src/cloudWorker.d.ts +14 -0
  101. package/ts_build/src/cloudWorker.js +105 -66
  102. package/ts_build/src/cloudWorker.js.map +1 -1
  103. package/ts_build/src/commands/agent.d.ts +6 -0
  104. package/ts_build/src/commands/agent.js +229 -0
  105. package/ts_build/src/commands/agent.js.map +1 -0
  106. package/ts_build/src/commands/misc.d.ts +10 -0
  107. package/ts_build/src/commands/misc.js +197 -0
  108. package/ts_build/src/commands/misc.js.map +1 -0
  109. package/ts_build/src/commands/modules.d.ts +3 -0
  110. package/ts_build/src/commands/modules.js +487 -0
  111. package/ts_build/src/commands/modules.js.map +1 -0
  112. package/ts_build/src/commands/services.d.ts +5 -0
  113. package/ts_build/src/commands/services.js +87 -0
  114. package/ts_build/src/commands/services.js.map +1 -0
  115. package/ts_build/src/commands/workers.d.ts +6 -0
  116. package/ts_build/src/commands/workers.js +168 -0
  117. package/ts_build/src/commands/workers.js.map +1 -0
  118. package/ts_build/src/config.d.ts +1 -0
  119. package/ts_build/src/config.js +33 -1
  120. package/ts_build/src/config.js.map +1 -1
  121. package/ts_build/src/fileSync.d.ts +6 -0
  122. package/ts_build/src/fileSync.js +50 -23
  123. package/ts_build/src/fileSync.js.map +1 -1
  124. package/ts_build/src/hashes.d.ts +2 -2
  125. package/ts_build/src/hashes.js +35 -9
  126. package/ts_build/src/hashes.js.map +1 -1
  127. package/ts_build/src/index.d.ts +1 -0
  128. package/ts_build/src/index.js +17 -1
  129. package/ts_build/src/index.js.map +1 -1
  130. package/ts_build/src/logger.d.ts +21 -0
  131. package/ts_build/src/logger.js +106 -0
  132. package/ts_build/src/logger.js.map +1 -0
  133. package/ts_build/src/plugins/embedding.js +4 -3
  134. package/ts_build/src/plugins/embedding.js.map +1 -1
  135. package/ts_build/src/plugins/plugins.d.ts +0 -2
  136. package/ts_build/src/plugins/plugins.js +0 -11
  137. package/ts_build/src/plugins/plugins.js.map +1 -1
  138. package/ts_build/src/plugins/vim.js +3 -9
  139. package/ts_build/src/plugins/vim.js.map +1 -1
  140. package/ts_build/src/processors/JsonCompressor.js +4 -4
  141. package/ts_build/src/processors/JsonCompressor.js.map +1 -1
  142. package/ts_build/src/services/EventService.d.ts +6 -1
  143. package/ts_build/src/services/EventService.js +29 -0
  144. package/ts_build/src/services/EventService.js.map +1 -1
  145. package/ts_build/src/services/KnowhowClient.d.ts +13 -1
  146. package/ts_build/src/services/KnowhowClient.js +19 -2
  147. package/ts_build/src/services/KnowhowClient.js.map +1 -1
  148. package/ts_build/src/services/MediaProcessorService.d.ts +5 -4
  149. package/ts_build/src/services/MediaProcessorService.js +53 -8
  150. package/ts_build/src/services/MediaProcessorService.js.map +1 -1
  151. package/ts_build/src/services/modules/index.d.ts +33 -0
  152. package/ts_build/src/services/modules/index.js +73 -49
  153. package/ts_build/src/services/modules/index.js.map +1 -1
  154. package/ts_build/src/services/modules/types.d.ts +6 -0
  155. package/ts_build/src/tunnel.d.ts +27 -0
  156. package/ts_build/src/tunnel.js +112 -0
  157. package/ts_build/src/tunnel.js.map +1 -0
  158. package/ts_build/src/types.d.ts +0 -1
  159. package/ts_build/src/types.js.map +1 -1
  160. package/ts_build/src/worker.d.ts +1 -4
  161. package/ts_build/src/worker.js +59 -227
  162. package/ts_build/src/worker.js.map +1 -1
  163. package/ts_build/src/workers/auth/WsMiddleware.d.ts +8 -0
  164. package/ts_build/src/workers/auth/WsMiddleware.js +65 -0
  165. package/ts_build/src/workers/auth/WsMiddleware.js.map +1 -0
  166. package/ts_build/src/workers/auth/authMiddleware.d.ts +3 -0
  167. package/ts_build/src/workers/auth/authMiddleware.js +60 -0
  168. package/ts_build/src/workers/auth/authMiddleware.js.map +1 -0
  169. package/ts_build/src/workers/auth/types.d.ts +8 -1
  170. package/ts_build/src/workers/tools/index.d.ts +2 -0
  171. package/ts_build/src/workers/tools/index.js +4 -1
  172. package/ts_build/src/workers/tools/index.js.map +1 -1
  173. package/ts_build/src/workers/tools/reloadConfig.d.ts +14 -0
  174. package/ts_build/src/workers/tools/reloadConfig.js +48 -0
  175. package/ts_build/src/workers/tools/reloadConfig.js.map +1 -0
  176. package/ts_build/tests/services/WorkerReloadConfig.test.d.ts +1 -0
  177. package/ts_build/tests/services/WorkerReloadConfig.test.js +86 -0
  178. package/ts_build/tests/services/WorkerReloadConfig.test.js.map +1 -0
  179. package/ts_build/tests/unit/clients/AIClient.test.d.ts +1 -0
  180. package/ts_build/tests/unit/clients/AIClient.test.js +339 -0
  181. package/ts_build/tests/unit/clients/AIClient.test.js.map +1 -0
  182. package/ts_build/tests/unit/clients/withRetry.test.d.ts +1 -0
  183. package/ts_build/tests/unit/clients/withRetry.test.js +225 -0
  184. package/ts_build/tests/unit/clients/withRetry.test.js.map +1 -0
  185. package/ts_build/tests/unit/commands/github-credentials.test.d.ts +1 -0
  186. package/ts_build/tests/unit/commands/github-credentials.test.js +145 -0
  187. package/ts_build/tests/unit/commands/github-credentials.test.js.map +1 -0
  188. package/ts_build/tests/unit/modules/moduleLoading.test.js +20 -26
  189. package/ts_build/tests/unit/modules/moduleLoading.test.js.map +1 -1
  190. package/ts_build/tests/unit/plugins/pluginLoading.test.js +0 -65
  191. package/ts_build/tests/unit/plugins/pluginLoading.test.js.map +1 -1
  192. package/src/agents/tools/executeScript/README.md +0 -94
  193. package/src/agents/tools/executeScript/definition.ts +0 -79
  194. package/src/agents/tools/executeScript/examples/dependency-injection-validation.ts +0 -272
  195. package/src/agents/tools/executeScript/examples/quick-test.ts +0 -74
  196. package/src/agents/tools/executeScript/examples/serialization-test.ts +0 -321
  197. package/src/agents/tools/executeScript/examples/test-runner.ts +0 -197
  198. package/src/agents/tools/executeScript/index.ts +0 -98
  199. package/src/services/script-execution/SandboxContext.ts +0 -282
  200. package/src/services/script-execution/ScriptExecutor.ts +0 -441
  201. package/src/services/script-execution/ScriptPolicy.ts +0 -194
  202. package/src/services/script-execution/ScriptTracer.ts +0 -249
  203. package/src/services/script-execution/types.ts +0 -134
  204. package/ts_build/src/agents/tools/executeScript/definition.d.ts +0 -2
  205. package/ts_build/src/agents/tools/executeScript/definition.js +0 -76
  206. package/ts_build/src/agents/tools/executeScript/definition.js.map +0 -1
  207. package/ts_build/src/agents/tools/executeScript/examples/dependency-injection-validation.d.ts +0 -18
  208. package/ts_build/src/agents/tools/executeScript/examples/dependency-injection-validation.js +0 -192
  209. package/ts_build/src/agents/tools/executeScript/examples/dependency-injection-validation.js.map +0 -1
  210. package/ts_build/src/agents/tools/executeScript/examples/quick-test.d.ts +0 -3
  211. package/ts_build/src/agents/tools/executeScript/examples/quick-test.js +0 -64
  212. package/ts_build/src/agents/tools/executeScript/examples/quick-test.js.map +0 -1
  213. package/ts_build/src/agents/tools/executeScript/examples/serialization-test.d.ts +0 -15
  214. package/ts_build/src/agents/tools/executeScript/examples/serialization-test.js +0 -266
  215. package/ts_build/src/agents/tools/executeScript/examples/serialization-test.js.map +0 -1
  216. package/ts_build/src/agents/tools/executeScript/examples/test-runner.d.ts +0 -4
  217. package/ts_build/src/agents/tools/executeScript/examples/test-runner.js +0 -208
  218. package/ts_build/src/agents/tools/executeScript/examples/test-runner.js.map +0 -1
  219. package/ts_build/src/agents/tools/executeScript/index.d.ts +0 -28
  220. package/ts_build/src/agents/tools/executeScript/index.js +0 -72
  221. package/ts_build/src/agents/tools/executeScript/index.js.map +0 -1
  222. package/ts_build/src/services/script-execution/SandboxContext.d.ts +0 -34
  223. package/ts_build/src/services/script-execution/SandboxContext.js +0 -189
  224. package/ts_build/src/services/script-execution/SandboxContext.js.map +0 -1
  225. package/ts_build/src/services/script-execution/ScriptExecutor.d.ts +0 -19
  226. package/ts_build/src/services/script-execution/ScriptExecutor.js +0 -269
  227. package/ts_build/src/services/script-execution/ScriptExecutor.js.map +0 -1
  228. package/ts_build/src/services/script-execution/ScriptPolicy.d.ts +0 -28
  229. package/ts_build/src/services/script-execution/ScriptPolicy.js +0 -115
  230. package/ts_build/src/services/script-execution/ScriptPolicy.js.map +0 -1
  231. package/ts_build/src/services/script-execution/ScriptTracer.d.ts +0 -19
  232. package/ts_build/src/services/script-execution/ScriptTracer.js +0 -186
  233. package/ts_build/src/services/script-execution/ScriptTracer.js.map +0 -1
  234. package/ts_build/src/services/script-execution/types.d.ts +0 -108
  235. package/ts_build/src/services/script-execution/types.js +0 -3
  236. package/ts_build/src/services/script-execution/types.js.map +0 -1
@@ -1,72 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.executeScript = executeScript;
4
- const ScriptExecutor_1 = require("../../../services/script-execution/ScriptExecutor");
5
- const Tools_1 = require("../../../services/Tools");
6
- const services_1 = require("../../../services");
7
- async function executeScript({ script, maxToolCalls, maxTokens, maxExecutionTimeMs, maxCostUsd, allowNetworkAccess, }) {
8
- try {
9
- const toolService = (this instanceof Tools_1.ToolsService ? this : (0, services_1.services)().Tools);
10
- const toolContext = toolService.getContext();
11
- const { Clients, Tools } = toolContext;
12
- if (!Clients) {
13
- throw new Error("Clients not available in tool context");
14
- }
15
- const executor = new ScriptExecutor_1.ScriptExecutor(Tools, Clients);
16
- const result = await executor.execute({
17
- script,
18
- quotas: {
19
- maxToolCalls: maxToolCalls || 50,
20
- maxTokens: maxTokens || 10000,
21
- maxExecutionTimeMs: maxExecutionTimeMs || 30000,
22
- maxCostUsd: maxCostUsd || 1.0,
23
- maxMemoryMb: 100,
24
- },
25
- policy: {
26
- allowNetworkAccess: allowNetworkAccess ?? false,
27
- },
28
- });
29
- const violations = result.trace.events
30
- .filter((e) => e.type.includes("violation") || e.type.includes("error"))
31
- .map((e) => e.data);
32
- return {
33
- success: result.success,
34
- result: result.result,
35
- error: result.error,
36
- artifacts: result.artifacts.map((a) => ({
37
- id: a.id,
38
- name: a.name,
39
- type: a.type,
40
- contentLength: a.content.length,
41
- createdAt: a.createdAt,
42
- })),
43
- consoleOutput: result.consoleOutput,
44
- metrics: result.trace.metrics,
45
- violations,
46
- executionTimeMs: result.trace.endTime - result.trace.startTime,
47
- quotaUsage: {
48
- toolCalls: result.trace.metrics.toolCallCount,
49
- tokens: result.trace.metrics.tokenUsage.total,
50
- costUsd: result.trace.metrics.costUsd,
51
- },
52
- };
53
- }
54
- catch (error) {
55
- return {
56
- success: false,
57
- error: error instanceof Error ? error.message : String(error),
58
- result: null,
59
- artifacts: [],
60
- consoleOutput: [],
61
- metrics: null,
62
- violations: [],
63
- executionTimeMs: 0,
64
- quotaUsage: {
65
- toolCalls: 0,
66
- tokens: 0,
67
- costUsd: 0,
68
- },
69
- };
70
- }
71
- }
72
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/agents/tools/executeScript/index.ts"],"names":[],"mappings":"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"}
@@ -1,34 +0,0 @@
1
- import { AIClient } from "../../clients";
2
- import { ScriptTracer } from "./ScriptTracer";
3
- import { ScriptPolicyEnforcer } from "./ScriptPolicy";
4
- import { Artifact, QuotaUsage } from "./types";
5
- import { Message } from "../../clients/types";
6
- import { ToolsService } from "../Tools";
7
- export declare class SandboxContext {
8
- private toolsService;
9
- private clients;
10
- private tracer;
11
- private policyEnforcer;
12
- private artifacts;
13
- private consoleOutput;
14
- constructor(toolsService: ToolsService, clients: AIClient, tracer: ScriptTracer, policyEnforcer: ScriptPolicyEnforcer);
15
- console: {
16
- log: (...args: any[]) => void;
17
- error: (...args: any[]) => void;
18
- warn: (...args: any[]) => void;
19
- info: (...args: any[]) => void;
20
- };
21
- callTool(toolName: string, parameters: any): Promise<any>;
22
- llm(messages: Message[], options?: {
23
- model?: string;
24
- maxTokens?: number;
25
- temperature?: number;
26
- }): Promise<import("../../clients").CompletionResponse>;
27
- getQuotaUsage(): QuotaUsage;
28
- createArtifact(name: string, content: string, type?: "text" | "json" | "csv" | "html" | "markdown"): Promise<Artifact>;
29
- sleep(ms: number): Promise<void>;
30
- getArtifacts(): Artifact[];
31
- getConsoleOutput(): string[];
32
- private estimateTokens;
33
- private sanitizeForLogging;
34
- }
@@ -1,189 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SandboxContext = void 0;
4
- class SandboxContext {
5
- toolsService;
6
- clients;
7
- tracer;
8
- policyEnforcer;
9
- artifacts = [];
10
- consoleOutput = [];
11
- constructor(toolsService, clients, tracer, policyEnforcer) {
12
- this.toolsService = toolsService;
13
- this.clients = clients;
14
- this.tracer = tracer;
15
- this.policyEnforcer = policyEnforcer;
16
- }
17
- console = {
18
- log: (...args) => {
19
- const message = args
20
- .map((arg) => typeof arg === "object" ? JSON.stringify(arg) : String(arg))
21
- .join(" ");
22
- this.consoleOutput.push(`[LOG] ${message}`);
23
- this.tracer.emitEvent("console_log", { message, args });
24
- },
25
- error: (...args) => {
26
- const message = args
27
- .map((arg) => typeof arg === "object" ? JSON.stringify(arg) : String(arg))
28
- .join(" ");
29
- this.consoleOutput.push(`[ERROR] ${message}`);
30
- this.tracer.emitEvent("console_error", { message, args });
31
- },
32
- warn: (...args) => {
33
- const message = args
34
- .map((arg) => typeof arg === "object" ? JSON.stringify(arg) : String(arg))
35
- .join(" ");
36
- this.consoleOutput.push(`[WARN] ${message}`);
37
- this.tracer.emitEvent("console_warn", { message, args });
38
- },
39
- info: (...args) => {
40
- const message = args
41
- .map((arg) => typeof arg === "object" ? JSON.stringify(arg) : String(arg))
42
- .join(" ");
43
- this.consoleOutput.push(`[INFO] ${message}`);
44
- this.tracer.emitEvent("console_info", { message, args });
45
- },
46
- };
47
- async callTool(toolName, parameters) {
48
- if (!this.policyEnforcer.checkToolCall(toolName)) {
49
- throw new Error(`Tool call '${toolName}' blocked by policy`);
50
- }
51
- if (toolName === "executeScript") {
52
- throw new Error("Nested script execution is not allowed in sandbox");
53
- }
54
- this.tracer.emitEvent("tool_call_start", {
55
- toolName,
56
- parameters: this.sanitizeForLogging(parameters),
57
- });
58
- try {
59
- this.policyEnforcer.recordToolCall();
60
- const toolCall = {
61
- id: `script-tool-${Date.now()}-${Math.random()
62
- .toString(36)
63
- .substr(2, 9)}`,
64
- type: "function",
65
- function: {
66
- name: toolName,
67
- arguments: JSON.stringify(parameters),
68
- },
69
- };
70
- const result = await this.toolsService.callTool(toolCall);
71
- this.tracer.emitEvent("tool_call_success", {
72
- toolName,
73
- result: this.sanitizeForLogging(result),
74
- });
75
- return result;
76
- }
77
- catch (error) {
78
- this.tracer.emitEvent("tool_call_error", {
79
- toolName,
80
- error: error instanceof Error ? error.message : String(error),
81
- });
82
- throw error;
83
- }
84
- }
85
- async llm(messages, options = {}) {
86
- const estimatedTokens = this.estimateTokens(messages);
87
- if (!this.policyEnforcer.checkTokenUsage(estimatedTokens)) {
88
- throw new Error("Token quota would be exceeded");
89
- }
90
- this.tracer.emitEvent("llm_call_start", {
91
- messageCount: messages.length,
92
- estimatedTokens,
93
- model: options.model,
94
- options: this.sanitizeForLogging(options),
95
- });
96
- try {
97
- this.policyEnforcer.recordTokenUsage(estimatedTokens);
98
- const completionOptions = {
99
- model: options.model,
100
- messages,
101
- max_tokens: options.maxTokens,
102
- };
103
- const response = await this.clients.createCompletion("", completionOptions);
104
- this.tracer.emitEvent("llm_call_success", {
105
- model: response.model,
106
- usage: response.usage,
107
- usdCost: response.usd_cost,
108
- });
109
- return response;
110
- }
111
- catch (error) {
112
- this.tracer.emitEvent("llm_call_error", {
113
- error: error instanceof Error ? error.message : String(error),
114
- });
115
- throw error;
116
- }
117
- }
118
- getQuotaUsage() {
119
- return this.policyEnforcer.getUsage();
120
- }
121
- async createArtifact(name, content, type = "text") {
122
- const artifact = {
123
- id: `artifact-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,
124
- name,
125
- type,
126
- content,
127
- createdAt: new Date().toISOString(),
128
- };
129
- this.artifacts.push(artifact);
130
- this.tracer.emitEvent("artifact_created", {
131
- artifactId: artifact.id,
132
- name,
133
- type,
134
- contentLength: content.length,
135
- });
136
- return artifact;
137
- }
138
- async sleep(ms) {
139
- if (typeof ms !== "number" || ms < 0 || ms > 2000) {
140
- throw new Error("Invalid sleep duration, sleep must be >0 and <2000");
141
- }
142
- await new Promise((res) => setTimeout(res, ms));
143
- this.tracer.emitEvent("sleep", { durationMs: ms });
144
- }
145
- getArtifacts() {
146
- return [...this.artifacts];
147
- }
148
- getConsoleOutput() {
149
- return [...this.consoleOutput];
150
- }
151
- estimateTokens(messages) {
152
- let totalText = "";
153
- for (const message of messages) {
154
- if (typeof message === "string") {
155
- totalText += message;
156
- }
157
- else if (message && typeof message.content === "string") {
158
- totalText += message.content;
159
- }
160
- }
161
- return Math.ceil(totalText.length / 4);
162
- }
163
- sanitizeForLogging(data) {
164
- if (data === null || data === undefined) {
165
- return data;
166
- }
167
- if (typeof data === "string") {
168
- return data.length > 500 ? data.substring(0, 500) + "..." : data;
169
- }
170
- if (typeof data === "object") {
171
- const sanitized = {};
172
- for (const [key, value] of Object.entries(data)) {
173
- if (key.toLowerCase().includes("password") ||
174
- key.toLowerCase().includes("token") ||
175
- key.toLowerCase().includes("secret") ||
176
- key.toLowerCase().includes("key")) {
177
- sanitized[key] = "[REDACTED]";
178
- }
179
- else {
180
- sanitized[key] = this.sanitizeForLogging(value);
181
- }
182
- }
183
- return sanitized;
184
- }
185
- return data;
186
- }
187
- }
188
- exports.SandboxContext = SandboxContext;
189
- //# sourceMappingURL=SandboxContext.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SandboxContext.js","sourceRoot":"","sources":["../../../../src/services/script-execution/SandboxContext.ts"],"names":[],"mappings":"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"}
@@ -1,19 +0,0 @@
1
- import { ToolsService } from "../../services";
2
- import { AIClient } from "../../clients";
3
- import { ExecutionRequest, ExecutionResult, ResourceQuotas, SecurityPolicy } from "./types";
4
- export declare class ScriptExecutor {
5
- private toolsService;
6
- private clients;
7
- private defaultQuotas;
8
- private defaultPolicy;
9
- constructor(toolsService: ToolsService, clients: AIClient);
10
- private validateNodejsEnvironment;
11
- execute(request: ExecutionRequest): Promise<ExecutionResult>;
12
- private executeWithTimeout;
13
- private executeScriptSecure;
14
- private setupIsolatedContext;
15
- private executeScriptFallback;
16
- getDefaultQuotas(): ResourceQuotas;
17
- getDefaultPolicy(): SecurityPolicy;
18
- private injectReturnForLastExpression;
19
- }
@@ -1,269 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.ScriptExecutor = void 0;
7
- const isolated_vm_1 = __importDefault(require("isolated-vm"));
8
- const SandboxContext_1 = require("./SandboxContext");
9
- const ScriptTracer_1 = require("./ScriptTracer");
10
- const ScriptPolicy_1 = require("./ScriptPolicy");
11
- class ScriptExecutor {
12
- toolsService;
13
- clients;
14
- defaultQuotas = {
15
- maxToolCalls: 50,
16
- maxTokens: 10000,
17
- maxExecutionTimeMs: 30000,
18
- maxCostUsd: 1.0,
19
- maxMemoryMb: 100,
20
- };
21
- defaultPolicy = {
22
- allowlistedTools: [],
23
- denylistedTools: [
24
- "executeScript",
25
- "execCommand",
26
- "writeFileChunk",
27
- "patchFile",
28
- ],
29
- maxScriptLength: 50000,
30
- allowNetworkAccess: false,
31
- allowFileSystemAccess: false,
32
- };
33
- constructor(toolsService, clients) {
34
- this.toolsService = toolsService;
35
- this.clients = clients;
36
- this.validateNodejsEnvironment();
37
- }
38
- validateNodejsEnvironment() {
39
- const nodeVersion = process.version;
40
- const majorVersion = parseInt(nodeVersion.slice(1).split('.')[0], 10);
41
- if (majorVersion >= 20) {
42
- const hasNoNodeSnapshot = process.execArgv.includes('--no-node-snapshot');
43
- if (!hasNoNodeSnapshot) {
44
- const errorMessage = [
45
- `Node.js ${nodeVersion} detected. The executeScript tool requires the --no-node-snapshot flag for isolated-vm compatibility.`,
46
- '',
47
- 'This flag is automatically included when running knowhow commands via the CLI (e.g., `knowhow agent`, `knowhow chat`).',
48
- '',
49
- 'If you are programmatically using knowhow or running custom scripts:',
50
- '1. Start your application with: node --no-node-snapshot your-app.js',
51
- '2. Or update your package.json scripts to include the flag:',
52
- ' "scripts": {',
53
- ' "start": "node --no-node-snapshot dist/index.js"',
54
- ' }',
55
- '',
56
- 'Note: This flag is required for Node.js 20+ to ensure isolated-vm works correctly.'
57
- ].join('\n');
58
- throw new Error(errorMessage);
59
- }
60
- }
61
- }
62
- async execute(request) {
63
- const tracer = new ScriptTracer_1.ScriptTracer();
64
- const quotas = { ...this.defaultQuotas, ...request.quotas };
65
- const policy = { ...this.defaultPolicy, ...request.policy };
66
- const policyEnforcer = new ScriptPolicy_1.ScriptPolicyEnforcer(quotas, policy);
67
- tracer.emitEvent("execution_start", {
68
- scriptLength: request.script.length,
69
- quotas,
70
- policy: {
71
- ...policy,
72
- allowlistedTools: `${policy.allowlistedTools.length} tools`,
73
- denylistedTools: `${policy.denylistedTools.length} tools`,
74
- },
75
- });
76
- try {
77
- const validation = policyEnforcer.validateScript(request.script, policy.allowNetworkAccess);
78
- if (!validation.valid) {
79
- tracer.emitEvent("script_validation_failed", {
80
- issues: validation.issues,
81
- });
82
- return {
83
- success: false,
84
- error: `Script validation failed: ${validation.issues.join(", ")}`,
85
- result: null,
86
- trace: tracer.getTrace(),
87
- artifacts: [],
88
- consoleOutput: [],
89
- };
90
- }
91
- tracer.emitEvent("script_validation_passed", {});
92
- const context = new SandboxContext_1.SandboxContext(this.toolsService, this.clients, tracer, policyEnforcer);
93
- const startTime = Date.now();
94
- const timeoutMs = quotas.maxExecutionTimeMs;
95
- const result = await this.executeWithTimeout(request.script, context, timeoutMs, tracer, policyEnforcer);
96
- const executionTime = Date.now() - startTime;
97
- tracer.emitEvent("execution_complete", {
98
- executionTimeMs: executionTime,
99
- finalUsage: policyEnforcer.getUsage(),
100
- });
101
- return {
102
- success: true,
103
- error: null,
104
- result,
105
- trace: tracer.getTrace(),
106
- artifacts: context.getArtifacts(),
107
- consoleOutput: context.getConsoleOutput(),
108
- };
109
- }
110
- catch (error) {
111
- const errorMessage = error instanceof Error ? error.message : String(error);
112
- tracer.emitEvent("execution_error", {
113
- error: errorMessage,
114
- finalUsage: policyEnforcer.getUsage(),
115
- });
116
- return {
117
- success: false,
118
- error: errorMessage,
119
- result: null,
120
- trace: tracer.getTrace(),
121
- artifacts: [],
122
- consoleOutput: [],
123
- };
124
- }
125
- }
126
- async executeWithTimeout(script, context, timeoutMs, tracer, policyEnforcer) {
127
- return new Promise((resolve, reject) => {
128
- const timeoutId = setTimeout(() => {
129
- tracer.emitEvent("execution_timeout", { timeoutMs });
130
- reject(new Error(`Script execution timed out after ${timeoutMs}ms`));
131
- }, timeoutMs);
132
- this.executeScriptSecure(script, context, tracer, policyEnforcer)
133
- .then((result) => {
134
- clearTimeout(timeoutId);
135
- resolve(result);
136
- })
137
- .catch((error) => {
138
- clearTimeout(timeoutId);
139
- reject(error);
140
- });
141
- });
142
- }
143
- async executeScriptSecure(script, context, tracer, policyEnforcer) {
144
- tracer.emitEvent("secure_execution_start", {
145
- note: "Using isolated-vm for secure execution",
146
- });
147
- const isolate = new isolated_vm_1.default.Isolate({
148
- memoryLimit: policyEnforcer.getQuotas().maxMemoryMb,
149
- });
150
- try {
151
- const vmContext = await isolate.createContext();
152
- tracer.emitEvent("vm_context_created", {});
153
- await this.setupIsolatedContext(vmContext, context, tracer);
154
- tracer.emitEvent("script_compilation_start", {});
155
- const scriptWithReturn = this.injectReturnForLastExpression(script);
156
- const wrappedScript = `
157
- (async function() {
158
- "use strict";
159
- ${scriptWithReturn}
160
- })()
161
- `;
162
- const compiledScript = await isolate.compileScript(wrappedScript);
163
- tracer.emitEvent("script_compilation_complete", {});
164
- tracer.emitEvent("script_execution_start", {});
165
- const result = await compiledScript.run(vmContext, {
166
- promise: true,
167
- copy: true,
168
- });
169
- tracer.emitEvent("script_execution_complete", {
170
- resultType: typeof result,
171
- });
172
- return result;
173
- }
174
- finally {
175
- isolate.dispose();
176
- tracer.emitEvent("vm_cleanup_complete", {});
177
- }
178
- }
179
- async setupIsolatedContext(vmContext, sandboxContext, tracer) {
180
- tracer.emitEvent("context_setup_start", {});
181
- const globalRef = vmContext.global;
182
- await globalRef.set("globalThis", globalRef.derefInto());
183
- const exposeAsync = async (name, fn) => {
184
- await globalRef.set(`__host_${name}`, new isolated_vm_1.default.Reference(async (...args) => {
185
- const result = await fn(...args);
186
- const safeResult = result !== undefined ? result : null;
187
- const plainResult = safeResult !== null && typeof safeResult === 'object'
188
- ? JSON.parse(JSON.stringify(safeResult))
189
- : safeResult;
190
- return new isolated_vm_1.default.ExternalCopy(plainResult).copyInto();
191
- }));
192
- await vmContext.eval(`
193
- globalThis.${name} = (...a) =>
194
- new Promise((resolve, reject) => {
195
- try {
196
- // applySyncPromise does not support result options — the Reference fn returns ExternalCopy
197
- const result = __host_${name}.applySyncPromise(undefined, a,
198
- { arguments: { copy: true } });
199
- resolve(result);
200
- } catch(e) { reject(e); }
201
- });
202
- `);
203
- };
204
- const exposeSync = async (name, fn) => {
205
- await globalRef.set(`__host_${name}`, new isolated_vm_1.default.Reference((...args) => {
206
- const result = fn(...args);
207
- return new isolated_vm_1.default.ExternalCopy(result).copyInto();
208
- }));
209
- await vmContext.eval(`
210
- globalThis.${name} = (...a) =>
211
- __host_${name}.apply(undefined, a,
212
- { arguments: { copy: true }, result: { copy: true } });
213
- `);
214
- };
215
- await exposeAsync("callTool", async (tool, params) => {
216
- try {
217
- const result = await sandboxContext.callTool(tool, params);
218
- const { functionResp } = result;
219
- return functionResp !== undefined ? functionResp : null;
220
- }
221
- catch (err) {
222
- throw err;
223
- }
224
- });
225
- await exposeAsync("llm", (messages, options) => sandboxContext.llm(messages, options || {}));
226
- await exposeAsync("sleep", (ms) => sandboxContext.sleep(ms));
227
- await exposeSync("createArtifact", (name, content, type) => sandboxContext.createArtifact(name, content, type));
228
- await exposeSync("getQuotaUsage", () => sandboxContext.getQuotaUsage());
229
- for (const level of ["log", "info", "warn", "error"]) {
230
- await globalRef.set(`__console_${level}`, new isolated_vm_1.default.Reference((...args) => sandboxContext.console[level](...args)));
231
- }
232
- await vmContext.eval(`
233
- globalThis.console = {};
234
- for (const lvl of ["log", "info", "warn", "error"]) {
235
- globalThis.console[lvl] = (...a) =>
236
- globalThis["__console_" + lvl].apply(undefined, a,
237
- { arguments: { copy: true } });
238
- }
239
- `);
240
- tracer.emitEvent("context_setup_complete", {});
241
- }
242
- async executeScriptFallback(script, context, tracer, policyEnforcer) {
243
- throw new Error("Isolated-vm execution failed, no fallback available");
244
- }
245
- getDefaultQuotas() {
246
- return { ...this.defaultQuotas };
247
- }
248
- getDefaultPolicy() {
249
- return { ...this.defaultPolicy };
250
- }
251
- injectReturnForLastExpression(script) {
252
- const lines = script.split('\n');
253
- for (let i = lines.length - 1; i >= 0; i--) {
254
- const trimmed = lines[i].trim();
255
- if (!trimmed || trimmed.startsWith('//') || trimmed.startsWith('*') || trimmed.startsWith('/*')) {
256
- continue;
257
- }
258
- const statementKeywords = /^(function\s|class\s|const\s|let\s|var\s|if\s*[(]|for\s*[(]|while\s*[(]|do\s*[{]|switch\s*[(]|try\s*[{]|return\s|throw\s|break;|continue;|import\s|export\s|[{])/;
259
- if (statementKeywords.test(trimmed)) {
260
- break;
261
- }
262
- lines[i] = lines[i].replace(trimmed, `return ${trimmed}`);
263
- return lines.join('\n');
264
- }
265
- return script;
266
- }
267
- }
268
- exports.ScriptExecutor = ScriptExecutor;
269
- //# sourceMappingURL=ScriptExecutor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ScriptExecutor.js","sourceRoot":"","sources":["../../../../src/services/script-execution/ScriptExecutor.ts"],"names":[],"mappings":"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"}
@@ -1,28 +0,0 @@
1
- import { ResourceQuotas, SecurityPolicy, QuotaUsage, PolicyViolation } from './types';
2
- export declare class ScriptPolicyEnforcer {
3
- private quotas;
4
- private policy;
5
- private usage;
6
- private violations;
7
- private complexityLimit;
8
- constructor(quotas: ResourceQuotas, policy: SecurityPolicy);
9
- checkToolCall(toolName: string): boolean;
10
- recordToolCall(): void;
11
- checkTokenUsage(tokens: number): boolean;
12
- recordTokenUsage(tokens: number): void;
13
- checkExecutionTime(currentTimeMs: number): boolean;
14
- checkCost(additionalCost: number): boolean;
15
- recordCost(cost: number): void;
16
- getUsage(): QuotaUsage;
17
- getQuotas(): ResourceQuotas;
18
- getViolations(): PolicyViolation[];
19
- hasViolations(): boolean;
20
- getLastViolation(): PolicyViolation | undefined;
21
- resetUsage(): void;
22
- resetViolations(): void;
23
- validateScript(scriptContent: string, allowNetworkAccess?: boolean): {
24
- valid: boolean;
25
- issues: string[];
26
- };
27
- private recordViolation;
28
- }