@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,22 +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 { BypassWithoutAutoApproveFinding } from "./bypass-without-auto-approve.js";
|
|
18
|
-
import type { SessionStartPreflightSetupVersionFinding } from "./session-start-preflight-setup-version.js";
|
|
19
|
-
import type { CodexConfigDriftSection } from "./codex-config-drift.js";
|
|
8
|
+
import type { HookLivenessSection } from "./hook-liveness.js";
|
|
20
9
|
/**
|
|
21
10
|
* Phase 6 #6 follow-up — doctor target identifier. Distinct from
|
|
22
11
|
* `Runtime` (which gates `harness apply --runtime`): doctor only adds
|
|
@@ -78,11 +67,9 @@ export type HookVersionReport = {
|
|
|
78
67
|
} | {
|
|
79
68
|
status: "warn";
|
|
80
69
|
/**
|
|
81
|
-
* Which outcome the probe hit
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
* `warn`: every warn-producing branch of `checkHookVersion`
|
|
85
|
-
* 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.
|
|
86
73
|
*/
|
|
87
74
|
kind: "below_floor" | "probe_failed" | "parse_failed";
|
|
88
75
|
/**
|
|
@@ -111,40 +98,6 @@ export interface HookEntryReport {
|
|
|
111
98
|
message?: string;
|
|
112
99
|
version?: HookVersionReport;
|
|
113
100
|
}
|
|
114
|
-
/**
|
|
115
|
-
* A `block`-enforcement policy whose required ledger tag carries a
|
|
116
|
-
* `within` freshness window, but no manifest hook produces that tag
|
|
117
|
-
* AND the policy itself declares no `producers:` array. The gate will
|
|
118
|
-
* wall off whatever it triggers on until the tag is supplied
|
|
119
|
-
* out-of-band, with no in-manifest way to keep it satisfied or any
|
|
120
|
-
* recovery path visible to the agent. Policies that document the
|
|
121
|
-
* recovery in `producers:` (e.g. dogfood-before-release deliberately
|
|
122
|
-
* wanting an operator-driven manual smoke summary) are NOT flagged
|
|
123
|
-
* here, since that producer is the schema-blessed manual path. See
|
|
124
|
-
* tasks ce50df99 (initial check) and f97e152f (producers-respect
|
|
125
|
-
* refinement).
|
|
126
|
-
*/
|
|
127
|
-
export interface PolicyProducerGap {
|
|
128
|
-
/** The unresolved `requires.ledger_tag`, e.g. `preflight:${REPO}`. */
|
|
129
|
-
ledgerTag: string;
|
|
130
|
-
/** The `requires.within` window the tag must stay fresh inside. */
|
|
131
|
-
within: string;
|
|
132
|
-
}
|
|
133
|
-
export interface PolicyEntryReport {
|
|
134
|
-
name: string;
|
|
135
|
-
schemaValid: boolean;
|
|
136
|
-
caveat: string;
|
|
137
|
-
/** Present when this policy has an unproduced freshness-gated tag. */
|
|
138
|
-
producerGap?: PolicyProducerGap;
|
|
139
|
-
/**
|
|
140
|
-
* True when this policy object was derived from `workflows[]`
|
|
141
|
-
* (`isDerivedPolicy`, F7, review round 2) rather than hand-authored
|
|
142
|
-
* under `policies:`. Rendered as "(derived from workflows[])" so an
|
|
143
|
-
* operator reading `harness doctor` output can tell provenance apart
|
|
144
|
-
* without cross-referencing `workflows:` themselves.
|
|
145
|
-
*/
|
|
146
|
-
derived?: boolean;
|
|
147
|
-
}
|
|
148
101
|
/**
|
|
149
102
|
* A declared policy pack whose `source` or builtin name does not
|
|
150
103
|
* resolve. The pack appears in `manifest.policy_packs[]` (so the
|
|
@@ -172,31 +125,27 @@ export interface PolicyPackUnresolved {
|
|
|
172
125
|
*/
|
|
173
126
|
export interface PolicyPackConfigIssue {
|
|
174
127
|
name: string;
|
|
175
|
-
/** Dotted path inside `pack.config`, e.g. `
|
|
128
|
+
/** Dotted path inside `pack.config`, e.g. `protected_branches`, `ux.cannot`. */
|
|
176
129
|
configPath: string;
|
|
177
130
|
message: string;
|
|
178
131
|
}
|
|
179
132
|
/**
|
|
180
|
-
* Doctor surface for the pack-level `min_version` floor
|
|
181
|
-
*
|
|
182
|
-
*
|
|
183
|
-
* gap. Always warn-not-error: a below-floor pack still runs in degraded
|
|
184
|
-
* 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.
|
|
185
136
|
*/
|
|
186
137
|
export interface PolicyPackVersionGapReport {
|
|
187
138
|
name: string;
|
|
188
139
|
declaredMinVersion: string;
|
|
189
140
|
/**
|
|
190
|
-
*
|
|
191
|
-
*
|
|
192
|
-
* `actualVersion` equal to `declaredMinVersion`; `message` carries the
|
|
193
|
-
* 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.
|
|
194
143
|
*/
|
|
195
144
|
actualVersion: string | null;
|
|
196
145
|
message: string;
|
|
197
146
|
}
|
|
198
147
|
/**
|
|
199
|
-
* A pack's declared `config.ux`
|
|
148
|
+
* A pack's declared `config.ux` that textually
|
|
200
149
|
* diverges from the shipped builtin template for that pack (task
|
|
201
150
|
* 68b9ad9c). Unlike `PolicyPackConfigIssue`, the value is still SCHEMA-
|
|
202
151
|
* valid — the gap is that it teaches stale wording (e.g. a pre-fix
|
|
@@ -207,7 +156,7 @@ export interface PolicyPackVersionGapReport {
|
|
|
207
156
|
*/
|
|
208
157
|
export interface PolicyPackUxDriftReport {
|
|
209
158
|
name: string;
|
|
210
|
-
/** Which sub-field(s) diverge
|
|
159
|
+
/** Which sub-field(s) diverge (today only `ux`). */
|
|
211
160
|
fields: string[];
|
|
212
161
|
message: string;
|
|
213
162
|
}
|
|
@@ -221,105 +170,16 @@ export interface PackExpansionRuntimeReport {
|
|
|
221
170
|
/** Set when the last apply's `.last-apply` could not be read; names the file. */
|
|
222
171
|
warning?: string;
|
|
223
172
|
}
|
|
224
|
-
/**
|
|
225
|
-
* Doctor surface for the HOOK-level `min_version` floor on a
|
|
226
|
-
* policy-pack-EXPANDED hook (task ab634898). Distinct from
|
|
227
|
-
* `PolicyPackVersionGapReport` (the pack-level `policy_packs[].min_version`
|
|
228
|
-
* floor, a different mechanism checked by `checkPolicyPackVersions`):
|
|
229
|
-
* this covers an individual hook a builtin pack contributes, e.g.
|
|
230
|
-
* understanding-before-execution's UserPromptSubmit/Stop hooks, each
|
|
231
|
-
* declaring its own `min_version` + `version_command`
|
|
232
|
-
* (`src/policy-packs/builtin/understanding-before-execution.ts`).
|
|
233
|
-
* `expandPolicyPacks` produces the hooks Claude Code actually runs, but
|
|
234
|
-
* `manifest.hooks[]` (what `HookEntryReport`/`checkHooks` walk) never
|
|
235
|
-
* includes them, so without this section an operator below a pack
|
|
236
|
-
* hook's floor saw a clean doctor report. Always warn, never error;
|
|
237
|
-
* mirrors the manifest-hook floor (`HookVersionReport`) and the
|
|
238
|
-
* pack-level floor. Empty array when every pack-expanded hook that
|
|
239
|
-
* declares a floor meets it (or none declare one).
|
|
240
|
-
*/
|
|
241
|
-
export interface PolicyPackHookVersionGapReport {
|
|
242
|
-
/** The pack-expanded hook's name, e.g. `policy-pack:understanding-before-execution:user-prompt-submit`. */
|
|
243
|
-
name: string;
|
|
244
|
-
event: string;
|
|
245
|
-
declaredMinVersion: string;
|
|
246
|
-
/**
|
|
247
|
-
* Which outcome the probe hit; mirrors `PolicyPackVersionGapKind`
|
|
248
|
-
* (`src/policy-packs/version-check.ts`) so the hook-level and
|
|
249
|
-
* pack-level sections classify gaps the same way instead of the
|
|
250
|
-
* renderer having to regex `message` back apart.
|
|
251
|
-
*/
|
|
252
|
-
kind: "below_floor" | "probe_failed" | "parse_failed";
|
|
253
|
-
/** Parsed installed version when the probe succeeded; null for `probe_failed` / `parse_failed`, where it is unknown. */
|
|
254
|
-
actualVersion: string | null;
|
|
255
|
-
/** The `version_command` that was probed, e.g. `["understanding-gate", "--version"]`. */
|
|
256
|
-
versionCommand: readonly string[];
|
|
257
|
-
message: string;
|
|
258
|
-
}
|
|
259
173
|
export interface PolicyPacksSection {
|
|
260
174
|
unresolved: PolicyPackUnresolved[];
|
|
261
175
|
configIssues: PolicyPackConfigIssue[];
|
|
262
176
|
versionGaps: PolicyPackVersionGapReport[];
|
|
263
177
|
uxDrift: PolicyPackUxDriftReport[];
|
|
264
|
-
solutionAcceptance: Diagnostic[];
|
|
265
|
-
}
|
|
266
|
-
export interface WorkflowEntryReport {
|
|
267
|
-
name: string;
|
|
268
|
-
steps: number;
|
|
269
|
-
reviewSpawn: "required" | "optional" | "skip" | null;
|
|
270
|
-
reviewTemplate: string | null;
|
|
271
|
-
mergeGate: "solo" | "agent_tasks_label" | "none" | null;
|
|
272
|
-
taskLabels: string[];
|
|
273
|
-
}
|
|
274
|
-
export interface WorkflowsSectionReport {
|
|
275
|
-
declared: number;
|
|
276
|
-
templates: number;
|
|
277
|
-
entries: WorkflowEntryReport[];
|
|
278
|
-
/**
|
|
279
|
-
* `checkWorkflowGateWiring` errors (F3, review round 2, 99f47307 Slice
|
|
280
|
-
* 1): a `spawn: "required"` review-then-merge workflow whose runtime
|
|
281
|
-
* merge gate is not correctly wired (a missing evidence hook, or one
|
|
282
|
-
* declared under the right name but the wrong trigger surface/command).
|
|
283
|
-
* `harness doctor` previously imported checks selectively and never ran
|
|
284
|
-
* this one, so it showed green on exactly this misconfiguration.
|
|
285
|
-
* Delegates to the shared validate check, mirroring `templateDrift`.
|
|
286
|
-
* Each rolls into `errorCount`.
|
|
287
|
-
*/
|
|
288
|
-
errors: string[];
|
|
289
|
-
/**
|
|
290
|
-
* `checkWorkflowGateWeakOverlap` warnings (F1, review round 2): a
|
|
291
|
-
* hand-authored policy sharing a derived gate's trigger surface but
|
|
292
|
-
* weaker than it (does not suppress the derived gate, just worth
|
|
293
|
-
* flagging). Each rolls into `warningCount`.
|
|
294
|
-
*/
|
|
295
|
-
warnings: string[];
|
|
296
|
-
}
|
|
297
|
-
/**
|
|
298
|
-
* Phase 7 #6 — Risk Gate wiring health. Reports whether the three Risk
|
|
299
|
-
* Gate surfaces (`risk.classifiers[]`, `environments.resolvers[]`, and
|
|
300
|
-
* policies carrying a `when:` block) compose coherently. The `warnings`
|
|
301
|
-
* catch the inert / fail-closed misconfigurations: `when:`-policies with
|
|
302
|
-
* no classifier (every action unclassified), `when:`-policies with no
|
|
303
|
-
* resolver (every environment `unknown`), or classifiers / resolvers
|
|
304
|
-
* declared but no policy consuming them. The per-decision audit log
|
|
305
|
-
* lives in `harness audit` (`policy_decision` rows carry the classifier
|
|
306
|
-
* + environment as of Phase 7 #5); doctor reports wiring, not history.
|
|
307
|
-
*/
|
|
308
|
-
export interface RiskGateSection {
|
|
309
|
-
/** Count of `risk.classifiers[]`. */
|
|
310
|
-
classifiers: number;
|
|
311
|
-
/** Count of `environments.resolvers[]`. */
|
|
312
|
-
resolvers: number;
|
|
313
|
-
/** Count of policies that declare a `when:` block. */
|
|
314
|
-
whenPolicies: number;
|
|
315
|
-
/** Coherence warnings; each rolls into the doctor `warningCount`. */
|
|
316
|
-
warnings: string[];
|
|
317
178
|
}
|
|
318
179
|
/**
|
|
319
180
|
* Grounding wiring health (task 129e1b94). Present only when the manifest
|
|
320
181
|
* declares an enabled `tools.mcp[grounding-mcp]` entry — without one there
|
|
321
|
-
* is no consumer to check
|
|
322
|
-
* "policies without grounding-mcp" warning). Doctor verifies the projected
|
|
182
|
+
* is no consumer to check. Doctor verifies the projected
|
|
323
183
|
* evidence-ledger path is usable and that an operator env override does
|
|
324
184
|
* not silently diverge from `grounding.evidence_ledger.path`.
|
|
325
185
|
*/
|
|
@@ -333,66 +193,6 @@ export interface GroundingSection {
|
|
|
333
193
|
/** Wiring warnings; each rolls into the doctor `warningCount`. */
|
|
334
194
|
warnings: string[];
|
|
335
195
|
}
|
|
336
|
-
/**
|
|
337
|
-
* Template-policy drift (task adf037c1). `errors` names shipped
|
|
338
|
-
* `operator_only` (kill-switch / security) policies this installed
|
|
339
|
-
* manifest either lacks entirely or carries in a DOWNGRADED (no longer
|
|
340
|
-
* operator_only) shape — a defense an aged manifest never received or
|
|
341
|
-
* silently weakened, since `harness apply` does not retroactively add or
|
|
342
|
-
* repair default policies. Each rolls into `errorCount` (a real defense
|
|
343
|
-
* gap, doctor-convention exit failure). `warnings` names stale
|
|
344
|
-
* `doctor.ignore_template_drift` entries that match no shipped policy and
|
|
345
|
-
* therefore suppress nothing; each rolls into `warningCount`. Names
|
|
346
|
-
* acknowledged via a valid `doctor.ignore_template_drift` entry are
|
|
347
|
-
* filtered out of `errors` upstream.
|
|
348
|
-
*/
|
|
349
|
-
export interface TemplateDriftSection {
|
|
350
|
-
/** Missing-or-downgraded shipped operator_only policies (each → errorCount). */
|
|
351
|
-
errors: string[];
|
|
352
|
-
/** Stale/typo'd ignore_template_drift entries that suppress nothing (each → warningCount). */
|
|
353
|
-
warnings: string[];
|
|
354
|
-
}
|
|
355
|
-
/**
|
|
356
|
-
* Trigger-boundary drift (task 037cfb7c, follow-up to adf037c1):
|
|
357
|
-
* shipped-by-name `bash_match` triggers (hook-level `hooks[].bash_match`
|
|
358
|
-
* or policy-level `policies[].trigger.bash_match`) missing a boundary
|
|
359
|
-
* alternative the template has, or missing a boundary group entirely.
|
|
360
|
-
* Rule and rationale live on `checkTriggerBoundaryDrift` in
|
|
361
|
-
* `validate/checks.ts`; the measured incident that motivated this check
|
|
362
|
-
* is in the `CHANGELOG.md:#0.49.0` entry for task 037cfb7c. Shape
|
|
363
|
-
* mirrors `TemplateDriftSection` immediately above: every `error`
|
|
364
|
-
* diagnostic rolls into `errorCount`, every `warning` diagnostic (none
|
|
365
|
-
* emitted today; the field exists so a future non-error diagnostic from
|
|
366
|
-
* `checkTriggerBoundaryDrift` surfaces here instead of being silently
|
|
367
|
-
* dropped by `buildTriggerBoundaryDrift`) rolls into `warningCount`.
|
|
368
|
-
* Always present; both arrays empty when every shipped-named trigger's
|
|
369
|
-
* boundary covers the template's (or the manifest has none of those
|
|
370
|
-
* triggers, or every drift is acknowledged via
|
|
371
|
-
* doctor.ignore_template_drift).
|
|
372
|
-
*/
|
|
373
|
-
export interface TriggerBoundaryDriftSection {
|
|
374
|
-
/** Stale-boundary bash_match triggers, hook- or policy-level (each → errorCount). */
|
|
375
|
-
errors: string[];
|
|
376
|
-
/** Reserved for a future non-error diagnostic shape (each → warningCount); empty today. */
|
|
377
|
-
warnings: string[];
|
|
378
|
-
}
|
|
379
|
-
/**
|
|
380
|
-
* Hook-budget-vs-ledger-timeout margin (task d20a7e0c, follow-up to
|
|
381
|
-
* f1aea826/7bf47554): blocking, ledger-consulting hooks (both directly
|
|
382
|
-
* declared `harness policy intercept` hooks and enabled policy-pack
|
|
383
|
-
* blockers) whose `budget_ms` does not clear
|
|
384
|
-
* `requiredHookBudgetMs(health.timeout_ms)` — see
|
|
385
|
-
* `checkHookBudgetLedgerMargin` in `validate/checks.ts` for the full
|
|
386
|
-
* derivation. Every entry is a real fail-open gap (a merely SLOW ledger
|
|
387
|
-
* can get the hook killed before it can write its fail-closed verdict),
|
|
388
|
-
* so each rolls into `errorCount`, mirroring `templateDrift.errors`
|
|
389
|
-
* above. Always present; empty when every such hook clears the margin
|
|
390
|
-
* (or none exist, or grounding-mcp is not wired).
|
|
391
|
-
*/
|
|
392
|
-
export interface HookBudgetLedgerMarginSection {
|
|
393
|
-
/** Each entry names an under-budgeted hook; rolls into errorCount. */
|
|
394
|
-
errors: string[];
|
|
395
|
-
}
|
|
396
196
|
export interface DoctorReport {
|
|
397
197
|
manifestPath: string;
|
|
398
198
|
manifestVersion: number;
|
|
@@ -408,109 +208,15 @@ export interface DoctorReport {
|
|
|
408
208
|
* doctor / harness probes. See task 4ddd78ed.
|
|
409
209
|
*/
|
|
410
210
|
npmGlobalBin?: NpmBinReport;
|
|
411
|
-
/**
|
|
412
|
-
* Understanding-gate mode env/config divergence (task 24abdecb).
|
|
413
|
-
* Present only when `UNDERSTANDING_GATE_MODE` is set in the operator
|
|
414
|
-
* environment AND diverges from
|
|
415
|
-
* `policy_packs[understanding-before-execution].config.mode`. Always
|
|
416
|
-
* advisory (rolls into `warningCount`, never `errorCount`) — see
|
|
417
|
-
* `understanding-mode-env.ts` for the full rationale.
|
|
418
|
-
*/
|
|
419
|
-
understandingModeEnv?: UnderstandingModeEnvDivergence;
|
|
420
|
-
/**
|
|
421
|
-
* Auto-approval listing + last-N metric (ADR
|
|
422
|
-
* docs/decisions/2026-08-27-ug-auto-mode-approval.md slice 1,
|
|
423
|
-
* agent-tasks 74b4b17d, "Audit and doctor"). Present only when the
|
|
424
|
-
* `understanding-before-execution` pack is declared and enabled
|
|
425
|
-
* (mirrors `understandingModeEnv`'s gate) — a manifest that never
|
|
426
|
-
* uses the pack has no `.approvals/` markers this listing owns an
|
|
427
|
-
* opinion about. Purely informational (`ℹ`); never rolls into
|
|
428
|
-
* `warningCount`.
|
|
429
|
-
*/
|
|
430
|
-
ugAutoApprovals?: UgAutoApprovalsSection;
|
|
431
|
-
/**
|
|
432
|
-
* Delegations-on-disk metric (same ADR, slice 3, "Audit and doctor",
|
|
433
|
-
* agent-tasks 37ad0b05): `total`/`expired`/`unreadable` counts
|
|
434
|
-
* from `harness.generated/.delegations/`, distinct from
|
|
435
|
-
* `ugAutoApprovals` (which reads `.approvals/` only). Present only
|
|
436
|
-
* when the `understanding-before-execution` pack is declared and
|
|
437
|
-
* enabled (mirrors `ugAutoApprovals`'s gate). `delegationsDirPresent`
|
|
438
|
-
* mirrors `ugAutoApprovals`'s `approvalsDirPresent`: the rendered line
|
|
439
|
-
* stays silent when `.delegations/` does not exist at all, and shows
|
|
440
|
-
* the zero-count line when it exists but is empty (both cases resolve
|
|
441
|
-
* `total`/`expired`/`unreadable` to `0`). Informational (`ℹ`) unless
|
|
442
|
-
* `unreadable > 0`, in which case it rolls one warning into
|
|
443
|
-
* `warningCount`.
|
|
444
|
-
*/
|
|
445
|
-
ugDelegations?: UgDelegationsSection;
|
|
446
|
-
/**
|
|
447
|
-
* In-flight subagent records (subagent-gate slice 1) from
|
|
448
|
-
* `harness.generated/.inflight/`, distinct from both `ugDelegations`
|
|
449
|
-
* (`.delegations/`) and `ugAutoApprovals` (`.approvals/`). Present
|
|
450
|
-
* only when the `understanding-before-execution` pack is declared and
|
|
451
|
-
* enabled (mirrors `ugDelegations`'s gate). `inflightDirPresent`
|
|
452
|
-
* mirrors `ugDelegations`'s `delegationsDirPresent`: the rendered
|
|
453
|
-
* line stays silent when `.inflight/` does not exist at all, and
|
|
454
|
-
* shows the zero-count line when it exists but is empty. Purely
|
|
455
|
-
* informational (`ℹ`) — an unreadable/skipped entry never rolls a
|
|
456
|
-
* warning here, since a record aging out unread is exactly what
|
|
457
|
-
* `harness gc` is for, not a signal of tampering.
|
|
458
|
-
*/
|
|
459
|
-
ugInflight?: UgInflightSection;
|
|
460
|
-
/**
|
|
461
|
-
* `bypassPermissions` observed (hook-side, `.permission-mode-
|
|
462
|
-
* observations/`) but `auto_approve` does not cover it (task 8f637efd,
|
|
463
|
-
* "Amendment: install default"). Present only when the pack is
|
|
464
|
-
* declared and enabled AND at least one qualifying observation exists
|
|
465
|
-
* in the window; always a warning (`⚠`) when present, see
|
|
466
|
-
* bypass-without-auto-approve.ts.
|
|
467
|
-
*/
|
|
468
|
-
ugBypassWithoutAutoApprove?: BypassWithoutAutoApproveFinding;
|
|
469
|
-
/**
|
|
470
|
-
* `session_start_preflight.setup: true` against a `preflight` binary
|
|
471
|
-
* below the build-capable release (task 6993d9b5). Present only when
|
|
472
|
-
* `setup` is enabled AND the probed/parsed version is below
|
|
473
|
-
* `SESSION_START_PREFLIGHT_SETUP_BUILD_MIN_VERSION` (or the probe
|
|
474
|
-
* failed/could not be parsed); always a warning (`⚠`) when present,
|
|
475
|
-
* see session-start-preflight-setup-version.ts.
|
|
476
|
-
*/
|
|
477
|
-
sessionStartPreflightSetupVersion?: SessionStartPreflightSetupVersionFinding;
|
|
478
|
-
/**
|
|
479
|
-
* `auto_approve` configured without `mode: grill_me` (agent-tasks
|
|
480
|
-
* abfad738, follow-up of ADR
|
|
481
|
-
* docs/decisions/2026-08-27-ug-auto-mode-approval.md slice 1).
|
|
482
|
-
* Present only when the pack is declared and enabled AND
|
|
483
|
-
* `config.auto_approve` parses as a valid opt-in block. Always
|
|
484
|
-
* advisory (rolls into `warningCount`, never `errorCount`). See
|
|
485
|
-
* `auto-approve-mode.ts` for the full rationale.
|
|
486
|
-
*/
|
|
487
|
-
ugAutoApproveMode?: AutoApproveModeWarning;
|
|
488
|
-
/**
|
|
489
|
-
* Settings-drift compensating control (same ADR, threat model (c)): a
|
|
490
|
-
* `permissions.defaultMode` or hook entry present in a live Claude
|
|
491
|
-
* Code settings file but absent from harness's own last-apply
|
|
492
|
-
* snapshot. Present only when the understanding-gate pack is enabled
|
|
493
|
-
* AND `harness apply` has run at least once for this manifest
|
|
494
|
-
* (`harness.generated/` exists) — otherwise there is no baseline to
|
|
495
|
-
* compare against and nothing to say. `warnings` roll into
|
|
496
|
-
* `warningCount`; `notes` never do.
|
|
497
|
-
*/
|
|
498
|
-
settingsDrift?: SettingsDriftSection;
|
|
499
|
-
/**
|
|
500
|
-
* Codex counterpart of `settingsDrift` (follow-up of slice 2 of the
|
|
501
|
-
* same ADR, agent-tasks f59ea0eb): a live `approval_policy = "never"`
|
|
502
|
-
* or full-access `default_permissions` selection in `$CODEX_HOME
|
|
503
|
-
* /config.toml` or `<repo>/.codex/config.toml`. Present only when the
|
|
504
|
-
* understanding-gate pack's `auto_approve.harnesses` lists `codex`;
|
|
505
|
-
* a repo that never opted Codex into the auto path has no live signal
|
|
506
|
-
* for this key to pre-set. Unlike `settingsDrift`, this always warns
|
|
507
|
-
* while the key is present and the repo is opted in (not gated on
|
|
508
|
-
* drift since the last apply); `warnings` roll into `warningCount`.
|
|
509
|
-
*/
|
|
510
|
-
codexConfigDrift?: CodexConfigDriftSection;
|
|
511
211
|
memory: MemoryReport;
|
|
512
212
|
hooks: HookEntryReport[];
|
|
513
|
-
|
|
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;
|
|
514
220
|
/**
|
|
515
221
|
* Declared-but-not-live policy packs. Each entry is a pack the
|
|
516
222
|
* operator listed in `policy_packs[]` whose `source` or builtin
|
|
@@ -518,15 +224,6 @@ export interface DoctorReport {
|
|
|
518
224
|
* surfaced loudly here. Errors count toward `errorCount`.
|
|
519
225
|
*/
|
|
520
226
|
policyPacks: PolicyPacksSection;
|
|
521
|
-
/**
|
|
522
|
-
* Hook-level `min_version` floors on policy-pack-expanded hooks (task
|
|
523
|
-
* ab634898). See `PolicyPackHookVersionGapReport` for why this is
|
|
524
|
-
* separate from both `hooks[].version` (manifest-declared hooks only)
|
|
525
|
-
* and `policyPacks.versionGaps` (the pack-level floor). Always
|
|
526
|
-
* present; empty when every pack-expanded hook that declares a floor
|
|
527
|
-
* meets it.
|
|
528
|
-
*/
|
|
529
|
-
policyPackHookVersions: PolicyPackHookVersionGapReport[];
|
|
530
227
|
/**
|
|
531
228
|
* The runtime policy packs were expanded against for the pack checks:
|
|
532
229
|
* the one a plain `harness apply` would select (recorded in
|
|
@@ -534,31 +231,6 @@ export interface DoctorReport {
|
|
|
534
231
|
* 04b8abcf). Always present.
|
|
535
232
|
*/
|
|
536
233
|
packExpansionRuntime: PackExpansionRuntimeReport;
|
|
537
|
-
workflows: WorkflowsSectionReport;
|
|
538
|
-
/** Phase 7 #6 — Risk Gate wiring health (classifiers / resolvers / `when:`). */
|
|
539
|
-
riskGate: RiskGateSection;
|
|
540
|
-
/**
|
|
541
|
-
* Template-policy drift (task adf037c1): shipped operator_only security
|
|
542
|
-
* policies missing-or-downgraded in this installed manifest (`errors`)
|
|
543
|
-
* and stale `doctor.ignore_template_drift` entries (`warnings`). Always
|
|
544
|
-
* present; both arrays empty when the manifest carries every shipped
|
|
545
|
-
* kill-switch policy in operator_only form (or has acknowledged the gap
|
|
546
|
-
* via a valid doctor.ignore_template_drift entry).
|
|
547
|
-
*/
|
|
548
|
-
templateDrift: TemplateDriftSection;
|
|
549
|
-
/**
|
|
550
|
-
* Trigger-boundary drift (task 037cfb7c). Always present; `errors`
|
|
551
|
-
* empty when every shipped-named `bash_match` trigger's boundary
|
|
552
|
-
* matches the template (or every drift is acknowledged via
|
|
553
|
-
* doctor.ignore_template_drift).
|
|
554
|
-
*/
|
|
555
|
-
triggerBoundaryDrift: TriggerBoundaryDriftSection;
|
|
556
|
-
/**
|
|
557
|
-
* Hook-budget-vs-ledger-timeout margin (task d20a7e0c). Always
|
|
558
|
-
* present; `errors` empty when every blocking, ledger-consulting hook
|
|
559
|
-
* clears the derived margin.
|
|
560
|
-
*/
|
|
561
|
-
hookBudgetLedgerMargin: HookBudgetLedgerMarginSection;
|
|
562
234
|
/**
|
|
563
235
|
* Grounding wiring health (task 129e1b94). Absent when no enabled
|
|
564
236
|
* grounding-mcp entry is declared.
|
|
@@ -573,17 +245,6 @@ export interface DoctorReport {
|
|
|
573
245
|
* isn't further scoped by runtime.
|
|
574
246
|
*/
|
|
575
247
|
claudeMcp?: ClaudeMcpRegistrationSection;
|
|
576
|
-
/**
|
|
577
|
-
* On-demand toolchain-parity comparison (task 13919613), reusing the
|
|
578
|
-
* Collector/Comparator core from `harness session-start
|
|
579
|
-
* toolchain-parity` (src/cli/doctor/toolchain-parity.ts). Present only
|
|
580
|
-
* when `toolchain_parity.enabled` is true in the manifest — absent
|
|
581
|
-
* otherwise, mirroring `grounding`'s "only when the feature is in use"
|
|
582
|
-
* gating. Always read-only: never writes a snapshot file or a ledger
|
|
583
|
-
* fact. Only `"drift"`-status peers roll into `warningCount`; the
|
|
584
|
-
* section is never an `errorCount` source (advisory, not a gate).
|
|
585
|
-
*/
|
|
586
|
-
toolchainParity?: ToolchainParitySection;
|
|
587
248
|
/**
|
|
588
249
|
* Phase 6 #6 follow-up: present when `--target codex` is passed.
|
|
589
250
|
* Aggregates harness-side codex adapter health checks (binary
|
|
@@ -600,27 +261,9 @@ export interface DoctorReport {
|
|
|
600
261
|
* warningCount, same as `codexTarget`.
|
|
601
262
|
*/
|
|
602
263
|
opencodeTarget?: OpencodeTargetReport;
|
|
603
|
-
/**
|
|
604
|
-
* Leftover `<parent>/~/.evidence-ledger/ledger.db` files from the
|
|
605
|
-
* literal-tilde `EVIDENCE_LEDGER_DB` env leak (agent-tasks/42d224a6,
|
|
606
|
-
* harness PR #101). Always scanned; harmless when empty. Each entry
|
|
607
|
-
* rolls into `warningCount`. The scan walks `$HOME`, `$HOME/git/*`
|
|
608
|
-
* (one level deep), and `$PWD`; see `rogue-ledger.ts` for rationale.
|
|
609
|
-
*/
|
|
610
|
-
rogueLedgerDbs: RogueLedgerDb[];
|
|
611
264
|
errorCount: number;
|
|
612
265
|
warningCount: number;
|
|
613
266
|
}
|
|
614
267
|
export type { NpmBinReport } from "./npm-bin-path.js";
|
|
615
|
-
export type { SessionStartPreflightSetupVersionFinding } from "./session-start-preflight-setup-version.js";
|
|
616
268
|
export type { ClaudeMcpRegistrationSection, ClaudeMcpEntryReport, } from "./claude-mcp.js";
|
|
617
|
-
export type {
|
|
618
|
-
export type { UgAutoApprovalsSection, AutoApprovalListingEntry, } from "./ug-auto-approvals.js";
|
|
619
|
-
export type { UgDelegationsSection } from "./ug-delegations.js";
|
|
620
|
-
export type { UgInflightSection } from "./ug-inflight.js";
|
|
621
|
-
export type { AutoApproveModeWarning } from "./auto-approve-mode.js";
|
|
622
|
-
export type { BypassWithoutAutoApproveFinding } from "./bypass-without-auto-approve.js";
|
|
623
|
-
export type { SettingsDriftSection } from "./settings-drift.js";
|
|
624
|
-
export type { CodexConfigDriftSection } from "./codex-config-drift.js";
|
|
625
|
-
export type { ToolchainParitySection, ToolchainParityPeerReport, } from "./toolchain-parity.js";
|
|
626
|
-
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;
|