peaks-loop 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +51 -0
- package/CHANGELOG.md +3136 -0
- package/LICENSE +21 -0
- package/README-en.md +281 -0
- package/README.md +365 -0
- package/agents/karpathy-reviewer.md +229 -0
- package/bin/peaks.js +2 -0
- package/dist/src/cli/cli-helpers.d.ts +25 -0
- package/dist/src/cli/cli-helpers.js +78 -0
- package/dist/src/cli/commands/agent-commands.d.ts +20 -0
- package/dist/src/cli/commands/agent-commands.js +48 -0
- package/dist/src/cli/commands/audit-commands.d.ts +28 -0
- package/dist/src/cli/commands/audit-commands.js +437 -0
- package/dist/src/cli/commands/capability-commands.d.ts +16 -0
- package/dist/src/cli/commands/capability-commands.js +45 -0
- package/dist/src/cli/commands/capability-worker-config-sc-commands.d.ts +3 -0
- package/dist/src/cli/commands/capability-worker-config-sc-commands.js +10 -0
- package/dist/src/cli/commands/classify-classify-commands.d.ts +19 -0
- package/dist/src/cli/commands/classify-classify-commands.js +151 -0
- package/dist/src/cli/commands/code-review-commands.d.ts +34 -0
- package/dist/src/cli/commands/code-review-commands.js +83 -0
- package/dist/src/cli/commands/codegraph-commands.d.ts +3 -0
- package/dist/src/cli/commands/codegraph-commands.js +99 -0
- package/dist/src/cli/commands/complexity-commands.d.ts +9 -0
- package/dist/src/cli/commands/complexity-commands.js +34 -0
- package/dist/src/cli/commands/config-commands.d.ts +3 -0
- package/dist/src/cli/commands/config-commands.js +220 -0
- package/dist/src/cli/commands/context-builder-commands.d.ts +11 -0
- package/dist/src/cli/commands/context-builder-commands.js +85 -0
- package/dist/src/cli/commands/context-commands.d.ts +21 -0
- package/dist/src/cli/commands/context-commands.js +254 -0
- package/dist/src/cli/commands/contract-commands.d.ts +26 -0
- package/dist/src/cli/commands/contract-commands.js +114 -0
- package/dist/src/cli/commands/core/artifacts-command.d.ts +3 -0
- package/dist/src/cli/commands/core/artifacts-command.js +62 -0
- package/dist/src/cli/commands/core/binding-commands.d.ts +3 -0
- package/dist/src/cli/commands/core/binding-commands.js +58 -0
- package/dist/src/cli/commands/core/doctor-command.d.ts +11 -0
- package/dist/src/cli/commands/core/doctor-command.js +204 -0
- package/dist/src/cli/commands/core/memory-command.d.ts +3 -0
- package/dist/src/cli/commands/core/memory-command.js +98 -0
- package/dist/src/cli/commands/core/profile-command.d.ts +3 -0
- package/dist/src/cli/commands/core/profile-command.js +9 -0
- package/dist/src/cli/commands/core/proxy-command.d.ts +3 -0
- package/dist/src/cli/commands/core/proxy-command.js +26 -0
- package/dist/src/cli/commands/core/session-command.d.ts +3 -0
- package/dist/src/cli/commands/core/session-command.js +213 -0
- package/dist/src/cli/commands/core/skill-command.d.ts +3 -0
- package/dist/src/cli/commands/core/skill-command.js +275 -0
- package/dist/src/cli/commands/core/standards-command.d.ts +3 -0
- package/dist/src/cli/commands/core/standards-command.js +95 -0
- package/dist/src/cli/commands/core-artifact-commands.d.ts +15 -0
- package/dist/src/cli/commands/core-artifact-commands.js +31 -0
- package/dist/src/cli/commands/dispatch-commands.d.ts +10 -0
- package/dist/src/cli/commands/dispatch-commands.js +351 -0
- package/dist/src/cli/commands/dispatch-from-dag.d.ts +3 -0
- package/dist/src/cli/commands/dispatch-from-dag.js +251 -0
- package/dist/src/cli/commands/doc-commands.d.ts +11 -0
- package/dist/src/cli/commands/doc-commands.js +65 -0
- package/dist/src/cli/commands/feedback-commands.d.ts +18 -0
- package/dist/src/cli/commands/feedback-commands.js +145 -0
- package/dist/src/cli/commands/final-review-commands.d.ts +31 -0
- package/dist/src/cli/commands/final-review-commands.js +161 -0
- package/dist/src/cli/commands/fixture-commands.d.ts +32 -0
- package/dist/src/cli/commands/fixture-commands.js +91 -0
- package/dist/src/cli/commands/fork-commands.d.ts +16 -0
- package/dist/src/cli/commands/fork-commands.js +163 -0
- package/dist/src/cli/commands/gate-commands.d.ts +3 -0
- package/dist/src/cli/commands/gate-commands.js +117 -0
- package/dist/src/cli/commands/heartbeat-commands.d.ts +3 -0
- package/dist/src/cli/commands/heartbeat-commands.js +135 -0
- package/dist/src/cli/commands/hook-handle.d.ts +17 -0
- package/dist/src/cli/commands/hook-handle.js +157 -0
- package/dist/src/cli/commands/hooks-commands.d.ts +3 -0
- package/dist/src/cli/commands/hooks-commands.js +156 -0
- package/dist/src/cli/commands/impact-commands.d.ts +15 -0
- package/dist/src/cli/commands/impact-commands.js +62 -0
- package/dist/src/cli/commands/legacy-commands.d.ts +11 -0
- package/dist/src/cli/commands/legacy-commands.js +32 -0
- package/dist/src/cli/commands/log-commands.d.ts +17 -0
- package/dist/src/cli/commands/log-commands.js +64 -0
- package/dist/src/cli/commands/loop-commands.d.ts +21 -0
- package/dist/src/cli/commands/loop-commands.js +128 -0
- package/dist/src/cli/commands/loop-eval-commands.d.ts +20 -0
- package/dist/src/cli/commands/loop-eval-commands.js +526 -0
- package/dist/src/cli/commands/memory-commands.d.ts +23 -0
- package/dist/src/cli/commands/memory-commands.js +129 -0
- package/dist/src/cli/commands/migrate-1-4-1-command.d.ts +11 -0
- package/dist/src/cli/commands/migrate-1-4-1-command.js +34 -0
- package/dist/src/cli/commands/migrate-v2-10-to-v2-11-command.d.ts +20 -0
- package/dist/src/cli/commands/migrate-v2-10-to-v2-11-command.js +52 -0
- package/dist/src/cli/commands/mut-commands.d.ts +20 -0
- package/dist/src/cli/commands/mut-commands.js +239 -0
- package/dist/src/cli/commands/observability-commands.d.ts +22 -0
- package/dist/src/cli/commands/observability-commands.js +201 -0
- package/dist/src/cli/commands/openspec-commands.d.ts +3 -0
- package/dist/src/cli/commands/openspec-commands.js +237 -0
- package/dist/src/cli/commands/perf-audit-commands.d.ts +22 -0
- package/dist/src/cli/commands/perf-audit-commands.js +132 -0
- package/dist/src/cli/commands/perf-commands.d.ts +3 -0
- package/dist/src/cli/commands/perf-commands.js +41 -0
- package/dist/src/cli/commands/playwright-commands.d.ts +95 -0
- package/dist/src/cli/commands/playwright-commands.js +432 -0
- package/dist/src/cli/commands/prd-blocks-commands.d.ts +18 -0
- package/dist/src/cli/commands/prd-blocks-commands.js +50 -0
- package/dist/src/cli/commands/prd-commands.d.ts +18 -0
- package/dist/src/cli/commands/prd-commands.js +141 -0
- package/dist/src/cli/commands/preferences-commands.d.ts +2 -0
- package/dist/src/cli/commands/preferences-commands.js +197 -0
- package/dist/src/cli/commands/project-commands.d.ts +3 -0
- package/dist/src/cli/commands/project-commands.js +248 -0
- package/dist/src/cli/commands/qa-business-review-commands.d.ts +17 -0
- package/dist/src/cli/commands/qa-business-review-commands.js +148 -0
- package/dist/src/cli/commands/qa-commands.d.ts +94 -0
- package/dist/src/cli/commands/qa-commands.js +271 -0
- package/dist/src/cli/commands/release-commands.d.ts +24 -0
- package/dist/src/cli/commands/release-commands.js +231 -0
- package/dist/src/cli/commands/request-commands.d.ts +3 -0
- package/dist/src/cli/commands/request-commands.js +509 -0
- package/dist/src/cli/commands/retrospective-commands.d.ts +12 -0
- package/dist/src/cli/commands/retrospective-commands.js +175 -0
- package/dist/src/cli/commands/reviewer-commands.d.ts +14 -0
- package/dist/src/cli/commands/reviewer-commands.js +64 -0
- package/dist/src/cli/commands/role-commands.d.ts +13 -0
- package/dist/src/cli/commands/role-commands.js +85 -0
- package/dist/src/cli/commands/sc-commands.d.ts +3 -0
- package/dist/src/cli/commands/sc-commands.js +45 -0
- package/dist/src/cli/commands/scan-commands.d.ts +3 -0
- package/dist/src/cli/commands/scan-commands.js +445 -0
- package/dist/src/cli/commands/security-audit-commands.d.ts +23 -0
- package/dist/src/cli/commands/security-audit-commands.js +132 -0
- package/dist/src/cli/commands/session-checkpoint-command.d.ts +10 -0
- package/dist/src/cli/commands/session-checkpoint-command.js +100 -0
- package/dist/src/cli/commands/session-resume-command.d.ts +11 -0
- package/dist/src/cli/commands/session-resume-command.js +83 -0
- package/dist/src/cli/commands/share-commands.d.ts +17 -0
- package/dist/src/cli/commands/share-commands.js +296 -0
- package/dist/src/cli/commands/skill-conformance-commands.d.ts +9 -0
- package/dist/src/cli/commands/skill-conformance-commands.js +39 -0
- package/dist/src/cli/commands/slice-commands.d.ts +24 -0
- package/dist/src/cli/commands/slice-commands.js +492 -0
- package/dist/src/cli/commands/slice-integrate-commands.d.ts +11 -0
- package/dist/src/cli/commands/slice-integrate-commands.js +74 -0
- package/dist/src/cli/commands/slice-review-commands.d.ts +23 -0
- package/dist/src/cli/commands/slice-review-commands.js +162 -0
- package/dist/src/cli/commands/smoke-commands.d.ts +21 -0
- package/dist/src/cli/commands/smoke-commands.js +203 -0
- package/dist/src/cli/commands/solo-commands.d.ts +80 -0
- package/dist/src/cli/commands/solo-commands.js +435 -0
- package/dist/src/cli/commands/sop-commands.d.ts +3 -0
- package/dist/src/cli/commands/sop-commands.js +215 -0
- package/dist/src/cli/commands/statusline-commands.d.ts +3 -0
- package/dist/src/cli/commands/statusline-commands.js +169 -0
- package/dist/src/cli/commands/sub-agent-commands.d.ts +22 -0
- package/dist/src/cli/commands/sub-agent-commands.js +19 -0
- package/dist/src/cli/commands/sub-agent-dispatch-guard.d.ts +55 -0
- package/dist/src/cli/commands/sub-agent-dispatch-guard.js +57 -0
- package/dist/src/cli/commands/sub-agent-shared.d.ts +99 -0
- package/dist/src/cli/commands/sub-agent-shared.js +67 -0
- package/dist/src/cli/commands/test-commands.d.ts +47 -0
- package/dist/src/cli/commands/test-commands.js +204 -0
- package/dist/src/cli/commands/understand-commands.d.ts +3 -0
- package/dist/src/cli/commands/understand-commands.js +112 -0
- package/dist/src/cli/commands/upgrade-commands.d.ts +23 -0
- package/dist/src/cli/commands/upgrade-commands.js +119 -0
- package/dist/src/cli/commands/user-touchpoint-commands.d.ts +18 -0
- package/dist/src/cli/commands/user-touchpoint-commands.js +78 -0
- package/dist/src/cli/commands/verdict-aggregate-command.d.ts +14 -0
- package/dist/src/cli/commands/verdict-aggregate-command.js +106 -0
- package/dist/src/cli/commands/worker-commands.d.ts +3 -0
- package/dist/src/cli/commands/worker-commands.js +52 -0
- package/dist/src/cli/commands/workflow-commands.d.ts +3 -0
- package/dist/src/cli/commands/workflow-commands.js +535 -0
- package/dist/src/cli/commands/workflow-plan-commands.d.ts +39 -0
- package/dist/src/cli/commands/workflow-plan-commands.js +163 -0
- package/dist/src/cli/commands/workspace/clean-command.d.ts +14 -0
- package/dist/src/cli/commands/workspace/clean-command.js +49 -0
- package/dist/src/cli/commands/workspace/helpers.d.ts +28 -0
- package/dist/src/cli/commands/workspace/helpers.js +87 -0
- package/dist/src/cli/commands/workspace/init-command.d.ts +121 -0
- package/dist/src/cli/commands/workspace/init-command.js +436 -0
- package/dist/src/cli/commands/workspace/migrate-command.d.ts +11 -0
- package/dist/src/cli/commands/workspace/migrate-command.js +91 -0
- package/dist/src/cli/commands/workspace/reconcile-command.d.ts +14 -0
- package/dist/src/cli/commands/workspace/reconcile-command.js +103 -0
- package/dist/src/cli/commands/workspace-commands.d.ts +18 -0
- package/dist/src/cli/commands/workspace-commands.js +50 -0
- package/dist/src/cli/index.d.ts +1 -0
- package/dist/src/cli/index.js +30 -0
- package/dist/src/cli/program.d.ts +5 -0
- package/dist/src/cli/program.js +336 -0
- package/dist/src/hooks/pre-tool-use-sub-agent.d.ts +28 -0
- package/dist/src/hooks/pre-tool-use-sub-agent.js +105 -0
- package/dist/src/lib/render/message-renderer.d.ts +20 -0
- package/dist/src/lib/render/message-renderer.js +80 -0
- package/dist/src/services/agent/ecc-agent-service.d.ts +47 -0
- package/dist/src/services/agent/ecc-agent-service.js +143 -0
- package/dist/src/services/artifacts/artifact-lint-service.d.ts +23 -0
- package/dist/src/services/artifacts/artifact-lint-service.js +99 -0
- package/dist/src/services/artifacts/artifact-prerequisites.d.ts +78 -0
- package/dist/src/services/artifacts/artifact-prerequisites.js +491 -0
- package/dist/src/services/artifacts/artifact-service.d.ts +43 -0
- package/dist/src/services/artifacts/artifact-service.js +98 -0
- package/dist/src/services/artifacts/artifact-templates.d.ts +30 -0
- package/dist/src/services/artifacts/artifact-templates.js +302 -0
- package/dist/src/services/artifacts/repair-cycle-service.d.ts +23 -0
- package/dist/src/services/artifacts/repair-cycle-service.js +52 -0
- package/dist/src/services/artifacts/request-artifact-service.d.ts +116 -0
- package/dist/src/services/artifacts/request-artifact-service.js +451 -0
- package/dist/src/services/artifacts/request-artifact-state-helpers.d.ts +51 -0
- package/dist/src/services/artifacts/request-artifact-state-helpers.js +114 -0
- package/dist/src/services/artifacts/workspace-service.d.ts +34 -0
- package/dist/src/services/artifacts/workspace-service.js +272 -0
- package/dist/src/services/audit/artifact-writer.d.ts +93 -0
- package/dist/src/services/audit/artifact-writer.js +303 -0
- package/dist/src/services/audit/audit-goal-service.d.ts +35 -0
- package/dist/src/services/audit/audit-goal-service.js +75 -0
- package/dist/src/services/audit/audit-goal-types.d.ts +40 -0
- package/dist/src/services/audit/audit-goal-types.js +15 -0
- package/dist/src/services/audit/backing-detector.d.ts +24 -0
- package/dist/src/services/audit/backing-detector.js +59 -0
- package/dist/src/services/audit/classifier.d.ts +38 -0
- package/dist/src/services/audit/classifier.js +134 -0
- package/dist/src/services/audit/decision-writer.d.ts +76 -0
- package/dist/src/services/audit/decision-writer.js +217 -0
- package/dist/src/services/audit/enforcers/active-skill-resolver.d.ts +29 -0
- package/dist/src/services/audit/enforcers/active-skill-resolver.js +71 -0
- package/dist/src/services/audit/enforcers/design-draft-confirm.d.ts +24 -0
- package/dist/src/services/audit/enforcers/design-draft-confirm.js +58 -0
- package/dist/src/services/audit/enforcers/lint-audit-regression.d.ts +21 -0
- package/dist/src/services/audit/enforcers/lint-audit-regression.js +86 -0
- package/dist/src/services/audit/enforcers/lint-catalog-governance.d.ts +32 -0
- package/dist/src/services/audit/enforcers/lint-catalog-governance.js +48 -0
- package/dist/src/services/audit/enforcers/lint-cli-back.d.ts +16 -0
- package/dist/src/services/audit/enforcers/lint-cli-back.js +35 -0
- package/dist/src/services/audit/enforcers/lint-output-style.d.ts +11 -0
- package/dist/src/services/audit/enforcers/lint-output-style.js +94 -0
- package/dist/src/services/audit/enforcers/lint-reference-integrity.d.ts +6 -0
- package/dist/src/services/audit/enforcers/lint-reference-integrity.js +83 -0
- package/dist/src/services/audit/enforcers/lint-reference-shape.d.ts +30 -0
- package/dist/src/services/audit/enforcers/lint-reference-shape.js +272 -0
- package/dist/src/services/audit/enforcers/lint-style.d.ts +49 -0
- package/dist/src/services/audit/enforcers/lint-style.js +173 -0
- package/dist/src/services/audit/enforcers/lint-workflow-shape.d.ts +4 -0
- package/dist/src/services/audit/enforcers/lint-workflow-shape.js +100 -0
- package/dist/src/services/audit/enforcers/login-gate.d.ts +23 -0
- package/dist/src/services/audit/enforcers/login-gate.js +40 -0
- package/dist/src/services/audit/enforcers/mock-placement.d.ts +25 -0
- package/dist/src/services/audit/enforcers/mock-placement.js +48 -0
- package/dist/src/services/audit/enforcers/no-root-pollution.d.ts +21 -0
- package/dist/src/services/audit/enforcers/no-root-pollution.js +56 -0
- package/dist/src/services/audit/enforcers/pre-rd-scan.d.ts +22 -0
- package/dist/src/services/audit/enforcers/pre-rd-scan.js +23 -0
- package/dist/src/services/audit/enforcers/prototype-fidelity.d.ts +25 -0
- package/dist/src/services/audit/enforcers/prototype-fidelity.js +75 -0
- package/dist/src/services/audit/enforcers/resume-detection.d.ts +21 -0
- package/dist/src/services/audit/enforcers/resume-detection.js +52 -0
- package/dist/src/services/audit/enforcers/solo-code-ban.d.ts +23 -0
- package/dist/src/services/audit/enforcers/solo-code-ban.js +27 -0
- package/dist/src/services/audit/enforcers/sub-agent-sid.d.ts +25 -0
- package/dist/src/services/audit/enforcers/sub-agent-sid.js +63 -0
- package/dist/src/services/audit/prose-ratio-calculator.d.ts +45 -0
- package/dist/src/services/audit/prose-ratio-calculator.js +52 -0
- package/dist/src/services/audit/red-line-catalog-p2-a.d.ts +21 -0
- package/dist/src/services/audit/red-line-catalog-p2-a.js +229 -0
- package/dist/src/services/audit/red-line-catalog-p2-b.d.ts +19 -0
- package/dist/src/services/audit/red-line-catalog-p2-b.js +225 -0
- package/dist/src/services/audit/red-line-catalog.d.ts +51 -0
- package/dist/src/services/audit/red-line-catalog.js +195 -0
- package/dist/src/services/audit/red-lines-service.d.ts +23 -0
- package/dist/src/services/audit/red-lines-service.js +464 -0
- package/dist/src/services/audit/scanners/openspec-scanner.d.ts +15 -0
- package/dist/src/services/audit/scanners/openspec-scanner.js +55 -0
- package/dist/src/services/audit/scanners/rules-tree-scanner.d.ts +16 -0
- package/dist/src/services/audit/scanners/rules-tree-scanner.js +56 -0
- package/dist/src/services/audit/scanners/skills-tree-scanner.d.ts +17 -0
- package/dist/src/services/audit/scanners/skills-tree-scanner.js +46 -0
- package/dist/src/services/audit/static-service.d.ts +60 -0
- package/dist/src/services/audit/static-service.js +130 -0
- package/dist/src/services/audit/types.d.ts +86 -0
- package/dist/src/services/audit/types.js +13 -0
- package/dist/src/services/audit-independent/perf-audit-service.d.ts +151 -0
- package/dist/src/services/audit-independent/perf-audit-service.js +316 -0
- package/dist/src/services/audit-independent/security-audit-service.d.ts +155 -0
- package/dist/src/services/audit-independent/security-audit-service.js +316 -0
- package/dist/src/services/classify/classify-service.d.ts +42 -0
- package/dist/src/services/classify/classify-service.js +122 -0
- package/dist/src/services/classify/classify-types.d.ts +79 -0
- package/dist/src/services/classify/classify-types.js +90 -0
- package/dist/src/services/code-review/ecc-bridge.d.ts +148 -0
- package/dist/src/services/code-review/ecc-bridge.js +242 -0
- package/dist/src/services/code-review/ocr-service.d.ts +129 -0
- package/dist/src/services/code-review/ocr-service.js +369 -0
- package/dist/src/services/codegraph/codegraph-process-runner.d.ts +2 -0
- package/dist/src/services/codegraph/codegraph-process-runner.js +93 -0
- package/dist/src/services/codegraph/codegraph-service.d.ts +43 -0
- package/dist/src/services/codegraph/codegraph-service.js +160 -0
- package/dist/src/services/complexity/complexity-estimator.d.ts +34 -0
- package/dist/src/services/complexity/complexity-estimator.js +64 -0
- package/dist/src/services/config/config-migration.d.ts +45 -0
- package/dist/src/services/config/config-migration.js +154 -0
- package/dist/src/services/config/config-restore.d.ts +10 -0
- package/dist/src/services/config/config-restore.js +47 -0
- package/dist/src/services/config/config-rollback.d.ts +13 -0
- package/dist/src/services/config/config-rollback.js +26 -0
- package/dist/src/services/config/config-safety.d.ts +40 -0
- package/dist/src/services/config/config-safety.js +359 -0
- package/dist/src/services/config/config-service.d.ts +69 -0
- package/dist/src/services/config/config-service.js +814 -0
- package/dist/src/services/config/config-types.d.ts +119 -0
- package/dist/src/services/config/config-types.js +18 -0
- package/dist/src/services/config/model-routing.d.ts +4 -0
- package/dist/src/services/config/model-routing.js +17 -0
- package/dist/src/services/config/provider-service.d.ts +48 -0
- package/dist/src/services/config/provider-service.js +143 -0
- package/dist/src/services/config/proxy-service.d.ts +21 -0
- package/dist/src/services/config/proxy-service.js +44 -0
- package/dist/src/services/config/sidecar-store.d.ts +25 -0
- package/dist/src/services/config/sidecar-store.js +61 -0
- package/dist/src/services/config/workspace-state-service.d.ts +30 -0
- package/dist/src/services/config/workspace-state-service.js +142 -0
- package/dist/src/services/context/artifact-meta.d.ts +72 -0
- package/dist/src/services/context/artifact-meta.js +105 -0
- package/dist/src/services/context/auto-compact-dispatcher.d.ts +37 -0
- package/dist/src/services/context/auto-compact-dispatcher.js +190 -0
- package/dist/src/services/context/auto-compact-reader.d.ts +51 -0
- package/dist/src/services/context/auto-compact-reader.js +164 -0
- package/dist/src/services/context/auto-compact-types.d.ts +143 -0
- package/dist/src/services/context/auto-compact-types.js +36 -0
- package/dist/src/services/context/collector.d.ts +24 -0
- package/dist/src/services/context/collector.js +133 -0
- package/dist/src/services/context/context-builder.d.ts +30 -0
- package/dist/src/services/context/context-builder.js +78 -0
- package/dist/src/services/context/context-guard.d.ts +49 -0
- package/dist/src/services/context/context-guard.js +91 -0
- package/dist/src/services/context/context-schema.d.ts +415 -0
- package/dist/src/services/context/context-schema.js +73 -0
- package/dist/src/services/context/dispatch-context-guard.d.ts +27 -0
- package/dist/src/services/context/dispatch-context-guard.js +192 -0
- package/dist/src/services/context/doc-retriever.d.ts +26 -0
- package/dist/src/services/context/doc-retriever.js +51 -0
- package/dist/src/services/context/headroom-client.d.ts +34 -0
- package/dist/src/services/context/headroom-client.js +117 -0
- package/dist/src/services/context/headroom-fetcher.d.ts +6 -0
- package/dist/src/services/context/headroom-fetcher.js +28 -0
- package/dist/src/services/context/headroom-prefs.d.ts +46 -0
- package/dist/src/services/context/headroom-prefs.js +34 -0
- package/dist/src/services/context/index.d.ts +7 -0
- package/dist/src/services/context/index.js +6 -0
- package/dist/src/services/context/main-session-monitor.d.ts +77 -0
- package/dist/src/services/context/main-session-monitor.js +130 -0
- package/dist/src/services/context/renderer.d.ts +20 -0
- package/dist/src/services/context/renderer.js +30 -0
- package/dist/src/services/context/shared-channel.d.ts +93 -0
- package/dist/src/services/context/shared-channel.js +308 -0
- package/dist/src/services/context/threshold.d.ts +35 -0
- package/dist/src/services/context/threshold.js +76 -0
- package/dist/src/services/context/tokenizer.d.ts +12 -0
- package/dist/src/services/context/tokenizer.js +43 -0
- package/dist/src/services/context/types.d.ts +93 -0
- package/dist/src/services/context/types.js +9 -0
- package/dist/src/services/dashboard/project-dashboard-service.d.ts +91 -0
- package/dist/src/services/dashboard/project-dashboard-service.js +147 -0
- package/dist/src/services/dispatch/batch-counter.d.ts +27 -0
- package/dist/src/services/dispatch/batch-counter.js +102 -0
- package/dist/src/services/dispatch/contract-store.d.ts +63 -0
- package/dist/src/services/dispatch/contract-store.js +157 -0
- package/dist/src/services/dispatch/dispatch-record-writer.d.ts +138 -0
- package/dist/src/services/dispatch/dispatch-record-writer.js +460 -0
- package/dist/src/services/dispatch/heartbeat-truncator.d.ts +26 -0
- package/dist/src/services/dispatch/heartbeat-truncator.js +13 -0
- package/dist/src/services/dispatch/leak-detector.d.ts +11 -0
- package/dist/src/services/dispatch/leak-detector.js +72 -0
- package/dist/src/services/dispatch/slice-dag.d.ts +81 -0
- package/dist/src/services/dispatch/slice-dag.js +238 -0
- package/dist/src/services/dispatch/sub-agent-dispatcher.d.ts +239 -0
- package/dist/src/services/dispatch/sub-agent-dispatcher.js +382 -0
- package/dist/src/services/dispatch/test-tool-detection.d.ts +36 -0
- package/dist/src/services/dispatch/test-tool-detection.js +46 -0
- package/dist/src/services/doc/doc-generator.d.ts +38 -0
- package/dist/src/services/doc/doc-generator.js +122 -0
- package/dist/src/services/doctor/doctor-service.d.ts +149 -0
- package/dist/src/services/doctor/doctor-service.js +929 -0
- package/dist/src/services/feedback/feedback-promotion-service.d.ts +123 -0
- package/dist/src/services/feedback/feedback-promotion-service.js +300 -0
- package/dist/src/services/filesystem/file-lock.d.ts +11 -0
- package/dist/src/services/filesystem/file-lock.js +129 -0
- package/dist/src/services/final-review/final-review-service.d.ts +12 -0
- package/dist/src/services/final-review/final-review-service.js +52 -0
- package/dist/src/services/final-review/final-review-types.d.ts +42 -0
- package/dist/src/services/final-review/final-review-types.js +18 -0
- package/dist/src/services/fixture/fixture-capture-service.d.ts +87 -0
- package/dist/src/services/fixture/fixture-capture-service.js +317 -0
- package/dist/src/services/fixture/fixture-sanitize-service.d.ts +117 -0
- package/dist/src/services/fixture/fixture-sanitize-service.js +161 -0
- package/dist/src/services/fixture/index.d.ts +8 -0
- package/dist/src/services/fixture/index.js +8 -0
- package/dist/src/services/fork/fork-sync-state.d.ts +85 -0
- package/dist/src/services/fork/fork-sync-state.js +130 -0
- package/dist/src/services/fuzzy-matching/fuzzy-match-service.d.ts +15 -0
- package/dist/src/services/fuzzy-matching/fuzzy-match-service.js +56 -0
- package/dist/src/services/fuzzy-matching/fzf-pick-service.d.ts +68 -0
- package/dist/src/services/fuzzy-matching/fzf-pick-service.js +158 -0
- package/dist/src/services/fuzzy-matching/types.d.ts +20 -0
- package/dist/src/services/fuzzy-matching/types.js +1 -0
- package/dist/src/services/handoff/handoff-parser.d.ts +28 -0
- package/dist/src/services/handoff/handoff-parser.js +69 -0
- package/dist/src/services/handoff/handoff-types.d.ts +39 -0
- package/dist/src/services/handoff/handoff-types.js +19 -0
- package/dist/src/services/handoff/handoff-writer.d.ts +23 -0
- package/dist/src/services/handoff/handoff-writer.js +30 -0
- package/dist/src/services/hooks/output.d.ts +92 -0
- package/dist/src/services/hooks/output.js +111 -0
- package/dist/src/services/hooks/presence-marker-detector.d.ts +16 -0
- package/dist/src/services/hooks/presence-marker-detector.js +105 -0
- package/dist/src/services/ide/adapters/claude-code-adapter.d.ts +18 -0
- package/dist/src/services/ide/adapters/claude-code-adapter.js +91 -0
- package/dist/src/services/ide/adapters/codex-adapter.d.ts +46 -0
- package/dist/src/services/ide/adapters/codex-adapter.js +97 -0
- package/dist/src/services/ide/adapters/cursor-adapter.d.ts +36 -0
- package/dist/src/services/ide/adapters/cursor-adapter.js +84 -0
- package/dist/src/services/ide/adapters/hermes-adapter.d.ts +21 -0
- package/dist/src/services/ide/adapters/hermes-adapter.js +51 -0
- package/dist/src/services/ide/adapters/openclaw-adapter.d.ts +14 -0
- package/dist/src/services/ide/adapters/openclaw-adapter.js +42 -0
- package/dist/src/services/ide/adapters/trae-adapter.d.ts +42 -0
- package/dist/src/services/ide/adapters/trae-adapter.js +83 -0
- package/dist/src/services/ide/hook-protocol.d.ts +47 -0
- package/dist/src/services/ide/hook-protocol.js +74 -0
- package/dist/src/services/ide/hook-translator.d.ts +72 -0
- package/dist/src/services/ide/hook-translator.js +128 -0
- package/dist/src/services/ide/ide-detector.d.ts +10 -0
- package/dist/src/services/ide/ide-detector.js +19 -0
- package/dist/src/services/ide/ide-registry.d.ts +14 -0
- package/dist/src/services/ide/ide-registry.js +60 -0
- package/dist/src/services/ide/ide-types.d.ts +230 -0
- package/dist/src/services/ide/ide-types.js +2 -0
- package/dist/src/services/ide/resource-profile.d.ts +52 -0
- package/dist/src/services/ide/resource-profile.js +33 -0
- package/dist/src/services/ide/shared/atomic-json.d.ts +15 -0
- package/dist/src/services/ide/shared/atomic-json.js +58 -0
- package/dist/src/services/ide/shared/safe-path.d.ts +11 -0
- package/dist/src/services/ide/shared/safe-path.js +29 -0
- package/dist/src/services/impact/impact-scan-service.d.ts +66 -0
- package/dist/src/services/impact/impact-scan-service.js +197 -0
- package/dist/src/services/legacy/legacy-detector.d.ts +34 -0
- package/dist/src/services/legacy/legacy-detector.js +111 -0
- package/dist/src/services/log/log-commands-service.d.ts +54 -0
- package/dist/src/services/log/log-commands-service.js +83 -0
- package/dist/src/services/log/logger.d.ts +103 -0
- package/dist/src/services/log/logger.js +224 -0
- package/dist/src/services/log/redact.d.ts +32 -0
- package/dist/src/services/log/redact.js +89 -0
- package/dist/src/services/log/retention.d.ts +34 -0
- package/dist/src/services/log/retention.js +78 -0
- package/dist/src/services/loop/evaluator-dispatcher.d.ts +50 -0
- package/dist/src/services/loop/evaluator-dispatcher.js +551 -0
- package/dist/src/services/loop/monotonic-guard.d.ts +80 -0
- package/dist/src/services/loop/monotonic-guard.js +215 -0
- package/dist/src/services/loop/monotonic-runner.d.ts +55 -0
- package/dist/src/services/loop/monotonic-runner.js +197 -0
- package/dist/src/services/loop/run-driver.d.ts +70 -0
- package/dist/src/services/loop/run-driver.js +379 -0
- package/dist/src/services/loop/spec-service.d.ts +90 -0
- package/dist/src/services/loop/spec-service.js +497 -0
- package/dist/src/services/memory/llm-reranker.d.ts +174 -0
- package/dist/src/services/memory/llm-reranker.js +284 -0
- package/dist/src/services/memory/memory-search-service.d.ts +93 -0
- package/dist/src/services/memory/memory-search-service.js +117 -0
- package/dist/src/services/memory/project-context-service.d.ts +11 -0
- package/dist/src/services/memory/project-context-service.js +148 -0
- package/dist/src/services/memory/project-memory-service.d.ts +167 -0
- package/dist/src/services/memory/project-memory-service.js +817 -0
- package/dist/src/services/migration/v2-10-to-v2-11-service.d.ts +44 -0
- package/dist/src/services/migration/v2-10-to-v2-11-service.js +190 -0
- package/dist/src/services/migration/v2-10-to-v2-11-types.d.ts +41 -0
- package/dist/src/services/migration/v2-10-to-v2-11-types.js +23 -0
- package/dist/src/services/mode/bypass-tracker.d.ts +4 -0
- package/dist/src/services/mode/bypass-tracker.js +31 -0
- package/dist/src/services/mode/mode-enforcement.d.ts +14 -0
- package/dist/src/services/mode/mode-enforcement.js +84 -0
- package/dist/src/services/mut/assert-scanner.d.ts +6 -0
- package/dist/src/services/mut/assert-scanner.js +116 -0
- package/dist/src/services/mut/index.d.ts +8 -0
- package/dist/src/services/mut/index.js +7 -0
- package/dist/src/services/mut/mut-runner.d.ts +39 -0
- package/dist/src/services/mut/mut-runner.js +29 -0
- package/dist/src/services/mut/production-stryker.d.ts +7 -0
- package/dist/src/services/mut/production-stryker.js +66 -0
- package/dist/src/services/mut/report-builder.d.ts +11 -0
- package/dist/src/services/mut/report-builder.js +110 -0
- package/dist/src/services/mut/report-loader.d.ts +31 -0
- package/dist/src/services/mut/report-loader.js +78 -0
- package/dist/src/services/mut/thresholds.d.ts +21 -0
- package/dist/src/services/mut/thresholds.js +22 -0
- package/dist/src/services/mut/types.d.ts +336 -0
- package/dist/src/services/mut/types.js +59 -0
- package/dist/src/services/observability/aggregation.d.ts +64 -0
- package/dist/src/services/observability/aggregation.js +217 -0
- package/dist/src/services/observability/jsonl-store.d.ts +59 -0
- package/dist/src/services/observability/jsonl-store.js +120 -0
- package/dist/src/services/observability/observability-service.d.ts +95 -0
- package/dist/src/services/observability/observability-service.js +119 -0
- package/dist/src/services/observability/report-formatter.d.ts +42 -0
- package/dist/src/services/observability/report-formatter.js +156 -0
- package/dist/src/services/openspec/openspec-archive-service.d.ts +12 -0
- package/dist/src/services/openspec/openspec-archive-service.js +28 -0
- package/dist/src/services/openspec/openspec-bridge-service.d.ts +16 -0
- package/dist/src/services/openspec/openspec-bridge-service.js +76 -0
- package/dist/src/services/openspec/openspec-init-service.d.ts +23 -0
- package/dist/src/services/openspec/openspec-init-service.js +122 -0
- package/dist/src/services/openspec/openspec-propose-from-doctor-service.d.ts +31 -0
- package/dist/src/services/openspec/openspec-propose-from-doctor-service.js +95 -0
- package/dist/src/services/openspec/openspec-render-service.d.ts +38 -0
- package/dist/src/services/openspec/openspec-render-service.js +130 -0
- package/dist/src/services/openspec/openspec-scan-service.d.ts +6 -0
- package/dist/src/services/openspec/openspec-scan-service.js +123 -0
- package/dist/src/services/openspec/openspec-types.d.ts +39 -0
- package/dist/src/services/openspec/openspec-types.js +1 -0
- package/dist/src/services/openspec/openspec-validate-service.d.ts +27 -0
- package/dist/src/services/openspec/openspec-validate-service.js +77 -0
- package/dist/src/services/perf/perf-baseline-service.d.ts +70 -0
- package/dist/src/services/perf/perf-baseline-service.js +214 -0
- package/dist/src/services/prd/handoff-auto-regen.d.ts +22 -0
- package/dist/src/services/prd/handoff-auto-regen.js +73 -0
- package/dist/src/services/prd/handoff-service.d.ts +54 -0
- package/dist/src/services/prd/handoff-service.js +142 -0
- package/dist/src/services/prd/handoff-types.d.ts +64 -0
- package/dist/src/services/prd/handoff-types.js +22 -0
- package/dist/src/services/prd/prd-blocks-checker.d.ts +51 -0
- package/dist/src/services/prd/prd-blocks-checker.js +130 -0
- package/dist/src/services/prd/project-scan-reader.d.ts +24 -0
- package/dist/src/services/prd/project-scan-reader.js +150 -0
- package/dist/src/services/prd/project-scan-sediment.d.ts +97 -0
- package/dist/src/services/prd/project-scan-sediment.js +445 -0
- package/dist/src/services/prd/project-scan-types.d.ts +66 -0
- package/dist/src/services/prd/project-scan-types.js +20 -0
- package/dist/src/services/preferences/preferences-service.d.ts +38 -0
- package/dist/src/services/preferences/preferences-service.js +198 -0
- package/dist/src/services/preferences/preferences-types.d.ts +148 -0
- package/dist/src/services/preferences/preferences-types.js +53 -0
- package/dist/src/services/profiles/profile-service.d.ts +6 -0
- package/dist/src/services/profiles/profile-service.js +19 -0
- package/dist/src/services/progress/progress-service.d.ts +125 -0
- package/dist/src/services/progress/progress-service.js +192 -0
- package/dist/src/services/providers/minimax-provider-service.d.ts +24 -0
- package/dist/src/services/providers/minimax-provider-service.js +143 -0
- package/dist/src/services/providers/minimax-worker-service.d.ts +21 -0
- package/dist/src/services/providers/minimax-worker-service.js +83 -0
- package/dist/src/services/proxy/proxy-service.d.ts +7 -0
- package/dist/src/services/proxy/proxy-service.js +31 -0
- package/dist/src/services/qa/browser-event-logger.d.ts +40 -0
- package/dist/src/services/qa/browser-event-logger.js +54 -0
- package/dist/src/services/qa/browser-restart-detector.d.ts +74 -0
- package/dist/src/services/qa/browser-restart-detector.js +138 -0
- package/dist/src/services/qa/browser-reuse-hint.d.ts +18 -0
- package/dist/src/services/qa/browser-reuse-hint.js +18 -0
- package/dist/src/services/qa/browser-wrapper-service.d.ts +37 -0
- package/dist/src/services/qa/browser-wrapper-service.js +88 -0
- package/dist/src/services/qa/qa-business-review-state.d.ts +47 -0
- package/dist/src/services/qa/qa-business-review-state.js +96 -0
- package/dist/src/services/rd/ast-gate.d.ts +19 -0
- package/dist/src/services/rd/ast-gate.js +71 -0
- package/dist/src/services/rd/impl.d.ts +9 -0
- package/dist/src/services/rd/impl.js +57 -0
- package/dist/src/services/rd/rd-service.d.ts +129 -0
- package/dist/src/services/rd/rd-service.js +438 -0
- package/dist/src/services/rd/reviewer-dispatch-policy.d.ts +122 -0
- package/dist/src/services/rd/reviewer-dispatch-policy.js +148 -0
- package/dist/src/services/rd/standards-diagnostic.d.ts +76 -0
- package/dist/src/services/rd/standards-diagnostic.js +166 -0
- package/dist/src/services/rd/strategic-stage.d.ts +4 -0
- package/dist/src/services/rd/strategic-stage.js +15 -0
- package/dist/src/services/rd/strategy.d.ts +13 -0
- package/dist/src/services/rd/strategy.js +60 -0
- package/dist/src/services/rd/tactical-stage.d.ts +33 -0
- package/dist/src/services/rd/tactical-stage.js +62 -0
- package/dist/src/services/rd/types.d.ts +252 -0
- package/dist/src/services/rd/types.js +47 -0
- package/dist/src/services/recommendations/capability-availability.d.ts +5 -0
- package/dist/src/services/recommendations/capability-availability.js +40 -0
- package/dist/src/services/recommendations/capability-map-service.d.ts +7 -0
- package/dist/src/services/recommendations/capability-map-service.js +131 -0
- package/dist/src/services/recommendations/capability-seed-items.d.ts +2 -0
- package/dist/src/services/recommendations/capability-seed-items.js +140 -0
- package/dist/src/services/recommendations/capability-seed-mappings.d.ts +2 -0
- package/dist/src/services/recommendations/capability-seed-mappings.js +54 -0
- package/dist/src/services/recommendations/capability-seed-sources.d.ts +2 -0
- package/dist/src/services/recommendations/capability-seed-sources.js +35 -0
- package/dist/src/services/recommendations/recommendation-service.d.ts +8 -0
- package/dist/src/services/recommendations/recommendation-service.js +106 -0
- package/dist/src/services/recommendations/recommendation-types.d.ts +129 -0
- package/dist/src/services/recommendations/recommendation-types.js +1 -0
- package/dist/src/services/recommendations/seed-capability-catalog.d.ts +3 -0
- package/dist/src/services/recommendations/seed-capability-catalog.js +3 -0
- package/dist/src/services/refactor/refactor-service.d.ts +9 -0
- package/dist/src/services/refactor/refactor-service.js +36 -0
- package/dist/src/services/release/release-state.d.ts +70 -0
- package/dist/src/services/release/release-state.js +140 -0
- package/dist/src/services/retrospective/retrospective-index.d.ts +37 -0
- package/dist/src/services/retrospective/retrospective-index.js +110 -0
- package/dist/src/services/retrospective/retrospective-search-service.d.ts +55 -0
- package/dist/src/services/retrospective/retrospective-search-service.js +107 -0
- package/dist/src/services/retrospective/retrospective-show.d.ts +40 -0
- package/dist/src/services/retrospective/retrospective-show.js +109 -0
- package/dist/src/services/reviewer/model-family.d.ts +18 -0
- package/dist/src/services/reviewer/model-family.js +70 -0
- package/dist/src/services/reviewer/providers/anthropic.d.ts +2 -0
- package/dist/src/services/reviewer/providers/anthropic.js +61 -0
- package/dist/src/services/reviewer/providers/ollama.d.ts +26 -0
- package/dist/src/services/reviewer/providers/ollama.js +38 -0
- package/dist/src/services/reviewer/providers/openai.d.ts +2 -0
- package/dist/src/services/reviewer/providers/openai.js +63 -0
- package/dist/src/services/reviewer/reviewer-config.d.ts +34 -0
- package/dist/src/services/reviewer/reviewer-config.js +100 -0
- package/dist/src/services/reviewer/reviewer-service.d.ts +56 -0
- package/dist/src/services/reviewer/reviewer-service.js +263 -0
- package/dist/src/services/reviewer/selection-strategies.d.ts +27 -0
- package/dist/src/services/reviewer/selection-strategies.js +53 -0
- package/dist/src/services/role/role-registry.d.ts +38 -0
- package/dist/src/services/role/role-registry.js +83 -0
- package/dist/src/services/sc/index.d.ts +1 -0
- package/dist/src/services/sc/index.js +1 -0
- package/dist/src/services/sc/sc-service.d.ts +131 -0
- package/dist/src/services/sc/sc-service.js +552 -0
- package/dist/src/services/scan/acceptance-coverage-service.d.ts +42 -0
- package/dist/src/services/scan/acceptance-coverage-service.js +140 -0
- package/dist/src/services/scan/api-surface-service.d.ts +69 -0
- package/dist/src/services/scan/api-surface-service.js +239 -0
- package/dist/src/services/scan/archetype-service.d.ts +5 -0
- package/dist/src/services/scan/archetype-service.js +242 -0
- package/dist/src/services/scan/diff-scope-service.d.ts +40 -0
- package/dist/src/services/scan/diff-scope-service.js +198 -0
- package/dist/src/services/scan/existing-system-service.d.ts +7 -0
- package/dist/src/services/scan/existing-system-service.js +300 -0
- package/dist/src/services/scan/file-size-scan.d.ts +23 -0
- package/dist/src/services/scan/file-size-scan.js +68 -0
- package/dist/src/services/scan/karpathy-service.d.ts +60 -0
- package/dist/src/services/scan/karpathy-service.js +228 -0
- package/dist/src/services/scan/libraries-service.d.ts +24 -0
- package/dist/src/services/scan/libraries-service.js +419 -0
- package/dist/src/services/scan/libraries-types.d.ts +59 -0
- package/dist/src/services/scan/libraries-types.js +9 -0
- package/dist/src/services/scan/orphan-service.d.ts +76 -0
- package/dist/src/services/scan/orphan-service.js +538 -0
- package/dist/src/services/scan/scan-types.d.ts +59 -0
- package/dist/src/services/scan/scan-types.js +1 -0
- package/dist/src/services/scan/type-sanity-service.d.ts +23 -0
- package/dist/src/services/scan/type-sanity-service.js +116 -0
- package/dist/src/services/security/safe-settings-path.d.ts +12 -0
- package/dist/src/services/security/safe-settings-path.js +104 -0
- package/dist/src/services/session/binding-status-service.d.ts +56 -0
- package/dist/src/services/session/binding-status-service.js +106 -0
- package/dist/src/services/session/binding-store.d.ts +161 -0
- package/dist/src/services/session/binding-store.js +509 -0
- package/dist/src/services/session/caller-binding-service.d.ts +70 -0
- package/dist/src/services/session/caller-binding-service.js +148 -0
- package/dist/src/services/session/caller-id-types.d.ts +77 -0
- package/dist/src/services/session/caller-id-types.js +46 -0
- package/dist/src/services/session/getSessionDir.d.ts +1 -0
- package/dist/src/services/session/getSessionDir.js +27 -0
- package/dist/src/services/session/index.d.ts +6 -0
- package/dist/src/services/session/index.js +7 -0
- package/dist/src/services/session/platform-fallbacks.d.ts +31 -0
- package/dist/src/services/session/platform-fallbacks.js +35 -0
- package/dist/src/services/session/resolve-caller-id.d.ts +57 -0
- package/dist/src/services/session/resolve-caller-id.js +88 -0
- package/dist/src/services/session/session-binding-bridge.d.ts +76 -0
- package/dist/src/services/session/session-binding-bridge.js +247 -0
- package/dist/src/services/session/session-checkpoint-service.d.ts +57 -0
- package/dist/src/services/session/session-checkpoint-service.js +143 -0
- package/dist/src/services/session/session-manager.d.ts +168 -0
- package/dist/src/services/session/session-manager.js +502 -0
- package/dist/src/services/session/session-resume-service.d.ts +25 -0
- package/dist/src/services/session/session-resume-service.js +101 -0
- package/dist/src/services/signal/cancel-handler.d.ts +14 -0
- package/dist/src/services/signal/cancel-handler.js +76 -0
- package/dist/src/services/skill/resume-detector.d.ts +54 -0
- package/dist/src/services/skill/resume-detector.js +334 -0
- package/dist/src/services/skill/skill-scheduler.d.ts +40 -0
- package/dist/src/services/skill/skill-scheduler.js +53 -0
- package/dist/src/services/skills/hooks-settings-service.d.ts +137 -0
- package/dist/src/services/skills/hooks-settings-service.js +396 -0
- package/dist/src/services/skills/skill-conformance-service.d.ts +40 -0
- package/dist/src/services/skills/skill-conformance-service.js +136 -0
- package/dist/src/services/skills/skill-presence-service.d.ts +158 -0
- package/dist/src/services/skills/skill-presence-service.js +474 -0
- package/dist/src/services/skills/skill-registry.d.ts +17 -0
- package/dist/src/services/skills/skill-registry.js +40 -0
- package/dist/src/services/skills/skill-runbook-service.d.ts +11 -0
- package/dist/src/services/skills/skill-runbook-service.js +128 -0
- package/dist/src/services/skills/skill-statusline-renderer.d.ts +6 -0
- package/dist/src/services/skills/skill-statusline-renderer.js +55 -0
- package/dist/src/services/skills/skill-statusline-service.d.ts +24 -0
- package/dist/src/services/skills/skill-statusline-service.js +110 -0
- package/dist/src/services/skills/statusline-settings-service.d.ts +59 -0
- package/dist/src/services/skills/statusline-settings-service.js +141 -0
- package/dist/src/services/skills/sync-service.d.ts +86 -0
- package/dist/src/services/skills/sync-service.js +271 -0
- package/dist/src/services/slice/calibration-store.d.ts +39 -0
- package/dist/src/services/slice/calibration-store.js +68 -0
- package/dist/src/services/slice/cross-pass-edge-merger.d.ts +53 -0
- package/dist/src/services/slice/cross-pass-edge-merger.js +246 -0
- package/dist/src/services/slice/granularity-decider.d.ts +37 -0
- package/dist/src/services/slice/granularity-decider.js +40 -0
- package/dist/src/services/slice/llm-arbitrator.d.ts +35 -0
- package/dist/src/services/slice/llm-arbitrator.js +63 -0
- package/dist/src/services/slice/multi-pass-orchestrator.d.ts +67 -0
- package/dist/src/services/slice/multi-pass-orchestrator.js +225 -0
- package/dist/src/services/slice/schema-router.d.ts +44 -0
- package/dist/src/services/slice/schema-router.js +61 -0
- package/dist/src/services/slice/slice-archive-service.d.ts +20 -0
- package/dist/src/services/slice/slice-archive-service.js +111 -0
- package/dist/src/services/slice/slice-benchmark-service.d.ts +19 -0
- package/dist/src/services/slice/slice-benchmark-service.js +60 -0
- package/dist/src/services/slice/slice-check-service.d.ts +2 -0
- package/dist/src/services/slice/slice-check-service.js +459 -0
- package/dist/src/services/slice/slice-check-types.d.ts +104 -0
- package/dist/src/services/slice/slice-check-types.js +28 -0
- package/dist/src/services/slice/slice-decompose-runners.d.ts +23 -0
- package/dist/src/services/slice/slice-decompose-runners.js +174 -0
- package/dist/src/services/slice/slice-decompose-service.d.ts +24 -0
- package/dist/src/services/slice/slice-decompose-service.js +532 -0
- package/dist/src/services/slice/slice-decompose-types.d.ts +263 -0
- package/dist/src/services/slice/slice-decompose-types.js +30 -0
- package/dist/src/services/slice/slice-integration.d.ts +43 -0
- package/dist/src/services/slice/slice-integration.js +106 -0
- package/dist/src/services/slice/slice-pick-service.d.ts +32 -0
- package/dist/src/services/slice/slice-pick-service.js +75 -0
- package/dist/src/services/slice/slice-review-state.d.ts +70 -0
- package/dist/src/services/slice/slice-review-state.js +109 -0
- package/dist/src/services/slice/slice-topology-types.d.ts +115 -0
- package/dist/src/services/slice/slice-topology-types.js +20 -0
- package/dist/src/services/smoke/smoke-paths-state.d.ts +73 -0
- package/dist/src/services/smoke/smoke-paths-state.js +117 -0
- package/dist/src/services/solo/auto-compact-orchestrator.d.ts +98 -0
- package/dist/src/services/solo/auto-compact-orchestrator.js +343 -0
- package/dist/src/services/solo/batch-heartbeat-poller.d.ts +51 -0
- package/dist/src/services/solo/batch-heartbeat-poller.js +88 -0
- package/dist/src/services/solo/dag-orchestrator.d.ts +128 -0
- package/dist/src/services/solo/dag-orchestrator.js +304 -0
- package/dist/src/services/solo/mode-gate.d.ts +163 -0
- package/dist/src/services/solo/mode-gate.js +212 -0
- package/dist/src/services/solo/post-compact-detector.d.ts +61 -0
- package/dist/src/services/solo/post-compact-detector.js +240 -0
- package/dist/src/services/solo/status-line-renderer.d.ts +34 -0
- package/dist/src/services/solo/status-line-renderer.js +55 -0
- package/dist/src/services/solo/user-touchpoint-classifier.d.ts +44 -0
- package/dist/src/services/solo/user-touchpoint-classifier.js +145 -0
- package/dist/src/services/sop/gate-enforce-service.d.ts +33 -0
- package/dist/src/services/sop/gate-enforce-service.js +168 -0
- package/dist/src/services/sop/sop-advance-service.d.ts +74 -0
- package/dist/src/services/sop/sop-advance-service.js +115 -0
- package/dist/src/services/sop/sop-check-service.d.ts +45 -0
- package/dist/src/services/sop/sop-check-service.js +181 -0
- package/dist/src/services/sop/sop-paths.d.ts +62 -0
- package/dist/src/services/sop/sop-paths.js +92 -0
- package/dist/src/services/sop/sop-registry-service.d.ts +46 -0
- package/dist/src/services/sop/sop-registry-service.js +89 -0
- package/dist/src/services/sop/sop-service.d.ts +55 -0
- package/dist/src/services/sop/sop-service.js +222 -0
- package/dist/src/services/sop/sop-types.d.ts +95 -0
- package/dist/src/services/sop/sop-types.js +11 -0
- package/dist/src/services/standards/ide-aware-standards-service.d.ts +94 -0
- package/dist/src/services/standards/ide-aware-standards-service.js +89 -0
- package/dist/src/services/standards/migrate-claude-rules-service.d.ts +19 -0
- package/dist/src/services/standards/migrate-claude-rules-service.js +193 -0
- package/dist/src/services/standards/migrate-service.d.ts +63 -0
- package/dist/src/services/standards/migrate-service.js +193 -0
- package/dist/src/services/standards/missing-standards-detector.d.ts +79 -0
- package/dist/src/services/standards/missing-standards-detector.js +132 -0
- package/dist/src/services/standards/project-context.d.ts +24 -0
- package/dist/src/services/standards/project-context.js +314 -0
- package/dist/src/services/standards/project-standards-service.d.ts +114 -0
- package/dist/src/services/standards/project-standards-service.js +574 -0
- package/dist/src/services/tech/tech-service.d.ts +69 -0
- package/dist/src/services/tech/tech-service.js +299 -0
- package/dist/src/services/test-cache/test-cache-service.d.ts +70 -0
- package/dist/src/services/test-cache/test-cache-service.js +175 -0
- package/dist/src/services/understand/understand-scan-service.d.ts +28 -0
- package/dist/src/services/understand/understand-scan-service.js +170 -0
- package/dist/src/services/understand/understand-types.d.ts +50 -0
- package/dist/src/services/understand/understand-types.js +1 -0
- package/dist/src/services/upgrade/1x-detector-service.d.ts +7 -0
- package/dist/src/services/upgrade/1x-detector-service.js +94 -0
- package/dist/src/services/upgrade/gitignore-migrate-service.d.ts +56 -0
- package/dist/src/services/upgrade/gitignore-migrate-service.js +170 -0
- package/dist/src/services/upgrade/upgrade-service.d.ts +47 -0
- package/dist/src/services/upgrade/upgrade-service.js +381 -0
- package/dist/src/services/verdict/envelopes.d.ts +93 -0
- package/dist/src/services/verdict/envelopes.js +349 -0
- package/dist/src/services/verdict/verdict-aggregator.d.ts +94 -0
- package/dist/src/services/verdict/verdict-aggregator.js +112 -0
- package/dist/src/services/workflow/artifact-paths.d.ts +59 -0
- package/dist/src/services/workflow/artifact-paths.js +166 -0
- package/dist/src/services/workflow/autonomous-resume-writer.d.ts +16 -0
- package/dist/src/services/workflow/autonomous-resume-writer.js +170 -0
- package/dist/src/services/workflow/pipeline-verify-service.d.ts +90 -0
- package/dist/src/services/workflow/pipeline-verify-service.js +449 -0
- package/dist/src/services/workflow/plan-reader.d.ts +29 -0
- package/dist/src/services/workflow/plan-reader.js +174 -0
- package/dist/src/services/workflow/plan-refresher.d.ts +32 -0
- package/dist/src/services/workflow/plan-refresher.js +353 -0
- package/dist/src/services/workflow/plan-trigger-detector.d.ts +55 -0
- package/dist/src/services/workflow/plan-trigger-detector.js +142 -0
- package/dist/src/services/workflow/workflow-autonomous-resume-helpers.d.ts +19 -0
- package/dist/src/services/workflow/workflow-autonomous-resume-helpers.js +300 -0
- package/dist/src/services/workflow/workflow-autonomous-service.d.ts +100 -0
- package/dist/src/services/workflow/workflow-autonomous-service.js +306 -0
- package/dist/src/services/workflow/workflow-loader.d.ts +63 -0
- package/dist/src/services/workflow/workflow-loader.js +168 -0
- package/dist/src/services/workflow/workflow-router-service.d.ts +85 -0
- package/dist/src/services/workflow/workflow-router-service.js +227 -0
- package/dist/src/services/workflow/workflow-skip-service.d.ts +106 -0
- package/dist/src/services/workflow/workflow-skip-service.js +209 -0
- package/dist/src/services/workflow/workflow-spec.d.ts +116 -0
- package/dist/src/services/workflow/workflow-spec.js +431 -0
- package/dist/src/services/workflow/workflow-state-store.d.ts +27 -0
- package/dist/src/services/workflow/workflow-state-store.js +95 -0
- package/dist/src/services/workspace/claude-settings-template.d.ts +96 -0
- package/dist/src/services/workspace/claude-settings-template.js +215 -0
- package/dist/src/services/workspace/migrate-1-4-1-service.d.ts +44 -0
- package/dist/src/services/workspace/migrate-1-4-1-service.js +195 -0
- package/dist/src/services/workspace/migrate-service.d.ts +2 -0
- package/dist/src/services/workspace/migrate-service.js +613 -0
- package/dist/src/services/workspace/migrate-types.d.ts +127 -0
- package/dist/src/services/workspace/migrate-types.js +21 -0
- package/dist/src/services/workspace/reconcile-service.d.ts +188 -0
- package/dist/src/services/workspace/reconcile-service.js +683 -0
- package/dist/src/services/workspace/reconcile-types.d.ts +130 -0
- package/dist/src/services/workspace/reconcile-types.js +13 -0
- package/dist/src/services/workspace/sid-naming-guard.d.ts +17 -0
- package/dist/src/services/workspace/sid-naming-guard.js +34 -0
- package/dist/src/services/workspace/workspace-claude-settings-materializer.d.ts +45 -0
- package/dist/src/services/workspace/workspace-claude-settings-materializer.js +194 -0
- package/dist/src/services/workspace/workspace-clean-service.d.ts +28 -0
- package/dist/src/services/workspace/workspace-clean-service.js +46 -0
- package/dist/src/services/workspace/workspace-service.d.ts +177 -0
- package/dist/src/services/workspace/workspace-service.js +432 -0
- package/dist/src/services/workspace/workspace-state-service.d.ts +7 -0
- package/dist/src/services/workspace/workspace-state-service.js +43 -0
- package/dist/src/shared/format-md-compact.d.ts +32 -0
- package/dist/src/shared/format-md-compact.js +297 -0
- package/dist/src/shared/frontmatter.d.ts +6 -0
- package/dist/src/shared/frontmatter.js +165 -0
- package/dist/src/shared/fs-utils.d.ts +4 -0
- package/dist/src/shared/fs-utils.js +16 -0
- package/dist/src/shared/fs.d.ts +4 -0
- package/dist/src/shared/fs.js +26 -0
- package/dist/src/shared/incrementing-number.d.ts +23 -0
- package/dist/src/shared/incrementing-number.js +68 -0
- package/dist/src/shared/json-schema-mini.d.ts +10 -0
- package/dist/src/shared/json-schema-mini.js +113 -0
- package/dist/src/shared/path-safety.d.ts +21 -0
- package/dist/src/shared/path-safety.js +54 -0
- package/dist/src/shared/path-utils.d.ts +13 -0
- package/dist/src/shared/path-utils.js +56 -0
- package/dist/src/shared/paths.d.ts +6 -0
- package/dist/src/shared/paths.js +50 -0
- package/dist/src/shared/planner-response.d.ts +21 -0
- package/dist/src/shared/planner-response.js +26 -0
- package/dist/src/shared/platform.d.ts +6 -0
- package/dist/src/shared/platform.js +11 -0
- package/dist/src/shared/process.d.ts +5 -0
- package/dist/src/shared/process.js +12 -0
- package/dist/src/shared/result.d.ts +22 -0
- package/dist/src/shared/result.js +46 -0
- package/dist/src/shared/stale-policy.d.ts +67 -0
- package/dist/src/shared/stale-policy.js +85 -0
- package/dist/src/shared/version.d.ts +1 -0
- package/dist/src/shared/version.js +1 -0
- package/output-styles/peaks-skill-swarm.md +132 -0
- package/package.json +101 -0
- package/schemas/approval-record.schema.json +14 -0
- package/schemas/artifact-manifest.schema.json +16 -0
- package/schemas/artifact-retention-report.schema.json +38 -0
- package/schemas/artifact-workspace.schema.json +22 -0
- package/schemas/capability-availability.schema.json +36 -0
- package/schemas/capability-item.schema.json +37 -0
- package/schemas/capability-source.schema.json +30 -0
- package/schemas/change-impact.schema.json +15 -0
- package/schemas/context-capsule.schema.json +16 -0
- package/schemas/context.schema.json +360 -0
- package/schemas/decomposition-v1.json +194 -0
- package/schemas/decomposition-v2.json +193 -0
- package/schemas/doctor-report.schema.json +34 -0
- package/schemas/library-breaking-changes.data.json +141 -0
- package/schemas/library-breaking-changes.meta.json +6 -0
- package/schemas/library-breaking-changes.schema.json +50 -0
- package/schemas/mcp-apply-result.schema.json +46 -0
- package/schemas/mcp-install-plan.schema.json +71 -0
- package/schemas/mcp-install-spec.schema.json +29 -0
- package/schemas/mcp-server.schema.json +29 -0
- package/schemas/openspec-change-summary.schema.json +68 -0
- package/schemas/openspec-render-request.schema.json +61 -0
- package/schemas/openspec-validation-result.schema.json +36 -0
- package/schemas/recommendation-plan.schema.json +37 -0
- package/schemas/refactor-slice-spec.schema.json +19 -0
- package/schemas/replay-fixture.schema.json +158 -0
- package/schemas/reviewer-envelope.schema.json +79 -0
- package/schemas/sop-manifest.schema.json +52 -0
- package/scripts/clean-dist.mjs +8 -0
- package/scripts/install-skills.mjs +1202 -0
- package/scripts/sync-version.mjs +12 -0
- package/scripts/watch.mjs +389 -0
- package/skills/peaks-audit/SKILL.md +151 -0
- package/skills/peaks-audit/references/6-dimensions.md +141 -0
- package/skills/peaks-doctor/SKILL.md +59 -0
- package/skills/peaks-doctor/references/doctor-check-catalog.md +31 -0
- package/skills/peaks-doctor/references/from-doctor-flow.md +64 -0
- package/skills/peaks-doctor/test_prompts.json +17 -0
- package/skills/peaks-final-review/SKILL.md +157 -0
- package/skills/peaks-final-review/references/4-dimensions.md +117 -0
- package/skills/peaks-ide/SKILL.md +161 -0
- package/skills/peaks-ide/references/audit-log-helper.md +52 -0
- package/skills/peaks-perf-audit/SKILL.md +166 -0
- package/skills/peaks-perf-audit/references/audit-protocol.md +173 -0
- package/skills/peaks-prd/SKILL.md +319 -0
- package/skills/peaks-prd/references/artifact-contracts.md +7 -0
- package/skills/peaks-prd/references/artifact-per-request.md +78 -0
- package/skills/peaks-prd/references/command-migration.md +3 -0
- package/skills/peaks-prd/references/prd-for-multi-pass.md +49 -0
- package/skills/peaks-prd/references/workflow.md +43 -0
- package/skills/peaks-qa/SKILL.md +240 -0
- package/skills/peaks-qa/references/artifact-contracts.md +7 -0
- package/skills/peaks-qa/references/artifact-per-request.md +25 -0
- package/skills/peaks-qa/references/browser-validation-contracts.md +51 -0
- package/skills/peaks-qa/references/codegraph-regression-focus.md +5 -0
- package/skills/peaks-qa/references/command-migration.md +3 -0
- package/skills/peaks-qa/references/external-capability-guidance.md +9 -0
- package/skills/peaks-qa/references/openspec-validation-gate.md +55 -0
- package/skills/peaks-qa/references/qa-compact-handoff.md +3 -0
- package/skills/peaks-qa/references/qa-context-governance.md +24 -0
- package/skills/peaks-qa/references/qa-fanout-contract.md +158 -0
- package/skills/peaks-qa/references/qa-gstack-integration.md +7 -0
- package/skills/peaks-qa/references/qa-local-artifacts.md +3 -0
- package/skills/peaks-qa/references/qa-matt-pocock-integration.md +9 -0
- package/skills/peaks-qa/references/qa-perf-test-plan.md +67 -0
- package/skills/peaks-qa/references/qa-refactor-role.md +3 -0
- package/skills/peaks-qa/references/qa-runbook.md +72 -0
- package/skills/peaks-qa/references/qa-security-test-plan.md +73 -0
- package/skills/peaks-qa/references/qa-skill-presence.md +22 -0
- package/skills/peaks-qa/references/qa-standards-preflight.md +8 -0
- package/skills/peaks-qa/references/qa-sub-agent-dispatch.md +46 -0
- package/skills/peaks-qa/references/qa-transition-gates.md +86 -0
- package/skills/peaks-qa/references/reading-handoff-frontmatter.md +30 -0
- package/skills/peaks-qa/references/regression-gates.md +24 -0
- package/skills/peaks-qa/references/requirement-boundary-recheck.md +9 -0
- package/skills/peaks-qa/references/test-case-generation.md +27 -0
- package/skills/peaks-qa/references/test-report-output.md +14 -0
- package/skills/peaks-rd/SKILL.md +279 -0
- package/skills/peaks-rd/references/artifact-and-standards-output.md +9 -0
- package/skills/peaks-rd/references/artifact-contracts.md +7 -0
- package/skills/peaks-rd/references/artifact-per-request.md +112 -0
- package/skills/peaks-rd/references/browser-action-wrapper.md +39 -0
- package/skills/peaks-rd/references/browser-self-test-contracts.md +29 -0
- package/skills/peaks-rd/references/code-reviewer-4dim-hint.md +72 -0
- package/skills/peaks-rd/references/codegraph-project-analysis.md +5 -0
- package/skills/peaks-rd/references/command-migration.md +3 -0
- package/skills/peaks-rd/references/compact-handoff.md +3 -0
- package/skills/peaks-rd/references/external-references.md +11 -0
- package/skills/peaks-rd/references/frontend-project-generation.md +11 -0
- package/skills/peaks-rd/references/karpathy-reviewer-prompt.md +2 -0
- package/skills/peaks-rd/references/library-version-awareness.md +30 -0
- package/skills/peaks-rd/references/mandatory-perf-baseline.md +42 -0
- package/skills/peaks-rd/references/matt-pocock-integration.md +11 -0
- package/skills/peaks-rd/references/mock-data-placement.md +40 -0
- package/skills/peaks-rd/references/ocr-integration.md +229 -0
- package/skills/peaks-rd/references/openspec-cli.md +62 -0
- package/skills/peaks-rd/references/parallel-review-fanout.md +90 -0
- package/skills/peaks-rd/references/rd-context-governance.md +36 -0
- package/skills/peaks-rd/references/rd-fanout-contracts.md +216 -0
- package/skills/peaks-rd/references/rd-gstack-integration.md +16 -0
- package/skills/peaks-rd/references/rd-runbook.md +190 -0
- package/skills/peaks-rd/references/rd-standards-preflight.md +8 -0
- package/skills/peaks-rd/references/rd-sub-agent-dispatch.md +111 -0
- package/skills/peaks-rd/references/rd-transition-gates.md +148 -0
- package/skills/peaks-rd/references/reading-v2-slice-results.md +54 -0
- package/skills/peaks-rd/references/refactor-workflow.md +39 -0
- package/skills/peaks-rd/references/skill-presence-and-title.md +22 -0
- package/skills/peaks-rd/references/v2-12-fanout-collapse.md +64 -0
- package/skills/peaks-rd/references/writing-handoff-frontmatter.md +68 -0
- package/skills/peaks-reviewer/SKILL.md +76 -0
- package/skills/peaks-reviewer/references/reviewer-prompt.md +50 -0
- package/skills/peaks-reviewer/references/reviewer-schema.md +49 -0
- package/skills/peaks-sc/SKILL.md +166 -0
- package/skills/peaks-sc/references/artifact-contracts.md +3 -0
- package/skills/peaks-sc/references/artifact-retention.md +14 -0
- package/skills/peaks-sc/references/command-migration.md +3 -0
- package/skills/peaks-sc/references/openspec-commit-boundaries.md +33 -0
- package/skills/peaks-security-audit/SKILL.md +167 -0
- package/skills/peaks-security-audit/references/audit-protocol.md +175 -0
- package/skills/peaks-slice-decompose/SKILL.md +111 -0
- package/skills/peaks-slice-decompose/references/cross-pass-edge-interpretation.md +158 -0
- package/skills/peaks-slice-decompose/references/granularity-decision.md +129 -0
- package/skills/peaks-slice-decompose/references/v2-schema.md +156 -0
- package/skills/peaks-solo/SKILL.md +316 -0
- package/skills/peaks-solo/references/a2a-artifact-mapping.md +115 -0
- package/skills/peaks-solo/references/anchoring-and-session-info.md +34 -0
- package/skills/peaks-solo/references/artifact-contracts.md +65 -0
- package/skills/peaks-solo/references/boundaries.md +21 -0
- package/skills/peaks-solo/references/browser-workflow.md +127 -0
- package/skills/peaks-solo/references/checkpoint-resume.md +70 -0
- package/skills/peaks-solo/references/codegraph-orchestration.md +5 -0
- package/skills/peaks-solo/references/command-migration.md +3 -0
- package/skills/peaks-solo/references/completion-handoff.md +18 -0
- package/skills/peaks-solo/references/context-governance.md +204 -0
- package/skills/peaks-solo/references/cross-date-session-check.md +67 -0
- package/skills/peaks-solo/references/dag-orchestrator.md +56 -0
- package/skills/peaks-solo/references/envelope-contract.md +130 -0
- package/skills/peaks-solo/references/existing-system-extraction.md +78 -0
- package/skills/peaks-solo/references/external-references.md +17 -0
- package/skills/peaks-solo/references/external-skill-invocation.md +72 -0
- package/skills/peaks-solo/references/fanout-mandatory.md +109 -0
- package/skills/peaks-solo/references/fast-mode.md +23 -0
- package/skills/peaks-solo/references/frontend-only-mode.md +87 -0
- package/skills/peaks-solo/references/gstack-integration.md +7 -0
- package/skills/peaks-solo/references/headroom-integration.md +107 -0
- package/skills/peaks-solo/references/local-artifact-workspace.md +79 -0
- package/skills/peaks-solo/references/micro-cycle.md +316 -0
- package/skills/peaks-solo/references/mode-selection-with-stale-presence.md +124 -0
- package/skills/peaks-solo/references/mode-selection.md +21 -0
- package/skills/peaks-solo/references/openspec-workflow.md +81 -0
- package/skills/peaks-solo/references/periodic-checkpoint.md +71 -0
- package/skills/peaks-solo/references/playwright-mcp-multi-terminal.md +114 -0
- package/skills/peaks-solo/references/project-memory-loading.md +17 -0
- package/skills/peaks-solo/references/project-scan-checklist.md +136 -0
- package/skills/peaks-solo/references/quality-gate-cheatsheet.md +13 -0
- package/skills/peaks-solo/references/refactor-mode.md +24 -0
- package/skills/peaks-solo/references/resume-detection.md +63 -0
- package/skills/peaks-solo/references/runbook.md +188 -0
- package/skills/peaks-solo/references/skill-presence-and-title.md +31 -0
- package/skills/peaks-solo/references/standards-preflight.md +23 -0
- package/skills/peaks-solo/references/step-0-55-1x-detection.md +82 -0
- package/skills/peaks-solo/references/sub-agent-dispatch.md +334 -0
- package/skills/peaks-solo/references/swarm-dispatch-contract.md +230 -0
- package/skills/peaks-solo/references/workflow-gates-and-types.md +186 -0
- package/skills/peaks-solo/references/workflow.md +38 -0
- package/skills/peaks-solo-resume/SKILL.md +81 -0
- package/skills/peaks-solo-status/SKILL.md +120 -0
- package/skills/peaks-solo-test/SKILL.md +84 -0
- package/skills/peaks-sop/SKILL.md +209 -0
- package/skills/peaks-sop/references/sop-authoring.md +161 -0
- package/skills/peaks-txt/SKILL.md +303 -0
- package/skills/peaks-txt/references/artifact-contracts.md +7 -0
- package/skills/peaks-txt/references/command-migration.md +3 -0
- package/skills/peaks-txt/references/context-capsule.md +21 -0
- package/skills/peaks-ui/SKILL.md +369 -0
- package/skills/peaks-ui/references/artifact-contracts.md +3 -0
- package/skills/peaks-ui/references/artifact-per-request.md +71 -0
- package/skills/peaks-ui/references/command-migration.md +3 -0
- package/skills/peaks-ui/references/workflow.md +27 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GranularityDecider — pure function used by MultiPassOrchestrator to
|
|
3
|
+
* decide whether a WorkUnit should be subdivided further.
|
|
4
|
+
*
|
|
5
|
+
* No LLM dependency. Output is one of three branches:
|
|
6
|
+
* - { subdivide: true } — clearly over threshold, split now
|
|
7
|
+
* - { subdivide: 'tie-break' } — within 20% of threshold, defer to LLMArbitrator
|
|
8
|
+
* - { subdivide: false } — under threshold, stop subdividing
|
|
9
|
+
*
|
|
10
|
+
* The "tie-break" branch exists because large files (>80% of threshold)
|
|
11
|
+
* sometimes read like one cohesive unit; the orchestrator calls
|
|
12
|
+
* LLMArbitrator (which has project context) for that call.
|
|
13
|
+
*/
|
|
14
|
+
import type { WorkUnit } from './slice-decompose-types.js';
|
|
15
|
+
export interface GranularityThresholds {
|
|
16
|
+
readonly maxFiles: number;
|
|
17
|
+
readonly maxLoc: number;
|
|
18
|
+
}
|
|
19
|
+
export type DeciderResult = {
|
|
20
|
+
readonly subdivide: true;
|
|
21
|
+
readonly reason: string;
|
|
22
|
+
} | {
|
|
23
|
+
readonly subdivide: false;
|
|
24
|
+
readonly reason: string;
|
|
25
|
+
} | {
|
|
26
|
+
readonly subdivide: 'tie-break';
|
|
27
|
+
readonly reason: string;
|
|
28
|
+
};
|
|
29
|
+
export declare const DEFAULT_THRESHOLDS: GranularityThresholds;
|
|
30
|
+
/**
|
|
31
|
+
* Decide whether `wu` should be subdivided.
|
|
32
|
+
*
|
|
33
|
+
* Boundary semantics: `>` (strict). At the exact threshold (loc === maxLoc,
|
|
34
|
+
* files.length === maxFiles) the result is `subdivide: false`. This matches
|
|
35
|
+
* the spec: "threshold is exclusive; we only subdivide what is OVER it."
|
|
36
|
+
*/
|
|
37
|
+
export declare function shouldSubdivide(wu: WorkUnit, thresholds?: GranularityThresholds): DeciderResult;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GranularityDecider — pure function used by MultiPassOrchestrator to
|
|
3
|
+
* decide whether a WorkUnit should be subdivided further.
|
|
4
|
+
*
|
|
5
|
+
* No LLM dependency. Output is one of three branches:
|
|
6
|
+
* - { subdivide: true } — clearly over threshold, split now
|
|
7
|
+
* - { subdivide: 'tie-break' } — within 20% of threshold, defer to LLMArbitrator
|
|
8
|
+
* - { subdivide: false } — under threshold, stop subdividing
|
|
9
|
+
*
|
|
10
|
+
* The "tie-break" branch exists because large files (>80% of threshold)
|
|
11
|
+
* sometimes read like one cohesive unit; the orchestrator calls
|
|
12
|
+
* LLMArbitrator (which has project context) for that call.
|
|
13
|
+
*/
|
|
14
|
+
export const DEFAULT_THRESHOLDS = { maxFiles: 3, maxLoc: 400 };
|
|
15
|
+
/**
|
|
16
|
+
* Decide whether `wu` should be subdivided.
|
|
17
|
+
*
|
|
18
|
+
* Boundary semantics: `>` (strict). At the exact threshold (loc === maxLoc,
|
|
19
|
+
* files.length === maxFiles) the result is `subdivide: false`. This matches
|
|
20
|
+
* the spec: "threshold is exclusive; we only subdivide what is OVER it."
|
|
21
|
+
*/
|
|
22
|
+
export function shouldSubdivide(wu, thresholds = DEFAULT_THRESHOLDS) {
|
|
23
|
+
const locExceeded = wu.loc > thresholds.maxLoc;
|
|
24
|
+
const filesExceeded = wu.files.length > thresholds.maxFiles;
|
|
25
|
+
if (locExceeded || filesExceeded) {
|
|
26
|
+
return {
|
|
27
|
+
subdivide: true,
|
|
28
|
+
reason: `wu ${wu.id}: loc=${wu.loc} files=${wu.files.length} exceeds threshold`,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
const locBorderline = wu.loc > thresholds.maxLoc * 0.8;
|
|
32
|
+
const filesBorderline = wu.files.length > thresholds.maxFiles * 0.8;
|
|
33
|
+
if (locBorderline || filesBorderline) {
|
|
34
|
+
return {
|
|
35
|
+
subdivide: 'tie-break',
|
|
36
|
+
reason: `wu ${wu.id}: within 20% of threshold, needs LLM judgment`,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
return { subdivide: false, reason: `wu ${wu.id}: under threshold` };
|
|
40
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLMArbitrator — the focused LLM 兜底 (fallback) path used by
|
|
3
|
+
* `CrossPassEdgeMerger` (W2 T7) when structural heuristics cannot
|
|
4
|
+
* decide whether a cross-pass edge is real.
|
|
5
|
+
*
|
|
6
|
+
* Contract:
|
|
7
|
+
* - `arbitrate(prompt, opts)` is the only public entry point.
|
|
8
|
+
* - Cache key is `sha256(prompt)`; cache file is `<cacheDir>/<hash>.json`.
|
|
9
|
+
* - Cache hit short-circuits: llmRunner.call is NOT invoked.
|
|
10
|
+
* - A module-level counter (`callsThisInvocation`) caps live LLM calls
|
|
11
|
+
* per orchestrator invocation. When exhausted, the result is
|
|
12
|
+
* `{ output: null, callId: 'budget-exhausted', tokens: null }`.
|
|
13
|
+
* - Live calls are raced against `perCallTimeoutMs`; on timeout, return
|
|
14
|
+
* `{ output: null, callId: 'timeout', tokens: null }`.
|
|
15
|
+
* - On any other error, return `{ output: null, callId: 'error', tokens: null }`.
|
|
16
|
+
* - `resetArbitratorBudget()` zeros the module counter so the orchestrator
|
|
17
|
+
* can re-arm it for the next invocation.
|
|
18
|
+
*/
|
|
19
|
+
import type { LlmRunner } from '../audit/audit-goal-service.js';
|
|
20
|
+
export interface ArbitratorOptions {
|
|
21
|
+
readonly cacheDir: string;
|
|
22
|
+
readonly maxCallsPerInvocation: number;
|
|
23
|
+
readonly perCallTimeoutMs: number;
|
|
24
|
+
readonly llmRunner: LlmRunner;
|
|
25
|
+
}
|
|
26
|
+
export interface ArbitrateResult {
|
|
27
|
+
readonly output: string | null;
|
|
28
|
+
readonly callId: string;
|
|
29
|
+
readonly tokens: {
|
|
30
|
+
input: number;
|
|
31
|
+
output: number;
|
|
32
|
+
} | null;
|
|
33
|
+
}
|
|
34
|
+
export declare function resetArbitratorBudget(): void;
|
|
35
|
+
export declare function arbitrate(prompt: string, opts: ArbitratorOptions): Promise<ArbitrateResult>;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLMArbitrator — the focused LLM 兜底 (fallback) path used by
|
|
3
|
+
* `CrossPassEdgeMerger` (W2 T7) when structural heuristics cannot
|
|
4
|
+
* decide whether a cross-pass edge is real.
|
|
5
|
+
*
|
|
6
|
+
* Contract:
|
|
7
|
+
* - `arbitrate(prompt, opts)` is the only public entry point.
|
|
8
|
+
* - Cache key is `sha256(prompt)`; cache file is `<cacheDir>/<hash>.json`.
|
|
9
|
+
* - Cache hit short-circuits: llmRunner.call is NOT invoked.
|
|
10
|
+
* - A module-level counter (`callsThisInvocation`) caps live LLM calls
|
|
11
|
+
* per orchestrator invocation. When exhausted, the result is
|
|
12
|
+
* `{ output: null, callId: 'budget-exhausted', tokens: null }`.
|
|
13
|
+
* - Live calls are raced against `perCallTimeoutMs`; on timeout, return
|
|
14
|
+
* `{ output: null, callId: 'timeout', tokens: null }`.
|
|
15
|
+
* - On any other error, return `{ output: null, callId: 'error', tokens: null }`.
|
|
16
|
+
* - `resetArbitratorBudget()` zeros the module counter so the orchestrator
|
|
17
|
+
* can re-arm it for the next invocation.
|
|
18
|
+
*/
|
|
19
|
+
import { createHash } from 'node:crypto';
|
|
20
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
21
|
+
import { join } from 'node:path';
|
|
22
|
+
const SYSTEM_PROMPT = 'You are a focused technical arbitrator.';
|
|
23
|
+
let callsThisInvocation = 0;
|
|
24
|
+
export function resetArbitratorBudget() {
|
|
25
|
+
callsThisInvocation = 0;
|
|
26
|
+
}
|
|
27
|
+
export async function arbitrate(prompt, opts) {
|
|
28
|
+
const promptHash = createHash('sha256').update(prompt).digest('hex');
|
|
29
|
+
const cacheFile = join(opts.cacheDir, `${promptHash}.json`);
|
|
30
|
+
if (existsSync(cacheFile)) {
|
|
31
|
+
const cached = JSON.parse(readFileSync(cacheFile, 'utf8'));
|
|
32
|
+
return {
|
|
33
|
+
output: cached.output,
|
|
34
|
+
callId: `cache:${promptHash.slice(0, 12)}`,
|
|
35
|
+
tokens: null
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
if (callsThisInvocation >= opts.maxCallsPerInvocation) {
|
|
39
|
+
return { output: null, callId: 'budget-exhausted', tokens: null };
|
|
40
|
+
}
|
|
41
|
+
try {
|
|
42
|
+
const result = await Promise.race([
|
|
43
|
+
opts.llmRunner.call(SYSTEM_PROMPT, prompt, { maxTokens: 1000 }),
|
|
44
|
+
new Promise((_, reject) => setTimeout(() => reject(new Error('timeout')), opts.perCallTimeoutMs))
|
|
45
|
+
]);
|
|
46
|
+
callsThisInvocation++;
|
|
47
|
+
mkdirSync(opts.cacheDir, { recursive: true });
|
|
48
|
+
writeFileSync(cacheFile, JSON.stringify({ output: result.output, cachedAt: new Date().toISOString() }));
|
|
49
|
+
return {
|
|
50
|
+
output: result.output,
|
|
51
|
+
callId: `live:${promptHash.slice(0, 12)}`,
|
|
52
|
+
tokens: result.tokens
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
const message = err.message;
|
|
57
|
+
return {
|
|
58
|
+
output: null,
|
|
59
|
+
callId: message === 'timeout' ? 'timeout' : 'error',
|
|
60
|
+
tokens: null
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MultiPassOrchestrator — Phase 2 of slice-topology-multipass (W2 T9).
|
|
3
|
+
*
|
|
4
|
+
* Top-level orchestrator that runs the existing 6-stage algorithm
|
|
5
|
+
* (`decomposeSlices`) at service-level and/or file-level granularity, then
|
|
6
|
+
* stitches the passes together with `merge` to produce a v2
|
|
7
|
+
* `DecompositionResultV2` with cross-pass edges.
|
|
8
|
+
*
|
|
9
|
+
* Granularity semantics:
|
|
10
|
+
* - 'service': Pass 1 only. Each workUnit becomes a SliceV2 with
|
|
11
|
+
* granularity='service' and parentSliceId=null.
|
|
12
|
+
* - 'file': Pass 2 only. `decomposeSlices` is called once on the full
|
|
13
|
+
* scope (no parent subdivision). Each workUnit becomes a
|
|
14
|
+
* SliceV2 with granularity='file' and parentSliceId=null.
|
|
15
|
+
* - 'both': Pass 1 + N Pass 2 (one per parent). Pass 2 runs for every
|
|
16
|
+
* Pass 1 slice without decider filtering.
|
|
17
|
+
* - 'auto': Same as 'both' but Pass 2 only runs for parents where
|
|
18
|
+
* `shouldSubdivide(wu).subdivide !== false` (both `true` and
|
|
19
|
+
* `'tie-break'` qualify).
|
|
20
|
+
*
|
|
21
|
+
* Granularity-mapping approach (see pre-flight note in the task spec):
|
|
22
|
+
* Approach 1 — pass-through with post-hoc filter. The 6-stage algorithm
|
|
23
|
+
* (`decomposeSlices`) does NOT accept a `granularity` or `scopeFilter`
|
|
24
|
+
* option, and the pre-flight note recommends NOT extending `DecomposeOptions`
|
|
25
|
+
* (surgical change rule). We therefore:
|
|
26
|
+
* 1. Pass the full `opts` (including the orchestrator-only `granularity`
|
|
27
|
+
* and `llmRunner` fields) through to `decomposeSlices`; the algorithm
|
|
28
|
+
* ignores the extra fields.
|
|
29
|
+
* 2. Filter Pass 2 `result.workUnits` post-hoc so each Pass 2 result
|
|
30
|
+
* only contains files inside the parent slice's file scope.
|
|
31
|
+
*
|
|
32
|
+
* Cross-pass edges are produced by `merge` whenever there are ≥2 passes.
|
|
33
|
+
* The merger handles both static detection (type-shares, fixture-shares,
|
|
34
|
+
* import-re-export — runs UNCONDITIONALLY) and the LLM fallback path (only
|
|
35
|
+
* when `opts.llmRunner` is provided). Without an llmRunner the orchestrator
|
|
36
|
+
* still gets statically-detected cross-pass edges; only `llmArbitrations`
|
|
37
|
+
* stays empty.
|
|
38
|
+
*
|
|
39
|
+
* @see ./slice-decompose-service.ts — the 6-stage algorithm (reused as-is)
|
|
40
|
+
* @see ./granularity-decider.ts — subdivide decision
|
|
41
|
+
* @see ./cross-pass-edge-merger.ts — cross-pass edge detection
|
|
42
|
+
* @see ./llm-arbitrator.ts — LLM fallback for cross-pass edges
|
|
43
|
+
* @see ./slice-topology-types.ts — DecompositionResultV2, PassResult, etc.
|
|
44
|
+
*/
|
|
45
|
+
import type { LlmRunner } from '../audit/audit-goal-service.js';
|
|
46
|
+
import type { DecomposeOptions } from './slice-decompose-types.js';
|
|
47
|
+
import type { DecompositionResultV2 } from './slice-topology-types.js';
|
|
48
|
+
export type Granularity = 'service' | 'file' | 'both' | 'auto';
|
|
49
|
+
export interface MultiPassOptions extends DecomposeOptions {
|
|
50
|
+
/** Service-level vs file-level vs both. Defaults to `'both'`. */
|
|
51
|
+
readonly granularity?: Granularity;
|
|
52
|
+
/** Optional LLM runner; when present, cross-pass edges are computed via `merge`. */
|
|
53
|
+
readonly llmRunner?: LlmRunner;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Run the multi-pass decomposition algorithm and return a v2 result.
|
|
57
|
+
*
|
|
58
|
+
* 1. Reset the LLM arbitrator budget for this invocation.
|
|
59
|
+
* 2. Run Pass 1 (service-level) if granularity includes 'service'.
|
|
60
|
+
* 3. Run Pass 2 (file-level) — for every qualifying parent in 'both'/'auto',
|
|
61
|
+
* or once on the full scope in 'file'-only mode.
|
|
62
|
+
* 4. Compute cross-pass edges via `merge` whenever there are ≥2 passes
|
|
63
|
+
* (static detection runs unconditionally; LLM fallback only when an
|
|
64
|
+
* llmRunner is supplied).
|
|
65
|
+
* 5. Return a `DecompositionResultV2` with `partial: false`.
|
|
66
|
+
*/
|
|
67
|
+
export declare function decompose(rid: string, prdMarkdown: string, projectRoot: string, opts?: MultiPassOptions): Promise<DecompositionResultV2>;
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MultiPassOrchestrator — Phase 2 of slice-topology-multipass (W2 T9).
|
|
3
|
+
*
|
|
4
|
+
* Top-level orchestrator that runs the existing 6-stage algorithm
|
|
5
|
+
* (`decomposeSlices`) at service-level and/or file-level granularity, then
|
|
6
|
+
* stitches the passes together with `merge` to produce a v2
|
|
7
|
+
* `DecompositionResultV2` with cross-pass edges.
|
|
8
|
+
*
|
|
9
|
+
* Granularity semantics:
|
|
10
|
+
* - 'service': Pass 1 only. Each workUnit becomes a SliceV2 with
|
|
11
|
+
* granularity='service' and parentSliceId=null.
|
|
12
|
+
* - 'file': Pass 2 only. `decomposeSlices` is called once on the full
|
|
13
|
+
* scope (no parent subdivision). Each workUnit becomes a
|
|
14
|
+
* SliceV2 with granularity='file' and parentSliceId=null.
|
|
15
|
+
* - 'both': Pass 1 + N Pass 2 (one per parent). Pass 2 runs for every
|
|
16
|
+
* Pass 1 slice without decider filtering.
|
|
17
|
+
* - 'auto': Same as 'both' but Pass 2 only runs for parents where
|
|
18
|
+
* `shouldSubdivide(wu).subdivide !== false` (both `true` and
|
|
19
|
+
* `'tie-break'` qualify).
|
|
20
|
+
*
|
|
21
|
+
* Granularity-mapping approach (see pre-flight note in the task spec):
|
|
22
|
+
* Approach 1 — pass-through with post-hoc filter. The 6-stage algorithm
|
|
23
|
+
* (`decomposeSlices`) does NOT accept a `granularity` or `scopeFilter`
|
|
24
|
+
* option, and the pre-flight note recommends NOT extending `DecomposeOptions`
|
|
25
|
+
* (surgical change rule). We therefore:
|
|
26
|
+
* 1. Pass the full `opts` (including the orchestrator-only `granularity`
|
|
27
|
+
* and `llmRunner` fields) through to `decomposeSlices`; the algorithm
|
|
28
|
+
* ignores the extra fields.
|
|
29
|
+
* 2. Filter Pass 2 `result.workUnits` post-hoc so each Pass 2 result
|
|
30
|
+
* only contains files inside the parent slice's file scope.
|
|
31
|
+
*
|
|
32
|
+
* Cross-pass edges are produced by `merge` whenever there are ≥2 passes.
|
|
33
|
+
* The merger handles both static detection (type-shares, fixture-shares,
|
|
34
|
+
* import-re-export — runs UNCONDITIONALLY) and the LLM fallback path (only
|
|
35
|
+
* when `opts.llmRunner` is provided). Without an llmRunner the orchestrator
|
|
36
|
+
* still gets statically-detected cross-pass edges; only `llmArbitrations`
|
|
37
|
+
* stays empty.
|
|
38
|
+
*
|
|
39
|
+
* @see ./slice-decompose-service.ts — the 6-stage algorithm (reused as-is)
|
|
40
|
+
* @see ./granularity-decider.ts — subdivide decision
|
|
41
|
+
* @see ./cross-pass-edge-merger.ts — cross-pass edge detection
|
|
42
|
+
* @see ./llm-arbitrator.ts — LLM fallback for cross-pass edges
|
|
43
|
+
* @see ./slice-topology-types.ts — DecompositionResultV2, PassResult, etc.
|
|
44
|
+
*/
|
|
45
|
+
import { decomposeSlices } from './slice-decompose-service.js';
|
|
46
|
+
import { resetArbitratorBudget } from './llm-arbitrator.js';
|
|
47
|
+
import { shouldSubdivide } from './granularity-decider.js';
|
|
48
|
+
import { merge } from './cross-pass-edge-merger.js';
|
|
49
|
+
/**
|
|
50
|
+
* Run the multi-pass decomposition algorithm and return a v2 result.
|
|
51
|
+
*
|
|
52
|
+
* 1. Reset the LLM arbitrator budget for this invocation.
|
|
53
|
+
* 2. Run Pass 1 (service-level) if granularity includes 'service'.
|
|
54
|
+
* 3. Run Pass 2 (file-level) — for every qualifying parent in 'both'/'auto',
|
|
55
|
+
* or once on the full scope in 'file'-only mode.
|
|
56
|
+
* 4. Compute cross-pass edges via `merge` whenever there are ≥2 passes
|
|
57
|
+
* (static detection runs unconditionally; LLM fallback only when an
|
|
58
|
+
* llmRunner is supplied).
|
|
59
|
+
* 5. Return a `DecompositionResultV2` with `partial: false`.
|
|
60
|
+
*/
|
|
61
|
+
export async function decompose(rid, prdMarkdown, projectRoot, opts = {}) {
|
|
62
|
+
resetArbitratorBudget();
|
|
63
|
+
const granularity = opts.granularity ?? 'both';
|
|
64
|
+
const wantService = granularity === 'service' || granularity === 'both' || granularity === 'auto';
|
|
65
|
+
const wantFile = granularity === 'file' || granularity === 'both' || granularity === 'auto';
|
|
66
|
+
const passes = [];
|
|
67
|
+
let codegraph = zeroCodegraph();
|
|
68
|
+
let understandAnything = zeroUnderstand();
|
|
69
|
+
let pass1WorkUnits = [];
|
|
70
|
+
if (wantService) {
|
|
71
|
+
const result1 = await decomposeSlices(rid, prdMarkdown, projectRoot, opts);
|
|
72
|
+
pass1WorkUnits = result1.workUnits;
|
|
73
|
+
passes.push({
|
|
74
|
+
passNumber: 1,
|
|
75
|
+
granularity: 'service',
|
|
76
|
+
slices: result1.workUnits.map((wu) => workUnitToSliceV2(wu, 'service')),
|
|
77
|
+
internalEdges: v1EdgesToV2(result1.dependencyDAG.edges)
|
|
78
|
+
});
|
|
79
|
+
codegraph = result1.codegraph;
|
|
80
|
+
understandAnything = result1.understandAnything;
|
|
81
|
+
}
|
|
82
|
+
if (wantFile) {
|
|
83
|
+
if (pass1WorkUnits.length > 0) {
|
|
84
|
+
// Per-parent subdivision. In 'auto' mode, only parents where
|
|
85
|
+
// shouldSubdivide is not explicitly false qualify.
|
|
86
|
+
const qualifyingParents = granularity === 'auto'
|
|
87
|
+
? pass1WorkUnits.filter((wu) => shouldSubdivide(wu).subdivide !== false)
|
|
88
|
+
: pass1WorkUnits;
|
|
89
|
+
const pass2Results = await Promise.all(qualifyingParents.map(async (parent) => {
|
|
90
|
+
const result = await decomposeSlices(rid, prdMarkdown, projectRoot, opts);
|
|
91
|
+
const filtered = filterWorkUnitsByScope(result.workUnits, parent.files);
|
|
92
|
+
const pass2Slices = filtered.map((wu, i) => workUnitToSliceV2(wu, 'file', {
|
|
93
|
+
id: `${parent.id}.${i + 1}`,
|
|
94
|
+
parentSliceId: parent.id
|
|
95
|
+
}));
|
|
96
|
+
const pass2 = {
|
|
97
|
+
passNumber: 2,
|
|
98
|
+
granularity: 'file',
|
|
99
|
+
slices: pass2Slices,
|
|
100
|
+
internalEdges: v1EdgesToV2(result.dependencyDAG.edges)
|
|
101
|
+
};
|
|
102
|
+
return pass2;
|
|
103
|
+
}));
|
|
104
|
+
passes.push(...pass2Results);
|
|
105
|
+
}
|
|
106
|
+
else if (!wantService) {
|
|
107
|
+
// file-only mode: call decomposeSlices once on the full scope and
|
|
108
|
+
// treat the result as Pass 2 (no parent subdivision).
|
|
109
|
+
const result = await decomposeSlices(rid, prdMarkdown, projectRoot, opts);
|
|
110
|
+
const slices = result.workUnits.map((wu) => workUnitToSliceV2(wu, 'file'));
|
|
111
|
+
passes.push({
|
|
112
|
+
passNumber: 2,
|
|
113
|
+
granularity: 'file',
|
|
114
|
+
slices,
|
|
115
|
+
internalEdges: v1EdgesToV2(result.dependencyDAG.edges)
|
|
116
|
+
});
|
|
117
|
+
codegraph = result.codegraph;
|
|
118
|
+
understandAnything = result.understandAnything;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
let crossPassEdges = [];
|
|
122
|
+
let llmArbitrations = [];
|
|
123
|
+
if (passes.length > 1) {
|
|
124
|
+
const mergeResult = await merge(passes, {
|
|
125
|
+
projectRoot,
|
|
126
|
+
...(opts.llmRunner ? { llmRunner: opts.llmRunner } : {})
|
|
127
|
+
});
|
|
128
|
+
crossPassEdges = mergeResult.edges;
|
|
129
|
+
llmArbitrations = mergeResult.llmCalls.map(toLlmArbitration);
|
|
130
|
+
}
|
|
131
|
+
return {
|
|
132
|
+
schemaVersion: 'v2',
|
|
133
|
+
rid,
|
|
134
|
+
generatedAt: new Date().toISOString(),
|
|
135
|
+
passes,
|
|
136
|
+
crossPassEdges,
|
|
137
|
+
llmArbitrations,
|
|
138
|
+
codegraph,
|
|
139
|
+
understandAnything,
|
|
140
|
+
partial: false
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
// ---------------------------------------------------------------------------
|
|
144
|
+
// Helpers
|
|
145
|
+
// ---------------------------------------------------------------------------
|
|
146
|
+
/**
|
|
147
|
+
* Convert a v1 `WorkUnit` into a v2 `SliceV2`. The `granularity` is supplied
|
|
148
|
+
* by the caller (per-pass) so it matches the pass's `PassResult.granularity`.
|
|
149
|
+
* `id` and `parentSliceId` default to the workUnit's own id and null
|
|
150
|
+
* (i.e. a Pass 1 slice). For Pass 2 children, the orchestrator supplies
|
|
151
|
+
* `${parent.id}.${i + 1}` as the new id and the parent's id as parent.
|
|
152
|
+
*/
|
|
153
|
+
function workUnitToSliceV2(wu, granularity, overrides = {}) {
|
|
154
|
+
return {
|
|
155
|
+
id: overrides.id ?? wu.id,
|
|
156
|
+
label: wu.label,
|
|
157
|
+
granularity,
|
|
158
|
+
files: wu.files,
|
|
159
|
+
loc: wu.loc,
|
|
160
|
+
parentSliceId: overrides.parentSliceId ?? null,
|
|
161
|
+
semanticAnchor: `file:${wu.filePath}`
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Keep only workUnits that touch at least one file in the parent's scope.
|
|
166
|
+
* Used to scope Pass 2 results to their parent slice's file set, since the
|
|
167
|
+
* 6-stage algorithm does not accept a `scopeFilter` option.
|
|
168
|
+
*/
|
|
169
|
+
function filterWorkUnitsByScope(wus, scope) {
|
|
170
|
+
const scopeSet = new Set(scope);
|
|
171
|
+
return wus.filter((wu) => wu.files.some((f) => scopeSet.has(f)));
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Map a v1 `DependencyEdge[]` (from the 6-stage algorithm's `dependencyDAG`)
|
|
175
|
+
* to v2 `InternalEdge[]`. The two kinds unions are identical
|
|
176
|
+
* (`'imports' | 'calls' | 'depends_on' | 'contains_flow' | 'flow_step'`), so
|
|
177
|
+
* `kind` is a direct pass-through. `confidence` collapses `isSemantic`
|
|
178
|
+
* (`true` → `'semantic'`, `false` → `'structural'`) to match the v2
|
|
179
|
+
* `EdgeConfidence` union.
|
|
180
|
+
*/
|
|
181
|
+
function v1EdgesToV2(v1Edges) {
|
|
182
|
+
return v1Edges.map((e) => ({
|
|
183
|
+
from: e.from,
|
|
184
|
+
to: e.to,
|
|
185
|
+
kind: e.kind,
|
|
186
|
+
weight: e.weight,
|
|
187
|
+
evidence: e.evidence,
|
|
188
|
+
confidence: e.isSemantic ? 'semantic' : 'structural'
|
|
189
|
+
}));
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Pure shape pass-through from `MergeResult.llmCalls` to v2 `LlmArbitration`.
|
|
193
|
+
* The merger now populates `promptHash`/`input`/`output`/`confidence` itself;
|
|
194
|
+
* we just coalesce a possible `null` `tokens` to a zeroed pair to satisfy
|
|
195
|
+
* the non-nullable `LlmArbitration.tokens` contract.
|
|
196
|
+
*/
|
|
197
|
+
function toLlmArbitration(c) {
|
|
198
|
+
return {
|
|
199
|
+
callId: c.callId,
|
|
200
|
+
promptHash: c.promptHash,
|
|
201
|
+
input: c.input,
|
|
202
|
+
output: c.output,
|
|
203
|
+
confidence: c.confidence,
|
|
204
|
+
tokens: c.tokens ?? { input: 0, output: 0 }
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
function zeroCodegraph() {
|
|
208
|
+
return {
|
|
209
|
+
nodes: 0,
|
|
210
|
+
edges: 0,
|
|
211
|
+
dbMB: 0,
|
|
212
|
+
freshness: 'unindexed',
|
|
213
|
+
affectedCrossFile: false,
|
|
214
|
+
note: 'no decomposition run'
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
function zeroUnderstand() {
|
|
218
|
+
return {
|
|
219
|
+
kgNodes: 0,
|
|
220
|
+
kgEdges: 0,
|
|
221
|
+
available: false,
|
|
222
|
+
fallback: 'structural-only',
|
|
223
|
+
note: 'no decomposition run'
|
|
224
|
+
};
|
|
225
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SchemaRouter — dual-read JSON router for `DecompositionResult` (v1/v2).
|
|
3
|
+
*
|
|
4
|
+
* v1 files (legacy, pre-Wave-1 slice decompose output) do NOT carry a
|
|
5
|
+
* `schemaVersion` field; v2 files always carry `schemaVersion: 'v2'`.
|
|
6
|
+
* The router reads the file, dispatches on the discriminator, and returns
|
|
7
|
+
* the parsed object typed as `DecompositionResult` or `DecompositionResultV2`.
|
|
8
|
+
*
|
|
9
|
+
* Why a router (and not a parse-on-write migration):
|
|
10
|
+
* - v1 files may exist in user workspaces long after v2 ships; rewriting
|
|
11
|
+
* them on read would force a write-back side-effect that callers don't
|
|
12
|
+
* need (and breaks `peaks slice pick` which only needs the v1 fields).
|
|
13
|
+
* - The discriminated return type lets callers narrow once at the boundary
|
|
14
|
+
* (`schemaVersion === 'v2' ? handleV2(r) : handleV1(r)`) and stay typed
|
|
15
|
+
* downstream.
|
|
16
|
+
*
|
|
17
|
+
* Unknown versions throw `UnknownSchemaVersionError` so callers can
|
|
18
|
+
* surface a clear migration hint instead of silently treating v3 as v1.
|
|
19
|
+
*/
|
|
20
|
+
import type { DecompositionResult } from './slice-decompose-types.js';
|
|
21
|
+
import type { DecompositionResultV2 } from './slice-topology-types.js';
|
|
22
|
+
/**
|
|
23
|
+
* Thrown by `readResult` when the JSON carries a `schemaVersion` value
|
|
24
|
+
* that is neither absent (v1) nor `'v2'`. The `code` is the stable
|
|
25
|
+
* machine-readable discriminator; downstream CLI surfaces should map it
|
|
26
|
+
* to the appropriate exit code.
|
|
27
|
+
*/
|
|
28
|
+
export declare class UnknownSchemaVersionError extends Error {
|
|
29
|
+
readonly code: "UNKNOWN_SCHEMA_VERSION";
|
|
30
|
+
constructor(message: string);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Read a decomposition-result JSON file and return it typed as either
|
|
34
|
+
* `DecompositionResult` (v1, no `schemaVersion` field) or
|
|
35
|
+
* `DecompositionResultV2` (`schemaVersion: 'v2'`).
|
|
36
|
+
*
|
|
37
|
+
* Throws `UnknownSchemaVersionError` for any other `schemaVersion` value.
|
|
38
|
+
*/
|
|
39
|
+
export declare function readResult(filePath: string): DecompositionResult | DecompositionResultV2;
|
|
40
|
+
/**
|
|
41
|
+
* Serialize a v1 or v2 decomposition result to disk as pretty-printed JSON.
|
|
42
|
+
* The `schemaVersion` field (or its absence) is preserved as-is.
|
|
43
|
+
*/
|
|
44
|
+
export declare function writeResult(filePath: string, result: DecompositionResult | DecompositionResultV2): void;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SchemaRouter — dual-read JSON router for `DecompositionResult` (v1/v2).
|
|
3
|
+
*
|
|
4
|
+
* v1 files (legacy, pre-Wave-1 slice decompose output) do NOT carry a
|
|
5
|
+
* `schemaVersion` field; v2 files always carry `schemaVersion: 'v2'`.
|
|
6
|
+
* The router reads the file, dispatches on the discriminator, and returns
|
|
7
|
+
* the parsed object typed as `DecompositionResult` or `DecompositionResultV2`.
|
|
8
|
+
*
|
|
9
|
+
* Why a router (and not a parse-on-write migration):
|
|
10
|
+
* - v1 files may exist in user workspaces long after v2 ships; rewriting
|
|
11
|
+
* them on read would force a write-back side-effect that callers don't
|
|
12
|
+
* need (and breaks `peaks slice pick` which only needs the v1 fields).
|
|
13
|
+
* - The discriminated return type lets callers narrow once at the boundary
|
|
14
|
+
* (`schemaVersion === 'v2' ? handleV2(r) : handleV1(r)`) and stay typed
|
|
15
|
+
* downstream.
|
|
16
|
+
*
|
|
17
|
+
* Unknown versions throw `UnknownSchemaVersionError` so callers can
|
|
18
|
+
* surface a clear migration hint instead of silently treating v3 as v1.
|
|
19
|
+
*/
|
|
20
|
+
import { readFileSync, writeFileSync } from 'node:fs';
|
|
21
|
+
/**
|
|
22
|
+
* Thrown by `readResult` when the JSON carries a `schemaVersion` value
|
|
23
|
+
* that is neither absent (v1) nor `'v2'`. The `code` is the stable
|
|
24
|
+
* machine-readable discriminator; downstream CLI surfaces should map it
|
|
25
|
+
* to the appropriate exit code.
|
|
26
|
+
*/
|
|
27
|
+
export class UnknownSchemaVersionError extends Error {
|
|
28
|
+
code = 'UNKNOWN_SCHEMA_VERSION';
|
|
29
|
+
constructor(message) {
|
|
30
|
+
super(message);
|
|
31
|
+
this.name = 'UnknownSchemaVersionError';
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Read a decomposition-result JSON file and return it typed as either
|
|
36
|
+
* `DecompositionResult` (v1, no `schemaVersion` field) or
|
|
37
|
+
* `DecompositionResultV2` (`schemaVersion: 'v2'`).
|
|
38
|
+
*
|
|
39
|
+
* Throws `UnknownSchemaVersionError` for any other `schemaVersion` value.
|
|
40
|
+
*/
|
|
41
|
+
export function readResult(filePath) {
|
|
42
|
+
const parsed = JSON.parse(readFileSync(filePath, 'utf8'));
|
|
43
|
+
if (typeof parsed !== 'object' || parsed === null) {
|
|
44
|
+
throw new UnknownSchemaVersionError(`Unknown schemaVersion: ${String(parsed)}. Supported: v1 (no field), v2.`);
|
|
45
|
+
}
|
|
46
|
+
const schemaVersion = parsed.schemaVersion;
|
|
47
|
+
if (schemaVersion === 'v2') {
|
|
48
|
+
return parsed;
|
|
49
|
+
}
|
|
50
|
+
if (schemaVersion === undefined) {
|
|
51
|
+
return parsed;
|
|
52
|
+
}
|
|
53
|
+
throw new UnknownSchemaVersionError(`Unknown schemaVersion: ${String(schemaVersion)}. Supported: v1 (no field), v2.`);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Serialize a v1 or v2 decomposition result to disk as pretty-printed JSON.
|
|
57
|
+
* The `schemaVersion` field (or its absence) is preserved as-is.
|
|
58
|
+
*/
|
|
59
|
+
export function writeResult(filePath, result) {
|
|
60
|
+
writeFileSync(filePath, JSON.stringify(result, null, 2), 'utf8');
|
|
61
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export declare const ARCHIVE_RETENTION_MS: number;
|
|
2
|
+
export interface ArchiveResult {
|
|
3
|
+
readonly archivedCompleted: number;
|
|
4
|
+
readonly archivedInFlight: number;
|
|
5
|
+
readonly gcDeleted: number;
|
|
6
|
+
}
|
|
7
|
+
/** Build the canonical archive dir for a given session + slice id. */
|
|
8
|
+
export declare function archiveDir(projectRoot: string, sessionId: string, sliceId: string): string;
|
|
9
|
+
/** Build the in-flight subdir (records not yet disposed). */
|
|
10
|
+
export declare function inFlightArchiveDir(projectRoot: string, sessionId: string, sliceId: string): string;
|
|
11
|
+
/**
|
|
12
|
+
* Archive the current `.peaks/_sub_agents/<sid>/` tree under
|
|
13
|
+
* `<archiveDir>` (per the sliceId), separating completed vs in-flight.
|
|
14
|
+
* Then run the 30-day GC over the archive dir.
|
|
15
|
+
*/
|
|
16
|
+
export declare function archiveSubAgentRecords(projectRoot: string, options: {
|
|
17
|
+
sessionId: string;
|
|
18
|
+
sliceId: string;
|
|
19
|
+
now?: () => Date;
|
|
20
|
+
}): ArchiveResult;
|