peaks-loop 4.1.3 → 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 +2 -2
- package/CHANGELOG.md +56 -0
- package/README-en.md +1 -1
- package/README.md +1 -1
- 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/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-emit-handoff-command.js +40 -3
- package/dist/cli/commands/code-gate-step-08-command.js +25 -9
- 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/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/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-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-from-dag.d.ts +27 -0
- package/dist/cli/commands/dispatch-from-dag.js +87 -257
- 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/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/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-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/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/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/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-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-terminalize-command.d.ts +3 -0
- package/dist/cli/commands/workflow-terminalize-command.js +56 -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/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 -657
- 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 +5 -5
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { ok } from 'peaks-loop-shared/result';
|
|
2
|
+
/**
|
|
3
|
+
* Per-slice scheduling metadata (foundation / upstreamSync / complexity) for
|
|
4
|
+
* the level-1 slices the envelope surfaces.
|
|
5
|
+
*/
|
|
6
|
+
function sliceMetaFor(ids, dag, isSliceComplexity) {
|
|
7
|
+
return ids.map((id) => {
|
|
8
|
+
const node = dag.nodes.find((n) => n.id === id);
|
|
9
|
+
return {
|
|
10
|
+
id,
|
|
11
|
+
foundation: node?.foundation === true,
|
|
12
|
+
upstreamSync: node?.upstreamSync === true,
|
|
13
|
+
complexity: node?.complexity !== undefined && isSliceComplexity(node.complexity)
|
|
14
|
+
? node.complexity
|
|
15
|
+
: null
|
|
16
|
+
};
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
/** The `ok('sub-agent.dispatch', …)` envelope for a completed `--from-dag` run. */
|
|
20
|
+
export function buildDagSuccessEnvelope(input) {
|
|
21
|
+
const { role, ide, fromDag, batchId, levelsTotal, emittedSliceIds, emittedToolCalls, firstLevelWaves, existingContractCount, dag, isSliceComplexity } = input;
|
|
22
|
+
const dispatchCount = emittedSliceIds.length;
|
|
23
|
+
return ok('sub-agent.dispatch', {
|
|
24
|
+
envelopeVersion: '2.1.0',
|
|
25
|
+
role,
|
|
26
|
+
ide,
|
|
27
|
+
fromDag,
|
|
28
|
+
batchId,
|
|
29
|
+
dispatchCount,
|
|
30
|
+
levelsTotal,
|
|
31
|
+
firstLevel: emittedSliceIds,
|
|
32
|
+
firstLevelWaves,
|
|
33
|
+
toolCalls: emittedToolCalls,
|
|
34
|
+
existingContractCount,
|
|
35
|
+
expectedCompletionSeconds: 60,
|
|
36
|
+
artifactsPublicPaths: [],
|
|
37
|
+
orchestratorVisibleHint: `⏳ Spawning ${dispatchCount} sub-agents via Task tool from DAG ${fromDag}, batch-id=${batchId} (ETA ~60s)`,
|
|
38
|
+
sliceMeta: sliceMetaFor(emittedSliceIds, dag, isSliceComplexity),
|
|
39
|
+
nextActions: [
|
|
40
|
+
'Execute each toolCall in your IDE; on completion, write the slice contract to .peaks/_runtime/<sid>/dispatch/contracts/<slice-id>.json.',
|
|
41
|
+
'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.'
|
|
42
|
+
]
|
|
43
|
+
}, [], [
|
|
44
|
+
'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.',
|
|
45
|
+
existingContractCount > 0
|
|
46
|
+
? `Injected ${existingContractCount} upstream contract(s) into downstream-level prompts via formatContractInjection.`
|
|
47
|
+
: 'No upstream contracts found; first-level prompts have empty ancestor blocks.'
|
|
48
|
+
]);
|
|
49
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type ProgramIO } from '../cli-helpers.js';
|
|
2
|
+
/** One refusal from the `--from-dag` path, as the fields the envelope needs. */
|
|
3
|
+
export type DagFailure = {
|
|
4
|
+
readonly role: string;
|
|
5
|
+
readonly code: string;
|
|
6
|
+
readonly message: string;
|
|
7
|
+
readonly extra?: Record<string, unknown>;
|
|
8
|
+
readonly nextActions: readonly string[];
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Emit a `sub-agent.dispatch` failure envelope and mark the process failed.
|
|
12
|
+
*
|
|
13
|
+
* Returns `null` so every caller can read `if (readDag(...) === null) return;`
|
|
14
|
+
* — the three statements (print, exit code, return) are one decision and stay
|
|
15
|
+
* together, which is also what keeps each call site inside
|
|
16
|
+
* `max-lines-per-function`.
|
|
17
|
+
*/
|
|
18
|
+
export declare function emitDagFailure(io: ProgramIO, asJson: boolean, failure: DagFailure): null;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { fail } from 'peaks-loop-shared/result';
|
|
2
|
+
import { printResult } from '../cli-helpers.js';
|
|
3
|
+
/**
|
|
4
|
+
* Emit a `sub-agent.dispatch` failure envelope and mark the process failed.
|
|
5
|
+
*
|
|
6
|
+
* Returns `null` so every caller can read `if (readDag(...) === null) return;`
|
|
7
|
+
* — the three statements (print, exit code, return) are one decision and stay
|
|
8
|
+
* together, which is also what keeps each call site inside
|
|
9
|
+
* `max-lines-per-function`.
|
|
10
|
+
*/
|
|
11
|
+
export function emitDagFailure(io, asJson, failure) {
|
|
12
|
+
const { role, code, message, extra, nextActions } = failure;
|
|
13
|
+
printResult(io, fail('sub-agent.dispatch', code, message, { role, toolCall: null, dispatchRecordPath: null, ...extra }, [...nextActions]), asJson);
|
|
14
|
+
process.exitCode = 1;
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { SliceDag } from '../../services/dispatch/slice-dag.js';
|
|
2
|
+
import type { ProgramIO } from '../cli-helpers.js';
|
|
3
|
+
import { type DispatchOptions } from './sub-agent-shared.js';
|
|
4
|
+
/** The three things every refusal in this path needs to be emitted. */
|
|
5
|
+
export type DagScope = {
|
|
6
|
+
readonly role: string;
|
|
7
|
+
readonly asJson: boolean;
|
|
8
|
+
readonly io: ProgramIO;
|
|
9
|
+
};
|
|
10
|
+
/** Identity every `--from-dag` envelope is stamped with. */
|
|
11
|
+
export type DagIds = {
|
|
12
|
+
readonly projectRoot: string;
|
|
13
|
+
readonly sid: string;
|
|
14
|
+
readonly rid: string;
|
|
15
|
+
readonly batchId: string;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Resolve the project root + the four ids the DAG envelope reports.
|
|
19
|
+
*
|
|
20
|
+
* The sid falls back through `PEAKS_SESSION_ID` and the canonical binding
|
|
21
|
+
* before the `unknown-sid` sentinel; the rid keeps its `unknown-rid` default
|
|
22
|
+
* when the caller passed none.
|
|
23
|
+
*/
|
|
24
|
+
export declare function resolveDagIds(options: DispatchOptions): DagIds;
|
|
25
|
+
/**
|
|
26
|
+
* Lazy-load the three heavy modules only when `--from-dag` is actually used.
|
|
27
|
+
*
|
|
28
|
+
* The warm-path single dispatch does NOT load slice-dag / dag-orchestrator /
|
|
29
|
+
* contract-store (slice 9 perf); the dynamic-import promise resolves on first
|
|
30
|
+
* call and ESM caches the module for subsequent calls in the same process.
|
|
31
|
+
*/
|
|
32
|
+
export declare function loadDagRuntime(): Promise<{
|
|
33
|
+
readFileSync: typeof import("fs").readFileSync;
|
|
34
|
+
validateDag: typeof import("../../services/dispatch/slice-dag.js").validateDag;
|
|
35
|
+
topologicalLevels: typeof import("../../services/dispatch/slice-dag.js").topologicalLevels;
|
|
36
|
+
isSliceComplexity: typeof import("../../services/dispatch/slice-dag-types.js").isSliceComplexity;
|
|
37
|
+
runLayeredDag: typeof import("../../services/code/dag-orchestrator.js").runLayeredDag;
|
|
38
|
+
listContracts: typeof import("../../services/dispatch/contract-store.js").listContracts;
|
|
39
|
+
hashContract: typeof import("../../services/dispatch/contract-store.js").hashContract;
|
|
40
|
+
}>;
|
|
41
|
+
export type DagRuntime = Awaited<ReturnType<typeof loadDagRuntime>>;
|
|
42
|
+
/** Read + `JSON.parse` + `validateDag` the DAG file; `null` once refused. */
|
|
43
|
+
export declare function readDagOrFail(runtime: DagRuntime, fromDag: string, scope: DagScope): SliceDag | null;
|
|
44
|
+
/**
|
|
45
|
+
* Each DAG node must map to an explicitly prepared workflow graph node before
|
|
46
|
+
* sub-agent dispatch. The mapping is the `graphNode` annotation on the node,
|
|
47
|
+
* or — as a back-compat fallback — the node id itself.
|
|
48
|
+
*/
|
|
49
|
+
export declare function assertGraphNodesMapped(dag: SliceDag, scope: DagScope): true | null;
|
|
50
|
+
/** Topologically order the DAG's nodes; `null` once the failure is emitted. */
|
|
51
|
+
export declare function topologicalLevelsOrFail(runtime: DagRuntime, dag: SliceDag, fromDag: string, scope: DagScope): readonly (readonly string[])[] | null;
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { getCurrentSessionId } from '../../services/skills/skill-presence-service.js';
|
|
3
|
+
import { emitDagFailure } from './dispatch-dag-failure.js';
|
|
4
|
+
/**
|
|
5
|
+
* Resolve the project root + the four ids the DAG envelope reports.
|
|
6
|
+
*
|
|
7
|
+
* The sid falls back through `PEAKS_SESSION_ID` and the canonical binding
|
|
8
|
+
* before the `unknown-sid` sentinel; the rid keeps its `unknown-rid` default
|
|
9
|
+
* when the caller passed none.
|
|
10
|
+
*/
|
|
11
|
+
export function resolveDagIds(options) {
|
|
12
|
+
const projectRoot = options.project ?? process.cwd();
|
|
13
|
+
return {
|
|
14
|
+
projectRoot,
|
|
15
|
+
sid: options.sessionId ??
|
|
16
|
+
process.env.PEAKS_SESSION_ID ??
|
|
17
|
+
getCurrentSessionId(projectRoot) ??
|
|
18
|
+
'unknown-sid',
|
|
19
|
+
rid: options.requestId ?? 'unknown-rid',
|
|
20
|
+
batchId: options.batchId ?? randomUUID()
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Lazy-load the three heavy modules only when `--from-dag` is actually used.
|
|
25
|
+
*
|
|
26
|
+
* The warm-path single dispatch does NOT load slice-dag / dag-orchestrator /
|
|
27
|
+
* contract-store (slice 9 perf); the dynamic-import promise resolves on first
|
|
28
|
+
* call and ESM caches the module for subsequent calls in the same process.
|
|
29
|
+
*/
|
|
30
|
+
export async function loadDagRuntime() {
|
|
31
|
+
const [{ readFileSync }, sliceDagMod, dagOrchestratorMod, contractStoreMod] = await Promise.all([
|
|
32
|
+
import('node:fs'),
|
|
33
|
+
import('../../services/dispatch/slice-dag.js'),
|
|
34
|
+
import('../../services/code/dag-orchestrator.js'),
|
|
35
|
+
import('../../services/dispatch/contract-store.js')
|
|
36
|
+
]);
|
|
37
|
+
return {
|
|
38
|
+
readFileSync,
|
|
39
|
+
validateDag: sliceDagMod.validateDag,
|
|
40
|
+
topologicalLevels: sliceDagMod.topologicalLevels,
|
|
41
|
+
isSliceComplexity: sliceDagMod.isSliceComplexity,
|
|
42
|
+
runLayeredDag: dagOrchestratorMod.runLayeredDag,
|
|
43
|
+
listContracts: contractStoreMod.listContracts,
|
|
44
|
+
hashContract: contractStoreMod.hashContract
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/** Read + `JSON.parse` + `validateDag` the DAG file; `null` once refused. */
|
|
48
|
+
export function readDagOrFail(runtime, fromDag, scope) {
|
|
49
|
+
try {
|
|
50
|
+
const raw = runtime.readFileSync(fromDag, 'utf8');
|
|
51
|
+
const parsed = JSON.parse(raw);
|
|
52
|
+
runtime.validateDag(parsed);
|
|
53
|
+
return parsed;
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
return emitDagFailure(scope.io, scope.asJson, {
|
|
57
|
+
role: scope.role,
|
|
58
|
+
code: 'INVALID_DAG',
|
|
59
|
+
message: `failed to read or validate DAG from ${fromDag}: ${err.message}`,
|
|
60
|
+
nextActions: [
|
|
61
|
+
'Check the JSON file at the given path; the DAG must have {nodes, edges} and pass validateDag().'
|
|
62
|
+
]
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Each DAG node must map to an explicitly prepared workflow graph node before
|
|
68
|
+
* sub-agent dispatch. The mapping is the `graphNode` annotation on the node,
|
|
69
|
+
* or — as a back-compat fallback — the node id itself.
|
|
70
|
+
*/
|
|
71
|
+
export function assertGraphNodesMapped(dag, scope) {
|
|
72
|
+
for (const node of dag.nodes) {
|
|
73
|
+
const graphNodeId = node.graphNode;
|
|
74
|
+
const candidate = typeof graphNodeId === 'string' && graphNodeId.length > 0 ? graphNodeId : node.id;
|
|
75
|
+
if (typeof candidate === 'string' && candidate.length > 0)
|
|
76
|
+
continue;
|
|
77
|
+
return emitDagFailure(scope.io, scope.asJson, {
|
|
78
|
+
role: scope.role,
|
|
79
|
+
code: 'PEAKS_GRAPH_NODE_REQUIRED',
|
|
80
|
+
message: `DAG node ${node.id} has no graph-node mapping (RD §4 D4c)`,
|
|
81
|
+
extra: { dagNodeId: node.id },
|
|
82
|
+
nextActions: [
|
|
83
|
+
'Annotate the DAG node with `graphNode: "<id>"` so each dispatch can bind a prepared graph node.'
|
|
84
|
+
]
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
/** Topologically order the DAG's nodes; `null` once the failure is emitted. */
|
|
90
|
+
export function topologicalLevelsOrFail(runtime, dag, fromDag, scope) {
|
|
91
|
+
try {
|
|
92
|
+
return runtime.topologicalLevels(dag);
|
|
93
|
+
}
|
|
94
|
+
catch (err) {
|
|
95
|
+
return emitDagFailure(scope.io, scope.asJson, {
|
|
96
|
+
role: scope.role,
|
|
97
|
+
code: 'INVALID_DAG',
|
|
98
|
+
message: `topologicalLevels failed for ${fromDag}: ${err.message}`,
|
|
99
|
+
nextActions: [
|
|
100
|
+
'The DAG passed validateDag() but topologicalLevels threw (likely a cycle that slipped past validateDag, or a runtime invariant).',
|
|
101
|
+
'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.)'
|
|
102
|
+
]
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { SubAgentDispatcher, SubAgentToolCall } from '../../services/dispatch/sub-agent-dispatcher.js';
|
|
2
|
+
import type { SliceDag } from '../../services/dispatch/slice-dag.js';
|
|
3
|
+
import type { DispatchSpec, SliceOutcome } from '../../services/code/dag-orchestrator.js';
|
|
4
|
+
import type { SliceContract, WriteContractInput } from '../../services/dispatch/contract-store.js';
|
|
5
|
+
/** What the CLI runner collected while `runLayeredDag` walked the levels. */
|
|
6
|
+
export type DagEmissions = {
|
|
7
|
+
readonly toolCalls: SubAgentToolCall[];
|
|
8
|
+
readonly sliceIds: string[];
|
|
9
|
+
};
|
|
10
|
+
/** The resolved IDE + sub-agent dispatcher the `--from-dag` path runs on. */
|
|
11
|
+
export type DagDispatcher = {
|
|
12
|
+
readonly ide: string;
|
|
13
|
+
readonly dispatcher: SubAgentDispatcher;
|
|
14
|
+
};
|
|
15
|
+
/** Detect the IDE and resolve its sub-agent dispatcher. */
|
|
16
|
+
export declare function resolveDagDispatcher(projectRoot: string): DagDispatcher;
|
|
17
|
+
/**
|
|
18
|
+
* When every first-level node declares `files`, refine the level into
|
|
19
|
+
* file-overlap waves so the LLM fans out without serializing on a shared
|
|
20
|
+
* file. Emitted additively; nodes without `files` yield `null` (legacy
|
|
21
|
+
* envelope).
|
|
22
|
+
*/
|
|
23
|
+
export declare function planFirstLevelWaves(dag: SliceDag, levelArr: readonly (readonly string[])[]): readonly import("../../services/dispatch/file-overlap-wave-planner.js").FileOverlapWave[] | null;
|
|
24
|
+
/**
|
|
25
|
+
* The CLI runner: emit the per-slice `buildToolCall` descriptor for the first
|
|
26
|
+
* topological level, then return `done`.
|
|
27
|
+
*
|
|
28
|
+
* Returning `done` (not `cancelled`) exercises `runLayeredDag`'s join barrier
|
|
29
|
+
* and cancel-on-fail path end to end; the placeholder `publicSurface` is
|
|
30
|
+
* intentionally empty because the real surface arrives later via
|
|
31
|
+
* `peaks contract write`.
|
|
32
|
+
*/
|
|
33
|
+
export declare function makeCliRunner(args: {
|
|
34
|
+
firstLevelIds: ReadonlySet<string>;
|
|
35
|
+
dispatcher: SubAgentDispatcher;
|
|
36
|
+
ids: {
|
|
37
|
+
readonly rid: string;
|
|
38
|
+
readonly sid: string;
|
|
39
|
+
};
|
|
40
|
+
emissions: DagEmissions;
|
|
41
|
+
}): (spec: DispatchSpec) => Promise<SliceOutcome>;
|
|
42
|
+
/**
|
|
43
|
+
* Placeholder contract writer. The CLI writes nothing to disk here — the
|
|
44
|
+
* LLM-side runner does that via `peaks contract write` — but the returned
|
|
45
|
+
* placeholder must stay shape-valid: `contractHash` has to be a real SHA-256
|
|
46
|
+
* hex string computed from the slice identity (`sliceId|sessionId`).
|
|
47
|
+
*/
|
|
48
|
+
export declare function makeNoopWriter(hashContract: (partial: WriteContractInput) => string, sid: string): (sliceId: string) => SliceContract;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { detectInstalledIde } from '../../services/ide/ide-detector.js';
|
|
2
|
+
import { getAdapter } from '../../services/ide/ide-registry.js';
|
|
3
|
+
import { planFileOverlapWaves } from '../../services/dispatch/file-overlap-wave-planner.js';
|
|
4
|
+
/** Detect the IDE and resolve its sub-agent dispatcher. */
|
|
5
|
+
export function resolveDagDispatcher(projectRoot) {
|
|
6
|
+
const ide = detectInstalledIde(projectRoot) ?? 'claude-code';
|
|
7
|
+
return { ide, dispatcher: getAdapter(ide).subAgentDispatcher };
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* When every first-level node declares `files`, refine the level into
|
|
11
|
+
* file-overlap waves so the LLM fans out without serializing on a shared
|
|
12
|
+
* file. Emitted additively; nodes without `files` yield `null` (legacy
|
|
13
|
+
* envelope).
|
|
14
|
+
*/
|
|
15
|
+
export function planFirstLevelWaves(dag, levelArr) {
|
|
16
|
+
const descriptors = [...(levelArr[0] ?? [])].map((id) => ({
|
|
17
|
+
id,
|
|
18
|
+
files: dag.nodes.find((n) => n.id === id)?.files ?? []
|
|
19
|
+
}));
|
|
20
|
+
const allHaveFiles = descriptors.every((d) => d.files.length > 0);
|
|
21
|
+
return descriptors.length > 0 && allHaveFiles ? planFileOverlapWaves(descriptors).waves : null;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* The CLI runner: emit the per-slice `buildToolCall` descriptor for the first
|
|
25
|
+
* topological level, then return `done`.
|
|
26
|
+
*
|
|
27
|
+
* Returning `done` (not `cancelled`) exercises `runLayeredDag`'s join barrier
|
|
28
|
+
* and cancel-on-fail path end to end; the placeholder `publicSurface` is
|
|
29
|
+
* intentionally empty because the real surface arrives later via
|
|
30
|
+
* `peaks contract write`.
|
|
31
|
+
*/
|
|
32
|
+
export function makeCliRunner(args) {
|
|
33
|
+
const { firstLevelIds, dispatcher, ids, emissions } = args;
|
|
34
|
+
return async (spec) => {
|
|
35
|
+
const toolCall = dispatcher.buildToolCall({
|
|
36
|
+
role: spec.role,
|
|
37
|
+
prompt: spec.prompt,
|
|
38
|
+
requestId: ids.rid,
|
|
39
|
+
sessionId: ids.sid
|
|
40
|
+
});
|
|
41
|
+
if (firstLevelIds.has(spec.sliceId)) {
|
|
42
|
+
emissions.toolCalls.push(toolCall);
|
|
43
|
+
emissions.sliceIds.push(spec.sliceId);
|
|
44
|
+
}
|
|
45
|
+
return { status: 'done', publicSurface: { exports: [], types: [], publicSignatures: [] } };
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Placeholder contract writer. The CLI writes nothing to disk here — the
|
|
50
|
+
* LLM-side runner does that via `peaks contract write` — but the returned
|
|
51
|
+
* placeholder must stay shape-valid: `contractHash` has to be a real SHA-256
|
|
52
|
+
* hex string computed from the slice identity (`sliceId|sessionId`).
|
|
53
|
+
*/
|
|
54
|
+
export function makeNoopWriter(hashContract, sid) {
|
|
55
|
+
return (sliceId) => {
|
|
56
|
+
const partial = {
|
|
57
|
+
sliceId,
|
|
58
|
+
sessionId: sid,
|
|
59
|
+
exports: [],
|
|
60
|
+
types: [],
|
|
61
|
+
publicSignatures: []
|
|
62
|
+
};
|
|
63
|
+
return {
|
|
64
|
+
sliceId,
|
|
65
|
+
sessionId: sid,
|
|
66
|
+
completedAt: new Date(0).toISOString(),
|
|
67
|
+
exports: [],
|
|
68
|
+
types: [],
|
|
69
|
+
publicSignatures: [],
|
|
70
|
+
contractHash: hashContract(partial)
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
}
|
|
@@ -1,3 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `--from-dag` path of `peaks sub-agent dispatch`.
|
|
3
|
+
*
|
|
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.
|
|
10
|
+
*
|
|
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
|
+
*
|
|
15
|
+
* 1.2 MVP scope: this dispatches the FIRST topological level synchronously
|
|
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
|
+
*
|
|
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
|
+
*/
|
|
1
28
|
import { type ProgramIO } from '../cli-helpers.js';
|
|
2
29
|
import { type DispatchOptions } from './sub-agent-shared.js';
|
|
3
30
|
export declare function runDispatchFromDag(role: string, options: DispatchOptions, asJson: boolean, io: ProgramIO): Promise<void>;
|