@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,245 +0,0 @@
|
|
|
1
|
-
// Internal agent-tasks runtime adapter. Consumers keep their own event and
|
|
2
|
-
// diagnostic handling; this module owns provider-specific semantics only.
|
|
3
|
-
import { expandToolNameAliases } from "../tool-name-aliases.js";
|
|
4
|
-
export const AGENT_TASKS_MCP_PREFIX = "mcp__agent-tasks__";
|
|
5
|
-
export const TASK_START_TOOL = `${AGENT_TASKS_MCP_PREFIX}task_start`;
|
|
6
|
-
export const TASK_FINISH_TOOL = `${AGENT_TASKS_MCP_PREFIX}task_finish`;
|
|
7
|
-
export const TASK_ABANDON_TOOL = `${AGENT_TASKS_MCP_PREFIX}task_abandon`;
|
|
8
|
-
export const TASKS_TRANSITION_TOOL = `${AGENT_TASKS_MCP_PREFIX}tasks_transition`;
|
|
9
|
-
export const TASK_MERGE_TOOL = `${AGENT_TASKS_MCP_PREFIX}task_merge`;
|
|
10
|
-
export const PULL_REQUESTS_MERGE_TOOL = `${AGENT_TASKS_MCP_PREFIX}pull_requests_merge`;
|
|
11
|
-
export const ACTIVE_CLAIM_TOOL_NAMES = [
|
|
12
|
-
TASK_START_TOOL,
|
|
13
|
-
TASK_FINISH_TOOL,
|
|
14
|
-
TASK_ABANDON_TOOL,
|
|
15
|
-
TASKS_TRANSITION_TOOL,
|
|
16
|
-
TASK_MERGE_TOOL,
|
|
17
|
-
];
|
|
18
|
-
/**
|
|
19
|
-
* Default approval-marker expiry tool list. It only shapes the EMITTED
|
|
20
|
-
* PostToolUse matcher when a manifest configures no explicit
|
|
21
|
-
* `approval_lifecycle.expire_on_tool_match`; the runtime boundary list
|
|
22
|
-
* the hook applies comes from the config alone (`parseApprovalLifecycle`
|
|
23
|
-
* returns an empty list when the key is absent). `task_merge` is listed
|
|
24
|
-
* because a `task_finish` that lands in `review` no longer expires the
|
|
25
|
-
* approval (it keeps the work claim, task 5018c0c4); an operator's
|
|
26
|
-
* explicit list, and every `harness init` scaffold, needs `task_merge`
|
|
27
|
-
* too for the review-then-`task_merge` path to expire the approval.
|
|
28
|
-
*/
|
|
29
|
-
export const DEFAULT_BOUNDARY_TOOL_NAMES = [
|
|
30
|
-
TASK_FINISH_TOOL,
|
|
31
|
-
TASK_ABANDON_TOOL,
|
|
32
|
-
PULL_REQUESTS_MERGE_TOOL,
|
|
33
|
-
TASKS_TRANSITION_TOOL,
|
|
34
|
-
TASK_MERGE_TOOL,
|
|
35
|
-
];
|
|
36
|
-
export const DEFAULT_PROTECTED_COMPLETION_TOOLS = [
|
|
37
|
-
"task_finish",
|
|
38
|
-
"task_submit_pr",
|
|
39
|
-
"task_merge",
|
|
40
|
-
"pull_requests_merge",
|
|
41
|
-
];
|
|
42
|
-
export const TASK_FINISH_AUTOMERGE_INPUT_MATCH = {
|
|
43
|
-
"toolArgs.autoMerge": true,
|
|
44
|
-
};
|
|
45
|
-
export const TASK_ID_EXTRACT = { TASK_ID: "toolArgs.taskId" };
|
|
46
|
-
export const PR_NUMBER_EXTRACT = { PR_NUMBER: "toolArgs.prNumber" };
|
|
47
|
-
function inputRecord(input) {
|
|
48
|
-
if (typeof input !== "object" || input === null || Array.isArray(input))
|
|
49
|
-
return null;
|
|
50
|
-
return input;
|
|
51
|
-
}
|
|
52
|
-
export function taskIdFromInput(input) {
|
|
53
|
-
const taskId = inputRecord(input)?.["taskId"];
|
|
54
|
-
return typeof taskId === "string" ? taskId : "";
|
|
55
|
-
}
|
|
56
|
-
export function tasksTransitionStatusFromInput(input) {
|
|
57
|
-
const status = inputRecord(input)?.["status"];
|
|
58
|
-
return typeof status === "string" ? status : "";
|
|
59
|
-
}
|
|
60
|
-
export function tasksTransitionReleasesClaim(input) {
|
|
61
|
-
return tasksTransitionStatusFromInput(input) === "done";
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Best-effort recursive unwrap of a task_finish tool RESULT into the
|
|
65
|
-
* mcp-server receipt object it ultimately carries, tolerating every
|
|
66
|
-
* transport shape observed or plausible for a PostToolUse event (task
|
|
67
|
-
* c86e3c4a: an earlier version of this function read only shape (a)
|
|
68
|
-
* below and was inert against the shape Claude Code actually sends):
|
|
69
|
-
*
|
|
70
|
-
* (a) the receipt object itself, `{ ok, task: { id, status } }` -- both
|
|
71
|
-
* the small default receipt and the `include:["task"]` full-object
|
|
72
|
-
* variant, since both nest the task under `task` and this function
|
|
73
|
-
* only reads that key, not the rest of the shape;
|
|
74
|
-
* (b) Claude Code's REAL PostToolUse `tool_response` for an MCP tool
|
|
75
|
-
* (live capture, claude 2.1.280): a content-block array
|
|
76
|
-
* `[{ type: "text", text: "<json>" }, ...]` -- the first `text`
|
|
77
|
-
* block is located and its `text` is JSON-parsed, then unwrapped
|
|
78
|
-
* again as (a). See `tests/fixtures/track-active-claim/
|
|
79
|
-
* real-posttooluse-task-finish-2.1.280.json` for the verbatim
|
|
80
|
-
* redacted capture;
|
|
81
|
-
* (c) an MCP `CallToolResult` object, `{ content: [{ type: "text",
|
|
82
|
-
* text: "<json>" }] }` -- plausible on Codex, UNMEASURED here (no
|
|
83
|
-
* Codex capture exists in this run; see
|
|
84
|
-
* `docs/policy-packs/understanding-before-execution.md`), handled
|
|
85
|
-
* defensively the same way as (b);
|
|
86
|
-
* (d) a bare JSON string -- parsed once, then unwrapped again.
|
|
87
|
-
*
|
|
88
|
-
* Anything else, a `JSON.parse` failure at any step, or a nesting depth
|
|
89
|
-
* past a small guard, returns `null` so the caller fails safe rather
|
|
90
|
-
* than throwing or silently misreading.
|
|
91
|
-
*/
|
|
92
|
-
function unwrapToolResponseEnvelope(toolResponse, depth = 0) {
|
|
93
|
-
if (depth > 4)
|
|
94
|
-
return null;
|
|
95
|
-
if (typeof toolResponse === "string") {
|
|
96
|
-
let parsed;
|
|
97
|
-
try {
|
|
98
|
-
parsed = JSON.parse(toolResponse);
|
|
99
|
-
}
|
|
100
|
-
catch {
|
|
101
|
-
return null;
|
|
102
|
-
}
|
|
103
|
-
return unwrapToolResponseEnvelope(parsed, depth + 1);
|
|
104
|
-
}
|
|
105
|
-
if (Array.isArray(toolResponse)) {
|
|
106
|
-
const textBlock = toolResponse.find((block) => {
|
|
107
|
-
const rec = inputRecord(block);
|
|
108
|
-
return rec !== null && rec["type"] === "text" && typeof rec["text"] === "string";
|
|
109
|
-
});
|
|
110
|
-
const text = inputRecord(textBlock)?.["text"];
|
|
111
|
-
return typeof text === "string" ? unwrapToolResponseEnvelope(text, depth + 1) : null;
|
|
112
|
-
}
|
|
113
|
-
const record = inputRecord(toolResponse);
|
|
114
|
-
if (record === null)
|
|
115
|
-
return null;
|
|
116
|
-
if (Array.isArray(record["content"])) {
|
|
117
|
-
return unwrapToolResponseEnvelope(record["content"], depth + 1);
|
|
118
|
-
}
|
|
119
|
-
return record;
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Read the resulting status off a task_finish tool RESULT (not the
|
|
123
|
-
* request), unwrapping whichever transport shape it arrived in (see
|
|
124
|
-
* `unwrapToolResponseEnvelope`). Returns `null` when the result is
|
|
125
|
-
* absent, malformed, or carries no string status, so a caller can tell
|
|
126
|
-
* "the task landed on a known non-review status" apart from "we could
|
|
127
|
-
* not tell" (task c86e3c4a).
|
|
128
|
-
*/
|
|
129
|
-
export function taskFinishResultingStatus(toolResponse) {
|
|
130
|
-
const task = unwrapToolResponseEnvelope(toolResponse)?.["task"];
|
|
131
|
-
const status = inputRecord(task)?.["status"];
|
|
132
|
-
return typeof status === "string" && status.length > 0 ? status : null;
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Read the acted-on task id off a task_finish (or any agent-tasks) tool
|
|
136
|
-
* RESULT, unwrapping the same shapes as `taskFinishResultingStatus`.
|
|
137
|
-
* Used as a fallback when the tool_input did not carry a `taskId` (task
|
|
138
|
-
* c86e3c4a, id-equality guard on release verbs), and by the stay-in-scope
|
|
139
|
-
* hook to read the created task id off a create verb's result, which never
|
|
140
|
-
* carries a `taskId` input (task b5e65f5e).
|
|
141
|
-
*/
|
|
142
|
-
export function taskIdFromToolResponse(toolResponse) {
|
|
143
|
-
const task = unwrapToolResponseEnvelope(toolResponse)?.["task"];
|
|
144
|
-
const id = inputRecord(task)?.["id"];
|
|
145
|
-
return typeof id === "string" ? id : "";
|
|
146
|
-
}
|
|
147
|
-
/**
|
|
148
|
-
* Diagnostic-only companion to `claimEffectForAgentTasksTool`: was a
|
|
149
|
-
* task_finish's resulting status actually readable? This does NOT feed
|
|
150
|
-
* back into the release/keep decision (that stays the classifier's
|
|
151
|
-
* alone) -- it lets `hook-track-active-claim.ts` label its stderr line
|
|
152
|
-
* so a silent fail-safe fallback release does not look identical to an
|
|
153
|
-
* intentional `done` release in the operator's own trail (task
|
|
154
|
-
* c86e3c4a).
|
|
155
|
-
*/
|
|
156
|
-
export function taskFinishReleaseIsUnreadable(toolResponse) {
|
|
157
|
-
return taskFinishResultingStatus(toolResponse) === null;
|
|
158
|
-
}
|
|
159
|
-
/**
|
|
160
|
-
* Coarse shape label for a tool_response, for the same stderr diagnostic
|
|
161
|
-
* above -- never used to decide anything, only to name what shape a
|
|
162
|
-
* fail-safe release fell back from.
|
|
163
|
-
*/
|
|
164
|
-
export function describeToolResponseShape(toolResponse) {
|
|
165
|
-
if (toolResponse === undefined || toolResponse === null)
|
|
166
|
-
return "absent";
|
|
167
|
-
if (Array.isArray(toolResponse))
|
|
168
|
-
return "array";
|
|
169
|
-
if (typeof toolResponse === "string")
|
|
170
|
-
return "string";
|
|
171
|
-
return "object";
|
|
172
|
-
}
|
|
173
|
-
export function agentTasksToolName(verb) {
|
|
174
|
-
return `${AGENT_TASKS_MCP_PREFIX}${verb}`;
|
|
175
|
-
}
|
|
176
|
-
/** Alias-aware for runtime events, including mcp__server.verb variants. */
|
|
177
|
-
export function matchesAgentTasksRuntimeVerb(toolName, verbs) {
|
|
178
|
-
const expected = new Set(verbs.map(agentTasksToolName));
|
|
179
|
-
return expandToolNameAliases(toolName).some((alias) => expected.has(alias));
|
|
180
|
-
}
|
|
181
|
-
/** Strict canonical parsing for Solution Acceptance's deliberately narrow gate. */
|
|
182
|
-
export function canonicalAgentTasksVerb(toolName, verbs) {
|
|
183
|
-
if (!toolName.startsWith(AGENT_TASKS_MCP_PREFIX))
|
|
184
|
-
return null;
|
|
185
|
-
const verb = toolName.slice(AGENT_TASKS_MCP_PREFIX.length);
|
|
186
|
-
return verbs.includes(verb) ? verb : null;
|
|
187
|
-
}
|
|
188
|
-
/**
|
|
189
|
-
* Claim lifecycle is separate from approval boundaries: only a completed
|
|
190
|
-
* legacy transition releases a claim, while abandon and merge always do.
|
|
191
|
-
*
|
|
192
|
-
* task_finish is decided from the RESULT, not the verb (task c86e3c4a):
|
|
193
|
-
* agent-tasks's own v2 semantics clear the work claim going to `done`
|
|
194
|
-
* and keep it going to `review`, so `toolResponse` (the tool RESULT
|
|
195
|
-
* envelope, optional third parameter -- the caller's PostToolUse event
|
|
196
|
-
* carries this alongside `tool_input`) is read via
|
|
197
|
-
* `taskFinishResultingStatus`. A resulting status of `review` returns
|
|
198
|
-
* `none` (keep); `done`, any other resolvable status, and an
|
|
199
|
-
* unresolvable result (no `toolResponse`, or a malformed one) all
|
|
200
|
-
* return `release`.
|
|
201
|
-
*
|
|
202
|
-
* Fail-safe rationale (task c86e3c4a -- corrected from an earlier
|
|
203
|
-
* wording of this comment that was wrong about what the marker feeds):
|
|
204
|
-
* the active-claim file
|
|
205
|
-
* this classifier feeds is read by the FAIL-CLOSED completion gate
|
|
206
|
-
* (`src/cli/pack/hook-solution-acceptance.ts`'s `readActiveClaim` call)
|
|
207
|
-
* to derive the verdict id it gates `task_finish` / `task_submit_pr` /
|
|
208
|
-
* `task_merge` / `pull_requests_merge` / `git push` on. Release-on-
|
|
209
|
-
* unreadable is chosen because a KEPT marker for a task that actually
|
|
210
|
-
* finished would fail OPEN: until the next `task_start` overwrites it,
|
|
211
|
-
* post-done completion-gated actions (git push, task_merge, PR merge)
|
|
212
|
-
* would pass on that finished task's already-accepted verdict, and the
|
|
213
|
-
* marker would override SOLUTION_VERDICT_ID. Releasing fails CLOSED
|
|
214
|
-
* instead, at the cost of a possible wedge (the gate refuses with "no
|
|
215
|
-
* active-claim task id recorded" until a fresh `task_start` or an
|
|
216
|
-
* operator clears the file). It is not costless, and it is not merely
|
|
217
|
-
* giving up an "ergonomic shortcut".
|
|
218
|
-
*
|
|
219
|
-
* This is the ONE place that decision is made: callers (e.g.
|
|
220
|
-
* `hook-track-active-claim.ts`) do not re-derive it locally.
|
|
221
|
-
*/
|
|
222
|
-
export function claimEffectForAgentTasksTool(toolName, input, toolResponse) {
|
|
223
|
-
if (matchesAgentTasksRuntimeVerb(toolName, ["task_start"]))
|
|
224
|
-
return "acquire";
|
|
225
|
-
if (matchesAgentTasksRuntimeVerb(toolName, ["task_finish"])) {
|
|
226
|
-
return taskFinishResultingStatus(toolResponse) === "review" ? "none" : "release";
|
|
227
|
-
}
|
|
228
|
-
if (matchesAgentTasksRuntimeVerb(toolName, ["task_abandon", "task_merge"])) {
|
|
229
|
-
return "release";
|
|
230
|
-
}
|
|
231
|
-
if (matchesAgentTasksRuntimeVerb(toolName, ["tasks_transition"]) &&
|
|
232
|
-
tasksTransitionReleasesClaim(input)) {
|
|
233
|
-
return "release";
|
|
234
|
-
}
|
|
235
|
-
return "none";
|
|
236
|
-
}
|
|
237
|
-
export function resolveProtectedCompletionTools(config) {
|
|
238
|
-
if (Array.isArray(config) &&
|
|
239
|
-
config.length > 0 &&
|
|
240
|
-
config.every((verb) => typeof verb === "string" && verb.length > 0)) {
|
|
241
|
-
return config;
|
|
242
|
-
}
|
|
243
|
-
return [...DEFAULT_PROTECTED_COMPLETION_TOOLS];
|
|
244
|
-
}
|
|
245
|
-
//# sourceMappingURL=agent-tasks.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent-tasks.js","sourceRoot":"","sources":["../../../src/runtime/task-providers/agent-tasks.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import type { PolicyWhen } from "../schema/index.js";
|
|
2
|
-
import type { DeletionTargetVerdict } from "./deletion-target-resolve.js";
|
|
3
|
-
import type { EnvironmentResolution } from "./environment-resolver.js";
|
|
4
|
-
import type { RiskProfile } from "./risk-classifier.js";
|
|
5
|
-
/**
|
|
6
|
-
* The severity NAME the unclassified fallback is treated as, for
|
|
7
|
-
* surfaces that have to say it out loud (`intercept.ts`'s deny
|
|
8
|
-
* envelope). Exported so no caller hard-codes "high" beside a constant
|
|
9
|
-
* that is derived.
|
|
10
|
-
*/
|
|
11
|
-
export declare const UNCLASSIFIED_FALLBACK_SEVERITY: string;
|
|
12
|
-
/** The enriched-envelope inputs a `when:` block is evaluated against. */
|
|
13
|
-
export interface WhenContext {
|
|
14
|
-
risk: RiskProfile;
|
|
15
|
-
environment: EnvironmentResolution;
|
|
16
|
-
/**
|
|
17
|
-
* Static deletion-target verdict for this action (task d03af8f6), or
|
|
18
|
-
* `null`/omitted when the command was not recognized as a deletion
|
|
19
|
-
* verb at all — see `deletion-target-resolve.ts`. Optional so every
|
|
20
|
-
* caller/fixture that predates this arm keeps compiling and behaving
|
|
21
|
-
* exactly as before (treated the same as `null`).
|
|
22
|
-
*/
|
|
23
|
-
deletionTarget?: DeletionTargetVerdict | null;
|
|
24
|
-
}
|
|
25
|
-
/** The five `when:` clause keys, exactly as they appear in the manifest. */
|
|
26
|
-
export type WhenClauseKey = "risk.severity_at_least" | "risk.category_in" | "environment.name" | "action.reversible" | "action.deletion_target_unresolvable";
|
|
27
|
-
/** One declared clause's verdict, carried for explainability. */
|
|
28
|
-
export interface WhenClauseResult {
|
|
29
|
-
clause: WhenClauseKey;
|
|
30
|
-
/** Human-readable expected value, as written in the manifest. */
|
|
31
|
-
expected: string;
|
|
32
|
-
/** Human-readable observed value, from the enriched envelope. */
|
|
33
|
-
actual: string;
|
|
34
|
-
matched: boolean;
|
|
35
|
-
}
|
|
36
|
-
export interface WhenEvaluation {
|
|
37
|
-
/** AND of every declared clause. A `when:` with no clauses cannot be
|
|
38
|
-
* constructed (the schema rejects `when: {}`), so an evaluated
|
|
39
|
-
* `when:` always has at least one clause. */
|
|
40
|
-
matched: boolean;
|
|
41
|
-
/** One entry per DECLARED clause, in manifest-key order. */
|
|
42
|
-
clauses: WhenClauseResult[];
|
|
43
|
-
/** True when at least one clause's outcome was decided by the
|
|
44
|
-
* unclassified fallback rather than a real classification ("unknown
|
|
45
|
-
* is not safe" for `risk.category_in` / `action.reversible`, or the
|
|
46
|
-
* "treated as high" rung for `risk.severity_at_least`) — true
|
|
47
|
-
* whether that fallback made the clause match or fail. Surfaced so
|
|
48
|
-
* `explain-policy` can tell an operator a clause outcome was
|
|
49
|
-
* fail-closed, not a real hit. */
|
|
50
|
-
unclassifiedFallback: boolean;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Evaluate a policy's `when:` block against the enriched envelope.
|
|
54
|
-
*
|
|
55
|
-
* Every clause is optional; only declared clauses are evaluated, and
|
|
56
|
-
* `matched` is their AND. An unclassified risk profile (`classified:
|
|
57
|
-
* false`) satisfies `risk.category_in` / `action.reversible` by the
|
|
58
|
-
* "unknown is not safe" rule, and satisfies `risk.severity_at_least`
|
|
59
|
-
* up through `high` but never `critical` (see the module header);
|
|
60
|
-
* `environment.name` is always a plain equality test.
|
|
61
|
-
*/
|
|
62
|
-
export declare function evaluateWhen(when: PolicyWhen, ctx: WhenContext): WhenEvaluation;
|
|
@@ -1,212 +0,0 @@
|
|
|
1
|
-
// Phase 7 #5 — `policy.when:` evaluator.
|
|
2
|
-
//
|
|
3
|
-
// A policy's `trigger:` decides WHICH tool calls it inspects; its
|
|
4
|
-
// optional `when:` block decides whether — given the enriched Action
|
|
5
|
-
// Envelope — the policy actually applies to this particular call. The
|
|
6
|
-
// runtime ANDs the two: a policy fires only when `trigger:` AND every
|
|
7
|
-
// declared `when:` clause hold.
|
|
8
|
-
//
|
|
9
|
-
// Pure: the risk profile (#3) + environment resolution (#4) come in, a
|
|
10
|
-
// match verdict with a per-clause breakdown comes out, no I/O. The
|
|
11
|
-
// breakdown is what `harness explain-policy` renders.
|
|
12
|
-
//
|
|
13
|
-
// "Unknown is not safe" — the load-bearing decision in this module.
|
|
14
|
-
// The Risk Classifier emits `severity: null` / `reversible: null` /
|
|
15
|
-
// `categories: []` for an action no pattern matched (`classified:
|
|
16
|
-
// false`). A null does not silently fail to satisfy a clause: an
|
|
17
|
-
// UNCLASSIFIED action satisfies every `risk.category_in` /
|
|
18
|
-
// `action.reversible` clause, so a risk-gating policy treats "we could
|
|
19
|
-
// not classify this" as risk-bearing rather than letting it slip the
|
|
20
|
-
// gate. A *classified* action is compared on its real values.
|
|
21
|
-
// `environment.name` needs no such rule: the resolver always returns a
|
|
22
|
-
// concrete environment, with `unknown` as the matchable no-resolver-
|
|
23
|
-
// fired case.
|
|
24
|
-
//
|
|
25
|
-
// `risk.severity_at_least` is the ONE exception to a blanket "satisfies
|
|
26
|
-
// every threshold". An unknown severity is risk-bearing: it still
|
|
27
|
-
// satisfies `low`/`medium`/`high`, so an approval-required gate on an
|
|
28
|
-
// unrecognized production command stays fail-closed, but it is not
|
|
29
|
-
// itself proof of the WORST tier: an unclassified profile is treated as
|
|
30
|
-
// sitting at the "high" rung, one below `critical`, for this one clause
|
|
31
|
-
// only, so it never triggers a hard, agent-unoverridable block on its
|
|
32
|
-
// own. A hard block deserves a real classification.
|
|
33
|
-
//
|
|
34
|
-
// The rule is deliberately paired with two things this module does NOT
|
|
35
|
-
// do: (1) it does not touch `risk.category_in` / `action.reversible`,
|
|
36
|
-
// which keep the full "satisfies everything" fallback; (2) it leans on
|
|
37
|
-
// the Risk Classifier's built-in floors (`read-only-bash.ts`'s
|
|
38
|
-
// read-only floors, `destructive-shell-floor.ts`'s mutating-head floor)
|
|
39
|
-
// and the manifest's `risk.classifiers[]` to make the common cases
|
|
40
|
-
// explicitly `low` or explicitly `high`/`critical`. The "treated as
|
|
41
|
-
// high" rung is a safety net for the genuinely unenumerable case, not a
|
|
42
|
-
// replacement for classification. There is no manifest opt-in to restore
|
|
43
|
-
// the blanket behavior. Rationale, the incident that motivated it, and
|
|
44
|
-
// the disclosed residual gaps: docs/risk-gate.md, "Unclassified actions
|
|
45
|
-
// and the fail-close rule"; the measurement is in the CHANGELOG entry
|
|
46
|
-
// for agent-tasks task 2929c5b7.
|
|
47
|
-
//
|
|
48
|
-
// Design source: lava-ice-logs/2026-04-30/harness-risk-gate-extension.md
|
|
49
|
-
// (design phase D); the null-handling steer is the Phase 7 #3 review
|
|
50
|
-
// note on agent-tasks task harness-phase-7-5.
|
|
51
|
-
import { RiskSeveritySchema } from "../schema/index.js";
|
|
52
|
-
// Ordered severity scale; an index is the comparison key for
|
|
53
|
-
// `severity_at_least`. Sourced from the schema enum so a reordering
|
|
54
|
-
// there flows through unchanged — same pattern as the Risk Classifier.
|
|
55
|
-
const SEVERITY_ORDER = RiskSeveritySchema.options;
|
|
56
|
-
// The rung an UNCLASSIFIED action is treated as sitting at for
|
|
57
|
-
// `risk.severity_at_least` comparisons only (see the module header):
|
|
58
|
-
// one below the top of `SEVERITY_ORDER` ("critical"), i.e. "high" on
|
|
59
|
-
// the shipped four-value scale. Derived from the scale's length rather
|
|
60
|
-
// than a literal "high" so a future scale reordering/extension still
|
|
61
|
-
// lands one rung below the top without a second hand-edit.
|
|
62
|
-
//
|
|
63
|
-
// That derivation has a precondition the schema must keep satisfying: a
|
|
64
|
-
// scale with fewer than two rungs has no "one below the top". Asserted
|
|
65
|
-
// at module load rather than left implicit, because a silently negative
|
|
66
|
-
// index would make EVERY threshold comparison fail and quietly disable
|
|
67
|
-
// the fail-close for unclassified actions.
|
|
68
|
-
if (SEVERITY_ORDER.length < 2) {
|
|
69
|
-
throw new Error(`when-eval: the severity scale must have at least two rungs for the ` +
|
|
70
|
-
`unclassified fallback to sit one below the top (got ${SEVERITY_ORDER.length})`);
|
|
71
|
-
}
|
|
72
|
-
const UNCLASSIFIED_FALLBACK_SEVERITY_INDEX = SEVERITY_ORDER.length - 2;
|
|
73
|
-
/**
|
|
74
|
-
* The severity NAME the unclassified fallback is treated as, for
|
|
75
|
-
* surfaces that have to say it out loud (`intercept.ts`'s deny
|
|
76
|
-
* envelope). Exported so no caller hard-codes "high" beside a constant
|
|
77
|
-
* that is derived.
|
|
78
|
-
*/
|
|
79
|
-
export const UNCLASSIFIED_FALLBACK_SEVERITY = SEVERITY_ORDER[UNCLASSIFIED_FALLBACK_SEVERITY_INDEX];
|
|
80
|
-
function severityIndex(severity) {
|
|
81
|
-
return SEVERITY_ORDER.indexOf(severity);
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Evaluate a policy's `when:` block against the enriched envelope.
|
|
85
|
-
*
|
|
86
|
-
* Every clause is optional; only declared clauses are evaluated, and
|
|
87
|
-
* `matched` is their AND. An unclassified risk profile (`classified:
|
|
88
|
-
* false`) satisfies `risk.category_in` / `action.reversible` by the
|
|
89
|
-
* "unknown is not safe" rule, and satisfies `risk.severity_at_least`
|
|
90
|
-
* up through `high` but never `critical` (see the module header);
|
|
91
|
-
* `environment.name` is always a plain equality test.
|
|
92
|
-
*/
|
|
93
|
-
export function evaluateWhen(when, ctx) {
|
|
94
|
-
const clauses = [];
|
|
95
|
-
let unclassifiedFallback = false;
|
|
96
|
-
const unclassified = !ctx.risk.classified;
|
|
97
|
-
const sevAtLeast = when["risk.severity_at_least"];
|
|
98
|
-
if (sevAtLeast !== undefined) {
|
|
99
|
-
let matched;
|
|
100
|
-
let actual;
|
|
101
|
-
if (unclassified) {
|
|
102
|
-
// severity is null — treated as risk-bearing at the "high" rung
|
|
103
|
-
// (SEVERITY_ORDER.length - 2), not at "critical": satisfies
|
|
104
|
-
// low/medium/high thresholds, but never critical on its own. See
|
|
105
|
-
// the module header for why (task 2929c5b7).
|
|
106
|
-
matched = UNCLASSIFIED_FALLBACK_SEVERITY_INDEX >= severityIndex(sevAtLeast);
|
|
107
|
-
actual = "null (unclassified, treated as high)";
|
|
108
|
-
unclassifiedFallback = true;
|
|
109
|
-
}
|
|
110
|
-
else {
|
|
111
|
-
matched =
|
|
112
|
-
severityIndex(ctx.risk.severity) >= severityIndex(sevAtLeast);
|
|
113
|
-
actual = ctx.risk.severity;
|
|
114
|
-
}
|
|
115
|
-
clauses.push({
|
|
116
|
-
clause: "risk.severity_at_least",
|
|
117
|
-
expected: `>= ${sevAtLeast}`,
|
|
118
|
-
actual,
|
|
119
|
-
matched,
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
const categoryIn = when["risk.category_in"];
|
|
123
|
-
if (categoryIn !== undefined) {
|
|
124
|
-
let matched;
|
|
125
|
-
let actual;
|
|
126
|
-
if (unclassified) {
|
|
127
|
-
// categories is [] — treat as risk-bearing, consistent with the
|
|
128
|
-
// severity clause: an unclassified action satisfies every risk
|
|
129
|
-
// clause so a multi-clause `when:` cannot be slipped by one
|
|
130
|
-
// clause matching null while another fails an empty set.
|
|
131
|
-
matched = true;
|
|
132
|
-
actual = "[] (unclassified)";
|
|
133
|
-
unclassifiedFallback = true;
|
|
134
|
-
}
|
|
135
|
-
else {
|
|
136
|
-
matched = categoryIn.some((c) => ctx.risk.categories.includes(c));
|
|
137
|
-
actual =
|
|
138
|
-
ctx.risk.categories.length > 0
|
|
139
|
-
? `[${ctx.risk.categories.join(", ")}]`
|
|
140
|
-
: "[]";
|
|
141
|
-
}
|
|
142
|
-
clauses.push({
|
|
143
|
-
clause: "risk.category_in",
|
|
144
|
-
expected: `any of [${categoryIn.join(", ")}]`,
|
|
145
|
-
actual,
|
|
146
|
-
matched,
|
|
147
|
-
});
|
|
148
|
-
}
|
|
149
|
-
const envName = when["environment.name"];
|
|
150
|
-
if (envName !== undefined) {
|
|
151
|
-
clauses.push({
|
|
152
|
-
clause: "environment.name",
|
|
153
|
-
expected: envName,
|
|
154
|
-
actual: ctx.environment.name,
|
|
155
|
-
matched: ctx.environment.name === envName,
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
const reversible = when["action.reversible"];
|
|
159
|
-
if (reversible !== undefined) {
|
|
160
|
-
let matched;
|
|
161
|
-
let actual;
|
|
162
|
-
if (unclassified) {
|
|
163
|
-
// reversible is null — reversibility unknown. "Unknown is not
|
|
164
|
-
// safe": the clause matches whichever value the policy gates on,
|
|
165
|
-
// so an unclassified action never escapes a reversibility gate.
|
|
166
|
-
matched = true;
|
|
167
|
-
actual = "null (unclassified)";
|
|
168
|
-
unclassifiedFallback = true;
|
|
169
|
-
}
|
|
170
|
-
else {
|
|
171
|
-
matched = ctx.risk.reversible === reversible;
|
|
172
|
-
actual = String(ctx.risk.reversible);
|
|
173
|
-
}
|
|
174
|
-
clauses.push({
|
|
175
|
-
clause: "action.reversible",
|
|
176
|
-
expected: String(reversible),
|
|
177
|
-
actual,
|
|
178
|
-
matched,
|
|
179
|
-
});
|
|
180
|
-
}
|
|
181
|
-
// `action.deletion_target_unresolvable` (task d03af8f6) is deliberately
|
|
182
|
-
// NOT wired through the `unclassified` fail-close path above: it reads
|
|
183
|
-
// an entirely separate signal (`ctx.deletionTarget`, from
|
|
184
|
-
// `deletion-target-resolve.ts`), not the Risk Classifier's
|
|
185
|
-
// `classified`/`severity`/`categories` triad. An action the deletion
|
|
186
|
-
// resolver does not recognize as a deletion verb (`deletionTarget ===
|
|
187
|
-
// null`) simply does not satisfy `true` here — it never falls back to
|
|
188
|
-
// matched=true the way the four clauses above do for an unclassified
|
|
189
|
-
// risk profile. This is what lets a policy gate purely on this clause,
|
|
190
|
-
// environment-independently, without becoming a blanket gate on every
|
|
191
|
-
// unrelated unclassified Bash call (see this module's header and
|
|
192
|
-
// docs/risk-gate.md).
|
|
193
|
-
const deletionUnresolvable = when["action.deletion_target_unresolvable"];
|
|
194
|
-
if (deletionUnresolvable !== undefined) {
|
|
195
|
-
const verdict = ctx.deletionTarget ?? null;
|
|
196
|
-
const actualUnresolvable = verdict?.unresolvable ?? false;
|
|
197
|
-
clauses.push({
|
|
198
|
-
clause: "action.deletion_target_unresolvable",
|
|
199
|
-
expected: String(deletionUnresolvable),
|
|
200
|
-
actual: verdict === null
|
|
201
|
-
? "false (not a recognized deletion-verb command)"
|
|
202
|
-
: String(actualUnresolvable),
|
|
203
|
-
matched: actualUnresolvable === deletionUnresolvable,
|
|
204
|
-
});
|
|
205
|
-
}
|
|
206
|
-
return {
|
|
207
|
-
matched: clauses.every((c) => c.matched),
|
|
208
|
-
clauses,
|
|
209
|
-
unclassifiedFallback,
|
|
210
|
-
};
|
|
211
|
-
}
|
|
212
|
-
//# sourceMappingURL=when-eval.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"when-eval.js","sourceRoot":"","sources":["../../src/runtime/when-eval.ts"],"names":[],"mappings":"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"}
|