@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,19 +0,0 @@
|
|
|
1
|
-
export interface ApproveReportHeredoc {
|
|
2
|
-
/** The executable command part (first line, heredoc intro stripped). */
|
|
3
|
-
command: string;
|
|
4
|
-
/** The heredoc delimiter word. */
|
|
5
|
-
delimiter: string;
|
|
6
|
-
/** The heredoc body — the Understanding Report markdown. */
|
|
7
|
-
body: string;
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* Parse the report-heredoc shape. Returns null unless the WHOLE command
|
|
11
|
-
* is exactly one clean `harness approve ...` line plus one single-quoted
|
|
12
|
-
* heredoc and nothing else.
|
|
13
|
-
*/
|
|
14
|
-
export declare function parseApproveReportHeredoc(command: string): ApproveReportHeredoc | null;
|
|
15
|
-
/**
|
|
16
|
-
* The operator-approval command `harness approve ...`. See module
|
|
17
|
-
* header for the accepted shapes and the rationale for strictness.
|
|
18
|
-
*/
|
|
19
|
-
export declare function isEscapeCommand(command: string): boolean;
|
|
@@ -1,190 +0,0 @@
|
|
|
1
|
-
// Escape-command matcher for the understanding-gate PreToolUse hook.
|
|
2
|
-
//
|
|
3
|
-
// The operator-approval command `harness approve ...` must not be
|
|
4
|
-
// hard-denied by the gate (denying the unblock surface makes the gate
|
|
5
|
-
// un-recoverable from inside the session), so the hook defers it to the
|
|
6
|
-
// interactive permission prompt instead. This module decides what
|
|
7
|
-
// qualifies. Deliberately strict: anything that could smuggle other work
|
|
8
|
-
// past the gate (chaining, substitution, redirection) is rejected.
|
|
9
|
-
//
|
|
10
|
-
// Two accepted shapes:
|
|
11
|
-
// 1. Single line: `harness approve ...` with no shell metacharacters.
|
|
12
|
-
// 2. Report heredoc (task 61fd36db): the same command with the
|
|
13
|
-
// Understanding Report attached as a quoted heredoc on stdin:
|
|
14
|
-
//
|
|
15
|
-
// harness approve understanding <<'UNDERSTANDING_REPORT'
|
|
16
|
-
// ## Understanding Report
|
|
17
|
-
// ...
|
|
18
|
-
// UNDERSTANDING_REPORT
|
|
19
|
-
//
|
|
20
|
-
// This is the report-capture channel for the interactive/operator
|
|
21
|
-
// path: the Stop-hook producer fires only at END of turn (after
|
|
22
|
-
// approve already ran), and current Claude Code builds do not
|
|
23
|
-
// reliably persist mid-turn assistant text to the transcript
|
|
24
|
-
// JSONL within the same instant this hook fires, so the command
|
|
25
|
-
// itself is the only channel that reliably carries the report to
|
|
26
|
-
// `harness approve understanding` for a human reading the prompt
|
|
27
|
-
// right now. As a bonus the operator reads the full report inside
|
|
28
|
-
// the permission prompt before approving.
|
|
29
|
-
//
|
|
30
|
-
// Under `-p` (no operator to read a prompt), slice 3's delegation
|
|
31
|
-
// path does not depend on this heredoc: the report lands in the
|
|
32
|
-
// transcript shortly afterwards, within a bounded poll window, and
|
|
33
|
-
// the child's own PreToolUse hook polls for it there instead (see
|
|
34
|
-
// `docs/okf/understanding-gate-auto-mode-signals.md`, "Chosen
|
|
35
|
-
// `report_scan.max_wait` default").
|
|
36
|
-
//
|
|
37
|
-
// Heredoc safety: the delimiter must be single-quoted (no parameter or
|
|
38
|
-
// command substitution inside the body), the command part before `<<`
|
|
39
|
-
// must match a strict character WHITELIST (so no quoting/escaping trick
|
|
40
|
-
// can change how the shell tokenizes the line — see
|
|
41
|
-
// heredocCommandPartIsClean), the terminator is the FIRST line exactly
|
|
42
|
-
// equal to the delimiter (mirroring shell semantics for a plain `<<'X'`
|
|
43
|
-
// intro, which the whitelist guarantees is the only intro that can
|
|
44
|
-
// reach it), and nothing but whitespace may follow it. Any deviation —
|
|
45
|
-
// unquoted delimiter, second redirect, escaped/quote-obscured intro,
|
|
46
|
-
// trailing commands, unterminated body — fails closed to the ordinary
|
|
47
|
-
// gate block.
|
|
48
|
-
/** Metacharacters rejected in the executable (non-heredoc-body) part. */
|
|
49
|
-
const COMMAND_META_RE = /[;&|<>]/;
|
|
50
|
-
// bash's actual lexical blank set: SPACE and TAB, nothing else.
|
|
51
|
-
// Ground-truthed against GNU bash with a PATH-stub harness (task
|
|
52
|
-
// 623640a5): of the 25 codepoints JS's generic `\s` class matches, only
|
|
53
|
-
// these two are stripped by bash as an insignificant separator between
|
|
54
|
-
// tokens on a line. Setting LF and CR aside (see below), the remaining
|
|
55
|
-
// 21 (NBSP U+00A0 and 18 further Unicode space-separator/line-separator/
|
|
56
|
-
// BOM codepoints; VT/FF too) glue onto the adjacent token as an ordinary
|
|
57
|
-
// word-constituent character instead. `\s` used to accept those
|
|
58
|
-
// characters here as if bash agreed they were whitespace, which let a
|
|
59
|
-
// report heredoc's delimiter word, as bash actually reads it, diverge
|
|
60
|
-
// from the word this matcher extracts (see `parseApproveReportHeredoc`
|
|
61
|
-
// below for the exploitable shape that produced). Every regex in this
|
|
62
|
-
// module that means "a separator bash will actually treat as blank
|
|
63
|
-
// here" uses `[ \t]`, never `\s`. LF and CR (the last 2 of the 23
|
|
64
|
-
// non-bash-blank codepoints) are deliberately excluded from this class:
|
|
65
|
-
// LF already splits lines before any of these regexes run, and CR is
|
|
66
|
-
// rejected by an explicit check in both callers, so neither needs
|
|
67
|
-
// blank-class treatment here. (25 total - 2 bash blanks = 23 non-bash-
|
|
68
|
-
// blank; 23 - 2 LF/CR = 21 = 1 NBSP + 18 further + 2 VT/FF; enumeration
|
|
69
|
-
// and exact figures pinned in tests/cli/pack-approve-escape.test.ts.)
|
|
70
|
-
function commandPartIsClean(part) {
|
|
71
|
-
if (COMMAND_META_RE.test(part))
|
|
72
|
-
return false;
|
|
73
|
-
if (part.includes("`") || part.includes("$("))
|
|
74
|
-
return false;
|
|
75
|
-
return /^harness[ \t]+approve\b/.test(part);
|
|
76
|
-
}
|
|
77
|
-
// The heredoc command part is held to a WHITELIST, not the blacklist
|
|
78
|
-
// above (review 2026-07-10, HIGH): a backslash-escaped redirect
|
|
79
|
-
// (`harness approve understanding \<<'UR'`) slipped the blacklist —
|
|
80
|
-
// the `<` characters were consumed by the heredoc-intro regex and `\`
|
|
81
|
-
// is not a rejected metachar — but bash reads `\<` as a literal `<`
|
|
82
|
-
// plus a file redirect, so no heredoc exists and the "body" lines
|
|
83
|
-
// execute as ordinary commands. A legitimate approve command part only
|
|
84
|
-
// ever contains the binary name, subcommand, flags, ids, and paths;
|
|
85
|
-
// everything else (backslashes, quotes, `$`, parens, globs) fails
|
|
86
|
-
// closed. The single-line shape keeps the blacklist for back-compat:
|
|
87
|
-
// it admits no `<` at all, so this divergence class cannot arise there.
|
|
88
|
-
const HEREDOC_COMMAND_PART_ALLOWED_RE = /^[A-Za-z0-9_ \t,./=:@~-]*$/;
|
|
89
|
-
function heredocCommandPartIsClean(part) {
|
|
90
|
-
if (!HEREDOC_COMMAND_PART_ALLOWED_RE.test(part))
|
|
91
|
-
return false;
|
|
92
|
-
return commandPartIsClean(part);
|
|
93
|
-
}
|
|
94
|
-
// Top-level boundary trim for the whole incoming command, used by both
|
|
95
|
-
// `isEscapeCommand` and `parseApproveReportHeredoc` before any parsing
|
|
96
|
-
// starts. MUST NOT be the generic `.trim()` (task 508a2d81, residual of
|
|
97
|
-
// 623640a5): `.trim()` strips every JS `\s` codepoint from the string's
|
|
98
|
-
// edges, which deletes a TRAILING line made only of a non-bash-blank
|
|
99
|
-
// whitespace codepoint (NBSP, U+2028, VT, FF, ...) before the
|
|
100
|
-
// `after.every(/^[ \t]*$/)` check a few lines below ever gets to see it
|
|
101
|
-
// — making that check unreachable through the public API for exactly the
|
|
102
|
-
// shape it exists to reject. Only TAB (0x09), SPACE (0x20), LF (0x0A),
|
|
103
|
-
// and CR (0x0D) are stripped here, and that is provably safe: TAB/SPACE
|
|
104
|
-
// are bash's actual lexical blanks (see the comment above
|
|
105
|
-
// `commandPartIsClean`), and a boundary run made of nothing but LF/CR
|
|
106
|
-
// can never hide non-blank content — it only ever produces additional,
|
|
107
|
-
// already-inert empty lines (LF is the line separator the module splits
|
|
108
|
-
// on; CR is independently rejected wherever it appears, mid-string or
|
|
109
|
-
// not, by the explicit `\r` checks in both callers below). Every OTHER
|
|
110
|
-
// `\s` codepoint is left untouched so it survives to the after-check
|
|
111
|
-
// (or, for a leading occurrence, so it correctly fails the strict
|
|
112
|
-
// `harness[ \t]+approve` / heredoc-intro matching instead of being
|
|
113
|
-
// silently normalized away as if it were insignificant).
|
|
114
|
-
function trimCommandBoundary(command) {
|
|
115
|
-
return command.replace(/^[ \t\r\n]+/, "").replace(/[ \t\r\n]+$/, "");
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Parse the report-heredoc shape. Returns null unless the WHOLE command
|
|
119
|
-
* is exactly one clean `harness approve ...` line plus one single-quoted
|
|
120
|
-
* heredoc and nothing else.
|
|
121
|
-
*/
|
|
122
|
-
export function parseApproveReportHeredoc(command) {
|
|
123
|
-
const trimmed = trimCommandBoundary(command);
|
|
124
|
-
const nl = trimmed.indexOf("\n");
|
|
125
|
-
if (nl === -1)
|
|
126
|
-
return null;
|
|
127
|
-
const head = trimmed.slice(0, nl);
|
|
128
|
-
// CR anywhere in the head means the line structure is not what the
|
|
129
|
-
// shell will see; fail closed. (Body CRs are inert data.)
|
|
130
|
-
if (head.includes("\r"))
|
|
131
|
-
return null;
|
|
132
|
-
// Lazy `.*?` + end-anchor: a second redirect after the heredoc intro
|
|
133
|
-
// forces the intro into the command part, where the metachar check
|
|
134
|
-
// rejects it. `[ \t]*` (not `\s*`) around the delimiter word: see the
|
|
135
|
-
// bash-blank comment above `commandPartIsClean` (task 623640a5): a
|
|
136
|
-
// non-bash-blank character here (e.g. NBSP) used to be accepted as
|
|
137
|
-
// insignificant trailing/leading whitespace, while bash actually glues
|
|
138
|
-
// it onto the quoted word, widening the REAL heredoc delimiter beyond
|
|
139
|
-
// what this capture group extracts and letting a body line close the
|
|
140
|
-
// heredoc a line early.
|
|
141
|
-
const m = /^(.*?)<<[ \t]*'([A-Z_][A-Z0-9_]*)'[ \t]*$/.exec(head);
|
|
142
|
-
if (!m)
|
|
143
|
-
return null;
|
|
144
|
-
// [ \t]-only right-trim (not the generic .trimEnd(), which strips every
|
|
145
|
-
// JS `\s` codepoint): a non-bash-blank character immediately before
|
|
146
|
-
// `<<` must reach heredocCommandPartIsClean's whitelist so it gets
|
|
147
|
-
// rejected there, not be silently stripped away first as if it were an
|
|
148
|
-
// insignificant separator bash would also treat as blank (task
|
|
149
|
-
// 623640a5 review). See the bash-blank comment above
|
|
150
|
-
// `commandPartIsClean`.
|
|
151
|
-
const commandPart = m[1].replace(/[ \t]*$/, "");
|
|
152
|
-
const delimiter = m[2];
|
|
153
|
-
if (!heredocCommandPartIsClean(commandPart))
|
|
154
|
-
return null;
|
|
155
|
-
const rest = trimmed.slice(nl + 1).split("\n");
|
|
156
|
-
// First line EXACTLY equal to the delimiter terminates the body — the
|
|
157
|
-
// same rule the shell applies — so a delimiter line smuggled early in
|
|
158
|
-
// the body shifts the terminator up and the trailing content check
|
|
159
|
-
// below rejects the command as a whole.
|
|
160
|
-
const termIdx = rest.findIndex((line) => line === delimiter);
|
|
161
|
-
if (termIdx === -1)
|
|
162
|
-
return null;
|
|
163
|
-
const after = rest.slice(termIdx + 1);
|
|
164
|
-
// [ \t]-only blank check (not the generic .trim(), which treats every
|
|
165
|
-
// JS `\s` codepoint as blank): a post-terminator line made only of
|
|
166
|
-
// non-bash-blank whitespace (e.g. NBSP, U+2028) is NOT inert to bash.
|
|
167
|
-
// PATH-stub-verified (task 623640a5 review) that bash actually looks
|
|
168
|
-
// up and attempts to execute such a line as a real command.
|
|
169
|
-
if (!after.every((line) => /^[ \t]*$/.test(line)))
|
|
170
|
-
return null;
|
|
171
|
-
return {
|
|
172
|
-
command: commandPart,
|
|
173
|
-
delimiter,
|
|
174
|
-
body: rest.slice(0, termIdx).join("\n"),
|
|
175
|
-
};
|
|
176
|
-
}
|
|
177
|
-
/**
|
|
178
|
-
* The operator-approval command `harness approve ...`. See module
|
|
179
|
-
* header for the accepted shapes and the rationale for strictness.
|
|
180
|
-
*/
|
|
181
|
-
export function isEscapeCommand(command) {
|
|
182
|
-
const trimmed = trimCommandBoundary(command);
|
|
183
|
-
if (!trimmed.includes("\n")) {
|
|
184
|
-
if (trimmed.includes("\r"))
|
|
185
|
-
return false;
|
|
186
|
-
return commandPartIsClean(trimmed);
|
|
187
|
-
}
|
|
188
|
-
return parseApproveReportHeredoc(trimmed) !== null;
|
|
189
|
-
}
|
|
190
|
-
//# sourceMappingURL=approve-escape.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"approve-escape.js","sourceRoot":"","sources":["../../../src/cli/pack/approve-escape.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
import type { LedgerWriteFn } from "../../runtime/ledger-writer.js";
|
|
2
|
-
/**
|
|
3
|
-
* Source string the CLAUDE CODE hook records on the audit-only ledger
|
|
4
|
-
* fact — the verb that actually made the write.
|
|
5
|
-
*/
|
|
6
|
-
export declare const AUTO_APPROVE_LEDGER_SOURCE = "harness-pack-hook-pre-tool-use";
|
|
7
|
-
/**
|
|
8
|
-
* The Codex hook's counterpart. A shared body must not stamp the Claude
|
|
9
|
-
* verb on a Codex write: the ledger fact is an audit surface, and an
|
|
10
|
-
* auditor reading `harness-pack-hook-pre-tool-use` on a Codex session
|
|
11
|
-
* would be reading a fact about a hook that never ran (reviewer round-1
|
|
12
|
-
* finding on slice 2). The `approvedBy` segment already distinguishes
|
|
13
|
-
* the runtimes; this makes the ledger row agree with it.
|
|
14
|
-
*/
|
|
15
|
-
export declare const AUTO_APPROVE_LEDGER_SOURCE_CODEX = "harness-pack-hook-codex-pre-tool-use";
|
|
16
|
-
/**
|
|
17
|
-
* Which second input the payload's own `session_id` is held against
|
|
18
|
-
* (ADR hardening item 1), chosen by the calling hook because the
|
|
19
|
-
* evidence a runtime actually provides differs:
|
|
20
|
-
*
|
|
21
|
-
* - `env`: the hook process carries the harness's session id in an
|
|
22
|
-
* environment variable (`$CLAUDE_CODE_SESSION_ID` for Claude Code).
|
|
23
|
-
* The payload field must equal it.
|
|
24
|
-
* - `transcript-path`: the payload names the session's transcript file
|
|
25
|
-
* and the hook checks that the NAME carries this session id and that
|
|
26
|
-
* the path resolves to an existing regular file (Codex, which carries
|
|
27
|
-
* no session-id environment variable at all).
|
|
28
|
-
*
|
|
29
|
-
* NEITHER IS A SECURITY BOUNDARY, and the comments inside the check say
|
|
30
|
-
* so. Both are CONSISTENCY checks of the same class: an agent that can
|
|
31
|
-
* compose the payload can compose both fields, and on Codex it can also
|
|
32
|
-
* create a file through Bash. What they buy is that a forgery has to
|
|
33
|
-
* fake two agreeing inputs (plus, on Codex, a file at the named path)
|
|
34
|
-
* instead of one, and that the mismatch is forensically distinct in the
|
|
35
|
-
* stderr trail.
|
|
36
|
-
*/
|
|
37
|
-
export type SessionConsistencyCheck = {
|
|
38
|
-
kind: "env";
|
|
39
|
-
variable: string;
|
|
40
|
-
} | {
|
|
41
|
-
kind: "transcript-path";
|
|
42
|
-
transcriptPath: unknown;
|
|
43
|
-
};
|
|
44
|
-
export interface AutoApproveAttemptArgs {
|
|
45
|
-
/** `harness.generated/`; `undefined` when it could not be resolved (injected-manifest test path). */
|
|
46
|
-
generatedDir: string | undefined;
|
|
47
|
-
/** The hook's resolved session id (equals `payloadSessionId` on every path that can succeed). */
|
|
48
|
-
sessionId: string;
|
|
49
|
-
/** RAW `session_id` from the event payload — NOT the env fallback (hardening item 1). */
|
|
50
|
-
payloadSessionId: unknown;
|
|
51
|
-
/** RAW `permission_mode` from the event payload. */
|
|
52
|
-
permissionMode: unknown;
|
|
53
|
-
/**
|
|
54
|
-
* Harness identifier baked into the minted marker's `approvedBy`
|
|
55
|
-
* (`auto-mode:<harness>:<mode>`). `CLAUDE_CODE_HARNESS` from the
|
|
56
|
-
* Claude Code hook, `CODEX_HARNESS` from the Codex hook.
|
|
57
|
-
*/
|
|
58
|
-
harness: string;
|
|
59
|
-
/**
|
|
60
|
-
* Source string for the audit-only ledger fact: the calling hook's own
|
|
61
|
-
* verb ({@link AUTO_APPROVE_LEDGER_SOURCE} /
|
|
62
|
-
* {@link AUTO_APPROVE_LEDGER_SOURCE_CODEX}).
|
|
63
|
-
*/
|
|
64
|
-
ledgerSource: string;
|
|
65
|
-
/**
|
|
66
|
-
* stderr prefix for every line this path writes, so a Codex-side
|
|
67
|
-
* diagnostic reads `harness pack hook codex: ...` like the rest of
|
|
68
|
-
* that hook's output. Defaults to the Claude Code hook's prefix.
|
|
69
|
-
*/
|
|
70
|
-
label?: string;
|
|
71
|
-
/** Which session-consistency evidence this runtime offers; see {@link SessionConsistencyCheck}. */
|
|
72
|
-
sessionConsistency: SessionConsistencyCheck;
|
|
73
|
-
/** The pack's `config` block, unparsed. */
|
|
74
|
-
packConfig: unknown;
|
|
75
|
-
/** Persisted-report directory. */
|
|
76
|
-
reportsDir: string;
|
|
77
|
-
/** Step 3's verdict: a marker FILE existed and failed signature verification. */
|
|
78
|
-
markerForged: boolean;
|
|
79
|
-
/**
|
|
80
|
-
* Names WHICH artifact tripped `markerForged` above, so the decline
|
|
81
|
-
* diagnostic can say what was actually forged instead of always saying
|
|
82
|
-
* "marker" (review finding: the flag already folds a forged in-flight
|
|
83
|
-
* subagent record into `markerForged`, but the wording never said so).
|
|
84
|
-
* Optional and defaults to `"marker"` when `markerForged` is true and
|
|
85
|
-
* this is omitted, matching the wording every caller produced before
|
|
86
|
-
* this field existed — the Codex hook still passes only `markerForged`
|
|
87
|
-
* and is unaffected.
|
|
88
|
-
*/
|
|
89
|
-
forgedKind?: "marker" | "inflight";
|
|
90
|
-
/**
|
|
91
|
-
* Slice 3 (agent-tasks 37ad0b05, ADR "Decision: two-key design"): a
|
|
92
|
-
* VALID, unexpired, cwd/task-matching delegation the calling hook has
|
|
93
|
-
* already verified for this child session. Present means key one is
|
|
94
|
-
* satisfied by the delegation instead of by a `when`-listed
|
|
95
|
-
* `permission_mode`, so a `-p` child whose payload carries `default`
|
|
96
|
-
* (or no mode at all) can still reach the report check.
|
|
97
|
-
*
|
|
98
|
-
* It is a PRE-AUTHORIZATION, not an approval: every other condition in
|
|
99
|
-
* this function stays exactly as it was, key two (the child's own
|
|
100
|
-
* `pending` report) very much included. The caller is responsible for
|
|
101
|
-
* the verification; this function never reads a delegation file
|
|
102
|
-
* itself, so there is no second, weaker verifier to keep in sync.
|
|
103
|
-
*/
|
|
104
|
-
delegation?: {
|
|
105
|
-
parentSessionId: string;
|
|
106
|
-
};
|
|
107
|
-
stderr: {
|
|
108
|
-
write(s: string): void;
|
|
109
|
-
};
|
|
110
|
-
/**
|
|
111
|
-
* Audit-only ledger writer, resolved LAZILY: called only after the
|
|
112
|
-
* opt-in (`auto_approve` parses) and the `when` allowlist have both
|
|
113
|
-
* passed, i.e. only on a call that could actually reach the ledger
|
|
114
|
-
* write later in this function. Every earlier decline (opt-in absent,
|
|
115
|
-
* mode not allowlisted, forged marker, session mismatch, key absent,
|
|
116
|
-
* report not eligible) never invokes this thunk, so an unconfigured or
|
|
117
|
-
* expensive ledger resolution costs nothing on the overwhelming
|
|
118
|
-
* majority of gated calls that never opted in. `write: null` means
|
|
119
|
-
* the ledger is unreachable (no `grounding-mcp` in the manifest, or
|
|
120
|
-
* the caller chose not to resolve one); the auto path then logs one
|
|
121
|
-
* line and continues. The ledger is never a gate input.
|
|
122
|
-
*/
|
|
123
|
-
resolveLedger: () => {
|
|
124
|
-
write: LedgerWriteFn | null;
|
|
125
|
-
reason?: string;
|
|
126
|
-
};
|
|
127
|
-
}
|
|
128
|
-
export type AutoApproveAttempt = {
|
|
129
|
-
approved: true;
|
|
130
|
-
/** `checkOperatorApprovalMarkers` detail for the freshly written marker. */
|
|
131
|
-
detail: string;
|
|
132
|
-
/** `auto-mode:<harness>:<mode>` as written into the signed marker. */
|
|
133
|
-
approvedBy: string;
|
|
134
|
-
markerPath: string;
|
|
135
|
-
reportPath: string;
|
|
136
|
-
reportContentHash: string;
|
|
137
|
-
} | {
|
|
138
|
-
approved: false;
|
|
139
|
-
reason: string;
|
|
140
|
-
};
|
|
141
|
-
/**
|
|
142
|
-
* Attempt the operator-opted-in auto-approval for this PreToolUse call.
|
|
143
|
-
* See the module header for placement and the fail-closed contract; the
|
|
144
|
-
* numbered steps below are conditions 1-6 of the ADR's Option A.
|
|
145
|
-
*/
|
|
146
|
-
export declare function attemptAutoApproval(args: AutoApproveAttemptArgs): Promise<AutoApproveAttempt>;
|