peaks-loop 4.1.2 → 4.1.4
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/.claude-plugin/marketplace.json +136 -47
- package/CHANGELOG.md +112 -0
- package/README-en.md +1 -1
- package/README.md +1 -1
- package/contracts/readonly-argv-whitelist.json +211 -0
- package/dist/cli/commands/asset-command-shared.d.ts +12 -0
- package/dist/cli/commands/asset-command-shared.js +45 -0
- package/dist/cli/commands/asset-commands.d.ts +6 -1
- package/dist/cli/commands/asset-commands.js +11 -372
- package/dist/cli/commands/asset-crystallize-command.d.ts +3 -0
- package/dist/cli/commands/asset-crystallize-command.js +60 -0
- package/dist/cli/commands/asset-crystallize-payload.d.ts +47 -0
- package/dist/cli/commands/asset-crystallize-payload.js +85 -0
- package/dist/cli/commands/asset-crystallize-runner.d.ts +3 -0
- package/dist/cli/commands/asset-crystallize-runner.js +133 -0
- package/dist/cli/commands/asset-dispose-command.d.ts +3 -0
- package/dist/cli/commands/asset-dispose-command.js +99 -0
- package/dist/cli/commands/asset-status-command.d.ts +3 -0
- package/dist/cli/commands/asset-status-command.js +100 -0
- package/dist/cli/commands/audit-artifact-runners.d.ts +16 -0
- package/dist/cli/commands/audit-artifact-runners.js +170 -0
- package/dist/cli/commands/audit-command-shared.d.ts +97 -0
- package/dist/cli/commands/audit-command-shared.js +60 -0
- package/dist/cli/commands/audit-commands.d.ts +7 -31
- package/dist/cli/commands/audit-commands.js +64 -473
- package/dist/cli/commands/audit-goal-runners.d.ts +17 -0
- package/dist/cli/commands/audit-goal-runners.js +114 -0
- package/dist/cli/commands/audit-red-lines-runners.d.ts +11 -0
- package/dist/cli/commands/audit-red-lines-runners.js +43 -0
- package/dist/cli/commands/audit-refusal-data.d.ts +23 -0
- package/dist/cli/commands/audit-refusal-data.js +69 -0
- package/dist/cli/commands/audit-static-runners.d.ts +13 -0
- package/dist/cli/commands/audit-static-runners.js +139 -0
- package/dist/cli/commands/await-runners.d.ts +11 -0
- package/dist/cli/commands/await-runners.js +148 -0
- package/dist/cli/commands/baseline-audit-command.d.ts +3 -0
- package/dist/cli/commands/baseline-audit-command.js +64 -0
- package/dist/cli/commands/baseline-command-shared.d.ts +23 -0
- package/dist/cli/commands/baseline-command-shared.js +39 -0
- package/dist/cli/commands/baseline-commands.js +33 -313
- package/dist/cli/commands/baseline-freeze-commands.d.ts +4 -0
- package/dist/cli/commands/baseline-freeze-commands.js +81 -0
- package/dist/cli/commands/baseline-guard-command.d.ts +3 -0
- package/dist/cli/commands/baseline-guard-command.js +52 -0
- package/dist/cli/commands/baseline-read-commands.d.ts +5 -0
- package/dist/cli/commands/baseline-read-commands.js +72 -0
- package/dist/cli/commands/baseline-rollback-commands.d.ts +4 -0
- package/dist/cli/commands/baseline-rollback-commands.js +88 -0
- package/dist/cli/commands/classify-downgrade-command.d.ts +9 -0
- package/dist/cli/commands/classify-downgrade-command.js +21 -0
- package/dist/cli/commands/classify-run-command.d.ts +9 -0
- package/dist/cli/commands/classify-run-command.js +73 -0
- package/dist/cli/commands/classify-signals.d.ts +5 -0
- package/dist/cli/commands/classify-signals.js +104 -0
- package/dist/cli/commands/code-auto-compact-command.d.ts +3 -0
- package/dist/cli/commands/code-auto-compact-command.js +124 -0
- package/dist/cli/commands/code-auto-compact-envelope.d.ts +22 -0
- package/dist/cli/commands/code-auto-compact-envelope.js +39 -0
- package/dist/cli/commands/code-context-audit-command.d.ts +3 -0
- package/dist/cli/commands/code-context-audit-command.js +68 -0
- package/dist/cli/commands/code-context-now-command.d.ts +3 -0
- package/dist/cli/commands/code-context-now-command.js +124 -0
- package/dist/cli/commands/code-context-now-envelope.d.ts +66 -0
- package/dist/cli/commands/code-context-now-envelope.js +136 -0
- package/dist/cli/commands/code-context-now-mapping.d.ts +27 -0
- package/dist/cli/commands/code-context-now-mapping.js +43 -0
- package/dist/cli/commands/code-emit-handoff-command.d.ts +3 -0
- package/dist/cli/commands/code-emit-handoff-command.js +136 -0
- package/dist/cli/commands/code-gate-step-08-command.d.ts +3 -0
- package/dist/cli/commands/code-gate-step-08-command.js +155 -0
- package/dist/cli/commands/code-post-compact-detect-command.d.ts +3 -0
- package/dist/cli/commands/code-post-compact-detect-command.js +50 -0
- package/dist/cli/commands/code-runtime-commands.d.ts +9 -43
- package/dist/cli/commands/code-runtime-commands.js +20 -672
- package/dist/cli/commands/code-runtime-session.d.ts +1 -0
- package/dist/cli/commands/code-runtime-session.js +15 -0
- package/dist/cli/commands/codegraph-command-options.d.ts +22 -0
- package/dist/cli/commands/codegraph-command-options.js +22 -0
- package/dist/cli/commands/codegraph-commands.d.ts +2 -2
- package/dist/cli/commands/codegraph-commands.js +14 -397
- package/dist/cli/commands/codegraph-config-restore-command.d.ts +3 -0
- package/dist/cli/commands/codegraph-config-restore-command.js +200 -0
- package/dist/cli/commands/codegraph-proxy-commands.d.ts +10 -0
- package/dist/cli/commands/codegraph-proxy-commands.js +159 -0
- package/dist/cli/commands/codegraph-repair-commands.d.ts +3 -0
- package/dist/cli/commands/codegraph-repair-commands.js +94 -0
- package/dist/cli/commands/codegraph-status-command.d.ts +1 -1
- package/dist/cli/commands/codegraph-status-command.js +27 -214
- package/dist/cli/commands/codegraph-status-integrity.d.ts +44 -0
- package/dist/cli/commands/codegraph-status-integrity.js +121 -0
- package/dist/cli/commands/codegraph-status-json.d.ts +5 -0
- package/dist/cli/commands/codegraph-status-json.js +127 -0
- package/dist/cli/commands/compact-command.d.ts +6 -2
- package/dist/cli/commands/compact-command.js +12 -559
- package/dist/cli/commands/compact-dry-run-command.d.ts +3 -0
- package/dist/cli/commands/compact-dry-run-command.js +87 -0
- package/dist/cli/commands/compact-force-command.d.ts +3 -0
- package/dist/cli/commands/compact-force-command.js +98 -0
- package/dist/cli/commands/compact-harness-window-command.d.ts +3 -0
- package/dist/cli/commands/compact-harness-window-command.js +174 -0
- package/dist/cli/commands/compact-history-command.d.ts +3 -0
- package/dist/cli/commands/compact-history-command.js +89 -0
- package/dist/cli/commands/compact-read-commands.d.ts +3 -0
- package/dist/cli/commands/compact-read-commands.js +123 -0
- package/dist/cli/commands/compact-settle-command.d.ts +3 -0
- package/dist/cli/commands/compact-settle-command.js +130 -0
- package/dist/cli/commands/compact-shared.d.ts +9 -0
- package/dist/cli/commands/compact-shared.js +26 -0
- package/dist/cli/commands/container-command-shared.d.ts +60 -0
- package/dist/cli/commands/container-command-shared.js +52 -0
- package/dist/cli/commands/container-commands.d.ts +1 -1
- package/dist/cli/commands/container-commands.js +4 -216
- package/dist/cli/commands/container-release-command.d.ts +3 -0
- package/dist/cli/commands/container-release-command.js +105 -0
- package/dist/cli/commands/container-spawn-command.d.ts +3 -0
- package/dist/cli/commands/container-spawn-command.js +148 -0
- package/dist/cli/commands/context-check-command.d.ts +3 -0
- package/dist/cli/commands/context-check-command.js +81 -0
- package/dist/cli/commands/context-commands.d.ts +2 -7
- package/dist/cli/commands/context-commands.js +6 -276
- package/dist/cli/commands/context-layer-command.d.ts +3 -0
- package/dist/cli/commands/context-layer-command.js +34 -0
- package/dist/cli/commands/context-layer-fetchers.d.ts +15 -0
- package/dist/cli/commands/context-layer-fetchers.js +162 -0
- package/dist/cli/commands/context-status-command.d.ts +17 -0
- package/dist/cli/commands/context-status-command.js +41 -0
- package/dist/cli/commands/contract-write-command.d.ts +3 -0
- package/dist/cli/commands/contract-write-command.js +144 -0
- package/dist/cli/commands/core/doctor-bindings.d.ts +17 -0
- package/dist/cli/commands/core/doctor-bindings.js +30 -0
- package/dist/cli/commands/core/doctor-command.d.ts +4 -18
- package/dist/cli/commands/core/doctor-command.js +2 -323
- package/dist/cli/commands/core/doctor-logs.d.ts +8 -0
- package/dist/cli/commands/core/doctor-logs.js +32 -0
- package/dist/cli/commands/core/doctor-probes.d.ts +3 -0
- package/dist/cli/commands/core/doctor-probes.js +55 -0
- package/dist/cli/commands/core/doctor-run-command.d.ts +12 -0
- package/dist/cli/commands/core/doctor-run-command.js +172 -0
- package/dist/cli/commands/core/doctor-summary.d.ts +7 -0
- package/dist/cli/commands/core/doctor-summary.js +39 -0
- package/dist/cli/commands/core/memory-command-shared.d.ts +25 -0
- package/dist/cli/commands/core/memory-command-shared.js +20 -0
- package/dist/cli/commands/core/memory-command.d.ts +1 -1
- package/dist/cli/commands/core/memory-command.js +6 -227
- package/dist/cli/commands/core/memory-delegated-verbs.d.ts +4 -0
- package/dist/cli/commands/core/memory-delegated-verbs.js +178 -0
- package/dist/cli/commands/core/memory-extract-command.d.ts +3 -0
- package/dist/cli/commands/core/memory-extract-command.js +90 -0
- package/dist/cli/commands/core/memory-sync-command.d.ts +3 -0
- package/dist/cli/commands/core/memory-sync-command.js +38 -0
- package/dist/cli/commands/core/session-command.d.ts +1 -1
- package/dist/cli/commands/core/session-command.js +12 -206
- package/dist/cli/commands/core/session-info-command.d.ts +3 -0
- package/dist/cli/commands/core/session-info-command.js +142 -0
- package/dist/cli/commands/core/session-verb-commands.d.ts +5 -0
- package/dist/cli/commands/core/session-verb-commands.js +58 -0
- package/dist/cli/commands/core/skill-command.d.ts +1 -44
- package/dist/cli/commands/core/skill-command.js +13 -541
- package/dist/cli/commands/core/skill-context-verdict.d.ts +38 -0
- package/dist/cli/commands/core/skill-context-verdict.js +63 -0
- package/dist/cli/commands/core/skill-generated-config-notice.d.ts +41 -0
- package/dist/cli/commands/core/skill-generated-config-notice.js +75 -0
- package/dist/cli/commands/core/skill-heartbeat-commands.d.ts +3 -0
- package/dist/cli/commands/core/skill-heartbeat-commands.js +50 -0
- package/dist/cli/commands/core/skill-presence-commands.d.ts +3 -0
- package/dist/cli/commands/core/skill-presence-commands.js +123 -0
- package/dist/cli/commands/core/skill-presence-housekeeping-commands.d.ts +3 -0
- package/dist/cli/commands/core/skill-presence-housekeeping-commands.js +165 -0
- package/dist/cli/commands/core/skill-registry-commands.d.ts +3 -0
- package/dist/cli/commands/core/skill-registry-commands.js +117 -0
- package/dist/cli/commands/core/skill-runbook-command.d.ts +3 -0
- package/dist/cli/commands/core/skill-runbook-command.js +29 -0
- package/dist/cli/commands/core/standards-command.d.ts +1 -24
- package/dist/cli/commands/core/standards-command.js +33 -201
- package/dist/cli/commands/core/standards-init-command.d.ts +3 -0
- package/dist/cli/commands/core/standards-init-command.js +87 -0
- package/dist/cli/commands/core/standards-lint.d.ts +24 -0
- package/dist/cli/commands/core/standards-lint.js +57 -0
- package/dist/cli/commands/core/standards-migrate-command.d.ts +3 -0
- package/dist/cli/commands/core/standards-migrate-command.js +57 -0
- package/dist/cli/commands/cron-scheduler-commands.d.ts +5 -1
- package/dist/cli/commands/cron-scheduler-commands.js +36 -206
- package/dist/cli/commands/cron-scheduler-run-once-command.d.ts +7 -0
- package/dist/cli/commands/cron-scheduler-run-once-command.js +35 -0
- package/dist/cli/commands/cron-scheduler-shared.d.ts +6 -0
- package/dist/cli/commands/cron-scheduler-shared.js +48 -0
- package/dist/cli/commands/cron-scheduler-start-command.d.ts +7 -0
- package/dist/cli/commands/cron-scheduler-start-command.js +65 -0
- package/dist/cli/commands/cron-scheduler-status-command.d.ts +7 -0
- package/dist/cli/commands/cron-scheduler-status-command.js +46 -0
- package/dist/cli/commands/cron-scheduler-stop-command.d.ts +7 -0
- package/dist/cli/commands/cron-scheduler-stop-command.js +61 -0
- package/dist/cli/commands/dispatch-command-spec.d.ts +2 -0
- package/dist/cli/commands/dispatch-command-spec.js +62 -0
- package/dist/cli/commands/dispatch-commands.js +159 -775
- package/dist/cli/commands/dispatch-dag-envelope.d.ts +41 -0
- package/dist/cli/commands/dispatch-dag-envelope.js +49 -0
- package/dist/cli/commands/dispatch-dag-failure.d.ts +18 -0
- package/dist/cli/commands/dispatch-dag-failure.js +16 -0
- package/dist/cli/commands/dispatch-dag-preflight.d.ts +51 -0
- package/dist/cli/commands/dispatch-dag-preflight.js +105 -0
- package/dist/cli/commands/dispatch-dag-runners.d.ts +48 -0
- package/dist/cli/commands/dispatch-dag-runners.js +73 -0
- package/dist/cli/commands/dispatch-detached-branch.d.ts +3 -0
- package/dist/cli/commands/dispatch-detached-branch.js +58 -0
- package/dist/cli/commands/dispatch-envelope.d.ts +36 -0
- package/dist/cli/commands/dispatch-envelope.js +104 -0
- package/dist/cli/commands/dispatch-from-dag.d.ts +27 -0
- package/dist/cli/commands/dispatch-from-dag.js +87 -257
- package/dist/cli/commands/dispatch-isolation-lease.d.ts +17 -0
- package/dist/cli/commands/dispatch-isolation-lease.js +149 -0
- package/dist/cli/commands/dispatch-preflight.d.ts +7 -0
- package/dist/cli/commands/dispatch-preflight.js +105 -0
- package/dist/cli/commands/dispatch-prompt-blocks.d.ts +10 -0
- package/dist/cli/commands/dispatch-prompt-blocks.js +56 -0
- package/dist/cli/commands/dispatch-prompt-composition.d.ts +30 -0
- package/dist/cli/commands/dispatch-prompt-composition.js +171 -0
- package/dist/cli/commands/dispatch-record-write.d.ts +24 -0
- package/dist/cli/commands/dispatch-record-write.js +96 -0
- package/dist/cli/commands/dispatch-tool-call.d.ts +15 -0
- package/dist/cli/commands/dispatch-tool-call.js +128 -0
- package/dist/cli/commands/evolution-command-shared.d.ts +78 -0
- package/dist/cli/commands/evolution-command-shared.js +107 -0
- package/dist/cli/commands/evolution-commands.d.ts +11 -1
- package/dist/cli/commands/evolution-commands.js +19 -350
- package/dist/cli/commands/evolution-evaluate-command.d.ts +24 -0
- package/dist/cli/commands/evolution-evaluate-command.js +138 -0
- package/dist/cli/commands/evolution-propose-command.d.ts +23 -0
- package/dist/cli/commands/evolution-propose-command.js +145 -0
- package/dist/cli/commands/evolution-status-command.d.ts +17 -0
- package/dist/cli/commands/evolution-status-command.js +41 -0
- package/dist/cli/commands/evolution-verdict-commands.d.ts +30 -0
- package/dist/cli/commands/evolution-verdict-commands.js +100 -0
- package/dist/cli/commands/final-review-command-envelopes.d.ts +44 -0
- package/dist/cli/commands/final-review-command-envelopes.js +100 -0
- package/dist/cli/commands/final-review-command-shared.d.ts +52 -0
- package/dist/cli/commands/final-review-command-shared.js +35 -0
- package/dist/cli/commands/final-review-commands.d.ts +7 -27
- package/dist/cli/commands/final-review-commands.js +13 -240
- package/dist/cli/commands/final-review-prepare-command.d.ts +3 -0
- package/dist/cli/commands/final-review-prepare-command.js +200 -0
- package/dist/cli/commands/finalize-accumulator.d.ts +44 -0
- package/dist/cli/commands/finalize-accumulator.js +55 -0
- package/dist/cli/commands/finalize-branches.d.ts +34 -0
- package/dist/cli/commands/finalize-branches.js +119 -0
- package/dist/cli/commands/finalize-runners.d.ts +3 -0
- package/dist/cli/commands/finalize-runners.js +92 -0
- package/dist/cli/commands/finalize-selection.d.ts +65 -0
- package/dist/cli/commands/finalize-selection.js +35 -0
- package/dist/cli/commands/gate-commands.js +26 -8
- package/dist/cli/commands/governance-classify-contract-commands.d.ts +23 -9
- package/dist/cli/commands/governance-classify-contract-commands.js +26 -269
- package/dist/cli/commands/hooks-command-shared.d.ts +42 -0
- package/dist/cli/commands/hooks-command-shared.js +32 -0
- package/dist/cli/commands/hooks-commands.d.ts +20 -0
- package/dist/cli/commands/hooks-commands.js +75 -309
- package/dist/cli/commands/hooks-install-envelopes.d.ts +6 -0
- package/dist/cli/commands/hooks-install-envelopes.js +144 -0
- package/dist/cli/commands/hooks-status-command.d.ts +3 -0
- package/dist/cli/commands/hooks-status-command.js +93 -0
- package/dist/cli/commands/hooks-uninstall-command.d.ts +3 -0
- package/dist/cli/commands/hooks-uninstall-command.js +43 -0
- package/dist/cli/commands/job-checkpoint-commands.d.ts +3 -0
- package/dist/cli/commands/job-checkpoint-commands.js +157 -0
- package/dist/cli/commands/job-command-shared.d.ts +109 -0
- package/dist/cli/commands/job-command-shared.js +72 -0
- package/dist/cli/commands/job-commands.d.ts +4 -64
- package/dist/cli/commands/job-commands.js +42 -552
- package/dist/cli/commands/job-cost-check-command.d.ts +3 -0
- package/dist/cli/commands/job-cost-check-command.js +41 -0
- package/dist/cli/commands/job-init-status-commands.d.ts +3 -0
- package/dist/cli/commands/job-init-status-commands.js +149 -0
- package/dist/cli/commands/job-run-commands.d.ts +3 -0
- package/dist/cli/commands/job-run-commands.js +97 -0
- package/dist/cli/commands/job-state-root.d.ts +35 -0
- package/dist/cli/commands/job-state-root.js +76 -0
- package/dist/cli/commands/loop-command-shared.d.ts +31 -0
- package/dist/cli/commands/loop-command-shared.js +15 -0
- package/dist/cli/commands/loop-commands.d.ts +12 -17
- package/dist/cli/commands/loop-commands.js +56 -238
- package/dist/cli/commands/loop-eval-capture-index.d.ts +4 -0
- package/dist/cli/commands/loop-eval-capture-index.js +44 -0
- package/dist/cli/commands/loop-eval-commands.d.ts +8 -5
- package/dist/cli/commands/loop-eval-commands.js +12 -626
- package/dist/cli/commands/loop-eval-eval-command.d.ts +3 -0
- package/dist/cli/commands/loop-eval-eval-command.js +168 -0
- package/dist/cli/commands/loop-eval-monotonic-command.d.ts +3 -0
- package/dist/cli/commands/loop-eval-monotonic-command.js +90 -0
- package/dist/cli/commands/loop-eval-parents.d.ts +7 -0
- package/dist/cli/commands/loop-eval-parents.js +20 -0
- package/dist/cli/commands/loop-eval-run-code.d.ts +7 -0
- package/dist/cli/commands/loop-eval-run-code.js +40 -0
- package/dist/cli/commands/loop-eval-run-command.d.ts +3 -0
- package/dist/cli/commands/loop-eval-run-command.js +113 -0
- package/dist/cli/commands/loop-eval-spec-commands.d.ts +3 -0
- package/dist/cli/commands/loop-eval-spec-commands.js +165 -0
- package/dist/cli/commands/loop-eval-spec-lint-command.d.ts +3 -0
- package/dist/cli/commands/loop-eval-spec-lint-command.js +42 -0
- package/dist/cli/commands/loop-eval-workflow-commands.d.ts +3 -0
- package/dist/cli/commands/loop-eval-workflow-commands.js +141 -0
- package/dist/cli/commands/loop-export-command.d.ts +3 -0
- package/dist/cli/commands/loop-export-command.js +73 -0
- package/dist/cli/commands/loop-goal-compose-command.d.ts +3 -0
- package/dist/cli/commands/loop-goal-compose-command.js +36 -0
- package/dist/cli/commands/loop-import-command.d.ts +3 -0
- package/dist/cli/commands/loop-import-command.js +86 -0
- package/dist/cli/commands/loop-placeholder-commands.d.ts +3 -0
- package/dist/cli/commands/loop-placeholder-commands.js +52 -0
- package/dist/cli/commands/mcp-commands.d.ts +10 -0
- package/dist/cli/commands/mcp-commands.js +157 -0
- package/dist/cli/commands/memory-command-shared.d.ts +59 -0
- package/dist/cli/commands/memory-command-shared.js +39 -0
- package/dist/cli/commands/memory-commands.d.ts +6 -79
- package/dist/cli/commands/memory-commands.js +19 -309
- package/dist/cli/commands/memory-ingest-command.d.ts +3 -0
- package/dist/cli/commands/memory-ingest-command.js +50 -0
- package/dist/cli/commands/memory-list-command.d.ts +16 -0
- package/dist/cli/commands/memory-list-command.js +129 -0
- package/dist/cli/commands/memory-reindex-command.d.ts +9 -0
- package/dist/cli/commands/memory-reindex-command.js +78 -0
- package/dist/cli/commands/memory-rotate-command.d.ts +3 -0
- package/dist/cli/commands/memory-rotate-command.js +55 -0
- package/dist/cli/commands/memory-search-command.d.ts +7 -0
- package/dist/cli/commands/memory-search-command.js +46 -0
- package/dist/cli/commands/openspec-archive-command.d.ts +3 -0
- package/dist/cli/commands/openspec-archive-command.js +55 -0
- package/dist/cli/commands/openspec-command-shared.d.ts +62 -0
- package/dist/cli/commands/openspec-command-shared.js +135 -0
- package/dist/cli/commands/openspec-commands.d.ts +1 -1
- package/dist/cli/commands/openspec-commands.js +33 -306
- package/dist/cli/commands/openspec-from-doctor-command.d.ts +3 -0
- package/dist/cli/commands/openspec-from-doctor-command.js +66 -0
- package/dist/cli/commands/openspec-init-command.d.ts +3 -0
- package/dist/cli/commands/openspec-init-command.js +49 -0
- package/dist/cli/commands/openspec-list-command.d.ts +3 -0
- package/dist/cli/commands/openspec-list-command.js +27 -0
- package/dist/cli/commands/openspec-render-command.d.ts +3 -0
- package/dist/cli/commands/openspec-render-command.js +33 -0
- package/dist/cli/commands/openspec-show-command.d.ts +3 -0
- package/dist/cli/commands/openspec-show-command.js +33 -0
- package/dist/cli/commands/openspec-to-rd-command.d.ts +3 -0
- package/dist/cli/commands/openspec-to-rd-command.js +33 -0
- package/dist/cli/commands/openspec-validate-command.d.ts +3 -0
- package/dist/cli/commands/openspec-validate-command.js +45 -0
- package/dist/cli/commands/playwright-browser-command.d.ts +8 -0
- package/dist/cli/commands/playwright-browser-command.js +61 -0
- package/dist/cli/commands/playwright-commands.d.ts +10 -62
- package/dist/cli/commands/playwright-commands.js +77 -400
- package/dist/cli/commands/playwright-envelope.d.ts +8 -0
- package/dist/cli/commands/playwright-envelope.js +29 -0
- package/dist/cli/commands/playwright-ls-stop-commands.d.ts +4 -0
- package/dist/cli/commands/playwright-ls-stop-commands.js +74 -0
- package/dist/cli/commands/playwright-session-store.d.ts +65 -0
- package/dist/cli/commands/playwright-session-store.js +189 -0
- package/dist/cli/commands/project-commands.d.ts +19 -0
- package/dist/cli/commands/project-commands.js +98 -259
- package/dist/cli/commands/project-context-command.d.ts +3 -0
- package/dist/cli/commands/project-context-command.js +44 -0
- package/dist/cli/commands/project-dashboard-command.d.ts +3 -0
- package/dist/cli/commands/project-dashboard-command.js +74 -0
- package/dist/cli/commands/project-knowledge-command.d.ts +3 -0
- package/dist/cli/commands/project-knowledge-command.js +48 -0
- package/dist/cli/commands/project-memories-show-command.d.ts +3 -0
- package/dist/cli/commands/project-memories-show-command.js +87 -0
- package/dist/cli/commands/project-memory-index-command.d.ts +3 -0
- package/dist/cli/commands/project-memory-index-command.js +31 -0
- package/dist/cli/commands/qa-archive-screenshots-command.d.ts +3 -0
- package/dist/cli/commands/qa-archive-screenshots-command.js +53 -0
- package/dist/cli/commands/qa-commands.d.ts +14 -87
- package/dist/cli/commands/qa-commands.js +17 -315
- package/dist/cli/commands/qa-context-prestep.d.ts +1 -0
- package/dist/cli/commands/qa-context-prestep.js +34 -0
- package/dist/cli/commands/qa-run-command.d.ts +3 -0
- package/dist/cli/commands/qa-run-command.js +105 -0
- package/dist/cli/commands/qa-run-options.d.ts +23 -0
- package/dist/cli/commands/qa-run-options.js +31 -0
- package/dist/cli/commands/qa-run-slice.d.ts +41 -0
- package/dist/cli/commands/qa-run-slice.js +145 -0
- package/dist/cli/commands/release-canary-command.d.ts +28 -0
- package/dist/cli/commands/release-canary-command.js +129 -0
- package/dist/cli/commands/release-command-shared.d.ts +13 -0
- package/dist/cli/commands/release-command-shared.js +18 -0
- package/dist/cli/commands/release-commands.d.ts +10 -18
- package/dist/cli/commands/release-commands.js +25 -298
- package/dist/cli/commands/release-done-command.d.ts +3 -0
- package/dist/cli/commands/release-done-command.js +64 -0
- package/dist/cli/commands/release-hotfix-command.d.ts +3 -0
- package/dist/cli/commands/release-hotfix-command.js +50 -0
- package/dist/cli/commands/release-plan-command.d.ts +3 -0
- package/dist/cli/commands/release-plan-command.js +33 -0
- package/dist/cli/commands/release-precheck-command.d.ts +3 -0
- package/dist/cli/commands/release-precheck-command.js +28 -0
- package/dist/cli/commands/release-promote-command.d.ts +3 -0
- package/dist/cli/commands/release-promote-command.js +34 -0
- package/dist/cli/commands/release-rollback-command.d.ts +3 -0
- package/dist/cli/commands/release-rollback-command.js +33 -0
- package/dist/cli/commands/release-watch-command.d.ts +3 -0
- package/dist/cli/commands/release-watch-command.js +44 -0
- package/dist/cli/commands/request-command-options.d.ts +49 -0
- package/dist/cli/commands/request-command-options.js +1 -0
- package/dist/cli/commands/request-commands.d.ts +3 -9
- package/dist/cli/commands/request-commands.js +17 -522
- package/dist/cli/commands/request-init-command.d.ts +3 -0
- package/dist/cli/commands/request-init-command.js +100 -0
- package/dist/cli/commands/request-lint-command.d.ts +3 -0
- package/dist/cli/commands/request-lint-command.js +50 -0
- package/dist/cli/commands/request-list-command.d.ts +10 -0
- package/dist/cli/commands/request-list-command.js +53 -0
- package/dist/cli/commands/request-repair-status-command.d.ts +3 -0
- package/dist/cli/commands/request-repair-status-command.js +61 -0
- package/dist/cli/commands/request-show-command.d.ts +3 -0
- package/dist/cli/commands/request-show-command.js +56 -0
- package/dist/cli/commands/request-transition-command.d.ts +3 -0
- package/dist/cli/commands/request-transition-command.js +122 -0
- package/dist/cli/commands/request-transition-failures.d.ts +8 -0
- package/dist/cli/commands/request-transition-failures.js +90 -0
- package/dist/cli/commands/request-transition-hooks.d.ts +50 -0
- package/dist/cli/commands/request-transition-hooks.js +115 -0
- package/dist/cli/commands/request-transition-preflight.d.ts +10 -0
- package/dist/cli/commands/request-transition-preflight.js +107 -0
- package/dist/cli/commands/scan-command-shared.d.ts +96 -0
- package/dist/cli/commands/scan-command-shared.js +83 -0
- package/dist/cli/commands/scan-commands.d.ts +3 -2
- package/dist/cli/commands/scan-commands.js +23 -463
- package/dist/cli/commands/scan-inventory-commands.d.ts +3 -0
- package/dist/cli/commands/scan-inventory-commands.js +96 -0
- package/dist/cli/commands/scan-project-commands.d.ts +3 -0
- package/dist/cli/commands/scan-project-commands.js +65 -0
- package/dist/cli/commands/scan-scope-commands.d.ts +3 -0
- package/dist/cli/commands/scan-scope-commands.js +149 -0
- package/dist/cli/commands/scan-scope-helpers.d.ts +8 -0
- package/dist/cli/commands/scan-scope-helpers.js +54 -0
- package/dist/cli/commands/scan-structural-commands.d.ts +3 -0
- package/dist/cli/commands/scan-structural-commands.js +113 -0
- package/dist/cli/commands/sediment-argv-flags.d.ts +54 -0
- package/dist/cli/commands/sediment-argv-flags.js +116 -0
- package/dist/cli/commands/sediment-command-shared.d.ts +15 -0
- package/dist/cli/commands/sediment-command-shared.js +5 -0
- package/dist/cli/commands/sediment-commands.d.ts +35 -59
- package/dist/cli/commands/sediment-commands.js +36 -590
- package/dist/cli/commands/sediment-pool-commands.d.ts +9 -0
- package/dist/cli/commands/sediment-pool-commands.js +185 -0
- package/dist/cli/commands/sediment-query-commands.d.ts +4 -0
- package/dist/cli/commands/sediment-query-commands.js +94 -0
- package/dist/cli/commands/sediment-release-commands.d.ts +8 -0
- package/dist/cli/commands/sediment-release-commands.js +232 -0
- package/dist/cli/commands/share-commands.d.ts +12 -68
- package/dist/cli/commands/share-commands.js +47 -556
- package/dist/cli/commands/share-error-hints.d.ts +14 -0
- package/dist/cli/commands/share-error-hints.js +38 -0
- package/dist/cli/commands/share-identity.d.ts +13 -0
- package/dist/cli/commands/share-identity.js +22 -0
- package/dist/cli/commands/share-record-paths.d.ts +37 -0
- package/dist/cli/commands/share-record-paths.js +68 -0
- package/dist/cli/commands/share-runners.d.ts +3 -0
- package/dist/cli/commands/share-runners.js +158 -0
- package/dist/cli/commands/shared-read-runners.d.ts +3 -0
- package/dist/cli/commands/shared-read-runners.js +51 -0
- package/dist/cli/commands/slice-check-command.d.ts +3 -0
- package/dist/cli/commands/slice-check-command.js +54 -0
- package/dist/cli/commands/slice-commands.d.ts +2 -22
- package/dist/cli/commands/slice-commands.js +18 -517
- package/dist/cli/commands/slice-decompose-artifacts.d.ts +18 -0
- package/dist/cli/commands/slice-decompose-artifacts.js +79 -0
- package/dist/cli/commands/slice-decompose-command.d.ts +3 -0
- package/dist/cli/commands/slice-decompose-command.js +123 -0
- package/dist/cli/commands/slice-list-commands.d.ts +3 -0
- package/dist/cli/commands/slice-list-commands.js +182 -0
- package/dist/cli/commands/slice-pick-command.d.ts +3 -0
- package/dist/cli/commands/slice-pick-command.js +60 -0
- package/dist/cli/commands/slice-plan-command.d.ts +24 -0
- package/dist/cli/commands/slice-plan-command.js +111 -0
- package/dist/cli/commands/sop-advance-command.d.ts +3 -0
- package/dist/cli/commands/sop-advance-command.js +160 -0
- package/dist/cli/commands/sop-check-command.d.ts +3 -0
- package/dist/cli/commands/sop-check-command.js +44 -0
- package/dist/cli/commands/sop-command-shared.d.ts +23 -0
- package/dist/cli/commands/sop-command-shared.js +18 -0
- package/dist/cli/commands/sop-commands.d.ts +15 -1
- package/dist/cli/commands/sop-commands.js +26 -240
- package/dist/cli/commands/sop-init-command.d.ts +3 -0
- package/dist/cli/commands/sop-init-command.js +51 -0
- package/dist/cli/commands/sop-lint-command.d.ts +3 -0
- package/dist/cli/commands/sop-lint-command.js +64 -0
- package/dist/cli/commands/sop-register-command.d.ts +3 -0
- package/dist/cli/commands/sop-register-command.js +48 -0
- package/dist/cli/commands/sop-registry-command.d.ts +3 -0
- package/dist/cli/commands/sop-registry-command.js +30 -0
- package/dist/cli/commands/statusline-command-shared.d.ts +73 -0
- package/dist/cli/commands/statusline-command-shared.js +90 -0
- package/dist/cli/commands/statusline-commands.d.ts +1 -19
- package/dist/cli/commands/statusline-commands.js +48 -287
- package/dist/cli/commands/statusline-compact-command.d.ts +4 -0
- package/dist/cli/commands/statusline-compact-command.js +54 -0
- package/dist/cli/commands/statusline-install-command.d.ts +3 -0
- package/dist/cli/commands/statusline-install-command.js +48 -0
- package/dist/cli/commands/statusline-render-command.d.ts +9 -0
- package/dist/cli/commands/statusline-render-command.js +55 -0
- package/dist/cli/commands/statusline-status-command.d.ts +3 -0
- package/dist/cli/commands/statusline-status-command.js +23 -0
- package/dist/cli/commands/statusline-uninstall-command.d.ts +3 -0
- package/dist/cli/commands/statusline-uninstall-command.js +23 -0
- package/dist/cli/commands/test-command-run-helpers.d.ts +27 -0
- package/dist/cli/commands/test-command-run-helpers.js +73 -0
- package/dist/cli/commands/test-command-runner-resolution.d.ts +57 -0
- package/dist/cli/commands/test-command-runner-resolution.js +183 -0
- package/dist/cli/commands/test-commands.d.ts +8 -56
- package/dist/cli/commands/test-commands.js +26 -249
- package/dist/cli/commands/vm-command-shared.d.ts +23 -0
- package/dist/cli/commands/vm-command-shared.js +23 -0
- package/dist/cli/commands/vm-commands.d.ts +1 -28
- package/dist/cli/commands/vm-commands.js +36 -270
- package/dist/cli/commands/vm-hypervisor-runtime.d.ts +15 -0
- package/dist/cli/commands/vm-hypervisor-runtime.js +64 -0
- package/dist/cli/commands/vm-release-command.d.ts +5 -0
- package/dist/cli/commands/vm-release-command.js +101 -0
- package/dist/cli/commands/vm-spawn-command.d.ts +5 -0
- package/dist/cli/commands/vm-spawn-command.js +177 -0
- package/dist/cli/commands/web-command-shared.d.ts +12 -0
- package/dist/cli/commands/web-command-shared.js +30 -0
- package/dist/cli/commands/web-commands.d.ts +7 -14
- package/dist/cli/commands/web-commands.js +6 -314
- package/dist/cli/commands/web-install-command.d.ts +10 -0
- package/dist/cli/commands/web-install-command.js +116 -0
- package/dist/cli/commands/web-lifecycle-commands.d.ts +9 -30
- package/dist/cli/commands/web-lifecycle-commands.js +14 -322
- package/dist/cli/commands/web-login-command.d.ts +14 -0
- package/dist/cli/commands/web-login-command.js +189 -0
- package/dist/cli/commands/web-op-payload.d.ts +22 -0
- package/dist/cli/commands/web-op-payload.js +89 -0
- package/dist/cli/commands/web-op-refusals.d.ts +37 -0
- package/dist/cli/commands/web-op-refusals.js +73 -0
- package/dist/cli/commands/web-op-runner.d.ts +14 -0
- package/dist/cli/commands/web-op-runner.js +166 -0
- package/dist/cli/commands/web-status-command.d.ts +4 -0
- package/dist/cli/commands/web-status-command.js +32 -0
- package/dist/cli/commands/web-stop-command.d.ts +10 -0
- package/dist/cli/commands/web-stop-command.js +59 -0
- package/dist/cli/commands/web-verb-specs.d.ts +18 -0
- package/dist/cli/commands/web-verb-specs.js +66 -0
- package/dist/cli/commands/workflow-command-shared.d.ts +102 -0
- package/dist/cli/commands/workflow-command-shared.js +74 -0
- package/dist/cli/commands/workflow-commands.d.ts +10 -1
- package/dist/cli/commands/workflow-commands.js +6 -594
- package/dist/cli/commands/workflow-gate-commands.d.ts +3 -0
- package/dist/cli/commands/workflow-gate-commands.js +116 -0
- package/dist/cli/commands/workflow-graph-commands.d.ts +3 -0
- package/dist/cli/commands/workflow-graph-commands.js +73 -0
- package/dist/cli/commands/workflow-init-command.d.ts +3 -0
- package/dist/cli/commands/workflow-init-command.js +68 -0
- package/dist/cli/commands/workflow-lifecycle-commands.d.ts +9 -59
- package/dist/cli/commands/workflow-lifecycle-commands.js +14 -348
- package/dist/cli/commands/workflow-node-commands.d.ts +3 -0
- package/dist/cli/commands/workflow-node-commands.js +154 -0
- package/dist/cli/commands/workflow-plan-helpers.d.ts +48 -0
- package/dist/cli/commands/workflow-plan-helpers.js +103 -0
- package/dist/cli/commands/workflow-planning-commands.d.ts +3 -0
- package/dist/cli/commands/workflow-planning-commands.js +56 -0
- package/dist/cli/commands/workflow-swarm-actions.d.ts +7 -0
- package/dist/cli/commands/workflow-swarm-actions.js +109 -0
- package/dist/cli/commands/workflow-swarm-commands.d.ts +3 -0
- package/dist/cli/commands/workflow-swarm-commands.js +138 -0
- package/dist/cli/commands/workflow-tech-actions.d.ts +10 -0
- package/dist/cli/commands/workflow-tech-actions.js +150 -0
- package/dist/cli/commands/workflow-terminalize-command.d.ts +3 -0
- package/dist/cli/commands/workflow-terminalize-command.js +56 -0
- package/dist/cli/commands/workspace/init-actions.d.ts +10 -0
- package/dist/cli/commands/workspace/init-actions.js +199 -0
- package/dist/cli/commands/workspace/init-codegraph-stake.d.ts +10 -0
- package/dist/cli/commands/workspace/init-codegraph-stake.js +54 -0
- package/dist/cli/commands/workspace/init-command.d.ts +8 -124
- package/dist/cli/commands/workspace/init-command.js +59 -623
- package/dist/cli/commands/workspace/init-context.d.ts +58 -0
- package/dist/cli/commands/workspace/init-context.js +121 -0
- package/dist/cli/commands/workspace/init-envelope.d.ts +3 -0
- package/dist/cli/commands/workspace/init-envelope.js +34 -0
- package/dist/cli/commands/workspace/init-failures.d.ts +3 -0
- package/dist/cli/commands/workspace/init-failures.js +84 -0
- package/dist/cli/commands/workspace/init-hooks-decision.d.ts +24 -0
- package/dist/cli/commands/workspace/init-hooks-decision.js +189 -0
- package/dist/cli/commands/workspace/init-options.d.ts +102 -0
- package/dist/cli/commands/workspace/init-options.js +1 -0
- package/dist/cli/commands/worktree-lease-commands.d.ts +10 -6
- package/dist/cli/commands/worktree-lease-commands.js +42 -512
- package/dist/cli/commands/worktree-lease-gc-command.d.ts +12 -0
- package/dist/cli/commands/worktree-lease-gc-command.js +117 -0
- package/dist/cli/commands/worktree-lease-git.d.ts +22 -0
- package/dist/cli/commands/worktree-lease-git.js +48 -0
- package/dist/cli/commands/worktree-lease-list-command.d.ts +12 -0
- package/dist/cli/commands/worktree-lease-list-command.js +100 -0
- package/dist/cli/commands/worktree-lease-load.d.ts +37 -0
- package/dist/cli/commands/worktree-lease-load.js +28 -0
- package/dist/cli/commands/worktree-lease-release-command.d.ts +13 -0
- package/dist/cli/commands/worktree-lease-release-command.js +105 -0
- package/dist/cli/commands/worktree-lease-renew-command.d.ts +11 -0
- package/dist/cli/commands/worktree-lease-renew-command.js +99 -0
- package/dist/cli/commands/worktree-lease-session.d.ts +22 -0
- package/dist/cli/commands/worktree-lease-session.js +29 -0
- package/dist/cli/commands/worktree-lease-spawn-command.d.ts +11 -0
- package/dist/cli/commands/worktree-lease-spawn-command.js +119 -0
- package/dist/cli/commands/worktree-lease-status-command.d.ts +11 -0
- package/dist/cli/commands/worktree-lease-status-command.js +86 -0
- package/dist/cli/commands/worktree-lease-store.d.ts +19 -0
- package/dist/cli/commands/worktree-lease-store.js +24 -0
- package/dist/cli/program.js +5 -0
- package/dist/services/code/auto-compact-artifacts.d.ts +54 -0
- package/dist/services/code/auto-compact-artifacts.js +135 -0
- package/dist/services/code/auto-compact-attempt.d.ts +46 -0
- package/dist/services/code/auto-compact-attempt.js +88 -0
- package/dist/services/code/auto-compact-decision.d.ts +74 -0
- package/dist/services/code/auto-compact-decision.js +149 -0
- package/dist/services/code/auto-compact-dispatch-gate.d.ts +36 -0
- package/dist/services/code/auto-compact-dispatch-gate.js +86 -0
- package/dist/services/code/auto-compact-envelopes.d.ts +33 -0
- package/dist/services/code/auto-compact-envelopes.js +134 -0
- package/dist/services/code/auto-compact-history.d.ts +46 -0
- package/dist/services/code/auto-compact-history.js +17 -0
- package/dist/services/code/auto-compact-orchestrator.d.ts +11 -240
- package/dist/services/code/auto-compact-orchestrator.js +165 -686
- package/dist/services/code/auto-compact-run-types.d.ts +123 -0
- package/dist/services/code/auto-compact-run-types.js +1 -0
- package/dist/services/code/emit-handoff.d.ts +35 -1
- package/dist/services/code/emit-handoff.js +128 -7
- package/dist/services/code/step-08-gate.d.ts +28 -19
- package/dist/services/code/step-08-gate.js +92 -35
- package/dist/services/config/config-coercion.d.ts +7 -0
- package/dist/services/config/config-coercion.js +156 -0
- package/dist/services/config/config-file-io.d.ts +11 -0
- package/dist/services/config/config-file-io.js +61 -0
- package/dist/services/config/config-get.d.ts +2 -0
- package/dist/services/config/config-get.js +36 -0
- package/dist/services/config/config-global-loader.d.ts +15 -0
- package/dist/services/config/config-global-loader.js +111 -0
- package/dist/services/config/config-nested-path.d.ts +3 -0
- package/dist/services/config/config-nested-path.js +53 -0
- package/dist/services/config/config-primitives.d.ts +16 -0
- package/dist/services/config/config-primitives.js +24 -0
- package/dist/services/config/config-service.d.ts +9 -33
- package/dist/services/config/config-service.js +16 -665
- package/dist/services/config/config-validation.d.ts +19 -0
- package/dist/services/config/config-validation.js +152 -0
- package/dist/services/config/config-workspace.d.ts +10 -0
- package/dist/services/config/config-workspace.js +158 -0
- package/dist/services/distribution/mcp-install-runner.d.ts +21 -0
- package/dist/services/distribution/mcp-install-runner.js +59 -0
- package/dist/services/distribution/mcp-install.d.ts +95 -0
- package/dist/services/distribution/mcp-install.js +179 -0
- package/dist/services/distribution/plugin-manifest.d.ts +97 -0
- package/dist/services/distribution/plugin-manifest.js +126 -0
- package/dist/services/hooks/mcp-surface-gate.d.ts +19 -0
- package/dist/services/hooks/mcp-surface-gate.js +87 -0
- package/dist/services/ide/adapters/claude-code-adapter.d.ts +4 -35
- package/dist/services/ide/adapters/claude-code-adapter.js +48 -171
- package/dist/services/ide/adapters/claude-code-local-state.d.ts +28 -0
- package/dist/services/ide/adapters/claude-code-local-state.js +112 -0
- package/dist/services/ide/adapters/claude-code-model-window.d.ts +37 -0
- package/dist/services/ide/adapters/claude-code-model-window.js +113 -0
- package/dist/services/ide/ide-mcp-install-types.d.ts +78 -0
- package/dist/services/ide/ide-mcp-install-types.js +104 -0
- package/dist/services/ide/ide-types.d.ts +45 -1
- package/dist/services/ide/mcp-tool-matcher.d.ts +34 -0
- package/dist/services/ide/mcp-tool-matcher.js +84 -0
- package/dist/services/lint/npx-resolver.js +7 -0
- package/dist/services/mcp/cli-executor.d.ts +36 -0
- package/dist/services/mcp/cli-executor.js +97 -0
- package/dist/services/mcp/json-rpc.d.ts +81 -0
- package/dist/services/mcp/json-rpc.js +116 -0
- package/dist/services/mcp/memory-tool.d.ts +3 -0
- package/dist/services/mcp/memory-tool.js +62 -0
- package/dist/services/mcp/server-main.d.ts +1 -0
- package/dist/services/mcp/server-main.js +66 -0
- package/dist/services/mcp/server.d.ts +22 -0
- package/dist/services/mcp/server.js +152 -0
- package/dist/services/mcp/surface.d.ts +62 -0
- package/dist/services/mcp/surface.js +198 -0
- package/dist/services/mcp/tool-core.d.ts +42 -0
- package/dist/services/mcp/tool-core.js +137 -0
- package/dist/services/mcp/tools.d.ts +13 -0
- package/dist/services/mcp/tools.js +58 -0
- package/dist/services/readonly-surface/argv-guard.d.ts +32 -0
- package/dist/services/readonly-surface/argv-guard.js +164 -0
- package/dist/services/readonly-surface/readonly-whitelist.d.ts +147 -0
- package/dist/services/readonly-surface/readonly-whitelist.js +107 -0
- package/dist/services/readonly-surface/whitelist-generator.d.ts +64 -0
- package/dist/services/readonly-surface/whitelist-generator.js +212 -0
- package/dist/services/skills/hooks-codegate-superpowers.d.ts +1 -0
- package/dist/services/skills/hooks-codegate-superpowers.js +26 -0
- package/dist/services/skills/hooks-settings-deny-list.d.ts +61 -0
- package/dist/services/skills/hooks-settings-deny-list.js +173 -0
- package/dist/services/skills/hooks-settings-envelopes.d.ts +20 -0
- package/dist/services/skills/hooks-settings-envelopes.js +79 -0
- package/dist/services/skills/hooks-settings-file-shape.d.ts +43 -0
- package/dist/services/skills/hooks-settings-file-shape.js +207 -0
- package/dist/services/skills/hooks-settings-paths.d.ts +34 -0
- package/dist/services/skills/hooks-settings-paths.js +75 -0
- package/dist/services/skills/hooks-settings-read-installed.d.ts +39 -0
- package/dist/services/skills/hooks-settings-read-installed.js +60 -0
- package/dist/services/skills/hooks-settings-service.d.ts +12 -212
- package/dist/services/skills/hooks-settings-service.js +71 -649
- package/dist/services/skills/hooks-settings-types.d.ts +139 -0
- package/dist/services/skills/hooks-settings-types.js +1 -0
- package/dist/services/workspace/claude-settings-template-merge.d.ts +89 -0
- package/dist/services/workspace/claude-settings-template-merge.js +243 -0
- package/dist/services/workspace/claude-settings-template.d.ts +29 -87
- package/dist/services/workspace/claude-settings-template.js +81 -236
- package/package.json +17 -6
- package/scripts/install-skills-bundles.mjs +233 -0
- package/scripts/install-skills-fs.mjs +148 -0
- package/scripts/install-skills-ide.mjs +279 -0
- package/scripts/install-skills-output-style-default.mjs +196 -0
- package/scripts/install-skills-output-styles.mjs +121 -0
- package/scripts/install-skills-report.mjs +42 -0
- package/scripts/install-skills-user-config.mjs +198 -0
- package/scripts/install-skills.mjs +36 -1066
- package/scripts/watch-tree.mjs +140 -0
- package/scripts/watch.mjs +4 -126
- package/skills/peaks-status/SKILL.md +31 -13
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `peaks audit goal` runner — the peaks-audit entry gate.
|
|
3
|
+
*
|
|
4
|
+
* The action body moved out of `audit-commands.ts` verbatim; the registrar now
|
|
5
|
+
* only wires the command and delegates. This is the one action whose delegate
|
|
6
|
+
* returns a promise, so the runner stays `async` (it awaits `auditGoal()`).
|
|
7
|
+
*
|
|
8
|
+
* `anthropic` is the default and reads the session's own environment
|
|
9
|
+
* (see `resolveAnthropicConfig`). `stub` stays for CI/tests but is
|
|
10
|
+
* reported as a scaffold, and a missing credential fails loudly — a silent
|
|
11
|
+
* fall back to the scaffold envelope would leave the gate exactly as fake
|
|
12
|
+
* as it was before this slice.
|
|
13
|
+
*/
|
|
14
|
+
import { fail, ok } from 'peaks-loop-shared/result';
|
|
15
|
+
import { auditGoal, IncompleteAuditError } from '../../services/audit/audit-goal-service.js';
|
|
16
|
+
import { createAnthropicRunner, LlmBindingError, LlmRequestError, resolveAnthropicConfig } from '../../services/llm/anthropic-runner.js';
|
|
17
|
+
import { createStubRunner } from '../../services/llm/stub-runner.js';
|
|
18
|
+
import { getErrorMessage, printResult } from '../cli-helpers.js';
|
|
19
|
+
import { DEFAULT_LLM_PROVIDER, isSupportedLlmProvider, PROJECT_PATH_HINT, SUPPORTED_LLM_PROVIDERS, validateProjectRoot } from './audit-command-shared.js';
|
|
20
|
+
import { auditGoalFailureData } from './audit-refusal-data.js';
|
|
21
|
+
export const AUDIT_GOAL_DESCRIPTION = 'Audit a human need across 6 dimensions and propose a goal (peaks-audit primitive)';
|
|
22
|
+
/** The slice-owned error codes are carried verbatim so callers can gate on them. */
|
|
23
|
+
function auditGoalErrorCode(error) {
|
|
24
|
+
if (error instanceof IncompleteAuditError ||
|
|
25
|
+
error instanceof LlmBindingError ||
|
|
26
|
+
error instanceof LlmRequestError) {
|
|
27
|
+
return error.code;
|
|
28
|
+
}
|
|
29
|
+
return 'AUDIT_GOAL_FAILED';
|
|
30
|
+
}
|
|
31
|
+
function auditGoalNextActions(code) {
|
|
32
|
+
switch (code) {
|
|
33
|
+
case 'LLM_CREDENTIAL_MISSING':
|
|
34
|
+
return [
|
|
35
|
+
'Export ANTHROPIC_AUTH_TOKEN (or ANTHROPIC_API_KEY) in the environment that launches peaks, then re-run.',
|
|
36
|
+
'For an offline scaffold instead of an audit, re-run with `--llm-provider stub` — it performs NO audit.'
|
|
37
|
+
];
|
|
38
|
+
case 'LLM_MODEL_MISSING':
|
|
39
|
+
return [
|
|
40
|
+
'Export ANTHROPIC_MODEL (or CLAUDE_CODE_SUBAGENT_MODEL) in the environment that launches peaks, then re-run.'
|
|
41
|
+
];
|
|
42
|
+
case 'INCOMPLETE_AUDIT':
|
|
43
|
+
return [
|
|
44
|
+
'The LLM reply omitted a required dimension; re-run so autonomous work never proceeds on a partial audit.'
|
|
45
|
+
];
|
|
46
|
+
default:
|
|
47
|
+
return ['Inspect the failure above, then re-run with the same --need.'];
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function unsupportedProviderEnvelope(options, projectRoot, provider) {
|
|
51
|
+
return fail('audit.goal', 'LLM_PROVIDER_NOT_IMPLEMENTED', `LLM provider "${provider}" is not implemented. Supported providers: ${SUPPORTED_LLM_PROVIDERS.join(', ')}.`, auditGoalFailureData(options.need, projectRoot), [
|
|
52
|
+
`Re-run with \`--llm-provider ${DEFAULT_LLM_PROVIDER}\` for a real audit, or \`--llm-provider stub\` for an offline scaffold.`
|
|
53
|
+
]);
|
|
54
|
+
}
|
|
55
|
+
/** Bind the provider, run the audit, and print the success envelope. */
|
|
56
|
+
async function runBoundAudit(options, projectRoot, isStub, io) {
|
|
57
|
+
const providerBinding = isStub
|
|
58
|
+
? 'stub'
|
|
59
|
+
: 'anthropic-messages-api';
|
|
60
|
+
let model;
|
|
61
|
+
let llmRunner;
|
|
62
|
+
if (isStub) {
|
|
63
|
+
llmRunner = createStubRunner();
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
const config = resolveAnthropicConfig();
|
|
67
|
+
model = config.model;
|
|
68
|
+
llmRunner = createAnthropicRunner(config);
|
|
69
|
+
}
|
|
70
|
+
const result = await auditGoal({ need: options.need }, llmRunner);
|
|
71
|
+
const data = {
|
|
72
|
+
status: isStub ? 'scaffold-only' : 'audit-complete',
|
|
73
|
+
providerBinding,
|
|
74
|
+
need: options.need,
|
|
75
|
+
projectRoot,
|
|
76
|
+
result,
|
|
77
|
+
...(model === undefined ? {} : { model })
|
|
78
|
+
};
|
|
79
|
+
const envelope = ok('audit.goal', data, [], isStub
|
|
80
|
+
? [
|
|
81
|
+
`Stub provider: the 6 dimensions below are placeholders, not findings. Re-run with \`--llm-provider ${DEFAULT_LLM_PROVIDER}\` for a real audit.`
|
|
82
|
+
]
|
|
83
|
+
: [`Audit produced by ${providerBinding}${model === undefined ? '' : ` (model: ${model})`}.`]);
|
|
84
|
+
printResult(io, envelope, options.json);
|
|
85
|
+
}
|
|
86
|
+
function goalErrorEnvelope(options, projectRoot, isStub, error) {
|
|
87
|
+
const code = auditGoalErrorCode(error);
|
|
88
|
+
const providerBinding = isStub
|
|
89
|
+
? 'stub'
|
|
90
|
+
: 'anthropic-messages-api';
|
|
91
|
+
return fail('audit.goal', code, getErrorMessage(error), auditGoalFailureData(options.need, projectRoot, providerBinding, error instanceof LlmBindingError ? error.missingEnv : undefined), auditGoalNextActions(code));
|
|
92
|
+
}
|
|
93
|
+
export async function runAuditGoal(options, io) {
|
|
94
|
+
const validation = validateProjectRoot(options.project);
|
|
95
|
+
if (!validation.ok) {
|
|
96
|
+
printResult(io, fail('audit.goal', validation.code, validation.message, auditGoalFailureData(options.need, options.project), [PROJECT_PATH_HINT]), options.json);
|
|
97
|
+
process.exitCode = 1;
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
const provider = options.llmProvider ?? DEFAULT_LLM_PROVIDER;
|
|
101
|
+
if (!isSupportedLlmProvider(provider)) {
|
|
102
|
+
printResult(io, unsupportedProviderEnvelope(options, validation.projectRoot, provider), options.json);
|
|
103
|
+
process.exitCode = 1;
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
const isStub = provider === 'stub';
|
|
107
|
+
try {
|
|
108
|
+
await runBoundAudit(options, validation.projectRoot, isStub, io);
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
printResult(io, goalErrorEnvelope(options, validation.projectRoot, isStub, error), options.json);
|
|
112
|
+
process.exitCode = 1;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `peaks audit red-lines` runner — Slice L2.1.
|
|
3
|
+
*
|
|
4
|
+
* The action body moved out of `audit-commands.ts` verbatim; the registrar now
|
|
5
|
+
* only wires the command and delegates. Every envelope, error code and hint
|
|
6
|
+
* string is unchanged.
|
|
7
|
+
*/
|
|
8
|
+
import { type ProgramIO } from '../cli-helpers.js';
|
|
9
|
+
import { type RedLinesOptions } from './audit-command-shared.js';
|
|
10
|
+
export declare const RED_LINES_DESCRIPTION = "Scan skills/, .claude/rules/, and openspec/changes/ for MANDATORY / BLOCKING / MUST NOT / RED LINE markers; classify each as cli-backed / partial / prose-only";
|
|
11
|
+
export declare function runRedLines(options: RedLinesOptions, io: ProgramIO): void;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `peaks audit red-lines` runner — Slice L2.1.
|
|
3
|
+
*
|
|
4
|
+
* The action body moved out of `audit-commands.ts` verbatim; the registrar now
|
|
5
|
+
* only wires the command and delegates. Every envelope, error code and hint
|
|
6
|
+
* string is unchanged.
|
|
7
|
+
*/
|
|
8
|
+
import { fail, ok } from 'peaks-loop-shared/result';
|
|
9
|
+
import { runRedLinesAudit } from '../../services/audit/red-lines-service.js';
|
|
10
|
+
import { getErrorMessage, printResult } from '../cli-helpers.js';
|
|
11
|
+
import { PROJECT_PATH_HINT, SCANNER_HINT, validateProjectRoot } from './audit-command-shared.js';
|
|
12
|
+
import { emptyRedLineAudit } from './audit-refusal-data.js';
|
|
13
|
+
export const RED_LINES_DESCRIPTION = 'Scan skills/, .claude/rules/, and openspec/changes/ for MANDATORY / BLOCKING / MUST NOT / RED LINE markers; classify each as cli-backed / partial / prose-only';
|
|
14
|
+
function redLinesNextActions(audit) {
|
|
15
|
+
const nextActions = [];
|
|
16
|
+
if (audit.proseOnly > 0) {
|
|
17
|
+
nextActions.push(`${audit.proseOnly} prose-only red lines remain. Plan P1/P2 enforcers in L2.2-L2.4.`);
|
|
18
|
+
}
|
|
19
|
+
if (audit.cliBacked > 0) {
|
|
20
|
+
nextActions.push(`${audit.cliBacked} red lines are now cli-backed. Re-run after each enforcer lands to track the prose-only ratio.`);
|
|
21
|
+
}
|
|
22
|
+
return nextActions;
|
|
23
|
+
}
|
|
24
|
+
function redLinesFailureEnvelope(code, message, nextAction) {
|
|
25
|
+
return fail('audit.red-lines', code, message, emptyRedLineAudit(), [nextAction]);
|
|
26
|
+
}
|
|
27
|
+
export function runRedLines(options, io) {
|
|
28
|
+
const validation = validateProjectRoot(options.project);
|
|
29
|
+
if (!validation.ok) {
|
|
30
|
+
printResult(io, redLinesFailureEnvelope(validation.code, validation.message, PROJECT_PATH_HINT), options.json);
|
|
31
|
+
process.exitCode = 1;
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
try {
|
|
35
|
+
const result = runRedLinesAudit({ projectRoot: validation.projectRoot });
|
|
36
|
+
const envelope = ok('audit.red-lines', result.audit, result.warnings.map((w) => `${w.file}: ${w.message}`), redLinesNextActions(result.audit));
|
|
37
|
+
printResult(io, envelope, options.json);
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
printResult(io, redLinesFailureEnvelope('SCANNER_FAILED', getErrorMessage(error), SCANNER_HINT), options.json);
|
|
41
|
+
process.exitCode = 1;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The empty/failure `data` payloads the `peaks audit *` runners attach to a
|
|
3
|
+
* refusal envelope.
|
|
4
|
+
*
|
|
5
|
+
* Kept in one module so each runner reads as control flow: every literal here
|
|
6
|
+
* is byte-identical to the inline object it replaced, and every builder is a
|
|
7
|
+
* pure function of its arguments (no module-level mutable state).
|
|
8
|
+
*/
|
|
9
|
+
import type { ArtifactKind, ArtifactWriteRecord } from '../../services/audit/artifact-writer.js';
|
|
10
|
+
import type { ProseRatioResult } from '../../services/audit/prose-ratio-calculator.js';
|
|
11
|
+
import type { RedLineAudit } from '../../services/audit/types.js';
|
|
12
|
+
import type { AuditGoalData, StaticAuditData } from './audit-command-shared.js';
|
|
13
|
+
/** A zeroed scan result, as `peaks audit red-lines` prints it on a refusal. */
|
|
14
|
+
export declare function emptyRedLineAudit(): RedLineAudit;
|
|
15
|
+
export declare function emptyStaticAuditData(): StaticAuditData;
|
|
16
|
+
export declare function emptyProseRatioResult(): ProseRatioResult;
|
|
17
|
+
/**
|
|
18
|
+
* A write record with no file behind it. `kind` is carried through because the
|
|
19
|
+
* `INVALID_KIND` and `INPUT_NOT_FOUND` refusals name a caller-supplied kind;
|
|
20
|
+
* the `--project` refusal holds the neutral `narrative`.
|
|
21
|
+
*/
|
|
22
|
+
export declare function emptyArtifactWriteRecord(kind: ArtifactKind): ArtifactWriteRecord;
|
|
23
|
+
export declare function auditGoalFailureData(need: string, projectRoot: string, providerBinding?: AuditGoalData['providerBinding'], missingEnv?: readonly string[]): AuditGoalData;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The empty/failure `data` payloads the `peaks audit *` runners attach to a
|
|
3
|
+
* refusal envelope.
|
|
4
|
+
*
|
|
5
|
+
* Kept in one module so each runner reads as control flow: every literal here
|
|
6
|
+
* is byte-identical to the inline object it replaced, and every builder is a
|
|
7
|
+
* pure function of its arguments (no module-level mutable state).
|
|
8
|
+
*/
|
|
9
|
+
/** A zeroed scan result, as `peaks audit red-lines` prints it on a refusal. */
|
|
10
|
+
export function emptyRedLineAudit() {
|
|
11
|
+
return {
|
|
12
|
+
totalRedLines: 0,
|
|
13
|
+
cliBacked: 0,
|
|
14
|
+
partial: 0,
|
|
15
|
+
proseOnly: 0,
|
|
16
|
+
audit: [],
|
|
17
|
+
enforcerFindings: []
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export function emptyStaticAuditData() {
|
|
21
|
+
return {
|
|
22
|
+
audit: emptyRedLineAudit(),
|
|
23
|
+
agentShield: {
|
|
24
|
+
spawned: false,
|
|
25
|
+
installed: false,
|
|
26
|
+
reason: 'flag-disabled',
|
|
27
|
+
findings: []
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export function emptyProseRatioResult() {
|
|
32
|
+
return {
|
|
33
|
+
totalRedLines: 0,
|
|
34
|
+
cliBacked: 0,
|
|
35
|
+
partial: 0,
|
|
36
|
+
proseOnly: 0,
|
|
37
|
+
discoveredProseOnly: 0,
|
|
38
|
+
informational: 0,
|
|
39
|
+
ratio: 0,
|
|
40
|
+
target: 0.05,
|
|
41
|
+
exceeds: false
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* A write record with no file behind it. `kind` is carried through because the
|
|
46
|
+
* `INVALID_KIND` and `INPUT_NOT_FOUND` refusals name a caller-supplied kind;
|
|
47
|
+
* the `--project` refusal holds the neutral `narrative`.
|
|
48
|
+
*/
|
|
49
|
+
export function emptyArtifactWriteRecord(kind) {
|
|
50
|
+
return {
|
|
51
|
+
kind,
|
|
52
|
+
slug: '',
|
|
53
|
+
title: '',
|
|
54
|
+
date: '',
|
|
55
|
+
filePath: '',
|
|
56
|
+
memoryDir: '',
|
|
57
|
+
indexPath: '',
|
|
58
|
+
indexSynced: false
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
export function auditGoalFailureData(need, projectRoot, providerBinding = 'unresolved', missingEnv) {
|
|
62
|
+
return {
|
|
63
|
+
status: 'audit-failed',
|
|
64
|
+
providerBinding,
|
|
65
|
+
need,
|
|
66
|
+
projectRoot,
|
|
67
|
+
...(missingEnv === undefined ? {} : { missingEnv })
|
|
68
|
+
};
|
|
69
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `peaks audit static` and `peaks audit prose-ratio` runners.
|
|
3
|
+
*
|
|
4
|
+
* The two action bodies moved out of `audit-commands.ts` verbatim; the
|
|
5
|
+
* registrar now only wires the commands and delegates. Every envelope, error
|
|
6
|
+
* code and hint string is unchanged.
|
|
7
|
+
*/
|
|
8
|
+
import { type ProgramIO } from '../cli-helpers.js';
|
|
9
|
+
import { type ProseRatioOptions, type StaticAuditOptions } from './audit-command-shared.js';
|
|
10
|
+
export declare const STATIC_AUDIT_DESCRIPTION = "Run the static audit (peaks-loop lint only; the ECC AgentShield subprocess was removed in 4.0.0-beta.11). Per spec \u00A75.3.";
|
|
11
|
+
export declare const PROSE_RATIO_DESCRIPTION = "Compute the prose-only ratio (informational entries excluded). Exits 1 if ratio > target (default 5%).";
|
|
12
|
+
export declare function runStaticAuditCommand(options: StaticAuditOptions, io: ProgramIO): void;
|
|
13
|
+
export declare function runProseRatio(options: ProseRatioOptions, io: ProgramIO): void;
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `peaks audit static` and `peaks audit prose-ratio` runners.
|
|
3
|
+
*
|
|
4
|
+
* The two action bodies moved out of `audit-commands.ts` verbatim; the
|
|
5
|
+
* registrar now only wires the commands and delegates. Every envelope, error
|
|
6
|
+
* code and hint string is unchanged.
|
|
7
|
+
*/
|
|
8
|
+
import { fail, ok } from 'peaks-loop-shared/result';
|
|
9
|
+
import { runStaticAudit } from '../../services/audit/static-service.js';
|
|
10
|
+
import { writeAuditDecision } from '../../services/audit/decision-writer.js';
|
|
11
|
+
import { computeProseRatio } from '../../services/audit/prose-ratio-calculator.js';
|
|
12
|
+
import { getErrorMessage, printResult } from '../cli-helpers.js';
|
|
13
|
+
import { PROJECT_PATH_HINT, SCANNER_HINT, validateProjectRoot } from './audit-command-shared.js';
|
|
14
|
+
import { emptyProseRatioResult, emptyStaticAuditData } from './audit-refusal-data.js';
|
|
15
|
+
export const STATIC_AUDIT_DESCRIPTION = 'Run the static audit (peaks-loop lint only; the ECC AgentShield subprocess was removed in 4.0.0-beta.11). Per spec §5.3.';
|
|
16
|
+
export const PROSE_RATIO_DESCRIPTION = 'Compute the prose-only ratio (informational entries excluded). Exits 1 if ratio > target (default 5%).';
|
|
17
|
+
const RID_REQUIRES_RECORD_MESSAGE = '`--rid` requires `--record` (decision slug disambiguator has no effect without persistence)';
|
|
18
|
+
const RID_REQUIRES_RECORD_HINT = 'Pass `--record` together with `--rid <id>`, or omit `--rid`';
|
|
19
|
+
/**
|
|
20
|
+
* Persist the decision record when `--record` is set. The writer is idempotent
|
|
21
|
+
* at the slug level (same date+rid → same file); repeated runs overwrite.
|
|
22
|
+
* Failures here are surfaced as warnings so the primary audit JSON still
|
|
23
|
+
* reaches the caller.
|
|
24
|
+
*/
|
|
25
|
+
function persistDecisionRecord(audit, projectRoot, rid) {
|
|
26
|
+
try {
|
|
27
|
+
return {
|
|
28
|
+
decision: writeAuditDecision(audit, {
|
|
29
|
+
projectRoot,
|
|
30
|
+
...(rid ? { rid } : {})
|
|
31
|
+
})
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
catch (writeError) {
|
|
35
|
+
return { warning: `Failed to write decision record: ${getErrorMessage(writeError)}` };
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function staticNextActions(decision) {
|
|
39
|
+
const nextActions = [];
|
|
40
|
+
// nextActions block was removed. `agentShield.installed` is a frozen
|
|
41
|
+
// `false`, so the block printed on every run and pointed users at a
|
|
42
|
+
// removed subprocess, removed flags, and a dead preference.
|
|
43
|
+
if (decision) {
|
|
44
|
+
nextActions.push(`Decision record written: ${decision.filePath}`);
|
|
45
|
+
nextActions.push(`Index synced: ${decision.indexSynced ? 'yes' : 'no'} (memory hot.decision[] now includes this audit)`);
|
|
46
|
+
}
|
|
47
|
+
return nextActions;
|
|
48
|
+
}
|
|
49
|
+
function staticFailureEnvelope(code, message, nextAction) {
|
|
50
|
+
return fail('audit.static', code, message, emptyStaticAuditData(), [nextAction]);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* The `--project` / `--rid` preflight. Returns the validated project root, or
|
|
54
|
+
* prints the refusal (and sets the exit code) and returns `undefined`.
|
|
55
|
+
*
|
|
56
|
+
* Slice K1: `--rid` is meaningful only with `--record`. Surface a 422
|
|
57
|
+
* when the user passes `--rid` without `--record` so the CLI fails
|
|
58
|
+
* loudly rather than silently ignoring the request id.
|
|
59
|
+
*/
|
|
60
|
+
function resolveStaticProjectRoot(options, io) {
|
|
61
|
+
const validation = validateProjectRoot(options.project);
|
|
62
|
+
if (!validation.ok) {
|
|
63
|
+
printResult(io, staticFailureEnvelope(validation.code, validation.message, PROJECT_PATH_HINT), options.json);
|
|
64
|
+
process.exitCode = 1;
|
|
65
|
+
return undefined;
|
|
66
|
+
}
|
|
67
|
+
if (options.rid && !options.record) {
|
|
68
|
+
printResult(io, staticFailureEnvelope('FLAGS_CONFLICT', RID_REQUIRES_RECORD_MESSAGE, RID_REQUIRES_RECORD_HINT), options.json);
|
|
69
|
+
process.exitCode = 1;
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
return validation.projectRoot;
|
|
73
|
+
}
|
|
74
|
+
export function runStaticAuditCommand(options, io) {
|
|
75
|
+
const projectRoot = resolveStaticProjectRoot(options, io);
|
|
76
|
+
if (projectRoot === undefined) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
try {
|
|
80
|
+
const result = runStaticAudit({ projectRoot });
|
|
81
|
+
const persisted = options.record
|
|
82
|
+
? persistDecisionRecord(result.audit, projectRoot, options.rid)
|
|
83
|
+
: {};
|
|
84
|
+
const data = {
|
|
85
|
+
audit: result.audit,
|
|
86
|
+
agentShield: result.agentShield,
|
|
87
|
+
...(persisted.decision ? { decision: persisted.decision } : {})
|
|
88
|
+
};
|
|
89
|
+
const warnings = [...result.warnings];
|
|
90
|
+
if (persisted.warning) {
|
|
91
|
+
warnings.push(persisted.warning);
|
|
92
|
+
}
|
|
93
|
+
const envelope = ok('audit.static', data, warnings, staticNextActions(persisted.decision));
|
|
94
|
+
printResult(io, envelope, options.json);
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
printResult(io, staticFailureEnvelope('SCANNER_FAILED', getErrorMessage(error), SCANNER_HINT), options.json);
|
|
98
|
+
process.exitCode = 1;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
function proseRatioNextActions(ratio) {
|
|
102
|
+
return [
|
|
103
|
+
ratio.exceeds
|
|
104
|
+
? `Prose-only ratio ${(ratio.ratio * 100).toFixed(2)}% exceeds target ${(ratio.target * 100).toFixed(2)}% (${ratio.proseOnly}/${ratio.totalRedLines})`
|
|
105
|
+
: `Prose-only ratio ${(ratio.ratio * 100).toFixed(2)}% within target ${(ratio.target * 100).toFixed(2)}% (${ratio.proseOnly}/${ratio.totalRedLines})`
|
|
106
|
+
];
|
|
107
|
+
}
|
|
108
|
+
function proseRatioFailureEnvelope(code, message, nextAction) {
|
|
109
|
+
return fail('audit.prose-ratio', code, message, emptyProseRatioResult(), [
|
|
110
|
+
nextAction
|
|
111
|
+
]);
|
|
112
|
+
}
|
|
113
|
+
export function runProseRatio(options, io) {
|
|
114
|
+
const validation = validateProjectRoot(options.project);
|
|
115
|
+
if (!validation.ok) {
|
|
116
|
+
printResult(io, proseRatioFailureEnvelope(validation.code, validation.message, PROJECT_PATH_HINT), options.json);
|
|
117
|
+
process.exitCode = 1;
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
const target = Number.parseFloat(options.target);
|
|
121
|
+
if (!Number.isFinite(target) || target < 0 || target > 1) {
|
|
122
|
+
printResult(io, proseRatioFailureEnvelope('INVALID_TARGET', `--target must be a number between 0 and 1 (got "${options.target}")`, 'Pass --target 0.05 (default) or another number in [0, 1]'), options.json);
|
|
123
|
+
process.exitCode = 1;
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
try {
|
|
127
|
+
const result = runStaticAudit({ projectRoot: validation.projectRoot });
|
|
128
|
+
const ratio = computeProseRatio(result.audit.audit, { target });
|
|
129
|
+
const envelope = ok('audit.prose-ratio', ratio, [], proseRatioNextActions(ratio));
|
|
130
|
+
printResult(io, envelope, options.json);
|
|
131
|
+
if (ratio.exceeds) {
|
|
132
|
+
process.exitCode = 1;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
printResult(io, proseRatioFailureEnvelope('SCANNER_FAILED', getErrorMessage(error), SCANNER_HINT), options.json);
|
|
137
|
+
process.exitCode = 1;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type ProgramIO } from '../cli-helpers.js';
|
|
2
|
+
import type { SubAgentDispatcher } from '../../services/dispatch/sub-agent-dispatcher-types.js';
|
|
3
|
+
import { type AwaitOptions } from './sub-agent-shared.js';
|
|
4
|
+
/** The per-IDE dispatcher resolution the await CLI needs, plus the id it named. */
|
|
5
|
+
export interface AwaitIdeResolution {
|
|
6
|
+
readonly ide: string;
|
|
7
|
+
readonly dispatcher: SubAgentDispatcher;
|
|
8
|
+
}
|
|
9
|
+
/** Injected resolver so this module never imports the IDE registry itself. */
|
|
10
|
+
export type ResolveIdeDispatcher = (projectRoot: string) => Promise<AwaitIdeResolution>;
|
|
11
|
+
export declare function runAwait(options: AwaitOptions, io: ProgramIO, resolveIde: ResolveIdeDispatcher): Promise<void>;
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `await` action body for `peaks sub-agent`, moved out of
|
|
3
|
+
* `share-commands.ts` so that registrar file stays under the line cap.
|
|
4
|
+
*
|
|
5
|
+
* The registrar keeps the command shape and delegates here. The per-IDE
|
|
6
|
+
* dispatcher is INJECTED (`resolveIde`) rather than imported: the module that
|
|
7
|
+
* consumes the IDE registry is `share-commands.ts`, which is the file the
|
|
8
|
+
* vendor-neutral identity guard measures — so this module never names the
|
|
9
|
+
* registry and never becomes a second consumer.
|
|
10
|
+
*/
|
|
11
|
+
import { fail, getErrorMessage, ok } from 'peaks-loop-shared/result';
|
|
12
|
+
import { printResult } from '../cli-helpers.js';
|
|
13
|
+
import { summarizeBatchResults } from './sub-agent-shared.js';
|
|
14
|
+
import { awaitErrorNextActions } from './share-error-hints.js';
|
|
15
|
+
import { resolveSessionId } from './share-identity.js';
|
|
16
|
+
import { resolveBatchRecords } from './share-record-paths.js';
|
|
17
|
+
export async function runAwait(options, io, resolveIde) {
|
|
18
|
+
const asJson = options.json === true;
|
|
19
|
+
if (!options.batch) {
|
|
20
|
+
printResult(io, fail('sub-agent.await', 'MISSING_BATCH', '--batch is required', { ok: false }, [
|
|
21
|
+
'Re-run with --batch <batchId> from a dispatch envelope.'
|
|
22
|
+
]), asJson);
|
|
23
|
+
process.exitCode = 1;
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const parsed = parseAwaitTimeout(options.timeout, io, asJson);
|
|
27
|
+
if (!parsed.ok)
|
|
28
|
+
return;
|
|
29
|
+
const projectRoot = options.project ?? process.cwd();
|
|
30
|
+
const sid = resolveSessionId(options, projectRoot);
|
|
31
|
+
// Lazy-import IDE modules so `peaks sub-agent share` and
|
|
32
|
+
// `peaks sub-agent shared-read` (the high-frequency G8.4 path) do not
|
|
33
|
+
// pay for adapter resolution at module-load time.
|
|
34
|
+
const resolved = await resolveIde(projectRoot);
|
|
35
|
+
const awaitBatch = resolved.dispatcher.awaitBatch?.bind(resolved.dispatcher);
|
|
36
|
+
if (typeof awaitBatch !== 'function') {
|
|
37
|
+
reportIdeNotSupported(resolved.ide, io, asJson);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
await runAwaitBatch({
|
|
41
|
+
options,
|
|
42
|
+
io,
|
|
43
|
+
asJson,
|
|
44
|
+
projectRoot,
|
|
45
|
+
sessionId: sid,
|
|
46
|
+
batch: options.batch,
|
|
47
|
+
timeoutMs: parsed.timeoutMs,
|
|
48
|
+
label: resolved.dispatcher.label,
|
|
49
|
+
awaitBatch
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Report a dispatcher with no `awaitBatch`. Every built-in adapter has one since
|
|
54
|
+
* slice 1.3, so this names a custom adapter registered outside the built-in set.
|
|
55
|
+
*/
|
|
56
|
+
function reportIdeNotSupported(ide, io, asJson) {
|
|
57
|
+
printResult(io, fail('sub-agent.await', 'IDE_NOT_SUPPORTED', `IDE ${ide} does not support awaitBatch`, { ok: false }, [
|
|
58
|
+
'Every built-in adapter has an awaitBatch since slice 1.3; a dispatcher without one is a custom adapter registered outside the built-in set.'
|
|
59
|
+
]), asJson);
|
|
60
|
+
process.exitCode = 1;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Validate `--timeout`. Absent means "no cap"; anything present must be a
|
|
64
|
+
* positive integer. A rejected value prints `INVALID_TIMEOUT` and sets the
|
|
65
|
+
* non-zero exit code exactly where the original inline check did.
|
|
66
|
+
*/
|
|
67
|
+
function parseAwaitTimeout(raw, io, asJson) {
|
|
68
|
+
if (typeof raw === 'string' && raw.length > 0) {
|
|
69
|
+
const n = Number.parseInt(raw, 10);
|
|
70
|
+
if (!Number.isInteger(n) || n <= 0) {
|
|
71
|
+
printResult(io, fail('sub-agent.await', 'INVALID_TIMEOUT', `--timeout must be a positive integer ms (got ${raw})`, { ok: false }, ['Pass an integer like --timeout 60000.']), asJson);
|
|
72
|
+
process.exitCode = 1;
|
|
73
|
+
return { ok: false };
|
|
74
|
+
}
|
|
75
|
+
return { ok: true, timeoutMs: n };
|
|
76
|
+
}
|
|
77
|
+
return { ok: true, timeoutMs: undefined };
|
|
78
|
+
}
|
|
79
|
+
async function runAwaitBatch(input) {
|
|
80
|
+
try {
|
|
81
|
+
// session's dispatch directory. `recordPaths` used to be hardcoded to
|
|
82
|
+
// `[]`, and `awaitBatch` short-circuits on an empty list
|
|
83
|
+
// (await-batch.ts:134) — so `await` reported zero results and exited 0
|
|
84
|
+
// for every batch, forever. A batch we cannot locate is now a failure,
|
|
85
|
+
// not a success with nothing in it.
|
|
86
|
+
const { readRecord } = await import('../../services/dispatch/dispatch-record-writer.js');
|
|
87
|
+
const scan = resolveBatchRecords({
|
|
88
|
+
projectRoot: input.projectRoot,
|
|
89
|
+
sessionId: input.sessionId,
|
|
90
|
+
batchId: input.batch,
|
|
91
|
+
readOne: readRecord
|
|
92
|
+
});
|
|
93
|
+
if (scan.recordPaths.length === 0) {
|
|
94
|
+
reportNoDispatchRecords(scan, input);
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
const batchInput = {
|
|
98
|
+
batchId: input.batch,
|
|
99
|
+
dispatchCount: scan.recordPaths.length,
|
|
100
|
+
recordPaths: scan.recordPaths,
|
|
101
|
+
...(input.timeoutMs !== undefined ? { timeoutMs: input.timeoutMs } : {})
|
|
102
|
+
};
|
|
103
|
+
const results = await input.awaitBatch(batchInput);
|
|
104
|
+
printAwaitSuccess(results, scan, input);
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
const code = error.code ?? 'AWAIT_ERROR';
|
|
108
|
+
printResult(input.io, fail('sub-agent.await', code, getErrorMessage(error), { ok: false }, [
|
|
109
|
+
awaitErrorNextActions(code)
|
|
110
|
+
]), input.asJson);
|
|
111
|
+
process.exitCode = 1;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
function reportNoDispatchRecords(scan, input) {
|
|
115
|
+
const unreadableNote = scan.unreadable.length > 0
|
|
116
|
+
? ` ${scan.unreadable.length} dispatch record(s) there could not be read, so they could not be matched to this batch: ${scan.unreadable.join(', ')}`
|
|
117
|
+
: '';
|
|
118
|
+
printResult(input.io, fail('sub-agent.await', 'NO_DISPATCH_RECORDS', `No dispatch record with batchId=${input.batch} under ${scan.sessionDir}.${unreadableNote}`, {
|
|
119
|
+
ok: false,
|
|
120
|
+
batchId: input.batch,
|
|
121
|
+
sessionDir: scan.sessionDir,
|
|
122
|
+
unreadableRecords: scan.unreadable
|
|
123
|
+
}, [awaitErrorNextActions('NO_DISPATCH_RECORDS')]), input.asJson);
|
|
124
|
+
process.exitCode = 1;
|
|
125
|
+
}
|
|
126
|
+
function printAwaitSuccess(results, scan, input) {
|
|
127
|
+
const summary = summarizeBatchResults(results);
|
|
128
|
+
printResult(input.io, ok('sub-agent.await', {
|
|
129
|
+
envelopeVersion: '2.1.0',
|
|
130
|
+
batchId: input.batch,
|
|
131
|
+
ide: input.label,
|
|
132
|
+
results,
|
|
133
|
+
summary,
|
|
134
|
+
unreadableRecords: scan.unreadable
|
|
135
|
+
}, scan.unreadable.length > 0
|
|
136
|
+
? [
|
|
137
|
+
`${scan.unreadable.length} unreadable dispatch record(s) in this session were skipped and are NOT part of the results: ${scan.unreadable.join(', ')}`
|
|
138
|
+
]
|
|
139
|
+
: [], [
|
|
140
|
+
// four non-Claude IDEs would report `awaitByLlm: <ide> 1.2 fallback`,
|
|
141
|
+
// the slice-1.2 marker that slice 1.3 replaced with a real
|
|
142
|
+
// file-polling await. The text survived because nothing tested it —
|
|
143
|
+
// no adapter produces that note any more (asserted in
|
|
144
|
+
// sub-agent-dispatchers.test.ts), and the emitter that produced it,
|
|
145
|
+
// `awaitByLlmFallback`, has since been removed.
|
|
146
|
+
`Each non-claude-code IDE labels its own results (see the \`note\` field), so a timed-out slot is attributable to the adapter it came from.`
|
|
147
|
+
]), input.asJson);
|
|
148
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
// src/cli/commands/baseline-audit-command.ts
|
|
2
|
+
//
|
|
3
|
+
// `peaks baseline audit` — the independent-context capability scorer. Split
|
|
4
|
+
// out of `baseline-commands.ts`; the scorer vocabulary, the guard summary the
|
|
5
|
+
// audit is handed, the sessionless scope and the verdict rule are unchanged.
|
|
6
|
+
import { readBaselineFile } from '../../services/capability-baseline/store.js';
|
|
7
|
+
import { GUARD_CONTRACTS } from '../../services/capability-guard-runner/registry.js';
|
|
8
|
+
import { runAllGuards } from '../../services/capability-guard-runner/runner.js';
|
|
9
|
+
import { RUNTIME_SESSIONLESS_SCOPE } from '../../services/workspace/runtime-layout.js';
|
|
10
|
+
import { DEFAULT_SCORER_MODE, fail, guardContext, isScorerMode, ok, SCORER_MODES } from './baseline-command-shared.js';
|
|
11
|
+
async function runAudit(io, opts) {
|
|
12
|
+
const projectRoot = opts.project ?? '.';
|
|
13
|
+
if (!isScorerMode(opts.scorer)) {
|
|
14
|
+
fail(io, 'UNKNOWN_SCORER', `unknown scorer "${String(opts.scorer)}"; expected one of ${SCORER_MODES.join(', ')}`);
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
const r = readBaselineFile(projectRoot);
|
|
18
|
+
if (!r.ok) {
|
|
19
|
+
fail(io, r.error.code, r.error.message);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
// The guard summary is the REAL aggregate of the 15 contracts. It used to
|
|
23
|
+
// be a literal `{pass:15,fail:0,skipped:0,total:15}` that no run produced.
|
|
24
|
+
const guardSummary = await runAllGuards(GUARD_CONTRACTS, guardContext(projectRoot));
|
|
25
|
+
// `live` is the deterministic independent checker: a real
|
|
26
|
+
// separate-context evaluation that needs no credentials, which is why it
|
|
27
|
+
// is the only kind that can run inside the secretless OIDC publish gate.
|
|
28
|
+
// It is handed the frozen rows and the registry, not just the guard
|
|
29
|
+
// summary — a scorer that only sees the guard result is a restatement.
|
|
30
|
+
//
|
|
31
|
+
// `sessionId` is the on-disk scope for the audit artifacts. This command
|
|
32
|
+
// has NO session — it is the credential-free scorer that runs inside the
|
|
33
|
+
// secretless OIDC publish gate — and it used to pass the literal `'cli'`,
|
|
34
|
+
// so every run wrote `.peaks/_runtime/cli/capability-audit/*.json` into
|
|
35
|
+
// the operator's real workspace. That directory is indistinguishable from
|
|
36
|
+
// a session dir whose id failed validation, so `peaks doctor`'s
|
|
37
|
+
// orphan-session check failed on it permanently. The reserved
|
|
38
|
+
// underscore-prefixed scope says "machinery, not a session" in the name.
|
|
39
|
+
const { runAudit: runIndependentAudit } = await import('../../services/capability-audit-service/runner.js');
|
|
40
|
+
const audit = await runIndependentAudit({
|
|
41
|
+
projectRoot,
|
|
42
|
+
sessionId: RUNTIME_SESSIONLESS_SCOPE,
|
|
43
|
+
journeyId: 'J01',
|
|
44
|
+
scorerMode: opts.scorer,
|
|
45
|
+
baselineRows: r.file.rows,
|
|
46
|
+
contracts: GUARD_CONTRACTS,
|
|
47
|
+
guardSummary
|
|
48
|
+
});
|
|
49
|
+
const data = audit;
|
|
50
|
+
if (audit.verdict === 'consistent' && !audit.degraded) {
|
|
51
|
+
ok(io, 'baseline.audit', data);
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
fail(io, 'AUDIT_NOT_CONSISTENT', `capability audit verdict is "${audit.verdict}"${audit.degraded ? ' (degraded: stub scorer)' : ''}`, data);
|
|
55
|
+
}
|
|
56
|
+
export function registerBaselineAuditCommand(baseline, io) {
|
|
57
|
+
baseline
|
|
58
|
+
.command('audit')
|
|
59
|
+
.description('Run the capability audit (independent-context scorer). Exits non-zero unless the verdict is consistent.')
|
|
60
|
+
.option('--scorer <mode>', `Scorer to run: ${SCORER_MODES.join('|')}. 'live' (default) runs the deterministic independent checker, which needs no credentials; 'stub' performs no evaluation and can never be consistent.`, DEFAULT_SCORER_MODE)
|
|
61
|
+
.option('--project <path>', 'Project root', '.')
|
|
62
|
+
.option('--json', 'Emit JSON envelope')
|
|
63
|
+
.action((opts) => runAudit(io, opts));
|
|
64
|
+
}
|