@lannguyensi/harness 0.64.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +64 -0
- package/README.md +46 -42
- package/dist/cli/add/index.js +17 -21
- package/dist/cli/add/index.js.map +1 -1
- package/dist/cli/adopt/derive.d.ts +2 -2
- package/dist/cli/adopt/derive.js +2 -19
- package/dist/cli/adopt/derive.js.map +1 -1
- package/dist/cli/adopt/index.d.ts +1 -1
- package/dist/cli/adopt/index.js +1 -12
- package/dist/cli/adopt/index.js.map +1 -1
- package/dist/cli/apply/apply.d.ts +20 -35
- package/dist/cli/apply/apply.js +61 -136
- package/dist/cli/apply/apply.js.map +1 -1
- package/dist/cli/apply/generate-codex-config.js +10 -58
- package/dist/cli/apply/generate-codex-config.js.map +1 -1
- package/dist/cli/apply/generate-memory-index.js +1 -2
- package/dist/cli/apply/generate-memory-index.js.map +1 -1
- package/dist/cli/apply/generate-opencode-config.d.ts +2 -10
- package/dist/cli/apply/generate-opencode-config.js +74 -113
- package/dist/cli/apply/generate-opencode-config.js.map +1 -1
- package/dist/cli/apply/generate-settings.d.ts +11 -64
- package/dist/cli/apply/generate-settings.js +27 -132
- package/dist/cli/apply/generate-settings.js.map +1 -1
- package/dist/cli/apply/index.d.ts +1 -1
- package/dist/cli/apply/index.js +1 -1
- package/dist/cli/apply/index.js.map +1 -1
- package/dist/cli/apply/install-codex-config.d.ts +153 -1
- package/dist/cli/apply/install-codex-config.js +445 -70
- package/dist/cli/apply/install-codex-config.js.map +1 -1
- package/dist/cli/apply/next-steps.d.ts +7 -0
- package/dist/cli/apply/next-steps.js +13 -1
- package/dist/cli/apply/next-steps.js.map +1 -1
- package/dist/cli/bounded-stdin.d.ts +0 -23
- package/dist/cli/bounded-stdin.js +2 -49
- package/dist/cli/bounded-stdin.js.map +1 -1
- package/dist/cli/describe.d.ts +1 -1
- package/dist/cli/describe.js +0 -3
- package/dist/cli/describe.js.map +1 -1
- package/dist/cli/diff/engine.d.ts +0 -11
- package/dist/cli/diff/engine.js +1 -17
- package/dist/cli/diff/engine.js.map +1 -1
- package/dist/cli/diff/index.js +14 -25
- package/dist/cli/diff/index.js.map +1 -1
- package/dist/cli/doctor/claude-mcp.d.ts +4 -19
- package/dist/cli/doctor/claude-mcp.js +11 -22
- package/dist/cli/doctor/claude-mcp.js.map +1 -1
- package/dist/cli/doctor/codex.d.ts +12 -14
- package/dist/cli/doctor/codex.js +31 -144
- package/dist/cli/doctor/codex.js.map +1 -1
- package/dist/cli/doctor/format.js +23 -345
- package/dist/cli/doctor/format.js.map +1 -1
- package/dist/cli/doctor/hook-liveness.d.ts +56 -0
- package/dist/cli/doctor/hook-liveness.js +455 -0
- package/dist/cli/doctor/hook-liveness.js.map +1 -0
- package/dist/cli/doctor/index.d.ts +13 -87
- package/dist/cli/doctor/index.js +57 -713
- package/dist/cli/doctor/index.js.map +1 -1
- package/dist/cli/doctor/opencode.d.ts +2 -1
- package/dist/cli/doctor/opencode.js.map +1 -1
- package/dist/cli/doctor/types.d.ts +21 -387
- package/dist/cli/doctor/types.js.map +1 -1
- package/dist/cli/drain-stdio.d.ts +31 -0
- package/dist/cli/drain-stdio.js +76 -0
- package/dist/cli/drain-stdio.js.map +1 -0
- package/dist/cli/export.d.ts +3 -1
- package/dist/cli/export.js +7 -16
- package/dist/cli/export.js.map +1 -1
- package/dist/cli/gate/codex-disable.d.ts +29 -0
- package/dist/cli/gate/codex-disable.js +195 -0
- package/dist/cli/gate/codex-disable.js.map +1 -0
- package/dist/cli/gate/codex-enable.d.ts +41 -0
- package/dist/cli/gate/codex-enable.js +127 -0
- package/dist/cli/gate/codex-enable.js.map +1 -0
- package/dist/cli/gate/codex-snapshot.d.ts +208 -0
- package/dist/cli/gate/codex-snapshot.js +402 -0
- package/dist/cli/gate/codex-snapshot.js.map +1 -0
- package/dist/cli/gate/disable.d.ts +9 -0
- package/dist/cli/gate/disable.js +263 -28
- package/dist/cli/gate/disable.js.map +1 -1
- package/dist/cli/gate/enable.d.ts +26 -6
- package/dist/cli/gate/enable.js +152 -80
- package/dist/cli/gate/enable.js.map +1 -1
- package/dist/cli/gate/link-chain.d.ts +53 -0
- package/dist/cli/gate/link-chain.js +122 -0
- package/dist/cli/gate/link-chain.js.map +1 -0
- package/dist/cli/gate/snapshot.d.ts +289 -12
- package/dist/cli/gate/snapshot.js +481 -22
- package/dist/cli/gate/snapshot.js.map +1 -1
- package/dist/cli/index.d.ts +0 -9
- package/dist/cli/index.js +9 -2131
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init/composer.d.ts +3 -6
- package/dist/cli/init/composer.js +6 -370
- package/dist/cli/init/composer.js.map +1 -1
- package/dist/cli/init/dependencies.d.ts +1 -2
- package/dist/cli/init/dependencies.js +4 -80
- package/dist/cli/init/dependencies.js.map +1 -1
- package/dist/cli/init/detect.js +5 -4
- package/dist/cli/init/detect.js.map +1 -1
- package/dist/cli/init/interactive.d.ts +1 -23
- package/dist/cli/init/interactive.js +33 -247
- package/dist/cli/init/interactive.js.map +1 -1
- package/dist/cli/init/profiles.d.ts +2 -2
- package/dist/cli/init/profiles.js +51 -245
- package/dist/cli/init/profiles.js.map +1 -1
- package/dist/cli/init/templates.d.ts +2 -37
- package/dist/cli/init/templates.js +25 -1237
- package/dist/cli/init/templates.js.map +1 -1
- package/dist/cli/list.d.ts +1 -1
- package/dist/cli/list.js +1 -38
- package/dist/cli/list.js.map +1 -1
- package/dist/cli/loader.d.ts +15 -1
- package/dist/cli/loader.js +56 -39
- package/dist/cli/loader.js.map +1 -1
- package/dist/cli/main.js +7 -2
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/migrate-home/index.js +2 -2
- package/dist/cli/migrate-home/index.js.map +1 -1
- package/dist/cli/pack/add.js +1 -1
- package/dist/cli/pack/add.js.map +1 -1
- package/dist/cli/pack/hook-bootstrap.d.ts +5 -164
- package/dist/cli/pack/hook-bootstrap.js +15 -291
- package/dist/cli/pack/hook-bootstrap.js.map +1 -1
- package/dist/cli/pack/hook-branch-protection.d.ts +28 -21
- package/dist/cli/pack/hook-branch-protection.js +365 -340
- package/dist/cli/pack/hook-branch-protection.js.map +1 -1
- package/dist/cli/pack/index.d.ts +0 -1
- package/dist/cli/pack/index.js +0 -1
- package/dist/cli/pack/index.js.map +1 -1
- package/dist/cli/pack/list.js +1 -6
- package/dist/cli/pack/list.js.map +1 -1
- package/dist/cli/pack/mutate.d.ts +7 -9
- package/dist/cli/pack/mutate.js +6 -9
- package/dist/cli/pack/mutate.js.map +1 -1
- package/dist/cli/pack/reseed.d.ts +2 -2
- package/dist/cli/pack/reseed.js +16 -22
- package/dist/cli/pack/reseed.js.map +1 -1
- package/dist/cli/{delegate/register.d.ts → register-gate-group.d.ts} +1 -1
- package/dist/cli/register-gate-group.js +348 -0
- package/dist/cli/register-gate-group.js.map +1 -0
- package/dist/cli/register-inspect-group.d.ts +6 -0
- package/dist/cli/register-inspect-group.js +189 -0
- package/dist/cli/register-inspect-group.js.map +1 -0
- package/dist/cli/register-operator-lifecycle.d.ts +1 -1
- package/dist/cli/register-operator-lifecycle.js +3 -100
- package/dist/cli/register-operator-lifecycle.js.map +1 -1
- package/dist/cli/register-pack-group.d.ts +5 -0
- package/dist/cli/register-pack-group.js +134 -0
- package/dist/cli/register-pack-group.js.map +1 -0
- package/dist/cli/{register-audit-group.d.ts → register-setup-group.d.ts} +1 -1
- package/dist/cli/register-setup-group.js +495 -0
- package/dist/cli/register-setup-group.js.map +1 -0
- package/dist/cli/remove/index.d.ts +0 -14
- package/dist/cli/remove/index.js +2 -115
- package/dist/cli/remove/index.js.map +1 -1
- package/dist/cli/remove/mutate.d.ts +0 -2
- package/dist/cli/remove/mutate.js +1 -19
- package/dist/cli/remove/mutate.js.map +1 -1
- package/dist/cli/remove/register.js +2 -19
- package/dist/cli/remove/register.js.map +1 -1
- package/dist/cli/shell-quote.d.ts +7 -0
- package/dist/cli/shell-quote.js +17 -0
- package/dist/cli/shell-quote.js.map +1 -0
- package/dist/cli/uninstall/index.d.ts +4 -2
- package/dist/cli/uninstall/index.js +15 -7
- package/dist/cli/uninstall/index.js.map +1 -1
- package/dist/cli/uninstall/register.js +6 -4
- package/dist/cli/uninstall/register.js.map +1 -1
- package/dist/cli/uninstall/snapshot.d.ts +15 -0
- package/dist/cli/uninstall/snapshot.js +38 -0
- package/dist/cli/uninstall/snapshot.js.map +1 -1
- package/dist/cli/validate/checks.d.ts +0 -77
- package/dist/cli/validate/checks.js +3 -1049
- package/dist/cli/validate/checks.js.map +1 -1
- package/dist/cli/validate/index.js +19 -15
- package/dist/cli/validate/index.js.map +1 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.js +0 -3
- package/dist/index.js.map +1 -1
- package/dist/io/claude-mcp.d.ts +1 -1
- package/dist/io/claude-mcp.js +27 -14
- package/dist/io/claude-mcp.js.map +1 -1
- package/dist/io/harness-lock.js +2 -2
- package/dist/io/harness-lock.js.map +1 -1
- package/dist/io/lock.d.ts +0 -26
- package/dist/io/lock.js +10 -27
- package/dist/io/lock.js.map +1 -1
- package/dist/io/merge-settings.js +6 -4
- package/dist/io/merge-settings.js.map +1 -1
- package/dist/io/project-name.d.ts +22 -39
- package/dist/io/project-name.js +25 -42
- package/dist/io/project-name.js.map +1 -1
- package/dist/io/read-regular-file.d.ts +103 -40
- package/dist/io/read-regular-file.js +196 -35
- package/dist/io/read-regular-file.js.map +1 -1
- package/dist/io/restart-hints.js +3 -6
- package/dist/io/restart-hints.js.map +1 -1
- package/dist/io/version-compare.d.ts +1 -3
- package/dist/io/version-compare.js +1 -3
- package/dist/io/version-compare.js.map +1 -1
- package/dist/io/write-regular-file.d.ts +30 -0
- package/dist/io/write-regular-file.js +85 -0
- package/dist/io/write-regular-file.js.map +1 -0
- package/dist/overrides/index.d.ts +1 -0
- package/dist/overrides/index.js +1 -0
- package/dist/overrides/index.js.map +1 -1
- package/dist/overrides/merge-layers.d.ts +43 -0
- package/dist/overrides/merge-layers.js +76 -0
- package/dist/overrides/merge-layers.js.map +1 -0
- package/dist/overrides/merge.d.ts +16 -0
- package/dist/overrides/merge.js +21 -8
- package/dist/overrides/merge.js.map +1 -1
- package/dist/policy-packs/builtin/branch-protection-runtime.d.ts +4 -69
- package/dist/policy-packs/builtin/branch-protection-runtime.js +12 -84
- package/dist/policy-packs/builtin/branch-protection-runtime.js.map +1 -1
- package/dist/policy-packs/builtin/branch-protection.d.ts +7 -30
- package/dist/policy-packs/builtin/branch-protection.js +56 -89
- package/dist/policy-packs/builtin/branch-protection.js.map +1 -1
- package/dist/policy-packs/config-check.d.ts +7 -5
- package/dist/policy-packs/config-check.js +2 -2
- package/dist/policy-packs/config-check.js.map +1 -1
- package/dist/policy-packs/expand.d.ts +1 -3
- package/dist/policy-packs/expand.js +5 -42
- package/dist/policy-packs/expand.js.map +1 -1
- package/dist/policy-packs/index.d.ts +3 -3
- package/dist/policy-packs/index.js +2 -2
- package/dist/policy-packs/index.js.map +1 -1
- package/dist/policy-packs/registry.d.ts +9 -38
- package/dist/policy-packs/registry.js +5 -65
- package/dist/policy-packs/registry.js.map +1 -1
- package/dist/policy-packs/runtime.d.ts +0 -4
- package/dist/policy-packs/runtime.js +9 -22
- package/dist/policy-packs/runtime.js.map +1 -1
- package/dist/policy-packs/types.d.ts +0 -19
- package/dist/policy-packs/ux-compare.d.ts +1 -11
- package/dist/policy-packs/ux-compare.js +6 -42
- package/dist/policy-packs/ux-compare.js.map +1 -1
- package/dist/policy-packs/ux-drift-check.d.ts +5 -5
- package/dist/policy-packs/ux-drift-check.js +17 -22
- package/dist/policy-packs/ux-drift-check.js.map +1 -1
- package/dist/policy-packs/version-check.d.ts +5 -26
- package/dist/policy-packs/version-check.js +19 -74
- package/dist/policy-packs/version-check.js.map +1 -1
- package/dist/probes/memory.d.ts +1 -1
- package/dist/probes/memory.js +1 -1
- package/dist/probes/memory.js.map +1 -1
- package/dist/runtime/agent-facing.d.ts +9 -0
- package/dist/runtime/agent-facing.js +28 -14
- package/dist/runtime/agent-facing.js.map +1 -1
- package/dist/runtime/bounded-text.d.ts +15 -0
- package/dist/runtime/bounded-text.js +27 -0
- package/dist/runtime/bounded-text.js.map +1 -0
- package/dist/runtime/git-branch.d.ts +125 -0
- package/dist/runtime/git-branch.js +381 -0
- package/dist/runtime/git-branch.js.map +1 -0
- package/dist/runtime/hermetic-spawn-guard.d.ts +2 -2
- package/dist/runtime/hermetic-spawn-guard.js +24 -34
- package/dist/runtime/hermetic-spawn-guard.js.map +1 -1
- package/dist/runtime/home-dir.js +3 -2
- package/dist/runtime/home-dir.js.map +1 -1
- package/dist/runtime/tool-name-aliases.d.ts +0 -6
- package/dist/runtime/tool-name-aliases.js +5 -18
- package/dist/runtime/tool-name-aliases.js.map +1 -1
- package/dist/schema/grounding.d.ts +7 -54
- package/dist/schema/grounding.js +10 -12
- package/dist/schema/grounding.js.map +1 -1
- package/dist/schema/hooks.d.ts +39 -136
- package/dist/schema/hooks.js +3 -6
- package/dist/schema/hooks.js.map +1 -1
- package/dist/schema/index.d.ts +114 -3828
- package/dist/schema/index.js +41 -80
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/memory.d.ts +54 -131
- package/dist/schema/memory.js +2 -2
- package/dist/schema/memory.js.map +1 -1
- package/dist/schema/policy-packs.d.ts +3 -45
- package/dist/schema/policy-packs.js +7 -13
- package/dist/schema/policy-packs.js.map +1 -1
- package/dist/schema/policy-ux.d.ts +7 -0
- package/dist/schema/policy-ux.js +18 -0
- package/dist/schema/policy-ux.js.map +1 -0
- package/dist/schema/removed-keys.d.ts +185 -0
- package/dist/schema/removed-keys.js +531 -0
- package/dist/schema/removed-keys.js.map +1 -0
- package/dist/schema/tools.d.ts +30 -268
- package/dist/schema/tools.js +4 -4
- package/dist/schema/tools.js.map +1 -1
- package/package.json +5 -16
- package/dist/cli/approve/branch-protection.d.ts +0 -69
- package/dist/cli/approve/branch-protection.js +0 -144
- package/dist/cli/approve/branch-protection.js.map +0 -1
- package/dist/cli/approve/risk.d.ts +0 -112
- package/dist/cli/approve/risk.js +0 -197
- package/dist/cli/approve/risk.js.map +0 -1
- package/dist/cli/approve/stdin-report.d.ts +0 -57
- package/dist/cli/approve/stdin-report.js +0 -145
- package/dist/cli/approve/stdin-report.js.map +0 -1
- package/dist/cli/approve/understanding.d.ts +0 -410
- package/dist/cli/approve/understanding.js +0 -996
- package/dist/cli/approve/understanding.js.map +0 -1
- package/dist/cli/audit.d.ts +0 -80
- package/dist/cli/audit.js +0 -252
- package/dist/cli/audit.js.map +0 -1
- package/dist/cli/delegate/index.d.ts +0 -76
- package/dist/cli/delegate/index.js +0 -444
- package/dist/cli/delegate/index.js.map +0 -1
- package/dist/cli/delegate/register.js +0 -90
- package/dist/cli/delegate/register.js.map +0 -1
- package/dist/cli/doctor/auto-approve-mode.d.ts +0 -37
- package/dist/cli/doctor/auto-approve-mode.js +0 -80
- package/dist/cli/doctor/auto-approve-mode.js.map +0 -1
- package/dist/cli/doctor/bypass-without-auto-approve.d.ts +0 -38
- package/dist/cli/doctor/bypass-without-auto-approve.js +0 -95
- package/dist/cli/doctor/bypass-without-auto-approve.js.map +0 -1
- package/dist/cli/doctor/codex-config-drift.d.ts +0 -28
- package/dist/cli/doctor/codex-config-drift.js +0 -240
- package/dist/cli/doctor/codex-config-drift.js.map +0 -1
- package/dist/cli/doctor/expire-on-tool-match.d.ts +0 -15
- package/dist/cli/doctor/expire-on-tool-match.js +0 -58
- package/dist/cli/doctor/expire-on-tool-match.js.map +0 -1
- package/dist/cli/doctor/rogue-ledger.d.ts +0 -53
- package/dist/cli/doctor/rogue-ledger.js +0 -153
- package/dist/cli/doctor/rogue-ledger.js.map +0 -1
- package/dist/cli/doctor/session-start-preflight-setup-version.d.ts +0 -83
- package/dist/cli/doctor/session-start-preflight-setup-version.js +0 -114
- package/dist/cli/doctor/session-start-preflight-setup-version.js.map +0 -1
- package/dist/cli/doctor/settings-drift.d.ts +0 -25
- package/dist/cli/doctor/settings-drift.js +0 -213
- package/dist/cli/doctor/settings-drift.js.map +0 -1
- package/dist/cli/doctor/toolchain-parity.d.ts +0 -63
- package/dist/cli/doctor/toolchain-parity.js +0 -154
- package/dist/cli/doctor/toolchain-parity.js.map +0 -1
- package/dist/cli/doctor/ug-auto-approvals.d.ts +0 -40
- package/dist/cli/doctor/ug-auto-approvals.js +0 -91
- package/dist/cli/doctor/ug-auto-approvals.js.map +0 -1
- package/dist/cli/doctor/ug-delegations.d.ts +0 -26
- package/dist/cli/doctor/ug-delegations.js +0 -121
- package/dist/cli/doctor/ug-delegations.js.map +0 -1
- package/dist/cli/doctor/ug-inflight.d.ts +0 -35
- package/dist/cli/doctor/ug-inflight.js +0 -57
- package/dist/cli/doctor/ug-inflight.js.map +0 -1
- package/dist/cli/doctor/understanding-mode-env.d.ts +0 -51
- package/dist/cli/doctor/understanding-mode-env.js +0 -98
- package/dist/cli/doctor/understanding-mode-env.js.map +0 -1
- package/dist/cli/dry-run.d.ts +0 -58
- package/dist/cli/dry-run.js +0 -283
- package/dist/cli/dry-run.js.map +0 -1
- package/dist/cli/enriched-event.d.ts +0 -35
- package/dist/cli/enriched-event.js +0 -60
- package/dist/cli/enriched-event.js.map +0 -1
- package/dist/cli/event-input.d.ts +0 -28
- package/dist/cli/event-input.js +0 -73
- package/dist/cli/event-input.js.map +0 -1
- package/dist/cli/explain-action.d.ts +0 -25
- package/dist/cli/explain-action.js +0 -57
- package/dist/cli/explain-action.js.map +0 -1
- package/dist/cli/explain-policy.d.ts +0 -147
- package/dist/cli/explain-policy.js +0 -248
- package/dist/cli/explain-policy.js.map +0 -1
- package/dist/cli/explain.d.ts +0 -31
- package/dist/cli/explain.js +0 -159
- package/dist/cli/explain.js.map +0 -1
- package/dist/cli/gc/index.d.ts +0 -63
- package/dist/cli/gc/index.js +0 -566
- package/dist/cli/gc/index.js.map +0 -1
- package/dist/cli/pack/approve-escape.d.ts +0 -19
- package/dist/cli/pack/approve-escape.js +0 -190
- package/dist/cli/pack/approve-escape.js.map +0 -1
- package/dist/cli/pack/auto-approve-path.d.ts +0 -146
- package/dist/cli/pack/auto-approve-path.js +0 -462
- package/dist/cli/pack/auto-approve-path.js.map +0 -1
- package/dist/cli/pack/hook-codex-post-tool-use.d.ts +0 -25
- package/dist/cli/pack/hook-codex-post-tool-use.js +0 -160
- package/dist/cli/pack/hook-codex-post-tool-use.js.map +0 -1
- package/dist/cli/pack/hook-codex-pre-tool-use.d.ts +0 -48
- package/dist/cli/pack/hook-codex-pre-tool-use.js +0 -474
- package/dist/cli/pack/hook-codex-pre-tool-use.js.map +0 -1
- package/dist/cli/pack/hook-codex-stop.d.ts +0 -35
- package/dist/cli/pack/hook-codex-stop.js +0 -329
- package/dist/cli/pack/hook-codex-stop.js.map +0 -1
- package/dist/cli/pack/hook-codex-user-prompt-submit.d.ts +0 -24
- package/dist/cli/pack/hook-codex-user-prompt-submit.js +0 -93
- package/dist/cli/pack/hook-codex-user-prompt-submit.js.map +0 -1
- package/dist/cli/pack/hook-post-merge-gate-record.d.ts +0 -37
- package/dist/cli/pack/hook-post-merge-gate-record.js +0 -190
- package/dist/cli/pack/hook-post-merge-gate-record.js.map +0 -1
- package/dist/cli/pack/hook-post-merge-gate.d.ts +0 -34
- package/dist/cli/pack/hook-post-merge-gate.js +0 -277
- package/dist/cli/pack/hook-post-merge-gate.js.map +0 -1
- package/dist/cli/pack/hook-post-tool-use.d.ts +0 -45
- package/dist/cli/pack/hook-post-tool-use.js +0 -137
- package/dist/cli/pack/hook-post-tool-use.js.map +0 -1
- package/dist/cli/pack/hook-pre-tool-use.d.ts +0 -92
- package/dist/cli/pack/hook-pre-tool-use.js +0 -1328
- package/dist/cli/pack/hook-pre-tool-use.js.map +0 -1
- package/dist/cli/pack/hook-runtime-reality.d.ts +0 -63
- package/dist/cli/pack/hook-runtime-reality.js +0 -210
- package/dist/cli/pack/hook-runtime-reality.js.map +0 -1
- package/dist/cli/pack/hook-solution-acceptance-writeguard.d.ts +0 -32
- package/dist/cli/pack/hook-solution-acceptance-writeguard.js +0 -438
- package/dist/cli/pack/hook-solution-acceptance-writeguard.js.map +0 -1
- package/dist/cli/pack/hook-solution-acceptance.d.ts +0 -157
- package/dist/cli/pack/hook-solution-acceptance.js +0 -530
- package/dist/cli/pack/hook-solution-acceptance.js.map +0 -1
- package/dist/cli/pack/hook-stay-in-scope.d.ts +0 -37
- package/dist/cli/pack/hook-stay-in-scope.js +0 -128
- package/dist/cli/pack/hook-stay-in-scope.js.map +0 -1
- package/dist/cli/pack/hook-subagent-start.d.ts +0 -23
- package/dist/cli/pack/hook-subagent-start.js +0 -88
- package/dist/cli/pack/hook-subagent-start.js.map +0 -1
- package/dist/cli/pack/hook-subagent-stop.d.ts +0 -19
- package/dist/cli/pack/hook-subagent-stop.js +0 -41
- package/dist/cli/pack/hook-subagent-stop.js.map +0 -1
- package/dist/cli/pack/hook-track-active-claim.d.ts +0 -27
- package/dist/cli/pack/hook-track-active-claim.js +0 -275
- package/dist/cli/pack/hook-track-active-claim.js.map +0 -1
- package/dist/cli/pack/transcript-report-scan.d.ts +0 -71
- package/dist/cli/pack/transcript-report-scan.js +0 -359
- package/dist/cli/pack/transcript-report-scan.js.map +0 -1
- package/dist/cli/pack/understanding-report-schema-hint.d.ts +0 -26
- package/dist/cli/pack/understanding-report-schema-hint.js +0 -120
- package/dist/cli/pack/understanding-report-schema-hint.js.map +0 -1
- package/dist/cli/pack/upgrade.d.ts +0 -32
- package/dist/cli/pack/upgrade.js +0 -273
- package/dist/cli/pack/upgrade.js.map +0 -1
- package/dist/cli/pause/index.d.ts +0 -113
- package/dist/cli/pause/index.js +0 -251
- package/dist/cli/pause/index.js.map +0 -1
- package/dist/cli/pause-check.d.ts +0 -22
- package/dist/cli/pause-check.js +0 -54
- package/dist/cli/pause-check.js.map +0 -1
- package/dist/cli/policy/intercept.d.ts +0 -233
- package/dist/cli/policy/intercept.js +0 -1022
- package/dist/cli/policy/intercept.js.map +0 -1
- package/dist/cli/policy/risk-envelope-enrichment.d.ts +0 -40
- package/dist/cli/policy/risk-envelope-enrichment.js +0 -110
- package/dist/cli/policy/risk-envelope-enrichment.js.map +0 -1
- package/dist/cli/record/index.d.ts +0 -81
- package/dist/cli/record/index.js +0 -348
- package/dist/cli/record/index.js.map +0 -1
- package/dist/cli/register-audit-group.js +0 -91
- package/dist/cli/register-audit-group.js.map +0 -1
- package/dist/cli/resolve-env.d.ts +0 -32
- package/dist/cli/resolve-env.js +0 -46
- package/dist/cli/resolve-env.js.map +0 -1
- package/dist/cli/session-export/index.d.ts +0 -46
- package/dist/cli/session-export/index.js +0 -169
- package/dist/cli/session-export/index.js.map +0 -1
- package/dist/cli/session-export/redact.d.ts +0 -22
- package/dist/cli/session-export/redact.js +0 -47
- package/dist/cli/session-export/redact.js.map +0 -1
- package/dist/cli/session-export/transcript.d.ts +0 -24
- package/dist/cli/session-export/transcript.js +0 -164
- package/dist/cli/session-export/transcript.js.map +0 -1
- package/dist/cli/session-start/branch-check.d.ts +0 -18
- package/dist/cli/session-start/branch-check.js +0 -140
- package/dist/cli/session-start/branch-check.js.map +0 -1
- package/dist/cli/session-start/index.d.ts +0 -121
- package/dist/cli/session-start/index.js +0 -591
- package/dist/cli/session-start/index.js.map +0 -1
- package/dist/cli/session-start/shared-options.d.ts +0 -103
- package/dist/cli/session-start/shared-options.js +0 -107
- package/dist/cli/session-start/shared-options.js.map +0 -1
- package/dist/cli/session-start/stale-base-check.d.ts +0 -46
- package/dist/cli/session-start/stale-base-check.js +0 -352
- package/dist/cli/session-start/stale-base-check.js.map +0 -1
- package/dist/cli/session-start/toolchain-parity.d.ts +0 -267
- package/dist/cli/session-start/toolchain-parity.js +0 -797
- package/dist/cli/session-start/toolchain-parity.js.map +0 -1
- package/dist/cli/smoke/assertions.d.ts +0 -46
- package/dist/cli/smoke/assertions.js +0 -170
- package/dist/cli/smoke/assertions.js.map +0 -1
- package/dist/cli/smoke/index.d.ts +0 -76
- package/dist/cli/smoke/index.js +0 -245
- package/dist/cli/smoke/index.js.map +0 -1
- package/dist/cli/smoke/runner.d.ts +0 -55
- package/dist/cli/smoke/runner.js +0 -134
- package/dist/cli/smoke/runner.js.map +0 -1
- package/dist/cli/smoke/stream-parser.d.ts +0 -65
- package/dist/cli/smoke/stream-parser.js +0 -115
- package/dist/cli/smoke/stream-parser.js.map +0 -1
- package/dist/cli/test-risk.d.ts +0 -27
- package/dist/cli/test-risk.js +0 -38
- package/dist/cli/test-risk.js.map +0 -1
- package/dist/io/display-path.d.ts +0 -11
- package/dist/io/display-path.js +0 -29
- package/dist/io/display-path.js.map +0 -1
- package/dist/io/duration.d.ts +0 -5
- package/dist/io/duration.js +0 -50
- package/dist/io/duration.js.map +0 -1
- package/dist/io/extract.d.ts +0 -79
- package/dist/io/extract.js +0 -226
- package/dist/io/extract.js.map +0 -1
- package/dist/io/ledger-record.d.ts +0 -83
- package/dist/io/ledger-record.js +0 -301
- package/dist/io/ledger-record.js.map +0 -1
- package/dist/io/read-json-dir-entries.d.ts +0 -36
- package/dist/io/read-json-dir-entries.js +0 -48
- package/dist/io/read-json-dir-entries.js.map +0 -1
- package/dist/io/safe-json-parse.d.ts +0 -5
- package/dist/io/safe-json-parse.js +0 -21
- package/dist/io/safe-json-parse.js.map +0 -1
- package/dist/policies/index.d.ts +0 -5
- package/dist/policies/index.js +0 -6
- package/dist/policies/index.js.map +0 -1
- package/dist/policies/ledger-client.d.ts +0 -113
- package/dist/policies/ledger-client.js +0 -500
- package/dist/policies/ledger-client.js.map +0 -1
- package/dist/policies/producers.d.ts +0 -12
- package/dist/policies/producers.js +0 -61
- package/dist/policies/producers.js.map +0 -1
- package/dist/policies/requires.d.ts +0 -75
- package/dist/policies/requires.js +0 -240
- package/dist/policies/requires.js.map +0 -1
- package/dist/policies/timestamp.d.ts +0 -14
- package/dist/policies/timestamp.js +0 -36
- package/dist/policies/timestamp.js.map +0 -1
- package/dist/policy-packs/builtin/permission-profiles.d.ts +0 -11
- package/dist/policy-packs/builtin/permission-profiles.js +0 -74
- package/dist/policy-packs/builtin/permission-profiles.js.map +0 -1
- package/dist/policy-packs/builtin/post-merge-gate-runtime.d.ts +0 -286
- package/dist/policy-packs/builtin/post-merge-gate-runtime.js +0 -397
- package/dist/policy-packs/builtin/post-merge-gate-runtime.js.map +0 -1
- package/dist/policy-packs/builtin/post-merge-gate.d.ts +0 -56
- package/dist/policy-packs/builtin/post-merge-gate.js +0 -347
- package/dist/policy-packs/builtin/post-merge-gate.js.map +0 -1
- package/dist/policy-packs/builtin/solution-acceptance-reconnect.d.ts +0 -50
- package/dist/policy-packs/builtin/solution-acceptance-reconnect.js +0 -151
- package/dist/policy-packs/builtin/solution-acceptance-reconnect.js.map +0 -1
- package/dist/policy-packs/builtin/solution-acceptance-runtime.d.ts +0 -323
- package/dist/policy-packs/builtin/solution-acceptance-runtime.js +0 -672
- package/dist/policy-packs/builtin/solution-acceptance-runtime.js.map +0 -1
- package/dist/policy-packs/builtin/solution-acceptance.d.ts +0 -45
- package/dist/policy-packs/builtin/solution-acceptance.js +0 -226
- package/dist/policy-packs/builtin/solution-acceptance.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/active-claim.d.ts +0 -25
- package/dist/policy-packs/builtin/understanding-before-execution/active-claim.js +0 -94
- package/dist/policy-packs/builtin/understanding-before-execution/active-claim.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/auto-approve-default.d.ts +0 -35
- package/dist/policy-packs/builtin/understanding-before-execution/auto-approve-default.js +0 -86
- package/dist/policy-packs/builtin/understanding-before-execution/auto-approve-default.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/auto-approve.d.ts +0 -210
- package/dist/policy-packs/builtin/understanding-before-execution/auto-approve.js +0 -361
- package/dist/policy-packs/builtin/understanding-before-execution/auto-approve.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/delegation-markers.d.ts +0 -304
- package/dist/policy-packs/builtin/understanding-before-execution/delegation-markers.js +0 -734
- package/dist/policy-packs/builtin/understanding-before-execution/delegation-markers.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/expiry-reason.d.ts +0 -36
- package/dist/policy-packs/builtin/understanding-before-execution/expiry-reason.js +0 -73
- package/dist/policy-packs/builtin/understanding-before-execution/expiry-reason.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/index.d.ts +0 -19
- package/dist/policy-packs/builtin/understanding-before-execution/index.js +0 -83
- package/dist/policy-packs/builtin/understanding-before-execution/index.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/inflight-records.d.ts +0 -135
- package/dist/policy-packs/builtin/understanding-before-execution/inflight-records.js +0 -643
- package/dist/policy-packs/builtin/understanding-before-execution/inflight-records.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/ledger.d.ts +0 -25
- package/dist/policy-packs/builtin/understanding-before-execution/ledger.js +0 -56
- package/dist/policy-packs/builtin/understanding-before-execution/ledger.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/lifecycle.d.ts +0 -20
- package/dist/policy-packs/builtin/understanding-before-execution/lifecycle.js +0 -106
- package/dist/policy-packs/builtin/understanding-before-execution/lifecycle.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/markers.d.ts +0 -126
- package/dist/policy-packs/builtin/understanding-before-execution/markers.js +0 -245
- package/dist/policy-packs/builtin/understanding-before-execution/markers.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/measured-permission-modes.d.ts +0 -29
- package/dist/policy-packs/builtin/understanding-before-execution/measured-permission-modes.js +0 -82
- package/dist/policy-packs/builtin/understanding-before-execution/measured-permission-modes.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/permission-mode-observations.d.ts +0 -71
- package/dist/policy-packs/builtin/understanding-before-execution/permission-mode-observations.js +0 -175
- package/dist/policy-packs/builtin/understanding-before-execution/permission-mode-observations.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/persisted-reports.d.ts +0 -625
- package/dist/policy-packs/builtin/understanding-before-execution/persisted-reports.js +0 -1076
- package/dist/policy-packs/builtin/understanding-before-execution/persisted-reports.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/post-tool-use-boundary.d.ts +0 -128
- package/dist/policy-packs/builtin/understanding-before-execution/post-tool-use-boundary.js +0 -213
- package/dist/policy-packs/builtin/understanding-before-execution/post-tool-use-boundary.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/stay-in-scope-config.d.ts +0 -129
- package/dist/policy-packs/builtin/understanding-before-execution/stay-in-scope-config.js +0 -166
- package/dist/policy-packs/builtin/understanding-before-execution/stay-in-scope-config.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/task-markers.d.ts +0 -164
- package/dist/policy-packs/builtin/understanding-before-execution/task-markers.js +0 -275
- package/dist/policy-packs/builtin/understanding-before-execution/task-markers.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution-runtime.d.ts +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution-runtime.js +0 -10
- package/dist/policy-packs/builtin/understanding-before-execution-runtime.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution.d.ts +0 -526
- package/dist/policy-packs/builtin/understanding-before-execution.js +0 -1078
- package/dist/policy-packs/builtin/understanding-before-execution.js.map +0 -1
- package/dist/policy-packs/permission-translator.d.ts +0 -9
- package/dist/policy-packs/permission-translator.js +0 -76
- package/dist/policy-packs/permission-translator.js.map +0 -1
- package/dist/runtime/action-envelope.d.ts +0 -64
- package/dist/runtime/action-envelope.js +0 -46
- package/dist/runtime/action-envelope.js.map +0 -1
- package/dist/runtime/approval-signing.d.ts +0 -111
- package/dist/runtime/approval-signing.js +0 -384
- package/dist/runtime/approval-signing.js.map +0 -1
- package/dist/runtime/bash-match-facts.d.ts +0 -60
- package/dist/runtime/bash-match-facts.js +0 -196
- package/dist/runtime/bash-match-facts.js.map +0 -1
- package/dist/runtime/bash-match-registry.d.ts +0 -112
- package/dist/runtime/bash-match-registry.js +0 -406
- package/dist/runtime/bash-match-registry.js.map +0 -1
- package/dist/runtime/bash-prefix-parse.d.ts +0 -31
- package/dist/runtime/bash-prefix-parse.js +0 -576
- package/dist/runtime/bash-prefix-parse.js.map +0 -1
- package/dist/runtime/command-normalize.d.ts +0 -658
- package/dist/runtime/command-normalize.js +0 -2410
- package/dist/runtime/command-normalize.js.map +0 -1
- package/dist/runtime/deletion-target-resolve.d.ts +0 -28
- package/dist/runtime/deletion-target-resolve.js +0 -1078
- package/dist/runtime/deletion-target-resolve.js.map +0 -1
- package/dist/runtime/destructive-shell-floor.d.ts +0 -19
- package/dist/runtime/destructive-shell-floor.js +0 -611
- package/dist/runtime/destructive-shell-floor.js.map +0 -1
- package/dist/runtime/environment-resolver.d.ts +0 -36
- package/dist/runtime/environment-resolver.js +0 -138
- package/dist/runtime/environment-resolver.js.map +0 -1
- package/dist/runtime/git-context.d.ts +0 -201
- package/dist/runtime/git-context.js +0 -422
- package/dist/runtime/git-context.js.map +0 -1
- package/dist/runtime/index.d.ts +0 -12
- package/dist/runtime/index.js +0 -13
- package/dist/runtime/index.js.map +0 -1
- package/dist/runtime/intercept.d.ts +0 -623
- package/dist/runtime/intercept.js +0 -1384
- package/dist/runtime/intercept.js.map +0 -1
- package/dist/runtime/kube-context.d.ts +0 -16
- package/dist/runtime/kube-context.js +0 -63
- package/dist/runtime/kube-context.js.map +0 -1
- package/dist/runtime/kubectl-target-parse.d.ts +0 -31
- package/dist/runtime/kubectl-target-parse.js +0 -249
- package/dist/runtime/kubectl-target-parse.js.map +0 -1
- package/dist/runtime/ledger-add.d.ts +0 -16
- package/dist/runtime/ledger-add.js +0 -150
- package/dist/runtime/ledger-add.js.map +0 -1
- package/dist/runtime/ledger-writer.d.ts +0 -27
- package/dist/runtime/ledger-writer.js +0 -46
- package/dist/runtime/ledger-writer.js.map +0 -1
- package/dist/runtime/pause-sentinel.d.ts +0 -60
- package/dist/runtime/pause-sentinel.js +0 -156
- package/dist/runtime/pause-sentinel.js.map +0 -1
- package/dist/runtime/pending-approval.d.ts +0 -23
- package/dist/runtime/pending-approval.js +0 -67
- package/dist/runtime/pending-approval.js.map +0 -1
- package/dist/runtime/read-only-bash.d.ts +0 -141
- package/dist/runtime/read-only-bash.js +0 -2204
- package/dist/runtime/read-only-bash.js.map +0 -1
- package/dist/runtime/recovery-git-commit.d.ts +0 -22
- package/dist/runtime/recovery-git-commit.js +0 -284
- package/dist/runtime/recovery-git-commit.js.map +0 -1
- package/dist/runtime/reject-malformed-session-id.d.ts +0 -8
- package/dist/runtime/reject-malformed-session-id.js +0 -16
- package/dist/runtime/reject-malformed-session-id.js.map +0 -1
- package/dist/runtime/risk-classifier.d.ts +0 -38
- package/dist/runtime/risk-classifier.js +0 -311
- package/dist/runtime/risk-classifier.js.map +0 -1
- package/dist/runtime/session-id.d.ts +0 -113
- package/dist/runtime/session-id.js +0 -193
- package/dist/runtime/session-id.js.map +0 -1
- package/dist/runtime/shell-word.d.ts +0 -62
- package/dist/runtime/shell-word.js +0 -410
- package/dist/runtime/shell-word.js.map +0 -1
- package/dist/runtime/task-providers/agent-tasks.d.ts +0 -105
- package/dist/runtime/task-providers/agent-tasks.js +0 -247
- package/dist/runtime/task-providers/agent-tasks.js.map +0 -1
- package/dist/runtime/when-eval.d.ts +0 -62
- package/dist/runtime/when-eval.js +0 -212
- package/dist/runtime/when-eval.js.map +0 -1
- package/dist/runtime/workflow-policies.d.ts +0 -207
- package/dist/runtime/workflow-policies.js +0 -596
- package/dist/runtime/workflow-policies.js.map +0 -1
- package/dist/schema/audit.d.ts +0 -71
- package/dist/schema/audit.js +0 -32
- package/dist/schema/audit.js.map +0 -1
- package/dist/schema/doctor.d.ts +0 -25
- package/dist/schema/doctor.js +0 -23
- package/dist/schema/doctor.js.map +0 -1
- package/dist/schema/environments.d.ts +0 -215
- package/dist/schema/environments.js +0 -101
- package/dist/schema/environments.js.map +0 -1
- package/dist/schema/extract.d.ts +0 -9
- package/dist/schema/extract.js +0 -86
- package/dist/schema/extract.js.map +0 -1
- package/dist/schema/permission-profiles.d.ts +0 -2292
- package/dist/schema/permission-profiles.js +0 -60
- package/dist/schema/permission-profiles.js.map +0 -1
- package/dist/schema/policies.d.ts +0 -974
- package/dist/schema/policies.js +0 -298
- package/dist/schema/policies.js.map +0 -1
- package/dist/schema/requires.d.ts +0 -131
- package/dist/schema/requires.js +0 -88
- package/dist/schema/requires.js.map +0 -1
- package/dist/schema/risk.d.ts +0 -144
- package/dist/schema/risk.js +0 -194
- package/dist/schema/risk.js.map +0 -1
- package/dist/schema/session-start-preflight.d.ts +0 -10
- package/dist/schema/session-start-preflight.js +0 -106
- package/dist/schema/session-start-preflight.js.map +0 -1
- package/dist/schema/stale-base-check.d.ts +0 -18
- package/dist/schema/stale-base-check.js +0 -37
- package/dist/schema/stale-base-check.js.map +0 -1
- package/dist/schema/toolchain-parity.d.ts +0 -21
- package/dist/schema/toolchain-parity.js +0 -48
- package/dist/schema/toolchain-parity.js.map +0 -1
- package/dist/schema/workflows.d.ts +0 -519
- package/dist/schema/workflows.js +0 -81
- package/dist/schema/workflows.js.map +0 -1
- package/scripts/runtime-reality-docker-probe.mjs +0 -71
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
// Detect leftover rogue evidence-ledger DBs from the literal-tilde
|
|
2
|
-
// `EVIDENCE_LEDGER_DB` env leak (root cause + fix: agent-tasks/42d224a6,
|
|
3
|
-
// harness PR #101). The env block expanded `~/.evidence-ledger/ledger.db`
|
|
4
|
-
// as a literal directory name relative to the grounding-mcp cwd, so
|
|
5
|
-
// every spawn cwd grew a sibling `~/.evidence-ledger/ledger.db` tree.
|
|
6
|
-
//
|
|
7
|
-
// The fix removed the env block, so no new rogue DBs appear. The existing
|
|
8
|
-
// ones on disk are harmless orphans, but they take up space and confuse
|
|
9
|
-
// forensics ("why do I have three identical-shape ledger DBs?"). This
|
|
10
|
-
// scan flags them so the operator can `rm -rf` at their convenience.
|
|
11
|
-
//
|
|
12
|
-
// Scan scope is bounded by design: the literal `~` directory only ever
|
|
13
|
-
// appears one level deep under wherever grounding-mcp was spawned. The
|
|
14
|
-
// well-known spawn-cwd locations are: $HOME (when claude-code spawns from
|
|
15
|
-
// the user's home), $HOME/git/<repo> (the per-repo working tree), and
|
|
16
|
-
// $PWD (whatever directory the operator invoked harness from). No
|
|
17
|
-
// recursion past one level: we are not a generic disk-cleanup tool.
|
|
18
|
-
import * as fs from "node:fs";
|
|
19
|
-
import * as path from "node:path";
|
|
20
|
-
import * as readline from "node:readline/promises";
|
|
21
|
-
const ROGUE_DIRNAME = "~";
|
|
22
|
-
const LEDGER_RELPATH = path.join(".evidence-ledger", "ledger.db");
|
|
23
|
-
function hasRogueLedgerUnder(parent, fsi) {
|
|
24
|
-
// lstat (not stat) the `~` dir: a symlink at <parent>/~ pointing at
|
|
25
|
-
// /etc or at the real ~/.evidence-ledger would otherwise yield a
|
|
26
|
-
// false-positive flag (read-only, no security impact, but the
|
|
27
|
-
// operator gets nudged to rm -rf an arbitrary target). The orphan
|
|
28
|
-
// pattern we care about is a *real* literal-tilde directory.
|
|
29
|
-
const rogueDir = path.join(parent, ROGUE_DIRNAME);
|
|
30
|
-
if (!fsi.existsSync(rogueDir))
|
|
31
|
-
return null;
|
|
32
|
-
try {
|
|
33
|
-
if (fsi.lstatSync(rogueDir).isSymbolicLink())
|
|
34
|
-
return null;
|
|
35
|
-
}
|
|
36
|
-
catch {
|
|
37
|
-
return null;
|
|
38
|
-
}
|
|
39
|
-
const candidate = path.join(rogueDir, LEDGER_RELPATH);
|
|
40
|
-
if (!fsi.existsSync(candidate))
|
|
41
|
-
return null;
|
|
42
|
-
try {
|
|
43
|
-
if (!fsi.statSync(candidate).isFile())
|
|
44
|
-
return null;
|
|
45
|
-
}
|
|
46
|
-
catch {
|
|
47
|
-
return null;
|
|
48
|
-
}
|
|
49
|
-
return { path: candidate, rogueDir };
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Dedup key for a hit: prefer the realpath of the ledger.db file so two
|
|
53
|
-
* parent dirs that symlink to the same physical location collapse into a
|
|
54
|
-
* single hit. Falls back to the joined path when realpath is unavailable
|
|
55
|
-
* (EACCES on a strict-mode mount, ENOENT during a race with deletion).
|
|
56
|
-
* The fallback preserves the v1 dedup behavior so existing fixtures
|
|
57
|
-
* stay stable.
|
|
58
|
-
*/
|
|
59
|
-
function dedupKey(hit, fsi) {
|
|
60
|
-
try {
|
|
61
|
-
return fsi.realpathSync(hit.path);
|
|
62
|
-
}
|
|
63
|
-
catch {
|
|
64
|
-
return hit.path;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Walk a small set of well-known parent directories for a literal `~`
|
|
69
|
-
* subdirectory that contains `.evidence-ledger/ledger.db`. Best-effort:
|
|
70
|
-
* unreadable directories are silently skipped. Returns deduplicated
|
|
71
|
-
* results (by realpath) sorted by path for stable rendering.
|
|
72
|
-
*/
|
|
73
|
-
export function scanForRogueLedgers(opts) {
|
|
74
|
-
const fsi = opts.fsInterface ?? fs;
|
|
75
|
-
const seen = new Set();
|
|
76
|
-
const out = [];
|
|
77
|
-
const consider = (parent) => {
|
|
78
|
-
const hit = hasRogueLedgerUnder(parent, fsi);
|
|
79
|
-
if (!hit)
|
|
80
|
-
return;
|
|
81
|
-
const key = dedupKey(hit, fsi);
|
|
82
|
-
if (seen.has(key))
|
|
83
|
-
return;
|
|
84
|
-
seen.add(key);
|
|
85
|
-
out.push(hit);
|
|
86
|
-
};
|
|
87
|
-
consider(opts.homeDir);
|
|
88
|
-
consider(opts.cwd);
|
|
89
|
-
const gitParent = path.join(opts.homeDir, "git");
|
|
90
|
-
if (fsi.existsSync(gitParent)) {
|
|
91
|
-
let entries = [];
|
|
92
|
-
try {
|
|
93
|
-
entries = fsi.readdirSync(gitParent, { withFileTypes: true });
|
|
94
|
-
}
|
|
95
|
-
catch {
|
|
96
|
-
entries = [];
|
|
97
|
-
}
|
|
98
|
-
for (const e of entries) {
|
|
99
|
-
if (!e.isDirectory())
|
|
100
|
-
continue;
|
|
101
|
-
consider(path.join(gitParent, e.name));
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
out.sort((a, b) => a.path.localeCompare(b.path));
|
|
105
|
-
return out;
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Delete confirmed rogue ledger directories.
|
|
109
|
-
*
|
|
110
|
-
* Safety invariant: only deletes `hit.rogueDir` (the literal-tilde `~`
|
|
111
|
-
* directory), never its parent. Any hit whose rogueDir basename is not
|
|
112
|
-
* exactly `~` is silently skipped as a belt-and-suspenders guard.
|
|
113
|
-
*/
|
|
114
|
-
export async function deleteRogueLedgers(hits, opts = {}) {
|
|
115
|
-
const deleted = [];
|
|
116
|
-
const skipped = [];
|
|
117
|
-
for (const hit of hits) {
|
|
118
|
-
// Safety: only ever remove a directory whose basename is the literal `~`.
|
|
119
|
-
if (path.basename(hit.rogueDir) !== "~") {
|
|
120
|
-
skipped.push(hit);
|
|
121
|
-
continue;
|
|
122
|
-
}
|
|
123
|
-
let confirmed;
|
|
124
|
-
if (opts.yes) {
|
|
125
|
-
confirmed = true;
|
|
126
|
-
}
|
|
127
|
-
else if (opts.promptFn) {
|
|
128
|
-
confirmed = await opts.promptFn(hit.rogueDir);
|
|
129
|
-
}
|
|
130
|
-
else {
|
|
131
|
-
confirmed = await defaultDeletePrompt(hit.rogueDir);
|
|
132
|
-
}
|
|
133
|
-
if (confirmed) {
|
|
134
|
-
fs.rmSync(hit.rogueDir, { recursive: true, force: true });
|
|
135
|
-
deleted.push(hit);
|
|
136
|
-
}
|
|
137
|
-
else {
|
|
138
|
-
skipped.push(hit);
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
return { deleted, skipped };
|
|
142
|
-
}
|
|
143
|
-
async function defaultDeletePrompt(rogueDir) {
|
|
144
|
-
const rl = readline.createInterface({ input: process.stdin, output: process.stderr });
|
|
145
|
-
try {
|
|
146
|
-
const answer = await rl.question(`Delete rogue directory ${rogueDir}? (y/N) `);
|
|
147
|
-
return answer.trim().toLowerCase() === "y";
|
|
148
|
-
}
|
|
149
|
-
finally {
|
|
150
|
-
rl.close();
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
//# sourceMappingURL=rogue-ledger.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rogue-ledger.js","sourceRoot":"","sources":["../../../src/cli/doctor/rogue-ledger.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import type { Manifest } from "../../schema/index.js";
|
|
2
|
-
/**
|
|
3
|
-
* The probe command run against the `preflight` binary on PATH. Matches
|
|
4
|
-
* the `version_command` the shipped `git-preflight` hook template
|
|
5
|
-
* declares (src/cli/init/templates.ts), same binary and `--version`
|
|
6
|
-
* flag, but is not read FROM the manifest's hook entry: an operator
|
|
7
|
-
* could rename/remove that hook while `session_start_preflight.setup`
|
|
8
|
-
* stays on, and the check should still probe the binary the producer
|
|
9
|
-
* (`harness session-start preflight`) actually spawns.
|
|
10
|
-
*/
|
|
11
|
-
export declare const PREFLIGHT_SETUP_VERSION_COMMAND: readonly ["preflight", "--version"];
|
|
12
|
-
export interface SessionStartPreflightSetupVersionFinding {
|
|
13
|
-
/**
|
|
14
|
-
* `layer_unresolvable` (task `1c4eb3ea`, round 2, D-027 item 3):
|
|
15
|
-
* `doctor()`'s own project-scoped SECOND `loadManifest` call threw
|
|
16
|
-
* (a malformed or unreadable cwd-derived project layer), so this
|
|
17
|
-
* check could not even determine whether `setup` is on. Built
|
|
18
|
-
* directly by `doctor()` (`src/cli/doctor/index.ts`), never by this
|
|
19
|
-
* module's own `checkSessionStartPreflightSetupVersion`: that
|
|
20
|
-
* function only ever sees a manifest that already degraded to
|
|
21
|
-
* `setup: false` on such a failure, and bails out before producing
|
|
22
|
-
* ANY finding for a `setup: false` manifest, which is exactly the
|
|
23
|
-
* silence this kind replaces.
|
|
24
|
-
*/
|
|
25
|
-
kind: "below_floor" | "probe_failed" | "parse_failed" | "layer_unresolvable";
|
|
26
|
-
/**
|
|
27
|
-
* Parsed installed version, when the probe succeeded and parsed.
|
|
28
|
-
* Null otherwise. Always the NUMERIC run (`parseProbedVersion`'s
|
|
29
|
-
* `version` field, e.g. "0.6.0"), never the probed prerelease/build
|
|
30
|
-
* suffix: for a `below_floor` finding caused by a prerelease of the
|
|
31
|
-
* floor (e.g. probed "0.6.0-rc.1" against a "0.6.0" `requiredVersion`),
|
|
32
|
-
* `actualVersion` therefore equals `requiredVersion` even though
|
|
33
|
-
* `kind` is `"below_floor"`: the numeric components tie, and
|
|
34
|
-
* `compareVersionFloor`'s prerelease tie-break is what actually
|
|
35
|
-
* failed the floor. `message` carries the full probed token
|
|
36
|
-
* (including the suffix) for the human-facing distinction; this
|
|
37
|
-
* field's JSON shape does not gain a new field for it. See
|
|
38
|
-
* docs/decisions/2026-09-08-preflight-floors.md.
|
|
39
|
-
*/
|
|
40
|
-
actualVersion: string | null;
|
|
41
|
-
/** Always `SESSION_START_PREFLIGHT_SETUP_BUILD_MIN_VERSION` today; carried on the finding so format.ts never re-imports the constant. */
|
|
42
|
-
requiredVersion: string;
|
|
43
|
-
message: string;
|
|
44
|
-
/**
|
|
45
|
-
* The cwd-derived (or explicit `--project`) project name `doctor`
|
|
46
|
-
* fed its scoped, project-aware `loadManifest` call from when this
|
|
47
|
-
* finding's `manifest` was resolved (task c88461c1, review round 3
|
|
48
|
-
* residual). `null` when no project layer FILE actually decided the
|
|
49
|
-
* result: no project name was derivable for that cwd (not inside a
|
|
50
|
-
* git work tree, and no explicit `--project`), OR a name WAS
|
|
51
|
-
* derivable but no matching `<home>/projects/<name>/harness.overrides.yaml`
|
|
52
|
-
* exists on disk (task `1c4eb3ea`, round 2, D-027 item 1: `doctor()`
|
|
53
|
-
* only sets this to a non-null name when `resolvePaths(...).projectLayer`
|
|
54
|
-
* resolved, not merely whenever a name was attempted, so a
|
|
55
|
-
* base/machine-decided warning stays genuinely distinguishable from
|
|
56
|
-
* a project-decided one). Present only when the CALLER passes a
|
|
57
|
-
* `projectName` argument (see below); `checkSessionStartPreflightSetupVersion`'s
|
|
58
|
-
* own unit tests call it with just `manifest`/`versionProbe`, so
|
|
59
|
-
* their findings carry no `projectName` key at all, not an
|
|
60
|
-
* `undefined` value. The report's own top-level `project` field only
|
|
61
|
-
* ever reflects an EXPLICIT `--project` (`opts.project ?? null`,
|
|
62
|
-
* `doctor/index.ts`), never this derived name.
|
|
63
|
-
*/
|
|
64
|
-
projectName?: string | null;
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Pure: manifest + versionProbe in, a finding out (or `undefined` when
|
|
68
|
-
* there is nothing to flag). Mirrors `checkHookVersion`'s probe/parse
|
|
69
|
-
* idiom (src/cli/doctor/index.ts) so the warning vocabulary
|
|
70
|
-
* (`below_floor` / `probe_failed` / `parse_failed`) and version-regex
|
|
71
|
-
* parsing stay consistent across both checks, without importing from
|
|
72
|
-
* index.ts (which would create a cycle back into this module's own
|
|
73
|
-
* caller).
|
|
74
|
-
*
|
|
75
|
-
* `projectName` (task c88461c1, review round 3 residual; task
|
|
76
|
-
* `1c4eb3ea`): OPTIONAL third argument, carried onto every returned finding
|
|
77
|
-
* unchanged (see {@link SessionStartPreflightSetupVersionFinding.projectName}'s
|
|
78
|
-
* doc comment). `doctor()` always passes it (the SAME name it derived
|
|
79
|
-
* for its own scoped load, or `null`); every pre-existing direct call
|
|
80
|
-
* to this pure function in its own unit tests omits it, so those
|
|
81
|
-
* findings' shape is unchanged.
|
|
82
|
-
*/
|
|
83
|
-
export declare function checkSessionStartPreflightSetupVersion(manifest: Manifest, versionProbe: (cmd: readonly string[]) => string | null, projectName?: string | null): SessionStartPreflightSetupVersionFinding | undefined;
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
// Doctor finding for task 6993d9b5 (tracker id, harness repo): warns
|
|
2
|
-
// when `session_start_preflight.setup: true` is set but the resolved
|
|
3
|
-
// `preflight` binary is below the release that made `--setup` build
|
|
4
|
-
// code, not just install dependencies (agent-preflight 0.6.0, tag
|
|
5
|
-
// v0.6.0). On 0.5.0 `--setup` is dependency-install only, so an
|
|
6
|
-
// operator who enabled the knob against that version pays install time
|
|
7
|
-
// plus the `--setup` trust exposure (see session-start-preflight.ts's
|
|
8
|
-
// SECURITY note) for zero build benefit, with nothing today telling
|
|
9
|
-
// them so.
|
|
10
|
-
//
|
|
11
|
-
// Deliberately independent of the `git-preflight` manifest hook's own
|
|
12
|
-
// `min_version`/`version_command` (checked generically by
|
|
13
|
-
// `checkHookVersion` in ./index.ts): that floor is whatever the
|
|
14
|
-
// operator's own manifest declares, and existing manifests generated
|
|
15
|
-
// before task 6993d9b5 still carry the pre-existing 0.2.0 floor (bumped
|
|
16
|
-
// to `GIT_PREFLIGHT_HOOK_MIN_VERSION`, src/cli/init/templates.ts, in the
|
|
17
|
-
// `init` template only going forward, task 6993d9b5's second commit).
|
|
18
|
-
// This check hardcodes the build-capable floor so an operator on an
|
|
19
|
-
// unregenerated manifest still gets the warning the moment they flip
|
|
20
|
-
// `setup: true`, rather than only after re-running `harness init`.
|
|
21
|
-
//
|
|
22
|
-
// BY DESIGN: on a freshly generated manifest with `setup: true` probed
|
|
23
|
-
// against a stale preflight, this check and the generic `hooks[]`
|
|
24
|
-
// `min_version` walk both fire and both count toward `warningCount` (see
|
|
25
|
-
// `docs/CLI.md`'s VERSION CAVEAT). The two are not a duplicate of the
|
|
26
|
-
// same finding: the hook floor guards the `git-preflight` hook itself,
|
|
27
|
-
// this check guards the `--setup` build-step feature specifically, and
|
|
28
|
-
// a stale preflight breaks both independently.
|
|
29
|
-
//
|
|
30
|
-
// SPLIT FROM THE HOOK FLOOR (task 65952a0c, docs/decisions/2026-09-08-
|
|
31
|
-
// preflight-floors.md): this check's floor,
|
|
32
|
-
// `SESSION_START_PREFLIGHT_SETUP_BUILD_MIN_VERSION`, and the hook
|
|
33
|
-
// floor above, `GIT_PREFLIGHT_HOOK_MIN_VERSION`, were ONE shared
|
|
34
|
-
// constant through task 6993d9b5. Both are `"0.6.0"` today and can
|
|
35
|
-
// diverge on a future bump that applies to only one rationale; see the
|
|
36
|
-
// ADR for the bump rule each carries.
|
|
37
|
-
//
|
|
38
|
-
// Silent (returns `undefined`) whenever `session_start_preflight.setup`
|
|
39
|
-
// is `false`/absent: the trust exposure and the install/build cost only
|
|
40
|
-
// exist once the knob is actually on, mirroring every other advisory
|
|
41
|
-
// doctor check's "no opinion when the feature isn't in use" gate.
|
|
42
|
-
import { parseProbedVersion, compareVersionFloor } from "../../io/version-compare.js";
|
|
43
|
-
import { PREFLIGHT_BIN } from "../session-start/index.js";
|
|
44
|
-
import { SESSION_START_PREFLIGHT_SETUP_BUILD_MIN_VERSION } from "../../schema/session-start-preflight.js";
|
|
45
|
-
/**
|
|
46
|
-
* The probe command run against the `preflight` binary on PATH. Matches
|
|
47
|
-
* the `version_command` the shipped `git-preflight` hook template
|
|
48
|
-
* declares (src/cli/init/templates.ts), same binary and `--version`
|
|
49
|
-
* flag, but is not read FROM the manifest's hook entry: an operator
|
|
50
|
-
* could rename/remove that hook while `session_start_preflight.setup`
|
|
51
|
-
* stays on, and the check should still probe the binary the producer
|
|
52
|
-
* (`harness session-start preflight`) actually spawns.
|
|
53
|
-
*/
|
|
54
|
-
export const PREFLIGHT_SETUP_VERSION_COMMAND = [PREFLIGHT_BIN, "--version"];
|
|
55
|
-
/**
|
|
56
|
-
* Pure: manifest + versionProbe in, a finding out (or `undefined` when
|
|
57
|
-
* there is nothing to flag). Mirrors `checkHookVersion`'s probe/parse
|
|
58
|
-
* idiom (src/cli/doctor/index.ts) so the warning vocabulary
|
|
59
|
-
* (`below_floor` / `probe_failed` / `parse_failed`) and version-regex
|
|
60
|
-
* parsing stay consistent across both checks, without importing from
|
|
61
|
-
* index.ts (which would create a cycle back into this module's own
|
|
62
|
-
* caller).
|
|
63
|
-
*
|
|
64
|
-
* `projectName` (task c88461c1, review round 3 residual; task
|
|
65
|
-
* `1c4eb3ea`): OPTIONAL third argument, carried onto every returned finding
|
|
66
|
-
* unchanged (see {@link SessionStartPreflightSetupVersionFinding.projectName}'s
|
|
67
|
-
* doc comment). `doctor()` always passes it (the SAME name it derived
|
|
68
|
-
* for its own scoped load, or `null`); every pre-existing direct call
|
|
69
|
-
* to this pure function in its own unit tests omits it, so those
|
|
70
|
-
* findings' shape is unchanged.
|
|
71
|
-
*/
|
|
72
|
-
export function checkSessionStartPreflightSetupVersion(manifest, versionProbe, projectName) {
|
|
73
|
-
if (!manifest.session_start_preflight.setup)
|
|
74
|
-
return undefined;
|
|
75
|
-
const withProjectName = (finding) => projectName !== undefined ? { ...finding, projectName } : finding;
|
|
76
|
-
const required = SESSION_START_PREFLIGHT_SETUP_BUILD_MIN_VERSION;
|
|
77
|
-
const stdout = versionProbe(PREFLIGHT_SETUP_VERSION_COMMAND);
|
|
78
|
-
if (stdout === null) {
|
|
79
|
-
return withProjectName({
|
|
80
|
-
kind: "probe_failed",
|
|
81
|
-
actualVersion: null,
|
|
82
|
-
requiredVersion: required,
|
|
83
|
-
message: `session_start_preflight.setup is enabled but the installed preflight version could not ` +
|
|
84
|
-
`be determined (probe for "${PREFLIGHT_SETUP_VERSION_COMMAND.join(" ")}" failed); the ` +
|
|
85
|
-
`build step needs preflight >= ${required}`,
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
// parseProbedVersion/compareVersionFloor (not plain compareNumericVersions):
|
|
89
|
-
// a preflight release candidate of the floor (e.g. "0.6.0-rc.1") must not
|
|
90
|
-
// count as build-capable. See docs/decisions/2026-09-08-preflight-floors.md.
|
|
91
|
-
const parsed = parseProbedVersion(stdout);
|
|
92
|
-
if (!parsed) {
|
|
93
|
-
return withProjectName({
|
|
94
|
-
kind: "parse_failed",
|
|
95
|
-
actualVersion: null,
|
|
96
|
-
requiredVersion: required,
|
|
97
|
-
message: `session_start_preflight.setup is enabled but the installed preflight version could not ` +
|
|
98
|
-
`be parsed from "${stdout.trim()}"; the build step needs preflight >= ${required}`,
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
const { version: actual, isPrerelease, token } = parsed;
|
|
102
|
-
if (compareVersionFloor(actual, isPrerelease, required) < 0) {
|
|
103
|
-
return withProjectName({
|
|
104
|
-
kind: "below_floor",
|
|
105
|
-
actualVersion: actual,
|
|
106
|
-
requiredVersion: required,
|
|
107
|
-
message: `session_start_preflight.setup is enabled but installed preflight v${token} < ${required}: ` +
|
|
108
|
-
`--setup on v${token} is dependency-install only (no build step); upgrade preflight ` +
|
|
109
|
-
`(npm i -g @lannguyensi/agent-preflight) or set session_start_preflight.setup: false`,
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
return undefined;
|
|
113
|
-
}
|
|
114
|
-
//# sourceMappingURL=session-start-preflight-setup-version.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-start-preflight-setup-version.js","sourceRoot":"","sources":["../../../src/cli/doctor/session-start-preflight-setup-version.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
export interface SettingsDriftSection {
|
|
2
|
-
/** ℹ lines; never roll into warningCount. */
|
|
3
|
-
notes: string[];
|
|
4
|
-
/** ⚠ lines; each rolls into warningCount. */
|
|
5
|
-
warnings: string[];
|
|
6
|
-
}
|
|
7
|
-
/**
|
|
8
|
-
* `~`-relativize `absPath` under `home` for display; never leak the raw
|
|
9
|
-
* absolute path. Exported for `codex-config-drift.ts`'s `$CODEX_HOME`
|
|
10
|
-
* candidate label, which needs the same convention.
|
|
11
|
-
*/
|
|
12
|
-
export declare function tildeize(absPath: string, home: string): string;
|
|
13
|
-
export interface BuildSettingsDriftOptions {
|
|
14
|
-
/** `harness.generated/` for the manifest in use; `.last-apply` lives here. */
|
|
15
|
-
generatedDir: string;
|
|
16
|
-
/** `harness.lock` path for the manifest in use. */
|
|
17
|
-
lockPath: string;
|
|
18
|
-
/** Resolves the two project-scoped candidate files (`.claude/settings.json`, `.claude/settings.local.json`). */
|
|
19
|
-
cwd: string;
|
|
20
|
-
/** Operator home; resolves the user-scope candidate file and its display label. */
|
|
21
|
-
home: string;
|
|
22
|
-
/** Env for `CLAUDE_CONFIG_DIR` resolution of the user-scope file. */
|
|
23
|
-
env: NodeJS.ProcessEnv;
|
|
24
|
-
}
|
|
25
|
-
export declare function buildSettingsDrift(opts: BuildSettingsDriftOptions): SettingsDriftSection;
|
|
@@ -1,213 +0,0 @@
|
|
|
1
|
-
// Settings-drift half of ADR docs/decisions/2026-08-27-ug-auto-mode-approval.md
|
|
2
|
-
// slice 1 (agent-tasks 74b4b17d), threat model (c): "The permission mode
|
|
3
|
-
// itself is settings-derived, and settings files are agent-editable
|
|
4
|
-
// after approval" and "The same settings write also reaches the hook
|
|
5
|
-
// roster, which supplies key two." A post-approval agent can plant
|
|
6
|
-
// `permissions.defaultMode: "bypassPermissions"` (key one) and/or a
|
|
7
|
-
// `UserPromptSubmit`/`SessionStart` hook entry that mints a report for
|
|
8
|
-
// every later session (key two) into a Claude Code settings file, and
|
|
9
|
-
// nothing named that plant before this check: `harness diff
|
|
10
|
-
// --since-apply` only re-hashes the whole `--target` file as a lock
|
|
11
|
-
// entry, so it flags SOME change without naming which key moved.
|
|
12
|
-
//
|
|
13
|
-
// What this module actually has to compare against, verified against
|
|
14
|
-
// the real `apply()` code path (not assumed from the ADR prose):
|
|
15
|
-
//
|
|
16
|
-
// - `.last-apply` (`src/io/last-apply.ts`) stores exactly ONE
|
|
17
|
-
// `files["settings.json"]` entry: harness's own GENERATED
|
|
18
|
-
// settings.json content (`buildExpectedFiles` in apply.ts), keyed by
|
|
19
|
-
// basename, not by which `--target` path it was merged into. Harness
|
|
20
|
-
// never writes `permissions.defaultMode` itself
|
|
21
|
-
// (`generate-settings.ts` has no such key), and `--merge` replaces
|
|
22
|
-
// `hooks` WHOLESALE (`src/io/merge-settings.ts`'s module header: "harness
|
|
23
|
-
// owns whichever top-level keys appear in the generated output...
|
|
24
|
-
// hooks stays wholesale-owned"). So this one snapshot is, for every
|
|
25
|
-
// settings file harness has ever targeted, an accurate "what harness
|
|
26
|
-
// itself put there at apply time" baseline: defaultMode absent
|
|
27
|
-
// (harness never owns it) and hooks exactly the generated roster (no
|
|
28
|
-
// operator hand-added hook entry survives a `--merge`).
|
|
29
|
-
// - `harness.lock` (`src/io/harness-lock.ts`) records which absolute
|
|
30
|
-
// path(s) were an actual `--target` write, as a `kind: "target"`
|
|
31
|
-
// entry. This is how a live settings file is told apart from one
|
|
32
|
-
// harness has never touched: matching against this lock entry is
|
|
33
|
-
// the "SAME path" mapping the file was written under.
|
|
34
|
-
//
|
|
35
|
-
// A file whose absolute path has no `target` lock entry never received
|
|
36
|
-
// harness's baseline at all, so it gets the EMPTY baseline (everything
|
|
37
|
-
// in it reads as "absent at last apply") rather than the shared
|
|
38
|
-
// generated-settings.json baseline.
|
|
39
|
-
//
|
|
40
|
-
// Warnings only, never a block; this is the compensating control named
|
|
41
|
-
// in the ADR, not an enforcement (the enforcing lever is the managed
|
|
42
|
-
// setting in operator decision 7).
|
|
43
|
-
import * as fs from "node:fs";
|
|
44
|
-
import * as path from "node:path";
|
|
45
|
-
import { lastApplyPath, readLastApply } from "../../io/last-apply.js";
|
|
46
|
-
import { readLock } from "../../io/harness-lock.js";
|
|
47
|
-
import { safeJsonParse } from "../../io/safe-json-parse.js";
|
|
48
|
-
import { resolveSettingsPath as resolveUserSettingsPath } from "./claude-mcp.js";
|
|
49
|
-
function isRecord(v) {
|
|
50
|
-
return typeof v === "object" && v !== null && !Array.isArray(v);
|
|
51
|
-
}
|
|
52
|
-
function hookIdentityKey(h) {
|
|
53
|
-
return JSON.stringify([h.event, h.matcher, h.type, h.command]);
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Enumerate every `hooks[event][].hooks[]` entry in a parsed settings
|
|
57
|
-
* object as an identity tuple. Mirrors the group-parsing convention
|
|
58
|
-
* `collectOwnedHookGroups`/`classifyHookGroup` use in
|
|
59
|
-
* `src/cli/uninstall/index.ts` for the same on-disk shape. Malformed
|
|
60
|
-
* groups/entries are skipped rather than throwing — a live settings.json
|
|
61
|
-
* this check does not own may carry shapes this parser has no opinion
|
|
62
|
-
* about.
|
|
63
|
-
*/
|
|
64
|
-
function collectHookIdentities(hooksValue) {
|
|
65
|
-
const out = [];
|
|
66
|
-
if (!isRecord(hooksValue))
|
|
67
|
-
return out;
|
|
68
|
-
for (const event of Object.keys(hooksValue)) {
|
|
69
|
-
const groups = hooksValue[event];
|
|
70
|
-
if (!Array.isArray(groups))
|
|
71
|
-
continue;
|
|
72
|
-
for (const group of groups) {
|
|
73
|
-
if (!isRecord(group))
|
|
74
|
-
continue;
|
|
75
|
-
const matcher = typeof group["matcher"] === "string" ? group["matcher"] : "";
|
|
76
|
-
const inner = group["hooks"];
|
|
77
|
-
if (!Array.isArray(inner))
|
|
78
|
-
continue;
|
|
79
|
-
for (const h of inner) {
|
|
80
|
-
if (!isRecord(h))
|
|
81
|
-
continue;
|
|
82
|
-
const type = typeof h["type"] === "string" ? h["type"] : "";
|
|
83
|
-
const command = typeof h["command"] === "string" ? h["command"] : "";
|
|
84
|
-
out.push({ event, matcher, type, command });
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
return out;
|
|
89
|
-
}
|
|
90
|
-
function defaultModeOf(settings) {
|
|
91
|
-
const permissions = settings["permissions"];
|
|
92
|
-
if (!isRecord(permissions))
|
|
93
|
-
return undefined;
|
|
94
|
-
const mode = permissions["defaultMode"];
|
|
95
|
-
return typeof mode === "string" ? mode : undefined;
|
|
96
|
-
}
|
|
97
|
-
function checkOneFile(file, baseline, targetAbsPaths, warnings) {
|
|
98
|
-
// Plain read, no readRegularFileRejectingSymlink: this is a live
|
|
99
|
-
// Claude Code settings file (project or user scope), not one of
|
|
100
|
-
// harness's own generated artefacts, and doctor's existing reader for
|
|
101
|
-
// this exact file class (`findDeadSettingsMcpNames` in claude-mcp.ts)
|
|
102
|
-
// already reads it the same way — a missing file resolves to "nothing
|
|
103
|
-
// to report" here too, not a symlink-defense case.
|
|
104
|
-
let raw;
|
|
105
|
-
try {
|
|
106
|
-
raw = fs.readFileSync(file.absolutePath, "utf8");
|
|
107
|
-
}
|
|
108
|
-
catch {
|
|
109
|
-
return;
|
|
110
|
-
}
|
|
111
|
-
const parsed = safeJsonParse(raw);
|
|
112
|
-
if (!isRecord(parsed)) {
|
|
113
|
-
warnings.push(`${file.displayLabel}: unreadable settings JSON`);
|
|
114
|
-
return;
|
|
115
|
-
}
|
|
116
|
-
const live = parsed;
|
|
117
|
-
const hasSnapshot = targetAbsPaths.has(path.resolve(file.absolutePath));
|
|
118
|
-
const effectiveBaseline = hasSnapshot ? baseline : {};
|
|
119
|
-
const suffix = hasSnapshot ? "" : " (no apply snapshot for this file)";
|
|
120
|
-
const liveMode = defaultModeOf(live);
|
|
121
|
-
const baselineMode = defaultModeOf(effectiveBaseline);
|
|
122
|
-
if (liveMode !== undefined && liveMode !== baselineMode) {
|
|
123
|
-
if (baselineMode === undefined) {
|
|
124
|
-
warnings.push(`permissions.defaultMode set in ${file.displayLabel} but absent at last apply: ${liveMode}${suffix}`);
|
|
125
|
-
}
|
|
126
|
-
else {
|
|
127
|
-
warnings.push(`permissions.defaultMode set in ${file.displayLabel} changed from ${baselineMode} to ${liveMode}${suffix}`);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
const liveHooks = collectHookIdentities(live["hooks"]);
|
|
131
|
-
const baselineHookKeys = new Set(collectHookIdentities(effectiveBaseline["hooks"]).map(hookIdentityKey));
|
|
132
|
-
for (const h of liveHooks) {
|
|
133
|
-
if (baselineHookKeys.has(hookIdentityKey(h)))
|
|
134
|
-
continue;
|
|
135
|
-
warnings.push(`hook entries in ${file.displayLabel} absent at last apply: ${h.event}/${h.matcher || "*"}${suffix}`);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* The absolute paths `harness.lock` records as an actual `--target`
|
|
140
|
-
* write (see the module header: this is the "SAME path" mapping a live
|
|
141
|
-
* file was written under). Not exported: `codex-config-drift.ts` no
|
|
142
|
-
* longer shares this lookup (it keeps no apply-time snapshot to gate on
|
|
143
|
-
* at all, see that module's header).
|
|
144
|
-
*/
|
|
145
|
-
function targetLockAbsPaths(lockPath) {
|
|
146
|
-
const lockEntries = readLock(lockPath) ?? [];
|
|
147
|
-
return new Set(lockEntries
|
|
148
|
-
.filter((e) => e.kind === "target")
|
|
149
|
-
.map((e) => path.resolve(e.path)));
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
* `~`-relativize `absPath` under `home` for display; never leak the raw
|
|
153
|
-
* absolute path. Exported for `codex-config-drift.ts`'s `$CODEX_HOME`
|
|
154
|
-
* candidate label, which needs the same convention.
|
|
155
|
-
*/
|
|
156
|
-
export function tildeize(absPath, home) {
|
|
157
|
-
const resolvedHome = path.resolve(home);
|
|
158
|
-
const resolvedPath = path.resolve(absPath);
|
|
159
|
-
if (resolvedPath === resolvedHome)
|
|
160
|
-
return "~";
|
|
161
|
-
const withSep = resolvedHome.endsWith(path.sep) ? resolvedHome : `${resolvedHome}${path.sep}`;
|
|
162
|
-
if (resolvedPath.startsWith(withSep)) {
|
|
163
|
-
return path.join("~", resolvedPath.slice(withSep.length));
|
|
164
|
-
}
|
|
165
|
-
return absPath;
|
|
166
|
-
}
|
|
167
|
-
export function buildSettingsDrift(opts) {
|
|
168
|
-
const notes = [];
|
|
169
|
-
const warnings = [];
|
|
170
|
-
// A malformed `.last-apply` must not abort doctor: degrade to a warning
|
|
171
|
-
// naming the file and skip the drift comparison (same shape as the
|
|
172
|
-
// runtime-selection fallback in index.ts).
|
|
173
|
-
let lastApply;
|
|
174
|
-
try {
|
|
175
|
-
lastApply = readLastApply(opts.generatedDir);
|
|
176
|
-
}
|
|
177
|
-
catch (err) {
|
|
178
|
-
warnings.push(`${lastApplyPath(opts.generatedDir)} is unreadable (${err instanceof Error ? err.message : String(err)}); settings drift not checked`);
|
|
179
|
-
return { notes, warnings };
|
|
180
|
-
}
|
|
181
|
-
if (lastApply === null) {
|
|
182
|
-
notes.push("no apply snapshot; settings drift not checked");
|
|
183
|
-
return { notes, warnings };
|
|
184
|
-
}
|
|
185
|
-
const baselineRaw = lastApply.files["settings.json"]?.content;
|
|
186
|
-
let baseline = {};
|
|
187
|
-
if (baselineRaw !== undefined) {
|
|
188
|
-
const parsed = safeJsonParse(baselineRaw);
|
|
189
|
-
if (isRecord(parsed))
|
|
190
|
-
baseline = parsed;
|
|
191
|
-
}
|
|
192
|
-
const targetAbsPaths = targetLockAbsPaths(opts.lockPath);
|
|
193
|
-
const userSettingsPath = resolveUserSettingsPath(opts.home, opts.env);
|
|
194
|
-
const candidates = [
|
|
195
|
-
{
|
|
196
|
-
absolutePath: path.resolve(opts.cwd, ".claude", "settings.json"),
|
|
197
|
-
displayLabel: ".claude/settings.json",
|
|
198
|
-
},
|
|
199
|
-
{
|
|
200
|
-
absolutePath: path.resolve(opts.cwd, ".claude", "settings.local.json"),
|
|
201
|
-
displayLabel: ".claude/settings.local.json",
|
|
202
|
-
},
|
|
203
|
-
{
|
|
204
|
-
absolutePath: path.resolve(userSettingsPath),
|
|
205
|
-
displayLabel: tildeize(userSettingsPath, opts.home),
|
|
206
|
-
},
|
|
207
|
-
];
|
|
208
|
-
for (const c of candidates) {
|
|
209
|
-
checkOneFile(c, baseline, targetAbsPaths, warnings);
|
|
210
|
-
}
|
|
211
|
-
return { notes, warnings };
|
|
212
|
-
}
|
|
213
|
-
//# sourceMappingURL=settings-drift.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"settings-drift.js","sourceRoot":"","sources":["../../../src/cli/doctor/settings-drift.ts"],"names":[],"mappings":"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"}
|