@lannguyensi/harness 0.64.0 → 1.0.0

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 (710) hide show
  1. package/CHANGELOG.md +64 -0
  2. package/README.md +46 -42
  3. package/dist/cli/add/index.js +17 -21
  4. package/dist/cli/add/index.js.map +1 -1
  5. package/dist/cli/adopt/derive.d.ts +2 -2
  6. package/dist/cli/adopt/derive.js +2 -19
  7. package/dist/cli/adopt/derive.js.map +1 -1
  8. package/dist/cli/adopt/index.d.ts +1 -1
  9. package/dist/cli/adopt/index.js +1 -12
  10. package/dist/cli/adopt/index.js.map +1 -1
  11. package/dist/cli/apply/apply.d.ts +20 -35
  12. package/dist/cli/apply/apply.js +61 -136
  13. package/dist/cli/apply/apply.js.map +1 -1
  14. package/dist/cli/apply/generate-codex-config.js +10 -58
  15. package/dist/cli/apply/generate-codex-config.js.map +1 -1
  16. package/dist/cli/apply/generate-memory-index.js +1 -2
  17. package/dist/cli/apply/generate-memory-index.js.map +1 -1
  18. package/dist/cli/apply/generate-opencode-config.d.ts +2 -10
  19. package/dist/cli/apply/generate-opencode-config.js +74 -113
  20. package/dist/cli/apply/generate-opencode-config.js.map +1 -1
  21. package/dist/cli/apply/generate-settings.d.ts +11 -64
  22. package/dist/cli/apply/generate-settings.js +27 -132
  23. package/dist/cli/apply/generate-settings.js.map +1 -1
  24. package/dist/cli/apply/index.d.ts +1 -1
  25. package/dist/cli/apply/index.js +1 -1
  26. package/dist/cli/apply/index.js.map +1 -1
  27. package/dist/cli/apply/install-codex-config.d.ts +153 -1
  28. package/dist/cli/apply/install-codex-config.js +445 -70
  29. package/dist/cli/apply/install-codex-config.js.map +1 -1
  30. package/dist/cli/apply/next-steps.d.ts +7 -0
  31. package/dist/cli/apply/next-steps.js +13 -1
  32. package/dist/cli/apply/next-steps.js.map +1 -1
  33. package/dist/cli/bounded-stdin.d.ts +0 -23
  34. package/dist/cli/bounded-stdin.js +2 -49
  35. package/dist/cli/bounded-stdin.js.map +1 -1
  36. package/dist/cli/describe.d.ts +1 -1
  37. package/dist/cli/describe.js +0 -3
  38. package/dist/cli/describe.js.map +1 -1
  39. package/dist/cli/diff/engine.d.ts +0 -11
  40. package/dist/cli/diff/engine.js +1 -17
  41. package/dist/cli/diff/engine.js.map +1 -1
  42. package/dist/cli/diff/index.js +14 -25
  43. package/dist/cli/diff/index.js.map +1 -1
  44. package/dist/cli/doctor/claude-mcp.d.ts +4 -19
  45. package/dist/cli/doctor/claude-mcp.js +11 -22
  46. package/dist/cli/doctor/claude-mcp.js.map +1 -1
  47. package/dist/cli/doctor/codex.d.ts +12 -14
  48. package/dist/cli/doctor/codex.js +31 -144
  49. package/dist/cli/doctor/codex.js.map +1 -1
  50. package/dist/cli/doctor/format.js +23 -345
  51. package/dist/cli/doctor/format.js.map +1 -1
  52. package/dist/cli/doctor/hook-liveness.d.ts +56 -0
  53. package/dist/cli/doctor/hook-liveness.js +455 -0
  54. package/dist/cli/doctor/hook-liveness.js.map +1 -0
  55. package/dist/cli/doctor/index.d.ts +13 -87
  56. package/dist/cli/doctor/index.js +57 -713
  57. package/dist/cli/doctor/index.js.map +1 -1
  58. package/dist/cli/doctor/opencode.d.ts +2 -1
  59. package/dist/cli/doctor/opencode.js.map +1 -1
  60. package/dist/cli/doctor/types.d.ts +21 -387
  61. package/dist/cli/doctor/types.js.map +1 -1
  62. package/dist/cli/drain-stdio.d.ts +31 -0
  63. package/dist/cli/drain-stdio.js +76 -0
  64. package/dist/cli/drain-stdio.js.map +1 -0
  65. package/dist/cli/export.d.ts +3 -1
  66. package/dist/cli/export.js +7 -16
  67. package/dist/cli/export.js.map +1 -1
  68. package/dist/cli/gate/codex-disable.d.ts +29 -0
  69. package/dist/cli/gate/codex-disable.js +195 -0
  70. package/dist/cli/gate/codex-disable.js.map +1 -0
  71. package/dist/cli/gate/codex-enable.d.ts +41 -0
  72. package/dist/cli/gate/codex-enable.js +127 -0
  73. package/dist/cli/gate/codex-enable.js.map +1 -0
  74. package/dist/cli/gate/codex-snapshot.d.ts +208 -0
  75. package/dist/cli/gate/codex-snapshot.js +402 -0
  76. package/dist/cli/gate/codex-snapshot.js.map +1 -0
  77. package/dist/cli/gate/disable.d.ts +9 -0
  78. package/dist/cli/gate/disable.js +263 -28
  79. package/dist/cli/gate/disable.js.map +1 -1
  80. package/dist/cli/gate/enable.d.ts +26 -6
  81. package/dist/cli/gate/enable.js +152 -80
  82. package/dist/cli/gate/enable.js.map +1 -1
  83. package/dist/cli/gate/link-chain.d.ts +53 -0
  84. package/dist/cli/gate/link-chain.js +122 -0
  85. package/dist/cli/gate/link-chain.js.map +1 -0
  86. package/dist/cli/gate/snapshot.d.ts +289 -12
  87. package/dist/cli/gate/snapshot.js +481 -22
  88. package/dist/cli/gate/snapshot.js.map +1 -1
  89. package/dist/cli/index.d.ts +0 -9
  90. package/dist/cli/index.js +9 -2131
  91. package/dist/cli/index.js.map +1 -1
  92. package/dist/cli/init/composer.d.ts +3 -6
  93. package/dist/cli/init/composer.js +6 -370
  94. package/dist/cli/init/composer.js.map +1 -1
  95. package/dist/cli/init/dependencies.d.ts +1 -2
  96. package/dist/cli/init/dependencies.js +4 -80
  97. package/dist/cli/init/dependencies.js.map +1 -1
  98. package/dist/cli/init/detect.js +5 -4
  99. package/dist/cli/init/detect.js.map +1 -1
  100. package/dist/cli/init/interactive.d.ts +1 -23
  101. package/dist/cli/init/interactive.js +33 -247
  102. package/dist/cli/init/interactive.js.map +1 -1
  103. package/dist/cli/init/profiles.d.ts +2 -2
  104. package/dist/cli/init/profiles.js +51 -245
  105. package/dist/cli/init/profiles.js.map +1 -1
  106. package/dist/cli/init/templates.d.ts +2 -37
  107. package/dist/cli/init/templates.js +25 -1237
  108. package/dist/cli/init/templates.js.map +1 -1
  109. package/dist/cli/list.d.ts +1 -1
  110. package/dist/cli/list.js +1 -38
  111. package/dist/cli/list.js.map +1 -1
  112. package/dist/cli/loader.d.ts +15 -1
  113. package/dist/cli/loader.js +56 -39
  114. package/dist/cli/loader.js.map +1 -1
  115. package/dist/cli/main.js +7 -2
  116. package/dist/cli/main.js.map +1 -1
  117. package/dist/cli/migrate-home/index.js +2 -2
  118. package/dist/cli/migrate-home/index.js.map +1 -1
  119. package/dist/cli/pack/add.js +1 -1
  120. package/dist/cli/pack/add.js.map +1 -1
  121. package/dist/cli/pack/hook-bootstrap.d.ts +5 -164
  122. package/dist/cli/pack/hook-bootstrap.js +15 -291
  123. package/dist/cli/pack/hook-bootstrap.js.map +1 -1
  124. package/dist/cli/pack/hook-branch-protection.d.ts +28 -21
  125. package/dist/cli/pack/hook-branch-protection.js +365 -340
  126. package/dist/cli/pack/hook-branch-protection.js.map +1 -1
  127. package/dist/cli/pack/index.d.ts +0 -1
  128. package/dist/cli/pack/index.js +0 -1
  129. package/dist/cli/pack/index.js.map +1 -1
  130. package/dist/cli/pack/list.js +1 -6
  131. package/dist/cli/pack/list.js.map +1 -1
  132. package/dist/cli/pack/mutate.d.ts +7 -9
  133. package/dist/cli/pack/mutate.js +6 -9
  134. package/dist/cli/pack/mutate.js.map +1 -1
  135. package/dist/cli/pack/reseed.d.ts +2 -2
  136. package/dist/cli/pack/reseed.js +16 -22
  137. package/dist/cli/pack/reseed.js.map +1 -1
  138. package/dist/cli/{delegate/register.d.ts → register-gate-group.d.ts} +1 -1
  139. package/dist/cli/register-gate-group.js +348 -0
  140. package/dist/cli/register-gate-group.js.map +1 -0
  141. package/dist/cli/register-inspect-group.d.ts +6 -0
  142. package/dist/cli/register-inspect-group.js +189 -0
  143. package/dist/cli/register-inspect-group.js.map +1 -0
  144. package/dist/cli/register-operator-lifecycle.d.ts +1 -1
  145. package/dist/cli/register-operator-lifecycle.js +3 -100
  146. package/dist/cli/register-operator-lifecycle.js.map +1 -1
  147. package/dist/cli/register-pack-group.d.ts +5 -0
  148. package/dist/cli/register-pack-group.js +134 -0
  149. package/dist/cli/register-pack-group.js.map +1 -0
  150. package/dist/cli/{register-audit-group.d.ts → register-setup-group.d.ts} +1 -1
  151. package/dist/cli/register-setup-group.js +495 -0
  152. package/dist/cli/register-setup-group.js.map +1 -0
  153. package/dist/cli/remove/index.d.ts +0 -14
  154. package/dist/cli/remove/index.js +2 -115
  155. package/dist/cli/remove/index.js.map +1 -1
  156. package/dist/cli/remove/mutate.d.ts +0 -2
  157. package/dist/cli/remove/mutate.js +1 -19
  158. package/dist/cli/remove/mutate.js.map +1 -1
  159. package/dist/cli/remove/register.js +2 -19
  160. package/dist/cli/remove/register.js.map +1 -1
  161. package/dist/cli/shell-quote.d.ts +7 -0
  162. package/dist/cli/shell-quote.js +17 -0
  163. package/dist/cli/shell-quote.js.map +1 -0
  164. package/dist/cli/uninstall/index.d.ts +4 -2
  165. package/dist/cli/uninstall/index.js +15 -7
  166. package/dist/cli/uninstall/index.js.map +1 -1
  167. package/dist/cli/uninstall/register.js +6 -4
  168. package/dist/cli/uninstall/register.js.map +1 -1
  169. package/dist/cli/uninstall/snapshot.d.ts +15 -0
  170. package/dist/cli/uninstall/snapshot.js +38 -0
  171. package/dist/cli/uninstall/snapshot.js.map +1 -1
  172. package/dist/cli/validate/checks.d.ts +0 -77
  173. package/dist/cli/validate/checks.js +3 -1049
  174. package/dist/cli/validate/checks.js.map +1 -1
  175. package/dist/cli/validate/index.js +19 -15
  176. package/dist/cli/validate/index.js.map +1 -1
  177. package/dist/index.d.ts +0 -3
  178. package/dist/index.js +0 -3
  179. package/dist/index.js.map +1 -1
  180. package/dist/io/claude-mcp.d.ts +1 -1
  181. package/dist/io/claude-mcp.js +27 -14
  182. package/dist/io/claude-mcp.js.map +1 -1
  183. package/dist/io/harness-lock.js +2 -2
  184. package/dist/io/harness-lock.js.map +1 -1
  185. package/dist/io/lock.d.ts +0 -26
  186. package/dist/io/lock.js +10 -27
  187. package/dist/io/lock.js.map +1 -1
  188. package/dist/io/merge-settings.js +6 -4
  189. package/dist/io/merge-settings.js.map +1 -1
  190. package/dist/io/project-name.d.ts +22 -39
  191. package/dist/io/project-name.js +25 -42
  192. package/dist/io/project-name.js.map +1 -1
  193. package/dist/io/read-regular-file.d.ts +103 -40
  194. package/dist/io/read-regular-file.js +196 -35
  195. package/dist/io/read-regular-file.js.map +1 -1
  196. package/dist/io/restart-hints.js +3 -6
  197. package/dist/io/restart-hints.js.map +1 -1
  198. package/dist/io/version-compare.d.ts +1 -3
  199. package/dist/io/version-compare.js +1 -3
  200. package/dist/io/version-compare.js.map +1 -1
  201. package/dist/io/write-regular-file.d.ts +30 -0
  202. package/dist/io/write-regular-file.js +85 -0
  203. package/dist/io/write-regular-file.js.map +1 -0
  204. package/dist/overrides/index.d.ts +1 -0
  205. package/dist/overrides/index.js +1 -0
  206. package/dist/overrides/index.js.map +1 -1
  207. package/dist/overrides/merge-layers.d.ts +43 -0
  208. package/dist/overrides/merge-layers.js +76 -0
  209. package/dist/overrides/merge-layers.js.map +1 -0
  210. package/dist/overrides/merge.d.ts +16 -0
  211. package/dist/overrides/merge.js +21 -8
  212. package/dist/overrides/merge.js.map +1 -1
  213. package/dist/policy-packs/builtin/branch-protection-runtime.d.ts +4 -69
  214. package/dist/policy-packs/builtin/branch-protection-runtime.js +12 -84
  215. package/dist/policy-packs/builtin/branch-protection-runtime.js.map +1 -1
  216. package/dist/policy-packs/builtin/branch-protection.d.ts +7 -30
  217. package/dist/policy-packs/builtin/branch-protection.js +56 -89
  218. package/dist/policy-packs/builtin/branch-protection.js.map +1 -1
  219. package/dist/policy-packs/config-check.d.ts +7 -5
  220. package/dist/policy-packs/config-check.js +2 -2
  221. package/dist/policy-packs/config-check.js.map +1 -1
  222. package/dist/policy-packs/expand.d.ts +1 -3
  223. package/dist/policy-packs/expand.js +5 -42
  224. package/dist/policy-packs/expand.js.map +1 -1
  225. package/dist/policy-packs/index.d.ts +3 -3
  226. package/dist/policy-packs/index.js +2 -2
  227. package/dist/policy-packs/index.js.map +1 -1
  228. package/dist/policy-packs/registry.d.ts +9 -38
  229. package/dist/policy-packs/registry.js +5 -65
  230. package/dist/policy-packs/registry.js.map +1 -1
  231. package/dist/policy-packs/runtime.d.ts +0 -4
  232. package/dist/policy-packs/runtime.js +9 -22
  233. package/dist/policy-packs/runtime.js.map +1 -1
  234. package/dist/policy-packs/types.d.ts +0 -19
  235. package/dist/policy-packs/ux-compare.d.ts +1 -11
  236. package/dist/policy-packs/ux-compare.js +6 -42
  237. package/dist/policy-packs/ux-compare.js.map +1 -1
  238. package/dist/policy-packs/ux-drift-check.d.ts +5 -5
  239. package/dist/policy-packs/ux-drift-check.js +17 -22
  240. package/dist/policy-packs/ux-drift-check.js.map +1 -1
  241. package/dist/policy-packs/version-check.d.ts +5 -26
  242. package/dist/policy-packs/version-check.js +19 -74
  243. package/dist/policy-packs/version-check.js.map +1 -1
  244. package/dist/probes/memory.d.ts +1 -1
  245. package/dist/probes/memory.js +1 -1
  246. package/dist/probes/memory.js.map +1 -1
  247. package/dist/runtime/agent-facing.d.ts +9 -0
  248. package/dist/runtime/agent-facing.js +28 -14
  249. package/dist/runtime/agent-facing.js.map +1 -1
  250. package/dist/runtime/bounded-text.d.ts +15 -0
  251. package/dist/runtime/bounded-text.js +27 -0
  252. package/dist/runtime/bounded-text.js.map +1 -0
  253. package/dist/runtime/git-branch.d.ts +125 -0
  254. package/dist/runtime/git-branch.js +381 -0
  255. package/dist/runtime/git-branch.js.map +1 -0
  256. package/dist/runtime/hermetic-spawn-guard.d.ts +2 -2
  257. package/dist/runtime/hermetic-spawn-guard.js +24 -34
  258. package/dist/runtime/hermetic-spawn-guard.js.map +1 -1
  259. package/dist/runtime/home-dir.js +3 -2
  260. package/dist/runtime/home-dir.js.map +1 -1
  261. package/dist/runtime/tool-name-aliases.d.ts +0 -6
  262. package/dist/runtime/tool-name-aliases.js +5 -18
  263. package/dist/runtime/tool-name-aliases.js.map +1 -1
  264. package/dist/schema/grounding.d.ts +7 -54
  265. package/dist/schema/grounding.js +10 -12
  266. package/dist/schema/grounding.js.map +1 -1
  267. package/dist/schema/hooks.d.ts +39 -136
  268. package/dist/schema/hooks.js +3 -6
  269. package/dist/schema/hooks.js.map +1 -1
  270. package/dist/schema/index.d.ts +114 -3828
  271. package/dist/schema/index.js +41 -80
  272. package/dist/schema/index.js.map +1 -1
  273. package/dist/schema/memory.d.ts +54 -131
  274. package/dist/schema/memory.js +2 -2
  275. package/dist/schema/memory.js.map +1 -1
  276. package/dist/schema/policy-packs.d.ts +3 -45
  277. package/dist/schema/policy-packs.js +7 -13
  278. package/dist/schema/policy-packs.js.map +1 -1
  279. package/dist/schema/policy-ux.d.ts +7 -0
  280. package/dist/schema/policy-ux.js +18 -0
  281. package/dist/schema/policy-ux.js.map +1 -0
  282. package/dist/schema/removed-keys.d.ts +185 -0
  283. package/dist/schema/removed-keys.js +531 -0
  284. package/dist/schema/removed-keys.js.map +1 -0
  285. package/dist/schema/tools.d.ts +30 -268
  286. package/dist/schema/tools.js +4 -4
  287. package/dist/schema/tools.js.map +1 -1
  288. package/package.json +5 -16
  289. package/dist/cli/approve/branch-protection.d.ts +0 -69
  290. package/dist/cli/approve/branch-protection.js +0 -144
  291. package/dist/cli/approve/branch-protection.js.map +0 -1
  292. package/dist/cli/approve/risk.d.ts +0 -112
  293. package/dist/cli/approve/risk.js +0 -197
  294. package/dist/cli/approve/risk.js.map +0 -1
  295. package/dist/cli/approve/stdin-report.d.ts +0 -57
  296. package/dist/cli/approve/stdin-report.js +0 -145
  297. package/dist/cli/approve/stdin-report.js.map +0 -1
  298. package/dist/cli/approve/understanding.d.ts +0 -410
  299. package/dist/cli/approve/understanding.js +0 -996
  300. package/dist/cli/approve/understanding.js.map +0 -1
  301. package/dist/cli/audit.d.ts +0 -80
  302. package/dist/cli/audit.js +0 -252
  303. package/dist/cli/audit.js.map +0 -1
  304. package/dist/cli/delegate/index.d.ts +0 -76
  305. package/dist/cli/delegate/index.js +0 -444
  306. package/dist/cli/delegate/index.js.map +0 -1
  307. package/dist/cli/delegate/register.js +0 -90
  308. package/dist/cli/delegate/register.js.map +0 -1
  309. package/dist/cli/doctor/auto-approve-mode.d.ts +0 -37
  310. package/dist/cli/doctor/auto-approve-mode.js +0 -80
  311. package/dist/cli/doctor/auto-approve-mode.js.map +0 -1
  312. package/dist/cli/doctor/bypass-without-auto-approve.d.ts +0 -38
  313. package/dist/cli/doctor/bypass-without-auto-approve.js +0 -95
  314. package/dist/cli/doctor/bypass-without-auto-approve.js.map +0 -1
  315. package/dist/cli/doctor/codex-config-drift.d.ts +0 -28
  316. package/dist/cli/doctor/codex-config-drift.js +0 -240
  317. package/dist/cli/doctor/codex-config-drift.js.map +0 -1
  318. package/dist/cli/doctor/expire-on-tool-match.d.ts +0 -15
  319. package/dist/cli/doctor/expire-on-tool-match.js +0 -58
  320. package/dist/cli/doctor/expire-on-tool-match.js.map +0 -1
  321. package/dist/cli/doctor/rogue-ledger.d.ts +0 -53
  322. package/dist/cli/doctor/rogue-ledger.js +0 -153
  323. package/dist/cli/doctor/rogue-ledger.js.map +0 -1
  324. package/dist/cli/doctor/session-start-preflight-setup-version.d.ts +0 -83
  325. package/dist/cli/doctor/session-start-preflight-setup-version.js +0 -114
  326. package/dist/cli/doctor/session-start-preflight-setup-version.js.map +0 -1
  327. package/dist/cli/doctor/settings-drift.d.ts +0 -25
  328. package/dist/cli/doctor/settings-drift.js +0 -213
  329. package/dist/cli/doctor/settings-drift.js.map +0 -1
  330. package/dist/cli/doctor/toolchain-parity.d.ts +0 -63
  331. package/dist/cli/doctor/toolchain-parity.js +0 -154
  332. package/dist/cli/doctor/toolchain-parity.js.map +0 -1
  333. package/dist/cli/doctor/ug-auto-approvals.d.ts +0 -40
  334. package/dist/cli/doctor/ug-auto-approvals.js +0 -91
  335. package/dist/cli/doctor/ug-auto-approvals.js.map +0 -1
  336. package/dist/cli/doctor/ug-delegations.d.ts +0 -26
  337. package/dist/cli/doctor/ug-delegations.js +0 -121
  338. package/dist/cli/doctor/ug-delegations.js.map +0 -1
  339. package/dist/cli/doctor/ug-inflight.d.ts +0 -35
  340. package/dist/cli/doctor/ug-inflight.js +0 -57
  341. package/dist/cli/doctor/ug-inflight.js.map +0 -1
  342. package/dist/cli/doctor/understanding-mode-env.d.ts +0 -51
  343. package/dist/cli/doctor/understanding-mode-env.js +0 -98
  344. package/dist/cli/doctor/understanding-mode-env.js.map +0 -1
  345. package/dist/cli/dry-run.d.ts +0 -58
  346. package/dist/cli/dry-run.js +0 -283
  347. package/dist/cli/dry-run.js.map +0 -1
  348. package/dist/cli/enriched-event.d.ts +0 -35
  349. package/dist/cli/enriched-event.js +0 -60
  350. package/dist/cli/enriched-event.js.map +0 -1
  351. package/dist/cli/event-input.d.ts +0 -28
  352. package/dist/cli/event-input.js +0 -73
  353. package/dist/cli/event-input.js.map +0 -1
  354. package/dist/cli/explain-action.d.ts +0 -25
  355. package/dist/cli/explain-action.js +0 -57
  356. package/dist/cli/explain-action.js.map +0 -1
  357. package/dist/cli/explain-policy.d.ts +0 -147
  358. package/dist/cli/explain-policy.js +0 -248
  359. package/dist/cli/explain-policy.js.map +0 -1
  360. package/dist/cli/explain.d.ts +0 -31
  361. package/dist/cli/explain.js +0 -159
  362. package/dist/cli/explain.js.map +0 -1
  363. package/dist/cli/gc/index.d.ts +0 -63
  364. package/dist/cli/gc/index.js +0 -566
  365. package/dist/cli/gc/index.js.map +0 -1
  366. package/dist/cli/pack/approve-escape.d.ts +0 -19
  367. package/dist/cli/pack/approve-escape.js +0 -190
  368. package/dist/cli/pack/approve-escape.js.map +0 -1
  369. package/dist/cli/pack/auto-approve-path.d.ts +0 -146
  370. package/dist/cli/pack/auto-approve-path.js +0 -462
  371. package/dist/cli/pack/auto-approve-path.js.map +0 -1
  372. package/dist/cli/pack/hook-codex-post-tool-use.d.ts +0 -25
  373. package/dist/cli/pack/hook-codex-post-tool-use.js +0 -160
  374. package/dist/cli/pack/hook-codex-post-tool-use.js.map +0 -1
  375. package/dist/cli/pack/hook-codex-pre-tool-use.d.ts +0 -48
  376. package/dist/cli/pack/hook-codex-pre-tool-use.js +0 -474
  377. package/dist/cli/pack/hook-codex-pre-tool-use.js.map +0 -1
  378. package/dist/cli/pack/hook-codex-stop.d.ts +0 -35
  379. package/dist/cli/pack/hook-codex-stop.js +0 -329
  380. package/dist/cli/pack/hook-codex-stop.js.map +0 -1
  381. package/dist/cli/pack/hook-codex-user-prompt-submit.d.ts +0 -24
  382. package/dist/cli/pack/hook-codex-user-prompt-submit.js +0 -93
  383. package/dist/cli/pack/hook-codex-user-prompt-submit.js.map +0 -1
  384. package/dist/cli/pack/hook-post-merge-gate-record.d.ts +0 -37
  385. package/dist/cli/pack/hook-post-merge-gate-record.js +0 -190
  386. package/dist/cli/pack/hook-post-merge-gate-record.js.map +0 -1
  387. package/dist/cli/pack/hook-post-merge-gate.d.ts +0 -34
  388. package/dist/cli/pack/hook-post-merge-gate.js +0 -277
  389. package/dist/cli/pack/hook-post-merge-gate.js.map +0 -1
  390. package/dist/cli/pack/hook-post-tool-use.d.ts +0 -45
  391. package/dist/cli/pack/hook-post-tool-use.js +0 -137
  392. package/dist/cli/pack/hook-post-tool-use.js.map +0 -1
  393. package/dist/cli/pack/hook-pre-tool-use.d.ts +0 -92
  394. package/dist/cli/pack/hook-pre-tool-use.js +0 -1328
  395. package/dist/cli/pack/hook-pre-tool-use.js.map +0 -1
  396. package/dist/cli/pack/hook-runtime-reality.d.ts +0 -63
  397. package/dist/cli/pack/hook-runtime-reality.js +0 -210
  398. package/dist/cli/pack/hook-runtime-reality.js.map +0 -1
  399. package/dist/cli/pack/hook-solution-acceptance-writeguard.d.ts +0 -32
  400. package/dist/cli/pack/hook-solution-acceptance-writeguard.js +0 -438
  401. package/dist/cli/pack/hook-solution-acceptance-writeguard.js.map +0 -1
  402. package/dist/cli/pack/hook-solution-acceptance.d.ts +0 -157
  403. package/dist/cli/pack/hook-solution-acceptance.js +0 -530
  404. package/dist/cli/pack/hook-solution-acceptance.js.map +0 -1
  405. package/dist/cli/pack/hook-stay-in-scope.d.ts +0 -37
  406. package/dist/cli/pack/hook-stay-in-scope.js +0 -128
  407. package/dist/cli/pack/hook-stay-in-scope.js.map +0 -1
  408. package/dist/cli/pack/hook-subagent-start.d.ts +0 -23
  409. package/dist/cli/pack/hook-subagent-start.js +0 -88
  410. package/dist/cli/pack/hook-subagent-start.js.map +0 -1
  411. package/dist/cli/pack/hook-subagent-stop.d.ts +0 -19
  412. package/dist/cli/pack/hook-subagent-stop.js +0 -41
  413. package/dist/cli/pack/hook-subagent-stop.js.map +0 -1
  414. package/dist/cli/pack/hook-track-active-claim.d.ts +0 -27
  415. package/dist/cli/pack/hook-track-active-claim.js +0 -275
  416. package/dist/cli/pack/hook-track-active-claim.js.map +0 -1
  417. package/dist/cli/pack/transcript-report-scan.d.ts +0 -71
  418. package/dist/cli/pack/transcript-report-scan.js +0 -359
  419. package/dist/cli/pack/transcript-report-scan.js.map +0 -1
  420. package/dist/cli/pack/understanding-report-schema-hint.d.ts +0 -26
  421. package/dist/cli/pack/understanding-report-schema-hint.js +0 -120
  422. package/dist/cli/pack/understanding-report-schema-hint.js.map +0 -1
  423. package/dist/cli/pack/upgrade.d.ts +0 -32
  424. package/dist/cli/pack/upgrade.js +0 -273
  425. package/dist/cli/pack/upgrade.js.map +0 -1
  426. package/dist/cli/pause/index.d.ts +0 -113
  427. package/dist/cli/pause/index.js +0 -251
  428. package/dist/cli/pause/index.js.map +0 -1
  429. package/dist/cli/pause-check.d.ts +0 -22
  430. package/dist/cli/pause-check.js +0 -54
  431. package/dist/cli/pause-check.js.map +0 -1
  432. package/dist/cli/policy/intercept.d.ts +0 -233
  433. package/dist/cli/policy/intercept.js +0 -1022
  434. package/dist/cli/policy/intercept.js.map +0 -1
  435. package/dist/cli/policy/risk-envelope-enrichment.d.ts +0 -40
  436. package/dist/cli/policy/risk-envelope-enrichment.js +0 -110
  437. package/dist/cli/policy/risk-envelope-enrichment.js.map +0 -1
  438. package/dist/cli/record/index.d.ts +0 -81
  439. package/dist/cli/record/index.js +0 -348
  440. package/dist/cli/record/index.js.map +0 -1
  441. package/dist/cli/register-audit-group.js +0 -91
  442. package/dist/cli/register-audit-group.js.map +0 -1
  443. package/dist/cli/resolve-env.d.ts +0 -32
  444. package/dist/cli/resolve-env.js +0 -46
  445. package/dist/cli/resolve-env.js.map +0 -1
  446. package/dist/cli/session-export/index.d.ts +0 -46
  447. package/dist/cli/session-export/index.js +0 -169
  448. package/dist/cli/session-export/index.js.map +0 -1
  449. package/dist/cli/session-export/redact.d.ts +0 -22
  450. package/dist/cli/session-export/redact.js +0 -47
  451. package/dist/cli/session-export/redact.js.map +0 -1
  452. package/dist/cli/session-export/transcript.d.ts +0 -24
  453. package/dist/cli/session-export/transcript.js +0 -164
  454. package/dist/cli/session-export/transcript.js.map +0 -1
  455. package/dist/cli/session-start/branch-check.d.ts +0 -18
  456. package/dist/cli/session-start/branch-check.js +0 -140
  457. package/dist/cli/session-start/branch-check.js.map +0 -1
  458. package/dist/cli/session-start/index.d.ts +0 -121
  459. package/dist/cli/session-start/index.js +0 -591
  460. package/dist/cli/session-start/index.js.map +0 -1
  461. package/dist/cli/session-start/shared-options.d.ts +0 -103
  462. package/dist/cli/session-start/shared-options.js +0 -107
  463. package/dist/cli/session-start/shared-options.js.map +0 -1
  464. package/dist/cli/session-start/stale-base-check.d.ts +0 -46
  465. package/dist/cli/session-start/stale-base-check.js +0 -352
  466. package/dist/cli/session-start/stale-base-check.js.map +0 -1
  467. package/dist/cli/session-start/toolchain-parity.d.ts +0 -267
  468. package/dist/cli/session-start/toolchain-parity.js +0 -797
  469. package/dist/cli/session-start/toolchain-parity.js.map +0 -1
  470. package/dist/cli/smoke/assertions.d.ts +0 -46
  471. package/dist/cli/smoke/assertions.js +0 -170
  472. package/dist/cli/smoke/assertions.js.map +0 -1
  473. package/dist/cli/smoke/index.d.ts +0 -76
  474. package/dist/cli/smoke/index.js +0 -245
  475. package/dist/cli/smoke/index.js.map +0 -1
  476. package/dist/cli/smoke/runner.d.ts +0 -55
  477. package/dist/cli/smoke/runner.js +0 -134
  478. package/dist/cli/smoke/runner.js.map +0 -1
  479. package/dist/cli/smoke/stream-parser.d.ts +0 -65
  480. package/dist/cli/smoke/stream-parser.js +0 -115
  481. package/dist/cli/smoke/stream-parser.js.map +0 -1
  482. package/dist/cli/test-risk.d.ts +0 -27
  483. package/dist/cli/test-risk.js +0 -38
  484. package/dist/cli/test-risk.js.map +0 -1
  485. package/dist/io/display-path.d.ts +0 -11
  486. package/dist/io/display-path.js +0 -29
  487. package/dist/io/display-path.js.map +0 -1
  488. package/dist/io/duration.d.ts +0 -5
  489. package/dist/io/duration.js +0 -50
  490. package/dist/io/duration.js.map +0 -1
  491. package/dist/io/extract.d.ts +0 -79
  492. package/dist/io/extract.js +0 -226
  493. package/dist/io/extract.js.map +0 -1
  494. package/dist/io/ledger-record.d.ts +0 -83
  495. package/dist/io/ledger-record.js +0 -301
  496. package/dist/io/ledger-record.js.map +0 -1
  497. package/dist/io/read-json-dir-entries.d.ts +0 -36
  498. package/dist/io/read-json-dir-entries.js +0 -48
  499. package/dist/io/read-json-dir-entries.js.map +0 -1
  500. package/dist/io/safe-json-parse.d.ts +0 -5
  501. package/dist/io/safe-json-parse.js +0 -21
  502. package/dist/io/safe-json-parse.js.map +0 -1
  503. package/dist/policies/index.d.ts +0 -5
  504. package/dist/policies/index.js +0 -6
  505. package/dist/policies/index.js.map +0 -1
  506. package/dist/policies/ledger-client.d.ts +0 -113
  507. package/dist/policies/ledger-client.js +0 -500
  508. package/dist/policies/ledger-client.js.map +0 -1
  509. package/dist/policies/producers.d.ts +0 -12
  510. package/dist/policies/producers.js +0 -61
  511. package/dist/policies/producers.js.map +0 -1
  512. package/dist/policies/requires.d.ts +0 -75
  513. package/dist/policies/requires.js +0 -240
  514. package/dist/policies/requires.js.map +0 -1
  515. package/dist/policies/timestamp.d.ts +0 -14
  516. package/dist/policies/timestamp.js +0 -36
  517. package/dist/policies/timestamp.js.map +0 -1
  518. package/dist/policy-packs/builtin/permission-profiles.d.ts +0 -11
  519. package/dist/policy-packs/builtin/permission-profiles.js +0 -74
  520. package/dist/policy-packs/builtin/permission-profiles.js.map +0 -1
  521. package/dist/policy-packs/builtin/post-merge-gate-runtime.d.ts +0 -286
  522. package/dist/policy-packs/builtin/post-merge-gate-runtime.js +0 -397
  523. package/dist/policy-packs/builtin/post-merge-gate-runtime.js.map +0 -1
  524. package/dist/policy-packs/builtin/post-merge-gate.d.ts +0 -56
  525. package/dist/policy-packs/builtin/post-merge-gate.js +0 -347
  526. package/dist/policy-packs/builtin/post-merge-gate.js.map +0 -1
  527. package/dist/policy-packs/builtin/solution-acceptance-reconnect.d.ts +0 -50
  528. package/dist/policy-packs/builtin/solution-acceptance-reconnect.js +0 -151
  529. package/dist/policy-packs/builtin/solution-acceptance-reconnect.js.map +0 -1
  530. package/dist/policy-packs/builtin/solution-acceptance-runtime.d.ts +0 -323
  531. package/dist/policy-packs/builtin/solution-acceptance-runtime.js +0 -672
  532. package/dist/policy-packs/builtin/solution-acceptance-runtime.js.map +0 -1
  533. package/dist/policy-packs/builtin/solution-acceptance.d.ts +0 -45
  534. package/dist/policy-packs/builtin/solution-acceptance.js +0 -226
  535. package/dist/policy-packs/builtin/solution-acceptance.js.map +0 -1
  536. package/dist/policy-packs/builtin/understanding-before-execution/active-claim.d.ts +0 -25
  537. package/dist/policy-packs/builtin/understanding-before-execution/active-claim.js +0 -94
  538. package/dist/policy-packs/builtin/understanding-before-execution/active-claim.js.map +0 -1
  539. package/dist/policy-packs/builtin/understanding-before-execution/auto-approve-default.d.ts +0 -35
  540. package/dist/policy-packs/builtin/understanding-before-execution/auto-approve-default.js +0 -86
  541. package/dist/policy-packs/builtin/understanding-before-execution/auto-approve-default.js.map +0 -1
  542. package/dist/policy-packs/builtin/understanding-before-execution/auto-approve.d.ts +0 -210
  543. package/dist/policy-packs/builtin/understanding-before-execution/auto-approve.js +0 -361
  544. package/dist/policy-packs/builtin/understanding-before-execution/auto-approve.js.map +0 -1
  545. package/dist/policy-packs/builtin/understanding-before-execution/delegation-markers.d.ts +0 -304
  546. package/dist/policy-packs/builtin/understanding-before-execution/delegation-markers.js +0 -734
  547. package/dist/policy-packs/builtin/understanding-before-execution/delegation-markers.js.map +0 -1
  548. package/dist/policy-packs/builtin/understanding-before-execution/expiry-reason.d.ts +0 -36
  549. package/dist/policy-packs/builtin/understanding-before-execution/expiry-reason.js +0 -73
  550. package/dist/policy-packs/builtin/understanding-before-execution/expiry-reason.js.map +0 -1
  551. package/dist/policy-packs/builtin/understanding-before-execution/index.d.ts +0 -19
  552. package/dist/policy-packs/builtin/understanding-before-execution/index.js +0 -83
  553. package/dist/policy-packs/builtin/understanding-before-execution/index.js.map +0 -1
  554. package/dist/policy-packs/builtin/understanding-before-execution/inflight-records.d.ts +0 -135
  555. package/dist/policy-packs/builtin/understanding-before-execution/inflight-records.js +0 -643
  556. package/dist/policy-packs/builtin/understanding-before-execution/inflight-records.js.map +0 -1
  557. package/dist/policy-packs/builtin/understanding-before-execution/ledger.d.ts +0 -25
  558. package/dist/policy-packs/builtin/understanding-before-execution/ledger.js +0 -56
  559. package/dist/policy-packs/builtin/understanding-before-execution/ledger.js.map +0 -1
  560. package/dist/policy-packs/builtin/understanding-before-execution/lifecycle.d.ts +0 -20
  561. package/dist/policy-packs/builtin/understanding-before-execution/lifecycle.js +0 -106
  562. package/dist/policy-packs/builtin/understanding-before-execution/lifecycle.js.map +0 -1
  563. package/dist/policy-packs/builtin/understanding-before-execution/markers.d.ts +0 -126
  564. package/dist/policy-packs/builtin/understanding-before-execution/markers.js +0 -245
  565. package/dist/policy-packs/builtin/understanding-before-execution/markers.js.map +0 -1
  566. package/dist/policy-packs/builtin/understanding-before-execution/measured-permission-modes.d.ts +0 -29
  567. package/dist/policy-packs/builtin/understanding-before-execution/measured-permission-modes.js +0 -82
  568. package/dist/policy-packs/builtin/understanding-before-execution/measured-permission-modes.js.map +0 -1
  569. package/dist/policy-packs/builtin/understanding-before-execution/permission-mode-observations.d.ts +0 -71
  570. package/dist/policy-packs/builtin/understanding-before-execution/permission-mode-observations.js +0 -175
  571. package/dist/policy-packs/builtin/understanding-before-execution/permission-mode-observations.js.map +0 -1
  572. package/dist/policy-packs/builtin/understanding-before-execution/persisted-reports.d.ts +0 -625
  573. package/dist/policy-packs/builtin/understanding-before-execution/persisted-reports.js +0 -1076
  574. package/dist/policy-packs/builtin/understanding-before-execution/persisted-reports.js.map +0 -1
  575. package/dist/policy-packs/builtin/understanding-before-execution/post-tool-use-boundary.d.ts +0 -128
  576. package/dist/policy-packs/builtin/understanding-before-execution/post-tool-use-boundary.js +0 -213
  577. package/dist/policy-packs/builtin/understanding-before-execution/post-tool-use-boundary.js.map +0 -1
  578. package/dist/policy-packs/builtin/understanding-before-execution/stay-in-scope-config.d.ts +0 -129
  579. package/dist/policy-packs/builtin/understanding-before-execution/stay-in-scope-config.js +0 -166
  580. package/dist/policy-packs/builtin/understanding-before-execution/stay-in-scope-config.js.map +0 -1
  581. package/dist/policy-packs/builtin/understanding-before-execution/task-markers.d.ts +0 -164
  582. package/dist/policy-packs/builtin/understanding-before-execution/task-markers.js +0 -275
  583. package/dist/policy-packs/builtin/understanding-before-execution/task-markers.js.map +0 -1
  584. package/dist/policy-packs/builtin/understanding-before-execution-runtime.d.ts +0 -1
  585. package/dist/policy-packs/builtin/understanding-before-execution-runtime.js +0 -10
  586. package/dist/policy-packs/builtin/understanding-before-execution-runtime.js.map +0 -1
  587. package/dist/policy-packs/builtin/understanding-before-execution.d.ts +0 -526
  588. package/dist/policy-packs/builtin/understanding-before-execution.js +0 -1078
  589. package/dist/policy-packs/builtin/understanding-before-execution.js.map +0 -1
  590. package/dist/policy-packs/permission-translator.d.ts +0 -9
  591. package/dist/policy-packs/permission-translator.js +0 -76
  592. package/dist/policy-packs/permission-translator.js.map +0 -1
  593. package/dist/runtime/action-envelope.d.ts +0 -64
  594. package/dist/runtime/action-envelope.js +0 -46
  595. package/dist/runtime/action-envelope.js.map +0 -1
  596. package/dist/runtime/approval-signing.d.ts +0 -111
  597. package/dist/runtime/approval-signing.js +0 -384
  598. package/dist/runtime/approval-signing.js.map +0 -1
  599. package/dist/runtime/bash-match-facts.d.ts +0 -60
  600. package/dist/runtime/bash-match-facts.js +0 -196
  601. package/dist/runtime/bash-match-facts.js.map +0 -1
  602. package/dist/runtime/bash-match-registry.d.ts +0 -112
  603. package/dist/runtime/bash-match-registry.js +0 -406
  604. package/dist/runtime/bash-match-registry.js.map +0 -1
  605. package/dist/runtime/bash-prefix-parse.d.ts +0 -31
  606. package/dist/runtime/bash-prefix-parse.js +0 -576
  607. package/dist/runtime/bash-prefix-parse.js.map +0 -1
  608. package/dist/runtime/command-normalize.d.ts +0 -658
  609. package/dist/runtime/command-normalize.js +0 -2410
  610. package/dist/runtime/command-normalize.js.map +0 -1
  611. package/dist/runtime/deletion-target-resolve.d.ts +0 -28
  612. package/dist/runtime/deletion-target-resolve.js +0 -1078
  613. package/dist/runtime/deletion-target-resolve.js.map +0 -1
  614. package/dist/runtime/destructive-shell-floor.d.ts +0 -19
  615. package/dist/runtime/destructive-shell-floor.js +0 -611
  616. package/dist/runtime/destructive-shell-floor.js.map +0 -1
  617. package/dist/runtime/environment-resolver.d.ts +0 -36
  618. package/dist/runtime/environment-resolver.js +0 -138
  619. package/dist/runtime/environment-resolver.js.map +0 -1
  620. package/dist/runtime/git-context.d.ts +0 -201
  621. package/dist/runtime/git-context.js +0 -422
  622. package/dist/runtime/git-context.js.map +0 -1
  623. package/dist/runtime/index.d.ts +0 -12
  624. package/dist/runtime/index.js +0 -13
  625. package/dist/runtime/index.js.map +0 -1
  626. package/dist/runtime/intercept.d.ts +0 -623
  627. package/dist/runtime/intercept.js +0 -1384
  628. package/dist/runtime/intercept.js.map +0 -1
  629. package/dist/runtime/kube-context.d.ts +0 -16
  630. package/dist/runtime/kube-context.js +0 -63
  631. package/dist/runtime/kube-context.js.map +0 -1
  632. package/dist/runtime/kubectl-target-parse.d.ts +0 -31
  633. package/dist/runtime/kubectl-target-parse.js +0 -249
  634. package/dist/runtime/kubectl-target-parse.js.map +0 -1
  635. package/dist/runtime/ledger-add.d.ts +0 -16
  636. package/dist/runtime/ledger-add.js +0 -150
  637. package/dist/runtime/ledger-add.js.map +0 -1
  638. package/dist/runtime/ledger-writer.d.ts +0 -27
  639. package/dist/runtime/ledger-writer.js +0 -46
  640. package/dist/runtime/ledger-writer.js.map +0 -1
  641. package/dist/runtime/pause-sentinel.d.ts +0 -60
  642. package/dist/runtime/pause-sentinel.js +0 -156
  643. package/dist/runtime/pause-sentinel.js.map +0 -1
  644. package/dist/runtime/pending-approval.d.ts +0 -23
  645. package/dist/runtime/pending-approval.js +0 -67
  646. package/dist/runtime/pending-approval.js.map +0 -1
  647. package/dist/runtime/read-only-bash.d.ts +0 -141
  648. package/dist/runtime/read-only-bash.js +0 -2204
  649. package/dist/runtime/read-only-bash.js.map +0 -1
  650. package/dist/runtime/recovery-git-commit.d.ts +0 -22
  651. package/dist/runtime/recovery-git-commit.js +0 -284
  652. package/dist/runtime/recovery-git-commit.js.map +0 -1
  653. package/dist/runtime/reject-malformed-session-id.d.ts +0 -8
  654. package/dist/runtime/reject-malformed-session-id.js +0 -16
  655. package/dist/runtime/reject-malformed-session-id.js.map +0 -1
  656. package/dist/runtime/risk-classifier.d.ts +0 -38
  657. package/dist/runtime/risk-classifier.js +0 -311
  658. package/dist/runtime/risk-classifier.js.map +0 -1
  659. package/dist/runtime/session-id.d.ts +0 -113
  660. package/dist/runtime/session-id.js +0 -193
  661. package/dist/runtime/session-id.js.map +0 -1
  662. package/dist/runtime/shell-word.d.ts +0 -62
  663. package/dist/runtime/shell-word.js +0 -410
  664. package/dist/runtime/shell-word.js.map +0 -1
  665. package/dist/runtime/task-providers/agent-tasks.d.ts +0 -105
  666. package/dist/runtime/task-providers/agent-tasks.js +0 -247
  667. package/dist/runtime/task-providers/agent-tasks.js.map +0 -1
  668. package/dist/runtime/when-eval.d.ts +0 -62
  669. package/dist/runtime/when-eval.js +0 -212
  670. package/dist/runtime/when-eval.js.map +0 -1
  671. package/dist/runtime/workflow-policies.d.ts +0 -207
  672. package/dist/runtime/workflow-policies.js +0 -596
  673. package/dist/runtime/workflow-policies.js.map +0 -1
  674. package/dist/schema/audit.d.ts +0 -71
  675. package/dist/schema/audit.js +0 -32
  676. package/dist/schema/audit.js.map +0 -1
  677. package/dist/schema/doctor.d.ts +0 -25
  678. package/dist/schema/doctor.js +0 -23
  679. package/dist/schema/doctor.js.map +0 -1
  680. package/dist/schema/environments.d.ts +0 -215
  681. package/dist/schema/environments.js +0 -101
  682. package/dist/schema/environments.js.map +0 -1
  683. package/dist/schema/extract.d.ts +0 -9
  684. package/dist/schema/extract.js +0 -86
  685. package/dist/schema/extract.js.map +0 -1
  686. package/dist/schema/permission-profiles.d.ts +0 -2292
  687. package/dist/schema/permission-profiles.js +0 -60
  688. package/dist/schema/permission-profiles.js.map +0 -1
  689. package/dist/schema/policies.d.ts +0 -974
  690. package/dist/schema/policies.js +0 -298
  691. package/dist/schema/policies.js.map +0 -1
  692. package/dist/schema/requires.d.ts +0 -131
  693. package/dist/schema/requires.js +0 -88
  694. package/dist/schema/requires.js.map +0 -1
  695. package/dist/schema/risk.d.ts +0 -144
  696. package/dist/schema/risk.js +0 -194
  697. package/dist/schema/risk.js.map +0 -1
  698. package/dist/schema/session-start-preflight.d.ts +0 -10
  699. package/dist/schema/session-start-preflight.js +0 -106
  700. package/dist/schema/session-start-preflight.js.map +0 -1
  701. package/dist/schema/stale-base-check.d.ts +0 -18
  702. package/dist/schema/stale-base-check.js +0 -37
  703. package/dist/schema/stale-base-check.js.map +0 -1
  704. package/dist/schema/toolchain-parity.d.ts +0 -21
  705. package/dist/schema/toolchain-parity.js +0 -48
  706. package/dist/schema/toolchain-parity.js.map +0 -1
  707. package/dist/schema/workflows.d.ts +0 -519
  708. package/dist/schema/workflows.js +0 -81
  709. package/dist/schema/workflows.js.map +0 -1
  710. package/scripts/runtime-reality-docker-probe.mjs +0 -71
