freeturtle 0.1.30 → 0.1.32
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/dist/bin/freeturtle.js +2 -2
- package/dist/src/approval.test.d.ts +1 -0
- package/dist/src/approval.test.js +110 -0
- package/dist/src/approval.test.js.map +1 -0
- package/dist/src/cli/daemon-utils.test.d.ts +1 -0
- package/dist/src/cli/daemon-utils.test.js +46 -0
- package/dist/src/cli/daemon-utils.test.js.map +1 -0
- package/dist/src/config.test.d.ts +1 -0
- package/dist/src/config.test.js +34 -0
- package/dist/src/config.test.js.map +1 -0
- package/dist/src/daemon.js +15 -5
- package/dist/src/daemon.js.map +1 -1
- package/dist/src/modules/loader.js +10 -0
- package/dist/src/modules/loader.js.map +1 -1
- package/dist/src/modules/shell/index.d.ts +3 -1
- package/dist/src/modules/shell/index.js +1 -1
- package/dist/src/modules/shell/index.js.map +1 -1
- package/dist/src/modules/shell/index.test.d.ts +1 -0
- package/dist/src/modules/shell/index.test.js +65 -0
- package/dist/src/modules/shell/index.test.js.map +1 -0
- package/dist/src/policy.test.d.ts +1 -0
- package/dist/src/policy.test.js +57 -0
- package/dist/src/policy.test.js.map +1 -0
- package/dist/src/redaction.test.d.ts +1 -0
- package/dist/src/redaction.test.js +32 -0
- package/dist/src/redaction.test.js.map +1 -0
- package/dist/src/reliability.test.d.ts +1 -0
- package/dist/src/reliability.test.js +30 -0
- package/dist/src/reliability.test.js.map +1 -0
- package/dist/src/rpc/protocol.test.d.ts +1 -0
- package/dist/src/rpc/protocol.test.js +47 -0
- package/dist/src/rpc/protocol.test.js.map +1 -0
- package/dist/src/runner.d.ts +3 -0
- package/dist/src/runner.js +48 -15
- package/dist/src/runner.js.map +1 -1
- package/package.json +1 -1
package/dist/bin/freeturtle.js
CHANGED
|
@@ -15,14 +15,14 @@ const program = new Command();
|
|
|
15
15
|
program
|
|
16
16
|
.name("freeturtle")
|
|
17
17
|
.description("An open-source framework for deploying autonomous AI CEOs that run onchain businesses.")
|
|
18
|
-
.version("0.1.
|
|
18
|
+
.version("0.1.32");
|
|
19
19
|
program
|
|
20
20
|
.command("hello")
|
|
21
21
|
.description("Verify the CLI is working")
|
|
22
22
|
.action(() => {
|
|
23
23
|
console.log(" \x1b[38;2;94;255;164m _____ ____\x1b[0m");
|
|
24
24
|
console.log(" \x1b[38;2;94;255;164m/ \\ | o |\x1b[0m");
|
|
25
|
-
console.log(" \x1b[38;2;94;255;164m| |/ ___\\|\x1b[0m FreeTurtle v0.1.
|
|
25
|
+
console.log(" \x1b[38;2;94;255;164m| |/ ___\\|\x1b[0m FreeTurtle v0.1.32");
|
|
26
26
|
console.log(" \x1b[38;2;94;255;164m|_________/\x1b[0m");
|
|
27
27
|
console.log(" \x1b[38;2;94;255;164m|_|_| |_|_|\x1b[0m");
|
|
28
28
|
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach, afterEach } from "vitest";
|
|
2
|
+
import { ApprovalManager } from "./approval.js";
|
|
3
|
+
import { createTempWorkspace } from "../test/helpers/temp-workspace.js";
|
|
4
|
+
describe("ApprovalManager", () => {
|
|
5
|
+
let dir;
|
|
6
|
+
let cleanup;
|
|
7
|
+
let manager;
|
|
8
|
+
beforeEach(async () => {
|
|
9
|
+
const workspace = await createTempWorkspace();
|
|
10
|
+
dir = workspace.dir;
|
|
11
|
+
cleanup = workspace.cleanup;
|
|
12
|
+
manager = new ApprovalManager(dir);
|
|
13
|
+
});
|
|
14
|
+
afterEach(async () => {
|
|
15
|
+
await cleanup();
|
|
16
|
+
});
|
|
17
|
+
it("creates a pending approval request", async () => {
|
|
18
|
+
const req = await manager.createRequest({
|
|
19
|
+
runId: "run-1",
|
|
20
|
+
toolName: "run_command",
|
|
21
|
+
reason: "test",
|
|
22
|
+
input: { command: "ls" },
|
|
23
|
+
timeoutSeconds: 60,
|
|
24
|
+
});
|
|
25
|
+
expect(req.id).toBeTruthy();
|
|
26
|
+
expect(req.status).toBe("pending");
|
|
27
|
+
expect(req.toolName).toBe("run_command");
|
|
28
|
+
});
|
|
29
|
+
it("approves a request", async () => {
|
|
30
|
+
const req = await manager.createRequest({
|
|
31
|
+
runId: "run-1",
|
|
32
|
+
toolName: "run_command",
|
|
33
|
+
reason: "test",
|
|
34
|
+
input: {},
|
|
35
|
+
timeoutSeconds: 60,
|
|
36
|
+
});
|
|
37
|
+
const approved = await manager.approve(req.id, "founder");
|
|
38
|
+
expect(approved.status).toBe("approved");
|
|
39
|
+
expect(approved.decidedBy).toBe("founder");
|
|
40
|
+
expect(approved.decidedAt).toBeTruthy();
|
|
41
|
+
});
|
|
42
|
+
it("rejects a request with reason", async () => {
|
|
43
|
+
const req = await manager.createRequest({
|
|
44
|
+
runId: "run-1",
|
|
45
|
+
toolName: "run_command",
|
|
46
|
+
reason: "test",
|
|
47
|
+
input: {},
|
|
48
|
+
timeoutSeconds: 60,
|
|
49
|
+
});
|
|
50
|
+
const rejected = await manager.reject(req.id, "too dangerous", "founder");
|
|
51
|
+
expect(rejected.status).toBe("rejected");
|
|
52
|
+
expect(rejected.rejectReason).toBe("too dangerous");
|
|
53
|
+
});
|
|
54
|
+
it("lists pending requests", async () => {
|
|
55
|
+
await manager.createRequest({
|
|
56
|
+
runId: "run-1",
|
|
57
|
+
toolName: "tool_a",
|
|
58
|
+
reason: "test",
|
|
59
|
+
input: {},
|
|
60
|
+
timeoutSeconds: 60,
|
|
61
|
+
});
|
|
62
|
+
const req2 = await manager.createRequest({
|
|
63
|
+
runId: "run-1",
|
|
64
|
+
toolName: "tool_b",
|
|
65
|
+
reason: "test",
|
|
66
|
+
input: {},
|
|
67
|
+
timeoutSeconds: 60,
|
|
68
|
+
});
|
|
69
|
+
await manager.approve(req2.id);
|
|
70
|
+
const pending = await manager.list("pending");
|
|
71
|
+
expect(pending).toHaveLength(1);
|
|
72
|
+
expect(pending[0].toolName).toBe("tool_a");
|
|
73
|
+
});
|
|
74
|
+
it("throws when approving an already-approved request", async () => {
|
|
75
|
+
const req = await manager.createRequest({
|
|
76
|
+
runId: "run-1",
|
|
77
|
+
toolName: "run_command",
|
|
78
|
+
reason: "test",
|
|
79
|
+
input: {},
|
|
80
|
+
timeoutSeconds: 60,
|
|
81
|
+
});
|
|
82
|
+
await manager.approve(req.id);
|
|
83
|
+
await expect(manager.approve(req.id)).rejects.toThrow("already approved");
|
|
84
|
+
});
|
|
85
|
+
it("waitForDecision resolves when approved externally", async () => {
|
|
86
|
+
const req = await manager.createRequest({
|
|
87
|
+
runId: "run-1",
|
|
88
|
+
toolName: "run_command",
|
|
89
|
+
reason: "test",
|
|
90
|
+
input: {},
|
|
91
|
+
timeoutSeconds: 60,
|
|
92
|
+
});
|
|
93
|
+
// Approve after a short delay (simulates user replying "yes")
|
|
94
|
+
setTimeout(() => manager.approve(req.id, "channel"), 100);
|
|
95
|
+
const decision = await manager.waitForDecision(req.id, 5000);
|
|
96
|
+
expect(decision.status).toBe("approved");
|
|
97
|
+
});
|
|
98
|
+
it("waitForDecision expires after timeout", async () => {
|
|
99
|
+
const req = await manager.createRequest({
|
|
100
|
+
runId: "run-1",
|
|
101
|
+
toolName: "run_command",
|
|
102
|
+
reason: "test",
|
|
103
|
+
input: {},
|
|
104
|
+
timeoutSeconds: 1, // expires in 1s
|
|
105
|
+
});
|
|
106
|
+
const decision = await manager.waitForDecision(req.id, 3000);
|
|
107
|
+
expect(decision.status).toBe("expired");
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
//# sourceMappingURL=approval.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approval.test.js","sourceRoot":"","sources":["../../src/approval.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach, afterEach } from "vitest";
|
|
2
|
+
import { writeFile, rm, mkdtemp } from "node:fs/promises";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { tmpdir } from "node:os";
|
|
5
|
+
import { getDaemonPid } from "./daemon-utils.js";
|
|
6
|
+
describe("getDaemonPid", () => {
|
|
7
|
+
let dir;
|
|
8
|
+
beforeEach(async () => {
|
|
9
|
+
dir = await mkdtemp(join(tmpdir(), "ft-daemon-test-"));
|
|
10
|
+
});
|
|
11
|
+
afterEach(async () => {
|
|
12
|
+
await rm(dir, { recursive: true, force: true });
|
|
13
|
+
});
|
|
14
|
+
it("returns null when no pid file exists", () => {
|
|
15
|
+
const pid = getDaemonPid(dir);
|
|
16
|
+
expect(pid).toBeNull();
|
|
17
|
+
});
|
|
18
|
+
it("returns the pid when the file contains the current process pid", async () => {
|
|
19
|
+
// Write our own PID — it's definitely running
|
|
20
|
+
await writeFile(join(dir, "daemon.pid"), String(process.pid), "utf-8");
|
|
21
|
+
const pid = getDaemonPid(dir);
|
|
22
|
+
expect(pid).toBe(process.pid);
|
|
23
|
+
});
|
|
24
|
+
it("returns null when pid file contains a non-running process", async () => {
|
|
25
|
+
// PID 99999999 is almost certainly not running
|
|
26
|
+
await writeFile(join(dir, "daemon.pid"), "99999999", "utf-8");
|
|
27
|
+
const pid = getDaemonPid(dir);
|
|
28
|
+
expect(pid).toBeNull();
|
|
29
|
+
});
|
|
30
|
+
it("returns null for garbage pid file content", async () => {
|
|
31
|
+
await writeFile(join(dir, "daemon.pid"), "not-a-number", "utf-8");
|
|
32
|
+
const pid = getDaemonPid(dir);
|
|
33
|
+
expect(pid).toBeNull();
|
|
34
|
+
});
|
|
35
|
+
// This test specifically validates that the ESM import works.
|
|
36
|
+
// The bug in v0.1.26-0.1.28 used require("node:fs") which throws in ESM.
|
|
37
|
+
it("uses ESM-compatible fs import (not require)", async () => {
|
|
38
|
+
// If getDaemonPid used require(), this entire test file would fail to
|
|
39
|
+
// import. The fact that we got here means the import is correct.
|
|
40
|
+
// But let's also verify it actually reads the file:
|
|
41
|
+
await writeFile(join(dir, "daemon.pid"), String(process.pid), "utf-8");
|
|
42
|
+
const pid = getDaemonPid(dir);
|
|
43
|
+
expect(pid).toBe(process.pid);
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
//# sourceMappingURL=daemon-utils.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daemon-utils.test.js","sourceRoot":"","sources":["../../../src/cli/daemon-utils.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,IAAI,GAAW,CAAC;IAEhB,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;QAC9E,8CAA8C;QAC9C,MAAM,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;QACvE,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,+CAA+C;QAC/C,MAAM,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QAC9D,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;QAClE,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,8DAA8D;IAC9D,yEAAyE;IACzE,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,sEAAsE;QACtE,iEAAiE;QACjE,oDAAoD;QACpD,MAAM,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;QACvE,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach, afterEach } from "vitest";
|
|
2
|
+
import { loadConfig } from "./config.js";
|
|
3
|
+
import { createTempWorkspace } from "../test/helpers/temp-workspace.js";
|
|
4
|
+
describe("loadConfig", () => {
|
|
5
|
+
let dir;
|
|
6
|
+
let cleanup;
|
|
7
|
+
beforeEach(async () => {
|
|
8
|
+
const workspace = await createTempWorkspace();
|
|
9
|
+
dir = workspace.dir;
|
|
10
|
+
cleanup = workspace.cleanup;
|
|
11
|
+
});
|
|
12
|
+
afterEach(async () => {
|
|
13
|
+
await cleanup();
|
|
14
|
+
});
|
|
15
|
+
it("loads config from a valid workspace", async () => {
|
|
16
|
+
const config = await loadConfig(dir);
|
|
17
|
+
expect(config.llm.provider).toBe("claude_api");
|
|
18
|
+
expect(config.llm.model).toBe("claude-sonnet-4-20250514");
|
|
19
|
+
});
|
|
20
|
+
it("reads module enabled flags", async () => {
|
|
21
|
+
const config = await loadConfig(dir);
|
|
22
|
+
expect(config.modules.farcaster?.enabled).toBe(false);
|
|
23
|
+
expect(config.modules.database?.enabled).toBe(false);
|
|
24
|
+
});
|
|
25
|
+
it("reads channel config", async () => {
|
|
26
|
+
const config = await loadConfig(dir);
|
|
27
|
+
expect(config.channels.telegram?.enabled).toBe(false);
|
|
28
|
+
});
|
|
29
|
+
it("reads heartbeat config", async () => {
|
|
30
|
+
const config = await loadConfig(dir);
|
|
31
|
+
expect(config.heartbeat.enabled).toBe(false);
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
//# sourceMappingURL=config.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.test.js","sourceRoot":"","sources":["../../src/config.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAExE,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,IAAI,GAAW,CAAC;IAChB,IAAI,OAA4B,CAAC;IAEjC,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,MAAM,SAAS,GAAG,MAAM,mBAAmB,EAAE,CAAC;QAC9C,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC;QACpB,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,MAAM,OAAO,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC/C,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;QAC1C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACpC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/src/daemon.js
CHANGED
|
@@ -99,16 +99,23 @@ export class FreeTurtleDaemon {
|
|
|
99
99
|
// Load Agent Skills (OpenClaw / ClawHub / Claude Code compatible)
|
|
100
100
|
const skills = await loadSkills(this.dir, config.skills, this.logger);
|
|
101
101
|
// Create runner with policy, skills, and approval notifications
|
|
102
|
+
const sendToChannels = (msg) => {
|
|
103
|
+
for (const ch of this.channels) {
|
|
104
|
+
ch.send(msg).catch((err) => {
|
|
105
|
+
this.logger.error(`Failed to send via ${ch.name}: ${err}`);
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
};
|
|
102
109
|
this.runner = new TaskRunner(this.dir, llm, modules, this.logger, {
|
|
103
110
|
policy: config.policy,
|
|
104
111
|
skills,
|
|
105
112
|
onApprovalNeeded: (msg) => {
|
|
106
113
|
this.logger.info(`Approval notification: ${msg.slice(0, 100)}`);
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
114
|
+
sendToChannels(msg);
|
|
115
|
+
},
|
|
116
|
+
onFollowup: (msg) => {
|
|
117
|
+
this.logger.info(`Followup: ${msg.slice(0, 100)}`);
|
|
118
|
+
sendToChannels(msg);
|
|
112
119
|
},
|
|
113
120
|
});
|
|
114
121
|
// Start scheduler
|
|
@@ -139,15 +146,18 @@ export class FreeTurtleDaemon {
|
|
|
139
146
|
if (["yes", "no", "approve", "reject", "y", "n"].includes(lower) &&
|
|
140
147
|
this.runner) {
|
|
141
148
|
const pending = await this.runner.getApprovalManager().list("pending");
|
|
149
|
+
this.logger.info(`Approval intercept: "${lower}", ${pending.length} pending`);
|
|
142
150
|
if (pending.length > 0) {
|
|
143
151
|
const latest = pending[0];
|
|
144
152
|
const approved = ["yes", "approve", "y"].includes(lower);
|
|
145
153
|
if (approved) {
|
|
146
154
|
await this.runner.getApprovalManager().approve(latest.id, "channel");
|
|
155
|
+
this.logger.info(`Approved ${latest.toolName} (${latest.id})`);
|
|
147
156
|
return `Approved: ${latest.toolName}`;
|
|
148
157
|
}
|
|
149
158
|
else {
|
|
150
159
|
await this.runner.getApprovalManager().reject(latest.id, undefined, "channel");
|
|
160
|
+
this.logger.info(`Rejected ${latest.toolName} (${latest.id})`);
|
|
151
161
|
return `Rejected: ${latest.toolName}`;
|
|
152
162
|
}
|
|
153
163
|
}
|
package/dist/src/daemon.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../src/daemon.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../src/daemon.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,6 +29,16 @@ export async function loadModules(config, env, logger, policy, dir) {
|
|
|
29
29
|
logger?.error(`Workspace module failed to initialize: ${msg}`);
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
|
+
// Shell module is always loaded — gives the CEO command-line access
|
|
33
|
+
try {
|
|
34
|
+
const shell = new ShellModule();
|
|
35
|
+
await shell.initialize({}, env, { policy });
|
|
36
|
+
modules.push(shell);
|
|
37
|
+
}
|
|
38
|
+
catch (err) {
|
|
39
|
+
const msg = err instanceof Error ? err.message : "Unknown error";
|
|
40
|
+
logger?.error(`Shell module failed to initialize: ${msg}`);
|
|
41
|
+
}
|
|
32
42
|
for (const [name, moduleConfig] of Object.entries(config.modules)) {
|
|
33
43
|
if (!moduleConfig.enabled)
|
|
34
44
|
continue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/modules/loader.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,UAAU,GAA+C;IAC7D,SAAS,EAAE,eAAe;IAC1B,QAAQ,EAAE,cAAc;IACxB,MAAM,EAAE,YAAY;IACpB,KAAK,EAAE,WAAW;IAClB,OAAO,EAAE,aAAa;IACtB,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,WAAW;CACnB,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAAwB,EACxB,GAA2B,EAC3B,MAAe,EACf,MAAqB,EACrB,GAAY;IAEZ,MAAM,OAAO,GAAuB,EAAE,CAAC;IAEvC,qFAAqF;IACrF,IAAI,GAAG,EAAE,CAAC;QACR,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;YACxC,MAAM,SAAS,CAAC,UAAU,CAAC,EAAE,aAAa,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YACpE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YACjE,MAAM,EAAE,KAAK,CAAC,0CAA0C,GAAG,EAAE,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAClE,IAAI,CAAC,YAAY,CAAC,OAAO;YAAE,SAAS;QAEpC,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,EAAE,IAAI,CAAC,mBAAmB,IAAI,aAAa,CAAC,CAAC;YACnD,SAAS;QACX,CAAC;QAED,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,EAAE,GAAI,YAAmD,EAAE,CAAC;YACxE,IAAI,GAAG;gBAAE,GAAG,CAAC,aAAa,GAAG,GAAG,CAAC;YACjC,MAAM,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YAC3C,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YACjE,MAAM,EAAE,KAAK,CAAC,WAAW,IAAI,2BAA2B,GAAG,aAAa,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/modules/loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,9 @@ import type { FreeTurtleModule, ToolDefinition } from "../types.js";
|
|
|
2
2
|
export declare class ShellModule implements FreeTurtleModule {
|
|
3
3
|
name: string;
|
|
4
4
|
description: string;
|
|
5
|
-
initialize(
|
|
5
|
+
initialize(_config: Record<string, unknown>, _env: Record<string, string>, _options?: {
|
|
6
|
+
policy?: import("../../policy.js").PolicyConfig;
|
|
7
|
+
}): Promise<void>;
|
|
6
8
|
getTools(): ToolDefinition[];
|
|
7
9
|
executeTool(name: string, input: Record<string, unknown>): Promise<string>;
|
|
8
10
|
private runCommand;
|
|
@@ -118,7 +118,7 @@ function sanitizeEnv(overrides) {
|
|
|
118
118
|
export class ShellModule {
|
|
119
119
|
name = "shell";
|
|
120
120
|
description = "Execute shell commands and manage background processes";
|
|
121
|
-
async initialize() {
|
|
121
|
+
async initialize(_config, _env, _options) {
|
|
122
122
|
ensureSweeper();
|
|
123
123
|
}
|
|
124
124
|
getTools() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/shell/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/shell/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { ShellModule } from "./index.js";
|
|
3
|
+
describe("ShellModule", () => {
|
|
4
|
+
const mod = new ShellModule();
|
|
5
|
+
it("registers run_command and manage_process tools", () => {
|
|
6
|
+
const tools = mod.getTools();
|
|
7
|
+
const names = tools.map((t) => t.name);
|
|
8
|
+
expect(names).toContain("run_command");
|
|
9
|
+
expect(names).toContain("manage_process");
|
|
10
|
+
});
|
|
11
|
+
it("executes a simple command", async () => {
|
|
12
|
+
await mod.initialize({}, {});
|
|
13
|
+
const result = await mod.executeTool("run_command", {
|
|
14
|
+
command: "echo hello",
|
|
15
|
+
});
|
|
16
|
+
expect(result).toBe("hello");
|
|
17
|
+
});
|
|
18
|
+
it("returns stderr", async () => {
|
|
19
|
+
const result = await mod.executeTool("run_command", {
|
|
20
|
+
command: "echo oops >&2",
|
|
21
|
+
});
|
|
22
|
+
expect(result).toContain("STDERR:");
|
|
23
|
+
expect(result).toContain("oops");
|
|
24
|
+
});
|
|
25
|
+
it("returns exit code on failure", async () => {
|
|
26
|
+
const result = await mod.executeTool("run_command", {
|
|
27
|
+
command: "exit 42",
|
|
28
|
+
});
|
|
29
|
+
expect(result).toContain("Exit code: 42");
|
|
30
|
+
});
|
|
31
|
+
it("respects working_directory", async () => {
|
|
32
|
+
const result = await mod.executeTool("run_command", {
|
|
33
|
+
command: "pwd",
|
|
34
|
+
working_directory: "/tmp",
|
|
35
|
+
});
|
|
36
|
+
// macOS resolves /tmp -> /private/tmp
|
|
37
|
+
expect(result).toMatch(/\/tmp/);
|
|
38
|
+
});
|
|
39
|
+
it("blocks dangerous env vars", async () => {
|
|
40
|
+
const result = await mod.executeTool("run_command", {
|
|
41
|
+
command: "echo $PATH",
|
|
42
|
+
env: { PATH: "/evil", MY_VAR: "safe" },
|
|
43
|
+
});
|
|
44
|
+
// PATH override should be blocked, so $PATH should be the system PATH
|
|
45
|
+
expect(result).not.toContain("/evil");
|
|
46
|
+
});
|
|
47
|
+
it("runs background commands and lists sessions", async () => {
|
|
48
|
+
await mod.executeTool("run_command", {
|
|
49
|
+
command: "sleep 0.1 && echo done",
|
|
50
|
+
background: true,
|
|
51
|
+
});
|
|
52
|
+
const list = await mod.executeTool("manage_process", {
|
|
53
|
+
action: "list",
|
|
54
|
+
});
|
|
55
|
+
expect(list).toContain("session_id");
|
|
56
|
+
});
|
|
57
|
+
it("returns error for unknown tool", async () => {
|
|
58
|
+
await expect(mod.executeTool("nonexistent", {})).rejects.toThrow("Unknown tool");
|
|
59
|
+
});
|
|
60
|
+
it("returns error for missing command", async () => {
|
|
61
|
+
const result = await mod.executeTool("run_command", {});
|
|
62
|
+
expect(result).toContain("Error");
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
//# sourceMappingURL=index.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../../src/modules/shell/index.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { requiresApproval, parsePolicy, getDefaultPolicy } from "./policy.js";
|
|
3
|
+
describe("requiresApproval", () => {
|
|
4
|
+
it("requires approval for run_command", () => {
|
|
5
|
+
expect(requiresApproval(undefined, "run_command", { command: "ls" })).toBe(true);
|
|
6
|
+
});
|
|
7
|
+
it("requires approval for delete_cast", () => {
|
|
8
|
+
expect(requiresApproval(undefined, "delete_cast", {})).toBe(true);
|
|
9
|
+
});
|
|
10
|
+
it("requires approval for write_file to soul.md", () => {
|
|
11
|
+
expect(requiresApproval(undefined, "write_file", { path: "soul.md" })).toBe(true);
|
|
12
|
+
});
|
|
13
|
+
it("requires approval for edit_file to config.md", () => {
|
|
14
|
+
expect(requiresApproval(undefined, "edit_file", { path: "config.md" })).toBe(true);
|
|
15
|
+
});
|
|
16
|
+
it("requires approval for write_file to .env", () => {
|
|
17
|
+
expect(requiresApproval(undefined, "write_file", { path: ".env" })).toBe(true);
|
|
18
|
+
});
|
|
19
|
+
it("does not require approval for read_file", () => {
|
|
20
|
+
expect(requiresApproval(undefined, "read_file", { path: "soul.md" })).toBe(false);
|
|
21
|
+
});
|
|
22
|
+
it("does not require approval for regular write_file", () => {
|
|
23
|
+
expect(requiresApproval(undefined, "write_file", { path: "memory/notes.md" })).toBe(false);
|
|
24
|
+
});
|
|
25
|
+
it("does not require approval for manage_process", () => {
|
|
26
|
+
expect(requiresApproval(undefined, "manage_process", { action: "list" })).toBe(false);
|
|
27
|
+
});
|
|
28
|
+
it("requires approval for commit_file to main branch", () => {
|
|
29
|
+
expect(requiresApproval(undefined, "commit_file", { branch: "main" })).toBe(true);
|
|
30
|
+
});
|
|
31
|
+
it("does not require approval for commit_file to feature branch with custom policy", () => {
|
|
32
|
+
const policy = getDefaultPolicy();
|
|
33
|
+
policy.github.approval_required_branches = ["main"];
|
|
34
|
+
expect(requiresApproval(policy, "commit_file", { branch: "feature/test" })).toBe(false);
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
describe("parsePolicy", () => {
|
|
38
|
+
it("returns defaults for empty input", () => {
|
|
39
|
+
const policy = parsePolicy({});
|
|
40
|
+
expect(policy.approvals.timeout_seconds).toBe(300);
|
|
41
|
+
expect(policy.approvals.fail_mode).toBe("deny");
|
|
42
|
+
expect(policy.github.approval_required_branches).toEqual(["main"]);
|
|
43
|
+
});
|
|
44
|
+
it("parses comma-separated lists", () => {
|
|
45
|
+
const policy = parsePolicy({
|
|
46
|
+
github: { allowed_repos: "repo1, repo2, repo3" },
|
|
47
|
+
});
|
|
48
|
+
expect(policy.github.allowed_repos).toEqual(["repo1", "repo2", "repo3"]);
|
|
49
|
+
});
|
|
50
|
+
it("parses approval timeout", () => {
|
|
51
|
+
const policy = parsePolicy({
|
|
52
|
+
approvals: { timeout_seconds: "600" },
|
|
53
|
+
});
|
|
54
|
+
expect(policy.approvals.timeout_seconds).toBe(600);
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
//# sourceMappingURL=policy.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy.test.js","sourceRoot":"","sources":["../../src/policy.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,gBAAgB,EAAqB,MAAM,aAAa,CAAC;AAEjG,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,CACJ,gBAAgB,CAAC,SAAS,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAC/D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,CACJ,gBAAgB,CAAC,SAAS,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAChE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,CACJ,gBAAgB,CAAC,SAAS,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAC5D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,CACJ,gBAAgB,CAAC,SAAS,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CACvE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,CACJ,gBAAgB,CAAC,SAAS,EAAE,gBAAgB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAClE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,CACJ,gBAAgB,CAAC,SAAS,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAC/D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gFAAgF,EAAE,GAAG,EAAE;QACxF,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;QAClC,MAAM,CAAC,MAAM,CAAC,0BAA0B,GAAG,CAAC,MAAM,CAAC,CAAC;QACpD,MAAM,CACJ,gBAAgB,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CACpE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;QAC/B,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,MAAM,GAAG,WAAW,CAAC;YACzB,MAAM,EAAE,EAAE,aAAa,EAAE,qBAAqB,EAAE;SACjD,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,MAAM,GAAG,WAAW,CAAC;YACzB,SAAS,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE;SACtC,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { redact } from "./redaction.js";
|
|
3
|
+
describe("redact", () => {
|
|
4
|
+
it("redacts string values that look like secrets", () => {
|
|
5
|
+
const input = { api_key: "sk-abc123xyz", name: "test" };
|
|
6
|
+
const result = redact(input);
|
|
7
|
+
expect(result.api_key).toBe("***");
|
|
8
|
+
expect(result.name).toBe("test");
|
|
9
|
+
});
|
|
10
|
+
it("redacts nested objects", () => {
|
|
11
|
+
const input = { config: { password: "hunter2" } };
|
|
12
|
+
const result = redact(input);
|
|
13
|
+
const config = result.config;
|
|
14
|
+
expect(config.password).toBe("***");
|
|
15
|
+
});
|
|
16
|
+
it("handles non-object inputs", () => {
|
|
17
|
+
expect(redact("hello")).toBe("hello");
|
|
18
|
+
expect(redact(42)).toBe(42);
|
|
19
|
+
expect(redact(null)).toBeNull();
|
|
20
|
+
});
|
|
21
|
+
it("redacts keys containing 'token'", () => {
|
|
22
|
+
const input = { access_token: "eyJhbGci..." };
|
|
23
|
+
const result = redact(input);
|
|
24
|
+
expect(result.access_token).toBe("***");
|
|
25
|
+
});
|
|
26
|
+
it("redacts keys containing 'secret'", () => {
|
|
27
|
+
const input = { client_secret: "abc123" };
|
|
28
|
+
const result = redact(input);
|
|
29
|
+
expect(result.client_secret).toBe("***");
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
//# sourceMappingURL=redaction.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redaction.test.js","sourceRoot":"","sources":["../../src/redaction.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,KAAK,GAAG,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACxD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAA4B,CAAC;QACxD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,CAAC;QAClD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAA4B,CAAC;QACxD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAiC,CAAC;QACxD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,KAAK,GAAG,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAA4B,CAAC;QACxD,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,KAAK,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAA4B,CAAC;QACxD,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { withRetry } from "./reliability.js";
|
|
3
|
+
describe("withRetry", () => {
|
|
4
|
+
it("returns on first success", async () => {
|
|
5
|
+
const result = await withRetry(() => Promise.resolve("ok"), {
|
|
6
|
+
maxRetries: 3,
|
|
7
|
+
baseDelayMs: 10,
|
|
8
|
+
maxDelayMs: 100,
|
|
9
|
+
timeoutMs: 5000,
|
|
10
|
+
});
|
|
11
|
+
expect(result).toBe("ok");
|
|
12
|
+
});
|
|
13
|
+
it("retries on transient failure then succeeds", async () => {
|
|
14
|
+
let attempt = 0;
|
|
15
|
+
const result = await withRetry(() => {
|
|
16
|
+
attempt++;
|
|
17
|
+
if (attempt < 3)
|
|
18
|
+
throw new Error("ECONNRESET");
|
|
19
|
+
return Promise.resolve("recovered");
|
|
20
|
+
}, { maxRetries: 5, baseDelayMs: 10, maxDelayMs: 50, timeoutMs: 5000 });
|
|
21
|
+
expect(result).toBe("recovered");
|
|
22
|
+
expect(attempt).toBe(3);
|
|
23
|
+
});
|
|
24
|
+
it("throws after max retries", async () => {
|
|
25
|
+
await expect(withRetry(() => {
|
|
26
|
+
throw new Error("always fails");
|
|
27
|
+
}, { maxRetries: 2, baseDelayMs: 10, maxDelayMs: 50, timeoutMs: 5000 })).rejects.toThrow("always fails");
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
//# sourceMappingURL=reliability.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reliability.test.js","sourceRoot":"","sources":["../../src/reliability.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC1D,UAAU,EAAE,CAAC;YACb,WAAW,EAAE,EAAE;YACf,UAAU,EAAE,GAAG;YACf,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,MAAM,MAAM,GAAG,MAAM,SAAS,CAC5B,GAAG,EAAE;YACH,OAAO,EAAE,CAAC;YACV,IAAI,OAAO,GAAG,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;YAC/C,OAAO,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACtC,CAAC,EACD,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CACpE,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,MAAM,CACV,SAAS,CACP,GAAG,EAAE;YACH,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;QAClC,CAAC,EACD,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CACpE,CACF,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { makeRequest, makeResponse, makeError, parseFrame, } from "./protocol.js";
|
|
3
|
+
describe("RPC protocol", () => {
|
|
4
|
+
it("creates a request frame", () => {
|
|
5
|
+
const req = makeRequest("status", { verbose: true });
|
|
6
|
+
expect(req.type).toBe("req");
|
|
7
|
+
expect(req.method).toBe("status");
|
|
8
|
+
expect(req.params).toEqual({ verbose: true });
|
|
9
|
+
expect(req.id).toBeTruthy();
|
|
10
|
+
});
|
|
11
|
+
it("creates a success response frame", () => {
|
|
12
|
+
const res = makeResponse("req-1", { status: "ok" });
|
|
13
|
+
expect(res.type).toBe("res");
|
|
14
|
+
expect(res.id).toBe("req-1");
|
|
15
|
+
expect(res.ok).toBe(true);
|
|
16
|
+
expect(res.result).toEqual({ status: "ok" });
|
|
17
|
+
});
|
|
18
|
+
it("creates an error response frame", () => {
|
|
19
|
+
const res = makeError("req-1", "something broke");
|
|
20
|
+
expect(res.type).toBe("res");
|
|
21
|
+
expect(res.id).toBe("req-1");
|
|
22
|
+
expect(res.ok).toBe(false);
|
|
23
|
+
expect(res.error).toBe("something broke");
|
|
24
|
+
});
|
|
25
|
+
it("round-trips a request through parseFrame", () => {
|
|
26
|
+
const req = makeRequest("send", { message: "hello" });
|
|
27
|
+
const json = JSON.stringify(req);
|
|
28
|
+
const parsed = parseFrame(json);
|
|
29
|
+
expect(parsed).toEqual(req);
|
|
30
|
+
});
|
|
31
|
+
it("round-trips a response through parseFrame", () => {
|
|
32
|
+
const res = makeResponse("id-1", "ok");
|
|
33
|
+
const json = JSON.stringify(res);
|
|
34
|
+
const parsed = parseFrame(json);
|
|
35
|
+
expect(parsed).toEqual(res);
|
|
36
|
+
});
|
|
37
|
+
it("returns null for invalid JSON", () => {
|
|
38
|
+
expect(parseFrame("not json")).toBeNull();
|
|
39
|
+
});
|
|
40
|
+
it("returns null for non-object JSON", () => {
|
|
41
|
+
expect(parseFrame('"hello"')).toBeNull();
|
|
42
|
+
});
|
|
43
|
+
it("returns null for missing type field", () => {
|
|
44
|
+
expect(parseFrame('{"id":"1","method":"foo"}')).toBeNull();
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
//# sourceMappingURL=protocol.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.test.js","sourceRoot":"","sources":["../../../src/rpc/protocol.test.ts"],"names":[],"mappings":"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"}
|
package/dist/src/runner.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ export interface TaskResult {
|
|
|
16
16
|
durationMs: number;
|
|
17
17
|
}
|
|
18
18
|
export type ApprovalNotifier = (message: string) => void;
|
|
19
|
+
export type FollowupSender = (message: string) => void;
|
|
19
20
|
export declare class TaskRunner {
|
|
20
21
|
private dir;
|
|
21
22
|
private llm;
|
|
@@ -26,11 +27,13 @@ export declare class TaskRunner {
|
|
|
26
27
|
private approvalManager;
|
|
27
28
|
private auditLogger;
|
|
28
29
|
private onApprovalNeeded?;
|
|
30
|
+
private onFollowup?;
|
|
29
31
|
private conversationHistory;
|
|
30
32
|
private static readonly MAX_HISTORY_TURNS;
|
|
31
33
|
constructor(dir: string, llm: LLMClient, modules: FreeTurtleModule[], logger: Logger, options?: {
|
|
32
34
|
policy?: PolicyConfig;
|
|
33
35
|
onApprovalNeeded?: ApprovalNotifier;
|
|
36
|
+
onFollowup?: FollowupSender;
|
|
34
37
|
skills?: LoadedSkill[];
|
|
35
38
|
});
|
|
36
39
|
runTask(task: TaskConfig): Promise<TaskResult>;
|
package/dist/src/runner.js
CHANGED
|
@@ -18,6 +18,7 @@ export class TaskRunner {
|
|
|
18
18
|
approvalManager;
|
|
19
19
|
auditLogger;
|
|
20
20
|
onApprovalNeeded;
|
|
21
|
+
onFollowup;
|
|
21
22
|
conversationHistory = new Map();
|
|
22
23
|
static MAX_HISTORY_TURNS = 10;
|
|
23
24
|
constructor(dir, llm, modules, logger, options) {
|
|
@@ -30,6 +31,7 @@ export class TaskRunner {
|
|
|
30
31
|
this.approvalManager = new ApprovalManager(dir);
|
|
31
32
|
this.auditLogger = new AuditLogger(dir);
|
|
32
33
|
this.onApprovalNeeded = options?.onApprovalNeeded;
|
|
34
|
+
this.onFollowup = options?.onFollowup;
|
|
33
35
|
}
|
|
34
36
|
async runTask(task) {
|
|
35
37
|
const start = Date.now();
|
|
@@ -174,7 +176,7 @@ export class TaskRunner {
|
|
|
174
176
|
parts.push(skillsPrompt + "\n");
|
|
175
177
|
}
|
|
176
178
|
}
|
|
177
|
-
parts.push("---\n", "## Instructions\n", "- You are an autonomous AI CEO. You act on behalf of the project described in your identity.", "- When you post, match the voice and style described in your identity.", "- Log important actions and observations.", "- If you are unsure about something, say so rather than guessing.", `- The current date and time is: ${new Date().toISOString()}`, "", "## Self-Modification", "- You can read and modify your own files using read_file, write_file, edit_file, and list_files.", "- Your identity is in soul.md — you can update your voice, goals, knowledge, and values.", "- Your configuration is in config.md — you can change cron schedules, enable/disable modules and channels.", "- Your memory is in workspace/memory/ — you can write persistent notes, logs, and data.", "- Changes to soul.md, config.md, and .env require founder approval. Memory writes do not.", "- When the founder asks you to change your behavior, update the relevant file so the change persists.", "- Config changes (cron, modules, channels) take effect on next restart.", "", "## Task Workflow", "- To create a task: call create_task with the details the founder provides. If a required parameter is missing, ask the founder before calling.", "- After a task is created, tell the founder the submission instructions: contributors email with the keyword in the subject and their ETH wallet address in the body.", "- Contributors submit via EMAIL only — they do NOT interact with the blockchain.", "- To review and pay out a task: call review_task_submissions, then search Gmail for the keyword, evaluate submissions, then YOU call submit_on_behalf_of(task_id, winner_wallet_address) to record the submission onchain, then YOU call approve_task_submission(task_id, submission_index) to release payment.", "- NEVER tell contributors to submit onchain or call any contract function. You handle ALL onchain operations on their behalf.");
|
|
179
|
+
parts.push("---\n", "## Instructions\n", "- You are an autonomous AI CEO. You act on behalf of the project described in your identity.", "- When you post, match the voice and style described in your identity.", "- Log important actions and observations.", "- If you are unsure about something, say so rather than guessing.", `- The current date and time is: ${new Date().toISOString()}`, "", "## Self-Modification", "- You can read and modify your own files using read_file, write_file, edit_file, and list_files.", "- Your identity is in soul.md — you can update your voice, goals, knowledge, and values.", "- Your configuration is in config.md — you can change cron schedules, enable/disable modules and channels.", "- Your memory is in workspace/memory/ — you can write persistent notes, logs, and data.", "- Changes to soul.md, config.md, and .env require founder approval. Memory writes do not.", "- When the founder asks you to change your behavior, update the relevant file so the change persists.", "- Config changes (cron, modules, channels) take effect on next restart.", "", "## Task Workflow", "- To create a task: call create_task with the details the founder provides. If a required parameter is missing, ask the founder before calling.", "- After a task is created, tell the founder the submission instructions: contributors email with the keyword in the subject and their ETH wallet address in the body.", "- Contributors submit via EMAIL only — they do NOT interact with the blockchain.", "- To review and pay out a task: call review_task_submissions, then search Gmail for the keyword, evaluate submissions, then YOU call submit_on_behalf_of(task_id, winner_wallet_address) to record the submission onchain, then YOU call approve_task_submission(task_id, submission_index) to release payment.", "- NEVER tell contributors to submit onchain or call any contract function. You handle ALL onchain operations on their behalf.", "", "## Tool Call Style", "- When a first-class tool exists for an action, use the tool directly instead of asking the founder to do it manually.", "- Do not narrate routine tool calls — just call the tool.", "- NEVER say you 'cannot run commands', 'don't have shell access', or 'need system access'. You DO have these tools. Use them.", "", "## Shell Access", "- You have a run_command tool that executes shell commands on the server.", "- Use it to install packages (npm install, pip install, apt install), run scripts, check system status, or any CLI operation.", "- run_command requires founder approval before executing — the founder will be asked to confirm.", "- For long-running commands, set background=true and use manage_process to check on them.", "- When the founder asks you to install something, call run_command immediately. Do not explain how to install it — just do it.");
|
|
178
180
|
return parts.join("\n");
|
|
179
181
|
}
|
|
180
182
|
collectTools() {
|
|
@@ -189,10 +191,9 @@ export class TaskRunner {
|
|
|
189
191
|
const toolStart = Date.now();
|
|
190
192
|
toolsCalled.push(call.name);
|
|
191
193
|
this.logger.info(`Tool call: ${call.name}`);
|
|
192
|
-
// Check if this tool requires approval
|
|
194
|
+
// Check if this tool requires approval — non-blocking (OpenClaw pattern)
|
|
193
195
|
if (requiresApproval(this.policy, call.name, call.input)) {
|
|
194
196
|
const timeoutSeconds = this.policy?.approvals?.timeout_seconds ?? 300;
|
|
195
|
-
const failMode = this.policy?.approvals?.fail_mode ?? "deny";
|
|
196
197
|
const redactedInput = redact(call.input);
|
|
197
198
|
const approvalReq = await this.approvalManager.createRequest({
|
|
198
199
|
runId,
|
|
@@ -208,26 +209,58 @@ export class TaskRunner {
|
|
|
208
209
|
`Input: ${JSON.stringify(redactedInput)}\n\n` +
|
|
209
210
|
`Reply "yes" to approve or "no" to reject.`);
|
|
210
211
|
}
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
212
|
+
// Fire-and-forget: wait for approval, execute, send result as followup.
|
|
213
|
+
// This does NOT block the agent loop — the tool returns immediately.
|
|
214
|
+
void (async () => {
|
|
215
|
+
try {
|
|
216
|
+
const decision = await this.approvalManager.waitForDecision(approvalReq.id, timeoutSeconds * 1000);
|
|
217
|
+
if (decision.status !== "approved") {
|
|
218
|
+
const reason = decision.status === "rejected"
|
|
219
|
+
? `Rejected${decision.rejectReason ? `: ${decision.rejectReason}` : ""}`
|
|
220
|
+
: `${decision.status}`;
|
|
221
|
+
this.logger.info(`Approval ${reason} for ${call.name}`);
|
|
222
|
+
if (this.onFollowup) {
|
|
223
|
+
this.onFollowup(`${call.name} was ${reason.toLowerCase()}.`);
|
|
224
|
+
}
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
this.logger.info(`Approval granted for ${call.name}, executing...`);
|
|
228
|
+
// Execute the tool
|
|
229
|
+
let result = `Error: no module found for ${call.name}`;
|
|
230
|
+
for (const mod of this.modules) {
|
|
231
|
+
const toolNames = mod.getTools().map((t) => t.name);
|
|
232
|
+
if (toolNames.includes(call.name)) {
|
|
233
|
+
result = await mod.executeTool(call.name, call.input);
|
|
234
|
+
break;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
217
237
|
auditToolCalls.push({
|
|
218
238
|
name: call.name,
|
|
219
239
|
input: redactedInput,
|
|
220
|
-
|
|
240
|
+
output: result.slice(0, 500),
|
|
221
241
|
durationMs: Date.now() - toolStart,
|
|
222
242
|
retries: 0,
|
|
223
243
|
approvalId: approvalReq.id,
|
|
224
|
-
approvalStatus:
|
|
244
|
+
approvalStatus: "approved",
|
|
225
245
|
});
|
|
226
|
-
|
|
246
|
+
// Send the result as a new message via channels
|
|
247
|
+
if (this.onFollowup) {
|
|
248
|
+
const preview = result.length > 2000
|
|
249
|
+
? result.slice(0, 2000) + "\n...(truncated)"
|
|
250
|
+
: result;
|
|
251
|
+
this.onFollowup(preview);
|
|
252
|
+
}
|
|
227
253
|
}
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
254
|
+
catch (err) {
|
|
255
|
+
const msg = err instanceof Error ? err.message : "Unknown error";
|
|
256
|
+
this.logger.error(`Approval followup failed for ${call.name}: ${msg}`);
|
|
257
|
+
if (this.onFollowup) {
|
|
258
|
+
this.onFollowup(`${call.name} failed: ${msg}`);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
})();
|
|
262
|
+
// Return immediately — agent loop continues without blocking
|
|
263
|
+
return `Approval requested for ${call.name}. The founder has been notified. The result will be delivered once approved and executed.`;
|
|
231
264
|
}
|
|
232
265
|
// Execute the tool
|
|
233
266
|
for (const mod of this.modules) {
|
package/dist/src/runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/runner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/runner.ts"],"names":[],"mappings":"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"}
|