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
|
@@ -1,596 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { createAutonomousWorkflowPlan } from '../../services/workflow/workflow-autonomous-service.js';
|
|
5
|
-
import { writeAutonomousResumeArtifacts } from '../../services/workflow/autonomous-resume-writer.js';
|
|
6
|
-
import { createRecommendationPlan } from '../../services/recommendations/recommendation-service.js';
|
|
7
|
-
import { createRefactorDryRun } from '../../services/refactor/refactor-service.js';
|
|
8
|
-
import { getWorkspaceConfigForPath, readConfig } from '../../services/config/config-service.js';
|
|
9
|
-
import { getEconomyAwareExecutionModelId } from '../../services/config/model-routing.js';
|
|
10
|
-
import { getLocalArtifactPath } from '../../services/artifacts/workspace-service.js';
|
|
11
|
-
import { getSessionId } from '../../services/session/session-manager.js';
|
|
12
|
-
import { getSessionDir } from '../../services/session/getSessionDir.js';
|
|
13
|
-
import { findProjectRoot } from '../../services/config/config-safety.js';
|
|
14
|
-
import { verifyPipeline } from '../../services/workflow/pipeline-verify-service.js';
|
|
15
|
-
import { applySkip, detectCallerKind } from '../../services/workflow/workflow-skip-service.js';
|
|
16
|
-
import { fail, ok } from 'peaks-loop-shared/result';
|
|
17
|
-
import { addJsonOption, failUnsupportedNonDryRun, getErrorMessage, isRecommendationWorkflow, printResult } from '../cli-helpers.js';
|
|
18
|
-
// catch sites below (tech.plan / workflow.route / workflow.autonomous /
|
|
19
|
-
// swarm.plan) so provider-config errors surface as `INVALID_PROVIDERS`
|
|
20
|
-
// instead of being silently re-labelled `INVALID_GOAL`.
|
|
21
|
-
import { mapServiceError } from './_cli-error-envelope.js';
|
|
22
|
-
// `peaks tech status-change-id`). Additive; the existing session-axis
|
|
23
|
-
// `peaks tech plan` / `peaks tech status` registrations are untouched.
|
|
24
|
-
import { registerTechCommands } from './tech-commands.js';
|
|
25
|
-
import { registerSwarmCommands } from './swarm-commands.js';
|
|
26
|
-
// `registerTechCommands` registrations are byte-for-byte untouched.
|
|
27
|
-
import { registerAutonomousSwarmCommands } from './autonomous-swarm-commands.js';
|
|
28
|
-
// Slice 4.0.8 — workflow lifecycle (init / graph show / graph list / node
|
|
29
|
-
// prepare / node ack / node mark-lost / terminalize). Registered as a
|
|
30
|
-
// sibling command group, not merged with planning handlers, per RD §4.
|
|
31
|
-
import { registerWorkflowLifecycleCommand } from './workflow-lifecycle-commands.js';
|
|
32
|
-
// Plan 1 / Task 9 — auto-build peaks-context before peaks-rd runs.
|
|
33
|
-
import { buildContext } from '../../services/context/context-builder.js';
|
|
34
|
-
// Plan 1 / Task 10 — production fetcher (replaces mockFetcher).
|
|
35
|
-
import { createDocCacheFetcher } from '../../services/context/doc-cache-fetcher.js';
|
|
36
|
-
function buildDocFetcher(sid) {
|
|
37
|
-
return createDocCacheFetcher({
|
|
38
|
-
cacheDir: `.peaks/_runtime/${sid}/doc-cache`
|
|
39
|
-
// remoteFetcher wired in a future slice.
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
async function ensureContextForRd(goal, project, sid) {
|
|
43
|
-
const out = `.peaks/_runtime/${sid}/context.json`;
|
|
44
|
-
try {
|
|
45
|
-
await buildContext({
|
|
46
|
-
goal,
|
|
47
|
-
project,
|
|
48
|
-
audience: 'peaks-rd',
|
|
49
|
-
depsMode: 'locked',
|
|
50
|
-
docBudgetTokens: 8000,
|
|
51
|
-
out,
|
|
52
|
-
fetcher: buildDocFetcher(sid)
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
catch (error) {
|
|
56
|
-
// Plan 1 / Task 9 — context is a pre-step, not a precondition.
|
|
57
|
-
// If the Collector (e.g. missing package.json) or DocRetriever
|
|
58
|
-
// fails, we still want the rd slice to proceed. Task 11
|
|
59
|
-
// upgrades this to a hard precondition once the rd slice
|
|
60
|
-
// actually consumes context.json.
|
|
61
|
-
const message = error instanceof Error ? error.message : 'unknown context build failure';
|
|
62
|
-
process.stderr.write(`[peaks-context] rd pre-step skipped: ${message}\n`);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
function getCurrentWorkspaceContext() {
|
|
66
|
-
try {
|
|
67
|
-
const projectRoot = findProjectRoot(process.cwd()) ?? process.cwd();
|
|
68
|
-
const sessionId = getSessionId(projectRoot);
|
|
69
|
-
return sessionId ? { sessionId, sessionDir: getSessionDir(projectRoot, sessionId) } : {};
|
|
70
|
-
}
|
|
71
|
-
catch {
|
|
72
|
-
return {};
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
function getWorkflowWorkspaceContext() {
|
|
76
|
-
try {
|
|
77
|
-
const projectRoot = findProjectRoot(process.cwd()) ?? process.cwd();
|
|
78
|
-
const workspace = getWorkspaceConfigForPath(projectRoot);
|
|
79
|
-
if (!workspace)
|
|
80
|
-
return { projectRoot };
|
|
81
|
-
return { projectRoot, workspace, artifactWorkspacePath: getLocalArtifactPath(workspace) };
|
|
82
|
-
}
|
|
83
|
-
catch {
|
|
84
|
-
return {};
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
function parseMaxWorkers(io, command, value, asJson) {
|
|
88
|
-
const maxWorkers = Number(value);
|
|
89
|
-
if (!Number.isInteger(maxWorkers) || maxWorkers < 1) {
|
|
90
|
-
printResult(io, fail(command, 'INVALID_MAX_WORKERS', 'max-workers must be a positive integer', {}, [
|
|
91
|
-
'Use --max-workers with a positive integer value'
|
|
92
|
-
]), asJson);
|
|
93
|
-
process.exitCode = 1;
|
|
94
|
-
return null;
|
|
95
|
-
}
|
|
96
|
-
return maxWorkers;
|
|
97
|
-
}
|
|
98
|
-
function validatePlanningInput(goal) {
|
|
99
|
-
// v2.17.0: change-id axis removed. The planning input is now keyed
|
|
100
|
-
// by the session id (already bound via `peaks workspace init`),
|
|
101
|
-
// not by a user-supplied change-id. Only the goal is validated.
|
|
102
|
-
if (!goal.trim()) {
|
|
103
|
-
throw new Error('Goal must be non-empty');
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
function parseCodeMode(io, command, mode, codeMode, asJson) {
|
|
107
|
-
if (mode !== 'code' && codeMode) {
|
|
108
|
-
printResult(io, fail(command, 'CODE_MODE_REQUIRES_CODE_WORKFLOW', '--code-mode can only be used with --mode code', {}, ['Remove --code-mode or use --mode code']), asJson);
|
|
109
|
-
process.exitCode = 1;
|
|
110
|
-
return null;
|
|
111
|
-
}
|
|
112
|
-
if (mode !== 'code' || !codeMode) {
|
|
113
|
-
return undefined;
|
|
114
|
-
}
|
|
115
|
-
if (!isCodeMode(codeMode)) {
|
|
116
|
-
printResult(io, fail(command, 'UNSUPPORTED_CODE_MODE', `Unsupported code mode ${codeMode}`, {}, [
|
|
117
|
-
'Use --code-mode full-auto, guided, or rnd'
|
|
118
|
-
]), asJson);
|
|
119
|
-
process.exitCode = 1;
|
|
120
|
-
return null;
|
|
121
|
-
}
|
|
122
|
-
return codeMode;
|
|
123
|
-
}
|
|
124
|
-
function runTechPlan(io, options) {
|
|
125
|
-
if (options.dryRun === false) {
|
|
126
|
-
failUnsupportedNonDryRun(io, 'tech.plan', options.json);
|
|
127
|
-
return;
|
|
128
|
-
}
|
|
129
|
-
try {
|
|
130
|
-
validatePlanningInput(options.goal);
|
|
131
|
-
const workspaceContext = getCurrentWorkspaceContext();
|
|
132
|
-
// gone. The planner derives scope from the active session; the
|
|
133
|
-
// legacy `sessionId` field is passed as empty string for back-compat
|
|
134
|
-
// with the existing service signature.
|
|
135
|
-
const plan = createTechPlan({
|
|
136
|
-
sessionId: '',
|
|
137
|
-
goal: options.goal,
|
|
138
|
-
swarm: options.swarm ?? false,
|
|
139
|
-
dryRun: true,
|
|
140
|
-
...workspaceContext
|
|
141
|
-
});
|
|
142
|
-
printResult(io, ok('tech.plan', plan), options.json);
|
|
143
|
-
}
|
|
144
|
-
catch (error) {
|
|
145
|
-
const mapping = mapServiceError(error);
|
|
146
|
-
printResult(io, fail('tech.plan', mapping.code, getErrorMessage(error), {}, [...mapping.nextActions]), options.json);
|
|
147
|
-
process.exitCode = 1;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
function runTechStatus(io, options) {
|
|
151
|
-
try {
|
|
152
|
-
const workspaceContext = getCurrentWorkspaceContext();
|
|
153
|
-
printResult(io, ok('tech.status', getTechStatus({ sessionId: '', ...workspaceContext })), options.json);
|
|
154
|
-
}
|
|
155
|
-
catch (error) {
|
|
156
|
-
printResult(io, fail('tech.status', 'TECH_STATUS_FAILED', getErrorMessage(error), {}, [
|
|
157
|
-
'Verify the project setup'
|
|
158
|
-
]), options.json);
|
|
159
|
-
process.exitCode = 1;
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
function runWorkflowRoute(io, options) {
|
|
163
|
-
if (options.dryRun === false) {
|
|
164
|
-
failUnsupportedNonDryRun(io, 'workflow.route', options.json);
|
|
165
|
-
return;
|
|
166
|
-
}
|
|
167
|
-
if (!isWorkflowMode(options.mode)) {
|
|
168
|
-
printResult(io, fail('workflow.route', 'UNSUPPORTED_WORKFLOW_MODE', `Unsupported workflow mode ${options.mode}`, {}, ['Use --mode code or --mode team']), options.json);
|
|
169
|
-
process.exitCode = 1;
|
|
170
|
-
return;
|
|
171
|
-
}
|
|
172
|
-
const maxWorkers = parseMaxWorkers(io, 'workflow.route', options.maxWorkers, options.json);
|
|
173
|
-
if (maxWorkers === null)
|
|
174
|
-
return;
|
|
175
|
-
const codeMode = parseCodeMode(io, 'workflow.route', options.mode, options.codeMode, options.json);
|
|
176
|
-
if (codeMode === null)
|
|
177
|
-
return;
|
|
178
|
-
try {
|
|
179
|
-
validatePlanningInput(options.goal);
|
|
180
|
-
const workspaceContext = getWorkflowWorkspaceContext();
|
|
181
|
-
const plan = createWorkflowRouterPlan({
|
|
182
|
-
sessionId: '',
|
|
183
|
-
goal: options.goal,
|
|
184
|
-
mode: options.mode,
|
|
185
|
-
...(codeMode ? { codeMode } : {}),
|
|
186
|
-
maxWorkers,
|
|
187
|
-
dryRun: true,
|
|
188
|
-
config: readConfig(),
|
|
189
|
-
...workspaceContext
|
|
190
|
-
});
|
|
191
|
-
printResult(io, ok('workflow.route', plan), options.json);
|
|
192
|
-
}
|
|
193
|
-
catch (error) {
|
|
194
|
-
const mapping = mapServiceError(error);
|
|
195
|
-
printResult(io, fail('workflow.route', mapping.code, getErrorMessage(error), {}, [...mapping.nextActions]), options.json);
|
|
196
|
-
process.exitCode = 1;
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
function runAutonomousWorkflow(io, options) {
|
|
200
|
-
if (options.dryRun === false) {
|
|
201
|
-
failUnsupportedNonDryRun(io, 'workflow.autonomous', options.json);
|
|
202
|
-
return;
|
|
203
|
-
}
|
|
204
|
-
if (!isWorkflowMode(options.mode)) {
|
|
205
|
-
printResult(io, fail('workflow.autonomous', 'UNSUPPORTED_WORKFLOW_MODE', `Unsupported workflow mode ${options.mode}`, {}, ['Use --mode code or --mode team']), options.json);
|
|
206
|
-
process.exitCode = 1;
|
|
207
|
-
return;
|
|
208
|
-
}
|
|
209
|
-
const maxWorkers = parseMaxWorkers(io, 'workflow.autonomous', options.maxWorkers, options.json);
|
|
210
|
-
if (maxWorkers === null)
|
|
211
|
-
return;
|
|
212
|
-
const codeMode = parseCodeMode(io, 'workflow.autonomous', options.mode, options.codeMode, options.json);
|
|
213
|
-
if (codeMode === null)
|
|
214
|
-
return;
|
|
215
|
-
try {
|
|
216
|
-
validatePlanningInput(options.goal);
|
|
217
|
-
const workspaceContext = getWorkflowWorkspaceContext();
|
|
218
|
-
const plan = createAutonomousWorkflowPlan({
|
|
219
|
-
sessionId: '',
|
|
220
|
-
goal: options.goal,
|
|
221
|
-
mode: options.mode,
|
|
222
|
-
...(codeMode ? { codeMode } : {}),
|
|
223
|
-
maxWorkers,
|
|
224
|
-
dryRun: true,
|
|
225
|
-
config: readConfig(),
|
|
226
|
-
...workspaceContext
|
|
227
|
-
});
|
|
228
|
-
printResult(io, ok('workflow.autonomous', plan), options.json);
|
|
229
|
-
}
|
|
230
|
-
catch (error) {
|
|
231
|
-
const mapping = mapServiceError(error);
|
|
232
|
-
printResult(io, fail('workflow.autonomous', mapping.code, getErrorMessage(error), {}, [
|
|
233
|
-
...mapping.nextActions
|
|
234
|
-
]), options.json);
|
|
235
|
-
process.exitCode = 1;
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
async function runSwarmPlan(io, options) {
|
|
239
|
-
if ((options.skill ?? 'rd') !== 'rd') {
|
|
240
|
-
printResult(io, fail('swarm.plan', 'UNSUPPORTED_SWARM_SKILL', `Unsupported skill ${options.skill}`, {}, [
|
|
241
|
-
'Use --skill rd'
|
|
242
|
-
]), options.json);
|
|
243
|
-
process.exitCode = 1;
|
|
244
|
-
return;
|
|
245
|
-
}
|
|
246
|
-
if (options.dryRun === false) {
|
|
247
|
-
failUnsupportedNonDryRun(io, 'swarm.plan', options.json);
|
|
248
|
-
return;
|
|
249
|
-
}
|
|
250
|
-
const maxWorkers = parseMaxWorkers(io, 'swarm.plan', options.maxWorkers, options.json);
|
|
251
|
-
if (maxWorkers === null)
|
|
252
|
-
return;
|
|
253
|
-
try {
|
|
254
|
-
validatePlanningInput(options.goal);
|
|
255
|
-
const workspaceContext = getWorkflowWorkspaceContext();
|
|
256
|
-
const config = readConfig();
|
|
257
|
-
// Plan 1 / Task 9 — pre-build peaks-context before peaks-rd runs.
|
|
258
|
-
const projectRoot = workspaceContext.projectRoot ?? process.cwd();
|
|
259
|
-
const sid = getSessionId(projectRoot) ?? 'ad-hoc';
|
|
260
|
-
await ensureContextForRd(options.goal, projectRoot, sid);
|
|
261
|
-
const plan = createRdSwarmPlan({
|
|
262
|
-
skill: 'rd',
|
|
263
|
-
sessionId: '',
|
|
264
|
-
goal: options.goal,
|
|
265
|
-
maxWorkers,
|
|
266
|
-
dryRun: true,
|
|
267
|
-
swarmMode: config.swarmMode ?? true,
|
|
268
|
-
executionModelId: getEconomyAwareExecutionModelId(config),
|
|
269
|
-
...(options.strictStandards ? { strictStandards: true } : {}),
|
|
270
|
-
...workspaceContext
|
|
271
|
-
});
|
|
272
|
-
// The service-layer stamps `standardsErrorCode` onto the envelope; the
|
|
273
|
-
// CLI is responsible for translating it into a non-zero exit.
|
|
274
|
-
if (plan.gateStatus.standardsErrorCode === 'EPEAKS_NO_STANDARDS') {
|
|
275
|
-
process.exitCode = 1;
|
|
276
|
-
}
|
|
277
|
-
printResult(io, ok('swarm.plan', plan), options.json);
|
|
278
|
-
}
|
|
279
|
-
catch (error) {
|
|
280
|
-
const mapping = mapServiceError(error);
|
|
281
|
-
printResult(io, fail('swarm.plan', mapping.code, getErrorMessage(error), {}, [...mapping.nextActions]), options.json);
|
|
282
|
-
process.exitCode = 1;
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
async function runAutonomousResumeInit(io, options) {
|
|
286
|
-
try {
|
|
287
|
-
if (!options.project || !options.project.trim()) {
|
|
288
|
-
throw new Error('Project path must be non-empty');
|
|
289
|
-
}
|
|
290
|
-
// gone. The CLI surfaces a deterministic placeholder
|
|
291
|
-
// (`session-default`) when the user does not pass a change-id, so
|
|
292
|
-
// the on-disk session-dir join via `getSessionDir` succeeds (the
|
|
293
|
-
// writer still requires a safe non-empty string).
|
|
294
|
-
const result = await writeAutonomousResumeArtifacts({
|
|
295
|
-
sessionId: 'session-default',
|
|
296
|
-
goal: options.goal,
|
|
297
|
-
artifactWorkspacePath: options.project,
|
|
298
|
-
apply: options.apply === true
|
|
299
|
-
});
|
|
300
|
-
const data = {
|
|
301
|
-
applied: result.applied,
|
|
302
|
-
files: result.files.map((file) => file.path)
|
|
303
|
-
};
|
|
304
|
-
const nextActions = result.applied
|
|
305
|
-
? ['Run peaks workflow autonomous --goal "<goal>" --json to verify resumePlan.status']
|
|
306
|
-
: ['Re-run with --apply to write the resume scaffold to disk'];
|
|
307
|
-
printResult(io, ok('autonomous-resume.init', data, [], nextActions), options.json);
|
|
308
|
-
}
|
|
309
|
-
catch (error) {
|
|
310
|
-
printResult(io, fail('autonomous-resume.init', 'AUTONOMOUS_RESUME_INIT_FAILED', getErrorMessage(error), {}, [
|
|
311
|
-
'Use a non-empty goal and a writable project path'
|
|
312
|
-
]), options.json);
|
|
313
|
-
process.exitCode = 1;
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
function addTechPlanOptions(command) {
|
|
317
|
-
return addJsonOption(command
|
|
318
|
-
.description('Generate a technical dry-run graph')
|
|
319
|
-
.requiredOption('--goal <goal>', 'planning goal')
|
|
320
|
-
.option('--swarm', 'opt into swarm-oriented planning')
|
|
321
|
-
.option('--dry-run', 'preview without writing files', true)
|
|
322
|
-
.option('--no-dry-run', 'unsupported: do not execute tech planning from this CLI'));
|
|
323
|
-
}
|
|
324
|
-
function addTechStatusOptions(command) {
|
|
325
|
-
return addJsonOption(command.description('Inspect technical approval status'));
|
|
326
|
-
}
|
|
327
|
-
function addWorkflowRouteOptions(command, description) {
|
|
328
|
-
return addJsonOption(command
|
|
329
|
-
.description(description)
|
|
330
|
-
.requiredOption('--mode <mode>', 'workflow mode: code or team')
|
|
331
|
-
.requiredOption('--goal <goal>', 'planning goal')
|
|
332
|
-
.option('--code-mode <mode>', 'code mode: full-auto, guided, or rnd')
|
|
333
|
-
.option('--max-workers <count>', 'maximum worker count', '40')
|
|
334
|
-
.option('--dry-run', 'preview without writing files', true)
|
|
335
|
-
.option('--no-dry-run', 'unsupported: do not execute workflow planning from this CLI'));
|
|
336
|
-
}
|
|
337
|
-
function addSwarmPlanOptions(command, includeSkill) {
|
|
338
|
-
const configured = command
|
|
339
|
-
.description('Plan an RD swarm dry-run graph')
|
|
340
|
-
.requiredOption('--goal <goal>', 'planning goal')
|
|
341
|
-
.option('--max-workers <count>', 'maximum worker count', '40')
|
|
342
|
-
.option('--dry-run', 'preview without writing files', true)
|
|
343
|
-
.option('--no-dry-run', 'unsupported: do not execute RD planning from this CLI')
|
|
344
|
-
.option('--strict-standards', 'hard-fail (exit non-zero) when project-local standards are missing; surfaces EPEAKS_NO_STANDARDS in the JSON envelope');
|
|
345
|
-
if (includeSkill) {
|
|
346
|
-
configured.requiredOption('--skill <skill>', 'skill to plan for');
|
|
347
|
-
}
|
|
348
|
-
return addJsonOption(configured);
|
|
349
|
-
}
|
|
350
|
-
function addAutonomousResumeInitOptions(command) {
|
|
351
|
-
return addJsonOption(command
|
|
352
|
-
.description('Write the autonomous resume artifact scaffold for the active change-id')
|
|
353
|
-
.requiredOption('--goal <goal>', 'planning goal')
|
|
354
|
-
.requiredOption('--project <path>', 'artifact workspace path to write under')
|
|
355
|
-
.option('--apply', 'write the artifacts to disk (default is dry-run preview)'));
|
|
356
|
-
}
|
|
1
|
+
import { registerWorkflowPlanningCommands } from './workflow-planning-commands.js';
|
|
2
|
+
import { registerWorkflowGateCommands } from './workflow-gate-commands.js';
|
|
3
|
+
import { registerWorkflowSwarmCommands } from './workflow-swarm-commands.js';
|
|
357
4
|
export function registerWorkflowCommands(program, io) {
|
|
358
|
-
const
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
addJsonOption(refactor
|
|
362
|
-
.option('--code', 'use peaks-code orchestration mode')
|
|
363
|
-
.option('--rd', 'use peaks-rd direct mode')
|
|
364
|
-
.option('--dry-run', 'print gates and required artifacts', true)
|
|
365
|
-
.option('--no-dry-run', 'unsupported: do not modify code from this command')).action((options) => {
|
|
366
|
-
if (options.dryRun === false) {
|
|
367
|
-
failUnsupportedNonDryRun(io, 'refactor', options.json);
|
|
368
|
-
return;
|
|
369
|
-
}
|
|
370
|
-
if (options.code && options.rd) {
|
|
371
|
-
printResult(io, fail('refactor', 'CONFLICTING_REFACTOR_MODE', 'Choose either --code or --rd, not both', {}, ['Run peaks refactor --code --dry-run']), options.json);
|
|
372
|
-
process.exitCode = 1;
|
|
373
|
-
return;
|
|
374
|
-
}
|
|
375
|
-
const mode = options.rd ? 'rd' : 'code';
|
|
376
|
-
printResult(io, ok('refactor', createRefactorDryRun(mode), [], ['This dry run never edits code']), options.json);
|
|
377
|
-
});
|
|
378
|
-
const tech = program.command('tech').description('Plan and inspect technical dry-run gates');
|
|
379
|
-
addTechPlanOptions(tech.command('plan')).action((options) => runTechPlan(io, options));
|
|
380
|
-
addTechStatusOptions(tech.command('status')).action((options) => runTechStatus(io, options));
|
|
381
|
-
addTechPlanOptions(program.command('tech-plan')).action((options) => runTechPlan(io, options));
|
|
382
|
-
addTechStatusOptions(program.command('tech-status')).action((options) => runTechStatus(io, options));
|
|
383
|
-
// (`peaks tech plan-change-id` / `peaks tech status-change-id`).
|
|
384
|
-
// Additive; the session-axis registrations above are byte-for-byte untouched.
|
|
385
|
-
registerTechCommands(program, io);
|
|
386
|
-
const workflow = program.command('workflow').description('Plan workflow routing dry-run graphs');
|
|
387
|
-
addWorkflowRouteOptions(workflow.command('route'), 'Plan a workflow routing dry-run summary').action((options) => runWorkflowRoute(io, options));
|
|
388
|
-
addWorkflowRouteOptions(program.command('route'), 'Plan a workflow routing dry-run summary').action((options) => runWorkflowRoute(io, options));
|
|
389
|
-
addWorkflowRouteOptions(workflow.command('autonomous'), 'Plan an autonomous workflow handoff summary').action((options) => runAutonomousWorkflow(io, options));
|
|
390
|
-
addWorkflowRouteOptions(program.command('autonomous'), 'Plan an autonomous workflow handoff summary').action((options) => runAutonomousWorkflow(io, options));
|
|
391
|
-
const autonomousResume = workflow
|
|
392
|
-
.command('autonomous-resume')
|
|
393
|
-
.description('Manage autonomous workflow resume artifacts');
|
|
394
|
-
addAutonomousResumeInitOptions(autonomousResume.command('init')).action((options) => runAutonomousResumeInit(io, options));
|
|
395
|
-
const autonomousResumeAlias = program
|
|
396
|
-
.command('autonomous-resume')
|
|
397
|
-
.description('Manage autonomous workflow resume artifacts');
|
|
398
|
-
addAutonomousResumeInitOptions(autonomousResumeAlias.command('init')).action((options) => runAutonomousResumeInit(io, options));
|
|
399
|
-
addJsonOption(workflow
|
|
400
|
-
.command('verify-pipeline')
|
|
401
|
-
.description('Verify the complete rd→qa pipeline was followed for a request. Scans the v2.17.0 canonical session-axis layout (artifacts under _runtime per-session) and falls back to the legacy v2.16.0 change-axis forms during the 1-minor-release deprecation window.')
|
|
402
|
-
.requiredOption('--rid <rid>', 'request identifier')
|
|
403
|
-
.requiredOption('--project <path>', 'project root path')
|
|
404
|
-
.option('--type <type>', 'request type: feature, bugfix, refactor, docs, config, chore', 'feature')
|
|
405
|
-
.option('--session-id <sid>', 'slice 2026-06-13-peaks-workflow-skip: session id under which to read the skip-state file. When omitted, no skip-state is consulted (legacy behavior).')).action(async (options) => {
|
|
406
|
-
try {
|
|
407
|
-
const result = await verifyPipeline({
|
|
408
|
-
projectRoot: options.project,
|
|
409
|
-
rid: options.rid,
|
|
410
|
-
...(options.type ? { requestType: options.type } : {}),
|
|
411
|
-
...(options.sessionId ? { sessionId: options.sessionId } : {})
|
|
412
|
-
});
|
|
413
|
-
const exitOk = result.complete ? 0 : 1;
|
|
414
|
-
printResult(io, result.complete
|
|
415
|
-
? ok('workflow.verify-pipeline', result)
|
|
416
|
-
: fail('workflow.verify-pipeline', 'PIPELINE_INCOMPLETE', `${result.violations.length} violation(s): ${result.violations.join('; ')}`, result, result.nextActions), options.json);
|
|
417
|
-
process.exitCode = exitOk;
|
|
418
|
-
}
|
|
419
|
-
catch (error) {
|
|
420
|
-
printResult(io, fail('workflow.verify-pipeline', 'VERIFY_FAILED', getErrorMessage(error), { acceptedForm: 'none', gateC: 'fail' }, ['Check that --project and --rid are correct.']), options.json);
|
|
421
|
-
process.exitCode = 1;
|
|
422
|
-
}
|
|
423
|
-
});
|
|
424
|
-
// Mark gates as bypassed for a specific rid, so the next
|
|
425
|
-
// `verify-pipeline` reports them as `status: 'skipped'` instead of
|
|
426
|
-
// missing-evidence violations. See RD
|
|
427
|
-
// for the three-rule classifier (type allowlist, one-time
|
|
428
|
-
// semantics, role-based auth).
|
|
429
|
-
addJsonOption(workflow
|
|
430
|
-
.command('skip')
|
|
431
|
-
.description('Skip specific gates for a request (RD/QA). Use --dry-run to preview without writing. Allowed gate names: QA / RD (phase shortcuts) or specific gate names (rd-request-exists, prd-handoff, bug-analysis, code-review, security-review, perf-baseline, qa-request-exists, test-cases, test-report). Three rules apply: (1) only docs/config/chore slices can skip; (2) skip is one-time per rid; (3) script callers must also pass --i-have-reviewed.')
|
|
432
|
-
.requiredOption('--rid <rid>', 'request identifier')
|
|
433
|
-
.requiredOption('--project <path>', 'project root path')
|
|
434
|
-
.requiredOption('--gates <list>', 'comma-separated gate names (e.g. "QA" or "QA,slice-check" or "code-review,security-review")')
|
|
435
|
-
.requiredOption('--reason <text>', 'free-text justification; persisted in the state file and surfaced in verify-pipeline nextActions')
|
|
436
|
-
.option('--dry-run', 'preview the skip; do not write the state file')
|
|
437
|
-
.option('--i-have-reviewed', 'required when caller is a script (CI / postinstall / cron). LLM and human callers do not need this.')).action(async (options) => {
|
|
438
|
-
try {
|
|
439
|
-
// Resolve the session id from the project's current binding
|
|
440
|
-
// (CLI is the single source of truth per the dev-preference
|
|
441
|
-
// rules). The skip-state is keyed by session id, so the
|
|
442
|
-
// operator's current session determines where the marker
|
|
443
|
-
// lives. Auto-rotation on outer-mismatch is irrelevant here
|
|
444
|
-
// because we read, not write, the binding.
|
|
445
|
-
const sessionId = getSessionId(options.project);
|
|
446
|
-
if (sessionId === null) {
|
|
447
|
-
printResult(io, fail('workflow.skip', 'NO_ACTIVE_SESSION', `project "${options.project}" has no peaks-code session binding; run \`peaks workspace init --project ${options.project} --json\` first`, { applied: false }, [`peaks workspace init --project ${options.project} --json`]), options.json);
|
|
448
|
-
process.exitCode = 1;
|
|
449
|
-
return;
|
|
450
|
-
}
|
|
451
|
-
const callerKind = detectCallerKind(process.env['PEAKS_CALLER_ID']);
|
|
452
|
-
const skipArgs = {
|
|
453
|
-
rid: options.rid,
|
|
454
|
-
gatesRaw: options.gates,
|
|
455
|
-
reason: options.reason,
|
|
456
|
-
...(options.dryRun === true ? { dryRun: true } : {}),
|
|
457
|
-
...(options.iHaveReviewed === true ? { iHaveReviewed: true } : {}),
|
|
458
|
-
callerKind
|
|
459
|
-
};
|
|
460
|
-
const result = await applySkip(options.project, sessionId, skipArgs);
|
|
461
|
-
if (result.applied) {
|
|
462
|
-
printResult(io, ok('workflow.skip', result, [], [
|
|
463
|
-
`Skip applied for rid "${options.rid}": gates [${result.skippedGates.join(', ')}] marked as status: 'skipped' on next verify-pipeline.`,
|
|
464
|
-
`State file: ${result.persistedTo}`,
|
|
465
|
-
`Run \`peaks workflow verify-pipeline --rid ${options.rid} --project ${options.project} --session-id ${sessionId} --json\` to confirm.`
|
|
466
|
-
]), options.json);
|
|
467
|
-
return;
|
|
468
|
-
}
|
|
469
|
-
if (result.idempotent) {
|
|
470
|
-
printResult(io, ok('workflow.skip', result, [], [`Skip already applied for rid "${options.rid}"; idempotent no-op.`]), options.json);
|
|
471
|
-
return;
|
|
472
|
-
}
|
|
473
|
-
// applied:false + reason → rejection.
|
|
474
|
-
printResult(io, fail('workflow.skip', 'SKIP_REJECTED', result.reason ?? 'unknown rejection', result, [
|
|
475
|
-
'See RD request for the three rules: docs/config/chore only, one-time per rid, script callers need --i-have-reviewed.'
|
|
476
|
-
]), options.json);
|
|
477
|
-
process.exitCode = 1;
|
|
478
|
-
}
|
|
479
|
-
catch (error) {
|
|
480
|
-
printResult(io, fail('workflow.skip', 'SKIP_FAILED', getErrorMessage(error), { applied: false }, [
|
|
481
|
-
'Check that --project and --rid are correct; --reason and --gates are required.'
|
|
482
|
-
]), options.json);
|
|
483
|
-
process.exitCode = 1;
|
|
484
|
-
}
|
|
485
|
-
});
|
|
486
|
-
// `registerSwarmCommands` (a thin wrapper around the new
|
|
487
|
-
// `planRdSwarmGraph` service). The legacy `peaks swarm plan` /
|
|
488
|
-
// `peaks swarm-plan` registrations above stay in-place for back-compat
|
|
489
|
-
const swarm = program.command('swarm').description('Plan RD swarm dry-run graphs');
|
|
490
|
-
addSwarmPlanOptions(swarm.command('plan'), true).action(async (options) => {
|
|
491
|
-
await runSwarmPlan(io, options);
|
|
492
|
-
});
|
|
493
|
-
addSwarmPlanOptions(program.command('swarm-plan'), false).action(async (options) => {
|
|
494
|
-
await runSwarmPlan(io, options);
|
|
495
|
-
});
|
|
496
|
-
registerSwarmCommands(program, io);
|
|
497
|
-
// above are byte-for-byte untouched.
|
|
498
|
-
registerAutonomousSwarmCommands(program, io);
|
|
499
|
-
// Slice 4.0.8 — workflow lifecycle CLI (init / graph show / graph list /
|
|
500
|
-
// node prepare / node ack / node mark-lost / terminalize). Registered
|
|
501
|
-
// sibling to planning handlers per RD §4.
|
|
502
|
-
registerWorkflowLifecycleCommand(program, io);
|
|
503
|
-
// Slice #13 Swarm Algorithm Upgrade — 4 additional subcommands.
|
|
504
|
-
// (peaks swarm plan above is slice #13.1; the 4 below are 13.2-13.5).
|
|
505
|
-
addJsonOption(swarm
|
|
506
|
-
.command('pipeline')
|
|
507
|
-
.description('13.2: sequential pipeline — wire to peaks sub-agent dispatch in series (placeholder)')
|
|
508
|
-
.requiredOption('--project <path>', 'target project root')).action((options) => {
|
|
509
|
-
printResult(io, ok('swarm.pipeline', {
|
|
510
|
-
project: options.project,
|
|
511
|
-
status: 'placeholder',
|
|
512
|
-
nextSteps: [
|
|
513
|
-
'For each sub-task in the plan, run `peaks sub-agent dispatch <role> --prompt <task>`.',
|
|
514
|
-
'The slice is read-only here; the sub-agent harness owns the runtime execution.'
|
|
515
|
-
]
|
|
516
|
-
}, [], [
|
|
517
|
-
'swarm.pipeline is a sequencing facade; today the LLM composes peaks sub-agent dispatch in series.'
|
|
518
|
-
]), options.json);
|
|
519
|
-
});
|
|
520
|
-
addJsonOption(swarm
|
|
521
|
-
.command('dispatch')
|
|
522
|
-
.description('13.3: speculative fan-out dispatch (placeholder; --speculative flag for future)')
|
|
523
|
-
.requiredOption('--project <path>', 'target project root')
|
|
524
|
-
.option('--speculative', 'enable speculative mode (placeholder)', false)).action((options) => {
|
|
525
|
-
printResult(io, ok('swarm.dispatch', {
|
|
526
|
-
project: options.project,
|
|
527
|
-
speculative: options.speculative,
|
|
528
|
-
status: 'placeholder'
|
|
529
|
-
}, [], [
|
|
530
|
-
options.speculative
|
|
531
|
-
? 'Speculative mode acknowledged; for now use peaks sub-agent dispatch for parallel sub-tasks.'
|
|
532
|
-
: 'Pass --speculative to acknowledge speculative mode (no-op for now).'
|
|
533
|
-
]), options.json);
|
|
534
|
-
});
|
|
535
|
-
addJsonOption(swarm
|
|
536
|
-
.command('verify')
|
|
537
|
-
.description('13.4: adversarial verification — runs peaks doctor in skeptic iterations (placeholder; future slice uses skeptic prompts)')
|
|
538
|
-
.requiredOption('--project <path>', 'target project root')
|
|
539
|
-
.option('--skeptics <count>', 'number of skeptic iterations to run (default 1)', '1')).action((options) => {
|
|
540
|
-
const n = Number.parseInt(options.skeptics, 10);
|
|
541
|
-
const iterations = Number.isFinite(n) && n > 0 ? n : 1;
|
|
542
|
-
const history = [];
|
|
543
|
-
for (let i = 1; i <= iterations; i++) {
|
|
544
|
-
history.push({
|
|
545
|
-
iteration: i,
|
|
546
|
-
ok: true,
|
|
547
|
-
detail: `iter ${i}/${iterations}: re-scan invoked; future slice will run adversarial here`
|
|
548
|
-
});
|
|
549
|
-
}
|
|
550
|
-
printResult(io, ok('swarm.verify', {
|
|
551
|
-
project: options.project,
|
|
552
|
-
iterations,
|
|
553
|
-
history
|
|
554
|
-
}, [], [
|
|
555
|
-
`${iterations} skeptic iteration(s) recorded; each iteration re-runs peaks doctor to catch regressions.`,
|
|
556
|
-
'A future slice will land the actual adversarial verification (currently a pass-through re-scan).'
|
|
557
|
-
]), options.json);
|
|
558
|
-
});
|
|
559
|
-
addJsonOption(swarm
|
|
560
|
-
.command('loop')
|
|
561
|
-
.description('13.5: loop-until-dry — runs peaks doctor in a loop until no new FAIL findings (placeholder; max 10 iterations)')
|
|
562
|
-
.requiredOption('--project <path>', 'target project root')).action((options) => {
|
|
563
|
-
const history = [];
|
|
564
|
-
for (let i = 1; i <= 10; i++) {
|
|
565
|
-
const failCount = 0;
|
|
566
|
-
history.push({ iteration: i, failCount, status: failCount === 0 ? 'dry' : 'still-failing' });
|
|
567
|
-
if (i > 1 && history[i - 2]?.failCount === failCount)
|
|
568
|
-
break;
|
|
569
|
-
}
|
|
570
|
-
const finalStatus = history[history.length - 1]?.failCount === 0 ? 'dry' : 'still-failing';
|
|
571
|
-
printResult(io, ok('swarm.loop', {
|
|
572
|
-
project: options.project,
|
|
573
|
-
iterations: history.length,
|
|
574
|
-
history,
|
|
575
|
-
status: finalStatus
|
|
576
|
-
}, [], [
|
|
577
|
-
`loop ran ${history.length} iteration(s); status: ${finalStatus}`,
|
|
578
|
-
'A future slice will land the actual peaks doctor call (currently a stub).'
|
|
579
|
-
]), options.json);
|
|
580
|
-
});
|
|
581
|
-
addJsonOption(program
|
|
582
|
-
.command('recommend')
|
|
583
|
-
.description('Create a dry-run recommendation plan for a workflow')
|
|
584
|
-
.requiredOption('--workflow <workflow>', 'workflow: code-refactor, product-refactor, or frontend-design')
|
|
585
|
-
.option('--language <language>', 'human presentation language')).action((options) => {
|
|
586
|
-
if (!isRecommendationWorkflow(options.workflow)) {
|
|
587
|
-
printResult(io, fail('recommend', 'UNSUPPORTED_RECOMMENDATION_WORKFLOW', `Unsupported recommendation workflow ${options.workflow}`, {}, ['Use --workflow code-refactor, product-refactor, or frontend-design']), options.json);
|
|
588
|
-
process.exitCode = 1;
|
|
589
|
-
return;
|
|
590
|
-
}
|
|
591
|
-
printResult(io, ok('recommend', createRecommendationPlan({
|
|
592
|
-
workflow: options.workflow,
|
|
593
|
-
language: options.language ?? readConfig().language ?? 'en'
|
|
594
|
-
})), options.json);
|
|
595
|
-
});
|
|
5
|
+
const workflow = registerWorkflowPlanningCommands(program, io);
|
|
6
|
+
registerWorkflowGateCommands(workflow, io);
|
|
7
|
+
registerWorkflowSwarmCommands(program, io);
|
|
596
8
|
}
|