@@ -1,530 +0,0 @@
1
- // `harness pack hook solution-acceptance` — PreToolUse completion-gate for
2
- // the `solution-acceptance` policy pack.
3
- //
4
- // Receives Claude Code's PreToolUse event JSON on stdin and emits a
5
- // `{ decision: "block" }` envelope when the agent is about to FINISH a task
6
- // (agent-tasks completion verb, or a `git push` / `gh pr merge` bash
7
- // command) without a READY solution-acceptance verdict at the current git
8
- // HEAD.
9
- //
10
- // The verdict id is the active-claim task id (the same `active-claim` file
11
- // `harness approve understanding` consumes). For solo / non-agent-tasks
12
- // sessions that never call `task_start`, the `SOLUTION_VERDICT_ID` env knob
13
- // supplies the id instead; it is consulted only when no active claim is
14
- // present, so a claimed session's id stays authoritative (an env var cannot
15
- // redirect a claimed task's verdict). With neither source the gate fails
16
- // CLOSED — a sessionId fallback would reopen the wrong-scope bug class
17
- // understanding-gate already fixed.
18
- //
19
- // Failure mode: any error in load / parse / HEAD-resolution / verdict-read
20
- // resolves to BLOCK (branch-protection's fail-closed posture, not
21
- // understanding-gate's fail-open). The gate's whole job is to prevent
22
- // completion without earned acceptance, so a bug that silently allowed a
23
- // finish through would defeat the purpose. The block envelope always names
24
- // `solution_evaluate` as the recovery path so the operator is never wedged;
25
- // `harness pause` (honored first) is the operator's hard override.
26
- import * as path from "node:path";
27
- import { readActiveClaim, } from "../../policy-packs/builtin/understanding-before-execution-runtime.js";
28
- import { DEFAULT_PUSH_BASH_RE, evaluateGate, PACK_NAME, readVerdictDetailed, resolveExplicitVerdictId, resolveProtectedCompletionTools, sanitizeVerdictId, VERDICT_ID_ENV, verdictDir as resolveVerdictDir, } from "../../policy-packs/builtin/solution-acceptance-runtime.js";
29
- import { RECONNECT_RESULT_TOOL, RECONNECT_STATUS_TOOL, renderReconnectDenyParagraph, } from "../../policy-packs/builtin/solution-acceptance-reconnect.js";
30
- import { resolveGeneratedDir } from "../../io/generated-dir.js";
31
- import { checkFileLock } from "../../io/lock.js";
32
- import { resolveGitContext } from "../../runtime/git-context.js";
33
- import { renderAgentFacing } from "../../runtime/agent-facing.js";
34
- import { canonicalAgentTasksVerb, DEFAULT_PROTECTED_COMPLETION_TOOLS, } from "../../runtime/task-providers/agent-tasks.js";
35
- import { checkHookPause, loadManifestOrInjected, parseConfigUx, readStdin, runGateWithStdinRefusal, stdoutBlockRefusal, } from "./hook-bootstrap.js";
36
- function bashCommandOf(toolInput) {
37
- if (typeof toolInput !== "object" || toolInput === null)
38
- return "";
39
- const cmd = toolInput["command"];
40
- return typeof cmd === "string" ? cmd : "";
41
- }
42
- /**
43
- * Decide whether this PreToolUse call is a gated completion action. Returns
44
- * the human label of the action when gated, or null when this call should
45
- * pass through (the hook matches all Bash, but only push/merge bash commands
46
- * are completion actions).
47
- */
48
- function completionActionLabel(toolName, toolInput, protectedVerbs) {
49
- const agentTasksVerb = canonicalAgentTasksVerb(toolName, protectedVerbs);
50
- if (agentTasksVerb !== null) {
51
- return `agent-tasks ${agentTasksVerb}`;
52
- }
53
- if (toolName === "Bash") {
54
- const command = bashCommandOf(toolInput);
55
- if (command && DEFAULT_PUSH_BASH_RE.test(command))
56
- return "git push / gh pr merge";
57
- return null;
58
- }
59
- return null;
60
- }
61
- /**
62
- * Suffix of the attempt-lock ANCHOR file grounding-mcp writes beside the
63
- * verdict marker, mirroring its own `LOCK_ANCHOR_SUFFIX`
64
- * (grounding-mcp-v0.12.0 packages/grounding-mcp/src/solution-attempt-log.ts:209)
65
- * and README table row "Attempt lock anchor" (`<verdict dir>/<id>.attempt-lock`,
66
- * mode `0600`; the lock itself is the `<id>.attempt-lock.lock` directory
67
- * `proper-lockfile` manages beside it, packages/grounding-mcp/README.md:42
68
- * at that tag).
69
- */
70
- const ATTEMPT_LOCK_ANCHOR_SUFFIX = ".attempt-lock";
71
- /**
72
- * Staleness window this hook applies when READING the attempt-lock anchor:
73
- * the producer's own DOCUMENTED default, `DEFAULT_ATTEMPT_LOCK_STALE_MS`
74
- * (grounding-mcp-v0.12.0 packages/grounding-mcp/src/solution-attempt-log.ts:102,
75
- * `= 30_000`), the `staleMs` `acquireAttemptLock` passes straight through
76
- * to `lockfile.lock(anchor, { retries: 0, realpath: false, stale:
77
- * options.staleMs, ... })` (same file, lines 472-475) on every DEFAULT
78
- * acquisition, pinned here as a literal rather than imported (this package
79
- * has no dependency on grounding-mcp's internals). This hook applies the
80
- * producer's documented default window pinned to grounding-mcp-v0.12.0; it
81
- * diverges from what the producer actually enforces for a given attempt
82
- * if the producer's own default changes in a later release, or if a
83
- * caller of `acquireAttemptLock` overrides `staleMs` away from that
84
- * default (the producer's own option is caller-settable, same file),
85
- * since neither is observable from this side of the lock: an operational
86
- * pin, not a mathematical guarantee, that needs re-checking on every
87
- * grounding-mcp bump this pack's producer floor moves past.
88
- */
89
- export const ATTEMPT_LOCK_STALE_MS = 30_000;
90
- /**
91
- * Every state the null-verdict note renders a line for, as data. The note
92
- * is a total function over this list (`coordinateOf` below maps each
93
- * `NullVerdictInfo` onto exactly one coordinate, and the compiler rejects a
94
- * member without a line), and
95
- * `tests/cli/pack-hook-solution-acceptance.test.ts` iterates it to assert
96
- * the state table has a row per member. A state added to the classifier
97
- * without a row therefore fails the build or the suite, instead of
98
- * shipping an unpinned line to an agent.
99
- */
100
- export const NULL_VERDICT_NOTE_STATES = [
101
- "unusable-id",
102
- "never-evaluated",
103
- "marker-symlink",
104
- "marker-not-regular",
105
- "marker-unreadable",
106
- "marker-invalid-record",
107
- "live-attempt",
108
- ];
109
- /**
110
- * The two states whose line carries no liveness clause: the unusable-id
111
- * line (nothing was read, so no liveness exists to name) and the
112
- * live-attempt line (its liveness is `"live"` by definition). Every other
113
- * state's line names what the lock check said, so it exists once per
114
- * clause.
115
- */
116
- export const NULL_VERDICT_CLAUSE_FREE_STATES = ["unusable-id", "live-attempt"];
117
- function isClauseFreeNoteState(state) {
118
- return NULL_VERDICT_CLAUSE_FREE_STATES.includes(state);
119
- }
120
- function attemptLockAnchorPath(dir, id) {
121
- return path.join(dir, `${sanitizeVerdictId(id)}${ATTEMPT_LOCK_ANCHOR_SUFFIX}`);
122
- }
123
- /**
124
- * Read-only, three-valued liveness check: does `id`'s attempt-lock
125
- * anchor's `.lock` directory exist and read as NOT stale under
126
- * `ATTEMPT_LOCK_STALE_MS`? Routed through `src/io/lock.ts`'s
127
- * `checkFileLock` (the designated read-only wrapper around
128
- * `proper-lockfile`'s own `checkSync`, the SAME library the producer
129
- * acquires the lock with), so the stale/live split is decided by the
130
- * producer's own mechanism, not a reimplementation of its mtime
131
- * arithmetic. `realpath: false` mirrors the producer's own
132
- * `acquireAttemptLock` call (cited above): with the library default
133
- * `realpath: true`, checking an anchor that was never created (the
134
- * anchor is created lazily, on first acquisition, the common "never
135
- * evaluated" case) would `realpath` the anchor FILE itself first and
136
- * throw `ENOENT`, instead of answering the ordinary "not locked" case.
137
- * Never acquires or mutates the lock; a check-only read has no cleanup
138
- * to restore.
139
- *
140
- * PRECONDITION: `id` is already known usable. `attemptLockAnchorPath`'s
141
- * only throw source is `sanitizeVerdictId`, which the caller has already
142
- * passed (`readVerdictDetailed` answered something other than
143
- * `invalid-id` for the same id, through the same function), so this has no
144
- * catch of its own: an unreachable arm cannot be tested and cannot be
145
- * killed by a mutant, which is worse than no arm at all (review finding,
146
- * harness/799de976, round 6).
147
- */
148
- function readAttemptLockLiveness(dir, id) {
149
- return checkFileLock(attemptLockAnchorPath(dir, id), { staleMs: ATTEMPT_LOCK_STALE_MS });
150
- }
151
- /**
152
- * Classify WHY `gate.verdict === null` for `id`: whether the id is usable
153
- * at all, and if it is, which of the three readings applies, AND the raw
154
- * liveness result the classification rests
155
- * on, so the deny text can name the reading it detected without ever
156
- * collapsing "liveness could not be determined" into "confirmed not
157
- * live" (see docs/policy-packs/solution-acceptance.md, "Reading the
158
- * attempt-lock anchor to distinguish the three readings", for the
159
- * record). Live-attempt takes priority over the marker-presence check: a
160
- * live attempt can coexist with a stale or corrupt marker left by an
161
- * earlier run for the same id, and "reconnect to the live attempt" is
162
- * the actionable reading in that overlap.
163
- */
164
- function classifyNullVerdictReading(dir, id, read) {
165
- // The marker is NOT looked at again here. `read` is the same observation
166
- // `evaluateGate` decided on, passed in: a second look can disagree with
167
- // the first (a background attempt finishing between the two), and a note
168
- // rendered from the later one would describe a rejection the gate never
169
- // made (review finding, harness/799de976, round 6). Only the LOCK, a
170
- // different subject with its own clause, is read here.
171
- if (read.kind === "invalid-id")
172
- return { kind: "unusable-id" };
173
- const liveness = readAttemptLockLiveness(dir, id);
174
- if (liveness === "live")
175
- return { kind: "reading", reading: "live-attempt" };
176
- if (read.kind === "missing")
177
- return { kind: "reading", reading: "never-evaluated", liveness };
178
- // `read.kind` is narrowed to the rejected kinds by the parameter type: a
179
- // read that produced a verdict never reaches the classifier, so there is
180
- // no arm here that could name a valid record as invalid.
181
- const markerKind = read.kind;
182
- return { kind: "reading", reading: "unreadable-marker", liveness, markerKind };
183
- }
184
- /** The one coordinate a classification renders at, as a total mapping. */
185
- function coordinateOf(info) {
186
- if (info.kind === "unusable-id")
187
- return { state: "unusable-id" };
188
- switch (info.reading) {
189
- case "live-attempt":
190
- return { state: "live-attempt" };
191
- case "never-evaluated":
192
- return { state: "never-evaluated", liveness: info.liveness };
193
- case "unreadable-marker":
194
- switch (info.markerKind) {
195
- case "symlink":
196
- return { state: "marker-symlink", liveness: info.liveness };
197
- case "not-regular":
198
- return { state: "marker-not-regular", liveness: info.liveness };
199
- case "unreadable":
200
- return { state: "marker-unreadable", liveness: info.liveness };
201
- case "invalid-record":
202
- return { state: "marker-invalid-record", liveness: info.liveness };
203
- }
204
- }
205
- }
206
- /** The liveness clause, which names what the lock check actually said. */
207
- const UNDETERMINED_LIVENESS_CLAUSE = "liveness could not be determined";
208
- const NOT_LIVE_CLAUSE = "no attempt reads as currently live";
209
- /**
210
- * One line per note state, as a total `Record` keyed by
211
- * `NULL_VERDICT_NOTE_STATES`: a state added to the list without a line
212
- * here fails the build, which is what makes the list a checklist rather
213
- * than a convention.
214
- *
215
- * Invariant across every line: it states only what the gate established,
216
- * and never a cause that was not observed. The liveness clause names what
217
- * the lock check said ("no attempt reads as currently live" vs "liveness
218
- * could not be determined") instead of always asserting absence, and the
219
- * marker lines come from the gate's OWN read of the marker, never from a
220
- * second look at the path. `tests/cli/pack-hook-solution-acceptance.test.ts`
221
- * pins one exact expected line per state and asserts every member of the
222
- * list has a row, so a future state whose line would overstate fails there
223
- * rather than reaching an agent.
224
- */
225
- export const NULL_VERDICT_NOTE_RENDERERS = {
226
- // Nothing was read here and no liveness was established, so the note
227
- // claims neither: it reports the one fact the classifier settled, names
228
- // the only surface this id can have come from, and names the verb that
229
- // clears it. An explicit SOLUTION_VERDICT_ID cannot reach this state:
230
- // `resolveExplicitVerdictId` validates through the same
231
- // `sanitizeVerdictId` and answers null for anything it rejects.
232
- "unusable-id": (taskId) => `The claimed id ${JSON.stringify(taskId)} is not a usable verdict id: no verdict marker path and no attempt-lock path can be derived from it, so neither was read. Release the active claim carrying it (mcp__agent-tasks__task_abandon, or have the operator clear harness.generated/active-claim), claim the real task, then run solution_evaluate for it.`,
233
- // Only "the marker read found nothing" is established (the shared reader
234
- // folds every lstat failure into `missing`), plus whatever the lock check
235
- // said at a later moment. Neither clause names a cause: earlier versions
236
- // guessed one ("the verdict directory could not be read"), then a
237
- // narrower disjunction of two, then "solution_evaluate has not been
238
- // called for this id", and each guess was falsified by a state that
239
- // reached this branch without it: a marker recorded and then deleted, an
240
- // attempt finishing between the marker read and the lock read, or an
241
- // lstat failure of some other kind.
242
- "never-evaluated": (taskId, clause) => clause === UNDETERMINED_LIVENESS_CLAUSE
243
- ? `No verdict marker was found for "${taskId}" and liveness could not be determined: run solution_evaluate for this id.`
244
- : `No verdict marker was found for "${taskId}"; ${clause}: run solution_evaluate for this id.`,
245
- // One line per rejection kind, each naming exactly what the gate's own
246
- // read established. A hand-written disjunction over the kinds was the
247
- // round-6 finding: it read as a claim about the path as it is NOW, while
248
- // the kinds come from the read the gate decided on.
249
- "marker-symlink": (taskId, clause) => `The verdict marker path for "${taskId}" is a symlink, which this gate refuses to follow; ${clause}: replace it with a marker recorded by solution_evaluate.`,
250
- "marker-not-regular": (taskId, clause) => `The verdict marker path for "${taskId}" is not a regular file; ${clause}: replace it with a marker recorded by solution_evaluate.`,
251
- "marker-unreadable": (taskId, clause) => `The verdict marker for "${taskId}" could not be read; ${clause}: re-run solution_evaluate to record a fresh one.`,
252
- "marker-invalid-record": (taskId, clause) => `The verdict marker for "${taskId}" was read but is not a valid verdict record; ${clause}: re-run solution_evaluate to record a fresh one.`,
253
- "live-attempt": (taskId) => `A solution_evaluate attempt for "${taskId}" is still live: its attempt-lock anchor is held.`,
254
- };
255
- /**
256
- * Every reachable coordinate, derived from `NULL_VERDICT_NOTE_STATES`: one
257
- * per clause-free state, one per liveness clause for every other state. The
258
- * state table in `tests/cli/pack-hook-solution-acceptance.test.ts` requires
259
- * a row per member and derives its "no other line appears" set from it, so
260
- * a state added to the list joins both without anyone extending a list.
261
- */
262
- export const NULL_VERDICT_NOTE_COORDINATES = NULL_VERDICT_NOTE_STATES.flatMap((state) => isClauseFreeNoteState(state)
263
- ? [{ state }]
264
- : [
265
- { state, liveness: "not-live" },
266
- { state, liveness: "unknown" },
267
- ]);
268
- /**
269
- * The exact line a coordinate renders for `taskId`. The one place a state
270
- * and a liveness become a line: the hook renders through it, and the state
271
- * table derives its "no other line appears" set and checks each row's
272
- * declared coordinate against it. Total over reachable coordinates only: a
273
- * pair the type excludes (`"live"` beside a clause-carrying state, any
274
- * liveness beside a clause-free one) throws instead of rendering a line
275
- * that would misstate what was observed, for a caller that bypasses the
276
- * type.
277
- */
278
- export function renderNullVerdictNote(coordinate, taskId) {
279
- const liveness = "liveness" in coordinate ? coordinate.liveness : undefined;
280
- if (isClauseFreeNoteState(coordinate.state)) {
281
- if (liveness !== undefined) {
282
- throw new Error(`null-verdict note state ${coordinate.state} carries no liveness clause, got ${String(liveness)}`);
283
- }
284
- return NULL_VERDICT_NOTE_RENDERERS[coordinate.state](taskId, "");
285
- }
286
- if (liveness !== "not-live" && liveness !== "unknown") {
287
- throw new Error(`null-verdict note state ${coordinate.state} renders only for liveness not-live or unknown, got ${String(liveness)}`);
288
- }
289
- const clause = liveness === "unknown" ? UNDETERMINED_LIVENESS_CLAUSE : NOT_LIVE_CLAUSE;
290
- return NULL_VERDICT_NOTE_RENDERERS[coordinate.state](taskId, clause);
291
- }
292
- function nullVerdictReadingNote(taskId, info) {
293
- return renderNullVerdictNote(coordinateOf(info), taskId);
294
- }
295
- /**
296
- * Reconnect-vs-retry guidance appended to the default deny text only for
297
- * reading (2), "an attempt is live" (`classifyNullVerdictReading` above
298
- * returned `reading: "live-attempt"`): the paragraph is rendered from
299
- * `solution-acceptance-reconnect.ts`, the SAME fact source the pack's
300
- * `instructions.md` "Reconnecting vs. retrying" section renders from, so
301
- * the two surfaces cannot silently drift apart. Readings (1)
302
- * (never-evaluated) and (3) (unreadable-marker) instead get their own
303
- * short `nullVerdictReadingNote` line, with no reconnect paragraph: there
304
- * is no live attempt to reconnect to. See
305
- * docs/policy-packs/solution-acceptance.md, "Reading the attempt-lock
306
- * anchor to distinguish the three readings", for the decision record.
307
- */
308
- function reconnectGuidanceFor(taskId, info) {
309
- if (info === null || info.kind !== "reading" || info.reading !== "live-attempt")
310
- return "";
311
- return renderReconnectDenyParagraph(taskId);
312
- }
313
- /**
314
- * Converge step 2, as a function of the reading: for the live-attempt
315
- * reading a call instruction naming `solution_evaluate` is the wrong next
316
- * action (a call JOINS the live attempt rather than evaluating; only
317
- * `forceNewAttempt` is refused while the lock holds, see
318
- * `RECONNECT_FACT_JOIN_NOT_RETRY`), so that reading gets its own step 2
319
- * naming the poll tools instead. The other two null-verdict readings
320
- * (never-evaluated, unreadable-marker) and every non-null-verdict deny
321
- * (drift, not-ready, ...) keep the original step naming `solution_evaluate`
322
- * unqualified, since a call there genuinely starts the evaluation.
323
- */
324
- function convergeStep2For(taskId, nullVerdict) {
325
- if (nullVerdict !== null && nullVerdict.kind === "reading" && nullVerdict.reading === "live-attempt") {
326
- return (` 2. An attempt for "${taskId}" is already live (see the reconnect paragraph below): ` +
327
- `poll \`${RECONNECT_STATUS_TOOL}\` / \`${RECONNECT_RESULT_TOOL}\` for the SAME id until it resolves, ` +
328
- `instead of starting a new evaluation. A clean verdict at the current HEAD unblocks this tool; ` +
329
- `a not-ready or failing verdict lists the blockers to fix (then back to step 1).\n`);
330
- }
331
- return (` 2. mcp__grounding-mcp__solution_evaluate({ id: "${taskId}" }): runs \`preflight run --json\` ` +
332
- `(lint/typecheck/test/audit/secret) and records a HEAD-pinned verdict. A clean run at the current ` +
333
- `HEAD unblocks this tool; a failing run lists the blockers to fix (then back to step 1).\n`);
334
- }
335
- function blockJson(actionLabel, toolName, taskId, detail, ux, sessionId, nullVerdict = null) {
336
- let reasonText;
337
- if (ux) {
338
- reasonText = renderAgentFacing(ux, {
339
- TOOL_NAME: toolName,
340
- SESSION_ID: sessionId,
341
- });
342
- }
343
- else {
344
- reasonText =
345
- `solution-acceptance: refusing ${actionLabel} (${toolName}). ${detail}\n` +
346
- (nullVerdict !== null ? `${nullVerdictReadingNote(taskId, nullVerdict)}\n` : "") +
347
- `Completion must be EARNED from a real preflight run at the CURRENT HEAD, not claimed.\n` +
348
- `Converge in this order, all at one commit:\n` +
349
- ` 1. If the working tree is dirty, COMMIT first. The verdict is pinned to the HEAD it was evaluated at, so any commit you make afterward makes it stale; commit the change before evaluating so the verdict pins to the final HEAD.\n` +
350
- convergeStep2For(taskId, nullVerdict) +
351
- ` 3. For \`git push\` / \`gh pr merge\`: the separate preflight-before-push gate is satisfied by a preflight at the current HEAD (its \`at_head\` rule), so refresh it at this same commit with \`harness preflight\` before retrying. Satisfy both push-gates at one HEAD.\n` +
352
- reconnectGuidanceFor(taskId, nullVerdict) +
353
- `\n` +
354
- `Operator override: \`harness pause\` (yields this and every other gate).`;
355
- }
356
- return JSON.stringify({
357
- decision: "block",
358
- reason: reasonText,
359
- hookSpecificOutput: {
360
- hookEventName: "PreToolUse",
361
- permissionDecision: "deny",
362
- permissionDecisionReason: reasonText,
363
- },
364
- });
365
- }
366
- async function runPackHookSolutionAcceptanceCliInner(opts = {}) {
367
- const stdin = opts.stdin ?? process.stdin;
368
- const stdout = opts.stdout ?? process.stdout;
369
- const stderr = opts.stderr ?? process.stderr;
370
- const note = (msg) => {
371
- stderr.write(`harness pack hook solution-acceptance: ${msg}\n`);
372
- };
373
- const env = opts.env ?? process.env;
374
- const raw = await readStdin(stdin);
375
- let event = {};
376
- try {
377
- event = JSON.parse(raw.trim() || "{}");
378
- }
379
- catch {
380
- /* event stays {} */
381
- }
382
- // Operator pause yields even this gate.
383
- if (checkHookPause(PACK_NAME, stderr, opts).paused) {
384
- const diagnostic = "harness paused; solution-acceptance allowing without evaluating.";
385
- return { exitCode: 0, blocked: false, diagnostic };
386
- }
387
- const sessionId = (typeof event.session_id === "string" ? event.session_id : undefined) ??
388
- env["CLAUDE_CODE_SESSION_ID"] ??
389
- env["CLAUDE_SESSION_ID"] ??
390
- "";
391
- const toolName = typeof event.tool_name === "string" ? event.tool_name : "(unknown)";
392
- const cwd = typeof opts.cwd === "string" && opts.cwd.length > 0
393
- ? opts.cwd
394
- : typeof event.cwd === "string" && event.cwd.length > 0
395
- ? event.cwd
396
- : process.cwd();
397
- // Load manifest to resolve the pack config. A load failure forces BLOCK
398
- // only if this turns out to be a completion action; resolve it first.
399
- // `manifestPath` (the resolved manifest base) feeds the harness.generated/
400
- // lookup below — it is populated whether the operator passed --config or
401
- // the default (~/.harness/harness.yaml) was resolved, so the bare
402
- // production hook command still resolves the active-claim id.
403
- let manifest;
404
- let manifestPath;
405
- try {
406
- ({ manifest, manifestPath } = loadManifestOrInjected(opts, opts.manifest));
407
- }
408
- catch (err) {
409
- // We cannot tell if this is a gated action without the config, but a
410
- // manifest load failure should not block unrelated tool calls. Only
411
- // the completion verbs / push commands are ever gated, so classify
412
- // by tool name with the DEFAULT verb set as a failsafe.
413
- const label = completionActionLabel(toolName, event.tool_input, DEFAULT_PROTECTED_COMPLETION_TOOLS);
414
- if (label === null) {
415
- const diagnostic = `manifest load failed (${err.message}) but ${toolName} is not a completion action; allowing`;
416
- note(diagnostic);
417
- return { exitCode: 0, blocked: false, diagnostic };
418
- }
419
- const reason = `manifest load failed (${err.message}); refusing ${label} on failsafe`;
420
- const diagnostic = `BLOCK — ${reason}`;
421
- note(diagnostic);
422
- stdout.write(`${blockJson(label, toolName, "<unknown>", reason, undefined, sessionId)}\n`);
423
- return { exitCode: 0, blocked: true, diagnostic };
424
- }
425
- const pack = manifest.policy_packs.find((p) => p.name === PACK_NAME);
426
- if (!pack) {
427
- const diagnostic = `pack "${PACK_NAME}" not declared in manifest, allowing`;
428
- note(diagnostic);
429
- return { exitCode: 0, blocked: false, diagnostic };
430
- }
431
- if (!pack.enabled) {
432
- const diagnostic = `pack "${PACK_NAME}" is enabled:false, allowing`;
433
- note(diagnostic);
434
- return { exitCode: 0, blocked: false, diagnostic };
435
- }
436
- const protectedVerbs = resolveProtectedCompletionTools(pack);
437
- const actionLabel = completionActionLabel(toolName, event.tool_input, protectedVerbs);
438
- if (actionLabel === null) {
439
- const diagnostic = `${toolName} is not a gated completion action; allowing`;
440
- note(diagnostic);
441
- return { exitCode: 0, blocked: false, diagnostic };
442
- }
443
- const configUx = parseConfigUx(pack.config["ux"], stderr, "harness pack hook solution-acceptance");
444
- // Resolve the verdict id. Precedence: the agent-tasks active-claim task id
445
- // first (authoritative for claimed sessions — an env var must not redirect a
446
- // claimed task's verdict), then the SOLUTION_VERDICT_ID env knob for solo /
447
- // non-agent-tasks sessions, then fail CLOSED. A sessionId fallback is
448
- // intentionally NOT a source (it would reopen the wrong-scope bug class).
449
- const generatedDir = opts.generatedDir ??
450
- (manifestPath !== undefined
451
- ? resolveGeneratedDir({
452
- ...(opts.homeDir !== undefined ? { homeDir: opts.homeDir } : {}),
453
- manifestPath,
454
- })
455
- : undefined);
456
- const activeClaim = opts.activeClaim !== undefined
457
- ? opts.activeClaim
458
- : generatedDir !== undefined
459
- ? readActiveClaim(generatedDir)
460
- : null;
461
- const taskId = activeClaim ?? resolveExplicitVerdictId(env);
462
- if (!taskId) {
463
- const detail = opts.activeClaim === undefined && generatedDir === undefined
464
- ? " (could not resolve harness.generated/; pass --config)"
465
- : "";
466
- const reason = `no verdict id: no active-claim task id recorded${detail} and ${VERDICT_ID_ENV} is unset or invalid.\n` +
467
- `\n` +
468
- `Converge one of two ways:\n` +
469
- `\n` +
470
- `1. Agent-tasks workflow: Call mcp__agent-tasks__task_start first to claim the task (the verdict id is the active task). For post-done work (Release, deploy, etc.), create a separate task and call task_start for it.\n` +
471
- `\n` +
472
- `2. Solo / non-agent-tasks session: ${VERDICT_ID_ENV} must be set in the environment at Session-Start time (Operator option; it is read at Hook startup, not agent-sideeffect-settable from within the session).`;
473
- const diagnostic = `BLOCK — ${reason}`;
474
- note(diagnostic);
475
- stdout.write(`${blockJson(actionLabel, toolName, "<no-verdict-id>", reason, configUx, sessionId)}\n`);
476
- return { exitCode: 0, blocked: true, diagnostic };
477
- }
478
- // The verdict DIR still resolves SOLUTION_VERDICT_DIR from process.env (the
479
- // `env` seam above covers the verdict id + sessionId, not the dir); in
480
- // production both see the same process.env, and tests inject opts.verdictDir.
481
- const dir = opts.verdictDir ?? resolveVerdictDir();
482
- const currentHead = resolveGitContext(cwd).sha || null;
483
- // ONE observation of the marker, shared by the gate decision below and,
484
- // when it denies, by the deny text's own classification: the text must
485
- // describe the read the decision rests on, not a later, possibly
486
- // different state of the same path (harness/799de976, round 6).
487
- const read = readVerdictDetailed(dir, taskId);
488
- const verdict = read.kind === "ok" ? read.verdict : null;
489
- // generatedDir (harness's own .generated/ dir, NOT the verdict dir) holds
490
- // the shared approval-signing key evaluateGate needs to verify the
491
- // verdict's HMAC signature (harness/c7c3f606); undefined fails closed
492
- // inside evaluateGate with its own distinct reason.
493
- const gate = evaluateGate(verdict, currentHead, taskId, generatedDir);
494
- if (gate.allowed) {
495
- const diagnostic = `${gate.reason}; allowing ${actionLabel}`;
496
- note(diagnostic);
497
- return { exitCode: 0, blocked: false, diagnostic };
498
- }
499
- // Distinct operator-facing audit tag when the gate blocked SPECIFICALLY
500
- // because the verdict was forged/unsigned or identity-mismatched
501
- // (GateResult.forged, harness/c7c3f606), not the routine "no verdict" /
502
- // "not ready" / "stale" cases — mirrors the `ackEcho` audit-echo pattern
503
- // in hook-branch-protection.ts (a short, greppable tag appended only to
504
- // the STDERR diagnostic), NOT that same hook's `markerForgedNote`: that
505
- // one folds its forged-marker wording into the AGENT-facing block reason
506
- // too (`why` there feeds both `note()` and `blockJson`). This tag stays
507
- // out of the agent-facing reason on purpose — `gate.reason` already
508
- // narrates the forgery in prose for the agent, so there is nothing this
509
- // tag would add there; it exists so an operator scanning hook logs for
510
- // active forgery attempts does not have to pattern-match the prose.
511
- const forgedTag = gate.forged ? " [audit: forged/unsigned verdict marker rejected]" : "";
512
- const diagnostic = `BLOCK — ${gate.reason}${forgedTag}`;
513
- note(diagnostic);
514
- // Classify only a denial whose read produced no verdict. A deny with a
515
- // verdict on record (`read.kind === "ok"`) gets no null-verdict note at all
516
- // rather than a line describing a rejection the gate never made.
517
- const nullVerdict = read.kind !== "ok" ? classifyNullVerdictReading(dir, taskId, read) : null;
518
- stdout.write(`${blockJson(actionLabel, toolName, taskId, gate.reason, configUx, sessionId, nullVerdict)}\n`);
519
- return { exitCode: 0, blocked: true, diagnostic };
520
- }
521
- /**
522
- * `harness pack hook solution-acceptance`. A stdin read that times out is refused here
523
- * instead of being handed to the gate as an empty or truncated event it would
524
- * treat as malformed input (task 7dfdcaaf). The operator pause still wins;
525
- * every other input runs the gate unchanged.
526
- */
527
- export function runPackHookSolutionAcceptanceCli(opts = {}) {
528
- return runGateWithStdinRefusal(opts, (stderr) => checkHookPause(PACK_NAME, stderr, opts).paused, stdoutBlockRefusal("solution-acceptance"), runPackHookSolutionAcceptanceCliInner);
529
- }
530
- //# sourceMappingURL=hook-solution-acceptance.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hook-solution-acceptance.js","sourceRoot":"","sources":["../../../src/cli/pack/hook-solution-acceptance.ts"],"names":[],"mappings":"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"}
@@ -1,37 +0,0 @@
1
- import { type StayInScopeMatchedRule } from "../../policy-packs/builtin/understanding-before-execution/stay-in-scope-config.js";
2
- import type { Manifest } from "../../schema/index.js";
3
- import type { LoaderOptions } from "../loader.js";
4
- export declare const STAY_IN_SCOPE_DISABLED_ENV = "STAY_IN_SCOPE_DISABLED";
5
- export declare const STAY_IN_SCOPE_LOG_ENV = "STAY_IN_SCOPE_LOG";
6
- export declare const REMINDERS_SUBDIR = "reminders";
7
- export declare const STAY_IN_SCOPE_LOG_BASENAME = "stay-in-scope.log";
8
- export type MatchedRule = StayInScopeMatchedRule;
9
- export interface StayInScopeAuditRecord {
10
- ts: string;
11
- taskId: string | null;
12
- title: string | null;
13
- labels: string[];
14
- parentPrUrl: string | null;
15
- secondOrder: boolean;
16
- matchedRule: MatchedRule;
17
- }
18
- export interface PackHookStayInScopeOptions extends LoaderOptions {
19
- pack?: string;
20
- generatedDir?: string;
21
- logPath?: string;
22
- stdin?: NodeJS.ReadableStream;
23
- stderr?: NodeJS.WritableStream;
24
- now?: Date;
25
- env?: NodeJS.ProcessEnv;
26
- manifest?: Manifest;
27
- }
28
- export interface PackHookStayInScopeResult {
29
- exitCode: number;
30
- matched: boolean;
31
- matchedRule: MatchedRule;
32
- logged: boolean;
33
- secondOrder: boolean;
34
- logPath: string | null;
35
- diagnostic: string;
36
- }
37
- export declare function runPackHookStayInScopeCli(opts?: PackHookStayInScopeOptions): Promise<PackHookStayInScopeResult>;