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,283 +1,113 @@
|
|
|
1
1
|
/**
|
|
2
|
+
* The `--from-dag` path of `peaks sub-agent dispatch`.
|
|
2
3
|
*
|
|
3
|
-
* Pulled out of `dispatch-commands.ts` to honor the
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
4
|
+
* Pulled out of `dispatch-commands.ts` to honor the file-size cap (Karpathy #2
|
|
5
|
+
* Simplicity First). The single-dispatch action stays in `dispatch-commands.ts`;
|
|
6
|
+
* the DAG-dispatch path lives here because the two share no logic — the
|
|
7
|
+
* warm-path single dispatch does NOT load slice-dag / dag-orchestrator /
|
|
8
|
+
* contract-store (slice 9 perf), while the `--from-dag` codepath loads all
|
|
9
|
+
* three on first call.
|
|
9
10
|
*
|
|
10
|
-
* 2.7.0 slice-dag-dispatcher MVP: read a SliceDag from a file and run
|
|
11
|
-
*
|
|
12
|
-
* that emits the per-IDE `buildToolCall` envelope for each topological
|
|
13
|
-
* level.
|
|
11
|
+
* 2.7.0 slice-dag-dispatcher MVP: read a SliceDag from a file and run it
|
|
12
|
+
* through `runLayeredDag`. The orchestrator's `runSlice` is a thin wrapper
|
|
13
|
+
* that emits the per-IDE `buildToolCall` envelope for each topological level.
|
|
14
14
|
*
|
|
15
15
|
* 1.2 MVP scope: this dispatches the FIRST topological level synchronously
|
|
16
|
-
* (returns the dispatch specs); subsequent levels are not surfaced in
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
16
|
+
* (returns the dispatch specs); subsequent levels are not surfaced in the CLI
|
|
17
|
+
* envelope because the LLM-side runner must actually execute each
|
|
18
|
+
* `buildToolCall` and write the resulting contract before level 2+ can be
|
|
19
|
+
* safely auto-advanced. The LLM re-invokes `peaks sub-agent dispatch --from-dag
|
|
20
|
+
* <file> --batch-id <id>` after writing level-1 contracts, which causes
|
|
21
|
+
* `runLayeredDag` to plan level 2+ with the level-1 ancestor contracts spliced
|
|
22
|
+
* into their dispatch prompts.
|
|
23
23
|
*
|
|
24
|
-
* Internally,
|
|
25
|
-
* cancel-on-fail path is exercised end-to-end during the MVP emit; only
|
|
26
|
-
*
|
|
24
|
+
* Internally, `runLayeredDag` DOES iterate all levels so its join-barrier +
|
|
25
|
+
* cancel-on-fail path is exercised end-to-end during the MVP emit; only the
|
|
26
|
+
* CLI envelope is filtered to level-1 toolCalls (see `firstLevelIds`).
|
|
27
27
|
*/
|
|
28
|
-
import { randomUUID } from 'node:crypto';
|
|
29
28
|
import { printResult } from '../cli-helpers.js';
|
|
30
|
-
import {
|
|
31
|
-
import {
|
|
32
|
-
import {
|
|
33
|
-
import {
|
|
34
|
-
import { planFileOverlapWaves } from '../../services/dispatch/file-overlap-wave-planner.js';
|
|
29
|
+
import { buildDagSuccessEnvelope } from './dispatch-dag-envelope.js';
|
|
30
|
+
import { emitDagFailure } from './dispatch-dag-failure.js';
|
|
31
|
+
import { assertGraphNodesMapped, loadDagRuntime, readDagOrFail, resolveDagIds, topologicalLevelsOrFail } from './dispatch-dag-preflight.js';
|
|
32
|
+
import { makeCliRunner, makeNoopWriter, planFirstLevelWaves, resolveDagDispatcher } from './dispatch-dag-runners.js';
|
|
35
33
|
export async function runDispatchFromDag(role, options, asJson, io) {
|
|
36
34
|
if (!options.fromDag)
|
|
37
35
|
return;
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
'unknown-sid';
|
|
44
|
-
const rid = options.requestId ?? 'unknown-rid';
|
|
45
|
-
const batchId = options.batchId ?? randomUUID();
|
|
46
|
-
// Slice 9 (dispatch CLI latency): the --from-dag codepath loads three
|
|
47
|
-
// heavy modules (slice-dag, dag-orchestrator, contract-store) that
|
|
48
|
-
// transitively import 10+ more services. They are NOT touched by the
|
|
49
|
-
// warm-path single-dispatch action, so we lazy-load them here only
|
|
50
|
-
// when --from-dag is actually requested. The dynamic-import promise
|
|
51
|
-
// resolves on first call, then ESM caches the module for subsequent
|
|
52
|
-
// calls in the same process.
|
|
53
|
-
const [{ readFileSync }, sliceDagMod, dagOrchestratorMod, contractStoreMod] = await Promise.all([
|
|
54
|
-
import('node:fs'),
|
|
55
|
-
import('../../services/dispatch/slice-dag.js'),
|
|
56
|
-
import('../../services/code/dag-orchestrator.js'),
|
|
57
|
-
import('../../services/dispatch/contract-store.js')
|
|
58
|
-
]);
|
|
59
|
-
const { validateDag, topologicalLevels, isSliceComplexity } = sliceDagMod;
|
|
60
|
-
const { runLayeredDag } = dagOrchestratorMod;
|
|
61
|
-
const { listContracts, hashContract } = contractStoreMod;
|
|
62
|
-
let dag;
|
|
63
|
-
try {
|
|
64
|
-
const raw = readFileSync(options.fromDag, 'utf8');
|
|
65
|
-
const parsed = JSON.parse(raw);
|
|
66
|
-
validateDag(parsed);
|
|
67
|
-
dag = parsed;
|
|
68
|
-
}
|
|
69
|
-
catch (err) {
|
|
70
|
-
printResult(io, fail('sub-agent.dispatch', 'INVALID_DAG', `failed to read or validate DAG from ${options.fromDag}: ${err.message}`, { role, toolCall: null, dispatchRecordPath: null }, [
|
|
71
|
-
'Check the JSON file at the given path; the DAG must have {nodes, edges} and pass validateDag().'
|
|
72
|
-
]), asJson);
|
|
73
|
-
process.exitCode = 1;
|
|
36
|
+
const scope = { role, asJson, io };
|
|
37
|
+
const ids = resolveDagIds(options);
|
|
38
|
+
const runtime = await loadDagRuntime();
|
|
39
|
+
const dag = readDagOrFail(runtime, options.fromDag, scope);
|
|
40
|
+
if (dag === null)
|
|
74
41
|
return;
|
|
75
|
-
|
|
76
|
-
// Slice 4.0.8 RD §4 D4c: each DAG node must map to an explicitly
|
|
77
|
-
// prepared workflow graph node before sub-agent dispatch. Reject
|
|
78
|
-
// unmapped nodes with PEAKS_GRAPH_NODE_REQUIRED. The mapping is
|
|
79
|
-
// carried via the `graphNode` annotation on each DAG node, OR — as
|
|
80
|
-
// a back-compat fallback for DAGs without the annotation — the
|
|
81
|
-
// DAG node id itself is treated as the graph node id. Either way,
|
|
82
|
-
// the graph node must be prepared (RD §3 D4c) before the dispatch
|
|
83
|
-
// CLI runs.
|
|
84
|
-
for (const node of dag.nodes) {
|
|
85
|
-
const graphNodeId = node.graphNode;
|
|
86
|
-
const candidate = typeof graphNodeId === 'string' && graphNodeId.length > 0 ? graphNodeId : node.id;
|
|
87
|
-
if (typeof candidate !== 'string' || candidate.length === 0) {
|
|
88
|
-
printResult(io, fail('sub-agent.dispatch', 'PEAKS_GRAPH_NODE_REQUIRED', `DAG node ${node.id} has no graph-node mapping (RD §4 D4c)`, { role, toolCall: null, dispatchRecordPath: null, dagNodeId: node.id }, [
|
|
89
|
-
'Annotate the DAG node with `graphNode: "<id>"` so each dispatch can bind a prepared graph node.'
|
|
90
|
-
]), asJson);
|
|
91
|
-
process.exitCode = 1;
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
// MVP (1.2): the orchestrator iterates topological levels + join
|
|
96
|
-
// barrier + cancel-on-fail end-to-end. The CLI's runner returns `done`
|
|
97
|
-
// for every leaf (so runDag's cancel-on-fail path is exercised when a
|
|
98
|
-
// leaf actually fails); the CLI envelope filters `emittedToolCalls` to
|
|
99
|
-
// the first level only (see `firstLevelIds`). The LLM-side runner
|
|
100
|
-
// re-invokes `--from-dag` for level 2+ after writing level-1
|
|
101
|
-
// contracts via `peaks contract write`.
|
|
102
|
-
let levelArr;
|
|
103
|
-
try {
|
|
104
|
-
levelArr = topologicalLevels(dag);
|
|
105
|
-
}
|
|
106
|
-
catch (err) {
|
|
107
|
-
printResult(io, fail('sub-agent.dispatch', 'INVALID_DAG', `topologicalLevels failed for ${options.fromDag}: ${err.message}`, { role, toolCall: null, dispatchRecordPath: null }, [
|
|
108
|
-
'The DAG passed validateDag() but topologicalLevels threw (likely a cycle that slipped past validateDag, or a runtime invariant).',
|
|
109
|
-
'Inspect the DAG file with the editor and re-invoke dispatch. (No peaks scan dag CLI ships in 2.7.0; if you need a programmatic DAG validator, import validateDag / topologicalLevels from src/services/dispatch/slice-dag.ts directly.)'
|
|
110
|
-
]), asJson);
|
|
111
|
-
process.exitCode = 1;
|
|
42
|
+
if (assertGraphNodesMapped(dag, scope) === null)
|
|
112
43
|
return;
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
44
|
+
const levelArr = topologicalLevelsOrFail(runtime, dag, options.fromDag, scope);
|
|
45
|
+
if (levelArr === null)
|
|
46
|
+
return;
|
|
47
|
+
const dispatched = resolveDagDispatcher(ids.projectRoot);
|
|
48
|
+
if (!dispatched.dispatcher.supportsRole(role)) {
|
|
49
|
+
emitDagFailure(io, asJson, {
|
|
50
|
+
role,
|
|
51
|
+
code: 'IDE_NOT_SUPPORTED',
|
|
52
|
+
message: `IDE ${dispatched.ide} does not support role "${role}"`,
|
|
53
|
+
nextActions: [
|
|
54
|
+
'Switch to a registered IDE (e.g. claude-code) or pick a role the current IDE supports.'
|
|
55
|
+
]
|
|
56
|
+
});
|
|
126
57
|
return;
|
|
127
58
|
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
59
|
+
await runLevels({ runtime, dag, levelArr, dispatched, ids, scope, fromDag: options.fromDag });
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Run every topological level through `runLayeredDag` and print the level-1
|
|
63
|
+
* envelope. Upstream contracts are read first so downstream-level prompts get
|
|
64
|
+
* auto-injected ancestors via `formatContractInjection` (empty at level-1 emit
|
|
65
|
+
* time, which is when the LLM re-invokes with fresh level-1 contracts).
|
|
66
|
+
*/
|
|
67
|
+
async function runLevels(run) {
|
|
68
|
+
const { runtime, dag, levelArr, dispatched, ids, scope, fromDag } = run;
|
|
69
|
+
const existingContracts = runtime.listContracts(ids.projectRoot, ids.sid);
|
|
136
70
|
const firstLevelIds = new Set(levelArr[0] ?? []);
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
const firstLevelWaves = firstLevelDescriptors.length > 0 && firstLevelDescriptors.every((d) => d.files.length > 0)
|
|
146
|
-
? planFileOverlapWaves(firstLevelDescriptors).waves
|
|
147
|
-
: null;
|
|
148
|
-
const emittedToolCalls = [];
|
|
149
|
-
const emittedSliceIds = [];
|
|
150
|
-
// CLI runner: emit the per-slice `buildToolCall` envelope, then return
|
|
151
|
-
// `done` with an empty `publicSurface` placeholder. The orchestrator
|
|
152
|
-
// treats the slice as "CLI-emitted, awaiting LLM-side execution" and
|
|
153
|
-
// advances to the next topological level (or breaks on failure). The
|
|
154
|
-
// placeholder surface is intentionally empty: the real public surface
|
|
155
|
-
// arrives later via `peaks contract write` from the LLM-side runner,
|
|
156
|
-
// and overwrites the CLI placeholder contract written by `noopWriter`.
|
|
157
|
-
// Why not `cancelled`? Returning `cancelled` here short-circuits
|
|
158
|
-
// runDag's join-barrier + cancel-on-fail path — the orchestrator
|
|
159
|
-
// breaks out after the first level with a cancellation, which hides
|
|
160
|
-
// the real cancel-on-fail semantics from the test suite (and from any
|
|
161
|
-
// future caller that wants to use `runDag` end-to-end from the CLI).
|
|
162
|
-
// Returning `done` exercises the full happy path; cancel-on-fail
|
|
163
|
-
// semantics will be covered when 1.3 lands real per-IDE await.
|
|
164
|
-
const cliRunner = async (spec) => {
|
|
165
|
-
const toolCall = dispatcher.buildToolCall({
|
|
166
|
-
role: spec.role,
|
|
167
|
-
prompt: spec.prompt,
|
|
168
|
-
requestId: rid,
|
|
169
|
-
sessionId: sid
|
|
170
|
-
});
|
|
171
|
-
if (firstLevelIds.has(spec.sliceId)) {
|
|
172
|
-
emittedToolCalls.push(toolCall);
|
|
173
|
-
emittedSliceIds.push(spec.sliceId);
|
|
174
|
-
}
|
|
175
|
-
return {
|
|
176
|
-
status: 'done',
|
|
177
|
-
publicSurface: {
|
|
178
|
-
exports: [],
|
|
179
|
-
types: [],
|
|
180
|
-
publicSignatures: []
|
|
181
|
-
}
|
|
182
|
-
};
|
|
183
|
-
};
|
|
184
|
-
// CLI noop writer — the orchestrator collects a `SliceContract` per
|
|
185
|
-
// emitted toolCall so downstream re-invocations (level 2+) can splice
|
|
186
|
-
// ancestor contracts via `formatContractInjection`. We don't write to
|
|
187
|
-
// disk here (the LLM-side runner does that via `peaks contract write`
|
|
188
|
-
// after each toolCall resolves), but the returned placeholder MUST be
|
|
189
|
-
// shape-valid: the `contractHash` field has to be a real SHA-256 hex
|
|
190
|
-
// string so formatContractInjection + downstream validators don't
|
|
191
|
-
// reject the placeholder. The placeholder hash is computed from the
|
|
192
|
-
// slice identity only (`sliceId|sessionId`) — it's deterministic,
|
|
193
|
-
// stable, and collision-free for the MVP run, but obviously does NOT
|
|
194
|
-
// represent the slice's actual public surface. The LLM-side runner's
|
|
195
|
-
// `peaks contract write` call will overwrite this with a content-based
|
|
196
|
-
// hash once the slice finishes.
|
|
197
|
-
const noopWriter = (sliceId, _publicSurface) => {
|
|
198
|
-
const partial = {
|
|
199
|
-
sliceId,
|
|
200
|
-
sessionId: sid,
|
|
201
|
-
exports: [],
|
|
202
|
-
types: [],
|
|
203
|
-
publicSignatures: []
|
|
204
|
-
};
|
|
205
|
-
return {
|
|
206
|
-
sliceId,
|
|
207
|
-
sessionId: sid,
|
|
208
|
-
completedAt: new Date(0).toISOString(), // epoch sentinel = "placeholder, not yet finished"
|
|
209
|
-
exports: [],
|
|
210
|
-
types: [],
|
|
211
|
-
publicSignatures: [],
|
|
212
|
-
contractHash: hashContract(partial)
|
|
213
|
-
};
|
|
214
|
-
};
|
|
215
|
-
// runLayeredDag IS in the path: validates the DAG, iterates all
|
|
216
|
-
// topological levels (foundation/upstreamSync slices prioritized within
|
|
217
|
-
// each level by `topologicalLevels`), runs the join barrier after
|
|
218
|
-
// each level, and triggers cancel-on-fail rollback if any leaf
|
|
219
|
-
// returns `failed` (or `cancelled`, once 1.3 lands). The CLI
|
|
220
|
-
// envelope below filters `emittedToolCalls` / `emittedSliceIds` to
|
|
221
|
-
// the first level — see the `firstLevelIds` filter inside `cliRunner`.
|
|
71
|
+
const emissions = { toolCalls: [], sliceIds: [] };
|
|
72
|
+
const runSlice = makeCliRunner({
|
|
73
|
+
firstLevelIds,
|
|
74
|
+
dispatcher: dispatched.dispatcher,
|
|
75
|
+
ids,
|
|
76
|
+
emissions
|
|
77
|
+
});
|
|
78
|
+
const writeContractFn = makeNoopWriter(runtime.hashContract, ids.sid);
|
|
222
79
|
try {
|
|
223
|
-
await runLayeredDag(dag, {
|
|
224
|
-
projectRoot,
|
|
225
|
-
sessionId: sid,
|
|
80
|
+
await runtime.runLayeredDag(dag, {
|
|
81
|
+
projectRoot: ids.projectRoot,
|
|
82
|
+
sessionId: ids.sid,
|
|
226
83
|
existingContracts,
|
|
227
|
-
runSlice
|
|
228
|
-
writeContractFn
|
|
84
|
+
runSlice,
|
|
85
|
+
writeContractFn
|
|
229
86
|
});
|
|
230
87
|
}
|
|
231
88
|
catch (err) {
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
89
|
+
emitDagFailure(scope.io, scope.asJson, {
|
|
90
|
+
role: scope.role,
|
|
91
|
+
code: 'INVALID_DAG',
|
|
92
|
+
message: `runLayeredDag failed for ${fromDag}: ${err.message}`,
|
|
93
|
+
nextActions: [
|
|
94
|
+
'runLayeredDag threw DagPlanError; the DAG passed validateDag() but failed at topologicalLevels or contractStore dispatch.',
|
|
95
|
+
'Inspect the DAG file and re-run.'
|
|
96
|
+
]
|
|
97
|
+
});
|
|
241
98
|
return;
|
|
242
99
|
}
|
|
243
|
-
printResult(io,
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
batchId,
|
|
249
|
-
dispatchCount: emittedSliceIds.length,
|
|
100
|
+
printResult(scope.io, buildDagSuccessEnvelope({
|
|
101
|
+
role: scope.role,
|
|
102
|
+
ide: dispatched.dispatcher.label,
|
|
103
|
+
fromDag,
|
|
104
|
+
batchId: ids.batchId,
|
|
250
105
|
levelsTotal: levelArr.length,
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
firstLevelWaves,
|
|
255
|
-
toolCalls: emittedToolCalls,
|
|
106
|
+
emittedSliceIds: emissions.sliceIds,
|
|
107
|
+
emittedToolCalls: emissions.toolCalls,
|
|
108
|
+
firstLevelWaves: planFirstLevelWaves(dag, levelArr),
|
|
256
109
|
existingContractCount: existingContracts.length,
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
// v2.15.0 follow-up — G12/G11/G2: per-slice metadata (foundation /
|
|
261
|
-
// upstreamSync / complexity) for downstream scheduling decisions.
|
|
262
|
-
sliceMeta: emittedSliceIds.map((id) => {
|
|
263
|
-
const node = dag.nodes.find((n) => n.id === id);
|
|
264
|
-
return {
|
|
265
|
-
id,
|
|
266
|
-
foundation: node?.foundation === true,
|
|
267
|
-
upstreamSync: node?.upstreamSync === true,
|
|
268
|
-
complexity: node?.complexity !== undefined && isSliceComplexity(node.complexity)
|
|
269
|
-
? node.complexity
|
|
270
|
-
: null
|
|
271
|
-
};
|
|
272
|
-
}),
|
|
273
|
-
nextActions: [
|
|
274
|
-
'Execute each toolCall in your IDE; on completion, write the slice contract to .peaks/_runtime/<sid>/dispatch/contracts/<slice-id>.json.',
|
|
275
|
-
'Re-invoke `peaks sub-agent dispatch --from-dag <file>` with the same batch-id to advance to the next level once all current-level slices have written contracts.'
|
|
276
|
-
]
|
|
277
|
-
}, [], [
|
|
278
|
-
'MVP (1.2) plans the first level via runLayeredDag orchestrator (cancel-on-fail path active); the LLM drives subsequent levels by re-invoking this command after contract writes.',
|
|
279
|
-
existingContracts.length > 0
|
|
280
|
-
? `Injected ${existingContracts.length} upstream contract(s) into downstream-level prompts via formatContractInjection.`
|
|
281
|
-
: 'No upstream contracts found; first-level prompts have empty ancestor blocks.'
|
|
282
|
-
]), asJson);
|
|
110
|
+
dag,
|
|
111
|
+
isSliceComplexity: runtime.isSliceComplexity
|
|
112
|
+
}), scope.asJson);
|
|
283
113
|
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type ProgramIO } from '../cli-helpers.js';
|
|
2
|
+
import type { DispatchOptions } from './sub-agent-shared.js';
|
|
3
|
+
export interface IsolationLeaseInput {
|
|
4
|
+
projectRoot: string;
|
|
5
|
+
sid: string;
|
|
6
|
+
rid: string;
|
|
7
|
+
role: string;
|
|
8
|
+
batchId: string;
|
|
9
|
+
asJson: boolean;
|
|
10
|
+
}
|
|
11
|
+
export interface IsolationLease {
|
|
12
|
+
isolationMode: 'worktree' | 'container' | 'vm' | null;
|
|
13
|
+
leaseId: string | null;
|
|
14
|
+
worktreePath: string | null;
|
|
15
|
+
worktreeBranch: string | null;
|
|
16
|
+
}
|
|
17
|
+
export declare function resolveIsolationLease(io: ProgramIO, options: DispatchOptions, input: IsolationLeaseInput): Promise<IsolationLease | null>;
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
// The `--isolation` lease set-up of `peaks sub-agent dispatch`. Validates the mode,
|
|
2
|
+
// spawns the container/worktree lease, and hands the handles back; `vm` fail-fasts
|
|
3
|
+
// because the runtime is not implemented yet.
|
|
4
|
+
import { fail, getErrorMessage } from 'peaks-loop-shared/result';
|
|
5
|
+
import { printResult } from '../cli-helpers.js';
|
|
6
|
+
import { spawnWorktreeLease, spawnContainerLease } from '../../services/dispatch/isolation-lease.js';
|
|
7
|
+
function rejectInvalidIsolation(io, isolation, role, asJson) {
|
|
8
|
+
printResult(io, fail('sub-agent.dispatch', 'INVALID_ISOLATION', `--isolation only accepts "worktree" | "container" | "vm" (got "${isolation}")`, {
|
|
9
|
+
role,
|
|
10
|
+
toolCall: null,
|
|
11
|
+
dispatchRecordPath: null
|
|
12
|
+
}, ['Drop --isolation or pass --isolation worktree / --isolation container / --isolation vm.']), asJson);
|
|
13
|
+
process.exitCode = 1;
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
async function spawnContainerIsolation(io, input) {
|
|
17
|
+
const { projectRoot, sid, rid, role, batchId, asJson } = input;
|
|
18
|
+
// isolation is now live (Part 8 contract was the
|
|
19
|
+
// bridge; Part 12 is the runtime). Shell out to
|
|
20
|
+
// `peaks container spawn` to run `docker run` and
|
|
21
|
+
// write the container lease.
|
|
22
|
+
const isolationMode = 'container';
|
|
23
|
+
try {
|
|
24
|
+
const spawnResult = await spawnContainerLease({
|
|
25
|
+
projectRoot,
|
|
26
|
+
sessionId: sid,
|
|
27
|
+
rid,
|
|
28
|
+
role,
|
|
29
|
+
purpose: `auto-spawned by dispatch --isolation container (batch=${batchId})`
|
|
30
|
+
});
|
|
31
|
+
// Reuse the leaseId variable — same field semantically
|
|
32
|
+
// (id of the isolation surface the dispatch owns).
|
|
33
|
+
return {
|
|
34
|
+
isolationMode,
|
|
35
|
+
leaseId: spawnResult.leaseId,
|
|
36
|
+
worktreePath: null,
|
|
37
|
+
worktreeBranch: null
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
printResult(io, fail('sub-agent.dispatch', 'ISOLATION_CONTAINER_SPAWN_FAILED', getErrorMessage(error), {
|
|
42
|
+
role,
|
|
43
|
+
toolCall: null,
|
|
44
|
+
dispatchRecordPath: null
|
|
45
|
+
}, [
|
|
46
|
+
'The dispatch aborts when --isolation container lease spawn fails; retry without --isolation or fix the underlying docker error.',
|
|
47
|
+
'For environments without a docker daemon, use --isolation worktree (the L2 production path).'
|
|
48
|
+
]), asJson);
|
|
49
|
+
process.exitCode = 1;
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
async function spawnWorktreeIsolation(io, input) {
|
|
54
|
+
const { projectRoot, sid, rid, role, batchId, asJson } = input;
|
|
55
|
+
const isolationMode = 'worktree';
|
|
56
|
+
try {
|
|
57
|
+
const spawnResult = await spawnWorktreeLease({
|
|
58
|
+
projectRoot,
|
|
59
|
+
sessionId: sid,
|
|
60
|
+
rid,
|
|
61
|
+
role,
|
|
62
|
+
purpose: `auto-spawned by dispatch --isolation worktree (batch=${batchId})`
|
|
63
|
+
});
|
|
64
|
+
return {
|
|
65
|
+
isolationMode,
|
|
66
|
+
leaseId: spawnResult.leaseId,
|
|
67
|
+
worktreePath: spawnResult.path,
|
|
68
|
+
worktreeBranch: spawnResult.branch
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
printResult(io, fail('sub-agent.dispatch', 'ISOLATION_SPAWN_FAILED', getErrorMessage(error), {
|
|
73
|
+
role,
|
|
74
|
+
toolCall: null,
|
|
75
|
+
dispatchRecordPath: null
|
|
76
|
+
}, [
|
|
77
|
+
'The dispatch aborts when --isolation worktree lease spawn fails; retry without --isolation or fix the underlying git error.'
|
|
78
|
+
]), asJson);
|
|
79
|
+
process.exitCode = 1;
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
function rejectVmIsolation(io, input) {
|
|
84
|
+
const { role, asJson } = input;
|
|
85
|
+
// VM isolation mode is the L4 follow-up to L4 container.
|
|
86
|
+
// The CLI contract is shipped (--isolation vm is accepted
|
|
87
|
+
// by the dispatch parser and reflected in the envelope's
|
|
88
|
+
// isolationMode type). The VM runtime (Linux KVM / macOS
|
|
89
|
+
// HyperKit / Windows Hyper-V) is a much larger follow-up
|
|
90
|
+
// and is intentionally not implemented yet — we
|
|
91
|
+
// fail-fast with ISOLATION_VM_NOT_YET_IMPLEMENTED so
|
|
92
|
+
// operators see a clear "this is a placeholder" signal
|
|
93
|
+
// rather than a silent fallback to worktree.
|
|
94
|
+
//
|
|
95
|
+
// The full implementation lives in a future rid; the
|
|
96
|
+
// design is:
|
|
97
|
+
// 1. New service: src/services/vm/vm-lease.ts (parallels
|
|
98
|
+
// worktree-lease.ts / container-lease.ts) — pure lease
|
|
99
|
+
// store with vmId + hypervisor + status.
|
|
100
|
+
// 2. CLI: 'peaks vm spawn --hypervisor kvm|hyperkit|hyperv
|
|
101
|
+
// --image <name> --rid <rid> --role <role>' — runs
|
|
102
|
+
// virsh create / hvftool / hvcreate, captures the
|
|
103
|
+
// vm id, writes the lease.
|
|
104
|
+
// 3. CLI: 'peaks vm release --lease-id <id>' — virsh
|
|
105
|
+
// destroy + cleanup.
|
|
106
|
+
// 4. dispatch --isolation vm: shells out to peaks vm
|
|
107
|
+
// spawn, injects PEAKS_VM_LEASE_ID env (parallel
|
|
108
|
+
// to PEAKS_CONTAINER_LEASE_ID).
|
|
109
|
+
// 5. PreToolUse gate: when the env var is set AND the
|
|
110
|
+
// tool call is bash-with-vm-bearing-command,
|
|
111
|
+
// allow via the vm lease.
|
|
112
|
+
//
|
|
113
|
+
// Until then: fail-fast.
|
|
114
|
+
printResult(io, fail('sub-agent.dispatch', 'ISOLATION_VM_NOT_YET_IMPLEMENTED', '--isolation vm is the L4 follow-up to --isolation container (Part 25 contract); the VM runtime (KVM / HyperKit / Hyper-V) is a much larger follow-up rid and is intentionally not implemented yet. Drop --isolation or pass --isolation worktree / --isolation container for now.', {
|
|
115
|
+
role,
|
|
116
|
+
toolCall: null,
|
|
117
|
+
dispatchRecordPath: null
|
|
118
|
+
}, [
|
|
119
|
+
'The VM contract is shipped (--isolation vm is accepted by the dispatch parser); the runtime is the next rid.',
|
|
120
|
+
'Use --isolation worktree (L2 production) or --isolation container (L4 docker, Part 12) for now.'
|
|
121
|
+
]), asJson);
|
|
122
|
+
process.exitCode = 1;
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
export async function resolveIsolationLease(io, options, input) {
|
|
126
|
+
const { role, asJson } = input;
|
|
127
|
+
// auto-spawns a worktree lease and injects PEAKS_WORKTREE_LEASE_ID
|
|
128
|
+
// into the sub-agent dispatch envelope. This is the bridge that
|
|
129
|
+
// makes the lease-aware gate (Part 2.B) work for sub-agents:
|
|
130
|
+
// without this injection, the gate has no leaseId to consult and
|
|
131
|
+
// the sub-agent would need a separate `peaks worktree auth grant`.
|
|
132
|
+
if (typeof options.isolation === 'string' && options.isolation.length > 0) {
|
|
133
|
+
if (options.isolation !== 'worktree' &&
|
|
134
|
+
options.isolation !== 'container' &&
|
|
135
|
+
options.isolation !== 'vm') {
|
|
136
|
+
return rejectInvalidIsolation(io, options.isolation, role, asJson);
|
|
137
|
+
}
|
|
138
|
+
if (options.isolation === 'container') {
|
|
139
|
+
return spawnContainerIsolation(io, input);
|
|
140
|
+
}
|
|
141
|
+
if (options.isolation === 'worktree') {
|
|
142
|
+
return spawnWorktreeIsolation(io, input);
|
|
143
|
+
}
|
|
144
|
+
else if (options.isolation === 'vm') {
|
|
145
|
+
return rejectVmIsolation(io, input);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return { isolationMode: null, leaseId: null, worktreePath: null, worktreeBranch: null };
|
|
149
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type ProgramIO } from '../cli-helpers.js';
|
|
2
|
+
import { type ContextGuardDecision } from '../../services/context/context-guard.js';
|
|
3
|
+
import { type DispatchOptions } from './sub-agent-shared.js';
|
|
4
|
+
export declare function preflightDispatch(io: ProgramIO, role: string, options: DispatchOptions, asJson: boolean): {
|
|
5
|
+
decision: ContextGuardDecision;
|
|
6
|
+
prompt: string;
|
|
7
|
+
} | null;
|