peaks-loop 4.0.0-beta.8 → 4.0.0-beta.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +45 -0
- package/bin/peaks.js +1 -1
- package/dist/cli/cli-helpers.d.ts +43 -0
- package/dist/cli/cli-helpers.js +86 -0
- package/dist/cli/commands/_cli-error-envelope.d.ts +19 -0
- package/dist/cli/commands/_cli-error-envelope.js +50 -0
- package/dist/cli/commands/adapter-commands-s2a.d.ts +34 -0
- package/dist/cli/commands/adapter-commands-s2a.js +92 -0
- package/dist/cli/commands/adapter-commands.d.ts +30 -0
- package/dist/cli/commands/adapter-commands.js +35 -0
- package/dist/cli/commands/agent-commands.d.ts +20 -0
- package/dist/cli/commands/agent-commands.js +48 -0
- package/dist/cli/commands/asset-commands.d.ts +45 -0
- package/dist/cli/commands/asset-commands.js +404 -0
- package/dist/cli/commands/audit-commands.d.ts +28 -0
- package/dist/cli/commands/audit-commands.js +437 -0
- package/dist/cli/commands/bee-commands.d.ts +26 -0
- package/dist/cli/commands/bee-commands.js +169 -0
- package/dist/cli/commands/capability-commands.d.ts +16 -0
- package/dist/cli/commands/capability-commands.js +45 -0
- package/dist/cli/commands/capability-worker-config-sc-commands.d.ts +3 -0
- package/dist/cli/commands/capability-worker-config-sc-commands.js +10 -0
- package/dist/cli/commands/classify-classify-commands.d.ts +19 -0
- package/dist/cli/commands/classify-classify-commands.js +151 -0
- package/dist/cli/commands/code-commands.d.ts +80 -0
- package/dist/cli/commands/code-commands.js +798 -0
- package/dist/cli/commands/code-review-commands.d.ts +34 -0
- package/dist/cli/commands/code-review-commands.js +83 -0
- package/dist/cli/commands/codegraph-commands.d.ts +3 -0
- package/dist/cli/commands/codegraph-commands.js +99 -0
- package/dist/cli/commands/compact-command.d.ts +21 -0
- package/dist/cli/commands/compact-command.js +252 -0
- package/dist/cli/commands/complexity-commands.d.ts +9 -0
- package/dist/cli/commands/complexity-commands.js +34 -0
- package/dist/cli/commands/config-commands.d.ts +3 -0
- package/dist/cli/commands/config-commands.js +220 -0
- package/dist/cli/commands/context-builder-commands.d.ts +11 -0
- package/dist/cli/commands/context-builder-commands.js +85 -0
- package/dist/cli/commands/context-commands.d.ts +21 -0
- package/dist/cli/commands/context-commands.js +254 -0
- package/dist/cli/commands/contract-commands.d.ts +26 -0
- package/dist/cli/commands/contract-commands.js +114 -0
- package/dist/cli/commands/core/artifacts-command.d.ts +3 -0
- package/dist/cli/commands/core/artifacts-command.js +62 -0
- package/dist/cli/commands/core/binding-commands.d.ts +3 -0
- package/dist/cli/commands/core/binding-commands.js +58 -0
- package/dist/cli/commands/core/doctor-command.d.ts +11 -0
- package/dist/cli/commands/core/doctor-command.js +204 -0
- package/dist/cli/commands/core/memory-command.d.ts +3 -0
- package/dist/cli/commands/core/memory-command.js +98 -0
- package/dist/cli/commands/core/profile-command.d.ts +3 -0
- package/dist/cli/commands/core/profile-command.js +9 -0
- package/dist/cli/commands/core/proxy-command.d.ts +3 -0
- package/dist/cli/commands/core/proxy-command.js +26 -0
- package/dist/cli/commands/core/session-command.d.ts +3 -0
- package/dist/cli/commands/core/session-command.js +241 -0
- package/dist/cli/commands/core/skill-command.d.ts +3 -0
- package/dist/cli/commands/core/skill-command.js +300 -0
- package/dist/cli/commands/core/standards-command.d.ts +3 -0
- package/dist/cli/commands/core/standards-command.js +95 -0
- package/dist/cli/commands/core-artifact-commands.d.ts +15 -0
- package/dist/cli/commands/core-artifact-commands.js +31 -0
- package/dist/cli/commands/dispatch-commands.d.ts +10 -0
- package/dist/cli/commands/dispatch-commands.js +351 -0
- package/dist/cli/commands/dispatch-from-dag.d.ts +3 -0
- package/dist/cli/commands/dispatch-from-dag.js +251 -0
- package/dist/cli/commands/doc-commands.d.ts +11 -0
- package/dist/cli/commands/doc-commands.js +65 -0
- package/dist/cli/commands/evolution-commands.d.ts +27 -0
- package/dist/cli/commands/evolution-commands.js +393 -0
- package/dist/cli/commands/feedback-commands.d.ts +18 -0
- package/dist/cli/commands/feedback-commands.js +145 -0
- package/dist/cli/commands/final-review-commands.d.ts +31 -0
- package/dist/cli/commands/final-review-commands.js +161 -0
- package/dist/cli/commands/fixture-commands.d.ts +32 -0
- package/dist/cli/commands/fixture-commands.js +91 -0
- package/dist/cli/commands/fork-commands.d.ts +16 -0
- package/dist/cli/commands/fork-commands.js +163 -0
- package/dist/cli/commands/gate-commands.d.ts +3 -0
- package/dist/cli/commands/gate-commands.js +117 -0
- package/dist/cli/commands/heartbeat-commands.d.ts +3 -0
- package/dist/cli/commands/heartbeat-commands.js +135 -0
- package/dist/cli/commands/hook-handle.d.ts +17 -0
- package/dist/cli/commands/hook-handle.js +157 -0
- package/dist/cli/commands/hooks-commands.d.ts +3 -0
- package/dist/cli/commands/hooks-commands.js +156 -0
- package/dist/cli/commands/ide-commands.d.ts +25 -0
- package/dist/cli/commands/ide-commands.js +42 -0
- package/dist/cli/commands/impact-commands.d.ts +15 -0
- package/dist/cli/commands/impact-commands.js +62 -0
- package/dist/cli/commands/job-commands.d.ts +3 -0
- package/dist/cli/commands/job-commands.js +289 -0
- package/dist/cli/commands/legacy-commands.d.ts +11 -0
- package/dist/cli/commands/legacy-commands.js +32 -0
- package/dist/cli/commands/log-commands.d.ts +17 -0
- package/dist/cli/commands/log-commands.js +64 -0
- package/dist/cli/commands/loop-commands.d.ts +27 -0
- package/dist/cli/commands/loop-commands.js +262 -0
- package/dist/cli/commands/loop-eval-commands.d.ts +20 -0
- package/dist/cli/commands/loop-eval-commands.js +526 -0
- package/dist/cli/commands/memory-commands.d.ts +23 -0
- package/dist/cli/commands/memory-commands.js +129 -0
- package/dist/cli/commands/migrate-1-4-1-command.d.ts +11 -0
- package/dist/cli/commands/migrate-1-4-1-command.js +34 -0
- package/dist/cli/commands/migrate-v2-10-to-v2-11-command.d.ts +20 -0
- package/dist/cli/commands/migrate-v2-10-to-v2-11-command.js +52 -0
- package/dist/cli/commands/mut-commands.d.ts +20 -0
- package/dist/cli/commands/mut-commands.js +239 -0
- package/dist/cli/commands/observability-commands.d.ts +22 -0
- package/dist/cli/commands/observability-commands.js +201 -0
- package/dist/cli/commands/openspec-commands.d.ts +3 -0
- package/dist/cli/commands/openspec-commands.js +237 -0
- package/dist/cli/commands/perf-audit-commands.d.ts +22 -0
- package/dist/cli/commands/perf-audit-commands.js +132 -0
- package/dist/cli/commands/perf-commands.d.ts +3 -0
- package/dist/cli/commands/perf-commands.js +41 -0
- package/dist/cli/commands/playwright-commands.d.ts +95 -0
- package/dist/cli/commands/playwright-commands.js +432 -0
- package/dist/cli/commands/polyrepo-commands.d.ts +37 -0
- package/dist/cli/commands/polyrepo-commands.js +155 -0
- package/dist/cli/commands/prd-blocks-commands.d.ts +18 -0
- package/dist/cli/commands/prd-blocks-commands.js +50 -0
- package/dist/cli/commands/prd-commands.d.ts +18 -0
- package/dist/cli/commands/prd-commands.js +141 -0
- package/dist/cli/commands/preferences-commands.d.ts +2 -0
- package/dist/cli/commands/preferences-commands.js +197 -0
- package/dist/cli/commands/project-commands.d.ts +3 -0
- package/dist/cli/commands/project-commands.js +253 -0
- package/dist/cli/commands/qa-business-review-commands.d.ts +17 -0
- package/dist/cli/commands/qa-business-review-commands.js +148 -0
- package/dist/cli/commands/qa-commands.d.ts +94 -0
- package/dist/cli/commands/qa-commands.js +271 -0
- package/dist/cli/commands/release-commands.d.ts +24 -0
- package/dist/cli/commands/release-commands.js +231 -0
- package/dist/cli/commands/request-commands.d.ts +3 -0
- package/dist/cli/commands/request-commands.js +548 -0
- package/dist/cli/commands/retrospective-commands.d.ts +12 -0
- package/dist/cli/commands/retrospective-commands.js +175 -0
- package/dist/cli/commands/reviewer-commands.d.ts +14 -0
- package/dist/cli/commands/reviewer-commands.js +64 -0
- package/dist/cli/commands/role-commands.d.ts +13 -0
- package/dist/cli/commands/role-commands.js +85 -0
- package/dist/cli/commands/runtime-commands.d.ts +52 -0
- package/dist/cli/commands/runtime-commands.js +150 -0
- package/dist/cli/commands/sc-commands.d.ts +3 -0
- package/dist/cli/commands/sc-commands.js +45 -0
- package/dist/cli/commands/scan-commands.d.ts +3 -0
- package/dist/cli/commands/scan-commands.js +445 -0
- package/dist/cli/commands/security-audit-commands.d.ts +23 -0
- package/dist/cli/commands/security-audit-commands.js +132 -0
- package/dist/cli/commands/sediment-commands.d.ts +80 -0
- package/dist/cli/commands/sediment-commands.js +649 -0
- package/dist/cli/commands/session-auto-compact-hook-command.d.ts +37 -0
- package/dist/cli/commands/session-auto-compact-hook-command.js +127 -0
- package/dist/cli/commands/session-checkpoint-command.d.ts +10 -0
- package/dist/cli/commands/session-checkpoint-command.js +100 -0
- package/dist/cli/commands/session-migrate-skill-name.d.ts +17 -0
- package/dist/cli/commands/session-migrate-skill-name.js +41 -0
- package/dist/cli/commands/session-resume-command.d.ts +11 -0
- package/dist/cli/commands/session-resume-command.js +83 -0
- package/dist/cli/commands/share-commands.d.ts +17 -0
- package/dist/cli/commands/share-commands.js +296 -0
- package/dist/cli/commands/skill-conformance-commands.d.ts +9 -0
- package/dist/cli/commands/skill-conformance-commands.js +39 -0
- package/dist/cli/commands/skill-loop-engineering-readiness-commands.d.ts +67 -0
- package/dist/cli/commands/skill-loop-engineering-readiness-commands.js +173 -0
- package/dist/cli/commands/skill-search-commands.d.ts +25 -0
- package/dist/cli/commands/skill-search-commands.js +68 -0
- package/dist/cli/commands/skill-visibility.d.ts +8 -0
- package/dist/cli/commands/skill-visibility.js +63 -0
- package/dist/cli/commands/slice-commands.d.ts +24 -0
- package/dist/cli/commands/slice-commands.js +492 -0
- package/dist/cli/commands/slice-integrate-commands.d.ts +11 -0
- package/dist/cli/commands/slice-integrate-commands.js +74 -0
- package/dist/cli/commands/slice-review-commands.d.ts +23 -0
- package/dist/cli/commands/slice-review-commands.js +162 -0
- package/dist/cli/commands/smoke-commands.d.ts +21 -0
- package/dist/cli/commands/smoke-commands.js +203 -0
- package/dist/cli/commands/sop-commands.d.ts +3 -0
- package/dist/cli/commands/sop-commands.js +215 -0
- package/dist/cli/commands/statusline-commands.d.ts +3 -0
- package/dist/cli/commands/statusline-commands.js +169 -0
- package/dist/cli/commands/sub-agent-commands.d.ts +22 -0
- package/dist/cli/commands/sub-agent-commands.js +19 -0
- package/dist/cli/commands/sub-agent-dispatch-guard.d.ts +55 -0
- package/dist/cli/commands/sub-agent-dispatch-guard.js +57 -0
- package/dist/cli/commands/sub-agent-shared.d.ts +99 -0
- package/dist/cli/commands/sub-agent-shared.js +67 -0
- package/dist/cli/commands/test-commands.d.ts +47 -0
- package/dist/cli/commands/test-commands.js +204 -0
- package/dist/cli/commands/understand-commands.d.ts +3 -0
- package/dist/cli/commands/understand-commands.js +148 -0
- package/dist/cli/commands/upgrade-commands.d.ts +23 -0
- package/dist/cli/commands/upgrade-commands.js +119 -0
- package/dist/cli/commands/user-touchpoint-commands.d.ts +18 -0
- package/dist/cli/commands/user-touchpoint-commands.js +78 -0
- package/dist/cli/commands/verdict-aggregate-command.d.ts +14 -0
- package/dist/cli/commands/verdict-aggregate-command.js +106 -0
- package/dist/cli/commands/worker-commands.d.ts +3 -0
- package/dist/cli/commands/worker-commands.js +52 -0
- package/dist/cli/commands/workflow-commands.d.ts +3 -0
- package/dist/cli/commands/workflow-commands.js +544 -0
- package/dist/cli/commands/workflow-plan-commands.d.ts +39 -0
- package/dist/cli/commands/workflow-plan-commands.js +163 -0
- package/dist/cli/commands/workspace/clean-command.d.ts +14 -0
- package/dist/cli/commands/workspace/clean-command.js +49 -0
- package/dist/cli/commands/workspace/helpers.d.ts +28 -0
- package/dist/cli/commands/workspace/helpers.js +87 -0
- package/dist/cli/commands/workspace/init-command.d.ts +139 -0
- package/dist/cli/commands/workspace/init-command.js +505 -0
- package/dist/cli/commands/workspace/migrate-command.d.ts +11 -0
- package/dist/cli/commands/workspace/migrate-command.js +91 -0
- package/dist/cli/commands/workspace/reconcile-command.d.ts +14 -0
- package/dist/cli/commands/workspace/reconcile-command.js +103 -0
- package/dist/cli/commands/workspace-commands.d.ts +18 -0
- package/dist/cli/commands/workspace-commands.js +50 -0
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/index.js +30 -0
- package/dist/cli/program.d.ts +5 -0
- package/dist/cli/program.js +408 -0
- package/dist/hooks/pre-tool-use-sub-agent.d.ts +28 -0
- package/dist/hooks/pre-tool-use-sub-agent.js +105 -0
- package/dist/lib/render/message-renderer.d.ts +20 -0
- package/dist/lib/render/message-renderer.js +80 -0
- package/dist/services/adapter/adapter-registry.d.ts +48 -0
- package/dist/services/adapter/adapter-registry.js +186 -0
- package/dist/services/adapter/adapter.d.ts +27 -0
- package/dist/services/adapter/adapter.js +5 -0
- package/dist/services/adapter/auto-adapter.d.ts +11 -0
- package/dist/services/adapter/auto-adapter.js +15 -0
- package/dist/services/adapter/claude-adapter.d.ts +14 -0
- package/dist/services/adapter/claude-adapter.js +40 -0
- package/dist/services/adapter/codex-adapter.d.ts +14 -0
- package/dist/services/adapter/codex-adapter.js +14 -0
- package/dist/services/adapter/copilot-adapter.d.ts +14 -0
- package/dist/services/adapter/copilot-adapter.js +14 -0
- package/dist/services/agent/ecc-agent-service.d.ts +47 -0
- package/dist/services/agent/ecc-agent-service.js +143 -0
- package/dist/services/artifacts/artifact-lint-service.d.ts +23 -0
- package/dist/services/artifacts/artifact-lint-service.js +99 -0
- package/dist/services/artifacts/artifact-prerequisites.d.ts +78 -0
- package/dist/services/artifacts/artifact-prerequisites.js +491 -0
- package/dist/services/artifacts/artifact-service.d.ts +43 -0
- package/dist/services/artifacts/artifact-service.js +98 -0
- package/dist/services/artifacts/artifact-templates.d.ts +30 -0
- package/dist/services/artifacts/artifact-templates.js +302 -0
- package/dist/services/artifacts/repair-cycle-service.d.ts +23 -0
- package/dist/services/artifacts/repair-cycle-service.js +52 -0
- package/dist/services/artifacts/request-artifact-service.d.ts +116 -0
- package/dist/services/artifacts/request-artifact-service.js +451 -0
- package/dist/services/artifacts/request-artifact-state-helpers.d.ts +51 -0
- package/dist/services/artifacts/request-artifact-state-helpers.js +114 -0
- package/dist/services/artifacts/workspace-service.d.ts +34 -0
- package/dist/services/artifacts/workspace-service.js +272 -0
- package/dist/services/audit/artifact-writer.d.ts +93 -0
- package/dist/services/audit/artifact-writer.js +303 -0
- package/dist/services/audit/audit-goal-service.d.ts +35 -0
- package/dist/services/audit/audit-goal-service.js +75 -0
- package/dist/services/audit/audit-goal-types.d.ts +40 -0
- package/dist/services/audit/audit-goal-types.js +15 -0
- package/dist/services/audit/backing-detector.d.ts +24 -0
- package/dist/services/audit/backing-detector.js +59 -0
- package/dist/services/audit/classifier.d.ts +38 -0
- package/dist/services/audit/classifier.js +134 -0
- package/dist/services/audit/decision-writer.d.ts +76 -0
- package/dist/services/audit/decision-writer.js +217 -0
- package/dist/services/audit/enforcers/active-skill-resolver.d.ts +29 -0
- package/dist/services/audit/enforcers/active-skill-resolver.js +71 -0
- package/dist/services/audit/enforcers/code-ban.d.ts +23 -0
- package/dist/services/audit/enforcers/code-ban.js +27 -0
- package/dist/services/audit/enforcers/design-draft-confirm.d.ts +24 -0
- package/dist/services/audit/enforcers/design-draft-confirm.js +58 -0
- package/dist/services/audit/enforcers/lint-audit-regression.d.ts +21 -0
- package/dist/services/audit/enforcers/lint-audit-regression.js +86 -0
- package/dist/services/audit/enforcers/lint-catalog-governance.d.ts +32 -0
- package/dist/services/audit/enforcers/lint-catalog-governance.js +48 -0
- package/dist/services/audit/enforcers/lint-cli-back.d.ts +16 -0
- package/dist/services/audit/enforcers/lint-cli-back.js +35 -0
- package/dist/services/audit/enforcers/lint-output-style.d.ts +11 -0
- package/dist/services/audit/enforcers/lint-output-style.js +94 -0
- package/dist/services/audit/enforcers/lint-reference-integrity.d.ts +6 -0
- package/dist/services/audit/enforcers/lint-reference-integrity.js +83 -0
- package/dist/services/audit/enforcers/lint-reference-shape.d.ts +30 -0
- package/dist/services/audit/enforcers/lint-reference-shape.js +272 -0
- package/dist/services/audit/enforcers/lint-style.d.ts +49 -0
- package/dist/services/audit/enforcers/lint-style.js +173 -0
- package/dist/services/audit/enforcers/lint-workflow-shape.d.ts +4 -0
- package/dist/services/audit/enforcers/lint-workflow-shape.js +100 -0
- package/dist/services/audit/enforcers/login-gate.d.ts +23 -0
- package/dist/services/audit/enforcers/login-gate.js +40 -0
- package/dist/services/audit/enforcers/mock-placement.d.ts +25 -0
- package/dist/services/audit/enforcers/mock-placement.js +48 -0
- package/dist/services/audit/enforcers/no-root-pollution.d.ts +21 -0
- package/dist/services/audit/enforcers/no-root-pollution.js +56 -0
- package/dist/services/audit/enforcers/pre-rd-scan.d.ts +22 -0
- package/dist/services/audit/enforcers/pre-rd-scan.js +23 -0
- package/dist/services/audit/enforcers/prototype-fidelity.d.ts +25 -0
- package/dist/services/audit/enforcers/prototype-fidelity.js +75 -0
- package/dist/services/audit/enforcers/resume-detection.d.ts +21 -0
- package/dist/services/audit/enforcers/resume-detection.js +52 -0
- package/dist/services/audit/enforcers/sub-agent-sid.d.ts +25 -0
- package/dist/services/audit/enforcers/sub-agent-sid.js +63 -0
- package/dist/services/audit/prose-ratio-calculator.d.ts +45 -0
- package/dist/services/audit/prose-ratio-calculator.js +52 -0
- package/dist/services/audit/red-line-catalog-p2-a.d.ts +21 -0
- package/dist/services/audit/red-line-catalog-p2-a.js +229 -0
- package/dist/services/audit/red-line-catalog-p2-b.d.ts +19 -0
- package/dist/services/audit/red-line-catalog-p2-b.js +225 -0
- package/dist/services/audit/red-line-catalog.d.ts +51 -0
- package/dist/services/audit/red-line-catalog.js +195 -0
- package/dist/services/audit/red-lines-service.d.ts +23 -0
- package/dist/services/audit/red-lines-service.js +464 -0
- package/dist/services/audit/scanners/openspec-scanner.d.ts +15 -0
- package/dist/services/audit/scanners/openspec-scanner.js +55 -0
- package/dist/services/audit/scanners/rules-tree-scanner.d.ts +16 -0
- package/dist/services/audit/scanners/rules-tree-scanner.js +56 -0
- package/dist/services/audit/scanners/skills-tree-scanner.d.ts +17 -0
- package/dist/services/audit/scanners/skills-tree-scanner.js +68 -0
- package/dist/services/audit/static-service.d.ts +60 -0
- package/dist/services/audit/static-service.js +130 -0
- package/dist/services/audit/types.d.ts +86 -0
- package/dist/services/audit/types.js +13 -0
- package/dist/services/audit-independent/perf-audit-service.d.ts +151 -0
- package/dist/services/audit-independent/perf-audit-service.js +316 -0
- package/dist/services/audit-independent/security-audit-service.d.ts +155 -0
- package/dist/services/audit-independent/security-audit-service.js +316 -0
- package/dist/services/classify/classify-service.d.ts +42 -0
- package/dist/services/classify/classify-service.js +122 -0
- package/dist/services/classify/classify-types.d.ts +79 -0
- package/dist/services/classify/classify-types.js +90 -0
- package/dist/services/code/auto-compact-orchestrator.d.ts +98 -0
- package/dist/services/code/auto-compact-orchestrator.js +343 -0
- package/dist/services/code/batch-heartbeat-poller.d.ts +51 -0
- package/dist/services/code/batch-heartbeat-poller.js +88 -0
- package/dist/services/code/dag-orchestrator.d.ts +128 -0
- package/dist/services/code/dag-orchestrator.js +304 -0
- package/dist/services/code/emit-handoff.d.ts +49 -0
- package/dist/services/code/emit-handoff.js +79 -0
- package/dist/services/code/job-shape-decision.d.ts +71 -0
- package/dist/services/code/job-shape-decision.js +151 -0
- package/dist/services/code/mode-gate.d.ts +163 -0
- package/dist/services/code/mode-gate.js +212 -0
- package/dist/services/code/post-compact-detector.d.ts +61 -0
- package/dist/services/code/post-compact-detector.js +240 -0
- package/dist/services/code/status-line-renderer.d.ts +34 -0
- package/dist/services/code/status-line-renderer.js +55 -0
- package/dist/services/code/step-08-gate.d.ts +90 -0
- package/dist/services/code/step-08-gate.js +136 -0
- package/dist/services/code/user-touchpoint-classifier.d.ts +44 -0
- package/dist/services/code/user-touchpoint-classifier.js +145 -0
- package/dist/services/code-review/ecc-bridge.d.ts +148 -0
- package/dist/services/code-review/ecc-bridge.js +242 -0
- package/dist/services/code-review/ocr-service.d.ts +129 -0
- package/dist/services/code-review/ocr-service.js +369 -0
- package/dist/services/codegraph/codegraph-process-runner.d.ts +2 -0
- package/dist/services/codegraph/codegraph-process-runner.js +93 -0
- package/dist/services/codegraph/codegraph-service.d.ts +43 -0
- package/dist/services/codegraph/codegraph-service.js +160 -0
- package/dist/services/compact/decision-tables.d.ts +66 -0
- package/dist/services/compact/decision-tables.js +127 -0
- package/dist/services/compact/request-transition-hook.d.ts +20 -0
- package/dist/services/compact/request-transition-hook.js +110 -0
- package/dist/services/compact/suggest-service.d.ts +74 -0
- package/dist/services/compact/suggest-service.js +203 -0
- package/dist/services/complexity/complexity-estimator.d.ts +34 -0
- package/dist/services/complexity/complexity-estimator.js +64 -0
- package/dist/services/config/config-migration.d.ts +45 -0
- package/dist/services/config/config-migration.js +154 -0
- package/dist/services/config/config-restore.d.ts +10 -0
- package/dist/services/config/config-restore.js +47 -0
- package/dist/services/config/config-rollback.d.ts +13 -0
- package/dist/services/config/config-rollback.js +26 -0
- package/dist/services/config/config-safety.d.ts +40 -0
- package/dist/services/config/config-safety.js +359 -0
- package/dist/services/config/config-service.d.ts +69 -0
- package/dist/services/config/config-service.js +814 -0
- package/dist/services/config/config-types.d.ts +119 -0
- package/dist/services/config/config-types.js +18 -0
- package/dist/services/config/model-routing.d.ts +66 -0
- package/dist/services/config/model-routing.js +105 -0
- package/dist/services/config/provider-service.d.ts +48 -0
- package/dist/services/config/provider-service.js +143 -0
- package/dist/services/config/proxy-service.d.ts +21 -0
- package/dist/services/config/proxy-service.js +44 -0
- package/dist/services/config/sidecar-store.d.ts +25 -0
- package/dist/services/config/sidecar-store.js +61 -0
- package/dist/services/config/workspace-state-service.d.ts +30 -0
- package/dist/services/config/workspace-state-service.js +142 -0
- package/dist/services/context/artifact-meta.d.ts +72 -0
- package/dist/services/context/artifact-meta.js +105 -0
- package/dist/services/context/auto-compact-dispatcher.d.ts +37 -0
- package/dist/services/context/auto-compact-dispatcher.js +240 -0
- package/dist/services/context/auto-compact-reader.d.ts +51 -0
- package/dist/services/context/auto-compact-reader.js +164 -0
- package/dist/services/context/auto-compact-types.d.ts +143 -0
- package/dist/services/context/auto-compact-types.js +36 -0
- package/dist/services/context/collector.d.ts +24 -0
- package/dist/services/context/collector.js +133 -0
- package/dist/services/context/context-builder.d.ts +30 -0
- package/dist/services/context/context-builder.js +78 -0
- package/dist/services/context/context-guard.d.ts +49 -0
- package/dist/services/context/context-guard.js +91 -0
- package/dist/services/context/context-schema.d.ts +415 -0
- package/dist/services/context/context-schema.js +73 -0
- package/dist/services/context/dispatch-context-guard.d.ts +27 -0
- package/dist/services/context/dispatch-context-guard.js +192 -0
- package/dist/services/context/doc-retriever.d.ts +26 -0
- package/dist/services/context/doc-retriever.js +51 -0
- package/dist/services/context/headroom-client.d.ts +34 -0
- package/dist/services/context/headroom-client.js +117 -0
- package/dist/services/context/headroom-fetcher.d.ts +6 -0
- package/dist/services/context/headroom-fetcher.js +28 -0
- package/dist/services/context/headroom-prefs.d.ts +46 -0
- package/dist/services/context/headroom-prefs.js +34 -0
- package/dist/services/context/index.d.ts +7 -0
- package/dist/services/context/index.js +6 -0
- package/dist/services/context/main-session-monitor.d.ts +89 -0
- package/dist/services/context/main-session-monitor.js +142 -0
- package/dist/services/context/renderer.d.ts +20 -0
- package/dist/services/context/renderer.js +30 -0
- package/dist/services/context/shared-channel.d.ts +93 -0
- package/dist/services/context/shared-channel.js +308 -0
- package/dist/services/context/threshold.d.ts +35 -0
- package/dist/services/context/threshold.js +76 -0
- package/dist/services/context/tokenizer.d.ts +12 -0
- package/dist/services/context/tokenizer.js +43 -0
- package/dist/services/context/types.d.ts +93 -0
- package/dist/services/context/types.js +9 -0
- package/dist/services/crystallization/crystallization-service.d.ts +239 -0
- package/dist/services/crystallization/crystallization-service.js +397 -0
- package/dist/services/crystallization/crystallization-store.d.ts +75 -0
- package/dist/services/crystallization/crystallization-store.js +193 -0
- package/dist/services/crystallization/crystallization-types.d.ts +313 -0
- package/dist/services/crystallization/crystallization-types.js +299 -0
- package/dist/services/crystallization/evidence-brief-builder.d.ts +237 -0
- package/dist/services/crystallization/evidence-brief-builder.js +240 -0
- package/dist/services/dashboard/project-dashboard-service.d.ts +91 -0
- package/dist/services/dashboard/project-dashboard-service.js +147 -0
- package/dist/services/dispatch/batch-counter.d.ts +27 -0
- package/dist/services/dispatch/batch-counter.js +102 -0
- package/dist/services/dispatch/contract-store.d.ts +63 -0
- package/dist/services/dispatch/contract-store.js +157 -0
- package/dist/services/dispatch/dispatch-record-writer.d.ts +138 -0
- package/dist/services/dispatch/dispatch-record-writer.js +460 -0
- package/dist/services/dispatch/heartbeat-truncator.d.ts +26 -0
- package/dist/services/dispatch/heartbeat-truncator.js +13 -0
- package/dist/services/dispatch/leak-detector.d.ts +11 -0
- package/dist/services/dispatch/leak-detector.js +72 -0
- package/dist/services/dispatch/slice-dag.d.ts +81 -0
- package/dist/services/dispatch/slice-dag.js +238 -0
- package/dist/services/dispatch/sub-agent-dispatcher.d.ts +239 -0
- package/dist/services/dispatch/sub-agent-dispatcher.js +382 -0
- package/dist/services/dispatch/test-tool-detection.d.ts +36 -0
- package/dist/services/dispatch/test-tool-detection.js +46 -0
- package/dist/services/doc/doc-generator.d.ts +38 -0
- package/dist/services/doc/doc-generator.js +122 -0
- package/dist/services/doctor/doctor-service.d.ts +149 -0
- package/dist/services/doctor/doctor-service.js +929 -0
- package/dist/services/evolution/evolution-service.d.ts +137 -0
- package/dist/services/evolution/evolution-service.js +281 -0
- package/dist/services/evolution/evolution-store.d.ts +57 -0
- package/dist/services/evolution/evolution-store.js +232 -0
- package/dist/services/evolution/evolution-types.d.ts +706 -0
- package/dist/services/evolution/evolution-types.js +286 -0
- package/dist/services/evolution/independent-evaluator-runner.d.ts +90 -0
- package/dist/services/evolution/independent-evaluator-runner.js +106 -0
- package/dist/services/evolution/regression-skeptic-runner.d.ts +64 -0
- package/dist/services/evolution/regression-skeptic-runner.js +113 -0
- package/dist/services/feedback/feedback-promotion-service.d.ts +123 -0
- package/dist/services/feedback/feedback-promotion-service.js +300 -0
- package/dist/services/filesystem/file-lock.d.ts +11 -0
- package/dist/services/filesystem/file-lock.js +152 -0
- package/dist/services/final-review/final-review-service.d.ts +12 -0
- package/dist/services/final-review/final-review-service.js +52 -0
- package/dist/services/final-review/final-review-types.d.ts +42 -0
- package/dist/services/final-review/final-review-types.js +18 -0
- package/dist/services/fixture/fixture-capture-service.d.ts +87 -0
- package/dist/services/fixture/fixture-capture-service.js +317 -0
- package/dist/services/fixture/fixture-sanitize-service.d.ts +117 -0
- package/dist/services/fixture/fixture-sanitize-service.js +161 -0
- package/dist/services/fixture/index.d.ts +8 -0
- package/dist/services/fixture/index.js +8 -0
- package/dist/services/fork/fork-sync-state.d.ts +85 -0
- package/dist/services/fork/fork-sync-state.js +130 -0
- package/dist/services/fuzzy-matching/fuzzy-match-service.d.ts +15 -0
- package/dist/services/fuzzy-matching/fuzzy-match-service.js +56 -0
- package/dist/services/fuzzy-matching/fzf-pick-service.d.ts +68 -0
- package/dist/services/fuzzy-matching/fzf-pick-service.js +158 -0
- package/dist/services/fuzzy-matching/types.d.ts +20 -0
- package/dist/services/fuzzy-matching/types.js +1 -0
- package/dist/services/handoff/handoff-parser.d.ts +28 -0
- package/dist/services/handoff/handoff-parser.js +69 -0
- package/dist/services/handoff/handoff-types.d.ts +39 -0
- package/dist/services/handoff/handoff-types.js +19 -0
- package/dist/services/handoff/handoff-writer.d.ts +23 -0
- package/dist/services/handoff/handoff-writer.js +30 -0
- package/dist/services/hooks/auto-compact-hook-install.d.ts +104 -0
- package/dist/services/hooks/auto-compact-hook-install.js +157 -0
- package/dist/services/hooks/output.d.ts +92 -0
- package/dist/services/hooks/output.js +111 -0
- package/dist/services/hooks/presence-marker-detector.d.ts +16 -0
- package/dist/services/hooks/presence-marker-detector.js +105 -0
- package/dist/services/ide/adapters/claude-code-adapter.d.ts +18 -0
- package/dist/services/ide/adapters/claude-code-adapter.js +103 -0
- package/dist/services/ide/adapters/codex-adapter.d.ts +46 -0
- package/dist/services/ide/adapters/codex-adapter.js +97 -0
- package/dist/services/ide/adapters/cursor-adapter.d.ts +36 -0
- package/dist/services/ide/adapters/cursor-adapter.js +84 -0
- package/dist/services/ide/adapters/hermes-adapter.d.ts +21 -0
- package/dist/services/ide/adapters/hermes-adapter.js +51 -0
- package/dist/services/ide/adapters/openclaw-adapter.d.ts +14 -0
- package/dist/services/ide/adapters/openclaw-adapter.js +42 -0
- package/dist/services/ide/adapters/trae-adapter.d.ts +42 -0
- package/dist/services/ide/adapters/trae-adapter.js +83 -0
- package/dist/services/ide/adapters/zcode-adapter.d.ts +40 -0
- package/dist/services/ide/adapters/zcode-adapter.js +220 -0
- package/dist/services/ide/current-model-detector.d.ts +14 -0
- package/dist/services/ide/current-model-detector.js +60 -0
- package/dist/services/ide/hook-protocol.d.ts +47 -0
- package/dist/services/ide/hook-protocol.js +74 -0
- package/dist/services/ide/hook-translator.d.ts +72 -0
- package/dist/services/ide/hook-translator.js +128 -0
- package/dist/services/ide/ide-detector.d.ts +10 -0
- package/dist/services/ide/ide-detector.js +19 -0
- package/dist/services/ide/ide-registry.d.ts +14 -0
- package/dist/services/ide/ide-registry.js +63 -0
- package/dist/services/ide/ide-types.d.ts +253 -0
- package/dist/services/ide/ide-types.js +2 -0
- package/dist/services/ide/resource-profile.d.ts +52 -0
- package/dist/services/ide/resource-profile.js +33 -0
- package/dist/services/ide/shared/atomic-json.d.ts +15 -0
- package/dist/services/ide/shared/atomic-json.js +58 -0
- package/dist/services/ide/shared/safe-path.d.ts +11 -0
- package/dist/services/ide/shared/safe-path.js +29 -0
- package/dist/services/impact/impact-scan-service.d.ts +66 -0
- package/dist/services/impact/impact-scan-service.js +197 -0
- package/dist/services/job/job-event-emitter.d.ts +30 -0
- package/dist/services/job/job-event-emitter.js +5 -0
- package/dist/services/job/job-orchestrator.d.ts +50 -0
- package/dist/services/job/job-orchestrator.js +104 -0
- package/dist/services/job/job-progress-store.d.ts +60 -0
- package/dist/services/job/job-progress-store.js +70 -0
- package/dist/services/job/job-resource-snapshot.d.ts +7 -0
- package/dist/services/job/job-resource-snapshot.js +75 -0
- package/dist/services/job/job-rotation.d.ts +17 -0
- package/dist/services/job/job-rotation.js +30 -0
- package/dist/services/job/job-state-store.d.ts +24 -0
- package/dist/services/job/job-state-store.js +60 -0
- package/dist/services/job/job-types.d.ts +444 -0
- package/dist/services/job/job-types.js +87 -0
- package/dist/services/job/subagent-job-wrapper.d.ts +35 -0
- package/dist/services/job/subagent-job-wrapper.js +30 -0
- package/dist/services/legacy/legacy-detector.d.ts +34 -0
- package/dist/services/legacy/legacy-detector.js +111 -0
- package/dist/services/log/log-commands-service.d.ts +54 -0
- package/dist/services/log/log-commands-service.js +83 -0
- package/dist/services/log/logger.d.ts +103 -0
- package/dist/services/log/logger.js +224 -0
- package/dist/services/log/redact.d.ts +32 -0
- package/dist/services/log/redact.js +89 -0
- package/dist/services/log/retention.d.ts +34 -0
- package/dist/services/log/retention.js +78 -0
- package/dist/services/loop/evaluator-dispatcher.d.ts +50 -0
- package/dist/services/loop/evaluator-dispatcher.js +552 -0
- package/dist/services/loop/loop-bee-relation-service.d.ts +107 -0
- package/dist/services/loop/loop-bee-relation-service.js +211 -0
- package/dist/services/loop/loop-bee-relation-store.d.ts +53 -0
- package/dist/services/loop/loop-bee-relation-store.js +130 -0
- package/dist/services/loop/loop-bee-relation-types.d.ts +118 -0
- package/dist/services/loop/loop-bee-relation-types.js +114 -0
- package/dist/services/loop/loop-release-service.d.ts +46 -0
- package/dist/services/loop/loop-release-service.js +66 -0
- package/dist/services/loop/loop-release-store.d.ts +55 -0
- package/dist/services/loop/loop-release-store.js +134 -0
- package/dist/services/loop/loop-release-types.d.ts +250 -0
- package/dist/services/loop/loop-release-types.js +162 -0
- package/dist/services/loop/monotonic-guard.d.ts +80 -0
- package/dist/services/loop/monotonic-guard.js +232 -0
- package/dist/services/loop/monotonic-runner.d.ts +58 -0
- package/dist/services/loop/monotonic-runner.js +231 -0
- package/dist/services/loop/run-driver.d.ts +70 -0
- package/dist/services/loop/run-driver.js +400 -0
- package/dist/services/loop/spec-service.d.ts +90 -0
- package/dist/services/loop/spec-service.js +497 -0
- package/dist/services/memory/llm-reranker.d.ts +174 -0
- package/dist/services/memory/llm-reranker.js +284 -0
- package/dist/services/memory/memory-search-service.d.ts +93 -0
- package/dist/services/memory/memory-search-service.js +117 -0
- package/dist/services/memory/project-context-service.d.ts +21 -0
- package/dist/services/memory/project-context-service.js +161 -0
- package/dist/services/memory/project-memory-service.d.ts +167 -0
- package/dist/services/memory/project-memory-service.js +817 -0
- package/dist/services/migrate-skill-name/migrate.d.ts +17 -0
- package/dist/services/migrate-skill-name/migrate.js +152 -0
- package/dist/services/migrate-skill-name/schema.d.ts +42 -0
- package/dist/services/migrate-skill-name/schema.js +25 -0
- package/dist/services/migration/v2-10-to-v2-11-service.d.ts +44 -0
- package/dist/services/migration/v2-10-to-v2-11-service.js +190 -0
- package/dist/services/migration/v2-10-to-v2-11-types.d.ts +41 -0
- package/dist/services/migration/v2-10-to-v2-11-types.js +23 -0
- package/dist/services/mode/bypass-tracker.d.ts +4 -0
- package/dist/services/mode/bypass-tracker.js +31 -0
- package/dist/services/mode/mode-enforcement.d.ts +14 -0
- package/dist/services/mode/mode-enforcement.js +84 -0
- package/dist/services/mut/assert-scanner.d.ts +6 -0
- package/dist/services/mut/assert-scanner.js +116 -0
- package/dist/services/mut/index.d.ts +8 -0
- package/dist/services/mut/index.js +7 -0
- package/dist/services/mut/mut-runner.d.ts +39 -0
- package/dist/services/mut/mut-runner.js +29 -0
- package/dist/services/mut/production-stryker.d.ts +2 -0
- package/dist/services/mut/production-stryker.js +75 -0
- package/dist/services/mut/report-builder.d.ts +11 -0
- package/dist/services/mut/report-builder.js +110 -0
- package/dist/services/mut/report-loader.d.ts +31 -0
- package/dist/services/mut/report-loader.js +78 -0
- package/dist/services/mut/thresholds.d.ts +21 -0
- package/dist/services/mut/thresholds.js +22 -0
- package/dist/services/mut/types.d.ts +336 -0
- package/dist/services/mut/types.js +59 -0
- package/dist/services/observability/aggregation.d.ts +64 -0
- package/dist/services/observability/aggregation.js +217 -0
- package/dist/services/observability/jsonl-store.d.ts +59 -0
- package/dist/services/observability/jsonl-store.js +120 -0
- package/dist/services/observability/observability-service.d.ts +95 -0
- package/dist/services/observability/observability-service.js +119 -0
- package/dist/services/observability/report-formatter.d.ts +42 -0
- package/dist/services/observability/report-formatter.js +156 -0
- package/dist/services/openspec/openspec-archive-service.d.ts +12 -0
- package/dist/services/openspec/openspec-archive-service.js +28 -0
- package/dist/services/openspec/openspec-bridge-service.d.ts +16 -0
- package/dist/services/openspec/openspec-bridge-service.js +76 -0
- package/dist/services/openspec/openspec-init-service.d.ts +23 -0
- package/dist/services/openspec/openspec-init-service.js +122 -0
- package/dist/services/openspec/openspec-propose-from-doctor-service.d.ts +31 -0
- package/dist/services/openspec/openspec-propose-from-doctor-service.js +95 -0
- package/dist/services/openspec/openspec-render-service.d.ts +38 -0
- package/dist/services/openspec/openspec-render-service.js +130 -0
- package/dist/services/openspec/openspec-scan-service.d.ts +6 -0
- package/dist/services/openspec/openspec-scan-service.js +123 -0
- package/dist/services/openspec/openspec-types.d.ts +39 -0
- package/dist/services/openspec/openspec-types.js +1 -0
- package/dist/services/openspec/openspec-validate-service.d.ts +27 -0
- package/dist/services/openspec/openspec-validate-service.js +77 -0
- package/dist/services/perf/perf-baseline-service.d.ts +70 -0
- package/dist/services/perf/perf-baseline-service.js +214 -0
- package/dist/services/polyrepo/polyrepo-dispatcher.d.ts +34 -0
- package/dist/services/polyrepo/polyrepo-dispatcher.js +119 -0
- package/dist/services/polyrepo/polyrepo-scanner.d.ts +9 -0
- package/dist/services/polyrepo/polyrepo-scanner.js +94 -0
- package/dist/services/polyrepo/polyrepo-service.d.ts +34 -0
- package/dist/services/polyrepo/polyrepo-service.js +49 -0
- package/dist/services/polyrepo/polyrepo-types.d.ts +55 -0
- package/dist/services/polyrepo/polyrepo-types.js +1 -0
- package/dist/services/prd/handoff-auto-regen.d.ts +22 -0
- package/dist/services/prd/handoff-auto-regen.js +73 -0
- package/dist/services/prd/handoff-service.d.ts +54 -0
- package/dist/services/prd/handoff-service.js +142 -0
- package/dist/services/prd/handoff-types.d.ts +64 -0
- package/dist/services/prd/handoff-types.js +22 -0
- package/dist/services/prd/prd-blocks-checker.d.ts +51 -0
- package/dist/services/prd/prd-blocks-checker.js +130 -0
- package/dist/services/prd/project-scan-bootstrap-service.d.ts +52 -0
- package/dist/services/prd/project-scan-bootstrap-service.js +445 -0
- package/dist/services/prd/project-scan-reader.d.ts +24 -0
- package/dist/services/prd/project-scan-reader.js +150 -0
- package/dist/services/prd/project-scan-sediment.d.ts +97 -0
- package/dist/services/prd/project-scan-sediment.js +445 -0
- package/dist/services/prd/project-scan-types.d.ts +66 -0
- package/dist/services/prd/project-scan-types.js +20 -0
- package/dist/services/preferences/preferences-service.d.ts +38 -0
- package/dist/services/preferences/preferences-service.js +198 -0
- package/dist/services/preferences/preferences-types.d.ts +148 -0
- package/dist/services/preferences/preferences-types.js +53 -0
- package/dist/services/profiles/profile-service.d.ts +6 -0
- package/dist/services/profiles/profile-service.js +19 -0
- package/dist/services/progress/progress-service.d.ts +125 -0
- package/dist/services/progress/progress-service.js +192 -0
- package/dist/services/providers/minimax-provider-service.d.ts +24 -0
- package/dist/services/providers/minimax-provider-service.js +143 -0
- package/dist/services/providers/minimax-worker-service.d.ts +21 -0
- package/dist/services/providers/minimax-worker-service.js +83 -0
- package/dist/services/proxy/proxy-service.d.ts +7 -0
- package/dist/services/proxy/proxy-service.js +31 -0
- package/dist/services/qa/browser-event-logger.d.ts +40 -0
- package/dist/services/qa/browser-event-logger.js +54 -0
- package/dist/services/qa/browser-restart-detector.d.ts +74 -0
- package/dist/services/qa/browser-restart-detector.js +138 -0
- package/dist/services/qa/browser-reuse-hint.d.ts +18 -0
- package/dist/services/qa/browser-reuse-hint.js +18 -0
- package/dist/services/qa/browser-wrapper-service.d.ts +37 -0
- package/dist/services/qa/browser-wrapper-service.js +88 -0
- package/dist/services/qa/qa-business-review-state.d.ts +47 -0
- package/dist/services/qa/qa-business-review-state.js +96 -0
- package/dist/services/rd/ast-gate.d.ts +19 -0
- package/dist/services/rd/ast-gate.js +71 -0
- package/dist/services/rd/impl.d.ts +9 -0
- package/dist/services/rd/impl.js +57 -0
- package/dist/services/rd/rd-service.d.ts +129 -0
- package/dist/services/rd/rd-service.js +441 -0
- package/dist/services/rd/reviewer-dispatch-policy.d.ts +122 -0
- package/dist/services/rd/reviewer-dispatch-policy.js +148 -0
- package/dist/services/rd/standards-diagnostic.d.ts +76 -0
- package/dist/services/rd/standards-diagnostic.js +166 -0
- package/dist/services/rd/strategic-stage.d.ts +4 -0
- package/dist/services/rd/strategic-stage.js +15 -0
- package/dist/services/rd/strategy.d.ts +13 -0
- package/dist/services/rd/strategy.js +60 -0
- package/dist/services/rd/tactical-stage.d.ts +33 -0
- package/dist/services/rd/tactical-stage.js +62 -0
- package/dist/services/rd/types.d.ts +252 -0
- package/dist/services/rd/types.js +47 -0
- package/dist/services/recommendations/capability-availability.d.ts +5 -0
- package/dist/services/recommendations/capability-availability.js +40 -0
- package/dist/services/recommendations/capability-map-service.d.ts +7 -0
- package/dist/services/recommendations/capability-map-service.js +131 -0
- package/dist/services/recommendations/capability-seed-items.d.ts +2 -0
- package/dist/services/recommendations/capability-seed-items.js +140 -0
- package/dist/services/recommendations/capability-seed-mappings.d.ts +2 -0
- package/dist/services/recommendations/capability-seed-mappings.js +54 -0
- package/dist/services/recommendations/capability-seed-sources.d.ts +2 -0
- package/dist/services/recommendations/capability-seed-sources.js +35 -0
- package/dist/services/recommendations/recommendation-service.d.ts +8 -0
- package/dist/services/recommendations/recommendation-service.js +106 -0
- package/dist/services/recommendations/recommendation-types.d.ts +129 -0
- package/dist/services/recommendations/recommendation-types.js +1 -0
- package/dist/services/recommendations/seed-capability-catalog.d.ts +3 -0
- package/dist/services/recommendations/seed-capability-catalog.js +3 -0
- package/dist/services/refactor/refactor-service.d.ts +9 -0
- package/dist/services/refactor/refactor-service.js +36 -0
- package/dist/services/release/release-state.d.ts +70 -0
- package/dist/services/release/release-state.js +140 -0
- package/dist/services/retrospective/retrospective-index.d.ts +37 -0
- package/dist/services/retrospective/retrospective-index.js +110 -0
- package/dist/services/retrospective/retrospective-search-service.d.ts +55 -0
- package/dist/services/retrospective/retrospective-search-service.js +107 -0
- package/dist/services/retrospective/retrospective-show.d.ts +40 -0
- package/dist/services/retrospective/retrospective-show.js +109 -0
- package/dist/services/reviewer/model-family.d.ts +18 -0
- package/dist/services/reviewer/model-family.js +70 -0
- package/dist/services/reviewer/providers/anthropic.d.ts +2 -0
- package/dist/services/reviewer/providers/anthropic.js +61 -0
- package/dist/services/reviewer/providers/ollama.d.ts +26 -0
- package/dist/services/reviewer/providers/ollama.js +38 -0
- package/dist/services/reviewer/providers/openai.d.ts +2 -0
- package/dist/services/reviewer/providers/openai.js +63 -0
- package/dist/services/reviewer/reviewer-config.d.ts +34 -0
- package/dist/services/reviewer/reviewer-config.js +100 -0
- package/dist/services/reviewer/reviewer-service.d.ts +56 -0
- package/dist/services/reviewer/reviewer-service.js +263 -0
- package/dist/services/reviewer/selection-strategies.d.ts +27 -0
- package/dist/services/reviewer/selection-strategies.js +53 -0
- package/dist/services/role/role-registry.d.ts +38 -0
- package/dist/services/role/role-registry.js +83 -0
- package/dist/services/runtime/runtime-detector.d.ts +15 -0
- package/dist/services/runtime/runtime-detector.js +62 -0
- package/dist/services/runtime/runtime-service.d.ts +59 -0
- package/dist/services/runtime/runtime-service.js +51 -0
- package/dist/services/runtime/vendor-adapter.d.ts +59 -0
- package/dist/services/runtime/vendor-adapter.js +1 -0
- package/dist/services/runtime/vendors/claude-code.d.ts +7 -0
- package/dist/services/runtime/vendors/claude-code.js +39 -0
- package/dist/services/runtime/vendors/codex.d.ts +7 -0
- package/dist/services/runtime/vendors/codex.js +43 -0
- package/dist/services/runtime/vendors/copilot.d.ts +7 -0
- package/dist/services/runtime/vendors/copilot.js +40 -0
- package/dist/services/sc/index.d.ts +1 -0
- package/dist/services/sc/index.js +1 -0
- package/dist/services/sc/sc-service.d.ts +131 -0
- package/dist/services/sc/sc-service.js +552 -0
- package/dist/services/scan/acceptance-coverage-service.d.ts +42 -0
- package/dist/services/scan/acceptance-coverage-service.js +140 -0
- package/dist/services/scan/api-surface-service.d.ts +69 -0
- package/dist/services/scan/api-surface-service.js +239 -0
- package/dist/services/scan/archetype-service.d.ts +5 -0
- package/dist/services/scan/archetype-service.js +254 -0
- package/dist/services/scan/diff-scope-service.d.ts +40 -0
- package/dist/services/scan/diff-scope-service.js +198 -0
- package/dist/services/scan/existing-system-service.d.ts +7 -0
- package/dist/services/scan/existing-system-service.js +300 -0
- package/dist/services/scan/file-size-scan.d.ts +23 -0
- package/dist/services/scan/file-size-scan.js +68 -0
- package/dist/services/scan/karpathy-service.d.ts +60 -0
- package/dist/services/scan/karpathy-service.js +228 -0
- package/dist/services/scan/libraries-service.d.ts +24 -0
- package/dist/services/scan/libraries-service.js +419 -0
- package/dist/services/scan/libraries-types.d.ts +59 -0
- package/dist/services/scan/libraries-types.js +9 -0
- package/dist/services/scan/orphan-service.d.ts +76 -0
- package/dist/services/scan/orphan-service.js +538 -0
- package/dist/services/scan/scan-types.d.ts +59 -0
- package/dist/services/scan/scan-types.js +1 -0
- package/dist/services/scan/type-sanity-service.d.ts +23 -0
- package/dist/services/scan/type-sanity-service.js +116 -0
- package/dist/services/security/safe-settings-path.d.ts +12 -0
- package/dist/services/security/safe-settings-path.js +104 -0
- package/dist/services/sediment/dispose-confirm.d.ts +9 -0
- package/dist/services/sediment/dispose-confirm.js +5 -0
- package/dist/services/sediment/json-schema.d.ts +247 -0
- package/dist/services/sediment/json-schema.js +26 -0
- package/dist/services/sediment/manifest-lint.d.ts +13 -0
- package/dist/services/sediment/manifest-lint.js +11 -0
- package/dist/services/sediment/pool-paths.d.ts +22 -0
- package/dist/services/sediment/pool-paths.js +25 -0
- package/dist/services/sediment/pool-read.d.ts +20 -0
- package/dist/services/sediment/pool-read.js +73 -0
- package/dist/services/sediment/pool-rebuild-index.d.ts +15 -0
- package/dist/services/sediment/pool-rebuild-index.js +28 -0
- package/dist/services/sediment/pool-write.d.ts +14 -0
- package/dist/services/sediment/pool-write.js +25 -0
- package/dist/services/sediment/promotion-gate.d.ts +12 -0
- package/dist/services/sediment/promotion-gate.js +20 -0
- package/dist/services/sediment/types.d.ts +52 -0
- package/dist/services/sediment/types.js +1 -0
- package/dist/services/session/binding-status-service.d.ts +56 -0
- package/dist/services/session/binding-status-service.js +106 -0
- package/dist/services/session/binding-store.d.ts +161 -0
- package/dist/services/session/binding-store.js +509 -0
- package/dist/services/session/caller-binding-service.d.ts +70 -0
- package/dist/services/session/caller-binding-service.js +148 -0
- package/dist/services/session/caller-id-types.d.ts +77 -0
- package/dist/services/session/caller-id-types.js +46 -0
- package/dist/services/session/getSessionDir.d.ts +1 -0
- package/dist/services/session/getSessionDir.js +27 -0
- package/dist/services/session/index.d.ts +6 -0
- package/dist/services/session/index.js +7 -0
- package/dist/services/session/platform-fallbacks.d.ts +31 -0
- package/dist/services/session/platform-fallbacks.js +35 -0
- package/dist/services/session/resolve-caller-id.d.ts +57 -0
- package/dist/services/session/resolve-caller-id.js +88 -0
- package/dist/services/session/session-binding-bridge.d.ts +76 -0
- package/dist/services/session/session-binding-bridge.js +247 -0
- package/dist/services/session/session-checkpoint-service.d.ts +57 -0
- package/dist/services/session/session-checkpoint-service.js +143 -0
- package/dist/services/session/session-manager.d.ts +168 -0
- package/dist/services/session/session-manager.js +502 -0
- package/dist/services/session/session-resume-service.d.ts +25 -0
- package/dist/services/session/session-resume-service.js +101 -0
- package/dist/services/share/bundle-reader.d.ts +100 -0
- package/dist/services/share/bundle-reader.js +434 -0
- package/dist/services/share/bundle-types.d.ts +392 -0
- package/dist/services/share/bundle-types.js +318 -0
- package/dist/services/share/bundle-writer.d.ts +97 -0
- package/dist/services/share/bundle-writer.js +429 -0
- package/dist/services/share/run-state-contract.d.ts +133 -0
- package/dist/services/share/run-state-contract.js +138 -0
- package/dist/services/signal/cancel-handler.d.ts +14 -0
- package/dist/services/signal/cancel-handler.js +76 -0
- package/dist/services/skill/resume-detector.d.ts +54 -0
- package/dist/services/skill/resume-detector.js +334 -0
- package/dist/services/skill/skill-scheduler.d.ts +40 -0
- package/dist/services/skill/skill-scheduler.js +53 -0
- package/dist/services/skill/skill-search-service.d.ts +88 -0
- package/dist/services/skill/skill-search-service.js +228 -0
- package/dist/services/skillhub/release-diff.d.ts +18 -0
- package/dist/services/skillhub/release-diff.js +38 -0
- package/dist/services/skillhub/release-export.d.ts +8 -0
- package/dist/services/skillhub/release-export.js +31 -0
- package/dist/services/skillhub/release-gc-blobs.d.ts +13 -0
- package/dist/services/skillhub/release-gc-blobs.js +32 -0
- package/dist/services/skillhub/release-import.d.ts +7 -0
- package/dist/services/skillhub/release-import.js +64 -0
- package/dist/services/skillhub/release-retain.d.ts +23 -0
- package/dist/services/skillhub/release-retain.js +94 -0
- package/dist/services/skillhub/sqlite-store.d.ts +22 -0
- package/dist/services/skillhub/sqlite-store.js +63 -0
- package/dist/services/skillhub/tar-runtime.d.ts +21 -0
- package/dist/services/skillhub/tar-runtime.js +91 -0
- package/dist/services/skillhub/types.d.ts +115 -0
- package/dist/services/skillhub/types.js +1 -0
- package/dist/services/skills/hooks-settings-service.d.ts +137 -0
- package/dist/services/skills/hooks-settings-service.js +396 -0
- package/dist/services/skills/skill-conformance-service.d.ts +40 -0
- package/dist/services/skills/skill-conformance-service.js +139 -0
- package/dist/services/skills/skill-presence-service.d.ts +158 -0
- package/dist/services/skills/skill-presence-service.js +474 -0
- package/dist/services/skills/skill-registry.d.ts +17 -0
- package/dist/services/skills/skill-registry.js +67 -0
- package/dist/services/skills/skill-runbook-service.d.ts +11 -0
- package/dist/services/skills/skill-runbook-service.js +128 -0
- package/dist/services/skills/skill-statusline-renderer.d.ts +6 -0
- package/dist/services/skills/skill-statusline-renderer.js +55 -0
- package/dist/services/skills/skill-statusline-service.d.ts +24 -0
- package/dist/services/skills/skill-statusline-service.js +110 -0
- package/dist/services/skills/statusline-settings-service.d.ts +59 -0
- package/dist/services/skills/statusline-settings-service.js +141 -0
- package/dist/services/skills/sync-service.d.ts +86 -0
- package/dist/services/skills/sync-service.js +271 -0
- package/dist/services/slice/calibration-store.d.ts +39 -0
- package/dist/services/slice/calibration-store.js +68 -0
- package/dist/services/slice/cross-pass-edge-merger.d.ts +53 -0
- package/dist/services/slice/cross-pass-edge-merger.js +246 -0
- package/dist/services/slice/granularity-decider.d.ts +37 -0
- package/dist/services/slice/granularity-decider.js +40 -0
- package/dist/services/slice/llm-arbitrator.d.ts +35 -0
- package/dist/services/slice/llm-arbitrator.js +63 -0
- package/dist/services/slice/multi-pass-orchestrator.d.ts +67 -0
- package/dist/services/slice/multi-pass-orchestrator.js +225 -0
- package/dist/services/slice/schema-router.d.ts +44 -0
- package/dist/services/slice/schema-router.js +61 -0
- package/dist/services/slice/slice-archive-service.d.ts +20 -0
- package/dist/services/slice/slice-archive-service.js +111 -0
- package/dist/services/slice/slice-benchmark-service.d.ts +19 -0
- package/dist/services/slice/slice-benchmark-service.js +60 -0
- package/dist/services/slice/slice-check-service.d.ts +2 -0
- package/dist/services/slice/slice-check-service.js +459 -0
- package/dist/services/slice/slice-check-types.d.ts +104 -0
- package/dist/services/slice/slice-check-types.js +28 -0
- package/dist/services/slice/slice-decompose-runners.d.ts +23 -0
- package/dist/services/slice/slice-decompose-runners.js +174 -0
- package/dist/services/slice/slice-decompose-service.d.ts +24 -0
- package/dist/services/slice/slice-decompose-service.js +532 -0
- package/dist/services/slice/slice-decompose-types.d.ts +263 -0
- package/dist/services/slice/slice-decompose-types.js +30 -0
- package/dist/services/slice/slice-integration.d.ts +43 -0
- package/dist/services/slice/slice-integration.js +106 -0
- package/dist/services/slice/slice-pick-service.d.ts +32 -0
- package/dist/services/slice/slice-pick-service.js +75 -0
- package/dist/services/slice/slice-review-state.d.ts +70 -0
- package/dist/services/slice/slice-review-state.js +109 -0
- package/dist/services/slice/slice-topology-types.d.ts +115 -0
- package/dist/services/slice/slice-topology-types.js +20 -0
- package/dist/services/smoke/smoke-paths-state.d.ts +73 -0
- package/dist/services/smoke/smoke-paths-state.js +117 -0
- package/dist/services/sop/gate-enforce-service.d.ts +33 -0
- package/dist/services/sop/gate-enforce-service.js +168 -0
- package/dist/services/sop/sop-advance-service.d.ts +74 -0
- package/dist/services/sop/sop-advance-service.js +115 -0
- package/dist/services/sop/sop-check-service.d.ts +45 -0
- package/dist/services/sop/sop-check-service.js +181 -0
- package/dist/services/sop/sop-paths.d.ts +62 -0
- package/dist/services/sop/sop-paths.js +92 -0
- package/dist/services/sop/sop-registry-service.d.ts +46 -0
- package/dist/services/sop/sop-registry-service.js +89 -0
- package/dist/services/sop/sop-service.d.ts +55 -0
- package/dist/services/sop/sop-service.js +222 -0
- package/dist/services/sop/sop-types.d.ts +95 -0
- package/dist/services/sop/sop-types.js +11 -0
- package/dist/services/standards/ide-aware-standards-service.d.ts +94 -0
- package/dist/services/standards/ide-aware-standards-service.js +91 -0
- package/dist/services/standards/loop-engineering-lint.d.ts +38 -0
- package/dist/services/standards/loop-engineering-lint.js +101 -0
- package/dist/services/standards/loop-engineering-readiness-lint.d.ts +111 -0
- package/dist/services/standards/loop-engineering-readiness-lint.js +248 -0
- package/dist/services/standards/migrate-claude-rules-service.d.ts +19 -0
- package/dist/services/standards/migrate-claude-rules-service.js +214 -0
- package/dist/services/standards/migrate-service.d.ts +63 -0
- package/dist/services/standards/migrate-service.js +193 -0
- package/dist/services/standards/missing-standards-detector.d.ts +81 -0
- package/dist/services/standards/missing-standards-detector.js +139 -0
- package/dist/services/standards/project-context.d.ts +24 -0
- package/dist/services/standards/project-context.js +314 -0
- package/dist/services/standards/project-standards-service.d.ts +114 -0
- package/dist/services/standards/project-standards-service.js +693 -0
- package/dist/services/tech/tech-service.d.ts +69 -0
- package/dist/services/tech/tech-service.js +299 -0
- package/dist/services/test-cache/test-cache-service.d.ts +70 -0
- package/dist/services/test-cache/test-cache-service.js +175 -0
- package/dist/services/understand/hybrid-types.d.ts +32 -0
- package/dist/services/understand/hybrid-types.js +1 -0
- package/dist/services/understand/understand-hybrid-service.d.ts +10 -0
- package/dist/services/understand/understand-hybrid-service.js +100 -0
- package/dist/services/understand/understand-scan-service.d.ts +28 -0
- package/dist/services/understand/understand-scan-service.js +170 -0
- package/dist/services/understand/understand-types.d.ts +50 -0
- package/dist/services/understand/understand-types.js +1 -0
- package/dist/services/upgrade/1x-detector-service.d.ts +7 -0
- package/dist/services/upgrade/1x-detector-service.js +94 -0
- package/dist/services/upgrade/gitignore-migrate-service.d.ts +56 -0
- package/dist/services/upgrade/gitignore-migrate-service.js +170 -0
- package/dist/services/upgrade/upgrade-service.d.ts +81 -0
- package/dist/services/upgrade/upgrade-service.js +403 -0
- package/dist/services/verdict/envelopes.d.ts +93 -0
- package/dist/services/verdict/envelopes.js +349 -0
- package/dist/services/verdict/verdict-aggregator.d.ts +94 -0
- package/dist/services/verdict/verdict-aggregator.js +112 -0
- package/dist/services/workflow/artifact-paths.d.ts +59 -0
- package/dist/services/workflow/artifact-paths.js +166 -0
- package/dist/services/workflow/autonomous-resume-writer.d.ts +16 -0
- package/dist/services/workflow/autonomous-resume-writer.js +170 -0
- package/dist/services/workflow/pipeline-verify-service.d.ts +90 -0
- package/dist/services/workflow/pipeline-verify-service.js +449 -0
- package/dist/services/workflow/plan-reader.d.ts +29 -0
- package/dist/services/workflow/plan-reader.js +174 -0
- package/dist/services/workflow/plan-refresher.d.ts +32 -0
- package/dist/services/workflow/plan-refresher.js +353 -0
- package/dist/services/workflow/plan-trigger-detector.d.ts +55 -0
- package/dist/services/workflow/plan-trigger-detector.js +142 -0
- package/dist/services/workflow/workflow-autonomous-resume-helpers.d.ts +19 -0
- package/dist/services/workflow/workflow-autonomous-resume-helpers.js +300 -0
- package/dist/services/workflow/workflow-autonomous-service.d.ts +100 -0
- package/dist/services/workflow/workflow-autonomous-service.js +306 -0
- package/dist/services/workflow/workflow-loader.d.ts +63 -0
- package/dist/services/workflow/workflow-loader.js +168 -0
- package/dist/services/workflow/workflow-router-service.d.ts +85 -0
- package/dist/services/workflow/workflow-router-service.js +233 -0
- package/dist/services/workflow/workflow-skip-service.d.ts +106 -0
- package/dist/services/workflow/workflow-skip-service.js +209 -0
- package/dist/services/workflow/workflow-spec.d.ts +116 -0
- package/dist/services/workflow/workflow-spec.js +431 -0
- package/dist/services/workflow/workflow-state-store.d.ts +27 -0
- package/dist/services/workflow/workflow-state-store.js +95 -0
- package/dist/services/workspace/claude-settings-template.d.ts +101 -0
- package/dist/services/workspace/claude-settings-template.js +254 -0
- package/dist/services/workspace/migrate-1-4-1-service.d.ts +44 -0
- package/dist/services/workspace/migrate-1-4-1-service.js +195 -0
- package/dist/services/workspace/migrate-service.d.ts +2 -0
- package/dist/services/workspace/migrate-service.js +613 -0
- package/dist/services/workspace/migrate-types.d.ts +127 -0
- package/dist/services/workspace/migrate-types.js +21 -0
- package/dist/services/workspace/reconcile-service.d.ts +188 -0
- package/dist/services/workspace/reconcile-service.js +683 -0
- package/dist/services/workspace/reconcile-types.d.ts +130 -0
- package/dist/services/workspace/reconcile-types.js +13 -0
- package/dist/services/workspace/sid-naming-guard.d.ts +17 -0
- package/dist/services/workspace/sid-naming-guard.js +34 -0
- package/dist/services/workspace/templates/project-scan/audit-output-schema.md +100 -0
- package/dist/services/workspace/templates/project-scan/business-knowledge.md +44 -0
- package/dist/services/workspace/templates/project-scan/index.d.ts +34 -0
- package/dist/services/workspace/templates/project-scan/index.js +60 -0
- package/dist/services/workspace/templates/project-scan/perf-template.md +109 -0
- package/dist/services/workspace/templates/project-scan/security-template.md +99 -0
- package/dist/services/workspace/workspace-claude-settings-materializer.d.ts +45 -0
- package/dist/services/workspace/workspace-claude-settings-materializer.js +194 -0
- package/dist/services/workspace/workspace-clean-service.d.ts +28 -0
- package/dist/services/workspace/workspace-clean-service.js +46 -0
- package/dist/services/workspace/workspace-service.d.ts +177 -0
- package/dist/services/workspace/workspace-service.js +432 -0
- package/dist/services/workspace/workspace-state-service.d.ts +7 -0
- package/dist/services/workspace/workspace-state-service.js +43 -0
- package/dist/shared/format-md-compact.d.ts +32 -0
- package/dist/shared/format-md-compact.js +297 -0
- package/dist/shared/frontmatter.d.ts +6 -0
- package/dist/shared/frontmatter.js +165 -0
- package/dist/shared/fs-utils.d.ts +4 -0
- package/dist/shared/fs-utils.js +16 -0
- package/dist/shared/fs.d.ts +4 -0
- package/dist/shared/fs.js +26 -0
- package/dist/shared/incrementing-number.d.ts +23 -0
- package/dist/shared/incrementing-number.js +68 -0
- package/dist/shared/json-schema-mini.d.ts +10 -0
- package/dist/shared/json-schema-mini.js +113 -0
- package/dist/shared/path-safety.d.ts +21 -0
- package/dist/shared/path-safety.js +54 -0
- package/dist/shared/path-utils.d.ts +13 -0
- package/dist/shared/path-utils.js +56 -0
- package/dist/shared/paths.d.ts +6 -0
- package/dist/shared/paths.js +50 -0
- package/dist/shared/planner-response.d.ts +21 -0
- package/dist/shared/planner-response.js +26 -0
- package/dist/shared/platform.d.ts +6 -0
- package/dist/shared/platform.js +11 -0
- package/dist/shared/process.d.ts +5 -0
- package/dist/shared/process.js +12 -0
- package/dist/shared/result.d.ts +22 -0
- package/dist/shared/result.js +46 -0
- package/dist/shared/stale-policy.d.ts +67 -0
- package/dist/shared/stale-policy.js +85 -0
- package/dist/shared/version.d.ts +1 -0
- package/dist/shared/version.js +1 -0
- package/dist/skills/peaks-maker/index.d.ts +5 -0
- package/dist/skills/peaks-maker/index.js +32 -0
- package/package.json +5 -4
- package/scripts/copy-templates.mjs +1 -1
|
@@ -0,0 +1,491 @@
|
|
|
1
|
+
import { join, dirname, basename } from 'node:path';
|
|
2
|
+
import { readFile, readdir } from 'node:fs/promises';
|
|
3
|
+
import { pathExists } from '../../shared/fs.js';
|
|
4
|
+
import { emitObservabilityEvent } from '../observability/observability-service.js';
|
|
5
|
+
export const VALID_REQUEST_TYPES = [
|
|
6
|
+
'feature',
|
|
7
|
+
'bugfix',
|
|
8
|
+
'refactor',
|
|
9
|
+
'docs',
|
|
10
|
+
'config',
|
|
11
|
+
'chore'
|
|
12
|
+
];
|
|
13
|
+
export const DEFAULT_REQUEST_TYPE = 'feature';
|
|
14
|
+
export function isRequestType(value) {
|
|
15
|
+
return VALID_REQUEST_TYPES.includes(value);
|
|
16
|
+
}
|
|
17
|
+
// Shared prerequisite fragments
|
|
18
|
+
// (Removed in v2.11.0 Group A: TECH_DOC prerequisite. The per-session
|
|
19
|
+
// rd/tech-doc.md is replaced by the immutable peaks-prd handoff at
|
|
20
|
+
// prd/handoff.md. Group B will introduce a PRD_HANDOFF prerequisite
|
|
21
|
+
// once the handoff service lands. For Group A scope, `rd:implemented`
|
|
22
|
+
// and `rd:qa-handoff` rely on the evidence files (code-review,
|
|
23
|
+
// security-review, perf-baseline, karpathy-review, unit tests) only.)
|
|
24
|
+
const BUG_ANALYSIS = {
|
|
25
|
+
relativePath: 'rd/bug-analysis.md',
|
|
26
|
+
description: 'Bug root-cause analysis (reproduction, affected paths, fix approach, regression test plan)',
|
|
27
|
+
mustContain: ['## Root cause', '## Fix approach']
|
|
28
|
+
};
|
|
29
|
+
const CODE_REVIEW = {
|
|
30
|
+
relativePath: 'rd/code-review.md',
|
|
31
|
+
description: 'Code review evidence (CRITICAL/HIGH must be fixed before handoff)',
|
|
32
|
+
mustContain: ['## Findings', 'CRITICAL']
|
|
33
|
+
};
|
|
34
|
+
const SECURITY_REVIEW = { relativePath: 'rd/security-review.md', description: 'Security review evidence for the changed surface' };
|
|
35
|
+
// Gate B9 — RD-side perf baseline (peaks-rd SKILL "Parallel review fan-out").
|
|
36
|
+
// The file must exist; the body must either carry a Results table marker
|
|
37
|
+
// (per peaks-rd SKILL "Mandatory perf-baseline output") or the explicit
|
|
38
|
+
// "N/A — no perf surface" escape hatch. A slice without a perf surface
|
|
39
|
+
// still has to write the stub; an RD that omits perf-baseline entirely is
|
|
40
|
+
// blocked here, matching peaks-rd's BLOCKING Gate B9 claim.
|
|
41
|
+
const PERF_BASELINE = {
|
|
42
|
+
relativePath: 'rd/perf-baseline.md',
|
|
43
|
+
description: 'RD-side perf baseline (peaks-rd Gate B9) — must include a Results table with measurements OR the literal "N/A — no perf surface" escape hatch in the Notes section. QA Gate A4 diffs against this file.',
|
|
44
|
+
// Either a real Results table is present, OR the explicit no-perf-surface
|
|
45
|
+
// stub marker. Both paths satisfy Gate B9; absence of both is BLOCKED.
|
|
46
|
+
mustContainAny: ['## Results', 'N/A — no perf surface']
|
|
47
|
+
};
|
|
48
|
+
// v2.12.0 Group B Tier 5 — audit outputs from the new independent
|
|
49
|
+
// skills (`peaks-security-audit` / `peaks-perf-audit`). These replace
|
|
50
|
+
// the v2.11.x rd/{security-review,perf-baseline}.md slots for the
|
|
51
|
+
// fanout-trigger types (feat / bugfix / refactor). The audit skills
|
|
52
|
+
// are dispatched as pre-RD audit runs that consume the public PRD
|
|
53
|
+
// handoff (`prd/handoff.md`) — see `AUDIT_REQUIRES_HANDOFF` below.
|
|
54
|
+
//
|
|
55
|
+
// Back-compat: the canonical location is `audit/security.md` (and
|
|
56
|
+
// `audit/perf.md`); the legacy `rd/security-review.md` (and
|
|
57
|
+
// `rd/perf-baseline.md`) path is also accepted via `legacyRelativePath`
|
|
58
|
+
// for the 1-minor-release window. v2.13.0 hard-deletes the legacy paths.
|
|
59
|
+
const AUDIT_SECURITY = {
|
|
60
|
+
relativePath: 'audit/security.md',
|
|
61
|
+
legacyRelativePath: 'rd/security-review.md',
|
|
62
|
+
description: 'Independent security audit output (peaks-security-audit skill, v2.12.0+). Replaces the v2.11.x rd/security-review.md slot for fanout-trigger request types. The legacy path is accepted during the 1-minor-release back-compat window via legacyRelativePath.',
|
|
63
|
+
// New canonical path writes a "## Verdict" header on the audit
|
|
64
|
+
// envelope. The legacy rd/security-review.md writes a "## Findings"
|
|
65
|
+
// header. Both pass the gate.
|
|
66
|
+
mustContainAny: ['## Verdict', '## Findings']
|
|
67
|
+
};
|
|
68
|
+
const AUDIT_PERF = {
|
|
69
|
+
relativePath: 'audit/perf.md',
|
|
70
|
+
legacyRelativePath: 'rd/perf-baseline.md',
|
|
71
|
+
description: 'Independent perf audit output (peaks-perf-audit skill, v2.12.0+). Replaces the v2.11.x rd/perf-baseline.md slot for fanout-trigger request types. The legacy path is accepted during the 1-minor-release back-compat window via legacyRelativePath.',
|
|
72
|
+
// New schema writes "## Baseline" header; the legacy schema writes
|
|
73
|
+
// "## Results". Both pass the gate, as does the explicit
|
|
74
|
+
// no-perf-surface stub (slices whose surface is purely logic /
|
|
75
|
+
// config / docs).
|
|
76
|
+
mustContainAny: ['## Baseline', '## Results', 'N/A — no perf surface']
|
|
77
|
+
};
|
|
78
|
+
// v2.13.1 Group A — MUT prereq (Plan 2 ships `mut-report.json` to
|
|
79
|
+
// `.peaks/_runtime/<sid>/mut/mut-report.json`; v2.13.1 wires it into
|
|
80
|
+
// the rd:qa-handoff gate for fanout-trigger types). The body must carry
|
|
81
|
+
// the `"passed": true` marker so the gate rejects failed mutation
|
|
82
|
+
// runs. We pin on the substring `"passed":` so that both JSON and
|
|
83
|
+
// pretty-printed JSON (with whitespace variations) are caught — the
|
|
84
|
+
// downstream stricter check happens in `verdict-aggregator.ts`. The
|
|
85
|
+
// PRD's preserved-behavior clause says `loadMutReport() === null`
|
|
86
|
+
// stays `skipped` on the qa side, which means this prereq is the
|
|
87
|
+
// rd-side CLI hard gate (blocks `rd → qa-handoff`), while qa-side
|
|
88
|
+
// consumption remains soft.
|
|
89
|
+
//
|
|
90
|
+
// v2.13.2 AC-5 — 1-minor-release back-compat window. When
|
|
91
|
+
// `backCompat: true` is set, a MISSING file downgrades to a warning
|
|
92
|
+
// (`mut-report-missing-deprecated-in-v2.14.0`) instead of a hard
|
|
93
|
+
// failure. The hard-fail behavior for `passed: false` is preserved
|
|
94
|
+
// (the body still has to carry `"passed": true` when present).
|
|
95
|
+
// v2.14.0 will remove `backCompat` and re-elevate missing → throw.
|
|
96
|
+
const MUT_REPORT = {
|
|
97
|
+
relativePath: 'mut/mut-report.json',
|
|
98
|
+
description: 'peaks-mut mutation + weak-assertion report (Plan 2, v2.12.0+). v2.13.1: required at rd:qa-handoff for feature / bugfix / refactor slices. v2.13.2: back-compat window — missing file downgrades to a warning (1-minor-release); passed:false still throws. The body must carry `"passed": true` when present; failed runs are blocked at this gate. CONFIG / DOCS / CHORE slices retain the legacy "no acceptance surface" exemption.',
|
|
99
|
+
// Substring check on the JSON property name only — strictness (kill
|
|
100
|
+
// rate ≥ 0.8 etc.) is enforced downstream by verdict-aggregator +
|
|
101
|
+
// peaks-mut's evaluateThresholds. We require both the property name
|
|
102
|
+
// and a literal `true` value to keep the gate as tight as possible
|
|
103
|
+
// without depending on JSON parsing in the prereq resolver.
|
|
104
|
+
mustContainAny: ['"passed": true', '"passed":true'],
|
|
105
|
+
backCompat: true
|
|
106
|
+
};
|
|
107
|
+
// v2.12.0 Group B Tier 5 — gate that the peaks-prd handoff (the
|
|
108
|
+
// immutable handoff capsule at `prd/handoff.md`) exists before any
|
|
109
|
+
// audit skill is allowed to consume it. The peaks-security-audit
|
|
110
|
+
// and peaks-perf-audit CLI commands read frontmatter from
|
|
111
|
+
// `prd/handoff.md` (AC-2.4 / AC-3.4); if the handoff is missing the
|
|
112
|
+
// audit skill aborts — and so should the prereq gate when those
|
|
113
|
+
// audits are required at rd:qa-handoff.
|
|
114
|
+
//
|
|
115
|
+
// This gate is co-listed with AUDIT_SECURITY / AUDIT_PERF at
|
|
116
|
+
// `rd:qa-handoff` for FEATURE / BUGFIX / REFACTOR. CONFIG retains
|
|
117
|
+
// the old form (no PRD handoff chain — config slices may run before
|
|
118
|
+
// PRD handoff exists for small CONFIG-only commits).
|
|
119
|
+
const AUDIT_REQUIRES_HANDOFF = {
|
|
120
|
+
relativePath: 'prd/handoff.md',
|
|
121
|
+
description: 'PRD handoff capsule (v2.12.0+) — peaks-security-audit / peaks-perf-audit both read frontmatter from this file. Must exist before audit prereqs are evaluated at rd:qa-handoff.',
|
|
122
|
+
// Empty `mustContain` is fine — file existence is the contract.
|
|
123
|
+
// The peaks-prd handoff service writes frontmatter with
|
|
124
|
+
// `schemaVersion: 2` and a sha256 fingerprint; we pin a
|
|
125
|
+
// substring check on `schemaVersion: 2` to fail loudly if a
|
|
126
|
+
// legacy handoff (schemaVersion: 1) slips in. This protects
|
|
127
|
+
// the audit skills from reading an envelope they cannot parse.
|
|
128
|
+
mustContain: ['schemaVersion: 2', 'sha256:']
|
|
129
|
+
};
|
|
130
|
+
// Karpathy-Gate (Slice 5/6 — karpathy-enforcement 5-way fanout).
|
|
131
|
+
// Hard gate: rd/karpathy-review.md MUST exist with the 4 guideline section
|
|
132
|
+
// markers (think-before-coding / simplicity-first / surgical-changes /
|
|
133
|
+
// goal-driven-execution) as actual headings before rd:qa-handoff transitions
|
|
134
|
+
// to qa. Slice 2.6.1.F hardening: the 4 guideline markers are now enforced
|
|
135
|
+
// as `headingMustContain` (line-anchored `#`–`###` prefix), not as substring
|
|
136
|
+
// matches. This prevents a malicious or careless file from passing the gate
|
|
137
|
+
// by simply mentioning the guideline names as prose. The `## Karpathy-Gate`
|
|
138
|
+
// header remains a substring match (it is the file's own gate header, not
|
|
139
|
+
// a structural section anchor).
|
|
140
|
+
const KARPATHY_REVIEW = {
|
|
141
|
+
relativePath: 'rd/karpathy-review.md',
|
|
142
|
+
description: 'RD-side karpathy review (peaks-rd 5-way fanout) — must contain a "## Karpathy-Gate" header AND the 4 guideline section markers (Think Before Coding / Simplicity First / Surgical Changes / Goal-Driven Execution) as actual markdown headings. Per karpathy §1 / §3.',
|
|
143
|
+
mustContain: ['## Karpathy-Gate'],
|
|
144
|
+
headingMustContain: [
|
|
145
|
+
'Think Before Coding',
|
|
146
|
+
'Simplicity First',
|
|
147
|
+
'Surgical Changes',
|
|
148
|
+
'Goal-Driven Execution'
|
|
149
|
+
]
|
|
150
|
+
};
|
|
151
|
+
// v2.14.0 G4 — third-party reviewer (peaks-reviewer skill). Parallel
|
|
152
|
+
// to KARPATHY_REVIEW. The body MUST carry the literal substring
|
|
153
|
+
// `third-party-review` so a stub file with an empty envelope cannot
|
|
154
|
+
// pass the gate. The full envelope lives at the JSON sibling path
|
|
155
|
+
// (`rd/third-party-review.json`); this MD file is the human-readable
|
|
156
|
+
// companion. The body is also expected to declare a `modelFamily`
|
|
157
|
+
// distinct from the karpathy-reviewer's modelFamily (AC-4.4 — the CI
|
|
158
|
+
// gate diffs `rd/third-party-review.json.modelFamily` against
|
|
159
|
+
// `rd/karpathy-review.md` parsed `modelFamily`); equality fails the
|
|
160
|
+
// build. When `~/.peaks/config.json` lacks a `reviewer.providers`
|
|
161
|
+
// section, the prereq is auto-marked `skipped: no-reviewer-config`
|
|
162
|
+
// and the transition still passes (A4.3 fallbackOnError=skip).
|
|
163
|
+
const THIRD_PARTY_REVIEW = {
|
|
164
|
+
relativePath: 'rd/third-party-review.md',
|
|
165
|
+
description: 'v2.14.0 G4 third-party reviewer (peaks-reviewer skill) — must declare a `modelFamily` distinct from the karpathy-reviewer modelFamily (AC-4.4). Skipped when `~/.peaks/config.json` lacks `reviewer.providers` (>=2 entries); the prereq then resolves to a soft warning (`no-reviewer-config`) rather than a hard failure. The JSON sibling at `rd/third-party-review.json` carries the schema-validated ReviewerEnvelope (no free-form LLM JSON). v2.14.0 ships as a soft-warning prereq (1-minor-release back-compat window); v2.15.0 will hard-fail when the file is absent AND `reviewer.providers` is configured.',
|
|
166
|
+
mustContain: ['third-party-review', 'modelFamily'],
|
|
167
|
+
backCompat: true
|
|
168
|
+
};
|
|
169
|
+
const TEST_CASES = {
|
|
170
|
+
relativePath: 'qa/test-cases/<rid>.md',
|
|
171
|
+
description: 'Generated test cases (unit / integration / UI regression)',
|
|
172
|
+
mustContain: ['## Test cases']
|
|
173
|
+
};
|
|
174
|
+
const TEST_REPORT = {
|
|
175
|
+
relativePath: 'qa/test-reports/<rid>.md',
|
|
176
|
+
description: 'Test execution report with actual pass/fail/coverage results',
|
|
177
|
+
mustContain: ['## Test execution']
|
|
178
|
+
};
|
|
179
|
+
const SECURITY_FINDINGS = {
|
|
180
|
+
relativePath: 'qa/security-findings.md',
|
|
181
|
+
description: 'Security test findings (record "no findings" inside if truly clean)',
|
|
182
|
+
mustContain: ['## Findings']
|
|
183
|
+
};
|
|
184
|
+
const PERFORMANCE_FINDINGS = {
|
|
185
|
+
relativePath: 'qa/performance-findings.md',
|
|
186
|
+
description: 'Performance test findings (record baseline/after numbers or explicit "not applicable" rationale)',
|
|
187
|
+
mustContain: ['## Baseline']
|
|
188
|
+
};
|
|
189
|
+
// PRD content prereq: ensures the PRD artifact has actual scope/acceptance content
|
|
190
|
+
// before handoff to RD/UI/QA. The SKILL says "Handoff to RD/UI/QA is blocked while
|
|
191
|
+
// the artifact is missing or in `draft` state" — this gives that claim a CLI gate.
|
|
192
|
+
const PRD_CONTENT = {
|
|
193
|
+
relativePath: 'prd/requests/<rid>.md',
|
|
194
|
+
description: 'PRD artifact must contain Goal and Acceptance criteria sections before handoff',
|
|
195
|
+
mustContain: ['## Goals', '## Acceptance']
|
|
196
|
+
};
|
|
197
|
+
const UNIT_TESTS = {
|
|
198
|
+
relativePath: 'qa/test-cases/<rid>.md',
|
|
199
|
+
description: 'Unit test files for the implemented changes (enforces peaks-rd Gate B2)',
|
|
200
|
+
mustContain: ['## Test cases', 'test(']
|
|
201
|
+
};
|
|
202
|
+
const QA_INITIATED = {
|
|
203
|
+
relativePath: 'qa/.initiated',
|
|
204
|
+
description: 'QA skill must be invoked before RD handoff (run peaks request init --role qa)'
|
|
205
|
+
};
|
|
206
|
+
// v2.11.0 D1/D4 trim (Group C Tier 6): peaks-qa no longer requires
|
|
207
|
+
// qa/security-findings.md or qa/performance-findings.md at qa:verdict-issued.
|
|
208
|
+
// Those are owned by peaks-rd's audit fan-out (rd/security-review.md and
|
|
209
|
+
// rd/perf-baseline.md). QA references them by path from the test-report body
|
|
210
|
+
// (see qa-transition-gates.md Gates A3/A4). SECURITY_FINDINGS /
|
|
211
|
+
// PERFORMANCE_FINDINGS constants are kept for back-compat and a 1-minor-
|
|
212
|
+
// release deprecation window but are NOT in any qa:verdict-issued table.
|
|
213
|
+
//
|
|
214
|
+
// v2.12.0 Group B Tier 5: at rd:qa-handoff, the v2.11.x security-review +
|
|
215
|
+
// perf-baseline slots are replaced by `AUDIT_SECURITY` + `AUDIT_PERF` (the
|
|
216
|
+
// new audit-skill outputs). The legacy `AUDIT_SECURITY_LEGACY` /
|
|
217
|
+
// `AUDIT_PERF_LEGACY` shims are kept in the same list so the 1-minor-
|
|
218
|
+
// release back-compat window still accepts the v2.11.x on-disk layout;
|
|
219
|
+
// both the new path (`audit/security.md`) and the legacy path
|
|
220
|
+
// (`rd/security-review.md`) satisfy the gate. The audit skills require
|
|
221
|
+
// `prd/handoff.md` (`AUDIT_REQUIRES_HANDOFF`).
|
|
222
|
+
//
|
|
223
|
+
// v2.13.1 Group A: add `MUT_REPORT` (peaks-mut Plan 2 output). The
|
|
224
|
+
// gate is the rd-side CLI hard block; CONFIG / DOCS / CHORE retain the
|
|
225
|
+
// legacy "no acceptance surface" exemption via MINIMAL_TABLE /
|
|
226
|
+
// CONFIG_TABLE.
|
|
227
|
+
const FEATURE_TABLE = {
|
|
228
|
+
'prd:handed-off': [PRD_CONTENT],
|
|
229
|
+
'rd:implemented': [],
|
|
230
|
+
'rd:qa-handoff': [
|
|
231
|
+
CODE_REVIEW,
|
|
232
|
+
AUDIT_REQUIRES_HANDOFF,
|
|
233
|
+
AUDIT_SECURITY,
|
|
234
|
+
AUDIT_PERF,
|
|
235
|
+
KARPATHY_REVIEW,
|
|
236
|
+
THIRD_PARTY_REVIEW,
|
|
237
|
+
MUT_REPORT,
|
|
238
|
+
UNIT_TESTS,
|
|
239
|
+
QA_INITIATED
|
|
240
|
+
],
|
|
241
|
+
'qa:running': [TEST_CASES],
|
|
242
|
+
'qa:verdict-issued': [TEST_CASES, TEST_REPORT]
|
|
243
|
+
};
|
|
244
|
+
// Bugfix: lighter planning artifact (bug-analysis instead of tech-doc), still requires code review + security review + regression test.
|
|
245
|
+
// Performance baseline: required for perf-shaped bugfixes (where the bug IS a
|
|
246
|
+
// perf regression). For non-perf bugfixes, RD writes the perf-baseline stub
|
|
247
|
+
// with "N/A — no perf surface" — Gate B9 still passes (mustContainAny hit),
|
|
248
|
+
// and the stub tells QA Gate A4 to skip the perf diff.
|
|
249
|
+
// v2.11.0 D1/D4: SECURITY_FINDINGS dropped from qa:verdict-issued (peaks-rd owns it).
|
|
250
|
+
// v2.12.0 Group B Tier 5: security-review + perf-baseline → AUDIT_SECURITY +
|
|
251
|
+
// AUDIT_PERF (with legacy shims for 1-minor-release back-compat).
|
|
252
|
+
// v2.13.1 Group A: add MUT_REPORT (same rd-side hard block rationale as
|
|
253
|
+
// FEATURE_TABLE).
|
|
254
|
+
const BUGFIX_TABLE = {
|
|
255
|
+
'prd:handed-off': [PRD_CONTENT],
|
|
256
|
+
'rd:implemented': [BUG_ANALYSIS],
|
|
257
|
+
'rd:qa-handoff': [
|
|
258
|
+
BUG_ANALYSIS,
|
|
259
|
+
CODE_REVIEW,
|
|
260
|
+
AUDIT_REQUIRES_HANDOFF,
|
|
261
|
+
AUDIT_SECURITY,
|
|
262
|
+
AUDIT_PERF,
|
|
263
|
+
KARPATHY_REVIEW,
|
|
264
|
+
THIRD_PARTY_REVIEW,
|
|
265
|
+
MUT_REPORT,
|
|
266
|
+
UNIT_TESTS,
|
|
267
|
+
QA_INITIATED
|
|
268
|
+
],
|
|
269
|
+
'qa:running': [TEST_CASES],
|
|
270
|
+
'qa:verdict-issued': [TEST_CASES, TEST_REPORT]
|
|
271
|
+
};
|
|
272
|
+
// Refactor: same as feature; refactor hard gates (coverage ≥ 95%) are enforced separately in peaks-rd SKILL.
|
|
273
|
+
const REFACTOR_TABLE = FEATURE_TABLE;
|
|
274
|
+
// Docs / chore: minimal gate — require PRD content before proceeding.
|
|
275
|
+
// Prevents jumping to implementation without planning.
|
|
276
|
+
const MINIMAL_TABLE = {
|
|
277
|
+
'prd:handed-off': [PRD_CONTENT]
|
|
278
|
+
};
|
|
279
|
+
// Config: security review is the only mandatory check (config changes can break auth, CORS, CSP, secrets handling).
|
|
280
|
+
// v2.11.0 D1/D4: SECURITY_FINDINGS dropped from qa:verdict-issued (peaks-rd owns security evidence).
|
|
281
|
+
const CONFIG_TABLE = {
|
|
282
|
+
'prd:handed-off': [PRD_CONTENT],
|
|
283
|
+
'rd:qa-handoff': [SECURITY_REVIEW],
|
|
284
|
+
'qa:verdict-issued': [TEST_REPORT]
|
|
285
|
+
};
|
|
286
|
+
const PREREQUISITES_BY_TYPE = {
|
|
287
|
+
feature: FEATURE_TABLE,
|
|
288
|
+
bugfix: BUGFIX_TABLE,
|
|
289
|
+
refactor: REFACTOR_TABLE,
|
|
290
|
+
docs: MINIMAL_TABLE,
|
|
291
|
+
config: CONFIG_TABLE,
|
|
292
|
+
chore: MINIMAL_TABLE
|
|
293
|
+
};
|
|
294
|
+
export function getPrerequisitesFor(role, newState, requestType = DEFAULT_REQUEST_TYPE) {
|
|
295
|
+
const table = PREREQUISITES_BY_TYPE[requestType];
|
|
296
|
+
return table[`${role}:${newState}`] ?? [];
|
|
297
|
+
}
|
|
298
|
+
function resolvePrerequisitePath(prerequisite, requestId) {
|
|
299
|
+
return prerequisite.relativePath.replace('<rid>', requestId);
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Resolve a prerequisite to an on-disk path, tolerating the numbered filename
|
|
303
|
+
* prefix that `request init` writes (e.g. `001-<rid>.md`). When the prerequisite
|
|
304
|
+
* path contains `<rid>`, we accept either the legacy bare `<rid>.md` form or any
|
|
305
|
+
* `NNN-<rid>.md` numbered form — mirroring the matcher in request-artifact-service.
|
|
306
|
+
* Returns the matched absolute path, or null when nothing matches.
|
|
307
|
+
*/
|
|
308
|
+
async function resolvePrerequisiteAbsolutePath(sessionRoot, prerequisite, requestId) {
|
|
309
|
+
const relative = resolvePrerequisitePath(prerequisite, requestId);
|
|
310
|
+
const exact = join(sessionRoot, relative);
|
|
311
|
+
if (await pathExists(exact)) {
|
|
312
|
+
return exact;
|
|
313
|
+
}
|
|
314
|
+
// Only `<rid>`-templated prerequisites can carry a numbered prefix; fixed paths
|
|
315
|
+
// (e.g. rd/tech-doc.md) are matched exactly above.
|
|
316
|
+
if (!prerequisite.relativePath.includes('<rid>')) {
|
|
317
|
+
return null;
|
|
318
|
+
}
|
|
319
|
+
const dir = dirname(exact);
|
|
320
|
+
const targetSuffix = `-${basename(exact)}`;
|
|
321
|
+
let entries;
|
|
322
|
+
try {
|
|
323
|
+
entries = await readdir(dir);
|
|
324
|
+
}
|
|
325
|
+
catch { // TODO(g2): legacy silent catch — grace: 1 minor release (v2.14.0)
|
|
326
|
+
return null;
|
|
327
|
+
}
|
|
328
|
+
const match = entries.find((name) => /^\d+-/.test(name) && name.endsWith(targetSuffix));
|
|
329
|
+
return match ? join(dir, match) : null;
|
|
330
|
+
}
|
|
331
|
+
export async function checkPrerequisites(options) {
|
|
332
|
+
const requirements = getPrerequisitesFor(options.role, options.newState, options.requestType);
|
|
333
|
+
if (requirements.length === 0) {
|
|
334
|
+
return { ok: true, missing: [], warnings: [] };
|
|
335
|
+
}
|
|
336
|
+
// Slice 006 simplifies the resolution to a 2-tier fallback. The
|
|
337
|
+
// per-change-id scope (`.peaks/_runtime/<sessionId>/<role>/`) is gone — new
|
|
338
|
+
// artifacts go to the session dir directly. The 2 tiers are:
|
|
339
|
+
// 1. `.peaks/_runtime/<sid>/<role>/...` (post-F3 canonical
|
|
340
|
+
// session home; primary).
|
|
341
|
+
// 2. `.peaks/_runtime/<sid>/<role>/...` (pre-F3 legacy session home;
|
|
342
|
+
// back-compat).
|
|
343
|
+
// The sessionId is preserved in the artifact body's frontmatter for
|
|
344
|
+
// human navigation; it is no longer a filesystem path key.
|
|
345
|
+
const canonicalSessionRoot = options.sessionId !== undefined
|
|
346
|
+
? join(options.projectRoot, '.peaks', '_runtime', options.sessionId)
|
|
347
|
+
: null;
|
|
348
|
+
const legacySessionRoot = options.sessionId !== undefined
|
|
349
|
+
? join(options.projectRoot, '.peaks', options.sessionId)
|
|
350
|
+
: null;
|
|
351
|
+
const missing = [];
|
|
352
|
+
const warnings = [];
|
|
353
|
+
for (const prerequisite of requirements) {
|
|
354
|
+
const relative = resolvePrerequisitePath(prerequisite, options.requestId);
|
|
355
|
+
const absolute = await resolvePrerequisiteAbsolutePathWithFallback(canonicalSessionRoot, legacySessionRoot, prerequisite, options.requestId);
|
|
356
|
+
if (absolute === null) {
|
|
357
|
+
// v2.13.2 AC-5: back-compat window for MUT_REPORT — missing
|
|
358
|
+
// file downgrades to a warning, NOT a hard failure. v2.14.0
|
|
359
|
+
// will remove this branch and re-elevate missing → throw.
|
|
360
|
+
const backCompat = prerequisite.backCompat === true;
|
|
361
|
+
if (backCompat) {
|
|
362
|
+
warnings.push({
|
|
363
|
+
path: relative,
|
|
364
|
+
code: 'mut-report-missing-deprecated-in-v2.14.0',
|
|
365
|
+
message: `${prerequisite.description} — file missing; soft-blocked under v2.13.2 1-minor back-compat window. v2.14.0 hard-fail.`
|
|
366
|
+
});
|
|
367
|
+
continue;
|
|
368
|
+
}
|
|
369
|
+
missing.push({ path: relative, description: prerequisite.description });
|
|
370
|
+
continue;
|
|
371
|
+
}
|
|
372
|
+
if (prerequisite.mustContain && prerequisite.mustContain.length > 0) {
|
|
373
|
+
const body = await readFile(absolute, 'utf8');
|
|
374
|
+
const lowered = body.toLowerCase();
|
|
375
|
+
const missingMarkers = prerequisite.mustContain.filter((marker) => !lowered.includes(marker.toLowerCase()));
|
|
376
|
+
if (missingMarkers.length > 0) {
|
|
377
|
+
missing.push({
|
|
378
|
+
path: relative,
|
|
379
|
+
description: `${prerequisite.description} — missing section(s): ${missingMarkers.join(', ')}`
|
|
380
|
+
});
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
if (prerequisite.headingMustContain && prerequisite.headingMustContain.length > 0) {
|
|
384
|
+
const body = await readFile(absolute, 'utf8');
|
|
385
|
+
// Slice 2.6.1.F: a line beginning with `#`, `##`, or `###` followed by
|
|
386
|
+
// the marker (case-insensitive). Fenced code blocks are NOT excluded
|
|
387
|
+
// here — a "heading" inside a code fence is rare and, when present,
|
|
388
|
+
// should still be reported as missing to keep the contract strict.
|
|
389
|
+
const headingLines = body
|
|
390
|
+
.split('\n')
|
|
391
|
+
.map((line) => line.trim())
|
|
392
|
+
.filter((line) => /^#{1,3}\s+/.test(line));
|
|
393
|
+
const loweredHeadings = headingLines.map((h) => h.toLowerCase());
|
|
394
|
+
const missingHeadings = prerequisite.headingMustContain.filter((marker) => !loweredHeadings.some((h) => h.includes(marker.toLowerCase())));
|
|
395
|
+
if (missingHeadings.length > 0) {
|
|
396
|
+
missing.push({
|
|
397
|
+
path: relative,
|
|
398
|
+
description: `${prerequisite.description} — missing heading(s): ${missingHeadings.join(', ')}`
|
|
399
|
+
});
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
if (prerequisite.mustContainAny && prerequisite.mustContainAny.length > 0) {
|
|
403
|
+
const body = await readFile(absolute, 'utf8');
|
|
404
|
+
const lowered = body.toLowerCase();
|
|
405
|
+
const hitAny = prerequisite.mustContainAny.some((marker) => lowered.includes(marker.toLowerCase()));
|
|
406
|
+
if (!hitAny) {
|
|
407
|
+
missing.push({
|
|
408
|
+
path: relative,
|
|
409
|
+
description: `${prerequisite.description} — none of the escape-hatch markers present: ${prerequisite.mustContainAny.join(', ')}`
|
|
410
|
+
});
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
const result = { ok: missing.length === 0, missing, warnings };
|
|
415
|
+
emitPrereqTransitionEvent({
|
|
416
|
+
projectRoot: options.projectRoot,
|
|
417
|
+
sessionId: options.sessionId ?? '',
|
|
418
|
+
role: options.role,
|
|
419
|
+
newState: options.newState,
|
|
420
|
+
requestId: options.requestId,
|
|
421
|
+
result
|
|
422
|
+
});
|
|
423
|
+
return result;
|
|
424
|
+
}
|
|
425
|
+
// Slice C of v2.11.1 — observability hook #7/7. Fire-and-forget per
|
|
426
|
+
// PRD Q4. The synchronous emit never throws and never blocks the
|
|
427
|
+
// prereq check return value.
|
|
428
|
+
function emitPrereqTransitionEvent(opts) {
|
|
429
|
+
if (opts.sessionId === undefined)
|
|
430
|
+
return;
|
|
431
|
+
emitObservabilityEvent({
|
|
432
|
+
schemaVersion: 1,
|
|
433
|
+
ts: new Date().toISOString(),
|
|
434
|
+
sessionId: opts.sessionId,
|
|
435
|
+
category: 'slice-transition',
|
|
436
|
+
sliceRid: opts.requestId,
|
|
437
|
+
detail: {
|
|
438
|
+
artifactRole: opts.role,
|
|
439
|
+
to: opts.newState,
|
|
440
|
+
prereqOk: opts.result.ok,
|
|
441
|
+
missingCount: opts.result.missing.length
|
|
442
|
+
}
|
|
443
|
+
}, { projectRoot: opts.projectRoot });
|
|
444
|
+
}
|
|
445
|
+
/**
|
|
446
|
+
* Resolve a prerequisite to an on-disk path, with a 2-tier fallback
|
|
447
|
+
* (slice 006 — the per-change-id tier was dropped because per-change-id
|
|
448
|
+
* dirs are no longer created):
|
|
449
|
+
* 1. `<canonicalSessionRoot>/<relative>` (post-F3 canonical session
|
|
450
|
+
* home, when `canonicalSessionRoot` is provided).
|
|
451
|
+
* 2. `<legacySessionRoot>/<relative>` (pre-F3 legacy session home,
|
|
452
|
+
* when `legacySessionRoot` is provided).
|
|
453
|
+
* Tolerates the numbered filename prefix that `request init` writes
|
|
454
|
+
* (e.g. `001-<rid>.md`) at every tier. Returns the matched absolute
|
|
455
|
+
* path, or null when nothing matches.
|
|
456
|
+
*
|
|
457
|
+
* v2.12.0 Group B Tier 5: if `prerequisite.legacyRelativePath` is set
|
|
458
|
+
* and neither primary session-root tier resolved, the resolver tries
|
|
459
|
+
* the legacy relative path at BOTH session roots before declaring the
|
|
460
|
+
* prereq missing. This is the 1-minor-release back-compat mechanism
|
|
461
|
+
* for artifacts that moved location (e.g. `rd/security-review.md` →
|
|
462
|
+
* `audit/security.md`).
|
|
463
|
+
*/
|
|
464
|
+
async function resolvePrerequisiteAbsolutePathWithFallback(canonicalSessionRoot, legacySessionRoot, prerequisite, requestId) {
|
|
465
|
+
const roots = [canonicalSessionRoot, legacySessionRoot];
|
|
466
|
+
// First pass: try the primary relativePath at every root.
|
|
467
|
+
for (const root of roots) {
|
|
468
|
+
if (root === null)
|
|
469
|
+
continue;
|
|
470
|
+
const found = await resolvePrerequisiteAbsolutePath(root, prerequisite, requestId);
|
|
471
|
+
if (found !== null)
|
|
472
|
+
return found;
|
|
473
|
+
}
|
|
474
|
+
// Second pass: if a legacyRelativePath is declared, try it at every
|
|
475
|
+
// root. Only the relativePath is swapped — the same numbered-prefix
|
|
476
|
+
// tolerance applies via the shared resolver.
|
|
477
|
+
if (prerequisite.legacyRelativePath !== undefined) {
|
|
478
|
+
const legacyPrereq = {
|
|
479
|
+
...prerequisite,
|
|
480
|
+
relativePath: prerequisite.legacyRelativePath
|
|
481
|
+
};
|
|
482
|
+
for (const root of roots) {
|
|
483
|
+
if (root === null)
|
|
484
|
+
continue;
|
|
485
|
+
const found = await resolvePrerequisiteAbsolutePath(root, legacyPrereq, requestId);
|
|
486
|
+
if (found !== null)
|
|
487
|
+
return found;
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
return null;
|
|
491
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export type ArtifactProvider = 'github' | 'gitlab';
|
|
2
|
+
export type ArtifactInitPlan = {
|
|
3
|
+
provider: ArtifactProvider;
|
|
4
|
+
name: string;
|
|
5
|
+
visibility: 'private';
|
|
6
|
+
localPath: string;
|
|
7
|
+
remoteFirst: boolean;
|
|
8
|
+
dryRun: boolean;
|
|
9
|
+
plannedActions: string[];
|
|
10
|
+
tokenPolicy: string;
|
|
11
|
+
};
|
|
12
|
+
export type GuidedArtifactSetup = {
|
|
13
|
+
step: 'detect' | 'configure' | 'validate' | 'complete';
|
|
14
|
+
workspaceId: string | null;
|
|
15
|
+
workspacePath: string | null;
|
|
16
|
+
provider: ArtifactProvider | null;
|
|
17
|
+
repoOwner: string | null;
|
|
18
|
+
repoName: string | null;
|
|
19
|
+
localPath: string;
|
|
20
|
+
remoteUrl: string | null;
|
|
21
|
+
validationResult: {
|
|
22
|
+
workspaceExists: boolean;
|
|
23
|
+
gitAvailable: boolean;
|
|
24
|
+
ghTokenAvailable: boolean;
|
|
25
|
+
sshKeyAvailable: boolean;
|
|
26
|
+
};
|
|
27
|
+
nextStep: string;
|
|
28
|
+
guidance: string[];
|
|
29
|
+
};
|
|
30
|
+
export declare function createArtifactInitPlan(options: {
|
|
31
|
+
provider: ArtifactProvider;
|
|
32
|
+
name: string;
|
|
33
|
+
localPath?: string;
|
|
34
|
+
dryRun?: boolean;
|
|
35
|
+
}): ArtifactInitPlan;
|
|
36
|
+
export declare function createGuidedArtifactSetup(): GuidedArtifactSetup;
|
|
37
|
+
export declare function getArtifactStatus(): {
|
|
38
|
+
mode: string;
|
|
39
|
+
supportedProviders: ArtifactProvider[];
|
|
40
|
+
localPath: string;
|
|
41
|
+
configured: boolean;
|
|
42
|
+
nextActions: string[];
|
|
43
|
+
};
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { execFileSync } from 'node:child_process';
|
|
3
|
+
import { homedir } from 'node:os';
|
|
4
|
+
import { resolve } from 'node:path';
|
|
5
|
+
import { getWorkspaceConfigForPath } from '../config/config-service.js';
|
|
6
|
+
import { getArtifactRemoteRepo, getLocalArtifactPath } from './workspace-service.js';
|
|
7
|
+
function getRemoteUrl(artifactRepo) {
|
|
8
|
+
if (!artifactRepo)
|
|
9
|
+
return null;
|
|
10
|
+
if (artifactRepo.provider === 'github') {
|
|
11
|
+
return `https://github.com/${artifactRepo.owner}/${artifactRepo.name}.git`;
|
|
12
|
+
}
|
|
13
|
+
return `https://gitlab.com/${artifactRepo.owner}/${artifactRepo.name}.git`;
|
|
14
|
+
}
|
|
15
|
+
function hasGit() {
|
|
16
|
+
try {
|
|
17
|
+
execFileSync('git', ['--version']);
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function hasSshKey() {
|
|
25
|
+
const sshDir = resolve(process.env.HOME ?? homedir(), '.ssh');
|
|
26
|
+
const keyNames = ['id_ed25519', 'id_rsa', 'id_ecdsa', 'id_dsa'];
|
|
27
|
+
return keyNames.some((keyName) => existsSync(resolve(sshDir, keyName)));
|
|
28
|
+
}
|
|
29
|
+
export function createArtifactInitPlan(options) {
|
|
30
|
+
return {
|
|
31
|
+
provider: options.provider,
|
|
32
|
+
name: options.name,
|
|
33
|
+
visibility: 'private',
|
|
34
|
+
localPath: options.localPath ?? '.peaks-artifacts',
|
|
35
|
+
remoteFirst: true,
|
|
36
|
+
dryRun: options.dryRun ?? true,
|
|
37
|
+
plannedActions: [
|
|
38
|
+
`confirm creation of private ${options.provider} artifact repository`,
|
|
39
|
+
'verify authentication without storing tokens',
|
|
40
|
+
`create or link remote artifact repository ${options.name}`,
|
|
41
|
+
`prepare local working copy at ${options.localPath ?? '.peaks-artifacts'}`,
|
|
42
|
+
'write artifact repository creation report'
|
|
43
|
+
],
|
|
44
|
+
tokenPolicy: 'Use provider auth/CLI or environment tokens only; never write tokens to skills, artifacts, config, or reports.'
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
export function createGuidedArtifactSetup() {
|
|
48
|
+
const workspace = getWorkspaceConfigForPath(process.cwd());
|
|
49
|
+
const artifactRepo = workspace ? getArtifactRemoteRepo(workspace) : null;
|
|
50
|
+
const validationResult = {
|
|
51
|
+
workspaceExists: workspace !== null,
|
|
52
|
+
gitAvailable: hasGit(),
|
|
53
|
+
ghTokenAvailable: Boolean(process.env.GH_TOKEN?.trim()),
|
|
54
|
+
sshKeyAvailable: hasSshKey()
|
|
55
|
+
};
|
|
56
|
+
const localPath = workspace ? getLocalArtifactPath(workspace) : '.peaks-artifacts';
|
|
57
|
+
const remoteUrl = getRemoteUrl(artifactRepo ?? undefined);
|
|
58
|
+
return {
|
|
59
|
+
step: 'detect',
|
|
60
|
+
workspaceId: workspace?.workspaceId ?? null,
|
|
61
|
+
workspacePath: workspace?.rootPath ?? null,
|
|
62
|
+
provider: artifactRepo?.provider ?? null,
|
|
63
|
+
repoOwner: artifactRepo?.owner ?? null,
|
|
64
|
+
repoName: artifactRepo?.name ?? null,
|
|
65
|
+
localPath,
|
|
66
|
+
remoteUrl,
|
|
67
|
+
validationResult,
|
|
68
|
+
nextStep: workspace ? (artifactRepo ? 'validate' : 'complete') : 'configure',
|
|
69
|
+
guidance: [
|
|
70
|
+
'Step 1: Detect current workspace and environment',
|
|
71
|
+
` - Workspace: ${workspace?.workspaceId ?? 'not configured'}`,
|
|
72
|
+
` - Git available: ${validationResult.gitAvailable ? 'yes' : 'no'}`,
|
|
73
|
+
` - GH_TOKEN environment variable: ${validationResult.ghTokenAvailable ? 'available' : 'not set'}`,
|
|
74
|
+
` - SSH key for code push: ${validationResult.sshKeyAvailable ? 'available' : 'not found'}`,
|
|
75
|
+
'',
|
|
76
|
+
'Step 2: Configure artifact repository',
|
|
77
|
+
' - Optional for local-only storage',
|
|
78
|
+
' - Run: peaks artifacts init --provider github --name <repo> --dry-run',
|
|
79
|
+
' - Or add to workspace: peaks config workspace add --id <id> --provider github --repo-owner <owner> --repo-name <name>',
|
|
80
|
+
'',
|
|
81
|
+
'Step 3: Validate setup',
|
|
82
|
+
' - Run: peaks sc status',
|
|
83
|
+
' - Run: peaks artifacts workspace',
|
|
84
|
+
'',
|
|
85
|
+
'Step 4: Complete',
|
|
86
|
+
artifactRepo ? ' - Artifact sync is ready when workspace has remote artifact storage configured' : ' - Local artifact storage is ready'
|
|
87
|
+
]
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
export function getArtifactStatus() {
|
|
91
|
+
return {
|
|
92
|
+
mode: 'remote-first',
|
|
93
|
+
supportedProviders: ['github', 'gitlab'],
|
|
94
|
+
localPath: '.peaks-artifacts',
|
|
95
|
+
configured: false,
|
|
96
|
+
nextActions: ['Run peaks artifacts init --provider gitlab --name <repo> --dry-run']
|
|
97
|
+
};
|
|
98
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { RequestType } from './artifact-prerequisites.js';
|
|
2
|
+
/**
|
|
3
|
+
* Role discriminator for the five request-artifact templates. Lives here
|
|
4
|
+
* (rather than in `request-artifact-service.ts`) so this pure-function
|
|
5
|
+
* module has no dependency on the service. The service re-exports it for
|
|
6
|
+
* back-compat with external callers.
|
|
7
|
+
*/
|
|
8
|
+
export type RequestArtifactRole = 'prd' | 'ui' | 'rd' | 'qa' | 'sc';
|
|
9
|
+
/**
|
|
10
|
+
* Handoff path helpers.
|
|
11
|
+
*
|
|
12
|
+
* Slice 2026-06-29-change-id-root-removal: all handoff paths now key
|
|
13
|
+
* on the session-id axis (`.peaks/_runtime/<sessionId>/<role>/...`)
|
|
14
|
+
* instead of the deleted change-id axis
|
|
15
|
+
* (`.peaks/_runtime/change/<sessionId>/<role>/...`). The session
|
|
16
|
+
* dir is gitignored; the hard ban on `.peaks/_runtime/<id>/`
|
|
17
|
+
* siblings remains in force.
|
|
18
|
+
*
|
|
19
|
+
* The render functions below emit markdown bodies that quote these
|
|
20
|
+
* paths verbatim as write instructions — if the body contains a
|
|
21
|
+
* banned top-level path, the sub-agent prompt will recreate the
|
|
22
|
+
* forbidden dir on its next write.
|
|
23
|
+
*/
|
|
24
|
+
/** Canonical handoff path for a downstream role's request artifact. */
|
|
25
|
+
export declare function formatHandoffPath(sessionId: string, role: string, requestId: string): string;
|
|
26
|
+
/** Canonical path for the SC commit-boundary handoff artifact. */
|
|
27
|
+
export declare function formatCommitBoundaryPath(sessionId: string, requestId: string): string;
|
|
28
|
+
/** Canonical path for the txt skill-usage lessons log under a session scope. */
|
|
29
|
+
export declare function formatSkillUsageLessonsPath(sessionId: string): string;
|
|
30
|
+
export declare function renderTemplate(role: RequestArtifactRole, requestId: string, sessionId: string, changeSlug: string, timestamp: string, requestType: RequestType): string;
|