daycare-cli 0.0.6 → 0.0.8
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/commands/add.js +3 -1
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/event.js +2 -2
- package/dist/commands/event.js.map +1 -1
- package/dist/commands/event.spec.js +7 -7
- package/dist/commands/event.spec.js.map +1 -1
- package/dist/engine/agents/agent.d.ts.map +1 -1
- package/dist/engine/agents/agent.js +11 -5
- package/dist/engine/agents/agent.js.map +1 -1
- package/dist/engine/agents/agentSystem.d.ts.map +1 -1
- package/dist/engine/agents/agentSystem.js +2 -3
- package/dist/engine/agents/agentSystem.js.map +1 -1
- package/dist/engine/agents/ops/agentStateRead.d.ts.map +1 -1
- package/dist/engine/agents/ops/agentStateRead.js +2 -1
- package/dist/engine/agents/ops/agentStateRead.js.map +1 -1
- package/dist/engine/cron/crons.js +2 -1
- package/dist/engine/cron/crons.js.map +1 -1
- package/dist/engine/cron/ops/cronScheduler.d.ts.map +1 -1
- package/dist/engine/cron/ops/cronScheduler.js +2 -1
- package/dist/engine/cron/ops/cronScheduler.js.map +1 -1
- package/dist/engine/cron/ops/cronScheduler.spec.js +2 -1
- package/dist/engine/cron/ops/cronScheduler.spec.js.map +1 -1
- package/dist/engine/engine.d.ts.map +1 -1
- package/dist/engine/engine.js +1 -1
- package/dist/engine/engine.js.map +1 -1
- package/dist/engine/heartbeat/ops/heartbeatScheduler.d.ts.map +1 -1
- package/dist/engine/heartbeat/ops/heartbeatScheduler.js +2 -1
- package/dist/engine/heartbeat/ops/heartbeatScheduler.js.map +1 -1
- package/dist/engine/heartbeat/ops/heartbeatScheduler.spec.js +2 -1
- package/dist/engine/heartbeat/ops/heartbeatScheduler.spec.js.map +1 -1
- package/dist/engine/ipc/client.d.ts +2 -0
- package/dist/engine/ipc/client.d.ts.map +1 -1
- package/dist/engine/ipc/client.js +13 -0
- package/dist/engine/ipc/client.js.map +1 -1
- package/dist/engine/modules/connectors/types.d.ts +3 -1
- package/dist/engine/modules/connectors/types.d.ts.map +1 -1
- package/dist/engine/modules/tools/background.spec.js +1 -0
- package/dist/engine/modules/tools/background.spec.js.map +1 -1
- package/dist/engine/modules/tools/image-generation.spec.js +2 -1
- package/dist/engine/modules/tools/image-generation.spec.js.map +1 -1
- package/dist/engine/modules/tools/mermaid-png.spec.js +2 -1
- package/dist/engine/modules/tools/mermaid-png.spec.js.map +1 -1
- package/dist/engine/modules/tools/permanentAgentToolBuild.spec.js +1 -0
- package/dist/engine/modules/tools/permanentAgentToolBuild.spec.js.map +1 -1
- package/dist/engine/modules/tools/permissions.js +4 -1
- package/dist/engine/modules/tools/permissions.js.map +1 -1
- package/dist/engine/modules/tools/signal.spec.js +2 -1
- package/dist/engine/modules/tools/signal.spec.js.map +1 -1
- package/dist/engine/modules/tools/signalSubscribeToolBuild.spec.js +2 -1
- package/dist/engine/modules/tools/signalSubscribeToolBuild.spec.js.map +1 -1
- package/dist/engine/modules/tools/signalUnsubscribeToolBuild.spec.js +2 -1
- package/dist/engine/modules/tools/signalUnsubscribeToolBuild.spec.js.map +1 -1
- package/dist/engine/permissions/permissionAccessAllows.d.ts +1 -1
- package/dist/engine/permissions/permissionAccessAllows.d.ts.map +1 -1
- package/dist/engine/permissions/permissionAccessAllows.js +4 -1
- package/dist/engine/permissions/permissionAccessAllows.js.map +1 -1
- package/dist/engine/permissions/permissionAccessAllows.spec.js +10 -6
- package/dist/engine/permissions/permissionAccessAllows.spec.js.map +1 -1
- package/dist/engine/permissions/permissionAccessApply.d.ts.map +1 -1
- package/dist/engine/permissions/permissionAccessApply.js +4 -0
- package/dist/engine/permissions/permissionAccessApply.js.map +1 -1
- package/dist/engine/permissions/permissionAccessApply.spec.js +8 -1
- package/dist/engine/permissions/permissionAccessApply.spec.js.map +1 -1
- package/dist/engine/permissions/permissionAccessParse.d.ts +1 -1
- package/dist/engine/permissions/permissionAccessParse.d.ts.map +1 -1
- package/dist/engine/permissions/permissionAccessParse.js +5 -2
- package/dist/engine/permissions/permissionAccessParse.js.map +1 -1
- package/dist/engine/permissions/permissionAccessParse.spec.js +2 -1
- package/dist/engine/permissions/permissionAccessParse.spec.js.map +1 -1
- package/dist/engine/permissions/permissionApply.spec.js +14 -1
- package/dist/engine/permissions/permissionApply.spec.js.map +1 -1
- package/dist/engine/permissions/permissionBuildCron.d.ts.map +1 -1
- package/dist/engine/permissions/permissionBuildCron.js +2 -1
- package/dist/engine/permissions/permissionBuildCron.js.map +1 -1
- package/dist/engine/permissions/permissionBuildCron.spec.js +3 -1
- package/dist/engine/permissions/permissionBuildCron.spec.js.map +1 -1
- package/dist/engine/permissions/permissionBuildDefault.d.ts.map +1 -1
- package/dist/engine/permissions/permissionBuildDefault.js +2 -1
- package/dist/engine/permissions/permissionBuildDefault.js.map +1 -1
- package/dist/engine/permissions/permissionBuildDefault.spec.js +1 -0
- package/dist/engine/permissions/permissionBuildDefault.spec.js.map +1 -1
- package/dist/engine/permissions/permissionClone.spec.js +2 -1
- package/dist/engine/permissions/permissionClone.spec.js.map +1 -1
- package/dist/engine/permissions/permissionDescribeDecision.d.ts.map +1 -1
- package/dist/engine/permissions/permissionDescribeDecision.js +3 -0
- package/dist/engine/permissions/permissionDescribeDecision.js.map +1 -1
- package/dist/engine/permissions/permissionDescribeDecision.spec.js +3 -0
- package/dist/engine/permissions/permissionDescribeDecision.spec.js.map +1 -1
- package/dist/engine/permissions/permissionEnsureDefaultFile.spec.js +2 -1
- package/dist/engine/permissions/permissionEnsureDefaultFile.spec.js.map +1 -1
- package/dist/engine/permissions/permissionFormatTag.d.ts.map +1 -1
- package/dist/engine/permissions/permissionFormatTag.js +3 -0
- package/dist/engine/permissions/permissionFormatTag.js.map +1 -1
- package/dist/engine/permissions/permissionFormatTag.spec.js +3 -0
- package/dist/engine/permissions/permissionFormatTag.spec.js.map +1 -1
- package/dist/engine/permissions/permissionMergeDefault.d.ts.map +1 -1
- package/dist/engine/permissions/permissionMergeDefault.js +2 -1
- package/dist/engine/permissions/permissionMergeDefault.js.map +1 -1
- package/dist/engine/permissions/permissionMergeDefault.spec.js +13 -6
- package/dist/engine/permissions/permissionMergeDefault.spec.js.map +1 -1
- package/dist/engine/permissions/permissionTagsApply.d.ts +1 -1
- package/dist/engine/permissions/permissionTagsApply.js +1 -1
- package/dist/engine/permissions/permissionTagsApply.spec.js +4 -2
- package/dist/engine/permissions/permissionTagsApply.spec.js.map +1 -1
- package/dist/engine/permissions/permissionTagsNormalize.d.ts +1 -1
- package/dist/engine/permissions/permissionTagsNormalize.d.ts.map +1 -1
- package/dist/engine/permissions/permissionTagsNormalize.js +11 -4
- package/dist/engine/permissions/permissionTagsNormalize.js.map +1 -1
- package/dist/engine/permissions/permissionTagsNormalize.spec.js +2 -1
- package/dist/engine/permissions/permissionTagsNormalize.spec.js.map +1 -1
- package/dist/engine/permissions/permissionTagsValidate.d.ts +1 -1
- package/dist/engine/permissions/permissionTagsValidate.js +1 -1
- package/dist/engine/permissions/permissionTagsValidate.spec.js +27 -6
- package/dist/engine/permissions/permissionTagsValidate.spec.js.map +1 -1
- package/dist/engine/permissions.d.ts +1 -0
- package/dist/engine/permissions.d.ts.map +1 -1
- package/dist/engine/permissions.js +8 -2
- package/dist/engine/permissions.js.map +1 -1
- package/dist/engine/processes/processes.d.ts +2 -0
- package/dist/engine/processes/processes.d.ts.map +1 -1
- package/dist/engine/processes/processes.js +12 -5
- package/dist/engine/processes/processes.js.map +1 -1
- package/dist/engine/processes/processes.spec.js +30 -4
- package/dist/engine/processes/processes.spec.js.map +1 -1
- package/dist/engine/scheduling/execGateCheck.d.ts +1 -0
- package/dist/engine/scheduling/execGateCheck.d.ts.map +1 -1
- package/dist/engine/scheduling/execGateCheck.js +4 -2
- package/dist/engine/scheduling/execGateCheck.js.map +1 -1
- package/dist/engine/scheduling/gatePermissionsCheck.d.ts +1 -1
- package/dist/engine/scheduling/gatePermissionsCheck.js +5 -2
- package/dist/engine/scheduling/gatePermissionsCheck.js.map +1 -1
- package/dist/engine/scheduling/gatePermissionsCheck.spec.js +13 -2
- package/dist/engine/scheduling/gatePermissionsCheck.spec.js.map +1 -1
- package/dist/engine/skills/skillListConfig.d.ts.map +1 -1
- package/dist/engine/skills/skillListConfig.js +17 -0
- package/dist/engine/skills/skillListConfig.js.map +1 -1
- package/dist/engine/skills/skillListConfig.spec.d.ts +2 -0
- package/dist/engine/skills/skillListConfig.spec.d.ts.map +1 -0
- package/dist/engine/skills/skillListConfig.spec.js +31 -0
- package/dist/engine/skills/skillListConfig.spec.js.map +1 -0
- package/dist/main.js +1 -1
- package/dist/main.js.map +1 -1
- package/dist/plugins/database/__tests__/plugin.spec.js +2 -1
- package/dist/plugins/database/__tests__/plugin.spec.js.map +1 -1
- package/dist/plugins/monty-python/tool.spec.js +2 -1
- package/dist/plugins/monty-python/tool.spec.js.map +1 -1
- package/dist/plugins/shell/processTools.js +3 -2
- package/dist/plugins/shell/processTools.js.map +1 -1
- package/dist/plugins/shell/processTools.spec.js +18 -9
- package/dist/plugins/shell/processTools.spec.js.map +1 -1
- package/dist/plugins/shell/tool.d.ts.map +1 -1
- package/dist/plugins/shell/tool.js +8 -4
- package/dist/plugins/shell/tool.js.map +1 -1
- package/dist/plugins/shell/tool.spec.js +7 -3
- package/dist/plugins/shell/tool.spec.js.map +1 -1
- package/dist/plugins/telegram/connector.js +6 -1
- package/dist/plugins/telegram/connector.js.map +1 -1
- package/dist/plugins/whatsapp/connector.js +6 -1
- package/dist/plugins/whatsapp/connector.js.map +1 -1
- package/dist/prompts/PERMISSIONS.md +3 -2
- package/dist/sandbox/sandboxCanRead.spec.js +2 -1
- package/dist/sandbox/sandboxCanRead.spec.js.map +1 -1
- package/dist/sandbox/sandboxCanWrite.spec.js +2 -1
- package/dist/sandbox/sandboxCanWrite.spec.js.map +1 -1
- package/dist/sandbox/sandboxFilesystemPolicyBuild.spec.js +2 -1
- package/dist/sandbox/sandboxFilesystemPolicyBuild.spec.js.map +1 -1
- package/package.json +2 -2
|
@@ -4,6 +4,9 @@ describe("permissionFormatTag", () => {
|
|
|
4
4
|
it("formats network permissions", () => {
|
|
5
5
|
expect(permissionFormatTag({ kind: "network" })).toBe("@network");
|
|
6
6
|
});
|
|
7
|
+
it("formats events permissions", () => {
|
|
8
|
+
expect(permissionFormatTag({ kind: "events" })).toBe("@events");
|
|
9
|
+
});
|
|
7
10
|
it("formats path permissions", () => {
|
|
8
11
|
expect(permissionFormatTag({ kind: "read", path: "/tmp" })).toBe("@read:/tmp");
|
|
9
12
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissionFormatTag.spec.js","sourceRoot":"","sources":["../../../sources/engine/permissions/permissionFormatTag.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"permissionFormatTag.spec.js","sourceRoot":"","sources":["../../../sources/engine/permissions/permissionFormatTag.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissionMergeDefault.d.ts","sourceRoot":"","sources":["../../../sources/engine/permissions/permissionMergeDefault.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,kBAAkB,EAC/B,kBAAkB,EAAE,kBAAkB,GACrC,kBAAkB,
|
|
1
|
+
{"version":3,"file":"permissionMergeDefault.d.ts","sourceRoot":"","sources":["../../../sources/engine/permissions/permissionMergeDefault.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,kBAAkB,EAC/B,kBAAkB,EAAE,kBAAkB,GACrC,kBAAkB,CAWpB"}
|
|
@@ -6,7 +6,8 @@ export function permissionMergeDefault(permissions, defaultPermissions) {
|
|
|
6
6
|
workingDir: permissions.workingDir?.trim() || defaultPermissions.workingDir,
|
|
7
7
|
writeDirs: Array.from(nextWrite.values()),
|
|
8
8
|
readDirs: Array.from(nextRead.values()),
|
|
9
|
-
network: permissions.network || defaultPermissions.network
|
|
9
|
+
network: permissions.network || defaultPermissions.network,
|
|
10
|
+
events: permissions.events || defaultPermissions.events
|
|
10
11
|
};
|
|
11
12
|
}
|
|
12
13
|
//# sourceMappingURL=permissionMergeDefault.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissionMergeDefault.js","sourceRoot":"","sources":["../../../sources/engine/permissions/permissionMergeDefault.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,sBAAsB,CACpC,WAA+B,EAC/B,kBAAsC;IAEtC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,kBAAkB,CAAC,SAAS,EAAE,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;IACvF,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,kBAAkB,CAAC,QAAQ,EAAE,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpF,OAAO;QACL,yDAAyD;QACzD,UAAU,EAAE,WAAW,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,kBAAkB,CAAC,UAAU;QAC3E,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QACzC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACvC,OAAO,EAAE,WAAW,CAAC,OAAO,IAAI,kBAAkB,CAAC,OAAO;
|
|
1
|
+
{"version":3,"file":"permissionMergeDefault.js","sourceRoot":"","sources":["../../../sources/engine/permissions/permissionMergeDefault.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,sBAAsB,CACpC,WAA+B,EAC/B,kBAAsC;IAEtC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,kBAAkB,CAAC,SAAS,EAAE,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;IACvF,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,kBAAkB,CAAC,QAAQ,EAAE,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpF,OAAO;QACL,yDAAyD;QACzD,UAAU,EAAE,WAAW,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,kBAAkB,CAAC,UAAU;QAC3E,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QACzC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACvC,OAAO,EAAE,WAAW,CAAC,OAAO,IAAI,kBAAkB,CAAC,OAAO;QAC1D,MAAM,EAAE,WAAW,CAAC,MAAM,IAAI,kBAAkB,CAAC,MAAM;KACxD,CAAC;AACJ,CAAC"}
|
|
@@ -6,17 +6,20 @@ describe("permissionMergeDefault", () => {
|
|
|
6
6
|
workingDir: "",
|
|
7
7
|
writeDirs: ["/custom-write"],
|
|
8
8
|
readDirs: [],
|
|
9
|
-
network: false
|
|
9
|
+
network: false,
|
|
10
|
+
events: false
|
|
10
11
|
};
|
|
11
12
|
const defaults = {
|
|
12
13
|
workingDir: "/workspace",
|
|
13
14
|
writeDirs: ["/base-write"],
|
|
14
15
|
readDirs: ["/base-read"],
|
|
15
|
-
network: true
|
|
16
|
+
network: true,
|
|
17
|
+
events: true
|
|
16
18
|
};
|
|
17
19
|
const merged = permissionMergeDefault(permissions, defaults);
|
|
18
20
|
expect(merged.workingDir).toBe("/workspace");
|
|
19
21
|
expect(merged.network).toBe(true);
|
|
22
|
+
expect(merged.events).toBe(true);
|
|
20
23
|
expect(merged.writeDirs).toEqual(expect.arrayContaining(["/base-write", "/custom-write"]));
|
|
21
24
|
expect(merged.readDirs).toEqual(expect.arrayContaining(["/base-read"]));
|
|
22
25
|
});
|
|
@@ -25,13 +28,15 @@ describe("permissionMergeDefault", () => {
|
|
|
25
28
|
workingDir: " ",
|
|
26
29
|
writeDirs: [],
|
|
27
30
|
readDirs: [],
|
|
28
|
-
network: false
|
|
31
|
+
network: false,
|
|
32
|
+
events: false
|
|
29
33
|
};
|
|
30
34
|
const defaults = {
|
|
31
35
|
workingDir: "/workspace",
|
|
32
36
|
writeDirs: [],
|
|
33
37
|
readDirs: [],
|
|
34
|
-
network: false
|
|
38
|
+
network: false,
|
|
39
|
+
events: false
|
|
35
40
|
};
|
|
36
41
|
const merged = permissionMergeDefault(permissions, defaults);
|
|
37
42
|
expect(merged.workingDir).toBe("/workspace");
|
|
@@ -41,13 +46,15 @@ describe("permissionMergeDefault", () => {
|
|
|
41
46
|
workingDir: "/custom-workspace",
|
|
42
47
|
writeDirs: [],
|
|
43
48
|
readDirs: [],
|
|
44
|
-
network: false
|
|
49
|
+
network: false,
|
|
50
|
+
events: false
|
|
45
51
|
};
|
|
46
52
|
const defaults = {
|
|
47
53
|
workingDir: "/workspace",
|
|
48
54
|
writeDirs: [],
|
|
49
55
|
readDirs: [],
|
|
50
|
-
network: false
|
|
56
|
+
network: false,
|
|
57
|
+
events: false
|
|
51
58
|
};
|
|
52
59
|
const merged = permissionMergeDefault(permissions, defaults);
|
|
53
60
|
expect(merged.workingDir).toBe("/custom-workspace");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissionMergeDefault.spec.js","sourceRoot":"","sources":["../../../sources/engine/permissions/permissionMergeDefault.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAG9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,WAAW,GAAuB;YACtC,UAAU,EAAE,EAAE;YACd,SAAS,EAAE,CAAC,eAAe,CAAC;YAC5B,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE,KAAK;
|
|
1
|
+
{"version":3,"file":"permissionMergeDefault.spec.js","sourceRoot":"","sources":["../../../sources/engine/permissions/permissionMergeDefault.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAG9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,WAAW,GAAuB;YACtC,UAAU,EAAE,EAAE;YACd,SAAS,EAAE,CAAC,eAAe,CAAC;YAC5B,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,KAAK;SACd,CAAC;QACF,MAAM,QAAQ,GAAuB;YACnC,UAAU,EAAE,YAAY;YACxB,SAAS,EAAE,CAAC,aAAa,CAAC;YAC1B,QAAQ,EAAE,CAAC,YAAY,CAAC;YACxB,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,IAAI;SACb,CAAC;QAEF,MAAM,MAAM,GAAG,sBAAsB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAE7D,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAC9B,MAAM,CAAC,eAAe,CAAC,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC,CACzD,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,MAAM,WAAW,GAAuB;YACtC,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,EAAE;YACb,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,KAAK;SACd,CAAC;QACF,MAAM,QAAQ,GAAuB;YACnC,UAAU,EAAE,YAAY;YACxB,SAAS,EAAE,EAAE;YACb,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,KAAK;SACd,CAAC;QAEF,MAAM,MAAM,GAAG,sBAAsB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAE7D,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,WAAW,GAAuB;YACtC,UAAU,EAAE,mBAAmB;YAC/B,SAAS,EAAE,EAAE;YACb,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,KAAK;SACd,CAAC;QACF,MAAM,QAAQ,GAAuB;YACnC,UAAU,EAAE,YAAY;YACxB,SAAS,EAAE,EAAE;YACb,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,KAAK;SACd,CAAC;QAEF,MAAM,MAAM,GAAG,sBAAsB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAE7D,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { SessionPermissions } from "@/types";
|
|
2
2
|
/**
|
|
3
3
|
* Applies permission tags to a permissions object.
|
|
4
|
-
* Expects: tags are @network, @read:<path>, or @write:<path>.
|
|
4
|
+
* Expects: tags are @network, @events, @read:<path>, or @write:<path>.
|
|
5
5
|
*/
|
|
6
6
|
export declare function permissionTagsApply(permissions: SessionPermissions, tags: string[]): void;
|
|
7
7
|
//# sourceMappingURL=permissionTagsApply.d.ts.map
|
|
@@ -2,7 +2,7 @@ import { permissionAccessApply } from "./permissionAccessApply.js";
|
|
|
2
2
|
import { permissionAccessParse } from "./permissionAccessParse.js";
|
|
3
3
|
/**
|
|
4
4
|
* Applies permission tags to a permissions object.
|
|
5
|
-
* Expects: tags are @network, @read:<path>, or @write:<path>.
|
|
5
|
+
* Expects: tags are @network, @events, @read:<path>, or @write:<path>.
|
|
6
6
|
*/
|
|
7
7
|
export function permissionTagsApply(permissions, tags) {
|
|
8
8
|
for (const tag of tags) {
|
|
@@ -6,10 +6,12 @@ describe("permissionTagsApply", () => {
|
|
|
6
6
|
workingDir: "/tmp",
|
|
7
7
|
writeDirs: [],
|
|
8
8
|
readDirs: [],
|
|
9
|
-
network: false
|
|
9
|
+
network: false,
|
|
10
|
+
events: false
|
|
10
11
|
};
|
|
11
|
-
permissionTagsApply(permissions, ["@network", "@read:/tmp", "@write:/var/tmp"]);
|
|
12
|
+
permissionTagsApply(permissions, ["@network", "@events", "@read:/tmp", "@write:/var/tmp"]);
|
|
12
13
|
expect(permissions.network).toBe(true);
|
|
14
|
+
expect(permissions.events).toBe(true);
|
|
13
15
|
expect(permissions.readDirs).toContain("/tmp");
|
|
14
16
|
expect(permissions.readDirs).toContain("/var/tmp");
|
|
15
17
|
expect(permissions.writeDirs).toContain("/var/tmp");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissionTagsApply.spec.js","sourceRoot":"","sources":["../../../sources/engine/permissions/permissionTagsApply.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,WAAW,GAAG;YAClB,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,EAAE;YACb,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE,KAAK;
|
|
1
|
+
{"version":3,"file":"permissionTagsApply.spec.js","sourceRoot":"","sources":["../../../sources/engine/permissions/permissionTagsApply.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,WAAW,GAAG;YAClB,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,EAAE;YACb,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,KAAK;SACd,CAAC;QACF,mBAAmB,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAC3F,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACnD,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Normalizes an unknown permissions list into unique permission tags.
|
|
3
|
-
* Expects: entries are @network, @read:<path>, or @write:<path>.
|
|
3
|
+
* Expects: entries are @network, @events, @read:<path>, or @write:<path>.
|
|
4
4
|
*/
|
|
5
5
|
export declare function permissionTagsNormalize(value: unknown): string[];
|
|
6
6
|
//# sourceMappingURL=permissionTagsNormalize.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissionTagsNormalize.d.ts","sourceRoot":"","sources":["../../../sources/engine/permissions/permissionTagsNormalize.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"permissionTagsNormalize.d.ts","sourceRoot":"","sources":["../../../sources/engine/permissions/permissionTagsNormalize.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAiChE"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { permissionAccessParse } from "./permissionAccessParse.js";
|
|
2
2
|
/**
|
|
3
3
|
* Normalizes an unknown permissions list into unique permission tags.
|
|
4
|
-
* Expects: entries are @network, @read:<path>, or @write:<path>.
|
|
4
|
+
* Expects: entries are @network, @events, @read:<path>, or @write:<path>.
|
|
5
5
|
*/
|
|
6
6
|
export function permissionTagsNormalize(value) {
|
|
7
7
|
if (!value) {
|
|
@@ -19,9 +19,16 @@ export function permissionTagsNormalize(value) {
|
|
|
19
19
|
continue;
|
|
20
20
|
}
|
|
21
21
|
const access = permissionAccessParse(trimmed);
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
let tag;
|
|
23
|
+
if (access.kind === "network") {
|
|
24
|
+
tag = "@network";
|
|
25
|
+
}
|
|
26
|
+
else if (access.kind === "events") {
|
|
27
|
+
tag = "@events";
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
tag = `${access.kind === "read" ? "@read" : "@write"}:${access.path}`;
|
|
31
|
+
}
|
|
25
32
|
if (seen.has(tag)) {
|
|
26
33
|
continue;
|
|
27
34
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissionTagsNormalize.js","sourceRoot":"","sources":["../../../sources/engine/permissions/permissionTagsNormalize.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAAc;IACpD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACvD,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAqB,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAChE,
|
|
1
|
+
{"version":3,"file":"permissionTagsNormalize.js","sourceRoot":"","sources":["../../../sources/engine/permissions/permissionTagsNormalize.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAAc;IACpD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACvD,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAqB,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAChE,IAAI,GAAW,CAAC;QAChB,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,GAAG,GAAG,UAAU,CAAC;QACnB,CAAC;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACpC,GAAG,GAAG,SAAS,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QACxE,CAAC;QACD,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAClB,SAAS;QACX,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
@@ -4,11 +4,12 @@ describe("permissionTagsNormalize", () => {
|
|
|
4
4
|
it("normalizes and dedupes permission tags", () => {
|
|
5
5
|
const result = permissionTagsNormalize([
|
|
6
6
|
" @network ",
|
|
7
|
+
"@events",
|
|
7
8
|
"@read:/tmp",
|
|
8
9
|
"@read:/tmp",
|
|
9
10
|
"@write:/var/log"
|
|
10
11
|
]);
|
|
11
|
-
expect(result).toEqual(["@network", "@read:/tmp", "@write:/var/log"]);
|
|
12
|
+
expect(result).toEqual(["@network", "@events", "@read:/tmp", "@write:/var/log"]);
|
|
12
13
|
});
|
|
13
14
|
it("returns empty for missing values", () => {
|
|
14
15
|
expect(permissionTagsNormalize(undefined)).toEqual([]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissionTagsNormalize.spec.js","sourceRoot":"","sources":["../../../sources/engine/permissions/permissionTagsNormalize.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,MAAM,GAAG,uBAAuB,CAAC;YACrC,YAAY;YACZ,YAAY;YACZ,YAAY;YACZ,iBAAiB;SAClB,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,YAAY,EAAE,iBAAiB,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"permissionTagsNormalize.spec.js","sourceRoot":"","sources":["../../../sources/engine/permissions/permissionTagsNormalize.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,MAAM,GAAG,uBAAuB,CAAC;YACrC,YAAY;YACZ,SAAS;YACT,YAAY;YACZ,YAAY;YACZ,iBAAiB;SAClB,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -3,7 +3,7 @@ import type { SessionPermissions } from "@/types";
|
|
|
3
3
|
* Validates that all permission tags are allowed by current permissions.
|
|
4
4
|
* Throws an error if any permission is not already held by the caller.
|
|
5
5
|
*
|
|
6
|
-
* Expects: tags are @network, @read:<path>, or @write:<path>.
|
|
6
|
+
* Expects: tags are @network, @events, @read:<path>, or @write:<path>.
|
|
7
7
|
*/
|
|
8
8
|
export declare function permissionTagsValidate(permissions: SessionPermissions, tags: string[]): Promise<void>;
|
|
9
9
|
//# sourceMappingURL=permissionTagsValidate.d.ts.map
|
|
@@ -4,7 +4,7 @@ import { permissionAccessParse } from "./permissionAccessParse.js";
|
|
|
4
4
|
* Validates that all permission tags are allowed by current permissions.
|
|
5
5
|
* Throws an error if any permission is not already held by the caller.
|
|
6
6
|
*
|
|
7
|
-
* Expects: tags are @network, @read:<path>, or @write:<path>.
|
|
7
|
+
* Expects: tags are @network, @events, @read:<path>, or @write:<path>.
|
|
8
8
|
*/
|
|
9
9
|
export async function permissionTagsValidate(permissions, tags) {
|
|
10
10
|
for (const tag of tags) {
|
|
@@ -18,27 +18,46 @@ describe("permissionTagsValidate", () => {
|
|
|
18
18
|
workingDir: dir,
|
|
19
19
|
writeDirs: [dir],
|
|
20
20
|
readDirs: [dir],
|
|
21
|
-
network: true
|
|
21
|
+
network: true,
|
|
22
|
+
events: true
|
|
22
23
|
};
|
|
23
24
|
// Should not throw
|
|
24
|
-
await permissionTagsValidate(permissions, [
|
|
25
|
+
await permissionTagsValidate(permissions, [
|
|
26
|
+
"@network",
|
|
27
|
+
"@events",
|
|
28
|
+
`@read:${target}`,
|
|
29
|
+
`@write:${dir}`
|
|
30
|
+
]);
|
|
25
31
|
});
|
|
26
32
|
it("rejects network permission when caller lacks it", async () => {
|
|
27
33
|
const permissions = {
|
|
28
34
|
workingDir: "/tmp",
|
|
29
35
|
writeDirs: [],
|
|
30
36
|
readDirs: [],
|
|
31
|
-
network: false
|
|
37
|
+
network: false,
|
|
38
|
+
events: false
|
|
32
39
|
};
|
|
33
40
|
await expect(permissionTagsValidate(permissions, ["@network"]))
|
|
34
41
|
.rejects.toThrow("Cannot attach permission '@network' - you don't have it.");
|
|
35
42
|
});
|
|
43
|
+
it("rejects events permission when caller lacks it", async () => {
|
|
44
|
+
const permissions = {
|
|
45
|
+
workingDir: "/tmp",
|
|
46
|
+
writeDirs: [],
|
|
47
|
+
readDirs: [],
|
|
48
|
+
network: false,
|
|
49
|
+
events: false
|
|
50
|
+
};
|
|
51
|
+
await expect(permissionTagsValidate(permissions, ["@events"]))
|
|
52
|
+
.rejects.toThrow("Cannot attach permission '@events' - you don't have it.");
|
|
53
|
+
});
|
|
36
54
|
it("rejects write permission outside allowed directories", async () => {
|
|
37
55
|
const permissions = {
|
|
38
56
|
workingDir: "/tmp",
|
|
39
57
|
writeDirs: ["/tmp"],
|
|
40
58
|
readDirs: [],
|
|
41
|
-
network: false
|
|
59
|
+
network: false,
|
|
60
|
+
events: false
|
|
42
61
|
};
|
|
43
62
|
await expect(permissionTagsValidate(permissions, ["@write:/etc"]))
|
|
44
63
|
.rejects.toThrow("Cannot attach permission '@write:/etc' - you don't have it.");
|
|
@@ -48,7 +67,8 @@ describe("permissionTagsValidate", () => {
|
|
|
48
67
|
workingDir: "/tmp",
|
|
49
68
|
writeDirs: [],
|
|
50
69
|
readDirs: ["/tmp"],
|
|
51
|
-
network: false
|
|
70
|
+
network: false,
|
|
71
|
+
events: false
|
|
52
72
|
};
|
|
53
73
|
await expect(permissionTagsValidate(permissions, ["@read:/etc"]))
|
|
54
74
|
.rejects.toThrow("Cannot attach permission '@read:/etc' - you don't have it.");
|
|
@@ -58,7 +78,8 @@ describe("permissionTagsValidate", () => {
|
|
|
58
78
|
workingDir: "/tmp",
|
|
59
79
|
writeDirs: [],
|
|
60
80
|
readDirs: [],
|
|
61
|
-
network: false
|
|
81
|
+
network: false,
|
|
82
|
+
events: false
|
|
62
83
|
};
|
|
63
84
|
await expect(permissionTagsValidate(permissions, ["@read:/etc"])).resolves.toBeUndefined();
|
|
64
85
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissionTagsValidate.spec.js","sourceRoot":"","sources":["../../../sources/engine/permissions/permissionTagsValidate.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzD,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACvF,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;QACvE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAC1C,MAAM,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAEzC,MAAM,WAAW,GAAG;YAClB,UAAU,EAAE,GAAG;YACf,SAAS,EAAE,CAAC,GAAG,CAAC;YAChB,QAAQ,EAAE,CAAC,GAAG,CAAC;YACf,OAAO,EAAE,IAAI;
|
|
1
|
+
{"version":3,"file":"permissionTagsValidate.spec.js","sourceRoot":"","sources":["../../../sources/engine/permissions/permissionTagsValidate.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ export type SessionPermissions = {
|
|
|
4
4
|
writeDirs: string[];
|
|
5
5
|
readDirs: string[];
|
|
6
6
|
network: boolean;
|
|
7
|
+
events: boolean;
|
|
7
8
|
};
|
|
8
9
|
export declare function resolveWorkspaceDir(configDir: string, assistant?: AssistantSettings | null): string;
|
|
9
10
|
export declare function ensureWorkspaceDir(dir: string): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../sources/engine/permissions.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../sources/engine/permissions.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,iBAAiB,GAAG,IAAI,GACnC,MAAM,CAQR;AAED,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEnE;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,EACd,iBAAiB,EAAE,MAAM,GACxB,kBAAkB,CAoDpB;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAO/E"}
|
|
@@ -16,6 +16,7 @@ export function normalizePermissions(value, defaultWorkingDir) {
|
|
|
16
16
|
let writeDirs = [];
|
|
17
17
|
let readDirs = [];
|
|
18
18
|
let network = false;
|
|
19
|
+
let events = false;
|
|
19
20
|
if (value && typeof value === "object") {
|
|
20
21
|
const candidate = value;
|
|
21
22
|
if (typeof candidate.workingDir === "string" && candidate.workingDir.trim().length > 0) {
|
|
@@ -37,11 +38,15 @@ export function normalizePermissions(value, defaultWorkingDir) {
|
|
|
37
38
|
if (typeof candidate.network === "boolean") {
|
|
38
39
|
network = candidate.network;
|
|
39
40
|
}
|
|
41
|
+
if (typeof candidate.events === "boolean") {
|
|
42
|
+
events = candidate.events;
|
|
43
|
+
}
|
|
40
44
|
return {
|
|
41
45
|
workingDir: path.resolve(candidate.workingDir),
|
|
42
46
|
writeDirs: dedupe(writeDirs),
|
|
43
47
|
readDirs: dedupe(readDirs),
|
|
44
|
-
network
|
|
48
|
+
network,
|
|
49
|
+
events
|
|
45
50
|
};
|
|
46
51
|
}
|
|
47
52
|
}
|
|
@@ -50,7 +55,8 @@ export function normalizePermissions(value, defaultWorkingDir) {
|
|
|
50
55
|
workingDir: path.resolve(defaultWorkingDir),
|
|
51
56
|
writeDirs: [],
|
|
52
57
|
readDirs: [],
|
|
53
|
-
network: false
|
|
58
|
+
network: false,
|
|
59
|
+
events: false
|
|
54
60
|
};
|
|
55
61
|
}
|
|
56
62
|
export function resolveWorkspacePath(workingDir, target) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../sources/engine/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../sources/engine/permissions.ts"],"names":[],"mappings":"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"}
|
|
@@ -39,6 +39,7 @@ export declare class Processes {
|
|
|
39
39
|
private readonly lock;
|
|
40
40
|
private readonly logger;
|
|
41
41
|
private readonly bootTimeProvider;
|
|
42
|
+
private readonly socketPath;
|
|
42
43
|
private readonly records;
|
|
43
44
|
private readonly children;
|
|
44
45
|
private currentBootTimeMs;
|
|
@@ -46,6 +47,7 @@ export declare class Processes {
|
|
|
46
47
|
private monitorHandle;
|
|
47
48
|
constructor(baseDir: string, logger: Logger, options?: {
|
|
48
49
|
bootTimeProvider?: () => Promise<number | null>;
|
|
50
|
+
socketPath?: string;
|
|
49
51
|
});
|
|
50
52
|
load(): Promise<void>;
|
|
51
53
|
unload(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processes.d.ts","sourceRoot":"","sources":["../../../sources/engine/processes/processes.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"processes.d.ts","sourceRoot":"","sources":["../../../sources/engine/processes/processes.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,7 @@ import { AsyncLock } from "../../util/lock.js";
|
|
|
13
13
|
import { sandboxHomeRedefine } from "../../sandbox/sandboxHomeRedefine.js";
|
|
14
14
|
import { atomicWrite } from "../../util/atomicWrite.js";
|
|
15
15
|
import { processBootTimeRead } from "./processBootTimeRead.js";
|
|
16
|
+
import { resolveEngineSocketPath } from "../ipc/socket.js";
|
|
16
17
|
const RECORD_VERSION = 2;
|
|
17
18
|
const MONITOR_INTERVAL_MS = 2_000;
|
|
18
19
|
const PROCESS_STOP_TIMEOUT_MS = 8_000;
|
|
@@ -33,6 +34,7 @@ export class Processes {
|
|
|
33
34
|
lock = new AsyncLock();
|
|
34
35
|
logger;
|
|
35
36
|
bootTimeProvider;
|
|
37
|
+
socketPath;
|
|
36
38
|
records = new Map();
|
|
37
39
|
children = new Map();
|
|
38
40
|
currentBootTimeMs = null;
|
|
@@ -43,6 +45,7 @@ export class Processes {
|
|
|
43
45
|
this.recordsDir = path.join(this.baseDir, "processes");
|
|
44
46
|
this.logger = logger;
|
|
45
47
|
this.bootTimeProvider = options.bootTimeProvider ?? processBootTimeRead;
|
|
48
|
+
this.socketPath = resolveEngineSocketPath(options.socketPath);
|
|
46
49
|
}
|
|
47
50
|
async load() {
|
|
48
51
|
await fs.mkdir(this.recordsDir, { recursive: true });
|
|
@@ -278,7 +281,7 @@ export class Processes {
|
|
|
278
281
|
}
|
|
279
282
|
}
|
|
280
283
|
async startRecordLocked(record, options) {
|
|
281
|
-
const sandboxConfig = buildSandboxConfig(record.allowedDomains, record.permissions);
|
|
284
|
+
const sandboxConfig = buildSandboxConfig(record.allowedDomains, record.permissions, this.socketPath);
|
|
282
285
|
await atomicWrite(record.settingsPath, JSON.stringify(sandboxConfig));
|
|
283
286
|
const baseEnv = { ...process.env, ...record.env };
|
|
284
287
|
const envResult = await sandboxHomeRedefine({ env: baseEnv, home: record.home ?? undefined });
|
|
@@ -404,13 +407,14 @@ export class Processes {
|
|
|
404
407
|
this.children.delete(record.id);
|
|
405
408
|
}
|
|
406
409
|
}
|
|
407
|
-
function buildSandboxConfig(allowedDomains, permissions) {
|
|
410
|
+
function buildSandboxConfig(allowedDomains, permissions, socketPath) {
|
|
408
411
|
return {
|
|
409
412
|
filesystem: sandboxFilesystemPolicyBuild({ permissions }),
|
|
410
413
|
network: {
|
|
411
414
|
allowedDomains,
|
|
412
415
|
deniedDomains: []
|
|
413
416
|
},
|
|
417
|
+
...(permissions.events ? { allowUnixSockets: [socketPath] } : {}),
|
|
414
418
|
enableWeakerNestedSandbox: true
|
|
415
419
|
};
|
|
416
420
|
}
|
|
@@ -510,7 +514,8 @@ function parsePermissions(value) {
|
|
|
510
514
|
if (typeof candidate.workingDir !== "string" ||
|
|
511
515
|
!Array.isArray(candidate.writeDirs) ||
|
|
512
516
|
!Array.isArray(candidate.readDirs) ||
|
|
513
|
-
typeof candidate.network !== "boolean"
|
|
517
|
+
typeof candidate.network !== "boolean" ||
|
|
518
|
+
typeof candidate.events !== "boolean") {
|
|
514
519
|
return null;
|
|
515
520
|
}
|
|
516
521
|
const writeDirs = candidate.writeDirs.filter((entry) => typeof entry === "string");
|
|
@@ -519,7 +524,8 @@ function parsePermissions(value) {
|
|
|
519
524
|
workingDir: candidate.workingDir,
|
|
520
525
|
writeDirs,
|
|
521
526
|
readDirs,
|
|
522
|
-
network: candidate.network
|
|
527
|
+
network: candidate.network,
|
|
528
|
+
events: candidate.events
|
|
523
529
|
};
|
|
524
530
|
}
|
|
525
531
|
function clonePermissions(permissions) {
|
|
@@ -527,7 +533,8 @@ function clonePermissions(permissions) {
|
|
|
527
533
|
workingDir: permissions.workingDir,
|
|
528
534
|
writeDirs: [...permissions.writeDirs],
|
|
529
535
|
readDirs: [...permissions.readDirs],
|
|
530
|
-
network: permissions.network
|
|
536
|
+
network: permissions.network,
|
|
537
|
+
events: permissions.events
|
|
531
538
|
};
|
|
532
539
|
}
|
|
533
540
|
function isPackageManager(value) {
|