@lannguyensi/harness 0.63.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +90 -0
- package/README.md +46 -42
- package/dist/cli/add/index.js +17 -21
- package/dist/cli/add/index.js.map +1 -1
- package/dist/cli/adopt/derive.d.ts +2 -2
- package/dist/cli/adopt/derive.js +2 -19
- package/dist/cli/adopt/derive.js.map +1 -1
- package/dist/cli/adopt/index.d.ts +1 -1
- package/dist/cli/adopt/index.js +1 -12
- package/dist/cli/adopt/index.js.map +1 -1
- package/dist/cli/apply/apply.d.ts +20 -35
- package/dist/cli/apply/apply.js +61 -136
- package/dist/cli/apply/apply.js.map +1 -1
- package/dist/cli/apply/generate-codex-config.js +10 -58
- package/dist/cli/apply/generate-codex-config.js.map +1 -1
- package/dist/cli/apply/generate-memory-index.js +1 -2
- package/dist/cli/apply/generate-memory-index.js.map +1 -1
- package/dist/cli/apply/generate-opencode-config.d.ts +2 -10
- package/dist/cli/apply/generate-opencode-config.js +74 -113
- package/dist/cli/apply/generate-opencode-config.js.map +1 -1
- package/dist/cli/apply/generate-settings.d.ts +11 -64
- package/dist/cli/apply/generate-settings.js +27 -132
- package/dist/cli/apply/generate-settings.js.map +1 -1
- package/dist/cli/apply/index.d.ts +1 -1
- package/dist/cli/apply/index.js +1 -1
- package/dist/cli/apply/index.js.map +1 -1
- package/dist/cli/apply/install-codex-config.d.ts +153 -1
- package/dist/cli/apply/install-codex-config.js +445 -70
- package/dist/cli/apply/install-codex-config.js.map +1 -1
- package/dist/cli/apply/next-steps.d.ts +7 -0
- package/dist/cli/apply/next-steps.js +13 -1
- package/dist/cli/apply/next-steps.js.map +1 -1
- package/dist/cli/bounded-stdin.d.ts +0 -23
- package/dist/cli/bounded-stdin.js +2 -49
- package/dist/cli/bounded-stdin.js.map +1 -1
- package/dist/cli/describe.d.ts +1 -1
- package/dist/cli/describe.js +0 -3
- package/dist/cli/describe.js.map +1 -1
- package/dist/cli/diff/engine.d.ts +0 -11
- package/dist/cli/diff/engine.js +1 -17
- package/dist/cli/diff/engine.js.map +1 -1
- package/dist/cli/diff/index.js +14 -25
- package/dist/cli/diff/index.js.map +1 -1
- package/dist/cli/doctor/claude-mcp.d.ts +4 -19
- package/dist/cli/doctor/claude-mcp.js +11 -22
- package/dist/cli/doctor/claude-mcp.js.map +1 -1
- package/dist/cli/doctor/codex.d.ts +12 -14
- package/dist/cli/doctor/codex.js +31 -144
- package/dist/cli/doctor/codex.js.map +1 -1
- package/dist/cli/doctor/format.js +23 -338
- package/dist/cli/doctor/format.js.map +1 -1
- package/dist/cli/doctor/hook-liveness.d.ts +56 -0
- package/dist/cli/doctor/hook-liveness.js +455 -0
- package/dist/cli/doctor/hook-liveness.js.map +1 -0
- package/dist/cli/doctor/index.d.ts +13 -87
- package/dist/cli/doctor/index.js +57 -705
- package/dist/cli/doctor/index.js.map +1 -1
- package/dist/cli/doctor/opencode.d.ts +2 -1
- package/dist/cli/doctor/opencode.js.map +1 -1
- package/dist/cli/doctor/types.d.ts +21 -378
- package/dist/cli/doctor/types.js.map +1 -1
- package/dist/cli/drain-stdio.d.ts +31 -0
- package/dist/cli/drain-stdio.js +76 -0
- package/dist/cli/drain-stdio.js.map +1 -0
- package/dist/cli/export.d.ts +3 -1
- package/dist/cli/export.js +7 -16
- package/dist/cli/export.js.map +1 -1
- package/dist/cli/gate/codex-disable.d.ts +29 -0
- package/dist/cli/gate/codex-disable.js +195 -0
- package/dist/cli/gate/codex-disable.js.map +1 -0
- package/dist/cli/gate/codex-enable.d.ts +41 -0
- package/dist/cli/gate/codex-enable.js +127 -0
- package/dist/cli/gate/codex-enable.js.map +1 -0
- package/dist/cli/gate/codex-snapshot.d.ts +208 -0
- package/dist/cli/gate/codex-snapshot.js +402 -0
- package/dist/cli/gate/codex-snapshot.js.map +1 -0
- package/dist/cli/gate/disable.d.ts +9 -0
- package/dist/cli/gate/disable.js +263 -28
- package/dist/cli/gate/disable.js.map +1 -1
- package/dist/cli/gate/enable.d.ts +26 -6
- package/dist/cli/gate/enable.js +152 -80
- package/dist/cli/gate/enable.js.map +1 -1
- package/dist/cli/gate/link-chain.d.ts +53 -0
- package/dist/cli/gate/link-chain.js +122 -0
- package/dist/cli/gate/link-chain.js.map +1 -0
- package/dist/cli/gate/snapshot.d.ts +289 -12
- package/dist/cli/gate/snapshot.js +481 -22
- package/dist/cli/gate/snapshot.js.map +1 -1
- package/dist/cli/index.d.ts +0 -9
- package/dist/cli/index.js +15 -2607
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init/composer.d.ts +3 -6
- package/dist/cli/init/composer.js +6 -370
- package/dist/cli/init/composer.js.map +1 -1
- package/dist/cli/init/dependencies.d.ts +1 -2
- package/dist/cli/init/dependencies.js +4 -80
- package/dist/cli/init/dependencies.js.map +1 -1
- package/dist/cli/init/detect.js +5 -4
- package/dist/cli/init/detect.js.map +1 -1
- package/dist/cli/init/interactive.d.ts +1 -23
- package/dist/cli/init/interactive.js +33 -247
- package/dist/cli/init/interactive.js.map +1 -1
- package/dist/cli/init/profiles.d.ts +2 -2
- package/dist/cli/init/profiles.js +51 -243
- package/dist/cli/init/profiles.js.map +1 -1
- package/dist/cli/init/templates.d.ts +2 -37
- package/dist/cli/init/templates.js +25 -1237
- package/dist/cli/init/templates.js.map +1 -1
- package/dist/cli/list.d.ts +1 -1
- package/dist/cli/list.js +1 -38
- package/dist/cli/list.js.map +1 -1
- package/dist/cli/loader.d.ts +15 -1
- package/dist/cli/loader.js +56 -39
- package/dist/cli/loader.js.map +1 -1
- package/dist/cli/main.js +7 -2
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/migrate-home/index.js +2 -2
- package/dist/cli/migrate-home/index.js.map +1 -1
- package/dist/cli/pack/add.js +1 -1
- package/dist/cli/pack/add.js.map +1 -1
- package/dist/cli/pack/hook-bootstrap.d.ts +5 -164
- package/dist/cli/pack/hook-bootstrap.js +15 -291
- package/dist/cli/pack/hook-bootstrap.js.map +1 -1
- package/dist/cli/pack/hook-branch-protection.d.ts +28 -21
- package/dist/cli/pack/hook-branch-protection.js +365 -340
- package/dist/cli/pack/hook-branch-protection.js.map +1 -1
- package/dist/cli/pack/index.d.ts +0 -1
- package/dist/cli/pack/index.js +0 -1
- package/dist/cli/pack/index.js.map +1 -1
- package/dist/cli/pack/list.js +1 -6
- package/dist/cli/pack/list.js.map +1 -1
- package/dist/cli/pack/mutate.d.ts +7 -9
- package/dist/cli/pack/mutate.js +6 -9
- package/dist/cli/pack/mutate.js.map +1 -1
- package/dist/cli/pack/reseed.d.ts +2 -2
- package/dist/cli/pack/reseed.js +16 -22
- package/dist/cli/pack/reseed.js.map +1 -1
- package/dist/cli/register-gate-group.d.ts +5 -0
- package/dist/cli/register-gate-group.js +348 -0
- package/dist/cli/register-gate-group.js.map +1 -0
- package/dist/cli/register-inspect-group.d.ts +6 -0
- package/dist/cli/register-inspect-group.js +189 -0
- package/dist/cli/register-inspect-group.js.map +1 -0
- package/dist/cli/register-operator-lifecycle.d.ts +5 -0
- package/dist/cli/register-operator-lifecycle.js +20 -0
- package/dist/cli/register-operator-lifecycle.js.map +1 -0
- package/dist/cli/register-pack-group.d.ts +5 -0
- package/dist/cli/register-pack-group.js +134 -0
- package/dist/cli/register-pack-group.js.map +1 -0
- package/dist/cli/register-setup-group.d.ts +5 -0
- package/dist/cli/register-setup-group.js +495 -0
- package/dist/cli/register-setup-group.js.map +1 -0
- package/dist/cli/remove/index.d.ts +0 -14
- package/dist/cli/remove/index.js +2 -115
- package/dist/cli/remove/index.js.map +1 -1
- package/dist/cli/remove/mutate.d.ts +0 -2
- package/dist/cli/remove/mutate.js +1 -19
- package/dist/cli/remove/mutate.js.map +1 -1
- package/dist/cli/remove/register.d.ts +5 -0
- package/dist/cli/remove/register.js +25 -0
- package/dist/cli/remove/register.js.map +1 -0
- package/dist/cli/shell-quote.d.ts +7 -0
- package/dist/cli/shell-quote.js +17 -0
- package/dist/cli/shell-quote.js.map +1 -0
- package/dist/cli/uninstall/index.d.ts +4 -2
- package/dist/cli/uninstall/index.js +15 -7
- package/dist/cli/uninstall/index.js.map +1 -1
- package/dist/cli/uninstall/register.d.ts +5 -0
- package/dist/cli/uninstall/register.js +171 -0
- package/dist/cli/uninstall/register.js.map +1 -0
- package/dist/cli/uninstall/snapshot.d.ts +15 -0
- package/dist/cli/uninstall/snapshot.js +38 -0
- package/dist/cli/uninstall/snapshot.js.map +1 -1
- package/dist/cli/validate/checks.d.ts +0 -77
- package/dist/cli/validate/checks.js +3 -1049
- package/dist/cli/validate/checks.js.map +1 -1
- package/dist/cli/validate/index.js +19 -15
- package/dist/cli/validate/index.js.map +1 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.js +0 -3
- package/dist/index.js.map +1 -1
- package/dist/io/claude-mcp.d.ts +1 -1
- package/dist/io/claude-mcp.js +27 -14
- package/dist/io/claude-mcp.js.map +1 -1
- package/dist/io/harness-lock.js +2 -2
- package/dist/io/harness-lock.js.map +1 -1
- package/dist/io/lock.d.ts +0 -26
- package/dist/io/lock.js +10 -27
- package/dist/io/lock.js.map +1 -1
- package/dist/io/merge-settings.js +6 -4
- package/dist/io/merge-settings.js.map +1 -1
- package/dist/io/project-name.d.ts +22 -39
- package/dist/io/project-name.js +25 -42
- package/dist/io/project-name.js.map +1 -1
- package/dist/io/read-regular-file.d.ts +103 -40
- package/dist/io/read-regular-file.js +196 -35
- package/dist/io/read-regular-file.js.map +1 -1
- package/dist/io/restart-hints.js +3 -6
- package/dist/io/restart-hints.js.map +1 -1
- package/dist/io/version-compare.d.ts +1 -3
- package/dist/io/version-compare.js +1 -3
- package/dist/io/version-compare.js.map +1 -1
- package/dist/io/write-regular-file.d.ts +30 -0
- package/dist/io/write-regular-file.js +85 -0
- package/dist/io/write-regular-file.js.map +1 -0
- package/dist/overrides/index.d.ts +1 -0
- package/dist/overrides/index.js +1 -0
- package/dist/overrides/index.js.map +1 -1
- package/dist/overrides/merge-layers.d.ts +43 -0
- package/dist/overrides/merge-layers.js +76 -0
- package/dist/overrides/merge-layers.js.map +1 -0
- package/dist/overrides/merge.d.ts +16 -0
- package/dist/overrides/merge.js +21 -8
- package/dist/overrides/merge.js.map +1 -1
- package/dist/policy-packs/builtin/branch-protection-runtime.d.ts +4 -69
- package/dist/policy-packs/builtin/branch-protection-runtime.js +12 -84
- package/dist/policy-packs/builtin/branch-protection-runtime.js.map +1 -1
- package/dist/policy-packs/builtin/branch-protection.d.ts +7 -30
- package/dist/policy-packs/builtin/branch-protection.js +56 -89
- package/dist/policy-packs/builtin/branch-protection.js.map +1 -1
- package/dist/policy-packs/config-check.d.ts +7 -5
- package/dist/policy-packs/config-check.js +2 -2
- package/dist/policy-packs/config-check.js.map +1 -1
- package/dist/policy-packs/expand.d.ts +1 -3
- package/dist/policy-packs/expand.js +5 -42
- package/dist/policy-packs/expand.js.map +1 -1
- package/dist/policy-packs/index.d.ts +3 -3
- package/dist/policy-packs/index.js +2 -2
- package/dist/policy-packs/index.js.map +1 -1
- package/dist/policy-packs/registry.d.ts +9 -38
- package/dist/policy-packs/registry.js +5 -65
- package/dist/policy-packs/registry.js.map +1 -1
- package/dist/policy-packs/runtime.d.ts +0 -4
- package/dist/policy-packs/runtime.js +9 -22
- package/dist/policy-packs/runtime.js.map +1 -1
- package/dist/policy-packs/types.d.ts +0 -19
- package/dist/policy-packs/ux-compare.d.ts +1 -11
- package/dist/policy-packs/ux-compare.js +6 -42
- package/dist/policy-packs/ux-compare.js.map +1 -1
- package/dist/policy-packs/ux-drift-check.d.ts +5 -5
- package/dist/policy-packs/ux-drift-check.js +17 -22
- package/dist/policy-packs/ux-drift-check.js.map +1 -1
- package/dist/policy-packs/version-check.d.ts +5 -26
- package/dist/policy-packs/version-check.js +19 -74
- package/dist/policy-packs/version-check.js.map +1 -1
- package/dist/probes/memory.d.ts +1 -1
- package/dist/probes/memory.js +1 -1
- package/dist/probes/memory.js.map +1 -1
- package/dist/runtime/agent-facing.d.ts +9 -0
- package/dist/runtime/agent-facing.js +28 -14
- package/dist/runtime/agent-facing.js.map +1 -1
- package/dist/runtime/bounded-text.d.ts +15 -0
- package/dist/runtime/bounded-text.js +27 -0
- package/dist/runtime/bounded-text.js.map +1 -0
- package/dist/runtime/git-branch.d.ts +125 -0
- package/dist/runtime/git-branch.js +381 -0
- package/dist/runtime/git-branch.js.map +1 -0
- package/dist/runtime/hermetic-spawn-guard.d.ts +2 -2
- package/dist/runtime/hermetic-spawn-guard.js +24 -34
- package/dist/runtime/hermetic-spawn-guard.js.map +1 -1
- package/dist/runtime/home-dir.js +3 -2
- package/dist/runtime/home-dir.js.map +1 -1
- package/dist/runtime/tool-name-aliases.d.ts +0 -6
- package/dist/runtime/tool-name-aliases.js +5 -18
- package/dist/runtime/tool-name-aliases.js.map +1 -1
- package/dist/schema/grounding.d.ts +7 -54
- package/dist/schema/grounding.js +10 -12
- package/dist/schema/grounding.js.map +1 -1
- package/dist/schema/hooks.d.ts +39 -136
- package/dist/schema/hooks.js +3 -6
- package/dist/schema/hooks.js.map +1 -1
- package/dist/schema/index.d.ts +114 -3828
- package/dist/schema/index.js +41 -80
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/memory.d.ts +54 -131
- package/dist/schema/memory.js +2 -2
- package/dist/schema/memory.js.map +1 -1
- package/dist/schema/policy-packs.d.ts +3 -45
- package/dist/schema/policy-packs.js +7 -13
- package/dist/schema/policy-packs.js.map +1 -1
- package/dist/schema/policy-ux.d.ts +7 -0
- package/dist/schema/policy-ux.js +18 -0
- package/dist/schema/policy-ux.js.map +1 -0
- package/dist/schema/removed-keys.d.ts +185 -0
- package/dist/schema/removed-keys.js +531 -0
- package/dist/schema/removed-keys.js.map +1 -0
- package/dist/schema/tools.d.ts +30 -268
- package/dist/schema/tools.js +4 -4
- package/dist/schema/tools.js.map +1 -1
- package/package.json +5 -16
- package/dist/cli/approve/branch-protection.d.ts +0 -69
- package/dist/cli/approve/branch-protection.js +0 -144
- package/dist/cli/approve/branch-protection.js.map +0 -1
- package/dist/cli/approve/risk.d.ts +0 -112
- package/dist/cli/approve/risk.js +0 -197
- package/dist/cli/approve/risk.js.map +0 -1
- package/dist/cli/approve/stdin-report.d.ts +0 -57
- package/dist/cli/approve/stdin-report.js +0 -145
- package/dist/cli/approve/stdin-report.js.map +0 -1
- package/dist/cli/approve/understanding.d.ts +0 -410
- package/dist/cli/approve/understanding.js +0 -996
- package/dist/cli/approve/understanding.js.map +0 -1
- package/dist/cli/audit.d.ts +0 -80
- package/dist/cli/audit.js +0 -252
- package/dist/cli/audit.js.map +0 -1
- package/dist/cli/delegate/index.d.ts +0 -76
- package/dist/cli/delegate/index.js +0 -443
- package/dist/cli/delegate/index.js.map +0 -1
- package/dist/cli/doctor/auto-approve-mode.d.ts +0 -37
- package/dist/cli/doctor/auto-approve-mode.js +0 -80
- package/dist/cli/doctor/auto-approve-mode.js.map +0 -1
- package/dist/cli/doctor/bypass-without-auto-approve.d.ts +0 -38
- package/dist/cli/doctor/bypass-without-auto-approve.js +0 -95
- package/dist/cli/doctor/bypass-without-auto-approve.js.map +0 -1
- package/dist/cli/doctor/codex-config-drift.d.ts +0 -28
- package/dist/cli/doctor/codex-config-drift.js +0 -240
- package/dist/cli/doctor/codex-config-drift.js.map +0 -1
- package/dist/cli/doctor/rogue-ledger.d.ts +0 -53
- package/dist/cli/doctor/rogue-ledger.js +0 -153
- package/dist/cli/doctor/rogue-ledger.js.map +0 -1
- package/dist/cli/doctor/session-start-preflight-setup-version.d.ts +0 -83
- package/dist/cli/doctor/session-start-preflight-setup-version.js +0 -114
- package/dist/cli/doctor/session-start-preflight-setup-version.js.map +0 -1
- package/dist/cli/doctor/settings-drift.d.ts +0 -25
- package/dist/cli/doctor/settings-drift.js +0 -213
- package/dist/cli/doctor/settings-drift.js.map +0 -1
- package/dist/cli/doctor/toolchain-parity.d.ts +0 -63
- package/dist/cli/doctor/toolchain-parity.js +0 -154
- package/dist/cli/doctor/toolchain-parity.js.map +0 -1
- package/dist/cli/doctor/ug-auto-approvals.d.ts +0 -40
- package/dist/cli/doctor/ug-auto-approvals.js +0 -91
- package/dist/cli/doctor/ug-auto-approvals.js.map +0 -1
- package/dist/cli/doctor/ug-delegations.d.ts +0 -26
- package/dist/cli/doctor/ug-delegations.js +0 -121
- package/dist/cli/doctor/ug-delegations.js.map +0 -1
- package/dist/cli/doctor/ug-inflight.d.ts +0 -35
- package/dist/cli/doctor/ug-inflight.js +0 -57
- package/dist/cli/doctor/ug-inflight.js.map +0 -1
- package/dist/cli/doctor/understanding-mode-env.d.ts +0 -51
- package/dist/cli/doctor/understanding-mode-env.js +0 -98
- package/dist/cli/doctor/understanding-mode-env.js.map +0 -1
- package/dist/cli/dry-run.d.ts +0 -46
- package/dist/cli/dry-run.js +0 -250
- package/dist/cli/dry-run.js.map +0 -1
- package/dist/cli/event-input.d.ts +0 -28
- package/dist/cli/event-input.js +0 -73
- package/dist/cli/event-input.js.map +0 -1
- package/dist/cli/explain-action.d.ts +0 -20
- package/dist/cli/explain-action.js +0 -27
- package/dist/cli/explain-action.js.map +0 -1
- package/dist/cli/explain-policy.d.ts +0 -135
- package/dist/cli/explain-policy.js +0 -266
- package/dist/cli/explain-policy.js.map +0 -1
- package/dist/cli/explain.d.ts +0 -31
- package/dist/cli/explain.js +0 -159
- package/dist/cli/explain.js.map +0 -1
- package/dist/cli/gc/index.d.ts +0 -63
- package/dist/cli/gc/index.js +0 -566
- package/dist/cli/gc/index.js.map +0 -1
- package/dist/cli/pack/approve-escape.d.ts +0 -19
- package/dist/cli/pack/approve-escape.js +0 -190
- package/dist/cli/pack/approve-escape.js.map +0 -1
- package/dist/cli/pack/auto-approve-path.d.ts +0 -146
- package/dist/cli/pack/auto-approve-path.js +0 -462
- package/dist/cli/pack/auto-approve-path.js.map +0 -1
- package/dist/cli/pack/hook-codex-post-tool-use.d.ts +0 -25
- package/dist/cli/pack/hook-codex-post-tool-use.js +0 -160
- package/dist/cli/pack/hook-codex-post-tool-use.js.map +0 -1
- package/dist/cli/pack/hook-codex-pre-tool-use.d.ts +0 -48
- package/dist/cli/pack/hook-codex-pre-tool-use.js +0 -474
- package/dist/cli/pack/hook-codex-pre-tool-use.js.map +0 -1
- package/dist/cli/pack/hook-codex-stop.d.ts +0 -35
- package/dist/cli/pack/hook-codex-stop.js +0 -329
- package/dist/cli/pack/hook-codex-stop.js.map +0 -1
- package/dist/cli/pack/hook-codex-user-prompt-submit.d.ts +0 -24
- package/dist/cli/pack/hook-codex-user-prompt-submit.js +0 -93
- package/dist/cli/pack/hook-codex-user-prompt-submit.js.map +0 -1
- package/dist/cli/pack/hook-post-merge-gate-record.d.ts +0 -37
- package/dist/cli/pack/hook-post-merge-gate-record.js +0 -190
- package/dist/cli/pack/hook-post-merge-gate-record.js.map +0 -1
- package/dist/cli/pack/hook-post-merge-gate.d.ts +0 -34
- package/dist/cli/pack/hook-post-merge-gate.js +0 -277
- package/dist/cli/pack/hook-post-merge-gate.js.map +0 -1
- package/dist/cli/pack/hook-post-tool-use.d.ts +0 -45
- package/dist/cli/pack/hook-post-tool-use.js +0 -137
- package/dist/cli/pack/hook-post-tool-use.js.map +0 -1
- package/dist/cli/pack/hook-pre-tool-use.d.ts +0 -92
- package/dist/cli/pack/hook-pre-tool-use.js +0 -1328
- package/dist/cli/pack/hook-pre-tool-use.js.map +0 -1
- package/dist/cli/pack/hook-runtime-reality.d.ts +0 -63
- package/dist/cli/pack/hook-runtime-reality.js +0 -210
- package/dist/cli/pack/hook-runtime-reality.js.map +0 -1
- package/dist/cli/pack/hook-solution-acceptance-writeguard.d.ts +0 -32
- package/dist/cli/pack/hook-solution-acceptance-writeguard.js +0 -337
- package/dist/cli/pack/hook-solution-acceptance-writeguard.js.map +0 -1
- package/dist/cli/pack/hook-solution-acceptance.d.ts +0 -157
- package/dist/cli/pack/hook-solution-acceptance.js +0 -530
- package/dist/cli/pack/hook-solution-acceptance.js.map +0 -1
- package/dist/cli/pack/hook-stay-in-scope.d.ts +0 -37
- package/dist/cli/pack/hook-stay-in-scope.js +0 -128
- package/dist/cli/pack/hook-stay-in-scope.js.map +0 -1
- package/dist/cli/pack/hook-subagent-start.d.ts +0 -23
- package/dist/cli/pack/hook-subagent-start.js +0 -88
- package/dist/cli/pack/hook-subagent-start.js.map +0 -1
- package/dist/cli/pack/hook-subagent-stop.d.ts +0 -19
- package/dist/cli/pack/hook-subagent-stop.js +0 -41
- package/dist/cli/pack/hook-subagent-stop.js.map +0 -1
- package/dist/cli/pack/hook-track-active-claim.d.ts +0 -27
- package/dist/cli/pack/hook-track-active-claim.js +0 -275
- package/dist/cli/pack/hook-track-active-claim.js.map +0 -1
- package/dist/cli/pack/transcript-report-scan.d.ts +0 -71
- package/dist/cli/pack/transcript-report-scan.js +0 -359
- package/dist/cli/pack/transcript-report-scan.js.map +0 -1
- package/dist/cli/pack/understanding-report-schema-hint.d.ts +0 -26
- package/dist/cli/pack/understanding-report-schema-hint.js +0 -120
- package/dist/cli/pack/understanding-report-schema-hint.js.map +0 -1
- package/dist/cli/pack/upgrade.d.ts +0 -32
- package/dist/cli/pack/upgrade.js +0 -273
- package/dist/cli/pack/upgrade.js.map +0 -1
- package/dist/cli/pause/index.d.ts +0 -113
- package/dist/cli/pause/index.js +0 -251
- package/dist/cli/pause/index.js.map +0 -1
- package/dist/cli/pause-check.d.ts +0 -22
- package/dist/cli/pause-check.js +0 -54
- package/dist/cli/pause-check.js.map +0 -1
- package/dist/cli/policy/intercept.d.ts +0 -233
- package/dist/cli/policy/intercept.js +0 -1020
- package/dist/cli/policy/intercept.js.map +0 -1
- package/dist/cli/policy/risk-envelope-enrichment.d.ts +0 -40
- package/dist/cli/policy/risk-envelope-enrichment.js +0 -108
- package/dist/cli/policy/risk-envelope-enrichment.js.map +0 -1
- package/dist/cli/record/index.d.ts +0 -81
- package/dist/cli/record/index.js +0 -348
- package/dist/cli/record/index.js.map +0 -1
- package/dist/cli/resolve-env.d.ts +0 -32
- package/dist/cli/resolve-env.js +0 -47
- package/dist/cli/resolve-env.js.map +0 -1
- package/dist/cli/session-export/index.d.ts +0 -46
- package/dist/cli/session-export/index.js +0 -169
- package/dist/cli/session-export/index.js.map +0 -1
- package/dist/cli/session-export/redact.d.ts +0 -22
- package/dist/cli/session-export/redact.js +0 -47
- package/dist/cli/session-export/redact.js.map +0 -1
- package/dist/cli/session-export/transcript.d.ts +0 -24
- package/dist/cli/session-export/transcript.js +0 -164
- package/dist/cli/session-export/transcript.js.map +0 -1
- package/dist/cli/session-start/branch-check.d.ts +0 -18
- package/dist/cli/session-start/branch-check.js +0 -140
- package/dist/cli/session-start/branch-check.js.map +0 -1
- package/dist/cli/session-start/index.d.ts +0 -121
- package/dist/cli/session-start/index.js +0 -591
- package/dist/cli/session-start/index.js.map +0 -1
- package/dist/cli/session-start/shared-options.d.ts +0 -103
- package/dist/cli/session-start/shared-options.js +0 -107
- package/dist/cli/session-start/shared-options.js.map +0 -1
- package/dist/cli/session-start/stale-base-check.d.ts +0 -46
- package/dist/cli/session-start/stale-base-check.js +0 -352
- package/dist/cli/session-start/stale-base-check.js.map +0 -1
- package/dist/cli/session-start/toolchain-parity.d.ts +0 -267
- package/dist/cli/session-start/toolchain-parity.js +0 -797
- package/dist/cli/session-start/toolchain-parity.js.map +0 -1
- package/dist/cli/smoke/assertions.d.ts +0 -46
- package/dist/cli/smoke/assertions.js +0 -170
- package/dist/cli/smoke/assertions.js.map +0 -1
- package/dist/cli/smoke/index.d.ts +0 -76
- package/dist/cli/smoke/index.js +0 -245
- package/dist/cli/smoke/index.js.map +0 -1
- package/dist/cli/smoke/runner.d.ts +0 -55
- package/dist/cli/smoke/runner.js +0 -134
- package/dist/cli/smoke/runner.js.map +0 -1
- package/dist/cli/smoke/stream-parser.d.ts +0 -65
- package/dist/cli/smoke/stream-parser.js +0 -115
- package/dist/cli/smoke/stream-parser.js.map +0 -1
- package/dist/cli/test-risk.d.ts +0 -26
- package/dist/cli/test-risk.js +0 -34
- package/dist/cli/test-risk.js.map +0 -1
- package/dist/io/display-path.d.ts +0 -11
- package/dist/io/display-path.js +0 -29
- package/dist/io/display-path.js.map +0 -1
- package/dist/io/duration.d.ts +0 -5
- package/dist/io/duration.js +0 -50
- package/dist/io/duration.js.map +0 -1
- package/dist/io/extract.d.ts +0 -79
- package/dist/io/extract.js +0 -226
- package/dist/io/extract.js.map +0 -1
- package/dist/io/ledger-record.d.ts +0 -83
- package/dist/io/ledger-record.js +0 -301
- package/dist/io/ledger-record.js.map +0 -1
- package/dist/io/read-json-dir-entries.d.ts +0 -36
- package/dist/io/read-json-dir-entries.js +0 -48
- package/dist/io/read-json-dir-entries.js.map +0 -1
- package/dist/io/safe-json-parse.d.ts +0 -5
- package/dist/io/safe-json-parse.js +0 -21
- package/dist/io/safe-json-parse.js.map +0 -1
- package/dist/policies/index.d.ts +0 -5
- package/dist/policies/index.js +0 -6
- package/dist/policies/index.js.map +0 -1
- package/dist/policies/ledger-client.d.ts +0 -113
- package/dist/policies/ledger-client.js +0 -500
- package/dist/policies/ledger-client.js.map +0 -1
- package/dist/policies/producers.d.ts +0 -12
- package/dist/policies/producers.js +0 -61
- package/dist/policies/producers.js.map +0 -1
- package/dist/policies/requires.d.ts +0 -75
- package/dist/policies/requires.js +0 -240
- package/dist/policies/requires.js.map +0 -1
- package/dist/policies/timestamp.d.ts +0 -14
- package/dist/policies/timestamp.js +0 -36
- package/dist/policies/timestamp.js.map +0 -1
- package/dist/policy-packs/builtin/permission-profiles.d.ts +0 -11
- package/dist/policy-packs/builtin/permission-profiles.js +0 -74
- package/dist/policy-packs/builtin/permission-profiles.js.map +0 -1
- package/dist/policy-packs/builtin/post-merge-gate-runtime.d.ts +0 -286
- package/dist/policy-packs/builtin/post-merge-gate-runtime.js +0 -397
- package/dist/policy-packs/builtin/post-merge-gate-runtime.js.map +0 -1
- package/dist/policy-packs/builtin/post-merge-gate.d.ts +0 -56
- package/dist/policy-packs/builtin/post-merge-gate.js +0 -347
- package/dist/policy-packs/builtin/post-merge-gate.js.map +0 -1
- package/dist/policy-packs/builtin/solution-acceptance-reconnect.d.ts +0 -50
- package/dist/policy-packs/builtin/solution-acceptance-reconnect.js +0 -151
- package/dist/policy-packs/builtin/solution-acceptance-reconnect.js.map +0 -1
- package/dist/policy-packs/builtin/solution-acceptance-runtime.d.ts +0 -323
- package/dist/policy-packs/builtin/solution-acceptance-runtime.js +0 -672
- package/dist/policy-packs/builtin/solution-acceptance-runtime.js.map +0 -1
- package/dist/policy-packs/builtin/solution-acceptance.d.ts +0 -45
- package/dist/policy-packs/builtin/solution-acceptance.js +0 -226
- package/dist/policy-packs/builtin/solution-acceptance.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/active-claim.d.ts +0 -25
- package/dist/policy-packs/builtin/understanding-before-execution/active-claim.js +0 -94
- package/dist/policy-packs/builtin/understanding-before-execution/active-claim.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/auto-approve-default.d.ts +0 -35
- package/dist/policy-packs/builtin/understanding-before-execution/auto-approve-default.js +0 -86
- package/dist/policy-packs/builtin/understanding-before-execution/auto-approve-default.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/auto-approve.d.ts +0 -210
- package/dist/policy-packs/builtin/understanding-before-execution/auto-approve.js +0 -361
- package/dist/policy-packs/builtin/understanding-before-execution/auto-approve.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/delegation-markers.d.ts +0 -304
- package/dist/policy-packs/builtin/understanding-before-execution/delegation-markers.js +0 -734
- package/dist/policy-packs/builtin/understanding-before-execution/delegation-markers.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/expiry-reason.d.ts +0 -36
- package/dist/policy-packs/builtin/understanding-before-execution/expiry-reason.js +0 -73
- package/dist/policy-packs/builtin/understanding-before-execution/expiry-reason.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/index.d.ts +0 -19
- package/dist/policy-packs/builtin/understanding-before-execution/index.js +0 -83
- package/dist/policy-packs/builtin/understanding-before-execution/index.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/inflight-records.d.ts +0 -135
- package/dist/policy-packs/builtin/understanding-before-execution/inflight-records.js +0 -618
- package/dist/policy-packs/builtin/understanding-before-execution/inflight-records.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/ledger.d.ts +0 -25
- package/dist/policy-packs/builtin/understanding-before-execution/ledger.js +0 -56
- package/dist/policy-packs/builtin/understanding-before-execution/ledger.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/lifecycle.d.ts +0 -20
- package/dist/policy-packs/builtin/understanding-before-execution/lifecycle.js +0 -93
- package/dist/policy-packs/builtin/understanding-before-execution/lifecycle.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/markers.d.ts +0 -126
- package/dist/policy-packs/builtin/understanding-before-execution/markers.js +0 -245
- package/dist/policy-packs/builtin/understanding-before-execution/markers.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/measured-permission-modes.d.ts +0 -29
- package/dist/policy-packs/builtin/understanding-before-execution/measured-permission-modes.js +0 -82
- package/dist/policy-packs/builtin/understanding-before-execution/measured-permission-modes.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/permission-mode-observations.d.ts +0 -71
- package/dist/policy-packs/builtin/understanding-before-execution/permission-mode-observations.js +0 -175
- package/dist/policy-packs/builtin/understanding-before-execution/permission-mode-observations.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/persisted-reports.d.ts +0 -620
- package/dist/policy-packs/builtin/understanding-before-execution/persisted-reports.js +0 -1047
- package/dist/policy-packs/builtin/understanding-before-execution/persisted-reports.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/post-tool-use-boundary.d.ts +0 -128
- package/dist/policy-packs/builtin/understanding-before-execution/post-tool-use-boundary.js +0 -213
- package/dist/policy-packs/builtin/understanding-before-execution/post-tool-use-boundary.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/stay-in-scope-config.d.ts +0 -129
- package/dist/policy-packs/builtin/understanding-before-execution/stay-in-scope-config.js +0 -166
- package/dist/policy-packs/builtin/understanding-before-execution/stay-in-scope-config.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/task-markers.d.ts +0 -164
- package/dist/policy-packs/builtin/understanding-before-execution/task-markers.js +0 -275
- package/dist/policy-packs/builtin/understanding-before-execution/task-markers.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution-runtime.d.ts +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution-runtime.js +0 -10
- package/dist/policy-packs/builtin/understanding-before-execution-runtime.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution.d.ts +0 -526
- package/dist/policy-packs/builtin/understanding-before-execution.js +0 -1074
- package/dist/policy-packs/builtin/understanding-before-execution.js.map +0 -1
- package/dist/policy-packs/permission-translator.d.ts +0 -9
- package/dist/policy-packs/permission-translator.js +0 -76
- package/dist/policy-packs/permission-translator.js.map +0 -1
- package/dist/runtime/action-envelope.d.ts +0 -64
- package/dist/runtime/action-envelope.js +0 -46
- package/dist/runtime/action-envelope.js.map +0 -1
- package/dist/runtime/approval-signing.d.ts +0 -111
- package/dist/runtime/approval-signing.js +0 -384
- package/dist/runtime/approval-signing.js.map +0 -1
- package/dist/runtime/bash-match-facts.d.ts +0 -60
- package/dist/runtime/bash-match-facts.js +0 -196
- package/dist/runtime/bash-match-facts.js.map +0 -1
- package/dist/runtime/bash-match-registry.d.ts +0 -112
- package/dist/runtime/bash-match-registry.js +0 -406
- package/dist/runtime/bash-match-registry.js.map +0 -1
- package/dist/runtime/bash-prefix-parse.d.ts +0 -31
- package/dist/runtime/bash-prefix-parse.js +0 -576
- package/dist/runtime/bash-prefix-parse.js.map +0 -1
- package/dist/runtime/command-normalize.d.ts +0 -658
- package/dist/runtime/command-normalize.js +0 -2410
- package/dist/runtime/command-normalize.js.map +0 -1
- package/dist/runtime/deletion-target-resolve.d.ts +0 -28
- package/dist/runtime/deletion-target-resolve.js +0 -1078
- package/dist/runtime/deletion-target-resolve.js.map +0 -1
- package/dist/runtime/destructive-shell-floor.d.ts +0 -19
- package/dist/runtime/destructive-shell-floor.js +0 -611
- package/dist/runtime/destructive-shell-floor.js.map +0 -1
- package/dist/runtime/environment-resolver.d.ts +0 -36
- package/dist/runtime/environment-resolver.js +0 -138
- package/dist/runtime/environment-resolver.js.map +0 -1
- package/dist/runtime/git-context.d.ts +0 -201
- package/dist/runtime/git-context.js +0 -422
- package/dist/runtime/git-context.js.map +0 -1
- package/dist/runtime/index.d.ts +0 -12
- package/dist/runtime/index.js +0 -13
- package/dist/runtime/index.js.map +0 -1
- package/dist/runtime/intercept.d.ts +0 -494
- package/dist/runtime/intercept.js +0 -1313
- package/dist/runtime/intercept.js.map +0 -1
- package/dist/runtime/kube-context.d.ts +0 -16
- package/dist/runtime/kube-context.js +0 -63
- package/dist/runtime/kube-context.js.map +0 -1
- package/dist/runtime/kubectl-target-parse.d.ts +0 -31
- package/dist/runtime/kubectl-target-parse.js +0 -249
- package/dist/runtime/kubectl-target-parse.js.map +0 -1
- package/dist/runtime/ledger-add.d.ts +0 -16
- package/dist/runtime/ledger-add.js +0 -150
- package/dist/runtime/ledger-add.js.map +0 -1
- package/dist/runtime/ledger-writer.d.ts +0 -27
- package/dist/runtime/ledger-writer.js +0 -46
- package/dist/runtime/ledger-writer.js.map +0 -1
- package/dist/runtime/pause-sentinel.d.ts +0 -60
- package/dist/runtime/pause-sentinel.js +0 -156
- package/dist/runtime/pause-sentinel.js.map +0 -1
- package/dist/runtime/pending-approval.d.ts +0 -23
- package/dist/runtime/pending-approval.js +0 -67
- package/dist/runtime/pending-approval.js.map +0 -1
- package/dist/runtime/read-only-bash.d.ts +0 -141
- package/dist/runtime/read-only-bash.js +0 -2204
- package/dist/runtime/read-only-bash.js.map +0 -1
- package/dist/runtime/recovery-git-commit.d.ts +0 -22
- package/dist/runtime/recovery-git-commit.js +0 -284
- package/dist/runtime/recovery-git-commit.js.map +0 -1
- package/dist/runtime/reject-malformed-session-id.d.ts +0 -8
- package/dist/runtime/reject-malformed-session-id.js +0 -16
- package/dist/runtime/reject-malformed-session-id.js.map +0 -1
- package/dist/runtime/risk-classifier.d.ts +0 -38
- package/dist/runtime/risk-classifier.js +0 -311
- package/dist/runtime/risk-classifier.js.map +0 -1
- package/dist/runtime/session-id.d.ts +0 -113
- package/dist/runtime/session-id.js +0 -193
- package/dist/runtime/session-id.js.map +0 -1
- package/dist/runtime/shell-word.d.ts +0 -62
- package/dist/runtime/shell-word.js +0 -410
- package/dist/runtime/shell-word.js.map +0 -1
- package/dist/runtime/task-providers/agent-tasks.d.ts +0 -103
- package/dist/runtime/task-providers/agent-tasks.js +0 -245
- package/dist/runtime/task-providers/agent-tasks.js.map +0 -1
- package/dist/runtime/when-eval.d.ts +0 -62
- package/dist/runtime/when-eval.js +0 -212
- package/dist/runtime/when-eval.js.map +0 -1
- package/dist/runtime/workflow-policies.d.ts +0 -207
- package/dist/runtime/workflow-policies.js +0 -596
- package/dist/runtime/workflow-policies.js.map +0 -1
- package/dist/schema/audit.d.ts +0 -71
- package/dist/schema/audit.js +0 -32
- package/dist/schema/audit.js.map +0 -1
- package/dist/schema/doctor.d.ts +0 -25
- package/dist/schema/doctor.js +0 -23
- package/dist/schema/doctor.js.map +0 -1
- package/dist/schema/environments.d.ts +0 -215
- package/dist/schema/environments.js +0 -101
- package/dist/schema/environments.js.map +0 -1
- package/dist/schema/extract.d.ts +0 -9
- package/dist/schema/extract.js +0 -86
- package/dist/schema/extract.js.map +0 -1
- package/dist/schema/permission-profiles.d.ts +0 -2292
- package/dist/schema/permission-profiles.js +0 -60
- package/dist/schema/permission-profiles.js.map +0 -1
- package/dist/schema/policies.d.ts +0 -974
- package/dist/schema/policies.js +0 -298
- package/dist/schema/policies.js.map +0 -1
- package/dist/schema/requires.d.ts +0 -131
- package/dist/schema/requires.js +0 -88
- package/dist/schema/requires.js.map +0 -1
- package/dist/schema/risk.d.ts +0 -144
- package/dist/schema/risk.js +0 -194
- package/dist/schema/risk.js.map +0 -1
- package/dist/schema/session-start-preflight.d.ts +0 -10
- package/dist/schema/session-start-preflight.js +0 -106
- package/dist/schema/session-start-preflight.js.map +0 -1
- package/dist/schema/stale-base-check.d.ts +0 -18
- package/dist/schema/stale-base-check.js +0 -37
- package/dist/schema/stale-base-check.js.map +0 -1
- package/dist/schema/toolchain-parity.d.ts +0 -21
- package/dist/schema/toolchain-parity.js +0 -48
- package/dist/schema/toolchain-parity.js.map +0 -1
- package/dist/schema/workflows.d.ts +0 -519
- package/dist/schema/workflows.js +0 -81
- package/dist/schema/workflows.js.map +0 -1
- package/scripts/runtime-reality-docker-probe.mjs +0 -71
|
@@ -1,576 +0,0 @@
|
|
|
1
|
-
// Risk Gate resolver input — Bash command-prefix parser.
|
|
2
|
-
//
|
|
3
|
-
// Three normal POSIX shell idioms slip past the production environment
|
|
4
|
-
// resolver when only `process.env` and the hook's starting cwd (and, for
|
|
5
|
-
// the branch, its current `.git/HEAD`) are inspected:
|
|
6
|
-
//
|
|
7
|
-
// DATABASE_URL=postgres://prod terraform destroy # inline env
|
|
8
|
-
// cd /repos/prod-infra && terraform destroy # working-dir hop
|
|
9
|
-
// git switch main && rm -rf node_modules && ... # branch hop
|
|
10
|
-
//
|
|
11
|
-
// The hook intercept sees Claude Code's process env and starting cwd, so
|
|
12
|
-
// `env_var_patterns` and `branch_patterns` miss all three signals and the
|
|
13
|
-
// gate silently treats a prod mutation as non-prod.
|
|
14
|
-
//
|
|
15
|
-
// This parser extracts the leading idioms from a Bash command string so
|
|
16
|
-
// the resolver layer can merge them into its inputs before
|
|
17
|
-
// `environments.resolvers[]` runs. Three POSIX forms are supported in v1
|
|
18
|
-
// (kept narrow on purpose, see follow-up scope in the originating tasks):
|
|
19
|
-
//
|
|
20
|
-
// 1. Inline env: leading `\w+=value` tokens. A value is read as one
|
|
21
|
-
// shell word (see `readWord`): unquoted text, backslash escapes,
|
|
22
|
-
// single-quoted parts (literal) and double-quoted parts (literal, no
|
|
23
|
-
// $ interpolation in v1) glued together up to unescaped whitespace,
|
|
24
|
-
// so `VAR="say \"hi\""` is `say "hi"` and `VAR='it'\''s'` is `it's`
|
|
25
|
-
// (task b093911d). NOT covered, pinned by tests: ANSI-C `$'...'`
|
|
26
|
-
// (kept as the raw text, not decoded), `$VAR` / `$(...)` (kept as
|
|
27
|
-
// literal text), and `;` / `&` inside an UNQUOTED value (they do not
|
|
28
|
-
// end it).
|
|
29
|
-
// 2. cd prefix: a single leading `cd <path> [&&|;] ...`. The path is
|
|
30
|
-
// read as the same kind of shell word, ended at an unquoted `;` or
|
|
31
|
-
// `&`. No `pushd`, no subshell `(cd X && ...)`, no `bash -c`.
|
|
32
|
-
// 3. git branch switch: a single leading `git [-C <path>]
|
|
33
|
-
// (switch|checkout) <branch> [&&|;] ...` (task 341e024b). The
|
|
34
|
-
// `<branch>` must be a plain, literal token, unquoted OR quoted
|
|
35
|
-
// (single- or double-quoted, surrounding quotes stripped — same
|
|
36
|
-
// quoted-literal handling `cd`'s path token gets, task 341e024b fix
|
|
37
|
-
// round 1: a quoted `"main"`/`'main'` used to read as the literal
|
|
38
|
-
// 6-character string `"main"` including the quote characters,
|
|
39
|
-
// which never matches a `branch_patterns` entry like `main` and so
|
|
40
|
-
// silently defeated the gate). A `-`-prefixed first argument (`-`,
|
|
41
|
-
// `--`, `-b`, ...; this is how `git checkout -- <path>`'s
|
|
42
|
-
// file-restore form is excluded) or an unquoted `$VAR`/`${VAR}`
|
|
43
|
-
// shell variable is left unresolved (`branchTarget: null`) rather
|
|
44
|
-
// than guessed; a token that STARTS with a quote and carries an
|
|
45
|
-
// unescaped `$` in a double-quoted part (`"release/$V"`) is treated
|
|
46
|
-
// the same way (not guessed) since double quotes DO interpolate in
|
|
47
|
-
// real bash and this parser does not evaluate the shell
|
|
48
|
-
// environment. A token that does NOT start with a quote but carries
|
|
49
|
-
// such a `$` mid-word (`release/"$V"`) is read raw, quotes included,
|
|
50
|
-
// exactly as before the escape-aware reader: bash expands it, so the
|
|
51
|
-
// branch is unknown, but the raw word still matches a glob like
|
|
52
|
-
// `release/*` and the clauses behind it (a later `cd`, the kubectl
|
|
53
|
-
// remainder) stay reachable. A single-quoted token is always taken
|
|
54
|
-
// literally, since single quotes never interpolate. The optional
|
|
55
|
-
// `-C <path>` is recognized so it does not block the match, but its
|
|
56
|
-
// value is discarded: the ONLY thing this idiom feeds the resolver
|
|
57
|
-
// is the branch name being switched TO (see
|
|
58
|
-
// `src/cli/policy/intercept.ts`'s merge, which is upgrade-only —
|
|
59
|
-
// unlike the `cd` merge below, a resolved branch target here can
|
|
60
|
-
// only push the resolved environment to something MORE dangerous,
|
|
61
|
-
// never less).
|
|
62
|
-
//
|
|
63
|
-
// LIMIT, stated so a maintainer does not over-trust this idiom's
|
|
64
|
-
// coverage: only the FIRST leading branch switch is captured. A
|
|
65
|
-
// chained `git switch dev && git switch main && rm ...` resolves
|
|
66
|
-
// `branchTarget` as `dev`, never `main` — multi-switch parsing
|
|
67
|
-
// (walking past the first `&&` to find a SECOND switch) is
|
|
68
|
-
// deliberately not built; it would widen the parser's surface
|
|
69
|
-
// toward the false-positive class task dbc6d303 already measured
|
|
70
|
-
// (branch-shaped tokens picked up from further into a command that
|
|
71
|
-
// is not actually a chained branch hop).
|
|
72
|
-
//
|
|
73
|
-
// The clauses may appear in any order relative to each other (`cd /x &&
|
|
74
|
-
// VAR=v cmd`, `VAR=v cd /x && cmd`, `cd /x && git switch main && cmd`,
|
|
75
|
-
// ...); the parser walks up to two passes before giving up.
|
|
76
|
-
//
|
|
77
|
-
// On a syntactically broken prefix (unterminated quote, missing `&&`
|
|
78
|
-
// after `cd <path>` / a switch-or-checkout branch) the parser falls
|
|
79
|
-
// through cleanly: the malformed prefix is not consumed, the
|
|
80
|
-
// resolver-side fallback to process env / hook cwd holds. There are no
|
|
81
|
-
// thrown errors from this module.
|
|
82
|
-
//
|
|
83
|
-
// ESCAPES VS FALL-THROUGH (task b093911d): for a gate that SEARCHES for
|
|
84
|
-
// production indicators, falling through is not the safe direction, a
|
|
85
|
-
// dropped `cd` target or env value hides the very signal being looked
|
|
86
|
-
// for. So a quoted word is decoded the way bash reads it instead of
|
|
87
|
-
// being abandoned when it contains a backslash. Two places keep the OLD
|
|
88
|
-
// reading on purpose: a word whose quote only an escaped quote could
|
|
89
|
-
// close (`VAR="abc\" cd /x && y`, an unterminated string for bash), where
|
|
90
|
-
// the first matching quote ends the word, and a branch word that does not
|
|
91
|
-
// start with a quote but has a `$` in a double-quoted part (form 3).
|
|
92
|
-
//
|
|
93
|
-
// ACCEPTANCE RULE (task b093911d): a reader that changes word boundaries
|
|
94
|
-
// cannot promise "nothing extracted before is lost", so this change is
|
|
95
|
-
// held to a signal-level rule instead, measured against the pre-change
|
|
96
|
-
// parser: (i) no production signal (env value, branch, cd target,
|
|
97
|
-
// kubectl remainder) that the old parser saw and this one does not, on a
|
|
98
|
-
// named high-risk shape set (plain, quoted and escaped env values and cd
|
|
99
|
-
// paths, literal, quoted and `release/"$V"` branches followed by a cd or
|
|
100
|
-
// kubectl, `__proto__=`, the `'\''` idiom, `\"` in double quotes) and on
|
|
101
|
-
// a replay of real agent commands; (ii) fewer missed signals than the old
|
|
102
|
-
// parser on fixed-seed generated corpora with bash as referee, for env,
|
|
103
|
-
// branch and cd from a non-prod cwd; (iii) every remaining new miss
|
|
104
|
-
// belongs to a named residual class whose plain twin the old parser
|
|
105
|
-
// already misses; (iv) the cd downgrades from a prod cwd are reported with
|
|
106
|
-
// numbers. What was measured against that rule is in the CHANGELOG entry
|
|
107
|
-
// and the pull request; the cd-target arms of
|
|
108
|
-
// `scripts/measure-bash-prefix-parse.mjs` show no lost honest target
|
|
109
|
-
// against master and the shipped release (11 of 17 arms prove nothing).
|
|
110
|
-
// Known residuals, not covered. The old parser already gets the plain
|
|
111
|
-
// twin of each of the first four wrong, so they are follow-up work for
|
|
112
|
-
// the prefix walk; the last two are shapes outside the high-risk set,
|
|
113
|
-
// pinned by tests:
|
|
114
|
-
// - OPERATOR SWALLOWED BY AN ENV WORD: an inline env word that does not
|
|
115
|
-
// start with a quote swallows unquoted `;`, `&`, `|` and `||` (the
|
|
116
|
-
// plain `A=x|| cd /t && y` always has; an escape-led or mid-quote word
|
|
117
|
-
// now does too, kept so `V=\"; W=/tmp cmd` still yields `W` and so a
|
|
118
|
-
// clause bash runs after a short circuit is still reached). So a `cd`
|
|
119
|
-
// or assignment behind the operator is read as a leading one: a
|
|
120
|
-
// phantom `cd` bash never runs (`A=a\ b|| cd /t && y`), or a later
|
|
121
|
-
// backgrounded assignment that overrides the value bash keeps
|
|
122
|
-
// (`D=a"b c"; D=dev&T` reads `dev&T`, plain twin `D=x; D=dev&T`);
|
|
123
|
-
// - PLAIN PATH ACROSS `|`: a plain `cd` path ends at whitespace, `;` or
|
|
124
|
-
// `&` only, so `cd /srv/p|rod; T` reads `/srv/p|rod` where bash runs
|
|
125
|
-
// `cd /srv/p` in a pipeline;
|
|
126
|
-
// - FIRST CD ONLY, AND-LIST BACKGROUNDED: only the first leading `cd` is
|
|
127
|
-
// read (a later `cd` wins in bash), and a `cd` in an and-list that a
|
|
128
|
-
// later `&` backgrounds is read although bash runs it in a subshell;
|
|
129
|
-
// - WORD FOLLOWED BY MORE WORDS: a cd or branch word with no `&&` / `;`
|
|
130
|
-
// right behind it yields no clause, which now also covers an escaped
|
|
131
|
-
// `;` inside the word (`git switch release/1.2\; cd dev && T` passes
|
|
132
|
-
// `release/1.2;`, `cd`, `dev` to git), plain twin
|
|
133
|
-
// `git switch release/1 checkout main && T`;
|
|
134
|
-
// - a `cd` path or branch word that carries a quote or an escape and is
|
|
135
|
-
// ended at an unquoted `|`, `<`, `>`, `(` or `)` (`cd /srv/p|ro"d"`)
|
|
136
|
-
// rejects its clause and stops the prefix walk;
|
|
137
|
-
// - ANSI-C `$'...'` and `$VAR` / `$(...)` are kept as raw text, so a
|
|
138
|
-
// value glued to an unset variable (`D='o'$d`) reads `o$d`.
|
|
139
|
-
// Because this reader now reads more quoted and escaped `cd` paths, the
|
|
140
|
-
// first three classes also produce more cd DOWNGRADES from a prod cwd
|
|
141
|
-
// than the old parser did (a non-prod `cd` that bash does not end in);
|
|
142
|
-
// that trade is measured and accepted in the pull request.
|
|
143
|
-
//
|
|
144
|
-
// MEASUREMENT RULE (task 47297478): any claim about this parser's
|
|
145
|
-
// CD-TARGET extraction versus another build (lost or gained `cdTarget`
|
|
146
|
-
// values) must come from scripts/measure-bash-prefix-parse.mjs, the
|
|
147
|
-
// per-arm-gated corpus with real bash as referee. Three consecutive
|
|
148
|
-
// ad-hoc corpora in the b093911d run reported "0 lost" while being
|
|
149
|
-
// structurally unable to report a loss; that tool's self-test rebuilds
|
|
150
|
-
// exactly that failure and demands the gate catch it. The tool does NOT
|
|
151
|
-
// measure `inlineEnv` or `branchTarget` extraction — claims about those
|
|
152
|
-
// have no instrument yet and need their own measurement.
|
|
153
|
-
/**
|
|
154
|
-
* Parse leading inline-env and `cd <path>` idioms from a Bash command
|
|
155
|
-
* string. Returns an empty `inlineEnv` and `cdTarget:null` when neither
|
|
156
|
-
* idiom matches. Never throws.
|
|
157
|
-
*/
|
|
158
|
-
export function parseBashPrefix(command) {
|
|
159
|
-
if (typeof command !== "string" || command.length === 0) {
|
|
160
|
-
return { inlineEnv: newEnvMap(), cdTarget: null, branchTarget: null, remainderStart: 0 };
|
|
161
|
-
}
|
|
162
|
-
const inlineEnv = newEnvMap();
|
|
163
|
-
let cdTarget = null;
|
|
164
|
-
let branchTarget = null;
|
|
165
|
-
let cursor = 0;
|
|
166
|
-
// Two passes catch e.g. `cd /x && VAR=v cmd`, `VAR=v cd /x && cmd`, and
|
|
167
|
-
// `cd /x && git switch main && cmd` (the last resolves fully within a
|
|
168
|
-
// single pass — cd then switch are tried back to back below — the
|
|
169
|
-
// second pass just confirms nothing more is left to consume). A third
|
|
170
|
-
// pass would only fire on a redundant prefix; bail to keep this
|
|
171
|
-
// bounded.
|
|
172
|
-
for (let pass = 0; pass < 2; pass++) {
|
|
173
|
-
const before = cursor;
|
|
174
|
-
cursor = consumeInlineEnv(command, cursor, inlineEnv);
|
|
175
|
-
if (cdTarget === null) {
|
|
176
|
-
const cd = consumeLeadingCd(command, cursor);
|
|
177
|
-
if (cd !== null) {
|
|
178
|
-
cdTarget = cd.path;
|
|
179
|
-
cursor = cd.next;
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
if (branchTarget === null) {
|
|
183
|
-
const sw = consumeLeadingGitSwitch(command, cursor);
|
|
184
|
-
if (sw !== null) {
|
|
185
|
-
branchTarget = sw.branch;
|
|
186
|
-
cursor = sw.next;
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
if (cursor === before)
|
|
190
|
-
break;
|
|
191
|
-
}
|
|
192
|
-
return { inlineEnv, cdTarget, branchTarget, remainderStart: cursor };
|
|
193
|
-
}
|
|
194
|
-
const WS = /\s/;
|
|
195
|
-
const VAR_START = /[A-Za-z_]/;
|
|
196
|
-
const VAR_CONT = /[A-Za-z0-9_]/;
|
|
197
|
-
/**
|
|
198
|
-
* The `inlineEnv` map. A null-prototype object, so an assignment to a
|
|
199
|
-
* name that exists on `Object.prototype` is kept instead of lost:
|
|
200
|
-
* `into["__proto__"] = value` on a plain `{}` runs the prototype
|
|
201
|
-
* setter, which ignores a string, so `__proto__=/prod cd /x && ...`
|
|
202
|
-
* used to drop the assignment without a trace. The same shape also
|
|
203
|
-
* means a lookup of a name that was never assigned (`constructor`,
|
|
204
|
-
* `toString`) reads as `undefined` instead of an inherited function.
|
|
205
|
-
* Spreading it into a plain object (what the resolver does) creates
|
|
206
|
-
* own data properties, `__proto__` included.
|
|
207
|
-
*/
|
|
208
|
-
function newEnvMap() {
|
|
209
|
-
return Object.create(null);
|
|
210
|
-
}
|
|
211
|
-
/** Unquoted, unescaped characters that end a word (see `readWord` for where the old reading is kept instead). */
|
|
212
|
-
const WORD_STOPS = ";&|<>()";
|
|
213
|
-
/** Extra word terminators of a plain inline env value (none) and of a plain `cd` path / branch token. */
|
|
214
|
-
const ENV_PLAIN_STOPS = "";
|
|
215
|
-
const PATH_PLAIN_STOPS = ";&";
|
|
216
|
-
/**
|
|
217
|
-
* Read one shell word starting at `start`, the way bash does: a run of
|
|
218
|
-
* unquoted text, backslash escapes, single-quoted parts and double-quoted
|
|
219
|
-
* parts, glued together until the first unquoted, unescaped whitespace
|
|
220
|
-
* (task b093911d). `'it'\''s fine'` is therefore ONE word (`it's fine`),
|
|
221
|
-
* and so is `"say \"hi\""`.
|
|
222
|
-
*
|
|
223
|
-
* - Outside quotes `\x` is the literal `x`; a backslash-newline pair
|
|
224
|
-
* vanishes (line continuation); a backslash that ends the string is a
|
|
225
|
-
* literal backslash (bash does the same for `bash -c 'VAR=a\'`).
|
|
226
|
-
* - In single quotes nothing is special, a backslash included.
|
|
227
|
-
* - In double quotes a backslash escapes only `"`, `\`, `$`, `` ` `` and
|
|
228
|
-
* a newline; before any other character it stays a literal backslash.
|
|
229
|
-
* `$VAR` / `$(...)` are NOT evaluated: they stay literal text (v1).
|
|
230
|
-
* - An unquoted `$'...'` (ANSI-C quoting) is NOT decoded: the raw text
|
|
231
|
-
* including its `$'` and `'` is kept, so the value is no worse than
|
|
232
|
-
* before (explicitly not covered).
|
|
233
|
-
*
|
|
234
|
-
* Pre-existing behaviour that is kept to limit what the new reader can
|
|
235
|
-
* lose (bash itself ends a word at every unquoted shell metacharacter;
|
|
236
|
-
* this is not a no-loss guarantee, see the module doc's residuals):
|
|
237
|
-
* - a word with no quote and no backslash in it is read exactly as
|
|
238
|
-
* before (`readWordLegacy`): an inline env value ends at whitespace
|
|
239
|
-
* only, so it swallows an unquoted `;`, `&`, `|`, ...; a `cd` path or
|
|
240
|
-
* branch token (`plainStops` = `;&`) ends at whitespace or `;` / `&`;
|
|
241
|
-
* - an inline env word that carries an escape or a mid-word quote but
|
|
242
|
-
* does not START with a quote (`swallowOps`) keeps swallowing the
|
|
243
|
-
* same operators, because the old reading did and a later assignment
|
|
244
|
-
* behind them (`V=\"& W=/tmp cmd`) was extracted through it. That
|
|
245
|
-
* includes `|` and `||`, so `A=a\ b|| cd /x && y` reads the `cd` like
|
|
246
|
-
* the plain `A=x|| cd /x && y` always has (a known phantom, not
|
|
247
|
-
* covered); ending the word at `||` was tried and lost honest clauses
|
|
248
|
-
* that bash runs after the short circuit;
|
|
249
|
-
* - a word that STARTS with a quote, and every `cd` / branch word, ends
|
|
250
|
-
* at an unquoted, unescaped `;`, `&`, `|`, `<`, `>`, `(` or `)`, so
|
|
251
|
-
* `A='a b'|| cd /x && y` ends the value at `||` and never reads the
|
|
252
|
-
* `cd` behind a short-circuit or a pipe as a leading one (the old
|
|
253
|
-
* reading also stopped right after the closing quote).
|
|
254
|
-
*
|
|
255
|
-
* Returns null when a quote has no closing quote. Never throws.
|
|
256
|
-
*/
|
|
257
|
-
function readWord(s, start, plainStops, swallowOps) {
|
|
258
|
-
let end = start;
|
|
259
|
-
while (end < s.length && !WS.test(s[end]) && !plainStops.includes(s[end]))
|
|
260
|
-
end++;
|
|
261
|
-
if (!/['"\\]/.test(s.slice(start, end)))
|
|
262
|
-
return readWordLegacy(s, start, plainStops);
|
|
263
|
-
const swallow = swallowOps && s[start] !== "'" && s[start] !== '"';
|
|
264
|
-
const stops = swallow ? "" : WORD_STOPS;
|
|
265
|
-
let i = start;
|
|
266
|
-
let value = "";
|
|
267
|
-
let interpolates = false;
|
|
268
|
-
while (i < s.length) {
|
|
269
|
-
const c = s[i];
|
|
270
|
-
if (WS.test(c) || stops.includes(c))
|
|
271
|
-
break;
|
|
272
|
-
if (c === "'") {
|
|
273
|
-
const end = s.indexOf("'", i + 1);
|
|
274
|
-
if (end < 0)
|
|
275
|
-
return null;
|
|
276
|
-
value += s.slice(i + 1, end);
|
|
277
|
-
i = end + 1;
|
|
278
|
-
}
|
|
279
|
-
else if (c === '"') {
|
|
280
|
-
i++;
|
|
281
|
-
let closed = false;
|
|
282
|
-
while (i < s.length) {
|
|
283
|
-
const d = s[i];
|
|
284
|
-
if (d === '"') {
|
|
285
|
-
closed = true;
|
|
286
|
-
i++;
|
|
287
|
-
break;
|
|
288
|
-
}
|
|
289
|
-
if (d === "\\" && i + 1 < s.length) {
|
|
290
|
-
const e = s[i + 1];
|
|
291
|
-
if (e === '"' || e === "\\" || e === "$" || e === "`") {
|
|
292
|
-
value += e;
|
|
293
|
-
i += 2;
|
|
294
|
-
continue;
|
|
295
|
-
}
|
|
296
|
-
if (e === "\n") {
|
|
297
|
-
i += 2;
|
|
298
|
-
continue;
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
else if (d === "$") {
|
|
302
|
-
interpolates = true;
|
|
303
|
-
}
|
|
304
|
-
value += d;
|
|
305
|
-
i++;
|
|
306
|
-
}
|
|
307
|
-
if (!closed)
|
|
308
|
-
return null;
|
|
309
|
-
}
|
|
310
|
-
else if (c === "\\") {
|
|
311
|
-
if (i + 1 < s.length) {
|
|
312
|
-
if (s[i + 1] !== "\n")
|
|
313
|
-
value += s[i + 1];
|
|
314
|
-
i += 2;
|
|
315
|
-
}
|
|
316
|
-
else {
|
|
317
|
-
value += c;
|
|
318
|
-
i++;
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
else if (c === "$" && s[i + 1] === "'") {
|
|
322
|
-
let j = i + 2;
|
|
323
|
-
while (j < s.length && s[j] !== "'")
|
|
324
|
-
j += s[j] === "\\" ? 2 : 1;
|
|
325
|
-
if (j >= s.length)
|
|
326
|
-
return null;
|
|
327
|
-
value += s.slice(i, j + 1);
|
|
328
|
-
i = j + 1;
|
|
329
|
-
}
|
|
330
|
-
else {
|
|
331
|
-
value += c;
|
|
332
|
-
i++;
|
|
333
|
-
}
|
|
334
|
-
}
|
|
335
|
-
return { value, next: i, interpolates };
|
|
336
|
-
}
|
|
337
|
-
/**
|
|
338
|
-
* The reading this module used before it knew about escapes: a word that
|
|
339
|
-
* opens with a quote ends at the FIRST matching quote character, any
|
|
340
|
-
* other word ends at whitespace (and at any character of `plainStops`).
|
|
341
|
-
* Kept as the fall-back for a word `readWord` cannot terminate, so that
|
|
342
|
-
* word still yields what the old reading yielded (`VAR="abc\" cd /x && y`
|
|
343
|
-
* is an unterminated string for bash, but the old reading still yields
|
|
344
|
-
* `VAR` and the `cd`). Null only for a quote with no closing quote at all.
|
|
345
|
-
*/
|
|
346
|
-
function readWordLegacy(s, start, plainStops) {
|
|
347
|
-
const first = s[start];
|
|
348
|
-
if (first === "'" || first === '"') {
|
|
349
|
-
const end = s.indexOf(first, start + 1);
|
|
350
|
-
if (end < 0)
|
|
351
|
-
return null;
|
|
352
|
-
const value = s.slice(start + 1, end);
|
|
353
|
-
return { value, next: end + 1, interpolates: first === '"' && value.includes("$") };
|
|
354
|
-
}
|
|
355
|
-
let i = start;
|
|
356
|
-
while (i < s.length && !WS.test(s[i]) && !plainStops.includes(s[i]))
|
|
357
|
-
i++;
|
|
358
|
-
return { value: s.slice(start, i), next: i, interpolates: false };
|
|
359
|
-
}
|
|
360
|
-
/** `readWord`, else `readWordLegacy`; null only when no reading closes the quote. */
|
|
361
|
-
function readWordOrLegacy(s, start, plainStops, swallowOps) {
|
|
362
|
-
return readWord(s, start, plainStops, swallowOps) ?? readWordLegacy(s, start, plainStops);
|
|
363
|
-
}
|
|
364
|
-
function skipWs(s, i) {
|
|
365
|
-
while (i < s.length && WS.test(s[i]))
|
|
366
|
-
i++;
|
|
367
|
-
return i;
|
|
368
|
-
}
|
|
369
|
-
/**
|
|
370
|
-
* Consume zero or more leading `VAR=value` tokens. Each successful
|
|
371
|
-
* consumption registers into `into`. Returns the cursor position after
|
|
372
|
-
* the last consumed token, or the original cursor when nothing parsed
|
|
373
|
-
* (so the caller can try another prefix kind).
|
|
374
|
-
*
|
|
375
|
-
* On a syntactically broken token (e.g. unterminated quote) the broken
|
|
376
|
-
* token is NOT consumed and the function returns the cursor at the
|
|
377
|
-
* start of that token, preserving the rest of the command for fallback.
|
|
378
|
-
*
|
|
379
|
-
* QUOTE-MODEL DIVERGENCE, recorded so the next change here starts from
|
|
380
|
-
* the known state instead of rediscovering it (task 13e55484; updated
|
|
381
|
-
* by task b093911d): `command-normalize.ts`'s
|
|
382
|
-
* `consumeAssignment` is a SECOND quote model for the same leading
|
|
383
|
-
* `VAR=value` construction. Both now handle backslash escapes (outside
|
|
384
|
-
* single quotes) and chained quote runs (`'a b'"c d"`), but they stay
|
|
385
|
-
* two separate implementations (not unified), and this function
|
|
386
|
-
* extracts the VALUE (which the normaliser never needs). Neither model
|
|
387
|
-
* handles ANSI-C `$'...'` escapes; the normaliser side carries a
|
|
388
|
-
* one-directional guard so that divergence can only fall back to its
|
|
389
|
-
* pre-continuation behaviour, never swallow a gated head token.
|
|
390
|
-
*/
|
|
391
|
-
function consumeInlineEnv(s, start, into) {
|
|
392
|
-
let i = skipWs(s, start);
|
|
393
|
-
let lastGood = i;
|
|
394
|
-
while (i < s.length) {
|
|
395
|
-
const nameStart = i;
|
|
396
|
-
if (!VAR_START.test(s[i]))
|
|
397
|
-
break;
|
|
398
|
-
i++;
|
|
399
|
-
while (i < s.length && VAR_CONT.test(s[i]))
|
|
400
|
-
i++;
|
|
401
|
-
if (s[i] !== "=")
|
|
402
|
-
break;
|
|
403
|
-
const name = s.slice(nameStart, i);
|
|
404
|
-
i++;
|
|
405
|
-
// Read the value as one shell word: unquoted text, backslash escapes
|
|
406
|
-
// and quoted parts glued together up to unescaped whitespace.
|
|
407
|
-
const word = readWordOrLegacy(s, i, ENV_PLAIN_STOPS, true);
|
|
408
|
-
if (word === null)
|
|
409
|
-
return lastGood;
|
|
410
|
-
const value = word.value;
|
|
411
|
-
i = word.next;
|
|
412
|
-
into[name] = value;
|
|
413
|
-
i = skipWs(s, i);
|
|
414
|
-
lastGood = i;
|
|
415
|
-
}
|
|
416
|
-
return lastGood;
|
|
417
|
-
}
|
|
418
|
-
/**
|
|
419
|
-
* Consume a single leading `cd <path> [&&|;]` clause. Returns
|
|
420
|
-
* `{path, next}` on success (where `next` is the cursor after the
|
|
421
|
-
* separator), or null when the prefix does not match. A path that is
|
|
422
|
-
* missing the trailing `&&` / `;` separator is treated as not-a-prefix
|
|
423
|
-
* (the operator typed `cd <path>` and nothing else — no useful resolver
|
|
424
|
-
* override).
|
|
425
|
-
*/
|
|
426
|
-
function consumeLeadingCd(s, start) {
|
|
427
|
-
let i = skipWs(s, start);
|
|
428
|
-
// Match `cd` followed by whitespace; do NOT match `cd&&` or `cdx`.
|
|
429
|
-
if (s[i] !== "c" || s[i + 1] !== "d")
|
|
430
|
-
return null;
|
|
431
|
-
if (i + 2 >= s.length || !WS.test(s[i + 2]))
|
|
432
|
-
return null;
|
|
433
|
-
i = skipWs(s, i + 2);
|
|
434
|
-
// Path: one shell word (quotes, escapes and quote runs as in an env value).
|
|
435
|
-
const word = readWordOrLegacy(s, i, PATH_PLAIN_STOPS, false);
|
|
436
|
-
if (word === null)
|
|
437
|
-
return null;
|
|
438
|
-
const path = word.value;
|
|
439
|
-
i = word.next;
|
|
440
|
-
if (path.length === 0)
|
|
441
|
-
return null;
|
|
442
|
-
i = skipWs(s, i);
|
|
443
|
-
if (s[i] === "&" && s[i + 1] === "&") {
|
|
444
|
-
return { path, next: i + 2 };
|
|
445
|
-
}
|
|
446
|
-
if (s[i] === ";") {
|
|
447
|
-
return { path, next: i + 1 };
|
|
448
|
-
}
|
|
449
|
-
return null;
|
|
450
|
-
}
|
|
451
|
-
/**
|
|
452
|
-
* Match a literal keyword at `i` on a word boundary — immediately
|
|
453
|
-
* followed by whitespace or end-of-string, never a partial-word match
|
|
454
|
-
* (`"git"` must not match inside `"github"`, `"switch"` must not match
|
|
455
|
-
* inside `"switching"`). Returns the cursor just past the keyword on
|
|
456
|
-
* success, or null.
|
|
457
|
-
*/
|
|
458
|
-
function matchKeyword(s, i, word) {
|
|
459
|
-
if (s.slice(i, i + word.length) !== word)
|
|
460
|
-
return null;
|
|
461
|
-
const after = i + word.length;
|
|
462
|
-
if (after < s.length && !WS.test(s[after]))
|
|
463
|
-
return null;
|
|
464
|
-
return after;
|
|
465
|
-
}
|
|
466
|
-
/**
|
|
467
|
-
* Skip a single path token (quoted or unquoted) starting at `i`.
|
|
468
|
-
* Returns the cursor just past it, or null on an unterminated quote or
|
|
469
|
-
* an empty token. Reads the token with the same `readWordOrLegacy` rules
|
|
470
|
-
* `consumeLeadingCd` uses for its path; this function's only caller
|
|
471
|
-
* (`consumeLeadingGitSwitch`'s `-C <path>` skip) discards the value.
|
|
472
|
-
*/
|
|
473
|
-
function skipPathToken(s, i) {
|
|
474
|
-
const word = readWordOrLegacy(s, i, PATH_PLAIN_STOPS, false);
|
|
475
|
-
return word !== null && word.next > i ? word.next : null;
|
|
476
|
-
}
|
|
477
|
-
/**
|
|
478
|
-
* Consume a single leading `git [-C <path>] (switch|checkout) <branch>
|
|
479
|
-
* [&&|;]` clause (task 341e024b). Returns `{branch, next}` on success,
|
|
480
|
-
* or null when the prefix does not match — including these deliberate
|
|
481
|
-
* exclusions, which return null WITHOUT guessing a branch:
|
|
482
|
-
*
|
|
483
|
-
* - A `-`-prefixed first argument after `switch`/`checkout` (`-`,
|
|
484
|
-
* `--`, `-b`, `-c`, `-C`, `--force`, ...). This specifically covers
|
|
485
|
-
* `git checkout -- <path>` (git's file-restore form — no branch is
|
|
486
|
-
* switched at all) as one case of the general rule "a flag is not a
|
|
487
|
-
* branch name", rather than special-casing `--` alone.
|
|
488
|
-
* - An unquoted `$VAR` / `${VAR}` first argument: a shell variable,
|
|
489
|
-
* not a literal branch name. Resolving it would require evaluating
|
|
490
|
-
* the shell environment, which this parser does not do (see module
|
|
491
|
-
* doc). A token that STARTS with a quote and carries an unescaped `$`
|
|
492
|
-
* in a double-quoted part is excluded the same way (double quotes
|
|
493
|
-
* interpolate in real bash); a single-quoted token is never excluded
|
|
494
|
-
* on this basis (single quotes never interpolate, so its content is
|
|
495
|
-
* always the literal branch name). A token that does not start with a
|
|
496
|
-
* quote but has such a `$` mid-word (`release/"$V"`) is NOT excluded:
|
|
497
|
-
* it is read raw (quotes kept) as before, so a glob like `release/*`
|
|
498
|
-
* and the clauses behind it still resolve.
|
|
499
|
-
* - A missing trailing `&&` / `;` separator, mirroring
|
|
500
|
-
* `consumeLeadingCd`'s identical rule: `git switch main` alone, with
|
|
501
|
-
* nothing following, has no "rest of command" for the branch
|
|
502
|
-
* candidate to apply to.
|
|
503
|
-
*
|
|
504
|
-
* The branch token is read as ONE shell word, with the same rules as a
|
|
505
|
-
* `cd` path (`readWordOrLegacy`, ended at whitespace / `;` / `&`): an
|
|
506
|
-
* unquoted slashed name like `task/foo` or `release/1.2`, a quoted
|
|
507
|
-
* literal with its quotes stripped (task 341e024b: a quote character
|
|
508
|
-
* left inside the token would never match a plain `branch_patterns`
|
|
509
|
-
* entry), and, since task b093911d, backslash escapes
|
|
510
|
-
* and chained quote runs (`'it'\''s'`, `"ma\"in"`, `feat\ x`).
|
|
511
|
-
*
|
|
512
|
-
* The optional leading `-C <path>` is recognized so it does not block
|
|
513
|
-
* the match, but its value is discarded — see the module doc's form 3
|
|
514
|
-
* for why only the branch name matters to the caller.
|
|
515
|
-
*/
|
|
516
|
-
function consumeLeadingGitSwitch(s, start) {
|
|
517
|
-
let i = skipWs(s, start);
|
|
518
|
-
const afterGit = matchKeyword(s, i, "git");
|
|
519
|
-
if (afterGit === null)
|
|
520
|
-
return null;
|
|
521
|
-
i = skipWs(s, afterGit);
|
|
522
|
-
const afterDashC = matchKeyword(s, i, "-C");
|
|
523
|
-
if (afterDashC !== null) {
|
|
524
|
-
i = skipWs(s, afterDashC);
|
|
525
|
-
const skipped = skipPathToken(s, i);
|
|
526
|
-
if (skipped === null)
|
|
527
|
-
return null;
|
|
528
|
-
i = skipWs(s, skipped);
|
|
529
|
-
}
|
|
530
|
-
let afterVerb = matchKeyword(s, i, "switch");
|
|
531
|
-
if (afterVerb === null)
|
|
532
|
-
afterVerb = matchKeyword(s, i, "checkout");
|
|
533
|
-
if (afterVerb === null)
|
|
534
|
-
return null;
|
|
535
|
-
i = skipWs(s, afterVerb);
|
|
536
|
-
if (i >= s.length)
|
|
537
|
-
return null;
|
|
538
|
-
// A `-`-prefixed or unquoted `$`-prefixed first argument is not a
|
|
539
|
-
// plain branch name — do not guess (see doc comment above).
|
|
540
|
-
if (s[i] === "-" || s[i] === "$")
|
|
541
|
-
return null;
|
|
542
|
-
// One shell word, quotes and escapes decoded like a `cd` path (task
|
|
543
|
-
// 341e024b for the quote stripping, task b093911d for the escapes). A word with an UNESCAPED `$` inside double quotes is left
|
|
544
|
-
// unresolved (real bash interpolates there; this parser does not
|
|
545
|
-
// evaluate the shell environment); a single-quoted `$` and an escaped
|
|
546
|
-
// `\$` are literal and kept.
|
|
547
|
-
let word = readWordOrLegacy(s, i, PATH_PLAIN_STOPS, false);
|
|
548
|
-
// A word that does NOT start with a quote but carries a `$` in a
|
|
549
|
-
// double-quoted part (`release/"$V"`): bash expands it, so the branch
|
|
550
|
-
// is unknown, but the pre-change reading kept the raw word (quotes
|
|
551
|
-
// included, which still matches a glob such as `release/*`) and went on
|
|
552
|
-
// to the clauses behind it (a later `cd`, the kubectl remainder). Fall
|
|
553
|
-
// back to that reading instead of dropping them. A word that starts
|
|
554
|
-
// with a double quote stays unresolved: the pre-change reading did the
|
|
555
|
-
// same. One that starts with a single quote cannot be saved either: the
|
|
556
|
-
// old reading ends it at the first closing quote, and a `$` part glued
|
|
557
|
-
// behind it means the next character is neither whitespace nor `;` / `&`.
|
|
558
|
-
if (word !== null && word.interpolates && s[i] !== '"') {
|
|
559
|
-
word = readWordLegacy(s, i, PATH_PLAIN_STOPS);
|
|
560
|
-
}
|
|
561
|
-
if (word === null || word.interpolates)
|
|
562
|
-
return null;
|
|
563
|
-
const branch = word.value;
|
|
564
|
-
if (branch.length === 0)
|
|
565
|
-
return null;
|
|
566
|
-
i = word.next;
|
|
567
|
-
i = skipWs(s, i);
|
|
568
|
-
if (s[i] === "&" && s[i + 1] === "&") {
|
|
569
|
-
return { branch, next: i + 2 };
|
|
570
|
-
}
|
|
571
|
-
if (s[i] === ";") {
|
|
572
|
-
return { branch, next: i + 1 };
|
|
573
|
-
}
|
|
574
|
-
return null;
|
|
575
|
-
}
|
|
576
|
-
//# sourceMappingURL=bash-prefix-parse.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bash-prefix-parse.js","sourceRoot":"","sources":["../../src/runtime/bash-prefix-parse.ts"],"names":[],"mappings":"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"}
|