@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,494 +0,0 @@
1
- import { type ExtractBuiltins, type LedgerQueryResult } from "../policies/index.js";
2
- import type { Manifest, Policy } from "../schema/index.js";
3
- import { type AmpAwareNormalizedCommand, type CommandSegment, type NormalizedCommand, type QuoteAwareNormalizedCommand } from "./command-normalize.js";
4
- import { type EnvironmentResolution } from "./environment-resolver.js";
5
- import { type GitRepoContext } from "./git-context.js";
6
- import { type RiskProfile } from "./risk-classifier.js";
7
- export interface ToolEvent {
8
- hook_event_name?: string;
9
- tool_name?: string;
10
- tool_input?: unknown;
11
- session_id?: string;
12
- cwd?: string;
13
- [key: string]: unknown;
14
- }
15
- export type PolicyOutcome = "allow" | "warn" | "require_approval" | "deny" | "warn-degraded" | "deny-degraded";
16
- export interface PolicyDecision {
17
- policyName: string;
18
- enforcement: Policy["enforcement"];
19
- outcome: PolicyOutcome;
20
- reason: string;
21
- extractValues: Record<string, string>;
22
- ledgerTag: string;
23
- requiresEval?: {
24
- matchedCount: number;
25
- reason: string;
26
- };
27
- /**
28
- * Risk Classifier verdict for the action this decision was made
29
- * about. Present only when the Risk Gate was active for the event
30
- * (the manifest declared at least one `when:`-bearing policy); absent
31
- * for a pure Phase-4 manifest, keeping its decisions byte-identical.
32
- * Recorded to the audit ledger so `harness explain --trace` can
33
- * replay the classification.
34
- */
35
- risk?: RiskProfile;
36
- /** Context Resolver verdict, present under the same condition as `risk`. */
37
- environment?: EnvironmentResolution;
38
- /**
39
- * One-line "to satisfy" hint synthesised from the policy's `requires`
40
- * spec. Carried on the live decision so the deny-envelope formatter
41
- * can append it to the user-facing reason text together with the
42
- * session id. Optional because the warn-degraded path (requires eval
43
- * threw) skips the requires evaluator and has no hint to forward.
44
- */
45
- recordHint?: string;
46
- /**
47
- * True when the policy's `when:` block matched because the action was
48
- * unclassified (the fail-close rule in `when-eval.ts`: "unknown is not
49
- * safe" for `risk.category_in` / `action.reversible`, the "treated as
50
- * high" rung for `risk.severity_at_least`). Absent when the policy has
51
- * no `when:` block, when the match was a genuine classification hit,
52
- * or when `unclassifiedFallback` was false. Present in the audit
53
- * record, the non-ux block-time deny message, AND (task 2929c5b7) the
54
- * ux-declared `cannot:` deny message, so an operator — or the agent
55
- * reading its own deny — can distinguish a real critical-severity
56
- * match from a fail-closed unclassified command at a glance.
57
- */
58
- whenUnclassifiedFallback?: boolean;
59
- /**
60
- * Set when the policy's `ledger_tag` references `${REPO}` / `${BRANCH}`
61
- * and the value resolved for this context was empty (cwd outside every
62
- * git repository, detached HEAD, or an empty override), so the engine
63
- * decided per enforcement WITHOUT rendering or querying a ledger tag.
64
- * In-memory only: it is not part of the serialised audit row (the
65
- * `reason` and the placeholder `ledgerTag` already carry the cause).
66
- * The agent envelope renders `reason` with precedence over the policy's
67
- * `ux:` / `producers:` text when this is set.
68
- */
69
- emptyIdentifier?: EmptyIdentifier;
70
- evaluatedAt: string;
71
- }
72
- /**
73
- * Claude Code hook "block" output. The top-level `decision: "block"` /
74
- * `reason` pair is the form every hook event accepts (UserPromptSubmit,
75
- * PostToolUse, Stop, ...). The `hookSpecificOutput.permissionDecision`
76
- * envelope is PreToolUse-only per Anthropic's hook protocol, so it is
77
- * present only when the inbound event is PreToolUse and absent
78
- * otherwise. Emitting both keys for a PreToolUse event keeps the deny
79
- * JSON readable by older Claude Code CLIs (which look at top-level
80
- * `decision`) and current 2.1+ ones (which prefer the envelope).
81
- *
82
- * The legacy `decision` value MUST be `"block"`, not `"deny"`: Claude
83
- * Code never recognised `"deny"` at the top level, so an emitter that
84
- * shipped that value silently let the tool call through.
85
- */
86
- export interface ClaudeDenyJson {
87
- decision: "block";
88
- reason: string;
89
- hookSpecificOutput?: {
90
- hookEventName: "PreToolUse";
91
- permissionDecision: "deny";
92
- permissionDecisionReason: string;
93
- };
94
- }
95
- export interface InterceptResult {
96
- decisions: PolicyDecision[];
97
- /** non-null iff at least one matching policy with enforcement=block denied. */
98
- blockJson: ClaudeDenyJson | null;
99
- }
100
- export interface LedgerClient {
101
- query(tag: string, sessionId: string, timeoutMs?: number): Promise<LedgerQueryResult>;
102
- /**
103
- * Record a `policy_decision` entry to the evidence ledger. Implementations
104
- * MUST be best-effort: failures bubble back as `null`/false so a degraded
105
- * audit log doesn't itself block the tool call.
106
- */
107
- record(decision: PolicyDecision, sessionId: string): Promise<void>;
108
- /**
109
- * Release any pooled connection (the real client holds one grounding-mcp
110
- * subprocess across all queries + records of an intercept invocation).
111
- * Owned by the CLI wrapper that constructed the client — `intercept()`
112
- * itself never calls it. Optional so injected test doubles and the
113
- * degraded no-op client don't have to implement it.
114
- */
115
- dispose?(): void;
116
- }
117
- export interface InterceptOptions {
118
- manifest: Manifest;
119
- event: ToolEvent;
120
- ledger: LedgerClient;
121
- builtins: ExtractBuiltins;
122
- /** Timeout passed through to the ledger client. */
123
- ledgerTimeoutMs?: number;
124
- /** Override "now" for deterministic tests. */
125
- now?: Date;
126
- /**
127
- * Current git HEAD sha for the event's cwd, resolved by the CLI
128
- * wrapper. Threaded through to `evaluateRequires` so the `at_head`
129
- * branch can compare against ledger entries' `head:<sha>` token.
130
- * Optional: omitted on non-git events, in which case the at_head
131
- * branch falls through to the standard time-window check.
132
- */
133
- currentHeadSha?: string;
134
- /**
135
- * Ambient context for the Risk Gate stages — the Action Envelope
136
- * build (#2) and the environment resolution (#4). Resolved by the CLI
137
- * wrapper (git / user / host / kube-config / env reads) and threaded
138
- * in, keeping `intercept()` itself I/O-free, the same
139
- * resolved-by-the-wrapper pattern as `currentHeadSha` and `builtins`.
140
- *
141
- * Optional: omitted by Phase-4-era callers and by unit tests that do
142
- * not exercise `when:`. When omitted, the envelope is built from the
143
- * event alone — risk then classifies as unclassified and the
144
- * environment resolves to `unknown`. A manifest with no `when:`
145
- * policy never reads any of this regardless (see `intercept`).
146
- */
147
- riskContext?: RiskGateContext;
148
- /**
149
- * Precomputed `NormalizedCommand` for a Bash event's
150
- * `tool_input.command`. `runInterceptCli` already calls
151
- * `normalizeCommand` once (for `bash_match` trigger normalisation);
152
- * threading the SAME result in here lets `policyMatchesEvent` reuse it
153
- * for every policy in the `matching` loop below instead of recomputing
154
- * it — same resolved-by-the-wrapper pattern as `currentHeadSha`,
155
- * `builtins`, and `riskContext`. Optional: omitted by non-Bash events
156
- * and by callers/tests that don't supply one, in which case
157
- * `policyMatchesEvent` computes it lazily per policy (correct, just
158
- * not de-duplicated).
159
- *
160
- * INVARIANT: this is NOT checked against `event` at runtime — nothing
161
- * verifies the `NormalizedCommand`
162
- * passed in was actually derived from THIS event's own
163
- * `tool_input.command`. Safe today because there is exactly one
164
- * production caller (`runInterceptCli`, `src/cli/policy/intercept.ts`),
165
- * which computes it from the SAME `event` it then passes to
166
- * `intercept()`. A future second caller that threads a mismatched
167
- * `NormalizedCommand` (e.g. reused across two different events) would
168
- * silently apply the wrong command's `bash_match` normalisation with
169
- * no error — keep this pairing manual-but-obvious at every call site
170
- * rather than assuming it self-enforces.
171
- */
172
- normalizedCommand?: NormalizedCommand;
173
- /**
174
- * Memoised thunk resolving the ampersand-aware SECOND normalisation
175
- * pass for the SAME Bash event's `tool_input.command` (task aabbad63,
176
- * `src/runtime/command-normalize.ts`'s `normalizeCommandAmpAware`).
177
- * `policyMatchesEvent`'s third arm calls this ONLY when a policy's
178
- * regex has already missed BOTH the raw command and `normalizedCommand`
179
- * above — most events never reach it. Threaded as a THUNK rather than
180
- * a precomputed value (unlike `normalizedCommand`) specifically so that
181
- * "compute at most once per event" can be achieved WITHOUT paying the
182
- * cost on the common (already-matched) path: `runInterceptCli`
183
- * constructs one self-memoising closure per event and hands it here;
184
- * every policy in the `matching` loop below that still needs the amp
185
- * form calls the SAME thunk, and only the FIRST such call does the
186
- * actual work.
187
- *
188
- * Optional: omitted by non-Bash events and by callers/tests that don't
189
- * supply one, in which case `policyMatchesEvent` falls back to calling
190
- * `normalizeCommandAmpAware` directly per policy (correct, just not
191
- * de-duplicated) — the same fallback shape `normalizedCommand` already
192
- * has.
193
- *
194
- * SAME INVARIANT as `normalizedCommand` above: this is NOT checked
195
- * against `event` at runtime. Nothing verifies the thunk passed in was
196
- * actually derived from THIS event's own `tool_input.command`. Safe
197
- * today because there is exactly one production caller
198
- * (`runInterceptCli`), which builds the thunk from the SAME `event` it
199
- * then passes to `intercept()` — keep this pairing manual-but-obvious
200
- * at every call site rather than assuming it self-enforces.
201
- */
202
- ampNormalizedCommandThunk?: () => AmpAwareNormalizedCommand;
203
- /**
204
- * Memoised thunk resolving the quote-aware THIRD normalisation pass for
205
- * the SAME Bash event's `tool_input.command` (task cf3dff51,
206
- * `src/runtime/command-normalize.ts`'s `normalizeCommandQuoteAware`).
207
- * `policyMatchesEvent`'s FOURTH arm calls this ONLY when a policy's
208
- * regex has already missed the raw command, `normalizedCommand`, AND
209
- * `ampNormalizedCommandThunk` above — mirrors `ampNormalizedCommandThunk`
210
- * exactly (same memoise-once-per-event-via-thunk shape, same reason:
211
- * "compute at most once per event" without paying the cost on the
212
- * common, already-matched path).
213
- *
214
- * Optional: omitted by non-Bash events and by callers/tests that don't
215
- * supply one, in which case `policyMatchesEvent` falls back to calling
216
- * `normalizeCommandQuoteAware` directly per policy (correct, just not
217
- * de-duplicated) — the same fallback shape `normalizedCommand` /
218
- * `ampNormalizedCommandThunk` already have.
219
- *
220
- * SAME INVARIANT as `normalizedCommand` / `ampNormalizedCommandThunk`
221
- * above: this is NOT checked against `event` at runtime. Nothing
222
- * verifies the thunk passed in was actually derived from THIS event's
223
- * own `tool_input.command`. Safe today because there is exactly one
224
- * production caller (`runInterceptCli`), which builds the thunk from
225
- * the SAME `event` it then passes to `intercept()` — keep this pairing
226
- * manual-but-obvious at every call site rather than assuming it
227
- * self-enforces.
228
- */
229
- quoteNormalizedCommandThunk?: () => QuoteAwareNormalizedCommand;
230
- /**
231
- * Precomputed per-segment view (`command-normalize.ts`'s
232
- * `segmentViewOf`) of a Bash event's `tool_input.command`, EAGERLY
233
- * supplied (task `98ad072f`, T-003). `null` mirrors `segmentViewOf`'s
234
- * own contract: the command exceeded `MAX_NORMALIZE_LENGTH`, so no
235
- * segment view exists (treated as `[]` — unattributable, cwd builtins,
236
- * identical to a command with no `bash_match` trigger at all).
237
- *
238
- * CORRECTED (D-015, fix round, run 2026-08-02-per-repo-gate-scoping-
239
- * redesign): the prior wording here claimed a manifest with no
240
- * `${REPO}`/`${BRANCH}`/`at_head` policy "never pays this cost even
241
- * when uninjected" — true only for a caller that omits BOTH this field
242
- * AND `commandSegmentsThunk` below. The one production caller
243
- * (`runInterceptCli`) previously injected THIS field eagerly, computed
244
- * unconditionally for every Bash event regardless of whether any policy
245
- * needed it — measured a real, avoidable second segmentation walk (see
246
- * `segmentViewOf`'s own doc comment in `command-normalize.ts` for the
247
- * +206% number). It now injects `commandSegmentsThunk` instead, which
248
- * IS deferred until first use. This eager field still exists for a
249
- * caller that already has a segment view in hand (or a test asserting
250
- * against a specific one) and wants to skip `intercept()`'s own lazy
251
- * resolution entirely — it is simply not, by itself, a laziness
252
- * guarantee. Optional: omitted by non-Bash events and by callers/tests
253
- * that don't supply one, in which case `resolveCommandSegments` falls
254
- * through to `commandSegmentsThunk`, then to computing it lazily itself.
255
- *
256
- * SAME INVARIANT as `normalizedCommand` / `ampNormalizedCommandThunk`
257
- * above: not checked against `event` at runtime; the one production
258
- * caller derives it from the identical event, same as those two.
259
- */
260
- commandSegments?: CommandSegment[] | null;
261
- /**
262
- * Memoised thunk resolving the per-segment view (task `98ad072f`,
263
- * T-003; D-015 fix round) — the SAME resolved-by-the-wrapper,
264
- * compute-at-most-once-per-event pattern `ampNormalizedCommandThunk`
265
- * above already uses, applied to `commandSegments` so the segmentation
266
- * walk it wraps is deferred until some matching policy actually needs
267
- * it (`usesPerRepoBuiltins` below), not paid on every Bash event
268
- * regardless. Preferred over the eager `commandSegments` field above
269
- * when both are supplied. Optional: omitted by non-Bash events and by
270
- * callers/tests that don't supply one, in which case
271
- * `resolveCommandSegments` falls back to `commandSegments`, then to
272
- * computing it lazily itself — same fallback chain shape as
273
- * `normalizedCommand` / `ampNormalizedCommandThunk`.
274
- *
275
- * SAME INVARIANT as `normalizedCommand` / `ampNormalizedCommandThunk`
276
- * above: not checked against `event` at runtime.
277
- */
278
- commandSegmentsThunk?: () => CommandSegment[] | null;
279
- /**
280
- * Whether `options.builtins.REPO` / `.BRANCH` were set by an explicit
281
- * operator override (`HARNESS_REPO` / `HARNESS_BRANCH` env vars) rather
282
- * than derived from the cwd's git context (D-015 fix round, run
283
- * 2026-08-02-per-repo-gate-scoping-redesign). `src/cli/policy/
284
- * intercept.ts`'s own comment on its `builtins` object says "an
285
- * explicit env var still wins" — true for the cwd context, but a
286
- * per-policy ATTRIBUTED context (a foreign target's resolved
287
- * `${REPO}`/`${BRANCH}`) unconditionally overwrote REPO/BRANCH with the
288
- * target repo's own identity, discarding the override — measured.
289
- * When true here, `resolveAttributedContexts` keeps
290
- * `options.builtins.REPO` (already the override value — see the CLI
291
- * wrapper) instead of substituting the attributed target's own repo
292
- * name; independently for BRANCH via `branchOverridden`. `false` /
293
- * absent — the default for every caller that does not set this,
294
- * including every existing test — when the corresponding builtin was
295
- * derived, not overridden.
296
- */
297
- repoOverridden?: boolean;
298
- /** See `repoOverridden` above; the same override for `${BRANCH}`. */
299
- branchOverridden?: boolean;
300
- /**
301
- * Destination for audit-write failure diagnostics. Defaults to
302
- * `process.stderr` when omitted. Goes to stderr so Claude Code's
303
- * stdout deny-JSON contract is unaffected.
304
- *
305
- * Injected by callers (tests, CLI wrapper) so the function stays
306
- * deterministic and testable without capturing process.stderr.
307
- */
308
- stderr?: NodeJS.WritableStream;
309
- }
310
- /**
311
- * Ambient inputs the Risk Gate needs that the CLI wrapper resolves from
312
- * the host (filesystem + process). Mirrors the `EnvelopeContext` /
313
- * `SignalInputs` split the debug verbs already use.
314
- */
315
- export interface RiskGateContext {
316
- /** Git context resolved against the event's cwd. */
317
- git: GitRepoContext;
318
- /** Working directory the action runs in. */
319
- cwd: string;
320
- /** OS user, or "" when unavailable. */
321
- user: string;
322
- /** Host name, or "" when unavailable. */
323
- host: string;
324
- /** Environment variables, for resolver `env_var_patterns`. */
325
- env: Record<string, string | undefined>;
326
- /** Current kube context name, or "" when unknown. */
327
- kubeContext: string;
328
- /** Current kube namespace, or "" when unknown. */
329
- kubeNamespace: string;
330
- }
331
- /**
332
- * Does a policy's `trigger:` match this event? This is the WHICH-tool-
333
- * calls filter; the WHETHER-it-applies filter is `policy.when:`,
334
- * evaluated separately (`evaluateWhen`). A policy fires only when both
335
- * hold. Exported so `harness explain-policy` can report the trigger
336
- * verdict on its own.
337
- *
338
- * `precomputedNormalizedCommand` is an optional caller-supplied
339
- * `NormalizedCommand` for the event's command: `intercept()` below
340
- * resolves ONE `NormalizedCommand` per event (via
341
- * `options.normalizedCommand`, itself computed once by
342
- * `runInterceptCli`) and threads it into every `policyMatchesEvent`
343
- * call in its `matching` loop, so a raw-miss event normalises the
344
- * command exactly ONCE across the whole manifest instead of once per
345
- * policy. Omitted by standalone callers (`harness explain-policy`, most
346
- * tests), which fall back to computing it lazily right here — correct
347
- * either way, since `normalizeCommand` is a pure function of the
348
- * command string alone.
349
- *
350
- * `ampNormalizedCommandThunk` (task aabbad63) is the SAME
351
- * resolved-by-the-wrapper pattern for the ampersand-aware SECOND
352
- * normalisation pass, but threaded as a memoised THUNK rather than a
353
- * precomputed value — see `InterceptOptions.ampNormalizedCommandThunk`
354
- * for why laziness matters here specifically. Omitted callers fall back
355
- * to calling `normalizeCommandAmpAware` directly, same shape as the
356
- * `precomputedNormalizedCommand` fallback above.
357
- *
358
- * `quoteNormalizedCommandThunk` (task cf3dff51) is the SAME thunk pattern
359
- * again, for the quote-aware THIRD normalisation pass — see
360
- * `InterceptOptions.quoteNormalizedCommandThunk`. Omitted callers fall
361
- * back to calling `normalizeCommandQuoteAware` directly, same shape as
362
- * the two fallbacks above.
363
- */
364
- export declare function policyMatchesEvent(policy: Policy, event: ToolEvent, precomputedNormalizedCommand?: NormalizedCommand, ampNormalizedCommandThunk?: () => AmpAwareNormalizedCommand, quoteNormalizedCommandThunk?: () => QuoteAwareNormalizedCommand): boolean;
365
- /**
366
- * Does a decision abort the tool call? Phase 7 #6 makes the Risk Gate
367
- * authoritative at the `PreToolUse` boundary:
368
- * - `deny` aborts (a `block`-enforcement policy whose requires failed,
369
- * the Phase 4 mechanism, unchanged).
370
- * - `require_approval` aborts until the approval evidence exists. In
371
- * Phase 7 #5 this outcome was returned but did not block; #6 makes
372
- * it block. The approval tag is satisfiable through the policy's
373
- * `requires:` (an operator runs `harness approve risk`); once the
374
- * tag is on record the requires evaluation passes and the outcome
375
- * is `allow` instead.
376
- * - `deny-degraded` aborts (task f1aea826): it is only ever produced
377
- * for `block` / `require_approval` policies under the default
378
- * `preserve_enforcement` posture (see `degradedOutcome`), so its
379
- * presence alone means "an incident-preventing gate could not read
380
- * its evidence" — fail closed.
381
- * - `allow` / `warn` / `warn-degraded` never abort.
382
- *
383
- * Exported for the CLI wrapper's pending-approval staging
384
- * (`src/cli/policy/intercept.ts`), which must agree with the runtime on
385
- * WHICH decision is the first blocking one — a hand-rolled copy there
386
- * drifted when `deny-degraded` was added (review 2026-08-08, low
387
- * finding). Keep this the single definition.
388
- */
389
- export declare function isBlockingDecision(d: PolicyDecision): boolean;
390
- /**
391
- * Bound and clean a transport-level reason before it is interpolated
392
- * into the agent-facing deny-degraded envelope. The string can embed
393
- * output captured from the grounding-mcp SUBPROCESS (`exitDiagnostic`
394
- * in `src/policies/ledger-client.ts` appends the child's last stderr
395
- * line), i.e. untrusted content that previously only reached stderr
396
- * and the audit ledger, never model-visible text. The full, untouched
397
- * string still goes to the audit row and the verbose diagnostic; only
398
- * the envelope interpolation and the default-verbosity operator hint
399
- * are bounded.
400
- *
401
- * Exported for the CLI wrapper's deny-degraded operator hint (review
402
- * 2026-08-08, round 3; default-verbosity only, suppressed under
403
- * verbose), which interpolates the same untrusted reason into its
404
- * one-line stderr surface.
405
- */
406
- export declare function sanitizeEnvelopeReason(reason: string): string;
407
- /** Which per-repo builtin resolved to an empty value; see {@link emptyIdentifierGuard}. */
408
- export type EmptyIdentifier = "REPO" | "BRANCH";
409
- export interface EmptyIdentifierGuard {
410
- identifier: EmptyIdentifier;
411
- /** Agent-facing text naming a state the agent can establish itself. */
412
- message: string;
413
- }
414
- /**
415
- * Does `ledgerTagTemplate` reference `${REPO}` / `${BRANCH}` while the
416
- * value resolved for this context is empty? An empty identifier must
417
- * never be rendered into a ledger tag: `preflight:` is a substring of
418
- * EVERY preflight fact, so a blank tag lets any unrelated fact satisfy
419
- * the gate (and `preflight-before-push` would render "You cannot push
420
- * branch yet."). The caller decides per enforcement with
421
- * `message` instead of querying the ledger.
422
- *
423
- * `REPO` wins over `BRANCH`, and a branch-only template evaluated where
424
- * REPO is empty too (no repository at all) gets the no-repository text,
425
- * since "HEAD is detached" would be false there. The messages name a
426
- * state the agent can establish (`cd` / `git -C` / `git switch`), never
427
- * a tag to produce, so there is no producer trap, and never an opt-out
428
- * (a block that names its own disable path is not a gate).
429
- *
430
- * Exported so `harness dry-run` shows the same hint instead of a blank
431
- * tag (`src/cli/dry-run.ts`).
432
- */
433
- export declare function emptyIdentifierGuard(ledgerTagTemplate: string, values: Record<string, string>): EmptyIdentifierGuard | null;
434
- /**
435
- * Which of a policy's own trigger-satisfying segments name a target — the
436
- * attribution sibling of `policyMatchesEvent` (task `98ad072f`, T-003).
437
- * Re-tests the policy's OWN `bash_match` regex against each segment's
438
- * `text` in isolation: every shipped `bash_match` alternation includes a
439
- * `^` branch, so testing it against one segment's canonicalised text
440
- * alone (no leading boundary character — see `CommandSegment.text`'s own
441
- * doc comment) is well-defined. Returns every segment that matches on its
442
- * own — usually one, occasionally several (D-004: a decoy read and a cwd
443
- * read chained in one command can each independently satisfy the SAME
444
- * trigger).
445
- *
446
- * Never changes WHETHER a policy matches — `policyMatchesEvent` already
447
- * decided that from the WHOLE command (raw-or-normalised-or-amp-
448
- * normalised), unchanged by this function. This only narrows down WHICH
449
- * segment(s), if any, are individually responsible for the match, so
450
- * `intercept()` below knows which segment's target — if any — to resolve
451
- * the `${REPO}`/`${BRANCH}`/`currentHeadSha` builtins from instead of the
452
- * event's own cwd. `[]` when the policy has no `bash_match` trigger (an
453
- * MCP-tool-name-triggered policy — no segment concept applies), when its
454
- * regex is malformed (mirrors `policyMatchesEvent`'s own defensive
455
- * `try/catch`), or when the whole-command match came ONLY from the
456
- * ampersand-aware third arm: `segments` here is always built from the
457
- * PRIMARY (`BOUNDARY_RE`) segmentation, which — by construction — cannot
458
- * itself contain the bare-`&` split the amp arm relies on, so an amp-
459
- * only match finds no individually-matching segment and this returns
460
- * `[]` (D-003: cwd builtins, identical to shipped).
461
- */
462
- export declare function attributeTriggerSegments(policy: Policy, segments: readonly CommandSegment[]): CommandSegment[];
463
- /** One `${REPO}`/`${BRANCH}`/`currentHeadSha` context a policy is evaluated against. */
464
- interface AttributedContext {
465
- builtins: ExtractBuiltins;
466
- currentHeadSha: string | undefined;
467
- }
468
- /**
469
- * Bound on the number of DISTINCT attributed contexts one policy is
470
- * evaluated against for one event (D-013, fix round, run
471
- * 2026-08-02-per-repo-gate-scoping-redesign). Each distinct context costs
472
- * one ledger query and one audit write in `intercept()`'s evaluation loop
473
- * below; on a manifest with several per-repo-builtins policies (the
474
- * shipped `FULL_TEMPLATE` has four), an event naming K distinct targets
475
- * amplifies to 4K queries/writes, unbounded by `MAX_NORMALIZE_LENGTH` —
476
- * measured 200/200 at K=200 by reviewer 2, on a hook budget whose timeout
477
- * is ALLOW (same class as the 07-27 quadratic hot-path fail-open: a slow
478
- * enough event silently passes). `resolveAttributedContexts` returns a
479
- * `"bounded"` result instead of a `contexts` array once a policy's DISTINCT
480
- * targets would exceed this constant; `intercept()` denies that policy
481
- * directly (naming the ambiguity) without querying the ledger for any of
482
- * them, rather than silently evaluating all of them.
483
- */
484
- export declare const MAX_ATTRIBUTED_CONTEXTS = 4;
485
- /** Discriminated result of `resolveAttributedContexts` (D-013). */
486
- export type AttributedContextsResult = {
487
- kind: "contexts";
488
- contexts: AttributedContext[];
489
- } | {
490
- kind: "bounded";
491
- distinctCount: number;
492
- };
493
- export declare function intercept(options: InterceptOptions): Promise<InterceptResult>;
494
- export {};