@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
|
@@ -1,397 +0,0 @@
|
|
|
1
|
-
// Shared runtime constants + helpers for the `post-merge-gate` policy pack.
|
|
2
|
-
//
|
|
3
|
-
// The pack itself (`post-merge-gate.ts`) only emits hooks + the audit-copy
|
|
4
|
-
// instructions. The actual enforcement lives in two CLI verbs — `harness
|
|
5
|
-
// pack hook post-merge-gate-record` (producer, PostToolUse) and `harness
|
|
6
|
-
// pack hook post-merge-gate` (blocker, PreToolUse) — both under `src/cli/
|
|
7
|
-
// pack/`. This module is the small shared surface they pull from: the
|
|
8
|
-
// merged-tag format, the curated mutation matcher, the escape allowlist,
|
|
9
|
-
// and a couple of small payload/command helpers.
|
|
10
|
-
//
|
|
11
|
-
// Binding decisions this module encodes (see
|
|
12
|
-
// .ai/runs/2026-07-23-post-merge-gate/03-decisions.md, BINDING):
|
|
13
|
-
//
|
|
14
|
-
// - The merged fact is keyed on an EXACT branch-tip sha match, not
|
|
15
|
-
// ancestry. `gh pr merge` merges the PR on the remote side; it does
|
|
16
|
-
// NOT move the local branch's tip. So the local tip observed by the
|
|
17
|
-
// PostToolUse producer, right after a successful merge, IS the exact
|
|
18
|
-
// commit that got merged. The blocker denies only while the current
|
|
19
|
-
// tip still equals that recorded value — a new local commit moves the
|
|
20
|
-
// tip and the gate falls silent (deliberate: that is legitimate
|
|
21
|
-
// continued work, not stale post-merge state), and a recycled branch
|
|
22
|
-
// name with a different tip never matches either. No expiry /
|
|
23
|
-
// freshness window is needed as a result (squash-fest, offline).
|
|
24
|
-
//
|
|
25
|
-
// - Deny scope v1 is a CURATED command list (git commit / add / push /
|
|
26
|
-
// merge / rebase / cherry-pick / revert / reset / stash pop|apply, gh
|
|
27
|
-
// pr create / merge), not "every Bash call" — mirrors
|
|
28
|
-
// branch-protection.ts's documented v1 scope-cut (see its "Out of
|
|
29
|
-
// scope" section). Read-only git (status/log/diff/branch) and
|
|
30
|
-
// unrelated shell are never touched.
|
|
31
|
-
//
|
|
32
|
-
// - DENY WINS over the escape allowlist (task 19356be7, REVERSES the
|
|
33
|
-
// original escape-first decision): the blocker classifies a command as
|
|
34
|
-
// gate-eligible iff the curated mutation matcher fires
|
|
35
|
-
// (`isGateEligibleCommand` below). The escape allowlist no longer
|
|
36
|
-
// short-circuits the whole command — under escape-first, any chained
|
|
37
|
-
// command containing an escape verb anywhere (`harness preflight &&
|
|
38
|
-
// git push origin master`, the documented normal workflow) skipped the
|
|
39
|
-
// gate entirely. Measured before changing, over a 66-row corpus with
|
|
40
|
-
// bash ground truth: per-segment evaluation and deny-wins are
|
|
41
|
-
// 0-divergent — a consequence of the pinned verb disjointness between
|
|
42
|
-
// the escape and deny lists — so the simplest (deny-wins) is
|
|
43
|
-
// implemented. The third candidate, escape-at-start-only, was measured
|
|
44
|
-
// and REJECTED: it diverges on 26 rows and still exempts three of the
|
|
45
|
-
// four lines this task exists to close (`git switch master && git push
|
|
46
|
-
// origin master` and friends). The recovery-never-starved property is preserved
|
|
47
|
-
// structurally: a non-eligible command is allowed before any manifest
|
|
48
|
-
// load or ledger query, exactly where the escape short-circuit used to
|
|
49
|
-
// sit (see hook-post-merge-gate.ts for the ordering).
|
|
50
|
-
//
|
|
51
|
-
// - Fails OPEN (allows) when the ledger is unreachable, unlike
|
|
52
|
-
// branch-protection's fail-closed posture: without the ledger,
|
|
53
|
-
// "merged" and "not merged" are indistinguishable, and fail-closed
|
|
54
|
-
// here would block every feature branch's git history forever. This
|
|
55
|
-
// pack is advisory-strength against a hostile agent, same honesty as
|
|
56
|
-
// the other `requires.ledger_tag`-style gates
|
|
57
|
-
// (docs/okf/evidence-ledger-trust-boundary.md).
|
|
58
|
-
import { findGitEntry, resolveCommonDir, resolveOriginHeadBase } from "../../runtime/git-context.js";
|
|
59
|
-
export const PACK_NAME = "post-merge-gate";
|
|
60
|
-
/**
|
|
61
|
-
* Content prefix the producer writes and the blocker substring-matches.
|
|
62
|
-
* The full recorded content is
|
|
63
|
-
* `${MERGED_TAG_PREFIX}:${repo}:${branch}:${sha}[ pr:<n>] at:<iso>`; the
|
|
64
|
-
* blocker only ever tests for the `${MERGED_TAG_PREFIX}:${repo}:${branch}:
|
|
65
|
-
* ${sha}` prefix (an exact 40-hex-char sha), so the trailing `pr:` / `at:`
|
|
66
|
-
* tokens are audit decoration, not part of the match key.
|
|
67
|
-
*/
|
|
68
|
-
export const MERGED_TAG_PREFIX = "post-merge-gate:merged";
|
|
69
|
-
/** The exact substring the blocker tests ledger entries for. */
|
|
70
|
-
export function mergedTagMatchKey(repo, branch, sha) {
|
|
71
|
-
return `${MERGED_TAG_PREFIX}:${repo}:${branch}:${sha}`;
|
|
72
|
-
}
|
|
73
|
-
/** Build the full fact content the producer writes (match key + audit decoration). */
|
|
74
|
-
export function buildMergedTagContent(args) {
|
|
75
|
-
const prPart = args.pr ? ` pr:${args.pr}` : "";
|
|
76
|
-
return `${mergedTagMatchKey(args.repo, args.branch, args.sha)}${prPart} at:${args.whenIso}`;
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Producer trigger: does this Bash command look like a `gh pr merge`
|
|
80
|
-
* invocation? Same anchoring convention as `DEFAULT_PUSH_BASH_RE`
|
|
81
|
-
* (solution-acceptance-runtime.ts): tolerates a leading `cd … &&`, inline
|
|
82
|
-
* `VAR=val` assignments, and chaining. Known gap, same class as that
|
|
83
|
-
* regex's own documented residual: a heredoc / `sh -c` / `eval`
|
|
84
|
-
* indirection defeats this match before the producer ever runs — not
|
|
85
|
-
* attempted to close here (the MCP merge path, `pull_requests_merge`, is
|
|
86
|
-
* the other documented gap; see the pack's instructions.md).
|
|
87
|
-
*
|
|
88
|
-
* Task 76671e5a: bare `&` added to the boundary alternation (`&&` kept to
|
|
89
|
-
* its left only to mirror `src/runtime/command-normalize.ts`'s alternation
|
|
90
|
-
* order for readability — NOT because order is load-bearing here, unlike
|
|
91
|
-
* that module). Same fix as `d834a065` applied to every policy trigger —
|
|
92
|
-
* bash starts a new command after a single `&`, so `A=x&gh pr merge` used
|
|
93
|
-
* to miss this trigger entirely and the producer silently never recorded
|
|
94
|
-
* the merged-tip fact for that spelling. Broadening a TRIGGER only widens
|
|
95
|
-
* when the producer fires (a strictly safer direction, mirrors the
|
|
96
|
-
* deny-side reasoning below), unlike the escape allowlist further down.
|
|
97
|
-
* Measured: swapping to `&|&&` produces a byte-identical match set for this
|
|
98
|
-
* matcher (a `RegExp.test` existential check over every start offset, not a
|
|
99
|
-
* segmenter — the reasoning that makes order matter in
|
|
100
|
-
* `command-normalize.ts`'s `BOUNDARY_RE`/`AMP_BOUNDARY_RE` does not transfer
|
|
101
|
-
* to a plain `.test()` matcher like this one).
|
|
102
|
-
*
|
|
103
|
-
* The RECORDER (`hook-post-merge-gate-record.ts`) does not test this regex
|
|
104
|
-
* against the raw command alone: it tests it against four forms, raw first
|
|
105
|
-
* and lazily, mirroring the gate's `policyMatchesEvent` arms (raw,
|
|
106
|
-
* `normalizeCommand`, `normalizeCommandAmpAware`,
|
|
107
|
-
* `normalizeCommandQuoteAware`). The regex itself stays anchored for the
|
|
108
|
-
* raw form, so wrapper spellings (`nice gh pr merge 1`), a bare-`&` chain
|
|
109
|
-
* before a wrapper and a quoted assignment value holding a boundary
|
|
110
|
-
* character are matched via the normalised forms, not by this pattern.
|
|
111
|
-
* Named residual: a command longer than MAX_NORMALIZE_LENGTH is not
|
|
112
|
-
* normalised and is tested raw only.
|
|
113
|
-
*/
|
|
114
|
-
export const GH_PR_MERGE_BASH_RE = /(?:^|\n|;|\||&&|&|\()\s*(?:\w+=\S+\s+)*gh\s+pr\s+merge\b/;
|
|
115
|
-
/**
|
|
116
|
-
* Blocker deny-scope v1 (03-decisions.md): the curated mutation command
|
|
117
|
-
* list. Deliberately NOT "every Bash command" — read-only git
|
|
118
|
-
* (status/log/diff/branch) and unrelated shell stay unaffected. Same
|
|
119
|
-
* anchoring convention as `GH_PR_MERGE_BASH_RE`.
|
|
120
|
-
*
|
|
121
|
-
* Task 76671e5a: bare `&` added to the boundary alternation, same reasoning
|
|
122
|
-
* as `GH_PR_MERGE_BASH_RE` above — this is a DENY-scope matcher, so
|
|
123
|
-
* broadening it is the STRICTER direction (more commands recognized as
|
|
124
|
-
* curated mutations, none dropped). Verified disjoint from the escape
|
|
125
|
-
* allowlist below on a single-command corpus (no verb overlap), so this
|
|
126
|
-
* broadening cannot lock out the documented recovery path.
|
|
127
|
-
*/
|
|
128
|
-
export const CURATED_MUTATION_BASH_RE = /(?:^|\n|;|\||&&|&|\()\s*(?:\w+=\S+\s+)*(?:git(?:\s+-C\s+\S+)?\s+(?:commit|add|push|merge|rebase|cherry-pick|revert|reset|stash\s+(?:pop|apply))\b|gh\s+pr\s+(?:create|merge)\b)/;
|
|
129
|
-
/**
|
|
130
|
-
* Escape allowlist, git verbs (03-decisions.md): the exact recovery path
|
|
131
|
-
* the deny message recommends, plus read-only stash inspection. Since task
|
|
132
|
-
* 19356be7 this list no longer short-circuits the blocker — the deny
|
|
133
|
-
* match decides gate-eligibility, and every one of these verbs stays free
|
|
134
|
-
* simply because it is not a curated mutation (verb disjointness, pinned).
|
|
135
|
-
* The list remains the deny message's recovery vocabulary and a
|
|
136
|
-
* diagnostics aid.
|
|
137
|
-
*
|
|
138
|
-
* Task 76671e5a, DELIBERATELY LEFT on the old (no bare-`&`) boundary
|
|
139
|
-
* alphabet: this is an ALLOW-side matcher, so broadening it is the LOOSER
|
|
140
|
-
* direction. Its remaining consumers (diagnostics, docs interpolation)
|
|
141
|
-
* still must not silently widen what reads as "recovery". Pinned by a
|
|
142
|
-
* regression test asserting this regex's source never gains the `&|`
|
|
143
|
-
* boundary token.
|
|
144
|
-
*/
|
|
145
|
-
export const ESCAPE_GIT_BASH_RE = /(?:^|\n|;|\||&&|\()\s*(?:\w+=\S+\s+)*git(?:\s+-C\s+\S+)?\s+(?:switch\b|checkout\b|pull\b|fetch\b|branch\s+-(?:d|D)\b|stash\s+(?:list|show)\b)/;
|
|
146
|
-
/**
|
|
147
|
-
* Escape allowlist, harness verbs (03-decisions.md): names any invocation
|
|
148
|
-
* of harness's own CLI (recovery commands like `harness session-start
|
|
149
|
-
* branch-check`, diagnostics, a future self-check), regardless of
|
|
150
|
-
* spelling — mirrors the `npx` / absolute-path / `./node_modules/.bin`
|
|
151
|
-
* robustness the `deny-kill-switch-bash` regex in
|
|
152
|
-
* `src/cli/init/templates.ts` already established for the same class of
|
|
153
|
-
* bypass concern. Since task 19356be7 its only job is the deny message's
|
|
154
|
-
* / diagnostics' vocabulary: a bare harness command stays free through
|
|
155
|
-
* verb disjointness with the curated deny list, not through a
|
|
156
|
-
* short-circuit.
|
|
157
|
-
*
|
|
158
|
-
* Task 76671e5a: DELIBERATELY LEFT narrow, same reasoning as
|
|
159
|
-
* `ESCAPE_GIT_BASH_RE` immediately above — an allow-side matcher, so
|
|
160
|
-
* broadening its boundary alphabet is the loosening direction.
|
|
161
|
-
*/
|
|
162
|
-
export const ESCAPE_HARNESS_BASH_RE = /(?:^|\n|;|\||&&|\()\s*(?:\w+=\S+\s+)*(?:npx\s+|\S*\/)?harness\b/;
|
|
163
|
-
/**
|
|
164
|
-
* True when `command` matches any escape pattern. Since task 19356be7
|
|
165
|
-
* this is DIAGNOSTICS ONLY — the blocker's decision is
|
|
166
|
-
* `isGateEligibleCommand` below; when escape and deny both match, deny
|
|
167
|
-
* wins. (Under the original escape-first ordering this function was the
|
|
168
|
-
* blocker's first, unconditional check, which let `harness preflight &&
|
|
169
|
-
* git push origin master` — the documented normal workflow — skip the
|
|
170
|
-
* gate entirely.)
|
|
171
|
-
*/
|
|
172
|
-
export function isEscapeCommand(command) {
|
|
173
|
-
return ESCAPE_GIT_BASH_RE.test(command) || ESCAPE_HARNESS_BASH_RE.test(command);
|
|
174
|
-
}
|
|
175
|
-
/** True when `command` matches the curated v1 deny-scope. */
|
|
176
|
-
export function isCuratedMutationCommand(command) {
|
|
177
|
-
return CURATED_MUTATION_BASH_RE.test(command);
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* The blocker's single classification entry point (task 19356be7): a
|
|
181
|
-
* command is gate-eligible iff the curated mutation matcher fires.
|
|
182
|
-
* Everything else — the whole recovery vocabulary, read-only git,
|
|
183
|
-
* unrelated shell — is allowed by the hook BEFORE any manifest load or
|
|
184
|
-
* ledger query, preserving the recovery-never-starved property the
|
|
185
|
-
* escape-first ordering used to provide.
|
|
186
|
-
*
|
|
187
|
-
* A thin wrapper over `isCuratedMutationCommand` by DELIBERATE choice,
|
|
188
|
-
* not by accident. An earlier iteration of this task pre-processed the
|
|
189
|
-
* command here, stripping the bodies of quoted-delimiter heredocs fed to
|
|
190
|
-
* a harness invocation, so that an `harness approve understanding <<'…'`
|
|
191
|
-
* report body mentioning a mutation verb would not become gate-eligible.
|
|
192
|
-
* Two review rounds found two successive families of UNDER-blocks in that
|
|
193
|
-
* pre-processing (bodies consumed that bash really executes), both rooted
|
|
194
|
-
* in the same cause: deciding where a heredoc body BEGINS requires
|
|
195
|
-
* re-implementing bash's quote and word grammar on the permissive side of
|
|
196
|
-
* a security boundary. Tasks `dbc6d303` and `5b1b24fb` had already been
|
|
197
|
-
* halted for that same reason. It was therefore removed rather than
|
|
198
|
-
* patched a third time; see
|
|
199
|
-
* `.ai/runs/2026-08-02-post-merge-gate-escape-precedence/03-decisions.md`
|
|
200
|
-
* D5/D6 for the measurement history, and task `5b1b24fb` for the real
|
|
201
|
-
* fix, which belongs at the `bash_match` layer for every surface at once.
|
|
202
|
-
*
|
|
203
|
-
* Accepted consequence, OVER-block direction: a harness report heredoc
|
|
204
|
-
* whose body carries a boundary-anchored mutation verb IS gate-eligible.
|
|
205
|
-
* It only denies while the branch tip equals a recorded merged tip, and
|
|
206
|
-
* `git switch <default>` — the gate's own recommended recovery — stays
|
|
207
|
-
* free. Same residual class as the quoted-text false positives this
|
|
208
|
-
* change already accepts. Do NOT reintroduce a strip here without a
|
|
209
|
-
* design that does not re-derive bash's grammar.
|
|
210
|
-
*/
|
|
211
|
-
export function isGateEligibleCommand(command) {
|
|
212
|
-
return isCuratedMutationCommand(command);
|
|
213
|
-
}
|
|
214
|
-
/**
|
|
215
|
-
* Defensive `tool_output.exit_code` reader for the PostToolUse Bash
|
|
216
|
-
* payload — Contract A. Returns `null` on ANY shape other than a plain
|
|
217
|
-
* finite number — missing field, a differently-named variant, a string,
|
|
218
|
-
* etc. — so the producer's "no fact on anything but a confirmed success"
|
|
219
|
-
* rule (03-decisions.md) degrades to "no fact" rather than guessing.
|
|
220
|
-
*
|
|
221
|
-
* PAYLOAD REALITY (2026-07, follow-up to 03-decisions.md): live
|
|
222
|
-
* verification against a real Claude Code 2.1.218 native install (a
|
|
223
|
-
* `claude -p --settings` dump-hook capture, 19/19 fired events) found NO
|
|
224
|
-
* `tool_output` field at all — the field is `tool_response`, shaped
|
|
225
|
-
* `{ stdout, stderr, interrupted, isImage, noOutputExpected }` with no
|
|
226
|
-
* exit-code equivalent (see `tests/fixtures/post-merge-gate/
|
|
227
|
-
* real-posttooluse-payload-2.1.218.json`, a verbatim capture). The
|
|
228
|
-
* `tool_output.stdout/stderr/exit_code` shape this function reads
|
|
229
|
-
* evidently describes a DIFFERENT — newer, or differently-shimmed —
|
|
230
|
-
* Claude Code contract than 2.1.218's, not a documentation error to
|
|
231
|
-
* "fix" here: Contract A is left exactly as it was (any install that
|
|
232
|
-
* DOES send `tool_output.exit_code` still works unchanged), and Contract
|
|
233
|
-
* B below is the fallback that makes the producer fire on 2.1.218 at
|
|
234
|
-
* all. See `resolveMergeConfirmation`.
|
|
235
|
-
*/
|
|
236
|
-
export function extractExitCode(toolOutput) {
|
|
237
|
-
if (typeof toolOutput !== "object" || toolOutput === null)
|
|
238
|
-
return null;
|
|
239
|
-
const ec = toolOutput["exit_code"];
|
|
240
|
-
return typeof ec === "number" && Number.isFinite(ec) ? ec : null;
|
|
241
|
-
}
|
|
242
|
-
// Matches the first bare integer following `gh pr merge` — audit
|
|
243
|
-
// decoration only (the deny/allow decision never depends on this).
|
|
244
|
-
const PR_NUMBER_RE = /gh\s+pr\s+merge\b[^\n;|&]*?(\d+)\b/;
|
|
245
|
-
/** Best-effort PR number extraction from a `gh pr merge` command string. */
|
|
246
|
-
export function extractPrNumber(command) {
|
|
247
|
-
const m = PR_NUMBER_RE.exec(command);
|
|
248
|
-
return m ? m[1] : null;
|
|
249
|
-
}
|
|
250
|
-
/**
|
|
251
|
-
* Contract B success-text matcher (2.1.218 payload-reality follow-up).
|
|
252
|
-
* `gh pr merge`'s own past-tense confirmation sentence, verbatim across
|
|
253
|
-
* all three merge methods.
|
|
254
|
-
*
|
|
255
|
-
* SOURCE (verified against the installed `gh` binary, v2.94.0,
|
|
256
|
-
* `pkg/cmd/pr/merge/merge.go` lines 369-376): the success line is built
|
|
257
|
-
* as `infof("%s %s pull request %s#%d (%s)", icon, action,
|
|
258
|
-
* ghrepo.FullName(baseRepo), pr.Number, pr.Title)` — i.e. the repo
|
|
259
|
-
* FULLNAME sits directly between "pull request" and the bare `#<n>`,
|
|
260
|
-
* GLUED to the `#` with no space (`%s#%d`, not `%s #%d`):
|
|
261
|
-
*
|
|
262
|
-
* ✓ Squashed and merged pull request owner/repo#65 (Some title)
|
|
263
|
-
* ✓ Rebased and merged pull request owner/repo#65 (Some title)
|
|
264
|
-
* ✓ Merged pull request owner/repo#65 (Some title)
|
|
265
|
-
*
|
|
266
|
-
* `infof` writes to `gh`'s STDERR (the informational-message channel,
|
|
267
|
-
* distinct from `gh`'s own stdout, which is reserved for machine-
|
|
268
|
-
* consumable output) — another reason this matcher tests the CONCATENATED
|
|
269
|
-
* `stdout`+`stderr`, not stdout alone. `icon` is a bare `✓` (or `!` for
|
|
270
|
-
* warnings) with no ANSI color codes when `gh` detects a non-TTY output
|
|
271
|
-
* stream, which a hook-captured Bash hijacks it into.
|
|
272
|
-
*
|
|
273
|
-
* `[^\s#]*` between "pull request" and `#` accepts BOTH that real
|
|
274
|
-
* `owner/repo#<n>` shape AND a bare `#<n>` (no fullname) — the latter is
|
|
275
|
-
* not `gh`'s actual current wording but is accepted defensively as a
|
|
276
|
-
* documentation-shape / future-`gh`-version tolerance, at zero matching-
|
|
277
|
-
* surface cost (repo fullnames never contain whitespace or `#`, so the
|
|
278
|
-
* character class cannot itself widen what counts as a match beyond
|
|
279
|
-
* "some non-space run immediately before the PR number").
|
|
280
|
-
*
|
|
281
|
-
* Still deliberately narrow overall (conservative — false negatives are
|
|
282
|
-
* the safe direction here, false positives are not):
|
|
283
|
-
* - exact past-tense phrase, not a bare "merged" substring — excludes
|
|
284
|
-
* `gh pr merge --auto`'s pending text (real wording, same source
|
|
285
|
-
* file: "Pull request owner/repo#65 will be automatically merged via
|
|
286
|
-
* squash when all requirements are met" — capitalized standalone
|
|
287
|
-
* "Pull request", no "Squashed/Rebased and merged" or standalone
|
|
288
|
-
* "Merged" immediately precedes it), and excludes the already-merged
|
|
289
|
-
* warning (real wording: "Pull request owner/repo#65 was already
|
|
290
|
-
* merged" — word order is reversed: "Pull request ... was already
|
|
291
|
-
* merged", not "Merged pull request ...").
|
|
292
|
-
* - case-sensitive, matching gh's own capitalization exactly (no `/i`)
|
|
293
|
-
* — narrower matching surface, same conservative direction.
|
|
294
|
-
* - `\b` word boundaries on both ends so a partial-word coincidence
|
|
295
|
-
* (e.g. a hypothetical "ReMerged") cannot match.
|
|
296
|
-
*
|
|
297
|
-
* KNOWN GAP (documented, not attempted to close here): this is coupled
|
|
298
|
-
* to `gh`'s current wording. A future `gh` release that rephrases its
|
|
299
|
-
* success sentence makes this matcher — and therefore the whole
|
|
300
|
-
* Contract-B path — silently, fail-safely inert (no fact written, same
|
|
301
|
-
* as any other unmatched shape; never a false "merged" record). See the
|
|
302
|
-
* pack's instructions.md / docs/policy-packs/post-merge-gate.md "Known
|
|
303
|
-
* gaps" for the operator-facing verification path.
|
|
304
|
-
*/
|
|
305
|
-
export const GH_MERGE_SUCCESS_RE = /\b(?:Squashed and merged|Rebased and merged|Merged)\s+pull request\s+[^\s#]*#(\d+)\b/;
|
|
306
|
-
/**
|
|
307
|
-
* Contract B confirmation: does `toolResponse` carry a real Claude Code
|
|
308
|
-
* 2.1.218-shaped Bash result (`{ stdout, stderr, interrupted, ... }`)
|
|
309
|
-
* whose `stdout`+`stderr` contain a `gh pr merge` success sentence?
|
|
310
|
-
*
|
|
311
|
-
* `interrupted` must be the LITERAL boolean `false` — missing, `true`,
|
|
312
|
-
* or any other value all fail closed (no match), the same fail-safe
|
|
313
|
-
* direction as Contract A's exit_code check. `stdout`/`stderr` default
|
|
314
|
-
* to `""` when absent or non-string (never throws), and are joined with
|
|
315
|
-
* a newline before matching so a phrase cannot accidentally form by
|
|
316
|
-
* concatenating the tail of one stream with the head of the other.
|
|
317
|
-
*/
|
|
318
|
-
export function matchGhMergeSuccessText(toolResponse) {
|
|
319
|
-
if (typeof toolResponse !== "object" || toolResponse === null)
|
|
320
|
-
return { matched: false };
|
|
321
|
-
const tr = toolResponse;
|
|
322
|
-
if (tr["interrupted"] !== false)
|
|
323
|
-
return { matched: false };
|
|
324
|
-
const stdout = typeof tr["stdout"] === "string" ? tr["stdout"] : "";
|
|
325
|
-
const stderr = typeof tr["stderr"] === "string" ? tr["stderr"] : "";
|
|
326
|
-
const combined = `${stdout}\n${stderr}`;
|
|
327
|
-
const match = GH_MERGE_SUCCESS_RE.exec(combined);
|
|
328
|
-
if (!match)
|
|
329
|
-
return { matched: false };
|
|
330
|
-
return { matched: true, pr: match[1] ?? null };
|
|
331
|
-
}
|
|
332
|
-
/**
|
|
333
|
-
* Dual-contract merge confirmation (2.1.218 payload-reality follow-up).
|
|
334
|
-
* Tries Contract A (`tool_output.exit_code`, unchanged) first; falls
|
|
335
|
-
* back to Contract B (`tool_response` + a matching `gh` success
|
|
336
|
-
* sentence) only when Contract A yields no verdict at all.
|
|
337
|
-
*
|
|
338
|
-
* BINDING ordering decision — Contract A wins whenever it resolves to
|
|
339
|
-
* ANY definite verdict, success OR failure: a well-formed, non-zero
|
|
340
|
-
* `exit_code` is Contract A's own explicit failure signal and short-
|
|
341
|
-
* circuits WITHOUT consulting Contract B, so a coincidental gh success
|
|
342
|
-
* phrase sitting in a sibling `tool_response` field (the hypothetical
|
|
343
|
-
* "both present" shape) can never override an authoritative failure.
|
|
344
|
-
* Contract B is consulted only when `exit_code` is entirely unresolvable
|
|
345
|
-
* (`extractExitCode` returns `null` — missing field, wrong shape, or the
|
|
346
|
-
* field genuinely absent as on 2.1.218).
|
|
347
|
-
*/
|
|
348
|
-
export function resolveMergeConfirmation(toolOutput, toolResponse, command) {
|
|
349
|
-
const exitCode = extractExitCode(toolOutput);
|
|
350
|
-
if (exitCode === 0) {
|
|
351
|
-
return {
|
|
352
|
-
confirmed: true,
|
|
353
|
-
contract: "exit_code",
|
|
354
|
-
pr: extractPrNumber(command),
|
|
355
|
-
reason: "tool_output.exit_code === 0 (Contract A)",
|
|
356
|
-
};
|
|
357
|
-
}
|
|
358
|
-
if (exitCode !== null) {
|
|
359
|
-
return {
|
|
360
|
-
confirmed: false,
|
|
361
|
-
contract: "none",
|
|
362
|
-
pr: null,
|
|
363
|
-
reason: `tool_output.exit_code is ${exitCode}, not 0 (Contract A reports failure; Contract B not consulted)`,
|
|
364
|
-
};
|
|
365
|
-
}
|
|
366
|
-
const ghSuccess = matchGhMergeSuccessText(toolResponse);
|
|
367
|
-
if (ghSuccess.matched) {
|
|
368
|
-
return {
|
|
369
|
-
confirmed: true,
|
|
370
|
-
contract: "gh_success_text",
|
|
371
|
-
pr: extractPrNumber(command) ?? ghSuccess.pr,
|
|
372
|
-
reason: "tool_response carries a confirmed gh merge success sentence (Contract B)",
|
|
373
|
-
};
|
|
374
|
-
}
|
|
375
|
-
return {
|
|
376
|
-
confirmed: false,
|
|
377
|
-
contract: "none",
|
|
378
|
-
pr: null,
|
|
379
|
-
reason: "no confirming tool_output.exit_code (Contract A) and no matching gh merge success text in tool_response (Contract B)",
|
|
380
|
-
};
|
|
381
|
-
}
|
|
382
|
-
/**
|
|
383
|
-
* Best-effort default-branch name for the deny message's `git switch
|
|
384
|
-
* <default>` line. Offline, reusing the same `origin/HEAD` resolution
|
|
385
|
-
* `harness record review --base` uses (now shared via
|
|
386
|
-
* `runtime/git-context.ts`, see that module's header). Returns `null`
|
|
387
|
-
* when `cwd` is not in a git work tree, or the repo has no resolvable
|
|
388
|
-
* `origin/HEAD` (e.g. no remote) — the caller falls back to a generic
|
|
389
|
-
* placeholder in that case; this is advisory text, never a gate input.
|
|
390
|
-
*/
|
|
391
|
-
export function resolveDefaultBranchName(cwd) {
|
|
392
|
-
const gitDir = findGitEntry(cwd)?.gitDir;
|
|
393
|
-
if (!gitDir)
|
|
394
|
-
return null;
|
|
395
|
-
return resolveOriginHeadBase(resolveCommonDir(gitDir));
|
|
396
|
-
}
|
|
397
|
-
//# sourceMappingURL=post-merge-gate-runtime.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"post-merge-gate-runtime.js","sourceRoot":"","sources":["../../../src/policy-packs/builtin/post-merge-gate-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
import type { PolicyPack, PolicyUx } from "../../schema/index.js";
|
|
3
|
-
import { type Runtime } from "../runtime.js";
|
|
4
|
-
import type { PackContribution } from "../types.js";
|
|
5
|
-
import { PACK_NAME } from "./post-merge-gate-runtime.js";
|
|
6
|
-
export { PACK_NAME };
|
|
7
|
-
/**
|
|
8
|
-
* Zod schema for this pack's `config:` block. Strict by design so
|
|
9
|
-
* typo'd keys fail loud at lint time (mirrors sibling packs). `ux` is
|
|
10
|
-
* the only operator-tunable key today — the curated mutation list and
|
|
11
|
-
* escape allowlist are fixed in v1 (03-decisions.md); a config override
|
|
12
|
-
* for either can land as a follow-up if operators need it.
|
|
13
|
-
*/
|
|
14
|
-
export declare const configSchema: z.ZodObject<{
|
|
15
|
-
ux: z.ZodOptional<z.ZodObject<{
|
|
16
|
-
cannot: z.ZodString;
|
|
17
|
-
required: z.ZodArray<z.ZodString, "many">;
|
|
18
|
-
run: z.ZodArray<z.ZodString, "many">;
|
|
19
|
-
}, "strict", z.ZodTypeAny, {
|
|
20
|
-
cannot: string;
|
|
21
|
-
required: string[];
|
|
22
|
-
run: string[];
|
|
23
|
-
}, {
|
|
24
|
-
cannot: string;
|
|
25
|
-
required: string[];
|
|
26
|
-
run: string[];
|
|
27
|
-
}>>;
|
|
28
|
-
}, "strict", z.ZodTypeAny, {
|
|
29
|
-
ux?: {
|
|
30
|
-
cannot: string;
|
|
31
|
-
required: string[];
|
|
32
|
-
run: string[];
|
|
33
|
-
} | undefined;
|
|
34
|
-
}, {
|
|
35
|
-
ux?: {
|
|
36
|
-
cannot: string;
|
|
37
|
-
required: string[];
|
|
38
|
-
run: string[];
|
|
39
|
-
} | undefined;
|
|
40
|
-
}>;
|
|
41
|
-
/**
|
|
42
|
-
* Shipped default `config.ux` for this pack. Canonical source for the
|
|
43
|
-
* `full` init template and `harness pack reseed` (mirrors
|
|
44
|
-
* branch-protection's `defaultUx`): a future wording fix lands here once
|
|
45
|
-
* and reaches both a fresh `harness init --template full` and an
|
|
46
|
-
* operator running `harness pack reseed post-merge-gate` against an
|
|
47
|
-
* already-installed manifest. `${DEFAULT_BRANCH}` is always populated by
|
|
48
|
-
* the blocker (falling back to the literal placeholder `<default-branch>`
|
|
49
|
-
* when it cannot resolve `origin/HEAD`), never left as an unresolved
|
|
50
|
-
* template var.
|
|
51
|
-
*/
|
|
52
|
-
export declare function defaultUx(): PolicyUx;
|
|
53
|
-
export declare function resolve(pack: PolicyPack, runtime?: Runtime): {
|
|
54
|
-
contribution: PackContribution;
|
|
55
|
-
warnings: string[];
|
|
56
|
-
};
|