agy-worker-mcp 0.3.1

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 (227) hide show
  1. package/CHANGELOG.md +141 -0
  2. package/LICENSE +21 -0
  3. package/README.md +309 -0
  4. package/commands/agy-ceiling.md +31 -0
  5. package/dist/broker/blockers.d.ts +86 -0
  6. package/dist/broker/blockers.d.ts.map +1 -0
  7. package/dist/broker/blockers.js +390 -0
  8. package/dist/broker/blockers.js.map +1 -0
  9. package/dist/broker/outcome.d.ts +85 -0
  10. package/dist/broker/outcome.d.ts.map +1 -0
  11. package/dist/broker/outcome.js +147 -0
  12. package/dist/broker/outcome.js.map +1 -0
  13. package/dist/broker/reconcile.d.ts +74 -0
  14. package/dist/broker/reconcile.d.ts.map +1 -0
  15. package/dist/broker/reconcile.js +415 -0
  16. package/dist/broker/reconcile.js.map +1 -0
  17. package/dist/broker/result.d.ts +88 -0
  18. package/dist/broker/result.d.ts.map +1 -0
  19. package/dist/broker/result.js +234 -0
  20. package/dist/broker/result.js.map +1 -0
  21. package/dist/broker/verify.d.ts +52 -0
  22. package/dist/broker/verify.d.ts.map +1 -0
  23. package/dist/broker/verify.js +174 -0
  24. package/dist/broker/verify.js.map +1 -0
  25. package/dist/contract/errors.d.ts +119 -0
  26. package/dist/contract/errors.d.ts.map +1 -0
  27. package/dist/contract/errors.js +99 -0
  28. package/dist/contract/errors.js.map +1 -0
  29. package/dist/contract/index.d.ts +10 -0
  30. package/dist/contract/index.d.ts.map +1 -0
  31. package/dist/contract/index.js +10 -0
  32. package/dist/contract/index.js.map +1 -0
  33. package/dist/contract/paths.d.ts +139 -0
  34. package/dist/contract/paths.d.ts.map +1 -0
  35. package/dist/contract/paths.js +359 -0
  36. package/dist/contract/paths.js.map +1 -0
  37. package/dist/contract/schema.sql +64 -0
  38. package/dist/contract/types.d.ts +1113 -0
  39. package/dist/contract/types.d.ts.map +1 -0
  40. package/dist/contract/types.js +114 -0
  41. package/dist/contract/types.js.map +1 -0
  42. package/dist/events/cursor.d.ts +65 -0
  43. package/dist/events/cursor.d.ts.map +1 -0
  44. package/dist/events/cursor.js +286 -0
  45. package/dist/events/cursor.js.map +1 -0
  46. package/dist/events/detect.d.ts +58 -0
  47. package/dist/events/detect.d.ts.map +1 -0
  48. package/dist/events/detect.js +183 -0
  49. package/dist/events/detect.js.map +1 -0
  50. package/dist/events/normalize.d.ts +30 -0
  51. package/dist/events/normalize.d.ts.map +1 -0
  52. package/dist/events/normalize.js +158 -0
  53. package/dist/events/normalize.js.map +1 -0
  54. package/dist/events/parse.d.ts +41 -0
  55. package/dist/events/parse.d.ts.map +1 -0
  56. package/dist/events/parse.js +89 -0
  57. package/dist/events/parse.js.map +1 -0
  58. package/dist/gate/bind.d.ts +28 -0
  59. package/dist/gate/bind.d.ts.map +1 -0
  60. package/dist/gate/bind.js +154 -0
  61. package/dist/gate/bind.js.map +1 -0
  62. package/dist/gate/gate.d.ts +139 -0
  63. package/dist/gate/gate.d.ts.map +1 -0
  64. package/dist/gate/gate.js +488 -0
  65. package/dist/gate/gate.js.map +1 -0
  66. package/dist/gate/hooks-file.d.ts +55 -0
  67. package/dist/gate/hooks-file.d.ts.map +1 -0
  68. package/dist/gate/hooks-file.js +104 -0
  69. package/dist/gate/hooks-file.js.map +1 -0
  70. package/dist/gate.d.ts +3 -0
  71. package/dist/gate.d.ts.map +1 -0
  72. package/dist/gate.js +20 -0
  73. package/dist/gate.js.map +1 -0
  74. package/dist/policy/ceiling-review.d.ts +22 -0
  75. package/dist/policy/ceiling-review.d.ts.map +1 -0
  76. package/dist/policy/ceiling-review.js +170 -0
  77. package/dist/policy/ceiling-review.js.map +1 -0
  78. package/dist/policy/ceiling.d.ts +128 -0
  79. package/dist/policy/ceiling.d.ts.map +1 -0
  80. package/dist/policy/ceiling.js +273 -0
  81. package/dist/policy/ceiling.js.map +1 -0
  82. package/dist/policy/containment.d.ts +100 -0
  83. package/dist/policy/containment.d.ts.map +1 -0
  84. package/dist/policy/containment.js +1071 -0
  85. package/dist/policy/containment.js.map +1 -0
  86. package/dist/policy/hard-deny.d.ts +28 -0
  87. package/dist/policy/hard-deny.d.ts.map +1 -0
  88. package/dist/policy/hard-deny.js +78 -0
  89. package/dist/policy/hard-deny.js.map +1 -0
  90. package/dist/policy/profiles.d.ts +82 -0
  91. package/dist/policy/profiles.d.ts.map +1 -0
  92. package/dist/policy/profiles.js +317 -0
  93. package/dist/policy/profiles.js.map +1 -0
  94. package/dist/policy/rules.d.ts +138 -0
  95. package/dist/policy/rules.d.ts.map +1 -0
  96. package/dist/policy/rules.js +1180 -0
  97. package/dist/policy/rules.js.map +1 -0
  98. package/dist/policy/seatbelt.d.ts +32 -0
  99. package/dist/policy/seatbelt.d.ts.map +1 -0
  100. package/dist/policy/seatbelt.js +59 -0
  101. package/dist/policy/seatbelt.js.map +1 -0
  102. package/dist/policy/tools.d.ts +36 -0
  103. package/dist/policy/tools.d.ts.map +1 -0
  104. package/dist/policy/tools.js +94 -0
  105. package/dist/policy/tools.js.map +1 -0
  106. package/dist/runner/gate-watchdog.d.ts +93 -0
  107. package/dist/runner/gate-watchdog.d.ts.map +1 -0
  108. package/dist/runner/gate-watchdog.js +153 -0
  109. package/dist/runner/gate-watchdog.js.map +1 -0
  110. package/dist/runner/idle.d.ts +51 -0
  111. package/dist/runner/idle.d.ts.map +1 -0
  112. package/dist/runner/idle.js +81 -0
  113. package/dist/runner/idle.js.map +1 -0
  114. package/dist/runner/inbox.d.ts +56 -0
  115. package/dist/runner/inbox.d.ts.map +1 -0
  116. package/dist/runner/inbox.js +134 -0
  117. package/dist/runner/inbox.js.map +1 -0
  118. package/dist/runner/reap.d.ts +65 -0
  119. package/dist/runner/reap.d.ts.map +1 -0
  120. package/dist/runner/reap.js +168 -0
  121. package/dist/runner/reap.js.map +1 -0
  122. package/dist/runner/runner.d.ts +51 -0
  123. package/dist/runner/runner.d.ts.map +1 -0
  124. package/dist/runner/runner.js +289 -0
  125. package/dist/runner/runner.js.map +1 -0
  126. package/dist/runner/spawn.d.ts +98 -0
  127. package/dist/runner/spawn.d.ts.map +1 -0
  128. package/dist/runner/spawn.js +230 -0
  129. package/dist/runner/spawn.js.map +1 -0
  130. package/dist/runner/verify.d.ts +24 -0
  131. package/dist/runner/verify.d.ts.map +1 -0
  132. package/dist/runner/verify.js +108 -0
  133. package/dist/runner/verify.js.map +1 -0
  134. package/dist/runner.d.ts +3 -0
  135. package/dist/runner.d.ts.map +1 -0
  136. package/dist/runner.js +15 -0
  137. package/dist/runner.js.map +1 -0
  138. package/dist/server/context.d.ts +41 -0
  139. package/dist/server/context.d.ts.map +1 -0
  140. package/dist/server/context.js +59 -0
  141. package/dist/server/context.js.map +1 -0
  142. package/dist/server/instructions.d.ts +13 -0
  143. package/dist/server/instructions.d.ts.map +1 -0
  144. package/dist/server/instructions.js +121 -0
  145. package/dist/server/instructions.js.map +1 -0
  146. package/dist/server/server.d.ts +20 -0
  147. package/dist/server/server.d.ts.map +1 -0
  148. package/dist/server/server.js +55 -0
  149. package/dist/server/server.js.map +1 -0
  150. package/dist/server/tools/cancel.d.ts +24 -0
  151. package/dist/server/tools/cancel.d.ts.map +1 -0
  152. package/dist/server/tools/cancel.js +59 -0
  153. package/dist/server/tools/cancel.js.map +1 -0
  154. package/dist/server/tools/capabilities.d.ts +36 -0
  155. package/dist/server/tools/capabilities.d.ts.map +1 -0
  156. package/dist/server/tools/capabilities.js +116 -0
  157. package/dist/server/tools/capabilities.js.map +1 -0
  158. package/dist/server/tools/ceiling.d.ts +31 -0
  159. package/dist/server/tools/ceiling.d.ts.map +1 -0
  160. package/dist/server/tools/ceiling.js +121 -0
  161. package/dist/server/tools/ceiling.js.map +1 -0
  162. package/dist/server/tools/index.d.ts +38 -0
  163. package/dist/server/tools/index.d.ts.map +1 -0
  164. package/dist/server/tools/index.js +115 -0
  165. package/dist/server/tools/index.js.map +1 -0
  166. package/dist/server/tools/listJobs.d.ts +30 -0
  167. package/dist/server/tools/listJobs.d.ts.map +1 -0
  168. package/dist/server/tools/listJobs.js +37 -0
  169. package/dist/server/tools/listJobs.js.map +1 -0
  170. package/dist/server/tools/logs.d.ts +31 -0
  171. package/dist/server/tools/logs.d.ts.map +1 -0
  172. package/dist/server/tools/logs.js +96 -0
  173. package/dist/server/tools/logs.js.map +1 -0
  174. package/dist/server/tools/result.d.ts +32 -0
  175. package/dist/server/tools/result.d.ts.map +1 -0
  176. package/dist/server/tools/result.js +95 -0
  177. package/dist/server/tools/result.js.map +1 -0
  178. package/dist/server/tools/send.d.ts +37 -0
  179. package/dist/server/tools/send.d.ts.map +1 -0
  180. package/dist/server/tools/send.js +71 -0
  181. package/dist/server/tools/send.js.map +1 -0
  182. package/dist/server/tools/sessions.d.ts +28 -0
  183. package/dist/server/tools/sessions.d.ts.map +1 -0
  184. package/dist/server/tools/sessions.js +54 -0
  185. package/dist/server/tools/sessions.js.map +1 -0
  186. package/dist/server/tools/start.d.ts +107 -0
  187. package/dist/server/tools/start.d.ts.map +1 -0
  188. package/dist/server/tools/start.js +482 -0
  189. package/dist/server/tools/start.js.map +1 -0
  190. package/dist/server/tools/wait.d.ts +29 -0
  191. package/dist/server/tools/wait.d.ts.map +1 -0
  192. package/dist/server/tools/wait.js +120 -0
  193. package/dist/server/tools/wait.js.map +1 -0
  194. package/dist/server.d.ts +3 -0
  195. package/dist/server.d.ts.map +1 -0
  196. package/dist/server.js +17 -0
  197. package/dist/server.js.map +1 -0
  198. package/dist/setup/install.d.ts +52 -0
  199. package/dist/setup/install.d.ts.map +1 -0
  200. package/dist/setup/install.js +108 -0
  201. package/dist/setup/install.js.map +1 -0
  202. package/dist/setup.d.ts +3 -0
  203. package/dist/setup.d.ts.map +1 -0
  204. package/dist/setup.js +24 -0
  205. package/dist/setup.js.map +1 -0
  206. package/dist/store/db.d.ts +49 -0
  207. package/dist/store/db.d.ts.map +1 -0
  208. package/dist/store/db.js +101 -0
  209. package/dist/store/db.js.map +1 -0
  210. package/dist/store/jobs.d.ts +45 -0
  211. package/dist/store/jobs.d.ts.map +1 -0
  212. package/dist/store/jobs.js +150 -0
  213. package/dist/store/jobs.js.map +1 -0
  214. package/dist/store/locks.d.ts +60 -0
  215. package/dist/store/locks.d.ts.map +1 -0
  216. package/dist/store/locks.js +172 -0
  217. package/dist/store/locks.js.map +1 -0
  218. package/dist/store/sessions.d.ts +37 -0
  219. package/dist/store/sessions.d.ts.map +1 -0
  220. package/dist/store/sessions.js +117 -0
  221. package/dist/store/sessions.js.map +1 -0
  222. package/dist/trace/digest.d.ts +77 -0
  223. package/dist/trace/digest.d.ts.map +1 -0
  224. package/dist/trace/digest.js +481 -0
  225. package/dist/trace/digest.js.map +1 -0
  226. package/package.json +68 -0
  227. package/skills/agy-ceiling/SKILL.md +72 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/policy/rules.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Our own macOS seatbelt profile (0.3.0 PR6; measured in M9).
