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,138 @@
|
|
|
1
|
+
import { EvolutionIntegrityError } from '../../services/evolution/evolution-service.js';
|
|
2
|
+
import { runIndependentEvaluator } from '../../services/evolution/independent-evaluator-runner.js';
|
|
3
|
+
import { addJsonOption, printResult } from '../cli-helpers.js';
|
|
4
|
+
import { ok } from 'peaks-loop-shared/result';
|
|
5
|
+
import { collectRepeatable, isScoreInRange, proposalNotFoundFailure, reportFailure, reportIntegrityFailure, scoreRangeFailure, withEvolutionDbAsync } from './evolution-command-shared.js';
|
|
6
|
+
const EVALUATE_DESCRIPTION = "M4: score a proposal with an independent evaluator (AC-12/AC-13) and a regression skeptic (AC-14). The result is the FINAL verdict: 'keep' (after user confirmation), 'revert' (skeptic blocker or score delta below threshold), or 'needs-user-decision'.";
|
|
7
|
+
/** The `svc.score(...)` argument object, built from the CLI flags. */
|
|
8
|
+
function evaluateScoreArgs(options, evaluatorResult) {
|
|
9
|
+
return {
|
|
10
|
+
evaluator_id: options.evaluator,
|
|
11
|
+
skeptic_id: options.skeptic,
|
|
12
|
+
evaluator_result: evaluatorResult,
|
|
13
|
+
skeptic_result: {
|
|
14
|
+
driftRisks: [],
|
|
15
|
+
overfitRisks: [],
|
|
16
|
+
safetyRegressionRisks: []
|
|
17
|
+
},
|
|
18
|
+
...(options.briefPointer !== undefined ? { brief_pointer: options.briefPointer } : {})
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
/** The `nextActions` the final verdict implies (unchanged wording). */
|
|
22
|
+
function evaluateNextActions(evaluation) {
|
|
23
|
+
if (evaluation.verdict === 'needs-user-decision') {
|
|
24
|
+
return [
|
|
25
|
+
`User confirmation required. Run \`peaks evolution mark-keep --proposal ${evaluation.id} --user-confirmation <ptr> --json\` after the user picks "keep", OR \`peaks evolution revert --proposal ${evaluation.id} --json\`.`
|
|
26
|
+
];
|
|
27
|
+
}
|
|
28
|
+
if (evaluation.verdict === 'revert') {
|
|
29
|
+
return [
|
|
30
|
+
'Proposal reverted. Investigate the skeptic blocker or the score delta below threshold.'
|
|
31
|
+
];
|
|
32
|
+
}
|
|
33
|
+
return [
|
|
34
|
+
'Proposal kept. The target asset remains unchanged on disk; full promotion lands in a later slice.'
|
|
35
|
+
];
|
|
36
|
+
}
|
|
37
|
+
/** The `ok(...)` `data` payload for a completed evaluation. */
|
|
38
|
+
function evaluateEnvelopeData(evaluation) {
|
|
39
|
+
return {
|
|
40
|
+
proposalId: evaluation.id,
|
|
41
|
+
verdict: evaluation.verdict,
|
|
42
|
+
evaluator_id: evaluation.evaluator_id,
|
|
43
|
+
skeptic_id: evaluation.skeptic_id,
|
|
44
|
+
evaluator_result: evaluation.evaluator_result,
|
|
45
|
+
skeptic_result: evaluation.skeptic_result,
|
|
46
|
+
score_delta: evaluation.proposal.score_delta,
|
|
47
|
+
score_delta_min: evaluation.proposal.score_delta_min,
|
|
48
|
+
after_score: evaluation.proposal.after_score,
|
|
49
|
+
nextActions: evaluateNextActions(evaluation)
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/** Print the evaluate failure envelope for `err` and set exit code 1. */
|
|
53
|
+
function reportEvaluateFailure(io, err, options) {
|
|
54
|
+
if (err instanceof EvolutionIntegrityError) {
|
|
55
|
+
reportIntegrityFailure({
|
|
56
|
+
io,
|
|
57
|
+
command: 'evolution.evaluate',
|
|
58
|
+
error: err,
|
|
59
|
+
nextActions: [
|
|
60
|
+
'Re-shape per spec §6: evaluator and skeptic MUST be separate from the author; the score delta MUST be >= score_delta_min for keep.'
|
|
61
|
+
],
|
|
62
|
+
asJson: options.json
|
|
63
|
+
});
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
reportFailure({
|
|
67
|
+
io,
|
|
68
|
+
command: 'evolution.evaluate',
|
|
69
|
+
code: 'EVOLUTION_EVALUATE_FAILED',
|
|
70
|
+
error: err,
|
|
71
|
+
data: { proposalId: options.proposal },
|
|
72
|
+
nextActions: ['Verify the proposal id and the evaluator / skeptic ids.'],
|
|
73
|
+
asJson: options.json
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
/** The service-side half of the `evaluate` action, inside the open DB scope. */
|
|
77
|
+
async function evaluateWithinService(svc, options, score, io) {
|
|
78
|
+
const evaluation = svc.read(options.proposal);
|
|
79
|
+
if (!evaluation) {
|
|
80
|
+
printResult(io, proposalNotFoundFailure('evolution.evaluate', options.proposal, [
|
|
81
|
+
'Verify the proposal id and that you have run `peaks evolution propose` first.'
|
|
82
|
+
]), options.json);
|
|
83
|
+
process.exitCode = 1;
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
// The CLI runs the deterministic LLM stubs (no live LLM in M4).
|
|
87
|
+
// Real LLM wiring lands in M5.
|
|
88
|
+
const evaluatorResult = await runIndependentEvaluator(evaluation.proposal);
|
|
89
|
+
// Force the CLI-supplied --evaluator-score to be the final score;
|
|
90
|
+
// the LLM stub's score is informational.
|
|
91
|
+
evaluatorResult.score = score;
|
|
92
|
+
if (options.refuteParagraph && options.refuteParagraph.length > 0) {
|
|
93
|
+
evaluatorResult.refuteParagraph = options.refuteParagraph;
|
|
94
|
+
}
|
|
95
|
+
if (Array.isArray(options.riskTag) && options.riskTag.length > 0) {
|
|
96
|
+
evaluatorResult.riskTags = [...evaluatorResult.riskTags, ...options.riskTag];
|
|
97
|
+
}
|
|
98
|
+
const scored = svc.score(options.proposal, evaluateScoreArgs(options, evaluatorResult));
|
|
99
|
+
printResult(io, ok('evolution.evaluate', evaluateEnvelopeData(scored), [], []), options.json);
|
|
100
|
+
if (scored.verdict === 'revert')
|
|
101
|
+
process.exitCode = 1;
|
|
102
|
+
}
|
|
103
|
+
/** The `evaluate` action body. */
|
|
104
|
+
export async function runEvaluate(options, io) {
|
|
105
|
+
try {
|
|
106
|
+
const score = Number(options.evaluatorScore);
|
|
107
|
+
if (!isScoreInRange(score)) {
|
|
108
|
+
printResult(io, scoreRangeFailure({
|
|
109
|
+
command: 'evolution.evaluate',
|
|
110
|
+
code: 'EVOLUTION_INVALID_EVALUATOR_SCORE',
|
|
111
|
+
label: 'evaluator-score',
|
|
112
|
+
flag: '--evaluator-score',
|
|
113
|
+
key: 'evaluatorScore',
|
|
114
|
+
raw: options.evaluatorScore
|
|
115
|
+
}), options.json);
|
|
116
|
+
process.exitCode = 1;
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
await withEvolutionDbAsync(options.project, (svc) => evaluateWithinService(svc, options, score, io));
|
|
120
|
+
}
|
|
121
|
+
catch (err) {
|
|
122
|
+
reportEvaluateFailure(io, err, options);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/** Register `peaks evolution evaluate` on the `evolution` parent. */
|
|
126
|
+
export function registerEvaluateCommand(evolution, io) {
|
|
127
|
+
addJsonOption(evolution
|
|
128
|
+
.command('evaluate')
|
|
129
|
+
.description(EVALUATE_DESCRIPTION)
|
|
130
|
+
.requiredOption('--proposal <id>', 'proposal id returned by `peaks evolution propose`')
|
|
131
|
+
.requiredOption('--evaluator <id>', 'independent scorer id (MUST differ from --author; AC-10)')
|
|
132
|
+
.requiredOption('--skeptic <id>', 'regression skeptic id (MUST differ from --evaluator and --author; AC-12/AC-14)')
|
|
133
|
+
.requiredOption('--evaluator-score <n>', "the independent scorer's score on the 0..10 scale (LLM-derived; NOT the author's after_score)")
|
|
134
|
+
.option('--refute-paragraph <text>', "the independent scorer's one-paragraph refute (LLM-authored)", '')
|
|
135
|
+
.option('--risk-tag <tag>', 'add a risk tag emitted by the evaluator (repeatable)', collectRepeatable, [])
|
|
136
|
+
.option('--brief-pointer <ptr>', 'pointer to the evidence brief (spec §4.7 / §4.4)')
|
|
137
|
+
.option('--project <path>', 'project root (default: cwd)')).action((options) => runEvaluate(options, io));
|
|
138
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `peaks evolution propose` — M4 / spec §4.4 / §6.1 #5. Split out of
|
|
3
|
+
* `evolution-commands.ts`: the option surface, the envelope keys and
|
|
4
|
+
* the exit-code sites are unchanged.
|
|
5
|
+
*/
|
|
6
|
+
import type { Command } from 'commander';
|
|
7
|
+
import { type ProgramIO } from '../cli-helpers.js';
|
|
8
|
+
/** The `--options` Commander hands to the `propose` action. */
|
|
9
|
+
export interface ProposeOptions {
|
|
10
|
+
target: string;
|
|
11
|
+
dimension: string;
|
|
12
|
+
beforeScore: string;
|
|
13
|
+
afterScore: string;
|
|
14
|
+
deltaMin: string;
|
|
15
|
+
author: string;
|
|
16
|
+
briefPointer?: string;
|
|
17
|
+
project?: string;
|
|
18
|
+
json?: boolean;
|
|
19
|
+
}
|
|
20
|
+
/** The `propose` action body. */
|
|
21
|
+
export declare function runPropose(options: ProposeOptions, io: ProgramIO): void;
|
|
22
|
+
/** Register `peaks evolution propose` on the `evolution` parent. */
|
|
23
|
+
export declare function registerProposeCommand(evolution: Command, io: ProgramIO): void;
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { EvolutionIntegrityError } from '../../services/evolution/evolution-service.js';
|
|
2
|
+
import { addJsonOption, printResult } from '../cli-helpers.js';
|
|
3
|
+
import { ok } from 'peaks-loop-shared/result';
|
|
4
|
+
import { deltaMinFailure, invalidTargetFailure, isScoreInRange, parseTargetFlag, reportFailure, reportIntegrityFailure, scoreRangeFailure, withEvolutionDb } from './evolution-command-shared.js';
|
|
5
|
+
const PROPOSE_DESCRIPTION = "M4: persist a new evolution proposal. Enforces AC-8 (single object + single dimension). The proposal's verdict starts at 'needs-user-decision' until the scoring + skeptic step lands.";
|
|
6
|
+
/**
|
|
7
|
+
* Validate `--target`, `--before-score`, `--after-score` and
|
|
8
|
+
* `--delta-min` in that order, returning the first failure envelope
|
|
9
|
+
* the original action would have printed.
|
|
10
|
+
*/
|
|
11
|
+
function preparePropose(options) {
|
|
12
|
+
const target = parseTargetFlag(options.target);
|
|
13
|
+
if (!target)
|
|
14
|
+
return { ok: false, failure: invalidTargetFailure('evolution.propose', options.target) };
|
|
15
|
+
const before = Number(options.beforeScore);
|
|
16
|
+
if (!isScoreInRange(before)) {
|
|
17
|
+
return {
|
|
18
|
+
ok: false,
|
|
19
|
+
failure: scoreRangeFailure({
|
|
20
|
+
command: 'evolution.propose',
|
|
21
|
+
code: 'EVOLUTION_INVALID_BEFORE_SCORE',
|
|
22
|
+
label: 'before_score',
|
|
23
|
+
flag: '--before-score',
|
|
24
|
+
key: 'beforeScore',
|
|
25
|
+
raw: options.beforeScore
|
|
26
|
+
})
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
const after = Number(options.afterScore);
|
|
30
|
+
if (!isScoreInRange(after)) {
|
|
31
|
+
return {
|
|
32
|
+
ok: false,
|
|
33
|
+
failure: scoreRangeFailure({
|
|
34
|
+
command: 'evolution.propose',
|
|
35
|
+
code: 'EVOLUTION_INVALID_AFTER_SCORE',
|
|
36
|
+
label: 'after_score',
|
|
37
|
+
flag: '--after-score',
|
|
38
|
+
key: 'afterScore',
|
|
39
|
+
raw: options.afterScore
|
|
40
|
+
})
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
const deltaMin = Number(options.deltaMin);
|
|
44
|
+
if (!Number.isFinite(deltaMin) || deltaMin < 0) {
|
|
45
|
+
return { ok: false, failure: deltaMinFailure('evolution.propose', options.deltaMin) };
|
|
46
|
+
}
|
|
47
|
+
return { ok: true, target, before, after, deltaMin };
|
|
48
|
+
}
|
|
49
|
+
/** The `EvolutionProposalInput` the service receives. */
|
|
50
|
+
function proposeInput(prep, options) {
|
|
51
|
+
return {
|
|
52
|
+
target_kind: prep.target.kind,
|
|
53
|
+
target_release_id: prep.target.id,
|
|
54
|
+
optimization_dimension: options.dimension,
|
|
55
|
+
before_snapshot: {},
|
|
56
|
+
after_snapshot: { after_score: prep.after },
|
|
57
|
+
diff: {},
|
|
58
|
+
before_score: prep.before,
|
|
59
|
+
after_score: prep.after,
|
|
60
|
+
score_delta_min: prep.deltaMin,
|
|
61
|
+
author_id: options.author,
|
|
62
|
+
single_object: true,
|
|
63
|
+
single_optimization_dimension: true,
|
|
64
|
+
rubric: {},
|
|
65
|
+
red_lines: [],
|
|
66
|
+
source_traces: []
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
/** The `ok(...)` `data` payload for a freshly created proposal. */
|
|
70
|
+
function proposeEnvelopeData(proposal, options) {
|
|
71
|
+
return {
|
|
72
|
+
proposal: {
|
|
73
|
+
id: proposal.id,
|
|
74
|
+
target_kind: proposal.target_kind,
|
|
75
|
+
target_release_id: proposal.target_release_id,
|
|
76
|
+
optimization_dimension: proposal.optimization_dimension,
|
|
77
|
+
before_score: proposal.before_score,
|
|
78
|
+
after_score: proposal.after_score,
|
|
79
|
+
score_delta: proposal.score_delta,
|
|
80
|
+
score_delta_min: proposal.score_delta_min,
|
|
81
|
+
author_id: proposal.author_id,
|
|
82
|
+
verdict: 'needs-user-decision',
|
|
83
|
+
...(options.briefPointer !== undefined ? { brief_pointer: options.briefPointer } : {})
|
|
84
|
+
},
|
|
85
|
+
nextActions: [
|
|
86
|
+
`Run \`peaks evolution evaluate --proposal ${proposal.id} --evaluator <id> --skeptic <id> --evaluator-score <n> --json\` to score the proposal.`
|
|
87
|
+
]
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
/** Print the propose failure envelope for `err` and set exit code 1. */
|
|
91
|
+
function reportProposeFailure(io, err, options) {
|
|
92
|
+
if (err instanceof EvolutionIntegrityError) {
|
|
93
|
+
reportIntegrityFailure({
|
|
94
|
+
io,
|
|
95
|
+
command: 'evolution.propose',
|
|
96
|
+
error: err,
|
|
97
|
+
nextActions: [
|
|
98
|
+
'Re-shape the proposal per spec §6: single object, single dimension, separate scorer.',
|
|
99
|
+
'If you intended a multi-object change, split it into multiple rounds.'
|
|
100
|
+
],
|
|
101
|
+
asJson: options.json
|
|
102
|
+
});
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
reportFailure({
|
|
106
|
+
io,
|
|
107
|
+
command: 'evolution.propose',
|
|
108
|
+
code: 'EVOLUTION_PROPOSE_FAILED',
|
|
109
|
+
error: err,
|
|
110
|
+
data: {},
|
|
111
|
+
nextActions: ['Verify the target flag and dimension.'],
|
|
112
|
+
asJson: options.json
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
/** The `propose` action body. */
|
|
116
|
+
export function runPropose(options, io) {
|
|
117
|
+
try {
|
|
118
|
+
const prep = preparePropose(options);
|
|
119
|
+
if (!prep.ok) {
|
|
120
|
+
printResult(io, prep.failure, options.json);
|
|
121
|
+
process.exitCode = 1;
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
const input = proposeInput(prep, options);
|
|
125
|
+
const proposal = withEvolutionDb(options.project, (svc) => svc.createProposal(input));
|
|
126
|
+
printResult(io, ok('evolution.propose', proposeEnvelopeData(proposal, options), [], []), options.json);
|
|
127
|
+
}
|
|
128
|
+
catch (err) {
|
|
129
|
+
reportProposeFailure(io, err, options);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/** Register `peaks evolution propose` on the `evolution` parent. */
|
|
133
|
+
export function registerProposeCommand(evolution, io) {
|
|
134
|
+
addJsonOption(evolution
|
|
135
|
+
.command('propose')
|
|
136
|
+
.description(PROPOSE_DESCRIPTION)
|
|
137
|
+
.requiredOption('--target <kind:id>', "target asset, e.g. 'loop:loop-onboarding-research' or 'bee:42'")
|
|
138
|
+
.requiredOption('--dimension <name>', "single optimization dimension (e.g. 'clarity')")
|
|
139
|
+
.requiredOption('--before-score <n>', 'score on the 0..10 scale BEFORE the change')
|
|
140
|
+
.requiredOption('--after-score <n>', 'score on the 0..10 scale AFTER the change (LLM-claimed)')
|
|
141
|
+
.option('--delta-min <n>', `minimum score delta for promotion (default: 1.0; spec §6.1 #5)`, '1.0')
|
|
142
|
+
.requiredOption('--author <id>', 'author agent id (the LLM proposing the change)')
|
|
143
|
+
.option('--brief-pointer <ptr>', 'pointer to the evidence brief used in the recommendation (spec §4.7 / §4.4)')
|
|
144
|
+
.option('--project <path>', 'project root (default: cwd)')).action((options) => runPropose(options, io));
|
|
145
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `peaks evolution status` — M4 / spec §4.4. Split out of
|
|
3
|
+
* `evolution-commands.ts`: the option surface, the envelope and the
|
|
4
|
+
* exit-code sites are unchanged.
|
|
5
|
+
*/
|
|
6
|
+
import type { Command } from 'commander';
|
|
7
|
+
import { type ProgramIO } from '../cli-helpers.js';
|
|
8
|
+
/** The `--options` Commander hands to the `status` action. */
|
|
9
|
+
export interface StatusOptions {
|
|
10
|
+
target: string;
|
|
11
|
+
project?: string;
|
|
12
|
+
json?: boolean;
|
|
13
|
+
}
|
|
14
|
+
/** The `status` action body. */
|
|
15
|
+
export declare function runStatus(options: StatusOptions, io: ProgramIO): void;
|
|
16
|
+
/** Register `peaks evolution status` on the `evolution` parent. */
|
|
17
|
+
export declare function registerStatusCommand(evolution: Command, io: ProgramIO): void;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { addJsonOption, printResult } from '../cli-helpers.js';
|
|
2
|
+
import { ok } from 'peaks-loop-shared/result';
|
|
3
|
+
import { invalidTargetFailure, parseTargetFlag, reportFailure, withEvolutionDb } from './evolution-command-shared.js';
|
|
4
|
+
const STATUS_DESCRIPTION = 'M4: read the status snapshot for a target (counts of evaluations by verdict + latest evaluation id).';
|
|
5
|
+
/** The `{ target_kind, target_release_id }` argument `svc.status` takes. */
|
|
6
|
+
function statusTarget(target) {
|
|
7
|
+
return { target_kind: target.kind, target_release_id: target.id };
|
|
8
|
+
}
|
|
9
|
+
/** The `status` action body. */
|
|
10
|
+
export function runStatus(options, io) {
|
|
11
|
+
try {
|
|
12
|
+
const target = parseTargetFlag(options.target);
|
|
13
|
+
if (!target) {
|
|
14
|
+
printResult(io, invalidTargetFailure('evolution.status', options.target), options.json);
|
|
15
|
+
process.exitCode = 1;
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
const targetArg = statusTarget(target);
|
|
19
|
+
const status = withEvolutionDb(options.project, (svc) => svc.status(targetArg));
|
|
20
|
+
printResult(io, ok('evolution.status', status, [], []), options.json);
|
|
21
|
+
}
|
|
22
|
+
catch (err) {
|
|
23
|
+
reportFailure({
|
|
24
|
+
io,
|
|
25
|
+
command: 'evolution.status',
|
|
26
|
+
code: 'EVOLUTION_STATUS_FAILED',
|
|
27
|
+
error: err,
|
|
28
|
+
data: { target: options.target },
|
|
29
|
+
nextActions: ['Verify the target flag.'],
|
|
30
|
+
asJson: options.json
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/** Register `peaks evolution status` on the `evolution` parent. */
|
|
35
|
+
export function registerStatusCommand(evolution, io) {
|
|
36
|
+
addJsonOption(evolution
|
|
37
|
+
.command('status')
|
|
38
|
+
.description(STATUS_DESCRIPTION)
|
|
39
|
+
.requiredOption('--target <kind:id>', "target asset, e.g. 'loop:loop-onboarding-research'")
|
|
40
|
+
.option('--project <path>', 'project root (default: cwd)')).action((options) => runStatus(options, io));
|
|
41
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `peaks evolution mark-keep` + `peaks evolution revert` — the two
|
|
3
|
+
* explicit-verdict verbs (spec §6.1 #8). Split out of
|
|
4
|
+
* `evolution-commands.ts`: the option surfaces, the envelope keys and
|
|
5
|
+
* the exit-code sites are unchanged.
|
|
6
|
+
*/
|
|
7
|
+
import type { Command } from 'commander';
|
|
8
|
+
import { type ProgramIO } from '../cli-helpers.js';
|
|
9
|
+
/** The `--options` Commander hands to the `mark-keep` action. */
|
|
10
|
+
export interface MarkKeepOptions {
|
|
11
|
+
proposal: string;
|
|
12
|
+
userConfirmation: string;
|
|
13
|
+
project?: string;
|
|
14
|
+
json?: boolean;
|
|
15
|
+
}
|
|
16
|
+
/** The `--options` Commander hands to the `revert` action. */
|
|
17
|
+
export interface RevertOptions {
|
|
18
|
+
proposal: string;
|
|
19
|
+
userConfirmation?: string;
|
|
20
|
+
project?: string;
|
|
21
|
+
json?: boolean;
|
|
22
|
+
}
|
|
23
|
+
/** The `mark-keep` action body. */
|
|
24
|
+
export declare function runMarkKeep(options: MarkKeepOptions, io: ProgramIO): void;
|
|
25
|
+
/** The `revert` action body. */
|
|
26
|
+
export declare function runRevert(options: RevertOptions, io: ProgramIO): void;
|
|
27
|
+
/** Register `peaks evolution mark-keep` on the `evolution` parent. */
|
|
28
|
+
export declare function registerMarkKeepCommand(evolution: Command, io: ProgramIO): void;
|
|
29
|
+
/** Register `peaks evolution revert` on the `evolution` parent. */
|
|
30
|
+
export declare function registerRevertCommand(evolution: Command, io: ProgramIO): void;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { EvolutionIntegrityError } from '../../services/evolution/evolution-service.js';
|
|
2
|
+
import { addJsonOption, printResult } from '../cli-helpers.js';
|
|
3
|
+
import { ok } from 'peaks-loop-shared/result';
|
|
4
|
+
import { proposalNotFoundFailure, reportFailure, reportIntegrityFailure, withEvolutionDb } from './evolution-command-shared.js';
|
|
5
|
+
const MARK_KEEP_DESCRIPTION = 'M4: explicit user-confirmed `keep` verdict. Requires --user-confirmation <ptr> and a score_delta >= score_delta_min (AC-11/AC-15).';
|
|
6
|
+
const REVERT_DESCRIPTION = 'M4: revert a proposal (universal recovery; spec §6.1 #8). Always allowed; the user may supply --user-confirmation for audit.';
|
|
7
|
+
/** Print the mark-keep failure envelope for `err` and set exit code 1. */
|
|
8
|
+
function reportMarkKeepFailure(io, err, options) {
|
|
9
|
+
if (err instanceof EvolutionIntegrityError) {
|
|
10
|
+
reportIntegrityFailure({
|
|
11
|
+
io,
|
|
12
|
+
command: 'evolution.mark-keep',
|
|
13
|
+
error: err,
|
|
14
|
+
nextActions: ['Re-shape the proposal or the score so score_delta >= score_delta_min.'],
|
|
15
|
+
asJson: options.json
|
|
16
|
+
});
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
reportFailure({
|
|
20
|
+
io,
|
|
21
|
+
command: 'evolution.mark-keep',
|
|
22
|
+
code: 'EVOLUTION_MARK_KEEP_FAILED',
|
|
23
|
+
error: err,
|
|
24
|
+
data: { proposalId: options.proposal },
|
|
25
|
+
nextActions: ['Verify the proposal id.'],
|
|
26
|
+
asJson: options.json
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
/** The `ok(...)` `data` payload for a confirmed `keep`. */
|
|
30
|
+
function markKeepEnvelopeData(updated) {
|
|
31
|
+
return {
|
|
32
|
+
proposalId: updated.id,
|
|
33
|
+
verdict: updated.verdict,
|
|
34
|
+
user_confirmation_pointer: updated.user_confirmation_pointer ?? null,
|
|
35
|
+
score_delta: updated.proposal.score_delta,
|
|
36
|
+
score_delta_min: updated.proposal.score_delta_min
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/** The `mark-keep` action body. */
|
|
40
|
+
export function runMarkKeep(options, io) {
|
|
41
|
+
try {
|
|
42
|
+
const updated = withEvolutionDb(options.project, (svc) => svc.markVerdict(options.proposal, 'keep', options.userConfirmation));
|
|
43
|
+
if (!updated) {
|
|
44
|
+
printResult(io, proposalNotFoundFailure('evolution.mark-keep', options.proposal, [
|
|
45
|
+
'Verify the proposal id.'
|
|
46
|
+
]), options.json);
|
|
47
|
+
process.exitCode = 1;
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
printResult(io, ok('evolution.mark-keep', markKeepEnvelopeData(updated), [], []), options.json);
|
|
51
|
+
}
|
|
52
|
+
catch (err) {
|
|
53
|
+
reportMarkKeepFailure(io, err, options);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/** The `revert` action body. */
|
|
57
|
+
export function runRevert(options, io) {
|
|
58
|
+
try {
|
|
59
|
+
const updated = withEvolutionDb(options.project, (svc) => svc.revert(options.proposal, options.userConfirmation));
|
|
60
|
+
if (!updated) {
|
|
61
|
+
printResult(io, proposalNotFoundFailure('evolution.revert', options.proposal, ['Verify the proposal id.']), options.json);
|
|
62
|
+
process.exitCode = 1;
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
printResult(io, ok('evolution.revert', {
|
|
66
|
+
proposalId: updated.id,
|
|
67
|
+
verdict: updated.verdict,
|
|
68
|
+
user_confirmation_pointer: updated.user_confirmation_pointer ?? null
|
|
69
|
+
}, [], []), options.json);
|
|
70
|
+
}
|
|
71
|
+
catch (err) {
|
|
72
|
+
reportFailure({
|
|
73
|
+
io,
|
|
74
|
+
command: 'evolution.revert',
|
|
75
|
+
code: 'EVOLUTION_REVERT_FAILED',
|
|
76
|
+
error: err,
|
|
77
|
+
data: { proposalId: options.proposal },
|
|
78
|
+
nextActions: ['Verify the proposal id.'],
|
|
79
|
+
asJson: options.json
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/** Register `peaks evolution mark-keep` on the `evolution` parent. */
|
|
84
|
+
export function registerMarkKeepCommand(evolution, io) {
|
|
85
|
+
addJsonOption(evolution
|
|
86
|
+
.command('mark-keep')
|
|
87
|
+
.description(MARK_KEEP_DESCRIPTION)
|
|
88
|
+
.requiredOption('--proposal <id>', 'proposal id')
|
|
89
|
+
.option('--user-confirmation <ptr>', 'pointer to the user choice record (AC-15) — omit to surface the EVOLUTION_MISSING_USER_CONFIRMATION service-layer error')
|
|
90
|
+
.option('--project <path>', 'project root (default: cwd)')).action((options) => runMarkKeep(options, io));
|
|
91
|
+
}
|
|
92
|
+
/** Register `peaks evolution revert` on the `evolution` parent. */
|
|
93
|
+
export function registerRevertCommand(evolution, io) {
|
|
94
|
+
addJsonOption(evolution
|
|
95
|
+
.command('revert')
|
|
96
|
+
.description(REVERT_DESCRIPTION)
|
|
97
|
+
.requiredOption('--proposal <id>', 'proposal id')
|
|
98
|
+
.option('--user-confirmation <ptr>', 'optional pointer to the user choice record')
|
|
99
|
+
.option('--project <path>', 'project root (default: cwd)')).action((options) => runRevert(options, io));
|
|
100
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { FinalReviewOutput } from '../../services/final-review/final-review-types.js';
|
|
2
|
+
import { type ProgramIO } from '../cli-helpers.js';
|
|
3
|
+
/** The two inputs a refusal envelope names, plus why it was refused. */
|
|
4
|
+
export type PrepareRefusal = {
|
|
5
|
+
readonly rid: string;
|
|
6
|
+
readonly code: string;
|
|
7
|
+
readonly message: string;
|
|
8
|
+
readonly sessionId: string;
|
|
9
|
+
readonly auditGoalPath: string;
|
|
10
|
+
readonly nextActions: string[];
|
|
11
|
+
};
|
|
12
|
+
/** Print one refusal envelope and mark the process failed. */
|
|
13
|
+
export declare function emitPrepareFailure(io: ProgramIO, json: boolean | undefined, refusal: PrepareRefusal, missingEnv?: readonly string[]): void;
|
|
14
|
+
/** Where a resolved run reads its audit goal from. */
|
|
15
|
+
export type PrepareGoalPath = {
|
|
16
|
+
readonly sessionId: string;
|
|
17
|
+
readonly auditGoalPath: string;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Stub path: surface a structured "scaffold ready" envelope.
|
|
21
|
+
*
|
|
22
|
+
* The service is NOT called here — the stub runner answers the audit-goal
|
|
23
|
+
* shape, not the 4-dim review shape, so running it through
|
|
24
|
+
* `prepareFinalReview()` would only manufacture a malformed review. The
|
|
25
|
+
* envelope confirms the route is wired end-to-end and reports the audit-goal
|
|
26
|
+
* path the service WOULD read.
|
|
27
|
+
*/
|
|
28
|
+
export declare function emitStubEnvelope(io: ProgramIO, rid: string, goal: PrepareGoalPath, json: boolean | undefined): void;
|
|
29
|
+
/** The success envelope of a real-provider run. */
|
|
30
|
+
export declare function emitReviewEnvelope(io: ProgramIO, result: {
|
|
31
|
+
readonly rid: string;
|
|
32
|
+
readonly goal: PrepareGoalPath;
|
|
33
|
+
readonly model: string;
|
|
34
|
+
readonly review: FinalReviewOutput;
|
|
35
|
+
readonly json: boolean | undefined;
|
|
36
|
+
}): void;
|
|
37
|
+
/**
|
|
38
|
+
* Map a thrown error to the CLI's error code. The LLM-layer errors already
|
|
39
|
+
* carry codes precise enough to act on (`LLM_CREDENTIAL_MISSING`,
|
|
40
|
+
* `LLM_REQUEST_FAILED`, …), so they are passed through rather than flattened
|
|
41
|
+
* into one opaque failure.
|
|
42
|
+
*/
|
|
43
|
+
export declare function finalReviewErrorCode(error: unknown): string;
|
|
44
|
+
export declare function finalReviewNextActions(code: string): string[];
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
// src/cli/commands/final-review-command-envelopes.ts
|
|
2
|
+
//
|
|
3
|
+
// Every envelope `peaks prepare-final-review` can print, and the error-code
|
|
4
|
+
// mapping behind the failure one. Split out of `final-review-commands.ts`; the
|
|
5
|
+
// codes, messages, data fields and next-action strings are unchanged.
|
|
6
|
+
import { fail, ok } from 'peaks-loop-shared/result';
|
|
7
|
+
import { IncompleteFinalReviewError } from '../../services/final-review/final-review-service.js';
|
|
8
|
+
import { LlmBindingError, LlmRequestError } from '../../services/llm/anthropic-runner.js';
|
|
9
|
+
import { printResult } from '../cli-helpers.js';
|
|
10
|
+
import { emptyFinalReviewData } from './final-review-command-shared.js';
|
|
11
|
+
/** Print one refusal envelope and mark the process failed. */
|
|
12
|
+
export function emitPrepareFailure(io, json, refusal, missingEnv) {
|
|
13
|
+
printResult(io, fail('final-review.prepare', refusal.code, refusal.message, emptyFinalReviewData(refusal.rid, refusal.sessionId, refusal.auditGoalPath, missingEnv), refusal.nextActions), json ?? false);
|
|
14
|
+
process.exitCode = 1;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Stub path: surface a structured "scaffold ready" envelope.
|
|
18
|
+
*
|
|
19
|
+
* The service is NOT called here — the stub runner answers the audit-goal
|
|
20
|
+
* shape, not the 4-dim review shape, so running it through
|
|
21
|
+
* `prepareFinalReview()` would only manufacture a malformed review. The
|
|
22
|
+
* envelope confirms the route is wired end-to-end and reports the audit-goal
|
|
23
|
+
* path the service WOULD read.
|
|
24
|
+
*/
|
|
25
|
+
export function emitStubEnvelope(io, rid, goal, json) {
|
|
26
|
+
const data = {
|
|
27
|
+
status: 'scaffold-only',
|
|
28
|
+
rid,
|
|
29
|
+
sessionId: goal.sessionId,
|
|
30
|
+
auditGoalPath: goal.auditGoalPath,
|
|
31
|
+
serviceWired: true,
|
|
32
|
+
providerBinding: 'stub'
|
|
33
|
+
};
|
|
34
|
+
const envelope = ok('final-review.prepare', data, [], [
|
|
35
|
+
'Stub provider: no 4-dim review was performed. This envelope only proves the route is wired and reachable.',
|
|
36
|
+
`Audit-goal file is present at: ${goal.auditGoalPath}`,
|
|
37
|
+
'Re-run with `--llm-provider anthropic` to produce a real review.'
|
|
38
|
+
]);
|
|
39
|
+
printResult(io, envelope, json ?? false);
|
|
40
|
+
}
|
|
41
|
+
/** The success envelope of a real-provider run. */
|
|
42
|
+
export function emitReviewEnvelope(io, result) {
|
|
43
|
+
const { rid, goal, model, review, json } = result;
|
|
44
|
+
const data = {
|
|
45
|
+
status: 'review-complete',
|
|
46
|
+
rid,
|
|
47
|
+
sessionId: goal.sessionId,
|
|
48
|
+
auditGoalPath: goal.auditGoalPath,
|
|
49
|
+
serviceWired: true,
|
|
50
|
+
providerBinding: 'anthropic-messages-api',
|
|
51
|
+
model,
|
|
52
|
+
review
|
|
53
|
+
};
|
|
54
|
+
const envelope = ok('final-review.prepare', data, review.allPass
|
|
55
|
+
? []
|
|
56
|
+
: [
|
|
57
|
+
`Dimensions needing human attention: ${review.needsAttention.join(', ') || 'none flagged'}.`
|
|
58
|
+
], [
|
|
59
|
+
`4-dim review produced by anthropic-messages-api (model: ${model}).`,
|
|
60
|
+
`allPass: ${String(review.allPass)}.`
|
|
61
|
+
]);
|
|
62
|
+
printResult(io, envelope, json ?? false);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Map a thrown error to the CLI's error code. The LLM-layer errors already
|
|
66
|
+
* carry codes precise enough to act on (`LLM_CREDENTIAL_MISSING`,
|
|
67
|
+
* `LLM_REQUEST_FAILED`, …), so they are passed through rather than flattened
|
|
68
|
+
* into one opaque failure.
|
|
69
|
+
*/
|
|
70
|
+
export function finalReviewErrorCode(error) {
|
|
71
|
+
if (error instanceof LlmBindingError ||
|
|
72
|
+
error instanceof LlmRequestError ||
|
|
73
|
+
error instanceof IncompleteFinalReviewError) {
|
|
74
|
+
return error.code;
|
|
75
|
+
}
|
|
76
|
+
return 'FINAL_REVIEW_FAILED';
|
|
77
|
+
}
|
|
78
|
+
export function finalReviewNextActions(code) {
|
|
79
|
+
switch (code) {
|
|
80
|
+
case 'LLM_CREDENTIAL_MISSING':
|
|
81
|
+
return [
|
|
82
|
+
'Export ANTHROPIC_AUTH_TOKEN (or ANTHROPIC_API_KEY) in the environment that launches peaks, then re-run.',
|
|
83
|
+
'For an offline scaffold instead of a review, re-run with `--llm-provider stub` — it performs NO review.'
|
|
84
|
+
];
|
|
85
|
+
case 'LLM_MODEL_MISSING':
|
|
86
|
+
return [
|
|
87
|
+
'Export ANTHROPIC_MODEL (or CLAUDE_CODE_SUBAGENT_MODEL) in the environment that launches peaks, then re-run.'
|
|
88
|
+
];
|
|
89
|
+
case 'LLM_REQUEST_FAILED':
|
|
90
|
+
return [
|
|
91
|
+
'Check ANTHROPIC_BASE_URL and network reachability, then re-run — a transport failure produces no review.'
|
|
92
|
+
];
|
|
93
|
+
case 'INCOMPLETE_FINAL_REVIEW':
|
|
94
|
+
return [
|
|
95
|
+
'The LLM reply was not valid JSON or omitted a required dimension; re-run so the gate is never read as complete.'
|
|
96
|
+
];
|
|
97
|
+
default:
|
|
98
|
+
return ['Re-run with `--llm-provider stub` to validate the CLI route without a real LLM.'];
|
|
99
|
+
}
|
|
100
|
+
}
|