@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
@@ -0,0 +1,348 @@
1
+ import { EX_FAIL, EX_USAGE, HarnessExitError } from "./exit-codes.js";
2
+ import { codexGateDisable } from "./gate/codex-disable.js";
3
+ import { codexGateEnable } from "./gate/codex-enable.js";
4
+ import { codexConfigFlag, foreignCodexExit } from "./gate/codex-snapshot.js";
5
+ import { gateDisable, GateDisableError } from "./gate/disable.js";
6
+ import { gateEnable, GateEnableError } from "./gate/enable.js";
7
+ import { settingsFlag } from "./gate/snapshot.js";
8
+ const RUNTIME_HELP = "which runtime's hook config to edit: claude (default, ~/.claude/settings.json) or codex " +
9
+ "(~/.codex/config.toml, the harness-managed block). With codex, a unit is neutralised in place " +
10
+ "(its `hooks` array becomes empty, so other hooks keep their trust because positions do not move). " +
11
+ "A later `harness apply --runtime codex --install` re-renders that block and brings disabled units back";
12
+ /** Validates `--runtime` and the path flag that belongs to it. */
13
+ function parseGateRuntime(options) {
14
+ const runtime = options.runtime ?? "claude";
15
+ if (runtime !== "claude" && runtime !== "codex") {
16
+ throw new HarnessExitError(`unknown --runtime ${JSON.stringify(runtime)}; expected claude or codex`, EX_USAGE);
17
+ }
18
+ if (runtime === "claude" && options.config) {
19
+ throw new HarnessExitError("--config only applies to --runtime codex; use --settings", EX_USAGE);
20
+ }
21
+ if (runtime === "codex" && options.settings) {
22
+ throw new HarnessExitError("--settings only applies to --runtime claude; use --config", EX_USAGE);
23
+ }
24
+ return runtime;
25
+ }
26
+ export function registerGateGroup(program, io) {
27
+ const { stdout, stderr } = io;
28
+ // `harness gate` — operator escape hatch for hard-blocking hooks.
29
+ // A hard-blocking PreToolUse hook can lock a Claude session out of every
30
+ // Bash call, and any recovery that is itself a Bash invocation gets caught
31
+ // by the same gate. `gate disable` strips the offending hook group out of
32
+ // settings.json with a reversible snapshot.
33
+ const gate = program
34
+ .command("gate")
35
+ .description("Operator escape hatch: disable/restore hook groups in ~/.claude/settings.json");
36
+ gate
37
+ .command("disable")
38
+ .description("Remove hook groups from ~/.claude/settings.json whose `matcher` substring-matches " +
39
+ "`--matcher <pattern>`. Writes a snapshot of the removed groups next to settings.json " +
40
+ "(`harness.gate-disable.<ts>.json`) and backs up the original to `settings.json.bak.<ts>` " +
41
+ "so `harness gate enable` can restore them; a later disable while that snapshot is live " +
42
+ "is merged into it. A settings.json that is a symlink is written through, never replaced: " +
43
+ "the snapshot and the backup sit beside the file settings.json leads to. With `--runtime codex` the matching hook units " +
44
+ "of the harness-managed block in ~/.codex/config.toml are neutralised in place instead " +
45
+ "(`hooks = []`, so the position of every other hook stays) and their original lines go " +
46
+ "to `harness.gate-disable-codex.<ts>.json` (a later disable joins the live snapshot, or retires it " +
47
+ "first when it has nothing left to restore). " +
48
+ "With no `--matcher` flag, lists the candidate " +
49
+ "groups without writing.")
50
+ .option("--matcher <pattern>", "remove groups whose matcher includes this substring")
51
+ .option("--settings <path>", "override ~/.claude/settings.json (--runtime claude)")
52
+ .option("--config <path>", "override ~/.codex/config.toml (--runtime codex)")
53
+ .option("--runtime <runtime>", RUNTIME_HELP)
54
+ .action(async (options) => {
55
+ const runtime = parseGateRuntime(options);
56
+ // The restore command the output prints has to reach the same settings file as this call.
57
+ const enableTarget = options.settings ? ` ${settingsFlag(options.settings)}` : "";
58
+ try {
59
+ const result = runGateDisable(runtime, options);
60
+ const plural = runtime === "codex" ? "hook units" : "hook groups";
61
+ if (result.mode === "list") {
62
+ if (result.candidates.length === 0) {
63
+ stdout(`no ${plural} in ${result.path}; nothing to disable.\n`);
64
+ return;
65
+ }
66
+ stdout(`candidate ${plural} in ${result.path}:\n`);
67
+ for (const c of result.candidates) {
68
+ const matcherLabel = c.matcher === null ? "(no matcher)" : JSON.stringify(c.matcher);
69
+ stdout(` ${c.event}[${c.index}] matcher=${matcherLabel}: ${c.description}${c.disabled ? " [disabled]" : ""}\n`);
70
+ }
71
+ stdout(runtime === "codex"
72
+ ? "\nPass --matcher <substring> to disable a unit (its `hooks` array is emptied in place; " +
73
+ "nothing is removed). This is reversible via " +
74
+ `\`harness gate enable --runtime codex${codexConfigFlag(options.config ? result.path : null)}\`.\n`
75
+ : `\nPass --matcher <substring> to remove a group. Removal is reversible via \`harness gate enable${enableTarget}\`.\n`);
76
+ return;
77
+ }
78
+ stdout(`disabled ${result.removed.length} ${runtime === "codex" ? "hook unit(s)" : "hook group(s)"} in ${result.path}:\n`);
79
+ for (const r of result.removed) {
80
+ stdout(` ${r.event}[${r.index}] matcher=${JSON.stringify(r.matcher)}\n`);
81
+ }
82
+ if (result.retired !== undefined) {
83
+ stdout(retiredLine(result.retired, "it had nothing left to restore", "; this disable starts a fresh snapshot"));
84
+ }
85
+ for (const r of result.retiredSpent) {
86
+ stdout(`retired a spent snapshot as ${r}: its groups were already back in ${result.path}.\n`);
87
+ }
88
+ if (result.carriedFrom !== undefined) {
89
+ stdout(`retired ${result.carriedFrom.from} as ${result.carriedFrom.to}: its groups were carried into ` +
90
+ `${result.snapshotPath}, beside the file ${result.path} leads to.\n`);
91
+ }
92
+ stdout(`backup: ${result.backupPath}\n`);
93
+ stdout(result.merged
94
+ ? `snapshot: ${result.snapshotPath} (merged into the snapshot that was already live)\n`
95
+ : `snapshot: ${result.snapshotPath}\n`);
96
+ stdout(`This is reversible: run \`harness gate enable${runtime === "codex" ? ` --runtime codex${codexConfigFlag(options.config ? result.path : null)}` : enableTarget}\` to restore.\n`);
97
+ }
98
+ catch (err) {
99
+ if (err instanceof GateDisableError) {
100
+ throw new HarnessExitError(err.message, EX_FAIL);
101
+ }
102
+ throw err;
103
+ }
104
+ });
105
+ gate
106
+ .command("enable")
107
+ .description("Restore the hook groups of the live `harness.gate-disable.*.json` snapshot next to " +
108
+ "settings.json (every `gate disable` since the last restore is merged into it) and retire " +
109
+ "it as `*.restored.json`. A group settings.json already holds unchanged is left alone, " +
110
+ "never added twice; one with the same event and matcher but other content makes it refuse " +
111
+ "and name both groups' commands, and `--force` takes it as back. If settings.json has been " +
112
+ "edited since the snapshot was taken, the groups still missing are put back only when that " +
113
+ "gives exactly the pre-disable file; otherwise it refuses and `--force` puts them back into " +
114
+ "the edited file (edits stay). If settings.json already matches the pre-disable state, or " +
115
+ "holds every group unchanged, it only retires the snapshot. Older releases left one snapshot " +
116
+ "per disable: each call handles the newest, and exits non-zero while another stays live. It " +
117
+ "also exits non-zero while a live snapshot beside settings.json was taken for another " +
118
+ "settings file, naming the `--settings` that restores it. With `--runtime codex` there is at most one " +
119
+ "live `harness.gate-disable-codex.*.json` snapshot per config (another config's is skipped, named with " +
120
+ "the `--config` that restores it, and keeps the exit non-zero; exit 0 means no live snapshot remains " +
121
+ "beside the config): " +
122
+ "a later disable merges its units into it, and one enable applies it. A snapshot it applies, " +
123
+ "or the config already matches, is renamed to `*.restored.json`; one taken before a later " +
124
+ "`harness apply --runtime codex --install`, or whose units are all enabled again (not deleted), " +
125
+ "is renamed to `*.superseded.json`; neither is applied again. It exits non-zero and names the " +
126
+ "units when any hook unit stays disabled, and names how many live snapshots remain when an " +
127
+ "earlier build left several (it handles the newest per run). A config edited since is " +
128
+ "restored without `--force` only when skipping the units that are back already rebuilds " +
129
+ "the pre-disable bytes; otherwise it refuses, and `--force` restores every unit the snapshot " +
130
+ "names that is still disabled (found by id), leaves a unit that is enabled again as it is " +
131
+ "and keeps every other edit. A unit that is missing, or changed while still disabled, refuses " +
132
+ "with or without `--force` and the message names the ways out.")
133
+ .option("--settings <path>", "override ~/.claude/settings.json (--runtime claude)")
134
+ .option("--config <path>", "override ~/.codex/config.toml (--runtime codex)")
135
+ .option("--runtime <runtime>", RUNTIME_HELP)
136
+ .option("--force", "restore even when the config has been edited since the snapshot")
137
+ .action(async (options) => {
138
+ const runtime = parseGateRuntime(options);
139
+ try {
140
+ const result = runtime === "codex"
141
+ ? codexGateEnable({
142
+ ...(options.config ? { configPath: options.config } : {}),
143
+ ...(options.force ? { force: true } : {}),
144
+ })
145
+ : gateEnable({
146
+ ...(options.settings ? { settingsPath: options.settings } : {}),
147
+ ...(options.force ? { force: true } : {}),
148
+ });
149
+ const target = "configPath" in result ? result.configPath : result.settingsPath;
150
+ const stillDisabled = "stillDisabled" in result ? result.stillDisabled : [];
151
+ const liveLeft = "remaining" in result ? result.remaining : [];
152
+ const missing = "missing" in result ? result.missing : [];
153
+ const alreadyBack = "alreadyBack" in result ? result.alreadyBack : [];
154
+ const accepted = "accepted" in result ? result.accepted : [];
155
+ const foreign = "foreign" in result ? result.foreign : [];
156
+ // Codex only: another config's snapshots, each with the `--config` that restores it.
157
+ const skippedForeign = "skippedForeign" in result ? result.skippedForeign : [];
158
+ if (result.mode === "no-snapshots") {
159
+ if (stillDisabled.length === 0 && foreign.length === 0 && skippedForeign.length === 0) {
160
+ stdout(`no gate-disable snapshots found next to ${target}; nothing to restore.\n`);
161
+ }
162
+ }
163
+ else if (result.mode === "already-restored") {
164
+ if (stillDisabled.length === 0 && missing.length === 0) {
165
+ stdout((runtime === "codex"
166
+ ? `no hook unit of the harness-managed block in ${target} is disabled; no write needed. `
167
+ : accepted.length > 0
168
+ ? `nothing to put back into ${target}: each hook group the snapshot removed is there unchanged or ` +
169
+ `taken as back under --force (below); no write needed. `
170
+ : alreadyBack.length > 0
171
+ ? `${target} already holds every hook group the snapshot removed; no write needed. `
172
+ : `settings.json already matches the pre-disable state; no write needed. `) +
173
+ `(snapshot: ${result.snapshotPath})\n`);
174
+ }
175
+ }
176
+ else {
177
+ stdout(`restored ${result.restoredCount} ${runtime === "codex" ? "hook unit(s)" : "hook group(s)"} ` +
178
+ `into ${target} from ${result.snapshotPath}.\n`);
179
+ }
180
+ if (result.mode === "restored" && alreadyBack.length > 0) {
181
+ stdout(`left alone, already in ${target}: ${alreadyBack.join("; ")}.\n`);
182
+ }
183
+ if (accepted.length > 0) {
184
+ stdout(`taken as back under --force, not put back (same event and matcher, other content): ${accepted.join("; ")}.\n`);
185
+ }
186
+ // Codex only: a Claude result names another settings file's snapshots in `foreign` (an error below).
187
+ for (const f of skippedForeign) {
188
+ stdout(`skipped ${f.path}: taken for another config; ${foreignCodexExit(f)}.\n`);
189
+ }
190
+ if ("skippedEnabled" in result && result.skippedEnabled.length > 0) {
191
+ stdout(`left as they are: ${result.skippedEnabled.join(", ")} (already enabled again).\n`);
192
+ }
193
+ if ("retired" in result && result.retired?.why === "superseded") {
194
+ stdout(retiredLine(result.retired, "its units were enabled again", ""));
195
+ }
196
+ // Claude only: the Codex result's `remaining` is folded into the one error below.
197
+ const foreignNote = foreign.length > 0 ? foreignSnapshotsNote(target, foreign) : "";
198
+ // The command the message prints has to reach the same target as this call.
199
+ const enableTarget = options.settings ? ` ${settingsFlag(options.settings)}` : "";
200
+ if (runtime === "claude" && liveLeft.length > 0) {
201
+ throw new HarnessExitError(`${liveLeft.length} more gate snapshot(s) are still live next to ${target}: ${liveLeft.join(", ")}. ` +
202
+ `Their groups are not restored yet; run \`harness gate enable${enableTarget}\` again.` +
203
+ `${foreignNote ? ` ${foreignNote}` : ""}`, EX_FAIL);
204
+ }
205
+ if (foreignNote)
206
+ throw new HarnessExitError(foreignNote, EX_FAIL);
207
+ const remaining = "remaining" in result ? result.remaining : [];
208
+ // Codex: a snapshot of another config is a live snapshot beside this one (exit 0 means none remains), named
209
+ // with its restoring `--config`. The still-disabled clause names them itself when it can; otherwise this does.
210
+ const configFlag = codexConfigFlag(runtime === "codex" && options.config ? target : null);
211
+ const applyFlag = codexConfigFlag(runtime === "codex" && options.config ? target : null, "--codex-config");
212
+ const foreignExits = skippedForeign.map((f) => `${f.path}: ${foreignCodexExit(f)}`).join("; ");
213
+ const foreignNamed = stillDisabled.length > 0 && remaining.length === 0;
214
+ // A snapshot this call retired as superseded: a later install re-rendered its units (its own backup
215
+ // predates that install and holds the outdated hooks line, so it is never offered here).
216
+ const retired = "retired" in result ? result.retired : null;
217
+ const retiredSuperseded = retired?.why === "superseded" &&
218
+ (retired.installBackup !== undefined || retired.generation !== undefined);
219
+ const supersededFact = "The live snapshot this call retired was superseded by a later install, so its hooks lines may be outdated.";
220
+ // `lead` is the verb that opens the ways out: "Run" as a sentence of its own, "run" after "Otherwise".
221
+ const supersededWaysOut = (lead) => `${lead} \`harness gate enable --runtime codex --config <that spelling>\` for another spelling of ` +
222
+ "this config (a second link or name for it, the one `harness gate disable` was given) to restore " +
223
+ "through the snapshot that sits beside it; or re-run " +
224
+ `\`harness apply --runtime codex --install${applyFlag}\` to re-render the block; or put the units' ` +
225
+ "`hooks` lines back by hand.";
226
+ if (missing.length > 0 || stillDisabled.length > 0 || remaining.length > 0 || skippedForeign.length > 0) {
227
+ throw new HarnessExitError([
228
+ missing.length > 0 &&
229
+ `${missing.length} hook unit(s) a gate snapshot names are missing from the harness-managed block in ${target}: ` +
230
+ `${missing.join(", ")}. The snapshot ${"snapshotPath" in result ? result.snapshotPath : ""} stays live and ` +
231
+ `nothing was retired for them. Run \`harness apply --runtime codex --install${applyFlag}\` to re-render the ` +
232
+ "block, restore the config from the backup beside it (<config>.bak.<timestamp>), or move the snapshot " +
233
+ "aside by hand if they are gone for good.",
234
+ stillDisabled.length > 0 &&
235
+ `${stillDisabled.length} hook unit(s) in ${target} are still disabled: ${stillDisabled.join(", ")}.` +
236
+ (remaining.length > 0
237
+ ? ""
238
+ : skippedForeign.length > 0
239
+ ? " A live Codex gate snapshot beside it was taken for another config; if these units are the " +
240
+ "ones it neutralised (the same config under another name), restore them through it: " +
241
+ `${foreignExits}. ` +
242
+ (retiredSuperseded
243
+ ? `${supersededFact} Otherwise ${supersededWaysOut("run")}`
244
+ : "Otherwise restore the config from the backup beside it " +
245
+ `(<config>.bak.<timestamp>), or re-run \`harness apply --runtime codex --install${applyFlag}\` ` +
246
+ "to re-render the block.")
247
+ : retiredSuperseded
248
+ ? ` No Codex gate snapshot restores them. ${supersededFact} ${supersededWaysOut("Run")}`
249
+ : " No Codex gate snapshot restores them. Restore the config from the backup beside it " +
250
+ `(<config>.bak.<timestamp>), or re-run \`harness apply --runtime codex --install${applyFlag}\` ` +
251
+ "to re-render the block. " +
252
+ "A gate snapshot sits beside the path `harness gate disable` was given: if this config is also " +
253
+ "reached through a link or another name, run enable with that same `--config`."),
254
+ remaining.length > 0 &&
255
+ `${remaining.length} more live Codex gate snapshot(s) remain (an earlier build wrote one per disable, or a copied directory brought a retired one back): ` +
256
+ `${remaining.join(", ")}. Run \`harness gate enable --runtime codex${configFlag}\` again for the next one.`,
257
+ skippedForeign.length > 0 &&
258
+ !foreignNamed &&
259
+ `${skippedForeign.length} live Codex gate snapshot(s) beside ${target} were taken for another config and ` +
260
+ `their units are not restored yet: ${foreignExits}.`,
261
+ ]
262
+ .filter((m) => m !== false)
263
+ .join(" "), EX_FAIL);
264
+ }
265
+ }
266
+ catch (err) {
267
+ if (err instanceof GateEnableError) {
268
+ throw new HarnessExitError(err.message, EX_FAIL);
269
+ }
270
+ throw err;
271
+ }
272
+ });
273
+ }
274
+ /** The stdout line for a Codex snapshot a call retired; `noInstall` says why when no install dated it. */
275
+ function retiredLine(r, noInstall, tail) {
276
+ const why = r.installBackup !== undefined
277
+ ? `a later install (${r.installBackup}) re-rendered its units`
278
+ : r.generation !== undefined
279
+ ? `a later install re-rendered the harness-managed block (its generation marker is now ` +
280
+ `${r.generation.block.slice(0, 12)}..., the snapshot recorded ${r.generation.snapshot.slice(0, 12)}...), ` +
281
+ "so its hooks lines may be outdated"
282
+ : noInstall;
283
+ return `retired ${r.from} as ${r.to}: ${why}${tail}.\n`;
284
+ }
285
+ /**
286
+ * Why a Claude `gate enable` does not exit 0 while live snapshots of another
287
+ * settings file sit beside the target: their groups are still removed from
288
+ * that file. Names each one with the command that restores it.
289
+ */
290
+ function foreignSnapshotsNote(target, foreign) {
291
+ return (`${foreign.length} gate snapshot(s) beside ${target} were taken for another settings file and their groups ` +
292
+ `are not restored yet: ` +
293
+ foreign
294
+ .map((f) => `${f.path}: run \`harness gate enable ${settingsFlag(f.settingsPath)}\`` +
295
+ (f.settingsExists
296
+ ? ""
297
+ : ` (no file is at that name now: if the settings file was renamed after the disable, rename it back ` +
298
+ `first; if it is gone, restore it from ${f.settingsBackupPath}, which is the file before that disable, ` +
299
+ `then run that command, which retires the snapshot; or move the snapshot out of the directory by hand ` +
300
+ `once its groups are back)`))
301
+ .join("; ") +
302
+ ".");
303
+ }
304
+ /** Runs the disable verb for one runtime and flattens both results into the one shape the printer reads. */
305
+ function runGateDisable(runtime, options) {
306
+ const empty = { candidates: [], backupPath: "", snapshotPath: "", removed: [], merged: false, retiredSpent: [] };
307
+ if (runtime === "codex") {
308
+ const r = codexGateDisable({
309
+ ...(options.matcher ? { matcher: options.matcher } : {}),
310
+ ...(options.config ? { configPath: options.config } : {}),
311
+ });
312
+ if (r.mode === "list")
313
+ return { ...empty, mode: "list", path: r.configPath, candidates: r.candidates };
314
+ return {
315
+ ...empty,
316
+ mode: "remove",
317
+ path: r.configPath,
318
+ backupPath: r.backupPath,
319
+ snapshotPath: r.snapshotPath,
320
+ removed: r.neutralised.map((u) => ({ event: u.event, index: u.eventIndex, matcher: u.matcher })),
321
+ ...(r.retired !== null ? { retired: r.retired } : {}),
322
+ };
323
+ }
324
+ const r = gateDisable({
325
+ ...(options.matcher ? { matcher: options.matcher } : {}),
326
+ ...(options.settings ? { settingsPath: options.settings } : {}),
327
+ });
328
+ if (r.mode === "list")
329
+ return { ...empty, mode: "list", path: r.settingsPath, candidates: r.candidates };
330
+ return {
331
+ ...empty,
332
+ mode: "remove",
333
+ path: r.settingsPath,
334
+ backupPath: r.backupPath,
335
+ snapshotPath: r.snapshotPath,
336
+ merged: r.merged,
337
+ retiredSpent: r.retired,
338
+ ...(r.carriedFrom !== undefined ? { carriedFrom: r.carriedFrom } : {}),
339
+ removed: r.removed.map((g) => ({
340
+ event: g.event,
341
+ index: g.index,
342
+ matcher: g.group !== null && typeof g.group === "object" && !Array.isArray(g.group)
343
+ ? (g.group["matcher"] ?? null)
344
+ : null,
345
+ })),
346
+ };
347
+ }
348
+ //# sourceMappingURL=register-gate-group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-gate-group.js","sourceRoot":"","sources":["../../src/cli/register-gate-group.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAwB,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAExE,MAAM,YAAY,GAChB,0FAA0F;IAC1F,gGAAgG;IAChG,oGAAoG;IACpG,wGAAwG,CAAC;AAE3G,kEAAkE;AAClE,SAAS,gBAAgB,CACvB,OAAiE;IAEjE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC;IAC5C,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QAChD,MAAM,IAAI,gBAAgB,CACxB,qBAAqB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,4BAA4B,EACxE,QAAQ,CACT,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QAC3C,MAAM,IAAI,gBAAgB,CAAC,0DAA0D,EAAE,QAAQ,CAAC,CAAC;IACnG,CAAC;IACD,IAAI,OAAO,KAAK,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC5C,MAAM,IAAI,gBAAgB,CAAC,2DAA2D,EAAE,QAAQ,CAAC,CAAC;IACpG,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,OAAgB,EAChB,EAAgE;IAEhE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IAC9B,kEAAkE;IAClE,yEAAyE;IACzE,2EAA2E;IAC3E,0EAA0E;IAC1E,4CAA4C;IAC5C,MAAM,IAAI,GAAG,OAAO;SACjB,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,+EAA+E,CAAC,CAAC;IAChG,IAAI;SACD,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CACV,oFAAoF;QAClF,uFAAuF;QACvF,2FAA2F;QAC3F,yFAAyF;QACzF,2FAA2F;QAC3F,yHAAyH;QACzH,wFAAwF;QACxF,wFAAwF;QACxF,oGAAoG;QACpG,8CAA8C;QAC9C,gDAAgD;QAChD,yBAAyB,CAC5B;SACA,MAAM,CAAC,qBAAqB,EAAE,qDAAqD,CAAC;SACpF,MAAM,CAAC,mBAAmB,EAAE,qDAAqD,CAAC;SAClF,MAAM,CAAC,iBAAiB,EAAE,iDAAiD,CAAC;SAC5E,MAAM,CAAC,qBAAqB,EAAE,YAAY,CAAC;SAC3C,MAAM,CAAC,KAAK,EAAE,OAAmF,EAAE,EAAE;QACpG,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC1C,0FAA0F;QAC1F,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClF,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAChD,MAAM,MAAM,GAAG,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC;YAClE,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC3B,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACnC,MAAM,CAAC,MAAM,MAAM,OAAO,MAAM,CAAC,IAAI,yBAAyB,CAAC,CAAC;oBAChE,OAAO;gBACT,CAAC;gBACD,MAAM,CAAC,aAAa,MAAM,OAAO,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC;gBACnD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;oBAClC,MAAM,YAAY,GAAG,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;oBACrF,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,aAAa,YAAY,KAAK,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;gBACnH,CAAC;gBACD,MAAM,CACJ,OAAO,KAAK,OAAO;oBACjB,CAAC,CAAC,yFAAyF;wBACvF,8CAA8C;wBAC9C,wCAAwC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO;oBACvG,CAAC,CAAC,kGAAkG,YAAY,OAAO,CAC1H,CAAC;gBACF,OAAO;YACT,CAAC;YACD,MAAM,CACJ,YAAY,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,eAAe,OAAO,MAAM,CAAC,IAAI,KAAK,CACnH,CAAC;YACF,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC/B,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,aAAa,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC5E,CAAC;YACD,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBACjC,MAAM,CACJ,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,gCAAgC,EAAE,wCAAwC,CAAC,CACxG,CAAC;YACJ,CAAC;YACD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;gBACpC,MAAM,CAAC,+BAA+B,CAAC,qCAAqC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC;YAChG,CAAC;YACD,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;gBACrC,MAAM,CACJ,WAAW,MAAM,CAAC,WAAW,CAAC,IAAI,OAAO,MAAM,CAAC,WAAW,CAAC,EAAE,iCAAiC;oBAC7F,GAAG,MAAM,CAAC,YAAY,qBAAqB,MAAM,CAAC,IAAI,cAAc,CACvE,CAAC;YACJ,CAAC;YACD,MAAM,CAAC,aAAa,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;YAC3C,MAAM,CACJ,MAAM,CAAC,MAAM;gBACX,CAAC,CAAC,aAAa,MAAM,CAAC,YAAY,qDAAqD;gBACvF,CAAC,CAAC,aAAa,MAAM,CAAC,YAAY,IAAI,CACzC,CAAC;YACF,MAAM,CACJ,gDACE,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,mBAAmB,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,YACpG,kBAAkB,CACnB,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,gBAAgB,EAAE,CAAC;gBACpC,MAAM,IAAI,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACnD,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC,CAAC,CAAC;IACL,IAAI;SACD,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CACV,qFAAqF;QACnF,2FAA2F;QAC3F,wFAAwF;QACxF,2FAA2F;QAC3F,4FAA4F;QAC5F,4FAA4F;QAC5F,6FAA6F;QAC7F,2FAA2F;QAC3F,8FAA8F;QAC9F,6FAA6F;QAC7F,uFAAuF;QACvF,uGAAuG;QACvG,wGAAwG;QACxG,sGAAsG;QACtG,sBAAsB;QACtB,8FAA8F;QAC9F,2FAA2F;QAC3F,iGAAiG;QACjG,+FAA+F;QAC/F,4FAA4F;QAC5F,uFAAuF;QACvF,yFAAyF;QACzF,8FAA8F;QAC9F,2FAA2F;QAC3F,+FAA+F;QAC/F,+DAA+D,CAClE;SACA,MAAM,CAAC,mBAAmB,EAAE,qDAAqD,CAAC;SAClF,MAAM,CAAC,iBAAiB,EAAE,iDAAiD,CAAC;SAC5E,MAAM,CAAC,qBAAqB,EAAE,YAAY,CAAC;SAC3C,MAAM,CAAC,SAAS,EAAE,iEAAiE,CAAC;SACpF,MAAM,CAAC,KAAK,EAAE,OAAkF,EAAE,EAAE;QACnG,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC;YACH,MAAM,MAAM,GACV,OAAO,KAAK,OAAO;gBACjB,CAAC,CAAC,eAAe,CAAC;oBACd,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACzD,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC1C,CAAC;gBACJ,CAAC,CAAC,UAAU,CAAC;oBACT,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC/D,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC1C,CAAC,CAAC;YACT,MAAM,MAAM,GAAG,YAAY,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;YAChF,MAAM,aAAa,GAAG,eAAe,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5E,MAAM,QAAQ,GAAG,WAAW,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,MAAM,OAAO,GAAG,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,MAAM,WAAW,GAAG,aAAa,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;YACtE,MAAM,QAAQ,GAAG,UAAU,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7D,MAAM,OAAO,GAAG,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,qFAAqF;YACrF,MAAM,cAAc,GAAG,gBAAgB,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/E,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBACnC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACtF,MAAM,CAAC,2CAA2C,MAAM,yBAAyB,CAAC,CAAC;gBACrF,CAAC;YACH,CAAC;iBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;gBAC9C,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACvD,MAAM,CACJ,CAAC,OAAO,KAAK,OAAO;wBAClB,CAAC,CAAC,gDAAgD,MAAM,iCAAiC;wBACzF,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;4BACnB,CAAC,CAAC,4BAA4B,MAAM,+DAA+D;gCACjG,wDAAwD;4BAC1D,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;gCACtB,CAAC,CAAC,GAAG,MAAM,yEAAyE;gCACpF,CAAC,CAAC,wEAAwE,CAAC;wBAC/E,cAAc,MAAM,CAAC,YAAY,KAAK,CACzC,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,CACJ,YAAY,MAAM,CAAC,aAAa,IAAI,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,eAAe,GAAG;oBAC3F,QAAQ,MAAM,SAAS,MAAM,CAAC,YAAY,KAAK,CAClD,CAAC;YACJ,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzD,MAAM,CAAC,0BAA0B,MAAM,KAAK,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3E,CAAC;YACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,MAAM,CACJ,sFAAsF,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAC/G,CAAC;YACJ,CAAC;YACD,qGAAqG;YACrG,KAAK,MAAM,CAAC,IAAI,cAAc,EAAE,CAAC;gBAC/B,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,+BAA+B,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACnF,CAAC;YACD,IAAI,gBAAgB,IAAI,MAAM,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnE,MAAM,CAAC,qBAAqB,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YAC7F,CAAC;YACD,IAAI,SAAS,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,GAAG,KAAK,YAAY,EAAE,CAAC;gBAChE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,8BAA8B,EAAE,EAAE,CAAC,CAAC,CAAC;YAC1E,CAAC;YACD,kFAAkF;YAClF,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACpF,4EAA4E;YAC5E,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClF,IAAI,OAAO,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChD,MAAM,IAAI,gBAAgB,CACxB,GAAG,QAAQ,CAAC,MAAM,iDAAiD,MAAM,KAAK,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;oBACnG,+DAA+D,YAAY,WAAW;oBACtF,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAC3C,OAAO,CACR,CAAC;YACJ,CAAC;YACD,IAAI,WAAW;gBAAE,MAAM,IAAI,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAClE,MAAM,SAAS,GAAG,WAAW,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,4GAA4G;YAC5G,+GAA+G;YAC/G,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,KAAK,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC1F,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,KAAK,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;YAC3G,MAAM,YAAY,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/F,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC;YACxE,oGAAoG;YACpG,yFAAyF;YACzF,MAAM,OAAO,GAAG,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;YAC5D,MAAM,iBAAiB,GACrB,OAAO,EAAE,GAAG,KAAK,YAAY;gBAC7B,CAAC,OAAO,CAAC,aAAa,KAAK,SAAS,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC;YAC5E,MAAM,cAAc,GAClB,4GAA4G,CAAC;YAC/G,uGAAuG;YACvG,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAU,EAAE,CACjD,GAAG,IAAI,4FAA4F;gBACnG,kGAAkG;gBAClG,sDAAsD;gBACtD,4CAA4C,SAAS,+CAA+C;gBACpG,6BAA6B,CAAC;YAChC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxG,MAAM,IAAI,gBAAgB,CACxB;oBACE,OAAO,CAAC,MAAM,GAAG,CAAC;wBAChB,GAAG,OAAO,CAAC,MAAM,qFAAqF,MAAM,IAAI;4BAC9G,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,cAAc,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,kBAAkB;4BAC5G,8EAA8E,SAAS,sBAAsB;4BAC7G,uGAAuG;4BACvG,0CAA0C;oBAC9C,aAAa,CAAC,MAAM,GAAG,CAAC;wBACtB,GAAG,aAAa,CAAC,MAAM,oBAAoB,MAAM,wBAAwB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;4BAClG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;gCACnB,CAAC,CAAC,EAAE;gCACJ,CAAC,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;oCACzB,CAAC,CAAC,6FAA6F;wCAC7F,qFAAqF;wCACrF,GAAG,YAAY,IAAI;wCACnB,CAAC,iBAAiB;4CAChB,CAAC,CAAC,GAAG,cAAc,cAAc,iBAAiB,CAAC,KAAK,CAAC,EAAE;4CAC3D,CAAC,CAAC,yDAAyD;gDACzD,kFAAkF,SAAS,KAAK;gDAChG,yBAAyB,CAAC;oCAChC,CAAC,CAAC,iBAAiB;wCACjB,CAAC,CAAC,0CAA0C,cAAc,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE;wCACxF,CAAC,CAAC,sFAAsF;4CACtF,kFAAkF,SAAS,KAAK;4CAChG,0BAA0B;4CAC1B,gGAAgG;4CAChG,+EAA+E,CAAC;oBAC5F,SAAS,CAAC,MAAM,GAAG,CAAC;wBAClB,GAAG,SAAS,CAAC,MAAM,uIAAuI;4BACxJ,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,8CAA8C,UAAU,4BAA4B;oBAC/G,cAAc,CAAC,MAAM,GAAG,CAAC;wBACvB,CAAC,YAAY;wBACb,GAAG,cAAc,CAAC,MAAM,uCAAuC,MAAM,qCAAqC;4BACxG,qCAAqC,YAAY,GAAG;iBACzD;qBACE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC;qBAC1B,IAAI,CAAC,GAAG,CAAC,EACZ,OAAO,CACR,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,eAAe,EAAE,CAAC;gBACnC,MAAM,IAAI,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACnD,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC;AAED,0GAA0G;AAC1G,SAAS,WAAW,CAClB,CAAyG,EACzG,SAAiB,EACjB,IAAY;IAEZ,MAAM,GAAG,GACP,CAAC,CAAC,aAAa,KAAK,SAAS;QAC3B,CAAC,CAAC,oBAAoB,CAAC,CAAC,aAAa,yBAAyB;QAC9D,CAAC,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS;YAC1B,CAAC,CAAC,sFAAsF;gBACtF,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,8BAA8B,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ;gBAC1G,oCAAoC;YACtC,CAAC,CAAC,SAAS,CAAC;IAClB,OAAO,WAAW,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,GAAG,GAAG,IAAI,KAAK,CAAC;AAC1D,CAAC;AAED;;;;GAIG;AACH,SAAS,oBAAoB,CAC3B,MAAc,EACd,OAA0B;IAE1B,OAAO,CACL,GAAG,OAAO,CAAC,MAAM,4BAA4B,MAAM,yDAAyD;QAC5G,wBAAwB;QACxB,OAAO;aACJ,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CACJ,GAAG,CAAC,CAAC,IAAI,+BAA+B,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI;YACxE,CAAC,CAAC,CAAC,cAAc;gBACf,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,oGAAoG;oBACpG,yCAAyC,CAAC,CAAC,kBAAkB,2CAA2C;oBACxG,uGAAuG;oBACvG,2BAA2B,CAAC,CACnC;aACA,IAAI,CAAC,IAAI,CAAC;QACb,GAAG,CACJ,CAAC;AACJ,CAAC;AA0BD,4GAA4G;AAC5G,SAAS,cAAc,CACrB,OAA2B,EAC3B,OAAiE;IAEjE,MAAM,KAAK,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;IACjH,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,MAAM,CAAC,GAAG,gBAAgB,CAAC;YACzB,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1D,CAAC,CAAC;QACH,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;QACvG,OAAO;YACL,GAAG,KAAK;YACR,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,CAAC,CAAC,UAAU;YAClB,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,YAAY,EAAE,CAAC,CAAC,YAAY;YAC5B,OAAO,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YAChG,GAAG,CAAC,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACtD,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,GAAG,WAAW,CAAC;QACpB,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChE,CAAC,CAAC;IACH,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;IACzG,OAAO;QACL,GAAG,KAAK;QACR,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,CAAC,CAAC,YAAY;QACpB,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,YAAY,EAAE,CAAC,CAAC,YAAY;QAC5B,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,YAAY,EAAE,CAAC,CAAC,OAAO;QACvB,GAAG,CAAC,CAAC,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7B,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,OAAO,EACL,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;gBACxE,CAAC,CAAC,CAAE,CAAC,CAAC,KAAiC,CAAC,SAAS,CAAC,IAAI,IAAI,CAAkB;gBAC5E,CAAC,CAAC,IAAI;SACX,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { Command } from "commander";
2
+ import { type RunOptions } from "./index.js";
3
+ export declare function registerInspectGroup(program: Command, io: {
4
+ stdout: (s: string) => void;
5
+ stderr: (s: string) => void;
6
+ }, opts: RunOptions): void;
@@ -0,0 +1,189 @@
1
+ import { defaultVersionProbe } from "./index.js";
2
+ import { describe, isPillar } from "./describe.js";
3
+ import { diff as diffRun } from "./diff/index.js";
4
+ import { diffSinceApply } from "./diff/since-apply.js";
5
+ import { doctor, isDoctorTarget, KNOWN_DOCTOR_TARGETS } from "./doctor/index.js";
6
+ import { format as formatDoctor } from "./doctor/format.js";
7
+ import { EX_FAIL, EX_USAGE, HarnessExitError } from "./exit-codes.js";
8
+ import { isListCategory, list } from "./list.js";
9
+ import { formatReport, validate } from "./validate/index.js";
10
+ import { REMOVED_DESCRIBE_PILLARS, REMOVED_LIST_CATEGORIES, removedInspectNameMessage, } from "../schema/removed-keys.js";
11
+ export function registerInspectGroup(program, io, opts) {
12
+ const { stdout, stderr } = io;
13
+ program
14
+ .command("describe")
15
+ .description("Print the effective merged manifest")
16
+ .option("--config <path>", "manifest path (default: ~/.harness/harness.yaml; legacy fallback ~/.claude/harness.yaml)")
17
+ .option("--project <name>", "apply per-project overrides for this project name")
18
+ .option("--pillar <pillar>", "filter output to one section: grounding | tools | memory | hooks")
19
+ .option("--json", "emit JSON instead of YAML")
20
+ .action((options) => {
21
+ let pillar;
22
+ if (options.pillar !== undefined) {
23
+ if (!isPillar(options.pillar)) {
24
+ const removed = REMOVED_DESCRIBE_PILLARS.find((r) => r.name === options.pillar);
25
+ throw new HarnessExitError(removed !== undefined
26
+ ? `${removedInspectNameMessage("pillar", removed)}; expected one of grounding, tools, memory, hooks`
27
+ : `unknown pillar "${options.pillar}"; expected one of grounding, tools, memory, hooks`, EX_USAGE);
28
+ }
29
+ pillar = options.pillar;
30
+ }
31
+ const result = describe({
32
+ configPath: options.config,
33
+ project: options.project,
34
+ pillar,
35
+ json: options.json,
36
+ });
37
+ stdout(result.output);
38
+ if (!result.output.endsWith("\n"))
39
+ stdout("\n");
40
+ });
41
+ program
42
+ .command("validate")
43
+ .description("Lint the manifest + referenced assets")
44
+ .option("--config <path>", "manifest path (default: ~/.harness/harness.yaml; legacy fallback ~/.claude/harness.yaml)")
45
+ .option("--project <name>", "apply per-project overrides for this project name")
46
+ .option("--strict", "promote warnings to errors")
47
+ .option("--check-lock", "surface harness.lock asset-content drift as warnings (or errors with --strict)")
48
+ .option("--json", "emit a structured JSON report ({ diagnostics, errorCount, warningCount }) instead of prose")
49
+ .action((options) => {
50
+ const result = validate({
51
+ configPath: options.config,
52
+ project: options.project,
53
+ strict: options.strict,
54
+ checkLock: options.checkLock,
55
+ });
56
+ if (options.json) {
57
+ // JSON goes to stdout regardless of outcome so pipelines can
58
+ // always parse it; the exit code still carries pass/fail.
59
+ stdout(`${JSON.stringify({
60
+ diagnostics: result.diagnostics,
61
+ errorCount: result.errorCount,
62
+ warningCount: result.warningCount,
63
+ }, null, 2)}\n`);
64
+ }
65
+ else {
66
+ const report = formatReport(result);
67
+ if (result.diagnostics.length > 0)
68
+ stderr(report);
69
+ else
70
+ stdout(report);
71
+ }
72
+ if (result.errorCount > 0) {
73
+ throw new HarnessExitError("", EX_FAIL);
74
+ }
75
+ });
76
+ program
77
+ .command("doctor")
78
+ .description("Health summary across all pillars")
79
+ .option("--config <path>", "manifest path (default: ~/.harness/harness.yaml; legacy fallback ~/.claude/harness.yaml)")
80
+ .option("--project <name>", "apply per-project overrides for this project name")
81
+ .option("--shallow", "skip MCP probes (CLI --version probes still run); report manifest-reference state only")
82
+ .option("--target <runtime>", `additionally evaluate the harness-side adapter health for a runtime (allowed: ${KNOWN_DOCTOR_TARGETS.join(", ")})`)
83
+ .option("--json", "emit a structured JSON DoctorReport instead of prose")
84
+ .action(async (options) => {
85
+ let target;
86
+ if (options.target !== undefined) {
87
+ if (!isDoctorTarget(options.target)) {
88
+ stderr(`unknown --target ${JSON.stringify(options.target)}; expected one of ${KNOWN_DOCTOR_TARGETS.join(", ")}\n`);
89
+ throw new HarnessExitError("", EX_USAGE);
90
+ }
91
+ target = options.target;
92
+ }
93
+ const report = await doctor({
94
+ configPath: options.config,
95
+ project: options.project,
96
+ shallow: options.shallow,
97
+ versionProbe: defaultVersionProbe,
98
+ ...(target !== undefined ? { target } : {}),
99
+ });
100
+ // Non-zero exit when the report carries errors (task a07b379a):
101
+ // callers previously had no way to gate CI/scripts on doctor
102
+ // health, since this action always fell through to exit 0
103
+ // regardless of report.errorCount. Warnings alone still exit 0.
104
+ // Checked before every return below (json and prose) so the exit
105
+ // code is consistent across all output modes.
106
+ const failIfErrors = () => {
107
+ if (report.errorCount > 0) {
108
+ throw new HarnessExitError("", EX_FAIL);
109
+ }
110
+ };
111
+ if (options.json) {
112
+ stdout(`${JSON.stringify(report, null, 2)}\n`);
113
+ failIfErrors();
114
+ return;
115
+ }
116
+ stdout(formatDoctor(report));
117
+ failIfErrors();
118
+ });
119
+ program
120
+ .command("list <category>")
121
+ .description("Flat denormalised listing per category: mcp / cli / skills / memories / hooks")
122
+ .option("--config <path>", "manifest path (default: ~/.harness/harness.yaml; legacy fallback ~/.claude/harness.yaml)")
123
+ .option("--project <name>", "apply per-project overrides")
124
+ .option("--filter <substr>", "case-insensitive substring filter on name (or path for memories)")
125
+ .option("--json", "emit JSON array instead of an aligned text table")
126
+ .action((category, options) => {
127
+ if (!isListCategory(category)) {
128
+ const removed = REMOVED_LIST_CATEGORIES.find((r) => r.name === category);
129
+ throw new HarnessExitError(removed !== undefined
130
+ ? `${removedInspectNameMessage("list category", removed)}; expected one of mcp, cli, skills, memories, hooks`
131
+ : `unknown list category "${category}"; expected one of mcp, cli, skills, memories, hooks`, EX_USAGE);
132
+ }
133
+ const result = list(category, {
134
+ configPath: options.config,
135
+ project: options.project,
136
+ filter: options.filter,
137
+ json: options.json,
138
+ });
139
+ stdout(result.output);
140
+ });
141
+ program
142
+ .command("diff")
143
+ .description("Diff the manifest against a git ref (--since <ref>) or against the last " +
144
+ "applied state (--since-apply). --memory-detail expands per-memory-dir " +
145
+ "Merkle drift back to per-file changes.")
146
+ .option("--config <path>", "manifest path (default: ~/.harness/harness.yaml; legacy fallback ~/.claude/harness.yaml)")
147
+ .option("--project <name>", "apply per-project overrides")
148
+ .option("--since <ref>", "git ref to diff against")
149
+ .option("--since-apply", "diff against harness.generated/.last-apply")
150
+ .option("--memory-detail", "expand per-memory-dir drift to per-file changes")
151
+ .option("--json", "emit structured JSON output")
152
+ .action((options) => {
153
+ if (options.since && options.sinceApply) {
154
+ throw new HarnessExitError("--since <ref> and --since-apply are mutually exclusive", EX_USAGE);
155
+ }
156
+ if (options.sinceApply) {
157
+ const r = diffSinceApply({
158
+ ...(options.config !== undefined ? { configPath: options.config } : {}),
159
+ ...(options.memoryDetail ? { memoryDetail: true } : {}),
160
+ });
161
+ if (options.json) {
162
+ stdout(`${JSON.stringify(r.json, null, 2)}\n`);
163
+ }
164
+ else if (!r.hasDrift) {
165
+ stdout("no drift since last apply\n");
166
+ }
167
+ else {
168
+ stdout(r.output);
169
+ }
170
+ for (const w of r.warnings) {
171
+ stderr(`warning: ${w}\n`);
172
+ }
173
+ if (r.hasDrift)
174
+ throw new HarnessExitError("", EX_FAIL);
175
+ return;
176
+ }
177
+ const result = diffRun({
178
+ configPath: options.config,
179
+ project: options.project,
180
+ since: options.since,
181
+ });
182
+ // Override-layer diagnostics go to stderr so stdout stays a clean
183
+ // diff for piping (task b2660f9e).
184
+ for (const w of result.warnings)
185
+ stderr(`harness diff: ${w}\n`);
186
+ stdout(result.output);
187
+ });
188
+ }
189
+ //# sourceMappingURL=register-inspect-group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-inspect-group.js","sourceRoot":"","sources":["../../src/cli/register-inspect-group.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerOperatorLifecycle(program: Command, _io: {
3
+ stdout: (s: string) => void;
4
+ stderr: (s: string) => void;
5
+ }): void;
@@ -0,0 +1,20 @@
1
+ import { EX_FAIL, HarnessExitError } from "./exit-codes.js";
2
+ import { migrateHome } from "./migrate-home/index.js";
3
+ export function registerOperatorLifecycle(program, _io) {
4
+ program
5
+ .command("migrate-home")
6
+ .description("Move harness operator-state from the legacy ~/.claude/ root to the runtime-neutral " +
7
+ "~/.harness/ root introduced in v0.24.0. Dry-run by default; pass --apply to perform " +
8
+ "the move. Re-running on already-migrated state is a no-op. Moves: harness.yaml, " +
9
+ "harness.generated/, the leftover .understanding-gate/ of the removed " +
10
+ "gate, harness.lock. Does NOT touch settings.json " +
11
+ "or any other ~/.claude/ contents.")
12
+ .option("--apply", "perform the move (default: dry-run report only)")
13
+ .action(async (options) => {
14
+ const result = migrateHome({ ...(options.apply ? { apply: true } : {}) });
15
+ if (result.outcome === "target-conflict") {
16
+ throw new HarnessExitError("", EX_FAIL);
17
+ }
18
+ });
19
+ }
20
+ //# sourceMappingURL=register-operator-lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-operator-lifecycle.js","sourceRoot":"","sources":["../../src/cli/register-operator-lifecycle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,MAAM,UAAU,yBAAyB,CACvC,OAAgB,EAChB,GAAiE;IAEjE,OAAO;SACJ,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CACV,qFAAqF;QACnF,sFAAsF;QACtF,kFAAkF;QAClF,uEAAuE;QACvE,mDAAmD;QACnD,mCAAmC,CACtC;SACA,MAAM,CAAC,SAAS,EAAE,iDAAiD,CAAC;SACpE,MAAM,CAAC,KAAK,EAAE,OAA4B,EAAE,EAAE;QAC7C,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1E,IAAI,MAAM,CAAC,OAAO,KAAK,iBAAiB,EAAE,CAAC;YACzC,MAAM,IAAI,gBAAgB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerPackGroup(program: Command, io: {
3
+ stdout: (s: string) => void;
4
+ stderr: (s: string) => void;
5
+ }): void;