@lannguyensi/harness 0.64.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +64 -0
- package/README.md +46 -42
- package/dist/cli/add/index.js +17 -21
- package/dist/cli/add/index.js.map +1 -1
- package/dist/cli/adopt/derive.d.ts +2 -2
- package/dist/cli/adopt/derive.js +2 -19
- package/dist/cli/adopt/derive.js.map +1 -1
- package/dist/cli/adopt/index.d.ts +1 -1
- package/dist/cli/adopt/index.js +1 -12
- package/dist/cli/adopt/index.js.map +1 -1
- package/dist/cli/apply/apply.d.ts +20 -35
- package/dist/cli/apply/apply.js +61 -136
- package/dist/cli/apply/apply.js.map +1 -1
- package/dist/cli/apply/generate-codex-config.js +10 -58
- package/dist/cli/apply/generate-codex-config.js.map +1 -1
- package/dist/cli/apply/generate-memory-index.js +1 -2
- package/dist/cli/apply/generate-memory-index.js.map +1 -1
- package/dist/cli/apply/generate-opencode-config.d.ts +2 -10
- package/dist/cli/apply/generate-opencode-config.js +74 -113
- package/dist/cli/apply/generate-opencode-config.js.map +1 -1
- package/dist/cli/apply/generate-settings.d.ts +11 -64
- package/dist/cli/apply/generate-settings.js +27 -132
- package/dist/cli/apply/generate-settings.js.map +1 -1
- package/dist/cli/apply/index.d.ts +1 -1
- package/dist/cli/apply/index.js +1 -1
- package/dist/cli/apply/index.js.map +1 -1
- package/dist/cli/apply/install-codex-config.d.ts +153 -1
- package/dist/cli/apply/install-codex-config.js +445 -70
- package/dist/cli/apply/install-codex-config.js.map +1 -1
- package/dist/cli/apply/next-steps.d.ts +7 -0
- package/dist/cli/apply/next-steps.js +13 -1
- package/dist/cli/apply/next-steps.js.map +1 -1
- package/dist/cli/bounded-stdin.d.ts +0 -23
- package/dist/cli/bounded-stdin.js +2 -49
- package/dist/cli/bounded-stdin.js.map +1 -1
- package/dist/cli/describe.d.ts +1 -1
- package/dist/cli/describe.js +0 -3
- package/dist/cli/describe.js.map +1 -1
- package/dist/cli/diff/engine.d.ts +0 -11
- package/dist/cli/diff/engine.js +1 -17
- package/dist/cli/diff/engine.js.map +1 -1
- package/dist/cli/diff/index.js +14 -25
- package/dist/cli/diff/index.js.map +1 -1
- package/dist/cli/doctor/claude-mcp.d.ts +4 -19
- package/dist/cli/doctor/claude-mcp.js +11 -22
- package/dist/cli/doctor/claude-mcp.js.map +1 -1
- package/dist/cli/doctor/codex.d.ts +12 -14
- package/dist/cli/doctor/codex.js +31 -144
- package/dist/cli/doctor/codex.js.map +1 -1
- package/dist/cli/doctor/format.js +23 -345
- package/dist/cli/doctor/format.js.map +1 -1
- package/dist/cli/doctor/hook-liveness.d.ts +56 -0
- package/dist/cli/doctor/hook-liveness.js +455 -0
- package/dist/cli/doctor/hook-liveness.js.map +1 -0
- package/dist/cli/doctor/index.d.ts +13 -87
- package/dist/cli/doctor/index.js +57 -713
- package/dist/cli/doctor/index.js.map +1 -1
- package/dist/cli/doctor/opencode.d.ts +2 -1
- package/dist/cli/doctor/opencode.js.map +1 -1
- package/dist/cli/doctor/types.d.ts +21 -387
- package/dist/cli/doctor/types.js.map +1 -1
- package/dist/cli/drain-stdio.d.ts +31 -0
- package/dist/cli/drain-stdio.js +76 -0
- package/dist/cli/drain-stdio.js.map +1 -0
- package/dist/cli/export.d.ts +3 -1
- package/dist/cli/export.js +7 -16
- package/dist/cli/export.js.map +1 -1
- package/dist/cli/gate/codex-disable.d.ts +29 -0
- package/dist/cli/gate/codex-disable.js +195 -0
- package/dist/cli/gate/codex-disable.js.map +1 -0
- package/dist/cli/gate/codex-enable.d.ts +41 -0
- package/dist/cli/gate/codex-enable.js +127 -0
- package/dist/cli/gate/codex-enable.js.map +1 -0
- package/dist/cli/gate/codex-snapshot.d.ts +208 -0
- package/dist/cli/gate/codex-snapshot.js +402 -0
- package/dist/cli/gate/codex-snapshot.js.map +1 -0
- package/dist/cli/gate/disable.d.ts +9 -0
- package/dist/cli/gate/disable.js +263 -28
- package/dist/cli/gate/disable.js.map +1 -1
- package/dist/cli/gate/enable.d.ts +26 -6
- package/dist/cli/gate/enable.js +152 -80
- package/dist/cli/gate/enable.js.map +1 -1
- package/dist/cli/gate/link-chain.d.ts +53 -0
- package/dist/cli/gate/link-chain.js +122 -0
- package/dist/cli/gate/link-chain.js.map +1 -0
- package/dist/cli/gate/snapshot.d.ts +289 -12
- package/dist/cli/gate/snapshot.js +481 -22
- package/dist/cli/gate/snapshot.js.map +1 -1
- package/dist/cli/index.d.ts +0 -9
- package/dist/cli/index.js +9 -2131
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init/composer.d.ts +3 -6
- package/dist/cli/init/composer.js +6 -370
- package/dist/cli/init/composer.js.map +1 -1
- package/dist/cli/init/dependencies.d.ts +1 -2
- package/dist/cli/init/dependencies.js +4 -80
- package/dist/cli/init/dependencies.js.map +1 -1
- package/dist/cli/init/detect.js +5 -4
- package/dist/cli/init/detect.js.map +1 -1
- package/dist/cli/init/interactive.d.ts +1 -23
- package/dist/cli/init/interactive.js +33 -247
- package/dist/cli/init/interactive.js.map +1 -1
- package/dist/cli/init/profiles.d.ts +2 -2
- package/dist/cli/init/profiles.js +51 -245
- package/dist/cli/init/profiles.js.map +1 -1
- package/dist/cli/init/templates.d.ts +2 -37
- package/dist/cli/init/templates.js +25 -1237
- package/dist/cli/init/templates.js.map +1 -1
- package/dist/cli/list.d.ts +1 -1
- package/dist/cli/list.js +1 -38
- package/dist/cli/list.js.map +1 -1
- package/dist/cli/loader.d.ts +15 -1
- package/dist/cli/loader.js +56 -39
- package/dist/cli/loader.js.map +1 -1
- package/dist/cli/main.js +7 -2
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/migrate-home/index.js +2 -2
- package/dist/cli/migrate-home/index.js.map +1 -1
- package/dist/cli/pack/add.js +1 -1
- package/dist/cli/pack/add.js.map +1 -1
- package/dist/cli/pack/hook-bootstrap.d.ts +5 -164
- package/dist/cli/pack/hook-bootstrap.js +15 -291
- package/dist/cli/pack/hook-bootstrap.js.map +1 -1
- package/dist/cli/pack/hook-branch-protection.d.ts +28 -21
- package/dist/cli/pack/hook-branch-protection.js +365 -340
- package/dist/cli/pack/hook-branch-protection.js.map +1 -1
- package/dist/cli/pack/index.d.ts +0 -1
- package/dist/cli/pack/index.js +0 -1
- package/dist/cli/pack/index.js.map +1 -1
- package/dist/cli/pack/list.js +1 -6
- package/dist/cli/pack/list.js.map +1 -1
- package/dist/cli/pack/mutate.d.ts +7 -9
- package/dist/cli/pack/mutate.js +6 -9
- package/dist/cli/pack/mutate.js.map +1 -1
- package/dist/cli/pack/reseed.d.ts +2 -2
- package/dist/cli/pack/reseed.js +16 -22
- package/dist/cli/pack/reseed.js.map +1 -1
- package/dist/cli/{delegate/register.d.ts → register-gate-group.d.ts} +1 -1
- package/dist/cli/register-gate-group.js +348 -0
- package/dist/cli/register-gate-group.js.map +1 -0
- package/dist/cli/register-inspect-group.d.ts +6 -0
- package/dist/cli/register-inspect-group.js +189 -0
- package/dist/cli/register-inspect-group.js.map +1 -0
- package/dist/cli/register-operator-lifecycle.d.ts +1 -1
- package/dist/cli/register-operator-lifecycle.js +3 -100
- package/dist/cli/register-operator-lifecycle.js.map +1 -1
- package/dist/cli/register-pack-group.d.ts +5 -0
- package/dist/cli/register-pack-group.js +134 -0
- package/dist/cli/register-pack-group.js.map +1 -0
- package/dist/cli/{register-audit-group.d.ts → register-setup-group.d.ts} +1 -1
- package/dist/cli/register-setup-group.js +495 -0
- package/dist/cli/register-setup-group.js.map +1 -0
- package/dist/cli/remove/index.d.ts +0 -14
- package/dist/cli/remove/index.js +2 -115
- package/dist/cli/remove/index.js.map +1 -1
- package/dist/cli/remove/mutate.d.ts +0 -2
- package/dist/cli/remove/mutate.js +1 -19
- package/dist/cli/remove/mutate.js.map +1 -1
- package/dist/cli/remove/register.js +2 -19
- package/dist/cli/remove/register.js.map +1 -1
- package/dist/cli/shell-quote.d.ts +7 -0
- package/dist/cli/shell-quote.js +17 -0
- package/dist/cli/shell-quote.js.map +1 -0
- package/dist/cli/uninstall/index.d.ts +4 -2
- package/dist/cli/uninstall/index.js +15 -7
- package/dist/cli/uninstall/index.js.map +1 -1
- package/dist/cli/uninstall/register.js +6 -4
- package/dist/cli/uninstall/register.js.map +1 -1
- package/dist/cli/uninstall/snapshot.d.ts +15 -0
- package/dist/cli/uninstall/snapshot.js +38 -0
- package/dist/cli/uninstall/snapshot.js.map +1 -1
- package/dist/cli/validate/checks.d.ts +0 -77
- package/dist/cli/validate/checks.js +3 -1049
- package/dist/cli/validate/checks.js.map +1 -1
- package/dist/cli/validate/index.js +19 -15
- package/dist/cli/validate/index.js.map +1 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.js +0 -3
- package/dist/index.js.map +1 -1
- package/dist/io/claude-mcp.d.ts +1 -1
- package/dist/io/claude-mcp.js +27 -14
- package/dist/io/claude-mcp.js.map +1 -1
- package/dist/io/harness-lock.js +2 -2
- package/dist/io/harness-lock.js.map +1 -1
- package/dist/io/lock.d.ts +0 -26
- package/dist/io/lock.js +10 -27
- package/dist/io/lock.js.map +1 -1
- package/dist/io/merge-settings.js +6 -4
- package/dist/io/merge-settings.js.map +1 -1
- package/dist/io/project-name.d.ts +22 -39
- package/dist/io/project-name.js +25 -42
- package/dist/io/project-name.js.map +1 -1
- package/dist/io/read-regular-file.d.ts +103 -40
- package/dist/io/read-regular-file.js +196 -35
- package/dist/io/read-regular-file.js.map +1 -1
- package/dist/io/restart-hints.js +3 -6
- package/dist/io/restart-hints.js.map +1 -1
- package/dist/io/version-compare.d.ts +1 -3
- package/dist/io/version-compare.js +1 -3
- package/dist/io/version-compare.js.map +1 -1
- package/dist/io/write-regular-file.d.ts +30 -0
- package/dist/io/write-regular-file.js +85 -0
- package/dist/io/write-regular-file.js.map +1 -0
- package/dist/overrides/index.d.ts +1 -0
- package/dist/overrides/index.js +1 -0
- package/dist/overrides/index.js.map +1 -1
- package/dist/overrides/merge-layers.d.ts +43 -0
- package/dist/overrides/merge-layers.js +76 -0
- package/dist/overrides/merge-layers.js.map +1 -0
- package/dist/overrides/merge.d.ts +16 -0
- package/dist/overrides/merge.js +21 -8
- package/dist/overrides/merge.js.map +1 -1
- package/dist/policy-packs/builtin/branch-protection-runtime.d.ts +4 -69
- package/dist/policy-packs/builtin/branch-protection-runtime.js +12 -84
- package/dist/policy-packs/builtin/branch-protection-runtime.js.map +1 -1
- package/dist/policy-packs/builtin/branch-protection.d.ts +7 -30
- package/dist/policy-packs/builtin/branch-protection.js +56 -89
- package/dist/policy-packs/builtin/branch-protection.js.map +1 -1
- package/dist/policy-packs/config-check.d.ts +7 -5
- package/dist/policy-packs/config-check.js +2 -2
- package/dist/policy-packs/config-check.js.map +1 -1
- package/dist/policy-packs/expand.d.ts +1 -3
- package/dist/policy-packs/expand.js +5 -42
- package/dist/policy-packs/expand.js.map +1 -1
- package/dist/policy-packs/index.d.ts +3 -3
- package/dist/policy-packs/index.js +2 -2
- package/dist/policy-packs/index.js.map +1 -1
- package/dist/policy-packs/registry.d.ts +9 -38
- package/dist/policy-packs/registry.js +5 -65
- package/dist/policy-packs/registry.js.map +1 -1
- package/dist/policy-packs/runtime.d.ts +0 -4
- package/dist/policy-packs/runtime.js +9 -22
- package/dist/policy-packs/runtime.js.map +1 -1
- package/dist/policy-packs/types.d.ts +0 -19
- package/dist/policy-packs/ux-compare.d.ts +1 -11
- package/dist/policy-packs/ux-compare.js +6 -42
- package/dist/policy-packs/ux-compare.js.map +1 -1
- package/dist/policy-packs/ux-drift-check.d.ts +5 -5
- package/dist/policy-packs/ux-drift-check.js +17 -22
- package/dist/policy-packs/ux-drift-check.js.map +1 -1
- package/dist/policy-packs/version-check.d.ts +5 -26
- package/dist/policy-packs/version-check.js +19 -74
- package/dist/policy-packs/version-check.js.map +1 -1
- package/dist/probes/memory.d.ts +1 -1
- package/dist/probes/memory.js +1 -1
- package/dist/probes/memory.js.map +1 -1
- package/dist/runtime/agent-facing.d.ts +9 -0
- package/dist/runtime/agent-facing.js +28 -14
- package/dist/runtime/agent-facing.js.map +1 -1
- package/dist/runtime/bounded-text.d.ts +15 -0
- package/dist/runtime/bounded-text.js +27 -0
- package/dist/runtime/bounded-text.js.map +1 -0
- package/dist/runtime/git-branch.d.ts +125 -0
- package/dist/runtime/git-branch.js +381 -0
- package/dist/runtime/git-branch.js.map +1 -0
- package/dist/runtime/hermetic-spawn-guard.d.ts +2 -2
- package/dist/runtime/hermetic-spawn-guard.js +24 -34
- package/dist/runtime/hermetic-spawn-guard.js.map +1 -1
- package/dist/runtime/home-dir.js +3 -2
- package/dist/runtime/home-dir.js.map +1 -1
- package/dist/runtime/tool-name-aliases.d.ts +0 -6
- package/dist/runtime/tool-name-aliases.js +5 -18
- package/dist/runtime/tool-name-aliases.js.map +1 -1
- package/dist/schema/grounding.d.ts +7 -54
- package/dist/schema/grounding.js +10 -12
- package/dist/schema/grounding.js.map +1 -1
- package/dist/schema/hooks.d.ts +39 -136
- package/dist/schema/hooks.js +3 -6
- package/dist/schema/hooks.js.map +1 -1
- package/dist/schema/index.d.ts +114 -3828
- package/dist/schema/index.js +41 -80
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/memory.d.ts +54 -131
- package/dist/schema/memory.js +2 -2
- package/dist/schema/memory.js.map +1 -1
- package/dist/schema/policy-packs.d.ts +3 -45
- package/dist/schema/policy-packs.js +7 -13
- package/dist/schema/policy-packs.js.map +1 -1
- package/dist/schema/policy-ux.d.ts +7 -0
- package/dist/schema/policy-ux.js +18 -0
- package/dist/schema/policy-ux.js.map +1 -0
- package/dist/schema/removed-keys.d.ts +185 -0
- package/dist/schema/removed-keys.js +531 -0
- package/dist/schema/removed-keys.js.map +1 -0
- package/dist/schema/tools.d.ts +30 -268
- package/dist/schema/tools.js +4 -4
- package/dist/schema/tools.js.map +1 -1
- package/package.json +5 -16
- package/dist/cli/approve/branch-protection.d.ts +0 -69
- package/dist/cli/approve/branch-protection.js +0 -144
- package/dist/cli/approve/branch-protection.js.map +0 -1
- package/dist/cli/approve/risk.d.ts +0 -112
- package/dist/cli/approve/risk.js +0 -197
- package/dist/cli/approve/risk.js.map +0 -1
- package/dist/cli/approve/stdin-report.d.ts +0 -57
- package/dist/cli/approve/stdin-report.js +0 -145
- package/dist/cli/approve/stdin-report.js.map +0 -1
- package/dist/cli/approve/understanding.d.ts +0 -410
- package/dist/cli/approve/understanding.js +0 -996
- package/dist/cli/approve/understanding.js.map +0 -1
- package/dist/cli/audit.d.ts +0 -80
- package/dist/cli/audit.js +0 -252
- package/dist/cli/audit.js.map +0 -1
- package/dist/cli/delegate/index.d.ts +0 -76
- package/dist/cli/delegate/index.js +0 -444
- package/dist/cli/delegate/index.js.map +0 -1
- package/dist/cli/delegate/register.js +0 -90
- package/dist/cli/delegate/register.js.map +0 -1
- package/dist/cli/doctor/auto-approve-mode.d.ts +0 -37
- package/dist/cli/doctor/auto-approve-mode.js +0 -80
- package/dist/cli/doctor/auto-approve-mode.js.map +0 -1
- package/dist/cli/doctor/bypass-without-auto-approve.d.ts +0 -38
- package/dist/cli/doctor/bypass-without-auto-approve.js +0 -95
- package/dist/cli/doctor/bypass-without-auto-approve.js.map +0 -1
- package/dist/cli/doctor/codex-config-drift.d.ts +0 -28
- package/dist/cli/doctor/codex-config-drift.js +0 -240
- package/dist/cli/doctor/codex-config-drift.js.map +0 -1
- package/dist/cli/doctor/expire-on-tool-match.d.ts +0 -15
- package/dist/cli/doctor/expire-on-tool-match.js +0 -58
- package/dist/cli/doctor/expire-on-tool-match.js.map +0 -1
- package/dist/cli/doctor/rogue-ledger.d.ts +0 -53
- package/dist/cli/doctor/rogue-ledger.js +0 -153
- package/dist/cli/doctor/rogue-ledger.js.map +0 -1
- package/dist/cli/doctor/session-start-preflight-setup-version.d.ts +0 -83
- package/dist/cli/doctor/session-start-preflight-setup-version.js +0 -114
- package/dist/cli/doctor/session-start-preflight-setup-version.js.map +0 -1
- package/dist/cli/doctor/settings-drift.d.ts +0 -25
- package/dist/cli/doctor/settings-drift.js +0 -213
- package/dist/cli/doctor/settings-drift.js.map +0 -1
- package/dist/cli/doctor/toolchain-parity.d.ts +0 -63
- package/dist/cli/doctor/toolchain-parity.js +0 -154
- package/dist/cli/doctor/toolchain-parity.js.map +0 -1
- package/dist/cli/doctor/ug-auto-approvals.d.ts +0 -40
- package/dist/cli/doctor/ug-auto-approvals.js +0 -91
- package/dist/cli/doctor/ug-auto-approvals.js.map +0 -1
- package/dist/cli/doctor/ug-delegations.d.ts +0 -26
- package/dist/cli/doctor/ug-delegations.js +0 -121
- package/dist/cli/doctor/ug-delegations.js.map +0 -1
- package/dist/cli/doctor/ug-inflight.d.ts +0 -35
- package/dist/cli/doctor/ug-inflight.js +0 -57
- package/dist/cli/doctor/ug-inflight.js.map +0 -1
- package/dist/cli/doctor/understanding-mode-env.d.ts +0 -51
- package/dist/cli/doctor/understanding-mode-env.js +0 -98
- package/dist/cli/doctor/understanding-mode-env.js.map +0 -1
- package/dist/cli/dry-run.d.ts +0 -58
- package/dist/cli/dry-run.js +0 -283
- package/dist/cli/dry-run.js.map +0 -1
- package/dist/cli/enriched-event.d.ts +0 -35
- package/dist/cli/enriched-event.js +0 -60
- package/dist/cli/enriched-event.js.map +0 -1
- package/dist/cli/event-input.d.ts +0 -28
- package/dist/cli/event-input.js +0 -73
- package/dist/cli/event-input.js.map +0 -1
- package/dist/cli/explain-action.d.ts +0 -25
- package/dist/cli/explain-action.js +0 -57
- package/dist/cli/explain-action.js.map +0 -1
- package/dist/cli/explain-policy.d.ts +0 -147
- package/dist/cli/explain-policy.js +0 -248
- package/dist/cli/explain-policy.js.map +0 -1
- package/dist/cli/explain.d.ts +0 -31
- package/dist/cli/explain.js +0 -159
- package/dist/cli/explain.js.map +0 -1
- package/dist/cli/gc/index.d.ts +0 -63
- package/dist/cli/gc/index.js +0 -566
- package/dist/cli/gc/index.js.map +0 -1
- package/dist/cli/pack/approve-escape.d.ts +0 -19
- package/dist/cli/pack/approve-escape.js +0 -190
- package/dist/cli/pack/approve-escape.js.map +0 -1
- package/dist/cli/pack/auto-approve-path.d.ts +0 -146
- package/dist/cli/pack/auto-approve-path.js +0 -462
- package/dist/cli/pack/auto-approve-path.js.map +0 -1
- package/dist/cli/pack/hook-codex-post-tool-use.d.ts +0 -25
- package/dist/cli/pack/hook-codex-post-tool-use.js +0 -160
- package/dist/cli/pack/hook-codex-post-tool-use.js.map +0 -1
- package/dist/cli/pack/hook-codex-pre-tool-use.d.ts +0 -48
- package/dist/cli/pack/hook-codex-pre-tool-use.js +0 -474
- package/dist/cli/pack/hook-codex-pre-tool-use.js.map +0 -1
- package/dist/cli/pack/hook-codex-stop.d.ts +0 -35
- package/dist/cli/pack/hook-codex-stop.js +0 -329
- package/dist/cli/pack/hook-codex-stop.js.map +0 -1
- package/dist/cli/pack/hook-codex-user-prompt-submit.d.ts +0 -24
- package/dist/cli/pack/hook-codex-user-prompt-submit.js +0 -93
- package/dist/cli/pack/hook-codex-user-prompt-submit.js.map +0 -1
- package/dist/cli/pack/hook-post-merge-gate-record.d.ts +0 -37
- package/dist/cli/pack/hook-post-merge-gate-record.js +0 -190
- package/dist/cli/pack/hook-post-merge-gate-record.js.map +0 -1
- package/dist/cli/pack/hook-post-merge-gate.d.ts +0 -34
- package/dist/cli/pack/hook-post-merge-gate.js +0 -277
- package/dist/cli/pack/hook-post-merge-gate.js.map +0 -1
- package/dist/cli/pack/hook-post-tool-use.d.ts +0 -45
- package/dist/cli/pack/hook-post-tool-use.js +0 -137
- package/dist/cli/pack/hook-post-tool-use.js.map +0 -1
- package/dist/cli/pack/hook-pre-tool-use.d.ts +0 -92
- package/dist/cli/pack/hook-pre-tool-use.js +0 -1328
- package/dist/cli/pack/hook-pre-tool-use.js.map +0 -1
- package/dist/cli/pack/hook-runtime-reality.d.ts +0 -63
- package/dist/cli/pack/hook-runtime-reality.js +0 -210
- package/dist/cli/pack/hook-runtime-reality.js.map +0 -1
- package/dist/cli/pack/hook-solution-acceptance-writeguard.d.ts +0 -32
- package/dist/cli/pack/hook-solution-acceptance-writeguard.js +0 -438
- package/dist/cli/pack/hook-solution-acceptance-writeguard.js.map +0 -1
- package/dist/cli/pack/hook-solution-acceptance.d.ts +0 -157
- package/dist/cli/pack/hook-solution-acceptance.js +0 -530
- package/dist/cli/pack/hook-solution-acceptance.js.map +0 -1
- package/dist/cli/pack/hook-stay-in-scope.d.ts +0 -37
- package/dist/cli/pack/hook-stay-in-scope.js +0 -128
- package/dist/cli/pack/hook-stay-in-scope.js.map +0 -1
- package/dist/cli/pack/hook-subagent-start.d.ts +0 -23
- package/dist/cli/pack/hook-subagent-start.js +0 -88
- package/dist/cli/pack/hook-subagent-start.js.map +0 -1
- package/dist/cli/pack/hook-subagent-stop.d.ts +0 -19
- package/dist/cli/pack/hook-subagent-stop.js +0 -41
- package/dist/cli/pack/hook-subagent-stop.js.map +0 -1
- package/dist/cli/pack/hook-track-active-claim.d.ts +0 -27
- package/dist/cli/pack/hook-track-active-claim.js +0 -275
- package/dist/cli/pack/hook-track-active-claim.js.map +0 -1
- package/dist/cli/pack/transcript-report-scan.d.ts +0 -71
- package/dist/cli/pack/transcript-report-scan.js +0 -359
- package/dist/cli/pack/transcript-report-scan.js.map +0 -1
- package/dist/cli/pack/understanding-report-schema-hint.d.ts +0 -26
- package/dist/cli/pack/understanding-report-schema-hint.js +0 -120
- package/dist/cli/pack/understanding-report-schema-hint.js.map +0 -1
- package/dist/cli/pack/upgrade.d.ts +0 -32
- package/dist/cli/pack/upgrade.js +0 -273
- package/dist/cli/pack/upgrade.js.map +0 -1
- package/dist/cli/pause/index.d.ts +0 -113
- package/dist/cli/pause/index.js +0 -251
- package/dist/cli/pause/index.js.map +0 -1
- package/dist/cli/pause-check.d.ts +0 -22
- package/dist/cli/pause-check.js +0 -54
- package/dist/cli/pause-check.js.map +0 -1
- package/dist/cli/policy/intercept.d.ts +0 -233
- package/dist/cli/policy/intercept.js +0 -1022
- package/dist/cli/policy/intercept.js.map +0 -1
- package/dist/cli/policy/risk-envelope-enrichment.d.ts +0 -40
- package/dist/cli/policy/risk-envelope-enrichment.js +0 -110
- package/dist/cli/policy/risk-envelope-enrichment.js.map +0 -1
- package/dist/cli/record/index.d.ts +0 -81
- package/dist/cli/record/index.js +0 -348
- package/dist/cli/record/index.js.map +0 -1
- package/dist/cli/register-audit-group.js +0 -91
- package/dist/cli/register-audit-group.js.map +0 -1
- package/dist/cli/resolve-env.d.ts +0 -32
- package/dist/cli/resolve-env.js +0 -46
- package/dist/cli/resolve-env.js.map +0 -1
- package/dist/cli/session-export/index.d.ts +0 -46
- package/dist/cli/session-export/index.js +0 -169
- package/dist/cli/session-export/index.js.map +0 -1
- package/dist/cli/session-export/redact.d.ts +0 -22
- package/dist/cli/session-export/redact.js +0 -47
- package/dist/cli/session-export/redact.js.map +0 -1
- package/dist/cli/session-export/transcript.d.ts +0 -24
- package/dist/cli/session-export/transcript.js +0 -164
- package/dist/cli/session-export/transcript.js.map +0 -1
- package/dist/cli/session-start/branch-check.d.ts +0 -18
- package/dist/cli/session-start/branch-check.js +0 -140
- package/dist/cli/session-start/branch-check.js.map +0 -1
- package/dist/cli/session-start/index.d.ts +0 -121
- package/dist/cli/session-start/index.js +0 -591
- package/dist/cli/session-start/index.js.map +0 -1
- package/dist/cli/session-start/shared-options.d.ts +0 -103
- package/dist/cli/session-start/shared-options.js +0 -107
- package/dist/cli/session-start/shared-options.js.map +0 -1
- package/dist/cli/session-start/stale-base-check.d.ts +0 -46
- package/dist/cli/session-start/stale-base-check.js +0 -352
- package/dist/cli/session-start/stale-base-check.js.map +0 -1
- package/dist/cli/session-start/toolchain-parity.d.ts +0 -267
- package/dist/cli/session-start/toolchain-parity.js +0 -797
- package/dist/cli/session-start/toolchain-parity.js.map +0 -1
- package/dist/cli/smoke/assertions.d.ts +0 -46
- package/dist/cli/smoke/assertions.js +0 -170
- package/dist/cli/smoke/assertions.js.map +0 -1
- package/dist/cli/smoke/index.d.ts +0 -76
- package/dist/cli/smoke/index.js +0 -245
- package/dist/cli/smoke/index.js.map +0 -1
- package/dist/cli/smoke/runner.d.ts +0 -55
- package/dist/cli/smoke/runner.js +0 -134
- package/dist/cli/smoke/runner.js.map +0 -1
- package/dist/cli/smoke/stream-parser.d.ts +0 -65
- package/dist/cli/smoke/stream-parser.js +0 -115
- package/dist/cli/smoke/stream-parser.js.map +0 -1
- package/dist/cli/test-risk.d.ts +0 -27
- package/dist/cli/test-risk.js +0 -38
- package/dist/cli/test-risk.js.map +0 -1
- package/dist/io/display-path.d.ts +0 -11
- package/dist/io/display-path.js +0 -29
- package/dist/io/display-path.js.map +0 -1
- package/dist/io/duration.d.ts +0 -5
- package/dist/io/duration.js +0 -50
- package/dist/io/duration.js.map +0 -1
- package/dist/io/extract.d.ts +0 -79
- package/dist/io/extract.js +0 -226
- package/dist/io/extract.js.map +0 -1
- package/dist/io/ledger-record.d.ts +0 -83
- package/dist/io/ledger-record.js +0 -301
- package/dist/io/ledger-record.js.map +0 -1
- package/dist/io/read-json-dir-entries.d.ts +0 -36
- package/dist/io/read-json-dir-entries.js +0 -48
- package/dist/io/read-json-dir-entries.js.map +0 -1
- package/dist/io/safe-json-parse.d.ts +0 -5
- package/dist/io/safe-json-parse.js +0 -21
- package/dist/io/safe-json-parse.js.map +0 -1
- package/dist/policies/index.d.ts +0 -5
- package/dist/policies/index.js +0 -6
- package/dist/policies/index.js.map +0 -1
- package/dist/policies/ledger-client.d.ts +0 -113
- package/dist/policies/ledger-client.js +0 -500
- package/dist/policies/ledger-client.js.map +0 -1
- package/dist/policies/producers.d.ts +0 -12
- package/dist/policies/producers.js +0 -61
- package/dist/policies/producers.js.map +0 -1
- package/dist/policies/requires.d.ts +0 -75
- package/dist/policies/requires.js +0 -240
- package/dist/policies/requires.js.map +0 -1
- package/dist/policies/timestamp.d.ts +0 -14
- package/dist/policies/timestamp.js +0 -36
- package/dist/policies/timestamp.js.map +0 -1
- package/dist/policy-packs/builtin/permission-profiles.d.ts +0 -11
- package/dist/policy-packs/builtin/permission-profiles.js +0 -74
- package/dist/policy-packs/builtin/permission-profiles.js.map +0 -1
- package/dist/policy-packs/builtin/post-merge-gate-runtime.d.ts +0 -286
- package/dist/policy-packs/builtin/post-merge-gate-runtime.js +0 -397
- package/dist/policy-packs/builtin/post-merge-gate-runtime.js.map +0 -1
- package/dist/policy-packs/builtin/post-merge-gate.d.ts +0 -56
- package/dist/policy-packs/builtin/post-merge-gate.js +0 -347
- package/dist/policy-packs/builtin/post-merge-gate.js.map +0 -1
- package/dist/policy-packs/builtin/solution-acceptance-reconnect.d.ts +0 -50
- package/dist/policy-packs/builtin/solution-acceptance-reconnect.js +0 -151
- package/dist/policy-packs/builtin/solution-acceptance-reconnect.js.map +0 -1
- package/dist/policy-packs/builtin/solution-acceptance-runtime.d.ts +0 -323
- package/dist/policy-packs/builtin/solution-acceptance-runtime.js +0 -672
- package/dist/policy-packs/builtin/solution-acceptance-runtime.js.map +0 -1
- package/dist/policy-packs/builtin/solution-acceptance.d.ts +0 -45
- package/dist/policy-packs/builtin/solution-acceptance.js +0 -226
- package/dist/policy-packs/builtin/solution-acceptance.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/active-claim.d.ts +0 -25
- package/dist/policy-packs/builtin/understanding-before-execution/active-claim.js +0 -94
- package/dist/policy-packs/builtin/understanding-before-execution/active-claim.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/auto-approve-default.d.ts +0 -35
- package/dist/policy-packs/builtin/understanding-before-execution/auto-approve-default.js +0 -86
- package/dist/policy-packs/builtin/understanding-before-execution/auto-approve-default.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/auto-approve.d.ts +0 -210
- package/dist/policy-packs/builtin/understanding-before-execution/auto-approve.js +0 -361
- package/dist/policy-packs/builtin/understanding-before-execution/auto-approve.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/delegation-markers.d.ts +0 -304
- package/dist/policy-packs/builtin/understanding-before-execution/delegation-markers.js +0 -734
- package/dist/policy-packs/builtin/understanding-before-execution/delegation-markers.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/expiry-reason.d.ts +0 -36
- package/dist/policy-packs/builtin/understanding-before-execution/expiry-reason.js +0 -73
- package/dist/policy-packs/builtin/understanding-before-execution/expiry-reason.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/index.d.ts +0 -19
- package/dist/policy-packs/builtin/understanding-before-execution/index.js +0 -83
- package/dist/policy-packs/builtin/understanding-before-execution/index.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/inflight-records.d.ts +0 -135
- package/dist/policy-packs/builtin/understanding-before-execution/inflight-records.js +0 -643
- package/dist/policy-packs/builtin/understanding-before-execution/inflight-records.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/ledger.d.ts +0 -25
- package/dist/policy-packs/builtin/understanding-before-execution/ledger.js +0 -56
- package/dist/policy-packs/builtin/understanding-before-execution/ledger.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/lifecycle.d.ts +0 -20
- package/dist/policy-packs/builtin/understanding-before-execution/lifecycle.js +0 -106
- package/dist/policy-packs/builtin/understanding-before-execution/lifecycle.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/markers.d.ts +0 -126
- package/dist/policy-packs/builtin/understanding-before-execution/markers.js +0 -245
- package/dist/policy-packs/builtin/understanding-before-execution/markers.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/measured-permission-modes.d.ts +0 -29
- package/dist/policy-packs/builtin/understanding-before-execution/measured-permission-modes.js +0 -82
- package/dist/policy-packs/builtin/understanding-before-execution/measured-permission-modes.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/permission-mode-observations.d.ts +0 -71
- package/dist/policy-packs/builtin/understanding-before-execution/permission-mode-observations.js +0 -175
- package/dist/policy-packs/builtin/understanding-before-execution/permission-mode-observations.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/persisted-reports.d.ts +0 -625
- package/dist/policy-packs/builtin/understanding-before-execution/persisted-reports.js +0 -1076
- package/dist/policy-packs/builtin/understanding-before-execution/persisted-reports.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/post-tool-use-boundary.d.ts +0 -128
- package/dist/policy-packs/builtin/understanding-before-execution/post-tool-use-boundary.js +0 -213
- package/dist/policy-packs/builtin/understanding-before-execution/post-tool-use-boundary.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/stay-in-scope-config.d.ts +0 -129
- package/dist/policy-packs/builtin/understanding-before-execution/stay-in-scope-config.js +0 -166
- package/dist/policy-packs/builtin/understanding-before-execution/stay-in-scope-config.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/task-markers.d.ts +0 -164
- package/dist/policy-packs/builtin/understanding-before-execution/task-markers.js +0 -275
- package/dist/policy-packs/builtin/understanding-before-execution/task-markers.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution-runtime.d.ts +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution-runtime.js +0 -10
- package/dist/policy-packs/builtin/understanding-before-execution-runtime.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution.d.ts +0 -526
- package/dist/policy-packs/builtin/understanding-before-execution.js +0 -1078
- package/dist/policy-packs/builtin/understanding-before-execution.js.map +0 -1
- package/dist/policy-packs/permission-translator.d.ts +0 -9
- package/dist/policy-packs/permission-translator.js +0 -76
- package/dist/policy-packs/permission-translator.js.map +0 -1
- package/dist/runtime/action-envelope.d.ts +0 -64
- package/dist/runtime/action-envelope.js +0 -46
- package/dist/runtime/action-envelope.js.map +0 -1
- package/dist/runtime/approval-signing.d.ts +0 -111
- package/dist/runtime/approval-signing.js +0 -384
- package/dist/runtime/approval-signing.js.map +0 -1
- package/dist/runtime/bash-match-facts.d.ts +0 -60
- package/dist/runtime/bash-match-facts.js +0 -196
- package/dist/runtime/bash-match-facts.js.map +0 -1
- package/dist/runtime/bash-match-registry.d.ts +0 -112
- package/dist/runtime/bash-match-registry.js +0 -406
- package/dist/runtime/bash-match-registry.js.map +0 -1
- package/dist/runtime/bash-prefix-parse.d.ts +0 -31
- package/dist/runtime/bash-prefix-parse.js +0 -576
- package/dist/runtime/bash-prefix-parse.js.map +0 -1
- package/dist/runtime/command-normalize.d.ts +0 -658
- package/dist/runtime/command-normalize.js +0 -2410
- package/dist/runtime/command-normalize.js.map +0 -1
- package/dist/runtime/deletion-target-resolve.d.ts +0 -28
- package/dist/runtime/deletion-target-resolve.js +0 -1078
- package/dist/runtime/deletion-target-resolve.js.map +0 -1
- package/dist/runtime/destructive-shell-floor.d.ts +0 -19
- package/dist/runtime/destructive-shell-floor.js +0 -611
- package/dist/runtime/destructive-shell-floor.js.map +0 -1
- package/dist/runtime/environment-resolver.d.ts +0 -36
- package/dist/runtime/environment-resolver.js +0 -138
- package/dist/runtime/environment-resolver.js.map +0 -1
- package/dist/runtime/git-context.d.ts +0 -201
- package/dist/runtime/git-context.js +0 -422
- package/dist/runtime/git-context.js.map +0 -1
- package/dist/runtime/index.d.ts +0 -12
- package/dist/runtime/index.js +0 -13
- package/dist/runtime/index.js.map +0 -1
- package/dist/runtime/intercept.d.ts +0 -623
- package/dist/runtime/intercept.js +0 -1384
- package/dist/runtime/intercept.js.map +0 -1
- package/dist/runtime/kube-context.d.ts +0 -16
- package/dist/runtime/kube-context.js +0 -63
- package/dist/runtime/kube-context.js.map +0 -1
- package/dist/runtime/kubectl-target-parse.d.ts +0 -31
- package/dist/runtime/kubectl-target-parse.js +0 -249
- package/dist/runtime/kubectl-target-parse.js.map +0 -1
- package/dist/runtime/ledger-add.d.ts +0 -16
- package/dist/runtime/ledger-add.js +0 -150
- package/dist/runtime/ledger-add.js.map +0 -1
- package/dist/runtime/ledger-writer.d.ts +0 -27
- package/dist/runtime/ledger-writer.js +0 -46
- package/dist/runtime/ledger-writer.js.map +0 -1
- package/dist/runtime/pause-sentinel.d.ts +0 -60
- package/dist/runtime/pause-sentinel.js +0 -156
- package/dist/runtime/pause-sentinel.js.map +0 -1
- package/dist/runtime/pending-approval.d.ts +0 -23
- package/dist/runtime/pending-approval.js +0 -67
- package/dist/runtime/pending-approval.js.map +0 -1
- package/dist/runtime/read-only-bash.d.ts +0 -141
- package/dist/runtime/read-only-bash.js +0 -2204
- package/dist/runtime/read-only-bash.js.map +0 -1
- package/dist/runtime/recovery-git-commit.d.ts +0 -22
- package/dist/runtime/recovery-git-commit.js +0 -284
- package/dist/runtime/recovery-git-commit.js.map +0 -1
- package/dist/runtime/reject-malformed-session-id.d.ts +0 -8
- package/dist/runtime/reject-malformed-session-id.js +0 -16
- package/dist/runtime/reject-malformed-session-id.js.map +0 -1
- package/dist/runtime/risk-classifier.d.ts +0 -38
- package/dist/runtime/risk-classifier.js +0 -311
- package/dist/runtime/risk-classifier.js.map +0 -1
- package/dist/runtime/session-id.d.ts +0 -113
- package/dist/runtime/session-id.js +0 -193
- package/dist/runtime/session-id.js.map +0 -1
- package/dist/runtime/shell-word.d.ts +0 -62
- package/dist/runtime/shell-word.js +0 -410
- package/dist/runtime/shell-word.js.map +0 -1
- package/dist/runtime/task-providers/agent-tasks.d.ts +0 -105
- package/dist/runtime/task-providers/agent-tasks.js +0 -247
- package/dist/runtime/task-providers/agent-tasks.js.map +0 -1
- package/dist/runtime/when-eval.d.ts +0 -62
- package/dist/runtime/when-eval.js +0 -212
- package/dist/runtime/when-eval.js.map +0 -1
- package/dist/runtime/workflow-policies.d.ts +0 -207
- package/dist/runtime/workflow-policies.js +0 -596
- package/dist/runtime/workflow-policies.js.map +0 -1
- package/dist/schema/audit.d.ts +0 -71
- package/dist/schema/audit.js +0 -32
- package/dist/schema/audit.js.map +0 -1
- package/dist/schema/doctor.d.ts +0 -25
- package/dist/schema/doctor.js +0 -23
- package/dist/schema/doctor.js.map +0 -1
- package/dist/schema/environments.d.ts +0 -215
- package/dist/schema/environments.js +0 -101
- package/dist/schema/environments.js.map +0 -1
- package/dist/schema/extract.d.ts +0 -9
- package/dist/schema/extract.js +0 -86
- package/dist/schema/extract.js.map +0 -1
- package/dist/schema/permission-profiles.d.ts +0 -2292
- package/dist/schema/permission-profiles.js +0 -60
- package/dist/schema/permission-profiles.js.map +0 -1
- package/dist/schema/policies.d.ts +0 -974
- package/dist/schema/policies.js +0 -298
- package/dist/schema/policies.js.map +0 -1
- package/dist/schema/requires.d.ts +0 -131
- package/dist/schema/requires.js +0 -88
- package/dist/schema/requires.js.map +0 -1
- package/dist/schema/risk.d.ts +0 -144
- package/dist/schema/risk.js +0 -194
- package/dist/schema/risk.js.map +0 -1
- package/dist/schema/session-start-preflight.d.ts +0 -10
- package/dist/schema/session-start-preflight.js +0 -106
- package/dist/schema/session-start-preflight.js.map +0 -1
- package/dist/schema/stale-base-check.d.ts +0 -18
- package/dist/schema/stale-base-check.js +0 -37
- package/dist/schema/stale-base-check.js.map +0 -1
- package/dist/schema/toolchain-parity.d.ts +0 -21
- package/dist/schema/toolchain-parity.js +0 -48
- package/dist/schema/toolchain-parity.js.map +0 -1
- package/dist/schema/workflows.d.ts +0 -519
- package/dist/schema/workflows.js +0 -81
- package/dist/schema/workflows.js.map +0 -1
- package/scripts/runtime-reality-docker-probe.mjs +0 -71
|
@@ -1,210 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Prefix every auto-minted marker's `approvedBy` carries, distinguishing
|
|
3
|
-
* it from a human `harness approve understanding` marker (which carries
|
|
4
|
-
* the operator's own identity string, never this prefix).
|
|
5
|
-
*/
|
|
6
|
-
export declare const AUTO_APPROVED_BY_PREFIX = "auto-mode:";
|
|
7
|
-
/** The harness identifier the Claude Code PreToolUse hook mints markers for. */
|
|
8
|
-
export declare const CLAUDE_CODE_HARNESS = "claude-code";
|
|
9
|
-
/**
|
|
10
|
-
* The harness identifier the Codex PreToolUse hook mints markers for
|
|
11
|
-
* (slice 2 of the ADR: same auto path, same fail-closed conditions, a
|
|
12
|
-
* distinct `approvedBy` segment so an audit can tell the two runtimes
|
|
13
|
-
* apart). Deliberately NOT re-exported through
|
|
14
|
-
* `understanding-before-execution/index.ts`: its only consumer is
|
|
15
|
-
* `src/cli/pack/hook-codex-pre-tool-use.ts`, and widening the runtime
|
|
16
|
-
* shim's pinned public surface (tests/policy-packs/ube-export-surface.test.ts)
|
|
17
|
-
* is a separate, conscious act.
|
|
18
|
-
*/
|
|
19
|
-
export declare const CODEX_HARNESS = "codex";
|
|
20
|
-
/**
|
|
21
|
-
* Build the `approvedBy` value the hook writes into a signed auto-marker:
|
|
22
|
-
* `auto-mode:<harness>:<mode>`, for example `auto-mode:claude-code:bypassPermissions`
|
|
23
|
-
* or `auto-mode:codex:bypassPermissions` ("Audit and doctor" in the ADR).
|
|
24
|
-
* Neither `harness` nor `mode` is validated here; callers pass
|
|
25
|
-
* already-known-good values (one of the fixed harness constants above and
|
|
26
|
-
* a `when`-matched mode string).
|
|
27
|
-
*/
|
|
28
|
-
export declare function autoApprovedByFor(harness: string, mode: string): string;
|
|
29
|
-
/** Parsed shape of an `approvedBy` string minted by {@link autoApprovedByFor}. */
|
|
30
|
-
export interface ParsedAutoApprovedBy {
|
|
31
|
-
harness: string;
|
|
32
|
-
mode: string;
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Parse an `approvedBy` string back into its harness/mode pair. Returns
|
|
36
|
-
* `null` for anything that is not exactly `auto-mode:<harness>:<mode>`
|
|
37
|
-
* with both segments non-empty, including a human marker's `approvedBy`
|
|
38
|
-
* (which never carries this prefix) and a malformed or truncated auto
|
|
39
|
-
* value. A slice 3 delegation suffix (`;delegated:<parent-sid>`) is
|
|
40
|
-
* tolerated: it is stripped before parsing and otherwise ignored, per
|
|
41
|
-
* the ADR's "Audit and doctor" convention that the delegation binding
|
|
42
|
-
* packs into the same field without changing the harness/mode shape.
|
|
43
|
-
*/
|
|
44
|
-
export declare function parseAutoApprovedBy(approvedBy: unknown): ParsedAutoApprovedBy | null;
|
|
45
|
-
/**
|
|
46
|
-
* Build the audit-only ledger fact the ADR's "Audit and doctor" section
|
|
47
|
-
* names: `understanding-auto-approved:<sid>`, distinct from the human
|
|
48
|
-
* `understanding-approved:<sid>` tag (`ledger.ts`), following the same
|
|
49
|
-
* `...:forced:<field>` suffix precedent the ADR cites. Ledger only, never
|
|
50
|
-
* consulted for the gate decision itself.
|
|
51
|
-
*/
|
|
52
|
-
export declare function autoApprovedLedgerTagFor(sessionId: string): string;
|
|
53
|
-
/**
|
|
54
|
-
* The harness identifiers `auto_approve.harnesses` accepts, in the order
|
|
55
|
-
* the schema and every diagnostic list them. Shared with the pack's zod
|
|
56
|
-
* `configSchema` (`../understanding-before-execution.ts`) so the lint-time
|
|
57
|
-
* enum and this runtime parser cannot drift apart.
|
|
58
|
-
*/
|
|
59
|
-
export declare const AUTO_APPROVE_HARNESS_VALUES: readonly ["claude-code", "codex"];
|
|
60
|
-
/**
|
|
61
|
-
* What `auto_approve.harnesses` resolves to when the key is ABSENT.
|
|
62
|
-
* Claude Code only, deliberately: slice 1 shipped `auto_approve` as a
|
|
63
|
-
* Claude-only opt-in, so a repo that opted in before slice 2 must keep
|
|
64
|
-
* exactly the meaning it had — adding the Codex hook to the shared body
|
|
65
|
-
* must not silently extend an existing opt-in to a second runtime
|
|
66
|
-
* (reviewer round-1 finding on slice 2). Opting Codex in is an explicit,
|
|
67
|
-
* visible config edit.
|
|
68
|
-
*/
|
|
69
|
-
export declare const DEFAULT_AUTO_APPROVE_HARNESSES: readonly string[];
|
|
70
|
-
/**
|
|
71
|
-
* What `auto_approve.report_scan.max_wait` resolves to when the key is
|
|
72
|
-
* ABSENT: the bound the child's PreToolUse hook waits for its own
|
|
73
|
-
* Understanding Report to reach the session transcript before it blocks
|
|
74
|
-
* (ADR "Report capture under `-p`", slice 3 acceptance criterion 3).
|
|
75
|
-
*
|
|
76
|
-
* The value is measured, not guessed: under `claude -p` the report is
|
|
77
|
-
* absent from the transcript at the instant PreToolUse fires and lands
|
|
78
|
-
* some time later, on a lag that scales with report length, so the
|
|
79
|
-
* bound is set from the real end-to-end runs (a full-length grill_me
|
|
80
|
-
* report), not only the shorter probe reports that first-guessed 500ms.
|
|
81
|
-
* The measurement and the retuning derivation are both in
|
|
82
|
-
* `docs/okf/understanding-gate-auto-mode-signals.md` ("Chosen
|
|
83
|
-
* `report_scan.max_wait` default" section), from
|
|
84
|
-
* `dogfood/ug-auto-mode-signals/`.
|
|
85
|
-
*
|
|
86
|
-
* ONE named constant on purpose: the hook, the schema default and every
|
|
87
|
-
* test read this symbol, so re-tuning the bound against a new
|
|
88
|
-
* measurement is a one-line change with no literal to hunt down.
|
|
89
|
-
*/
|
|
90
|
-
export declare const DEFAULT_REPORT_SCAN_MAX_WAIT_MS = 2000;
|
|
91
|
-
/**
|
|
92
|
-
* Hard ceiling for `auto_approve.report_scan.max_wait`. A larger value
|
|
93
|
-
* is a `harness validate` schema error AND a runtime parse failure (which
|
|
94
|
-
* fails the whole `auto_approve` block closed), so no configuration can
|
|
95
|
-
* make a PreToolUse hook sit on a session for an arbitrary time. 5 s is
|
|
96
|
-
* an order of magnitude above the measured worst-case flush, which is
|
|
97
|
-
* generous for a bound whose only job is to cover a transcript write
|
|
98
|
-
* already in flight.
|
|
99
|
-
*/
|
|
100
|
-
export declare const REPORT_SCAN_MAX_WAIT_CEILING_MS = 5000;
|
|
101
|
-
/** Parsed, validated `auto_approve` pack-config block. */
|
|
102
|
-
export interface AutoApproveConfig {
|
|
103
|
-
/** Allowlist of `permission_mode` payload literals eligible for auto-approval. */
|
|
104
|
-
when: string[];
|
|
105
|
-
/**
|
|
106
|
-
* Allowlist of HARNESSES whose PreToolUse hook may take the auto path
|
|
107
|
-
* at all. Always non-empty: an absent key resolves to
|
|
108
|
-
* {@link DEFAULT_AUTO_APPROVE_HARNESSES}, and every malformed shape
|
|
109
|
-
* fails the whole block closed rather than defaulting.
|
|
110
|
-
*/
|
|
111
|
-
harnesses: string[];
|
|
112
|
-
/**
|
|
113
|
-
* The transcript-poll bound for the slice 3 delegation path. Always
|
|
114
|
-
* present: an absent `report_scan` block resolves to
|
|
115
|
-
* {@link DEFAULT_REPORT_SCAN_MAX_WAIT_MS}, and every malformed shape
|
|
116
|
-
* fails the whole `auto_approve` block closed, like every other key
|
|
117
|
-
* here.
|
|
118
|
-
*/
|
|
119
|
-
reportScan: {
|
|
120
|
-
maxWaitMs: number;
|
|
121
|
-
};
|
|
122
|
-
}
|
|
123
|
-
export type ReportScanMaxWaitParse = {
|
|
124
|
-
ok: true;
|
|
125
|
-
maxWaitMs: number;
|
|
126
|
-
} | {
|
|
127
|
-
ok: false;
|
|
128
|
-
reason: string;
|
|
129
|
-
};
|
|
130
|
-
/**
|
|
131
|
-
* Parse `auto_approve.report_scan.max_wait` into milliseconds.
|
|
132
|
-
*
|
|
133
|
-
* Duration grammar: the pack's SHARED parser
|
|
134
|
-
* ({@link parseDurationSeconds}, the same one `approval_lifecycle.max_age`
|
|
135
|
-
* uses), plus an `<n>ms` shorthand it does not model. The extension is
|
|
136
|
-
* not cosmetic: this bound is a transcript-flush allowance measured in
|
|
137
|
-
* tens of milliseconds, so a second-granularity grammar could not express
|
|
138
|
-
* the values the measurement actually argues for, and widening
|
|
139
|
-
* `parseDurationSeconds` itself would change the grammar of every
|
|
140
|
-
* `within:` / `max_age:` / `--since` value in the repo for one key's sake.
|
|
141
|
-
*
|
|
142
|
-
* Both bounds are errors, never clamps: zero or negative (a bound that
|
|
143
|
-
* would disable the poll while the block still claimed to have one) and
|
|
144
|
-
* anything above {@link REPORT_SCAN_MAX_WAIT_CEILING_MS} (a bound that
|
|
145
|
-
* could park a PreToolUse hook). Returning a RESULT rather than throwing
|
|
146
|
-
* keeps the two consumers symmetric: the zod schema turns it into a
|
|
147
|
-
* `harness validate` diagnostic, the runtime parser into one stderr line
|
|
148
|
-
* and a fail-closed `null`.
|
|
149
|
-
*/
|
|
150
|
-
export declare function parseReportScanMaxWait(raw: unknown): ReportScanMaxWaitParse;
|
|
151
|
-
/**
|
|
152
|
-
* Parse the optional `auto_approve` pack-config block
|
|
153
|
-
* (docs/decisions/2026-08-27-ug-auto-mode-approval.md, "Option A").
|
|
154
|
-
*
|
|
155
|
-
* FAIL CLOSED, unlike {@link parseApprovalLifecycle}'s best-effort
|
|
156
|
-
* fallback: this block is an opt-IN to a hook-side signing path
|
|
157
|
-
* (hardening item 3 in the ADR's threat model (b) — `require_report:
|
|
158
|
-
* false` must be a schema error, not a silently-ignored key), so any
|
|
159
|
-
* malformed shape here means "not opted in" (`null`), never a partial
|
|
160
|
-
* or default-filled config that could still enable the auto path. The
|
|
161
|
-
* `configSchema` zod block in `../understanding-before-execution.ts` is
|
|
162
|
-
* the first line of defence (`harness validate` / `harness doctor`
|
|
163
|
-
* reject a malformed manifest at lint time); this parser is the second,
|
|
164
|
-
* defensive line for the runtime hook, which must not trust that every
|
|
165
|
-
* config it sees on disk passed the schema.
|
|
166
|
-
*
|
|
167
|
-
* `undefined` / `null` (the block is simply absent) returns `null`
|
|
168
|
-
* silently — that is the ordinary "not opted in" case, not a warning.
|
|
169
|
-
* Every other malformed shape writes exactly one stderr line and
|
|
170
|
-
* returns `null`.
|
|
171
|
-
*
|
|
172
|
-
* `label` is the stderr prefix of the calling hook, so a Codex-side
|
|
173
|
-
* warning reads `harness pack hook codex: ...` like every other line
|
|
174
|
-
* that hook writes. The default reproduces the Claude Code hook's
|
|
175
|
-
* wording byte-for-byte.
|
|
176
|
-
*/
|
|
177
|
-
export declare function parseAutoApprove(raw: unknown, stderr?: {
|
|
178
|
-
write(s: string): void;
|
|
179
|
-
} | null, label?: string): AutoApproveConfig | null;
|
|
180
|
-
/**
|
|
181
|
-
* ADR "Additional hardening to specify" item 2: `when` is an allowlist
|
|
182
|
-
* of payload literals, membership by exact string equality, no case
|
|
183
|
-
* folding, no substring, no wildcards. `mode` absent, empty, or not a
|
|
184
|
-
* string means no auto-approval, and `cfg === null` (block absent or
|
|
185
|
-
* malformed) means no auto-approval regardless of `mode`.
|
|
186
|
-
*
|
|
187
|
-
* Takes only the `when` slice of the config rather than the whole block:
|
|
188
|
-
* this predicate reads exactly one field, and saying so in the signature
|
|
189
|
-
* keeps it honest as the block grows further keys (`harnesses`,
|
|
190
|
-
* `report_scan`) that have nothing to do with mode membership.
|
|
191
|
-
*/
|
|
192
|
-
export declare function permissionModeAllowed(cfg: Pick<AutoApproveConfig, "when"> | null, mode: unknown): boolean;
|
|
193
|
-
/**
|
|
194
|
-
* Per-harness opt-in membership, the same exact-string-equality
|
|
195
|
-
* discipline {@link permissionModeAllowed} applies to `when`. `cfg ===
|
|
196
|
-
* null` (block absent or malformed) means no auto-approval regardless of
|
|
197
|
-
* the harness, and an unlisted harness means no auto-approval regardless
|
|
198
|
-
* of `when` — the two allowlists are independent AND conditions, not
|
|
199
|
-
* alternatives.
|
|
200
|
-
*
|
|
201
|
-
* Re-exported through `understanding-before-execution/index.ts` (round-2
|
|
202
|
-
* review finding on slice 2): its call site (`src/cli/pack/auto-approve-path.ts`)
|
|
203
|
-
* imports every sibling symbol it needs (`parseAutoApprove`,
|
|
204
|
-
* `permissionModeAllowed`, ...) through the runtime shim already, so this
|
|
205
|
-
* one was pulled onto the pinned shim surface
|
|
206
|
-
* (tests/policy-packs/ube-export-surface.test.ts) to match, unlike
|
|
207
|
-
* {@link CODEX_HARNESS} which still has exactly one consumer and stays a
|
|
208
|
-
* direct import.
|
|
209
|
-
*/
|
|
210
|
-
export declare function harnessAllowed(cfg: Pick<AutoApproveConfig, "harnesses"> | null, harness: unknown): boolean;
|
|
@@ -1,361 +0,0 @@
|
|
|
1
|
-
// `auto_approve` pack-config parsing and shared conventions, split out
|
|
2
|
-
// alongside lifecycle.ts (structural sibling of the former monolithic
|
|
3
|
-
// understanding-before-execution-runtime.ts, agent-tasks 348a4d42).
|
|
4
|
-
// Implements slice 1 of docs/decisions/2026-08-27-ug-auto-mode-approval.md
|
|
5
|
-
// (agent-tasks 74b4b17d): the strict pack-config block that lets an
|
|
6
|
-
// operator opt a permission mode into the hook-written signed
|
|
7
|
-
// auto-marker path, plus the shared `approvedBy` / ledger-tag
|
|
8
|
-
// conventions the hook and doctor consume so there is one authority
|
|
9
|
-
// for the string shapes instead of each caller reimplementing them.
|
|
10
|
-
//
|
|
11
|
-
// This module owns no gate decision and no marker write: it only
|
|
12
|
-
// parses the opt-in config (fail-closed: any malformed shape is
|
|
13
|
-
// treated as "not opted in", never as a partial default) and builds /
|
|
14
|
-
// parses the string conventions the ADR's "Audit and doctor" section
|
|
15
|
-
// documents. The PreToolUse hook (auto-path condition checks) and
|
|
16
|
-
// `harness doctor` (auto-approval listing) are the consumers; both
|
|
17
|
-
// land in later slice-1 tasks and import from here.
|
|
18
|
-
//
|
|
19
|
-
// Slice 3 (agent-tasks 37ad0b05) adds `report_scan.max_wait`: the bound
|
|
20
|
-
// of the child's transcript poll under `claude -p` ("Report capture
|
|
21
|
-
// under `-p`" in the ADR). It lives in this block because it tunes the
|
|
22
|
-
// same opt-in path, and it is parsed here rather than at the hook so
|
|
23
|
-
// the lint-time schema and the runtime hook agree on one parser.
|
|
24
|
-
import { InvalidDurationError, parseDurationSeconds } from "../../../policies/index.js";
|
|
25
|
-
/**
|
|
26
|
-
* Prefix every auto-minted marker's `approvedBy` carries, distinguishing
|
|
27
|
-
* it from a human `harness approve understanding` marker (which carries
|
|
28
|
-
* the operator's own identity string, never this prefix).
|
|
29
|
-
*/
|
|
30
|
-
export const AUTO_APPROVED_BY_PREFIX = "auto-mode:";
|
|
31
|
-
/** The harness identifier the Claude Code PreToolUse hook mints markers for. */
|
|
32
|
-
export const CLAUDE_CODE_HARNESS = "claude-code";
|
|
33
|
-
/**
|
|
34
|
-
* The harness identifier the Codex PreToolUse hook mints markers for
|
|
35
|
-
* (slice 2 of the ADR: same auto path, same fail-closed conditions, a
|
|
36
|
-
* distinct `approvedBy` segment so an audit can tell the two runtimes
|
|
37
|
-
* apart). Deliberately NOT re-exported through
|
|
38
|
-
* `understanding-before-execution/index.ts`: its only consumer is
|
|
39
|
-
* `src/cli/pack/hook-codex-pre-tool-use.ts`, and widening the runtime
|
|
40
|
-
* shim's pinned public surface (tests/policy-packs/ube-export-surface.test.ts)
|
|
41
|
-
* is a separate, conscious act.
|
|
42
|
-
*/
|
|
43
|
-
export const CODEX_HARNESS = "codex";
|
|
44
|
-
/**
|
|
45
|
-
* Build the `approvedBy` value the hook writes into a signed auto-marker:
|
|
46
|
-
* `auto-mode:<harness>:<mode>`, for example `auto-mode:claude-code:bypassPermissions`
|
|
47
|
-
* or `auto-mode:codex:bypassPermissions` ("Audit and doctor" in the ADR).
|
|
48
|
-
* Neither `harness` nor `mode` is validated here; callers pass
|
|
49
|
-
* already-known-good values (one of the fixed harness constants above and
|
|
50
|
-
* a `when`-matched mode string).
|
|
51
|
-
*/
|
|
52
|
-
export function autoApprovedByFor(harness, mode) {
|
|
53
|
-
return `${AUTO_APPROVED_BY_PREFIX}${harness}:${mode}`;
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Parse an `approvedBy` string back into its harness/mode pair. Returns
|
|
57
|
-
* `null` for anything that is not exactly `auto-mode:<harness>:<mode>`
|
|
58
|
-
* with both segments non-empty, including a human marker's `approvedBy`
|
|
59
|
-
* (which never carries this prefix) and a malformed or truncated auto
|
|
60
|
-
* value. A slice 3 delegation suffix (`;delegated:<parent-sid>`) is
|
|
61
|
-
* tolerated: it is stripped before parsing and otherwise ignored, per
|
|
62
|
-
* the ADR's "Audit and doctor" convention that the delegation binding
|
|
63
|
-
* packs into the same field without changing the harness/mode shape.
|
|
64
|
-
*/
|
|
65
|
-
export function parseAutoApprovedBy(approvedBy) {
|
|
66
|
-
if (typeof approvedBy !== "string")
|
|
67
|
-
return null;
|
|
68
|
-
if (!approvedBy.startsWith(AUTO_APPROVED_BY_PREFIX))
|
|
69
|
-
return null;
|
|
70
|
-
const withoutPrefix = approvedBy.slice(AUTO_APPROVED_BY_PREFIX.length);
|
|
71
|
-
const [withoutDelegation] = withoutPrefix.split(";delegated:");
|
|
72
|
-
const segments = (withoutDelegation ?? "").split(":");
|
|
73
|
-
if (segments.length !== 2)
|
|
74
|
-
return null;
|
|
75
|
-
const [harness, mode] = segments;
|
|
76
|
-
if (!harness || !mode)
|
|
77
|
-
return null;
|
|
78
|
-
return { harness, mode };
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Build the audit-only ledger fact the ADR's "Audit and doctor" section
|
|
82
|
-
* names: `understanding-auto-approved:<sid>`, distinct from the human
|
|
83
|
-
* `understanding-approved:<sid>` tag (`ledger.ts`), following the same
|
|
84
|
-
* `...:forced:<field>` suffix precedent the ADR cites. Ledger only, never
|
|
85
|
-
* consulted for the gate decision itself.
|
|
86
|
-
*/
|
|
87
|
-
export function autoApprovedLedgerTagFor(sessionId) {
|
|
88
|
-
return `understanding-auto-approved:${sessionId}`;
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* The harness identifiers `auto_approve.harnesses` accepts, in the order
|
|
92
|
-
* the schema and every diagnostic list them. Shared with the pack's zod
|
|
93
|
-
* `configSchema` (`../understanding-before-execution.ts`) so the lint-time
|
|
94
|
-
* enum and this runtime parser cannot drift apart.
|
|
95
|
-
*/
|
|
96
|
-
export const AUTO_APPROVE_HARNESS_VALUES = [CLAUDE_CODE_HARNESS, CODEX_HARNESS];
|
|
97
|
-
/**
|
|
98
|
-
* What `auto_approve.harnesses` resolves to when the key is ABSENT.
|
|
99
|
-
* Claude Code only, deliberately: slice 1 shipped `auto_approve` as a
|
|
100
|
-
* Claude-only opt-in, so a repo that opted in before slice 2 must keep
|
|
101
|
-
* exactly the meaning it had — adding the Codex hook to the shared body
|
|
102
|
-
* must not silently extend an existing opt-in to a second runtime
|
|
103
|
-
* (reviewer round-1 finding on slice 2). Opting Codex in is an explicit,
|
|
104
|
-
* visible config edit.
|
|
105
|
-
*/
|
|
106
|
-
export const DEFAULT_AUTO_APPROVE_HARNESSES = [CLAUDE_CODE_HARNESS];
|
|
107
|
-
/**
|
|
108
|
-
* What `auto_approve.report_scan.max_wait` resolves to when the key is
|
|
109
|
-
* ABSENT: the bound the child's PreToolUse hook waits for its own
|
|
110
|
-
* Understanding Report to reach the session transcript before it blocks
|
|
111
|
-
* (ADR "Report capture under `-p`", slice 3 acceptance criterion 3).
|
|
112
|
-
*
|
|
113
|
-
* The value is measured, not guessed: under `claude -p` the report is
|
|
114
|
-
* absent from the transcript at the instant PreToolUse fires and lands
|
|
115
|
-
* some time later, on a lag that scales with report length, so the
|
|
116
|
-
* bound is set from the real end-to-end runs (a full-length grill_me
|
|
117
|
-
* report), not only the shorter probe reports that first-guessed 500ms.
|
|
118
|
-
* The measurement and the retuning derivation are both in
|
|
119
|
-
* `docs/okf/understanding-gate-auto-mode-signals.md` ("Chosen
|
|
120
|
-
* `report_scan.max_wait` default" section), from
|
|
121
|
-
* `dogfood/ug-auto-mode-signals/`.
|
|
122
|
-
*
|
|
123
|
-
* ONE named constant on purpose: the hook, the schema default and every
|
|
124
|
-
* test read this symbol, so re-tuning the bound against a new
|
|
125
|
-
* measurement is a one-line change with no literal to hunt down.
|
|
126
|
-
*/
|
|
127
|
-
export const DEFAULT_REPORT_SCAN_MAX_WAIT_MS = 2_000;
|
|
128
|
-
/**
|
|
129
|
-
* Hard ceiling for `auto_approve.report_scan.max_wait`. A larger value
|
|
130
|
-
* is a `harness validate` schema error AND a runtime parse failure (which
|
|
131
|
-
* fails the whole `auto_approve` block closed), so no configuration can
|
|
132
|
-
* make a PreToolUse hook sit on a session for an arbitrary time. 5 s is
|
|
133
|
-
* an order of magnitude above the measured worst-case flush, which is
|
|
134
|
-
* generous for a bound whose only job is to cover a transcript write
|
|
135
|
-
* already in flight.
|
|
136
|
-
*/
|
|
137
|
-
export const REPORT_SCAN_MAX_WAIT_CEILING_MS = 5_000;
|
|
138
|
-
const KNOWN_AUTO_APPROVE_KEYS = new Set([
|
|
139
|
-
"when",
|
|
140
|
-
"harnesses",
|
|
141
|
-
"require_report",
|
|
142
|
-
"report_scan",
|
|
143
|
-
]);
|
|
144
|
-
/** The only key `auto_approve.report_scan` accepts. */
|
|
145
|
-
const KNOWN_REPORT_SCAN_KEYS = new Set(["max_wait"]);
|
|
146
|
-
/** Sub-second shorthand the shared duration parser does not model. */
|
|
147
|
-
const MILLISECOND_SHORTHAND = /^(\d+)ms$/;
|
|
148
|
-
/**
|
|
149
|
-
* Parse `auto_approve.report_scan.max_wait` into milliseconds.
|
|
150
|
-
*
|
|
151
|
-
* Duration grammar: the pack's SHARED parser
|
|
152
|
-
* ({@link parseDurationSeconds}, the same one `approval_lifecycle.max_age`
|
|
153
|
-
* uses), plus an `<n>ms` shorthand it does not model. The extension is
|
|
154
|
-
* not cosmetic: this bound is a transcript-flush allowance measured in
|
|
155
|
-
* tens of milliseconds, so a second-granularity grammar could not express
|
|
156
|
-
* the values the measurement actually argues for, and widening
|
|
157
|
-
* `parseDurationSeconds` itself would change the grammar of every
|
|
158
|
-
* `within:` / `max_age:` / `--since` value in the repo for one key's sake.
|
|
159
|
-
*
|
|
160
|
-
* Both bounds are errors, never clamps: zero or negative (a bound that
|
|
161
|
-
* would disable the poll while the block still claimed to have one) and
|
|
162
|
-
* anything above {@link REPORT_SCAN_MAX_WAIT_CEILING_MS} (a bound that
|
|
163
|
-
* could park a PreToolUse hook). Returning a RESULT rather than throwing
|
|
164
|
-
* keeps the two consumers symmetric: the zod schema turns it into a
|
|
165
|
-
* `harness validate` diagnostic, the runtime parser into one stderr line
|
|
166
|
-
* and a fail-closed `null`.
|
|
167
|
-
*/
|
|
168
|
-
export function parseReportScanMaxWait(raw) {
|
|
169
|
-
if (typeof raw !== "string" || raw.trim().length === 0) {
|
|
170
|
-
return {
|
|
171
|
-
ok: false,
|
|
172
|
-
reason: `expected a duration string like "500ms", "1500ms" or "2s", got ${typeof raw === "string" ? "an empty string" : typeof raw}`,
|
|
173
|
-
};
|
|
174
|
-
}
|
|
175
|
-
const trimmed = raw.trim();
|
|
176
|
-
let maxWaitMs;
|
|
177
|
-
const ms = MILLISECOND_SHORTHAND.exec(trimmed);
|
|
178
|
-
if (ms) {
|
|
179
|
-
maxWaitMs = Number.parseInt(ms[1], 10);
|
|
180
|
-
}
|
|
181
|
-
else {
|
|
182
|
-
try {
|
|
183
|
-
maxWaitMs = parseDurationSeconds(trimmed) * 1_000;
|
|
184
|
-
}
|
|
185
|
-
catch (err) {
|
|
186
|
-
return {
|
|
187
|
-
ok: false,
|
|
188
|
-
reason: err instanceof InvalidDurationError ? err.message : String(err),
|
|
189
|
-
};
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
if (!Number.isFinite(maxWaitMs) || maxWaitMs <= 0) {
|
|
193
|
-
return {
|
|
194
|
-
ok: false,
|
|
195
|
-
reason: `must be greater than zero, got ${JSON.stringify(trimmed)}`,
|
|
196
|
-
};
|
|
197
|
-
}
|
|
198
|
-
if (maxWaitMs > REPORT_SCAN_MAX_WAIT_CEILING_MS) {
|
|
199
|
-
return {
|
|
200
|
-
ok: false,
|
|
201
|
-
reason: `must not exceed the ${REPORT_SCAN_MAX_WAIT_CEILING_MS}ms hard ceiling (a PreToolUse hook must never park a session), got ${JSON.stringify(trimmed)}`,
|
|
202
|
-
};
|
|
203
|
-
}
|
|
204
|
-
return { ok: true, maxWaitMs };
|
|
205
|
-
}
|
|
206
|
-
/**
|
|
207
|
-
* Parse the optional `auto_approve` pack-config block
|
|
208
|
-
* (docs/decisions/2026-08-27-ug-auto-mode-approval.md, "Option A").
|
|
209
|
-
*
|
|
210
|
-
* FAIL CLOSED, unlike {@link parseApprovalLifecycle}'s best-effort
|
|
211
|
-
* fallback: this block is an opt-IN to a hook-side signing path
|
|
212
|
-
* (hardening item 3 in the ADR's threat model (b) — `require_report:
|
|
213
|
-
* false` must be a schema error, not a silently-ignored key), so any
|
|
214
|
-
* malformed shape here means "not opted in" (`null`), never a partial
|
|
215
|
-
* or default-filled config that could still enable the auto path. The
|
|
216
|
-
* `configSchema` zod block in `../understanding-before-execution.ts` is
|
|
217
|
-
* the first line of defence (`harness validate` / `harness doctor`
|
|
218
|
-
* reject a malformed manifest at lint time); this parser is the second,
|
|
219
|
-
* defensive line for the runtime hook, which must not trust that every
|
|
220
|
-
* config it sees on disk passed the schema.
|
|
221
|
-
*
|
|
222
|
-
* `undefined` / `null` (the block is simply absent) returns `null`
|
|
223
|
-
* silently — that is the ordinary "not opted in" case, not a warning.
|
|
224
|
-
* Every other malformed shape writes exactly one stderr line and
|
|
225
|
-
* returns `null`.
|
|
226
|
-
*
|
|
227
|
-
* `label` is the stderr prefix of the calling hook, so a Codex-side
|
|
228
|
-
* warning reads `harness pack hook codex: ...` like every other line
|
|
229
|
-
* that hook writes. The default reproduces the Claude Code hook's
|
|
230
|
-
* wording byte-for-byte.
|
|
231
|
-
*/
|
|
232
|
-
export function parseAutoApprove(raw, stderr, label = "harness pack hook") {
|
|
233
|
-
if (raw === undefined || raw === null)
|
|
234
|
-
return null;
|
|
235
|
-
if (typeof raw !== "object" || Array.isArray(raw)) {
|
|
236
|
-
stderr?.write(`${label}: config.auto_approve ignored (expected object, got ${typeof raw})\n`);
|
|
237
|
-
return null;
|
|
238
|
-
}
|
|
239
|
-
const obj = raw;
|
|
240
|
-
const unknownKeys = Object.keys(obj).filter((k) => !KNOWN_AUTO_APPROVE_KEYS.has(k));
|
|
241
|
-
if (unknownKeys.length > 0) {
|
|
242
|
-
stderr?.write(`${label}: config.auto_approve ignored (unknown key(s): ${unknownKeys.join(", ")})\n`);
|
|
243
|
-
return null;
|
|
244
|
-
}
|
|
245
|
-
const whenRaw = obj["when"];
|
|
246
|
-
if (!Array.isArray(whenRaw) || whenRaw.length === 0) {
|
|
247
|
-
stderr?.write(`${label}: config.auto_approve.when ignored (expected a non-empty string[], got ${Array.isArray(whenRaw) ? "empty array" : typeof whenRaw})\n`);
|
|
248
|
-
return null;
|
|
249
|
-
}
|
|
250
|
-
const when = [];
|
|
251
|
-
for (const v of whenRaw) {
|
|
252
|
-
if (typeof v !== "string" || v.length === 0) {
|
|
253
|
-
stderr?.write(`${label}: config.auto_approve.when ignored (every entry must be a non-empty string, got ${typeof v})\n`);
|
|
254
|
-
return null;
|
|
255
|
-
}
|
|
256
|
-
when.push(v);
|
|
257
|
-
}
|
|
258
|
-
// `harnesses`: absent means the slice-1 default (Claude Code only).
|
|
259
|
-
// Present means an exact, non-empty, duplicate-free list of the known
|
|
260
|
-
// harness identifiers — anything else fails the whole block closed,
|
|
261
|
-
// like every other malformed shape here, so a typo'd entry can never
|
|
262
|
-
// widen the opt-in to a runtime the operator did not name.
|
|
263
|
-
const harnessesRaw = obj["harnesses"];
|
|
264
|
-
let harnesses = [...DEFAULT_AUTO_APPROVE_HARNESSES];
|
|
265
|
-
if (harnessesRaw !== undefined) {
|
|
266
|
-
if (!Array.isArray(harnessesRaw) || harnessesRaw.length === 0) {
|
|
267
|
-
stderr?.write(`${label}: config.auto_approve.harnesses ignored (expected a non-empty array of ${AUTO_APPROVE_HARNESS_VALUES.join(" | ")}, got ${Array.isArray(harnessesRaw) ? "empty array" : typeof harnessesRaw})\n`);
|
|
268
|
-
return null;
|
|
269
|
-
}
|
|
270
|
-
const seen = [];
|
|
271
|
-
for (const v of harnessesRaw) {
|
|
272
|
-
if (typeof v !== "string" || !AUTO_APPROVE_HARNESS_VALUES.includes(v)) {
|
|
273
|
-
stderr?.write(`${label}: config.auto_approve.harnesses ignored (every entry must be one of ${AUTO_APPROVE_HARNESS_VALUES.join(", ")}, got ${typeof v === "string" ? `"${v}"` : typeof v})\n`);
|
|
274
|
-
return null;
|
|
275
|
-
}
|
|
276
|
-
if (seen.includes(v)) {
|
|
277
|
-
stderr?.write(`${label}: config.auto_approve.harnesses ignored (duplicate entry "${v}")\n`);
|
|
278
|
-
return null;
|
|
279
|
-
}
|
|
280
|
-
seen.push(v);
|
|
281
|
-
}
|
|
282
|
-
harnesses = seen;
|
|
283
|
-
}
|
|
284
|
-
// `report_scan`: absent means the measured default
|
|
285
|
-
// ({@link DEFAULT_REPORT_SCAN_MAX_WAIT_MS}). Present means an object
|
|
286
|
-
// carrying exactly `max_wait` and nothing else, parsed and
|
|
287
|
-
// range-checked by `parseReportScanMaxWait`. Anything else fails the
|
|
288
|
-
// WHOLE block closed, like every other malformed shape here, so a
|
|
289
|
-
// typo'd bound can never silently fall back to the default while the
|
|
290
|
-
// operator believes they tuned it.
|
|
291
|
-
const reportScanRaw = obj["report_scan"];
|
|
292
|
-
let reportScanMaxWaitMs = DEFAULT_REPORT_SCAN_MAX_WAIT_MS;
|
|
293
|
-
if (reportScanRaw !== undefined) {
|
|
294
|
-
if (reportScanRaw === null || typeof reportScanRaw !== "object" || Array.isArray(reportScanRaw)) {
|
|
295
|
-
stderr?.write(`${label}: config.auto_approve.report_scan ignored (expected object, got ${reportScanRaw === null ? "null" : Array.isArray(reportScanRaw) ? "array" : typeof reportScanRaw})\n`);
|
|
296
|
-
return null;
|
|
297
|
-
}
|
|
298
|
-
const reportScanObj = reportScanRaw;
|
|
299
|
-
const unknownScanKeys = Object.keys(reportScanObj).filter((k) => !KNOWN_REPORT_SCAN_KEYS.has(k));
|
|
300
|
-
if (unknownScanKeys.length > 0) {
|
|
301
|
-
stderr?.write(`${label}: config.auto_approve.report_scan ignored (unknown key(s): ${unknownScanKeys.join(", ")})\n`);
|
|
302
|
-
return null;
|
|
303
|
-
}
|
|
304
|
-
const maxWait = parseReportScanMaxWait(reportScanObj["max_wait"]);
|
|
305
|
-
if (!maxWait.ok) {
|
|
306
|
-
stderr?.write(`${label}: config.auto_approve.report_scan.max_wait ignored (${maxWait.reason})\n`);
|
|
307
|
-
return null;
|
|
308
|
-
}
|
|
309
|
-
reportScanMaxWaitMs = maxWait.maxWaitMs;
|
|
310
|
-
}
|
|
311
|
-
const requireReport = obj["require_report"];
|
|
312
|
-
if (requireReport !== true) {
|
|
313
|
-
stderr?.write(`${label}: config.auto_approve ignored (require_report must be true, got ${requireReport === false ? "false" : typeof requireReport})\n`);
|
|
314
|
-
return null;
|
|
315
|
-
}
|
|
316
|
-
return { when, harnesses, reportScan: { maxWaitMs: reportScanMaxWaitMs } };
|
|
317
|
-
}
|
|
318
|
-
/**
|
|
319
|
-
* ADR "Additional hardening to specify" item 2: `when` is an allowlist
|
|
320
|
-
* of payload literals, membership by exact string equality, no case
|
|
321
|
-
* folding, no substring, no wildcards. `mode` absent, empty, or not a
|
|
322
|
-
* string means no auto-approval, and `cfg === null` (block absent or
|
|
323
|
-
* malformed) means no auto-approval regardless of `mode`.
|
|
324
|
-
*
|
|
325
|
-
* Takes only the `when` slice of the config rather than the whole block:
|
|
326
|
-
* this predicate reads exactly one field, and saying so in the signature
|
|
327
|
-
* keeps it honest as the block grows further keys (`harnesses`,
|
|
328
|
-
* `report_scan`) that have nothing to do with mode membership.
|
|
329
|
-
*/
|
|
330
|
-
export function permissionModeAllowed(cfg, mode) {
|
|
331
|
-
if (cfg === null)
|
|
332
|
-
return false;
|
|
333
|
-
if (typeof mode !== "string" || mode.length === 0)
|
|
334
|
-
return false;
|
|
335
|
-
return cfg.when.includes(mode);
|
|
336
|
-
}
|
|
337
|
-
/**
|
|
338
|
-
* Per-harness opt-in membership, the same exact-string-equality
|
|
339
|
-
* discipline {@link permissionModeAllowed} applies to `when`. `cfg ===
|
|
340
|
-
* null` (block absent or malformed) means no auto-approval regardless of
|
|
341
|
-
* the harness, and an unlisted harness means no auto-approval regardless
|
|
342
|
-
* of `when` — the two allowlists are independent AND conditions, not
|
|
343
|
-
* alternatives.
|
|
344
|
-
*
|
|
345
|
-
* Re-exported through `understanding-before-execution/index.ts` (round-2
|
|
346
|
-
* review finding on slice 2): its call site (`src/cli/pack/auto-approve-path.ts`)
|
|
347
|
-
* imports every sibling symbol it needs (`parseAutoApprove`,
|
|
348
|
-
* `permissionModeAllowed`, ...) through the runtime shim already, so this
|
|
349
|
-
* one was pulled onto the pinned shim surface
|
|
350
|
-
* (tests/policy-packs/ube-export-surface.test.ts) to match, unlike
|
|
351
|
-
* {@link CODEX_HARNESS} which still has exactly one consumer and stays a
|
|
352
|
-
* direct import.
|
|
353
|
-
*/
|
|
354
|
-
export function harnessAllowed(cfg, harness) {
|
|
355
|
-
if (cfg === null)
|
|
356
|
-
return false;
|
|
357
|
-
if (typeof harness !== "string" || harness.length === 0)
|
|
358
|
-
return false;
|
|
359
|
-
return cfg.harnesses.includes(harness);
|
|
360
|
-
}
|
|
361
|
-
//# sourceMappingURL=auto-approve.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auto-approve.js","sourceRoot":"","sources":["../../../../src/policy-packs/builtin/understanding-before-execution/auto-approve.ts"],"names":[],"mappings":"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"}
|