@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,23 +1,11 @@
|
|
|
1
1
|
import type { McpProbeResult } from "../../probes/mcp.js";
|
|
2
2
|
import type { MemoryReport, StaleMemory } from "../../probes/memory.js";
|
|
3
3
|
import type { Manifest } from "../../schema/index.js";
|
|
4
|
-
import type { Diagnostic } from "../validate/types.js";
|
|
5
4
|
import type { ClaudeMcpRegistrationSection } from "./claude-mcp.js";
|
|
6
5
|
import type { CodexTargetReport } from "./codex.js";
|
|
7
6
|
import type { OpencodeTargetReport } from "./opencode.js";
|
|
8
7
|
import type { NpmBinReport } from "./npm-bin-path.js";
|
|
9
|
-
import type {
|
|
10
|
-
import type { UnderstandingModeEnvDivergence } from "./understanding-mode-env.js";
|
|
11
|
-
import type { ToolchainParitySection } from "./toolchain-parity.js";
|
|
12
|
-
import type { UgAutoApprovalsSection } from "./ug-auto-approvals.js";
|
|
13
|
-
import type { UgDelegationsSection } from "./ug-delegations.js";
|
|
14
|
-
import type { UgInflightSection } from "./ug-inflight.js";
|
|
15
|
-
import type { SettingsDriftSection } from "./settings-drift.js";
|
|
16
|
-
import type { AutoApproveModeWarning } from "./auto-approve-mode.js";
|
|
17
|
-
import type { ExpireOnToolMatchWarning } from "./expire-on-tool-match.js";
|
|
18
|
-
import type { BypassWithoutAutoApproveFinding } from "./bypass-without-auto-approve.js";
|
|
19
|
-
import type { SessionStartPreflightSetupVersionFinding } from "./session-start-preflight-setup-version.js";
|
|
20
|
-
import type { CodexConfigDriftSection } from "./codex-config-drift.js";
|
|
8
|
+
import type { HookLivenessSection } from "./hook-liveness.js";
|
|
21
9
|
/**
|
|
22
10
|
* Phase 6 #6 follow-up — doctor target identifier. Distinct from
|
|
23
11
|
* `Runtime` (which gates `harness apply --runtime`): doctor only adds
|
|
@@ -79,11 +67,9 @@ export type HookVersionReport = {
|
|
|
79
67
|
} | {
|
|
80
68
|
status: "warn";
|
|
81
69
|
/**
|
|
82
|
-
* Which outcome the probe hit
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
* `warn`: every warn-producing branch of `checkHookVersion`
|
|
86
|
-
* classifies its outcome, so there is no warn case without one.
|
|
70
|
+
* Which outcome the probe hit. Required on `warn`: every
|
|
71
|
+
* warn-producing branch of `checkHookVersion` classifies its
|
|
72
|
+
* outcome, so there is no warn case without one.
|
|
87
73
|
*/
|
|
88
74
|
kind: "below_floor" | "probe_failed" | "parse_failed";
|
|
89
75
|
/**
|
|
@@ -112,40 +98,6 @@ export interface HookEntryReport {
|
|
|
112
98
|
message?: string;
|
|
113
99
|
version?: HookVersionReport;
|
|
114
100
|
}
|
|
115
|
-
/**
|
|
116
|
-
* A `block`-enforcement policy whose required ledger tag carries a
|
|
117
|
-
* `within` freshness window, but no manifest hook produces that tag
|
|
118
|
-
* AND the policy itself declares no `producers:` array. The gate will
|
|
119
|
-
* wall off whatever it triggers on until the tag is supplied
|
|
120
|
-
* out-of-band, with no in-manifest way to keep it satisfied or any
|
|
121
|
-
* recovery path visible to the agent. Policies that document the
|
|
122
|
-
* recovery in `producers:` (e.g. dogfood-before-release deliberately
|
|
123
|
-
* wanting an operator-driven manual smoke summary) are NOT flagged
|
|
124
|
-
* here, since that producer is the schema-blessed manual path. See
|
|
125
|
-
* tasks ce50df99 (initial check) and f97e152f (producers-respect
|
|
126
|
-
* refinement).
|
|
127
|
-
*/
|
|
128
|
-
export interface PolicyProducerGap {
|
|
129
|
-
/** The unresolved `requires.ledger_tag`, e.g. `preflight:${REPO}`. */
|
|
130
|
-
ledgerTag: string;
|
|
131
|
-
/** The `requires.within` window the tag must stay fresh inside. */
|
|
132
|
-
within: string;
|
|
133
|
-
}
|
|
134
|
-
export interface PolicyEntryReport {
|
|
135
|
-
name: string;
|
|
136
|
-
schemaValid: boolean;
|
|
137
|
-
caveat: string;
|
|
138
|
-
/** Present when this policy has an unproduced freshness-gated tag. */
|
|
139
|
-
producerGap?: PolicyProducerGap;
|
|
140
|
-
/**
|
|
141
|
-
* True when this policy object was derived from `workflows[]`
|
|
142
|
-
* (`isDerivedPolicy`, F7, review round 2) rather than hand-authored
|
|
143
|
-
* under `policies:`. Rendered as "(derived from workflows[])" so an
|
|
144
|
-
* operator reading `harness doctor` output can tell provenance apart
|
|
145
|
-
* without cross-referencing `workflows:` themselves.
|
|
146
|
-
*/
|
|
147
|
-
derived?: boolean;
|
|
148
|
-
}
|
|
149
101
|
/**
|
|
150
102
|
* A declared policy pack whose `source` or builtin name does not
|
|
151
103
|
* resolve. The pack appears in `manifest.policy_packs[]` (so the
|
|
@@ -173,31 +125,27 @@ export interface PolicyPackUnresolved {
|
|
|
173
125
|
*/
|
|
174
126
|
export interface PolicyPackConfigIssue {
|
|
175
127
|
name: string;
|
|
176
|
-
/** Dotted path inside `pack.config`, e.g. `
|
|
128
|
+
/** Dotted path inside `pack.config`, e.g. `protected_branches`, `ux.cannot`. */
|
|
177
129
|
configPath: string;
|
|
178
130
|
message: string;
|
|
179
131
|
}
|
|
180
132
|
/**
|
|
181
|
-
* Doctor surface for the pack-level `min_version` floor
|
|
182
|
-
*
|
|
183
|
-
*
|
|
184
|
-
* gap. Always warn-not-error: a below-floor pack still runs in degraded
|
|
185
|
-
* mode; the operator just loses any feature gated on the newer release.
|
|
133
|
+
* Doctor surface for the pack-level `min_version` floor: a declared floor on
|
|
134
|
+
* a pack that has no version probe, so it cannot be enforced. Always
|
|
135
|
+
* warn-not-error.
|
|
186
136
|
*/
|
|
187
137
|
export interface PolicyPackVersionGapReport {
|
|
188
138
|
name: string;
|
|
189
139
|
declaredMinVersion: string;
|
|
190
140
|
/**
|
|
191
|
-
*
|
|
192
|
-
*
|
|
193
|
-
* `actualVersion` equal to `declaredMinVersion`; `message` carries the
|
|
194
|
-
* full probed token. Same trap as `HookVersionReport.actualVersion`.
|
|
141
|
+
* Always null: a builtin pack has no probe, so no installed version is
|
|
142
|
+
* known. Kept so the doctor JSON shape of `versionGaps` is unchanged.
|
|
195
143
|
*/
|
|
196
144
|
actualVersion: string | null;
|
|
197
145
|
message: string;
|
|
198
146
|
}
|
|
199
147
|
/**
|
|
200
|
-
* A pack's declared `config.ux`
|
|
148
|
+
* A pack's declared `config.ux` that textually
|
|
201
149
|
* diverges from the shipped builtin template for that pack (task
|
|
202
150
|
* 68b9ad9c). Unlike `PolicyPackConfigIssue`, the value is still SCHEMA-
|
|
203
151
|
* valid — the gap is that it teaches stale wording (e.g. a pre-fix
|
|
@@ -208,7 +156,7 @@ export interface PolicyPackVersionGapReport {
|
|
|
208
156
|
*/
|
|
209
157
|
export interface PolicyPackUxDriftReport {
|
|
210
158
|
name: string;
|
|
211
|
-
/** Which sub-field(s) diverge
|
|
159
|
+
/** Which sub-field(s) diverge (today only `ux`). */
|
|
212
160
|
fields: string[];
|
|
213
161
|
message: string;
|
|
214
162
|
}
|
|
@@ -222,105 +170,16 @@ export interface PackExpansionRuntimeReport {
|
|
|
222
170
|
/** Set when the last apply's `.last-apply` could not be read; names the file. */
|
|
223
171
|
warning?: string;
|
|
224
172
|
}
|
|
225
|
-
/**
|
|
226
|
-
* Doctor surface for the HOOK-level `min_version` floor on a
|
|
227
|
-
* policy-pack-EXPANDED hook (task ab634898). Distinct from
|
|
228
|
-
* `PolicyPackVersionGapReport` (the pack-level `policy_packs[].min_version`
|
|
229
|
-
* floor, a different mechanism checked by `checkPolicyPackVersions`):
|
|
230
|
-
* this covers an individual hook a builtin pack contributes, e.g.
|
|
231
|
-
* understanding-before-execution's UserPromptSubmit/Stop hooks, each
|
|
232
|
-
* declaring its own `min_version` + `version_command`
|
|
233
|
-
* (`src/policy-packs/builtin/understanding-before-execution.ts`).
|
|
234
|
-
* `expandPolicyPacks` produces the hooks Claude Code actually runs, but
|
|
235
|
-
* `manifest.hooks[]` (what `HookEntryReport`/`checkHooks` walk) never
|
|
236
|
-
* includes them, so without this section an operator below a pack
|
|
237
|
-
* hook's floor saw a clean doctor report. Always warn, never error;
|
|
238
|
-
* mirrors the manifest-hook floor (`HookVersionReport`) and the
|
|
239
|
-
* pack-level floor. Empty array when every pack-expanded hook that
|
|
240
|
-
* declares a floor meets it (or none declare one).
|
|
241
|
-
*/
|
|
242
|
-
export interface PolicyPackHookVersionGapReport {
|
|
243
|
-
/** The pack-expanded hook's name, e.g. `policy-pack:understanding-before-execution:user-prompt-submit`. */
|
|
244
|
-
name: string;
|
|
245
|
-
event: string;
|
|
246
|
-
declaredMinVersion: string;
|
|
247
|
-
/**
|
|
248
|
-
* Which outcome the probe hit; mirrors `PolicyPackVersionGapKind`
|
|
249
|
-
* (`src/policy-packs/version-check.ts`) so the hook-level and
|
|
250
|
-
* pack-level sections classify gaps the same way instead of the
|
|
251
|
-
* renderer having to regex `message` back apart.
|
|
252
|
-
*/
|
|
253
|
-
kind: "below_floor" | "probe_failed" | "parse_failed";
|
|
254
|
-
/** Parsed installed version when the probe succeeded; null for `probe_failed` / `parse_failed`, where it is unknown. */
|
|
255
|
-
actualVersion: string | null;
|
|
256
|
-
/** The `version_command` that was probed, e.g. `["understanding-gate", "--version"]`. */
|
|
257
|
-
versionCommand: readonly string[];
|
|
258
|
-
message: string;
|
|
259
|
-
}
|
|
260
173
|
export interface PolicyPacksSection {
|
|
261
174
|
unresolved: PolicyPackUnresolved[];
|
|
262
175
|
configIssues: PolicyPackConfigIssue[];
|
|
263
176
|
versionGaps: PolicyPackVersionGapReport[];
|
|
264
177
|
uxDrift: PolicyPackUxDriftReport[];
|
|
265
|
-
solutionAcceptance: Diagnostic[];
|
|
266
|
-
}
|
|
267
|
-
export interface WorkflowEntryReport {
|
|
268
|
-
name: string;
|
|
269
|
-
steps: number;
|
|
270
|
-
reviewSpawn: "required" | "optional" | "skip" | null;
|
|
271
|
-
reviewTemplate: string | null;
|
|
272
|
-
mergeGate: "solo" | "agent_tasks_label" | "none" | null;
|
|
273
|
-
taskLabels: string[];
|
|
274
|
-
}
|
|
275
|
-
export interface WorkflowsSectionReport {
|
|
276
|
-
declared: number;
|
|
277
|
-
templates: number;
|
|
278
|
-
entries: WorkflowEntryReport[];
|
|
279
|
-
/**
|
|
280
|
-
* `checkWorkflowGateWiring` errors (F3, review round 2, 99f47307 Slice
|
|
281
|
-
* 1): a `spawn: "required"` review-then-merge workflow whose runtime
|
|
282
|
-
* merge gate is not correctly wired (a missing evidence hook, or one
|
|
283
|
-
* declared under the right name but the wrong trigger surface/command).
|
|
284
|
-
* `harness doctor` previously imported checks selectively and never ran
|
|
285
|
-
* this one, so it showed green on exactly this misconfiguration.
|
|
286
|
-
* Delegates to the shared validate check, mirroring `templateDrift`.
|
|
287
|
-
* Each rolls into `errorCount`.
|
|
288
|
-
*/
|
|
289
|
-
errors: string[];
|
|
290
|
-
/**
|
|
291
|
-
* `checkWorkflowGateWeakOverlap` warnings (F1, review round 2): a
|
|
292
|
-
* hand-authored policy sharing a derived gate's trigger surface but
|
|
293
|
-
* weaker than it (does not suppress the derived gate, just worth
|
|
294
|
-
* flagging). Each rolls into `warningCount`.
|
|
295
|
-
*/
|
|
296
|
-
warnings: string[];
|
|
297
|
-
}
|
|
298
|
-
/**
|
|
299
|
-
* Phase 7 #6 — Risk Gate wiring health. Reports whether the three Risk
|
|
300
|
-
* Gate surfaces (`risk.classifiers[]`, `environments.resolvers[]`, and
|
|
301
|
-
* policies carrying a `when:` block) compose coherently. The `warnings`
|
|
302
|
-
* catch the inert / fail-closed misconfigurations: `when:`-policies with
|
|
303
|
-
* no classifier (every action unclassified), `when:`-policies with no
|
|
304
|
-
* resolver (every environment `unknown`), or classifiers / resolvers
|
|
305
|
-
* declared but no policy consuming them. The per-decision audit log
|
|
306
|
-
* lives in `harness audit` (`policy_decision` rows carry the classifier
|
|
307
|
-
* + environment as of Phase 7 #5); doctor reports wiring, not history.
|
|
308
|
-
*/
|
|
309
|
-
export interface RiskGateSection {
|
|
310
|
-
/** Count of `risk.classifiers[]`. */
|
|
311
|
-
classifiers: number;
|
|
312
|
-
/** Count of `environments.resolvers[]`. */
|
|
313
|
-
resolvers: number;
|
|
314
|
-
/** Count of policies that declare a `when:` block. */
|
|
315
|
-
whenPolicies: number;
|
|
316
|
-
/** Coherence warnings; each rolls into the doctor `warningCount`. */
|
|
317
|
-
warnings: string[];
|
|
318
178
|
}
|
|
319
179
|
/**
|
|
320
180
|
* Grounding wiring health (task 129e1b94). Present only when the manifest
|
|
321
181
|
* declares an enabled `tools.mcp[grounding-mcp]` entry — without one there
|
|
322
|
-
* is no consumer to check
|
|
323
|
-
* "policies without grounding-mcp" warning). Doctor verifies the projected
|
|
182
|
+
* is no consumer to check. Doctor verifies the projected
|
|
324
183
|
* evidence-ledger path is usable and that an operator env override does
|
|
325
184
|
* not silently diverge from `grounding.evidence_ledger.path`.
|
|
326
185
|
*/
|
|
@@ -334,66 +193,6 @@ export interface GroundingSection {
|
|
|
334
193
|
/** Wiring warnings; each rolls into the doctor `warningCount`. */
|
|
335
194
|
warnings: string[];
|
|
336
195
|
}
|
|
337
|
-
/**
|
|
338
|
-
* Template-policy drift (task adf037c1). `errors` names shipped
|
|
339
|
-
* `operator_only` (kill-switch / security) policies this installed
|
|
340
|
-
* manifest either lacks entirely or carries in a DOWNGRADED (no longer
|
|
341
|
-
* operator_only) shape — a defense an aged manifest never received or
|
|
342
|
-
* silently weakened, since `harness apply` does not retroactively add or
|
|
343
|
-
* repair default policies. Each rolls into `errorCount` (a real defense
|
|
344
|
-
* gap, doctor-convention exit failure). `warnings` names stale
|
|
345
|
-
* `doctor.ignore_template_drift` entries that match no shipped policy and
|
|
346
|
-
* therefore suppress nothing; each rolls into `warningCount`. Names
|
|
347
|
-
* acknowledged via a valid `doctor.ignore_template_drift` entry are
|
|
348
|
-
* filtered out of `errors` upstream.
|
|
349
|
-
*/
|
|
350
|
-
export interface TemplateDriftSection {
|
|
351
|
-
/** Missing-or-downgraded shipped operator_only policies (each → errorCount). */
|
|
352
|
-
errors: string[];
|
|
353
|
-
/** Stale/typo'd ignore_template_drift entries that suppress nothing (each → warningCount). */
|
|
354
|
-
warnings: string[];
|
|
355
|
-
}
|
|
356
|
-
/**
|
|
357
|
-
* Trigger-boundary drift (task 037cfb7c, follow-up to adf037c1):
|
|
358
|
-
* shipped-by-name `bash_match` triggers (hook-level `hooks[].bash_match`
|
|
359
|
-
* or policy-level `policies[].trigger.bash_match`) missing a boundary
|
|
360
|
-
* alternative the template has, or missing a boundary group entirely.
|
|
361
|
-
* Rule and rationale live on `checkTriggerBoundaryDrift` in
|
|
362
|
-
* `validate/checks.ts`; the measured incident that motivated this check
|
|
363
|
-
* is in the `CHANGELOG.md:#0.49.0` entry for task 037cfb7c. Shape
|
|
364
|
-
* mirrors `TemplateDriftSection` immediately above: every `error`
|
|
365
|
-
* diagnostic rolls into `errorCount`, every `warning` diagnostic (none
|
|
366
|
-
* emitted today; the field exists so a future non-error diagnostic from
|
|
367
|
-
* `checkTriggerBoundaryDrift` surfaces here instead of being silently
|
|
368
|
-
* dropped by `buildTriggerBoundaryDrift`) rolls into `warningCount`.
|
|
369
|
-
* Always present; both arrays empty when every shipped-named trigger's
|
|
370
|
-
* boundary covers the template's (or the manifest has none of those
|
|
371
|
-
* triggers, or every drift is acknowledged via
|
|
372
|
-
* doctor.ignore_template_drift).
|
|
373
|
-
*/
|
|
374
|
-
export interface TriggerBoundaryDriftSection {
|
|
375
|
-
/** Stale-boundary bash_match triggers, hook- or policy-level (each → errorCount). */
|
|
376
|
-
errors: string[];
|
|
377
|
-
/** Reserved for a future non-error diagnostic shape (each → warningCount); empty today. */
|
|
378
|
-
warnings: string[];
|
|
379
|
-
}
|
|
380
|
-
/**
|
|
381
|
-
* Hook-budget-vs-ledger-timeout margin (task d20a7e0c, follow-up to
|
|
382
|
-
* f1aea826/7bf47554): blocking, ledger-consulting hooks (both directly
|
|
383
|
-
* declared `harness policy intercept` hooks and enabled policy-pack
|
|
384
|
-
* blockers) whose `budget_ms` does not clear
|
|
385
|
-
* `requiredHookBudgetMs(health.timeout_ms)` — see
|
|
386
|
-
* `checkHookBudgetLedgerMargin` in `validate/checks.ts` for the full
|
|
387
|
-
* derivation. Every entry is a real fail-open gap (a merely SLOW ledger
|
|
388
|
-
* can get the hook killed before it can write its fail-closed verdict),
|
|
389
|
-
* so each rolls into `errorCount`, mirroring `templateDrift.errors`
|
|
390
|
-
* above. Always present; empty when every such hook clears the margin
|
|
391
|
-
* (or none exist, or grounding-mcp is not wired).
|
|
392
|
-
*/
|
|
393
|
-
export interface HookBudgetLedgerMarginSection {
|
|
394
|
-
/** Each entry names an under-budgeted hook; rolls into errorCount. */
|
|
395
|
-
errors: string[];
|
|
396
|
-
}
|
|
397
196
|
export interface DoctorReport {
|
|
398
197
|
manifestPath: string;
|
|
399
198
|
manifestVersion: number;
|
|
@@ -409,116 +208,15 @@ export interface DoctorReport {
|
|
|
409
208
|
* doctor / harness probes. See task 4ddd78ed.
|
|
410
209
|
*/
|
|
411
210
|
npmGlobalBin?: NpmBinReport;
|
|
412
|
-
/**
|
|
413
|
-
* Understanding-gate mode env/config divergence (task 24abdecb).
|
|
414
|
-
* Present only when `UNDERSTANDING_GATE_MODE` is set in the operator
|
|
415
|
-
* environment AND diverges from
|
|
416
|
-
* `policy_packs[understanding-before-execution].config.mode`. Always
|
|
417
|
-
* advisory (rolls into `warningCount`, never `errorCount`) — see
|
|
418
|
-
* `understanding-mode-env.ts` for the full rationale.
|
|
419
|
-
*/
|
|
420
|
-
understandingModeEnv?: UnderstandingModeEnvDivergence;
|
|
421
|
-
/**
|
|
422
|
-
* Auto-approval listing + last-N metric (ADR
|
|
423
|
-
* docs/decisions/2026-08-27-ug-auto-mode-approval.md slice 1,
|
|
424
|
-
* agent-tasks 74b4b17d, "Audit and doctor"). Present only when the
|
|
425
|
-
* `understanding-before-execution` pack is declared and enabled
|
|
426
|
-
* (mirrors `understandingModeEnv`'s gate) — a manifest that never
|
|
427
|
-
* uses the pack has no `.approvals/` markers this listing owns an
|
|
428
|
-
* opinion about. Purely informational (`ℹ`); never rolls into
|
|
429
|
-
* `warningCount`.
|
|
430
|
-
*/
|
|
431
|
-
ugAutoApprovals?: UgAutoApprovalsSection;
|
|
432
|
-
/**
|
|
433
|
-
* Delegations-on-disk metric (same ADR, slice 3, "Audit and doctor",
|
|
434
|
-
* agent-tasks 37ad0b05): `total`/`expired`/`unreadable` counts
|
|
435
|
-
* from `harness.generated/.delegations/`, distinct from
|
|
436
|
-
* `ugAutoApprovals` (which reads `.approvals/` only). Present only
|
|
437
|
-
* when the `understanding-before-execution` pack is declared and
|
|
438
|
-
* enabled (mirrors `ugAutoApprovals`'s gate). `delegationsDirPresent`
|
|
439
|
-
* mirrors `ugAutoApprovals`'s `approvalsDirPresent`: the rendered line
|
|
440
|
-
* stays silent when `.delegations/` does not exist at all, and shows
|
|
441
|
-
* the zero-count line when it exists but is empty (both cases resolve
|
|
442
|
-
* `total`/`expired`/`unreadable` to `0`). Informational (`ℹ`) unless
|
|
443
|
-
* `unreadable > 0`, in which case it rolls one warning into
|
|
444
|
-
* `warningCount`.
|
|
445
|
-
*/
|
|
446
|
-
ugDelegations?: UgDelegationsSection;
|
|
447
|
-
/**
|
|
448
|
-
* In-flight subagent records (subagent-gate slice 1) from
|
|
449
|
-
* `harness.generated/.inflight/`, distinct from both `ugDelegations`
|
|
450
|
-
* (`.delegations/`) and `ugAutoApprovals` (`.approvals/`). Present
|
|
451
|
-
* only when the `understanding-before-execution` pack is declared and
|
|
452
|
-
* enabled (mirrors `ugDelegations`'s gate). `inflightDirPresent`
|
|
453
|
-
* mirrors `ugDelegations`'s `delegationsDirPresent`: the rendered
|
|
454
|
-
* line stays silent when `.inflight/` does not exist at all, and
|
|
455
|
-
* shows the zero-count line when it exists but is empty. Purely
|
|
456
|
-
* informational (`ℹ`) — an unreadable/skipped entry never rolls a
|
|
457
|
-
* warning here, since a record aging out unread is exactly what
|
|
458
|
-
* `harness gc` is for, not a signal of tampering.
|
|
459
|
-
*/
|
|
460
|
-
ugInflight?: UgInflightSection;
|
|
461
|
-
/**
|
|
462
|
-
* `bypassPermissions` observed (hook-side, `.permission-mode-
|
|
463
|
-
* observations/`) but `auto_approve` does not cover it (task 8f637efd,
|
|
464
|
-
* "Amendment: install default"). Present only when the pack is
|
|
465
|
-
* declared and enabled AND at least one qualifying observation exists
|
|
466
|
-
* in the window; always a warning (`⚠`) when present, see
|
|
467
|
-
* bypass-without-auto-approve.ts.
|
|
468
|
-
*/
|
|
469
|
-
ugBypassWithoutAutoApprove?: BypassWithoutAutoApproveFinding;
|
|
470
|
-
/**
|
|
471
|
-
* `session_start_preflight.setup: true` against a `preflight` binary
|
|
472
|
-
* below the build-capable release (task 6993d9b5). Present only when
|
|
473
|
-
* `setup` is enabled AND the probed/parsed version is below
|
|
474
|
-
* `SESSION_START_PREFLIGHT_SETUP_BUILD_MIN_VERSION` (or the probe
|
|
475
|
-
* failed/could not be parsed); always a warning (`⚠`) when present,
|
|
476
|
-
* see session-start-preflight-setup-version.ts.
|
|
477
|
-
*/
|
|
478
|
-
sessionStartPreflightSetupVersion?: SessionStartPreflightSetupVersionFinding;
|
|
479
|
-
/**
|
|
480
|
-
* `auto_approve` configured without `mode: grill_me` (agent-tasks
|
|
481
|
-
* abfad738, follow-up of ADR
|
|
482
|
-
* docs/decisions/2026-08-27-ug-auto-mode-approval.md slice 1).
|
|
483
|
-
* Present only when the pack is declared and enabled AND
|
|
484
|
-
* `config.auto_approve` parses as a valid opt-in block. Always
|
|
485
|
-
* advisory (rolls into `warningCount`, never `errorCount`). See
|
|
486
|
-
* `auto-approve-mode.ts` for the full rationale.
|
|
487
|
-
*/
|
|
488
|
-
ugAutoApproveMode?: AutoApproveModeWarning;
|
|
489
|
-
/**
|
|
490
|
-
* Explicit `approval_lifecycle.expire_on_tool_match` that lists
|
|
491
|
-
* `task_finish` but not `task_merge` (task 0c6b2cb9). Always advisory
|
|
492
|
-
* (rolls into `warningCount`, never `errorCount`). See
|
|
493
|
-
* `expire-on-tool-match.ts`.
|
|
494
|
-
*/
|
|
495
|
-
ugExpireOnToolMatch?: ExpireOnToolMatchWarning;
|
|
496
|
-
/**
|
|
497
|
-
* Settings-drift compensating control (same ADR, threat model (c)): a
|
|
498
|
-
* `permissions.defaultMode` or hook entry present in a live Claude
|
|
499
|
-
* Code settings file but absent from harness's own last-apply
|
|
500
|
-
* snapshot. Present only when the understanding-gate pack is enabled
|
|
501
|
-
* AND `harness apply` has run at least once for this manifest
|
|
502
|
-
* (`harness.generated/` exists) — otherwise there is no baseline to
|
|
503
|
-
* compare against and nothing to say. `warnings` roll into
|
|
504
|
-
* `warningCount`; `notes` never do.
|
|
505
|
-
*/
|
|
506
|
-
settingsDrift?: SettingsDriftSection;
|
|
507
|
-
/**
|
|
508
|
-
* Codex counterpart of `settingsDrift` (follow-up of slice 2 of the
|
|
509
|
-
* same ADR, agent-tasks f59ea0eb): a live `approval_policy = "never"`
|
|
510
|
-
* or full-access `default_permissions` selection in `$CODEX_HOME
|
|
511
|
-
* /config.toml` or `<repo>/.codex/config.toml`. Present only when the
|
|
512
|
-
* understanding-gate pack's `auto_approve.harnesses` lists `codex`;
|
|
513
|
-
* a repo that never opted Codex into the auto path has no live signal
|
|
514
|
-
* for this key to pre-set. Unlike `settingsDrift`, this always warns
|
|
515
|
-
* while the key is present and the repo is opted in (not gated on
|
|
516
|
-
* drift since the last apply); `warnings` roll into `warningCount`.
|
|
517
|
-
*/
|
|
518
|
-
codexConfigDrift?: CodexConfigDriftSection;
|
|
519
211
|
memory: MemoryReport;
|
|
520
212
|
hooks: HookEntryReport[];
|
|
521
|
-
|
|
213
|
+
/**
|
|
214
|
+
* Generated hooks compared with the live runtime config (Claude Code
|
|
215
|
+
* `settings.json`, Codex `config.toml`). Missing or differing entries are
|
|
216
|
+
* errors, a gate disabled through `harness gate disable` is a warning, and
|
|
217
|
+
* extra live hooks are info only. See `hook-liveness.ts`.
|
|
218
|
+
*/
|
|
219
|
+
hookLiveness?: HookLivenessSection;
|
|
522
220
|
/**
|
|
523
221
|
* Declared-but-not-live policy packs. Each entry is a pack the
|
|
524
222
|
* operator listed in `policy_packs[]` whose `source` or builtin
|
|
@@ -526,15 +224,6 @@ export interface DoctorReport {
|
|
|
526
224
|
* surfaced loudly here. Errors count toward `errorCount`.
|
|
527
225
|
*/
|
|
528
226
|
policyPacks: PolicyPacksSection;
|
|
529
|
-
/**
|
|
530
|
-
* Hook-level `min_version` floors on policy-pack-expanded hooks (task
|
|
531
|
-
* ab634898). See `PolicyPackHookVersionGapReport` for why this is
|
|
532
|
-
* separate from both `hooks[].version` (manifest-declared hooks only)
|
|
533
|
-
* and `policyPacks.versionGaps` (the pack-level floor). Always
|
|
534
|
-
* present; empty when every pack-expanded hook that declares a floor
|
|
535
|
-
* meets it.
|
|
536
|
-
*/
|
|
537
|
-
policyPackHookVersions: PolicyPackHookVersionGapReport[];
|
|
538
227
|
/**
|
|
539
228
|
* The runtime policy packs were expanded against for the pack checks:
|
|
540
229
|
* the one a plain `harness apply` would select (recorded in
|
|
@@ -542,31 +231,6 @@ export interface DoctorReport {
|
|
|
542
231
|
* 04b8abcf). Always present.
|
|
543
232
|
*/
|
|
544
233
|
packExpansionRuntime: PackExpansionRuntimeReport;
|
|
545
|
-
workflows: WorkflowsSectionReport;
|
|
546
|
-
/** Phase 7 #6 — Risk Gate wiring health (classifiers / resolvers / `when:`). */
|
|
547
|
-
riskGate: RiskGateSection;
|
|
548
|
-
/**
|
|
549
|
-
* Template-policy drift (task adf037c1): shipped operator_only security
|
|
550
|
-
* policies missing-or-downgraded in this installed manifest (`errors`)
|
|
551
|
-
* and stale `doctor.ignore_template_drift` entries (`warnings`). Always
|
|
552
|
-
* present; both arrays empty when the manifest carries every shipped
|
|
553
|
-
* kill-switch policy in operator_only form (or has acknowledged the gap
|
|
554
|
-
* via a valid doctor.ignore_template_drift entry).
|
|
555
|
-
*/
|
|
556
|
-
templateDrift: TemplateDriftSection;
|
|
557
|
-
/**
|
|
558
|
-
* Trigger-boundary drift (task 037cfb7c). Always present; `errors`
|
|
559
|
-
* empty when every shipped-named `bash_match` trigger's boundary
|
|
560
|
-
* matches the template (or every drift is acknowledged via
|
|
561
|
-
* doctor.ignore_template_drift).
|
|
562
|
-
*/
|
|
563
|
-
triggerBoundaryDrift: TriggerBoundaryDriftSection;
|
|
564
|
-
/**
|
|
565
|
-
* Hook-budget-vs-ledger-timeout margin (task d20a7e0c). Always
|
|
566
|
-
* present; `errors` empty when every blocking, ledger-consulting hook
|
|
567
|
-
* clears the derived margin.
|
|
568
|
-
*/
|
|
569
|
-
hookBudgetLedgerMargin: HookBudgetLedgerMarginSection;
|
|
570
234
|
/**
|
|
571
235
|
* Grounding wiring health (task 129e1b94). Absent when no enabled
|
|
572
236
|
* grounding-mcp entry is declared.
|
|
@@ -581,17 +245,6 @@ export interface DoctorReport {
|
|
|
581
245
|
* isn't further scoped by runtime.
|
|
582
246
|
*/
|
|
583
247
|
claudeMcp?: ClaudeMcpRegistrationSection;
|
|
584
|
-
/**
|
|
585
|
-
* On-demand toolchain-parity comparison (task 13919613), reusing the
|
|
586
|
-
* Collector/Comparator core from `harness session-start
|
|
587
|
-
* toolchain-parity` (src/cli/doctor/toolchain-parity.ts). Present only
|
|
588
|
-
* when `toolchain_parity.enabled` is true in the manifest — absent
|
|
589
|
-
* otherwise, mirroring `grounding`'s "only when the feature is in use"
|
|
590
|
-
* gating. Always read-only: never writes a snapshot file or a ledger
|
|
591
|
-
* fact. Only `"drift"`-status peers roll into `warningCount`; the
|
|
592
|
-
* section is never an `errorCount` source (advisory, not a gate).
|
|
593
|
-
*/
|
|
594
|
-
toolchainParity?: ToolchainParitySection;
|
|
595
248
|
/**
|
|
596
249
|
* Phase 6 #6 follow-up: present when `--target codex` is passed.
|
|
597
250
|
* Aggregates harness-side codex adapter health checks (binary
|
|
@@ -608,28 +261,9 @@ export interface DoctorReport {
|
|
|
608
261
|
* warningCount, same as `codexTarget`.
|
|
609
262
|
*/
|
|
610
263
|
opencodeTarget?: OpencodeTargetReport;
|
|
611
|
-
/**
|
|
612
|
-
* Leftover `<parent>/~/.evidence-ledger/ledger.db` files from the
|
|
613
|
-
* literal-tilde `EVIDENCE_LEDGER_DB` env leak (agent-tasks/42d224a6,
|
|
614
|
-
* harness PR #101). Always scanned; harmless when empty. Each entry
|
|
615
|
-
* rolls into `warningCount`. The scan walks `$HOME`, `$HOME/git/*`
|
|
616
|
-
* (one level deep), and `$PWD`; see `rogue-ledger.ts` for rationale.
|
|
617
|
-
*/
|
|
618
|
-
rogueLedgerDbs: RogueLedgerDb[];
|
|
619
264
|
errorCount: number;
|
|
620
265
|
warningCount: number;
|
|
621
266
|
}
|
|
622
267
|
export type { NpmBinReport } from "./npm-bin-path.js";
|
|
623
|
-
export type { SessionStartPreflightSetupVersionFinding } from "./session-start-preflight-setup-version.js";
|
|
624
268
|
export type { ClaudeMcpRegistrationSection, ClaudeMcpEntryReport, } from "./claude-mcp.js";
|
|
625
|
-
export type {
|
|
626
|
-
export type { UgAutoApprovalsSection, AutoApprovalListingEntry, } from "./ug-auto-approvals.js";
|
|
627
|
-
export type { UgDelegationsSection } from "./ug-delegations.js";
|
|
628
|
-
export type { UgInflightSection } from "./ug-inflight.js";
|
|
629
|
-
export type { AutoApproveModeWarning } from "./auto-approve-mode.js";
|
|
630
|
-
export type { ExpireOnToolMatchWarning } from "./expire-on-tool-match.js";
|
|
631
|
-
export type { BypassWithoutAutoApproveFinding } from "./bypass-without-auto-approve.js";
|
|
632
|
-
export type { SettingsDriftSection } from "./settings-drift.js";
|
|
633
|
-
export type { CodexConfigDriftSection } from "./codex-config-drift.js";
|
|
634
|
-
export type { ToolchainParitySection, ToolchainParityPeerReport, } from "./toolchain-parity.js";
|
|
635
|
-
export type { Manifest, McpProbeResult, MemoryReport, StaleMemory, CodexTargetReport, RogueLedgerDb, };
|
|
269
|
+
export type { Manifest, McpProbeResult, MemoryReport, StaleMemory, CodexTargetReport, };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/cli/doctor/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/cli/doctor/types.ts"],"names":[],"mappings":"AASA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,UAAU,CAAU,CAAC;AAGnE,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACxB,oBAA0C,CAAC,QAAQ,CAAC,KAAK,CAAC,CAC5D,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How long the process waits for stdout and stderr to accept what is queued
|
|
3
|
+
* before it exits anyway, in ms. A hook runs under a host budget and a hook
|
|
4
|
+
* killed at its budget counts as an allow, so the wait is short and fixed; a
|
|
5
|
+
* reader that is slower than this loses the tail, which is the lesser harm.
|
|
6
|
+
*/
|
|
7
|
+
export declare const STDIO_DRAIN_TIMEOUT_MS = 500;
|
|
8
|
+
type FlushableStream = Pick<NodeJS.WriteStream, "write" | "destroyed" | "writable"> & Partial<Pick<NodeJS.WriteStream, "on">>;
|
|
9
|
+
/**
|
|
10
|
+
* Put a no-op 'error' listener on each stream, once. A write to a pipe whose
|
|
11
|
+
* reader has gone fails with EPIPE, and a stream with no listener turns that
|
|
12
|
+
* event into an uncaught exception: the process exits 1, which a hook host
|
|
13
|
+
* reads as allow. A hook calls this at its entry, before its first write, so
|
|
14
|
+
* an error emitted while the hook is still awaiting (git, for example) cannot
|
|
15
|
+
* change its exit code; drainStdio only covers errors emitted after the hook
|
|
16
|
+
* has settled. The decision is already made by the time a write fails, so the
|
|
17
|
+
* error carries nothing the caller could act on.
|
|
18
|
+
*/
|
|
19
|
+
export declare function tolerateClosedStdio(streams?: readonly {
|
|
20
|
+
on?(event: "error", listener: () => void): unknown;
|
|
21
|
+
}[]): void;
|
|
22
|
+
/**
|
|
23
|
+
* Resolve once everything written to stdout and stderr so far has been handed
|
|
24
|
+
* to the OS, or after `timeoutMs`. `process.exit` drops writes still queued
|
|
25
|
+
* for a pipe whose reader is behind (macOS cuts at the 64 KiB pipe buffer),
|
|
26
|
+
* so the entry point awaits this before it exits. A stream whose reader has
|
|
27
|
+
* gone (EPIPE) counts as flushed and its error is swallowed, so the exit code
|
|
28
|
+
* is the one the caller passed.
|
|
29
|
+
*/
|
|
30
|
+
export declare function drainStdio(timeoutMs?: number, streams?: readonly FlushableStream[]): Promise<void>;
|
|
31
|
+
export {};
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How long the process waits for stdout and stderr to accept what is queued
|
|
3
|
+
* before it exits anyway, in ms. A hook runs under a host budget and a hook
|
|
4
|
+
* killed at its budget counts as an allow, so the wait is short and fixed; a
|
|
5
|
+
* reader that is slower than this loses the tail, which is the lesser harm.
|
|
6
|
+
*/
|
|
7
|
+
export const STDIO_DRAIN_TIMEOUT_MS = 500;
|
|
8
|
+
function flushed(stream) {
|
|
9
|
+
return new Promise((resolve) => {
|
|
10
|
+
try {
|
|
11
|
+
// A write to a pipe whose reader has gone fails with EPIPE, and the
|
|
12
|
+
// stream emits that as an 'error' event. With no listener the event is
|
|
13
|
+
// an uncaught exception: the process exits 1, which a hook host reads
|
|
14
|
+
// as allow. The listener goes on before the empty write below, and it
|
|
15
|
+
// also catches an earlier write's error that is emitted after run() has
|
|
16
|
+
// settled. An error emitted while run() is still awaiting I/O (before
|
|
17
|
+
// drainStdio is called) is covered only for a stream that
|
|
18
|
+
// tolerateClosedStdio already gave a listener. A failed stream has
|
|
19
|
+
// nothing left to wait for, so the error also settles the flush,
|
|
20
|
+
// whether or not the stream calls the write callback. The exit code is
|
|
21
|
+
// already decided.
|
|
22
|
+
stream.on?.("error", () => resolve());
|
|
23
|
+
if (stream.destroyed || !stream.writable) {
|
|
24
|
+
resolve();
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
// An empty write completes after every earlier write has, or with an
|
|
28
|
+
// error when the reader has gone; either way nothing is left to wait for.
|
|
29
|
+
stream.write("", () => resolve());
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
resolve();
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
const tolerated = new WeakSet();
|
|
37
|
+
/**
|
|
38
|
+
* Put a no-op 'error' listener on each stream, once. A write to a pipe whose
|
|
39
|
+
* reader has gone fails with EPIPE, and a stream with no listener turns that
|
|
40
|
+
* event into an uncaught exception: the process exits 1, which a hook host
|
|
41
|
+
* reads as allow. A hook calls this at its entry, before its first write, so
|
|
42
|
+
* an error emitted while the hook is still awaiting (git, for example) cannot
|
|
43
|
+
* change its exit code; drainStdio only covers errors emitted after the hook
|
|
44
|
+
* has settled. The decision is already made by the time a write fails, so the
|
|
45
|
+
* error carries nothing the caller could act on.
|
|
46
|
+
*/
|
|
47
|
+
export function tolerateClosedStdio(streams = [process.stdout, process.stderr]) {
|
|
48
|
+
for (const stream of streams) {
|
|
49
|
+
if (typeof stream.on !== "function" || tolerated.has(stream))
|
|
50
|
+
continue;
|
|
51
|
+
tolerated.add(stream);
|
|
52
|
+
stream.on("error", () => undefined);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Resolve once everything written to stdout and stderr so far has been handed
|
|
57
|
+
* to the OS, or after `timeoutMs`. `process.exit` drops writes still queued
|
|
58
|
+
* for a pipe whose reader is behind (macOS cuts at the 64 KiB pipe buffer),
|
|
59
|
+
* so the entry point awaits this before it exits. A stream whose reader has
|
|
60
|
+
* gone (EPIPE) counts as flushed and its error is swallowed, so the exit code
|
|
61
|
+
* is the one the caller passed.
|
|
62
|
+
*/
|
|
63
|
+
export async function drainStdio(timeoutMs = STDIO_DRAIN_TIMEOUT_MS, streams = [process.stdout, process.stderr]) {
|
|
64
|
+
let timer;
|
|
65
|
+
const limit = new Promise((resolve) => {
|
|
66
|
+
timer = setTimeout(resolve, timeoutMs);
|
|
67
|
+
});
|
|
68
|
+
try {
|
|
69
|
+
await Promise.race([Promise.all(streams.map(flushed)), limit]);
|
|
70
|
+
}
|
|
71
|
+
finally {
|
|
72
|
+
if (timer !== undefined)
|
|
73
|
+
clearTimeout(timer);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=drain-stdio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drain-stdio.js","sourceRoot":"","sources":["../../src/cli/drain-stdio.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAK1C,SAAS,OAAO,CAAC,MAAuB;IACtC,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QACnC,IAAI,CAAC;YACH,oEAAoE;YACpE,uEAAuE;YACvE,sEAAsE;YACtE,sEAAsE;YACtE,wEAAwE;YACxE,sEAAsE;YACtE,0DAA0D;YAC1D,mEAAmE;YACnE,iEAAiE;YACjE,uEAAuE;YACvE,mBAAmB;YACnB,MAAM,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YACtC,IAAI,MAAM,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACzC,OAAO,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;YACD,qEAAqE;YACrE,0EAA0E;YAC1E,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;QACpC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,SAAS,GAAG,IAAI,OAAO,EAAU,CAAC;AAExC;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CACjC,UAA6E,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC;IAE7G,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,OAAO,MAAM,CAAC,EAAE,KAAK,UAAU,IAAI,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,SAAS;QACvE,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,YAAoB,sBAAsB,EAC1C,UAAsC,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC;IAEtE,IAAI,KAAiC,CAAC;IACtC,MAAM,KAAK,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAC1C,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IACH,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IACjE,CAAC;YAAS,CAAC;QACT,IAAI,KAAK,KAAK,SAAS;YAAE,YAAY,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC"}
|
package/dist/cli/export.d.ts
CHANGED
|
@@ -10,6 +10,8 @@ export interface ExportResult {
|
|
|
10
10
|
manifest: Manifest;
|
|
11
11
|
sanitized: boolean;
|
|
12
12
|
wroteTo: string | null;
|
|
13
|
+
/** Manifest posture warnings (removed keys, removed hook fields, removed packs, removed commands), one formatted line each; the CLI prints them on stderr. */
|
|
14
|
+
warnings: string[];
|
|
13
15
|
}
|
|
14
16
|
export declare const SANITIZE_FOOTER: string;
|
|
15
17
|
export declare function exportManifest(opts?: ExportOptions): ExportResult;
|
|
@@ -17,7 +19,7 @@ export declare function exportManifest(opts?: ExportOptions): ExportResult;
|
|
|
17
19
|
* Best-effort sanitiser. Walks the manifest, replaces `/home/<user>/...` paths
|
|
18
20
|
* with `~/...` and redacts env values whose key looks credential-shaped. Does
|
|
19
21
|
* NOT touch command:[] entries (they often contain absolute paths that are
|
|
20
|
-
* intentional and not secret)
|
|
22
|
+
* intentional and not secret).
|
|
21
23
|
*/
|
|
22
24
|
export declare function sanitize(value: unknown, homeDir: string): unknown;
|
|
23
25
|
declare function isInsideEnvBlock(pathSegs: (string | number)[]): boolean;
|