@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
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
import { type CodexManagedHookUnit } from "../apply/install-codex-config.js";
|
|
2
|
+
export declare const CODEX_SNAPSHOT_BASENAME_PREFIX = "harness.gate-disable-codex.";
|
|
3
|
+
/** Why `gate enable --runtime codex` retired a snapshot: it was applied or
|
|
4
|
+
* found already applied (`restored`), or its units were brought back by
|
|
5
|
+
* something else since it was taken, such as a re-install (`superseded`). */
|
|
6
|
+
export type CodexSnapshotRetirement = "restored" | "superseded";
|
|
7
|
+
export declare const CODEX_SNAPSHOT_VERSION: 3;
|
|
8
|
+
export declare const CODEX_SNAPSHOT_TARGET: "codex";
|
|
9
|
+
/** The value a neutralised unit's `hooks` line carries. */
|
|
10
|
+
export declare const CODEX_NEUTRALISED_HOOKS = "hooks = []";
|
|
11
|
+
export interface CodexDisabledUnit {
|
|
12
|
+
event: string;
|
|
13
|
+
/** Position of the unit among the units of its event in the block. */
|
|
14
|
+
eventIndex: number;
|
|
15
|
+
/** Position of the unit among all units of the block. */
|
|
16
|
+
ordinal: number;
|
|
17
|
+
id: string;
|
|
18
|
+
matcher: string | null;
|
|
19
|
+
/** The unit's original `hooks = [...]` line, verbatim, without its line terminator. */
|
|
20
|
+
hooksText: string;
|
|
21
|
+
}
|
|
22
|
+
/** One later `gate disable` merged into a live snapshot, kept for audit. */
|
|
23
|
+
export interface CodexSnapshotMerge {
|
|
24
|
+
createdAt: string;
|
|
25
|
+
matcher: string;
|
|
26
|
+
/** The pre-merge copy of the config that disable wrote. */
|
|
27
|
+
configBackupPath: string;
|
|
28
|
+
}
|
|
29
|
+
export interface CodexGateSnapshot {
|
|
30
|
+
version: typeof CODEX_SNAPSHOT_VERSION;
|
|
31
|
+
target: typeof CODEX_SNAPSHOT_TARGET;
|
|
32
|
+
createdAt: string;
|
|
33
|
+
/** Absolute path as requested (the symlink when the config is one). */
|
|
34
|
+
configPath: string;
|
|
35
|
+
/** Absolute path the pre-mutation copy was written to. */
|
|
36
|
+
configBackupPath: string;
|
|
37
|
+
/** The config before the first disable this snapshot covers. */
|
|
38
|
+
configBeforeSha256: string;
|
|
39
|
+
/** The config after the latest disable merged into this snapshot. */
|
|
40
|
+
configAfterSha256: string;
|
|
41
|
+
filter: {
|
|
42
|
+
matcher?: string;
|
|
43
|
+
};
|
|
44
|
+
/** The neutralised units in block order, merged over every disable since the snapshot was created. */
|
|
45
|
+
neutralised: CodexDisabledUnit[];
|
|
46
|
+
/** Later disables merged into this snapshot, oldest first (absent when there were none). */
|
|
47
|
+
merges?: CodexSnapshotMerge[];
|
|
48
|
+
/** The generation marker of the block the snapshot was taken from
|
|
49
|
+
* (`CODEX_BLOCK_GENERATION_PREFIX`); absent when that block carried none,
|
|
50
|
+
* and in a snapshot written before the marker existed. */
|
|
51
|
+
blockGeneration?: string;
|
|
52
|
+
}
|
|
53
|
+
export interface ResolvedCodexConfig {
|
|
54
|
+
/** The requested path, absolute. Snapshots and backups sit beside it. */
|
|
55
|
+
requestedPath: string;
|
|
56
|
+
/** The regular file read and written (the symlink's target when linked). */
|
|
57
|
+
configPath: string;
|
|
58
|
+
/** `requestedPath` when the call named a config (`--config`), else null: a
|
|
59
|
+
* command a message prints repeats the flag only when the call had it. */
|
|
60
|
+
namedPath: string | null;
|
|
61
|
+
}
|
|
62
|
+
/** ` <flag> <path>` with the path shell-quoted when the call named a config, else "". */
|
|
63
|
+
export declare function codexConfigFlag(namedPath: string | null, flag?: string): string;
|
|
64
|
+
/** The install command the installer's refusal texts and hints print. */
|
|
65
|
+
export declare const CODEX_INSTALL_COMMAND = "harness apply --runtime codex --install";
|
|
66
|
+
/** `message` with every bare install command followed by the call's
|
|
67
|
+
* `--codex-config <path>` (shell-quoted) when the call named a config, so a
|
|
68
|
+
* pasted command acts on the config the call acted on and not on the default
|
|
69
|
+
* `~/.codex/config.toml`. A call without a named config prints it unchanged.
|
|
70
|
+
* Apply once, at the boundary that knows the call's path. */
|
|
71
|
+
export declare function nameInstallConfig(message: string, namedPath: string | null): string;
|
|
72
|
+
/** The message of an installer refusal in the gate's wording. */
|
|
73
|
+
export declare function gateWording(message: string): string;
|
|
74
|
+
/** An installer refusal becomes the gate verb's own error type (same text in
|
|
75
|
+
* the gate's wording, its install commands naming the config the call named,
|
|
76
|
+
* `namedPath`); anything else is rethrown unchanged by the caller. */
|
|
77
|
+
export declare function toGateError(err: unknown, makeError: (message: string) => Error, namedPath?: string | null): unknown;
|
|
78
|
+
/** Resolves `--config` (or the default `~/.codex/config.toml`) the way the
|
|
79
|
+
* installer does: a symlinked config is edited at its resolved target. The
|
|
80
|
+
* symlink refusals (dangling, not a regular file) surface as `makeError`. */
|
|
81
|
+
export declare function resolveCodexConfig(opts: {
|
|
82
|
+
configPath?: string | undefined;
|
|
83
|
+
homeDir?: string | undefined;
|
|
84
|
+
}, makeError: (message: string) => Error): ResolvedCodexConfig;
|
|
85
|
+
export declare function codexSnapshotPath(requestedPath: string, now: Date): string;
|
|
86
|
+
/** The name a snapshot is renamed to once retired. The file stays for audit;
|
|
87
|
+
* `listCodexSnapshots` never offers it again. */
|
|
88
|
+
export declare function retiredCodexSnapshotPath(snapPath: string, why: CodexSnapshotRetirement): string;
|
|
89
|
+
/** The snapshot a call retired: `from` was renamed to `to`. */
|
|
90
|
+
export interface CodexRetiredSnapshot {
|
|
91
|
+
from: string;
|
|
92
|
+
to: string;
|
|
93
|
+
why: CodexSnapshotRetirement;
|
|
94
|
+
/** For an install-superseded snapshot: the installer backup that dates the install. */
|
|
95
|
+
installBackup?: string;
|
|
96
|
+
/** For a snapshot superseded because the block carries another generation
|
|
97
|
+
* marker than the one it recorded: both markers. */
|
|
98
|
+
generation?: {
|
|
99
|
+
snapshot: string;
|
|
100
|
+
block: string;
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
/** Renames a live snapshot to its retired name and returns that name; the
|
|
104
|
+
* file stays for audit. A failed rename surfaces as `makeError`: `context`
|
|
105
|
+
* (what the call has done so far) and the move-aside step. */
|
|
106
|
+
export declare function retireCodexSnapshot(snapPath: string, why: CodexSnapshotRetirement, makeError: (message: string) => Error, context?: string): string;
|
|
107
|
+
/** The ways out of a live snapshot that no gate command can apply. */
|
|
108
|
+
export declare function codexSnapshotExits(live: LoadedCodexSnapshot, namedPath?: string | null): string;
|
|
109
|
+
export type CodexRestorePlan = {
|
|
110
|
+
ok: true;
|
|
111
|
+
text: string;
|
|
112
|
+
restored: CodexDisabledUnit[];
|
|
113
|
+
skipped: string[];
|
|
114
|
+
} | {
|
|
115
|
+
ok: false;
|
|
116
|
+
reason: string;
|
|
117
|
+
};
|
|
118
|
+
/** The config with each still-neutralised unit of the snapshot given its
|
|
119
|
+
* original `hooks` line back, found by id in the block as it is now. A unit
|
|
120
|
+
* that is present once and not neutralised is back already, whatever its
|
|
121
|
+
* event or matcher now: it is skipped and named in `skipped`, and its current
|
|
122
|
+
* line is never overwritten. A unit that is missing, listed twice, or still
|
|
123
|
+
* neutralised under another event or matcher cannot be restored by any gate
|
|
124
|
+
* command, so the plan fails and its reason names the ways out. `units` is
|
|
125
|
+
* null when the config has no managed block. */
|
|
126
|
+
export declare function planCodexRestore(current: string, units: readonly CodexManagedHookUnit[] | null, configPath: string, live: LoadedCodexSnapshot, namedPath?: string | null): CodexRestorePlan;
|
|
127
|
+
/** The installer's newest write of the config, read from its backups beside
|
|
128
|
+
* the requested path, beside every further hop of its link chain and beside
|
|
129
|
+
* the resolved target (an install leaves them beside the path it was run
|
|
130
|
+
* through, which may be any of these). An install through a link outside this
|
|
131
|
+
* chain leaves its backups where this cannot look. */
|
|
132
|
+
export declare function latestInstall(requestedPath: string, configPath: string): {
|
|
133
|
+
ms: number;
|
|
134
|
+
path: string;
|
|
135
|
+
} | null;
|
|
136
|
+
/** Whether a live snapshot is spent, i.e. `gate enable` would only retire it
|
|
137
|
+
* without writing: an install re-rendered the block after it was taken (its
|
|
138
|
+
* hooks lines may be outdated), the config already matches its pre-disable
|
|
139
|
+
* sha, or none of its units is disabled any more. The last case counts only
|
|
140
|
+
* when every unit it names is still in the block: a unit deleted by hand is
|
|
141
|
+
* neither enabled nor restorable, so the snapshot stays live and `missing`
|
|
142
|
+
* names it. `units` is null when the config has no managed block.
|
|
143
|
+
*
|
|
144
|
+
* An install is dated two ways: by the installer's backup files (`install`,
|
|
145
|
+
* newer than the snapshot), and by the block's generation marker
|
|
146
|
+
* (`blockGeneration`, null when the block carries none): a snapshot that
|
|
147
|
+
* recorded a marker and finds the block carrying another one was taken from a
|
|
148
|
+
* block an install has re-rendered since, which no link spelling and no
|
|
149
|
+
* deleted backup file hides. A snapshot without a recorded marker, or a block
|
|
150
|
+
* without one, is dated by the backup files alone. */
|
|
151
|
+
export declare function spentCodexSnapshot(snapshot: CodexGateSnapshot, currentSha: string, units: ReadonlyArray<{
|
|
152
|
+
id: string;
|
|
153
|
+
disabled: boolean;
|
|
154
|
+
}> | null, install: {
|
|
155
|
+
ms: number;
|
|
156
|
+
path: string;
|
|
157
|
+
} | null, blockGeneration: string | null): {
|
|
158
|
+
retire: Pick<CodexRetiredSnapshot, "why" | "installBackup" | "generation"> | null;
|
|
159
|
+
missing: string[];
|
|
160
|
+
};
|
|
161
|
+
/** The Codex snapshots beside a config that are still live (not retired). */
|
|
162
|
+
export declare function listCodexSnapshots(dir: string): string[];
|
|
163
|
+
export interface LoadedCodexSnapshot {
|
|
164
|
+
path: string;
|
|
165
|
+
snapshot: CodexGateSnapshot;
|
|
166
|
+
}
|
|
167
|
+
/** A live snapshot beside a config that was taken for another config. */
|
|
168
|
+
export interface ForeignCodexSnapshot {
|
|
169
|
+
/** The snapshot file. */
|
|
170
|
+
path: string;
|
|
171
|
+
/** The config it was taken for: its recorded basename in the snapshot's directory. */
|
|
172
|
+
configPath: string;
|
|
173
|
+
/** Whether a file (or link) is at `configPath` now. */
|
|
174
|
+
configExists: boolean;
|
|
175
|
+
/** The backup its first disable wrote: the pre-disable copy of that config. */
|
|
176
|
+
configBackupPath: string;
|
|
177
|
+
}
|
|
178
|
+
/** The way out of a snapshot taken for another config: the gate command that
|
|
179
|
+
* restores the config the snapshot was taken for (with the extra steps when
|
|
180
|
+
* no file is at that name any more). */
|
|
181
|
+
export declare function foreignCodexExit(f: ForeignCodexSnapshot): string;
|
|
182
|
+
/** The live snapshots beside a config, split into those taken for it, newest
|
|
183
|
+
* first by their recorded `createdAt` (equal times by file name, newest name
|
|
184
|
+
* first; never by file mtime, which a directory copy reorders), and those
|
|
185
|
+
* taken for another config. Snapshots sit beside their config and record its
|
|
186
|
+
* path, so only the basename counts, never how the directory was spelled; a
|
|
187
|
+
* snapshot is the config's own when the requested path names the directory
|
|
188
|
+
* entry that basename names (`namesSameEntry`, the Claude gate's rule): the
|
|
189
|
+
* same spelling, or another spelling of the one entry on a filesystem that
|
|
190
|
+
* folds letter case or normalization. A hard link or a symlink to the config
|
|
191
|
+
* under another name is another entry, so a snapshot recorded for either is
|
|
192
|
+
* foreign to the other. An unreadable snapshot refuses via `makeError`. */
|
|
193
|
+
export declare function readLiveCodexSnapshots(requestedPath: string, makeError: (message: string) => Error, namedPath?: string | null): {
|
|
194
|
+
own: LoadedCodexSnapshot[];
|
|
195
|
+
foreign: ForeignCodexSnapshot[];
|
|
196
|
+
};
|
|
197
|
+
export interface CodexSnapshotReadOk {
|
|
198
|
+
ok: true;
|
|
199
|
+
snapshot: CodexGateSnapshot;
|
|
200
|
+
}
|
|
201
|
+
export interface CodexSnapshotReadErr {
|
|
202
|
+
ok: false;
|
|
203
|
+
reason: string;
|
|
204
|
+
}
|
|
205
|
+
/** Parses a Codex snapshot. Anything that is not a version-3 snapshot with
|
|
206
|
+
* `target: "codex"` is refused, so a Claude snapshot renamed into place is
|
|
207
|
+
* never restored into a TOML file. */
|
|
208
|
+
export declare function readCodexSnapshot(filePath: string, namedPath?: string | null): CodexSnapshotReadOk | CodexSnapshotReadErr;
|
|
@@ -0,0 +1,402 @@
|
|
|
1
|
+
// Snapshot file format and shared path handling for `harness gate disable
|
|
2
|
+
// --runtime codex` / `harness gate enable --runtime codex`.
|
|
3
|
+
//
|
|
4
|
+
// `gate disable --runtime codex` does not delete a hook unit: it neutralises
|
|
5
|
+
// it in place, replacing the unit's `hooks = [...]` line with `hooks = []`.
|
|
6
|
+
// Codex keys a user hook's trust and enabled state by its position in the
|
|
7
|
+
// event's array, and an empty group takes its position without registering
|
|
8
|
+
// a handler, so every other hook keeps its trust. A Codex snapshot records
|
|
9
|
+
// the neutralised units: per unit its identity and the verbatim original
|
|
10
|
+
// `hooks = [...]` line, plus the sha256 of the config before the first
|
|
11
|
+
// disable and after the latest one, and the generation marker of the block it
|
|
12
|
+
// was taken from, which dates it against a later install. At most one
|
|
13
|
+
// snapshot per config is live: a later disable merges its units into it. It
|
|
14
|
+
// lives beside the Codex config under its own file prefix and carries
|
|
15
|
+
// `version: 3` and `target: "codex"`,
|
|
16
|
+
// so a Claude settings snapshot (version 1 or 2, no target) can never be restored
|
|
17
|
+
// into TOML and a Codex snapshot can never be read as a settings.json one
|
|
18
|
+
// (`readSnapshot` rejects version 3). Once `gate enable` has applied a
|
|
19
|
+
// snapshot, or found it applied or superseded, it renames the file to
|
|
20
|
+
// `*.restored.json` or `*.superseded.json`, and so does a `gate disable` that
|
|
21
|
+
// finds the live snapshot spent: the file stays for audit,
|
|
22
|
+
// `listCodexSnapshots` never offers it again.
|
|
23
|
+
import * as fs from "node:fs";
|
|
24
|
+
import * as path from "node:path";
|
|
25
|
+
import { CodexInstallRefusalError, defaultCodexConfigPath, latestCodexInstallBackup, resolveConfigSymlink, } from "../apply/install-codex-config.js";
|
|
26
|
+
import { kernelEntry, linkChain } from "./link-chain.js";
|
|
27
|
+
import { shellQuote } from "../shell-quote.js";
|
|
28
|
+
import { listSnapshots, namesSameEntry, SNAPSHOT_BASENAME_SUFFIX, snapshotFieldProblem } from "./snapshot.js";
|
|
29
|
+
export const CODEX_SNAPSHOT_BASENAME_PREFIX = "harness.gate-disable-codex.";
|
|
30
|
+
const RETIRED_SUFFIXES = [".restored", ".superseded"].map((s) => `${s}${SNAPSHOT_BASENAME_SUFFIX}`);
|
|
31
|
+
export const CODEX_SNAPSHOT_VERSION = 3;
|
|
32
|
+
export const CODEX_SNAPSHOT_TARGET = "codex";
|
|
33
|
+
/** The value a neutralised unit's `hooks` line carries. */
|
|
34
|
+
export const CODEX_NEUTRALISED_HOOKS = "hooks = []";
|
|
35
|
+
/** ` <flag> <path>` with the path shell-quoted when the call named a config, else "". */
|
|
36
|
+
export function codexConfigFlag(namedPath, flag = "--config") {
|
|
37
|
+
return namedPath === null ? "" : ` ${flag} ${shellQuote(namedPath)}`;
|
|
38
|
+
}
|
|
39
|
+
/** The install command the installer's refusal texts and hints print. */
|
|
40
|
+
export const CODEX_INSTALL_COMMAND = "harness apply --runtime codex --install";
|
|
41
|
+
/** `message` with every bare install command followed by the call's
|
|
42
|
+
* `--codex-config <path>` (shell-quoted) when the call named a config, so a
|
|
43
|
+
* pasted command acts on the config the call acted on and not on the default
|
|
44
|
+
* `~/.codex/config.toml`. A call without a named config prints it unchanged.
|
|
45
|
+
* Apply once, at the boundary that knows the call's path. */
|
|
46
|
+
export function nameInstallConfig(message, namedPath) {
|
|
47
|
+
if (namedPath === null)
|
|
48
|
+
return message;
|
|
49
|
+
return message
|
|
50
|
+
.split(CODEX_INSTALL_COMMAND)
|
|
51
|
+
.join(`${CODEX_INSTALL_COMMAND}${codexConfigFlag(namedPath, "--codex-config")}`);
|
|
52
|
+
}
|
|
53
|
+
/** Installer refusal texts are worded for `harness apply --install`. Reached
|
|
54
|
+
* through the gate they would tell the operator about an install that never
|
|
55
|
+
* ran, so each known phrase is mapped to the gate's own wording. */
|
|
56
|
+
const GATE_WORDING = [
|
|
57
|
+
[
|
|
58
|
+
"refusing to install, because without parsing it harness cannot confirm that every table outside the harness-managed hook block would survive the install",
|
|
59
|
+
"refusing to edit, because without parsing it harness cannot confirm that every table outside the harness-managed hook block would survive the edit",
|
|
60
|
+
],
|
|
61
|
+
["installing would change", "the gate edit would change"],
|
|
62
|
+
["refusing to install rather than risk", "refusing to edit rather than risk"],
|
|
63
|
+
["refusing to install, nothing was written", "refusing to edit, nothing was written"],
|
|
64
|
+
["The Codex config harness would write to", "The Codex config the gate would write to"],
|
|
65
|
+
[
|
|
66
|
+
"restore it from the most recent .harness-backup-* file (if one exists)",
|
|
67
|
+
"restore it from the backup the gate wrote beside it (<config>.bak.<timestamp>, if one exists)",
|
|
68
|
+
],
|
|
69
|
+
];
|
|
70
|
+
/** The message of an installer refusal in the gate's wording. */
|
|
71
|
+
export function gateWording(message) {
|
|
72
|
+
let out = message;
|
|
73
|
+
for (const [from, to] of GATE_WORDING)
|
|
74
|
+
out = out.split(from).join(to);
|
|
75
|
+
return out;
|
|
76
|
+
}
|
|
77
|
+
/** An installer refusal becomes the gate verb's own error type (same text in
|
|
78
|
+
* the gate's wording, its install commands naming the config the call named,
|
|
79
|
+
* `namedPath`); anything else is rethrown unchanged by the caller. */
|
|
80
|
+
export function toGateError(err, makeError, namedPath = null) {
|
|
81
|
+
return err instanceof CodexInstallRefusalError
|
|
82
|
+
? makeError(nameInstallConfig(gateWording(err.message), namedPath))
|
|
83
|
+
: err;
|
|
84
|
+
}
|
|
85
|
+
/** The absolute spelling of a config path. One with a `..` segment is taken
|
|
86
|
+
* through the directory the kernel reaches (`kernelEntry`), not folded
|
|
87
|
+
* lexically: `via/..` is the parent of where the directory link `via` leads,
|
|
88
|
+
* and the snapshot and the backup sit beside the config as the kernel finds it. */
|
|
89
|
+
function absoluteEntry(spelled) {
|
|
90
|
+
if (!spelled.split(path.sep).includes(".."))
|
|
91
|
+
return path.resolve(spelled);
|
|
92
|
+
const entry = kernelEntry(spelled);
|
|
93
|
+
// A directory that cannot be resolved stays as written (nothing can be read
|
|
94
|
+
// or written through it), made absolute without a fold.
|
|
95
|
+
return path.isAbsolute(entry) ? entry : `${process.cwd()}${path.sep}${entry}`;
|
|
96
|
+
}
|
|
97
|
+
/** Resolves `--config` (or the default `~/.codex/config.toml`) the way the
|
|
98
|
+
* installer does: a symlinked config is edited at its resolved target. The
|
|
99
|
+
* symlink refusals (dangling, not a regular file) surface as `makeError`. */
|
|
100
|
+
export function resolveCodexConfig(opts, makeError) {
|
|
101
|
+
const named = typeof opts.configPath === "string" && opts.configPath.length > 0;
|
|
102
|
+
const requestedPath = absoluteEntry(named ? opts.configPath : defaultCodexConfigPath(opts.homeDir));
|
|
103
|
+
try {
|
|
104
|
+
return { requestedPath, configPath: resolveConfigSymlink(requestedPath), namedPath: named ? requestedPath : null };
|
|
105
|
+
}
|
|
106
|
+
catch (err) {
|
|
107
|
+
throw toGateError(err, makeError, named ? requestedPath : null);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
function stamp(now) {
|
|
111
|
+
return now.toISOString().replace(/:/g, "-");
|
|
112
|
+
}
|
|
113
|
+
export function codexSnapshotPath(requestedPath, now) {
|
|
114
|
+
return path.join(path.dirname(requestedPath), `${CODEX_SNAPSHOT_BASENAME_PREFIX}${stamp(now)}${SNAPSHOT_BASENAME_SUFFIX}`);
|
|
115
|
+
}
|
|
116
|
+
/** The name a snapshot is renamed to once retired. The file stays for audit;
|
|
117
|
+
* `listCodexSnapshots` never offers it again. */
|
|
118
|
+
export function retiredCodexSnapshotPath(snapPath, why) {
|
|
119
|
+
return `${snapPath.slice(0, snapPath.length - SNAPSHOT_BASENAME_SUFFIX.length)}.${why}${SNAPSHOT_BASENAME_SUFFIX}`;
|
|
120
|
+
}
|
|
121
|
+
/** Renames a live snapshot to its retired name and returns that name; the
|
|
122
|
+
* file stays for audit. A failed rename surfaces as `makeError`: `context`
|
|
123
|
+
* (what the call has done so far) and the move-aside step. */
|
|
124
|
+
export function retireCodexSnapshot(snapPath, why, makeError, context = "") {
|
|
125
|
+
const to = retiredCodexSnapshotPath(snapPath, why);
|
|
126
|
+
try {
|
|
127
|
+
fs.renameSync(snapPath, to);
|
|
128
|
+
}
|
|
129
|
+
catch (err) {
|
|
130
|
+
throw makeError(`${context}cannot retire the snapshot ${snapPath} (${err.message}); move it out of this ` +
|
|
131
|
+
"directory by hand so it is never applied again, then run the command again.");
|
|
132
|
+
}
|
|
133
|
+
return to;
|
|
134
|
+
}
|
|
135
|
+
/** The ways out of a live snapshot that no gate command can apply. */
|
|
136
|
+
export function codexSnapshotExits(live, namedPath = null) {
|
|
137
|
+
return (`Ways out: run \`harness apply --runtime codex --install${codexConfigFlag(namedPath, "--codex-config")}\`, which ` +
|
|
138
|
+
`re-renders the block and supersedes the snapshot, or restore the config from ${live.snapshot.configBackupPath} ` +
|
|
139
|
+
`(its state before the snapshot's first disable); either way the next ` +
|
|
140
|
+
`\`harness gate enable --runtime codex${codexConfigFlag(namedPath)}\` (or disable) retires the ` +
|
|
141
|
+
`snapshot. Or move ${live.path} out of this directory and put back by hand any unit it names that is ` +
|
|
142
|
+
"still disabled.");
|
|
143
|
+
}
|
|
144
|
+
/** The config with each still-neutralised unit of the snapshot given its
|
|
145
|
+
* original `hooks` line back, found by id in the block as it is now. A unit
|
|
146
|
+
* that is present once and not neutralised is back already, whatever its
|
|
147
|
+
* event or matcher now: it is skipped and named in `skipped`, and its current
|
|
148
|
+
* line is never overwritten. A unit that is missing, listed twice, or still
|
|
149
|
+
* neutralised under another event or matcher cannot be restored by any gate
|
|
150
|
+
* command, so the plan fails and its reason names the ways out. `units` is
|
|
151
|
+
* null when the config has no managed block. */
|
|
152
|
+
export function planCodexRestore(current, units, configPath, live, namedPath = null) {
|
|
153
|
+
if (units === null) {
|
|
154
|
+
return {
|
|
155
|
+
ok: false,
|
|
156
|
+
reason: `${configPath} has no harness-managed Codex hook block any more; the snapshot ${live.path} cannot ` +
|
|
157
|
+
`restore units into it. The config is untouched. ${codexSnapshotExits(live, namedPath)}`,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
const edits = [];
|
|
161
|
+
const restored = [];
|
|
162
|
+
const skipped = [];
|
|
163
|
+
for (const wanted of live.snapshot.neutralised) {
|
|
164
|
+
const found = units.filter((u) => u.id === wanted.id);
|
|
165
|
+
const unit = found.length === 1 ? found[0] : undefined;
|
|
166
|
+
if (unit !== undefined && !unit.disabled) {
|
|
167
|
+
skipped.push(wanted.id);
|
|
168
|
+
continue;
|
|
169
|
+
}
|
|
170
|
+
if (unit === undefined || unit.event !== wanted.event || unit.matcher !== wanted.matcher) {
|
|
171
|
+
return {
|
|
172
|
+
ok: false,
|
|
173
|
+
reason: `the hook unit ${JSON.stringify(wanted.id)} of the snapshot ${live.path} is not in the block of ` +
|
|
174
|
+
`${configPath} as it was (missing, listed twice, or changed event or matcher while still disabled), ` +
|
|
175
|
+
`so no gate command can restore it. The config is untouched. ${codexSnapshotExits(live, namedPath)}`,
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
edits.push({ start: unit.hooksStart, end: unit.hooksEnd, text: wanted.hooksText });
|
|
179
|
+
restored.push(wanted);
|
|
180
|
+
}
|
|
181
|
+
edits.sort((a, b) => a.start - b.start);
|
|
182
|
+
let out = "";
|
|
183
|
+
let cursor = 0;
|
|
184
|
+
for (const edit of edits) {
|
|
185
|
+
out += current.slice(cursor, edit.start) + edit.text;
|
|
186
|
+
cursor = edit.end;
|
|
187
|
+
}
|
|
188
|
+
return { ok: true, text: out + current.slice(cursor), restored, skipped };
|
|
189
|
+
}
|
|
190
|
+
/** The installer's newest write of the config, read from its backups beside
|
|
191
|
+
* the requested path, beside every further hop of its link chain and beside
|
|
192
|
+
* the resolved target (an install leaves them beside the path it was run
|
|
193
|
+
* through, which may be any of these). An install through a link outside this
|
|
194
|
+
* chain leaves its backups where this cannot look. */
|
|
195
|
+
export function latestInstall(requestedPath, configPath) {
|
|
196
|
+
const found = [...new Set([...linkChain(requestedPath), configPath])]
|
|
197
|
+
.map(latestCodexInstallBackup)
|
|
198
|
+
.filter((t) => t !== null);
|
|
199
|
+
return found.reduce((a, b) => (a === null || b.ms > a.ms ? b : a), null);
|
|
200
|
+
}
|
|
201
|
+
/** Whether a live snapshot is spent, i.e. `gate enable` would only retire it
|
|
202
|
+
* without writing: an install re-rendered the block after it was taken (its
|
|
203
|
+
* hooks lines may be outdated), the config already matches its pre-disable
|
|
204
|
+
* sha, or none of its units is disabled any more. The last case counts only
|
|
205
|
+
* when every unit it names is still in the block: a unit deleted by hand is
|
|
206
|
+
* neither enabled nor restorable, so the snapshot stays live and `missing`
|
|
207
|
+
* names it. `units` is null when the config has no managed block.
|
|
208
|
+
*
|
|
209
|
+
* An install is dated two ways: by the installer's backup files (`install`,
|
|
210
|
+
* newer than the snapshot), and by the block's generation marker
|
|
211
|
+
* (`blockGeneration`, null when the block carries none): a snapshot that
|
|
212
|
+
* recorded a marker and finds the block carrying another one was taken from a
|
|
213
|
+
* block an install has re-rendered since, which no link spelling and no
|
|
214
|
+
* deleted backup file hides. A snapshot without a recorded marker, or a block
|
|
215
|
+
* without one, is dated by the backup files alone. */
|
|
216
|
+
export function spentCodexSnapshot(snapshot, currentSha, units, install, blockGeneration) {
|
|
217
|
+
if (install !== null && install.ms > Date.parse(snapshot.createdAt)) {
|
|
218
|
+
return { retire: { why: "superseded", installBackup: install.path }, missing: [] };
|
|
219
|
+
}
|
|
220
|
+
const recorded = snapshot.blockGeneration;
|
|
221
|
+
if (recorded !== undefined && blockGeneration !== null && recorded !== blockGeneration) {
|
|
222
|
+
return {
|
|
223
|
+
retire: { why: "superseded", generation: { snapshot: recorded, block: blockGeneration } },
|
|
224
|
+
missing: [],
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
if (currentSha === snapshot.configBeforeSha256)
|
|
228
|
+
return { retire: { why: "restored" }, missing: [] };
|
|
229
|
+
const ids = snapshot.neutralised.map((u) => u.id);
|
|
230
|
+
if (units !== null && !units.some((u) => u.disabled && ids.includes(u.id))) {
|
|
231
|
+
const missing = ids.filter((id) => !units.some((u) => u.id === id));
|
|
232
|
+
return { retire: missing.length === 0 ? { why: "superseded" } : null, missing };
|
|
233
|
+
}
|
|
234
|
+
return { retire: null, missing: [] };
|
|
235
|
+
}
|
|
236
|
+
/** The Codex snapshots beside a config that are still live (not retired). */
|
|
237
|
+
export function listCodexSnapshots(dir) {
|
|
238
|
+
return listSnapshots(dir, CODEX_SNAPSHOT_BASENAME_PREFIX).filter((p) => !RETIRED_SUFFIXES.some((suffix) => p.endsWith(suffix)));
|
|
239
|
+
}
|
|
240
|
+
/** The way out of a snapshot taken for another config: the gate command that
|
|
241
|
+
* restores the config the snapshot was taken for (with the extra steps when
|
|
242
|
+
* no file is at that name any more). */
|
|
243
|
+
export function foreignCodexExit(f) {
|
|
244
|
+
return (`run \`harness gate enable --runtime codex --config ${shellQuote(f.configPath)}\`` +
|
|
245
|
+
(f.configExists
|
|
246
|
+
? ""
|
|
247
|
+
: ` (no file is at that name now: if the config was renamed after the disable, rename it back first; ` +
|
|
248
|
+
`if it is gone, restore it from ${f.configBackupPath}, which is the file before that disable, then run ` +
|
|
249
|
+
"that command, which retires the snapshot; or move the snapshot out of the directory by hand once its " +
|
|
250
|
+
"units are back)"));
|
|
251
|
+
}
|
|
252
|
+
/** The live snapshots beside a config, split into those taken for it, newest
|
|
253
|
+
* first by their recorded `createdAt` (equal times by file name, newest name
|
|
254
|
+
* first; never by file mtime, which a directory copy reorders), and those
|
|
255
|
+
* taken for another config. Snapshots sit beside their config and record its
|
|
256
|
+
* path, so only the basename counts, never how the directory was spelled; a
|
|
257
|
+
* snapshot is the config's own when the requested path names the directory
|
|
258
|
+
* entry that basename names (`namesSameEntry`, the Claude gate's rule): the
|
|
259
|
+
* same spelling, or another spelling of the one entry on a filesystem that
|
|
260
|
+
* folds letter case or normalization. A hard link or a symlink to the config
|
|
261
|
+
* under another name is another entry, so a snapshot recorded for either is
|
|
262
|
+
* foreign to the other. An unreadable snapshot refuses via `makeError`. */
|
|
263
|
+
export function readLiveCodexSnapshots(requestedPath, makeError, namedPath = null) {
|
|
264
|
+
const own = [];
|
|
265
|
+
const foreign = [];
|
|
266
|
+
const dir = path.dirname(requestedPath);
|
|
267
|
+
const targetName = path.basename(requestedPath);
|
|
268
|
+
for (const snapPath of listCodexSnapshots(dir)) {
|
|
269
|
+
const read = readCodexSnapshot(snapPath, namedPath);
|
|
270
|
+
if (!read.ok) {
|
|
271
|
+
throw makeError(`${read.reason.replace(/\.$/, "")}. A live Codex snapshot beside ${requestedPath} that harness cannot read blocks the gate: ` +
|
|
272
|
+
`move ${snapPath} aside (rename it out of this directory) and run the command again.`);
|
|
273
|
+
}
|
|
274
|
+
const recordedName = path.basename(read.snapshot.configPath);
|
|
275
|
+
if (namesSameEntry(dir, recordedName, targetName, { symlinks: true })) {
|
|
276
|
+
own.push({ path: snapPath, snapshot: read.snapshot });
|
|
277
|
+
}
|
|
278
|
+
else {
|
|
279
|
+
const configPath = path.join(dir, recordedName);
|
|
280
|
+
foreign.push({
|
|
281
|
+
path: snapPath,
|
|
282
|
+
configPath,
|
|
283
|
+
configExists: pathExists(configPath),
|
|
284
|
+
configBackupPath: read.snapshot.configBackupPath,
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
const time = (l) => Date.parse(l.snapshot.createdAt);
|
|
289
|
+
own.sort((a, b) => time(b) - time(a) || (a.path < b.path ? 1 : -1));
|
|
290
|
+
return { own, foreign };
|
|
291
|
+
}
|
|
292
|
+
/** Whether anything, a dangling symlink included, is at `p`. */
|
|
293
|
+
function pathExists(p) {
|
|
294
|
+
try {
|
|
295
|
+
fs.lstatSync(p);
|
|
296
|
+
return true;
|
|
297
|
+
}
|
|
298
|
+
catch {
|
|
299
|
+
return false;
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
/** A block generation marker as the installer writes it: a sha256 in lowercase hex. */
|
|
303
|
+
const GENERATION_RE = /^[0-9a-f]{64}$/;
|
|
304
|
+
function isNonNegativeInteger(value) {
|
|
305
|
+
return Number.isInteger(value) && value >= 0;
|
|
306
|
+
}
|
|
307
|
+
function isRecord(value) {
|
|
308
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
309
|
+
}
|
|
310
|
+
function isMerge(value) {
|
|
311
|
+
if (!isRecord(value))
|
|
312
|
+
return false;
|
|
313
|
+
const m = value;
|
|
314
|
+
return typeof m["createdAt"] === "string" && typeof m["matcher"] === "string" && typeof m["configBackupPath"] === "string";
|
|
315
|
+
}
|
|
316
|
+
function isDisabledUnit(value) {
|
|
317
|
+
if (!isRecord(value))
|
|
318
|
+
return false;
|
|
319
|
+
const u = value;
|
|
320
|
+
return (typeof u["event"] === "string" &&
|
|
321
|
+
typeof u["id"] === "string" &&
|
|
322
|
+
(u["matcher"] === null || typeof u["matcher"] === "string") &&
|
|
323
|
+
isNonNegativeInteger(u["eventIndex"]) &&
|
|
324
|
+
isNonNegativeInteger(u["ordinal"]) &&
|
|
325
|
+
typeof u["hooksText"] === "string" &&
|
|
326
|
+
u["hooksText"].startsWith("hooks = [") &&
|
|
327
|
+
!/[\r\n]/.test(u["hooksText"]));
|
|
328
|
+
}
|
|
329
|
+
/** Parses a Codex snapshot. Anything that is not a version-3 snapshot with
|
|
330
|
+
* `target: "codex"` is refused, so a Claude snapshot renamed into place is
|
|
331
|
+
* never restored into a TOML file. */
|
|
332
|
+
export function readCodexSnapshot(filePath, namedPath = null) {
|
|
333
|
+
let parsed;
|
|
334
|
+
try {
|
|
335
|
+
parsed = JSON.parse(fs.readFileSync(filePath, "utf8"));
|
|
336
|
+
}
|
|
337
|
+
catch (err) {
|
|
338
|
+
return { ok: false, reason: `cannot read snapshot ${filePath}: ${err.message}` };
|
|
339
|
+
}
|
|
340
|
+
if (!isRecord(parsed)) {
|
|
341
|
+
return { ok: false, reason: `snapshot ${filePath} is not a JSON object` };
|
|
342
|
+
}
|
|
343
|
+
const obj = parsed;
|
|
344
|
+
if (obj["target"] === CODEX_SNAPSHOT_TARGET && obj["version"] === 2) {
|
|
345
|
+
return {
|
|
346
|
+
ok: false,
|
|
347
|
+
reason: `snapshot ${filePath} is a version 2 Codex gate snapshot, written by an earlier build that ` +
|
|
348
|
+
"deleted the hook unit instead of neutralising it; it cannot be restored. Re-run " +
|
|
349
|
+
`\`${CODEX_INSTALL_COMMAND}${codexConfigFlag(namedPath, "--codex-config")}\` to rewrite the block, or restore the config ` +
|
|
350
|
+
"from the backup beside it, then remove this snapshot.",
|
|
351
|
+
};
|
|
352
|
+
}
|
|
353
|
+
if (obj["version"] !== CODEX_SNAPSHOT_VERSION || obj["target"] !== CODEX_SNAPSHOT_TARGET) {
|
|
354
|
+
return {
|
|
355
|
+
ok: false,
|
|
356
|
+
reason: `snapshot ${filePath} is not a Codex gate snapshot (expected version ${CODEX_SNAPSHOT_VERSION} ` +
|
|
357
|
+
`with target ${JSON.stringify(CODEX_SNAPSHOT_TARGET)}, got version ${JSON.stringify(obj["version"])} ` +
|
|
358
|
+
`with target ${JSON.stringify(obj["target"] ?? null)})`,
|
|
359
|
+
};
|
|
360
|
+
}
|
|
361
|
+
const problem = snapshotFieldProblem(filePath, obj, [
|
|
362
|
+
"createdAt",
|
|
363
|
+
"configPath",
|
|
364
|
+
"configBackupPath",
|
|
365
|
+
"configBeforeSha256",
|
|
366
|
+
"configAfterSha256",
|
|
367
|
+
]);
|
|
368
|
+
if (problem !== null)
|
|
369
|
+
return { ok: false, reason: problem };
|
|
370
|
+
// Ownership is decided by the recorded file name, so a path with none (empty, `.`, `..`, `/`) is unreadable.
|
|
371
|
+
const recordedName = path.basename(obj["configPath"]);
|
|
372
|
+
if (recordedName === "" || recordedName === "." || recordedName === "..") {
|
|
373
|
+
return { ok: false, reason: `snapshot ${filePath} has a "configPath" that names no file` };
|
|
374
|
+
}
|
|
375
|
+
// Several live snapshots (an earlier build kept one per disable) are ordered by this time, never by file mtime.
|
|
376
|
+
if (Number.isNaN(Date.parse(obj["createdAt"]))) {
|
|
377
|
+
return { ok: false, reason: `snapshot ${filePath} has a "createdAt" that is not a timestamp` };
|
|
378
|
+
}
|
|
379
|
+
const units = obj["neutralised"];
|
|
380
|
+
if (!Array.isArray(units) || units.length === 0 || !units.every(isDisabledUnit)) {
|
|
381
|
+
return { ok: false, reason: `snapshot ${filePath} has a malformed "neutralised" list` };
|
|
382
|
+
}
|
|
383
|
+
const ids = new Set(units.map((u) => u.id));
|
|
384
|
+
const ordinals = new Set(units.map((u) => u.ordinal));
|
|
385
|
+
if (ids.size !== units.length || ordinals.size !== units.length) {
|
|
386
|
+
return {
|
|
387
|
+
ok: false,
|
|
388
|
+
reason: `snapshot ${filePath} lists the same hook unit id or block position twice in "neutralised"`,
|
|
389
|
+
};
|
|
390
|
+
}
|
|
391
|
+
const merges = obj["merges"];
|
|
392
|
+
if (merges !== undefined && !(Array.isArray(merges) && merges.every(isMerge))) {
|
|
393
|
+
return { ok: false, reason: `snapshot ${filePath} has a malformed "merges" list` };
|
|
394
|
+
}
|
|
395
|
+
// The marker decides whether the snapshot is applied at all, so a value that is not one is not guessed at.
|
|
396
|
+
const generation = obj["blockGeneration"];
|
|
397
|
+
if (generation !== undefined && !(typeof generation === "string" && GENERATION_RE.test(generation))) {
|
|
398
|
+
return { ok: false, reason: `snapshot ${filePath} has a "blockGeneration" that is not a block generation marker` };
|
|
399
|
+
}
|
|
400
|
+
return { ok: true, snapshot: obj };
|
|
401
|
+
}
|
|
402
|
+
//# sourceMappingURL=codex-snapshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-snapshot.js","sourceRoot":"","sources":["../../../src/cli/gate/codex-snapshot.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,6 +35,15 @@ export type GateDisableResult = {
|
|
|
35
35
|
backupPath: string;
|
|
36
36
|
snapshotPath: string;
|
|
37
37
|
removed: RemovedGroup[];
|
|
38
|
+
/** True when the groups were merged into an already live snapshot. */
|
|
39
|
+
merged: boolean;
|
|
40
|
+
/** Spent snapshots this call retired, under their retired names. */
|
|
41
|
+
retired: string[];
|
|
42
|
+
/** A merge into a snapshot beside the settings path moved the snapshot beside the file the path leads to; the old one, under its retired name. */
|
|
43
|
+
carriedFrom?: {
|
|
44
|
+
from: string;
|
|
45
|
+
to: string;
|
|
46
|
+
};
|
|
38
47
|
};
|
|
39
48
|
export declare class GateDisableError extends Error {
|
|
40
49
|
constructor(message: string);
|