peaks-loop 4.0.0-beta.8 → 4.0.0-beta.9
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/CHANGELOG.md +45 -0
- package/bin/peaks.js +1 -1
- package/dist/cli/cli-helpers.d.ts +43 -0
- package/dist/cli/cli-helpers.js +86 -0
- package/dist/cli/commands/_cli-error-envelope.d.ts +19 -0
- package/dist/cli/commands/_cli-error-envelope.js +50 -0
- package/dist/cli/commands/adapter-commands-s2a.d.ts +34 -0
- package/dist/cli/commands/adapter-commands-s2a.js +92 -0
- package/dist/cli/commands/adapter-commands.d.ts +30 -0
- package/dist/cli/commands/adapter-commands.js +35 -0
- package/dist/cli/commands/agent-commands.d.ts +20 -0
- package/dist/cli/commands/agent-commands.js +48 -0
- package/dist/cli/commands/asset-commands.d.ts +45 -0
- package/dist/cli/commands/asset-commands.js +404 -0
- package/dist/cli/commands/audit-commands.d.ts +28 -0
- package/dist/cli/commands/audit-commands.js +437 -0
- package/dist/cli/commands/bee-commands.d.ts +26 -0
- package/dist/cli/commands/bee-commands.js +169 -0
- package/dist/cli/commands/capability-commands.d.ts +16 -0
- package/dist/cli/commands/capability-commands.js +45 -0
- package/dist/cli/commands/capability-worker-config-sc-commands.d.ts +3 -0
- package/dist/cli/commands/capability-worker-config-sc-commands.js +10 -0
- package/dist/cli/commands/classify-classify-commands.d.ts +19 -0
- package/dist/cli/commands/classify-classify-commands.js +151 -0
- package/dist/cli/commands/code-commands.d.ts +80 -0
- package/dist/cli/commands/code-commands.js +798 -0
- package/dist/cli/commands/code-review-commands.d.ts +34 -0
- package/dist/cli/commands/code-review-commands.js +83 -0
- package/dist/cli/commands/codegraph-commands.d.ts +3 -0
- package/dist/cli/commands/codegraph-commands.js +99 -0
- package/dist/cli/commands/compact-command.d.ts +21 -0
- package/dist/cli/commands/compact-command.js +252 -0
- package/dist/cli/commands/complexity-commands.d.ts +9 -0
- package/dist/cli/commands/complexity-commands.js +34 -0
- package/dist/cli/commands/config-commands.d.ts +3 -0
- package/dist/cli/commands/config-commands.js +220 -0
- package/dist/cli/commands/context-builder-commands.d.ts +11 -0
- package/dist/cli/commands/context-builder-commands.js +85 -0
- package/dist/cli/commands/context-commands.d.ts +21 -0
- package/dist/cli/commands/context-commands.js +254 -0
- package/dist/cli/commands/contract-commands.d.ts +26 -0
- package/dist/cli/commands/contract-commands.js +114 -0
- package/dist/cli/commands/core/artifacts-command.d.ts +3 -0
- package/dist/cli/commands/core/artifacts-command.js +62 -0
- package/dist/cli/commands/core/binding-commands.d.ts +3 -0
- package/dist/cli/commands/core/binding-commands.js +58 -0
- package/dist/cli/commands/core/doctor-command.d.ts +11 -0
- package/dist/cli/commands/core/doctor-command.js +204 -0
- package/dist/cli/commands/core/memory-command.d.ts +3 -0
- package/dist/cli/commands/core/memory-command.js +98 -0
- package/dist/cli/commands/core/profile-command.d.ts +3 -0
- package/dist/cli/commands/core/profile-command.js +9 -0
- package/dist/cli/commands/core/proxy-command.d.ts +3 -0
- package/dist/cli/commands/core/proxy-command.js +26 -0
- package/dist/cli/commands/core/session-command.d.ts +3 -0
- package/dist/cli/commands/core/session-command.js +241 -0
- package/dist/cli/commands/core/skill-command.d.ts +3 -0
- package/dist/cli/commands/core/skill-command.js +300 -0
- package/dist/cli/commands/core/standards-command.d.ts +3 -0
- package/dist/cli/commands/core/standards-command.js +95 -0
- package/dist/cli/commands/core-artifact-commands.d.ts +15 -0
- package/dist/cli/commands/core-artifact-commands.js +31 -0
- package/dist/cli/commands/dispatch-commands.d.ts +10 -0
- package/dist/cli/commands/dispatch-commands.js +351 -0
- package/dist/cli/commands/dispatch-from-dag.d.ts +3 -0
- package/dist/cli/commands/dispatch-from-dag.js +251 -0
- package/dist/cli/commands/doc-commands.d.ts +11 -0
- package/dist/cli/commands/doc-commands.js +65 -0
- package/dist/cli/commands/evolution-commands.d.ts +27 -0
- package/dist/cli/commands/evolution-commands.js +393 -0
- package/dist/cli/commands/feedback-commands.d.ts +18 -0
- package/dist/cli/commands/feedback-commands.js +145 -0
- package/dist/cli/commands/final-review-commands.d.ts +31 -0
- package/dist/cli/commands/final-review-commands.js +161 -0
- package/dist/cli/commands/fixture-commands.d.ts +32 -0
- package/dist/cli/commands/fixture-commands.js +91 -0
- package/dist/cli/commands/fork-commands.d.ts +16 -0
- package/dist/cli/commands/fork-commands.js +163 -0
- package/dist/cli/commands/gate-commands.d.ts +3 -0
- package/dist/cli/commands/gate-commands.js +117 -0
- package/dist/cli/commands/heartbeat-commands.d.ts +3 -0
- package/dist/cli/commands/heartbeat-commands.js +135 -0
- package/dist/cli/commands/hook-handle.d.ts +17 -0
- package/dist/cli/commands/hook-handle.js +157 -0
- package/dist/cli/commands/hooks-commands.d.ts +3 -0
- package/dist/cli/commands/hooks-commands.js +156 -0
- package/dist/cli/commands/ide-commands.d.ts +25 -0
- package/dist/cli/commands/ide-commands.js +42 -0
- package/dist/cli/commands/impact-commands.d.ts +15 -0
- package/dist/cli/commands/impact-commands.js +62 -0
- package/dist/cli/commands/job-commands.d.ts +3 -0
- package/dist/cli/commands/job-commands.js +289 -0
- package/dist/cli/commands/legacy-commands.d.ts +11 -0
- package/dist/cli/commands/legacy-commands.js +32 -0
- package/dist/cli/commands/log-commands.d.ts +17 -0
- package/dist/cli/commands/log-commands.js +64 -0
- package/dist/cli/commands/loop-commands.d.ts +27 -0
- package/dist/cli/commands/loop-commands.js +262 -0
- package/dist/cli/commands/loop-eval-commands.d.ts +20 -0
- package/dist/cli/commands/loop-eval-commands.js +526 -0
- package/dist/cli/commands/memory-commands.d.ts +23 -0
- package/dist/cli/commands/memory-commands.js +129 -0
- package/dist/cli/commands/migrate-1-4-1-command.d.ts +11 -0
- package/dist/cli/commands/migrate-1-4-1-command.js +34 -0
- package/dist/cli/commands/migrate-v2-10-to-v2-11-command.d.ts +20 -0
- package/dist/cli/commands/migrate-v2-10-to-v2-11-command.js +52 -0
- package/dist/cli/commands/mut-commands.d.ts +20 -0
- package/dist/cli/commands/mut-commands.js +239 -0
- package/dist/cli/commands/observability-commands.d.ts +22 -0
- package/dist/cli/commands/observability-commands.js +201 -0
- package/dist/cli/commands/openspec-commands.d.ts +3 -0
- package/dist/cli/commands/openspec-commands.js +237 -0
- package/dist/cli/commands/perf-audit-commands.d.ts +22 -0
- package/dist/cli/commands/perf-audit-commands.js +132 -0
- package/dist/cli/commands/perf-commands.d.ts +3 -0
- package/dist/cli/commands/perf-commands.js +41 -0
- package/dist/cli/commands/playwright-commands.d.ts +95 -0
- package/dist/cli/commands/playwright-commands.js +432 -0
- package/dist/cli/commands/polyrepo-commands.d.ts +37 -0
- package/dist/cli/commands/polyrepo-commands.js +155 -0
- package/dist/cli/commands/prd-blocks-commands.d.ts +18 -0
- package/dist/cli/commands/prd-blocks-commands.js +50 -0
- package/dist/cli/commands/prd-commands.d.ts +18 -0
- package/dist/cli/commands/prd-commands.js +141 -0
- package/dist/cli/commands/preferences-commands.d.ts +2 -0
- package/dist/cli/commands/preferences-commands.js +197 -0
- package/dist/cli/commands/project-commands.d.ts +3 -0
- package/dist/cli/commands/project-commands.js +253 -0
- package/dist/cli/commands/qa-business-review-commands.d.ts +17 -0
- package/dist/cli/commands/qa-business-review-commands.js +148 -0
- package/dist/cli/commands/qa-commands.d.ts +94 -0
- package/dist/cli/commands/qa-commands.js +271 -0
- package/dist/cli/commands/release-commands.d.ts +24 -0
- package/dist/cli/commands/release-commands.js +231 -0
- package/dist/cli/commands/request-commands.d.ts +3 -0
- package/dist/cli/commands/request-commands.js +548 -0
- package/dist/cli/commands/retrospective-commands.d.ts +12 -0
- package/dist/cli/commands/retrospective-commands.js +175 -0
- package/dist/cli/commands/reviewer-commands.d.ts +14 -0
- package/dist/cli/commands/reviewer-commands.js +64 -0
- package/dist/cli/commands/role-commands.d.ts +13 -0
- package/dist/cli/commands/role-commands.js +85 -0
- package/dist/cli/commands/runtime-commands.d.ts +52 -0
- package/dist/cli/commands/runtime-commands.js +150 -0
- package/dist/cli/commands/sc-commands.d.ts +3 -0
- package/dist/cli/commands/sc-commands.js +45 -0
- package/dist/cli/commands/scan-commands.d.ts +3 -0
- package/dist/cli/commands/scan-commands.js +445 -0
- package/dist/cli/commands/security-audit-commands.d.ts +23 -0
- package/dist/cli/commands/security-audit-commands.js +132 -0
- package/dist/cli/commands/sediment-commands.d.ts +80 -0
- package/dist/cli/commands/sediment-commands.js +649 -0
- package/dist/cli/commands/session-auto-compact-hook-command.d.ts +37 -0
- package/dist/cli/commands/session-auto-compact-hook-command.js +127 -0
- package/dist/cli/commands/session-checkpoint-command.d.ts +10 -0
- package/dist/cli/commands/session-checkpoint-command.js +100 -0
- package/dist/cli/commands/session-migrate-skill-name.d.ts +17 -0
- package/dist/cli/commands/session-migrate-skill-name.js +41 -0
- package/dist/cli/commands/session-resume-command.d.ts +11 -0
- package/dist/cli/commands/session-resume-command.js +83 -0
- package/dist/cli/commands/share-commands.d.ts +17 -0
- package/dist/cli/commands/share-commands.js +296 -0
- package/dist/cli/commands/skill-conformance-commands.d.ts +9 -0
- package/dist/cli/commands/skill-conformance-commands.js +39 -0
- package/dist/cli/commands/skill-loop-engineering-readiness-commands.d.ts +67 -0
- package/dist/cli/commands/skill-loop-engineering-readiness-commands.js +173 -0
- package/dist/cli/commands/skill-search-commands.d.ts +25 -0
- package/dist/cli/commands/skill-search-commands.js +68 -0
- package/dist/cli/commands/skill-visibility.d.ts +8 -0
- package/dist/cli/commands/skill-visibility.js +63 -0
- package/dist/cli/commands/slice-commands.d.ts +24 -0
- package/dist/cli/commands/slice-commands.js +492 -0
- package/dist/cli/commands/slice-integrate-commands.d.ts +11 -0
- package/dist/cli/commands/slice-integrate-commands.js +74 -0
- package/dist/cli/commands/slice-review-commands.d.ts +23 -0
- package/dist/cli/commands/slice-review-commands.js +162 -0
- package/dist/cli/commands/smoke-commands.d.ts +21 -0
- package/dist/cli/commands/smoke-commands.js +203 -0
- package/dist/cli/commands/sop-commands.d.ts +3 -0
- package/dist/cli/commands/sop-commands.js +215 -0
- package/dist/cli/commands/statusline-commands.d.ts +3 -0
- package/dist/cli/commands/statusline-commands.js +169 -0
- package/dist/cli/commands/sub-agent-commands.d.ts +22 -0
- package/dist/cli/commands/sub-agent-commands.js +19 -0
- package/dist/cli/commands/sub-agent-dispatch-guard.d.ts +55 -0
- package/dist/cli/commands/sub-agent-dispatch-guard.js +57 -0
- package/dist/cli/commands/sub-agent-shared.d.ts +99 -0
- package/dist/cli/commands/sub-agent-shared.js +67 -0
- package/dist/cli/commands/test-commands.d.ts +47 -0
- package/dist/cli/commands/test-commands.js +204 -0
- package/dist/cli/commands/understand-commands.d.ts +3 -0
- package/dist/cli/commands/understand-commands.js +148 -0
- package/dist/cli/commands/upgrade-commands.d.ts +23 -0
- package/dist/cli/commands/upgrade-commands.js +119 -0
- package/dist/cli/commands/user-touchpoint-commands.d.ts +18 -0
- package/dist/cli/commands/user-touchpoint-commands.js +78 -0
- package/dist/cli/commands/verdict-aggregate-command.d.ts +14 -0
- package/dist/cli/commands/verdict-aggregate-command.js +106 -0
- package/dist/cli/commands/worker-commands.d.ts +3 -0
- package/dist/cli/commands/worker-commands.js +52 -0
- package/dist/cli/commands/workflow-commands.d.ts +3 -0
- package/dist/cli/commands/workflow-commands.js +544 -0
- package/dist/cli/commands/workflow-plan-commands.d.ts +39 -0
- package/dist/cli/commands/workflow-plan-commands.js +163 -0
- package/dist/cli/commands/workspace/clean-command.d.ts +14 -0
- package/dist/cli/commands/workspace/clean-command.js +49 -0
- package/dist/cli/commands/workspace/helpers.d.ts +28 -0
- package/dist/cli/commands/workspace/helpers.js +87 -0
- package/dist/cli/commands/workspace/init-command.d.ts +139 -0
- package/dist/cli/commands/workspace/init-command.js +505 -0
- package/dist/cli/commands/workspace/migrate-command.d.ts +11 -0
- package/dist/cli/commands/workspace/migrate-command.js +91 -0
- package/dist/cli/commands/workspace/reconcile-command.d.ts +14 -0
- package/dist/cli/commands/workspace/reconcile-command.js +103 -0
- package/dist/cli/commands/workspace-commands.d.ts +18 -0
- package/dist/cli/commands/workspace-commands.js +50 -0
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/index.js +30 -0
- package/dist/cli/program.d.ts +5 -0
- package/dist/cli/program.js +408 -0
- package/dist/hooks/pre-tool-use-sub-agent.d.ts +28 -0
- package/dist/hooks/pre-tool-use-sub-agent.js +105 -0
- package/dist/lib/render/message-renderer.d.ts +20 -0
- package/dist/lib/render/message-renderer.js +80 -0
- package/dist/services/adapter/adapter-registry.d.ts +48 -0
- package/dist/services/adapter/adapter-registry.js +186 -0
- package/dist/services/adapter/adapter.d.ts +27 -0
- package/dist/services/adapter/adapter.js +5 -0
- package/dist/services/adapter/auto-adapter.d.ts +11 -0
- package/dist/services/adapter/auto-adapter.js +15 -0
- package/dist/services/adapter/claude-adapter.d.ts +14 -0
- package/dist/services/adapter/claude-adapter.js +40 -0
- package/dist/services/adapter/codex-adapter.d.ts +14 -0
- package/dist/services/adapter/codex-adapter.js +14 -0
- package/dist/services/adapter/copilot-adapter.d.ts +14 -0
- package/dist/services/adapter/copilot-adapter.js +14 -0
- package/dist/services/agent/ecc-agent-service.d.ts +47 -0
- package/dist/services/agent/ecc-agent-service.js +143 -0
- package/dist/services/artifacts/artifact-lint-service.d.ts +23 -0
- package/dist/services/artifacts/artifact-lint-service.js +99 -0
- package/dist/services/artifacts/artifact-prerequisites.d.ts +78 -0
- package/dist/services/artifacts/artifact-prerequisites.js +491 -0
- package/dist/services/artifacts/artifact-service.d.ts +43 -0
- package/dist/services/artifacts/artifact-service.js +98 -0
- package/dist/services/artifacts/artifact-templates.d.ts +30 -0
- package/dist/services/artifacts/artifact-templates.js +302 -0
- package/dist/services/artifacts/repair-cycle-service.d.ts +23 -0
- package/dist/services/artifacts/repair-cycle-service.js +52 -0
- package/dist/services/artifacts/request-artifact-service.d.ts +116 -0
- package/dist/services/artifacts/request-artifact-service.js +451 -0
- package/dist/services/artifacts/request-artifact-state-helpers.d.ts +51 -0
- package/dist/services/artifacts/request-artifact-state-helpers.js +114 -0
- package/dist/services/artifacts/workspace-service.d.ts +34 -0
- package/dist/services/artifacts/workspace-service.js +272 -0
- package/dist/services/audit/artifact-writer.d.ts +93 -0
- package/dist/services/audit/artifact-writer.js +303 -0
- package/dist/services/audit/audit-goal-service.d.ts +35 -0
- package/dist/services/audit/audit-goal-service.js +75 -0
- package/dist/services/audit/audit-goal-types.d.ts +40 -0
- package/dist/services/audit/audit-goal-types.js +15 -0
- package/dist/services/audit/backing-detector.d.ts +24 -0
- package/dist/services/audit/backing-detector.js +59 -0
- package/dist/services/audit/classifier.d.ts +38 -0
- package/dist/services/audit/classifier.js +134 -0
- package/dist/services/audit/decision-writer.d.ts +76 -0
- package/dist/services/audit/decision-writer.js +217 -0
- package/dist/services/audit/enforcers/active-skill-resolver.d.ts +29 -0
- package/dist/services/audit/enforcers/active-skill-resolver.js +71 -0
- package/dist/services/audit/enforcers/code-ban.d.ts +23 -0
- package/dist/services/audit/enforcers/code-ban.js +27 -0
- package/dist/services/audit/enforcers/design-draft-confirm.d.ts +24 -0
- package/dist/services/audit/enforcers/design-draft-confirm.js +58 -0
- package/dist/services/audit/enforcers/lint-audit-regression.d.ts +21 -0
- package/dist/services/audit/enforcers/lint-audit-regression.js +86 -0
- package/dist/services/audit/enforcers/lint-catalog-governance.d.ts +32 -0
- package/dist/services/audit/enforcers/lint-catalog-governance.js +48 -0
- package/dist/services/audit/enforcers/lint-cli-back.d.ts +16 -0
- package/dist/services/audit/enforcers/lint-cli-back.js +35 -0
- package/dist/services/audit/enforcers/lint-output-style.d.ts +11 -0
- package/dist/services/audit/enforcers/lint-output-style.js +94 -0
- package/dist/services/audit/enforcers/lint-reference-integrity.d.ts +6 -0
- package/dist/services/audit/enforcers/lint-reference-integrity.js +83 -0
- package/dist/services/audit/enforcers/lint-reference-shape.d.ts +30 -0
- package/dist/services/audit/enforcers/lint-reference-shape.js +272 -0
- package/dist/services/audit/enforcers/lint-style.d.ts +49 -0
- package/dist/services/audit/enforcers/lint-style.js +173 -0
- package/dist/services/audit/enforcers/lint-workflow-shape.d.ts +4 -0
- package/dist/services/audit/enforcers/lint-workflow-shape.js +100 -0
- package/dist/services/audit/enforcers/login-gate.d.ts +23 -0
- package/dist/services/audit/enforcers/login-gate.js +40 -0
- package/dist/services/audit/enforcers/mock-placement.d.ts +25 -0
- package/dist/services/audit/enforcers/mock-placement.js +48 -0
- package/dist/services/audit/enforcers/no-root-pollution.d.ts +21 -0
- package/dist/services/audit/enforcers/no-root-pollution.js +56 -0
- package/dist/services/audit/enforcers/pre-rd-scan.d.ts +22 -0
- package/dist/services/audit/enforcers/pre-rd-scan.js +23 -0
- package/dist/services/audit/enforcers/prototype-fidelity.d.ts +25 -0
- package/dist/services/audit/enforcers/prototype-fidelity.js +75 -0
- package/dist/services/audit/enforcers/resume-detection.d.ts +21 -0
- package/dist/services/audit/enforcers/resume-detection.js +52 -0
- package/dist/services/audit/enforcers/sub-agent-sid.d.ts +25 -0
- package/dist/services/audit/enforcers/sub-agent-sid.js +63 -0
- package/dist/services/audit/prose-ratio-calculator.d.ts +45 -0
- package/dist/services/audit/prose-ratio-calculator.js +52 -0
- package/dist/services/audit/red-line-catalog-p2-a.d.ts +21 -0
- package/dist/services/audit/red-line-catalog-p2-a.js +229 -0
- package/dist/services/audit/red-line-catalog-p2-b.d.ts +19 -0
- package/dist/services/audit/red-line-catalog-p2-b.js +225 -0
- package/dist/services/audit/red-line-catalog.d.ts +51 -0
- package/dist/services/audit/red-line-catalog.js +195 -0
- package/dist/services/audit/red-lines-service.d.ts +23 -0
- package/dist/services/audit/red-lines-service.js +464 -0
- package/dist/services/audit/scanners/openspec-scanner.d.ts +15 -0
- package/dist/services/audit/scanners/openspec-scanner.js +55 -0
- package/dist/services/audit/scanners/rules-tree-scanner.d.ts +16 -0
- package/dist/services/audit/scanners/rules-tree-scanner.js +56 -0
- package/dist/services/audit/scanners/skills-tree-scanner.d.ts +17 -0
- package/dist/services/audit/scanners/skills-tree-scanner.js +68 -0
- package/dist/services/audit/static-service.d.ts +60 -0
- package/dist/services/audit/static-service.js +130 -0
- package/dist/services/audit/types.d.ts +86 -0
- package/dist/services/audit/types.js +13 -0
- package/dist/services/audit-independent/perf-audit-service.d.ts +151 -0
- package/dist/services/audit-independent/perf-audit-service.js +316 -0
- package/dist/services/audit-independent/security-audit-service.d.ts +155 -0
- package/dist/services/audit-independent/security-audit-service.js +316 -0
- package/dist/services/classify/classify-service.d.ts +42 -0
- package/dist/services/classify/classify-service.js +122 -0
- package/dist/services/classify/classify-types.d.ts +79 -0
- package/dist/services/classify/classify-types.js +90 -0
- package/dist/services/code/auto-compact-orchestrator.d.ts +98 -0
- package/dist/services/code/auto-compact-orchestrator.js +343 -0
- package/dist/services/code/batch-heartbeat-poller.d.ts +51 -0
- package/dist/services/code/batch-heartbeat-poller.js +88 -0
- package/dist/services/code/dag-orchestrator.d.ts +128 -0
- package/dist/services/code/dag-orchestrator.js +304 -0
- package/dist/services/code/emit-handoff.d.ts +49 -0
- package/dist/services/code/emit-handoff.js +79 -0
- package/dist/services/code/job-shape-decision.d.ts +71 -0
- package/dist/services/code/job-shape-decision.js +151 -0
- package/dist/services/code/mode-gate.d.ts +163 -0
- package/dist/services/code/mode-gate.js +212 -0
- package/dist/services/code/post-compact-detector.d.ts +61 -0
- package/dist/services/code/post-compact-detector.js +240 -0
- package/dist/services/code/status-line-renderer.d.ts +34 -0
- package/dist/services/code/status-line-renderer.js +55 -0
- package/dist/services/code/step-08-gate.d.ts +90 -0
- package/dist/services/code/step-08-gate.js +136 -0
- package/dist/services/code/user-touchpoint-classifier.d.ts +44 -0
- package/dist/services/code/user-touchpoint-classifier.js +145 -0
- package/dist/services/code-review/ecc-bridge.d.ts +148 -0
- package/dist/services/code-review/ecc-bridge.js +242 -0
- package/dist/services/code-review/ocr-service.d.ts +129 -0
- package/dist/services/code-review/ocr-service.js +369 -0
- package/dist/services/codegraph/codegraph-process-runner.d.ts +2 -0
- package/dist/services/codegraph/codegraph-process-runner.js +93 -0
- package/dist/services/codegraph/codegraph-service.d.ts +43 -0
- package/dist/services/codegraph/codegraph-service.js +160 -0
- package/dist/services/compact/decision-tables.d.ts +66 -0
- package/dist/services/compact/decision-tables.js +127 -0
- package/dist/services/compact/request-transition-hook.d.ts +20 -0
- package/dist/services/compact/request-transition-hook.js +110 -0
- package/dist/services/compact/suggest-service.d.ts +74 -0
- package/dist/services/compact/suggest-service.js +203 -0
- package/dist/services/complexity/complexity-estimator.d.ts +34 -0
- package/dist/services/complexity/complexity-estimator.js +64 -0
- package/dist/services/config/config-migration.d.ts +45 -0
- package/dist/services/config/config-migration.js +154 -0
- package/dist/services/config/config-restore.d.ts +10 -0
- package/dist/services/config/config-restore.js +47 -0
- package/dist/services/config/config-rollback.d.ts +13 -0
- package/dist/services/config/config-rollback.js +26 -0
- package/dist/services/config/config-safety.d.ts +40 -0
- package/dist/services/config/config-safety.js +359 -0
- package/dist/services/config/config-service.d.ts +69 -0
- package/dist/services/config/config-service.js +814 -0
- package/dist/services/config/config-types.d.ts +119 -0
- package/dist/services/config/config-types.js +18 -0
- package/dist/services/config/model-routing.d.ts +66 -0
- package/dist/services/config/model-routing.js +105 -0
- package/dist/services/config/provider-service.d.ts +48 -0
- package/dist/services/config/provider-service.js +143 -0
- package/dist/services/config/proxy-service.d.ts +21 -0
- package/dist/services/config/proxy-service.js +44 -0
- package/dist/services/config/sidecar-store.d.ts +25 -0
- package/dist/services/config/sidecar-store.js +61 -0
- package/dist/services/config/workspace-state-service.d.ts +30 -0
- package/dist/services/config/workspace-state-service.js +142 -0
- package/dist/services/context/artifact-meta.d.ts +72 -0
- package/dist/services/context/artifact-meta.js +105 -0
- package/dist/services/context/auto-compact-dispatcher.d.ts +37 -0
- package/dist/services/context/auto-compact-dispatcher.js +240 -0
- package/dist/services/context/auto-compact-reader.d.ts +51 -0
- package/dist/services/context/auto-compact-reader.js +164 -0
- package/dist/services/context/auto-compact-types.d.ts +143 -0
- package/dist/services/context/auto-compact-types.js +36 -0
- package/dist/services/context/collector.d.ts +24 -0
- package/dist/services/context/collector.js +133 -0
- package/dist/services/context/context-builder.d.ts +30 -0
- package/dist/services/context/context-builder.js +78 -0
- package/dist/services/context/context-guard.d.ts +49 -0
- package/dist/services/context/context-guard.js +91 -0
- package/dist/services/context/context-schema.d.ts +415 -0
- package/dist/services/context/context-schema.js +73 -0
- package/dist/services/context/dispatch-context-guard.d.ts +27 -0
- package/dist/services/context/dispatch-context-guard.js +192 -0
- package/dist/services/context/doc-retriever.d.ts +26 -0
- package/dist/services/context/doc-retriever.js +51 -0
- package/dist/services/context/headroom-client.d.ts +34 -0
- package/dist/services/context/headroom-client.js +117 -0
- package/dist/services/context/headroom-fetcher.d.ts +6 -0
- package/dist/services/context/headroom-fetcher.js +28 -0
- package/dist/services/context/headroom-prefs.d.ts +46 -0
- package/dist/services/context/headroom-prefs.js +34 -0
- package/dist/services/context/index.d.ts +7 -0
- package/dist/services/context/index.js +6 -0
- package/dist/services/context/main-session-monitor.d.ts +89 -0
- package/dist/services/context/main-session-monitor.js +142 -0
- package/dist/services/context/renderer.d.ts +20 -0
- package/dist/services/context/renderer.js +30 -0
- package/dist/services/context/shared-channel.d.ts +93 -0
- package/dist/services/context/shared-channel.js +308 -0
- package/dist/services/context/threshold.d.ts +35 -0
- package/dist/services/context/threshold.js +76 -0
- package/dist/services/context/tokenizer.d.ts +12 -0
- package/dist/services/context/tokenizer.js +43 -0
- package/dist/services/context/types.d.ts +93 -0
- package/dist/services/context/types.js +9 -0
- package/dist/services/crystallization/crystallization-service.d.ts +239 -0
- package/dist/services/crystallization/crystallization-service.js +397 -0
- package/dist/services/crystallization/crystallization-store.d.ts +75 -0
- package/dist/services/crystallization/crystallization-store.js +193 -0
- package/dist/services/crystallization/crystallization-types.d.ts +313 -0
- package/dist/services/crystallization/crystallization-types.js +299 -0
- package/dist/services/crystallization/evidence-brief-builder.d.ts +237 -0
- package/dist/services/crystallization/evidence-brief-builder.js +240 -0
- package/dist/services/dashboard/project-dashboard-service.d.ts +91 -0
- package/dist/services/dashboard/project-dashboard-service.js +147 -0
- package/dist/services/dispatch/batch-counter.d.ts +27 -0
- package/dist/services/dispatch/batch-counter.js +102 -0
- package/dist/services/dispatch/contract-store.d.ts +63 -0
- package/dist/services/dispatch/contract-store.js +157 -0
- package/dist/services/dispatch/dispatch-record-writer.d.ts +138 -0
- package/dist/services/dispatch/dispatch-record-writer.js +460 -0
- package/dist/services/dispatch/heartbeat-truncator.d.ts +26 -0
- package/dist/services/dispatch/heartbeat-truncator.js +13 -0
- package/dist/services/dispatch/leak-detector.d.ts +11 -0
- package/dist/services/dispatch/leak-detector.js +72 -0
- package/dist/services/dispatch/slice-dag.d.ts +81 -0
- package/dist/services/dispatch/slice-dag.js +238 -0
- package/dist/services/dispatch/sub-agent-dispatcher.d.ts +239 -0
- package/dist/services/dispatch/sub-agent-dispatcher.js +382 -0
- package/dist/services/dispatch/test-tool-detection.d.ts +36 -0
- package/dist/services/dispatch/test-tool-detection.js +46 -0
- package/dist/services/doc/doc-generator.d.ts +38 -0
- package/dist/services/doc/doc-generator.js +122 -0
- package/dist/services/doctor/doctor-service.d.ts +149 -0
- package/dist/services/doctor/doctor-service.js +929 -0
- package/dist/services/evolution/evolution-service.d.ts +137 -0
- package/dist/services/evolution/evolution-service.js +281 -0
- package/dist/services/evolution/evolution-store.d.ts +57 -0
- package/dist/services/evolution/evolution-store.js +232 -0
- package/dist/services/evolution/evolution-types.d.ts +706 -0
- package/dist/services/evolution/evolution-types.js +286 -0
- package/dist/services/evolution/independent-evaluator-runner.d.ts +90 -0
- package/dist/services/evolution/independent-evaluator-runner.js +106 -0
- package/dist/services/evolution/regression-skeptic-runner.d.ts +64 -0
- package/dist/services/evolution/regression-skeptic-runner.js +113 -0
- package/dist/services/feedback/feedback-promotion-service.d.ts +123 -0
- package/dist/services/feedback/feedback-promotion-service.js +300 -0
- package/dist/services/filesystem/file-lock.d.ts +11 -0
- package/dist/services/filesystem/file-lock.js +152 -0
- package/dist/services/final-review/final-review-service.d.ts +12 -0
- package/dist/services/final-review/final-review-service.js +52 -0
- package/dist/services/final-review/final-review-types.d.ts +42 -0
- package/dist/services/final-review/final-review-types.js +18 -0
- package/dist/services/fixture/fixture-capture-service.d.ts +87 -0
- package/dist/services/fixture/fixture-capture-service.js +317 -0
- package/dist/services/fixture/fixture-sanitize-service.d.ts +117 -0
- package/dist/services/fixture/fixture-sanitize-service.js +161 -0
- package/dist/services/fixture/index.d.ts +8 -0
- package/dist/services/fixture/index.js +8 -0
- package/dist/services/fork/fork-sync-state.d.ts +85 -0
- package/dist/services/fork/fork-sync-state.js +130 -0
- package/dist/services/fuzzy-matching/fuzzy-match-service.d.ts +15 -0
- package/dist/services/fuzzy-matching/fuzzy-match-service.js +56 -0
- package/dist/services/fuzzy-matching/fzf-pick-service.d.ts +68 -0
- package/dist/services/fuzzy-matching/fzf-pick-service.js +158 -0
- package/dist/services/fuzzy-matching/types.d.ts +20 -0
- package/dist/services/fuzzy-matching/types.js +1 -0
- package/dist/services/handoff/handoff-parser.d.ts +28 -0
- package/dist/services/handoff/handoff-parser.js +69 -0
- package/dist/services/handoff/handoff-types.d.ts +39 -0
- package/dist/services/handoff/handoff-types.js +19 -0
- package/dist/services/handoff/handoff-writer.d.ts +23 -0
- package/dist/services/handoff/handoff-writer.js +30 -0
- package/dist/services/hooks/auto-compact-hook-install.d.ts +104 -0
- package/dist/services/hooks/auto-compact-hook-install.js +157 -0
- package/dist/services/hooks/output.d.ts +92 -0
- package/dist/services/hooks/output.js +111 -0
- package/dist/services/hooks/presence-marker-detector.d.ts +16 -0
- package/dist/services/hooks/presence-marker-detector.js +105 -0
- package/dist/services/ide/adapters/claude-code-adapter.d.ts +18 -0
- package/dist/services/ide/adapters/claude-code-adapter.js +103 -0
- package/dist/services/ide/adapters/codex-adapter.d.ts +46 -0
- package/dist/services/ide/adapters/codex-adapter.js +97 -0
- package/dist/services/ide/adapters/cursor-adapter.d.ts +36 -0
- package/dist/services/ide/adapters/cursor-adapter.js +84 -0
- package/dist/services/ide/adapters/hermes-adapter.d.ts +21 -0
- package/dist/services/ide/adapters/hermes-adapter.js +51 -0
- package/dist/services/ide/adapters/openclaw-adapter.d.ts +14 -0
- package/dist/services/ide/adapters/openclaw-adapter.js +42 -0
- package/dist/services/ide/adapters/trae-adapter.d.ts +42 -0
- package/dist/services/ide/adapters/trae-adapter.js +83 -0
- package/dist/services/ide/adapters/zcode-adapter.d.ts +40 -0
- package/dist/services/ide/adapters/zcode-adapter.js +220 -0
- package/dist/services/ide/current-model-detector.d.ts +14 -0
- package/dist/services/ide/current-model-detector.js +60 -0
- package/dist/services/ide/hook-protocol.d.ts +47 -0
- package/dist/services/ide/hook-protocol.js +74 -0
- package/dist/services/ide/hook-translator.d.ts +72 -0
- package/dist/services/ide/hook-translator.js +128 -0
- package/dist/services/ide/ide-detector.d.ts +10 -0
- package/dist/services/ide/ide-detector.js +19 -0
- package/dist/services/ide/ide-registry.d.ts +14 -0
- package/dist/services/ide/ide-registry.js +63 -0
- package/dist/services/ide/ide-types.d.ts +253 -0
- package/dist/services/ide/ide-types.js +2 -0
- package/dist/services/ide/resource-profile.d.ts +52 -0
- package/dist/services/ide/resource-profile.js +33 -0
- package/dist/services/ide/shared/atomic-json.d.ts +15 -0
- package/dist/services/ide/shared/atomic-json.js +58 -0
- package/dist/services/ide/shared/safe-path.d.ts +11 -0
- package/dist/services/ide/shared/safe-path.js +29 -0
- package/dist/services/impact/impact-scan-service.d.ts +66 -0
- package/dist/services/impact/impact-scan-service.js +197 -0
- package/dist/services/job/job-event-emitter.d.ts +30 -0
- package/dist/services/job/job-event-emitter.js +5 -0
- package/dist/services/job/job-orchestrator.d.ts +50 -0
- package/dist/services/job/job-orchestrator.js +104 -0
- package/dist/services/job/job-progress-store.d.ts +60 -0
- package/dist/services/job/job-progress-store.js +70 -0
- package/dist/services/job/job-resource-snapshot.d.ts +7 -0
- package/dist/services/job/job-resource-snapshot.js +75 -0
- package/dist/services/job/job-rotation.d.ts +17 -0
- package/dist/services/job/job-rotation.js +30 -0
- package/dist/services/job/job-state-store.d.ts +24 -0
- package/dist/services/job/job-state-store.js +60 -0
- package/dist/services/job/job-types.d.ts +444 -0
- package/dist/services/job/job-types.js +87 -0
- package/dist/services/job/subagent-job-wrapper.d.ts +35 -0
- package/dist/services/job/subagent-job-wrapper.js +30 -0
- package/dist/services/legacy/legacy-detector.d.ts +34 -0
- package/dist/services/legacy/legacy-detector.js +111 -0
- package/dist/services/log/log-commands-service.d.ts +54 -0
- package/dist/services/log/log-commands-service.js +83 -0
- package/dist/services/log/logger.d.ts +103 -0
- package/dist/services/log/logger.js +224 -0
- package/dist/services/log/redact.d.ts +32 -0
- package/dist/services/log/redact.js +89 -0
- package/dist/services/log/retention.d.ts +34 -0
- package/dist/services/log/retention.js +78 -0
- package/dist/services/loop/evaluator-dispatcher.d.ts +50 -0
- package/dist/services/loop/evaluator-dispatcher.js +552 -0
- package/dist/services/loop/loop-bee-relation-service.d.ts +107 -0
- package/dist/services/loop/loop-bee-relation-service.js +211 -0
- package/dist/services/loop/loop-bee-relation-store.d.ts +53 -0
- package/dist/services/loop/loop-bee-relation-store.js +130 -0
- package/dist/services/loop/loop-bee-relation-types.d.ts +118 -0
- package/dist/services/loop/loop-bee-relation-types.js +114 -0
- package/dist/services/loop/loop-release-service.d.ts +46 -0
- package/dist/services/loop/loop-release-service.js +66 -0
- package/dist/services/loop/loop-release-store.d.ts +55 -0
- package/dist/services/loop/loop-release-store.js +134 -0
- package/dist/services/loop/loop-release-types.d.ts +250 -0
- package/dist/services/loop/loop-release-types.js +162 -0
- package/dist/services/loop/monotonic-guard.d.ts +80 -0
- package/dist/services/loop/monotonic-guard.js +232 -0
- package/dist/services/loop/monotonic-runner.d.ts +58 -0
- package/dist/services/loop/monotonic-runner.js +231 -0
- package/dist/services/loop/run-driver.d.ts +70 -0
- package/dist/services/loop/run-driver.js +400 -0
- package/dist/services/loop/spec-service.d.ts +90 -0
- package/dist/services/loop/spec-service.js +497 -0
- package/dist/services/memory/llm-reranker.d.ts +174 -0
- package/dist/services/memory/llm-reranker.js +284 -0
- package/dist/services/memory/memory-search-service.d.ts +93 -0
- package/dist/services/memory/memory-search-service.js +117 -0
- package/dist/services/memory/project-context-service.d.ts +21 -0
- package/dist/services/memory/project-context-service.js +161 -0
- package/dist/services/memory/project-memory-service.d.ts +167 -0
- package/dist/services/memory/project-memory-service.js +817 -0
- package/dist/services/migrate-skill-name/migrate.d.ts +17 -0
- package/dist/services/migrate-skill-name/migrate.js +152 -0
- package/dist/services/migrate-skill-name/schema.d.ts +42 -0
- package/dist/services/migrate-skill-name/schema.js +25 -0
- package/dist/services/migration/v2-10-to-v2-11-service.d.ts +44 -0
- package/dist/services/migration/v2-10-to-v2-11-service.js +190 -0
- package/dist/services/migration/v2-10-to-v2-11-types.d.ts +41 -0
- package/dist/services/migration/v2-10-to-v2-11-types.js +23 -0
- package/dist/services/mode/bypass-tracker.d.ts +4 -0
- package/dist/services/mode/bypass-tracker.js +31 -0
- package/dist/services/mode/mode-enforcement.d.ts +14 -0
- package/dist/services/mode/mode-enforcement.js +84 -0
- package/dist/services/mut/assert-scanner.d.ts +6 -0
- package/dist/services/mut/assert-scanner.js +116 -0
- package/dist/services/mut/index.d.ts +8 -0
- package/dist/services/mut/index.js +7 -0
- package/dist/services/mut/mut-runner.d.ts +39 -0
- package/dist/services/mut/mut-runner.js +29 -0
- package/dist/services/mut/production-stryker.d.ts +2 -0
- package/dist/services/mut/production-stryker.js +75 -0
- package/dist/services/mut/report-builder.d.ts +11 -0
- package/dist/services/mut/report-builder.js +110 -0
- package/dist/services/mut/report-loader.d.ts +31 -0
- package/dist/services/mut/report-loader.js +78 -0
- package/dist/services/mut/thresholds.d.ts +21 -0
- package/dist/services/mut/thresholds.js +22 -0
- package/dist/services/mut/types.d.ts +336 -0
- package/dist/services/mut/types.js +59 -0
- package/dist/services/observability/aggregation.d.ts +64 -0
- package/dist/services/observability/aggregation.js +217 -0
- package/dist/services/observability/jsonl-store.d.ts +59 -0
- package/dist/services/observability/jsonl-store.js +120 -0
- package/dist/services/observability/observability-service.d.ts +95 -0
- package/dist/services/observability/observability-service.js +119 -0
- package/dist/services/observability/report-formatter.d.ts +42 -0
- package/dist/services/observability/report-formatter.js +156 -0
- package/dist/services/openspec/openspec-archive-service.d.ts +12 -0
- package/dist/services/openspec/openspec-archive-service.js +28 -0
- package/dist/services/openspec/openspec-bridge-service.d.ts +16 -0
- package/dist/services/openspec/openspec-bridge-service.js +76 -0
- package/dist/services/openspec/openspec-init-service.d.ts +23 -0
- package/dist/services/openspec/openspec-init-service.js +122 -0
- package/dist/services/openspec/openspec-propose-from-doctor-service.d.ts +31 -0
- package/dist/services/openspec/openspec-propose-from-doctor-service.js +95 -0
- package/dist/services/openspec/openspec-render-service.d.ts +38 -0
- package/dist/services/openspec/openspec-render-service.js +130 -0
- package/dist/services/openspec/openspec-scan-service.d.ts +6 -0
- package/dist/services/openspec/openspec-scan-service.js +123 -0
- package/dist/services/openspec/openspec-types.d.ts +39 -0
- package/dist/services/openspec/openspec-types.js +1 -0
- package/dist/services/openspec/openspec-validate-service.d.ts +27 -0
- package/dist/services/openspec/openspec-validate-service.js +77 -0
- package/dist/services/perf/perf-baseline-service.d.ts +70 -0
- package/dist/services/perf/perf-baseline-service.js +214 -0
- package/dist/services/polyrepo/polyrepo-dispatcher.d.ts +34 -0
- package/dist/services/polyrepo/polyrepo-dispatcher.js +119 -0
- package/dist/services/polyrepo/polyrepo-scanner.d.ts +9 -0
- package/dist/services/polyrepo/polyrepo-scanner.js +94 -0
- package/dist/services/polyrepo/polyrepo-service.d.ts +34 -0
- package/dist/services/polyrepo/polyrepo-service.js +49 -0
- package/dist/services/polyrepo/polyrepo-types.d.ts +55 -0
- package/dist/services/polyrepo/polyrepo-types.js +1 -0
- package/dist/services/prd/handoff-auto-regen.d.ts +22 -0
- package/dist/services/prd/handoff-auto-regen.js +73 -0
- package/dist/services/prd/handoff-service.d.ts +54 -0
- package/dist/services/prd/handoff-service.js +142 -0
- package/dist/services/prd/handoff-types.d.ts +64 -0
- package/dist/services/prd/handoff-types.js +22 -0
- package/dist/services/prd/prd-blocks-checker.d.ts +51 -0
- package/dist/services/prd/prd-blocks-checker.js +130 -0
- package/dist/services/prd/project-scan-bootstrap-service.d.ts +52 -0
- package/dist/services/prd/project-scan-bootstrap-service.js +445 -0
- package/dist/services/prd/project-scan-reader.d.ts +24 -0
- package/dist/services/prd/project-scan-reader.js +150 -0
- package/dist/services/prd/project-scan-sediment.d.ts +97 -0
- package/dist/services/prd/project-scan-sediment.js +445 -0
- package/dist/services/prd/project-scan-types.d.ts +66 -0
- package/dist/services/prd/project-scan-types.js +20 -0
- package/dist/services/preferences/preferences-service.d.ts +38 -0
- package/dist/services/preferences/preferences-service.js +198 -0
- package/dist/services/preferences/preferences-types.d.ts +148 -0
- package/dist/services/preferences/preferences-types.js +53 -0
- package/dist/services/profiles/profile-service.d.ts +6 -0
- package/dist/services/profiles/profile-service.js +19 -0
- package/dist/services/progress/progress-service.d.ts +125 -0
- package/dist/services/progress/progress-service.js +192 -0
- package/dist/services/providers/minimax-provider-service.d.ts +24 -0
- package/dist/services/providers/minimax-provider-service.js +143 -0
- package/dist/services/providers/minimax-worker-service.d.ts +21 -0
- package/dist/services/providers/minimax-worker-service.js +83 -0
- package/dist/services/proxy/proxy-service.d.ts +7 -0
- package/dist/services/proxy/proxy-service.js +31 -0
- package/dist/services/qa/browser-event-logger.d.ts +40 -0
- package/dist/services/qa/browser-event-logger.js +54 -0
- package/dist/services/qa/browser-restart-detector.d.ts +74 -0
- package/dist/services/qa/browser-restart-detector.js +138 -0
- package/dist/services/qa/browser-reuse-hint.d.ts +18 -0
- package/dist/services/qa/browser-reuse-hint.js +18 -0
- package/dist/services/qa/browser-wrapper-service.d.ts +37 -0
- package/dist/services/qa/browser-wrapper-service.js +88 -0
- package/dist/services/qa/qa-business-review-state.d.ts +47 -0
- package/dist/services/qa/qa-business-review-state.js +96 -0
- package/dist/services/rd/ast-gate.d.ts +19 -0
- package/dist/services/rd/ast-gate.js +71 -0
- package/dist/services/rd/impl.d.ts +9 -0
- package/dist/services/rd/impl.js +57 -0
- package/dist/services/rd/rd-service.d.ts +129 -0
- package/dist/services/rd/rd-service.js +441 -0
- package/dist/services/rd/reviewer-dispatch-policy.d.ts +122 -0
- package/dist/services/rd/reviewer-dispatch-policy.js +148 -0
- package/dist/services/rd/standards-diagnostic.d.ts +76 -0
- package/dist/services/rd/standards-diagnostic.js +166 -0
- package/dist/services/rd/strategic-stage.d.ts +4 -0
- package/dist/services/rd/strategic-stage.js +15 -0
- package/dist/services/rd/strategy.d.ts +13 -0
- package/dist/services/rd/strategy.js +60 -0
- package/dist/services/rd/tactical-stage.d.ts +33 -0
- package/dist/services/rd/tactical-stage.js +62 -0
- package/dist/services/rd/types.d.ts +252 -0
- package/dist/services/rd/types.js +47 -0
- package/dist/services/recommendations/capability-availability.d.ts +5 -0
- package/dist/services/recommendations/capability-availability.js +40 -0
- package/dist/services/recommendations/capability-map-service.d.ts +7 -0
- package/dist/services/recommendations/capability-map-service.js +131 -0
- package/dist/services/recommendations/capability-seed-items.d.ts +2 -0
- package/dist/services/recommendations/capability-seed-items.js +140 -0
- package/dist/services/recommendations/capability-seed-mappings.d.ts +2 -0
- package/dist/services/recommendations/capability-seed-mappings.js +54 -0
- package/dist/services/recommendations/capability-seed-sources.d.ts +2 -0
- package/dist/services/recommendations/capability-seed-sources.js +35 -0
- package/dist/services/recommendations/recommendation-service.d.ts +8 -0
- package/dist/services/recommendations/recommendation-service.js +106 -0
- package/dist/services/recommendations/recommendation-types.d.ts +129 -0
- package/dist/services/recommendations/recommendation-types.js +1 -0
- package/dist/services/recommendations/seed-capability-catalog.d.ts +3 -0
- package/dist/services/recommendations/seed-capability-catalog.js +3 -0
- package/dist/services/refactor/refactor-service.d.ts +9 -0
- package/dist/services/refactor/refactor-service.js +36 -0
- package/dist/services/release/release-state.d.ts +70 -0
- package/dist/services/release/release-state.js +140 -0
- package/dist/services/retrospective/retrospective-index.d.ts +37 -0
- package/dist/services/retrospective/retrospective-index.js +110 -0
- package/dist/services/retrospective/retrospective-search-service.d.ts +55 -0
- package/dist/services/retrospective/retrospective-search-service.js +107 -0
- package/dist/services/retrospective/retrospective-show.d.ts +40 -0
- package/dist/services/retrospective/retrospective-show.js +109 -0
- package/dist/services/reviewer/model-family.d.ts +18 -0
- package/dist/services/reviewer/model-family.js +70 -0
- package/dist/services/reviewer/providers/anthropic.d.ts +2 -0
- package/dist/services/reviewer/providers/anthropic.js +61 -0
- package/dist/services/reviewer/providers/ollama.d.ts +26 -0
- package/dist/services/reviewer/providers/ollama.js +38 -0
- package/dist/services/reviewer/providers/openai.d.ts +2 -0
- package/dist/services/reviewer/providers/openai.js +63 -0
- package/dist/services/reviewer/reviewer-config.d.ts +34 -0
- package/dist/services/reviewer/reviewer-config.js +100 -0
- package/dist/services/reviewer/reviewer-service.d.ts +56 -0
- package/dist/services/reviewer/reviewer-service.js +263 -0
- package/dist/services/reviewer/selection-strategies.d.ts +27 -0
- package/dist/services/reviewer/selection-strategies.js +53 -0
- package/dist/services/role/role-registry.d.ts +38 -0
- package/dist/services/role/role-registry.js +83 -0
- package/dist/services/runtime/runtime-detector.d.ts +15 -0
- package/dist/services/runtime/runtime-detector.js +62 -0
- package/dist/services/runtime/runtime-service.d.ts +59 -0
- package/dist/services/runtime/runtime-service.js +51 -0
- package/dist/services/runtime/vendor-adapter.d.ts +59 -0
- package/dist/services/runtime/vendor-adapter.js +1 -0
- package/dist/services/runtime/vendors/claude-code.d.ts +7 -0
- package/dist/services/runtime/vendors/claude-code.js +39 -0
- package/dist/services/runtime/vendors/codex.d.ts +7 -0
- package/dist/services/runtime/vendors/codex.js +43 -0
- package/dist/services/runtime/vendors/copilot.d.ts +7 -0
- package/dist/services/runtime/vendors/copilot.js +40 -0
- package/dist/services/sc/index.d.ts +1 -0
- package/dist/services/sc/index.js +1 -0
- package/dist/services/sc/sc-service.d.ts +131 -0
- package/dist/services/sc/sc-service.js +552 -0
- package/dist/services/scan/acceptance-coverage-service.d.ts +42 -0
- package/dist/services/scan/acceptance-coverage-service.js +140 -0
- package/dist/services/scan/api-surface-service.d.ts +69 -0
- package/dist/services/scan/api-surface-service.js +239 -0
- package/dist/services/scan/archetype-service.d.ts +5 -0
- package/dist/services/scan/archetype-service.js +254 -0
- package/dist/services/scan/diff-scope-service.d.ts +40 -0
- package/dist/services/scan/diff-scope-service.js +198 -0
- package/dist/services/scan/existing-system-service.d.ts +7 -0
- package/dist/services/scan/existing-system-service.js +300 -0
- package/dist/services/scan/file-size-scan.d.ts +23 -0
- package/dist/services/scan/file-size-scan.js +68 -0
- package/dist/services/scan/karpathy-service.d.ts +60 -0
- package/dist/services/scan/karpathy-service.js +228 -0
- package/dist/services/scan/libraries-service.d.ts +24 -0
- package/dist/services/scan/libraries-service.js +419 -0
- package/dist/services/scan/libraries-types.d.ts +59 -0
- package/dist/services/scan/libraries-types.js +9 -0
- package/dist/services/scan/orphan-service.d.ts +76 -0
- package/dist/services/scan/orphan-service.js +538 -0
- package/dist/services/scan/scan-types.d.ts +59 -0
- package/dist/services/scan/scan-types.js +1 -0
- package/dist/services/scan/type-sanity-service.d.ts +23 -0
- package/dist/services/scan/type-sanity-service.js +116 -0
- package/dist/services/security/safe-settings-path.d.ts +12 -0
- package/dist/services/security/safe-settings-path.js +104 -0
- package/dist/services/sediment/dispose-confirm.d.ts +9 -0
- package/dist/services/sediment/dispose-confirm.js +5 -0
- package/dist/services/sediment/json-schema.d.ts +247 -0
- package/dist/services/sediment/json-schema.js +26 -0
- package/dist/services/sediment/manifest-lint.d.ts +13 -0
- package/dist/services/sediment/manifest-lint.js +11 -0
- package/dist/services/sediment/pool-paths.d.ts +22 -0
- package/dist/services/sediment/pool-paths.js +25 -0
- package/dist/services/sediment/pool-read.d.ts +20 -0
- package/dist/services/sediment/pool-read.js +73 -0
- package/dist/services/sediment/pool-rebuild-index.d.ts +15 -0
- package/dist/services/sediment/pool-rebuild-index.js +28 -0
- package/dist/services/sediment/pool-write.d.ts +14 -0
- package/dist/services/sediment/pool-write.js +25 -0
- package/dist/services/sediment/promotion-gate.d.ts +12 -0
- package/dist/services/sediment/promotion-gate.js +20 -0
- package/dist/services/sediment/types.d.ts +52 -0
- package/dist/services/sediment/types.js +1 -0
- package/dist/services/session/binding-status-service.d.ts +56 -0
- package/dist/services/session/binding-status-service.js +106 -0
- package/dist/services/session/binding-store.d.ts +161 -0
- package/dist/services/session/binding-store.js +509 -0
- package/dist/services/session/caller-binding-service.d.ts +70 -0
- package/dist/services/session/caller-binding-service.js +148 -0
- package/dist/services/session/caller-id-types.d.ts +77 -0
- package/dist/services/session/caller-id-types.js +46 -0
- package/dist/services/session/getSessionDir.d.ts +1 -0
- package/dist/services/session/getSessionDir.js +27 -0
- package/dist/services/session/index.d.ts +6 -0
- package/dist/services/session/index.js +7 -0
- package/dist/services/session/platform-fallbacks.d.ts +31 -0
- package/dist/services/session/platform-fallbacks.js +35 -0
- package/dist/services/session/resolve-caller-id.d.ts +57 -0
- package/dist/services/session/resolve-caller-id.js +88 -0
- package/dist/services/session/session-binding-bridge.d.ts +76 -0
- package/dist/services/session/session-binding-bridge.js +247 -0
- package/dist/services/session/session-checkpoint-service.d.ts +57 -0
- package/dist/services/session/session-checkpoint-service.js +143 -0
- package/dist/services/session/session-manager.d.ts +168 -0
- package/dist/services/session/session-manager.js +502 -0
- package/dist/services/session/session-resume-service.d.ts +25 -0
- package/dist/services/session/session-resume-service.js +101 -0
- package/dist/services/share/bundle-reader.d.ts +100 -0
- package/dist/services/share/bundle-reader.js +434 -0
- package/dist/services/share/bundle-types.d.ts +392 -0
- package/dist/services/share/bundle-types.js +318 -0
- package/dist/services/share/bundle-writer.d.ts +97 -0
- package/dist/services/share/bundle-writer.js +429 -0
- package/dist/services/share/run-state-contract.d.ts +133 -0
- package/dist/services/share/run-state-contract.js +138 -0
- package/dist/services/signal/cancel-handler.d.ts +14 -0
- package/dist/services/signal/cancel-handler.js +76 -0
- package/dist/services/skill/resume-detector.d.ts +54 -0
- package/dist/services/skill/resume-detector.js +334 -0
- package/dist/services/skill/skill-scheduler.d.ts +40 -0
- package/dist/services/skill/skill-scheduler.js +53 -0
- package/dist/services/skill/skill-search-service.d.ts +88 -0
- package/dist/services/skill/skill-search-service.js +228 -0
- package/dist/services/skillhub/release-diff.d.ts +18 -0
- package/dist/services/skillhub/release-diff.js +38 -0
- package/dist/services/skillhub/release-export.d.ts +8 -0
- package/dist/services/skillhub/release-export.js +31 -0
- package/dist/services/skillhub/release-gc-blobs.d.ts +13 -0
- package/dist/services/skillhub/release-gc-blobs.js +32 -0
- package/dist/services/skillhub/release-import.d.ts +7 -0
- package/dist/services/skillhub/release-import.js +64 -0
- package/dist/services/skillhub/release-retain.d.ts +23 -0
- package/dist/services/skillhub/release-retain.js +94 -0
- package/dist/services/skillhub/sqlite-store.d.ts +22 -0
- package/dist/services/skillhub/sqlite-store.js +63 -0
- package/dist/services/skillhub/tar-runtime.d.ts +21 -0
- package/dist/services/skillhub/tar-runtime.js +91 -0
- package/dist/services/skillhub/types.d.ts +115 -0
- package/dist/services/skillhub/types.js +1 -0
- package/dist/services/skills/hooks-settings-service.d.ts +137 -0
- package/dist/services/skills/hooks-settings-service.js +396 -0
- package/dist/services/skills/skill-conformance-service.d.ts +40 -0
- package/dist/services/skills/skill-conformance-service.js +139 -0
- package/dist/services/skills/skill-presence-service.d.ts +158 -0
- package/dist/services/skills/skill-presence-service.js +474 -0
- package/dist/services/skills/skill-registry.d.ts +17 -0
- package/dist/services/skills/skill-registry.js +67 -0
- package/dist/services/skills/skill-runbook-service.d.ts +11 -0
- package/dist/services/skills/skill-runbook-service.js +128 -0
- package/dist/services/skills/skill-statusline-renderer.d.ts +6 -0
- package/dist/services/skills/skill-statusline-renderer.js +55 -0
- package/dist/services/skills/skill-statusline-service.d.ts +24 -0
- package/dist/services/skills/skill-statusline-service.js +110 -0
- package/dist/services/skills/statusline-settings-service.d.ts +59 -0
- package/dist/services/skills/statusline-settings-service.js +141 -0
- package/dist/services/skills/sync-service.d.ts +86 -0
- package/dist/services/skills/sync-service.js +271 -0
- package/dist/services/slice/calibration-store.d.ts +39 -0
- package/dist/services/slice/calibration-store.js +68 -0
- package/dist/services/slice/cross-pass-edge-merger.d.ts +53 -0
- package/dist/services/slice/cross-pass-edge-merger.js +246 -0
- package/dist/services/slice/granularity-decider.d.ts +37 -0
- package/dist/services/slice/granularity-decider.js +40 -0
- package/dist/services/slice/llm-arbitrator.d.ts +35 -0
- package/dist/services/slice/llm-arbitrator.js +63 -0
- package/dist/services/slice/multi-pass-orchestrator.d.ts +67 -0
- package/dist/services/slice/multi-pass-orchestrator.js +225 -0
- package/dist/services/slice/schema-router.d.ts +44 -0
- package/dist/services/slice/schema-router.js +61 -0
- package/dist/services/slice/slice-archive-service.d.ts +20 -0
- package/dist/services/slice/slice-archive-service.js +111 -0
- package/dist/services/slice/slice-benchmark-service.d.ts +19 -0
- package/dist/services/slice/slice-benchmark-service.js +60 -0
- package/dist/services/slice/slice-check-service.d.ts +2 -0
- package/dist/services/slice/slice-check-service.js +459 -0
- package/dist/services/slice/slice-check-types.d.ts +104 -0
- package/dist/services/slice/slice-check-types.js +28 -0
- package/dist/services/slice/slice-decompose-runners.d.ts +23 -0
- package/dist/services/slice/slice-decompose-runners.js +174 -0
- package/dist/services/slice/slice-decompose-service.d.ts +24 -0
- package/dist/services/slice/slice-decompose-service.js +532 -0
- package/dist/services/slice/slice-decompose-types.d.ts +263 -0
- package/dist/services/slice/slice-decompose-types.js +30 -0
- package/dist/services/slice/slice-integration.d.ts +43 -0
- package/dist/services/slice/slice-integration.js +106 -0
- package/dist/services/slice/slice-pick-service.d.ts +32 -0
- package/dist/services/slice/slice-pick-service.js +75 -0
- package/dist/services/slice/slice-review-state.d.ts +70 -0
- package/dist/services/slice/slice-review-state.js +109 -0
- package/dist/services/slice/slice-topology-types.d.ts +115 -0
- package/dist/services/slice/slice-topology-types.js +20 -0
- package/dist/services/smoke/smoke-paths-state.d.ts +73 -0
- package/dist/services/smoke/smoke-paths-state.js +117 -0
- package/dist/services/sop/gate-enforce-service.d.ts +33 -0
- package/dist/services/sop/gate-enforce-service.js +168 -0
- package/dist/services/sop/sop-advance-service.d.ts +74 -0
- package/dist/services/sop/sop-advance-service.js +115 -0
- package/dist/services/sop/sop-check-service.d.ts +45 -0
- package/dist/services/sop/sop-check-service.js +181 -0
- package/dist/services/sop/sop-paths.d.ts +62 -0
- package/dist/services/sop/sop-paths.js +92 -0
- package/dist/services/sop/sop-registry-service.d.ts +46 -0
- package/dist/services/sop/sop-registry-service.js +89 -0
- package/dist/services/sop/sop-service.d.ts +55 -0
- package/dist/services/sop/sop-service.js +222 -0
- package/dist/services/sop/sop-types.d.ts +95 -0
- package/dist/services/sop/sop-types.js +11 -0
- package/dist/services/standards/ide-aware-standards-service.d.ts +94 -0
- package/dist/services/standards/ide-aware-standards-service.js +91 -0
- package/dist/services/standards/loop-engineering-lint.d.ts +38 -0
- package/dist/services/standards/loop-engineering-lint.js +101 -0
- package/dist/services/standards/loop-engineering-readiness-lint.d.ts +111 -0
- package/dist/services/standards/loop-engineering-readiness-lint.js +248 -0
- package/dist/services/standards/migrate-claude-rules-service.d.ts +19 -0
- package/dist/services/standards/migrate-claude-rules-service.js +214 -0
- package/dist/services/standards/migrate-service.d.ts +63 -0
- package/dist/services/standards/migrate-service.js +193 -0
- package/dist/services/standards/missing-standards-detector.d.ts +81 -0
- package/dist/services/standards/missing-standards-detector.js +139 -0
- package/dist/services/standards/project-context.d.ts +24 -0
- package/dist/services/standards/project-context.js +314 -0
- package/dist/services/standards/project-standards-service.d.ts +114 -0
- package/dist/services/standards/project-standards-service.js +693 -0
- package/dist/services/tech/tech-service.d.ts +69 -0
- package/dist/services/tech/tech-service.js +299 -0
- package/dist/services/test-cache/test-cache-service.d.ts +70 -0
- package/dist/services/test-cache/test-cache-service.js +175 -0
- package/dist/services/understand/hybrid-types.d.ts +32 -0
- package/dist/services/understand/hybrid-types.js +1 -0
- package/dist/services/understand/understand-hybrid-service.d.ts +10 -0
- package/dist/services/understand/understand-hybrid-service.js +100 -0
- package/dist/services/understand/understand-scan-service.d.ts +28 -0
- package/dist/services/understand/understand-scan-service.js +170 -0
- package/dist/services/understand/understand-types.d.ts +50 -0
- package/dist/services/understand/understand-types.js +1 -0
- package/dist/services/upgrade/1x-detector-service.d.ts +7 -0
- package/dist/services/upgrade/1x-detector-service.js +94 -0
- package/dist/services/upgrade/gitignore-migrate-service.d.ts +56 -0
- package/dist/services/upgrade/gitignore-migrate-service.js +170 -0
- package/dist/services/upgrade/upgrade-service.d.ts +81 -0
- package/dist/services/upgrade/upgrade-service.js +403 -0
- package/dist/services/verdict/envelopes.d.ts +93 -0
- package/dist/services/verdict/envelopes.js +349 -0
- package/dist/services/verdict/verdict-aggregator.d.ts +94 -0
- package/dist/services/verdict/verdict-aggregator.js +112 -0
- package/dist/services/workflow/artifact-paths.d.ts +59 -0
- package/dist/services/workflow/artifact-paths.js +166 -0
- package/dist/services/workflow/autonomous-resume-writer.d.ts +16 -0
- package/dist/services/workflow/autonomous-resume-writer.js +170 -0
- package/dist/services/workflow/pipeline-verify-service.d.ts +90 -0
- package/dist/services/workflow/pipeline-verify-service.js +449 -0
- package/dist/services/workflow/plan-reader.d.ts +29 -0
- package/dist/services/workflow/plan-reader.js +174 -0
- package/dist/services/workflow/plan-refresher.d.ts +32 -0
- package/dist/services/workflow/plan-refresher.js +353 -0
- package/dist/services/workflow/plan-trigger-detector.d.ts +55 -0
- package/dist/services/workflow/plan-trigger-detector.js +142 -0
- package/dist/services/workflow/workflow-autonomous-resume-helpers.d.ts +19 -0
- package/dist/services/workflow/workflow-autonomous-resume-helpers.js +300 -0
- package/dist/services/workflow/workflow-autonomous-service.d.ts +100 -0
- package/dist/services/workflow/workflow-autonomous-service.js +306 -0
- package/dist/services/workflow/workflow-loader.d.ts +63 -0
- package/dist/services/workflow/workflow-loader.js +168 -0
- package/dist/services/workflow/workflow-router-service.d.ts +85 -0
- package/dist/services/workflow/workflow-router-service.js +233 -0
- package/dist/services/workflow/workflow-skip-service.d.ts +106 -0
- package/dist/services/workflow/workflow-skip-service.js +209 -0
- package/dist/services/workflow/workflow-spec.d.ts +116 -0
- package/dist/services/workflow/workflow-spec.js +431 -0
- package/dist/services/workflow/workflow-state-store.d.ts +27 -0
- package/dist/services/workflow/workflow-state-store.js +95 -0
- package/dist/services/workspace/claude-settings-template.d.ts +101 -0
- package/dist/services/workspace/claude-settings-template.js +254 -0
- package/dist/services/workspace/migrate-1-4-1-service.d.ts +44 -0
- package/dist/services/workspace/migrate-1-4-1-service.js +195 -0
- package/dist/services/workspace/migrate-service.d.ts +2 -0
- package/dist/services/workspace/migrate-service.js +613 -0
- package/dist/services/workspace/migrate-types.d.ts +127 -0
- package/dist/services/workspace/migrate-types.js +21 -0
- package/dist/services/workspace/reconcile-service.d.ts +188 -0
- package/dist/services/workspace/reconcile-service.js +683 -0
- package/dist/services/workspace/reconcile-types.d.ts +130 -0
- package/dist/services/workspace/reconcile-types.js +13 -0
- package/dist/services/workspace/sid-naming-guard.d.ts +17 -0
- package/dist/services/workspace/sid-naming-guard.js +34 -0
- package/dist/services/workspace/templates/project-scan/audit-output-schema.md +100 -0
- package/dist/services/workspace/templates/project-scan/business-knowledge.md +44 -0
- package/dist/services/workspace/templates/project-scan/index.d.ts +34 -0
- package/dist/services/workspace/templates/project-scan/index.js +60 -0
- package/dist/services/workspace/templates/project-scan/perf-template.md +109 -0
- package/dist/services/workspace/templates/project-scan/security-template.md +99 -0
- package/dist/services/workspace/workspace-claude-settings-materializer.d.ts +45 -0
- package/dist/services/workspace/workspace-claude-settings-materializer.js +194 -0
- package/dist/services/workspace/workspace-clean-service.d.ts +28 -0
- package/dist/services/workspace/workspace-clean-service.js +46 -0
- package/dist/services/workspace/workspace-service.d.ts +177 -0
- package/dist/services/workspace/workspace-service.js +432 -0
- package/dist/services/workspace/workspace-state-service.d.ts +7 -0
- package/dist/services/workspace/workspace-state-service.js +43 -0
- package/dist/shared/format-md-compact.d.ts +32 -0
- package/dist/shared/format-md-compact.js +297 -0
- package/dist/shared/frontmatter.d.ts +6 -0
- package/dist/shared/frontmatter.js +165 -0
- package/dist/shared/fs-utils.d.ts +4 -0
- package/dist/shared/fs-utils.js +16 -0
- package/dist/shared/fs.d.ts +4 -0
- package/dist/shared/fs.js +26 -0
- package/dist/shared/incrementing-number.d.ts +23 -0
- package/dist/shared/incrementing-number.js +68 -0
- package/dist/shared/json-schema-mini.d.ts +10 -0
- package/dist/shared/json-schema-mini.js +113 -0
- package/dist/shared/path-safety.d.ts +21 -0
- package/dist/shared/path-safety.js +54 -0
- package/dist/shared/path-utils.d.ts +13 -0
- package/dist/shared/path-utils.js +56 -0
- package/dist/shared/paths.d.ts +6 -0
- package/dist/shared/paths.js +50 -0
- package/dist/shared/planner-response.d.ts +21 -0
- package/dist/shared/planner-response.js +26 -0
- package/dist/shared/platform.d.ts +6 -0
- package/dist/shared/platform.js +11 -0
- package/dist/shared/process.d.ts +5 -0
- package/dist/shared/process.js +12 -0
- package/dist/shared/result.d.ts +22 -0
- package/dist/shared/result.js +46 -0
- package/dist/shared/stale-policy.d.ts +67 -0
- package/dist/shared/stale-policy.js +85 -0
- package/dist/shared/version.d.ts +1 -0
- package/dist/shared/version.js +1 -0
- package/dist/skills/peaks-maker/index.d.ts +5 -0
- package/dist/skills/peaks-maker/index.js +32 -0
- package/package.json +5 -4
- package/scripts/copy-templates.mjs +1 -1
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DAG orchestrator — 2.7.0 slice-dag-dispatcher MVP (slice 1.2.a).
|
|
3
|
+
*
|
|
4
|
+
* The pure planner. Given a `SliceDag`, the orchestrator decides which
|
|
5
|
+
* slices to dispatch next (in topological order), drives the join barrier,
|
|
6
|
+
* and rolls back on any leaf failure.
|
|
7
|
+
*
|
|
8
|
+
* Design:
|
|
9
|
+
* - **Pure dispatcher contract**: the orchestrator never calls an LLM
|
|
10
|
+
* directly; it returns `DispatchSpec[]` per topological level and lets
|
|
11
|
+
* the caller (the CLI / peaks-code LLM) execute the per-IDE tool calls.
|
|
12
|
+
* This keeps the orchestrator testable end-to-end with mock sub-agents.
|
|
13
|
+
* - **Join barrier**: between levels, the orchestrator awaits the
|
|
14
|
+
* results of all dispatched leaves and refuses to advance if any
|
|
15
|
+
* leaf failed.
|
|
16
|
+
* - **Failure rollback**: a leaf failure cancels all other in-flight
|
|
17
|
+
* slices in the same level. The orchestrator surfaces a `DagRollback`
|
|
18
|
+
* event so the caller can re-plan.
|
|
19
|
+
* - **Contract broadcast**: when a slice finishes successfully, the
|
|
20
|
+
* orchestrator writes its public contract to disk via `writeContract`,
|
|
21
|
+
* and the next dispatch's prompt is built with `formatContractInjection`.
|
|
22
|
+
*
|
|
23
|
+
* Why this lives in `services/code/`:
|
|
24
|
+
* `peaks-code` is the natural caller. The CLI surface (`peaks sub-agent
|
|
25
|
+
* dispatch --from-dag`) consumes the planner's output but the planner
|
|
26
|
+
* itself is a library.
|
|
27
|
+
*/
|
|
28
|
+
import { type SliceDag } from '../dispatch/slice-dag.js';
|
|
29
|
+
import { type SliceContract } from '../dispatch/contract-store.js';
|
|
30
|
+
export interface DispatchSpec {
|
|
31
|
+
readonly sliceId: string;
|
|
32
|
+
readonly role: string;
|
|
33
|
+
readonly label: string | null;
|
|
34
|
+
readonly prompt: string;
|
|
35
|
+
/** Optional contract block to splice into the prompt. */
|
|
36
|
+
readonly contractBlock: string;
|
|
37
|
+
}
|
|
38
|
+
export interface RunDagOptions {
|
|
39
|
+
readonly projectRoot: string;
|
|
40
|
+
readonly sessionId: string;
|
|
41
|
+
/**
|
|
42
|
+
* Reserved for slice 1.3 — when the per-IDE `awaitBatch` join barrier
|
|
43
|
+
* moves into the orchestrator, this will cap how long `runDag` waits
|
|
44
|
+
* for a single leaf before issuing `cancel`. Unused in 1.2 MVP
|
|
45
|
+
* (per-IDE await is delegated to the LLM-side runner); declared here
|
|
46
|
+
* so the public surface stays stable across the 1.2 → 1.3 transition.
|
|
47
|
+
*/
|
|
48
|
+
readonly timeoutMs?: number;
|
|
49
|
+
/** Test seam: replace the runner (default: a no-op that returns `done`). */
|
|
50
|
+
readonly runSlice?: (spec: DispatchSpec) => Promise<SliceOutcome>;
|
|
51
|
+
/** Test seam: replace the contract writer (default: `writeContract`). */
|
|
52
|
+
readonly writeContractFn?: (sliceId: string, publicSurface: PublicSurface) => SliceContract;
|
|
53
|
+
/**
|
|
54
|
+
* Pre-existing contracts from upstream slices (e.g. already completed in
|
|
55
|
+
* a prior `peaks sub-agent dispatch --from-dag` invocation). The
|
|
56
|
+
* orchestrator splices these into downstream dispatch prompts via
|
|
57
|
+
* `formatContractInjection(ancestors)` — matching AC-4.c: "B / C / D
|
|
58
|
+
* dispatch prompt 自动注入 A 契约".
|
|
59
|
+
*/
|
|
60
|
+
readonly existingContracts?: readonly SliceContract[];
|
|
61
|
+
}
|
|
62
|
+
export type SliceOutcome = {
|
|
63
|
+
readonly status: 'done';
|
|
64
|
+
readonly publicSurface: PublicSurface;
|
|
65
|
+
} | {
|
|
66
|
+
readonly status: 'failed';
|
|
67
|
+
readonly reason: string;
|
|
68
|
+
} | {
|
|
69
|
+
readonly status: 'cancelled';
|
|
70
|
+
};
|
|
71
|
+
export interface PublicSurface {
|
|
72
|
+
readonly exports: readonly string[];
|
|
73
|
+
readonly types: readonly string[];
|
|
74
|
+
readonly publicSignatures: readonly string[];
|
|
75
|
+
readonly broadcastTo?: readonly string[];
|
|
76
|
+
}
|
|
77
|
+
export interface DagRunResult {
|
|
78
|
+
readonly dagHash: string;
|
|
79
|
+
readonly completed: readonly string[];
|
|
80
|
+
readonly failed: readonly {
|
|
81
|
+
sliceId: string;
|
|
82
|
+
reason: string;
|
|
83
|
+
}[];
|
|
84
|
+
readonly cancelled: readonly string[];
|
|
85
|
+
readonly contracts: readonly SliceContract[];
|
|
86
|
+
}
|
|
87
|
+
/** Thrown when the DAG has no feasible plan (validation error). */
|
|
88
|
+
export declare class DagPlanError extends Error {
|
|
89
|
+
readonly code: "DAG_PLAN_ERROR";
|
|
90
|
+
constructor(message: string);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Build a single dispatch spec for `sliceId` given the current contract set.
|
|
94
|
+
*
|
|
95
|
+
* When `node.prompt` is set on the DAG node, that wins verbatim (the
|
|
96
|
+
* caller controls per-slice prompt content). Otherwise we fall back to
|
|
97
|
+
* `defaultPrompt`, then to a structured MVP prompt covering: the slice's
|
|
98
|
+
* role + id + label, the injected ancestor-contract block (if any), the
|
|
99
|
+
* MVP scope statement, and the explicit handoff protocol the LLM-side
|
|
100
|
+
* runner must follow (write contract, then re-invoke for the next
|
|
101
|
+
* topological level).
|
|
102
|
+
*/
|
|
103
|
+
export declare function buildDispatchSpec(dag: SliceDag, sliceId: string, contracts: readonly SliceContract[], defaultPrompt?: string): DispatchSpec;
|
|
104
|
+
/**
|
|
105
|
+
* Run a slice DAG end-to-end. Returns a summary; throws `DagPlanError`
|
|
106
|
+
* on validation failure; any leaf failure causes an in-flight cancel
|
|
107
|
+
* signal but the function still resolves with the partial result so the
|
|
108
|
+
* caller can re-plan.
|
|
109
|
+
*/
|
|
110
|
+
export declare function runDag(dag: SliceDag, opts: RunDagOptions): Promise<DagRunResult>;
|
|
111
|
+
/**
|
|
112
|
+
* v2.15.0 follow-up — G12: layered DAG runner (foundation-first,
|
|
113
|
+
* business-parallel, upstreamSync-priority). Behavior:
|
|
114
|
+
*
|
|
115
|
+
* 1. Foundation slices run first (topological order).
|
|
116
|
+
* 2. As foundation slices complete, business slices that depend ONLY
|
|
117
|
+
* on the completed foundation subset can start — they do NOT wait
|
|
118
|
+
* for ALL foundation slices to complete. This is the layered-
|
|
119
|
+
* parallelism speedup (saves 2-3 days on a 1-week+ requirement).
|
|
120
|
+
* 3. upstreamSync slices take priority within their topological
|
|
121
|
+
* level (handled by `topologicalLevels` priority sort).
|
|
122
|
+
* 4. Cancel-on-fail semantics are preserved: any leaf failure
|
|
123
|
+
* cancels in-flight siblings and breaks the loop.
|
|
124
|
+
*
|
|
125
|
+
* Pure planner; same I/O contract as `runDag`. The caller (CLI /
|
|
126
|
+
* peaks-code LLM) executes the per-IDE tool calls.
|
|
127
|
+
*/
|
|
128
|
+
export declare function runLayeredDag(dag: SliceDag, opts: RunDagOptions): Promise<DagRunResult>;
|
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DAG orchestrator — 2.7.0 slice-dag-dispatcher MVP (slice 1.2.a).
|
|
3
|
+
*
|
|
4
|
+
* The pure planner. Given a `SliceDag`, the orchestrator decides which
|
|
5
|
+
* slices to dispatch next (in topological order), drives the join barrier,
|
|
6
|
+
* and rolls back on any leaf failure.
|
|
7
|
+
*
|
|
8
|
+
* Design:
|
|
9
|
+
* - **Pure dispatcher contract**: the orchestrator never calls an LLM
|
|
10
|
+
* directly; it returns `DispatchSpec[]` per topological level and lets
|
|
11
|
+
* the caller (the CLI / peaks-code LLM) execute the per-IDE tool calls.
|
|
12
|
+
* This keeps the orchestrator testable end-to-end with mock sub-agents.
|
|
13
|
+
* - **Join barrier**: between levels, the orchestrator awaits the
|
|
14
|
+
* results of all dispatched leaves and refuses to advance if any
|
|
15
|
+
* leaf failed.
|
|
16
|
+
* - **Failure rollback**: a leaf failure cancels all other in-flight
|
|
17
|
+
* slices in the same level. The orchestrator surfaces a `DagRollback`
|
|
18
|
+
* event so the caller can re-plan.
|
|
19
|
+
* - **Contract broadcast**: when a slice finishes successfully, the
|
|
20
|
+
* orchestrator writes its public contract to disk via `writeContract`,
|
|
21
|
+
* and the next dispatch's prompt is built with `formatContractInjection`.
|
|
22
|
+
*
|
|
23
|
+
* Why this lives in `services/code/`:
|
|
24
|
+
* `peaks-code` is the natural caller. The CLI surface (`peaks sub-agent
|
|
25
|
+
* dispatch --from-dag`) consumes the planner's output but the planner
|
|
26
|
+
* itself is a library.
|
|
27
|
+
*/
|
|
28
|
+
import { hashDag, InvalidSliceDagError, topologicalLevels, validateDag } from '../dispatch/slice-dag.js';
|
|
29
|
+
import { formatContractInjection, writeContract } from '../dispatch/contract-store.js';
|
|
30
|
+
import { formatTestToolDetection } from '../dispatch/test-tool-detection.js';
|
|
31
|
+
/** Thrown when the DAG has no feasible plan (validation error). */
|
|
32
|
+
export class DagPlanError extends Error {
|
|
33
|
+
code = 'DAG_PLAN_ERROR';
|
|
34
|
+
constructor(message) {
|
|
35
|
+
super(message);
|
|
36
|
+
this.name = 'DagPlanError';
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/** Default runner for tests / mocks. Returns `done` with an empty surface. */
|
|
40
|
+
const defaultRunner = async (_spec) => ({
|
|
41
|
+
status: 'done',
|
|
42
|
+
publicSurface: { exports: [], types: [], publicSignatures: [] }
|
|
43
|
+
});
|
|
44
|
+
const defaultWriter = (projectRoot, sessionId) => (sliceId, publicSurface) => {
|
|
45
|
+
const r = writeContract(projectRoot, sessionId, {
|
|
46
|
+
sliceId,
|
|
47
|
+
sessionId,
|
|
48
|
+
exports: publicSurface.exports,
|
|
49
|
+
types: publicSurface.types,
|
|
50
|
+
publicSignatures: publicSurface.publicSignatures,
|
|
51
|
+
...(publicSurface.broadcastTo !== undefined ? { broadcastTo: publicSurface.broadcastTo } : {})
|
|
52
|
+
});
|
|
53
|
+
return r.contract;
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Build a single dispatch spec for `sliceId` given the current contract set.
|
|
57
|
+
*
|
|
58
|
+
* When `node.prompt` is set on the DAG node, that wins verbatim (the
|
|
59
|
+
* caller controls per-slice prompt content). Otherwise we fall back to
|
|
60
|
+
* `defaultPrompt`, then to a structured MVP prompt covering: the slice's
|
|
61
|
+
* role + id + label, the injected ancestor-contract block (if any), the
|
|
62
|
+
* MVP scope statement, and the explicit handoff protocol the LLM-side
|
|
63
|
+
* runner must follow (write contract, then re-invoke for the next
|
|
64
|
+
* topological level).
|
|
65
|
+
*/
|
|
66
|
+
export function buildDispatchSpec(dag, sliceId, contracts, defaultPrompt) {
|
|
67
|
+
const node = dag.nodes.find((n) => n.id === sliceId);
|
|
68
|
+
if (!node) {
|
|
69
|
+
throw new DagPlanError(`unknown slice id: ${sliceId}`);
|
|
70
|
+
}
|
|
71
|
+
const ancestors = contracts.filter((c) => c.broadcastTo?.includes(sliceId) ?? false);
|
|
72
|
+
const contractBlock = formatContractInjection(ancestors);
|
|
73
|
+
if (node.prompt !== undefined) {
|
|
74
|
+
return {
|
|
75
|
+
sliceId,
|
|
76
|
+
role: node.role,
|
|
77
|
+
label: node.label ?? null,
|
|
78
|
+
prompt: `${formatTestToolDetection()}\n\n${node.prompt}`,
|
|
79
|
+
contractBlock
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
if (defaultPrompt !== undefined) {
|
|
83
|
+
return {
|
|
84
|
+
sliceId,
|
|
85
|
+
role: node.role,
|
|
86
|
+
label: node.label ?? null,
|
|
87
|
+
prompt: defaultPrompt,
|
|
88
|
+
contractBlock
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
// MVP (1.2) structured fallback prompt. Slice 1.4 will land per-domain
|
|
92
|
+
// prompt templates (one per role), but for the MVP dogfood we ship a
|
|
93
|
+
// single structured prompt that:
|
|
94
|
+
// 1. names the slice id + role + label (so the LLM knows what to do)
|
|
95
|
+
// 2. states the MVP scope explicitly (avoid confusion with full prod)
|
|
96
|
+
// 3. includes the ancestor contract injection (so downstream slices
|
|
97
|
+
// see their inputs)
|
|
98
|
+
// 4. states the handoff protocol (write contract, re-invoke for next level)
|
|
99
|
+
const labelFragment = node.label ? ` — ${node.label}` : '';
|
|
100
|
+
const ancestorFragment = contractBlock
|
|
101
|
+
? `\n\n${contractBlock}`
|
|
102
|
+
: '';
|
|
103
|
+
const prompt = [
|
|
104
|
+
formatTestToolDetection(),
|
|
105
|
+
'',
|
|
106
|
+
`[slice-dag-dispatcher MVP 1.2] execute slice "${sliceId}" (role=${node.role})${labelFragment}.`,
|
|
107
|
+
'',
|
|
108
|
+
'Scope: this is the 2.7.0 MVP dogfood of peaks-loop DAG-aware dispatch. You are one leaf in a multi-slice plan; the orchestrator has already validated the DAG, built a topological order, and injected your upstream contracts above.',
|
|
109
|
+
'',
|
|
110
|
+
'Handoff protocol (REQUIRED — orchestrator depends on this):',
|
|
111
|
+
' 1. Execute the slice to completion.',
|
|
112
|
+
` 2. Write your public contract via \`peaks contract write --project <root> --session-id <sid> --slice-id ${sliceId} --exports <...> --types <...> --signatures <...>\`. The orchestrator will pick it up on the next dispatch run.`,
|
|
113
|
+
' 3. Do NOT re-invoke `peaks sub-agent dispatch --from-dag` yourself — the parent orchestrator (peaks-code) drives level advancement.',
|
|
114
|
+
'',
|
|
115
|
+
`After your contract is on disk, the orchestrator will auto-advance to the next topological level (if any) by re-invoking \`peaks sub-agent dispatch --from-dag\` with the same batch-id. Your slice will appear in its ancestors via \`formatContractInjection\`.${ancestorFragment}`
|
|
116
|
+
].join('\n');
|
|
117
|
+
return {
|
|
118
|
+
sliceId,
|
|
119
|
+
role: node.role,
|
|
120
|
+
label: node.label ?? null,
|
|
121
|
+
prompt,
|
|
122
|
+
contractBlock
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Run a slice DAG end-to-end. Returns a summary; throws `DagPlanError`
|
|
127
|
+
* on validation failure; any leaf failure causes an in-flight cancel
|
|
128
|
+
* signal but the function still resolves with the partial result so the
|
|
129
|
+
* caller can re-plan.
|
|
130
|
+
*/
|
|
131
|
+
export async function runDag(dag, opts) {
|
|
132
|
+
try {
|
|
133
|
+
validateDag(dag);
|
|
134
|
+
}
|
|
135
|
+
catch (err) {
|
|
136
|
+
if (err instanceof InvalidSliceDagError) {
|
|
137
|
+
throw new DagPlanError(err.message);
|
|
138
|
+
}
|
|
139
|
+
throw err;
|
|
140
|
+
}
|
|
141
|
+
const levels = topologicalLevels(dag);
|
|
142
|
+
const dagHash = hashDag(dag);
|
|
143
|
+
const runner = opts.runSlice ?? defaultRunner;
|
|
144
|
+
const writer = opts.writeContractFn ?? defaultWriter(opts.projectRoot, opts.sessionId);
|
|
145
|
+
const completed = new Set();
|
|
146
|
+
const contracts = [...(opts.existingContracts ?? [])];
|
|
147
|
+
const failed = [];
|
|
148
|
+
const cancelled = [];
|
|
149
|
+
const inflight = new Set();
|
|
150
|
+
for (const level of levels) {
|
|
151
|
+
const ready = level.filter((id) => !completed.has(id) && !failed.some((f) => f.sliceId === id));
|
|
152
|
+
if (ready.length === 0)
|
|
153
|
+
continue;
|
|
154
|
+
for (const id of ready)
|
|
155
|
+
inflight.add(id);
|
|
156
|
+
const settled = await Promise.all(ready.map(async (sliceId) => {
|
|
157
|
+
const spec = buildDispatchSpec(dag, sliceId, contracts);
|
|
158
|
+
try {
|
|
159
|
+
const outcome = await runner(spec);
|
|
160
|
+
return { sliceId, outcome };
|
|
161
|
+
}
|
|
162
|
+
catch (err) {
|
|
163
|
+
return {
|
|
164
|
+
sliceId,
|
|
165
|
+
outcome: { status: 'failed', reason: err.message }
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
}));
|
|
169
|
+
let levelHasFailure = false;
|
|
170
|
+
for (const { sliceId, outcome } of settled) {
|
|
171
|
+
inflight.delete(sliceId);
|
|
172
|
+
if (outcome.status === 'done') {
|
|
173
|
+
completed.add(sliceId);
|
|
174
|
+
const contract = writer(sliceId, outcome.publicSurface);
|
|
175
|
+
contracts.push(contract);
|
|
176
|
+
}
|
|
177
|
+
else if (outcome.status === 'failed') {
|
|
178
|
+
failed.push({ sliceId, reason: outcome.reason });
|
|
179
|
+
levelHasFailure = true;
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
cancelled.push(sliceId);
|
|
183
|
+
levelHasFailure = true;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
if (levelHasFailure) {
|
|
187
|
+
for (const id of inflight) {
|
|
188
|
+
cancelled.push(id);
|
|
189
|
+
inflight.delete(id);
|
|
190
|
+
}
|
|
191
|
+
break;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
return {
|
|
195
|
+
dagHash,
|
|
196
|
+
completed: Array.from(completed).sort(),
|
|
197
|
+
failed,
|
|
198
|
+
cancelled: cancelled.sort(),
|
|
199
|
+
contracts
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* v2.15.0 follow-up — G12: layered DAG runner (foundation-first,
|
|
204
|
+
* business-parallel, upstreamSync-priority). Behavior:
|
|
205
|
+
*
|
|
206
|
+
* 1. Foundation slices run first (topological order).
|
|
207
|
+
* 2. As foundation slices complete, business slices that depend ONLY
|
|
208
|
+
* on the completed foundation subset can start — they do NOT wait
|
|
209
|
+
* for ALL foundation slices to complete. This is the layered-
|
|
210
|
+
* parallelism speedup (saves 2-3 days on a 1-week+ requirement).
|
|
211
|
+
* 3. upstreamSync slices take priority within their topological
|
|
212
|
+
* level (handled by `topologicalLevels` priority sort).
|
|
213
|
+
* 4. Cancel-on-fail semantics are preserved: any leaf failure
|
|
214
|
+
* cancels in-flight siblings and breaks the loop.
|
|
215
|
+
*
|
|
216
|
+
* Pure planner; same I/O contract as `runDag`. The caller (CLI /
|
|
217
|
+
* peaks-code LLM) executes the per-IDE tool calls.
|
|
218
|
+
*/
|
|
219
|
+
export async function runLayeredDag(dag, opts) {
|
|
220
|
+
try {
|
|
221
|
+
validateDag(dag);
|
|
222
|
+
}
|
|
223
|
+
catch (err) {
|
|
224
|
+
if (err instanceof InvalidSliceDagError) {
|
|
225
|
+
throw new DagPlanError(err.message);
|
|
226
|
+
}
|
|
227
|
+
throw err;
|
|
228
|
+
}
|
|
229
|
+
const levels = topologicalLevels(dag);
|
|
230
|
+
const dagHash = hashDag(dag);
|
|
231
|
+
const runner = opts.runSlice ?? defaultRunner;
|
|
232
|
+
const writer = opts.writeContractFn ?? defaultWriter(opts.projectRoot, opts.sessionId);
|
|
233
|
+
const completed = new Set();
|
|
234
|
+
const contracts = [...(opts.existingContracts ?? [])];
|
|
235
|
+
const failed = [];
|
|
236
|
+
const cancelled = [];
|
|
237
|
+
const inflight = new Set();
|
|
238
|
+
for (const level of levels) {
|
|
239
|
+
// G12 layered parallelism: a business slice only blocks until its
|
|
240
|
+
// OWN `dependsOn` subset is complete, not all foundation slices.
|
|
241
|
+
const ready = level.filter((id) => {
|
|
242
|
+
if (completed.has(id))
|
|
243
|
+
return false;
|
|
244
|
+
if (failed.some((f) => f.sliceId === id))
|
|
245
|
+
return false;
|
|
246
|
+
// Check if all ancestors of this slice are in `completed` OR
|
|
247
|
+
// (already in `failed` — then it would never run, but we filter
|
|
248
|
+
// by `failed` above).
|
|
249
|
+
const node = dag.nodes.find((n) => n.id === id);
|
|
250
|
+
if (!node)
|
|
251
|
+
return false;
|
|
252
|
+
const ancestors = dag.edges.filter((e) => e.to === id).map((e) => e.from);
|
|
253
|
+
return ancestors.every((a) => completed.has(a));
|
|
254
|
+
});
|
|
255
|
+
if (ready.length === 0)
|
|
256
|
+
continue;
|
|
257
|
+
for (const id of ready)
|
|
258
|
+
inflight.add(id);
|
|
259
|
+
const settled = await Promise.all(ready.map(async (sliceId) => {
|
|
260
|
+
const spec = buildDispatchSpec(dag, sliceId, contracts);
|
|
261
|
+
try {
|
|
262
|
+
const outcome = await runner(spec);
|
|
263
|
+
return { sliceId, outcome };
|
|
264
|
+
}
|
|
265
|
+
catch (err) {
|
|
266
|
+
return {
|
|
267
|
+
sliceId,
|
|
268
|
+
outcome: { status: 'failed', reason: err.message }
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
}));
|
|
272
|
+
let levelHasFailure = false;
|
|
273
|
+
for (const { sliceId, outcome } of settled) {
|
|
274
|
+
inflight.delete(sliceId);
|
|
275
|
+
if (outcome.status === 'done') {
|
|
276
|
+
completed.add(sliceId);
|
|
277
|
+
const contract = writer(sliceId, outcome.publicSurface);
|
|
278
|
+
contracts.push(contract);
|
|
279
|
+
}
|
|
280
|
+
else if (outcome.status === 'failed') {
|
|
281
|
+
failed.push({ sliceId, reason: outcome.reason });
|
|
282
|
+
levelHasFailure = true;
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
cancelled.push(sliceId);
|
|
286
|
+
levelHasFailure = true;
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
if (levelHasFailure) {
|
|
290
|
+
for (const id of inflight) {
|
|
291
|
+
cancelled.push(id);
|
|
292
|
+
inflight.delete(id);
|
|
293
|
+
}
|
|
294
|
+
break;
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
return {
|
|
298
|
+
dagHash,
|
|
299
|
+
completed: Array.from(completed).sort(),
|
|
300
|
+
failed,
|
|
301
|
+
cancelled: cancelled.sort(),
|
|
302
|
+
contracts
|
|
303
|
+
};
|
|
304
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v3.1.2 Step 11 / final handoff — Size-fear ban.
|
|
3
|
+
*
|
|
4
|
+
* Refuses to emit a final handoff while a Job has remaining slices.
|
|
5
|
+
* Closes the v3.1.0 incident pattern: LLM writes a fake-completion
|
|
6
|
+
* message at high context-fill before Job mode kicks in.
|
|
7
|
+
*
|
|
8
|
+
* Decision tree:
|
|
9
|
+
* - job-shape.json missing OR isJob === false → ALLOW (normal handoff)
|
|
10
|
+
* - isJob === true, no state.json → JOB_NOT_INITIALIZED (LLM
|
|
11
|
+
* skipped `peaks job init`)
|
|
12
|
+
* - isJob === true, state.json, remaining > 0,
|
|
13
|
+
* no --force-under-job → JOB_REMAINING_BLOCKED
|
|
14
|
+
* - isJob === true, state.json, remaining === 0 → ALLOW (Job done)
|
|
15
|
+
* - isJob === true, state.json, remaining > 0,
|
|
16
|
+
* --force-under-job → ALLOW (override path)
|
|
17
|
+
*
|
|
18
|
+
* Karpathy §2 (Simplicity First): ~70 lines, no LLM call, no regex.
|
|
19
|
+
* Pure read + arithmetic. The CLI wrapper in code-commands.ts
|
|
20
|
+
* translates the verdict into exit code + JSON envelope.
|
|
21
|
+
*/
|
|
22
|
+
export declare const JOB_NOT_INITIALIZED: "JOB_NOT_INITIALIZED";
|
|
23
|
+
export declare const JOB_REMAINING_BLOCKED: "JOB_REMAINING_BLOCKED";
|
|
24
|
+
export type EmitHandoffVerdict = {
|
|
25
|
+
readonly kind: 'allow-not-job';
|
|
26
|
+
} | {
|
|
27
|
+
readonly kind: 'allow-done';
|
|
28
|
+
readonly remaining: number;
|
|
29
|
+
} | {
|
|
30
|
+
readonly kind: 'allow-force-override';
|
|
31
|
+
readonly remaining: number;
|
|
32
|
+
} | {
|
|
33
|
+
readonly kind: 'block-not-initialized';
|
|
34
|
+
readonly code: typeof JOB_NOT_INITIALIZED;
|
|
35
|
+
readonly jobId: string;
|
|
36
|
+
} | {
|
|
37
|
+
readonly kind: 'block-remaining';
|
|
38
|
+
readonly code: typeof JOB_REMAINING_BLOCKED;
|
|
39
|
+
readonly jobId: string;
|
|
40
|
+
readonly remaining: number;
|
|
41
|
+
};
|
|
42
|
+
export interface EvaluateEmitHandoffInput {
|
|
43
|
+
readonly projectRoot: string;
|
|
44
|
+
readonly sessionId: string;
|
|
45
|
+
/** Suggested job id — read from job-shape.json when omitted. */
|
|
46
|
+
readonly jobId?: string;
|
|
47
|
+
readonly forceUnderJob?: boolean;
|
|
48
|
+
}
|
|
49
|
+
export declare function evaluateEmitHandoff(input: EvaluateEmitHandoffInput): EmitHandoffVerdict;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v3.1.2 Step 11 / final handoff — Size-fear ban.
|
|
3
|
+
*
|
|
4
|
+
* Refuses to emit a final handoff while a Job has remaining slices.
|
|
5
|
+
* Closes the v3.1.0 incident pattern: LLM writes a fake-completion
|
|
6
|
+
* message at high context-fill before Job mode kicks in.
|
|
7
|
+
*
|
|
8
|
+
* Decision tree:
|
|
9
|
+
* - job-shape.json missing OR isJob === false → ALLOW (normal handoff)
|
|
10
|
+
* - isJob === true, no state.json → JOB_NOT_INITIALIZED (LLM
|
|
11
|
+
* skipped `peaks job init`)
|
|
12
|
+
* - isJob === true, state.json, remaining > 0,
|
|
13
|
+
* no --force-under-job → JOB_REMAINING_BLOCKED
|
|
14
|
+
* - isJob === true, state.json, remaining === 0 → ALLOW (Job done)
|
|
15
|
+
* - isJob === true, state.json, remaining > 0,
|
|
16
|
+
* --force-under-job → ALLOW (override path)
|
|
17
|
+
*
|
|
18
|
+
* Karpathy §2 (Simplicity First): ~70 lines, no LLM call, no regex.
|
|
19
|
+
* Pure read + arithmetic. The CLI wrapper in code-commands.ts
|
|
20
|
+
* translates the verdict into exit code + JSON envelope.
|
|
21
|
+
*/
|
|
22
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
23
|
+
import { join } from 'node:path';
|
|
24
|
+
import { readJobShapeDecision, JobShapeDecisionError, JOB_SHAPE_NOT_DECIDED } from './job-shape-decision.js';
|
|
25
|
+
export const JOB_NOT_INITIALIZED = 'JOB_NOT_INITIALIZED';
|
|
26
|
+
export const JOB_REMAINING_BLOCKED = 'JOB_REMAINING_BLOCKED';
|
|
27
|
+
function countRemaining(statePath) {
|
|
28
|
+
let raw;
|
|
29
|
+
try {
|
|
30
|
+
raw = readFileSync(statePath, 'utf8');
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return Number.NaN;
|
|
34
|
+
}
|
|
35
|
+
let parsed;
|
|
36
|
+
try {
|
|
37
|
+
parsed = JSON.parse(raw);
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return Number.NaN;
|
|
41
|
+
}
|
|
42
|
+
if (!Array.isArray(parsed.slices))
|
|
43
|
+
return Number.NaN;
|
|
44
|
+
return parsed.slices.filter((sl) => sl.status !== 'done' && sl.status !== 'skipped').length;
|
|
45
|
+
}
|
|
46
|
+
function statePath(projectRoot, sessionId, jobId) {
|
|
47
|
+
return join(projectRoot, '.peaks', '_runtime', sessionId, 'job', jobId, 'state.json');
|
|
48
|
+
}
|
|
49
|
+
export function evaluateEmitHandoff(input) {
|
|
50
|
+
let decision = null;
|
|
51
|
+
try {
|
|
52
|
+
const record = readJobShapeDecision(input.projectRoot, input.sessionId);
|
|
53
|
+
decision = record.decision;
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
if (err instanceof JobShapeDecisionError && err.code === JOB_SHAPE_NOT_DECIDED) {
|
|
57
|
+
return { kind: 'allow-not-job' };
|
|
58
|
+
}
|
|
59
|
+
throw err;
|
|
60
|
+
}
|
|
61
|
+
if (!decision.isJob)
|
|
62
|
+
return { kind: 'allow-not-job' };
|
|
63
|
+
const jobId = input.jobId ?? decision.suggestedJobId;
|
|
64
|
+
const path = statePath(input.projectRoot, input.sessionId, jobId);
|
|
65
|
+
if (!existsSync(path)) {
|
|
66
|
+
return { kind: 'block-not-initialized', code: JOB_NOT_INITIALIZED, jobId };
|
|
67
|
+
}
|
|
68
|
+
const remaining = countRemaining(path);
|
|
69
|
+
if (!Number.isFinite(remaining)) {
|
|
70
|
+
return { kind: 'block-not-initialized', code: JOB_NOT_INITIALIZED, jobId };
|
|
71
|
+
}
|
|
72
|
+
if (remaining === 0) {
|
|
73
|
+
return { kind: 'allow-done', remaining };
|
|
74
|
+
}
|
|
75
|
+
if (input.forceUnderJob === true) {
|
|
76
|
+
return { kind: 'allow-force-override', remaining };
|
|
77
|
+
}
|
|
78
|
+
return { kind: 'block-remaining', code: JOB_REMAINING_BLOCKED, jobId, remaining };
|
|
79
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v3.1.1 Step 0.8 — Job-shape decision recorder.
|
|
3
|
+
*
|
|
4
|
+
* The CLI is a *recorder and gate*, not a judge. The LLM makes the
|
|
5
|
+
* semantic call ("is this a Job?") and writes the verdict via
|
|
6
|
+
* `peaks code detect-job`; this service persists the verdict to
|
|
7
|
+
* `.peaks/_runtime/<sessionId>/job-shape.json` and refuses downstream
|
|
8
|
+
* steps that need a decision when the file is missing.
|
|
9
|
+
*
|
|
10
|
+
* Karpathy §2 (Simplicity First): ~100 lines, pure validation + fs
|
|
11
|
+
* writes, NO keyword regex, NO LLM call inside. The LLM is the
|
|
12
|
+
* source of truth for whether the request is Job-shaped; this file
|
|
13
|
+
* just enforces that a decision was made at all.
|
|
14
|
+
*
|
|
15
|
+
* Decision file lives at `.peaks/_runtime/<sessionId>/job-shape.json`
|
|
16
|
+
* (sibling of `session.json`, NOT under `job/<jid>/` because no jid
|
|
17
|
+
* exists yet at the moment of Step 0.8).
|
|
18
|
+
*/
|
|
19
|
+
export type JobStrategy = 'single' | 'rotating';
|
|
20
|
+
export type JobConfidence = 'high' | 'medium' | 'low';
|
|
21
|
+
export interface JobShapeDecision {
|
|
22
|
+
readonly isJob: boolean;
|
|
23
|
+
readonly rationale: string;
|
|
24
|
+
readonly suggestedJobId: string;
|
|
25
|
+
readonly suggestedStrategy: JobStrategy;
|
|
26
|
+
readonly confidence: JobConfidence;
|
|
27
|
+
/** ISO 8601; stamped server-side in `writeJobShapeDecision`. */
|
|
28
|
+
readonly decidedAt: string;
|
|
29
|
+
}
|
|
30
|
+
export interface JobShapeRecord {
|
|
31
|
+
readonly sessionId: string;
|
|
32
|
+
/** sha1 of the user prompt (first 16 hex). */
|
|
33
|
+
readonly promptHash: string;
|
|
34
|
+
readonly decision: JobShapeDecision;
|
|
35
|
+
readonly schemaVersion: 1;
|
|
36
|
+
}
|
|
37
|
+
export declare const JOB_SHAPE_SCHEMA_VERSION: 1;
|
|
38
|
+
export declare const JOB_SHAPE_FILE_NAME = "job-shape.json";
|
|
39
|
+
export declare const JOB_SHAPE_ALREADY_DECIDED: "JOB_SHAPE_ALREADY_DECIDED";
|
|
40
|
+
export declare const JOB_SHAPE_NOT_DECIDED: "JOB_SHAPE_NOT_DECIDED";
|
|
41
|
+
export declare const JOB_SHAPE_INVALID: "JOB_SHAPE_INVALID";
|
|
42
|
+
export declare class JobShapeDecisionError extends Error {
|
|
43
|
+
readonly code: typeof JOB_SHAPE_NOT_DECIDED | typeof JOB_SHAPE_ALREADY_DECIDED | typeof JOB_SHAPE_INVALID;
|
|
44
|
+
readonly details?: unknown;
|
|
45
|
+
constructor(opts: {
|
|
46
|
+
code: typeof JobShapeDecisionError.prototype.code;
|
|
47
|
+
message: string;
|
|
48
|
+
details?: unknown;
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
/** Pure validator; throws on bad input. No fs IO. */
|
|
52
|
+
export declare function validateJobShapeDecision(input: unknown): JobShapeDecision;
|
|
53
|
+
/** Read the canonical record; throws JOB_SHAPE_NOT_DECIDED if absent or malformed. */
|
|
54
|
+
export declare function readJobShapeDecision(projectRoot: string, sessionId: string): JobShapeRecord;
|
|
55
|
+
export interface WriteJobShapeDecisionInput {
|
|
56
|
+
readonly isJob: boolean;
|
|
57
|
+
readonly rationale: string;
|
|
58
|
+
readonly suggestedJobId: string;
|
|
59
|
+
readonly suggestedStrategy: JobStrategy;
|
|
60
|
+
readonly confidence: JobConfidence;
|
|
61
|
+
readonly prompt: string;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Persist a new decision; refuses overwrite unless `force: true`.
|
|
65
|
+
* Stamps `decidedAt` server-side via `now` (defaults to `new Date()`)
|
|
66
|
+
* so the LLM cannot back-date.
|
|
67
|
+
*/
|
|
68
|
+
export declare function writeJobShapeDecision(projectRoot: string, sessionId: string, decision: WriteJobShapeDecisionInput, opts?: {
|
|
69
|
+
force?: boolean;
|
|
70
|
+
now?: () => Date;
|
|
71
|
+
}): JobShapeRecord;
|