3
+ *
4
+ * Why not agy's sandbox: measured on agy 1.1.24 (M7), it refuses every shell
5
+ * write inside the workspace, so "runs, but contained" was never on offer —
6
+ * only "does not run". `sandbox-exec` with a profile of our own gives the
7
+ * missing middle: the gate keeps judging intent (which command, which rule),
8
+ * the kernel keeps the command's *effects* inside `write_roots`, including
9
+ * writes made through an allowed interpreter (`python3 -c "open(...)"`) that
10
+ * a string classifier cannot see.
11
+ *
12
+ * How it is applied: M9 showed the PreToolUse hook's `overwrite.CommandLine`
13
+ * is honoured (the executed command changes; the model and the event stream
14
+ * still see the original). So the gate rewrites an allowed `run_command` to
15
+ * `sandbox-exec -p '<profile>' /bin/sh -c '<original>'` and sets
16
+ * `BypassSandbox: true` so agy's own profile stays out of the way.
17
+ *
18
+ * Scope is deliberately narrow: **file writes only**. Reads are the gate's and
19
+ * `read_roots`' business; network stays open unless the ceiling's exceptions
20
+ * say otherwise (a later step). `(allow default)` first, then deny all writes,
21
+ * then re-allow the roots — that ordering is what `sandbox-exec` evaluates
22
+ * last-match-wins on.
23
+ */
24
+ /** Write roots every command needs even when the workspace is the only real one. */
25
+ export declare function seatbeltImplicitWriteRoots(): string[];
26
+ /** The profile text for `sandbox-exec -p`. Pure: same roots, same text. */
27
+ export declare function seatbeltProfile(writeRoots: readonly string[]): string;
28
+ /** The rewritten `CommandLine` the gate hands back for an allowed command under seatbelt. */
29
+ export declare function seatbeltCommandLine(commandLine: string, writeRoots: readonly string[]): string;
30
+ /** `sandbox-exec` is macOS only; the policy resolver refuses seatbelt elsewhere. */
31
+ export declare function seatbeltAvailable(platform?: NodeJS.Platform): boolean;
32
+ //# sourceMappingURL=seatbelt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seatbelt.d.ts","sourceRoot":"","sources":["../../src/policy/seatbelt.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,oFAAoF;AACpF,wBAAgB,0BAA0B,IAAI,MAAM,EAAE,CAQrD;AAMD,2EAA2E;AAC3E,wBAAgB,eAAe,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAMrE;AAMD,6FAA6F;AAC7F,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAE9F;AAED,oFAAoF;AACpF,wBAAgB,iBAAiB,CAAC,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAAG,OAAO,CAEvF"}
@@ -0,0 +1,59 @@
1
+ import { realpathSync } from 'node:fs';
2
+ import { tmpdir } from 'node:os';
3
+ /**
4
+ * Our own macOS seatbelt profile (0.3.0 PR6; measured in M9).
5
+ *
6
+ * Why not agy's sandbox: measured on agy 1.1.24 (M7), it refuses every shell
7
+ * write inside the workspace, so "runs, but contained" was never on offer —
8
+ * only "does not run". `sandbox-exec` with a profile of our own gives the
9
+ * missing middle: the gate keeps judging intent (which command, which rule),
10
+ * the kernel keeps the command's *effects* inside `write_roots`, including
11
+ * writes made through an allowed interpreter (`python3 -c "open(...)"`) that
12
+ * a string classifier cannot see.
13
+ *
14
+ * How it is applied: M9 showed the PreToolUse hook's `overwrite.CommandLine`
15
+ * is honoured (the executed command changes; the model and the event stream
16
+ * still see the original). So the gate rewrites an allowed `run_command` to
17
+ * `sandbox-exec -p '<profile>' /bin/sh -c '<original>'` and sets
18
+ * `BypassSandbox: true` so agy's own profile stays out of the way.
19
+ *
20
+ * Scope is deliberately narrow: **file writes only**. Reads are the gate's and
21
+ * `read_roots`' business; network stays open unless the ceiling's exceptions
22
+ * say otherwise (a later step). `(allow default)` first, then deny all writes,
23
+ * then re-allow the roots — that ordering is what `sandbox-exec` evaluates
24
+ * last-match-wins on.
25
+ */
26
+ /** Write roots every command needs even when the workspace is the only real one. */
27
+ export function seatbeltImplicitWriteRoots() {
28
+ const roots = ['/dev', '/private/tmp', '/private/var/folders'];
29
+ try {
30
+ roots.push(realpathSync(tmpdir()));
31
+ }
32
+ catch {
33
+ // tmpdir() unresolvable: the two /private entries cover macOS defaults.
34
+ }
35
+ return Array.from(new Set(roots));
36
+ }
37
+ function sbString(s) {
38
+ return `"${s.replace(/\\/g, '\\\\').replace(/"/g, '\\"')}"`;
39
+ }
40
+ /** The profile text for `sandbox-exec -p`. Pure: same roots, same text. */
41
+ export function seatbeltProfile(writeRoots) {
42
+ const lines = ['(version 1)', '(allow default)', '(deny file-write*)'];
43
+ for (const root of writeRoots) {
44
+ lines.push(`(allow file-write* (subpath ${sbString(root)}))`);
45
+ }
46
+ return lines.join('\n');
47
+ }
48
+ function shQuote(s) {
49
+ return `'${s.replace(/'/g, `'\\''`)}'`;
50
+ }
51
+ /** The rewritten `CommandLine` the gate hands back for an allowed command under seatbelt. */
52
+ export function seatbeltCommandLine(commandLine, writeRoots) {
53
+ return `sandbox-exec -p ${shQuote(seatbeltProfile(writeRoots))} /bin/sh -c ${shQuote(commandLine)}`;
54
+ }
55
+ /** `sandbox-exec` is macOS only; the policy resolver refuses seatbelt elsewhere. */
56
+ export function seatbeltAvailable(platform = process.platform) {
57
+ return platform === 'darwin';
58
+ }
59
+ //# sourceMappingURL=seatbelt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seatbelt.js","sourceRoot":"","sources":["../../src/policy/seatbelt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAEhC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,oFAAoF;AACpF,MAAM,UAAU,0BAA0B;IACxC,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,sBAAsB,CAAC,CAAA;IAC9D,IAAI,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,wEAAwE;IAC1E,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;AACnC,CAAC;AAED,SAAS,QAAQ,CAAC,CAAS;IACzB,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAA;AAC7D,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,eAAe,CAAC,UAA6B;IAC3D,MAAM,KAAK,GAAG,CAAC,aAAa,EAAE,iBAAiB,EAAE,oBAAoB,CAAC,CAAA;IACtE,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,+BAA+B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC/D,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED,SAAS,OAAO,CAAC,CAAS;IACxB,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAA;AACxC,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,mBAAmB,CAAC,WAAmB,EAAE,UAA6B;IACpF,OAAO,mBAAmB,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,eAAe,OAAO,CAAC,WAAW,CAAC,EAAE,CAAA;AACrG,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,iBAAiB,CAAC,WAA4B,OAAO,CAAC,QAAQ;IAC5E,OAAO,QAAQ,KAAK,QAAQ,CAAA;AAC9B,CAAC"}
@@ -0,0 +1,36 @@
1
+ import type { RuleSubject } from './rules.js';
2
+ /**
3
+ * What a hook payload's tool call actually is, for the gate's `decide()`.
4
+ *
5
+ * Table transcribed from measurements M1 (the 7 tools
6
+ * a model actually calls, verbatim argument names) and M2 (the 4 subagent
7
+ * tools, which run under a *different* `conversationId` the gate can never
8
+ * bind).
9
+ *
10
+ * `manage_task` and `schedule` are `control`: they only ever touch
11
+ * conversation-scoped task bookkeeping (§`status`/`send_input`, M1) or
12
+ * agy's own task-scheduling helper without touching
13
+ * files or running commands. Nothing a rule list or containment root could
14
+ * meaningfully constrain, so they are always allowed rather than falling
15
+ * through `unsupported` and denying the one tool a background command or
16
+ * timeout retry needs.
17
+ */
18
+ export type ToolClass = {
19
+ kind: 'subject';
20
+ subject: RuleSubject;
21
+ read: string[];
22
+ write: string[];
23
+ } | {
24
+ kind: 'control';
25
+ } | {
26
+ kind: 'unsupported';
27
+ reason: string;
28
+ subagent: boolean;
29
+ };
30
+ /**
31
+ * Classify one hook payload's tool call. Never throws: a missing or
32
+ * non-string required argument is `unsupported`, not a crash — the gate must
33
+ * still emit a decision (`gate.ts`'s one absolute rule).
34
+ */
35
+ export declare function classifyToolCall(name: string, args: Record<string, unknown>, workspace: string): ToolClass;
36
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/policy/tools.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAG7C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,SAAS,GACjB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,GAC1E;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAA;AA0D9D;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,SAAS,EAAE,MAAM,GAChB,SAAS,CAiCX"}
@@ -0,0 +1,94 @@
1
+ import { isAbsolute, join } from 'node:path';
2
+ import { canonicalize } from '../contract/paths.js';
3
+ import { redirectionTargets } from './containment.js';
4
+ /** M2: these run their own tool calls under a fresh `conversationId` the gate cannot bind. */
5
+ const SUBAGENT_TOOLS = new Set(['define_subagent', 'invoke_subagent', 'manage_subagents', 'browser_subagent']);
6
+ const SUBAGENT_REASON = 'Subagent tool denied. Subagents run under a separate conversationId, so policies bound to this job cannot govern their tool calls (M2). Do not define or invoke subagents; perform the required work directly within this conversation.';
7
+ const GENERIC_UNSUPPORTED_REASON = 'This tool is not supported by agy-worker policy. Only the 7 observed tools (run_command, view_file, list_dir, find_by_name, grep_search, write_to_file, replace_file_content) along with manage_task and schedule can be classified by policy.';
8
+ function stringArg(args, key) {
9
+ const v = args[key];
10
+ return typeof v === 'string' && v.length > 0 ? v : null;
11
+ }
12
+ /**
13
+ * Resolve a tool argument path against the call's own `Cwd` (present on every
14
+ * hook payload, not just `run_command`'s — measured, M1) when it is relative,
15
+ * falling back to `workspace`. Every path M1 actually captured was absolute
16
+ * already; this only covers the possibility, not an observed case.
17
+ */
18
+ function resolveArgPath(value, args, workspace) {
19
+ if (isAbsolute(value))
20
+ return canonicalize(value);
21
+ const cwd = stringArg(args, 'Cwd') ?? workspace;
22
+ return canonicalize(join(cwd, value));
23
+ }
24
+ function unsupported(reason, subagent = false) {
25
+ return { kind: 'unsupported', reason, subagent };
26
+ }
27
+ function readOnlySubject(args, workspace, field) {
28
+ const raw = stringArg(args, field);
29
+ if (raw === null)
30
+ return unsupported(GENERIC_UNSUPPORTED_REASON);
31
+ const resolved = resolveArgPath(raw, args, workspace);
32
+ return { kind: 'subject', subject: { verb: 'read_file', value: resolved }, read: [resolved], write: [] };
33
+ }
34
+ function writeOnlySubject(args, workspace, field) {
35
+ const raw = stringArg(args, field);
36
+ if (raw === null)
37
+ return unsupported(GENERIC_UNSUPPORTED_REASON);
38
+ const resolved = resolveArgPath(raw, args, workspace);
39
+ return { kind: 'subject', subject: { verb: 'write_file', value: resolved }, read: [], write: [resolved] };
40
+ }
41
+ function readWriteSubject(args, workspace, field) {
42
+ const raw = stringArg(args, field);
43
+ if (raw === null)
44
+ return unsupported(GENERIC_UNSUPPORTED_REASON);
45
+ const resolved = resolveArgPath(raw, args, workspace);
46
+ return {
47
+ kind: 'subject',
48
+ subject: { verb: 'write_file', value: resolved },
49
+ read: [resolved],
50
+ write: [resolved],
51
+ };
52
+ }
53
+ /**
54
+ * Classify one hook payload's tool call. Never throws: a missing or
55
+ * non-string required argument is `unsupported`, not a crash — the gate must
56
+ * still emit a decision (`gate.ts`'s one absolute rule).
57
+ */
58
+ export function classifyToolCall(name, args, workspace) {
59
+ switch (name) {
60
+ case 'run_command': {
61
+ const commandLine = stringArg(args, 'CommandLine');
62
+ if (commandLine === null)
63
+ return unsupported(GENERIC_UNSUPPORTED_REASON);
64
+ const cwd = canonicalize(stringArg(args, 'Cwd') ?? workspace);
65
+ const writeTargets = redirectionTargets(commandLine, workspace).map((t) => canonicalize(t));
66
+ return {
67
+ kind: 'subject',
68
+ subject: { verb: 'command', value: commandLine },
69
+ read: [cwd],
70
+ write: [cwd, ...writeTargets],
71
+ };
72
+ }
73
+ case 'view_file':
74
+ return readOnlySubject(args, workspace, 'AbsolutePath');
75
+ case 'list_dir':
76
+ return readOnlySubject(args, workspace, 'DirectoryPath');
77
+ case 'find_by_name':
78
+ return readOnlySubject(args, workspace, 'SearchDirectory');
79
+ case 'grep_search':
80
+ return readOnlySubject(args, workspace, 'SearchPath');
81
+ case 'write_to_file':
82
+ return writeOnlySubject(args, workspace, 'TargetFile');
83
+ case 'replace_file_content':
84
+ return readWriteSubject(args, workspace, 'TargetFile');
85
+ case 'manage_task':
86
+ case 'schedule':
87
+ return { kind: 'control' };
88
+ default:
89
+ if (SUBAGENT_TOOLS.has(name))
90
+ return unsupported(SUBAGENT_REASON, true);
91
+ return unsupported(GENERIC_UNSUPPORTED_REASON, false);
92
+ }
93
+ }
94
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/policy/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Runtime confirmation that our PreToolUse gate actually loaded for this job
3
+ * (I4).
4
+ *
5
+ * Nothing agy emits on stdout/stdin says whether `<workspace>/.agents/hooks.json`
6
+ * loaded — the only place that fact appears is agy's own internal log file
7
+ * (`~/.gemini/antigravity-cli/log/cli-*.log`, M5), which is not attributable to a
8
+ * specific job once two jobs run concurrently. So this watches for the one
9
+ * self-contained signal we do control: `jobs/<id>/gate-log.jsonl`, which our own
10
+ * gate appends to on every verdict it makes (`src/gate/gate.ts`'s `logDecision`,
11
+ * right after `emit` writes the decision to stdout — so a running gate's line
12
+ * lands only a few ticks after agy has already read that decision).
13
+ *
14
+ * Trigger, not a flat timer (redesigned after a real flake): a fixed delay after
15
+ * the first tool step goes ACTIVE raced real hook-spawn latency under heavy
16
+ * parallel test load and produced false "missing" kills on a perfectly healthy
17
+ * gate. `decide()`'s step order (`src/gate/gate.ts`) is: PreToolUse hooks run
18
+ * and gate the tool call *before* agy lets it execute, so with hooks loaded the
19
+ * tool cannot reach a terminal state (`DONE`/`ERROR`) before our gate has
20
+ * already appended its line — the gate-log write can only trail the terminal
21
+ * event by the width of one `appendJsonLine` call, never longer. So the
22
+ * deterministic signal is: the first tool step reaching `DONE`/`ERROR` with
23
+ * `gate-log.jsonl` still empty. A short grace period (`graceMs`, default 1s)
24
+ * absorbs exactly that append-vs-event race and nothing more.
25
+ *
26
+ * A hard cap (`capMs`, default 60s) is kept only as a backstop for a first tool
27
+ * step that stays `ACTIVE` a long time (a genuinely slow first command) with
28
+ * hooks missing: a working gate would already have logged within milliseconds
29
+ * of that `ACTIVE` transition (it runs *before* the tool starts), so an empty
30
+ * gate-log after `capMs` is itself sufficient evidence even without a terminal
31
+ * event yet — this bounds how long a hooks-missing job can run fully unguarded
32
+ * when its first tool call happens to be slow.
33
+ *
34
+ * `ensureGateHook` (`src/gate/hooks-file.ts`) writes our hooks.json key first in
35
+ * the object so our gate is the first PreToolUse group agy evaluates and
36
+ * therefore always runs, even when another group would deny and short-circuit
37
+ * agy's own sequential evaluation (M6). The one case this cannot cover is a
38
+ * hook installed *outside* any file we own — e.g. a user's global
39
+ * `~/.gemini/config/hooks.json` — that denies ahead of ours; agy never reaches
40
+ * our group for that call, gate-log.jsonl never gets a line, and this watchdog
41
+ * (correctly, if bluntly) reports the job as `process_error` "gate never
42
+ * fired". That residual case is accepted, not handled: it is safe (fail
43
+ * closed), just imprecise about *why*.
44
+ *
45
+ * Same tailing approach as `idle.ts`: poll `events.ndjson` from a byte cursor,
46
+ * parse only complete lines, never hold the file open between polls.
47
+ */
48
+ export interface GateWatchdogOptions {
49
+ /** `jobs/<id>/events.ndjson` — where the first tool step becomes visible. */
50
+ eventsPath: string;
51
+ /** `jobs/<id>/gate-log.jsonl` — non-empty the instant our gate has run once. */
52
+ gateLogPath: string;
53
+ /**
54
+ * Grace period after the first tool step reaches `DONE`/`ERROR` before
55
+ * declaring the gate missing, absorbing the gate-log append trailing the
56
+ * terminal event by a beat. Default 1000ms.
57
+ */
58
+ graceMs?: number;
59
+ /**
60
+ * Hard-cap backstop from the first tool step going `ACTIVE`, for a slow first
61
+ * command that never reaches a terminal state. Default 60000ms.
62
+ */
63
+ capMs?: number;
64
+ pollMs?: number;
65
+ /** Fired at most once: the gate confirmed itself, at any point. */
66
+ onConfirmed: () => void;
67
+ /** Fired at most once: grace or cap elapsed with nothing in gate-log.jsonl. */
68
+ onMissing: () => void;
69
+ }
70
+ export interface GateWatchdog {
71
+ /** Stop polling and cancel any pending timer. Idempotent, safe after resolution. */
72
+ stop(): void;
73
+ /**
74
+ * Call once the agy process is known to have exited, in place of (or right
75
+ * before) `stop()`. Does one last synchronous check instead of relying on
76
+ * the next poll tick or a pending timer, both of which a job that exits very
77
+ * quickly can race: a happy job that finishes in under one `pollMs` would
78
+ * otherwise leave `gate_confirmed` stuck at `null` even though the gate
79
+ * plainly ran, and a broken-hooks job that happens to run to completion
80
+ * before its grace/cap timer fires would leave it `null` instead of `false`
81
+ * even though nothing further can ever write to `gate-log.jsonl` once the
82
+ * process is gone. Idempotent, safe after resolution or `stop()`.
83
+ */
84
+ finalize(): void;
85
+ }
86
+ /**
87
+ * Start the watchdog. Resolves at most once, via exactly one of `onConfirmed` /
88
+ * `onMissing` — or never, if the job ends before any tool step ever runs (a job
89
+ * with no tool calls has nothing for the gate to confirm, so `gate_confirmed`
90
+ * stays `null`, which the runner's caller must default it to).
91
+ */
92
+ export declare function startGateWatchdog(opts: GateWatchdogOptions): GateWatchdog;
93
+ //# sourceMappingURL=gate-watchdog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gate-watchdog.d.ts","sourceRoot":"","sources":["../../src/runner/gate-watchdog.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAEH,MAAM,WAAW,mBAAmB;IAClC,6EAA6E;IAC7E,UAAU,EAAE,MAAM,CAAA;IAClB,gFAAgF;IAChF,WAAW,EAAE,MAAM,CAAA;IACnB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,mEAAmE;IACnE,WAAW,EAAE,MAAM,IAAI,CAAA;IACvB,+EAA+E;IAC/E,SAAS,EAAE,MAAM,IAAI,CAAA;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,oFAAoF;IACpF,IAAI,IAAI,IAAI,CAAA;IACZ;;;;;;;;;;OAUG;IACH,QAAQ,IAAI,IAAI,CAAA;CACjB;AAKD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,mBAAmB,GAAG,YAAY,CA0IzE"}
@@ -0,0 +1,153 @@
1
+ import { fileSize } from '../contract/paths.js';
2
+ import { readLinesFrom } from '../events/cursor.js';
3
+ import { okEvents, parseEventLines } from '../events/parse.js';
4
+ const DEFAULT_GRACE_MS = 1000;
5
+ const DEFAULT_CAP_MS = 60_000;
6
+ /**
7
+ * Start the watchdog. Resolves at most once, via exactly one of `onConfirmed` /
8
+ * `onMissing` — or never, if the job ends before any tool step ever runs (a job
9
+ * with no tool calls has nothing for the gate to confirm, so `gate_confirmed`
10
+ * stays `null`, which the runner's caller must default it to).
11
+ */
12
+ export function startGateWatchdog(opts) {
13
+ const graceMs = opts.graceMs ?? DEFAULT_GRACE_MS;
14
+ const capMs = opts.capMs ?? DEFAULT_CAP_MS;
15
+ const pollMs = opts.pollMs ?? 100;
16
+ let stopped = false;
17
+ let resolved = false;
18
+ /** Any tool step_update observed at all (ACTIVE or terminal). Drives the cap. */
19
+ let sawToolStep = false;
20
+ /** A tool step_update reaching DONE/ERROR observed. Drives the grace period. */
21
+ let sawTerminalToolStep = false;
22
+ let eventsOffset = 0;
23
+ let graceTimer = null;
24
+ let capTimer = null;
25
+ let pollTimer = null;
26
+ function gateLogHasLine() {
27
+ return fileSize(opts.gateLogPath) > 0;
28
+ }
29
+ function stopInternal() {
30
+ stopped = true;
31
+ if (graceTimer) {
32
+ clearTimeout(graceTimer);
33
+ graceTimer = null;
34
+ }
35
+ if (capTimer) {
36
+ clearTimeout(capTimer);
37
+ capTimer = null;
38
+ }
39
+ if (pollTimer) {
40
+ clearTimeout(pollTimer);
41
+ pollTimer = null;
42
+ }
43
+ }
44
+ function confirm() {
45
+ if (resolved || stopped)
46
+ return;
47
+ resolved = true;
48
+ stopInternal();
49
+ opts.onConfirmed();
50
+ }
51
+ function declareMissing() {
52
+ if (resolved || stopped)
53
+ return;
54
+ resolved = true;
55
+ stopInternal();
56
+ opts.onMissing();
57
+ }
58
+ function armGrace() {
59
+ if (graceTimer !== null)
60
+ return;
61
+ graceTimer = setTimeout(() => {
62
+ graceTimer = null;
63
+ if (resolved || stopped)
64
+ return;
65
+ if (gateLogHasLine())
66
+ confirm();
67
+ else
68
+ declareMissing();
69
+ }, graceMs);
70
+ }
71
+ function armCap() {
72
+ if (capTimer !== null)
73
+ return;
74
+ capTimer = setTimeout(() => {
75
+ capTimer = null;
76
+ if (resolved || stopped)
77
+ return;
78
+ // Backstop only (see module comment): by now a working gate would
79
+ // already have logged, so an empty gate-log is itself the signal even
80
+ // without a terminal step yet.
81
+ if (gateLogHasLine())
82
+ confirm();
83
+ else
84
+ declareMissing();
85
+ }, capMs);
86
+ }
87
+ /** Advances `sawToolStep`/`sawTerminalToolStep`. Stops scanning once the terminal signal is in. */
88
+ function scanForToolStep() {
89
+ if (sawTerminalToolStep)
90
+ return;
91
+ const { lines, nextCursor } = readLinesFrom(opts.eventsPath, eventsOffset);
92
+ eventsOffset = nextCursor;
93
+ if (lines.length === 0)
94
+ return;
95
+ const events = okEvents(parseEventLines(lines, 0));
96
+ for (const e of events) {
97
+ if (e.event !== 'step_update' || e.step_update.step_type !== 'tool')
98
+ continue;
99
+ sawToolStep = true;
100
+ const state = e.step_update.state;
101
+ if (state === 'DONE' || state === 'ERROR') {
102
+ sawTerminalToolStep = true;
103
+ break;
104
+ }
105
+ }
106
+ }
107
+ /** Shared by `poll()` and `finalize()`: scan, then confirm/arm off the result. */
108
+ function checkAndMaybeResolve() {
109
+ scanForToolStep();
110
+ // Checked every time, not only once a timer fires: a line that appears
111
+ // before the terminal step (the common, healthy case — the gate runs
112
+ // *before* the tool executes) should confirm immediately rather than
113
+ // waiting out grace or cap.
114
+ if (gateLogHasLine()) {
115
+ confirm();
116
+ return;
117
+ }
118
+ if (sawTerminalToolStep)
119
+ armGrace();
120
+ else if (sawToolStep)
121
+ armCap();
122
+ }
123
+ function poll() {
124
+ if (stopped || resolved)
125
+ return;
126
+ checkAndMaybeResolve();
127
+ if (!stopped)
128
+ pollTimer = setTimeout(poll, pollMs);
129
+ }
130
+ function finalize() {
131
+ if (resolved || stopped) {
132
+ stopInternal();
133
+ return;
134
+ }
135
+ scanForToolStep();
136
+ if (gateLogHasLine()) {
137
+ confirm();
138
+ return;
139
+ }
140
+ if (sawToolStep) {
141
+ // The process is already gone, so nothing will ever add a line now —
142
+ // no need to wait out grace/cap. `onMissing` still runs (it also kills
143
+ // the process group, which is a safe no-op on an already-empty group)
144
+ // so the runner's bookkeeping is identical either way.
145
+ declareMissing();
146
+ return;
147
+ }
148
+ stopInternal();
149
+ }
150
+ pollTimer = setTimeout(poll, pollMs);
151
+ return { stop: stopInternal, finalize };
152
+ }
153
+ //# sourceMappingURL=gate-watchdog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gate-watchdog.js","sourceRoot":"","sources":["../../src/runner/gate-watchdog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import type { Writable } from 'node:stream';
2
+ /**
3
+ * Idle watchdog for `session_mode: 'session'` jobs.
4
+ *
5
+ * Without this, a session-mode job that finishes its one turn and never
6
+ * receives another `agy_send` just sits with stdin open until the hard
7
+ * `deadline_at` — measured live, that wasted the entire `--print-timeout`
8
+ * window for a job whose actual work was done in seconds.
9
+ * `reconcile` cannot fix this on its own: it only runs from a tool entry
10
+ * point, so nothing revisits an idle job until some client
11
+ * happens to call one. The watchdog runs *inside the runner*, which is
12
+ * already alive and unattended — the same reason the
13
+ * deadline watchdog in `runner.ts` is not reconcile-based either.
14
+ *
15
+ * Deliberately conservative about when a turn is "in flight" vs. idle: it
16
+ * only arms the idle deadline after actually observing a `result` event for
17
+ * every turn it has seen relayed, via `events.ndjson` — never merely because
18
+ * no new inbox line has appeared. Closing stdin while agy is still mid-turn
19
+ * is unmeasured territory (a *second* turn queues while a first is in flight,
20
+ * not what an EOF mid-turn does), so this
21
+ * never guesses at that: it waits for the turn's own `result` line before
22
+ * treating the process as idle at all.
23
+ */
24
+ export interface IdleWatchdogOptions {
25
+ /** `jobs/<id>/events.ndjson` — the only place a completed turn is visible. */
26
+ eventsPath: string;
27
+ idleTimeoutMs: number;
28
+ /** agy's stdin. Ending it is what makes agy exit at EOF. */
29
+ stdin: Writable;
30
+ pollMs?: number;
31
+ /** Fired exactly once, the moment the watchdog closes stdin for inactivity. */
32
+ onIdleClose: () => void;
33
+ }
34
+ export interface IdleWatchdog {
35
+ /** Stop polling and cancel any pending idle deadline. Idempotent. */
36
+ stop(): void;
37
+ /**
38
+ * Call whenever a turn is relayed to agy's stdin. Marks that turn "in
39
+ * flight" and cancels any pending idle deadline — the watchdog will not
40
+ * re-arm until it observes that turn's own `result` event.
41
+ */
42
+ noteActivity(): void;
43
+ }
44
+ /**
45
+ * Start the watchdog. It never fires before at least one full turn/`result`
46
+ * cycle has been observed: `pendingTurns` starts at 0 and the idle deadline is
47
+ * only armed inside the branch that just decremented it back to 0, so a
48
+ * watchdog created the instant a job spawns cannot race turn 1's own relay.
49
+ */
50
+ export declare function startIdleWatchdog(opts: IdleWatchdogOptions): IdleWatchdog;
51
+ //# sourceMappingURL=idle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idle.d.ts","sourceRoot":"","sources":["../../src/runner/idle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAK3C;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,MAAM,WAAW,mBAAmB;IAClC,8EAA8E;IAC9E,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,4DAA4D;IAC5D,KAAK,EAAE,QAAQ,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,+EAA+E;IAC/E,WAAW,EAAE,MAAM,IAAI,CAAA;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,qEAAqE;IACrE,IAAI,IAAI,IAAI,CAAA;IACZ;;;;OAIG;IACH,YAAY,IAAI,IAAI,CAAA;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,mBAAmB,GAAG,YAAY,CAwEzE"}