@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.
- package/CHANGELOG.md +90 -0
- package/README.md +46 -42
- package/dist/cli/add/index.js +17 -21
- package/dist/cli/add/index.js.map +1 -1
- package/dist/cli/adopt/derive.d.ts +2 -2
- package/dist/cli/adopt/derive.js +2 -19
- package/dist/cli/adopt/derive.js.map +1 -1
- package/dist/cli/adopt/index.d.ts +1 -1
- package/dist/cli/adopt/index.js +1 -12
- package/dist/cli/adopt/index.js.map +1 -1
- package/dist/cli/apply/apply.d.ts +20 -35
- package/dist/cli/apply/apply.js +61 -136
- package/dist/cli/apply/apply.js.map +1 -1
- package/dist/cli/apply/generate-codex-config.js +10 -58
- package/dist/cli/apply/generate-codex-config.js.map +1 -1
- package/dist/cli/apply/generate-memory-index.js +1 -2
- package/dist/cli/apply/generate-memory-index.js.map +1 -1
- package/dist/cli/apply/generate-opencode-config.d.ts +2 -10
- package/dist/cli/apply/generate-opencode-config.js +74 -113
- package/dist/cli/apply/generate-opencode-config.js.map +1 -1
- package/dist/cli/apply/generate-settings.d.ts +11 -64
- package/dist/cli/apply/generate-settings.js +27 -132
- package/dist/cli/apply/generate-settings.js.map +1 -1
- package/dist/cli/apply/index.d.ts +1 -1
- package/dist/cli/apply/index.js +1 -1
- package/dist/cli/apply/index.js.map +1 -1
- package/dist/cli/apply/install-codex-config.d.ts +153 -1
- package/dist/cli/apply/install-codex-config.js +445 -70
- package/dist/cli/apply/install-codex-config.js.map +1 -1
- package/dist/cli/apply/next-steps.d.ts +7 -0
- package/dist/cli/apply/next-steps.js +13 -1
- package/dist/cli/apply/next-steps.js.map +1 -1
- package/dist/cli/bounded-stdin.d.ts +0 -23
- package/dist/cli/bounded-stdin.js +2 -49
- package/dist/cli/bounded-stdin.js.map +1 -1
- package/dist/cli/describe.d.ts +1 -1
- package/dist/cli/describe.js +0 -3
- package/dist/cli/describe.js.map +1 -1
- package/dist/cli/diff/engine.d.ts +0 -11
- package/dist/cli/diff/engine.js +1 -17
- package/dist/cli/diff/engine.js.map +1 -1
- package/dist/cli/diff/index.js +14 -25
- package/dist/cli/diff/index.js.map +1 -1
- package/dist/cli/doctor/claude-mcp.d.ts +4 -19
- package/dist/cli/doctor/claude-mcp.js +11 -22
- package/dist/cli/doctor/claude-mcp.js.map +1 -1
- package/dist/cli/doctor/codex.d.ts +12 -14
- package/dist/cli/doctor/codex.js +31 -144
- package/dist/cli/doctor/codex.js.map +1 -1
- package/dist/cli/doctor/format.js +23 -338
- package/dist/cli/doctor/format.js.map +1 -1
- package/dist/cli/doctor/hook-liveness.d.ts +56 -0
- package/dist/cli/doctor/hook-liveness.js +455 -0
- package/dist/cli/doctor/hook-liveness.js.map +1 -0
- package/dist/cli/doctor/index.d.ts +13 -87
- package/dist/cli/doctor/index.js +57 -705
- package/dist/cli/doctor/index.js.map +1 -1
- package/dist/cli/doctor/opencode.d.ts +2 -1
- package/dist/cli/doctor/opencode.js.map +1 -1
- package/dist/cli/doctor/types.d.ts +21 -378
- package/dist/cli/doctor/types.js.map +1 -1
- package/dist/cli/drain-stdio.d.ts +31 -0
- package/dist/cli/drain-stdio.js +76 -0
- package/dist/cli/drain-stdio.js.map +1 -0
- package/dist/cli/export.d.ts +3 -1
- package/dist/cli/export.js +7 -16
- package/dist/cli/export.js.map +1 -1
- package/dist/cli/gate/codex-disable.d.ts +29 -0
- package/dist/cli/gate/codex-disable.js +195 -0
- package/dist/cli/gate/codex-disable.js.map +1 -0
- package/dist/cli/gate/codex-enable.d.ts +41 -0
- package/dist/cli/gate/codex-enable.js +127 -0
- package/dist/cli/gate/codex-enable.js.map +1 -0
- package/dist/cli/gate/codex-snapshot.d.ts +208 -0
- package/dist/cli/gate/codex-snapshot.js +402 -0
- package/dist/cli/gate/codex-snapshot.js.map +1 -0
- package/dist/cli/gate/disable.d.ts +9 -0
- package/dist/cli/gate/disable.js +263 -28
- package/dist/cli/gate/disable.js.map +1 -1
- package/dist/cli/gate/enable.d.ts +26 -6
- package/dist/cli/gate/enable.js +152 -80
- package/dist/cli/gate/enable.js.map +1 -1
- package/dist/cli/gate/link-chain.d.ts +53 -0
- package/dist/cli/gate/link-chain.js +122 -0
- package/dist/cli/gate/link-chain.js.map +1 -0
- package/dist/cli/gate/snapshot.d.ts +289 -12
- package/dist/cli/gate/snapshot.js +481 -22
- package/dist/cli/gate/snapshot.js.map +1 -1
- package/dist/cli/index.d.ts +0 -9
- package/dist/cli/index.js +15 -2607
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init/composer.d.ts +3 -6
- package/dist/cli/init/composer.js +6 -370
- package/dist/cli/init/composer.js.map +1 -1
- package/dist/cli/init/dependencies.d.ts +1 -2
- package/dist/cli/init/dependencies.js +4 -80
- package/dist/cli/init/dependencies.js.map +1 -1
- package/dist/cli/init/detect.js +5 -4
- package/dist/cli/init/detect.js.map +1 -1
- package/dist/cli/init/interactive.d.ts +1 -23
- package/dist/cli/init/interactive.js +33 -247
- package/dist/cli/init/interactive.js.map +1 -1
- package/dist/cli/init/profiles.d.ts +2 -2
- package/dist/cli/init/profiles.js +51 -243
- package/dist/cli/init/profiles.js.map +1 -1
- package/dist/cli/init/templates.d.ts +2 -37
- package/dist/cli/init/templates.js +25 -1237
- package/dist/cli/init/templates.js.map +1 -1
- package/dist/cli/list.d.ts +1 -1
- package/dist/cli/list.js +1 -38
- package/dist/cli/list.js.map +1 -1
- package/dist/cli/loader.d.ts +15 -1
- package/dist/cli/loader.js +56 -39
- package/dist/cli/loader.js.map +1 -1
- package/dist/cli/main.js +7 -2
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/migrate-home/index.js +2 -2
- package/dist/cli/migrate-home/index.js.map +1 -1
- package/dist/cli/pack/add.js +1 -1
- package/dist/cli/pack/add.js.map +1 -1
- package/dist/cli/pack/hook-bootstrap.d.ts +5 -164
- package/dist/cli/pack/hook-bootstrap.js +15 -291
- package/dist/cli/pack/hook-bootstrap.js.map +1 -1
- package/dist/cli/pack/hook-branch-protection.d.ts +28 -21
- package/dist/cli/pack/hook-branch-protection.js +365 -340
- package/dist/cli/pack/hook-branch-protection.js.map +1 -1
- package/dist/cli/pack/index.d.ts +0 -1
- package/dist/cli/pack/index.js +0 -1
- package/dist/cli/pack/index.js.map +1 -1
- package/dist/cli/pack/list.js +1 -6
- package/dist/cli/pack/list.js.map +1 -1
- package/dist/cli/pack/mutate.d.ts +7 -9
- package/dist/cli/pack/mutate.js +6 -9
- package/dist/cli/pack/mutate.js.map +1 -1
- package/dist/cli/pack/reseed.d.ts +2 -2
- package/dist/cli/pack/reseed.js +16 -22
- package/dist/cli/pack/reseed.js.map +1 -1
- package/dist/cli/register-gate-group.d.ts +5 -0
- package/dist/cli/register-gate-group.js +348 -0
- package/dist/cli/register-gate-group.js.map +1 -0
- package/dist/cli/register-inspect-group.d.ts +6 -0
- package/dist/cli/register-inspect-group.js +189 -0
- package/dist/cli/register-inspect-group.js.map +1 -0
- package/dist/cli/register-operator-lifecycle.d.ts +5 -0
- package/dist/cli/register-operator-lifecycle.js +20 -0
- package/dist/cli/register-operator-lifecycle.js.map +1 -0
- package/dist/cli/register-pack-group.d.ts +5 -0
- package/dist/cli/register-pack-group.js +134 -0
- package/dist/cli/register-pack-group.js.map +1 -0
- package/dist/cli/register-setup-group.d.ts +5 -0
- package/dist/cli/register-setup-group.js +495 -0
- package/dist/cli/register-setup-group.js.map +1 -0
- package/dist/cli/remove/index.d.ts +0 -14
- package/dist/cli/remove/index.js +2 -115
- package/dist/cli/remove/index.js.map +1 -1
- package/dist/cli/remove/mutate.d.ts +0 -2
- package/dist/cli/remove/mutate.js +1 -19
- package/dist/cli/remove/mutate.js.map +1 -1
- package/dist/cli/remove/register.d.ts +5 -0
- package/dist/cli/remove/register.js +25 -0
- package/dist/cli/remove/register.js.map +1 -0
- package/dist/cli/shell-quote.d.ts +7 -0
- package/dist/cli/shell-quote.js +17 -0
- package/dist/cli/shell-quote.js.map +1 -0
- package/dist/cli/uninstall/index.d.ts +4 -2
- package/dist/cli/uninstall/index.js +15 -7
- package/dist/cli/uninstall/index.js.map +1 -1
- package/dist/cli/uninstall/register.d.ts +5 -0
- package/dist/cli/uninstall/register.js +171 -0
- package/dist/cli/uninstall/register.js.map +1 -0
- package/dist/cli/uninstall/snapshot.d.ts +15 -0
- package/dist/cli/uninstall/snapshot.js +38 -0
- package/dist/cli/uninstall/snapshot.js.map +1 -1
- package/dist/cli/validate/checks.d.ts +0 -77
- package/dist/cli/validate/checks.js +3 -1049
- package/dist/cli/validate/checks.js.map +1 -1
- package/dist/cli/validate/index.js +19 -15
- package/dist/cli/validate/index.js.map +1 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.js +0 -3
- package/dist/index.js.map +1 -1
- package/dist/io/claude-mcp.d.ts +1 -1
- package/dist/io/claude-mcp.js +27 -14
- package/dist/io/claude-mcp.js.map +1 -1
- package/dist/io/harness-lock.js +2 -2
- package/dist/io/harness-lock.js.map +1 -1
- package/dist/io/lock.d.ts +0 -26
- package/dist/io/lock.js +10 -27
- package/dist/io/lock.js.map +1 -1
- package/dist/io/merge-settings.js +6 -4
- package/dist/io/merge-settings.js.map +1 -1
- package/dist/io/project-name.d.ts +22 -39
- package/dist/io/project-name.js +25 -42
- package/dist/io/project-name.js.map +1 -1
- package/dist/io/read-regular-file.d.ts +103 -40
- package/dist/io/read-regular-file.js +196 -35
- package/dist/io/read-regular-file.js.map +1 -1
- package/dist/io/restart-hints.js +3 -6
- package/dist/io/restart-hints.js.map +1 -1
- package/dist/io/version-compare.d.ts +1 -3
- package/dist/io/version-compare.js +1 -3
- package/dist/io/version-compare.js.map +1 -1
- package/dist/io/write-regular-file.d.ts +30 -0
- package/dist/io/write-regular-file.js +85 -0
- package/dist/io/write-regular-file.js.map +1 -0
- package/dist/overrides/index.d.ts +1 -0
- package/dist/overrides/index.js +1 -0
- package/dist/overrides/index.js.map +1 -1
- package/dist/overrides/merge-layers.d.ts +43 -0
- package/dist/overrides/merge-layers.js +76 -0
- package/dist/overrides/merge-layers.js.map +1 -0
- package/dist/overrides/merge.d.ts +16 -0
- package/dist/overrides/merge.js +21 -8
- package/dist/overrides/merge.js.map +1 -1
- package/dist/policy-packs/builtin/branch-protection-runtime.d.ts +4 -69
- package/dist/policy-packs/builtin/branch-protection-runtime.js +12 -84
- package/dist/policy-packs/builtin/branch-protection-runtime.js.map +1 -1
- package/dist/policy-packs/builtin/branch-protection.d.ts +7 -30
- package/dist/policy-packs/builtin/branch-protection.js +56 -89
- package/dist/policy-packs/builtin/branch-protection.js.map +1 -1
- package/dist/policy-packs/config-check.d.ts +7 -5
- package/dist/policy-packs/config-check.js +2 -2
- package/dist/policy-packs/config-check.js.map +1 -1
- package/dist/policy-packs/expand.d.ts +1 -3
- package/dist/policy-packs/expand.js +5 -42
- package/dist/policy-packs/expand.js.map +1 -1
- package/dist/policy-packs/index.d.ts +3 -3
- package/dist/policy-packs/index.js +2 -2
- package/dist/policy-packs/index.js.map +1 -1
- package/dist/policy-packs/registry.d.ts +9 -38
- package/dist/policy-packs/registry.js +5 -65
- package/dist/policy-packs/registry.js.map +1 -1
- package/dist/policy-packs/runtime.d.ts +0 -4
- package/dist/policy-packs/runtime.js +9 -22
- package/dist/policy-packs/runtime.js.map +1 -1
- package/dist/policy-packs/types.d.ts +0 -19
- package/dist/policy-packs/ux-compare.d.ts +1 -11
- package/dist/policy-packs/ux-compare.js +6 -42
- package/dist/policy-packs/ux-compare.js.map +1 -1
- package/dist/policy-packs/ux-drift-check.d.ts +5 -5
- package/dist/policy-packs/ux-drift-check.js +17 -22
- package/dist/policy-packs/ux-drift-check.js.map +1 -1
- package/dist/policy-packs/version-check.d.ts +5 -26
- package/dist/policy-packs/version-check.js +19 -74
- package/dist/policy-packs/version-check.js.map +1 -1
- package/dist/probes/memory.d.ts +1 -1
- package/dist/probes/memory.js +1 -1
- package/dist/probes/memory.js.map +1 -1
- package/dist/runtime/agent-facing.d.ts +9 -0
- package/dist/runtime/agent-facing.js +28 -14
- package/dist/runtime/agent-facing.js.map +1 -1
- package/dist/runtime/bounded-text.d.ts +15 -0
- package/dist/runtime/bounded-text.js +27 -0
- package/dist/runtime/bounded-text.js.map +1 -0
- package/dist/runtime/git-branch.d.ts +125 -0
- package/dist/runtime/git-branch.js +381 -0
- package/dist/runtime/git-branch.js.map +1 -0
- package/dist/runtime/hermetic-spawn-guard.d.ts +2 -2
- package/dist/runtime/hermetic-spawn-guard.js +24 -34
- package/dist/runtime/hermetic-spawn-guard.js.map +1 -1
- package/dist/runtime/home-dir.js +3 -2
- package/dist/runtime/home-dir.js.map +1 -1
- package/dist/runtime/tool-name-aliases.d.ts +0 -6
- package/dist/runtime/tool-name-aliases.js +5 -18
- package/dist/runtime/tool-name-aliases.js.map +1 -1
- package/dist/schema/grounding.d.ts +7 -54
- package/dist/schema/grounding.js +10 -12
- package/dist/schema/grounding.js.map +1 -1
- package/dist/schema/hooks.d.ts +39 -136
- package/dist/schema/hooks.js +3 -6
- package/dist/schema/hooks.js.map +1 -1
- package/dist/schema/index.d.ts +114 -3828
- package/dist/schema/index.js +41 -80
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/memory.d.ts +54 -131
- package/dist/schema/memory.js +2 -2
- package/dist/schema/memory.js.map +1 -1
- package/dist/schema/policy-packs.d.ts +3 -45
- package/dist/schema/policy-packs.js +7 -13
- package/dist/schema/policy-packs.js.map +1 -1
- package/dist/schema/policy-ux.d.ts +7 -0
- package/dist/schema/policy-ux.js +18 -0
- package/dist/schema/policy-ux.js.map +1 -0
- package/dist/schema/removed-keys.d.ts +185 -0
- package/dist/schema/removed-keys.js +531 -0
- package/dist/schema/removed-keys.js.map +1 -0
- package/dist/schema/tools.d.ts +30 -268
- package/dist/schema/tools.js +4 -4
- package/dist/schema/tools.js.map +1 -1
- package/package.json +5 -16
- package/dist/cli/approve/branch-protection.d.ts +0 -69
- package/dist/cli/approve/branch-protection.js +0 -144
- package/dist/cli/approve/branch-protection.js.map +0 -1
- package/dist/cli/approve/risk.d.ts +0 -112
- package/dist/cli/approve/risk.js +0 -197
- package/dist/cli/approve/risk.js.map +0 -1
- package/dist/cli/approve/stdin-report.d.ts +0 -57
- package/dist/cli/approve/stdin-report.js +0 -145
- package/dist/cli/approve/stdin-report.js.map +0 -1
- package/dist/cli/approve/understanding.d.ts +0 -410
- package/dist/cli/approve/understanding.js +0 -996
- package/dist/cli/approve/understanding.js.map +0 -1
- package/dist/cli/audit.d.ts +0 -80
- package/dist/cli/audit.js +0 -252
- package/dist/cli/audit.js.map +0 -1
- package/dist/cli/delegate/index.d.ts +0 -76
- package/dist/cli/delegate/index.js +0 -443
- package/dist/cli/delegate/index.js.map +0 -1
- package/dist/cli/doctor/auto-approve-mode.d.ts +0 -37
- package/dist/cli/doctor/auto-approve-mode.js +0 -80
- package/dist/cli/doctor/auto-approve-mode.js.map +0 -1
- package/dist/cli/doctor/bypass-without-auto-approve.d.ts +0 -38
- package/dist/cli/doctor/bypass-without-auto-approve.js +0 -95
- package/dist/cli/doctor/bypass-without-auto-approve.js.map +0 -1
- package/dist/cli/doctor/codex-config-drift.d.ts +0 -28
- package/dist/cli/doctor/codex-config-drift.js +0 -240
- package/dist/cli/doctor/codex-config-drift.js.map +0 -1
- package/dist/cli/doctor/rogue-ledger.d.ts +0 -53
- package/dist/cli/doctor/rogue-ledger.js +0 -153
- package/dist/cli/doctor/rogue-ledger.js.map +0 -1
- package/dist/cli/doctor/session-start-preflight-setup-version.d.ts +0 -83
- package/dist/cli/doctor/session-start-preflight-setup-version.js +0 -114
- package/dist/cli/doctor/session-start-preflight-setup-version.js.map +0 -1
- package/dist/cli/doctor/settings-drift.d.ts +0 -25
- package/dist/cli/doctor/settings-drift.js +0 -213
- package/dist/cli/doctor/settings-drift.js.map +0 -1
- package/dist/cli/doctor/toolchain-parity.d.ts +0 -63
- package/dist/cli/doctor/toolchain-parity.js +0 -154
- package/dist/cli/doctor/toolchain-parity.js.map +0 -1
- package/dist/cli/doctor/ug-auto-approvals.d.ts +0 -40
- package/dist/cli/doctor/ug-auto-approvals.js +0 -91
- package/dist/cli/doctor/ug-auto-approvals.js.map +0 -1
- package/dist/cli/doctor/ug-delegations.d.ts +0 -26
- package/dist/cli/doctor/ug-delegations.js +0 -121
- package/dist/cli/doctor/ug-delegations.js.map +0 -1
- package/dist/cli/doctor/ug-inflight.d.ts +0 -35
- package/dist/cli/doctor/ug-inflight.js +0 -57
- package/dist/cli/doctor/ug-inflight.js.map +0 -1
- package/dist/cli/doctor/understanding-mode-env.d.ts +0 -51
- package/dist/cli/doctor/understanding-mode-env.js +0 -98
- package/dist/cli/doctor/understanding-mode-env.js.map +0 -1
- package/dist/cli/dry-run.d.ts +0 -46
- package/dist/cli/dry-run.js +0 -250
- package/dist/cli/dry-run.js.map +0 -1
- package/dist/cli/event-input.d.ts +0 -28
- package/dist/cli/event-input.js +0 -73
- package/dist/cli/event-input.js.map +0 -1
- package/dist/cli/explain-action.d.ts +0 -20
- package/dist/cli/explain-action.js +0 -27
- package/dist/cli/explain-action.js.map +0 -1
- package/dist/cli/explain-policy.d.ts +0 -135
- package/dist/cli/explain-policy.js +0 -266
- package/dist/cli/explain-policy.js.map +0 -1
- package/dist/cli/explain.d.ts +0 -31
- package/dist/cli/explain.js +0 -159
- package/dist/cli/explain.js.map +0 -1
- package/dist/cli/gc/index.d.ts +0 -63
- package/dist/cli/gc/index.js +0 -566
- package/dist/cli/gc/index.js.map +0 -1
- package/dist/cli/pack/approve-escape.d.ts +0 -19
- package/dist/cli/pack/approve-escape.js +0 -190
- package/dist/cli/pack/approve-escape.js.map +0 -1
- package/dist/cli/pack/auto-approve-path.d.ts +0 -146
- package/dist/cli/pack/auto-approve-path.js +0 -462
- package/dist/cli/pack/auto-approve-path.js.map +0 -1
- package/dist/cli/pack/hook-codex-post-tool-use.d.ts +0 -25
- package/dist/cli/pack/hook-codex-post-tool-use.js +0 -160
- package/dist/cli/pack/hook-codex-post-tool-use.js.map +0 -1
- package/dist/cli/pack/hook-codex-pre-tool-use.d.ts +0 -48
- package/dist/cli/pack/hook-codex-pre-tool-use.js +0 -474
- package/dist/cli/pack/hook-codex-pre-tool-use.js.map +0 -1
- package/dist/cli/pack/hook-codex-stop.d.ts +0 -35
- package/dist/cli/pack/hook-codex-stop.js +0 -329
- package/dist/cli/pack/hook-codex-stop.js.map +0 -1
- package/dist/cli/pack/hook-codex-user-prompt-submit.d.ts +0 -24
- package/dist/cli/pack/hook-codex-user-prompt-submit.js +0 -93
- package/dist/cli/pack/hook-codex-user-prompt-submit.js.map +0 -1
- package/dist/cli/pack/hook-post-merge-gate-record.d.ts +0 -37
- package/dist/cli/pack/hook-post-merge-gate-record.js +0 -190
- package/dist/cli/pack/hook-post-merge-gate-record.js.map +0 -1
- package/dist/cli/pack/hook-post-merge-gate.d.ts +0 -34
- package/dist/cli/pack/hook-post-merge-gate.js +0 -277
- package/dist/cli/pack/hook-post-merge-gate.js.map +0 -1
- package/dist/cli/pack/hook-post-tool-use.d.ts +0 -45
- package/dist/cli/pack/hook-post-tool-use.js +0 -137
- package/dist/cli/pack/hook-post-tool-use.js.map +0 -1
- package/dist/cli/pack/hook-pre-tool-use.d.ts +0 -92
- package/dist/cli/pack/hook-pre-tool-use.js +0 -1328
- package/dist/cli/pack/hook-pre-tool-use.js.map +0 -1
- package/dist/cli/pack/hook-runtime-reality.d.ts +0 -63
- package/dist/cli/pack/hook-runtime-reality.js +0 -210
- package/dist/cli/pack/hook-runtime-reality.js.map +0 -1
- package/dist/cli/pack/hook-solution-acceptance-writeguard.d.ts +0 -32
- package/dist/cli/pack/hook-solution-acceptance-writeguard.js +0 -337
- package/dist/cli/pack/hook-solution-acceptance-writeguard.js.map +0 -1
- package/dist/cli/pack/hook-solution-acceptance.d.ts +0 -157
- package/dist/cli/pack/hook-solution-acceptance.js +0 -530
- package/dist/cli/pack/hook-solution-acceptance.js.map +0 -1
- package/dist/cli/pack/hook-stay-in-scope.d.ts +0 -37
- package/dist/cli/pack/hook-stay-in-scope.js +0 -128
- package/dist/cli/pack/hook-stay-in-scope.js.map +0 -1
- package/dist/cli/pack/hook-subagent-start.d.ts +0 -23
- package/dist/cli/pack/hook-subagent-start.js +0 -88
- package/dist/cli/pack/hook-subagent-start.js.map +0 -1
- package/dist/cli/pack/hook-subagent-stop.d.ts +0 -19
- package/dist/cli/pack/hook-subagent-stop.js +0 -41
- package/dist/cli/pack/hook-subagent-stop.js.map +0 -1
- package/dist/cli/pack/hook-track-active-claim.d.ts +0 -27
- package/dist/cli/pack/hook-track-active-claim.js +0 -275
- package/dist/cli/pack/hook-track-active-claim.js.map +0 -1
- package/dist/cli/pack/transcript-report-scan.d.ts +0 -71
- package/dist/cli/pack/transcript-report-scan.js +0 -359
- package/dist/cli/pack/transcript-report-scan.js.map +0 -1
- package/dist/cli/pack/understanding-report-schema-hint.d.ts +0 -26
- package/dist/cli/pack/understanding-report-schema-hint.js +0 -120
- package/dist/cli/pack/understanding-report-schema-hint.js.map +0 -1
- package/dist/cli/pack/upgrade.d.ts +0 -32
- package/dist/cli/pack/upgrade.js +0 -273
- package/dist/cli/pack/upgrade.js.map +0 -1
- package/dist/cli/pause/index.d.ts +0 -113
- package/dist/cli/pause/index.js +0 -251
- package/dist/cli/pause/index.js.map +0 -1
- package/dist/cli/pause-check.d.ts +0 -22
- package/dist/cli/pause-check.js +0 -54
- package/dist/cli/pause-check.js.map +0 -1
- package/dist/cli/policy/intercept.d.ts +0 -233
- package/dist/cli/policy/intercept.js +0 -1020
- package/dist/cli/policy/intercept.js.map +0 -1
- package/dist/cli/policy/risk-envelope-enrichment.d.ts +0 -40
- package/dist/cli/policy/risk-envelope-enrichment.js +0 -108
- package/dist/cli/policy/risk-envelope-enrichment.js.map +0 -1
- package/dist/cli/record/index.d.ts +0 -81
- package/dist/cli/record/index.js +0 -348
- package/dist/cli/record/index.js.map +0 -1
- package/dist/cli/resolve-env.d.ts +0 -32
- package/dist/cli/resolve-env.js +0 -47
- package/dist/cli/resolve-env.js.map +0 -1
- package/dist/cli/session-export/index.d.ts +0 -46
- package/dist/cli/session-export/index.js +0 -169
- package/dist/cli/session-export/index.js.map +0 -1
- package/dist/cli/session-export/redact.d.ts +0 -22
- package/dist/cli/session-export/redact.js +0 -47
- package/dist/cli/session-export/redact.js.map +0 -1
- package/dist/cli/session-export/transcript.d.ts +0 -24
- package/dist/cli/session-export/transcript.js +0 -164
- package/dist/cli/session-export/transcript.js.map +0 -1
- package/dist/cli/session-start/branch-check.d.ts +0 -18
- package/dist/cli/session-start/branch-check.js +0 -140
- package/dist/cli/session-start/branch-check.js.map +0 -1
- package/dist/cli/session-start/index.d.ts +0 -121
- package/dist/cli/session-start/index.js +0 -591
- package/dist/cli/session-start/index.js.map +0 -1
- package/dist/cli/session-start/shared-options.d.ts +0 -103
- package/dist/cli/session-start/shared-options.js +0 -107
- package/dist/cli/session-start/shared-options.js.map +0 -1
- package/dist/cli/session-start/stale-base-check.d.ts +0 -46
- package/dist/cli/session-start/stale-base-check.js +0 -352
- package/dist/cli/session-start/stale-base-check.js.map +0 -1
- package/dist/cli/session-start/toolchain-parity.d.ts +0 -267
- package/dist/cli/session-start/toolchain-parity.js +0 -797
- package/dist/cli/session-start/toolchain-parity.js.map +0 -1
- package/dist/cli/smoke/assertions.d.ts +0 -46
- package/dist/cli/smoke/assertions.js +0 -170
- package/dist/cli/smoke/assertions.js.map +0 -1
- package/dist/cli/smoke/index.d.ts +0 -76
- package/dist/cli/smoke/index.js +0 -245
- package/dist/cli/smoke/index.js.map +0 -1
- package/dist/cli/smoke/runner.d.ts +0 -55
- package/dist/cli/smoke/runner.js +0 -134
- package/dist/cli/smoke/runner.js.map +0 -1
- package/dist/cli/smoke/stream-parser.d.ts +0 -65
- package/dist/cli/smoke/stream-parser.js +0 -115
- package/dist/cli/smoke/stream-parser.js.map +0 -1
- package/dist/cli/test-risk.d.ts +0 -26
- package/dist/cli/test-risk.js +0 -34
- package/dist/cli/test-risk.js.map +0 -1
- package/dist/io/display-path.d.ts +0 -11
- package/dist/io/display-path.js +0 -29
- package/dist/io/display-path.js.map +0 -1
- package/dist/io/duration.d.ts +0 -5
- package/dist/io/duration.js +0 -50
- package/dist/io/duration.js.map +0 -1
- package/dist/io/extract.d.ts +0 -79
- package/dist/io/extract.js +0 -226
- package/dist/io/extract.js.map +0 -1
- package/dist/io/ledger-record.d.ts +0 -83
- package/dist/io/ledger-record.js +0 -301
- package/dist/io/ledger-record.js.map +0 -1
- package/dist/io/read-json-dir-entries.d.ts +0 -36
- package/dist/io/read-json-dir-entries.js +0 -48
- package/dist/io/read-json-dir-entries.js.map +0 -1
- package/dist/io/safe-json-parse.d.ts +0 -5
- package/dist/io/safe-json-parse.js +0 -21
- package/dist/io/safe-json-parse.js.map +0 -1
- package/dist/policies/index.d.ts +0 -5
- package/dist/policies/index.js +0 -6
- package/dist/policies/index.js.map +0 -1
- package/dist/policies/ledger-client.d.ts +0 -113
- package/dist/policies/ledger-client.js +0 -500
- package/dist/policies/ledger-client.js.map +0 -1
- package/dist/policies/producers.d.ts +0 -12
- package/dist/policies/producers.js +0 -61
- package/dist/policies/producers.js.map +0 -1
- package/dist/policies/requires.d.ts +0 -75
- package/dist/policies/requires.js +0 -240
- package/dist/policies/requires.js.map +0 -1
- package/dist/policies/timestamp.d.ts +0 -14
- package/dist/policies/timestamp.js +0 -36
- package/dist/policies/timestamp.js.map +0 -1
- package/dist/policy-packs/builtin/permission-profiles.d.ts +0 -11
- package/dist/policy-packs/builtin/permission-profiles.js +0 -74
- package/dist/policy-packs/builtin/permission-profiles.js.map +0 -1
- package/dist/policy-packs/builtin/post-merge-gate-runtime.d.ts +0 -286
- package/dist/policy-packs/builtin/post-merge-gate-runtime.js +0 -397
- package/dist/policy-packs/builtin/post-merge-gate-runtime.js.map +0 -1
- package/dist/policy-packs/builtin/post-merge-gate.d.ts +0 -56
- package/dist/policy-packs/builtin/post-merge-gate.js +0 -347
- package/dist/policy-packs/builtin/post-merge-gate.js.map +0 -1
- package/dist/policy-packs/builtin/solution-acceptance-reconnect.d.ts +0 -50
- package/dist/policy-packs/builtin/solution-acceptance-reconnect.js +0 -151
- package/dist/policy-packs/builtin/solution-acceptance-reconnect.js.map +0 -1
- package/dist/policy-packs/builtin/solution-acceptance-runtime.d.ts +0 -323
- package/dist/policy-packs/builtin/solution-acceptance-runtime.js +0 -672
- package/dist/policy-packs/builtin/solution-acceptance-runtime.js.map +0 -1
- package/dist/policy-packs/builtin/solution-acceptance.d.ts +0 -45
- package/dist/policy-packs/builtin/solution-acceptance.js +0 -226
- package/dist/policy-packs/builtin/solution-acceptance.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/active-claim.d.ts +0 -25
- package/dist/policy-packs/builtin/understanding-before-execution/active-claim.js +0 -94
- package/dist/policy-packs/builtin/understanding-before-execution/active-claim.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/auto-approve-default.d.ts +0 -35
- package/dist/policy-packs/builtin/understanding-before-execution/auto-approve-default.js +0 -86
- package/dist/policy-packs/builtin/understanding-before-execution/auto-approve-default.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/auto-approve.d.ts +0 -210
- package/dist/policy-packs/builtin/understanding-before-execution/auto-approve.js +0 -361
- package/dist/policy-packs/builtin/understanding-before-execution/auto-approve.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/delegation-markers.d.ts +0 -304
- package/dist/policy-packs/builtin/understanding-before-execution/delegation-markers.js +0 -734
- package/dist/policy-packs/builtin/understanding-before-execution/delegation-markers.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/expiry-reason.d.ts +0 -36
- package/dist/policy-packs/builtin/understanding-before-execution/expiry-reason.js +0 -73
- package/dist/policy-packs/builtin/understanding-before-execution/expiry-reason.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/index.d.ts +0 -19
- package/dist/policy-packs/builtin/understanding-before-execution/index.js +0 -83
- package/dist/policy-packs/builtin/understanding-before-execution/index.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/inflight-records.d.ts +0 -135
- package/dist/policy-packs/builtin/understanding-before-execution/inflight-records.js +0 -618
- package/dist/policy-packs/builtin/understanding-before-execution/inflight-records.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/ledger.d.ts +0 -25
- package/dist/policy-packs/builtin/understanding-before-execution/ledger.js +0 -56
- package/dist/policy-packs/builtin/understanding-before-execution/ledger.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/lifecycle.d.ts +0 -20
- package/dist/policy-packs/builtin/understanding-before-execution/lifecycle.js +0 -93
- package/dist/policy-packs/builtin/understanding-before-execution/lifecycle.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/markers.d.ts +0 -126
- package/dist/policy-packs/builtin/understanding-before-execution/markers.js +0 -245
- package/dist/policy-packs/builtin/understanding-before-execution/markers.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/measured-permission-modes.d.ts +0 -29
- package/dist/policy-packs/builtin/understanding-before-execution/measured-permission-modes.js +0 -82
- package/dist/policy-packs/builtin/understanding-before-execution/measured-permission-modes.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/permission-mode-observations.d.ts +0 -71
- package/dist/policy-packs/builtin/understanding-before-execution/permission-mode-observations.js +0 -175
- package/dist/policy-packs/builtin/understanding-before-execution/permission-mode-observations.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/persisted-reports.d.ts +0 -620
- package/dist/policy-packs/builtin/understanding-before-execution/persisted-reports.js +0 -1047
- package/dist/policy-packs/builtin/understanding-before-execution/persisted-reports.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/post-tool-use-boundary.d.ts +0 -128
- package/dist/policy-packs/builtin/understanding-before-execution/post-tool-use-boundary.js +0 -213
- package/dist/policy-packs/builtin/understanding-before-execution/post-tool-use-boundary.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/stay-in-scope-config.d.ts +0 -129
- package/dist/policy-packs/builtin/understanding-before-execution/stay-in-scope-config.js +0 -166
- package/dist/policy-packs/builtin/understanding-before-execution/stay-in-scope-config.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/task-markers.d.ts +0 -164
- package/dist/policy-packs/builtin/understanding-before-execution/task-markers.js +0 -275
- package/dist/policy-packs/builtin/understanding-before-execution/task-markers.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution-runtime.d.ts +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution-runtime.js +0 -10
- package/dist/policy-packs/builtin/understanding-before-execution-runtime.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution.d.ts +0 -526
- package/dist/policy-packs/builtin/understanding-before-execution.js +0 -1074
- package/dist/policy-packs/builtin/understanding-before-execution.js.map +0 -1
- package/dist/policy-packs/permission-translator.d.ts +0 -9
- package/dist/policy-packs/permission-translator.js +0 -76
- package/dist/policy-packs/permission-translator.js.map +0 -1
- package/dist/runtime/action-envelope.d.ts +0 -64
- package/dist/runtime/action-envelope.js +0 -46
- package/dist/runtime/action-envelope.js.map +0 -1
- package/dist/runtime/approval-signing.d.ts +0 -111
- package/dist/runtime/approval-signing.js +0 -384
- package/dist/runtime/approval-signing.js.map +0 -1
- package/dist/runtime/bash-match-facts.d.ts +0 -60
- package/dist/runtime/bash-match-facts.js +0 -196
- package/dist/runtime/bash-match-facts.js.map +0 -1
- package/dist/runtime/bash-match-registry.d.ts +0 -112
- package/dist/runtime/bash-match-registry.js +0 -406
- package/dist/runtime/bash-match-registry.js.map +0 -1
- package/dist/runtime/bash-prefix-parse.d.ts +0 -31
- package/dist/runtime/bash-prefix-parse.js +0 -576
- package/dist/runtime/bash-prefix-parse.js.map +0 -1
- package/dist/runtime/command-normalize.d.ts +0 -658
- package/dist/runtime/command-normalize.js +0 -2410
- package/dist/runtime/command-normalize.js.map +0 -1
- package/dist/runtime/deletion-target-resolve.d.ts +0 -28
- package/dist/runtime/deletion-target-resolve.js +0 -1078
- package/dist/runtime/deletion-target-resolve.js.map +0 -1
- package/dist/runtime/destructive-shell-floor.d.ts +0 -19
- package/dist/runtime/destructive-shell-floor.js +0 -611
- package/dist/runtime/destructive-shell-floor.js.map +0 -1
- package/dist/runtime/environment-resolver.d.ts +0 -36
- package/dist/runtime/environment-resolver.js +0 -138
- package/dist/runtime/environment-resolver.js.map +0 -1
- package/dist/runtime/git-context.d.ts +0 -201
- package/dist/runtime/git-context.js +0 -422
- package/dist/runtime/git-context.js.map +0 -1
- package/dist/runtime/index.d.ts +0 -12
- package/dist/runtime/index.js +0 -13
- package/dist/runtime/index.js.map +0 -1
- package/dist/runtime/intercept.d.ts +0 -494
- package/dist/runtime/intercept.js +0 -1313
- package/dist/runtime/intercept.js.map +0 -1
- package/dist/runtime/kube-context.d.ts +0 -16
- package/dist/runtime/kube-context.js +0 -63
- package/dist/runtime/kube-context.js.map +0 -1
- package/dist/runtime/kubectl-target-parse.d.ts +0 -31
- package/dist/runtime/kubectl-target-parse.js +0 -249
- package/dist/runtime/kubectl-target-parse.js.map +0 -1
- package/dist/runtime/ledger-add.d.ts +0 -16
- package/dist/runtime/ledger-add.js +0 -150
- package/dist/runtime/ledger-add.js.map +0 -1
- package/dist/runtime/ledger-writer.d.ts +0 -27
- package/dist/runtime/ledger-writer.js +0 -46
- package/dist/runtime/ledger-writer.js.map +0 -1
- package/dist/runtime/pause-sentinel.d.ts +0 -60
- package/dist/runtime/pause-sentinel.js +0 -156
- package/dist/runtime/pause-sentinel.js.map +0 -1
- package/dist/runtime/pending-approval.d.ts +0 -23
- package/dist/runtime/pending-approval.js +0 -67
- package/dist/runtime/pending-approval.js.map +0 -1
- package/dist/runtime/read-only-bash.d.ts +0 -141
- package/dist/runtime/read-only-bash.js +0 -2204
- package/dist/runtime/read-only-bash.js.map +0 -1
- package/dist/runtime/recovery-git-commit.d.ts +0 -22
- package/dist/runtime/recovery-git-commit.js +0 -284
- package/dist/runtime/recovery-git-commit.js.map +0 -1
- package/dist/runtime/reject-malformed-session-id.d.ts +0 -8
- package/dist/runtime/reject-malformed-session-id.js +0 -16
- package/dist/runtime/reject-malformed-session-id.js.map +0 -1
- package/dist/runtime/risk-classifier.d.ts +0 -38
- package/dist/runtime/risk-classifier.js +0 -311
- package/dist/runtime/risk-classifier.js.map +0 -1
- package/dist/runtime/session-id.d.ts +0 -113
- package/dist/runtime/session-id.js +0 -193
- package/dist/runtime/session-id.js.map +0 -1
- package/dist/runtime/shell-word.d.ts +0 -62
- package/dist/runtime/shell-word.js +0 -410
- package/dist/runtime/shell-word.js.map +0 -1
- package/dist/runtime/task-providers/agent-tasks.d.ts +0 -103
- package/dist/runtime/task-providers/agent-tasks.js +0 -245
- package/dist/runtime/task-providers/agent-tasks.js.map +0 -1
- package/dist/runtime/when-eval.d.ts +0 -62
- package/dist/runtime/when-eval.js +0 -212
- package/dist/runtime/when-eval.js.map +0 -1
- package/dist/runtime/workflow-policies.d.ts +0 -207
- package/dist/runtime/workflow-policies.js +0 -596
- package/dist/runtime/workflow-policies.js.map +0 -1
- package/dist/schema/audit.d.ts +0 -71
- package/dist/schema/audit.js +0 -32
- package/dist/schema/audit.js.map +0 -1
- package/dist/schema/doctor.d.ts +0 -25
- package/dist/schema/doctor.js +0 -23
- package/dist/schema/doctor.js.map +0 -1
- package/dist/schema/environments.d.ts +0 -215
- package/dist/schema/environments.js +0 -101
- package/dist/schema/environments.js.map +0 -1
- package/dist/schema/extract.d.ts +0 -9
- package/dist/schema/extract.js +0 -86
- package/dist/schema/extract.js.map +0 -1
- package/dist/schema/permission-profiles.d.ts +0 -2292
- package/dist/schema/permission-profiles.js +0 -60
- package/dist/schema/permission-profiles.js.map +0 -1
- package/dist/schema/policies.d.ts +0 -974
- package/dist/schema/policies.js +0 -298
- package/dist/schema/policies.js.map +0 -1
- package/dist/schema/requires.d.ts +0 -131
- package/dist/schema/requires.js +0 -88
- package/dist/schema/requires.js.map +0 -1
- package/dist/schema/risk.d.ts +0 -144
- package/dist/schema/risk.js +0 -194
- package/dist/schema/risk.js.map +0 -1
- package/dist/schema/session-start-preflight.d.ts +0 -10
- package/dist/schema/session-start-preflight.js +0 -106
- package/dist/schema/session-start-preflight.js.map +0 -1
- package/dist/schema/stale-base-check.d.ts +0 -18
- package/dist/schema/stale-base-check.js +0 -37
- package/dist/schema/stale-base-check.js.map +0 -1
- package/dist/schema/toolchain-parity.d.ts +0 -21
- package/dist/schema/toolchain-parity.js +0 -48
- package/dist/schema/toolchain-parity.js.map +0 -1
- package/dist/schema/workflows.d.ts +0 -519
- package/dist/schema/workflows.js +0 -81
- package/dist/schema/workflows.js.map +0 -1
- 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":"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"}
|
|
@@ -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,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"}
|