@lannguyensi/harness 0.63.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +90 -0
- package/README.md +46 -42
- package/dist/cli/add/index.js +17 -21
- package/dist/cli/add/index.js.map +1 -1
- package/dist/cli/adopt/derive.d.ts +2 -2
- package/dist/cli/adopt/derive.js +2 -19
- package/dist/cli/adopt/derive.js.map +1 -1
- package/dist/cli/adopt/index.d.ts +1 -1
- package/dist/cli/adopt/index.js +1 -12
- package/dist/cli/adopt/index.js.map +1 -1
- package/dist/cli/apply/apply.d.ts +20 -35
- package/dist/cli/apply/apply.js +61 -136
- package/dist/cli/apply/apply.js.map +1 -1
- package/dist/cli/apply/generate-codex-config.js +10 -58
- package/dist/cli/apply/generate-codex-config.js.map +1 -1
- package/dist/cli/apply/generate-memory-index.js +1 -2
- package/dist/cli/apply/generate-memory-index.js.map +1 -1
- package/dist/cli/apply/generate-opencode-config.d.ts +2 -10
- package/dist/cli/apply/generate-opencode-config.js +74 -113
- package/dist/cli/apply/generate-opencode-config.js.map +1 -1
- package/dist/cli/apply/generate-settings.d.ts +11 -64
- package/dist/cli/apply/generate-settings.js +27 -132
- package/dist/cli/apply/generate-settings.js.map +1 -1
- package/dist/cli/apply/index.d.ts +1 -1
- package/dist/cli/apply/index.js +1 -1
- package/dist/cli/apply/index.js.map +1 -1
- package/dist/cli/apply/install-codex-config.d.ts +153 -1
- package/dist/cli/apply/install-codex-config.js +445 -70
- package/dist/cli/apply/install-codex-config.js.map +1 -1
- package/dist/cli/apply/next-steps.d.ts +7 -0
- package/dist/cli/apply/next-steps.js +13 -1
- package/dist/cli/apply/next-steps.js.map +1 -1
- package/dist/cli/bounded-stdin.d.ts +0 -23
- package/dist/cli/bounded-stdin.js +2 -49
- package/dist/cli/bounded-stdin.js.map +1 -1
- package/dist/cli/describe.d.ts +1 -1
- package/dist/cli/describe.js +0 -3
- package/dist/cli/describe.js.map +1 -1
- package/dist/cli/diff/engine.d.ts +0 -11
- package/dist/cli/diff/engine.js +1 -17
- package/dist/cli/diff/engine.js.map +1 -1
- package/dist/cli/diff/index.js +14 -25
- package/dist/cli/diff/index.js.map +1 -1
- package/dist/cli/doctor/claude-mcp.d.ts +4 -19
- package/dist/cli/doctor/claude-mcp.js +11 -22
- package/dist/cli/doctor/claude-mcp.js.map +1 -1
- package/dist/cli/doctor/codex.d.ts +12 -14
- package/dist/cli/doctor/codex.js +31 -144
- package/dist/cli/doctor/codex.js.map +1 -1
- package/dist/cli/doctor/format.js +23 -338
- package/dist/cli/doctor/format.js.map +1 -1
- package/dist/cli/doctor/hook-liveness.d.ts +56 -0
- package/dist/cli/doctor/hook-liveness.js +455 -0
- package/dist/cli/doctor/hook-liveness.js.map +1 -0
- package/dist/cli/doctor/index.d.ts +13 -87
- package/dist/cli/doctor/index.js +57 -705
- package/dist/cli/doctor/index.js.map +1 -1
- package/dist/cli/doctor/opencode.d.ts +2 -1
- package/dist/cli/doctor/opencode.js.map +1 -1
- package/dist/cli/doctor/types.d.ts +21 -378
- package/dist/cli/doctor/types.js.map +1 -1
- package/dist/cli/drain-stdio.d.ts +31 -0
- package/dist/cli/drain-stdio.js +76 -0
- package/dist/cli/drain-stdio.js.map +1 -0
- package/dist/cli/export.d.ts +3 -1
- package/dist/cli/export.js +7 -16
- package/dist/cli/export.js.map +1 -1
- package/dist/cli/gate/codex-disable.d.ts +29 -0
- package/dist/cli/gate/codex-disable.js +195 -0
- package/dist/cli/gate/codex-disable.js.map +1 -0
- package/dist/cli/gate/codex-enable.d.ts +41 -0
- package/dist/cli/gate/codex-enable.js +127 -0
- package/dist/cli/gate/codex-enable.js.map +1 -0
- package/dist/cli/gate/codex-snapshot.d.ts +208 -0
- package/dist/cli/gate/codex-snapshot.js +402 -0
- package/dist/cli/gate/codex-snapshot.js.map +1 -0
- package/dist/cli/gate/disable.d.ts +9 -0
- package/dist/cli/gate/disable.js +263 -28
- package/dist/cli/gate/disable.js.map +1 -1
- package/dist/cli/gate/enable.d.ts +26 -6
- package/dist/cli/gate/enable.js +152 -80
- package/dist/cli/gate/enable.js.map +1 -1
- package/dist/cli/gate/link-chain.d.ts +53 -0
- package/dist/cli/gate/link-chain.js +122 -0
- package/dist/cli/gate/link-chain.js.map +1 -0
- package/dist/cli/gate/snapshot.d.ts +289 -12
- package/dist/cli/gate/snapshot.js +481 -22
- package/dist/cli/gate/snapshot.js.map +1 -1
- package/dist/cli/index.d.ts +0 -9
- package/dist/cli/index.js +15 -2607
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init/composer.d.ts +3 -6
- package/dist/cli/init/composer.js +6 -370
- package/dist/cli/init/composer.js.map +1 -1
- package/dist/cli/init/dependencies.d.ts +1 -2
- package/dist/cli/init/dependencies.js +4 -80
- package/dist/cli/init/dependencies.js.map +1 -1
- package/dist/cli/init/detect.js +5 -4
- package/dist/cli/init/detect.js.map +1 -1
- package/dist/cli/init/interactive.d.ts +1 -23
- package/dist/cli/init/interactive.js +33 -247
- package/dist/cli/init/interactive.js.map +1 -1
- package/dist/cli/init/profiles.d.ts +2 -2
- package/dist/cli/init/profiles.js +51 -243
- package/dist/cli/init/profiles.js.map +1 -1
- package/dist/cli/init/templates.d.ts +2 -37
- package/dist/cli/init/templates.js +25 -1237
- package/dist/cli/init/templates.js.map +1 -1
- package/dist/cli/list.d.ts +1 -1
- package/dist/cli/list.js +1 -38
- package/dist/cli/list.js.map +1 -1
- package/dist/cli/loader.d.ts +15 -1
- package/dist/cli/loader.js +56 -39
- package/dist/cli/loader.js.map +1 -1
- package/dist/cli/main.js +7 -2
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/migrate-home/index.js +2 -2
- package/dist/cli/migrate-home/index.js.map +1 -1
- package/dist/cli/pack/add.js +1 -1
- package/dist/cli/pack/add.js.map +1 -1
- package/dist/cli/pack/hook-bootstrap.d.ts +5 -164
- package/dist/cli/pack/hook-bootstrap.js +15 -291
- package/dist/cli/pack/hook-bootstrap.js.map +1 -1
- package/dist/cli/pack/hook-branch-protection.d.ts +28 -21
- package/dist/cli/pack/hook-branch-protection.js +365 -340
- package/dist/cli/pack/hook-branch-protection.js.map +1 -1
- package/dist/cli/pack/index.d.ts +0 -1
- package/dist/cli/pack/index.js +0 -1
- package/dist/cli/pack/index.js.map +1 -1
- package/dist/cli/pack/list.js +1 -6
- package/dist/cli/pack/list.js.map +1 -1
- package/dist/cli/pack/mutate.d.ts +7 -9
- package/dist/cli/pack/mutate.js +6 -9
- package/dist/cli/pack/mutate.js.map +1 -1
- package/dist/cli/pack/reseed.d.ts +2 -2
- package/dist/cli/pack/reseed.js +16 -22
- package/dist/cli/pack/reseed.js.map +1 -1
- package/dist/cli/register-gate-group.d.ts +5 -0
- package/dist/cli/register-gate-group.js +348 -0
- package/dist/cli/register-gate-group.js.map +1 -0
- package/dist/cli/register-inspect-group.d.ts +6 -0
- package/dist/cli/register-inspect-group.js +189 -0
- package/dist/cli/register-inspect-group.js.map +1 -0
- package/dist/cli/register-operator-lifecycle.d.ts +5 -0
- package/dist/cli/register-operator-lifecycle.js +20 -0
- package/dist/cli/register-operator-lifecycle.js.map +1 -0
- package/dist/cli/register-pack-group.d.ts +5 -0
- package/dist/cli/register-pack-group.js +134 -0
- package/dist/cli/register-pack-group.js.map +1 -0
- package/dist/cli/register-setup-group.d.ts +5 -0
- package/dist/cli/register-setup-group.js +495 -0
- package/dist/cli/register-setup-group.js.map +1 -0
- package/dist/cli/remove/index.d.ts +0 -14
- package/dist/cli/remove/index.js +2 -115
- package/dist/cli/remove/index.js.map +1 -1
- package/dist/cli/remove/mutate.d.ts +0 -2
- package/dist/cli/remove/mutate.js +1 -19
- package/dist/cli/remove/mutate.js.map +1 -1
- package/dist/cli/remove/register.d.ts +5 -0
- package/dist/cli/remove/register.js +25 -0
- package/dist/cli/remove/register.js.map +1 -0
- package/dist/cli/shell-quote.d.ts +7 -0
- package/dist/cli/shell-quote.js +17 -0
- package/dist/cli/shell-quote.js.map +1 -0
- package/dist/cli/uninstall/index.d.ts +4 -2
- package/dist/cli/uninstall/index.js +15 -7
- package/dist/cli/uninstall/index.js.map +1 -1
- package/dist/cli/uninstall/register.d.ts +5 -0
- package/dist/cli/uninstall/register.js +171 -0
- package/dist/cli/uninstall/register.js.map +1 -0
- package/dist/cli/uninstall/snapshot.d.ts +15 -0
- package/dist/cli/uninstall/snapshot.js +38 -0
- package/dist/cli/uninstall/snapshot.js.map +1 -1
- package/dist/cli/validate/checks.d.ts +0 -77
- package/dist/cli/validate/checks.js +3 -1049
- package/dist/cli/validate/checks.js.map +1 -1
- package/dist/cli/validate/index.js +19 -15
- package/dist/cli/validate/index.js.map +1 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.js +0 -3
- package/dist/index.js.map +1 -1
- package/dist/io/claude-mcp.d.ts +1 -1
- package/dist/io/claude-mcp.js +27 -14
- package/dist/io/claude-mcp.js.map +1 -1
- package/dist/io/harness-lock.js +2 -2
- package/dist/io/harness-lock.js.map +1 -1
- package/dist/io/lock.d.ts +0 -26
- package/dist/io/lock.js +10 -27
- package/dist/io/lock.js.map +1 -1
- package/dist/io/merge-settings.js +6 -4
- package/dist/io/merge-settings.js.map +1 -1
- package/dist/io/project-name.d.ts +22 -39
- package/dist/io/project-name.js +25 -42
- package/dist/io/project-name.js.map +1 -1
- package/dist/io/read-regular-file.d.ts +103 -40
- package/dist/io/read-regular-file.js +196 -35
- package/dist/io/read-regular-file.js.map +1 -1
- package/dist/io/restart-hints.js +3 -6
- package/dist/io/restart-hints.js.map +1 -1
- package/dist/io/version-compare.d.ts +1 -3
- package/dist/io/version-compare.js +1 -3
- package/dist/io/version-compare.js.map +1 -1
- package/dist/io/write-regular-file.d.ts +30 -0
- package/dist/io/write-regular-file.js +85 -0
- package/dist/io/write-regular-file.js.map +1 -0
- package/dist/overrides/index.d.ts +1 -0
- package/dist/overrides/index.js +1 -0
- package/dist/overrides/index.js.map +1 -1
- package/dist/overrides/merge-layers.d.ts +43 -0
- package/dist/overrides/merge-layers.js +76 -0
- package/dist/overrides/merge-layers.js.map +1 -0
- package/dist/overrides/merge.d.ts +16 -0
- package/dist/overrides/merge.js +21 -8
- package/dist/overrides/merge.js.map +1 -1
- package/dist/policy-packs/builtin/branch-protection-runtime.d.ts +4 -69
- package/dist/policy-packs/builtin/branch-protection-runtime.js +12 -84
- package/dist/policy-packs/builtin/branch-protection-runtime.js.map +1 -1
- package/dist/policy-packs/builtin/branch-protection.d.ts +7 -30
- package/dist/policy-packs/builtin/branch-protection.js +56 -89
- package/dist/policy-packs/builtin/branch-protection.js.map +1 -1
- package/dist/policy-packs/config-check.d.ts +7 -5
- package/dist/policy-packs/config-check.js +2 -2
- package/dist/policy-packs/config-check.js.map +1 -1
- package/dist/policy-packs/expand.d.ts +1 -3
- package/dist/policy-packs/expand.js +5 -42
- package/dist/policy-packs/expand.js.map +1 -1
- package/dist/policy-packs/index.d.ts +3 -3
- package/dist/policy-packs/index.js +2 -2
- package/dist/policy-packs/index.js.map +1 -1
- package/dist/policy-packs/registry.d.ts +9 -38
- package/dist/policy-packs/registry.js +5 -65
- package/dist/policy-packs/registry.js.map +1 -1
- package/dist/policy-packs/runtime.d.ts +0 -4
- package/dist/policy-packs/runtime.js +9 -22
- package/dist/policy-packs/runtime.js.map +1 -1
- package/dist/policy-packs/types.d.ts +0 -19
- package/dist/policy-packs/ux-compare.d.ts +1 -11
- package/dist/policy-packs/ux-compare.js +6 -42
- package/dist/policy-packs/ux-compare.js.map +1 -1
- package/dist/policy-packs/ux-drift-check.d.ts +5 -5
- package/dist/policy-packs/ux-drift-check.js +17 -22
- package/dist/policy-packs/ux-drift-check.js.map +1 -1
- package/dist/policy-packs/version-check.d.ts +5 -26
- package/dist/policy-packs/version-check.js +19 -74
- package/dist/policy-packs/version-check.js.map +1 -1
- package/dist/probes/memory.d.ts +1 -1
- package/dist/probes/memory.js +1 -1
- package/dist/probes/memory.js.map +1 -1
- package/dist/runtime/agent-facing.d.ts +9 -0
- package/dist/runtime/agent-facing.js +28 -14
- package/dist/runtime/agent-facing.js.map +1 -1
- package/dist/runtime/bounded-text.d.ts +15 -0
- package/dist/runtime/bounded-text.js +27 -0
- package/dist/runtime/bounded-text.js.map +1 -0
- package/dist/runtime/git-branch.d.ts +125 -0
- package/dist/runtime/git-branch.js +381 -0
- package/dist/runtime/git-branch.js.map +1 -0
- package/dist/runtime/hermetic-spawn-guard.d.ts +2 -2
- package/dist/runtime/hermetic-spawn-guard.js +24 -34
- package/dist/runtime/hermetic-spawn-guard.js.map +1 -1
- package/dist/runtime/home-dir.js +3 -2
- package/dist/runtime/home-dir.js.map +1 -1
- package/dist/runtime/tool-name-aliases.d.ts +0 -6
- package/dist/runtime/tool-name-aliases.js +5 -18
- package/dist/runtime/tool-name-aliases.js.map +1 -1
- package/dist/schema/grounding.d.ts +7 -54
- package/dist/schema/grounding.js +10 -12
- package/dist/schema/grounding.js.map +1 -1
- package/dist/schema/hooks.d.ts +39 -136
- package/dist/schema/hooks.js +3 -6
- package/dist/schema/hooks.js.map +1 -1
- package/dist/schema/index.d.ts +114 -3828
- package/dist/schema/index.js +41 -80
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/memory.d.ts +54 -131
- package/dist/schema/memory.js +2 -2
- package/dist/schema/memory.js.map +1 -1
- package/dist/schema/policy-packs.d.ts +3 -45
- package/dist/schema/policy-packs.js +7 -13
- package/dist/schema/policy-packs.js.map +1 -1
- package/dist/schema/policy-ux.d.ts +7 -0
- package/dist/schema/policy-ux.js +18 -0
- package/dist/schema/policy-ux.js.map +1 -0
- package/dist/schema/removed-keys.d.ts +185 -0
- package/dist/schema/removed-keys.js +531 -0
- package/dist/schema/removed-keys.js.map +1 -0
- package/dist/schema/tools.d.ts +30 -268
- package/dist/schema/tools.js +4 -4
- package/dist/schema/tools.js.map +1 -1
- package/package.json +5 -16
- package/dist/cli/approve/branch-protection.d.ts +0 -69
- package/dist/cli/approve/branch-protection.js +0 -144
- package/dist/cli/approve/branch-protection.js.map +0 -1
- package/dist/cli/approve/risk.d.ts +0 -112
- package/dist/cli/approve/risk.js +0 -197
- package/dist/cli/approve/risk.js.map +0 -1
- package/dist/cli/approve/stdin-report.d.ts +0 -57
- package/dist/cli/approve/stdin-report.js +0 -145
- package/dist/cli/approve/stdin-report.js.map +0 -1
- package/dist/cli/approve/understanding.d.ts +0 -410
- package/dist/cli/approve/understanding.js +0 -996
- package/dist/cli/approve/understanding.js.map +0 -1
- package/dist/cli/audit.d.ts +0 -80
- package/dist/cli/audit.js +0 -252
- package/dist/cli/audit.js.map +0 -1
- package/dist/cli/delegate/index.d.ts +0 -76
- package/dist/cli/delegate/index.js +0 -443
- package/dist/cli/delegate/index.js.map +0 -1
- package/dist/cli/doctor/auto-approve-mode.d.ts +0 -37
- package/dist/cli/doctor/auto-approve-mode.js +0 -80
- package/dist/cli/doctor/auto-approve-mode.js.map +0 -1
- package/dist/cli/doctor/bypass-without-auto-approve.d.ts +0 -38
- package/dist/cli/doctor/bypass-without-auto-approve.js +0 -95
- package/dist/cli/doctor/bypass-without-auto-approve.js.map +0 -1
- package/dist/cli/doctor/codex-config-drift.d.ts +0 -28
- package/dist/cli/doctor/codex-config-drift.js +0 -240
- package/dist/cli/doctor/codex-config-drift.js.map +0 -1
- package/dist/cli/doctor/rogue-ledger.d.ts +0 -53
- package/dist/cli/doctor/rogue-ledger.js +0 -153
- package/dist/cli/doctor/rogue-ledger.js.map +0 -1
- package/dist/cli/doctor/session-start-preflight-setup-version.d.ts +0 -83
- package/dist/cli/doctor/session-start-preflight-setup-version.js +0 -114
- package/dist/cli/doctor/session-start-preflight-setup-version.js.map +0 -1
- package/dist/cli/doctor/settings-drift.d.ts +0 -25
- package/dist/cli/doctor/settings-drift.js +0 -213
- package/dist/cli/doctor/settings-drift.js.map +0 -1
- package/dist/cli/doctor/toolchain-parity.d.ts +0 -63
- package/dist/cli/doctor/toolchain-parity.js +0 -154
- package/dist/cli/doctor/toolchain-parity.js.map +0 -1
- package/dist/cli/doctor/ug-auto-approvals.d.ts +0 -40
- package/dist/cli/doctor/ug-auto-approvals.js +0 -91
- package/dist/cli/doctor/ug-auto-approvals.js.map +0 -1
- package/dist/cli/doctor/ug-delegations.d.ts +0 -26
- package/dist/cli/doctor/ug-delegations.js +0 -121
- package/dist/cli/doctor/ug-delegations.js.map +0 -1
- package/dist/cli/doctor/ug-inflight.d.ts +0 -35
- package/dist/cli/doctor/ug-inflight.js +0 -57
- package/dist/cli/doctor/ug-inflight.js.map +0 -1
- package/dist/cli/doctor/understanding-mode-env.d.ts +0 -51
- package/dist/cli/doctor/understanding-mode-env.js +0 -98
- package/dist/cli/doctor/understanding-mode-env.js.map +0 -1
- package/dist/cli/dry-run.d.ts +0 -46
- package/dist/cli/dry-run.js +0 -250
- package/dist/cli/dry-run.js.map +0 -1
- package/dist/cli/event-input.d.ts +0 -28
- package/dist/cli/event-input.js +0 -73
- package/dist/cli/event-input.js.map +0 -1
- package/dist/cli/explain-action.d.ts +0 -20
- package/dist/cli/explain-action.js +0 -27
- package/dist/cli/explain-action.js.map +0 -1
- package/dist/cli/explain-policy.d.ts +0 -135
- package/dist/cli/explain-policy.js +0 -266
- package/dist/cli/explain-policy.js.map +0 -1
- package/dist/cli/explain.d.ts +0 -31
- package/dist/cli/explain.js +0 -159
- package/dist/cli/explain.js.map +0 -1
- package/dist/cli/gc/index.d.ts +0 -63
- package/dist/cli/gc/index.js +0 -566
- package/dist/cli/gc/index.js.map +0 -1
- package/dist/cli/pack/approve-escape.d.ts +0 -19
- package/dist/cli/pack/approve-escape.js +0 -190
- package/dist/cli/pack/approve-escape.js.map +0 -1
- package/dist/cli/pack/auto-approve-path.d.ts +0 -146
- package/dist/cli/pack/auto-approve-path.js +0 -462
- package/dist/cli/pack/auto-approve-path.js.map +0 -1
- package/dist/cli/pack/hook-codex-post-tool-use.d.ts +0 -25
- package/dist/cli/pack/hook-codex-post-tool-use.js +0 -160
- package/dist/cli/pack/hook-codex-post-tool-use.js.map +0 -1
- package/dist/cli/pack/hook-codex-pre-tool-use.d.ts +0 -48
- package/dist/cli/pack/hook-codex-pre-tool-use.js +0 -474
- package/dist/cli/pack/hook-codex-pre-tool-use.js.map +0 -1
- package/dist/cli/pack/hook-codex-stop.d.ts +0 -35
- package/dist/cli/pack/hook-codex-stop.js +0 -329
- package/dist/cli/pack/hook-codex-stop.js.map +0 -1
- package/dist/cli/pack/hook-codex-user-prompt-submit.d.ts +0 -24
- package/dist/cli/pack/hook-codex-user-prompt-submit.js +0 -93
- package/dist/cli/pack/hook-codex-user-prompt-submit.js.map +0 -1
- package/dist/cli/pack/hook-post-merge-gate-record.d.ts +0 -37
- package/dist/cli/pack/hook-post-merge-gate-record.js +0 -190
- package/dist/cli/pack/hook-post-merge-gate-record.js.map +0 -1
- package/dist/cli/pack/hook-post-merge-gate.d.ts +0 -34
- package/dist/cli/pack/hook-post-merge-gate.js +0 -277
- package/dist/cli/pack/hook-post-merge-gate.js.map +0 -1
- package/dist/cli/pack/hook-post-tool-use.d.ts +0 -45
- package/dist/cli/pack/hook-post-tool-use.js +0 -137
- package/dist/cli/pack/hook-post-tool-use.js.map +0 -1
- package/dist/cli/pack/hook-pre-tool-use.d.ts +0 -92
- package/dist/cli/pack/hook-pre-tool-use.js +0 -1328
- package/dist/cli/pack/hook-pre-tool-use.js.map +0 -1
- package/dist/cli/pack/hook-runtime-reality.d.ts +0 -63
- package/dist/cli/pack/hook-runtime-reality.js +0 -210
- package/dist/cli/pack/hook-runtime-reality.js.map +0 -1
- package/dist/cli/pack/hook-solution-acceptance-writeguard.d.ts +0 -32
- package/dist/cli/pack/hook-solution-acceptance-writeguard.js +0 -337
- package/dist/cli/pack/hook-solution-acceptance-writeguard.js.map +0 -1
- package/dist/cli/pack/hook-solution-acceptance.d.ts +0 -157
- package/dist/cli/pack/hook-solution-acceptance.js +0 -530
- package/dist/cli/pack/hook-solution-acceptance.js.map +0 -1
- package/dist/cli/pack/hook-stay-in-scope.d.ts +0 -37
- package/dist/cli/pack/hook-stay-in-scope.js +0 -128
- package/dist/cli/pack/hook-stay-in-scope.js.map +0 -1
- package/dist/cli/pack/hook-subagent-start.d.ts +0 -23
- package/dist/cli/pack/hook-subagent-start.js +0 -88
- package/dist/cli/pack/hook-subagent-start.js.map +0 -1
- package/dist/cli/pack/hook-subagent-stop.d.ts +0 -19
- package/dist/cli/pack/hook-subagent-stop.js +0 -41
- package/dist/cli/pack/hook-subagent-stop.js.map +0 -1
- package/dist/cli/pack/hook-track-active-claim.d.ts +0 -27
- package/dist/cli/pack/hook-track-active-claim.js +0 -275
- package/dist/cli/pack/hook-track-active-claim.js.map +0 -1
- package/dist/cli/pack/transcript-report-scan.d.ts +0 -71
- package/dist/cli/pack/transcript-report-scan.js +0 -359
- package/dist/cli/pack/transcript-report-scan.js.map +0 -1
- package/dist/cli/pack/understanding-report-schema-hint.d.ts +0 -26
- package/dist/cli/pack/understanding-report-schema-hint.js +0 -120
- package/dist/cli/pack/understanding-report-schema-hint.js.map +0 -1
- package/dist/cli/pack/upgrade.d.ts +0 -32
- package/dist/cli/pack/upgrade.js +0 -273
- package/dist/cli/pack/upgrade.js.map +0 -1
- package/dist/cli/pause/index.d.ts +0 -113
- package/dist/cli/pause/index.js +0 -251
- package/dist/cli/pause/index.js.map +0 -1
- package/dist/cli/pause-check.d.ts +0 -22
- package/dist/cli/pause-check.js +0 -54
- package/dist/cli/pause-check.js.map +0 -1
- package/dist/cli/policy/intercept.d.ts +0 -233
- package/dist/cli/policy/intercept.js +0 -1020
- package/dist/cli/policy/intercept.js.map +0 -1
- package/dist/cli/policy/risk-envelope-enrichment.d.ts +0 -40
- package/dist/cli/policy/risk-envelope-enrichment.js +0 -108
- package/dist/cli/policy/risk-envelope-enrichment.js.map +0 -1
- package/dist/cli/record/index.d.ts +0 -81
- package/dist/cli/record/index.js +0 -348
- package/dist/cli/record/index.js.map +0 -1
- package/dist/cli/resolve-env.d.ts +0 -32
- package/dist/cli/resolve-env.js +0 -47
- package/dist/cli/resolve-env.js.map +0 -1
- package/dist/cli/session-export/index.d.ts +0 -46
- package/dist/cli/session-export/index.js +0 -169
- package/dist/cli/session-export/index.js.map +0 -1
- package/dist/cli/session-export/redact.d.ts +0 -22
- package/dist/cli/session-export/redact.js +0 -47
- package/dist/cli/session-export/redact.js.map +0 -1
- package/dist/cli/session-export/transcript.d.ts +0 -24
- package/dist/cli/session-export/transcript.js +0 -164
- package/dist/cli/session-export/transcript.js.map +0 -1
- package/dist/cli/session-start/branch-check.d.ts +0 -18
- package/dist/cli/session-start/branch-check.js +0 -140
- package/dist/cli/session-start/branch-check.js.map +0 -1
- package/dist/cli/session-start/index.d.ts +0 -121
- package/dist/cli/session-start/index.js +0 -591
- package/dist/cli/session-start/index.js.map +0 -1
- package/dist/cli/session-start/shared-options.d.ts +0 -103
- package/dist/cli/session-start/shared-options.js +0 -107
- package/dist/cli/session-start/shared-options.js.map +0 -1
- package/dist/cli/session-start/stale-base-check.d.ts +0 -46
- package/dist/cli/session-start/stale-base-check.js +0 -352
- package/dist/cli/session-start/stale-base-check.js.map +0 -1
- package/dist/cli/session-start/toolchain-parity.d.ts +0 -267
- package/dist/cli/session-start/toolchain-parity.js +0 -797
- package/dist/cli/session-start/toolchain-parity.js.map +0 -1
- package/dist/cli/smoke/assertions.d.ts +0 -46
- package/dist/cli/smoke/assertions.js +0 -170
- package/dist/cli/smoke/assertions.js.map +0 -1
- package/dist/cli/smoke/index.d.ts +0 -76
- package/dist/cli/smoke/index.js +0 -245
- package/dist/cli/smoke/index.js.map +0 -1
- package/dist/cli/smoke/runner.d.ts +0 -55
- package/dist/cli/smoke/runner.js +0 -134
- package/dist/cli/smoke/runner.js.map +0 -1
- package/dist/cli/smoke/stream-parser.d.ts +0 -65
- package/dist/cli/smoke/stream-parser.js +0 -115
- package/dist/cli/smoke/stream-parser.js.map +0 -1
- package/dist/cli/test-risk.d.ts +0 -26
- package/dist/cli/test-risk.js +0 -34
- package/dist/cli/test-risk.js.map +0 -1
- package/dist/io/display-path.d.ts +0 -11
- package/dist/io/display-path.js +0 -29
- package/dist/io/display-path.js.map +0 -1
- package/dist/io/duration.d.ts +0 -5
- package/dist/io/duration.js +0 -50
- package/dist/io/duration.js.map +0 -1
- package/dist/io/extract.d.ts +0 -79
- package/dist/io/extract.js +0 -226
- package/dist/io/extract.js.map +0 -1
- package/dist/io/ledger-record.d.ts +0 -83
- package/dist/io/ledger-record.js +0 -301
- package/dist/io/ledger-record.js.map +0 -1
- package/dist/io/read-json-dir-entries.d.ts +0 -36
- package/dist/io/read-json-dir-entries.js +0 -48
- package/dist/io/read-json-dir-entries.js.map +0 -1
- package/dist/io/safe-json-parse.d.ts +0 -5
- package/dist/io/safe-json-parse.js +0 -21
- package/dist/io/safe-json-parse.js.map +0 -1
- package/dist/policies/index.d.ts +0 -5
- package/dist/policies/index.js +0 -6
- package/dist/policies/index.js.map +0 -1
- package/dist/policies/ledger-client.d.ts +0 -113
- package/dist/policies/ledger-client.js +0 -500
- package/dist/policies/ledger-client.js.map +0 -1
- package/dist/policies/producers.d.ts +0 -12
- package/dist/policies/producers.js +0 -61
- package/dist/policies/producers.js.map +0 -1
- package/dist/policies/requires.d.ts +0 -75
- package/dist/policies/requires.js +0 -240
- package/dist/policies/requires.js.map +0 -1
- package/dist/policies/timestamp.d.ts +0 -14
- package/dist/policies/timestamp.js +0 -36
- package/dist/policies/timestamp.js.map +0 -1
- package/dist/policy-packs/builtin/permission-profiles.d.ts +0 -11
- package/dist/policy-packs/builtin/permission-profiles.js +0 -74
- package/dist/policy-packs/builtin/permission-profiles.js.map +0 -1
- package/dist/policy-packs/builtin/post-merge-gate-runtime.d.ts +0 -286
- package/dist/policy-packs/builtin/post-merge-gate-runtime.js +0 -397
- package/dist/policy-packs/builtin/post-merge-gate-runtime.js.map +0 -1
- package/dist/policy-packs/builtin/post-merge-gate.d.ts +0 -56
- package/dist/policy-packs/builtin/post-merge-gate.js +0 -347
- package/dist/policy-packs/builtin/post-merge-gate.js.map +0 -1
- package/dist/policy-packs/builtin/solution-acceptance-reconnect.d.ts +0 -50
- package/dist/policy-packs/builtin/solution-acceptance-reconnect.js +0 -151
- package/dist/policy-packs/builtin/solution-acceptance-reconnect.js.map +0 -1
- package/dist/policy-packs/builtin/solution-acceptance-runtime.d.ts +0 -323
- package/dist/policy-packs/builtin/solution-acceptance-runtime.js +0 -672
- package/dist/policy-packs/builtin/solution-acceptance-runtime.js.map +0 -1
- package/dist/policy-packs/builtin/solution-acceptance.d.ts +0 -45
- package/dist/policy-packs/builtin/solution-acceptance.js +0 -226
- package/dist/policy-packs/builtin/solution-acceptance.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/active-claim.d.ts +0 -25
- package/dist/policy-packs/builtin/understanding-before-execution/active-claim.js +0 -94
- package/dist/policy-packs/builtin/understanding-before-execution/active-claim.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/auto-approve-default.d.ts +0 -35
- package/dist/policy-packs/builtin/understanding-before-execution/auto-approve-default.js +0 -86
- package/dist/policy-packs/builtin/understanding-before-execution/auto-approve-default.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/auto-approve.d.ts +0 -210
- package/dist/policy-packs/builtin/understanding-before-execution/auto-approve.js +0 -361
- package/dist/policy-packs/builtin/understanding-before-execution/auto-approve.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/delegation-markers.d.ts +0 -304
- package/dist/policy-packs/builtin/understanding-before-execution/delegation-markers.js +0 -734
- package/dist/policy-packs/builtin/understanding-before-execution/delegation-markers.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/expiry-reason.d.ts +0 -36
- package/dist/policy-packs/builtin/understanding-before-execution/expiry-reason.js +0 -73
- package/dist/policy-packs/builtin/understanding-before-execution/expiry-reason.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/index.d.ts +0 -19
- package/dist/policy-packs/builtin/understanding-before-execution/index.js +0 -83
- package/dist/policy-packs/builtin/understanding-before-execution/index.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/inflight-records.d.ts +0 -135
- package/dist/policy-packs/builtin/understanding-before-execution/inflight-records.js +0 -618
- package/dist/policy-packs/builtin/understanding-before-execution/inflight-records.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/ledger.d.ts +0 -25
- package/dist/policy-packs/builtin/understanding-before-execution/ledger.js +0 -56
- package/dist/policy-packs/builtin/understanding-before-execution/ledger.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/lifecycle.d.ts +0 -20
- package/dist/policy-packs/builtin/understanding-before-execution/lifecycle.js +0 -93
- package/dist/policy-packs/builtin/understanding-before-execution/lifecycle.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/markers.d.ts +0 -126
- package/dist/policy-packs/builtin/understanding-before-execution/markers.js +0 -245
- package/dist/policy-packs/builtin/understanding-before-execution/markers.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/measured-permission-modes.d.ts +0 -29
- package/dist/policy-packs/builtin/understanding-before-execution/measured-permission-modes.js +0 -82
- package/dist/policy-packs/builtin/understanding-before-execution/measured-permission-modes.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/permission-mode-observations.d.ts +0 -71
- package/dist/policy-packs/builtin/understanding-before-execution/permission-mode-observations.js +0 -175
- package/dist/policy-packs/builtin/understanding-before-execution/permission-mode-observations.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/persisted-reports.d.ts +0 -620
- package/dist/policy-packs/builtin/understanding-before-execution/persisted-reports.js +0 -1047
- package/dist/policy-packs/builtin/understanding-before-execution/persisted-reports.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/post-tool-use-boundary.d.ts +0 -128
- package/dist/policy-packs/builtin/understanding-before-execution/post-tool-use-boundary.js +0 -213
- package/dist/policy-packs/builtin/understanding-before-execution/post-tool-use-boundary.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/stay-in-scope-config.d.ts +0 -129
- package/dist/policy-packs/builtin/understanding-before-execution/stay-in-scope-config.js +0 -166
- package/dist/policy-packs/builtin/understanding-before-execution/stay-in-scope-config.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/task-markers.d.ts +0 -164
- package/dist/policy-packs/builtin/understanding-before-execution/task-markers.js +0 -275
- package/dist/policy-packs/builtin/understanding-before-execution/task-markers.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution-runtime.d.ts +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution-runtime.js +0 -10
- package/dist/policy-packs/builtin/understanding-before-execution-runtime.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution.d.ts +0 -526
- package/dist/policy-packs/builtin/understanding-before-execution.js +0 -1074
- package/dist/policy-packs/builtin/understanding-before-execution.js.map +0 -1
- package/dist/policy-packs/permission-translator.d.ts +0 -9
- package/dist/policy-packs/permission-translator.js +0 -76
- package/dist/policy-packs/permission-translator.js.map +0 -1
- package/dist/runtime/action-envelope.d.ts +0 -64
- package/dist/runtime/action-envelope.js +0 -46
- package/dist/runtime/action-envelope.js.map +0 -1
- package/dist/runtime/approval-signing.d.ts +0 -111
- package/dist/runtime/approval-signing.js +0 -384
- package/dist/runtime/approval-signing.js.map +0 -1
- package/dist/runtime/bash-match-facts.d.ts +0 -60
- package/dist/runtime/bash-match-facts.js +0 -196
- package/dist/runtime/bash-match-facts.js.map +0 -1
- package/dist/runtime/bash-match-registry.d.ts +0 -112
- package/dist/runtime/bash-match-registry.js +0 -406
- package/dist/runtime/bash-match-registry.js.map +0 -1
- package/dist/runtime/bash-prefix-parse.d.ts +0 -31
- package/dist/runtime/bash-prefix-parse.js +0 -576
- package/dist/runtime/bash-prefix-parse.js.map +0 -1
- package/dist/runtime/command-normalize.d.ts +0 -658
- package/dist/runtime/command-normalize.js +0 -2410
- package/dist/runtime/command-normalize.js.map +0 -1
- package/dist/runtime/deletion-target-resolve.d.ts +0 -28
- package/dist/runtime/deletion-target-resolve.js +0 -1078
- package/dist/runtime/deletion-target-resolve.js.map +0 -1
- package/dist/runtime/destructive-shell-floor.d.ts +0 -19
- package/dist/runtime/destructive-shell-floor.js +0 -611
- package/dist/runtime/destructive-shell-floor.js.map +0 -1
- package/dist/runtime/environment-resolver.d.ts +0 -36
- package/dist/runtime/environment-resolver.js +0 -138
- package/dist/runtime/environment-resolver.js.map +0 -1
- package/dist/runtime/git-context.d.ts +0 -201
- package/dist/runtime/git-context.js +0 -422
- package/dist/runtime/git-context.js.map +0 -1
- package/dist/runtime/index.d.ts +0 -12
- package/dist/runtime/index.js +0 -13
- package/dist/runtime/index.js.map +0 -1
- package/dist/runtime/intercept.d.ts +0 -494
- package/dist/runtime/intercept.js +0 -1313
- package/dist/runtime/intercept.js.map +0 -1
- package/dist/runtime/kube-context.d.ts +0 -16
- package/dist/runtime/kube-context.js +0 -63
- package/dist/runtime/kube-context.js.map +0 -1
- package/dist/runtime/kubectl-target-parse.d.ts +0 -31
- package/dist/runtime/kubectl-target-parse.js +0 -249
- package/dist/runtime/kubectl-target-parse.js.map +0 -1
- package/dist/runtime/ledger-add.d.ts +0 -16
- package/dist/runtime/ledger-add.js +0 -150
- package/dist/runtime/ledger-add.js.map +0 -1
- package/dist/runtime/ledger-writer.d.ts +0 -27
- package/dist/runtime/ledger-writer.js +0 -46
- package/dist/runtime/ledger-writer.js.map +0 -1
- package/dist/runtime/pause-sentinel.d.ts +0 -60
- package/dist/runtime/pause-sentinel.js +0 -156
- package/dist/runtime/pause-sentinel.js.map +0 -1
- package/dist/runtime/pending-approval.d.ts +0 -23
- package/dist/runtime/pending-approval.js +0 -67
- package/dist/runtime/pending-approval.js.map +0 -1
- package/dist/runtime/read-only-bash.d.ts +0 -141
- package/dist/runtime/read-only-bash.js +0 -2204
- package/dist/runtime/read-only-bash.js.map +0 -1
- package/dist/runtime/recovery-git-commit.d.ts +0 -22
- package/dist/runtime/recovery-git-commit.js +0 -284
- package/dist/runtime/recovery-git-commit.js.map +0 -1
- package/dist/runtime/reject-malformed-session-id.d.ts +0 -8
- package/dist/runtime/reject-malformed-session-id.js +0 -16
- package/dist/runtime/reject-malformed-session-id.js.map +0 -1
- package/dist/runtime/risk-classifier.d.ts +0 -38
- package/dist/runtime/risk-classifier.js +0 -311
- package/dist/runtime/risk-classifier.js.map +0 -1
- package/dist/runtime/session-id.d.ts +0 -113
- package/dist/runtime/session-id.js +0 -193
- package/dist/runtime/session-id.js.map +0 -1
- package/dist/runtime/shell-word.d.ts +0 -62
- package/dist/runtime/shell-word.js +0 -410
- package/dist/runtime/shell-word.js.map +0 -1
- package/dist/runtime/task-providers/agent-tasks.d.ts +0 -103
- package/dist/runtime/task-providers/agent-tasks.js +0 -245
- package/dist/runtime/task-providers/agent-tasks.js.map +0 -1
- package/dist/runtime/when-eval.d.ts +0 -62
- package/dist/runtime/when-eval.js +0 -212
- package/dist/runtime/when-eval.js.map +0 -1
- package/dist/runtime/workflow-policies.d.ts +0 -207
- package/dist/runtime/workflow-policies.js +0 -596
- package/dist/runtime/workflow-policies.js.map +0 -1
- package/dist/schema/audit.d.ts +0 -71
- package/dist/schema/audit.js +0 -32
- package/dist/schema/audit.js.map +0 -1
- package/dist/schema/doctor.d.ts +0 -25
- package/dist/schema/doctor.js +0 -23
- package/dist/schema/doctor.js.map +0 -1
- package/dist/schema/environments.d.ts +0 -215
- package/dist/schema/environments.js +0 -101
- package/dist/schema/environments.js.map +0 -1
- package/dist/schema/extract.d.ts +0 -9
- package/dist/schema/extract.js +0 -86
- package/dist/schema/extract.js.map +0 -1
- package/dist/schema/permission-profiles.d.ts +0 -2292
- package/dist/schema/permission-profiles.js +0 -60
- package/dist/schema/permission-profiles.js.map +0 -1
- package/dist/schema/policies.d.ts +0 -974
- package/dist/schema/policies.js +0 -298
- package/dist/schema/policies.js.map +0 -1
- package/dist/schema/requires.d.ts +0 -131
- package/dist/schema/requires.js +0 -88
- package/dist/schema/requires.js.map +0 -1
- package/dist/schema/risk.d.ts +0 -144
- package/dist/schema/risk.js +0 -194
- package/dist/schema/risk.js.map +0 -1
- package/dist/schema/session-start-preflight.d.ts +0 -10
- package/dist/schema/session-start-preflight.js +0 -106
- package/dist/schema/session-start-preflight.js.map +0 -1
- package/dist/schema/stale-base-check.d.ts +0 -18
- package/dist/schema/stale-base-check.js +0 -37
- package/dist/schema/stale-base-check.js.map +0 -1
- package/dist/schema/toolchain-parity.d.ts +0 -21
- package/dist/schema/toolchain-parity.js +0 -48
- package/dist/schema/toolchain-parity.js.map +0 -1
- package/dist/schema/workflows.d.ts +0 -519
- package/dist/schema/workflows.js +0 -81
- package/dist/schema/workflows.js.map +0 -1
- package/scripts/runtime-reality-docker-probe.mjs +0 -71
package/dist/cli/gc/index.d.ts
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { type LoaderOptions } from "../loader.js";
|
|
2
|
-
export declare const DEFAULT_RETENTION_DAYS = 30;
|
|
3
|
-
export interface GcOptions extends LoaderOptions {
|
|
4
|
-
/** Artifacts older than this many days are candidates. Default 30. */
|
|
5
|
-
retentionDays?: number;
|
|
6
|
-
/** Delete when true; pure listing otherwise (the default). */
|
|
7
|
-
apply?: boolean;
|
|
8
|
-
/** Test seam: reports directory (default: env / manifest-anchored). */
|
|
9
|
-
reportsDir?: string;
|
|
10
|
-
/** Test seam: harness.generated directory (default: manifest-anchored). */
|
|
11
|
-
generatedDir?: string;
|
|
12
|
-
/** Test seam: clock anchor. */
|
|
13
|
-
now?: Date;
|
|
14
|
-
}
|
|
15
|
-
export type GcCategory = "report" | "parse-error" | "approval-marker" | "delegation" | "permission-mode-observation" | "in-flight-record";
|
|
16
|
-
export interface GcCandidate {
|
|
17
|
-
filePath: string;
|
|
18
|
-
category: GcCategory;
|
|
19
|
-
/** Why this file aged out (status + age), for the listing UI. */
|
|
20
|
-
reason: string;
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* A file gc could not read or parse (a delegation or in-flight record, or a
|
|
24
|
-
* report entry that is oversized, not a regular file or unreadable): reported,
|
|
25
|
-
* never a deletion candidate.
|
|
26
|
-
*/
|
|
27
|
-
export interface GcUnparseable {
|
|
28
|
-
filePath: string;
|
|
29
|
-
category: GcCategory;
|
|
30
|
-
reason: string;
|
|
31
|
-
}
|
|
32
|
-
export interface GcResult {
|
|
33
|
-
retentionDays: number;
|
|
34
|
-
cutoffIso: string;
|
|
35
|
-
reportsDir: string;
|
|
36
|
-
/**
|
|
37
|
-
* null when the parse-errors sweep was skipped because `reportsDir`
|
|
38
|
-
* does not have the conventional `.understanding-gate/reports` shape
|
|
39
|
-
* (a custom `UNDERSTANDING_GATE_REPORT_DIR` pointing elsewhere would
|
|
40
|
-
* otherwise make "the sibling named parse-errors" an unrelated
|
|
41
|
-
* directory and gc would age out a stranger's files).
|
|
42
|
-
*/
|
|
43
|
-
parseErrorsDir: string | null;
|
|
44
|
-
approvalsDir: string;
|
|
45
|
-
delegationsDir: string;
|
|
46
|
-
adoptionLedgerDir: string;
|
|
47
|
-
permissionModeObservationsDir: string;
|
|
48
|
-
inflightRecordsDir: string;
|
|
49
|
-
candidates: GcCandidate[];
|
|
50
|
-
/** Files inspected but left in place because they could not be read or parsed (delegations, in-flight records, unreadable report entries). */
|
|
51
|
-
unparseable: GcUnparseable[];
|
|
52
|
-
/** Files actually deleted (apply mode only). */
|
|
53
|
-
removed: string[];
|
|
54
|
-
/** Per-file deletion failures (apply mode only); never silent. */
|
|
55
|
-
failures: Array<{
|
|
56
|
-
filePath: string;
|
|
57
|
-
reason: string;
|
|
58
|
-
}>;
|
|
59
|
-
/** Count of artifacts inspected but kept (fresh, non-terminal, or unparseable). */
|
|
60
|
-
keptCount: number;
|
|
61
|
-
applied: boolean;
|
|
62
|
-
}
|
|
63
|
-
export declare function gc(opts?: GcOptions): GcResult;
|
package/dist/cli/gc/index.js
DELETED
|
@@ -1,566 +0,0 @@
|
|
|
1
|
-
// `harness gc` — retention-based cleanup of harness-owned gate state.
|
|
2
|
-
//
|
|
3
|
-
// Nothing else ever deletes terminal understanding-gate reports,
|
|
4
|
-
// parse-error logs, or approval markers of long-dead sessions, so the
|
|
5
|
-
// state dirs grow unbounded (harness-discovery M3; 103 report files
|
|
6
|
-
// accumulated in under a month on the originating install). Stale
|
|
7
|
-
// pending reports were also the raw material of the C1 stale-adoption
|
|
8
|
-
// bug, but pending state is deliberately NOT touched here: only
|
|
9
|
-
// artifacts in a terminal status age out.
|
|
10
|
-
//
|
|
11
|
-
// Safety posture (mirrors `uninstall` / `migrate-home`):
|
|
12
|
-
// - Dry-run by default; `--apply` commits.
|
|
13
|
-
// - Only enumerated, harness-owned locations are considered:
|
|
14
|
-
// <reportsDir> terminal-status reports (approved / expired)
|
|
15
|
-
// <reportsDir>/../parse-errors parse-error logs
|
|
16
|
-
// <generatedDir>/.approvals session / task / branch-protection markers
|
|
17
|
-
// <generatedDir>/.delegations signed delegation markers (slice 3)
|
|
18
|
-
// <generatedDir>/.delegation-adoptions once-per-session adoption ledgers
|
|
19
|
-
// <generatedDir>/.permission-mode-observations per-session PreToolUse
|
|
20
|
-
// permission_mode observations (task 8f637efd)
|
|
21
|
-
// <generatedDir>/.inflight signed in-flight subagent records (subagent-gate slice 1)
|
|
22
|
-
// The evidence ledger (grounding-mcp) and solution-acceptance
|
|
23
|
-
// verdict dirs (producer-owned) are out of scope by design.
|
|
24
|
-
// - Deletion failures are surfaced loudly per file, never swallowed.
|
|
25
|
-
//
|
|
26
|
-
// DELEGATIONS SWEEP (task 3ece079d, follow-up from UG auto-mode slice 3,
|
|
27
|
-
// agent-tasks 37ad0b05): a delegation marker is refused once expired
|
|
28
|
-
// (`verifyDelegation`'s "expired" reason), but nothing ever removed the
|
|
29
|
-
// FILE, so `.delegations/` grows the same way `.approvals/` used to. The
|
|
30
|
-
// adoption ledger at `.delegation-adoptions/<sid>` is worse: it is
|
|
31
|
-
// appended to once per captured transcript entry and never cleared at
|
|
32
|
-
// all, delegation expiry or not. Both sweep under one `"delegation"`
|
|
33
|
-
// category, on the SAME retention/grace window as everything else in this
|
|
34
|
-
// file (`retentionDays` / `cutoffMs`): a delegation marker is a candidate
|
|
35
|
-
// once its own `expires` segment (read via `parseDelegationApprovedBy`,
|
|
36
|
-
// no signature check needed for a retention decision) is older than
|
|
37
|
-
// `cutoffMs`, and its ledger sibling is a candidate once the marker for
|
|
38
|
-
// that session id is gone or itself a candidate. A marker whose content
|
|
39
|
-
// cannot be parsed is never a deletion candidate (fail closed, same as a
|
|
40
|
-
// pending report): it is surfaced separately in `GcResult.unparseable` so
|
|
41
|
-
// an operator can see it, but `--apply` never touches it, and its ledger
|
|
42
|
-
// sibling (if any) stays too, since "this delegation is dead" cannot be
|
|
43
|
-
// established for one gc cannot read.
|
|
44
|
-
//
|
|
45
|
-
// IN-FLIGHT RECORDS SWEEP (subagent-gate slice 1): a record's SIGNED
|
|
46
|
-
// `approvedAt` decides staleness (never the unsigned `startedAt`
|
|
47
|
-
// convenience copy — gc does not verify signatures, so it must not let
|
|
48
|
-
// an editable field decide), on a FIXED 24h window
|
|
49
|
-
// (`DEFAULT_INFLIGHT_STALE_AFTER_MS`) plus a small future-skew
|
|
50
|
-
// tolerance, independent of `--retention-days` — the same "the marker's
|
|
51
|
-
// own signed timestamp decides, not gc's generic cutoff" shape the
|
|
52
|
-
// delegation sweep already uses for `expires`, but a record has no
|
|
53
|
-
// operator-chosen lifetime to honour, so gc does not let
|
|
54
|
-
// `--retention-days` extend or shrink it. `verifyInflightRecord` itself
|
|
55
|
-
// exposes a `staleAfterMs` override, but that is a test seam only — no
|
|
56
|
-
// production caller passes it, so this sweep's window is, in practice,
|
|
57
|
-
// as fixed as the runtime gate's own. A record gc cannot parse is
|
|
58
|
-
// never a deletion candidate (same fail-closed posture as an
|
|
59
|
-
// unparseable delegation): it is surfaced in `GcResult.unparseable`
|
|
60
|
-
// instead. Deleting a session's last record also removes that now-empty
|
|
61
|
-
// session directory, best effort, mirroring `clearInflightRecord`.
|
|
62
|
-
//
|
|
63
|
-
// PERMISSION-MODE OBSERVATIONS SWEEP (task 8f637efd review round 2 F5):
|
|
64
|
-
// `.permission-mode-observations/` (one small per-session file, see
|
|
65
|
-
// permission-mode-observations.ts) grows the same way `.approvals/` and
|
|
66
|
-
// `.delegations/` do (nothing else ever removes an entry), and gc had
|
|
67
|
-
// not been taught about it. Swept under its own `"permission-mode-
|
|
68
|
-
// observation"` category by mtime, same `staleFilesByMtime` helper and
|
|
69
|
-
// `retentionDays` window every mtime-aged category here already uses (no
|
|
70
|
-
// signed `expires` to key off, unlike the delegation sweep: this is a
|
|
71
|
-
// plain observation record, not an approval artifact).
|
|
72
|
-
import * as fs from "node:fs";
|
|
73
|
-
import * as path from "node:path";
|
|
74
|
-
import { readRegularFileRejectingSymlink } from "../../io/read-regular-file.js";
|
|
75
|
-
import { escapeForDisplay } from "../../io/display-path.js";
|
|
76
|
-
import { safeJsonParse } from "../../io/safe-json-parse.js";
|
|
77
|
-
import { ADOPTION_LEDGER_DIRNAME, APPROVAL_MARKER_DIRNAME, DEFAULT_INFLIGHT_STALE_AFTER_MS, DELEGATION_MARKER_DIRNAME, INFLIGHT_RECORD_DIRNAME, PERMISSION_MODE_OBSERVATION_DIRNAME, defaultReportsDir, listPersistedReportsBoundedWithSkips, parseDelegationApprovedBy, rejectMalformedAgentId, } from "../../policy-packs/builtin/understanding-before-execution-runtime.js";
|
|
78
|
-
import { resolveGeneratedDir } from "../../runtime/pending-approval.js";
|
|
79
|
-
import { rejectMalformedSessionId } from "../../runtime/reject-malformed-session-id.js";
|
|
80
|
-
import { resolvePaths } from "../loader.js";
|
|
81
|
-
export const DEFAULT_RETENTION_DAYS = 30;
|
|
82
|
-
// Same literal `harness approve understanding` uses for its parse-error
|
|
83
|
-
// diagnostics lookup (approve/understanding.ts).
|
|
84
|
-
const PARSE_ERRORS_DIRNAME = "parse-errors";
|
|
85
|
-
function ageDays(nowMs, thenMs) {
|
|
86
|
-
return Math.round((nowMs - thenMs) / 86_400_000);
|
|
87
|
-
}
|
|
88
|
-
/** Plain files in `dir` whose mtime is older than `cutoffMs`. */
|
|
89
|
-
function staleFilesByMtime(dir, cutoffMs, nowMs, category) {
|
|
90
|
-
let dirStat;
|
|
91
|
-
try {
|
|
92
|
-
dirStat = fs.lstatSync(dir);
|
|
93
|
-
}
|
|
94
|
-
catch {
|
|
95
|
-
return { candidates: [], kept: 0 };
|
|
96
|
-
}
|
|
97
|
-
if (!dirStat.isDirectory())
|
|
98
|
-
return { candidates: [], kept: 0 };
|
|
99
|
-
let names;
|
|
100
|
-
try {
|
|
101
|
-
names = fs.readdirSync(dir);
|
|
102
|
-
}
|
|
103
|
-
catch {
|
|
104
|
-
return { candidates: [], kept: 0 };
|
|
105
|
-
}
|
|
106
|
-
const candidates = [];
|
|
107
|
-
let kept = 0;
|
|
108
|
-
for (const name of names) {
|
|
109
|
-
const full = path.join(dir, name);
|
|
110
|
-
let stat;
|
|
111
|
-
try {
|
|
112
|
-
stat = fs.statSync(full);
|
|
113
|
-
}
|
|
114
|
-
catch {
|
|
115
|
-
continue;
|
|
116
|
-
}
|
|
117
|
-
if (!stat.isFile()) {
|
|
118
|
-
kept += 1;
|
|
119
|
-
continue;
|
|
120
|
-
}
|
|
121
|
-
if (stat.mtimeMs < cutoffMs) {
|
|
122
|
-
candidates.push({
|
|
123
|
-
filePath: full,
|
|
124
|
-
category,
|
|
125
|
-
reason: `${ageDays(nowMs, stat.mtimeMs)}d old (mtime)`,
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
else {
|
|
129
|
-
kept += 1;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
return { candidates, kept };
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* A delegation filename is always a session id (mirrors
|
|
136
|
-
* `doctor/ug-delegations.ts`'s own filter and rationale): filtering on
|
|
137
|
-
* this shape before reading keeps filesystem debris that happens to sit
|
|
138
|
-
* next to `.delegations/` or `.delegation-adoptions/` (macOS's
|
|
139
|
-
* `.DS_Store`, a stray dotfile) from ever becoming an "unparseable"
|
|
140
|
-
* candidate gc reports on. Not shared code with that module (see its own
|
|
141
|
-
* header for why); `check:duplication` is the backstop if that stops
|
|
142
|
-
* being a coincidence.
|
|
143
|
-
*/
|
|
144
|
-
const SESSION_ID_BASENAME_RE = /^[A-Za-z0-9][A-Za-z0-9_-]*$/;
|
|
145
|
-
/**
|
|
146
|
-
* Shared preamble every gc status reader below stands on: read a
|
|
147
|
-
* candidate file (rejecting a symlink the same way every marker read in
|
|
148
|
-
* this pack does) and parse it as a JSON object. Both the delegation and
|
|
149
|
-
* in-flight-record readers apply their own, artifact-specific
|
|
150
|
-
* classification on top of this; a file that fails here is `unparseable`
|
|
151
|
-
* to both, uniformly, before either ever looks at its fields.
|
|
152
|
-
*/
|
|
153
|
-
function readJsonRecordOrUnparseable(filePath) {
|
|
154
|
-
const read = readRegularFileRejectingSymlink(filePath);
|
|
155
|
-
if (read.kind !== "ok") {
|
|
156
|
-
return { ok: false, reason: `could not read ${escapeForDisplay(filePath)} (${read.kind})` };
|
|
157
|
-
}
|
|
158
|
-
const parsed = safeJsonParse(read.content);
|
|
159
|
-
if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
160
|
-
return { ok: false, reason: "not a JSON object" };
|
|
161
|
-
}
|
|
162
|
-
return { ok: true, body: parsed };
|
|
163
|
-
}
|
|
164
|
-
/**
|
|
165
|
-
* Read a `.delegations/<sid>` marker and classify it against `cutoffMs`,
|
|
166
|
-
* WITHOUT verifying its signature: gc is deciding whether to delete a
|
|
167
|
-
* file, not whether to trust it as an approval, and `parseDelegationApprovedBy`
|
|
168
|
-
* is the same reader `harness doctor`'s delegations metric uses read-only.
|
|
169
|
-
* Any failure to read the file, parse it as JSON, or parse its
|
|
170
|
-
* `approvedBy`/`expires` segment is `unparseable`, never `expired`: a
|
|
171
|
-
* marker gc cannot understand is never deleted (mutation probe M2).
|
|
172
|
-
*/
|
|
173
|
-
function readDelegationStatus(filePath, cutoffMs, nowMs) {
|
|
174
|
-
const read = readJsonRecordOrUnparseable(filePath);
|
|
175
|
-
if (!read.ok) {
|
|
176
|
-
return { kind: "unparseable", reason: read.reason };
|
|
177
|
-
}
|
|
178
|
-
const segments = parseDelegationApprovedBy(read.body["approvedBy"]);
|
|
179
|
-
if (!segments.ok) {
|
|
180
|
-
return { kind: "unparseable", reason: escapeForDisplay(segments.reason) };
|
|
181
|
-
}
|
|
182
|
-
const expiresMs = Date.parse(segments.value.expiresAt);
|
|
183
|
-
if (!Number.isFinite(expiresMs)) {
|
|
184
|
-
return {
|
|
185
|
-
kind: "unparseable",
|
|
186
|
-
reason: `expires segment is not a valid instant: ${escapeForDisplay(segments.value.expiresAt)}`,
|
|
187
|
-
};
|
|
188
|
-
}
|
|
189
|
-
// The expiry comparison itself: mutation probe M1 skips this and treats
|
|
190
|
-
// every parseable marker as expired, which flips a "valid delegation is
|
|
191
|
-
// kept" test red.
|
|
192
|
-
if (expiresMs < cutoffMs) {
|
|
193
|
-
return {
|
|
194
|
-
kind: "expired",
|
|
195
|
-
reason: `expired ${ageDays(nowMs, expiresMs)}d ago (past the ${ageDays(nowMs, cutoffMs)}d grace)`,
|
|
196
|
-
};
|
|
197
|
-
}
|
|
198
|
-
return { kind: "valid" };
|
|
199
|
-
}
|
|
200
|
-
/**
|
|
201
|
-
* Sweep `.delegations/` (expired markers) and `.delegation-adoptions/`
|
|
202
|
-
* (ledgers orphaned once their marker is gone or expired). One shared
|
|
203
|
-
* category (`"delegation"`), mirroring the approval-marker sweep's
|
|
204
|
-
* dry-run/candidate/kept shape but keyed off the marker's OWN `expires`
|
|
205
|
-
* segment instead of file mtime, since a delegation's age on disk and its
|
|
206
|
-
* validity window are two different things.
|
|
207
|
-
*/
|
|
208
|
-
function sweepDelegations(generatedDir, cutoffMs, nowMs) {
|
|
209
|
-
const delegationsDir = path.join(generatedDir, DELEGATION_MARKER_DIRNAME);
|
|
210
|
-
const ledgerDir = path.join(generatedDir, ADOPTION_LEDGER_DIRNAME);
|
|
211
|
-
const candidates = [];
|
|
212
|
-
const unparseable = [];
|
|
213
|
-
let kept = 0;
|
|
214
|
-
// Session id -> status, for every delegation marker actually present
|
|
215
|
-
// and session-id-shaped, so the ledger pass below can tell "expired"
|
|
216
|
-
// from "absent" from "still valid" without re-reading the file.
|
|
217
|
-
const statusBySessionId = new Map();
|
|
218
|
-
const readRootNames = (dir) => {
|
|
219
|
-
let dirStat;
|
|
220
|
-
try {
|
|
221
|
-
dirStat = fs.lstatSync(dir);
|
|
222
|
-
}
|
|
223
|
-
catch {
|
|
224
|
-
return [];
|
|
225
|
-
}
|
|
226
|
-
if (!dirStat.isDirectory())
|
|
227
|
-
return [];
|
|
228
|
-
try {
|
|
229
|
-
return fs.readdirSync(dir);
|
|
230
|
-
}
|
|
231
|
-
catch {
|
|
232
|
-
return [];
|
|
233
|
-
}
|
|
234
|
-
};
|
|
235
|
-
const delegationNames = readRootNames(delegationsDir);
|
|
236
|
-
for (const name of delegationNames) {
|
|
237
|
-
if (!SESSION_ID_BASENAME_RE.test(name))
|
|
238
|
-
continue;
|
|
239
|
-
const full = path.join(delegationsDir, name);
|
|
240
|
-
const status = readDelegationStatus(full, cutoffMs, nowMs);
|
|
241
|
-
statusBySessionId.set(name, status);
|
|
242
|
-
if (status.kind === "expired") {
|
|
243
|
-
candidates.push({ filePath: full, category: "delegation", reason: status.reason });
|
|
244
|
-
}
|
|
245
|
-
else if (status.kind === "unparseable") {
|
|
246
|
-
unparseable.push({ filePath: full, category: "delegation", reason: status.reason });
|
|
247
|
-
kept += 1;
|
|
248
|
-
}
|
|
249
|
-
else {
|
|
250
|
-
kept += 1;
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
const ledgerNames = readRootNames(ledgerDir);
|
|
254
|
-
for (const name of ledgerNames) {
|
|
255
|
-
if (!SESSION_ID_BASENAME_RE.test(name))
|
|
256
|
-
continue;
|
|
257
|
-
const full = path.join(ledgerDir, name);
|
|
258
|
-
let stat;
|
|
259
|
-
try {
|
|
260
|
-
stat = fs.statSync(full);
|
|
261
|
-
}
|
|
262
|
-
catch {
|
|
263
|
-
continue;
|
|
264
|
-
}
|
|
265
|
-
if (!stat.isFile()) {
|
|
266
|
-
kept += 1;
|
|
267
|
-
continue;
|
|
268
|
-
}
|
|
269
|
-
const status = statusBySessionId.get(name);
|
|
270
|
-
if (status === undefined) {
|
|
271
|
-
// No marker for this session id at all: only a candidate once the
|
|
272
|
-
// LEDGER's own age clears the cutoff. Without this check a ledger
|
|
273
|
-
// written seconds ago (its marker legitimately not written yet, or
|
|
274
|
-
// already cleaned up by something else) would be swept regardless
|
|
275
|
-
// of age, contradicting the "older than the retention window"
|
|
276
|
-
// posture documented on the command and the listing header; it
|
|
277
|
-
// also closes the TOCTOU window between the two readdir calls
|
|
278
|
-
// above, since a ledger written between them is newer than cutoff.
|
|
279
|
-
if (stat.mtimeMs < cutoffMs) {
|
|
280
|
-
candidates.push({
|
|
281
|
-
filePath: full,
|
|
282
|
-
category: "delegation",
|
|
283
|
-
reason: "orphaned adoption ledger (no delegation marker for this session)",
|
|
284
|
-
});
|
|
285
|
-
}
|
|
286
|
-
else {
|
|
287
|
-
kept += 1;
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
else if (status.kind === "expired") {
|
|
291
|
-
candidates.push({
|
|
292
|
-
filePath: full,
|
|
293
|
-
category: "delegation",
|
|
294
|
-
reason: `orphaned adoption ledger (delegation ${status.reason})`,
|
|
295
|
-
});
|
|
296
|
-
}
|
|
297
|
-
else {
|
|
298
|
-
// Marker still valid, or unparseable (gc cannot prove it is dead):
|
|
299
|
-
// keep the ledger either way, same fail-closed posture as the
|
|
300
|
-
// marker itself.
|
|
301
|
-
kept += 1;
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
return { candidates, unparseable, kept };
|
|
305
|
-
}
|
|
306
|
-
/**
|
|
307
|
-
* Clock-skew tolerance for a record's `approvedAt`, mirroring
|
|
308
|
-
* `verifyInflightRecord`'s own tolerance in inflight-records.ts (not
|
|
309
|
-
* re-exported through the pack barrel, so this stays a small duplicated
|
|
310
|
-
* literal rather than a cross-file import): a record dated further in
|
|
311
|
-
* the future than this is treated the same as an aged one, a candidate
|
|
312
|
-
* for the sweep, since gc does not distinguish "clock skew" from
|
|
313
|
-
* "genuinely old" — it only asks "is this instant far from now".
|
|
314
|
-
*/
|
|
315
|
-
const INFLIGHT_FUTURE_SKEW_MS = 5 * 60 * 1000;
|
|
316
|
-
/**
|
|
317
|
-
* Read a `.inflight/<sessionId>/<agentId>` record and classify it
|
|
318
|
-
* against the FIXED staleness window, without verifying its signature
|
|
319
|
-
* — mirrors `readDelegationStatus`'s own "gc decides deletion, not
|
|
320
|
-
* trust" posture. Reads the SIGNED `approvedAt` field, never the
|
|
321
|
-
* unsigned `startedAt` convenience copy: gc does not check the
|
|
322
|
-
* signature, so it must not let an editable, unsigned field decide
|
|
323
|
-
* whether a record looks fresh.
|
|
324
|
-
*/
|
|
325
|
-
function readInflightRecordStatus(filePath, nowMs) {
|
|
326
|
-
const read = readJsonRecordOrUnparseable(filePath);
|
|
327
|
-
if (!read.ok) {
|
|
328
|
-
return { kind: "unparseable", reason: read.reason };
|
|
329
|
-
}
|
|
330
|
-
const approvedAtRaw = read.body["approvedAt"];
|
|
331
|
-
if (typeof approvedAtRaw !== "string") {
|
|
332
|
-
return { kind: "unparseable", reason: "missing approvedAt" };
|
|
333
|
-
}
|
|
334
|
-
const approvedAtMs = Date.parse(approvedAtRaw);
|
|
335
|
-
if (!Number.isFinite(approvedAtMs)) {
|
|
336
|
-
return {
|
|
337
|
-
kind: "unparseable",
|
|
338
|
-
reason: `approvedAt is not a valid instant: ${escapeForDisplay(approvedAtRaw)}`,
|
|
339
|
-
};
|
|
340
|
-
}
|
|
341
|
-
if (nowMs - approvedAtMs > DEFAULT_INFLIGHT_STALE_AFTER_MS) {
|
|
342
|
-
return {
|
|
343
|
-
kind: "stale",
|
|
344
|
-
reason: `approved ${ageDays(nowMs, approvedAtMs)}d ago (past the 24h in-flight window)`,
|
|
345
|
-
};
|
|
346
|
-
}
|
|
347
|
-
if (approvedAtMs - nowMs > INFLIGHT_FUTURE_SKEW_MS) {
|
|
348
|
-
return {
|
|
349
|
-
kind: "stale",
|
|
350
|
-
reason: `approved at ${escapeForDisplay(approvedAtRaw)}, more than ${INFLIGHT_FUTURE_SKEW_MS / 60_000} minutes in the future`,
|
|
351
|
-
};
|
|
352
|
-
}
|
|
353
|
-
return { kind: "fresh" };
|
|
354
|
-
}
|
|
355
|
-
/**
|
|
356
|
-
* Sweep `.inflight/<sessionId>/<agentId>` (stale records, fixed 24h
|
|
357
|
-
* window). One category (`"in-flight-record"`), keyed off the record's
|
|
358
|
-
* own `approvedAt` rather than gc's general `cutoffMs`/mtime — see the
|
|
359
|
-
* module header for why this window is not `--retention-days`-tunable.
|
|
360
|
-
* Applies the SAME id-shape predicates `listInflightRecords` uses
|
|
361
|
-
* (`rejectMalformedSessionId`/`rejectMalformedAgentId`, imported rather
|
|
362
|
-
* than gc's own looser `SESSION_ID_BASENAME_RE`) so this sweep and that
|
|
363
|
-
* listing never disagree about what counts as a session directory or an
|
|
364
|
-
* agent record — a symlinked or non-directory session entry, or an
|
|
365
|
-
* agent basename outside the allowlist, is skipped by both, not just
|
|
366
|
-
* one.
|
|
367
|
-
*/
|
|
368
|
-
function sweepInflightRecords(generatedDir, nowMs) {
|
|
369
|
-
const inflightDir = path.join(generatedDir, INFLIGHT_RECORD_DIRNAME);
|
|
370
|
-
const candidates = [];
|
|
371
|
-
const unparseable = [];
|
|
372
|
-
let kept = 0;
|
|
373
|
-
// lstat, not the readdir-then-catch shape every sweep above uses on
|
|
374
|
-
// its own root: a symlinked `.inflight/` must read as absent, the
|
|
375
|
-
// same defensive posture the record-level reader already takes one
|
|
376
|
-
// level down for a symlinked record file.
|
|
377
|
-
let rootStat;
|
|
378
|
-
try {
|
|
379
|
-
rootStat = fs.lstatSync(inflightDir);
|
|
380
|
-
}
|
|
381
|
-
catch {
|
|
382
|
-
return { candidates, unparseable, kept };
|
|
383
|
-
}
|
|
384
|
-
if (!rootStat.isDirectory()) {
|
|
385
|
-
return { candidates, unparseable, kept };
|
|
386
|
-
}
|
|
387
|
-
let sessionDirents;
|
|
388
|
-
try {
|
|
389
|
-
sessionDirents = fs.readdirSync(inflightDir, { withFileTypes: true });
|
|
390
|
-
}
|
|
391
|
-
catch {
|
|
392
|
-
sessionDirents = [];
|
|
393
|
-
}
|
|
394
|
-
for (const sessionDirent of sessionDirents) {
|
|
395
|
-
try {
|
|
396
|
-
rejectMalformedSessionId(sessionDirent.name);
|
|
397
|
-
}
|
|
398
|
-
catch {
|
|
399
|
-
continue;
|
|
400
|
-
}
|
|
401
|
-
if (!sessionDirent.isDirectory())
|
|
402
|
-
continue;
|
|
403
|
-
const sessionDir = path.join(inflightDir, sessionDirent.name);
|
|
404
|
-
let agentDirents;
|
|
405
|
-
try {
|
|
406
|
-
agentDirents = fs.readdirSync(sessionDir, { withFileTypes: true });
|
|
407
|
-
}
|
|
408
|
-
catch {
|
|
409
|
-
continue;
|
|
410
|
-
}
|
|
411
|
-
for (const agentDirent of agentDirents) {
|
|
412
|
-
if (!agentDirent.isFile())
|
|
413
|
-
continue;
|
|
414
|
-
try {
|
|
415
|
-
rejectMalformedAgentId(agentDirent.name);
|
|
416
|
-
}
|
|
417
|
-
catch {
|
|
418
|
-
continue;
|
|
419
|
-
}
|
|
420
|
-
const full = path.join(sessionDir, agentDirent.name);
|
|
421
|
-
const status = readInflightRecordStatus(full, nowMs);
|
|
422
|
-
if (status.kind === "stale") {
|
|
423
|
-
candidates.push({ filePath: full, category: "in-flight-record", reason: status.reason });
|
|
424
|
-
}
|
|
425
|
-
else if (status.kind === "unparseable") {
|
|
426
|
-
unparseable.push({ filePath: full, category: "in-flight-record", reason: status.reason });
|
|
427
|
-
kept += 1;
|
|
428
|
-
}
|
|
429
|
-
else {
|
|
430
|
-
kept += 1;
|
|
431
|
-
}
|
|
432
|
-
}
|
|
433
|
-
}
|
|
434
|
-
return { candidates, unparseable, kept };
|
|
435
|
-
}
|
|
436
|
-
export function gc(opts = {}) {
|
|
437
|
-
const retentionDays = opts.retentionDays ?? DEFAULT_RETENTION_DAYS;
|
|
438
|
-
if (!Number.isFinite(retentionDays) || retentionDays < 1) {
|
|
439
|
-
throw new Error(`retention must be a positive number of days, got ${retentionDays}`);
|
|
440
|
-
}
|
|
441
|
-
const now = opts.now ?? new Date();
|
|
442
|
-
const nowMs = now.getTime();
|
|
443
|
-
const cutoffMs = nowMs - retentionDays * 86_400_000;
|
|
444
|
-
// Path resolution mirrors `approve understanding`: explicit opts win
|
|
445
|
-
// (test injection), then env / manifest-anchored defaults. resolvePaths
|
|
446
|
-
// is evaluated lazily (and once) so injected dirs don't drag the
|
|
447
|
-
// loader in.
|
|
448
|
-
let resolvedBase;
|
|
449
|
-
const manifestBase = () => (resolvedBase ??= resolvePaths(opts).base);
|
|
450
|
-
const reportsDir = opts.reportsDir ?? defaultReportsDir(path.dirname(manifestBase()));
|
|
451
|
-
const conventionalLayout = path.basename(reportsDir) === "reports" &&
|
|
452
|
-
path.basename(path.dirname(reportsDir)) === ".understanding-gate";
|
|
453
|
-
const parseErrorsDir = conventionalLayout
|
|
454
|
-
? path.join(path.dirname(reportsDir), PARSE_ERRORS_DIRNAME)
|
|
455
|
-
: null;
|
|
456
|
-
const generatedDir = opts.generatedDir ??
|
|
457
|
-
resolveGeneratedDir({
|
|
458
|
-
...(opts.homeDir !== undefined ? { homeDir: opts.homeDir } : {}),
|
|
459
|
-
manifestPath: manifestBase(),
|
|
460
|
-
});
|
|
461
|
-
const approvalsDir = path.join(generatedDir, APPROVAL_MARKER_DIRNAME);
|
|
462
|
-
const delegationsDir = path.join(generatedDir, DELEGATION_MARKER_DIRNAME);
|
|
463
|
-
const adoptionLedgerDir = path.join(generatedDir, ADOPTION_LEDGER_DIRNAME);
|
|
464
|
-
const permissionModeObservationsDir = path.join(generatedDir, PERMISSION_MODE_OBSERVATION_DIRNAME);
|
|
465
|
-
const inflightRecordsDir = path.join(generatedDir, INFLIGHT_RECORD_DIRNAME);
|
|
466
|
-
const candidates = [];
|
|
467
|
-
const unparseable = [];
|
|
468
|
-
let keptCount = 0;
|
|
469
|
-
// Reports: only terminal statuses age out. A pending report is never
|
|
470
|
-
// deleted regardless of age; since the C1 fix, stale pending leftovers
|
|
471
|
-
// can no longer satisfy `approve understanding`, and keeping them
|
|
472
|
-
// preserves the forensic trail for the producer-side investigation.
|
|
473
|
-
// Bounded listing: the reports dir is writable by the gated agent, so a
|
|
474
|
-
// planted multi-hundred-MB report, a FIFO or a symlink to either must not
|
|
475
|
-
// be read in full (or block). Such an entry is reported as unparseable and
|
|
476
|
-
// left in place: without reading it gc cannot tell whether it is a terminal
|
|
477
|
-
// report, and a pending one is never deleted.
|
|
478
|
-
const reportListing = listPersistedReportsBoundedWithSkips(reportsDir);
|
|
479
|
-
for (const skipped of reportListing.skipped) {
|
|
480
|
-
unparseable.push({
|
|
481
|
-
filePath: skipped.filePath,
|
|
482
|
-
category: "report",
|
|
483
|
-
reason: `not read: ${skipped.detail}`,
|
|
484
|
-
});
|
|
485
|
-
keptCount += 1;
|
|
486
|
-
}
|
|
487
|
-
for (const report of reportListing.reports) {
|
|
488
|
-
const terminal = report.approvalStatus === "approved" || report.approvalStatus === "expired";
|
|
489
|
-
if (terminal && report.createdAtMs < cutoffMs) {
|
|
490
|
-
candidates.push({
|
|
491
|
-
filePath: report.filePath,
|
|
492
|
-
category: "report",
|
|
493
|
-
reason: `${report.approvalStatus}, created ${ageDays(nowMs, report.createdAtMs)}d ago`,
|
|
494
|
-
});
|
|
495
|
-
}
|
|
496
|
-
else {
|
|
497
|
-
keptCount += 1;
|
|
498
|
-
}
|
|
499
|
-
}
|
|
500
|
-
if (parseErrorsDir !== null) {
|
|
501
|
-
const parseErrors = staleFilesByMtime(parseErrorsDir, cutoffMs, nowMs, "parse-error");
|
|
502
|
-
candidates.push(...parseErrors.candidates);
|
|
503
|
-
keptCount += parseErrors.kept;
|
|
504
|
-
}
|
|
505
|
-
const markers = staleFilesByMtime(approvalsDir, cutoffMs, nowMs, "approval-marker");
|
|
506
|
-
candidates.push(...markers.candidates);
|
|
507
|
-
keptCount += markers.kept;
|
|
508
|
-
const delegations = sweepDelegations(generatedDir, cutoffMs, nowMs);
|
|
509
|
-
candidates.push(...delegations.candidates);
|
|
510
|
-
unparseable.push(...delegations.unparseable);
|
|
511
|
-
keptCount += delegations.kept;
|
|
512
|
-
const permissionModeObservations = staleFilesByMtime(permissionModeObservationsDir, cutoffMs, nowMs, "permission-mode-observation");
|
|
513
|
-
candidates.push(...permissionModeObservations.candidates);
|
|
514
|
-
keptCount += permissionModeObservations.kept;
|
|
515
|
-
const inflightRecords = sweepInflightRecords(generatedDir, nowMs);
|
|
516
|
-
candidates.push(...inflightRecords.candidates);
|
|
517
|
-
unparseable.push(...inflightRecords.unparseable);
|
|
518
|
-
keptCount += inflightRecords.kept;
|
|
519
|
-
const removed = [];
|
|
520
|
-
const failures = [];
|
|
521
|
-
if (opts.apply === true) {
|
|
522
|
-
for (const c of candidates) {
|
|
523
|
-
try {
|
|
524
|
-
fs.unlinkSync(c.filePath);
|
|
525
|
-
removed.push(c.filePath);
|
|
526
|
-
}
|
|
527
|
-
catch (err) {
|
|
528
|
-
failures.push({ filePath: c.filePath, reason: err.message });
|
|
529
|
-
}
|
|
530
|
-
}
|
|
531
|
-
// Best-effort session-directory cleanup, mirroring
|
|
532
|
-
// `clearInflightRecord`: a removed in-flight record can leave its
|
|
533
|
-
// `.inflight/<sessionId>/` parent empty, and nothing else ever
|
|
534
|
-
// clears that directory.
|
|
535
|
-
for (const c of candidates) {
|
|
536
|
-
if (c.category !== "in-flight-record")
|
|
537
|
-
continue;
|
|
538
|
-
if (!removed.includes(c.filePath))
|
|
539
|
-
continue;
|
|
540
|
-
try {
|
|
541
|
-
fs.rmdirSync(path.dirname(c.filePath));
|
|
542
|
-
}
|
|
543
|
-
catch {
|
|
544
|
-
/* not empty, or already gone */
|
|
545
|
-
}
|
|
546
|
-
}
|
|
547
|
-
}
|
|
548
|
-
return {
|
|
549
|
-
retentionDays,
|
|
550
|
-
cutoffIso: new Date(cutoffMs).toISOString(),
|
|
551
|
-
reportsDir,
|
|
552
|
-
parseErrorsDir,
|
|
553
|
-
approvalsDir,
|
|
554
|
-
delegationsDir,
|
|
555
|
-
adoptionLedgerDir,
|
|
556
|
-
permissionModeObservationsDir,
|
|
557
|
-
inflightRecordsDir,
|
|
558
|
-
candidates,
|
|
559
|
-
unparseable,
|
|
560
|
-
removed,
|
|
561
|
-
failures,
|
|
562
|
-
keptCount,
|
|
563
|
-
applied: opts.apply === true,
|
|
564
|
-
};
|
|
565
|
-
}
|
|
566
|
-
//# sourceMappingURL=index.js.map
|
package/dist/cli/gc/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/gc/index.ts"],"names":[],"mappings":"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"}
|