@lannguyensi/harness 0.64.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +64 -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 -345
- 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 -713
- 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 -387
- 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 +9 -2131
- 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 -245
- 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/{delegate/register.d.ts → register-gate-group.d.ts} +1 -1
- 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 +1 -1
- package/dist/cli/register-operator-lifecycle.js +3 -100
- package/dist/cli/register-operator-lifecycle.js.map +1 -1
- 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-audit-group.d.ts → register-setup-group.d.ts} +1 -1
- 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.js +2 -19
- package/dist/cli/remove/register.js.map +1 -1
- 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.js +6 -4
- package/dist/cli/uninstall/register.js.map +1 -1
- 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 -444
- package/dist/cli/delegate/index.js.map +0 -1
- package/dist/cli/delegate/register.js +0 -90
- package/dist/cli/delegate/register.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/expire-on-tool-match.d.ts +0 -15
- package/dist/cli/doctor/expire-on-tool-match.js +0 -58
- package/dist/cli/doctor/expire-on-tool-match.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 -58
- package/dist/cli/dry-run.js +0 -283
- package/dist/cli/dry-run.js.map +0 -1
- package/dist/cli/enriched-event.d.ts +0 -35
- package/dist/cli/enriched-event.js +0 -60
- package/dist/cli/enriched-event.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 -25
- package/dist/cli/explain-action.js +0 -57
- package/dist/cli/explain-action.js.map +0 -1
- package/dist/cli/explain-policy.d.ts +0 -147
- package/dist/cli/explain-policy.js +0 -248
- 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 -438
- 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 -1022
- 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 -110
- 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/register-audit-group.js +0 -91
- package/dist/cli/register-audit-group.js.map +0 -1
- package/dist/cli/resolve-env.d.ts +0 -32
- package/dist/cli/resolve-env.js +0 -46
- 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 -27
- package/dist/cli/test-risk.js +0 -38
- 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 -643
- 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 -106
- 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 -625
- package/dist/policy-packs/builtin/understanding-before-execution/persisted-reports.js +0 -1076
- 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 -1078
- 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 -623
- package/dist/runtime/intercept.js +0 -1384
- 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 -105
- package/dist/runtime/task-providers/agent-tasks.js +0 -247
- 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
|
@@ -1,190 +0,0 @@
|
|
|
1
|
-
// `harness pack hook post-merge-gate-record` — PostToolUse producer for
|
|
2
|
-
// the `post-merge-gate` policy pack.
|
|
3
|
-
//
|
|
4
|
-
// Receives Claude Code's PostToolUse event JSON on stdin. Fires only when
|
|
5
|
-
// the just-completed tool was Bash AND the command matched `gh pr merge`
|
|
6
|
-
// (see "Trigger arms" below) AND the merge is CONFIRMED by one of two contracts (see
|
|
7
|
-
// `resolveMergeConfirmation` in post-merge-gate-runtime.ts, "PAYLOAD
|
|
8
|
-
// REALITY" follow-up):
|
|
9
|
-
//
|
|
10
|
-
// Contract A (original, unchanged): `tool_output.exit_code === 0`.
|
|
11
|
-
// Contract B (2.1.218 payload reality): `tool_response` present with
|
|
12
|
-
// `interrupted === false` AND `stdout`+`stderr` containing `gh pr
|
|
13
|
-
// merge`'s own past-tense success sentence (all three merge methods).
|
|
14
|
-
//
|
|
15
|
-
// Contract A wins whenever it resolves to any definite verdict (success
|
|
16
|
-
// OR failure); Contract B is consulted only when Contract A's exit_code
|
|
17
|
-
// is entirely unresolvable. On a confirmed merge, records a
|
|
18
|
-
// `post-merge-gate:merged:<repo>:<branch>:<sha>` fact (plus PR number and
|
|
19
|
-
// timestamp, audit-only) to the evidence ledger via the same
|
|
20
|
-
// Trusted-Writer path `harness session-start branch-check` /
|
|
21
|
-
// `harness record *` use (`resolveManifestLedgerWriter` /
|
|
22
|
-
// `addLedgerFact`) — never an agent-issued `ledger_add`.
|
|
23
|
-
//
|
|
24
|
-
// `<sha>` is the LOCAL branch tip observed right after the tool ran:
|
|
25
|
-
// `gh pr merge` merges the PR on the remote side and does not itself move
|
|
26
|
-
// the local branch pointer, so this IS the exact commit that got merged
|
|
27
|
-
// (see post-merge-gate-runtime.ts's header for the full squash-fest
|
|
28
|
-
// rationale — no ancestry walk, no `git` subprocess).
|
|
29
|
-
//
|
|
30
|
-
// Trigger arms: the trigger mirrors the four arms the `gh pr merge` gate
|
|
31
|
-
// policies test in `policyMatchesEvent` (src/runtime/intercept.ts), in the
|
|
32
|
-
// same raw-first, lazy order: `GH_PR_MERGE_BASH_RE` against (1) the raw
|
|
33
|
-
// command, then (2) `normalizeCommand`, (3) `normalizeCommandAmpAware`,
|
|
34
|
-
// (4) `normalizeCommandQuoteAware`. Each later arm is computed only when
|
|
35
|
-
// every earlier arm missed, so a raw match never normalizes, and the
|
|
36
|
-
// result is strictly additive (a command that matched raw keeps matching;
|
|
37
|
-
// no arm removes a hit). That closes wrapper spellings (`nice`/`env`/
|
|
38
|
-
// `command`/`time`), the bare-`&` chain (`echo hi & nice gh pr merge 1`)
|
|
39
|
-
// and a boundary character inside a quoted assignment value
|
|
40
|
-
// (`VAR='a; b' gh pr merge 1`), which the raw regex alone missed while the
|
|
41
|
-
// gate blocked them. Normalisation is skipped above MAX_NORMALIZE_LENGTH,
|
|
42
|
-
// like the gate; such a command is tested raw only, which is the one named
|
|
43
|
-
// residual (a wrapper spelling in a command longer than that bound).
|
|
44
|
-
// Like the gate, quoted text that holds a wrapper plus `gh pr merge` behind
|
|
45
|
-
// a boundary (`git commit -m 'x; env gh pr merge 1'`) also matches; the
|
|
46
|
-
// merged fact is still written only on a confirmed merge result.
|
|
47
|
-
// Only the TRIGGER is widened: the PR number is still read from the raw
|
|
48
|
-
// command and the merged fact is still written only when
|
|
49
|
-
// `resolveMergeConfirmation` confirms the merge.
|
|
50
|
-
//
|
|
51
|
-
// Every non-match / failure path is a no-op: wrong tool, non-matching
|
|
52
|
-
// command, neither contract confirms, an unresolvable git context, no
|
|
53
|
-
// session id, a manifest/ledger failure. `PostToolUse` is `blocking:false`
|
|
54
|
-
// by contract (see the pack's Hook entry) so none of these ever break the
|
|
55
|
-
// session; the only observable effect of a miss is that the blocker has
|
|
56
|
-
// no merged-tip fact to compare against for this particular merge.
|
|
57
|
-
import { buildMergedTagContent, GH_PR_MERGE_BASH_RE, PACK_NAME, resolveMergeConfirmation, } from "../../policy-packs/builtin/post-merge-gate-runtime.js";
|
|
58
|
-
import { normalizeCommand, normalizeCommandAmpAware, normalizeCommandQuoteAware, } from "../../runtime/command-normalize.js";
|
|
59
|
-
import { resolveGitContext } from "../../runtime/git-context.js";
|
|
60
|
-
import { resolveManifestLedgerWriter } from "../../runtime/ledger-writer.js";
|
|
61
|
-
import { checkHookPause, loadManifestOrInjected, readStdin } from "./hook-bootstrap.js";
|
|
62
|
-
const LEDGER_SOURCE = "harness-pack-hook-post-merge-gate-record";
|
|
63
|
-
function bashCommandOf(toolInput) {
|
|
64
|
-
if (typeof toolInput !== "object" || toolInput === null)
|
|
65
|
-
return "";
|
|
66
|
-
const cmd = toolInput["command"];
|
|
67
|
-
return typeof cmd === "string" ? cmd : "";
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Does `command` look like a `gh pr merge` invocation to any of the four
|
|
71
|
-
* arms the gate policies use? Raw first, then each normalised form, lazily:
|
|
72
|
-
* a later arm runs only after every earlier arm missed. Exported for the
|
|
73
|
-
* divergence measurement and the ordering test.
|
|
74
|
-
*/
|
|
75
|
-
export function recorderTriggerMatches(command) {
|
|
76
|
-
if (GH_PR_MERGE_BASH_RE.test(command))
|
|
77
|
-
return true;
|
|
78
|
-
if (GH_PR_MERGE_BASH_RE.test(normalizeCommand(command).normalized))
|
|
79
|
-
return true;
|
|
80
|
-
if (GH_PR_MERGE_BASH_RE.test(normalizeCommandAmpAware(command).normalized))
|
|
81
|
-
return true;
|
|
82
|
-
return GH_PR_MERGE_BASH_RE.test(normalizeCommandQuoteAware(command).normalized);
|
|
83
|
-
}
|
|
84
|
-
export async function runPackHookPostMergeGateRecordCli(opts = {}) {
|
|
85
|
-
const stdin = opts.stdin ?? process.stdin;
|
|
86
|
-
const stderr = opts.stderr ?? process.stderr;
|
|
87
|
-
const note = (msg) => {
|
|
88
|
-
stderr.write(`harness pack hook post-merge-gate-record: ${msg}\n`);
|
|
89
|
-
};
|
|
90
|
-
const raw = await readStdin(stdin);
|
|
91
|
-
let event = {};
|
|
92
|
-
try {
|
|
93
|
-
event = JSON.parse(raw.trim() || "{}");
|
|
94
|
-
}
|
|
95
|
-
catch {
|
|
96
|
-
const diagnostic = "malformed event JSON, skipping";
|
|
97
|
-
note(diagnostic);
|
|
98
|
-
return { exitCode: 0, wrote: false, diagnostic };
|
|
99
|
-
}
|
|
100
|
-
// Pause sentinel — mirrors every other pack hook's operator kill-switch.
|
|
101
|
-
if (checkHookPause(PACK_NAME, stderr, opts, opts.generatedDir).paused) {
|
|
102
|
-
const diagnostic = "harness paused; post-merge-gate-record skipping without evaluating.";
|
|
103
|
-
note(diagnostic);
|
|
104
|
-
return { exitCode: 0, wrote: false, diagnostic };
|
|
105
|
-
}
|
|
106
|
-
const toolName = typeof event.tool_name === "string" ? event.tool_name : "";
|
|
107
|
-
if (toolName !== "Bash") {
|
|
108
|
-
const diagnostic = `tool ${toolName || "(unknown)"} is not Bash, skipping`;
|
|
109
|
-
note(diagnostic);
|
|
110
|
-
return { exitCode: 0, wrote: false, diagnostic };
|
|
111
|
-
}
|
|
112
|
-
const command = bashCommandOf(event.tool_input);
|
|
113
|
-
if (!command || !recorderTriggerMatches(command)) {
|
|
114
|
-
const diagnostic = "command did not match gh pr merge, skipping";
|
|
115
|
-
note(diagnostic);
|
|
116
|
-
return { exitCode: 0, wrote: false, diagnostic };
|
|
117
|
-
}
|
|
118
|
-
// The confirmed-success gate: neither contract confirming — including
|
|
119
|
-
// any unresolvable / unexpected payload shape on either — writes NO
|
|
120
|
-
// fact. Fail-safe against a false "merged" record, which would be a
|
|
121
|
-
// self-lock in the wrong direction (03-decisions.md). See
|
|
122
|
-
// resolveMergeConfirmation's own doc comment for the dual-contract /
|
|
123
|
-
// "Contract A wins" ordering decision.
|
|
124
|
-
const confirmation = resolveMergeConfirmation(event.tool_output, event.tool_response, command);
|
|
125
|
-
if (!confirmation.confirmed) {
|
|
126
|
-
const diagnostic = `not a confirmed merge success (${confirmation.reason}); skipping (no fact written)`;
|
|
127
|
-
note(diagnostic);
|
|
128
|
-
return { exitCode: 0, wrote: false, diagnostic };
|
|
129
|
-
}
|
|
130
|
-
const cwd = typeof opts.cwd === "string" && opts.cwd.length > 0
|
|
131
|
-
? opts.cwd
|
|
132
|
-
: typeof event.cwd === "string" && event.cwd.length > 0
|
|
133
|
-
? event.cwd
|
|
134
|
-
: process.cwd();
|
|
135
|
-
const { repo, branch, sha } = resolveGitContext(cwd);
|
|
136
|
-
if (repo === "" || branch === "" || sha === "") {
|
|
137
|
-
const diagnostic = `cannot resolve git context for ${cwd} ` +
|
|
138
|
-
`(repo=${JSON.stringify(repo)} branch=${JSON.stringify(branch)} sha=${JSON.stringify(sha)}); ` +
|
|
139
|
-
`skipping (no fact written)`;
|
|
140
|
-
note(diagnostic);
|
|
141
|
-
return { exitCode: 0, wrote: false, diagnostic };
|
|
142
|
-
}
|
|
143
|
-
const sessionId = (typeof event.session_id === "string" && event.session_id.length > 0
|
|
144
|
-
? event.session_id
|
|
145
|
-
: undefined) ??
|
|
146
|
-
process.env.CLAUDE_CODE_SESSION_ID ??
|
|
147
|
-
process.env.CLAUDE_SESSION_ID ??
|
|
148
|
-
"";
|
|
149
|
-
if (sessionId === "") {
|
|
150
|
-
const diagnostic = "no session_id resolvable from stdin or $CLAUDE_CODE_SESSION_ID/$CLAUDE_SESSION_ID; skipping (no fact written)";
|
|
151
|
-
note(diagnostic);
|
|
152
|
-
return { exitCode: 0, wrote: false, diagnostic };
|
|
153
|
-
}
|
|
154
|
-
// PR number: resolveMergeConfirmation already applied the binding
|
|
155
|
-
// resolution order (command-first, gh-success-sentence fallback only
|
|
156
|
-
// for Contract B; Contract A stays command-only, unchanged).
|
|
157
|
-
const whenIso = (opts.now ?? new Date()).toISOString();
|
|
158
|
-
const content = buildMergedTagContent({ repo, branch, sha, pr: confirmation.pr, whenIso });
|
|
159
|
-
let writeLedger = opts.writeLedger;
|
|
160
|
-
if (!writeLedger) {
|
|
161
|
-
let manifest;
|
|
162
|
-
try {
|
|
163
|
-
({ manifest } = loadManifestOrInjected(opts, opts.manifest));
|
|
164
|
-
}
|
|
165
|
-
catch (err) {
|
|
166
|
-
const diagnostic = `manifest load failed (${err.message}); skipping (no fact written)`;
|
|
167
|
-
note(diagnostic);
|
|
168
|
-
return { exitCode: 0, wrote: false, diagnostic };
|
|
169
|
-
}
|
|
170
|
-
const resolved = resolveManifestLedgerWriter(manifest, {
|
|
171
|
-
...(opts.ledgerTimeoutMs !== undefined ? { ledgerTimeoutMs: opts.ledgerTimeoutMs } : {}),
|
|
172
|
-
});
|
|
173
|
-
if (!resolved.ok) {
|
|
174
|
-
const diagnostic = `${resolved.reason}; cannot record ${content}`;
|
|
175
|
-
note(diagnostic);
|
|
176
|
-
return { exitCode: 0, wrote: false, diagnostic };
|
|
177
|
-
}
|
|
178
|
-
writeLedger = resolved.write;
|
|
179
|
-
}
|
|
180
|
-
const result = await writeLedger({ sessionId, content, source: LEDGER_SOURCE });
|
|
181
|
-
if (!result.ok) {
|
|
182
|
-
const diagnostic = `ledger write failed: ${result.reason ?? "unknown error"}`;
|
|
183
|
-
note(diagnostic);
|
|
184
|
-
return { exitCode: 0, wrote: false, diagnostic };
|
|
185
|
-
}
|
|
186
|
-
const diagnostic = `recorded ${content} for session ${sessionId}`;
|
|
187
|
-
note(diagnostic);
|
|
188
|
-
return { exitCode: 0, wrote: true, diagnostic };
|
|
189
|
-
}
|
|
190
|
-
//# sourceMappingURL=hook-post-merge-gate-record.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hook-post-merge-gate-record.js","sourceRoot":"","sources":["../../../src/cli/pack/hook-post-merge-gate-record.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { type LedgerEntry } from "../../policies/index.js";
|
|
2
|
-
import { type Manifest } from "../../schema/index.js";
|
|
3
|
-
import { type LoaderOptions } from "../loader.js";
|
|
4
|
-
export interface PackHookPostMergeGateOptions extends LoaderOptions {
|
|
5
|
-
/** Defaults to process.stdin. */
|
|
6
|
-
stdin?: NodeJS.ReadableStream;
|
|
7
|
-
/** Defaults to process.stdout. */
|
|
8
|
-
stdout?: NodeJS.WritableStream;
|
|
9
|
-
/** Defaults to process.stderr. */
|
|
10
|
-
stderr?: NodeJS.WritableStream;
|
|
11
|
-
/** Override cwd resolution (test injection). Falls back to event.cwd then process.cwd(). */
|
|
12
|
-
cwd?: string;
|
|
13
|
-
/** Per-call ledger timeout in ms. */
|
|
14
|
-
ledgerTimeoutMs?: number;
|
|
15
|
-
/** Inject a manifest (test). */
|
|
16
|
-
manifest?: Manifest;
|
|
17
|
-
/** Inject a fake ledger query (test). */
|
|
18
|
-
ledgerQuery?: (sessionId: string) => Promise<LedgerEntry[] | {
|
|
19
|
-
degraded: string;
|
|
20
|
-
}>;
|
|
21
|
-
}
|
|
22
|
-
export interface PackHookPostMergeGateResult {
|
|
23
|
-
exitCode: number;
|
|
24
|
-
blocked: boolean;
|
|
25
|
-
/** Diagnostic line emitted to stderr (always, even on allow). */
|
|
26
|
-
diagnostic: string;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* `harness pack hook post-merge-gate`. A stdin read that times out is refused here
|
|
30
|
-
* instead of being handed to the gate as an empty or truncated event it would
|
|
31
|
-
* treat as malformed input (task 7dfdcaaf). The operator pause still wins;
|
|
32
|
-
* every other input runs the gate unchanged.
|
|
33
|
-
*/
|
|
34
|
-
export declare function runPackHookPostMergeGateCli(opts?: PackHookPostMergeGateOptions): Promise<PackHookPostMergeGateResult>;
|
|
@@ -1,277 +0,0 @@
|
|
|
1
|
-
// `harness pack hook post-merge-gate` — PreToolUse blocker for the
|
|
2
|
-
// `post-merge-gate` policy pack.
|
|
3
|
-
//
|
|
4
|
-
// Receives Claude Code's PreToolUse event JSON on stdin and emits a
|
|
5
|
-
// `{ decision: "block" }` envelope when a CURATED history-mutating Bash
|
|
6
|
-
// command is about to run on a branch whose current tip exactly matches
|
|
7
|
-
// a merged-tip fact the producer recorded (see hook-post-merge-gate-record.ts).
|
|
8
|
-
//
|
|
9
|
-
// Evaluation order — deliberate, and pinned by the self-lock test suite
|
|
10
|
-
// (task 19356be7 REVERSED the original escape-first ordering; the escape
|
|
11
|
-
// allowlist no longer short-circuits the whole command):
|
|
12
|
-
//
|
|
13
|
-
// 1. Parse stdin. Malformed JSON, a non-Bash tool, or an empty command
|
|
14
|
-
// all ALLOW immediately (nothing to classify).
|
|
15
|
-
// 2. Pause sentinel (operator kill-switch) — same convention as every
|
|
16
|
-
// other pack hook.
|
|
17
|
-
// 3. GATE-ELIGIBILITY CLASSIFICATION (`isGateEligibleCommand`) — checked
|
|
18
|
-
// BEFORE manifest load, pack lookup, or any ledger query: the curated
|
|
19
|
-
// mutation matcher (git commit/add/push/merge/rebase/cherry-pick/
|
|
20
|
-
// revert/reset/stash pop|apply, gh pr create/merge), applied after
|
|
21
|
-
// harness-attached quoted-heredoc bodies are stripped. Commands it
|
|
22
|
-
// does not match ALLOW immediately, with NO dependency on whether the
|
|
23
|
-
// manifest or the ledger are reachable — that unconditionally covers
|
|
24
|
-
// the whole recovery path the deny message recommends (`git switch`/
|
|
25
|
-
// `checkout`/`pull`/`fetch`, `git branch -d`/`-D`, `git stash list`/
|
|
26
|
-
// `show`, bare `harness ...` commands including report heredocs),
|
|
27
|
-
// because none of those are curated mutations (verb disjointness,
|
|
28
|
-
// pinned). The recovery path must never be starved by an unrelated
|
|
29
|
-
// failure (the incident class this guards against: a different gate
|
|
30
|
-
// once got blocked alongside its own recovery command, and only the
|
|
31
|
-
// operator could unstick it).
|
|
32
|
-
// DENY WINS when a command mixes both: `harness preflight && git
|
|
33
|
-
// push origin master` — the documented normal workflow spelling —
|
|
34
|
-
// used to skip the gate entirely under escape-first (task 19356be7,
|
|
35
|
-
// measured); it is now classified by its mutation half.
|
|
36
|
-
// 4. Manifest load, pack-enabled check, git-context resolution
|
|
37
|
-
// (detached HEAD / no-repo ALLOWS — nothing to compare), then the
|
|
38
|
-
// ledger query.
|
|
39
|
-
// 5. DENY only when the current branch tip exactly matches a recorded
|
|
40
|
-
// `post-merge-gate:merged:<repo>:<branch>:<sha>` fact.
|
|
41
|
-
//
|
|
42
|
-
// Fail posture: OPEN. A manifest-load failure or a degraded ledger both
|
|
43
|
-
// ALLOW (with a stderr warning) — the inverse of branch-protection's
|
|
44
|
-
// fail-closed contract. Without the ledger, "merged" and "not merged" are
|
|
45
|
-
// indistinguishable, and fail-closed here would block ordinary git
|
|
46
|
-
// history work on every branch whenever grounding-mcp hiccups. See
|
|
47
|
-
// post-merge-gate-runtime.ts's header for the full rationale.
|
|
48
|
-
//
|
|
49
|
-
// The one exception is a stdin read that times out (the idle bound in
|
|
50
|
-
// src/cli/bounded-stdin.ts fired before stdin closed): the event never
|
|
51
|
-
// finished arriving, so the command cannot even be classified, and the gate
|
|
52
|
-
// BLOCKS instead of allowing (the operator pause still yields). That refusal
|
|
53
|
-
// sits in the exported wrapper at the end of this file.
|
|
54
|
-
import { isEscapeCommand, isGateEligibleCommand, MERGED_TAG_PREFIX, mergedTagMatchKey, PACK_NAME, resolveDefaultBranchName, } from "../../policy-packs/builtin/post-merge-gate-runtime.js";
|
|
55
|
-
import { queryLedgerByTag } from "../../policies/index.js";
|
|
56
|
-
import { resolveGitContext } from "../../runtime/git-context.js";
|
|
57
|
-
import { renderAgentFacing } from "../../runtime/agent-facing.js";
|
|
58
|
-
import { POLICY_DECISION_TYPE } from "../../io/ledger-record.js";
|
|
59
|
-
import { checkHookPause, loadManifestOrInjected, parseConfigUx, readStdin, runGateWithStdinRefusal, stdoutBlockRefusal, } from "./hook-bootstrap.js";
|
|
60
|
-
const DEFAULT_BRANCH_PLACEHOLDER = "<default-branch>";
|
|
61
|
-
function bashCommandOf(toolInput) {
|
|
62
|
-
if (typeof toolInput !== "object" || toolInput === null)
|
|
63
|
-
return "";
|
|
64
|
-
const cmd = toolInput["command"];
|
|
65
|
-
return typeof cmd === "string" ? cmd : "";
|
|
66
|
-
}
|
|
67
|
-
function findGroundingMcp(manifest) {
|
|
68
|
-
return manifest.tools.mcp.find((m) => m.name === "grounding-mcp") ?? null;
|
|
69
|
-
}
|
|
70
|
-
function evaluateEntries(entries, matchKey) {
|
|
71
|
-
for (const e of entries) {
|
|
72
|
-
// Skip policy_decision audit rows — a past DENIED decision this very
|
|
73
|
-
// pack recorded would otherwise incidentally carry the match key in
|
|
74
|
-
// its serialized payload, falsely satisfying itself. Same two-tier
|
|
75
|
-
// filter branch-protection's blocker uses (type first, legacy
|
|
76
|
-
// content-prefix backstop second).
|
|
77
|
-
if (e.type === POLICY_DECISION_TYPE)
|
|
78
|
-
continue;
|
|
79
|
-
if (e.content.startsWith(`${POLICY_DECISION_TYPE}:`))
|
|
80
|
-
continue;
|
|
81
|
-
if (e.content.includes(matchKey)) {
|
|
82
|
-
return { merged: true, matchedContent: e.content, degraded: null };
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
return { merged: false, matchedContent: null, degraded: null };
|
|
86
|
-
}
|
|
87
|
-
async function probeLedger(manifest, sessionId, matchKey, opts) {
|
|
88
|
-
if (opts.ledgerQuery) {
|
|
89
|
-
const r = await opts.ledgerQuery(sessionId);
|
|
90
|
-
if ("degraded" in r) {
|
|
91
|
-
return { merged: false, matchedContent: null, degraded: r.degraded };
|
|
92
|
-
}
|
|
93
|
-
return evaluateEntries(r, matchKey);
|
|
94
|
-
}
|
|
95
|
-
if (!manifest) {
|
|
96
|
-
return { merged: false, matchedContent: null, degraded: "manifest unavailable" };
|
|
97
|
-
}
|
|
98
|
-
const server = findGroundingMcp(manifest);
|
|
99
|
-
if (!server) {
|
|
100
|
-
return { merged: false, matchedContent: null, degraded: "grounding-mcp not declared in manifest" };
|
|
101
|
-
}
|
|
102
|
-
const command = Array.isArray(server.command)
|
|
103
|
-
? server.command
|
|
104
|
-
: server.command.trim().split(/\s+/);
|
|
105
|
-
const env = server.env ?? undefined;
|
|
106
|
-
const timeoutMs = opts.ledgerTimeoutMs ?? server.health?.timeout_ms ?? 5_000;
|
|
107
|
-
const result = await queryLedgerByTag({
|
|
108
|
-
mcpCommand: command,
|
|
109
|
-
...(env && { mcpEnv: env }),
|
|
110
|
-
sessionId,
|
|
111
|
-
timeoutMs,
|
|
112
|
-
});
|
|
113
|
-
if (result.kind === "degraded") {
|
|
114
|
-
return { merged: false, matchedContent: null, degraded: result.reason };
|
|
115
|
-
}
|
|
116
|
-
return evaluateEntries(result.entries, matchKey);
|
|
117
|
-
}
|
|
118
|
-
function blockJson(toolName, command, branch, defaultBranch, matchedContent, ux, sessionId) {
|
|
119
|
-
let reasonText;
|
|
120
|
-
if (ux) {
|
|
121
|
-
reasonText = renderAgentFacing(ux, {
|
|
122
|
-
BRANCH: branch,
|
|
123
|
-
DEFAULT_BRANCH: defaultBranch,
|
|
124
|
-
TOOL_NAME: toolName,
|
|
125
|
-
SESSION_ID: sessionId,
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
else {
|
|
129
|
-
reasonText =
|
|
130
|
-
`post-merge-gate: refusing ${toolName} ("${command}") on branch "${branch}" — ` +
|
|
131
|
-
`its current tip was already merged (recorded: ${matchedContent}).\n` +
|
|
132
|
-
`Further history-mutating commands on an already-merged branch usually mean stale local state.\n` +
|
|
133
|
-
`\n` +
|
|
134
|
-
`To proceed:\n` +
|
|
135
|
-
` git switch ${defaultBranch}\n` +
|
|
136
|
-
` git pull --ff-only\n` +
|
|
137
|
-
` git branch -d ${branch} # optional cleanup\n` +
|
|
138
|
-
`\n` +
|
|
139
|
-
`If you have NEW work to continue on this branch (not leftover local state): make a commit first —` +
|
|
140
|
-
` this gate only fires while the branch tip still exactly matches the merged commit, so a new commit` +
|
|
141
|
-
` moves the tip and this check no longer applies.\n` +
|
|
142
|
-
`\n` +
|
|
143
|
-
`Escape hatches (always allowed, independent of this gate): git switch/checkout, git pull/fetch,` +
|
|
144
|
-
` git branch -d/-D, git stash list/show, and any \`harness ...\` command — each as its OWN command.` +
|
|
145
|
-
` Chaining one of them with a history-mutating command does not exempt the mutation: run the` +
|
|
146
|
-
` recovery steps separately.`;
|
|
147
|
-
}
|
|
148
|
-
return JSON.stringify({
|
|
149
|
-
decision: "block",
|
|
150
|
-
reason: reasonText,
|
|
151
|
-
hookSpecificOutput: {
|
|
152
|
-
hookEventName: "PreToolUse",
|
|
153
|
-
permissionDecision: "deny",
|
|
154
|
-
permissionDecisionReason: reasonText,
|
|
155
|
-
},
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
async function runPackHookPostMergeGateCliInner(opts = {}) {
|
|
159
|
-
const stdin = opts.stdin ?? process.stdin;
|
|
160
|
-
const stdout = opts.stdout ?? process.stdout;
|
|
161
|
-
const stderr = opts.stderr ?? process.stderr;
|
|
162
|
-
const note = (msg) => {
|
|
163
|
-
stderr.write(`harness pack hook post-merge-gate: ${msg}\n`);
|
|
164
|
-
};
|
|
165
|
-
const raw = await readStdin(stdin);
|
|
166
|
-
let event = {};
|
|
167
|
-
try {
|
|
168
|
-
event = JSON.parse(raw.trim() || "{}");
|
|
169
|
-
}
|
|
170
|
-
catch {
|
|
171
|
-
const diagnostic = "malformed event JSON, cannot classify; allowing";
|
|
172
|
-
note(diagnostic);
|
|
173
|
-
return { exitCode: 0, blocked: false, diagnostic };
|
|
174
|
-
}
|
|
175
|
-
// Pause sentinel — even this gate yields to an operator pause.
|
|
176
|
-
if (checkHookPause(PACK_NAME, stderr, opts).paused) {
|
|
177
|
-
const diagnostic = "harness paused; post-merge-gate allowing without evaluating.";
|
|
178
|
-
return { exitCode: 0, blocked: false, diagnostic };
|
|
179
|
-
}
|
|
180
|
-
const sessionId = (typeof event.session_id === "string" ? event.session_id : undefined) ??
|
|
181
|
-
process.env.CLAUDE_CODE_SESSION_ID ??
|
|
182
|
-
process.env.CLAUDE_SESSION_ID ??
|
|
183
|
-
"";
|
|
184
|
-
const toolName = typeof event.tool_name === "string" ? event.tool_name : "(unknown)";
|
|
185
|
-
const cwd = typeof opts.cwd === "string" && opts.cwd.length > 0
|
|
186
|
-
? opts.cwd
|
|
187
|
-
: typeof event.cwd === "string" && event.cwd.length > 0
|
|
188
|
-
? event.cwd
|
|
189
|
-
: process.cwd();
|
|
190
|
-
if (toolName !== "Bash") {
|
|
191
|
-
const diagnostic = `${toolName} is not Bash; allowing`;
|
|
192
|
-
note(diagnostic);
|
|
193
|
-
return { exitCode: 0, blocked: false, diagnostic };
|
|
194
|
-
}
|
|
195
|
-
const command = bashCommandOf(event.tool_input);
|
|
196
|
-
if (command === "") {
|
|
197
|
-
const diagnostic = "no resolvable command text; allowing";
|
|
198
|
-
note(diagnostic);
|
|
199
|
-
return { exitCode: 0, blocked: false, diagnostic };
|
|
200
|
-
}
|
|
201
|
-
// GATE-ELIGIBILITY CLASSIFICATION — checked FIRST, before manifest
|
|
202
|
-
// load, pack lookup, or any ledger query, so every non-eligible command
|
|
203
|
-
// (the whole recovery path included) can never be starved by an
|
|
204
|
-
// unreachable manifest/ledger. Deny wins over the escape vocabulary
|
|
205
|
-
// when a command mixes both (task 19356be7). See module header.
|
|
206
|
-
if (!isGateEligibleCommand(command)) {
|
|
207
|
-
const diagnostic = isEscapeCommand(command)
|
|
208
|
-
? `command is not in the curated v1 deny-scope (recovery/escape vocabulary matched); allowing regardless of ledger/manifest state`
|
|
209
|
-
: `command is not in the curated v1 deny-scope; allowing`;
|
|
210
|
-
note(diagnostic);
|
|
211
|
-
return { exitCode: 0, blocked: false, diagnostic };
|
|
212
|
-
}
|
|
213
|
-
if (isEscapeCommand(command)) {
|
|
214
|
-
// Observability only — the decision is already made: a command that
|
|
215
|
-
// chains recovery vocabulary WITH a curated mutation is judged by its
|
|
216
|
-
// mutation half (the escape-first ordering this replaced let exactly
|
|
217
|
-
// these chains skip the gate).
|
|
218
|
-
note("recovery/escape vocabulary present but a curated mutation is chained; deny-scope wins (task 19356be7)");
|
|
219
|
-
}
|
|
220
|
-
// Fail-open manifest load (opposite of branch-protection's fail-closed):
|
|
221
|
-
// without the manifest we cannot tell if the pack is even enabled, and
|
|
222
|
-
// this pack's whole posture is advisory, not a hard security boundary.
|
|
223
|
-
let manifest;
|
|
224
|
-
try {
|
|
225
|
-
({ manifest } = loadManifestOrInjected(opts, opts.manifest));
|
|
226
|
-
}
|
|
227
|
-
catch (err) {
|
|
228
|
-
const diagnostic = `manifest load failed (${err.message}); post-merge-gate fails open, allowing`;
|
|
229
|
-
note(diagnostic);
|
|
230
|
-
return { exitCode: 0, blocked: false, diagnostic };
|
|
231
|
-
}
|
|
232
|
-
const pack = manifest.policy_packs.find((p) => p.name === PACK_NAME);
|
|
233
|
-
if (!pack) {
|
|
234
|
-
const diagnostic = `pack "${PACK_NAME}" not declared in manifest, allowing`;
|
|
235
|
-
note(diagnostic);
|
|
236
|
-
return { exitCode: 0, blocked: false, diagnostic };
|
|
237
|
-
}
|
|
238
|
-
if (!pack.enabled) {
|
|
239
|
-
const diagnostic = `pack "${PACK_NAME}" is enabled:false, allowing`;
|
|
240
|
-
note(diagnostic);
|
|
241
|
-
return { exitCode: 0, blocked: false, diagnostic };
|
|
242
|
-
}
|
|
243
|
-
const { repo, branch, sha } = resolveGitContext(cwd);
|
|
244
|
-
if (branch === "" || sha === "" || repo === "") {
|
|
245
|
-
const diagnostic = `cannot resolve git context for ${cwd} (detached HEAD, outside a git work tree, or unresolvable sha); allowing`;
|
|
246
|
-
note(diagnostic);
|
|
247
|
-
return { exitCode: 0, blocked: false, diagnostic };
|
|
248
|
-
}
|
|
249
|
-
const configUx = parseConfigUx(pack.config["ux"], stderr, "harness pack hook post-merge-gate");
|
|
250
|
-
const matchKey = mergedTagMatchKey(repo, branch, sha);
|
|
251
|
-
const check = await probeLedger(manifest, sessionId, matchKey, opts);
|
|
252
|
-
if (check.degraded !== null) {
|
|
253
|
-
const diagnostic = `ledger degraded (${check.degraded}); post-merge-gate fails open, allowing`;
|
|
254
|
-
note(diagnostic);
|
|
255
|
-
return { exitCode: 0, blocked: false, diagnostic };
|
|
256
|
-
}
|
|
257
|
-
if (!check.merged) {
|
|
258
|
-
const diagnostic = `no recorded ${MERGED_TAG_PREFIX} fact for ${repo}:${branch} at tip ${sha.slice(0, 7)}; allowing`;
|
|
259
|
-
note(diagnostic);
|
|
260
|
-
return { exitCode: 0, blocked: false, diagnostic };
|
|
261
|
-
}
|
|
262
|
-
const defaultBranch = resolveDefaultBranchName(cwd) ?? DEFAULT_BRANCH_PLACEHOLDER;
|
|
263
|
-
const diagnostic = `BLOCK — branch tip ${sha.slice(0, 7)} matches a recorded merged tip (${check.matchedContent ?? matchKey})`;
|
|
264
|
-
note(diagnostic);
|
|
265
|
-
stdout.write(`${blockJson(toolName, command, branch, defaultBranch, check.matchedContent ?? matchKey, configUx, sessionId)}\n`);
|
|
266
|
-
return { exitCode: 0, blocked: true, diagnostic };
|
|
267
|
-
}
|
|
268
|
-
/**
|
|
269
|
-
* `harness pack hook post-merge-gate`. A stdin read that times out is refused here
|
|
270
|
-
* instead of being handed to the gate as an empty or truncated event it would
|
|
271
|
-
* treat as malformed input (task 7dfdcaaf). The operator pause still wins;
|
|
272
|
-
* every other input runs the gate unchanged.
|
|
273
|
-
*/
|
|
274
|
-
export function runPackHookPostMergeGateCli(opts = {}) {
|
|
275
|
-
return runGateWithStdinRefusal(opts, (stderr) => checkHookPause(PACK_NAME, stderr, opts).paused, stdoutBlockRefusal("post-merge-gate"), runPackHookPostMergeGateCliInner);
|
|
276
|
-
}
|
|
277
|
-
//# sourceMappingURL=hook-post-merge-gate.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hook-post-merge-gate.js","sourceRoot":"","sources":["../../../src/cli/pack/hook-post-merge-gate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import type { Manifest } from "../../schema/index.js";
|
|
2
|
-
import { type LoaderOptions } from "../loader.js";
|
|
3
|
-
export interface PackHookPostToolUseOptions extends LoaderOptions {
|
|
4
|
-
pack?: string;
|
|
5
|
-
generatedDir?: string;
|
|
6
|
-
/**
|
|
7
|
-
* Override the persisted-report directory. Defaults to
|
|
8
|
-
* `defaultReportsDir()` which honours `UNDERSTANDING_GATE_REPORT_DIR`
|
|
9
|
-
* (set by the pack's hook-command wrapper) or falls back to
|
|
10
|
-
* `<cwd>/.understanding-gate/reports`.
|
|
11
|
-
*/
|
|
12
|
-
reportsDir?: string;
|
|
13
|
-
stdin?: NodeJS.ReadableStream;
|
|
14
|
-
stderr?: NodeJS.WritableStream;
|
|
15
|
-
manifest?: Manifest;
|
|
16
|
-
/** Override "now" for deterministic tests. */
|
|
17
|
-
now?: Date;
|
|
18
|
-
}
|
|
19
|
-
export interface PackHookPostToolUseResult {
|
|
20
|
-
exitCode: number;
|
|
21
|
-
/** Did the just-completed tool match the expiry list? */
|
|
22
|
-
matchedExpiry: boolean;
|
|
23
|
-
/** Was the session marker actually cleared (false if it was already absent). */
|
|
24
|
-
markerCleared: boolean;
|
|
25
|
-
/**
|
|
26
|
-
* Was a task-scoped marker also cleared (harness/1ee26e77)? Only set
|
|
27
|
-
* when the matched tool was an agent-tasks task-transition verb AND
|
|
28
|
-
* `tool_input.taskId` was present in the event, AND a marker existed
|
|
29
|
-
* for that task id. False otherwise. Independent of markerCleared.
|
|
30
|
-
*/
|
|
31
|
-
taskMarkerCleared: boolean;
|
|
32
|
-
/**
|
|
33
|
-
* Was the persisted report (`.understanding-gate/reports/...json`)
|
|
34
|
-
* flipped from `approved` to `expired`? Originally closed a silent
|
|
35
|
-
* re-approval bypass that pre-this-fix existed since PR #172: the
|
|
36
|
-
* marker was deleted on task_finish but the persisted-report fallback
|
|
37
|
-
* still satisfied the gate. Since task 7402301d the report can no
|
|
38
|
-
* longer satisfy the gate on its own, so this now exists so the audit
|
|
39
|
-
* record agrees with the cleared marker.
|
|
40
|
-
*/
|
|
41
|
-
persistedReportExpired: boolean;
|
|
42
|
-
/** Diagnostic line emitted to stderr. */
|
|
43
|
-
diagnostic: string;
|
|
44
|
-
}
|
|
45
|
-
export declare function runPackHookPostToolUseCli(opts?: PackHookPostToolUseOptions): Promise<PackHookPostToolUseResult>;
|