@tyvm/knowhow 0.0.108 → 0.0.109-dev.38b1faa
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +45 -0
- package/package.json +9 -4
- package/scripts/build-for-node.sh +10 -24
- package/scripts/publish.sh +86 -0
- package/src/agents/base/base.ts +10 -0
- package/src/agents/tools/execCommand.ts +49 -6
- package/src/agents/tools/index.ts +0 -1
- package/src/agents/tools/list.ts +2 -4
- package/src/chat/CliChatService.ts +11 -2
- package/src/chat/modules/AgentModule.ts +61 -31
- package/src/chat/modules/SessionsModule.ts +47 -3
- package/src/chat/modules/SystemModule.ts +2 -2
- 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 +91 -659
- package/src/clients/anthropic.ts +18 -17
- package/src/clients/index.ts +31 -11
- package/src/clients/openai.ts +8 -5
- package/src/clients/types.ts +48 -10
- package/src/clients/withRetry.ts +89 -0
- package/src/cloudWorker.ts +175 -113
- package/src/commands/agent.ts +246 -0
- package/src/commands/misc.ts +174 -0
- package/src/commands/modules.ts +552 -0
- package/src/commands/services.ts +77 -0
- package/src/commands/workers.ts +168 -0
- package/src/config.ts +38 -1
- package/src/fileSync.ts +70 -29
- package/src/hashes.ts +35 -13
- package/src/index.ts +18 -0
- package/src/logger.ts +197 -0
- package/src/plugins/embedding.ts +11 -6
- package/src/plugins/plugins.ts +0 -21
- package/src/plugins/vim.ts +5 -16
- package/src/processors/JsonCompressor.ts +6 -6
- package/src/services/EventService.ts +61 -1
- package/src/services/KnowhowClient.ts +34 -4
- package/src/services/MediaProcessorService.ts +4 -2
- package/src/services/modules/index.ts +102 -53
- package/src/services/modules/types.ts +6 -0
- package/src/tunnel.ts +216 -0
- package/src/types.ts +0 -1
- package/src/worker.ts +105 -312
- 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/src/workers/tools/index.ts +2 -0
- package/src/workers/tools/reloadConfig.ts +84 -0
- package/tests/services/WorkerReloadConfig.test.ts +141 -0
- package/tests/unit/clients/AIClient.test.ts +446 -0
- package/tests/unit/clients/withRetry.test.ts +319 -0
- package/tests/unit/commands/github-credentials.test.ts +210 -0
- package/tests/unit/modules/moduleLoading.test.ts +39 -37
- package/tests/unit/plugins/pluginLoading.test.ts +0 -85
- package/ts_build/package.json +9 -4
- package/ts_build/src/agents/base/base.js +11 -0
- package/ts_build/src/agents/base/base.js.map +1 -1
- package/ts_build/src/agents/tools/execCommand.d.ts +1 -1
- package/ts_build/src/agents/tools/execCommand.js +39 -5
- package/ts_build/src/agents/tools/execCommand.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 +2 -4
- package/ts_build/src/agents/tools/list.js.map +1 -1
- package/ts_build/src/chat/CliChatService.js +14 -2
- package/ts_build/src/chat/CliChatService.js.map +1 -1
- package/ts_build/src/chat/modules/AgentModule.d.ts +1 -1
- package/ts_build/src/chat/modules/AgentModule.js +43 -20
- package/ts_build/src/chat/modules/AgentModule.js.map +1 -1
- package/ts_build/src/chat/modules/SessionsModule.js +37 -3
- package/ts_build/src/chat/modules/SessionsModule.js.map +1 -1
- package/ts_build/src/chat/modules/SystemModule.js +2 -2
- package/ts_build/src/chat/modules/SystemModule.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 +47 -519
- package/ts_build/src/cli.js.map +1 -1
- package/ts_build/src/clients/anthropic.d.ts +5 -5
- package/ts_build/src/clients/anthropic.js +18 -17
- package/ts_build/src/clients/anthropic.js.map +1 -1
- package/ts_build/src/clients/index.js +9 -10
- package/ts_build/src/clients/index.js.map +1 -1
- package/ts_build/src/clients/openai.js +4 -4
- package/ts_build/src/clients/openai.js.map +1 -1
- package/ts_build/src/clients/types.d.ts +15 -8
- package/ts_build/src/clients/withRetry.d.ts +2 -0
- package/ts_build/src/clients/withRetry.js +60 -0
- package/ts_build/src/clients/withRetry.js.map +1 -0
- package/ts_build/src/cloudWorker.d.ts +14 -0
- package/ts_build/src/cloudWorker.js +105 -66
- package/ts_build/src/cloudWorker.js.map +1 -1
- 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 +197 -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 +487 -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 +87 -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 +168 -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 +33 -1
- package/ts_build/src/config.js.map +1 -1
- package/ts_build/src/fileSync.d.ts +6 -0
- package/ts_build/src/fileSync.js +50 -23
- package/ts_build/src/fileSync.js.map +1 -1
- package/ts_build/src/hashes.d.ts +2 -2
- package/ts_build/src/hashes.js +35 -9
- package/ts_build/src/hashes.js.map +1 -1
- package/ts_build/src/index.d.ts +1 -0
- package/ts_build/src/index.js +17 -1
- package/ts_build/src/index.js.map +1 -1
- package/ts_build/src/logger.d.ts +21 -0
- package/ts_build/src/logger.js +106 -0
- package/ts_build/src/logger.js.map +1 -0
- package/ts_build/src/plugins/embedding.js +4 -3
- package/ts_build/src/plugins/embedding.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/plugins/vim.js +3 -9
- package/ts_build/src/plugins/vim.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/EventService.d.ts +6 -1
- package/ts_build/src/services/EventService.js +29 -0
- package/ts_build/src/services/EventService.js.map +1 -1
- package/ts_build/src/services/KnowhowClient.d.ts +13 -1
- package/ts_build/src/services/KnowhowClient.js +19 -2
- package/ts_build/src/services/KnowhowClient.js.map +1 -1
- package/ts_build/src/services/MediaProcessorService.d.ts +2 -1
- package/ts_build/src/services/MediaProcessorService.js +3 -1
- package/ts_build/src/services/MediaProcessorService.js.map +1 -1
- package/ts_build/src/services/modules/index.d.ts +33 -0
- package/ts_build/src/services/modules/index.js +73 -49
- package/ts_build/src/services/modules/index.js.map +1 -1
- package/ts_build/src/services/modules/types.d.ts +6 -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 +59 -227
- 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/src/workers/tools/index.d.ts +2 -0
- package/ts_build/src/workers/tools/index.js +4 -1
- package/ts_build/src/workers/tools/index.js.map +1 -1
- package/ts_build/src/workers/tools/reloadConfig.d.ts +14 -0
- package/ts_build/src/workers/tools/reloadConfig.js +48 -0
- package/ts_build/src/workers/tools/reloadConfig.js.map +1 -0
- package/ts_build/tests/services/WorkerReloadConfig.test.d.ts +1 -0
- package/ts_build/tests/services/WorkerReloadConfig.test.js +86 -0
- package/ts_build/tests/services/WorkerReloadConfig.test.js.map +1 -0
- package/ts_build/tests/unit/clients/AIClient.test.d.ts +1 -0
- package/ts_build/tests/unit/clients/AIClient.test.js +339 -0
- package/ts_build/tests/unit/clients/AIClient.test.js.map +1 -0
- package/ts_build/tests/unit/clients/withRetry.test.d.ts +1 -0
- package/ts_build/tests/unit/clients/withRetry.test.js +225 -0
- package/ts_build/tests/unit/clients/withRetry.test.js.map +1 -0
- package/ts_build/tests/unit/commands/github-credentials.test.d.ts +1 -0
- package/ts_build/tests/unit/commands/github-credentials.test.js +145 -0
- package/ts_build/tests/unit/commands/github-credentials.test.js.map +1 -0
- package/ts_build/tests/unit/modules/moduleLoading.test.js +20 -26
- 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,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
|
-
}
|