@lannguyensi/harness 0.63.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 (702) hide show
  1. package/CHANGELOG.md +90 -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 -338
  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 -705
  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 -378
  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 +15 -2607
  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 -243
  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/register-gate-group.d.ts +5 -0
  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 +5 -0
  145. package/dist/cli/register-operator-lifecycle.js +20 -0
  146. package/dist/cli/register-operator-lifecycle.js.map +1 -0
  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-setup-group.d.ts +5 -0
  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.d.ts +5 -0
  160. package/dist/cli/remove/register.js +25 -0
  161. package/dist/cli/remove/register.js.map +1 -0
  162. package/dist/cli/shell-quote.d.ts +7 -0
  163. package/dist/cli/shell-quote.js +17 -0
  164. package/dist/cli/shell-quote.js.map +1 -0
  165. package/dist/cli/uninstall/index.d.ts +4 -2
  166. package/dist/cli/uninstall/index.js +15 -7
  167. package/dist/cli/uninstall/index.js.map +1 -1
  168. package/dist/cli/uninstall/register.d.ts +5 -0
  169. package/dist/cli/uninstall/register.js +171 -0
  170. package/dist/cli/uninstall/register.js.map +1 -0
  171. package/dist/cli/uninstall/snapshot.d.ts +15 -0
  172. package/dist/cli/uninstall/snapshot.js +38 -0
  173. package/dist/cli/uninstall/snapshot.js.map +1 -1
  174. package/dist/cli/validate/checks.d.ts +0 -77
  175. package/dist/cli/validate/checks.js +3 -1049
  176. package/dist/cli/validate/checks.js.map +1 -1
  177. package/dist/cli/validate/index.js +19 -15
  178. package/dist/cli/validate/index.js.map +1 -1
  179. package/dist/index.d.ts +0 -3
  180. package/dist/index.js +0 -3
  181. package/dist/index.js.map +1 -1
  182. package/dist/io/claude-mcp.d.ts +1 -1
  183. package/dist/io/claude-mcp.js +27 -14
  184. package/dist/io/claude-mcp.js.map +1 -1
  185. package/dist/io/harness-lock.js +2 -2
  186. package/dist/io/harness-lock.js.map +1 -1
  187. package/dist/io/lock.d.ts +0 -26
  188. package/dist/io/lock.js +10 -27
  189. package/dist/io/lock.js.map +1 -1
  190. package/dist/io/merge-settings.js +6 -4
  191. package/dist/io/merge-settings.js.map +1 -1
  192. package/dist/io/project-name.d.ts +22 -39
  193. package/dist/io/project-name.js +25 -42
  194. package/dist/io/project-name.js.map +1 -1
  195. package/dist/io/read-regular-file.d.ts +103 -40
  196. package/dist/io/read-regular-file.js +196 -35
  197. package/dist/io/read-regular-file.js.map +1 -1
  198. package/dist/io/restart-hints.js +3 -6
  199. package/dist/io/restart-hints.js.map +1 -1
  200. package/dist/io/version-compare.d.ts +1 -3
  201. package/dist/io/version-compare.js +1 -3
  202. package/dist/io/version-compare.js.map +1 -1
  203. package/dist/io/write-regular-file.d.ts +30 -0
  204. package/dist/io/write-regular-file.js +85 -0
  205. package/dist/io/write-regular-file.js.map +1 -0
  206. package/dist/overrides/index.d.ts +1 -0
  207. package/dist/overrides/index.js +1 -0
  208. package/dist/overrides/index.js.map +1 -1
  209. package/dist/overrides/merge-layers.d.ts +43 -0
  210. package/dist/overrides/merge-layers.js +76 -0
  211. package/dist/overrides/merge-layers.js.map +1 -0
  212. package/dist/overrides/merge.d.ts +16 -0
  213. package/dist/overrides/merge.js +21 -8
  214. package/dist/overrides/merge.js.map +1 -1
  215. package/dist/policy-packs/builtin/branch-protection-runtime.d.ts +4 -69
  216. package/dist/policy-packs/builtin/branch-protection-runtime.js +12 -84
  217. package/dist/policy-packs/builtin/branch-protection-runtime.js.map +1 -1
  218. package/dist/policy-packs/builtin/branch-protection.d.ts +7 -30
  219. package/dist/policy-packs/builtin/branch-protection.js +56 -89
  220. package/dist/policy-packs/builtin/branch-protection.js.map +1 -1
  221. package/dist/policy-packs/config-check.d.ts +7 -5
  222. package/dist/policy-packs/config-check.js +2 -2
  223. package/dist/policy-packs/config-check.js.map +1 -1
  224. package/dist/policy-packs/expand.d.ts +1 -3
  225. package/dist/policy-packs/expand.js +5 -42
  226. package/dist/policy-packs/expand.js.map +1 -1
  227. package/dist/policy-packs/index.d.ts +3 -3
  228. package/dist/policy-packs/index.js +2 -2
  229. package/dist/policy-packs/index.js.map +1 -1
  230. package/dist/policy-packs/registry.d.ts +9 -38
  231. package/dist/policy-packs/registry.js +5 -65
  232. package/dist/policy-packs/registry.js.map +1 -1
  233. package/dist/policy-packs/runtime.d.ts +0 -4
  234. package/dist/policy-packs/runtime.js +9 -22
  235. package/dist/policy-packs/runtime.js.map +1 -1
  236. package/dist/policy-packs/types.d.ts +0 -19
  237. package/dist/policy-packs/ux-compare.d.ts +1 -11
  238. package/dist/policy-packs/ux-compare.js +6 -42
  239. package/dist/policy-packs/ux-compare.js.map +1 -1
  240. package/dist/policy-packs/ux-drift-check.d.ts +5 -5
  241. package/dist/policy-packs/ux-drift-check.js +17 -22
  242. package/dist/policy-packs/ux-drift-check.js.map +1 -1
  243. package/dist/policy-packs/version-check.d.ts +5 -26
  244. package/dist/policy-packs/version-check.js +19 -74
  245. package/dist/policy-packs/version-check.js.map +1 -1
  246. package/dist/probes/memory.d.ts +1 -1
  247. package/dist/probes/memory.js +1 -1
  248. package/dist/probes/memory.js.map +1 -1
  249. package/dist/runtime/agent-facing.d.ts +9 -0
  250. package/dist/runtime/agent-facing.js +28 -14
  251. package/dist/runtime/agent-facing.js.map +1 -1
  252. package/dist/runtime/bounded-text.d.ts +15 -0
  253. package/dist/runtime/bounded-text.js +27 -0
  254. package/dist/runtime/bounded-text.js.map +1 -0
  255. package/dist/runtime/git-branch.d.ts +125 -0
  256. package/dist/runtime/git-branch.js +381 -0
  257. package/dist/runtime/git-branch.js.map +1 -0
  258. package/dist/runtime/hermetic-spawn-guard.d.ts +2 -2
  259. package/dist/runtime/hermetic-spawn-guard.js +24 -34
  260. package/dist/runtime/hermetic-spawn-guard.js.map +1 -1
  261. package/dist/runtime/home-dir.js +3 -2
  262. package/dist/runtime/home-dir.js.map +1 -1
  263. package/dist/runtime/tool-name-aliases.d.ts +0 -6
  264. package/dist/runtime/tool-name-aliases.js +5 -18
  265. package/dist/runtime/tool-name-aliases.js.map +1 -1
  266. package/dist/schema/grounding.d.ts +7 -54
  267. package/dist/schema/grounding.js +10 -12
  268. package/dist/schema/grounding.js.map +1 -1
  269. package/dist/schema/hooks.d.ts +39 -136
  270. package/dist/schema/hooks.js +3 -6
  271. package/dist/schema/hooks.js.map +1 -1
  272. package/dist/schema/index.d.ts +114 -3828
  273. package/dist/schema/index.js +41 -80
  274. package/dist/schema/index.js.map +1 -1
  275. package/dist/schema/memory.d.ts +54 -131
  276. package/dist/schema/memory.js +2 -2
  277. package/dist/schema/memory.js.map +1 -1
  278. package/dist/schema/policy-packs.d.ts +3 -45
  279. package/dist/schema/policy-packs.js +7 -13
  280. package/dist/schema/policy-packs.js.map +1 -1
  281. package/dist/schema/policy-ux.d.ts +7 -0
  282. package/dist/schema/policy-ux.js +18 -0
  283. package/dist/schema/policy-ux.js.map +1 -0
  284. package/dist/schema/removed-keys.d.ts +185 -0
  285. package/dist/schema/removed-keys.js +531 -0
  286. package/dist/schema/removed-keys.js.map +1 -0
  287. package/dist/schema/tools.d.ts +30 -268
  288. package/dist/schema/tools.js +4 -4
  289. package/dist/schema/tools.js.map +1 -1
  290. package/package.json +5 -16
  291. package/dist/cli/approve/branch-protection.d.ts +0 -69
  292. package/dist/cli/approve/branch-protection.js +0 -144
  293. package/dist/cli/approve/branch-protection.js.map +0 -1
  294. package/dist/cli/approve/risk.d.ts +0 -112
  295. package/dist/cli/approve/risk.js +0 -197
  296. package/dist/cli/approve/risk.js.map +0 -1
  297. package/dist/cli/approve/stdin-report.d.ts +0 -57
  298. package/dist/cli/approve/stdin-report.js +0 -145
  299. package/dist/cli/approve/stdin-report.js.map +0 -1
  300. package/dist/cli/approve/understanding.d.ts +0 -410
  301. package/dist/cli/approve/understanding.js +0 -996
  302. package/dist/cli/approve/understanding.js.map +0 -1
  303. package/dist/cli/audit.d.ts +0 -80
  304. package/dist/cli/audit.js +0 -252
  305. package/dist/cli/audit.js.map +0 -1
  306. package/dist/cli/delegate/index.d.ts +0 -76
  307. package/dist/cli/delegate/index.js +0 -443
  308. package/dist/cli/delegate/index.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/rogue-ledger.d.ts +0 -53
  319. package/dist/cli/doctor/rogue-ledger.js +0 -153
  320. package/dist/cli/doctor/rogue-ledger.js.map +0 -1
  321. package/dist/cli/doctor/session-start-preflight-setup-version.d.ts +0 -83
  322. package/dist/cli/doctor/session-start-preflight-setup-version.js +0 -114
  323. package/dist/cli/doctor/session-start-preflight-setup-version.js.map +0 -1
  324. package/dist/cli/doctor/settings-drift.d.ts +0 -25
  325. package/dist/cli/doctor/settings-drift.js +0 -213
  326. package/dist/cli/doctor/settings-drift.js.map +0 -1
  327. package/dist/cli/doctor/toolchain-parity.d.ts +0 -63
  328. package/dist/cli/doctor/toolchain-parity.js +0 -154
  329. package/dist/cli/doctor/toolchain-parity.js.map +0 -1
  330. package/dist/cli/doctor/ug-auto-approvals.d.ts +0 -40
  331. package/dist/cli/doctor/ug-auto-approvals.js +0 -91
  332. package/dist/cli/doctor/ug-auto-approvals.js.map +0 -1
  333. package/dist/cli/doctor/ug-delegations.d.ts +0 -26
  334. package/dist/cli/doctor/ug-delegations.js +0 -121
  335. package/dist/cli/doctor/ug-delegations.js.map +0 -1
  336. package/dist/cli/doctor/ug-inflight.d.ts +0 -35
  337. package/dist/cli/doctor/ug-inflight.js +0 -57
  338. package/dist/cli/doctor/ug-inflight.js.map +0 -1
  339. package/dist/cli/doctor/understanding-mode-env.d.ts +0 -51
  340. package/dist/cli/doctor/understanding-mode-env.js +0 -98
  341. package/dist/cli/doctor/understanding-mode-env.js.map +0 -1
  342. package/dist/cli/dry-run.d.ts +0 -46
  343. package/dist/cli/dry-run.js +0 -250
  344. package/dist/cli/dry-run.js.map +0 -1
  345. package/dist/cli/event-input.d.ts +0 -28
  346. package/dist/cli/event-input.js +0 -73
  347. package/dist/cli/event-input.js.map +0 -1
  348. package/dist/cli/explain-action.d.ts +0 -20
  349. package/dist/cli/explain-action.js +0 -27
  350. package/dist/cli/explain-action.js.map +0 -1
  351. package/dist/cli/explain-policy.d.ts +0 -135
  352. package/dist/cli/explain-policy.js +0 -266
  353. package/dist/cli/explain-policy.js.map +0 -1
  354. package/dist/cli/explain.d.ts +0 -31
  355. package/dist/cli/explain.js +0 -159
  356. package/dist/cli/explain.js.map +0 -1
  357. package/dist/cli/gc/index.d.ts +0 -63
  358. package/dist/cli/gc/index.js +0 -566
  359. package/dist/cli/gc/index.js.map +0 -1
  360. package/dist/cli/pack/approve-escape.d.ts +0 -19
  361. package/dist/cli/pack/approve-escape.js +0 -190
  362. package/dist/cli/pack/approve-escape.js.map +0 -1
  363. package/dist/cli/pack/auto-approve-path.d.ts +0 -146
  364. package/dist/cli/pack/auto-approve-path.js +0 -462
  365. package/dist/cli/pack/auto-approve-path.js.map +0 -1
  366. package/dist/cli/pack/hook-codex-post-tool-use.d.ts +0 -25
  367. package/dist/cli/pack/hook-codex-post-tool-use.js +0 -160
  368. package/dist/cli/pack/hook-codex-post-tool-use.js.map +0 -1
  369. package/dist/cli/pack/hook-codex-pre-tool-use.d.ts +0 -48
  370. package/dist/cli/pack/hook-codex-pre-tool-use.js +0 -474
  371. package/dist/cli/pack/hook-codex-pre-tool-use.js.map +0 -1
  372. package/dist/cli/pack/hook-codex-stop.d.ts +0 -35
  373. package/dist/cli/pack/hook-codex-stop.js +0 -329
  374. package/dist/cli/pack/hook-codex-stop.js.map +0 -1
  375. package/dist/cli/pack/hook-codex-user-prompt-submit.d.ts +0 -24
  376. package/dist/cli/pack/hook-codex-user-prompt-submit.js +0 -93
  377. package/dist/cli/pack/hook-codex-user-prompt-submit.js.map +0 -1
  378. package/dist/cli/pack/hook-post-merge-gate-record.d.ts +0 -37
  379. package/dist/cli/pack/hook-post-merge-gate-record.js +0 -190
  380. package/dist/cli/pack/hook-post-merge-gate-record.js.map +0 -1
  381. package/dist/cli/pack/hook-post-merge-gate.d.ts +0 -34
  382. package/dist/cli/pack/hook-post-merge-gate.js +0 -277
  383. package/dist/cli/pack/hook-post-merge-gate.js.map +0 -1
  384. package/dist/cli/pack/hook-post-tool-use.d.ts +0 -45
  385. package/dist/cli/pack/hook-post-tool-use.js +0 -137
  386. package/dist/cli/pack/hook-post-tool-use.js.map +0 -1
  387. package/dist/cli/pack/hook-pre-tool-use.d.ts +0 -92
  388. package/dist/cli/pack/hook-pre-tool-use.js +0 -1328
  389. package/dist/cli/pack/hook-pre-tool-use.js.map +0 -1
  390. package/dist/cli/pack/hook-runtime-reality.d.ts +0 -63
  391. package/dist/cli/pack/hook-runtime-reality.js +0 -210
  392. package/dist/cli/pack/hook-runtime-reality.js.map +0 -1
  393. package/dist/cli/pack/hook-solution-acceptance-writeguard.d.ts +0 -32
  394. package/dist/cli/pack/hook-solution-acceptance-writeguard.js +0 -337
  395. package/dist/cli/pack/hook-solution-acceptance-writeguard.js.map +0 -1
  396. package/dist/cli/pack/hook-solution-acceptance.d.ts +0 -157
  397. package/dist/cli/pack/hook-solution-acceptance.js +0 -530
  398. package/dist/cli/pack/hook-solution-acceptance.js.map +0 -1
  399. package/dist/cli/pack/hook-stay-in-scope.d.ts +0 -37
  400. package/dist/cli/pack/hook-stay-in-scope.js +0 -128
  401. package/dist/cli/pack/hook-stay-in-scope.js.map +0 -1
  402. package/dist/cli/pack/hook-subagent-start.d.ts +0 -23
  403. package/dist/cli/pack/hook-subagent-start.js +0 -88
  404. package/dist/cli/pack/hook-subagent-start.js.map +0 -1
  405. package/dist/cli/pack/hook-subagent-stop.d.ts +0 -19
  406. package/dist/cli/pack/hook-subagent-stop.js +0 -41
  407. package/dist/cli/pack/hook-subagent-stop.js.map +0 -1
  408. package/dist/cli/pack/hook-track-active-claim.d.ts +0 -27
  409. package/dist/cli/pack/hook-track-active-claim.js +0 -275
  410. package/dist/cli/pack/hook-track-active-claim.js.map +0 -1
  411. package/dist/cli/pack/transcript-report-scan.d.ts +0 -71
  412. package/dist/cli/pack/transcript-report-scan.js +0 -359
  413. package/dist/cli/pack/transcript-report-scan.js.map +0 -1
  414. package/dist/cli/pack/understanding-report-schema-hint.d.ts +0 -26
  415. package/dist/cli/pack/understanding-report-schema-hint.js +0 -120
  416. package/dist/cli/pack/understanding-report-schema-hint.js.map +0 -1
  417. package/dist/cli/pack/upgrade.d.ts +0 -32
  418. package/dist/cli/pack/upgrade.js +0 -273
  419. package/dist/cli/pack/upgrade.js.map +0 -1
  420. package/dist/cli/pause/index.d.ts +0 -113
  421. package/dist/cli/pause/index.js +0 -251
  422. package/dist/cli/pause/index.js.map +0 -1
  423. package/dist/cli/pause-check.d.ts +0 -22
  424. package/dist/cli/pause-check.js +0 -54
  425. package/dist/cli/pause-check.js.map +0 -1
  426. package/dist/cli/policy/intercept.d.ts +0 -233
  427. package/dist/cli/policy/intercept.js +0 -1020
  428. package/dist/cli/policy/intercept.js.map +0 -1
  429. package/dist/cli/policy/risk-envelope-enrichment.d.ts +0 -40
  430. package/dist/cli/policy/risk-envelope-enrichment.js +0 -108
  431. package/dist/cli/policy/risk-envelope-enrichment.js.map +0 -1
  432. package/dist/cli/record/index.d.ts +0 -81
  433. package/dist/cli/record/index.js +0 -348
  434. package/dist/cli/record/index.js.map +0 -1
  435. package/dist/cli/resolve-env.d.ts +0 -32
  436. package/dist/cli/resolve-env.js +0 -47
  437. package/dist/cli/resolve-env.js.map +0 -1
  438. package/dist/cli/session-export/index.d.ts +0 -46
  439. package/dist/cli/session-export/index.js +0 -169
  440. package/dist/cli/session-export/index.js.map +0 -1
  441. package/dist/cli/session-export/redact.d.ts +0 -22
  442. package/dist/cli/session-export/redact.js +0 -47
  443. package/dist/cli/session-export/redact.js.map +0 -1
  444. package/dist/cli/session-export/transcript.d.ts +0 -24
  445. package/dist/cli/session-export/transcript.js +0 -164
  446. package/dist/cli/session-export/transcript.js.map +0 -1
  447. package/dist/cli/session-start/branch-check.d.ts +0 -18
  448. package/dist/cli/session-start/branch-check.js +0 -140
  449. package/dist/cli/session-start/branch-check.js.map +0 -1
  450. package/dist/cli/session-start/index.d.ts +0 -121
  451. package/dist/cli/session-start/index.js +0 -591
  452. package/dist/cli/session-start/index.js.map +0 -1
  453. package/dist/cli/session-start/shared-options.d.ts +0 -103
  454. package/dist/cli/session-start/shared-options.js +0 -107
  455. package/dist/cli/session-start/shared-options.js.map +0 -1
  456. package/dist/cli/session-start/stale-base-check.d.ts +0 -46
  457. package/dist/cli/session-start/stale-base-check.js +0 -352
  458. package/dist/cli/session-start/stale-base-check.js.map +0 -1
  459. package/dist/cli/session-start/toolchain-parity.d.ts +0 -267
  460. package/dist/cli/session-start/toolchain-parity.js +0 -797
  461. package/dist/cli/session-start/toolchain-parity.js.map +0 -1
  462. package/dist/cli/smoke/assertions.d.ts +0 -46
  463. package/dist/cli/smoke/assertions.js +0 -170
  464. package/dist/cli/smoke/assertions.js.map +0 -1
  465. package/dist/cli/smoke/index.d.ts +0 -76
  466. package/dist/cli/smoke/index.js +0 -245
  467. package/dist/cli/smoke/index.js.map +0 -1
  468. package/dist/cli/smoke/runner.d.ts +0 -55
  469. package/dist/cli/smoke/runner.js +0 -134
  470. package/dist/cli/smoke/runner.js.map +0 -1
  471. package/dist/cli/smoke/stream-parser.d.ts +0 -65
  472. package/dist/cli/smoke/stream-parser.js +0 -115
  473. package/dist/cli/smoke/stream-parser.js.map +0 -1
  474. package/dist/cli/test-risk.d.ts +0 -26
  475. package/dist/cli/test-risk.js +0 -34
  476. package/dist/cli/test-risk.js.map +0 -1
  477. package/dist/io/display-path.d.ts +0 -11
  478. package/dist/io/display-path.js +0 -29
  479. package/dist/io/display-path.js.map +0 -1
  480. package/dist/io/duration.d.ts +0 -5
  481. package/dist/io/duration.js +0 -50
  482. package/dist/io/duration.js.map +0 -1
  483. package/dist/io/extract.d.ts +0 -79
  484. package/dist/io/extract.js +0 -226
  485. package/dist/io/extract.js.map +0 -1
  486. package/dist/io/ledger-record.d.ts +0 -83
  487. package/dist/io/ledger-record.js +0 -301
  488. package/dist/io/ledger-record.js.map +0 -1
  489. package/dist/io/read-json-dir-entries.d.ts +0 -36
  490. package/dist/io/read-json-dir-entries.js +0 -48
  491. package/dist/io/read-json-dir-entries.js.map +0 -1
  492. package/dist/io/safe-json-parse.d.ts +0 -5
  493. package/dist/io/safe-json-parse.js +0 -21
  494. package/dist/io/safe-json-parse.js.map +0 -1
  495. package/dist/policies/index.d.ts +0 -5
  496. package/dist/policies/index.js +0 -6
  497. package/dist/policies/index.js.map +0 -1
  498. package/dist/policies/ledger-client.d.ts +0 -113
  499. package/dist/policies/ledger-client.js +0 -500
  500. package/dist/policies/ledger-client.js.map +0 -1
  501. package/dist/policies/producers.d.ts +0 -12
  502. package/dist/policies/producers.js +0 -61
  503. package/dist/policies/producers.js.map +0 -1
  504. package/dist/policies/requires.d.ts +0 -75
  505. package/dist/policies/requires.js +0 -240
  506. package/dist/policies/requires.js.map +0 -1
  507. package/dist/policies/timestamp.d.ts +0 -14
  508. package/dist/policies/timestamp.js +0 -36
  509. package/dist/policies/timestamp.js.map +0 -1
  510. package/dist/policy-packs/builtin/permission-profiles.d.ts +0 -11
  511. package/dist/policy-packs/builtin/permission-profiles.js +0 -74
  512. package/dist/policy-packs/builtin/permission-profiles.js.map +0 -1
  513. package/dist/policy-packs/builtin/post-merge-gate-runtime.d.ts +0 -286
  514. package/dist/policy-packs/builtin/post-merge-gate-runtime.js +0 -397
  515. package/dist/policy-packs/builtin/post-merge-gate-runtime.js.map +0 -1
  516. package/dist/policy-packs/builtin/post-merge-gate.d.ts +0 -56
  517. package/dist/policy-packs/builtin/post-merge-gate.js +0 -347
  518. package/dist/policy-packs/builtin/post-merge-gate.js.map +0 -1
  519. package/dist/policy-packs/builtin/solution-acceptance-reconnect.d.ts +0 -50
  520. package/dist/policy-packs/builtin/solution-acceptance-reconnect.js +0 -151
  521. package/dist/policy-packs/builtin/solution-acceptance-reconnect.js.map +0 -1
  522. package/dist/policy-packs/builtin/solution-acceptance-runtime.d.ts +0 -323
  523. package/dist/policy-packs/builtin/solution-acceptance-runtime.js +0 -672
  524. package/dist/policy-packs/builtin/solution-acceptance-runtime.js.map +0 -1
  525. package/dist/policy-packs/builtin/solution-acceptance.d.ts +0 -45
  526. package/dist/policy-packs/builtin/solution-acceptance.js +0 -226
  527. package/dist/policy-packs/builtin/solution-acceptance.js.map +0 -1
  528. package/dist/policy-packs/builtin/understanding-before-execution/active-claim.d.ts +0 -25
  529. package/dist/policy-packs/builtin/understanding-before-execution/active-claim.js +0 -94
  530. package/dist/policy-packs/builtin/understanding-before-execution/active-claim.js.map +0 -1
  531. package/dist/policy-packs/builtin/understanding-before-execution/auto-approve-default.d.ts +0 -35
  532. package/dist/policy-packs/builtin/understanding-before-execution/auto-approve-default.js +0 -86
  533. package/dist/policy-packs/builtin/understanding-before-execution/auto-approve-default.js.map +0 -1
  534. package/dist/policy-packs/builtin/understanding-before-execution/auto-approve.d.ts +0 -210
  535. package/dist/policy-packs/builtin/understanding-before-execution/auto-approve.js +0 -361
  536. package/dist/policy-packs/builtin/understanding-before-execution/auto-approve.js.map +0 -1
  537. package/dist/policy-packs/builtin/understanding-before-execution/delegation-markers.d.ts +0 -304
  538. package/dist/policy-packs/builtin/understanding-before-execution/delegation-markers.js +0 -734
  539. package/dist/policy-packs/builtin/understanding-before-execution/delegation-markers.js.map +0 -1
  540. package/dist/policy-packs/builtin/understanding-before-execution/expiry-reason.d.ts +0 -36
  541. package/dist/policy-packs/builtin/understanding-before-execution/expiry-reason.js +0 -73
  542. package/dist/policy-packs/builtin/understanding-before-execution/expiry-reason.js.map +0 -1
  543. package/dist/policy-packs/builtin/understanding-before-execution/index.d.ts +0 -19
  544. package/dist/policy-packs/builtin/understanding-before-execution/index.js +0 -83
  545. package/dist/policy-packs/builtin/understanding-before-execution/index.js.map +0 -1
  546. package/dist/policy-packs/builtin/understanding-before-execution/inflight-records.d.ts +0 -135
  547. package/dist/policy-packs/builtin/understanding-before-execution/inflight-records.js +0 -618
  548. package/dist/policy-packs/builtin/understanding-before-execution/inflight-records.js.map +0 -1
  549. package/dist/policy-packs/builtin/understanding-before-execution/ledger.d.ts +0 -25
  550. package/dist/policy-packs/builtin/understanding-before-execution/ledger.js +0 -56
  551. package/dist/policy-packs/builtin/understanding-before-execution/ledger.js.map +0 -1
  552. package/dist/policy-packs/builtin/understanding-before-execution/lifecycle.d.ts +0 -20
  553. package/dist/policy-packs/builtin/understanding-before-execution/lifecycle.js +0 -93
  554. package/dist/policy-packs/builtin/understanding-before-execution/lifecycle.js.map +0 -1
  555. package/dist/policy-packs/builtin/understanding-before-execution/markers.d.ts +0 -126
  556. package/dist/policy-packs/builtin/understanding-before-execution/markers.js +0 -245
  557. package/dist/policy-packs/builtin/understanding-before-execution/markers.js.map +0 -1
  558. package/dist/policy-packs/builtin/understanding-before-execution/measured-permission-modes.d.ts +0 -29
  559. package/dist/policy-packs/builtin/understanding-before-execution/measured-permission-modes.js +0 -82
  560. package/dist/policy-packs/builtin/understanding-before-execution/measured-permission-modes.js.map +0 -1
  561. package/dist/policy-packs/builtin/understanding-before-execution/permission-mode-observations.d.ts +0 -71
  562. package/dist/policy-packs/builtin/understanding-before-execution/permission-mode-observations.js +0 -175
  563. package/dist/policy-packs/builtin/understanding-before-execution/permission-mode-observations.js.map +0 -1
  564. package/dist/policy-packs/builtin/understanding-before-execution/persisted-reports.d.ts +0 -620
  565. package/dist/policy-packs/builtin/understanding-before-execution/persisted-reports.js +0 -1047
  566. package/dist/policy-packs/builtin/understanding-before-execution/persisted-reports.js.map +0 -1
  567. package/dist/policy-packs/builtin/understanding-before-execution/post-tool-use-boundary.d.ts +0 -128
  568. package/dist/policy-packs/builtin/understanding-before-execution/post-tool-use-boundary.js +0 -213
  569. package/dist/policy-packs/builtin/understanding-before-execution/post-tool-use-boundary.js.map +0 -1
  570. package/dist/policy-packs/builtin/understanding-before-execution/stay-in-scope-config.d.ts +0 -129
  571. package/dist/policy-packs/builtin/understanding-before-execution/stay-in-scope-config.js +0 -166
  572. package/dist/policy-packs/builtin/understanding-before-execution/stay-in-scope-config.js.map +0 -1
  573. package/dist/policy-packs/builtin/understanding-before-execution/task-markers.d.ts +0 -164
  574. package/dist/policy-packs/builtin/understanding-before-execution/task-markers.js +0 -275
  575. package/dist/policy-packs/builtin/understanding-before-execution/task-markers.js.map +0 -1
  576. package/dist/policy-packs/builtin/understanding-before-execution-runtime.d.ts +0 -1
  577. package/dist/policy-packs/builtin/understanding-before-execution-runtime.js +0 -10
  578. package/dist/policy-packs/builtin/understanding-before-execution-runtime.js.map +0 -1
  579. package/dist/policy-packs/builtin/understanding-before-execution.d.ts +0 -526
  580. package/dist/policy-packs/builtin/understanding-before-execution.js +0 -1074
  581. package/dist/policy-packs/builtin/understanding-before-execution.js.map +0 -1
  582. package/dist/policy-packs/permission-translator.d.ts +0 -9
  583. package/dist/policy-packs/permission-translator.js +0 -76
  584. package/dist/policy-packs/permission-translator.js.map +0 -1
  585. package/dist/runtime/action-envelope.d.ts +0 -64
  586. package/dist/runtime/action-envelope.js +0 -46
  587. package/dist/runtime/action-envelope.js.map +0 -1
  588. package/dist/runtime/approval-signing.d.ts +0 -111
  589. package/dist/runtime/approval-signing.js +0 -384
  590. package/dist/runtime/approval-signing.js.map +0 -1
  591. package/dist/runtime/bash-match-facts.d.ts +0 -60
  592. package/dist/runtime/bash-match-facts.js +0 -196
  593. package/dist/runtime/bash-match-facts.js.map +0 -1
  594. package/dist/runtime/bash-match-registry.d.ts +0 -112
  595. package/dist/runtime/bash-match-registry.js +0 -406
  596. package/dist/runtime/bash-match-registry.js.map +0 -1
  597. package/dist/runtime/bash-prefix-parse.d.ts +0 -31
  598. package/dist/runtime/bash-prefix-parse.js +0 -576
  599. package/dist/runtime/bash-prefix-parse.js.map +0 -1
  600. package/dist/runtime/command-normalize.d.ts +0 -658
  601. package/dist/runtime/command-normalize.js +0 -2410
  602. package/dist/runtime/command-normalize.js.map +0 -1
  603. package/dist/runtime/deletion-target-resolve.d.ts +0 -28
  604. package/dist/runtime/deletion-target-resolve.js +0 -1078
  605. package/dist/runtime/deletion-target-resolve.js.map +0 -1
  606. package/dist/runtime/destructive-shell-floor.d.ts +0 -19
  607. package/dist/runtime/destructive-shell-floor.js +0 -611
  608. package/dist/runtime/destructive-shell-floor.js.map +0 -1
  609. package/dist/runtime/environment-resolver.d.ts +0 -36
  610. package/dist/runtime/environment-resolver.js +0 -138
  611. package/dist/runtime/environment-resolver.js.map +0 -1
  612. package/dist/runtime/git-context.d.ts +0 -201
  613. package/dist/runtime/git-context.js +0 -422
  614. package/dist/runtime/git-context.js.map +0 -1
  615. package/dist/runtime/index.d.ts +0 -12
  616. package/dist/runtime/index.js +0 -13
  617. package/dist/runtime/index.js.map +0 -1
  618. package/dist/runtime/intercept.d.ts +0 -494
  619. package/dist/runtime/intercept.js +0 -1313
  620. package/dist/runtime/intercept.js.map +0 -1
  621. package/dist/runtime/kube-context.d.ts +0 -16
  622. package/dist/runtime/kube-context.js +0 -63
  623. package/dist/runtime/kube-context.js.map +0 -1
  624. package/dist/runtime/kubectl-target-parse.d.ts +0 -31
  625. package/dist/runtime/kubectl-target-parse.js +0 -249
  626. package/dist/runtime/kubectl-target-parse.js.map +0 -1
  627. package/dist/runtime/ledger-add.d.ts +0 -16
  628. package/dist/runtime/ledger-add.js +0 -150
  629. package/dist/runtime/ledger-add.js.map +0 -1
  630. package/dist/runtime/ledger-writer.d.ts +0 -27
  631. package/dist/runtime/ledger-writer.js +0 -46
  632. package/dist/runtime/ledger-writer.js.map +0 -1
  633. package/dist/runtime/pause-sentinel.d.ts +0 -60
  634. package/dist/runtime/pause-sentinel.js +0 -156
  635. package/dist/runtime/pause-sentinel.js.map +0 -1
  636. package/dist/runtime/pending-approval.d.ts +0 -23
  637. package/dist/runtime/pending-approval.js +0 -67
  638. package/dist/runtime/pending-approval.js.map +0 -1
  639. package/dist/runtime/read-only-bash.d.ts +0 -141
  640. package/dist/runtime/read-only-bash.js +0 -2204
  641. package/dist/runtime/read-only-bash.js.map +0 -1
  642. package/dist/runtime/recovery-git-commit.d.ts +0 -22
  643. package/dist/runtime/recovery-git-commit.js +0 -284
  644. package/dist/runtime/recovery-git-commit.js.map +0 -1
  645. package/dist/runtime/reject-malformed-session-id.d.ts +0 -8
  646. package/dist/runtime/reject-malformed-session-id.js +0 -16
  647. package/dist/runtime/reject-malformed-session-id.js.map +0 -1
  648. package/dist/runtime/risk-classifier.d.ts +0 -38
  649. package/dist/runtime/risk-classifier.js +0 -311
  650. package/dist/runtime/risk-classifier.js.map +0 -1
  651. package/dist/runtime/session-id.d.ts +0 -113
  652. package/dist/runtime/session-id.js +0 -193
  653. package/dist/runtime/session-id.js.map +0 -1
  654. package/dist/runtime/shell-word.d.ts +0 -62
  655. package/dist/runtime/shell-word.js +0 -410
  656. package/dist/runtime/shell-word.js.map +0 -1
  657. package/dist/runtime/task-providers/agent-tasks.d.ts +0 -103
  658. package/dist/runtime/task-providers/agent-tasks.js +0 -245
  659. package/dist/runtime/task-providers/agent-tasks.js.map +0 -1
  660. package/dist/runtime/when-eval.d.ts +0 -62
  661. package/dist/runtime/when-eval.js +0 -212
  662. package/dist/runtime/when-eval.js.map +0 -1
  663. package/dist/runtime/workflow-policies.d.ts +0 -207
  664. package/dist/runtime/workflow-policies.js +0 -596
  665. package/dist/runtime/workflow-policies.js.map +0 -1
  666. package/dist/schema/audit.d.ts +0 -71
  667. package/dist/schema/audit.js +0 -32
  668. package/dist/schema/audit.js.map +0 -1
  669. package/dist/schema/doctor.d.ts +0 -25
  670. package/dist/schema/doctor.js +0 -23
  671. package/dist/schema/doctor.js.map +0 -1
  672. package/dist/schema/environments.d.ts +0 -215
  673. package/dist/schema/environments.js +0 -101
  674. package/dist/schema/environments.js.map +0 -1
  675. package/dist/schema/extract.d.ts +0 -9
  676. package/dist/schema/extract.js +0 -86
  677. package/dist/schema/extract.js.map +0 -1
  678. package/dist/schema/permission-profiles.d.ts +0 -2292
  679. package/dist/schema/permission-profiles.js +0 -60
  680. package/dist/schema/permission-profiles.js.map +0 -1
  681. package/dist/schema/policies.d.ts +0 -974
  682. package/dist/schema/policies.js +0 -298
  683. package/dist/schema/policies.js.map +0 -1
  684. package/dist/schema/requires.d.ts +0 -131
  685. package/dist/schema/requires.js +0 -88
  686. package/dist/schema/requires.js.map +0 -1
  687. package/dist/schema/risk.d.ts +0 -144
  688. package/dist/schema/risk.js +0 -194
  689. package/dist/schema/risk.js.map +0 -1
  690. package/dist/schema/session-start-preflight.d.ts +0 -10
  691. package/dist/schema/session-start-preflight.js +0 -106
  692. package/dist/schema/session-start-preflight.js.map +0 -1
  693. package/dist/schema/stale-base-check.d.ts +0 -18
  694. package/dist/schema/stale-base-check.js +0 -37
  695. package/dist/schema/stale-base-check.js.map +0 -1
  696. package/dist/schema/toolchain-parity.d.ts +0 -21
  697. package/dist/schema/toolchain-parity.js +0 -48
  698. package/dist/schema/toolchain-parity.js.map +0 -1
  699. package/dist/schema/workflows.d.ts +0 -519
  700. package/dist/schema/workflows.js +0 -81
  701. package/dist/schema/workflows.js.map +0 -1
  702. package/scripts/runtime-reality-docker-probe.mjs +0 -71
