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.
Files changed (167) hide show
  1. package/dist/commands/add.js +3 -1
  2. package/dist/commands/add.js.map +1 -1
  3. package/dist/commands/event.js +2 -2
  4. package/dist/commands/event.js.map +1 -1
  5. package/dist/commands/event.spec.js +7 -7
  6. package/dist/commands/event.spec.js.map +1 -1
  7. package/dist/engine/agents/agent.d.ts.map +1 -1
  8. package/dist/engine/agents/agent.js +11 -5
  9. package/dist/engine/agents/agent.js.map +1 -1
  10. package/dist/engine/agents/agentSystem.d.ts.map +1 -1
  11. package/dist/engine/agents/agentSystem.js +2 -3
  12. package/dist/engine/agents/agentSystem.js.map +1 -1
  13. package/dist/engine/agents/ops/agentStateRead.d.ts.map +1 -1
  14. package/dist/engine/agents/ops/agentStateRead.js +2 -1
  15. package/dist/engine/agents/ops/agentStateRead.js.map +1 -1
  16. package/dist/engine/cron/crons.js +2 -1
  17. package/dist/engine/cron/crons.js.map +1 -1
  18. package/dist/engine/cron/ops/cronScheduler.d.ts.map +1 -1
  19. package/dist/engine/cron/ops/cronScheduler.js +2 -1
  20. package/dist/engine/cron/ops/cronScheduler.js.map +1 -1
  21. package/dist/engine/cron/ops/cronScheduler.spec.js +2 -1
  22. package/dist/engine/cron/ops/cronScheduler.spec.js.map +1 -1
  23. package/dist/engine/engine.d.ts.map +1 -1
  24. package/dist/engine/engine.js +1 -1
  25. package/dist/engine/engine.js.map +1 -1
  26. package/dist/engine/heartbeat/ops/heartbeatScheduler.d.ts.map +1 -1
  27. package/dist/engine/heartbeat/ops/heartbeatScheduler.js +2 -1
  28. package/dist/engine/heartbeat/ops/heartbeatScheduler.js.map +1 -1
  29. package/dist/engine/heartbeat/ops/heartbeatScheduler.spec.js +2 -1
  30. package/dist/engine/heartbeat/ops/heartbeatScheduler.spec.js.map +1 -1
  31. package/dist/engine/ipc/client.d.ts +2 -0
  32. package/dist/engine/ipc/client.d.ts.map +1 -1
  33. package/dist/engine/ipc/client.js +13 -0
  34. package/dist/engine/ipc/client.js.map +1 -1
  35. package/dist/engine/modules/connectors/types.d.ts +3 -1
  36. package/dist/engine/modules/connectors/types.d.ts.map +1 -1
  37. package/dist/engine/modules/tools/background.spec.js +1 -0
  38. package/dist/engine/modules/tools/background.spec.js.map +1 -1
  39. package/dist/engine/modules/tools/image-generation.spec.js +2 -1
  40. package/dist/engine/modules/tools/image-generation.spec.js.map +1 -1
  41. package/dist/engine/modules/tools/mermaid-png.spec.js +2 -1
  42. package/dist/engine/modules/tools/mermaid-png.spec.js.map +1 -1
  43. package/dist/engine/modules/tools/permanentAgentToolBuild.spec.js +1 -0
  44. package/dist/engine/modules/tools/permanentAgentToolBuild.spec.js.map +1 -1
  45. package/dist/engine/modules/tools/permissions.js +4 -1
  46. package/dist/engine/modules/tools/permissions.js.map +1 -1
  47. package/dist/engine/modules/tools/signal.spec.js +2 -1
  48. package/dist/engine/modules/tools/signal.spec.js.map +1 -1
  49. package/dist/engine/modules/tools/signalSubscribeToolBuild.spec.js +2 -1
  50. package/dist/engine/modules/tools/signalSubscribeToolBuild.spec.js.map +1 -1
  51. package/dist/engine/modules/tools/signalUnsubscribeToolBuild.spec.js +2 -1
  52. package/dist/engine/modules/tools/signalUnsubscribeToolBuild.spec.js.map +1 -1
  53. package/dist/engine/permissions/permissionAccessAllows.d.ts +1 -1
  54. package/dist/engine/permissions/permissionAccessAllows.d.ts.map +1 -1
  55. package/dist/engine/permissions/permissionAccessAllows.js +4 -1
  56. package/dist/engine/permissions/permissionAccessAllows.js.map +1 -1
  57. package/dist/engine/permissions/permissionAccessAllows.spec.js +10 -6
  58. package/dist/engine/permissions/permissionAccessAllows.spec.js.map +1 -1
  59. package/dist/engine/permissions/permissionAccessApply.d.ts.map +1 -1
  60. package/dist/engine/permissions/permissionAccessApply.js +4 -0
  61. package/dist/engine/permissions/permissionAccessApply.js.map +1 -1
  62. package/dist/engine/permissions/permissionAccessApply.spec.js +8 -1
  63. package/dist/engine/permissions/permissionAccessApply.spec.js.map +1 -1
  64. package/dist/engine/permissions/permissionAccessParse.d.ts +1 -1
  65. package/dist/engine/permissions/permissionAccessParse.d.ts.map +1 -1
  66. package/dist/engine/permissions/permissionAccessParse.js +5 -2
  67. package/dist/engine/permissions/permissionAccessParse.js.map +1 -1
  68. package/dist/engine/permissions/permissionAccessParse.spec.js +2 -1
  69. package/dist/engine/permissions/permissionAccessParse.spec.js.map +1 -1
  70. package/dist/engine/permissions/permissionApply.spec.js +14 -1
  71. package/dist/engine/permissions/permissionApply.spec.js.map +1 -1
  72. package/dist/engine/permissions/permissionBuildCron.d.ts.map +1 -1
  73. package/dist/engine/permissions/permissionBuildCron.js +2 -1
  74. package/dist/engine/permissions/permissionBuildCron.js.map +1 -1
  75. package/dist/engine/permissions/permissionBuildCron.spec.js +3 -1
  76. package/dist/engine/permissions/permissionBuildCron.spec.js.map +1 -1
  77. package/dist/engine/permissions/permissionBuildDefault.d.ts.map +1 -1
  78. package/dist/engine/permissions/permissionBuildDefault.js +2 -1
  79. package/dist/engine/permissions/permissionBuildDefault.js.map +1 -1
  80. package/dist/engine/permissions/permissionBuildDefault.spec.js +1 -0
  81. package/dist/engine/permissions/permissionBuildDefault.spec.js.map +1 -1
  82. package/dist/engine/permissions/permissionClone.spec.js +2 -1
  83. package/dist/engine/permissions/permissionClone.spec.js.map +1 -1
  84. package/dist/engine/permissions/permissionDescribeDecision.d.ts.map +1 -1
  85. package/dist/engine/permissions/permissionDescribeDecision.js +3 -0
  86. package/dist/engine/permissions/permissionDescribeDecision.js.map +1 -1
  87. package/dist/engine/permissions/permissionDescribeDecision.spec.js +3 -0
  88. package/dist/engine/permissions/permissionDescribeDecision.spec.js.map +1 -1
  89. package/dist/engine/permissions/permissionEnsureDefaultFile.spec.js +2 -1
  90. package/dist/engine/permissions/permissionEnsureDefaultFile.spec.js.map +1 -1
  91. package/dist/engine/permissions/permissionFormatTag.d.ts.map +1 -1
  92. package/dist/engine/permissions/permissionFormatTag.js +3 -0
  93. package/dist/engine/permissions/permissionFormatTag.js.map +1 -1
  94. package/dist/engine/permissions/permissionFormatTag.spec.js +3 -0
  95. package/dist/engine/permissions/permissionFormatTag.spec.js.map +1 -1
  96. package/dist/engine/permissions/permissionMergeDefault.d.ts.map +1 -1
  97. package/dist/engine/permissions/permissionMergeDefault.js +2 -1
  98. package/dist/engine/permissions/permissionMergeDefault.js.map +1 -1
  99. package/dist/engine/permissions/permissionMergeDefault.spec.js +13 -6
  100. package/dist/engine/permissions/permissionMergeDefault.spec.js.map +1 -1
  101. package/dist/engine/permissions/permissionTagsApply.d.ts +1 -1
  102. package/dist/engine/permissions/permissionTagsApply.js +1 -1
  103. package/dist/engine/permissions/permissionTagsApply.spec.js +4 -2
  104. package/dist/engine/permissions/permissionTagsApply.spec.js.map +1 -1
  105. package/dist/engine/permissions/permissionTagsNormalize.d.ts +1 -1
  106. package/dist/engine/permissions/permissionTagsNormalize.d.ts.map +1 -1
  107. package/dist/engine/permissions/permissionTagsNormalize.js +11 -4
  108. package/dist/engine/permissions/permissionTagsNormalize.js.map +1 -1
  109. package/dist/engine/permissions/permissionTagsNormalize.spec.js +2 -1
  110. package/dist/engine/permissions/permissionTagsNormalize.spec.js.map +1 -1
  111. package/dist/engine/permissions/permissionTagsValidate.d.ts +1 -1
  112. package/dist/engine/permissions/permissionTagsValidate.js +1 -1
  113. package/dist/engine/permissions/permissionTagsValidate.spec.js +27 -6
  114. package/dist/engine/permissions/permissionTagsValidate.spec.js.map +1 -1
  115. package/dist/engine/permissions.d.ts +1 -0
  116. package/dist/engine/permissions.d.ts.map +1 -1
  117. package/dist/engine/permissions.js +8 -2
  118. package/dist/engine/permissions.js.map +1 -1
  119. package/dist/engine/processes/processes.d.ts +2 -0
  120. package/dist/engine/processes/processes.d.ts.map +1 -1
  121. package/dist/engine/processes/processes.js +12 -5
  122. package/dist/engine/processes/processes.js.map +1 -1
  123. package/dist/engine/processes/processes.spec.js +30 -4
  124. package/dist/engine/processes/processes.spec.js.map +1 -1
  125. package/dist/engine/scheduling/execGateCheck.d.ts +1 -0
  126. package/dist/engine/scheduling/execGateCheck.d.ts.map +1 -1
  127. package/dist/engine/scheduling/execGateCheck.js +4 -2
  128. package/dist/engine/scheduling/execGateCheck.js.map +1 -1
  129. package/dist/engine/scheduling/gatePermissionsCheck.d.ts +1 -1
  130. package/dist/engine/scheduling/gatePermissionsCheck.js +5 -2
  131. package/dist/engine/scheduling/gatePermissionsCheck.js.map +1 -1
  132. package/dist/engine/scheduling/gatePermissionsCheck.spec.js +13 -2
  133. package/dist/engine/scheduling/gatePermissionsCheck.spec.js.map +1 -1
  134. package/dist/engine/skills/skillListConfig.d.ts.map +1 -1
  135. package/dist/engine/skills/skillListConfig.js +17 -0
  136. package/dist/engine/skills/skillListConfig.js.map +1 -1
  137. package/dist/engine/skills/skillListConfig.spec.d.ts +2 -0
  138. package/dist/engine/skills/skillListConfig.spec.d.ts.map +1 -0
  139. package/dist/engine/skills/skillListConfig.spec.js +31 -0
  140. package/dist/engine/skills/skillListConfig.spec.js.map +1 -0
  141. package/dist/main.js +1 -1
  142. package/dist/main.js.map +1 -1
  143. package/dist/plugins/database/__tests__/plugin.spec.js +2 -1
  144. package/dist/plugins/database/__tests__/plugin.spec.js.map +1 -1
  145. package/dist/plugins/monty-python/tool.spec.js +2 -1
  146. package/dist/plugins/monty-python/tool.spec.js.map +1 -1
  147. package/dist/plugins/shell/processTools.js +3 -2
  148. package/dist/plugins/shell/processTools.js.map +1 -1
  149. package/dist/plugins/shell/processTools.spec.js +18 -9
  150. package/dist/plugins/shell/processTools.spec.js.map +1 -1
  151. package/dist/plugins/shell/tool.d.ts.map +1 -1
  152. package/dist/plugins/shell/tool.js +8 -4
  153. package/dist/plugins/shell/tool.js.map +1 -1
  154. package/dist/plugins/shell/tool.spec.js +7 -3
  155. package/dist/plugins/shell/tool.spec.js.map +1 -1
  156. package/dist/plugins/telegram/connector.js +6 -1
  157. package/dist/plugins/telegram/connector.js.map +1 -1
  158. package/dist/plugins/whatsapp/connector.js +6 -1
  159. package/dist/plugins/whatsapp/connector.js.map +1 -1
  160. package/dist/prompts/PERMISSIONS.md +3 -2
  161. package/dist/sandbox/sandboxCanRead.spec.js +2 -1
  162. package/dist/sandbox/sandboxCanRead.spec.js.map +1 -1
  163. package/dist/sandbox/sandboxCanWrite.spec.js +2 -1
  164. package/dist/sandbox/sandboxCanWrite.spec.js.map +1 -1
  165. package/dist/sandbox/sandboxFilesystemPolicyBuild.spec.js +2 -1
  166. package/dist/sandbox/sandboxFilesystemPolicyBuild.spec.js.map +1 -1
  167. 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,CAUpB"}
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;KAC3D,CAAC;AACJ,CAAC"}
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;SACf,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;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;QAC7C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,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;SACf,CAAC;QACF,MAAM,QAAQ,GAAuB;YACnC,UAAU,EAAE,YAAY;YACxB,SAAS,EAAE,EAAE;YACb,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE,KAAK;SACf,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;SACf,CAAC;QACF,MAAM,QAAQ,GAAuB;YACnC,UAAU,EAAE,YAAY;YACxB,SAAS,EAAE,EAAE;YACb,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE,KAAK;SACf,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
+ {"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;SACf,CAAC;QACF,mBAAmB,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE,YAAY,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAChF,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,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
+ {"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,CA4BhE"}
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
- const tag = access.kind === "network"
23
- ? "@network"
24
- : `${access.kind === "read" ? "@read" : "@write"}:${access.path}`;
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,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,KAAK,SAAS;YACnC,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QACpE,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"}
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;IACxE,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"}
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, ["@network", `@read:${target}`, `@write:${dir}`]);
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":"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"}
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;CAClB,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,CA6CpB;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAO/E"}
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":"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"}
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":"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"}
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) {