peaks-loop 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +51 -0
- package/CHANGELOG.md +3136 -0
- package/LICENSE +21 -0
- package/README-en.md +281 -0
- package/README.md +365 -0
- package/agents/karpathy-reviewer.md +229 -0
- package/bin/peaks.js +2 -0
- package/dist/src/cli/cli-helpers.d.ts +25 -0
- package/dist/src/cli/cli-helpers.js +78 -0
- package/dist/src/cli/commands/agent-commands.d.ts +20 -0
- package/dist/src/cli/commands/agent-commands.js +48 -0
- package/dist/src/cli/commands/audit-commands.d.ts +28 -0
- package/dist/src/cli/commands/audit-commands.js +437 -0
- package/dist/src/cli/commands/capability-commands.d.ts +16 -0
- package/dist/src/cli/commands/capability-commands.js +45 -0
- package/dist/src/cli/commands/capability-worker-config-sc-commands.d.ts +3 -0
- package/dist/src/cli/commands/capability-worker-config-sc-commands.js +10 -0
- package/dist/src/cli/commands/classify-classify-commands.d.ts +19 -0
- package/dist/src/cli/commands/classify-classify-commands.js +151 -0
- package/dist/src/cli/commands/code-review-commands.d.ts +34 -0
- package/dist/src/cli/commands/code-review-commands.js +83 -0
- package/dist/src/cli/commands/codegraph-commands.d.ts +3 -0
- package/dist/src/cli/commands/codegraph-commands.js +99 -0
- package/dist/src/cli/commands/complexity-commands.d.ts +9 -0
- package/dist/src/cli/commands/complexity-commands.js +34 -0
- package/dist/src/cli/commands/config-commands.d.ts +3 -0
- package/dist/src/cli/commands/config-commands.js +220 -0
- package/dist/src/cli/commands/context-builder-commands.d.ts +11 -0
- package/dist/src/cli/commands/context-builder-commands.js +85 -0
- package/dist/src/cli/commands/context-commands.d.ts +21 -0
- package/dist/src/cli/commands/context-commands.js +254 -0
- package/dist/src/cli/commands/contract-commands.d.ts +26 -0
- package/dist/src/cli/commands/contract-commands.js +114 -0
- package/dist/src/cli/commands/core/artifacts-command.d.ts +3 -0
- package/dist/src/cli/commands/core/artifacts-command.js +62 -0
- package/dist/src/cli/commands/core/binding-commands.d.ts +3 -0
- package/dist/src/cli/commands/core/binding-commands.js +58 -0
- package/dist/src/cli/commands/core/doctor-command.d.ts +11 -0
- package/dist/src/cli/commands/core/doctor-command.js +204 -0
- package/dist/src/cli/commands/core/memory-command.d.ts +3 -0
- package/dist/src/cli/commands/core/memory-command.js +98 -0
- package/dist/src/cli/commands/core/profile-command.d.ts +3 -0
- package/dist/src/cli/commands/core/profile-command.js +9 -0
- package/dist/src/cli/commands/core/proxy-command.d.ts +3 -0
- package/dist/src/cli/commands/core/proxy-command.js +26 -0
- package/dist/src/cli/commands/core/session-command.d.ts +3 -0
- package/dist/src/cli/commands/core/session-command.js +213 -0
- package/dist/src/cli/commands/core/skill-command.d.ts +3 -0
- package/dist/src/cli/commands/core/skill-command.js +275 -0
- package/dist/src/cli/commands/core/standards-command.d.ts +3 -0
- package/dist/src/cli/commands/core/standards-command.js +95 -0
- package/dist/src/cli/commands/core-artifact-commands.d.ts +15 -0
- package/dist/src/cli/commands/core-artifact-commands.js +31 -0
- package/dist/src/cli/commands/dispatch-commands.d.ts +10 -0
- package/dist/src/cli/commands/dispatch-commands.js +351 -0
- package/dist/src/cli/commands/dispatch-from-dag.d.ts +3 -0
- package/dist/src/cli/commands/dispatch-from-dag.js +251 -0
- package/dist/src/cli/commands/doc-commands.d.ts +11 -0
- package/dist/src/cli/commands/doc-commands.js +65 -0
- package/dist/src/cli/commands/feedback-commands.d.ts +18 -0
- package/dist/src/cli/commands/feedback-commands.js +145 -0
- package/dist/src/cli/commands/final-review-commands.d.ts +31 -0
- package/dist/src/cli/commands/final-review-commands.js +161 -0
- package/dist/src/cli/commands/fixture-commands.d.ts +32 -0
- package/dist/src/cli/commands/fixture-commands.js +91 -0
- package/dist/src/cli/commands/fork-commands.d.ts +16 -0
- package/dist/src/cli/commands/fork-commands.js +163 -0
- package/dist/src/cli/commands/gate-commands.d.ts +3 -0
- package/dist/src/cli/commands/gate-commands.js +117 -0
- package/dist/src/cli/commands/heartbeat-commands.d.ts +3 -0
- package/dist/src/cli/commands/heartbeat-commands.js +135 -0
- package/dist/src/cli/commands/hook-handle.d.ts +17 -0
- package/dist/src/cli/commands/hook-handle.js +157 -0
- package/dist/src/cli/commands/hooks-commands.d.ts +3 -0
- package/dist/src/cli/commands/hooks-commands.js +156 -0
- package/dist/src/cli/commands/impact-commands.d.ts +15 -0
- package/dist/src/cli/commands/impact-commands.js +62 -0
- package/dist/src/cli/commands/legacy-commands.d.ts +11 -0
- package/dist/src/cli/commands/legacy-commands.js +32 -0
- package/dist/src/cli/commands/log-commands.d.ts +17 -0
- package/dist/src/cli/commands/log-commands.js +64 -0
- package/dist/src/cli/commands/loop-commands.d.ts +21 -0
- package/dist/src/cli/commands/loop-commands.js +128 -0
- package/dist/src/cli/commands/loop-eval-commands.d.ts +20 -0
- package/dist/src/cli/commands/loop-eval-commands.js +526 -0
- package/dist/src/cli/commands/memory-commands.d.ts +23 -0
- package/dist/src/cli/commands/memory-commands.js +129 -0
- package/dist/src/cli/commands/migrate-1-4-1-command.d.ts +11 -0
- package/dist/src/cli/commands/migrate-1-4-1-command.js +34 -0
- package/dist/src/cli/commands/migrate-v2-10-to-v2-11-command.d.ts +20 -0
- package/dist/src/cli/commands/migrate-v2-10-to-v2-11-command.js +52 -0
- package/dist/src/cli/commands/mut-commands.d.ts +20 -0
- package/dist/src/cli/commands/mut-commands.js +239 -0
- package/dist/src/cli/commands/observability-commands.d.ts +22 -0
- package/dist/src/cli/commands/observability-commands.js +201 -0
- package/dist/src/cli/commands/openspec-commands.d.ts +3 -0
- package/dist/src/cli/commands/openspec-commands.js +237 -0
- package/dist/src/cli/commands/perf-audit-commands.d.ts +22 -0
- package/dist/src/cli/commands/perf-audit-commands.js +132 -0
- package/dist/src/cli/commands/perf-commands.d.ts +3 -0
- package/dist/src/cli/commands/perf-commands.js +41 -0
- package/dist/src/cli/commands/playwright-commands.d.ts +95 -0
- package/dist/src/cli/commands/playwright-commands.js +432 -0
- package/dist/src/cli/commands/prd-blocks-commands.d.ts +18 -0
- package/dist/src/cli/commands/prd-blocks-commands.js +50 -0
- package/dist/src/cli/commands/prd-commands.d.ts +18 -0
- package/dist/src/cli/commands/prd-commands.js +141 -0
- package/dist/src/cli/commands/preferences-commands.d.ts +2 -0
- package/dist/src/cli/commands/preferences-commands.js +197 -0
- package/dist/src/cli/commands/project-commands.d.ts +3 -0
- package/dist/src/cli/commands/project-commands.js +248 -0
- package/dist/src/cli/commands/qa-business-review-commands.d.ts +17 -0
- package/dist/src/cli/commands/qa-business-review-commands.js +148 -0
- package/dist/src/cli/commands/qa-commands.d.ts +94 -0
- package/dist/src/cli/commands/qa-commands.js +271 -0
- package/dist/src/cli/commands/release-commands.d.ts +24 -0
- package/dist/src/cli/commands/release-commands.js +231 -0
- package/dist/src/cli/commands/request-commands.d.ts +3 -0
- package/dist/src/cli/commands/request-commands.js +509 -0
- package/dist/src/cli/commands/retrospective-commands.d.ts +12 -0
- package/dist/src/cli/commands/retrospective-commands.js +175 -0
- package/dist/src/cli/commands/reviewer-commands.d.ts +14 -0
- package/dist/src/cli/commands/reviewer-commands.js +64 -0
- package/dist/src/cli/commands/role-commands.d.ts +13 -0
- package/dist/src/cli/commands/role-commands.js +85 -0
- package/dist/src/cli/commands/sc-commands.d.ts +3 -0
- package/dist/src/cli/commands/sc-commands.js +45 -0
- package/dist/src/cli/commands/scan-commands.d.ts +3 -0
- package/dist/src/cli/commands/scan-commands.js +445 -0
- package/dist/src/cli/commands/security-audit-commands.d.ts +23 -0
- package/dist/src/cli/commands/security-audit-commands.js +132 -0
- package/dist/src/cli/commands/session-checkpoint-command.d.ts +10 -0
- package/dist/src/cli/commands/session-checkpoint-command.js +100 -0
- package/dist/src/cli/commands/session-resume-command.d.ts +11 -0
- package/dist/src/cli/commands/session-resume-command.js +83 -0
- package/dist/src/cli/commands/share-commands.d.ts +17 -0
- package/dist/src/cli/commands/share-commands.js +296 -0
- package/dist/src/cli/commands/skill-conformance-commands.d.ts +9 -0
- package/dist/src/cli/commands/skill-conformance-commands.js +39 -0
- package/dist/src/cli/commands/slice-commands.d.ts +24 -0
- package/dist/src/cli/commands/slice-commands.js +492 -0
- package/dist/src/cli/commands/slice-integrate-commands.d.ts +11 -0
- package/dist/src/cli/commands/slice-integrate-commands.js +74 -0
- package/dist/src/cli/commands/slice-review-commands.d.ts +23 -0
- package/dist/src/cli/commands/slice-review-commands.js +162 -0
- package/dist/src/cli/commands/smoke-commands.d.ts +21 -0
- package/dist/src/cli/commands/smoke-commands.js +203 -0
- package/dist/src/cli/commands/solo-commands.d.ts +80 -0
- package/dist/src/cli/commands/solo-commands.js +435 -0
- package/dist/src/cli/commands/sop-commands.d.ts +3 -0
- package/dist/src/cli/commands/sop-commands.js +215 -0
- package/dist/src/cli/commands/statusline-commands.d.ts +3 -0
- package/dist/src/cli/commands/statusline-commands.js +169 -0
- package/dist/src/cli/commands/sub-agent-commands.d.ts +22 -0
- package/dist/src/cli/commands/sub-agent-commands.js +19 -0
- package/dist/src/cli/commands/sub-agent-dispatch-guard.d.ts +55 -0
- package/dist/src/cli/commands/sub-agent-dispatch-guard.js +57 -0
- package/dist/src/cli/commands/sub-agent-shared.d.ts +99 -0
- package/dist/src/cli/commands/sub-agent-shared.js +67 -0
- package/dist/src/cli/commands/test-commands.d.ts +47 -0
- package/dist/src/cli/commands/test-commands.js +204 -0
- package/dist/src/cli/commands/understand-commands.d.ts +3 -0
- package/dist/src/cli/commands/understand-commands.js +112 -0
- package/dist/src/cli/commands/upgrade-commands.d.ts +23 -0
- package/dist/src/cli/commands/upgrade-commands.js +119 -0
- package/dist/src/cli/commands/user-touchpoint-commands.d.ts +18 -0
- package/dist/src/cli/commands/user-touchpoint-commands.js +78 -0
- package/dist/src/cli/commands/verdict-aggregate-command.d.ts +14 -0
- package/dist/src/cli/commands/verdict-aggregate-command.js +106 -0
- package/dist/src/cli/commands/worker-commands.d.ts +3 -0
- package/dist/src/cli/commands/worker-commands.js +52 -0
- package/dist/src/cli/commands/workflow-commands.d.ts +3 -0
- package/dist/src/cli/commands/workflow-commands.js +535 -0
- package/dist/src/cli/commands/workflow-plan-commands.d.ts +39 -0
- package/dist/src/cli/commands/workflow-plan-commands.js +163 -0
- package/dist/src/cli/commands/workspace/clean-command.d.ts +14 -0
- package/dist/src/cli/commands/workspace/clean-command.js +49 -0
- package/dist/src/cli/commands/workspace/helpers.d.ts +28 -0
- package/dist/src/cli/commands/workspace/helpers.js +87 -0
- package/dist/src/cli/commands/workspace/init-command.d.ts +121 -0
- package/dist/src/cli/commands/workspace/init-command.js +436 -0
- package/dist/src/cli/commands/workspace/migrate-command.d.ts +11 -0
- package/dist/src/cli/commands/workspace/migrate-command.js +91 -0
- package/dist/src/cli/commands/workspace/reconcile-command.d.ts +14 -0
- package/dist/src/cli/commands/workspace/reconcile-command.js +103 -0
- package/dist/src/cli/commands/workspace-commands.d.ts +18 -0
- package/dist/src/cli/commands/workspace-commands.js +50 -0
- package/dist/src/cli/index.d.ts +1 -0
- package/dist/src/cli/index.js +30 -0
- package/dist/src/cli/program.d.ts +5 -0
- package/dist/src/cli/program.js +336 -0
- package/dist/src/hooks/pre-tool-use-sub-agent.d.ts +28 -0
- package/dist/src/hooks/pre-tool-use-sub-agent.js +105 -0
- package/dist/src/lib/render/message-renderer.d.ts +20 -0
- package/dist/src/lib/render/message-renderer.js +80 -0
- package/dist/src/services/agent/ecc-agent-service.d.ts +47 -0
- package/dist/src/services/agent/ecc-agent-service.js +143 -0
- package/dist/src/services/artifacts/artifact-lint-service.d.ts +23 -0
- package/dist/src/services/artifacts/artifact-lint-service.js +99 -0
- package/dist/src/services/artifacts/artifact-prerequisites.d.ts +78 -0
- package/dist/src/services/artifacts/artifact-prerequisites.js +491 -0
- package/dist/src/services/artifacts/artifact-service.d.ts +43 -0
- package/dist/src/services/artifacts/artifact-service.js +98 -0
- package/dist/src/services/artifacts/artifact-templates.d.ts +30 -0
- package/dist/src/services/artifacts/artifact-templates.js +302 -0
- package/dist/src/services/artifacts/repair-cycle-service.d.ts +23 -0
- package/dist/src/services/artifacts/repair-cycle-service.js +52 -0
- package/dist/src/services/artifacts/request-artifact-service.d.ts +116 -0
- package/dist/src/services/artifacts/request-artifact-service.js +451 -0
- package/dist/src/services/artifacts/request-artifact-state-helpers.d.ts +51 -0
- package/dist/src/services/artifacts/request-artifact-state-helpers.js +114 -0
- package/dist/src/services/artifacts/workspace-service.d.ts +34 -0
- package/dist/src/services/artifacts/workspace-service.js +272 -0
- package/dist/src/services/audit/artifact-writer.d.ts +93 -0
- package/dist/src/services/audit/artifact-writer.js +303 -0
- package/dist/src/services/audit/audit-goal-service.d.ts +35 -0
- package/dist/src/services/audit/audit-goal-service.js +75 -0
- package/dist/src/services/audit/audit-goal-types.d.ts +40 -0
- package/dist/src/services/audit/audit-goal-types.js +15 -0
- package/dist/src/services/audit/backing-detector.d.ts +24 -0
- package/dist/src/services/audit/backing-detector.js +59 -0
- package/dist/src/services/audit/classifier.d.ts +38 -0
- package/dist/src/services/audit/classifier.js +134 -0
- package/dist/src/services/audit/decision-writer.d.ts +76 -0
- package/dist/src/services/audit/decision-writer.js +217 -0
- package/dist/src/services/audit/enforcers/active-skill-resolver.d.ts +29 -0
- package/dist/src/services/audit/enforcers/active-skill-resolver.js +71 -0
- package/dist/src/services/audit/enforcers/design-draft-confirm.d.ts +24 -0
- package/dist/src/services/audit/enforcers/design-draft-confirm.js +58 -0
- package/dist/src/services/audit/enforcers/lint-audit-regression.d.ts +21 -0
- package/dist/src/services/audit/enforcers/lint-audit-regression.js +86 -0
- package/dist/src/services/audit/enforcers/lint-catalog-governance.d.ts +32 -0
- package/dist/src/services/audit/enforcers/lint-catalog-governance.js +48 -0
- package/dist/src/services/audit/enforcers/lint-cli-back.d.ts +16 -0
- package/dist/src/services/audit/enforcers/lint-cli-back.js +35 -0
- package/dist/src/services/audit/enforcers/lint-output-style.d.ts +11 -0
- package/dist/src/services/audit/enforcers/lint-output-style.js +94 -0
- package/dist/src/services/audit/enforcers/lint-reference-integrity.d.ts +6 -0
- package/dist/src/services/audit/enforcers/lint-reference-integrity.js +83 -0
- package/dist/src/services/audit/enforcers/lint-reference-shape.d.ts +30 -0
- package/dist/src/services/audit/enforcers/lint-reference-shape.js +272 -0
- package/dist/src/services/audit/enforcers/lint-style.d.ts +49 -0
- package/dist/src/services/audit/enforcers/lint-style.js +173 -0
- package/dist/src/services/audit/enforcers/lint-workflow-shape.d.ts +4 -0
- package/dist/src/services/audit/enforcers/lint-workflow-shape.js +100 -0
- package/dist/src/services/audit/enforcers/login-gate.d.ts +23 -0
- package/dist/src/services/audit/enforcers/login-gate.js +40 -0
- package/dist/src/services/audit/enforcers/mock-placement.d.ts +25 -0
- package/dist/src/services/audit/enforcers/mock-placement.js +48 -0
- package/dist/src/services/audit/enforcers/no-root-pollution.d.ts +21 -0
- package/dist/src/services/audit/enforcers/no-root-pollution.js +56 -0
- package/dist/src/services/audit/enforcers/pre-rd-scan.d.ts +22 -0
- package/dist/src/services/audit/enforcers/pre-rd-scan.js +23 -0
- package/dist/src/services/audit/enforcers/prototype-fidelity.d.ts +25 -0
- package/dist/src/services/audit/enforcers/prototype-fidelity.js +75 -0
- package/dist/src/services/audit/enforcers/resume-detection.d.ts +21 -0
- package/dist/src/services/audit/enforcers/resume-detection.js +52 -0
- package/dist/src/services/audit/enforcers/solo-code-ban.d.ts +23 -0
- package/dist/src/services/audit/enforcers/solo-code-ban.js +27 -0
- package/dist/src/services/audit/enforcers/sub-agent-sid.d.ts +25 -0
- package/dist/src/services/audit/enforcers/sub-agent-sid.js +63 -0
- package/dist/src/services/audit/prose-ratio-calculator.d.ts +45 -0
- package/dist/src/services/audit/prose-ratio-calculator.js +52 -0
- package/dist/src/services/audit/red-line-catalog-p2-a.d.ts +21 -0
- package/dist/src/services/audit/red-line-catalog-p2-a.js +229 -0
- package/dist/src/services/audit/red-line-catalog-p2-b.d.ts +19 -0
- package/dist/src/services/audit/red-line-catalog-p2-b.js +225 -0
- package/dist/src/services/audit/red-line-catalog.d.ts +51 -0
- package/dist/src/services/audit/red-line-catalog.js +195 -0
- package/dist/src/services/audit/red-lines-service.d.ts +23 -0
- package/dist/src/services/audit/red-lines-service.js +464 -0
- package/dist/src/services/audit/scanners/openspec-scanner.d.ts +15 -0
- package/dist/src/services/audit/scanners/openspec-scanner.js +55 -0
- package/dist/src/services/audit/scanners/rules-tree-scanner.d.ts +16 -0
- package/dist/src/services/audit/scanners/rules-tree-scanner.js +56 -0
- package/dist/src/services/audit/scanners/skills-tree-scanner.d.ts +17 -0
- package/dist/src/services/audit/scanners/skills-tree-scanner.js +46 -0
- package/dist/src/services/audit/static-service.d.ts +60 -0
- package/dist/src/services/audit/static-service.js +130 -0
- package/dist/src/services/audit/types.d.ts +86 -0
- package/dist/src/services/audit/types.js +13 -0
- package/dist/src/services/audit-independent/perf-audit-service.d.ts +151 -0
- package/dist/src/services/audit-independent/perf-audit-service.js +316 -0
- package/dist/src/services/audit-independent/security-audit-service.d.ts +155 -0
- package/dist/src/services/audit-independent/security-audit-service.js +316 -0
- package/dist/src/services/classify/classify-service.d.ts +42 -0
- package/dist/src/services/classify/classify-service.js +122 -0
- package/dist/src/services/classify/classify-types.d.ts +79 -0
- package/dist/src/services/classify/classify-types.js +90 -0
- package/dist/src/services/code-review/ecc-bridge.d.ts +148 -0
- package/dist/src/services/code-review/ecc-bridge.js +242 -0
- package/dist/src/services/code-review/ocr-service.d.ts +129 -0
- package/dist/src/services/code-review/ocr-service.js +369 -0
- package/dist/src/services/codegraph/codegraph-process-runner.d.ts +2 -0
- package/dist/src/services/codegraph/codegraph-process-runner.js +93 -0
- package/dist/src/services/codegraph/codegraph-service.d.ts +43 -0
- package/dist/src/services/codegraph/codegraph-service.js +160 -0
- package/dist/src/services/complexity/complexity-estimator.d.ts +34 -0
- package/dist/src/services/complexity/complexity-estimator.js +64 -0
- package/dist/src/services/config/config-migration.d.ts +45 -0
- package/dist/src/services/config/config-migration.js +154 -0
- package/dist/src/services/config/config-restore.d.ts +10 -0
- package/dist/src/services/config/config-restore.js +47 -0
- package/dist/src/services/config/config-rollback.d.ts +13 -0
- package/dist/src/services/config/config-rollback.js +26 -0
- package/dist/src/services/config/config-safety.d.ts +40 -0
- package/dist/src/services/config/config-safety.js +359 -0
- package/dist/src/services/config/config-service.d.ts +69 -0
- package/dist/src/services/config/config-service.js +814 -0
- package/dist/src/services/config/config-types.d.ts +119 -0
- package/dist/src/services/config/config-types.js +18 -0
- package/dist/src/services/config/model-routing.d.ts +4 -0
- package/dist/src/services/config/model-routing.js +17 -0
- package/dist/src/services/config/provider-service.d.ts +48 -0
- package/dist/src/services/config/provider-service.js +143 -0
- package/dist/src/services/config/proxy-service.d.ts +21 -0
- package/dist/src/services/config/proxy-service.js +44 -0
- package/dist/src/services/config/sidecar-store.d.ts +25 -0
- package/dist/src/services/config/sidecar-store.js +61 -0
- package/dist/src/services/config/workspace-state-service.d.ts +30 -0
- package/dist/src/services/config/workspace-state-service.js +142 -0
- package/dist/src/services/context/artifact-meta.d.ts +72 -0
- package/dist/src/services/context/artifact-meta.js +105 -0
- package/dist/src/services/context/auto-compact-dispatcher.d.ts +37 -0
- package/dist/src/services/context/auto-compact-dispatcher.js +190 -0
- package/dist/src/services/context/auto-compact-reader.d.ts +51 -0
- package/dist/src/services/context/auto-compact-reader.js +164 -0
- package/dist/src/services/context/auto-compact-types.d.ts +143 -0
- package/dist/src/services/context/auto-compact-types.js +36 -0
- package/dist/src/services/context/collector.d.ts +24 -0
- package/dist/src/services/context/collector.js +133 -0
- package/dist/src/services/context/context-builder.d.ts +30 -0
- package/dist/src/services/context/context-builder.js +78 -0
- package/dist/src/services/context/context-guard.d.ts +49 -0
- package/dist/src/services/context/context-guard.js +91 -0
- package/dist/src/services/context/context-schema.d.ts +415 -0
- package/dist/src/services/context/context-schema.js +73 -0
- package/dist/src/services/context/dispatch-context-guard.d.ts +27 -0
- package/dist/src/services/context/dispatch-context-guard.js +192 -0
- package/dist/src/services/context/doc-retriever.d.ts +26 -0
- package/dist/src/services/context/doc-retriever.js +51 -0
- package/dist/src/services/context/headroom-client.d.ts +34 -0
- package/dist/src/services/context/headroom-client.js +117 -0
- package/dist/src/services/context/headroom-fetcher.d.ts +6 -0
- package/dist/src/services/context/headroom-fetcher.js +28 -0
- package/dist/src/services/context/headroom-prefs.d.ts +46 -0
- package/dist/src/services/context/headroom-prefs.js +34 -0
- package/dist/src/services/context/index.d.ts +7 -0
- package/dist/src/services/context/index.js +6 -0
- package/dist/src/services/context/main-session-monitor.d.ts +77 -0
- package/dist/src/services/context/main-session-monitor.js +130 -0
- package/dist/src/services/context/renderer.d.ts +20 -0
- package/dist/src/services/context/renderer.js +30 -0
- package/dist/src/services/context/shared-channel.d.ts +93 -0
- package/dist/src/services/context/shared-channel.js +308 -0
- package/dist/src/services/context/threshold.d.ts +35 -0
- package/dist/src/services/context/threshold.js +76 -0
- package/dist/src/services/context/tokenizer.d.ts +12 -0
- package/dist/src/services/context/tokenizer.js +43 -0
- package/dist/src/services/context/types.d.ts +93 -0
- package/dist/src/services/context/types.js +9 -0
- package/dist/src/services/dashboard/project-dashboard-service.d.ts +91 -0
- package/dist/src/services/dashboard/project-dashboard-service.js +147 -0
- package/dist/src/services/dispatch/batch-counter.d.ts +27 -0
- package/dist/src/services/dispatch/batch-counter.js +102 -0
- package/dist/src/services/dispatch/contract-store.d.ts +63 -0
- package/dist/src/services/dispatch/contract-store.js +157 -0
- package/dist/src/services/dispatch/dispatch-record-writer.d.ts +138 -0
- package/dist/src/services/dispatch/dispatch-record-writer.js +460 -0
- package/dist/src/services/dispatch/heartbeat-truncator.d.ts +26 -0
- package/dist/src/services/dispatch/heartbeat-truncator.js +13 -0
- package/dist/src/services/dispatch/leak-detector.d.ts +11 -0
- package/dist/src/services/dispatch/leak-detector.js +72 -0
- package/dist/src/services/dispatch/slice-dag.d.ts +81 -0
- package/dist/src/services/dispatch/slice-dag.js +238 -0
- package/dist/src/services/dispatch/sub-agent-dispatcher.d.ts +239 -0
- package/dist/src/services/dispatch/sub-agent-dispatcher.js +382 -0
- package/dist/src/services/dispatch/test-tool-detection.d.ts +36 -0
- package/dist/src/services/dispatch/test-tool-detection.js +46 -0
- package/dist/src/services/doc/doc-generator.d.ts +38 -0
- package/dist/src/services/doc/doc-generator.js +122 -0
- package/dist/src/services/doctor/doctor-service.d.ts +149 -0
- package/dist/src/services/doctor/doctor-service.js +929 -0
- package/dist/src/services/feedback/feedback-promotion-service.d.ts +123 -0
- package/dist/src/services/feedback/feedback-promotion-service.js +300 -0
- package/dist/src/services/filesystem/file-lock.d.ts +11 -0
- package/dist/src/services/filesystem/file-lock.js +129 -0
- package/dist/src/services/final-review/final-review-service.d.ts +12 -0
- package/dist/src/services/final-review/final-review-service.js +52 -0
- package/dist/src/services/final-review/final-review-types.d.ts +42 -0
- package/dist/src/services/final-review/final-review-types.js +18 -0
- package/dist/src/services/fixture/fixture-capture-service.d.ts +87 -0
- package/dist/src/services/fixture/fixture-capture-service.js +317 -0
- package/dist/src/services/fixture/fixture-sanitize-service.d.ts +117 -0
- package/dist/src/services/fixture/fixture-sanitize-service.js +161 -0
- package/dist/src/services/fixture/index.d.ts +8 -0
- package/dist/src/services/fixture/index.js +8 -0
- package/dist/src/services/fork/fork-sync-state.d.ts +85 -0
- package/dist/src/services/fork/fork-sync-state.js +130 -0
- package/dist/src/services/fuzzy-matching/fuzzy-match-service.d.ts +15 -0
- package/dist/src/services/fuzzy-matching/fuzzy-match-service.js +56 -0
- package/dist/src/services/fuzzy-matching/fzf-pick-service.d.ts +68 -0
- package/dist/src/services/fuzzy-matching/fzf-pick-service.js +158 -0
- package/dist/src/services/fuzzy-matching/types.d.ts +20 -0
- package/dist/src/services/fuzzy-matching/types.js +1 -0
- package/dist/src/services/handoff/handoff-parser.d.ts +28 -0
- package/dist/src/services/handoff/handoff-parser.js +69 -0
- package/dist/src/services/handoff/handoff-types.d.ts +39 -0
- package/dist/src/services/handoff/handoff-types.js +19 -0
- package/dist/src/services/handoff/handoff-writer.d.ts +23 -0
- package/dist/src/services/handoff/handoff-writer.js +30 -0
- package/dist/src/services/hooks/output.d.ts +92 -0
- package/dist/src/services/hooks/output.js +111 -0
- package/dist/src/services/hooks/presence-marker-detector.d.ts +16 -0
- package/dist/src/services/hooks/presence-marker-detector.js +105 -0
- package/dist/src/services/ide/adapters/claude-code-adapter.d.ts +18 -0
- package/dist/src/services/ide/adapters/claude-code-adapter.js +91 -0
- package/dist/src/services/ide/adapters/codex-adapter.d.ts +46 -0
- package/dist/src/services/ide/adapters/codex-adapter.js +97 -0
- package/dist/src/services/ide/adapters/cursor-adapter.d.ts +36 -0
- package/dist/src/services/ide/adapters/cursor-adapter.js +84 -0
- package/dist/src/services/ide/adapters/hermes-adapter.d.ts +21 -0
- package/dist/src/services/ide/adapters/hermes-adapter.js +51 -0
- package/dist/src/services/ide/adapters/openclaw-adapter.d.ts +14 -0
- package/dist/src/services/ide/adapters/openclaw-adapter.js +42 -0
- package/dist/src/services/ide/adapters/trae-adapter.d.ts +42 -0
- package/dist/src/services/ide/adapters/trae-adapter.js +83 -0
- package/dist/src/services/ide/hook-protocol.d.ts +47 -0
- package/dist/src/services/ide/hook-protocol.js +74 -0
- package/dist/src/services/ide/hook-translator.d.ts +72 -0
- package/dist/src/services/ide/hook-translator.js +128 -0
- package/dist/src/services/ide/ide-detector.d.ts +10 -0
- package/dist/src/services/ide/ide-detector.js +19 -0
- package/dist/src/services/ide/ide-registry.d.ts +14 -0
- package/dist/src/services/ide/ide-registry.js +60 -0
- package/dist/src/services/ide/ide-types.d.ts +230 -0
- package/dist/src/services/ide/ide-types.js +2 -0
- package/dist/src/services/ide/resource-profile.d.ts +52 -0
- package/dist/src/services/ide/resource-profile.js +33 -0
- package/dist/src/services/ide/shared/atomic-json.d.ts +15 -0
- package/dist/src/services/ide/shared/atomic-json.js +58 -0
- package/dist/src/services/ide/shared/safe-path.d.ts +11 -0
- package/dist/src/services/ide/shared/safe-path.js +29 -0
- package/dist/src/services/impact/impact-scan-service.d.ts +66 -0
- package/dist/src/services/impact/impact-scan-service.js +197 -0
- package/dist/src/services/legacy/legacy-detector.d.ts +34 -0
- package/dist/src/services/legacy/legacy-detector.js +111 -0
- package/dist/src/services/log/log-commands-service.d.ts +54 -0
- package/dist/src/services/log/log-commands-service.js +83 -0
- package/dist/src/services/log/logger.d.ts +103 -0
- package/dist/src/services/log/logger.js +224 -0
- package/dist/src/services/log/redact.d.ts +32 -0
- package/dist/src/services/log/redact.js +89 -0
- package/dist/src/services/log/retention.d.ts +34 -0
- package/dist/src/services/log/retention.js +78 -0
- package/dist/src/services/loop/evaluator-dispatcher.d.ts +50 -0
- package/dist/src/services/loop/evaluator-dispatcher.js +551 -0
- package/dist/src/services/loop/monotonic-guard.d.ts +80 -0
- package/dist/src/services/loop/monotonic-guard.js +215 -0
- package/dist/src/services/loop/monotonic-runner.d.ts +55 -0
- package/dist/src/services/loop/monotonic-runner.js +197 -0
- package/dist/src/services/loop/run-driver.d.ts +70 -0
- package/dist/src/services/loop/run-driver.js +379 -0
- package/dist/src/services/loop/spec-service.d.ts +90 -0
- package/dist/src/services/loop/spec-service.js +497 -0
- package/dist/src/services/memory/llm-reranker.d.ts +174 -0
- package/dist/src/services/memory/llm-reranker.js +284 -0
- package/dist/src/services/memory/memory-search-service.d.ts +93 -0
- package/dist/src/services/memory/memory-search-service.js +117 -0
- package/dist/src/services/memory/project-context-service.d.ts +11 -0
- package/dist/src/services/memory/project-context-service.js +148 -0
- package/dist/src/services/memory/project-memory-service.d.ts +167 -0
- package/dist/src/services/memory/project-memory-service.js +817 -0
- package/dist/src/services/migration/v2-10-to-v2-11-service.d.ts +44 -0
- package/dist/src/services/migration/v2-10-to-v2-11-service.js +190 -0
- package/dist/src/services/migration/v2-10-to-v2-11-types.d.ts +41 -0
- package/dist/src/services/migration/v2-10-to-v2-11-types.js +23 -0
- package/dist/src/services/mode/bypass-tracker.d.ts +4 -0
- package/dist/src/services/mode/bypass-tracker.js +31 -0
- package/dist/src/services/mode/mode-enforcement.d.ts +14 -0
- package/dist/src/services/mode/mode-enforcement.js +84 -0
- package/dist/src/services/mut/assert-scanner.d.ts +6 -0
- package/dist/src/services/mut/assert-scanner.js +116 -0
- package/dist/src/services/mut/index.d.ts +8 -0
- package/dist/src/services/mut/index.js +7 -0
- package/dist/src/services/mut/mut-runner.d.ts +39 -0
- package/dist/src/services/mut/mut-runner.js +29 -0
- package/dist/src/services/mut/production-stryker.d.ts +7 -0
- package/dist/src/services/mut/production-stryker.js +66 -0
- package/dist/src/services/mut/report-builder.d.ts +11 -0
- package/dist/src/services/mut/report-builder.js +110 -0
- package/dist/src/services/mut/report-loader.d.ts +31 -0
- package/dist/src/services/mut/report-loader.js +78 -0
- package/dist/src/services/mut/thresholds.d.ts +21 -0
- package/dist/src/services/mut/thresholds.js +22 -0
- package/dist/src/services/mut/types.d.ts +336 -0
- package/dist/src/services/mut/types.js +59 -0
- package/dist/src/services/observability/aggregation.d.ts +64 -0
- package/dist/src/services/observability/aggregation.js +217 -0
- package/dist/src/services/observability/jsonl-store.d.ts +59 -0
- package/dist/src/services/observability/jsonl-store.js +120 -0
- package/dist/src/services/observability/observability-service.d.ts +95 -0
- package/dist/src/services/observability/observability-service.js +119 -0
- package/dist/src/services/observability/report-formatter.d.ts +42 -0
- package/dist/src/services/observability/report-formatter.js +156 -0
- package/dist/src/services/openspec/openspec-archive-service.d.ts +12 -0
- package/dist/src/services/openspec/openspec-archive-service.js +28 -0
- package/dist/src/services/openspec/openspec-bridge-service.d.ts +16 -0
- package/dist/src/services/openspec/openspec-bridge-service.js +76 -0
- package/dist/src/services/openspec/openspec-init-service.d.ts +23 -0
- package/dist/src/services/openspec/openspec-init-service.js +122 -0
- package/dist/src/services/openspec/openspec-propose-from-doctor-service.d.ts +31 -0
- package/dist/src/services/openspec/openspec-propose-from-doctor-service.js +95 -0
- package/dist/src/services/openspec/openspec-render-service.d.ts +38 -0
- package/dist/src/services/openspec/openspec-render-service.js +130 -0
- package/dist/src/services/openspec/openspec-scan-service.d.ts +6 -0
- package/dist/src/services/openspec/openspec-scan-service.js +123 -0
- package/dist/src/services/openspec/openspec-types.d.ts +39 -0
- package/dist/src/services/openspec/openspec-types.js +1 -0
- package/dist/src/services/openspec/openspec-validate-service.d.ts +27 -0
- package/dist/src/services/openspec/openspec-validate-service.js +77 -0
- package/dist/src/services/perf/perf-baseline-service.d.ts +70 -0
- package/dist/src/services/perf/perf-baseline-service.js +214 -0
- package/dist/src/services/prd/handoff-auto-regen.d.ts +22 -0
- package/dist/src/services/prd/handoff-auto-regen.js +73 -0
- package/dist/src/services/prd/handoff-service.d.ts +54 -0
- package/dist/src/services/prd/handoff-service.js +142 -0
- package/dist/src/services/prd/handoff-types.d.ts +64 -0
- package/dist/src/services/prd/handoff-types.js +22 -0
- package/dist/src/services/prd/prd-blocks-checker.d.ts +51 -0
- package/dist/src/services/prd/prd-blocks-checker.js +130 -0
- package/dist/src/services/prd/project-scan-reader.d.ts +24 -0
- package/dist/src/services/prd/project-scan-reader.js +150 -0
- package/dist/src/services/prd/project-scan-sediment.d.ts +97 -0
- package/dist/src/services/prd/project-scan-sediment.js +445 -0
- package/dist/src/services/prd/project-scan-types.d.ts +66 -0
- package/dist/src/services/prd/project-scan-types.js +20 -0
- package/dist/src/services/preferences/preferences-service.d.ts +38 -0
- package/dist/src/services/preferences/preferences-service.js +198 -0
- package/dist/src/services/preferences/preferences-types.d.ts +148 -0
- package/dist/src/services/preferences/preferences-types.js +53 -0
- package/dist/src/services/profiles/profile-service.d.ts +6 -0
- package/dist/src/services/profiles/profile-service.js +19 -0
- package/dist/src/services/progress/progress-service.d.ts +125 -0
- package/dist/src/services/progress/progress-service.js +192 -0
- package/dist/src/services/providers/minimax-provider-service.d.ts +24 -0
- package/dist/src/services/providers/minimax-provider-service.js +143 -0
- package/dist/src/services/providers/minimax-worker-service.d.ts +21 -0
- package/dist/src/services/providers/minimax-worker-service.js +83 -0
- package/dist/src/services/proxy/proxy-service.d.ts +7 -0
- package/dist/src/services/proxy/proxy-service.js +31 -0
- package/dist/src/services/qa/browser-event-logger.d.ts +40 -0
- package/dist/src/services/qa/browser-event-logger.js +54 -0
- package/dist/src/services/qa/browser-restart-detector.d.ts +74 -0
- package/dist/src/services/qa/browser-restart-detector.js +138 -0
- package/dist/src/services/qa/browser-reuse-hint.d.ts +18 -0
- package/dist/src/services/qa/browser-reuse-hint.js +18 -0
- package/dist/src/services/qa/browser-wrapper-service.d.ts +37 -0
- package/dist/src/services/qa/browser-wrapper-service.js +88 -0
- package/dist/src/services/qa/qa-business-review-state.d.ts +47 -0
- package/dist/src/services/qa/qa-business-review-state.js +96 -0
- package/dist/src/services/rd/ast-gate.d.ts +19 -0
- package/dist/src/services/rd/ast-gate.js +71 -0
- package/dist/src/services/rd/impl.d.ts +9 -0
- package/dist/src/services/rd/impl.js +57 -0
- package/dist/src/services/rd/rd-service.d.ts +129 -0
- package/dist/src/services/rd/rd-service.js +438 -0
- package/dist/src/services/rd/reviewer-dispatch-policy.d.ts +122 -0
- package/dist/src/services/rd/reviewer-dispatch-policy.js +148 -0
- package/dist/src/services/rd/standards-diagnostic.d.ts +76 -0
- package/dist/src/services/rd/standards-diagnostic.js +166 -0
- package/dist/src/services/rd/strategic-stage.d.ts +4 -0
- package/dist/src/services/rd/strategic-stage.js +15 -0
- package/dist/src/services/rd/strategy.d.ts +13 -0
- package/dist/src/services/rd/strategy.js +60 -0
- package/dist/src/services/rd/tactical-stage.d.ts +33 -0
- package/dist/src/services/rd/tactical-stage.js +62 -0
- package/dist/src/services/rd/types.d.ts +252 -0
- package/dist/src/services/rd/types.js +47 -0
- package/dist/src/services/recommendations/capability-availability.d.ts +5 -0
- package/dist/src/services/recommendations/capability-availability.js +40 -0
- package/dist/src/services/recommendations/capability-map-service.d.ts +7 -0
- package/dist/src/services/recommendations/capability-map-service.js +131 -0
- package/dist/src/services/recommendations/capability-seed-items.d.ts +2 -0
- package/dist/src/services/recommendations/capability-seed-items.js +140 -0
- package/dist/src/services/recommendations/capability-seed-mappings.d.ts +2 -0
- package/dist/src/services/recommendations/capability-seed-mappings.js +54 -0
- package/dist/src/services/recommendations/capability-seed-sources.d.ts +2 -0
- package/dist/src/services/recommendations/capability-seed-sources.js +35 -0
- package/dist/src/services/recommendations/recommendation-service.d.ts +8 -0
- package/dist/src/services/recommendations/recommendation-service.js +106 -0
- package/dist/src/services/recommendations/recommendation-types.d.ts +129 -0
- package/dist/src/services/recommendations/recommendation-types.js +1 -0
- package/dist/src/services/recommendations/seed-capability-catalog.d.ts +3 -0
- package/dist/src/services/recommendations/seed-capability-catalog.js +3 -0
- package/dist/src/services/refactor/refactor-service.d.ts +9 -0
- package/dist/src/services/refactor/refactor-service.js +36 -0
- package/dist/src/services/release/release-state.d.ts +70 -0
- package/dist/src/services/release/release-state.js +140 -0
- package/dist/src/services/retrospective/retrospective-index.d.ts +37 -0
- package/dist/src/services/retrospective/retrospective-index.js +110 -0
- package/dist/src/services/retrospective/retrospective-search-service.d.ts +55 -0
- package/dist/src/services/retrospective/retrospective-search-service.js +107 -0
- package/dist/src/services/retrospective/retrospective-show.d.ts +40 -0
- package/dist/src/services/retrospective/retrospective-show.js +109 -0
- package/dist/src/services/reviewer/model-family.d.ts +18 -0
- package/dist/src/services/reviewer/model-family.js +70 -0
- package/dist/src/services/reviewer/providers/anthropic.d.ts +2 -0
- package/dist/src/services/reviewer/providers/anthropic.js +61 -0
- package/dist/src/services/reviewer/providers/ollama.d.ts +26 -0
- package/dist/src/services/reviewer/providers/ollama.js +38 -0
- package/dist/src/services/reviewer/providers/openai.d.ts +2 -0
- package/dist/src/services/reviewer/providers/openai.js +63 -0
- package/dist/src/services/reviewer/reviewer-config.d.ts +34 -0
- package/dist/src/services/reviewer/reviewer-config.js +100 -0
- package/dist/src/services/reviewer/reviewer-service.d.ts +56 -0
- package/dist/src/services/reviewer/reviewer-service.js +263 -0
- package/dist/src/services/reviewer/selection-strategies.d.ts +27 -0
- package/dist/src/services/reviewer/selection-strategies.js +53 -0
- package/dist/src/services/role/role-registry.d.ts +38 -0
- package/dist/src/services/role/role-registry.js +83 -0
- package/dist/src/services/sc/index.d.ts +1 -0
- package/dist/src/services/sc/index.js +1 -0
- package/dist/src/services/sc/sc-service.d.ts +131 -0
- package/dist/src/services/sc/sc-service.js +552 -0
- package/dist/src/services/scan/acceptance-coverage-service.d.ts +42 -0
- package/dist/src/services/scan/acceptance-coverage-service.js +140 -0
- package/dist/src/services/scan/api-surface-service.d.ts +69 -0
- package/dist/src/services/scan/api-surface-service.js +239 -0
- package/dist/src/services/scan/archetype-service.d.ts +5 -0
- package/dist/src/services/scan/archetype-service.js +242 -0
- package/dist/src/services/scan/diff-scope-service.d.ts +40 -0
- package/dist/src/services/scan/diff-scope-service.js +198 -0
- package/dist/src/services/scan/existing-system-service.d.ts +7 -0
- package/dist/src/services/scan/existing-system-service.js +300 -0
- package/dist/src/services/scan/file-size-scan.d.ts +23 -0
- package/dist/src/services/scan/file-size-scan.js +68 -0
- package/dist/src/services/scan/karpathy-service.d.ts +60 -0
- package/dist/src/services/scan/karpathy-service.js +228 -0
- package/dist/src/services/scan/libraries-service.d.ts +24 -0
- package/dist/src/services/scan/libraries-service.js +419 -0
- package/dist/src/services/scan/libraries-types.d.ts +59 -0
- package/dist/src/services/scan/libraries-types.js +9 -0
- package/dist/src/services/scan/orphan-service.d.ts +76 -0
- package/dist/src/services/scan/orphan-service.js +538 -0
- package/dist/src/services/scan/scan-types.d.ts +59 -0
- package/dist/src/services/scan/scan-types.js +1 -0
- package/dist/src/services/scan/type-sanity-service.d.ts +23 -0
- package/dist/src/services/scan/type-sanity-service.js +116 -0
- package/dist/src/services/security/safe-settings-path.d.ts +12 -0
- package/dist/src/services/security/safe-settings-path.js +104 -0
- package/dist/src/services/session/binding-status-service.d.ts +56 -0
- package/dist/src/services/session/binding-status-service.js +106 -0
- package/dist/src/services/session/binding-store.d.ts +161 -0
- package/dist/src/services/session/binding-store.js +509 -0
- package/dist/src/services/session/caller-binding-service.d.ts +70 -0
- package/dist/src/services/session/caller-binding-service.js +148 -0
- package/dist/src/services/session/caller-id-types.d.ts +77 -0
- package/dist/src/services/session/caller-id-types.js +46 -0
- package/dist/src/services/session/getSessionDir.d.ts +1 -0
- package/dist/src/services/session/getSessionDir.js +27 -0
- package/dist/src/services/session/index.d.ts +6 -0
- package/dist/src/services/session/index.js +7 -0
- package/dist/src/services/session/platform-fallbacks.d.ts +31 -0
- package/dist/src/services/session/platform-fallbacks.js +35 -0
- package/dist/src/services/session/resolve-caller-id.d.ts +57 -0
- package/dist/src/services/session/resolve-caller-id.js +88 -0
- package/dist/src/services/session/session-binding-bridge.d.ts +76 -0
- package/dist/src/services/session/session-binding-bridge.js +247 -0
- package/dist/src/services/session/session-checkpoint-service.d.ts +57 -0
- package/dist/src/services/session/session-checkpoint-service.js +143 -0
- package/dist/src/services/session/session-manager.d.ts +168 -0
- package/dist/src/services/session/session-manager.js +502 -0
- package/dist/src/services/session/session-resume-service.d.ts +25 -0
- package/dist/src/services/session/session-resume-service.js +101 -0
- package/dist/src/services/signal/cancel-handler.d.ts +14 -0
- package/dist/src/services/signal/cancel-handler.js +76 -0
- package/dist/src/services/skill/resume-detector.d.ts +54 -0
- package/dist/src/services/skill/resume-detector.js +334 -0
- package/dist/src/services/skill/skill-scheduler.d.ts +40 -0
- package/dist/src/services/skill/skill-scheduler.js +53 -0
- package/dist/src/services/skills/hooks-settings-service.d.ts +137 -0
- package/dist/src/services/skills/hooks-settings-service.js +396 -0
- package/dist/src/services/skills/skill-conformance-service.d.ts +40 -0
- package/dist/src/services/skills/skill-conformance-service.js +136 -0
- package/dist/src/services/skills/skill-presence-service.d.ts +158 -0
- package/dist/src/services/skills/skill-presence-service.js +474 -0
- package/dist/src/services/skills/skill-registry.d.ts +17 -0
- package/dist/src/services/skills/skill-registry.js +40 -0
- package/dist/src/services/skills/skill-runbook-service.d.ts +11 -0
- package/dist/src/services/skills/skill-runbook-service.js +128 -0
- package/dist/src/services/skills/skill-statusline-renderer.d.ts +6 -0
- package/dist/src/services/skills/skill-statusline-renderer.js +55 -0
- package/dist/src/services/skills/skill-statusline-service.d.ts +24 -0
- package/dist/src/services/skills/skill-statusline-service.js +110 -0
- package/dist/src/services/skills/statusline-settings-service.d.ts +59 -0
- package/dist/src/services/skills/statusline-settings-service.js +141 -0
- package/dist/src/services/skills/sync-service.d.ts +86 -0
- package/dist/src/services/skills/sync-service.js +271 -0
- package/dist/src/services/slice/calibration-store.d.ts +39 -0
- package/dist/src/services/slice/calibration-store.js +68 -0
- package/dist/src/services/slice/cross-pass-edge-merger.d.ts +53 -0
- package/dist/src/services/slice/cross-pass-edge-merger.js +246 -0
- package/dist/src/services/slice/granularity-decider.d.ts +37 -0
- package/dist/src/services/slice/granularity-decider.js +40 -0
- package/dist/src/services/slice/llm-arbitrator.d.ts +35 -0
- package/dist/src/services/slice/llm-arbitrator.js +63 -0
- package/dist/src/services/slice/multi-pass-orchestrator.d.ts +67 -0
- package/dist/src/services/slice/multi-pass-orchestrator.js +225 -0
- package/dist/src/services/slice/schema-router.d.ts +44 -0
- package/dist/src/services/slice/schema-router.js +61 -0
- package/dist/src/services/slice/slice-archive-service.d.ts +20 -0
- package/dist/src/services/slice/slice-archive-service.js +111 -0
- package/dist/src/services/slice/slice-benchmark-service.d.ts +19 -0
- package/dist/src/services/slice/slice-benchmark-service.js +60 -0
- package/dist/src/services/slice/slice-check-service.d.ts +2 -0
- package/dist/src/services/slice/slice-check-service.js +459 -0
- package/dist/src/services/slice/slice-check-types.d.ts +104 -0
- package/dist/src/services/slice/slice-check-types.js +28 -0
- package/dist/src/services/slice/slice-decompose-runners.d.ts +23 -0
- package/dist/src/services/slice/slice-decompose-runners.js +174 -0
- package/dist/src/services/slice/slice-decompose-service.d.ts +24 -0
- package/dist/src/services/slice/slice-decompose-service.js +532 -0
- package/dist/src/services/slice/slice-decompose-types.d.ts +263 -0
- package/dist/src/services/slice/slice-decompose-types.js +30 -0
- package/dist/src/services/slice/slice-integration.d.ts +43 -0
- package/dist/src/services/slice/slice-integration.js +106 -0
- package/dist/src/services/slice/slice-pick-service.d.ts +32 -0
- package/dist/src/services/slice/slice-pick-service.js +75 -0
- package/dist/src/services/slice/slice-review-state.d.ts +70 -0
- package/dist/src/services/slice/slice-review-state.js +109 -0
- package/dist/src/services/slice/slice-topology-types.d.ts +115 -0
- package/dist/src/services/slice/slice-topology-types.js +20 -0
- package/dist/src/services/smoke/smoke-paths-state.d.ts +73 -0
- package/dist/src/services/smoke/smoke-paths-state.js +117 -0
- package/dist/src/services/solo/auto-compact-orchestrator.d.ts +98 -0
- package/dist/src/services/solo/auto-compact-orchestrator.js +343 -0
- package/dist/src/services/solo/batch-heartbeat-poller.d.ts +51 -0
- package/dist/src/services/solo/batch-heartbeat-poller.js +88 -0
- package/dist/src/services/solo/dag-orchestrator.d.ts +128 -0
- package/dist/src/services/solo/dag-orchestrator.js +304 -0
- package/dist/src/services/solo/mode-gate.d.ts +163 -0
- package/dist/src/services/solo/mode-gate.js +212 -0
- package/dist/src/services/solo/post-compact-detector.d.ts +61 -0
- package/dist/src/services/solo/post-compact-detector.js +240 -0
- package/dist/src/services/solo/status-line-renderer.d.ts +34 -0
- package/dist/src/services/solo/status-line-renderer.js +55 -0
- package/dist/src/services/solo/user-touchpoint-classifier.d.ts +44 -0
- package/dist/src/services/solo/user-touchpoint-classifier.js +145 -0
- package/dist/src/services/sop/gate-enforce-service.d.ts +33 -0
- package/dist/src/services/sop/gate-enforce-service.js +168 -0
- package/dist/src/services/sop/sop-advance-service.d.ts +74 -0
- package/dist/src/services/sop/sop-advance-service.js +115 -0
- package/dist/src/services/sop/sop-check-service.d.ts +45 -0
- package/dist/src/services/sop/sop-check-service.js +181 -0
- package/dist/src/services/sop/sop-paths.d.ts +62 -0
- package/dist/src/services/sop/sop-paths.js +92 -0
- package/dist/src/services/sop/sop-registry-service.d.ts +46 -0
- package/dist/src/services/sop/sop-registry-service.js +89 -0
- package/dist/src/services/sop/sop-service.d.ts +55 -0
- package/dist/src/services/sop/sop-service.js +222 -0
- package/dist/src/services/sop/sop-types.d.ts +95 -0
- package/dist/src/services/sop/sop-types.js +11 -0
- package/dist/src/services/standards/ide-aware-standards-service.d.ts +94 -0
- package/dist/src/services/standards/ide-aware-standards-service.js +89 -0
- package/dist/src/services/standards/migrate-claude-rules-service.d.ts +19 -0
- package/dist/src/services/standards/migrate-claude-rules-service.js +193 -0
- package/dist/src/services/standards/migrate-service.d.ts +63 -0
- package/dist/src/services/standards/migrate-service.js +193 -0
- package/dist/src/services/standards/missing-standards-detector.d.ts +79 -0
- package/dist/src/services/standards/missing-standards-detector.js +132 -0
- package/dist/src/services/standards/project-context.d.ts +24 -0
- package/dist/src/services/standards/project-context.js +314 -0
- package/dist/src/services/standards/project-standards-service.d.ts +114 -0
- package/dist/src/services/standards/project-standards-service.js +574 -0
- package/dist/src/services/tech/tech-service.d.ts +69 -0
- package/dist/src/services/tech/tech-service.js +299 -0
- package/dist/src/services/test-cache/test-cache-service.d.ts +70 -0
- package/dist/src/services/test-cache/test-cache-service.js +175 -0
- package/dist/src/services/understand/understand-scan-service.d.ts +28 -0
- package/dist/src/services/understand/understand-scan-service.js +170 -0
- package/dist/src/services/understand/understand-types.d.ts +50 -0
- package/dist/src/services/understand/understand-types.js +1 -0
- package/dist/src/services/upgrade/1x-detector-service.d.ts +7 -0
- package/dist/src/services/upgrade/1x-detector-service.js +94 -0
- package/dist/src/services/upgrade/gitignore-migrate-service.d.ts +56 -0
- package/dist/src/services/upgrade/gitignore-migrate-service.js +170 -0
- package/dist/src/services/upgrade/upgrade-service.d.ts +47 -0
- package/dist/src/services/upgrade/upgrade-service.js +381 -0
- package/dist/src/services/verdict/envelopes.d.ts +93 -0
- package/dist/src/services/verdict/envelopes.js +349 -0
- package/dist/src/services/verdict/verdict-aggregator.d.ts +94 -0
- package/dist/src/services/verdict/verdict-aggregator.js +112 -0
- package/dist/src/services/workflow/artifact-paths.d.ts +59 -0
- package/dist/src/services/workflow/artifact-paths.js +166 -0
- package/dist/src/services/workflow/autonomous-resume-writer.d.ts +16 -0
- package/dist/src/services/workflow/autonomous-resume-writer.js +170 -0
- package/dist/src/services/workflow/pipeline-verify-service.d.ts +90 -0
- package/dist/src/services/workflow/pipeline-verify-service.js +449 -0
- package/dist/src/services/workflow/plan-reader.d.ts +29 -0
- package/dist/src/services/workflow/plan-reader.js +174 -0
- package/dist/src/services/workflow/plan-refresher.d.ts +32 -0
- package/dist/src/services/workflow/plan-refresher.js +353 -0
- package/dist/src/services/workflow/plan-trigger-detector.d.ts +55 -0
- package/dist/src/services/workflow/plan-trigger-detector.js +142 -0
- package/dist/src/services/workflow/workflow-autonomous-resume-helpers.d.ts +19 -0
- package/dist/src/services/workflow/workflow-autonomous-resume-helpers.js +300 -0
- package/dist/src/services/workflow/workflow-autonomous-service.d.ts +100 -0
- package/dist/src/services/workflow/workflow-autonomous-service.js +306 -0
- package/dist/src/services/workflow/workflow-loader.d.ts +63 -0
- package/dist/src/services/workflow/workflow-loader.js +168 -0
- package/dist/src/services/workflow/workflow-router-service.d.ts +85 -0
- package/dist/src/services/workflow/workflow-router-service.js +227 -0
- package/dist/src/services/workflow/workflow-skip-service.d.ts +106 -0
- package/dist/src/services/workflow/workflow-skip-service.js +209 -0
- package/dist/src/services/workflow/workflow-spec.d.ts +116 -0
- package/dist/src/services/workflow/workflow-spec.js +431 -0
- package/dist/src/services/workflow/workflow-state-store.d.ts +27 -0
- package/dist/src/services/workflow/workflow-state-store.js +95 -0
- package/dist/src/services/workspace/claude-settings-template.d.ts +96 -0
- package/dist/src/services/workspace/claude-settings-template.js +215 -0
- package/dist/src/services/workspace/migrate-1-4-1-service.d.ts +44 -0
- package/dist/src/services/workspace/migrate-1-4-1-service.js +195 -0
- package/dist/src/services/workspace/migrate-service.d.ts +2 -0
- package/dist/src/services/workspace/migrate-service.js +613 -0
- package/dist/src/services/workspace/migrate-types.d.ts +127 -0
- package/dist/src/services/workspace/migrate-types.js +21 -0
- package/dist/src/services/workspace/reconcile-service.d.ts +188 -0
- package/dist/src/services/workspace/reconcile-service.js +683 -0
- package/dist/src/services/workspace/reconcile-types.d.ts +130 -0
- package/dist/src/services/workspace/reconcile-types.js +13 -0
- package/dist/src/services/workspace/sid-naming-guard.d.ts +17 -0
- package/dist/src/services/workspace/sid-naming-guard.js +34 -0
- package/dist/src/services/workspace/workspace-claude-settings-materializer.d.ts +45 -0
- package/dist/src/services/workspace/workspace-claude-settings-materializer.js +194 -0
- package/dist/src/services/workspace/workspace-clean-service.d.ts +28 -0
- package/dist/src/services/workspace/workspace-clean-service.js +46 -0
- package/dist/src/services/workspace/workspace-service.d.ts +177 -0
- package/dist/src/services/workspace/workspace-service.js +432 -0
- package/dist/src/services/workspace/workspace-state-service.d.ts +7 -0
- package/dist/src/services/workspace/workspace-state-service.js +43 -0
- package/dist/src/shared/format-md-compact.d.ts +32 -0
- package/dist/src/shared/format-md-compact.js +297 -0
- package/dist/src/shared/frontmatter.d.ts +6 -0
- package/dist/src/shared/frontmatter.js +165 -0
- package/dist/src/shared/fs-utils.d.ts +4 -0
- package/dist/src/shared/fs-utils.js +16 -0
- package/dist/src/shared/fs.d.ts +4 -0
- package/dist/src/shared/fs.js +26 -0
- package/dist/src/shared/incrementing-number.d.ts +23 -0
- package/dist/src/shared/incrementing-number.js +68 -0
- package/dist/src/shared/json-schema-mini.d.ts +10 -0
- package/dist/src/shared/json-schema-mini.js +113 -0
- package/dist/src/shared/path-safety.d.ts +21 -0
- package/dist/src/shared/path-safety.js +54 -0
- package/dist/src/shared/path-utils.d.ts +13 -0
- package/dist/src/shared/path-utils.js +56 -0
- package/dist/src/shared/paths.d.ts +6 -0
- package/dist/src/shared/paths.js +50 -0
- package/dist/src/shared/planner-response.d.ts +21 -0
- package/dist/src/shared/planner-response.js +26 -0
- package/dist/src/shared/platform.d.ts +6 -0
- package/dist/src/shared/platform.js +11 -0
- package/dist/src/shared/process.d.ts +5 -0
- package/dist/src/shared/process.js +12 -0
- package/dist/src/shared/result.d.ts +22 -0
- package/dist/src/shared/result.js +46 -0
- package/dist/src/shared/stale-policy.d.ts +67 -0
- package/dist/src/shared/stale-policy.js +85 -0
- package/dist/src/shared/version.d.ts +1 -0
- package/dist/src/shared/version.js +1 -0
- package/output-styles/peaks-skill-swarm.md +132 -0
- package/package.json +101 -0
- package/schemas/approval-record.schema.json +14 -0
- package/schemas/artifact-manifest.schema.json +16 -0
- package/schemas/artifact-retention-report.schema.json +38 -0
- package/schemas/artifact-workspace.schema.json +22 -0
- package/schemas/capability-availability.schema.json +36 -0
- package/schemas/capability-item.schema.json +37 -0
- package/schemas/capability-source.schema.json +30 -0
- package/schemas/change-impact.schema.json +15 -0
- package/schemas/context-capsule.schema.json +16 -0
- package/schemas/context.schema.json +360 -0
- package/schemas/decomposition-v1.json +194 -0
- package/schemas/decomposition-v2.json +193 -0
- package/schemas/doctor-report.schema.json +34 -0
- package/schemas/library-breaking-changes.data.json +141 -0
- package/schemas/library-breaking-changes.meta.json +6 -0
- package/schemas/library-breaking-changes.schema.json +50 -0
- package/schemas/mcp-apply-result.schema.json +46 -0
- package/schemas/mcp-install-plan.schema.json +71 -0
- package/schemas/mcp-install-spec.schema.json +29 -0
- package/schemas/mcp-server.schema.json +29 -0
- package/schemas/openspec-change-summary.schema.json +68 -0
- package/schemas/openspec-render-request.schema.json +61 -0
- package/schemas/openspec-validation-result.schema.json +36 -0
- package/schemas/recommendation-plan.schema.json +37 -0
- package/schemas/refactor-slice-spec.schema.json +19 -0
- package/schemas/replay-fixture.schema.json +158 -0
- package/schemas/reviewer-envelope.schema.json +79 -0
- package/schemas/sop-manifest.schema.json +52 -0
- package/scripts/clean-dist.mjs +8 -0
- package/scripts/install-skills.mjs +1202 -0
- package/scripts/sync-version.mjs +12 -0
- package/scripts/watch.mjs +389 -0
- package/skills/peaks-audit/SKILL.md +151 -0
- package/skills/peaks-audit/references/6-dimensions.md +141 -0
- package/skills/peaks-doctor/SKILL.md +59 -0
- package/skills/peaks-doctor/references/doctor-check-catalog.md +31 -0
- package/skills/peaks-doctor/references/from-doctor-flow.md +64 -0
- package/skills/peaks-doctor/test_prompts.json +17 -0
- package/skills/peaks-final-review/SKILL.md +157 -0
- package/skills/peaks-final-review/references/4-dimensions.md +117 -0
- package/skills/peaks-ide/SKILL.md +161 -0
- package/skills/peaks-ide/references/audit-log-helper.md +52 -0
- package/skills/peaks-perf-audit/SKILL.md +166 -0
- package/skills/peaks-perf-audit/references/audit-protocol.md +173 -0
- package/skills/peaks-prd/SKILL.md +319 -0
- package/skills/peaks-prd/references/artifact-contracts.md +7 -0
- package/skills/peaks-prd/references/artifact-per-request.md +78 -0
- package/skills/peaks-prd/references/command-migration.md +3 -0
- package/skills/peaks-prd/references/prd-for-multi-pass.md +49 -0
- package/skills/peaks-prd/references/workflow.md +43 -0
- package/skills/peaks-qa/SKILL.md +240 -0
- package/skills/peaks-qa/references/artifact-contracts.md +7 -0
- package/skills/peaks-qa/references/artifact-per-request.md +25 -0
- package/skills/peaks-qa/references/browser-validation-contracts.md +51 -0
- package/skills/peaks-qa/references/codegraph-regression-focus.md +5 -0
- package/skills/peaks-qa/references/command-migration.md +3 -0
- package/skills/peaks-qa/references/external-capability-guidance.md +9 -0
- package/skills/peaks-qa/references/openspec-validation-gate.md +55 -0
- package/skills/peaks-qa/references/qa-compact-handoff.md +3 -0
- package/skills/peaks-qa/references/qa-context-governance.md +24 -0
- package/skills/peaks-qa/references/qa-fanout-contract.md +158 -0
- package/skills/peaks-qa/references/qa-gstack-integration.md +7 -0
- package/skills/peaks-qa/references/qa-local-artifacts.md +3 -0
- package/skills/peaks-qa/references/qa-matt-pocock-integration.md +9 -0
- package/skills/peaks-qa/references/qa-perf-test-plan.md +67 -0
- package/skills/peaks-qa/references/qa-refactor-role.md +3 -0
- package/skills/peaks-qa/references/qa-runbook.md +72 -0
- package/skills/peaks-qa/references/qa-security-test-plan.md +73 -0
- package/skills/peaks-qa/references/qa-skill-presence.md +22 -0
- package/skills/peaks-qa/references/qa-standards-preflight.md +8 -0
- package/skills/peaks-qa/references/qa-sub-agent-dispatch.md +46 -0
- package/skills/peaks-qa/references/qa-transition-gates.md +86 -0
- package/skills/peaks-qa/references/reading-handoff-frontmatter.md +30 -0
- package/skills/peaks-qa/references/regression-gates.md +24 -0
- package/skills/peaks-qa/references/requirement-boundary-recheck.md +9 -0
- package/skills/peaks-qa/references/test-case-generation.md +27 -0
- package/skills/peaks-qa/references/test-report-output.md +14 -0
- package/skills/peaks-rd/SKILL.md +279 -0
- package/skills/peaks-rd/references/artifact-and-standards-output.md +9 -0
- package/skills/peaks-rd/references/artifact-contracts.md +7 -0
- package/skills/peaks-rd/references/artifact-per-request.md +112 -0
- package/skills/peaks-rd/references/browser-action-wrapper.md +39 -0
- package/skills/peaks-rd/references/browser-self-test-contracts.md +29 -0
- package/skills/peaks-rd/references/code-reviewer-4dim-hint.md +72 -0
- package/skills/peaks-rd/references/codegraph-project-analysis.md +5 -0
- package/skills/peaks-rd/references/command-migration.md +3 -0
- package/skills/peaks-rd/references/compact-handoff.md +3 -0
- package/skills/peaks-rd/references/external-references.md +11 -0
- package/skills/peaks-rd/references/frontend-project-generation.md +11 -0
- package/skills/peaks-rd/references/karpathy-reviewer-prompt.md +2 -0
- package/skills/peaks-rd/references/library-version-awareness.md +30 -0
- package/skills/peaks-rd/references/mandatory-perf-baseline.md +42 -0
- package/skills/peaks-rd/references/matt-pocock-integration.md +11 -0
- package/skills/peaks-rd/references/mock-data-placement.md +40 -0
- package/skills/peaks-rd/references/ocr-integration.md +229 -0
- package/skills/peaks-rd/references/openspec-cli.md +62 -0
- package/skills/peaks-rd/references/parallel-review-fanout.md +90 -0
- package/skills/peaks-rd/references/rd-context-governance.md +36 -0
- package/skills/peaks-rd/references/rd-fanout-contracts.md +216 -0
- package/skills/peaks-rd/references/rd-gstack-integration.md +16 -0
- package/skills/peaks-rd/references/rd-runbook.md +190 -0
- package/skills/peaks-rd/references/rd-standards-preflight.md +8 -0
- package/skills/peaks-rd/references/rd-sub-agent-dispatch.md +111 -0
- package/skills/peaks-rd/references/rd-transition-gates.md +148 -0
- package/skills/peaks-rd/references/reading-v2-slice-results.md +54 -0
- package/skills/peaks-rd/references/refactor-workflow.md +39 -0
- package/skills/peaks-rd/references/skill-presence-and-title.md +22 -0
- package/skills/peaks-rd/references/v2-12-fanout-collapse.md +64 -0
- package/skills/peaks-rd/references/writing-handoff-frontmatter.md +68 -0
- package/skills/peaks-reviewer/SKILL.md +76 -0
- package/skills/peaks-reviewer/references/reviewer-prompt.md +50 -0
- package/skills/peaks-reviewer/references/reviewer-schema.md +49 -0
- package/skills/peaks-sc/SKILL.md +166 -0
- package/skills/peaks-sc/references/artifact-contracts.md +3 -0
- package/skills/peaks-sc/references/artifact-retention.md +14 -0
- package/skills/peaks-sc/references/command-migration.md +3 -0
- package/skills/peaks-sc/references/openspec-commit-boundaries.md +33 -0
- package/skills/peaks-security-audit/SKILL.md +167 -0
- package/skills/peaks-security-audit/references/audit-protocol.md +175 -0
- package/skills/peaks-slice-decompose/SKILL.md +111 -0
- package/skills/peaks-slice-decompose/references/cross-pass-edge-interpretation.md +158 -0
- package/skills/peaks-slice-decompose/references/granularity-decision.md +129 -0
- package/skills/peaks-slice-decompose/references/v2-schema.md +156 -0
- package/skills/peaks-solo/SKILL.md +316 -0
- package/skills/peaks-solo/references/a2a-artifact-mapping.md +115 -0
- package/skills/peaks-solo/references/anchoring-and-session-info.md +34 -0
- package/skills/peaks-solo/references/artifact-contracts.md +65 -0
- package/skills/peaks-solo/references/boundaries.md +21 -0
- package/skills/peaks-solo/references/browser-workflow.md +127 -0
- package/skills/peaks-solo/references/checkpoint-resume.md +70 -0
- package/skills/peaks-solo/references/codegraph-orchestration.md +5 -0
- package/skills/peaks-solo/references/command-migration.md +3 -0
- package/skills/peaks-solo/references/completion-handoff.md +18 -0
- package/skills/peaks-solo/references/context-governance.md +204 -0
- package/skills/peaks-solo/references/cross-date-session-check.md +67 -0
- package/skills/peaks-solo/references/dag-orchestrator.md +56 -0
- package/skills/peaks-solo/references/envelope-contract.md +130 -0
- package/skills/peaks-solo/references/existing-system-extraction.md +78 -0
- package/skills/peaks-solo/references/external-references.md +17 -0
- package/skills/peaks-solo/references/external-skill-invocation.md +72 -0
- package/skills/peaks-solo/references/fanout-mandatory.md +109 -0
- package/skills/peaks-solo/references/fast-mode.md +23 -0
- package/skills/peaks-solo/references/frontend-only-mode.md +87 -0
- package/skills/peaks-solo/references/gstack-integration.md +7 -0
- package/skills/peaks-solo/references/headroom-integration.md +107 -0
- package/skills/peaks-solo/references/local-artifact-workspace.md +79 -0
- package/skills/peaks-solo/references/micro-cycle.md +316 -0
- package/skills/peaks-solo/references/mode-selection-with-stale-presence.md +124 -0
- package/skills/peaks-solo/references/mode-selection.md +21 -0
- package/skills/peaks-solo/references/openspec-workflow.md +81 -0
- package/skills/peaks-solo/references/periodic-checkpoint.md +71 -0
- package/skills/peaks-solo/references/playwright-mcp-multi-terminal.md +114 -0
- package/skills/peaks-solo/references/project-memory-loading.md +17 -0
- package/skills/peaks-solo/references/project-scan-checklist.md +136 -0
- package/skills/peaks-solo/references/quality-gate-cheatsheet.md +13 -0
- package/skills/peaks-solo/references/refactor-mode.md +24 -0
- package/skills/peaks-solo/references/resume-detection.md +63 -0
- package/skills/peaks-solo/references/runbook.md +188 -0
- package/skills/peaks-solo/references/skill-presence-and-title.md +31 -0
- package/skills/peaks-solo/references/standards-preflight.md +23 -0
- package/skills/peaks-solo/references/step-0-55-1x-detection.md +82 -0
- package/skills/peaks-solo/references/sub-agent-dispatch.md +334 -0
- package/skills/peaks-solo/references/swarm-dispatch-contract.md +230 -0
- package/skills/peaks-solo/references/workflow-gates-and-types.md +186 -0
- package/skills/peaks-solo/references/workflow.md +38 -0
- package/skills/peaks-solo-resume/SKILL.md +81 -0
- package/skills/peaks-solo-status/SKILL.md +120 -0
- package/skills/peaks-solo-test/SKILL.md +84 -0
- package/skills/peaks-sop/SKILL.md +209 -0
- package/skills/peaks-sop/references/sop-authoring.md +161 -0
- package/skills/peaks-txt/SKILL.md +303 -0
- package/skills/peaks-txt/references/artifact-contracts.md +7 -0
- package/skills/peaks-txt/references/command-migration.md +3 -0
- package/skills/peaks-txt/references/context-capsule.md +21 -0
- package/skills/peaks-ui/SKILL.md +369 -0
- package/skills/peaks-ui/references/artifact-contracts.md +3 -0
- package/skills/peaks-ui/references/artifact-per-request.md +71 -0
- package/skills/peaks-ui/references/command-migration.md +3 -0
- package/skills/peaks-ui/references/workflow.md +27 -0
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { execFileSync } from 'node:child_process';
|
|
2
|
+
import { extname, basename } from 'node:path';
|
|
3
|
+
const SOURCE_EXTENSIONS = new Set(['.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs', '.vue', '.svelte', '.py', '.go', '.rs', '.java', '.kt', '.swift', '.cpp', '.c', '.h', '.cs', '.rb', '.php', '.scala', '.dart', '.less', '.scss', '.sass', '.css']);
|
|
4
|
+
const DOCS_EXTENSIONS = new Set(['.md', '.mdx', '.rst', '.txt']);
|
|
5
|
+
const LOCKFILE_NAMES = new Set(['pnpm-lock.yaml', 'package-lock.json', 'yarn.lock', 'bun.lockb', 'Cargo.lock', 'Gemfile.lock', 'composer.lock', 'go.sum', 'poetry.lock']);
|
|
6
|
+
const CONFIG_NAMES = new Set(['package.json', 'tsconfig.json', 'tsconfig.base.json', 'vite.config.ts', 'vite.config.js', 'webpack.config.js', 'next.config.js', 'next.config.ts', '.eslintrc', '.eslintrc.js', '.eslintrc.cjs', '.eslintrc.json', '.prettierrc', '.prettierrc.json', 'eslint.config.js', '.gitignore', '.npmrc', 'docker-compose.yml', 'docker-compose.yaml', 'Dockerfile', 'Makefile', '.editorconfig', 'tailwind.config.js', 'tailwind.config.ts', 'postcss.config.js', 'commitlint.config.js', 'lefthook.yml', 'turbo.json', 'lerna.json', 'pnpm-workspace.yaml', 'nx.json']);
|
|
7
|
+
const CONFIG_EXTENSIONS = new Set(['.toml', '.ini', '.cfg', '.env']);
|
|
8
|
+
function classifyFile(filePath) {
|
|
9
|
+
const name = basename(filePath);
|
|
10
|
+
const ext = extname(filePath).toLowerCase();
|
|
11
|
+
if (LOCKFILE_NAMES.has(name))
|
|
12
|
+
return 'lockfile';
|
|
13
|
+
if (CONFIG_NAMES.has(name))
|
|
14
|
+
return 'config';
|
|
15
|
+
if (CONFIG_EXTENSIONS.has(ext))
|
|
16
|
+
return 'config';
|
|
17
|
+
if (filePath.startsWith('.github/') || filePath.includes('/workflows/') || name === 'release.yml' || name.endsWith('.yml') || name.endsWith('.yaml'))
|
|
18
|
+
return 'config';
|
|
19
|
+
if (DOCS_EXTENSIONS.has(ext))
|
|
20
|
+
return 'docs';
|
|
21
|
+
// Test files: anything under tests/, __tests__/, or matching *.test.*, *.spec.*
|
|
22
|
+
if (/\b(?:tests?|__tests__|__mocks__|spec)\b/.test(filePath) || /\.(test|spec)\.[a-z]+$/i.test(name))
|
|
23
|
+
return 'test';
|
|
24
|
+
if (SOURCE_EXTENSIONS.has(ext))
|
|
25
|
+
return 'source';
|
|
26
|
+
return 'unknown';
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Peaks' own artifact workspace. Changes here (PRD/RD/QA markdown, session
|
|
30
|
+
* state) are never the "code change" a request type describes, so they must be
|
|
31
|
+
* excluded from the diff — otherwise a PRD-planning-phase handoff that only
|
|
32
|
+
* wrote `.peaks/**` markdown would be misclassified as a docs change.
|
|
33
|
+
*/
|
|
34
|
+
function isArtifactWorkspaceFile(filePath) {
|
|
35
|
+
const normalized = filePath.replace(/\\/g, '/');
|
|
36
|
+
return normalized === '.peaks' || normalized.startsWith('.peaks/');
|
|
37
|
+
}
|
|
38
|
+
function tryGitDiffFiles(projectRoot, baseRef) {
|
|
39
|
+
try {
|
|
40
|
+
// Combine: tracked changes vs baseRef + untracked files. Use porcelain status for untracked too.
|
|
41
|
+
const trackedRaw = execFileSync('git', ['-C', projectRoot, 'diff', '--name-only', baseRef], { encoding: 'utf8' });
|
|
42
|
+
const tracked = trackedRaw.split(/\r?\n/).map((line) => line.trim()).filter(Boolean);
|
|
43
|
+
const untrackedRaw = execFileSync('git', ['-C', projectRoot, 'ls-files', '--others', '--exclude-standard'], { encoding: 'utf8' });
|
|
44
|
+
const untracked = untrackedRaw.split(/\r?\n/).map((line) => line.trim()).filter(Boolean);
|
|
45
|
+
const merged = Array.from(new Set([...tracked, ...untracked])).filter((file) => !isArtifactWorkspaceFile(file));
|
|
46
|
+
return { ok: true, files: merged };
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return { ok: false, files: [] };
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
function buildBreakdown(files) {
|
|
53
|
+
const grouped = new Map();
|
|
54
|
+
for (const file of files) {
|
|
55
|
+
const category = classifyFile(file);
|
|
56
|
+
const list = grouped.get(category) ?? [];
|
|
57
|
+
list.push(file);
|
|
58
|
+
grouped.set(category, list);
|
|
59
|
+
}
|
|
60
|
+
return Array.from(grouped.entries()).map(([category, examples]) => ({
|
|
61
|
+
category,
|
|
62
|
+
count: examples.length,
|
|
63
|
+
examples: examples.slice(0, 5)
|
|
64
|
+
}));
|
|
65
|
+
}
|
|
66
|
+
function suggestTypes(breakdown) {
|
|
67
|
+
const counts = { source: 0, config: 0, docs: 0, lockfile: 0, test: 0, unknown: 0 };
|
|
68
|
+
for (const entry of breakdown)
|
|
69
|
+
counts[entry.category] = entry.count;
|
|
70
|
+
const hasSource = counts.source > 0;
|
|
71
|
+
const hasConfig = counts.config > 0;
|
|
72
|
+
const hasDocs = counts.docs > 0;
|
|
73
|
+
const hasLockfile = counts.lockfile > 0;
|
|
74
|
+
const hasTest = counts.test > 0;
|
|
75
|
+
if (!hasSource && !hasConfig && hasDocs)
|
|
76
|
+
return ['docs'];
|
|
77
|
+
if (!hasSource && !hasDocs && hasConfig)
|
|
78
|
+
return ['config'];
|
|
79
|
+
if (!hasSource && !hasDocs && !hasConfig && hasLockfile)
|
|
80
|
+
return ['chore'];
|
|
81
|
+
if (!hasSource && !hasDocs && !hasConfig && !hasLockfile && hasTest)
|
|
82
|
+
return ['bugfix', 'refactor'];
|
|
83
|
+
if (hasSource)
|
|
84
|
+
return ['feature', 'bugfix', 'refactor'];
|
|
85
|
+
return ['feature', 'bugfix', 'refactor', 'config', 'docs', 'chore'];
|
|
86
|
+
}
|
|
87
|
+
function isConsistent(declared, suggested) {
|
|
88
|
+
return suggested.includes(declared);
|
|
89
|
+
}
|
|
90
|
+
function buildRationale(declared, breakdown, suggested, consistent) {
|
|
91
|
+
const summary = breakdown.map((entry) => `${entry.category}=${entry.count}`).join(', ');
|
|
92
|
+
if (consistent) {
|
|
93
|
+
return `declared --type=${declared} is consistent with the changed files (${summary})`;
|
|
94
|
+
}
|
|
95
|
+
return `declared --type=${declared} disagrees with the changed files (${summary}); suggested types: ${suggested.join(' | ')}`;
|
|
96
|
+
}
|
|
97
|
+
export function checkTypeSanity(options) {
|
|
98
|
+
const baseRef = options.baseRef ?? 'HEAD';
|
|
99
|
+
const { ok: gitAvailable, files } = tryGitDiffFiles(options.projectRoot, baseRef);
|
|
100
|
+
const breakdown = buildBreakdown(files);
|
|
101
|
+
const suggested = suggestTypes(breakdown);
|
|
102
|
+
const consistent = !gitAvailable ? true : files.length === 0 ? true : isConsistent(options.declaredType, suggested);
|
|
103
|
+
return {
|
|
104
|
+
declaredType: options.declaredType,
|
|
105
|
+
gitAvailable,
|
|
106
|
+
changedFiles: files,
|
|
107
|
+
breakdown,
|
|
108
|
+
suggestedTypes: suggested,
|
|
109
|
+
consistent,
|
|
110
|
+
rationale: !gitAvailable
|
|
111
|
+
? 'git unavailable or not a git repository — type sanity check skipped (returns consistent=true)'
|
|
112
|
+
: files.length === 0
|
|
113
|
+
? `no changes detected against ${baseRef} — type sanity check skipped (returns consistent=true)`
|
|
114
|
+
: buildRationale(options.declaredType, breakdown, suggested, consistent)
|
|
115
|
+
};
|
|
116
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** Build the canonical record path for a given session/rid/timestamp. */
|
|
2
|
+
export declare function dispatchRecordPath(projectRoot: string, sid: string, rid: string, ts?: Date): string;
|
|
3
|
+
/** The directory under which dispatch records live. */
|
|
4
|
+
export declare function dispatchRecordsDir(projectRoot: string, sid: string): string;
|
|
5
|
+
/**
|
|
6
|
+
* Assert that `recordPath` lives under `projectRoot/.peaks/_sub_agents/<sid>/`.
|
|
7
|
+
* Rejects symlink/junction escapes and `..` segments.
|
|
8
|
+
*
|
|
9
|
+
* Throws an Error with `.code = 'INVALID_RECORD_PATH'` on rejection so
|
|
10
|
+
* the CLI can map to `{ok: false, code: "INVALID_RECORD_PATH"}`.
|
|
11
|
+
*/
|
|
12
|
+
export declare function assertSafeDispatchRecordPath(recordPath: string, projectRoot: string): string;
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* R-2 path-safety guard for sub-agent state files.
|
|
3
|
+
*
|
|
4
|
+
* Slice 2026-06-07-sub-agent-dispatch-decouple (G4) — reuses the same
|
|
5
|
+
* R-2 symlink/junction guard as `assertSafeSettingsFile` for
|
|
6
|
+
* `.peaks/_sub_agents/<sid>/dispatch-<rid>-<ts>.json` paths.
|
|
7
|
+
*
|
|
8
|
+
* Why a separate helper:
|
|
9
|
+
* - The settings-file guard is a per-IDE 8th field (settings.json path);
|
|
10
|
+
* this one is for runtime sub-agent trace records.
|
|
11
|
+
* - Both reject paths that resolve outside the project root after
|
|
12
|
+
* symlink resolution, and both reject `..` segments before
|
|
13
|
+
* resolution (defense in depth).
|
|
14
|
+
*
|
|
15
|
+
* The guard is intentionally small and pure (no IO beyond `realpathSync`)
|
|
16
|
+
* so it can be called from CLI handlers and from service helpers alike.
|
|
17
|
+
*/
|
|
18
|
+
import { realpathSync } from 'node:fs';
|
|
19
|
+
import { dirname, isAbsolute, relative, resolve, sep } from 'node:path';
|
|
20
|
+
const SUB_AGENTS_DIR = '_sub_agents';
|
|
21
|
+
/** Build the canonical record path for a given session/rid/timestamp. */
|
|
22
|
+
export function dispatchRecordPath(projectRoot, sid, rid, ts = new Date()) {
|
|
23
|
+
const safeSid = sanitizeSegment(sid, 'sessionId');
|
|
24
|
+
const safeRid = sanitizeSegment(rid, 'requestId');
|
|
25
|
+
const tsCompact = ts.toISOString().replace(/[:.]/g, '-');
|
|
26
|
+
return resolve(projectRoot, '.peaks', SUB_AGENTS_DIR, safeSid, `dispatch-${safeRid}-${tsCompact}.json`);
|
|
27
|
+
}
|
|
28
|
+
/** The directory under which dispatch records live. */
|
|
29
|
+
export function dispatchRecordsDir(projectRoot, sid) {
|
|
30
|
+
const safeSid = sanitizeSegment(sid, 'sessionId');
|
|
31
|
+
return resolve(projectRoot, '.peaks', SUB_AGENTS_DIR, safeSid);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Assert that `recordPath` lives under `projectRoot/.peaks/_sub_agents/<sid>/`.
|
|
35
|
+
* Rejects symlink/junction escapes and `..` segments.
|
|
36
|
+
*
|
|
37
|
+
* Throws an Error with `.code = 'INVALID_RECORD_PATH'` on rejection so
|
|
38
|
+
* the CLI can map to `{ok: false, code: "INVALID_RECORD_PATH"}`.
|
|
39
|
+
*/
|
|
40
|
+
export function assertSafeDispatchRecordPath(recordPath, projectRoot) {
|
|
41
|
+
if (!isAbsolute(recordPath)) {
|
|
42
|
+
throw invalidPathError(recordPath, 'must be absolute');
|
|
43
|
+
}
|
|
44
|
+
// Reject lexical `..` segments in the raw path BEFORE the OS-level resolver
|
|
45
|
+
// collapses them. POSIX `path.normalize` will turn `/a/b/../c` into `/a/c`,
|
|
46
|
+
// silently dropping the `..` — and that is exactly the symlink/junction
|
|
47
|
+
// escape we are guarding against. Test the raw string form.
|
|
48
|
+
const rawSegments = recordPath.split(/[\\/]/);
|
|
49
|
+
if (rawSegments.includes('..')) {
|
|
50
|
+
throw invalidPathError(recordPath, 'must not contain .. segments');
|
|
51
|
+
}
|
|
52
|
+
const expected = resolve(projectRoot, '.peaks', SUB_AGENTS_DIR);
|
|
53
|
+
const rel = relative(expected, recordPath);
|
|
54
|
+
if (rel.startsWith('..') || isAbsolute(rel)) {
|
|
55
|
+
throw invalidPathError(recordPath, 'must be under .peaks/_sub_agents/');
|
|
56
|
+
}
|
|
57
|
+
let realRecord;
|
|
58
|
+
let realRoot;
|
|
59
|
+
try {
|
|
60
|
+
// For existing files, realpathSync resolves symlinks/junctions.
|
|
61
|
+
// For new files (the common case for `dispatch` CLI writing the
|
|
62
|
+
// record for the first time), we realpath the parent + check the
|
|
63
|
+
// leaf's basename shape.
|
|
64
|
+
const parent = dirname(recordPath);
|
|
65
|
+
const realParent = realpathSync(parent);
|
|
66
|
+
realRecord = resolve(realParent, recordPath.slice(parent.length + 1));
|
|
67
|
+
realRoot = realpathSync(projectRoot);
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
// Realpath can fail if the parent does not exist yet (CLI is about
|
|
71
|
+
// to create it). Fall back to lexical comparison against the
|
|
72
|
+
// canonical projectRoot — the write will then create the file,
|
|
73
|
+
// and any symlink in the parent will be caught on the next read.
|
|
74
|
+
const fallback = resolve(projectRoot, '.peaks', SUB_AGENTS_DIR);
|
|
75
|
+
const rel2 = relative(fallback, recordPath);
|
|
76
|
+
if (rel2.startsWith('..') || isAbsolute(rel2)) {
|
|
77
|
+
throw invalidPathError(recordPath, 'must be under .peaks/_sub_agents/');
|
|
78
|
+
}
|
|
79
|
+
return recordPath;
|
|
80
|
+
}
|
|
81
|
+
const realRel = relative(realRoot, realRecord);
|
|
82
|
+
if (realRel.startsWith('..' + sep) || realRel === '..' || isAbsolute(realRel)) {
|
|
83
|
+
throw invalidPathError(recordPath, 'escapes project root via symlink');
|
|
84
|
+
}
|
|
85
|
+
return realRecord;
|
|
86
|
+
}
|
|
87
|
+
function sanitizeSegment(segment, label) {
|
|
88
|
+
if (typeof segment !== 'string' || segment.length === 0) {
|
|
89
|
+
throw new Error(`Invalid ${label}: empty`);
|
|
90
|
+
}
|
|
91
|
+
if (!/^[A-Za-z0-9._-]+$/.test(segment)) {
|
|
92
|
+
throw new Error(`Invalid ${label}: must match [A-Za-z0-9._-]+ (got ${JSON.stringify(segment)})`);
|
|
93
|
+
}
|
|
94
|
+
if (segment.includes('..')) {
|
|
95
|
+
throw new Error(`Invalid ${label}: must not contain ..`);
|
|
96
|
+
}
|
|
97
|
+
return segment;
|
|
98
|
+
}
|
|
99
|
+
function invalidPathError(path, reason) {
|
|
100
|
+
const err = new Error(`Unsafe dispatch record path (${reason}): ${path}`);
|
|
101
|
+
err.code = 'INVALID_RECORD_PATH';
|
|
102
|
+
err.path = path;
|
|
103
|
+
return err;
|
|
104
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Binding status service — v2.18.2 read-only introspection helper.
|
|
3
|
+
*
|
|
4
|
+
* Surfaces the on-disk binding-store contents to the
|
|
5
|
+
* `peaks binding status` CLI command (follow-up issue #2, deferred
|
|
6
|
+
* from the v2.18.0 PRD §3.4 nice-to-have list).
|
|
7
|
+
*
|
|
8
|
+
* The service is intentionally read-only: it never calls
|
|
9
|
+
* `registerInstance`, `heartbeat`, `dropInstance`, or any other
|
|
10
|
+
* mutator. The only writes it performs are to stdout/stderr (the
|
|
11
|
+
* rendering layer). This is the v2.18.2 "no side effects on status"
|
|
12
|
+
* contract — a user running `peaks binding status` must not see their
|
|
13
|
+
* own binding change underneath them.
|
|
14
|
+
*
|
|
15
|
+
* Format modes:
|
|
16
|
+
* - `table` (default for non-TTY): ASCII table with columns
|
|
17
|
+
* `sid | callerId | pid | roles | lastHeartbeat`. Designed to be
|
|
18
|
+
* greppable and pipeable; no ANSI colour, no padding tricks.
|
|
19
|
+
* - `json` (default when `--json` is set): raw binding dump matching
|
|
20
|
+
* the zod `BindingSchema` shape.
|
|
21
|
+
*/
|
|
22
|
+
import { type Binding, type InstanceRecord } from './binding-store.js';
|
|
23
|
+
export type BindingStatusFormat = 'table' | 'json';
|
|
24
|
+
export type BindingStatusView = {
|
|
25
|
+
/** The raw binding that was read (or `null` when no binding exists). */
|
|
26
|
+
binding: Binding | null;
|
|
27
|
+
/** The on-disk source of the binding (informational; the CLI uses this for the header). */
|
|
28
|
+
source: 'canonical' | 'legacy' | 'none';
|
|
29
|
+
/** The project root the binding was read from. */
|
|
30
|
+
projectRoot: string;
|
|
31
|
+
/** True when the binding's callerIds do not match the current outer-session-id env signal. */
|
|
32
|
+
stale: boolean;
|
|
33
|
+
/** The current outer-session-id resolved from PEAKS_OUTER_SESSION_ID / CLAUDE_CODE_SESSION_ID / 'unknown'. */
|
|
34
|
+
outerSessionId: string;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Read the binding from disk and assemble the read-only view. Pure
|
|
38
|
+
* helper that does no filesystem writes; safe to call from any test.
|
|
39
|
+
*/
|
|
40
|
+
export declare function loadBindingStatus(projectRoot: string): BindingStatusView;
|
|
41
|
+
/**
|
|
42
|
+
* Render the binding as a pipeable ASCII table. The columns are fixed
|
|
43
|
+
* (no truncation, no wrapping) so a downstream `awk` / `cut` pipeline
|
|
44
|
+
* can be built against it. Returns the empty string (NOT a header
|
|
45
|
+
* row) when the binding has no instances, so callers can detect "no
|
|
46
|
+
* data" via the row count.
|
|
47
|
+
*/
|
|
48
|
+
export declare function formatTable(view: BindingStatusView): string;
|
|
49
|
+
/**
|
|
50
|
+
* Render the binding as a JSON envelope. The shape mirrors
|
|
51
|
+
* `BindingSchema` (camelCase keys kept for back-compat with the
|
|
52
|
+
* existing v2.18.0 callers; instance fields are nested under
|
|
53
|
+
* `instances[<sid>]`).
|
|
54
|
+
*/
|
|
55
|
+
export declare function formatJson(view: BindingStatusView): Record<string, unknown>;
|
|
56
|
+
export declare function isInstanceRecord(value: unknown): value is InstanceRecord;
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Binding status service — v2.18.2 read-only introspection helper.
|
|
3
|
+
*
|
|
4
|
+
* Surfaces the on-disk binding-store contents to the
|
|
5
|
+
* `peaks binding status` CLI command (follow-up issue #2, deferred
|
|
6
|
+
* from the v2.18.0 PRD §3.4 nice-to-have list).
|
|
7
|
+
*
|
|
8
|
+
* The service is intentionally read-only: it never calls
|
|
9
|
+
* `registerInstance`, `heartbeat`, `dropInstance`, or any other
|
|
10
|
+
* mutator. The only writes it performs are to stdout/stderr (the
|
|
11
|
+
* rendering layer). This is the v2.18.2 "no side effects on status"
|
|
12
|
+
* contract — a user running `peaks binding status` must not see their
|
|
13
|
+
* own binding change underneath them.
|
|
14
|
+
*
|
|
15
|
+
* Format modes:
|
|
16
|
+
* - `table` (default for non-TTY): ASCII table with columns
|
|
17
|
+
* `sid | callerId | pid | roles | lastHeartbeat`. Designed to be
|
|
18
|
+
* greppable and pipeable; no ANSI colour, no padding tricks.
|
|
19
|
+
* - `json` (default when `--json` is set): raw binding dump matching
|
|
20
|
+
* the zod `BindingSchema` shape.
|
|
21
|
+
*/
|
|
22
|
+
import { existsSync } from 'node:fs';
|
|
23
|
+
import { join } from 'node:path';
|
|
24
|
+
import { readBinding } from './binding-store.js';
|
|
25
|
+
/**
|
|
26
|
+
* Read the binding from disk and assemble the read-only view. Pure
|
|
27
|
+
* helper that does no filesystem writes; safe to call from any test.
|
|
28
|
+
*/
|
|
29
|
+
export function loadBindingStatus(projectRoot) {
|
|
30
|
+
const binding = readBinding(projectRoot);
|
|
31
|
+
const canonicalExists = existsSync(join(projectRoot, '.peaks', '_runtime', 'session.json'));
|
|
32
|
+
const legacyExists = existsSync(join(projectRoot, '.peaks', '.session.json'));
|
|
33
|
+
const source = canonicalExists ? 'canonical' : legacyExists ? 'legacy' : 'none';
|
|
34
|
+
const outerSessionId = readOuterSessionId();
|
|
35
|
+
const stale = binding === null
|
|
36
|
+
? false
|
|
37
|
+
: !Object.values(binding.instances).some((inst) => inst.callerId.startsWith(outerSessionId));
|
|
38
|
+
return { binding, source, projectRoot, stale, outerSessionId };
|
|
39
|
+
}
|
|
40
|
+
function readOuterSessionId() {
|
|
41
|
+
const peaks = process.env.PEAKS_OUTER_SESSION_ID;
|
|
42
|
+
if (typeof peaks === 'string' && peaks.length > 0)
|
|
43
|
+
return peaks;
|
|
44
|
+
const claude = process.env.CLAUDE_CODE_SESSION_ID;
|
|
45
|
+
if (typeof claude === 'string' && claude.length > 0)
|
|
46
|
+
return claude;
|
|
47
|
+
return 'unknown';
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Render the binding as a pipeable ASCII table. The columns are fixed
|
|
51
|
+
* (no truncation, no wrapping) so a downstream `awk` / `cut` pipeline
|
|
52
|
+
* can be built against it. Returns the empty string (NOT a header
|
|
53
|
+
* row) when the binding has no instances, so callers can detect "no
|
|
54
|
+
* data" via the row count.
|
|
55
|
+
*/
|
|
56
|
+
export function formatTable(view) {
|
|
57
|
+
if (view.binding === null)
|
|
58
|
+
return '';
|
|
59
|
+
const rows = [];
|
|
60
|
+
for (const [sid, inst] of Object.entries(view.binding.instances)) {
|
|
61
|
+
rows.push([sid, inst.callerId, String(view.binding.pid), inst.roles.join(','), inst.lastHeartbeat]);
|
|
62
|
+
}
|
|
63
|
+
if (rows.length === 0)
|
|
64
|
+
return '';
|
|
65
|
+
const header = ['sid', 'callerId', 'pid', 'roles', 'lastHeartbeat'];
|
|
66
|
+
const all = [header, ...rows];
|
|
67
|
+
const widths = header.map((_, i) => Math.max(...all.map((r) => r[i].length)));
|
|
68
|
+
const pad = (cells) => cells.map((c, i) => c.padEnd(widths[i])).join(' ');
|
|
69
|
+
const sep = widths.map((w) => '-'.repeat(w)).join(' ');
|
|
70
|
+
return [pad(header), sep, ...rows.map(pad)].join('\n');
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Render the binding as a JSON envelope. The shape mirrors
|
|
74
|
+
* `BindingSchema` (camelCase keys kept for back-compat with the
|
|
75
|
+
* existing v2.18.0 callers; instance fields are nested under
|
|
76
|
+
* `instances[<sid>]`).
|
|
77
|
+
*/
|
|
78
|
+
export function formatJson(view) {
|
|
79
|
+
if (view.binding === null) {
|
|
80
|
+
return {
|
|
81
|
+
binding: null,
|
|
82
|
+
source: view.source,
|
|
83
|
+
projectRoot: view.projectRoot,
|
|
84
|
+
stale: view.stale,
|
|
85
|
+
outerSessionId: view.outerSessionId
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
return {
|
|
89
|
+
binding: view.binding,
|
|
90
|
+
source: view.source,
|
|
91
|
+
projectRoot: view.projectRoot,
|
|
92
|
+
stale: view.stale,
|
|
93
|
+
outerSessionId: view.outerSessionId
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
export function isInstanceRecord(value) {
|
|
97
|
+
// Cheap duck-type guard for tests that build a binding literal;
|
|
98
|
+
// canonical validation lives in `BindingSchema` from binding-store.
|
|
99
|
+
if (value === null || typeof value !== 'object')
|
|
100
|
+
return false;
|
|
101
|
+
const v = value;
|
|
102
|
+
return typeof v.startedAt === 'string' &&
|
|
103
|
+
Array.isArray(v.roles) &&
|
|
104
|
+
typeof v.callerId === 'string' &&
|
|
105
|
+
typeof v.lastHeartbeat === 'string';
|
|
106
|
+
}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Binding store — v2.16.0 multi-Claude-instance sentinel layer.
|
|
3
|
+
*
|
|
4
|
+
* Pre-v2.16.0 binding schema was a single-session record:
|
|
5
|
+
* { sessionId, createdAt, projectRoot }
|
|
6
|
+
*
|
|
7
|
+
* v2.16.0 schema is a multi-instance registry with conflict-detection
|
|
8
|
+
* sentinel fields (ownerHint, pid, lastHeartbeat, instances Map).
|
|
9
|
+
* See PRD `001-2026-06-29-v2-16-0-change-id-axis-removal` AC-8.
|
|
10
|
+
*
|
|
11
|
+
* The store keeps a one-shot migration from the legacy schema:
|
|
12
|
+
* legacy single-session binding → v2.16.0 instances Map with one entry,
|
|
13
|
+
* ownerHint sourced from env (PEAKS_OUTER_SESSION_ID fallback
|
|
14
|
+
* CLAUDE_CODE_SESSION_ID fallback 'unknown').
|
|
15
|
+
*
|
|
16
|
+
* Each write produces an atomic writeFileSync — partial writes from
|
|
17
|
+
* crashed processes are acceptable because re-read will re-validate
|
|
18
|
+
* with the zod schema and either re-migrate or rebuild empty.
|
|
19
|
+
*/
|
|
20
|
+
import { z } from 'zod';
|
|
21
|
+
export declare const InstanceRecordSchema: z.ZodObject<{
|
|
22
|
+
startedAt: z.ZodString;
|
|
23
|
+
roles: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
24
|
+
callerId: z.ZodString;
|
|
25
|
+
lastHeartbeat: z.ZodString;
|
|
26
|
+
}, "strip", z.ZodTypeAny, {
|
|
27
|
+
startedAt: string;
|
|
28
|
+
roles: string[];
|
|
29
|
+
callerId: string;
|
|
30
|
+
lastHeartbeat: string;
|
|
31
|
+
}, {
|
|
32
|
+
startedAt: string;
|
|
33
|
+
callerId: string;
|
|
34
|
+
lastHeartbeat: string;
|
|
35
|
+
roles?: string[] | undefined;
|
|
36
|
+
}>;
|
|
37
|
+
export declare const BindingSchema: z.ZodObject<{
|
|
38
|
+
ownerHint: z.ZodString;
|
|
39
|
+
pid: z.ZodNumber;
|
|
40
|
+
lastHeartbeat: z.ZodString;
|
|
41
|
+
scope: z.ZodString;
|
|
42
|
+
instances: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
43
|
+
startedAt: z.ZodString;
|
|
44
|
+
roles: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
45
|
+
callerId: z.ZodString;
|
|
46
|
+
lastHeartbeat: z.ZodString;
|
|
47
|
+
}, "strip", z.ZodTypeAny, {
|
|
48
|
+
startedAt: string;
|
|
49
|
+
roles: string[];
|
|
50
|
+
callerId: string;
|
|
51
|
+
lastHeartbeat: string;
|
|
52
|
+
}, {
|
|
53
|
+
startedAt: string;
|
|
54
|
+
callerId: string;
|
|
55
|
+
lastHeartbeat: string;
|
|
56
|
+
roles?: string[] | undefined;
|
|
57
|
+
}>>;
|
|
58
|
+
}, "strip", z.ZodTypeAny, {
|
|
59
|
+
lastHeartbeat: string;
|
|
60
|
+
ownerHint: string;
|
|
61
|
+
pid: number;
|
|
62
|
+
scope: string;
|
|
63
|
+
instances: Record<string, {
|
|
64
|
+
startedAt: string;
|
|
65
|
+
roles: string[];
|
|
66
|
+
callerId: string;
|
|
67
|
+
lastHeartbeat: string;
|
|
68
|
+
}>;
|
|
69
|
+
}, {
|
|
70
|
+
lastHeartbeat: string;
|
|
71
|
+
ownerHint: string;
|
|
72
|
+
pid: number;
|
|
73
|
+
scope: string;
|
|
74
|
+
instances: Record<string, {
|
|
75
|
+
startedAt: string;
|
|
76
|
+
callerId: string;
|
|
77
|
+
lastHeartbeat: string;
|
|
78
|
+
roles?: string[] | undefined;
|
|
79
|
+
}>;
|
|
80
|
+
}>;
|
|
81
|
+
export type InstanceRecord = z.infer<typeof InstanceRecordSchema>;
|
|
82
|
+
export type Binding = z.infer<typeof BindingSchema>;
|
|
83
|
+
/**
|
|
84
|
+
* Read the project-level binding.
|
|
85
|
+
*
|
|
86
|
+
* Returns null if no binding exists. Returns a migrated v2.16.0 binding
|
|
87
|
+
* when legacy schema is detected (one-shot auto-migration; original
|
|
88
|
+
* legacy file is NOT deleted — caller decides retention policy).
|
|
89
|
+
*
|
|
90
|
+
* On schema violation (corrupt JSON or missing required field), the file
|
|
91
|
+
* is backed up as `<path>.bak.<ISO>` and null is returned. The next
|
|
92
|
+
* write call will recreate the binding from scratch.
|
|
93
|
+
*/
|
|
94
|
+
export declare function readBinding(projectRoot: string): Binding | null;
|
|
95
|
+
/**
|
|
96
|
+
* Persist the binding atomically. Caller passes the full binding object;
|
|
97
|
+
* the store does NOT merge — pass the result of `readBinding` (or
|
|
98
|
+
* `withInstance`) and modify in place.
|
|
99
|
+
*/
|
|
100
|
+
export declare function writeBinding(projectRoot: string, binding: Binding): void;
|
|
101
|
+
/**
|
|
102
|
+
* Register a Claude instance by `callerId`. Idempotent: if an instance
|
|
103
|
+
* with the given callerId already exists, refresh its `lastHeartbeat`
|
|
104
|
+
* and return its sid. Otherwise pick the next free sid slot (creating
|
|
105
|
+
* a new session id under `instances`) and return it.
|
|
106
|
+
*
|
|
107
|
+
* This is the D2 Claude-instance-level binding primitive — a single
|
|
108
|
+
* Claude instance keeps one sid across multiple peaks-* skill
|
|
109
|
+
* activations; binding.instances[<sid>].roles accumulates the skill
|
|
110
|
+
* names (peaks-solo → peaks-rd → peaks-qa in the same Claude run).
|
|
111
|
+
*
|
|
112
|
+
* The caller is responsible for actually creating the session dir via
|
|
113
|
+
* `initWorkspace` and storing per-session meta via `setSessionMeta`.
|
|
114
|
+
*/
|
|
115
|
+
export declare function registerInstance(projectRoot: string, opts: {
|
|
116
|
+
callerId: string;
|
|
117
|
+
roles?: string[];
|
|
118
|
+
existingSid?: string;
|
|
119
|
+
}): {
|
|
120
|
+
binding: Binding;
|
|
121
|
+
sid: string;
|
|
122
|
+
};
|
|
123
|
+
/**
|
|
124
|
+
* Touch the `lastHeartbeat` for a specific instance. Used by the
|
|
125
|
+
* Doctor periodic loop (AC-10) and by the Skill presence `startup`
|
|
126
|
+
* gate.
|
|
127
|
+
*/
|
|
128
|
+
export declare function heartbeat(projectRoot: string, sid: string): Binding | null;
|
|
129
|
+
/**
|
|
130
|
+
* Drop an instance entry from the binding. Used when the last peaks-*
|
|
131
|
+
* skill on a Claude instance exits (AC-7: all skills inactive →
|
|
132
|
+
* no record). Returns the updated binding (or null if no instances
|
|
133
|
+
* remain and the caller wants to delete the binding entirely).
|
|
134
|
+
*/
|
|
135
|
+
export declare function dropInstance(projectRoot: string, sid: string): Binding | null;
|
|
136
|
+
/**
|
|
137
|
+
* Drop stale instances (lastHeartbeat older than `ttlMs`). Returns
|
|
138
|
+
* the list of dropped sid values so the caller can log them. Used
|
|
139
|
+
* by AC-10 Doctor.
|
|
140
|
+
*/
|
|
141
|
+
export declare function dropStale(projectRoot: string, ttlMs: number): {
|
|
142
|
+
binding: Binding | null;
|
|
143
|
+
dropped: string[];
|
|
144
|
+
};
|
|
145
|
+
/**
|
|
146
|
+
* Look up the active sid for a Claude caller. Returns null if this
|
|
147
|
+
* caller has never registered or its instance was dropped.
|
|
148
|
+
*
|
|
149
|
+
* The caller is typically the outer-session-id (PEAKS_OUTER_SESSION_ID
|
|
150
|
+
* with CLAUDE_CODE_SESSION_ID fallback) — same string used as
|
|
151
|
+
* `ownerHint` and `callerId`.
|
|
152
|
+
*/
|
|
153
|
+
export declare function findSidByCaller(projectRoot: string, callerId: string): string | null;
|
|
154
|
+
export type RebuildResult = {
|
|
155
|
+
rewritten: number;
|
|
156
|
+
preserved: number;
|
|
157
|
+
errors: string[];
|
|
158
|
+
/** True when no legacy entries were present and the file is unchanged. */
|
|
159
|
+
noop: boolean;
|
|
160
|
+
};
|
|
161
|
+
export declare function rebuildBindingFromLegacy(projectRoot: string): RebuildResult;
|