@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,103 +0,0 @@
|
|
|
1
|
-
import type { Command } from "commander";
|
|
2
|
-
import type { ResolveReadSessionOptions } from "../../runtime/session-id.js";
|
|
3
|
-
import type { Manifest } from "../../schema/index.js";
|
|
4
|
-
import type { LoaderOptions } from "../loader.js";
|
|
5
|
-
/** The literal session id every producer falls back to when none is known. */
|
|
6
|
-
export declare const FALLBACK_SESSION = "default";
|
|
7
|
-
/** Which tier of the session-id resolution chain produced the id. */
|
|
8
|
-
export type SessionSource = "flag" | "stdin" | "env" | "transcript" | "default";
|
|
9
|
-
/** The slice of the SessionStart hook event JSON the producers read. */
|
|
10
|
-
export interface SessionStartEvent {
|
|
11
|
-
session_id?: unknown;
|
|
12
|
-
cwd?: unknown;
|
|
13
|
-
hook_event_name?: unknown;
|
|
14
|
-
}
|
|
15
|
-
/** The ledger-writer seam every producer exposes to tests. */
|
|
16
|
-
export type SessionStartLedgerWriter = (args: {
|
|
17
|
-
sessionId: string;
|
|
18
|
-
content: string;
|
|
19
|
-
source: string;
|
|
20
|
-
}) => Promise<{
|
|
21
|
-
ok: boolean;
|
|
22
|
-
reason?: string;
|
|
23
|
-
}>;
|
|
24
|
-
/** Options every session-start producer takes. */
|
|
25
|
-
export interface SessionStartCommonOptions extends LoaderOptions {
|
|
26
|
-
/** Defaults to process.stdin. */
|
|
27
|
-
stdin?: NodeJS.ReadableStream;
|
|
28
|
-
/** Defaults to process.stderr. stdout is never written (SessionStart). */
|
|
29
|
-
stderr?: NodeJS.WritableStream;
|
|
30
|
-
/** Explicit session id (overrides every other source). */
|
|
31
|
-
session?: string;
|
|
32
|
-
/**
|
|
33
|
-
* Idle bound, in ms, for the stdin read (default STDIN_IDLE_TIMEOUT_MS).
|
|
34
|
-
* Tests inject a short value.
|
|
35
|
-
*/
|
|
36
|
-
stdinIdleTimeoutMs?: number;
|
|
37
|
-
/** Per-call ledger timeout in ms. */
|
|
38
|
-
ledgerTimeoutMs?: number;
|
|
39
|
-
/** Inject the ledger writer (tests). */
|
|
40
|
-
writeLedger?: SessionStartLedgerWriter;
|
|
41
|
-
/** Inject the read-path session resolver (env + transcript discovery). Test seam. */
|
|
42
|
-
resolveSession?: (explicit: string | undefined, opts: ResolveReadSessionOptions) => string;
|
|
43
|
-
/** Inject a manifest (tests). Bypasses loadManifest. */
|
|
44
|
-
manifest?: Manifest;
|
|
45
|
-
}
|
|
46
|
-
/** Common options plus the `--cwd` override, for the producers that take one. */
|
|
47
|
-
export interface SessionStartCwdOptions extends SessionStartCommonOptions {
|
|
48
|
-
/** Override the cwd resolution (test injection). Falls back to event.cwd then process.cwd(). */
|
|
49
|
-
cwd?: string;
|
|
50
|
-
}
|
|
51
|
-
/** Parse the text of a SessionStart event (empty text is an empty event). */
|
|
52
|
-
export declare function parseSessionStartEvent(text: string): SessionStartEvent;
|
|
53
|
-
/**
|
|
54
|
-
* Read and parse the SessionStart event JSON from a stream. The read is
|
|
55
|
-
* idle-bounded (see bounded-stdin.ts): when stdin never closes, the text read
|
|
56
|
-
* so far is parsed (empty text is an empty event) and `onTimeout` receives the
|
|
57
|
-
* stderr note the producer logs.
|
|
58
|
-
*/
|
|
59
|
-
export declare function readSessionStartEvent(stream: NodeJS.ReadableStream, opts?: {
|
|
60
|
-
idleTimeoutMs?: number;
|
|
61
|
-
onTimeout?: (note: string) => void;
|
|
62
|
-
}): Promise<SessionStartEvent>;
|
|
63
|
-
/** The reason line a producer logs when the event JSON does not parse. */
|
|
64
|
-
export declare function malformedEventReason(err: unknown): string;
|
|
65
|
-
/** `--cwd` first, then the event's cwd, then the process cwd. */
|
|
66
|
-
export declare function resolveEventCwd(optCwd: unknown, event: SessionStartEvent): string;
|
|
67
|
-
/** The session id handed to the resolver: the flag, else the event's, else none. */
|
|
68
|
-
export declare function explicitSessionId(optSession: unknown, event: SessionStartEvent): string | undefined;
|
|
69
|
-
/**
|
|
70
|
-
* Classify where a resolved session id came from: the flag, the stdin
|
|
71
|
-
* event, an env var, a discovered transcript, or the literal default.
|
|
72
|
-
* `resolverThrew` forces "default" (the id recorded is the fallback even
|
|
73
|
-
* when the flag or event carried one).
|
|
74
|
-
*/
|
|
75
|
-
export declare function classifySessionSource(optSession: unknown, event: SessionStartEvent, sessionId: string, resolverThrew?: boolean): SessionSource;
|
|
76
|
-
/** The option bag commander hands the action of a session-start subcommand. */
|
|
77
|
-
export interface SessionStartCliOptions {
|
|
78
|
-
config?: string;
|
|
79
|
-
project?: string;
|
|
80
|
-
session?: string;
|
|
81
|
-
cwd?: string;
|
|
82
|
-
ledgerTimeout?: string;
|
|
83
|
-
}
|
|
84
|
-
/** `--config` and `--project`, then `--session` with the caller's description. */
|
|
85
|
-
export declare function addIdentityOptions(cmd: Command, sessionDescription: string): Command;
|
|
86
|
-
/** `--cwd`. */
|
|
87
|
-
export declare function addCwdOption(cmd: Command): Command;
|
|
88
|
-
/** `--ledger-timeout`. */
|
|
89
|
-
export declare function addLedgerTimeoutOption(cmd: Command): Command;
|
|
90
|
-
/** The `run*` options a parsed CLI option bag fills in. */
|
|
91
|
-
export interface SessionStartCliTarget {
|
|
92
|
-
configPath?: string;
|
|
93
|
-
project?: string;
|
|
94
|
-
session?: string;
|
|
95
|
-
cwd?: string;
|
|
96
|
-
ledgerTimeoutMs?: number;
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Copy the shared CLI options into a producer's options. A value that is
|
|
100
|
-
* absent is left unset; a `--ledger-timeout` that is not a positive
|
|
101
|
-
* integer is ignored (the producer's default timeout applies).
|
|
102
|
-
*/
|
|
103
|
-
export declare function applyCliOptions(options: SessionStartCliOptions, target: SessionStartCliTarget): void;
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
// Shared plumbing for the `harness session-start` producers
|
|
2
|
-
// (preflight, branch-check, toolchain-parity, stale-base-check) and the
|
|
3
|
-
// top-level `preflight` alias: the SessionStart event type, the stdin
|
|
4
|
-
// read, the cwd and session-source resolution, the options every
|
|
5
|
-
// producer takes, and the commander options every subcommand declares.
|
|
6
|
-
//
|
|
7
|
-
// Pure extraction: each producer used to carry its own copy of these
|
|
8
|
-
// pieces, and every copy behaved the same. Nothing here changes what a
|
|
9
|
-
// producer reads, writes or prints.
|
|
10
|
-
import { readStdinBounded, STDIN_IDLE_TIMEOUT_MS, stdinTimeoutNote } from "../bounded-stdin.js";
|
|
11
|
-
/** The literal session id every producer falls back to when none is known. */
|
|
12
|
-
export const FALLBACK_SESSION = "default";
|
|
13
|
-
/** Parse the text of a SessionStart event (empty text is an empty event). */
|
|
14
|
-
export function parseSessionStartEvent(text) {
|
|
15
|
-
return JSON.parse(text.trim() || "{}");
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Read and parse the SessionStart event JSON from a stream. The read is
|
|
19
|
-
* idle-bounded (see bounded-stdin.ts): when stdin never closes, the text read
|
|
20
|
-
* so far is parsed (empty text is an empty event) and `onTimeout` receives the
|
|
21
|
-
* stderr note the producer logs.
|
|
22
|
-
*/
|
|
23
|
-
export async function readSessionStartEvent(stream, opts = {}) {
|
|
24
|
-
const idleTimeoutMs = opts.idleTimeoutMs ?? STDIN_IDLE_TIMEOUT_MS;
|
|
25
|
-
const read = await readStdinBounded(stream, idleTimeoutMs);
|
|
26
|
-
if (read.timedOut)
|
|
27
|
-
opts.onTimeout?.(stdinTimeoutNote(read, idleTimeoutMs));
|
|
28
|
-
return parseSessionStartEvent(read.text);
|
|
29
|
-
}
|
|
30
|
-
/** The reason line a producer logs when the event JSON does not parse. */
|
|
31
|
-
export function malformedEventReason(err) {
|
|
32
|
-
return `malformed event JSON: ${err.message}`;
|
|
33
|
-
}
|
|
34
|
-
/** `--cwd` first, then the event's cwd, then the process cwd. */
|
|
35
|
-
export function resolveEventCwd(optCwd, event) {
|
|
36
|
-
return typeof optCwd === "string" && optCwd.length > 0
|
|
37
|
-
? optCwd
|
|
38
|
-
: typeof event.cwd === "string" && event.cwd.length > 0
|
|
39
|
-
? event.cwd
|
|
40
|
-
: process.cwd();
|
|
41
|
-
}
|
|
42
|
-
/** The session id handed to the resolver: the flag, else the event's, else none. */
|
|
43
|
-
export function explicitSessionId(optSession, event) {
|
|
44
|
-
return typeof optSession === "string" && optSession.length > 0
|
|
45
|
-
? optSession
|
|
46
|
-
: typeof event.session_id === "string" && event.session_id.length > 0
|
|
47
|
-
? event.session_id
|
|
48
|
-
: undefined;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Classify where a resolved session id came from: the flag, the stdin
|
|
52
|
-
* event, an env var, a discovered transcript, or the literal default.
|
|
53
|
-
* `resolverThrew` forces "default" (the id recorded is the fallback even
|
|
54
|
-
* when the flag or event carried one).
|
|
55
|
-
*/
|
|
56
|
-
export function classifySessionSource(optSession, event, sessionId, resolverThrew = false) {
|
|
57
|
-
return resolverThrew
|
|
58
|
-
? "default"
|
|
59
|
-
: typeof optSession === "string" && optSession.length > 0
|
|
60
|
-
? "flag"
|
|
61
|
-
: typeof event.session_id === "string" && event.session_id.length > 0
|
|
62
|
-
? "stdin"
|
|
63
|
-
: sessionId === FALLBACK_SESSION
|
|
64
|
-
? "default"
|
|
65
|
-
: (typeof process.env.CLAUDE_CODE_SESSION_ID === "string" &&
|
|
66
|
-
process.env.CLAUDE_CODE_SESSION_ID === sessionId) ||
|
|
67
|
-
(typeof process.env.CLAUDE_SESSION_ID === "string" &&
|
|
68
|
-
process.env.CLAUDE_SESSION_ID === sessionId)
|
|
69
|
-
? "env"
|
|
70
|
-
: "transcript";
|
|
71
|
-
}
|
|
72
|
-
/** `--config` and `--project`, then `--session` with the caller's description. */
|
|
73
|
-
export function addIdentityOptions(cmd, sessionDescription) {
|
|
74
|
-
return cmd
|
|
75
|
-
.option("--config <path>", "manifest path (default: ~/.harness/harness.yaml; legacy fallback ~/.claude/harness.yaml)")
|
|
76
|
-
.option("--project <name>", "apply per-project overrides")
|
|
77
|
-
.option("--session <id>", sessionDescription);
|
|
78
|
-
}
|
|
79
|
-
/** `--cwd`. */
|
|
80
|
-
export function addCwdOption(cmd) {
|
|
81
|
-
return cmd.option("--cwd <path>", "override cwd resolution (default: stdin event.cwd then process.cwd())");
|
|
82
|
-
}
|
|
83
|
-
/** `--ledger-timeout`. */
|
|
84
|
-
export function addLedgerTimeoutOption(cmd) {
|
|
85
|
-
return cmd.option("--ledger-timeout <ms>", "per-call ledger timeout in milliseconds");
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Copy the shared CLI options into a producer's options. A value that is
|
|
89
|
-
* absent is left unset; a `--ledger-timeout` that is not a positive
|
|
90
|
-
* integer is ignored (the producer's default timeout applies).
|
|
91
|
-
*/
|
|
92
|
-
export function applyCliOptions(options, target) {
|
|
93
|
-
if (options.config)
|
|
94
|
-
target.configPath = options.config;
|
|
95
|
-
if (options.project)
|
|
96
|
-
target.project = options.project;
|
|
97
|
-
if (options.session)
|
|
98
|
-
target.session = options.session;
|
|
99
|
-
if (options.cwd)
|
|
100
|
-
target.cwd = options.cwd;
|
|
101
|
-
if (options.ledgerTimeout) {
|
|
102
|
-
const n = Number.parseInt(options.ledgerTimeout, 10);
|
|
103
|
-
if (Number.isFinite(n) && n > 0)
|
|
104
|
-
target.ledgerTimeoutMs = n;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
//# sourceMappingURL=shared-options.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shared-options.js","sourceRoot":"","sources":["../../../src/cli/session-start/shared-options.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { type SessionSource, type SessionStartCwdOptions } from "./shared-options.js";
|
|
2
|
-
export interface StaleBaseCheckArgs {
|
|
3
|
-
cwd: string;
|
|
4
|
-
remote: string;
|
|
5
|
-
defaultBranch: string;
|
|
6
|
-
branch: string;
|
|
7
|
-
timeoutMs: number;
|
|
8
|
-
}
|
|
9
|
-
export type StaleBaseCheckResult = {
|
|
10
|
-
ok: true;
|
|
11
|
-
/** Commits on `branch` not reachable from the live remote tip. */
|
|
12
|
-
aheadCount: number;
|
|
13
|
-
/** Commits on the live remote tip not reachable from `branch` — the staleness signal. */
|
|
14
|
-
behindCount: number;
|
|
15
|
-
/** Only set when `behindCount > 0`: the live remote tip's own sha. */
|
|
16
|
-
remoteSha?: string;
|
|
17
|
-
/** Only set when `behindCount > 0`: ISO commit date of the live remote tip. */
|
|
18
|
-
latestRemoteCommitIso?: string;
|
|
19
|
-
} | {
|
|
20
|
-
ok: false;
|
|
21
|
-
reason: string;
|
|
22
|
-
};
|
|
23
|
-
export interface SessionStartStaleBaseCheckOptions extends SessionStartCwdOptions {
|
|
24
|
-
/** Override "now" for deterministic age-formatting tests. */
|
|
25
|
-
now?: Date;
|
|
26
|
-
/** Inject the live check (tests) — see realCheckStaleBase's doc. */
|
|
27
|
-
runCheck?: (args: StaleBaseCheckArgs) => Promise<StaleBaseCheckResult>;
|
|
28
|
-
}
|
|
29
|
-
export interface SessionStartStaleBaseCheckResult {
|
|
30
|
-
/** Always 0 — a SessionStart hook must never break the session loop. */
|
|
31
|
-
exitCode: number;
|
|
32
|
-
/** Whether the `stale-base:` ledger fact was written. */
|
|
33
|
-
wrote: boolean;
|
|
34
|
-
/** Resolved repo name. */
|
|
35
|
-
repo: string;
|
|
36
|
-
/** Resolved branch ("" if detached or outside a repo). */
|
|
37
|
-
branch: string;
|
|
38
|
-
/** Commits the branch's base is behind the live remote default, when the check ran. */
|
|
39
|
-
behindCount?: number;
|
|
40
|
-
/** Resolved session id. */
|
|
41
|
-
sessionId: string;
|
|
42
|
-
sessionSource: SessionSource;
|
|
43
|
-
/** Human-readable explanation of a non-write outcome, for diagnostics. */
|
|
44
|
-
reason?: string;
|
|
45
|
-
}
|
|
46
|
-
export declare function runSessionStartStaleBaseCheck(opts?: SessionStartStaleBaseCheckOptions): Promise<SessionStartStaleBaseCheckResult>;
|
|
@@ -1,352 +0,0 @@
|
|
|
1
|
-
// `harness session-start stale-base-check` — SessionStart hook
|
|
2
|
-
// entrypoint, fourth sibling of `harness session-start preflight` /
|
|
3
|
-
// `branch-check` / `toolchain-parity`.
|
|
4
|
-
//
|
|
5
|
-
// Incident (task ea8becf5): a task branch was cut from a local `master`
|
|
6
|
-
// that had not been fetched in 4 days. The v0.42.0 release had already
|
|
7
|
-
// landed on `origin/master` 6h before the branch point. The resulting PR
|
|
8
|
-
// went straight to CONFLICTING and its CI never ran. Nothing surfaced the
|
|
9
|
-
// gap at the time it was still cheap to fix (before work landed on the
|
|
10
|
-
// branch), because:
|
|
11
|
-
// - `harness preflight` checks the working TREE, never the remote.
|
|
12
|
-
// - `harness session-start branch-check` reads `.git/HEAD` and a
|
|
13
|
-
// protected-branch list; it has no notion of "is this branch's base
|
|
14
|
-
// current".
|
|
15
|
-
// - the post-merge-gate convention only ever fires AFTER a merge.
|
|
16
|
-
// And the obvious-looking fix is itself the trap this module exists to
|
|
17
|
-
// avoid: `git merge-base HEAD origin/master` LOOKS authoritative, but
|
|
18
|
-
// `origin/master` is a LOCAL, cached ref — exactly the ref that was 4
|
|
19
|
-
// days stale in the incident. Computing "how stale" from a stale ref
|
|
20
|
-
// answers a different question than the one that matters.
|
|
21
|
-
//
|
|
22
|
-
// --- WHERE this sits (task brief step 3) ---
|
|
23
|
-
// SessionStart companion, not a `preflight`-check addition and not a
|
|
24
|
-
// PreToolUse gate:
|
|
25
|
-
// - `harness policy intercept` (the PreToolUse hot path, evaluated on
|
|
26
|
-
// EVERY Bash/Edit/Write tool call — see runtime/intercept.ts) must
|
|
27
|
-
// never do network I/O; a `git fetch` there would add real latency to
|
|
28
|
-
// every single tool call for the life of the session. This module is
|
|
29
|
-
// wired ONLY under `harness session-start ...` (this file lives in
|
|
30
|
-
// src/cli/, which src/runtime/intercept.ts is structurally forbidden
|
|
31
|
-
// from importing — enforced by .dependency-cruiser.cjs's
|
|
32
|
-
// "runtime-no-upward-imports" rule, i.e. `npm run check:boundaries`
|
|
33
|
-
// fails the build if that ever changes), so the one network call this
|
|
34
|
-
// module makes can only ever happen once per SessionStart, never on
|
|
35
|
-
// the hot path.
|
|
36
|
-
// - `agent-preflight` (the external `preflight` binary
|
|
37
|
-
// `session-start/index.ts` wraps) is a SEPARATE npm package; teaching
|
|
38
|
-
// it to do remote checks is out of this task's scope (task brief
|
|
39
|
-
// "Out of scope").
|
|
40
|
-
// - A PreToolUse gate (`requires.ledger_tag`-style, like
|
|
41
|
-
// `preflight-before-push`) was considered and REJECTED: every such
|
|
42
|
-
// gate in this codebase fails CLOSED for a SECURITY invariant (an
|
|
43
|
-
// absent/expired tag blocks the action). A stale base is a
|
|
44
|
-
// time-loss problem, not a security problem — blocking on it would
|
|
45
|
-
// violate the task's hard constraint ("Keine Aussperrung: ein
|
|
46
|
-
// veralteter Base darf die Arbeit nicht verhindern") for zero
|
|
47
|
-
// security benefit. A SessionStart producer's own contract
|
|
48
|
-
// (`blocking:false`, always exit 0) makes the non-blocking posture
|
|
49
|
-
// structural rather than a policy authors could get wrong later.
|
|
50
|
-
//
|
|
51
|
-
// --- SCHÄRFE (severity) chosen: WARNUNG, not Hinweis, not Block ---
|
|
52
|
-
// - Block is impossible by construction here (see above) and would
|
|
53
|
-
// directly violate the hard constraint anyway.
|
|
54
|
-
// - A quiet Hinweis (a single low-key note easy to scroll past) risks
|
|
55
|
-
// reproducing the founding incident's own failure mode almost
|
|
56
|
-
// exactly: "nichts fiel auf" is the whole reason this task exists.
|
|
57
|
-
// - So: a loud stderr WARNING line — same visibility tier as the two
|
|
58
|
-
// existing loud-but-non-blocking SessionStart producers
|
|
59
|
-
// (`toolchain-parity`'s drift lines, `preflight`'s not-ready
|
|
60
|
-
// diagnostic) — naming the concrete commit count, how old the missing
|
|
61
|
-
// work is, and the exact recovery command. Purely advisory: no
|
|
62
|
-
// PreToolUse gate consumes the `stale-base:` ledger fact this writes
|
|
63
|
-
// (same posture as `toolchain-parity:`, audit-trail only for
|
|
64
|
-
// `harness audit`/forensics).
|
|
65
|
-
//
|
|
66
|
-
// --- Fetch cost / why opt-in (task brief: "inkl. Fetch-Kosten") ---
|
|
67
|
-
// `stale_base_check.enabled` defaults to `false` (schema:
|
|
68
|
-
// src/schema/stale-base-check.ts). An operator who has not asked for
|
|
69
|
-
// this pays ZERO extra session-start latency or network egress — the
|
|
70
|
-
// producer returns before touching `child_process` at all when
|
|
71
|
-
// unconfigured. Once enabled, the cost is bounded by
|
|
72
|
-
// `fetch_timeout_ms` (default 8000ms) per `git` subprocess call (at most
|
|
73
|
-
// three: fetch, rev-list, log — see `realCheckStaleBase` below), and the
|
|
74
|
-
// fetch itself is normally near-instant: `git fetch <remote>
|
|
75
|
-
// <defaultBranch>` only ever needs to transfer the commits this checkout
|
|
76
|
-
// doesn't already have. It always writes `FETCH_HEAD`; on a normal clone
|
|
77
|
-
// (whose configured `remote.<remote>.fetch` refspec matches the named
|
|
78
|
-
// branch) `git` ALSO refreshes the local `refs/remotes/<remote>/
|
|
79
|
-
// <defaultBranch>` tracking ref as a side effect — a welcome bonus (it
|
|
80
|
-
// self-heals the exact staleness the incident hit) but never something
|
|
81
|
-
// this module relies on or reads back: see below.
|
|
82
|
-
//
|
|
83
|
-
// --- The ref-staleness trap, closed ---
|
|
84
|
-
// The remote's default-branch NAME (e.g. "master") is resolved from the
|
|
85
|
-
// local `refs/remotes/origin/HEAD` file via `resolveOriginHeadBase` — that
|
|
86
|
-
// is safe to trust: a repo's default branch NAME essentially never
|
|
87
|
-
// changes after initial setup. What must NEVER be trusted is that same
|
|
88
|
-
// ref's SHA as a staleness signal — that is precisely what went stale in
|
|
89
|
-
// the incident. This module never READS a local `refs/remotes/<remote>/
|
|
90
|
-
// <defaultBranch>` sha for comparison (regardless of whether the fetch
|
|
91
|
-
// above happened to refresh it); the only sha it ever compares `branch`
|
|
92
|
-
// against is `FETCH_HEAD`, populated by a live `git fetch` performed
|
|
93
|
-
// THIS run.
|
|
94
|
-
//
|
|
95
|
-
// SessionStart contract, same as the three siblings: `blocking:false`.
|
|
96
|
-
// Every failure path (not configured, not a git repo, detached HEAD,
|
|
97
|
-
// default branch unresolved, `git` not on PATH, no remote configured, no
|
|
98
|
-
// credentials, offline/timeout, unparseable output, a ledger-write
|
|
99
|
-
// failure) logs one line to stderr and exits 0 — never blocking, never
|
|
100
|
-
// throwing (except the hermetic-spawn-guard violation under vitest
|
|
101
|
-
// without an injected `runCheck`, which — like the sibling producers —
|
|
102
|
-
// must propagate rather than be swallowed; see hermetic-spawn-guard.ts).
|
|
103
|
-
import { execFile } from "node:child_process";
|
|
104
|
-
import { findGitEntry, resolveCommonDir, resolveGitContext, resolveOriginHeadBase, } from "../../runtime/git-context.js";
|
|
105
|
-
import { assertNoRealSpawnInTests } from "../../runtime/hermetic-spawn-guard.js";
|
|
106
|
-
import { resolveManifestLedgerWriter } from "../../runtime/ledger-writer.js";
|
|
107
|
-
import { resolveReadSessionId } from "../../runtime/session-id.js";
|
|
108
|
-
import { loadManifest } from "../loader.js";
|
|
109
|
-
import { classifySessionSource, explicitSessionId, FALLBACK_SESSION, malformedEventReason, readSessionStartEvent, resolveEventCwd, } from "./shared-options.js";
|
|
110
|
-
import { formatSnapshotAge } from "./toolchain-parity.js";
|
|
111
|
-
const LEDGER_SOURCE = "harness-session-start-stale-base-check";
|
|
112
|
-
const DEFAULT_REMOTE = "origin";
|
|
113
|
-
const DEFAULT_FETCH_TIMEOUT_MS = 8_000;
|
|
114
|
-
/**
|
|
115
|
-
* Run one `git <args>` in `cwd`, classifying the common failure shapes
|
|
116
|
-
* (missing binary / timeout / non-zero exit) the same way the sibling
|
|
117
|
-
* producers' subprocess wrappers do (`spawnPreflight` in
|
|
118
|
-
* session-start/index.ts, `realNpmGlobalsSpawn` in toolchain-parity.ts).
|
|
119
|
-
* Never rejects.
|
|
120
|
-
*/
|
|
121
|
-
function execGit(args, cwd, timeoutMs) {
|
|
122
|
-
return new Promise((resolve) => {
|
|
123
|
-
execFile("git", args, { cwd, timeout: timeoutMs, maxBuffer: 4 * 1024 * 1024, encoding: "utf8" }, (err, stdout, stderr) => {
|
|
124
|
-
const text = (stdout ?? "").toString().trim();
|
|
125
|
-
if (!err) {
|
|
126
|
-
resolve({ ok: true, stdout: text, reason: "" });
|
|
127
|
-
return;
|
|
128
|
-
}
|
|
129
|
-
const e = err;
|
|
130
|
-
if (e.code === "ENOENT") {
|
|
131
|
-
resolve({ ok: false, stdout: "", reason: "`git` not on PATH" });
|
|
132
|
-
return;
|
|
133
|
-
}
|
|
134
|
-
if (e.killed) {
|
|
135
|
-
resolve({
|
|
136
|
-
ok: false,
|
|
137
|
-
stdout: "",
|
|
138
|
-
reason: `\`git ${args.join(" ")}\` timed out after ${timeoutMs}ms (remote unreachable or very slow)`,
|
|
139
|
-
});
|
|
140
|
-
return;
|
|
141
|
-
}
|
|
142
|
-
const stderrText = (stderr ?? "").toString().trim().split("\n")[0] ?? "";
|
|
143
|
-
const capped = stderrText.length > 200 ? `${stderrText.slice(0, 199)}…` : stderrText;
|
|
144
|
-
resolve({
|
|
145
|
-
ok: false,
|
|
146
|
-
stdout: "",
|
|
147
|
-
reason: `\`git ${args.join(" ")}\` failed${capped ? `: ${capped}` : ` (exit ${e.code ?? "?"})`}`,
|
|
148
|
-
});
|
|
149
|
-
});
|
|
150
|
-
});
|
|
151
|
-
}
|
|
152
|
-
/**
|
|
153
|
-
* The real, network-touching implementation. Guarded by
|
|
154
|
-
* `assertNoRealSpawnInTests` (see that module's doc) so an un-injected
|
|
155
|
-
* test can never accidentally exercise a real `git fetch` — every test in
|
|
156
|
-
* this module's suite either injects `runCheck` or opts into the real
|
|
157
|
-
* path via the documented `HARNESS_ALLOW_REAL_SPAWN=1` escape hatch
|
|
158
|
-
* against a local fixture repo (never a real network host).
|
|
159
|
-
*
|
|
160
|
-
* Sequence: `git fetch --no-tags <remote> <defaultBranch>` (always writes
|
|
161
|
-
* FETCH_HEAD; may also refresh the local remote-tracking ref as a normal
|
|
162
|
-
* git side effect — see the module header), then `git rev-list
|
|
163
|
-
* --left-right --count <branch>...FETCH_HEAD` for the ahead/behind counts,
|
|
164
|
-
* then — only when behind > 0, since that is the only case the caller's
|
|
165
|
-
* message needs it — `git log -1 --format=%H%x09%cI FETCH_HEAD` for the
|
|
166
|
-
* live remote tip's sha + committer date. Comparison is always against
|
|
167
|
-
* `FETCH_HEAD` (this run's live result), never a cached tracking ref.
|
|
168
|
-
*/
|
|
169
|
-
function realCheckStaleBase(args) {
|
|
170
|
-
assertNoRealSpawnInTests("git fetch (stale-base-check)", "Inject a fake `runCheck` (SessionStartStaleBaseCheckOptions.runCheck), or opt into the " +
|
|
171
|
-
"real path against a LOCAL fixture repo via HARNESS_ALLOW_REAL_SPAWN=1 for a dedicated " +
|
|
172
|
-
"real-git plumbing test — never exercise this against a real network host in a test.");
|
|
173
|
-
const { cwd, remote, defaultBranch, branch, timeoutMs } = args;
|
|
174
|
-
return (async () => {
|
|
175
|
-
const fetch = await execGit(["fetch", "--no-tags", "--", remote, defaultBranch], cwd, timeoutMs);
|
|
176
|
-
if (!fetch.ok)
|
|
177
|
-
return { ok: false, reason: fetch.reason };
|
|
178
|
-
const counts = await execGit(["rev-list", "--left-right", "--count", `${branch}...FETCH_HEAD`], cwd, timeoutMs);
|
|
179
|
-
if (!counts.ok)
|
|
180
|
-
return { ok: false, reason: counts.reason };
|
|
181
|
-
const parts = counts.stdout.split(/\s+/).filter((p) => p.length > 0);
|
|
182
|
-
const aheadCount = Number.parseInt(parts[0] ?? "", 10);
|
|
183
|
-
const behindCount = Number.parseInt(parts[1] ?? "", 10);
|
|
184
|
-
if (!Number.isFinite(aheadCount) || !Number.isFinite(behindCount)) {
|
|
185
|
-
return { ok: false, reason: `\`git rev-list --left-right --count\` produced unparseable output: "${counts.stdout}"` };
|
|
186
|
-
}
|
|
187
|
-
if (behindCount === 0)
|
|
188
|
-
return { ok: true, aheadCount, behindCount };
|
|
189
|
-
const log = await execGit(["log", "-1", "--format=%H%x09%cI", "FETCH_HEAD"], cwd, timeoutMs);
|
|
190
|
-
if (!log.ok) {
|
|
191
|
-
// The counts themselves are still good evidence — degrade the
|
|
192
|
-
// extra detail, not the whole result.
|
|
193
|
-
return { ok: true, aheadCount, behindCount };
|
|
194
|
-
}
|
|
195
|
-
const [remoteSha, latestRemoteCommitIso] = log.stdout.split("\t");
|
|
196
|
-
return {
|
|
197
|
-
ok: true,
|
|
198
|
-
aheadCount,
|
|
199
|
-
behindCount,
|
|
200
|
-
...(remoteSha ? { remoteSha } : {}),
|
|
201
|
-
...(latestRemoteCommitIso ? { latestRemoteCommitIso } : {}),
|
|
202
|
-
};
|
|
203
|
-
})();
|
|
204
|
-
}
|
|
205
|
-
export async function runSessionStartStaleBaseCheck(opts = {}) {
|
|
206
|
-
const stdin = opts.stdin ?? process.stdin;
|
|
207
|
-
const stderr = opts.stderr ?? process.stderr;
|
|
208
|
-
const now = opts.now ?? new Date();
|
|
209
|
-
const note = (msg) => {
|
|
210
|
-
stderr.write(`harness session-start stale-base-check: ${msg}\n`);
|
|
211
|
-
};
|
|
212
|
-
const done = (wrote, repo, branch, sessionId, sessionSource, reason, behindCount) => ({
|
|
213
|
-
exitCode: 0,
|
|
214
|
-
wrote,
|
|
215
|
-
repo,
|
|
216
|
-
branch,
|
|
217
|
-
sessionId,
|
|
218
|
-
sessionSource,
|
|
219
|
-
...(behindCount !== undefined && { behindCount }),
|
|
220
|
-
...(reason !== undefined && { reason }),
|
|
221
|
-
});
|
|
222
|
-
let event;
|
|
223
|
-
try {
|
|
224
|
-
event = await readSessionStartEvent(stdin, {
|
|
225
|
-
onTimeout: note,
|
|
226
|
-
...(opts.stdinIdleTimeoutMs !== undefined && { idleTimeoutMs: opts.stdinIdleTimeoutMs }),
|
|
227
|
-
});
|
|
228
|
-
}
|
|
229
|
-
catch (err) {
|
|
230
|
-
const reason = malformedEventReason(err);
|
|
231
|
-
note(reason);
|
|
232
|
-
return done(false, "", "", FALLBACK_SESSION, "default", reason);
|
|
233
|
-
}
|
|
234
|
-
const cwd = resolveEventCwd(opts.cwd, event);
|
|
235
|
-
const explicit = explicitSessionId(opts.session, event);
|
|
236
|
-
const resolveSession = opts.resolveSession ?? resolveReadSessionId;
|
|
237
|
-
const sessionId = resolveSession(explicit, {});
|
|
238
|
-
const sessionSource = classifySessionSource(opts.session, event, sessionId);
|
|
239
|
-
let manifest;
|
|
240
|
-
if (opts.manifest) {
|
|
241
|
-
manifest = opts.manifest;
|
|
242
|
-
}
|
|
243
|
-
else {
|
|
244
|
-
try {
|
|
245
|
-
manifest = loadManifest(opts).manifest;
|
|
246
|
-
}
|
|
247
|
-
catch (err) {
|
|
248
|
-
const reason = `manifest load failed: ${err.message}`;
|
|
249
|
-
note(reason);
|
|
250
|
-
return done(false, "", "", sessionId, sessionSource, reason);
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
const config = manifest.stale_base_check;
|
|
254
|
-
if (!config.enabled) {
|
|
255
|
-
const reason = "not configured (add `stale_base_check: { enabled: true }` to harness.yaml); skipping — no network touched";
|
|
256
|
-
note(reason);
|
|
257
|
-
return done(false, "", "", sessionId, sessionSource, reason);
|
|
258
|
-
}
|
|
259
|
-
const { repo, branch } = resolveGitContext(cwd);
|
|
260
|
-
if (repo === "") {
|
|
261
|
-
const reason = `cwd is not inside a git work tree (${cwd}); nothing to check`;
|
|
262
|
-
note(reason);
|
|
263
|
-
return done(false, "", "", sessionId, sessionSource, reason);
|
|
264
|
-
}
|
|
265
|
-
if (branch === "") {
|
|
266
|
-
const reason = "detached HEAD (or unreadable HEAD) — no branch to check a base for";
|
|
267
|
-
note(reason);
|
|
268
|
-
return done(false, repo, "", sessionId, sessionSource, reason);
|
|
269
|
-
}
|
|
270
|
-
const remote = config.remote ?? DEFAULT_REMOTE;
|
|
271
|
-
const timeoutMs = config.fetch_timeout_ms ?? DEFAULT_FETCH_TIMEOUT_MS;
|
|
272
|
-
let defaultBranch = config.default_branch;
|
|
273
|
-
if (!defaultBranch) {
|
|
274
|
-
// NOTE: `resolveOriginHeadBase` reads `refs/remotes/origin/HEAD`
|
|
275
|
-
// specifically (hardcoded "origin" — see runtime/git-context.ts), not
|
|
276
|
-
// `refs/remotes/<remote>/HEAD`. For the overwhelming common case
|
|
277
|
-
// (`remote` left at its "origin" default) this is exactly right. A
|
|
278
|
-
// manifest that configures a NON-"origin" `remote` without also
|
|
279
|
-
// setting `default_branch` explicitly will fail this auto-resolution
|
|
280
|
-
// and fall into the "could not be resolved" degrade path below —
|
|
281
|
-
// fail-open (skip, no fact written), never a wrong/misleading result,
|
|
282
|
-
// so this is a completeness gap, not a correctness risk.
|
|
283
|
-
const gitDir = findGitEntry(cwd)?.gitDir;
|
|
284
|
-
defaultBranch = gitDir ? (resolveOriginHeadBase(resolveCommonDir(gitDir)) ?? undefined) : undefined;
|
|
285
|
-
}
|
|
286
|
-
if (!defaultBranch) {
|
|
287
|
-
const reason = `default branch could not be resolved (checked \`stale_base_check.default_branch\` and ` +
|
|
288
|
-
`refs/remotes/${remote}/HEAD / packed-refs); skipping. Set \`stale_base_check.default_branch\` ` +
|
|
289
|
-
"explicitly to fix this.";
|
|
290
|
-
note(reason);
|
|
291
|
-
return done(false, repo, branch, sessionId, sessionSource, reason);
|
|
292
|
-
}
|
|
293
|
-
if (branch === defaultBranch) {
|
|
294
|
-
const reason = `on ${defaultBranch} itself; nothing to compare a base against`;
|
|
295
|
-
note(reason);
|
|
296
|
-
return done(false, repo, branch, sessionId, sessionSource, reason);
|
|
297
|
-
}
|
|
298
|
-
const runCheck = opts.runCheck ?? realCheckStaleBase;
|
|
299
|
-
const result = await runCheck({ cwd, remote, defaultBranch, branch, timeoutMs });
|
|
300
|
-
if (!result.ok) {
|
|
301
|
-
// Fail-open by construction (task hard constraint): every reason here
|
|
302
|
-
// — no remote configured, no credentials, offline, timeout, git
|
|
303
|
-
// missing — degrades to "no fact written", never a thrown error and
|
|
304
|
-
// never a block. A stale base costs time, not safety.
|
|
305
|
-
note(`${result.reason} — degrading cleanly (not blocking; the base-staleness check is advisory-only)`);
|
|
306
|
-
return done(false, repo, branch, sessionId, sessionSource, result.reason);
|
|
307
|
-
}
|
|
308
|
-
const remoteRef = `${remote}/${defaultBranch}`;
|
|
309
|
-
if (result.behindCount === 0) {
|
|
310
|
-
note(`base is current with ${remoteRef} (live check via \`git fetch\`)`);
|
|
311
|
-
}
|
|
312
|
-
else {
|
|
313
|
-
const ageSuffix = result.latestRemoteCommitIso
|
|
314
|
-
? ` (newest missing commit landed ${formatSnapshotAge(Math.max(0, now.getTime() - Date.parse(result.latestRemoteCommitIso)))} ago, ${result.latestRemoteCommitIso})`
|
|
315
|
-
: "";
|
|
316
|
-
const aheadSuffix = result.aheadCount > 0 ? `; this branch itself is ${result.aheadCount} commit(s) ahead of that base` : "";
|
|
317
|
-
note(`WARNING: this branch's base is ${result.behindCount} commit(s) behind ${remoteRef}${ageSuffix}${aheadSuffix}. ` +
|
|
318
|
-
`This is a LIVE check (a real \`git fetch\`, not the local ${remoteRef} ref, which may itself be stale). ` +
|
|
319
|
-
`Recommended before continuing: \`git fetch ${remote} && git rebase ${remoteRef}\` (or merge) — ` +
|
|
320
|
-
"otherwise this PR risks landing CONFLICTING with CI never running (the incident this check exists to catch).");
|
|
321
|
-
}
|
|
322
|
-
const content = result.behindCount === 0
|
|
323
|
-
? `stale-base:${repo}:${branch} ok base:${remoteRef}`
|
|
324
|
-
: `stale-base:${repo}:${branch} behind:${result.behindCount} ahead:${result.aheadCount} base:${remoteRef}` +
|
|
325
|
-
(result.remoteSha ? ` remote_sha:${result.remoteSha}` : "");
|
|
326
|
-
let writeLedger = opts.writeLedger;
|
|
327
|
-
if (!writeLedger) {
|
|
328
|
-
const resolved = resolveManifestLedgerWriter(manifest, {
|
|
329
|
-
...(opts.ledgerTimeoutMs !== undefined ? { ledgerTimeoutMs: opts.ledgerTimeoutMs } : {}),
|
|
330
|
-
});
|
|
331
|
-
if (!resolved.ok) {
|
|
332
|
-
const reason = `${resolved.reason}; cannot record ${content}`;
|
|
333
|
-
note(reason);
|
|
334
|
-
return done(false, repo, branch, sessionId, sessionSource, reason, result.behindCount);
|
|
335
|
-
}
|
|
336
|
-
writeLedger = resolved.write;
|
|
337
|
-
}
|
|
338
|
-
const written = await writeLedger({ sessionId, content, source: LEDGER_SOURCE });
|
|
339
|
-
if (!written.ok) {
|
|
340
|
-
const reason = `ledger write failed: ${written.reason ?? "unknown error"}`;
|
|
341
|
-
note(reason);
|
|
342
|
-
return done(false, repo, branch, sessionId, sessionSource, reason, result.behindCount);
|
|
343
|
-
}
|
|
344
|
-
note(`recorded ${content} for session ${sessionId}`);
|
|
345
|
-
if (sessionSource === "default") {
|
|
346
|
-
note("WARNING: session resolved to the literal \"default\". This tag is audit-only (no gate consumes " +
|
|
347
|
-
"stale-base: yet), but pipe SessionStart event JSON on stdin, export $CLAUDE_SESSION_ID, or pass " +
|
|
348
|
-
"--session <id> for manual / scripted use to keep the audit trail useful.");
|
|
349
|
-
}
|
|
350
|
-
return done(true, repo, branch, sessionId, sessionSource, undefined, result.behindCount);
|
|
351
|
-
}
|
|
352
|
-
//# sourceMappingURL=stale-base-check.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stale-base-check.js","sourceRoot":"","sources":["../../../src/cli/session-start/stale-base-check.ts"],"names":[],"mappings":"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"}
|