@@ -1,347 +0,0 @@
1
- // Builtin Policy Pack: `post-merge-gate`.
2
- //
3
- // Catches the "kept working on a branch after it was already merged"
4
- // pattern: an agent (or operator) merges a PR via `gh pr merge`, then
5
- // keeps committing / pushing / rebasing on the SAME local checkout
6
- // without switching back to the default branch first — silently
7
- // building on top of a commit that is already integrated, which either
8
- // produces a confusing duplicate-merge PR or loses the new work off the
9
- // side of a branch nobody looks at again.
10
- //
11
- // Mechanics, mirroring `branch-protection` (see that pack's header for
12
- // the identical two-hook shape):
13
- //
14
- // 1. PostToolUse producer (`harness pack hook post-merge-gate-record`)
15
- // watches every Bash call and, ONLY when the command matched
16
- // `gh pr merge` AND the merge is CONFIRMED, writes a
17
- // `post-merge-gate:merged:<repo>:<branch>:<sha>` fact (plus PR
18
- // number and timestamp, audit-only) to the evidence ledger — `sha`
19
- // being the LOCAL branch tip observed right after the merge, which
20
- // is the exact commit that got merged (`gh pr merge` merges on the
21
- // remote side; it does not move the local tip). Confirmation is
22
- // DUAL-CONTRACT (payload-reality follow-up, 2026-07): a `tool_output.
23
- // exit_code === 0` (Contract A) is NOT reliably present — live
24
- // verification against a real Claude Code 2.1.218 install found the
25
- // PostToolUse Bash payload carries no `tool_output` / exit-code field
26
- // at all, only `tool_response` (`{ stdout, stderr, interrupted,
27
- // isImage, noOutputExpected }`) — so a `gh pr merge` success sentence
28
- // match against `tool_response` (Contract B) is the fallback that
29
- // makes the producer fire at all on that install. See
30
- // `resolveMergeConfirmation` in post-merge-gate-runtime.ts for the
31
- // exact dual-contract / "Contract A wins" ordering. Payload reads are
32
- // defensive throughout: an unexpected shape on either contract writes
33
- // nothing.
34
- //
35
- // 2. PreToolUse blocker (`harness pack hook post-merge-gate`) checks a
36
- // CURATED list of history-mutating commands (see
37
- // post-merge-gate-runtime.ts for the exact list) and denies them
38
- // when the CURRENT branch tip still equals a recorded merged tip
39
- // for this repo+branch — an exact sha match, not ancestry, so a new
40
- // commit (moving the tip) or a recycled branch name (a different
41
- // tip) both fall silently outside the gate. GATE-ELIGIBILITY is
42
- // classified FIRST, before any manifest load or ledger query, so
43
- // the recovery vocabulary (git switch/checkout/pull/fetch, git
44
- // branch -d/-D, git stash list/show, any `harness ...` command) can
45
- // never be starved by an unrelated failure — none of those verbs is
46
- // a curated mutation. Task 19356be7: DENY WINS when one command
47
- // chains recovery vocabulary with a curated mutation; the escape
48
- // list no longer short-circuits the whole command string.
49
- //
50
- // Fails OPEN when the ledger is unreachable (unlike branch-protection's
51
- // fail-closed posture): without the ledger, "merged" and "not merged"
52
- // are indistinguishable, and fail-closed here would block ordinary git
53
- // history work on every branch whenever grounding-mcp hiccups. This pack
54
- // is advisory-strength against a hostile agent, like the other
55
- // `requires.ledger_tag`-style gates (docs/okf/evidence-ledger-trust-boundary.md);
56
- // see post-merge-gate-runtime.ts's header for the full rationale.
57
- //
58
- // No auto-switch: the blocker only ever recommends the recovery commands
59
- // in its deny message, never runs them (operator/agent decides).
60
- //
61
- // Enabled per-installation via `harness pack add post-merge-gate`. The
62
- // `full` init template wires it with `enabled: false` (opt-in — a fresh,
63
- // higher-risk gate; see templates.ts for the rationale), unlike
64
- // branch-protection's default-enabled precedent.
65
- //
66
- // Claude Code only in v1 (no Codex or opencode adapter): both hooks
67
- // match on the `Bash` tool name and classify by command text, a
68
- // mechanism that has no established Codex-adapter parity yet (mirrors
69
- // `solution-acceptance`, which ships with no Codex variant either) and
70
- // no meaning at all under opencode (no declarative hook/event field to
71
- // match against). `resolve()` warns whenever `runtime !== "claude-code"`
72
- // (batch18 fix-round, task f34eb233 — widened from a codex-only check
73
- // so opencode gets the same warning).
74
- import { z } from "zod";
75
- import { PolicyUxSchema } from "../../schema/policies.js";
76
- import { DEFAULT_RUNTIME } from "../runtime.js";
77
- import { CURATED_MUTATION_BASH_RE, ESCAPE_GIT_BASH_RE, ESCAPE_HARNESS_BASH_RE, GH_MERGE_SUCCESS_RE, GH_PR_MERGE_BASH_RE, MERGED_TAG_PREFIX, PACK_NAME, } from "./post-merge-gate-runtime.js";
78
- export { PACK_NAME };
79
- /**
80
- * Zod schema for this pack's `config:` block. Strict by design so
81
- * typo'd keys fail loud at lint time (mirrors sibling packs). `ux` is
82
- * the only operator-tunable key today — the curated mutation list and
83
- * escape allowlist are fixed in v1 (03-decisions.md); a config override
84
- * for either can land as a follow-up if operators need it.
85
- */
86
- export const configSchema = z
87
- .object({
88
- ux: PolicyUxSchema.optional(),
89
- })
90
- .strict();
91
- /**
92
- * Shipped default `config.ux` for this pack. Canonical source for the
93
- * `full` init template and `harness pack reseed` (mirrors
94
- * branch-protection's `defaultUx`): a future wording fix lands here once
95
- * and reaches both a fresh `harness init --template full` and an
96
- * operator running `harness pack reseed post-merge-gate` against an
97
- * already-installed manifest. `${DEFAULT_BRANCH}` is always populated by
98
- * the blocker (falling back to the literal placeholder `<default-branch>`
99
- * when it cannot resolve `origin/HEAD`), never left as an unresolved
100
- * template var.
101
- */
102
- export function defaultUx() {
103
- return {
104
- cannot: "You cannot run ${TOOL_NAME} on branch ${BRANCH} yet — its current tip was already merged.",
105
- required: [
106
- "a branch tip that is not sitting at an already-merged commit (switch off `${BRANCH}`, or move its tip with a new commit)",
107
- ],
108
- run: [
109
- "git switch ${DEFAULT_BRANCH}",
110
- "git pull --ff-only",
111
- "git branch -d ${BRANCH} # optional cleanup",
112
- ],
113
- };
114
- }
115
- const HOOK_NAME_PREFIX = `policy-pack:${PACK_NAME}`;
116
- const PRODUCER_COMMAND = "harness pack hook post-merge-gate-record";
117
- const BLOCKER_COMMAND = "harness pack hook post-merge-gate";
118
- function buildHooks() {
119
- return [
120
- {
121
- name: `${HOOK_NAME_PREFIX}:post-tool-use`,
122
- event: "PostToolUse",
123
- match: "Bash",
124
- command: PRODUCER_COMMAND,
125
- blocking: false,
126
- budget_ms: 5000,
127
- description: "Producer: on a `gh pr merge` Bash call that exited 0, write `post-merge-gate:merged:<repo>:<branch>:<sha>` to the evidence ledger. Non-blocking; any failure just leaves the gate silent for that merge.",
128
- },
129
- {
130
- name: `${HOOK_NAME_PREFIX}:pre-tool-use`,
131
- event: "PreToolUse",
132
- match: "Bash",
133
- command: BLOCKER_COMMAND,
134
- blocking: "hard",
135
- // 15000 (task 7bf47554): the blocker's own ledger query
136
- // (queryLedgerByTag, src/cli/pack/hook-post-merge-gate.ts) is bounded
137
- // by the grounding-mcp server's own `health.timeout_ms` (default
138
- // 5000ms) — the same number the old budget_ms=5000 used for the
139
- // outer Claude Code kill-timeout, leaving no margin. This gate
140
- // already fails OPEN by design on a genuinely unreachable ledger
141
- // (unlike branch-protection); raising the outer timeout does not
142
- // change that posture, it only gives a merely-SLOW (not dead) ledger
143
- // room to answer before the outer timeout could fire first and kill
144
- // the subprocess mid-query, consistent with the other ledger-backed
145
- // pack blockers.
146
- budget_ms: 15000,
147
- description: "Blocker: deny curated history-mutating Bash commands (git commit/add/push/merge/rebase/cherry-pick/revert/reset/stash pop|apply, gh pr create/merge) when the current branch tip matches a recorded merged tip. The recovery vocabulary (git switch/checkout/pull/fetch, git branch -d/-D, git stash list/show, any `harness ...` command) always passes as its own command, classified before any manifest or ledger access; chaining one of those with a curated mutation does NOT exempt the mutation. Fails open when the ledger is unreachable.",
148
- },
149
- ];
150
- }
151
- function buildInstructions(pack, runtime) {
152
- const description = pack.description?.trim() ?? "";
153
- return `# Policy Pack: ${PACK_NAME}
154
-
155
- > Operator audit copy. This pack denies curated history-mutating Bash
156
- > commands on a branch whose tip was already merged via \`gh pr merge\`,
157
- > closing the loop on the "kept working on a merged branch" incident
158
- > pattern.
159
-
160
- ## Runtime
161
-
162
- ${runtime}${runtime === "codex"
163
- ? " (UNSUPPORTED — see \"Known gaps\" below; both hooks assume the Claude Code Bash tool surface)"
164
- : runtime === "opencode"
165
- ? " (UNSUPPORTED — see \"Known gaps\" below; opencode has no declarative hook/event wiring, so neither hook is projected into any opencode artefact)"
166
- : ""}
167
-
168
- ## Trigger + signals
169
-
170
- 1. \`PostToolUse\` producer (\`${PRODUCER_COMMAND}\`, blocking: false) on
171
- \`Bash\`: tests \`${GH_PR_MERGE_BASH_RE.source}\` against the raw command
172
- and, only when that misses, against the three normalized forms
173
- (\`normalizeCommand\`, \`normalizeCommandAmpAware\`,
174
- \`normalizeCommandQuoteAware\`), in the same raw-first, lazy order as the
175
- gate. Fires only on a CONFIRMED merge, via either of two contracts
176
- (dual-contract, payload-reality follow-up — real Claude Code shims
177
- have shipped both shapes in the wild):
178
- - **Contract A** — \`tool_output.exit_code\` is the number \`0\`.
179
- - **Contract B** — \`tool_response\` is present with
180
- \`interrupted === false\` AND its \`stdout\`+\`stderr\` contain \`gh pr
181
- merge\`'s own past-tense success sentence: \`${GH_MERGE_SUCCESS_RE.source}\`
182
- (covers all three merge methods: Squashed / Rebased / plain Merged).
183
- Verified against the installed \`gh\` binary (v2.94.0,
184
- \`pkg/cmd/pr/merge/merge.go\` lines 369-376): the line is built as
185
- \`infof("%s %s pull request %s#%d (%s)", icon, action,
186
- ghrepo.FullName(baseRepo), pr.Number, pr.Title)\` — the repo
187
- fullname sits between "pull request" and the PR number, GLUED to
188
- \`#\` with no space (e.g. \`Squashed and merged pull request
189
- owner/repo#65 (title)\`), and \`infof\` writes to \`gh\`'s STDERR,
190
- which is why this contract checks the concatenated
191
- \`stdout\`+\`stderr\`, not stdout alone.
192
- Contract A wins whenever it resolves to ANY definite verdict, success
193
- OR failure — a well-formed non-zero \`exit_code\` short-circuits
194
- WITHOUT consulting Contract B. Contract B is tried only when Contract
195
- A's \`exit_code\` is entirely unresolvable (missing field, wrong
196
- shape, or genuinely absent — as verified live against Claude Code
197
- 2.1.218, whose real PostToolUse Bash payload carries NO \`tool_output\`
198
- / no exit-code field at all, only \`tool_response\`; the
199
- \`tool_output.exit_code\` shape appears to describe a different,
200
- possibly newer, Claude Code contract). Any other shape on either
201
- contract writes NO fact; fail-safe against a false "merged" record.
202
- On a confirmed match, records
203
- \`${MERGED_TAG_PREFIX}:<repo>:<branch>:<sha>[ pr:<n>] at:<iso>\` to the
204
- evidence ledger, where \`<sha>\` is the LOCAL branch tip observed right
205
- after the merge (the exact commit that got merged — \`gh pr merge\`
206
- merges remote-side and does not itself move the local tip). \`<n>\`
207
- prefers extraction from the \`gh pr merge\` command itself, falling
208
- back to the number captured out of the Contract-B success sentence.
209
-
210
- 2. \`PreToolUse\` blocker (\`${BLOCKER_COMMAND}\`, blocking: hard) on
211
- \`Bash\`: checked in this order —
212
- a. **Gate-eligibility classification first, unconditionally** (before
213
- any manifest load or ledger query): the curated mutation matcher
214
- \`${CURATED_MUTATION_BASH_RE.source}\`. Commands it
215
- does not match pass through untouched — that unconditionally covers the whole recovery
216
- vocabulary (\`${ESCAPE_GIT_BASH_RE.source}\` and
217
- \`${ESCAPE_HARNESS_BASH_RE.source}\`), since none of those verbs are
218
- curated mutations. **Deny wins over the recovery vocabulary** when
219
- one command chains both (task 19356be7): \`harness preflight &&
220
- git push\` is judged by its push half, not exempted by its
221
- preflight half.
222
- b. **Ledger check**: denies only when the current branch tip exactly
223
- equals a recorded \`${MERGED_TAG_PREFIX}:<repo>:<branch>:<sha>\` fact
224
- for this repo+branch. A new commit moves the tip (gate falls
225
- silent — that's legitimate continued work); a recycled branch name
226
- has a different tip (no false positive). No freshness window is
227
- needed as a result.
228
-
229
- ## Escape hatches
230
-
231
- - **Recovery path** (named in every deny message): \`git switch
232
- <default-branch>\`, then \`git pull --ff-only\`, then optionally
233
- \`git branch -d <branch>\` to clean up the merged local branch.
234
- - **Read-only / inspection commands** (\`git switch\`/\`checkout\`,
235
- \`pull\`/\`fetch\`, \`branch -d\`/\`-D\`, \`stash list\`/\`show\`, and any
236
- \`harness ...\` invocation) always pass **as their own commands**,
237
- independent of ledger reachability — the gate can never itself become
238
- the reason the recovery path is unavailable. Chaining one of them with
239
- a curated mutation does NOT exempt the mutation (the pre-19356be7
240
- escape-first ordering did, which let the documented
241
- preflight-then-push workflow skip the gate entirely).
242
-
243
- ## Known gaps (documented, not attempted in v1)
244
-
245
- - **MCP merge path**: \`mcp__agent-tasks__pull_requests_merge\` is NOT a
246
- producer trigger. Only the \`gh pr merge\` Bash surface is watched;
247
- merges done through the agent-tasks MCP tool leave no
248
- \`${MERGED_TAG_PREFIX}\` fact, so the blocker never fires for that
249
- branch. Left as a documented gap (spec decision), not silently faked
250
- as covered.
251
- - **Regex-vs-shell-eval residual**: same class of gap as every other
252
- \`bash_match\`-style matcher in this codebase (branch-protection,
253
- solution-acceptance, the kill-switch deny policies) — a heredoc,
254
- \`sh -c\`, \`eval\`, or similarly indirected command defeats the TRIGGER
255
- match before either hook ever runs. Not attempted to close here.
256
- - **Curated scope, not every Bash command**: destructive non-git
257
- commands on a just-merged branch (e.g. hand-editing files outside
258
- git's own history primitives) are out of v1 scope, mirroring
259
- branch-protection's documented scope-cut.
260
- - **Chained-escape bypass — CLOSED (task 19356be7)**: the original
261
- escape-first ordering matched the escape list against the WHOLE
262
- command string, so a curated mutation chained with an escape verb
263
- (\`harness preflight && git push\`, \`git commit -am x && git switch
264
- main\`) skipped the gate entirely. The blocker now classifies by the
265
- curated mutation match alone (deny wins; measured 0-divergent from
266
- per-clause evaluation thanks to the escape/deny verb disjointness —
267
- escape-at-start-only was measured and rejected, it still exempts three
268
- of the four lines this closed).
269
- Residual, measured and accepted: a deny verb as quoted TEXT in a
270
- chain (\`git pull && echo 'a && git push'\`) is gate-eligible even
271
- though bash never runs it — the existing accepted false-positive
272
- class, no longer rescued by a chained escape verb.
273
- - **Inverted trust-boundary residual**: a merged fact written by any
274
- means OTHER than the producer (e.g. directly via
275
- \`mcp__grounding-mcp__ledger_add\`) that happens to exactly match the
276
- CURRENT \`repo:branch:sha\` triple denies curated mutations on that
277
- branch — recoverable via any escape command or by making a new commit
278
- (which moves the tip and the fact no longer matches). A fact for a
279
- different \`repo:branch:sha\` triple is inert; this is availability-only
280
- (a spurious deny, always escapable), never a privilege the agent gains,
281
- consistent with docs/okf/evidence-ledger-trust-boundary.md.
282
- - **Contract B is coupled to \`gh\`'s current wording**: \`${GH_MERGE_SUCCESS_RE.source}\`
283
- matches \`gh\`'s OWN past-tense success sentence, verbatim, as verified
284
- against the installed \`gh\` v2.94.0 source
285
- (\`pkg/cmd/pr/merge/merge.go\` lines 369-376). A future \`gh\` release
286
- that rephrases that sentence makes
287
- Contract B silently, FAIL-SAFELY inert on installs that never send
288
- \`tool_output.exit_code\` (Contract A stays available wherever it's
289
- actually sent) — never a false "merged" record, but the blocker also
290
- never fires for that merge. Not attempted to close here (would need a
291
- \`gh\` wire-format contract, e.g. \`--json\`, out of this pack's Bash-text
292
- matching design). Verification path after upgrading \`gh\`: merge a
293
- throwaway PR and check for a fresh \`${MERGED_TAG_PREFIX}\` fact in the
294
- evidence ledger.
295
- - **No Codex adapter**: see "Runtime" above.
296
- - **No opencode adapter**: see "Runtime" above; opencode has no
297
- declarative hook/event field (only a JS/TS plugin API), so neither
298
- the producer nor the blocker hook above is ever projected into the
299
- generated opencode artefact (\`harness.generated/opencode/opencode.json\`)
300
- — this pack has no effect at all under \`--runtime opencode\`.
301
-
302
- ## Fail posture
303
-
304
- Fails OPEN (allows, with a stderr warning) when the evidence ledger is
305
- unreachable — deliberately the OPPOSITE of branch-protection's
306
- fail-closed posture, because without the ledger "merged" and "not
307
- merged" are indistinguishable, and fail-closed here would block ordinary
308
- git history work on every branch whenever grounding-mcp hiccups. This
309
- pack is advisory-strength against a hostile agent, like the other
310
- \`requires.ledger_tag\`-style gates
311
- (docs/okf/evidence-ledger-trust-boundary.md).
312
-
313
- ## Pack metadata
314
- ${description ? `\n> ${description.replace(/\n/g, "\n> ")}\n` : ""}
315
- - Source: \`builtin\`
316
- - Pack: \`${PACK_NAME}\`
317
- - Runtime: \`${runtime}\`
318
- `;
319
- }
320
- export function resolve(pack, runtime = DEFAULT_RUNTIME) {
321
- const hooks = buildHooks();
322
- const files = [
323
- {
324
- relativePath: `policy-packs/${PACK_NAME}/instructions.md`,
325
- content: buildInstructions(pack, runtime),
326
- },
327
- ];
328
- const warnings = [];
329
- // HIGH-F1 (batch18 fix-round, task f34eb233): widened from
330
- // `runtime === "codex"` to `runtime !== "claude-code"` so opencode
331
- // gets the same pack-level warning codex already got — before this,
332
- // opencode silently fell through this check (it is neither
333
- // "claude-code" nor, before the widening, matched by
334
- // `runtime === "codex"`), losing both the UNSUPPORTED marker above
335
- // AND this warning even though opencode has no hook wiring at all
336
- // (strictly worse than codex, whose hooks are at least PROJECTED,
337
- // just against the wrong tool-name surface).
338
- if (runtime !== "claude-code") {
339
- const detail = runtime === "codex"
340
- ? "hooks are wired assuming the Claude Code Bash tool surface and will not fire correctly under a Codex runtime"
341
- : "opencode has no declarative hook/event wiring, so neither hook is projected into any opencode artefact and this pack has no effect";
342
- const adapterName = runtime === "codex" ? "Codex" : "opencode";
343
- warnings.push(`policy_packs[${pack.name}]: post-merge-gate has no ${adapterName} adapter in v1; ${detail}.`);
344
- }
345
- return { contribution: { hooks, files }, warnings };
346
- }
347
- //# sourceMappingURL=post-merge-gate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"post-merge-gate.js","sourceRoot":"","sources":["../../../src/policy-packs/builtin/post-merge-gate.ts"],"names":[],"mappings":"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"}
@@ -1,50 +0,0 @@
1
- /** The grounding-mcp version this reconnect lifecycle was verified against. */
2
- export declare const RECONNECT_PRODUCER_FLOOR = "grounding-mcp >= 0.11.0";
3
- /** Rendered qualifier prefix both surfaces open the guidance with. */
4
- export declare const RECONNECT_VERSION_QUALIFIER = "With grounding-mcp >= 0.11.0:";
5
- export declare const RECONNECT_STATUS_TOOL = "mcp__grounding-mcp__solution_evaluate_status";
6
- export declare const RECONNECT_RESULT_TOOL = "mcp__grounding-mcp__solution_evaluate_result";
7
- export declare const RECONNECT_TASK_ID_PLACEHOLDER = "<task-id>";
8
- export declare const RECONNECT_POLL_MS_ADVERTISED = "5000ms";
9
- export declare const RECONNECT_RETENTION = "24h";
10
- export declare const RECONNECT_RETENTION_FLOOR = "100x pollAfterMs";
11
- /**
12
- * The three readings `gate.verdict === null` covers. The hook
13
- * (`classifyNullVerdictReading` / `readAttemptLockLiveness` in
14
- * `../../cli/pack/hook-solution-acceptance.ts`) reads the documented
15
- * attempt-lock anchor to rule two of the three out and select the one it
16
- * detected; this module only owns the wording listing them, consumed by
17
- * `renderReconnectDenyParagraph` below for its reading-(2)-only paragraph.
18
- */
19
- export declare const RECONNECT_THREE_READINGS_LABELS: readonly ["`solution_evaluate` was never called for \"<task-id>\"", "a `solution_evaluate` call for it is still running in the background", "a marker path exists but what is there was not accepted as a verdict"];
20
- /** Fact 1: reconnect by attempt id, not by starting a fresh call. */
21
- export declare const RECONNECT_FACT_RECONNECT_BY_ID: string;
22
- /**
23
- * Fact 2: never retry while the lock is held; a second call JOINS, it does
24
- * not refuse. It deliberately begins lowercase because each renderer owns
25
- * its own lead-in sentence.
26
- */
27
- export declare const RECONNECT_FACT_JOIN_NOT_RETRY: string;
28
- /**
29
- * Fact 3: poll interval and retention bounds, from the released
30
- * grounding-mcp version. Both renderers use this fact as a fresh sentence
31
- * (after a period), so it is capitalized.
32
- */
33
- export declare const RECONNECT_FACT_POLL_AND_RETENTION: string;
34
- /**
35
- * Compact paragraph appended to the completion-gate's deny reason
36
- * (`blockJson` in hook-solution-acceptance.ts) when `gate.verdict ===
37
- * null` AND the hook detected reading (2), a live attempt-lock
38
- * (`reconnectGuidanceFor`). Renders the SAME fact constants as
39
- * `renderReconnectInstructionsSection` below.
40
- */
41
- export declare function renderReconnectDenyParagraph(taskId: string): string;
42
- /**
43
- * "Reconnecting vs. retrying" section body rendered into the pack's
44
- * `instructions.md` operator audit copy (`buildInstructions` in
45
- * solution-acceptance.ts). Renders the SAME fact constants as
46
- * `renderReconnectDenyParagraph` above; a large repo can outlive a single
47
- * `solution_evaluate` call, so this section documents reconnecting to an
48
- * in-flight attempt rather than treating a timeout as a stall to retry.
49
- */
50
- export declare function renderReconnectInstructionsSection(): string;
@@ -1,151 +0,0 @@
1
- // Reconnect-vs-retry facts for the `solution-acceptance` pack (task
2
- // 5c9cad05), owned as DATA in exactly one place so the two rendered
3
- // surfaces cannot drift apart the way they did across review rounds 1-2:
4
- //
5
- // 1. `buildInstructions` (solution-acceptance.ts) renders the operator
6
- // audit copy's "Reconnecting vs. retrying" section from
7
- // `renderReconnectInstructionsSection`.
8
- // 2. `blockJson` (../../cli/pack/hook-solution-acceptance.ts) renders the
9
- // agent-facing deny paragraph from `renderReconnectDenyParagraph`,
10
- // shown only when `gate.verdict === null` AND the hook detected
11
- // reading (2), a live attempt-lock (see `reconnectGuidanceFor` in
12
- // hook-solution-acceptance.ts; the three readings are listed in
13
- // `RECONNECT_THREE_READINGS_LABELS`
14
- // below).
15
- //
16
- // Both renderers are built from the SAME fact constants below (not just
17
- // the same values restated in prose twice), and
18
- // `tests/policy-packs/solution-acceptance-reconnect.test.ts` asserts each
19
- // fact constant appears verbatim in both rendered surfaces, so a future
20
- // edit that updates one surface but not the other fails that test instead
21
- // of shipping a silent drift.
22
- //
23
- // Scope: this module documents grounding-mcp's ATTEMPT lifecycle
24
- // (`solution_evaluate_status` / `solution_evaluate_result`, `attemptId`,
25
- // `pollAfterMs`, retention), which the pack's producer floor (>= 0.3.2)
26
- // does not itself guarantee (that lifecycle shipped in grounding-mcp
27
- // 0.11.0), so every rendering below is explicitly qualified with
28
- // `RECONNECT_VERSION_QUALIFIER` rather than stated as if it held
29
- // unconditionally under the pack's own (older) producer floor.
30
- //
31
- // grounding-mcp's README also documents an attempt-lock anchor
32
- // (`<verdict dir>/<id>.attempt-lock`, beside the
33
- // `<id>.attempt-lock.lock` directory `proper-lockfile` manages, from
34
- // which the producer itself derives its own `running-unconfirmed`
35
- // status). The anchor IS read: `classifyNullVerdictReading` /
36
- // `readAttemptLockLiveness` in `../../cli/pack/hook-solution-acceptance.ts`
37
- // read it to rule two of the three readings below out and select the
38
- // one it detected (harness/799de976). This module does not touch the
39
- // filesystem itself; it only owns the WORDING both rendered surfaces
40
- // share, including `renderReconnectDenyParagraph`'s reading-(2)-only
41
- // paragraph below, which the hook appends solely when it has detected
42
- // the live-attempt reading.
43
- /** The grounding-mcp version this reconnect lifecycle was verified against. */
44
- export const RECONNECT_PRODUCER_FLOOR = "grounding-mcp >= 0.11.0";
45
- /** Rendered qualifier prefix both surfaces open the guidance with. */
46
- export const RECONNECT_VERSION_QUALIFIER = `With ${RECONNECT_PRODUCER_FLOOR}:`;
47
- export const RECONNECT_STATUS_TOOL = "mcp__grounding-mcp__solution_evaluate_status";
48
- export const RECONNECT_RESULT_TOOL = "mcp__grounding-mcp__solution_evaluate_result";
49
- export const RECONNECT_TASK_ID_PLACEHOLDER = "<task-id>";
50
- export const RECONNECT_POLL_MS_ADVERTISED = "5000ms";
51
- export const RECONNECT_RETENTION = "24h";
52
- export const RECONNECT_RETENTION_FLOOR = "100x pollAfterMs";
53
- /**
54
- * The three readings `gate.verdict === null` covers. The hook
55
- * (`classifyNullVerdictReading` / `readAttemptLockLiveness` in
56
- * `../../cli/pack/hook-solution-acceptance.ts`) reads the documented
57
- * attempt-lock anchor to rule two of the three out and select the one it
58
- * detected; this module only owns the wording listing them, consumed by
59
- * `renderReconnectDenyParagraph` below for its reading-(2)-only paragraph.
60
- */
61
- export const RECONNECT_THREE_READINGS_LABELS = [
62
- `\`solution_evaluate\` was never called for "${RECONNECT_TASK_ID_PLACEHOLDER}"`,
63
- "a `solution_evaluate` call for it is still running in the background",
64
- "a marker path exists but what is there was not accepted as a verdict",
65
- ];
66
- /** Fact 1: reconnect by attempt id, not by starting a fresh call. */
67
- export const RECONNECT_FACT_RECONNECT_BY_ID = `poll \`${RECONNECT_STATUS_TOOL}\` /\n` +
68
- `\`${RECONNECT_RESULT_TOOL}\` for the SAME \`id\`,\n` +
69
- `passing the \`attemptId\` you were given (or omitting it to resolve the latest attempt,\n` +
70
- `the recovery path when your own call timed out before it ever returned one)`;
71
- /**
72
- * Fact 2: never retry while the lock is held; a second call JOINS, it does
73
- * not refuse. It deliberately begins lowercase because each renderer owns
74
- * its own lead-in sentence.
75
- */
76
- export const RECONNECT_FACT_JOIN_NOT_RETRY = `a second \`solution_evaluate\` call for an \`id\` whose attempt is still live just joins\n` +
77
- `that attempt and returns its \`attemptId\`, never starting a second \`preflight\` run;\n` +
78
- `only \`forceNewAttempt\` is refused while that attempt's lock holds`;
79
- /**
80
- * Fact 3: poll interval and retention bounds, from the released
81
- * grounding-mcp version. Both renderers use this fact as a fresh sentence
82
- * (after a period), so it is capitalized.
83
- */
84
- export const RECONNECT_FACT_POLL_AND_RETENTION = `Wait at least the returned \`pollAfterMs\` (advertised as \`${RECONNECT_POLL_MS_ADVERTISED}\`)\n` +
85
- `between polls; attempt records are retained \`${RECONNECT_RETENTION}\` by default (always at\n` +
86
- `least \`${RECONNECT_RETENTION_FLOOR}\`), and a pruned terminal attempt\n` +
87
- `reads \`expired\``;
88
- /** The three readings, as one clause, with the task id interpolated. */
89
- function threeReadingsClause(taskId) {
90
- const [neverCalled, stillRunning, unreadable] = RECONNECT_THREE_READINGS_LABELS;
91
- return [
92
- neverCalled.replace(RECONNECT_TASK_ID_PLACEHOLDER, taskId),
93
- stillRunning,
94
- `or ${unreadable}`,
95
- ].join(",\n");
96
- }
97
- /**
98
- * Compact paragraph appended to the completion-gate's deny reason
99
- * (`blockJson` in hook-solution-acceptance.ts) when `gate.verdict ===
100
- * null` AND the hook detected reading (2), a live attempt-lock
101
- * (`reconnectGuidanceFor`). Renders the SAME fact constants as
102
- * `renderReconnectInstructionsSection` below.
103
- */
104
- export function renderReconnectDenyParagraph(taskId) {
105
- return `\n${[
106
- `Reconnecting vs. retrying. ${RECONNECT_VERSION_QUALIFIER} this same`,
107
- `"no readable verdict marker" case covers three readings:`,
108
- threeReadingsClause(taskId),
109
- `(the verdict marker only appears once an attempt finishes, and is validated on read;`,
110
- `this hook read the documented attempt-lock anchor and is showing you this paragraph`,
111
- `because it detected reading (2): an attempt is still live). If you already called`,
112
- `\`solution_evaluate\` for this \`id\`, do not call it again:`,
113
- `${RECONNECT_FACT_RECONNECT_BY_ID}.`,
114
- `Never re-call \`solution_evaluate\`:`,
115
- `${RECONNECT_FACT_JOIN_NOT_RETRY}.`,
116
- `${RECONNECT_FACT_POLL_AND_RETENTION}.`,
117
- ].join("\n")}\n`;
118
- }
119
- /**
120
- * "Reconnecting vs. retrying" section body rendered into the pack's
121
- * `instructions.md` operator audit copy (`buildInstructions` in
122
- * solution-acceptance.ts). Renders the SAME fact constants as
123
- * `renderReconnectDenyParagraph` above; a large repo can outlive a single
124
- * `solution_evaluate` call, so this section documents reconnecting to an
125
- * in-flight attempt rather than treating a timeout as a stall to retry.
126
- */
127
- export function renderReconnectInstructionsSection() {
128
- return `## Reconnecting vs. retrying (${RECONNECT_PRODUCER_FLOOR})
129
-
130
- ${RECONNECT_VERSION_QUALIFIER} a large repo can outlive the call: \`solution_evaluate\` may
131
- hand back \`{status: "running", attemptId, id, pollAfterMs}\` instead of a verdict, or your
132
- own call may time out with nothing at all. Either way the \`preflight\` run keeps going in
133
- the background; reconnect as follows:
134
- ${RECONNECT_FACT_RECONNECT_BY_ID}.
135
-
136
- Never re-call \`solution_evaluate\` as a stall workaround:
137
- ${RECONNECT_FACT_JOIN_NOT_RETRY}.
138
- A prior attempt's reported status (\`completed\`,
139
- \`failed\`, \`unknown\`, or \`expired\`) is informational, not the gate: \`unknown\`/
140
- \`expired\` never license a new attempt by themselves while another process still holds the
141
- id's lock. A genuinely new attempt becomes possible only once the previous one is terminal and
142
- the id's lock is free again, at which point an ordinary \`solution_evaluate\` call starts
143
- one.
144
-
145
- ${RECONNECT_FACT_POLL_AND_RETENTION}. \`running-unconfirmed\` still means keep
146
- polling, not stall or escalate: it resolves by itself, into \`running\`
147
- or once the lock is reclaimed as stale. Never escalate to a human before
148
- the poll hint has elapsed.
149
- `;
150
- }
151
- //# sourceMappingURL=solution-acceptance-reconnect.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"solution-acceptance-reconnect.js","sourceRoot":"","sources":["../../../src/policy-packs/builtin/solution-acceptance-reconnect.ts"],"names":[],"mappings":"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"}