peaks-loop 4.0.0-beta.8 → 4.0.0-beta.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +45 -0
- package/bin/peaks.js +1 -1
- package/dist/cli/cli-helpers.d.ts +43 -0
- package/dist/cli/cli-helpers.js +86 -0
- package/dist/cli/commands/_cli-error-envelope.d.ts +19 -0
- package/dist/cli/commands/_cli-error-envelope.js +50 -0
- package/dist/cli/commands/adapter-commands-s2a.d.ts +34 -0
- package/dist/cli/commands/adapter-commands-s2a.js +92 -0
- package/dist/cli/commands/adapter-commands.d.ts +30 -0
- package/dist/cli/commands/adapter-commands.js +35 -0
- package/dist/cli/commands/agent-commands.d.ts +20 -0
- package/dist/cli/commands/agent-commands.js +48 -0
- package/dist/cli/commands/asset-commands.d.ts +45 -0
- package/dist/cli/commands/asset-commands.js +404 -0
- package/dist/cli/commands/audit-commands.d.ts +28 -0
- package/dist/cli/commands/audit-commands.js +437 -0
- package/dist/cli/commands/bee-commands.d.ts +26 -0
- package/dist/cli/commands/bee-commands.js +169 -0
- package/dist/cli/commands/capability-commands.d.ts +16 -0
- package/dist/cli/commands/capability-commands.js +45 -0
- package/dist/cli/commands/capability-worker-config-sc-commands.d.ts +3 -0
- package/dist/cli/commands/capability-worker-config-sc-commands.js +10 -0
- package/dist/cli/commands/classify-classify-commands.d.ts +19 -0
- package/dist/cli/commands/classify-classify-commands.js +151 -0
- package/dist/cli/commands/code-commands.d.ts +80 -0
- package/dist/cli/commands/code-commands.js +798 -0
- package/dist/cli/commands/code-review-commands.d.ts +34 -0
- package/dist/cli/commands/code-review-commands.js +83 -0
- package/dist/cli/commands/codegraph-commands.d.ts +3 -0
- package/dist/cli/commands/codegraph-commands.js +99 -0
- package/dist/cli/commands/compact-command.d.ts +21 -0
- package/dist/cli/commands/compact-command.js +252 -0
- package/dist/cli/commands/complexity-commands.d.ts +9 -0
- package/dist/cli/commands/complexity-commands.js +34 -0
- package/dist/cli/commands/config-commands.d.ts +3 -0
- package/dist/cli/commands/config-commands.js +220 -0
- package/dist/cli/commands/context-builder-commands.d.ts +11 -0
- package/dist/cli/commands/context-builder-commands.js +85 -0
- package/dist/cli/commands/context-commands.d.ts +21 -0
- package/dist/cli/commands/context-commands.js +254 -0
- package/dist/cli/commands/contract-commands.d.ts +26 -0
- package/dist/cli/commands/contract-commands.js +114 -0
- package/dist/cli/commands/core/artifacts-command.d.ts +3 -0
- package/dist/cli/commands/core/artifacts-command.js +62 -0
- package/dist/cli/commands/core/binding-commands.d.ts +3 -0
- package/dist/cli/commands/core/binding-commands.js +58 -0
- package/dist/cli/commands/core/doctor-command.d.ts +11 -0
- package/dist/cli/commands/core/doctor-command.js +204 -0
- package/dist/cli/commands/core/memory-command.d.ts +3 -0
- package/dist/cli/commands/core/memory-command.js +98 -0
- package/dist/cli/commands/core/profile-command.d.ts +3 -0
- package/dist/cli/commands/core/profile-command.js +9 -0
- package/dist/cli/commands/core/proxy-command.d.ts +3 -0
- package/dist/cli/commands/core/proxy-command.js +26 -0
- package/dist/cli/commands/core/session-command.d.ts +3 -0
- package/dist/cli/commands/core/session-command.js +241 -0
- package/dist/cli/commands/core/skill-command.d.ts +3 -0
- package/dist/cli/commands/core/skill-command.js +300 -0
- package/dist/cli/commands/core/standards-command.d.ts +3 -0
- package/dist/cli/commands/core/standards-command.js +95 -0
- package/dist/cli/commands/core-artifact-commands.d.ts +15 -0
- package/dist/cli/commands/core-artifact-commands.js +31 -0
- package/dist/cli/commands/dispatch-commands.d.ts +10 -0
- package/dist/cli/commands/dispatch-commands.js +351 -0
- package/dist/cli/commands/dispatch-from-dag.d.ts +3 -0
- package/dist/cli/commands/dispatch-from-dag.js +251 -0
- package/dist/cli/commands/doc-commands.d.ts +11 -0
- package/dist/cli/commands/doc-commands.js +65 -0
- package/dist/cli/commands/evolution-commands.d.ts +27 -0
- package/dist/cli/commands/evolution-commands.js +393 -0
- package/dist/cli/commands/feedback-commands.d.ts +18 -0
- package/dist/cli/commands/feedback-commands.js +145 -0
- package/dist/cli/commands/final-review-commands.d.ts +31 -0
- package/dist/cli/commands/final-review-commands.js +161 -0
- package/dist/cli/commands/fixture-commands.d.ts +32 -0
- package/dist/cli/commands/fixture-commands.js +91 -0
- package/dist/cli/commands/fork-commands.d.ts +16 -0
- package/dist/cli/commands/fork-commands.js +163 -0
- package/dist/cli/commands/gate-commands.d.ts +3 -0
- package/dist/cli/commands/gate-commands.js +117 -0
- package/dist/cli/commands/heartbeat-commands.d.ts +3 -0
- package/dist/cli/commands/heartbeat-commands.js +135 -0
- package/dist/cli/commands/hook-handle.d.ts +17 -0
- package/dist/cli/commands/hook-handle.js +157 -0
- package/dist/cli/commands/hooks-commands.d.ts +3 -0
- package/dist/cli/commands/hooks-commands.js +156 -0
- package/dist/cli/commands/ide-commands.d.ts +25 -0
- package/dist/cli/commands/ide-commands.js +42 -0
- package/dist/cli/commands/impact-commands.d.ts +15 -0
- package/dist/cli/commands/impact-commands.js +62 -0
- package/dist/cli/commands/job-commands.d.ts +3 -0
- package/dist/cli/commands/job-commands.js +289 -0
- package/dist/cli/commands/legacy-commands.d.ts +11 -0
- package/dist/cli/commands/legacy-commands.js +32 -0
- package/dist/cli/commands/log-commands.d.ts +17 -0
- package/dist/cli/commands/log-commands.js +64 -0
- package/dist/cli/commands/loop-commands.d.ts +27 -0
- package/dist/cli/commands/loop-commands.js +262 -0
- package/dist/cli/commands/loop-eval-commands.d.ts +20 -0
- package/dist/cli/commands/loop-eval-commands.js +526 -0
- package/dist/cli/commands/memory-commands.d.ts +23 -0
- package/dist/cli/commands/memory-commands.js +129 -0
- package/dist/cli/commands/migrate-1-4-1-command.d.ts +11 -0
- package/dist/cli/commands/migrate-1-4-1-command.js +34 -0
- package/dist/cli/commands/migrate-v2-10-to-v2-11-command.d.ts +20 -0
- package/dist/cli/commands/migrate-v2-10-to-v2-11-command.js +52 -0
- package/dist/cli/commands/mut-commands.d.ts +20 -0
- package/dist/cli/commands/mut-commands.js +239 -0
- package/dist/cli/commands/observability-commands.d.ts +22 -0
- package/dist/cli/commands/observability-commands.js +201 -0
- package/dist/cli/commands/openspec-commands.d.ts +3 -0
- package/dist/cli/commands/openspec-commands.js +237 -0
- package/dist/cli/commands/perf-audit-commands.d.ts +22 -0
- package/dist/cli/commands/perf-audit-commands.js +132 -0
- package/dist/cli/commands/perf-commands.d.ts +3 -0
- package/dist/cli/commands/perf-commands.js +41 -0
- package/dist/cli/commands/playwright-commands.d.ts +95 -0
- package/dist/cli/commands/playwright-commands.js +432 -0
- package/dist/cli/commands/polyrepo-commands.d.ts +37 -0
- package/dist/cli/commands/polyrepo-commands.js +155 -0
- package/dist/cli/commands/prd-blocks-commands.d.ts +18 -0
- package/dist/cli/commands/prd-blocks-commands.js +50 -0
- package/dist/cli/commands/prd-commands.d.ts +18 -0
- package/dist/cli/commands/prd-commands.js +141 -0
- package/dist/cli/commands/preferences-commands.d.ts +2 -0
- package/dist/cli/commands/preferences-commands.js +197 -0
- package/dist/cli/commands/project-commands.d.ts +3 -0
- package/dist/cli/commands/project-commands.js +253 -0
- package/dist/cli/commands/qa-business-review-commands.d.ts +17 -0
- package/dist/cli/commands/qa-business-review-commands.js +148 -0
- package/dist/cli/commands/qa-commands.d.ts +94 -0
- package/dist/cli/commands/qa-commands.js +271 -0
- package/dist/cli/commands/release-commands.d.ts +24 -0
- package/dist/cli/commands/release-commands.js +231 -0
- package/dist/cli/commands/request-commands.d.ts +3 -0
- package/dist/cli/commands/request-commands.js +548 -0
- package/dist/cli/commands/retrospective-commands.d.ts +12 -0
- package/dist/cli/commands/retrospective-commands.js +175 -0
- package/dist/cli/commands/reviewer-commands.d.ts +14 -0
- package/dist/cli/commands/reviewer-commands.js +64 -0
- package/dist/cli/commands/role-commands.d.ts +13 -0
- package/dist/cli/commands/role-commands.js +85 -0
- package/dist/cli/commands/runtime-commands.d.ts +52 -0
- package/dist/cli/commands/runtime-commands.js +150 -0
- package/dist/cli/commands/sc-commands.d.ts +3 -0
- package/dist/cli/commands/sc-commands.js +45 -0
- package/dist/cli/commands/scan-commands.d.ts +3 -0
- package/dist/cli/commands/scan-commands.js +445 -0
- package/dist/cli/commands/security-audit-commands.d.ts +23 -0
- package/dist/cli/commands/security-audit-commands.js +132 -0
- package/dist/cli/commands/sediment-commands.d.ts +80 -0
- package/dist/cli/commands/sediment-commands.js +649 -0
- package/dist/cli/commands/session-auto-compact-hook-command.d.ts +37 -0
- package/dist/cli/commands/session-auto-compact-hook-command.js +127 -0
- package/dist/cli/commands/session-checkpoint-command.d.ts +10 -0
- package/dist/cli/commands/session-checkpoint-command.js +100 -0
- package/dist/cli/commands/session-migrate-skill-name.d.ts +17 -0
- package/dist/cli/commands/session-migrate-skill-name.js +41 -0
- package/dist/cli/commands/session-resume-command.d.ts +11 -0
- package/dist/cli/commands/session-resume-command.js +83 -0
- package/dist/cli/commands/share-commands.d.ts +17 -0
- package/dist/cli/commands/share-commands.js +296 -0
- package/dist/cli/commands/skill-conformance-commands.d.ts +9 -0
- package/dist/cli/commands/skill-conformance-commands.js +39 -0
- package/dist/cli/commands/skill-loop-engineering-readiness-commands.d.ts +67 -0
- package/dist/cli/commands/skill-loop-engineering-readiness-commands.js +173 -0
- package/dist/cli/commands/skill-search-commands.d.ts +25 -0
- package/dist/cli/commands/skill-search-commands.js +68 -0
- package/dist/cli/commands/skill-visibility.d.ts +8 -0
- package/dist/cli/commands/skill-visibility.js +63 -0
- package/dist/cli/commands/slice-commands.d.ts +24 -0
- package/dist/cli/commands/slice-commands.js +492 -0
- package/dist/cli/commands/slice-integrate-commands.d.ts +11 -0
- package/dist/cli/commands/slice-integrate-commands.js +74 -0
- package/dist/cli/commands/slice-review-commands.d.ts +23 -0
- package/dist/cli/commands/slice-review-commands.js +162 -0
- package/dist/cli/commands/smoke-commands.d.ts +21 -0
- package/dist/cli/commands/smoke-commands.js +203 -0
- package/dist/cli/commands/sop-commands.d.ts +3 -0
- package/dist/cli/commands/sop-commands.js +215 -0
- package/dist/cli/commands/statusline-commands.d.ts +3 -0
- package/dist/cli/commands/statusline-commands.js +169 -0
- package/dist/cli/commands/sub-agent-commands.d.ts +22 -0
- package/dist/cli/commands/sub-agent-commands.js +19 -0
- package/dist/cli/commands/sub-agent-dispatch-guard.d.ts +55 -0
- package/dist/cli/commands/sub-agent-dispatch-guard.js +57 -0
- package/dist/cli/commands/sub-agent-shared.d.ts +99 -0
- package/dist/cli/commands/sub-agent-shared.js +67 -0
- package/dist/cli/commands/test-commands.d.ts +47 -0
- package/dist/cli/commands/test-commands.js +204 -0
- package/dist/cli/commands/understand-commands.d.ts +3 -0
- package/dist/cli/commands/understand-commands.js +148 -0
- package/dist/cli/commands/upgrade-commands.d.ts +23 -0
- package/dist/cli/commands/upgrade-commands.js +119 -0
- package/dist/cli/commands/user-touchpoint-commands.d.ts +18 -0
- package/dist/cli/commands/user-touchpoint-commands.js +78 -0
- package/dist/cli/commands/verdict-aggregate-command.d.ts +14 -0
- package/dist/cli/commands/verdict-aggregate-command.js +106 -0
- package/dist/cli/commands/worker-commands.d.ts +3 -0
- package/dist/cli/commands/worker-commands.js +52 -0
- package/dist/cli/commands/workflow-commands.d.ts +3 -0
- package/dist/cli/commands/workflow-commands.js +544 -0
- package/dist/cli/commands/workflow-plan-commands.d.ts +39 -0
- package/dist/cli/commands/workflow-plan-commands.js +163 -0
- package/dist/cli/commands/workspace/clean-command.d.ts +14 -0
- package/dist/cli/commands/workspace/clean-command.js +49 -0
- package/dist/cli/commands/workspace/helpers.d.ts +28 -0
- package/dist/cli/commands/workspace/helpers.js +87 -0
- package/dist/cli/commands/workspace/init-command.d.ts +139 -0
- package/dist/cli/commands/workspace/init-command.js +505 -0
- package/dist/cli/commands/workspace/migrate-command.d.ts +11 -0
- package/dist/cli/commands/workspace/migrate-command.js +91 -0
- package/dist/cli/commands/workspace/reconcile-command.d.ts +14 -0
- package/dist/cli/commands/workspace/reconcile-command.js +103 -0
- package/dist/cli/commands/workspace-commands.d.ts +18 -0
- package/dist/cli/commands/workspace-commands.js +50 -0
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/index.js +30 -0
- package/dist/cli/program.d.ts +5 -0
- package/dist/cli/program.js +408 -0
- package/dist/hooks/pre-tool-use-sub-agent.d.ts +28 -0
- package/dist/hooks/pre-tool-use-sub-agent.js +105 -0
- package/dist/lib/render/message-renderer.d.ts +20 -0
- package/dist/lib/render/message-renderer.js +80 -0
- package/dist/services/adapter/adapter-registry.d.ts +48 -0
- package/dist/services/adapter/adapter-registry.js +186 -0
- package/dist/services/adapter/adapter.d.ts +27 -0
- package/dist/services/adapter/adapter.js +5 -0
- package/dist/services/adapter/auto-adapter.d.ts +11 -0
- package/dist/services/adapter/auto-adapter.js +15 -0
- package/dist/services/adapter/claude-adapter.d.ts +14 -0
- package/dist/services/adapter/claude-adapter.js +40 -0
- package/dist/services/adapter/codex-adapter.d.ts +14 -0
- package/dist/services/adapter/codex-adapter.js +14 -0
- package/dist/services/adapter/copilot-adapter.d.ts +14 -0
- package/dist/services/adapter/copilot-adapter.js +14 -0
- package/dist/services/agent/ecc-agent-service.d.ts +47 -0
- package/dist/services/agent/ecc-agent-service.js +143 -0
- package/dist/services/artifacts/artifact-lint-service.d.ts +23 -0
- package/dist/services/artifacts/artifact-lint-service.js +99 -0
- package/dist/services/artifacts/artifact-prerequisites.d.ts +78 -0
- package/dist/services/artifacts/artifact-prerequisites.js +491 -0
- package/dist/services/artifacts/artifact-service.d.ts +43 -0
- package/dist/services/artifacts/artifact-service.js +98 -0
- package/dist/services/artifacts/artifact-templates.d.ts +30 -0
- package/dist/services/artifacts/artifact-templates.js +302 -0
- package/dist/services/artifacts/repair-cycle-service.d.ts +23 -0
- package/dist/services/artifacts/repair-cycle-service.js +52 -0
- package/dist/services/artifacts/request-artifact-service.d.ts +116 -0
- package/dist/services/artifacts/request-artifact-service.js +451 -0
- package/dist/services/artifacts/request-artifact-state-helpers.d.ts +51 -0
- package/dist/services/artifacts/request-artifact-state-helpers.js +114 -0
- package/dist/services/artifacts/workspace-service.d.ts +34 -0
- package/dist/services/artifacts/workspace-service.js +272 -0
- package/dist/services/audit/artifact-writer.d.ts +93 -0
- package/dist/services/audit/artifact-writer.js +303 -0
- package/dist/services/audit/audit-goal-service.d.ts +35 -0
- package/dist/services/audit/audit-goal-service.js +75 -0
- package/dist/services/audit/audit-goal-types.d.ts +40 -0
- package/dist/services/audit/audit-goal-types.js +15 -0
- package/dist/services/audit/backing-detector.d.ts +24 -0
- package/dist/services/audit/backing-detector.js +59 -0
- package/dist/services/audit/classifier.d.ts +38 -0
- package/dist/services/audit/classifier.js +134 -0
- package/dist/services/audit/decision-writer.d.ts +76 -0
- package/dist/services/audit/decision-writer.js +217 -0
- package/dist/services/audit/enforcers/active-skill-resolver.d.ts +29 -0
- package/dist/services/audit/enforcers/active-skill-resolver.js +71 -0
- package/dist/services/audit/enforcers/code-ban.d.ts +23 -0
- package/dist/services/audit/enforcers/code-ban.js +27 -0
- package/dist/services/audit/enforcers/design-draft-confirm.d.ts +24 -0
- package/dist/services/audit/enforcers/design-draft-confirm.js +58 -0
- package/dist/services/audit/enforcers/lint-audit-regression.d.ts +21 -0
- package/dist/services/audit/enforcers/lint-audit-regression.js +86 -0
- package/dist/services/audit/enforcers/lint-catalog-governance.d.ts +32 -0
- package/dist/services/audit/enforcers/lint-catalog-governance.js +48 -0
- package/dist/services/audit/enforcers/lint-cli-back.d.ts +16 -0
- package/dist/services/audit/enforcers/lint-cli-back.js +35 -0
- package/dist/services/audit/enforcers/lint-output-style.d.ts +11 -0
- package/dist/services/audit/enforcers/lint-output-style.js +94 -0
- package/dist/services/audit/enforcers/lint-reference-integrity.d.ts +6 -0
- package/dist/services/audit/enforcers/lint-reference-integrity.js +83 -0
- package/dist/services/audit/enforcers/lint-reference-shape.d.ts +30 -0
- package/dist/services/audit/enforcers/lint-reference-shape.js +272 -0
- package/dist/services/audit/enforcers/lint-style.d.ts +49 -0
- package/dist/services/audit/enforcers/lint-style.js +173 -0
- package/dist/services/audit/enforcers/lint-workflow-shape.d.ts +4 -0
- package/dist/services/audit/enforcers/lint-workflow-shape.js +100 -0
- package/dist/services/audit/enforcers/login-gate.d.ts +23 -0
- package/dist/services/audit/enforcers/login-gate.js +40 -0
- package/dist/services/audit/enforcers/mock-placement.d.ts +25 -0
- package/dist/services/audit/enforcers/mock-placement.js +48 -0
- package/dist/services/audit/enforcers/no-root-pollution.d.ts +21 -0
- package/dist/services/audit/enforcers/no-root-pollution.js +56 -0
- package/dist/services/audit/enforcers/pre-rd-scan.d.ts +22 -0
- package/dist/services/audit/enforcers/pre-rd-scan.js +23 -0
- package/dist/services/audit/enforcers/prototype-fidelity.d.ts +25 -0
- package/dist/services/audit/enforcers/prototype-fidelity.js +75 -0
- package/dist/services/audit/enforcers/resume-detection.d.ts +21 -0
- package/dist/services/audit/enforcers/resume-detection.js +52 -0
- package/dist/services/audit/enforcers/sub-agent-sid.d.ts +25 -0
- package/dist/services/audit/enforcers/sub-agent-sid.js +63 -0
- package/dist/services/audit/prose-ratio-calculator.d.ts +45 -0
- package/dist/services/audit/prose-ratio-calculator.js +52 -0
- package/dist/services/audit/red-line-catalog-p2-a.d.ts +21 -0
- package/dist/services/audit/red-line-catalog-p2-a.js +229 -0
- package/dist/services/audit/red-line-catalog-p2-b.d.ts +19 -0
- package/dist/services/audit/red-line-catalog-p2-b.js +225 -0
- package/dist/services/audit/red-line-catalog.d.ts +51 -0
- package/dist/services/audit/red-line-catalog.js +195 -0
- package/dist/services/audit/red-lines-service.d.ts +23 -0
- package/dist/services/audit/red-lines-service.js +464 -0
- package/dist/services/audit/scanners/openspec-scanner.d.ts +15 -0
- package/dist/services/audit/scanners/openspec-scanner.js +55 -0
- package/dist/services/audit/scanners/rules-tree-scanner.d.ts +16 -0
- package/dist/services/audit/scanners/rules-tree-scanner.js +56 -0
- package/dist/services/audit/scanners/skills-tree-scanner.d.ts +17 -0
- package/dist/services/audit/scanners/skills-tree-scanner.js +68 -0
- package/dist/services/audit/static-service.d.ts +60 -0
- package/dist/services/audit/static-service.js +130 -0
- package/dist/services/audit/types.d.ts +86 -0
- package/dist/services/audit/types.js +13 -0
- package/dist/services/audit-independent/perf-audit-service.d.ts +151 -0
- package/dist/services/audit-independent/perf-audit-service.js +316 -0
- package/dist/services/audit-independent/security-audit-service.d.ts +155 -0
- package/dist/services/audit-independent/security-audit-service.js +316 -0
- package/dist/services/classify/classify-service.d.ts +42 -0
- package/dist/services/classify/classify-service.js +122 -0
- package/dist/services/classify/classify-types.d.ts +79 -0
- package/dist/services/classify/classify-types.js +90 -0
- package/dist/services/code/auto-compact-orchestrator.d.ts +98 -0
- package/dist/services/code/auto-compact-orchestrator.js +343 -0
- package/dist/services/code/batch-heartbeat-poller.d.ts +51 -0
- package/dist/services/code/batch-heartbeat-poller.js +88 -0
- package/dist/services/code/dag-orchestrator.d.ts +128 -0
- package/dist/services/code/dag-orchestrator.js +304 -0
- package/dist/services/code/emit-handoff.d.ts +49 -0
- package/dist/services/code/emit-handoff.js +79 -0
- package/dist/services/code/job-shape-decision.d.ts +71 -0
- package/dist/services/code/job-shape-decision.js +151 -0
- package/dist/services/code/mode-gate.d.ts +163 -0
- package/dist/services/code/mode-gate.js +212 -0
- package/dist/services/code/post-compact-detector.d.ts +61 -0
- package/dist/services/code/post-compact-detector.js +240 -0
- package/dist/services/code/status-line-renderer.d.ts +34 -0
- package/dist/services/code/status-line-renderer.js +55 -0
- package/dist/services/code/step-08-gate.d.ts +90 -0
- package/dist/services/code/step-08-gate.js +136 -0
- package/dist/services/code/user-touchpoint-classifier.d.ts +44 -0
- package/dist/services/code/user-touchpoint-classifier.js +145 -0
- package/dist/services/code-review/ecc-bridge.d.ts +148 -0
- package/dist/services/code-review/ecc-bridge.js +242 -0
- package/dist/services/code-review/ocr-service.d.ts +129 -0
- package/dist/services/code-review/ocr-service.js +369 -0
- package/dist/services/codegraph/codegraph-process-runner.d.ts +2 -0
- package/dist/services/codegraph/codegraph-process-runner.js +93 -0
- package/dist/services/codegraph/codegraph-service.d.ts +43 -0
- package/dist/services/codegraph/codegraph-service.js +160 -0
- package/dist/services/compact/decision-tables.d.ts +66 -0
- package/dist/services/compact/decision-tables.js +127 -0
- package/dist/services/compact/request-transition-hook.d.ts +20 -0
- package/dist/services/compact/request-transition-hook.js +110 -0
- package/dist/services/compact/suggest-service.d.ts +74 -0
- package/dist/services/compact/suggest-service.js +203 -0
- package/dist/services/complexity/complexity-estimator.d.ts +34 -0
- package/dist/services/complexity/complexity-estimator.js +64 -0
- package/dist/services/config/config-migration.d.ts +45 -0
- package/dist/services/config/config-migration.js +154 -0
- package/dist/services/config/config-restore.d.ts +10 -0
- package/dist/services/config/config-restore.js +47 -0
- package/dist/services/config/config-rollback.d.ts +13 -0
- package/dist/services/config/config-rollback.js +26 -0
- package/dist/services/config/config-safety.d.ts +40 -0
- package/dist/services/config/config-safety.js +359 -0
- package/dist/services/config/config-service.d.ts +69 -0
- package/dist/services/config/config-service.js +814 -0
- package/dist/services/config/config-types.d.ts +119 -0
- package/dist/services/config/config-types.js +18 -0
- package/dist/services/config/model-routing.d.ts +66 -0
- package/dist/services/config/model-routing.js +105 -0
- package/dist/services/config/provider-service.d.ts +48 -0
- package/dist/services/config/provider-service.js +143 -0
- package/dist/services/config/proxy-service.d.ts +21 -0
- package/dist/services/config/proxy-service.js +44 -0
- package/dist/services/config/sidecar-store.d.ts +25 -0
- package/dist/services/config/sidecar-store.js +61 -0
- package/dist/services/config/workspace-state-service.d.ts +30 -0
- package/dist/services/config/workspace-state-service.js +142 -0
- package/dist/services/context/artifact-meta.d.ts +72 -0
- package/dist/services/context/artifact-meta.js +105 -0
- package/dist/services/context/auto-compact-dispatcher.d.ts +37 -0
- package/dist/services/context/auto-compact-dispatcher.js +240 -0
- package/dist/services/context/auto-compact-reader.d.ts +51 -0
- package/dist/services/context/auto-compact-reader.js +164 -0
- package/dist/services/context/auto-compact-types.d.ts +143 -0
- package/dist/services/context/auto-compact-types.js +36 -0
- package/dist/services/context/collector.d.ts +24 -0
- package/dist/services/context/collector.js +133 -0
- package/dist/services/context/context-builder.d.ts +30 -0
- package/dist/services/context/context-builder.js +78 -0
- package/dist/services/context/context-guard.d.ts +49 -0
- package/dist/services/context/context-guard.js +91 -0
- package/dist/services/context/context-schema.d.ts +415 -0
- package/dist/services/context/context-schema.js +73 -0
- package/dist/services/context/dispatch-context-guard.d.ts +27 -0
- package/dist/services/context/dispatch-context-guard.js +192 -0
- package/dist/services/context/doc-retriever.d.ts +26 -0
- package/dist/services/context/doc-retriever.js +51 -0
- package/dist/services/context/headroom-client.d.ts +34 -0
- package/dist/services/context/headroom-client.js +117 -0
- package/dist/services/context/headroom-fetcher.d.ts +6 -0
- package/dist/services/context/headroom-fetcher.js +28 -0
- package/dist/services/context/headroom-prefs.d.ts +46 -0
- package/dist/services/context/headroom-prefs.js +34 -0
- package/dist/services/context/index.d.ts +7 -0
- package/dist/services/context/index.js +6 -0
- package/dist/services/context/main-session-monitor.d.ts +89 -0
- package/dist/services/context/main-session-monitor.js +142 -0
- package/dist/services/context/renderer.d.ts +20 -0
- package/dist/services/context/renderer.js +30 -0
- package/dist/services/context/shared-channel.d.ts +93 -0
- package/dist/services/context/shared-channel.js +308 -0
- package/dist/services/context/threshold.d.ts +35 -0
- package/dist/services/context/threshold.js +76 -0
- package/dist/services/context/tokenizer.d.ts +12 -0
- package/dist/services/context/tokenizer.js +43 -0
- package/dist/services/context/types.d.ts +93 -0
- package/dist/services/context/types.js +9 -0
- package/dist/services/crystallization/crystallization-service.d.ts +239 -0
- package/dist/services/crystallization/crystallization-service.js +397 -0
- package/dist/services/crystallization/crystallization-store.d.ts +75 -0
- package/dist/services/crystallization/crystallization-store.js +193 -0
- package/dist/services/crystallization/crystallization-types.d.ts +313 -0
- package/dist/services/crystallization/crystallization-types.js +299 -0
- package/dist/services/crystallization/evidence-brief-builder.d.ts +237 -0
- package/dist/services/crystallization/evidence-brief-builder.js +240 -0
- package/dist/services/dashboard/project-dashboard-service.d.ts +91 -0
- package/dist/services/dashboard/project-dashboard-service.js +147 -0
- package/dist/services/dispatch/batch-counter.d.ts +27 -0
- package/dist/services/dispatch/batch-counter.js +102 -0
- package/dist/services/dispatch/contract-store.d.ts +63 -0
- package/dist/services/dispatch/contract-store.js +157 -0
- package/dist/services/dispatch/dispatch-record-writer.d.ts +138 -0
- package/dist/services/dispatch/dispatch-record-writer.js +460 -0
- package/dist/services/dispatch/heartbeat-truncator.d.ts +26 -0
- package/dist/services/dispatch/heartbeat-truncator.js +13 -0
- package/dist/services/dispatch/leak-detector.d.ts +11 -0
- package/dist/services/dispatch/leak-detector.js +72 -0
- package/dist/services/dispatch/slice-dag.d.ts +81 -0
- package/dist/services/dispatch/slice-dag.js +238 -0
- package/dist/services/dispatch/sub-agent-dispatcher.d.ts +239 -0
- package/dist/services/dispatch/sub-agent-dispatcher.js +382 -0
- package/dist/services/dispatch/test-tool-detection.d.ts +36 -0
- package/dist/services/dispatch/test-tool-detection.js +46 -0
- package/dist/services/doc/doc-generator.d.ts +38 -0
- package/dist/services/doc/doc-generator.js +122 -0
- package/dist/services/doctor/doctor-service.d.ts +149 -0
- package/dist/services/doctor/doctor-service.js +929 -0
- package/dist/services/evolution/evolution-service.d.ts +137 -0
- package/dist/services/evolution/evolution-service.js +281 -0
- package/dist/services/evolution/evolution-store.d.ts +57 -0
- package/dist/services/evolution/evolution-store.js +232 -0
- package/dist/services/evolution/evolution-types.d.ts +706 -0
- package/dist/services/evolution/evolution-types.js +286 -0
- package/dist/services/evolution/independent-evaluator-runner.d.ts +90 -0
- package/dist/services/evolution/independent-evaluator-runner.js +106 -0
- package/dist/services/evolution/regression-skeptic-runner.d.ts +64 -0
- package/dist/services/evolution/regression-skeptic-runner.js +113 -0
- package/dist/services/feedback/feedback-promotion-service.d.ts +123 -0
- package/dist/services/feedback/feedback-promotion-service.js +300 -0
- package/dist/services/filesystem/file-lock.d.ts +11 -0
- package/dist/services/filesystem/file-lock.js +152 -0
- package/dist/services/final-review/final-review-service.d.ts +12 -0
- package/dist/services/final-review/final-review-service.js +52 -0
- package/dist/services/final-review/final-review-types.d.ts +42 -0
- package/dist/services/final-review/final-review-types.js +18 -0
- package/dist/services/fixture/fixture-capture-service.d.ts +87 -0
- package/dist/services/fixture/fixture-capture-service.js +317 -0
- package/dist/services/fixture/fixture-sanitize-service.d.ts +117 -0
- package/dist/services/fixture/fixture-sanitize-service.js +161 -0
- package/dist/services/fixture/index.d.ts +8 -0
- package/dist/services/fixture/index.js +8 -0
- package/dist/services/fork/fork-sync-state.d.ts +85 -0
- package/dist/services/fork/fork-sync-state.js +130 -0
- package/dist/services/fuzzy-matching/fuzzy-match-service.d.ts +15 -0
- package/dist/services/fuzzy-matching/fuzzy-match-service.js +56 -0
- package/dist/services/fuzzy-matching/fzf-pick-service.d.ts +68 -0
- package/dist/services/fuzzy-matching/fzf-pick-service.js +158 -0
- package/dist/services/fuzzy-matching/types.d.ts +20 -0
- package/dist/services/fuzzy-matching/types.js +1 -0
- package/dist/services/handoff/handoff-parser.d.ts +28 -0
- package/dist/services/handoff/handoff-parser.js +69 -0
- package/dist/services/handoff/handoff-types.d.ts +39 -0
- package/dist/services/handoff/handoff-types.js +19 -0
- package/dist/services/handoff/handoff-writer.d.ts +23 -0
- package/dist/services/handoff/handoff-writer.js +30 -0
- package/dist/services/hooks/auto-compact-hook-install.d.ts +104 -0
- package/dist/services/hooks/auto-compact-hook-install.js +157 -0
- package/dist/services/hooks/output.d.ts +92 -0
- package/dist/services/hooks/output.js +111 -0
- package/dist/services/hooks/presence-marker-detector.d.ts +16 -0
- package/dist/services/hooks/presence-marker-detector.js +105 -0
- package/dist/services/ide/adapters/claude-code-adapter.d.ts +18 -0
- package/dist/services/ide/adapters/claude-code-adapter.js +103 -0
- package/dist/services/ide/adapters/codex-adapter.d.ts +46 -0
- package/dist/services/ide/adapters/codex-adapter.js +97 -0
- package/dist/services/ide/adapters/cursor-adapter.d.ts +36 -0
- package/dist/services/ide/adapters/cursor-adapter.js +84 -0
- package/dist/services/ide/adapters/hermes-adapter.d.ts +21 -0
- package/dist/services/ide/adapters/hermes-adapter.js +51 -0
- package/dist/services/ide/adapters/openclaw-adapter.d.ts +14 -0
- package/dist/services/ide/adapters/openclaw-adapter.js +42 -0
- package/dist/services/ide/adapters/trae-adapter.d.ts +42 -0
- package/dist/services/ide/adapters/trae-adapter.js +83 -0
- package/dist/services/ide/adapters/zcode-adapter.d.ts +40 -0
- package/dist/services/ide/adapters/zcode-adapter.js +220 -0
- package/dist/services/ide/current-model-detector.d.ts +14 -0
- package/dist/services/ide/current-model-detector.js +60 -0
- package/dist/services/ide/hook-protocol.d.ts +47 -0
- package/dist/services/ide/hook-protocol.js +74 -0
- package/dist/services/ide/hook-translator.d.ts +72 -0
- package/dist/services/ide/hook-translator.js +128 -0
- package/dist/services/ide/ide-detector.d.ts +10 -0
- package/dist/services/ide/ide-detector.js +19 -0
- package/dist/services/ide/ide-registry.d.ts +14 -0
- package/dist/services/ide/ide-registry.js +63 -0
- package/dist/services/ide/ide-types.d.ts +253 -0
- package/dist/services/ide/ide-types.js +2 -0
- package/dist/services/ide/resource-profile.d.ts +52 -0
- package/dist/services/ide/resource-profile.js +33 -0
- package/dist/services/ide/shared/atomic-json.d.ts +15 -0
- package/dist/services/ide/shared/atomic-json.js +58 -0
- package/dist/services/ide/shared/safe-path.d.ts +11 -0
- package/dist/services/ide/shared/safe-path.js +29 -0
- package/dist/services/impact/impact-scan-service.d.ts +66 -0
- package/dist/services/impact/impact-scan-service.js +197 -0
- package/dist/services/job/job-event-emitter.d.ts +30 -0
- package/dist/services/job/job-event-emitter.js +5 -0
- package/dist/services/job/job-orchestrator.d.ts +50 -0
- package/dist/services/job/job-orchestrator.js +104 -0
- package/dist/services/job/job-progress-store.d.ts +60 -0
- package/dist/services/job/job-progress-store.js +70 -0
- package/dist/services/job/job-resource-snapshot.d.ts +7 -0
- package/dist/services/job/job-resource-snapshot.js +75 -0
- package/dist/services/job/job-rotation.d.ts +17 -0
- package/dist/services/job/job-rotation.js +30 -0
- package/dist/services/job/job-state-store.d.ts +24 -0
- package/dist/services/job/job-state-store.js +60 -0
- package/dist/services/job/job-types.d.ts +444 -0
- package/dist/services/job/job-types.js +87 -0
- package/dist/services/job/subagent-job-wrapper.d.ts +35 -0
- package/dist/services/job/subagent-job-wrapper.js +30 -0
- package/dist/services/legacy/legacy-detector.d.ts +34 -0
- package/dist/services/legacy/legacy-detector.js +111 -0
- package/dist/services/log/log-commands-service.d.ts +54 -0
- package/dist/services/log/log-commands-service.js +83 -0
- package/dist/services/log/logger.d.ts +103 -0
- package/dist/services/log/logger.js +224 -0
- package/dist/services/log/redact.d.ts +32 -0
- package/dist/services/log/redact.js +89 -0
- package/dist/services/log/retention.d.ts +34 -0
- package/dist/services/log/retention.js +78 -0
- package/dist/services/loop/evaluator-dispatcher.d.ts +50 -0
- package/dist/services/loop/evaluator-dispatcher.js +552 -0
- package/dist/services/loop/loop-bee-relation-service.d.ts +107 -0
- package/dist/services/loop/loop-bee-relation-service.js +211 -0
- package/dist/services/loop/loop-bee-relation-store.d.ts +53 -0
- package/dist/services/loop/loop-bee-relation-store.js +130 -0
- package/dist/services/loop/loop-bee-relation-types.d.ts +118 -0
- package/dist/services/loop/loop-bee-relation-types.js +114 -0
- package/dist/services/loop/loop-release-service.d.ts +46 -0
- package/dist/services/loop/loop-release-service.js +66 -0
- package/dist/services/loop/loop-release-store.d.ts +55 -0
- package/dist/services/loop/loop-release-store.js +134 -0
- package/dist/services/loop/loop-release-types.d.ts +250 -0
- package/dist/services/loop/loop-release-types.js +162 -0
- package/dist/services/loop/monotonic-guard.d.ts +80 -0
- package/dist/services/loop/monotonic-guard.js +232 -0
- package/dist/services/loop/monotonic-runner.d.ts +58 -0
- package/dist/services/loop/monotonic-runner.js +231 -0
- package/dist/services/loop/run-driver.d.ts +70 -0
- package/dist/services/loop/run-driver.js +400 -0
- package/dist/services/loop/spec-service.d.ts +90 -0
- package/dist/services/loop/spec-service.js +497 -0
- package/dist/services/memory/llm-reranker.d.ts +174 -0
- package/dist/services/memory/llm-reranker.js +284 -0
- package/dist/services/memory/memory-search-service.d.ts +93 -0
- package/dist/services/memory/memory-search-service.js +117 -0
- package/dist/services/memory/project-context-service.d.ts +21 -0
- package/dist/services/memory/project-context-service.js +161 -0
- package/dist/services/memory/project-memory-service.d.ts +167 -0
- package/dist/services/memory/project-memory-service.js +817 -0
- package/dist/services/migrate-skill-name/migrate.d.ts +17 -0
- package/dist/services/migrate-skill-name/migrate.js +152 -0
- package/dist/services/migrate-skill-name/schema.d.ts +42 -0
- package/dist/services/migrate-skill-name/schema.js +25 -0
- package/dist/services/migration/v2-10-to-v2-11-service.d.ts +44 -0
- package/dist/services/migration/v2-10-to-v2-11-service.js +190 -0
- package/dist/services/migration/v2-10-to-v2-11-types.d.ts +41 -0
- package/dist/services/migration/v2-10-to-v2-11-types.js +23 -0
- package/dist/services/mode/bypass-tracker.d.ts +4 -0
- package/dist/services/mode/bypass-tracker.js +31 -0
- package/dist/services/mode/mode-enforcement.d.ts +14 -0
- package/dist/services/mode/mode-enforcement.js +84 -0
- package/dist/services/mut/assert-scanner.d.ts +6 -0
- package/dist/services/mut/assert-scanner.js +116 -0
- package/dist/services/mut/index.d.ts +8 -0
- package/dist/services/mut/index.js +7 -0
- package/dist/services/mut/mut-runner.d.ts +39 -0
- package/dist/services/mut/mut-runner.js +29 -0
- package/dist/services/mut/production-stryker.d.ts +2 -0
- package/dist/services/mut/production-stryker.js +75 -0
- package/dist/services/mut/report-builder.d.ts +11 -0
- package/dist/services/mut/report-builder.js +110 -0
- package/dist/services/mut/report-loader.d.ts +31 -0
- package/dist/services/mut/report-loader.js +78 -0
- package/dist/services/mut/thresholds.d.ts +21 -0
- package/dist/services/mut/thresholds.js +22 -0
- package/dist/services/mut/types.d.ts +336 -0
- package/dist/services/mut/types.js +59 -0
- package/dist/services/observability/aggregation.d.ts +64 -0
- package/dist/services/observability/aggregation.js +217 -0
- package/dist/services/observability/jsonl-store.d.ts +59 -0
- package/dist/services/observability/jsonl-store.js +120 -0
- package/dist/services/observability/observability-service.d.ts +95 -0
- package/dist/services/observability/observability-service.js +119 -0
- package/dist/services/observability/report-formatter.d.ts +42 -0
- package/dist/services/observability/report-formatter.js +156 -0
- package/dist/services/openspec/openspec-archive-service.d.ts +12 -0
- package/dist/services/openspec/openspec-archive-service.js +28 -0
- package/dist/services/openspec/openspec-bridge-service.d.ts +16 -0
- package/dist/services/openspec/openspec-bridge-service.js +76 -0
- package/dist/services/openspec/openspec-init-service.d.ts +23 -0
- package/dist/services/openspec/openspec-init-service.js +122 -0
- package/dist/services/openspec/openspec-propose-from-doctor-service.d.ts +31 -0
- package/dist/services/openspec/openspec-propose-from-doctor-service.js +95 -0
- package/dist/services/openspec/openspec-render-service.d.ts +38 -0
- package/dist/services/openspec/openspec-render-service.js +130 -0
- package/dist/services/openspec/openspec-scan-service.d.ts +6 -0
- package/dist/services/openspec/openspec-scan-service.js +123 -0
- package/dist/services/openspec/openspec-types.d.ts +39 -0
- package/dist/services/openspec/openspec-types.js +1 -0
- package/dist/services/openspec/openspec-validate-service.d.ts +27 -0
- package/dist/services/openspec/openspec-validate-service.js +77 -0
- package/dist/services/perf/perf-baseline-service.d.ts +70 -0
- package/dist/services/perf/perf-baseline-service.js +214 -0
- package/dist/services/polyrepo/polyrepo-dispatcher.d.ts +34 -0
- package/dist/services/polyrepo/polyrepo-dispatcher.js +119 -0
- package/dist/services/polyrepo/polyrepo-scanner.d.ts +9 -0
- package/dist/services/polyrepo/polyrepo-scanner.js +94 -0
- package/dist/services/polyrepo/polyrepo-service.d.ts +34 -0
- package/dist/services/polyrepo/polyrepo-service.js +49 -0
- package/dist/services/polyrepo/polyrepo-types.d.ts +55 -0
- package/dist/services/polyrepo/polyrepo-types.js +1 -0
- package/dist/services/prd/handoff-auto-regen.d.ts +22 -0
- package/dist/services/prd/handoff-auto-regen.js +73 -0
- package/dist/services/prd/handoff-service.d.ts +54 -0
- package/dist/services/prd/handoff-service.js +142 -0
- package/dist/services/prd/handoff-types.d.ts +64 -0
- package/dist/services/prd/handoff-types.js +22 -0
- package/dist/services/prd/prd-blocks-checker.d.ts +51 -0
- package/dist/services/prd/prd-blocks-checker.js +130 -0
- package/dist/services/prd/project-scan-bootstrap-service.d.ts +52 -0
- package/dist/services/prd/project-scan-bootstrap-service.js +445 -0
- package/dist/services/prd/project-scan-reader.d.ts +24 -0
- package/dist/services/prd/project-scan-reader.js +150 -0
- package/dist/services/prd/project-scan-sediment.d.ts +97 -0
- package/dist/services/prd/project-scan-sediment.js +445 -0
- package/dist/services/prd/project-scan-types.d.ts +66 -0
- package/dist/services/prd/project-scan-types.js +20 -0
- package/dist/services/preferences/preferences-service.d.ts +38 -0
- package/dist/services/preferences/preferences-service.js +198 -0
- package/dist/services/preferences/preferences-types.d.ts +148 -0
- package/dist/services/preferences/preferences-types.js +53 -0
- package/dist/services/profiles/profile-service.d.ts +6 -0
- package/dist/services/profiles/profile-service.js +19 -0
- package/dist/services/progress/progress-service.d.ts +125 -0
- package/dist/services/progress/progress-service.js +192 -0
- package/dist/services/providers/minimax-provider-service.d.ts +24 -0
- package/dist/services/providers/minimax-provider-service.js +143 -0
- package/dist/services/providers/minimax-worker-service.d.ts +21 -0
- package/dist/services/providers/minimax-worker-service.js +83 -0
- package/dist/services/proxy/proxy-service.d.ts +7 -0
- package/dist/services/proxy/proxy-service.js +31 -0
- package/dist/services/qa/browser-event-logger.d.ts +40 -0
- package/dist/services/qa/browser-event-logger.js +54 -0
- package/dist/services/qa/browser-restart-detector.d.ts +74 -0
- package/dist/services/qa/browser-restart-detector.js +138 -0
- package/dist/services/qa/browser-reuse-hint.d.ts +18 -0
- package/dist/services/qa/browser-reuse-hint.js +18 -0
- package/dist/services/qa/browser-wrapper-service.d.ts +37 -0
- package/dist/services/qa/browser-wrapper-service.js +88 -0
- package/dist/services/qa/qa-business-review-state.d.ts +47 -0
- package/dist/services/qa/qa-business-review-state.js +96 -0
- package/dist/services/rd/ast-gate.d.ts +19 -0
- package/dist/services/rd/ast-gate.js +71 -0
- package/dist/services/rd/impl.d.ts +9 -0
- package/dist/services/rd/impl.js +57 -0
- package/dist/services/rd/rd-service.d.ts +129 -0
- package/dist/services/rd/rd-service.js +441 -0
- package/dist/services/rd/reviewer-dispatch-policy.d.ts +122 -0
- package/dist/services/rd/reviewer-dispatch-policy.js +148 -0
- package/dist/services/rd/standards-diagnostic.d.ts +76 -0
- package/dist/services/rd/standards-diagnostic.js +166 -0
- package/dist/services/rd/strategic-stage.d.ts +4 -0
- package/dist/services/rd/strategic-stage.js +15 -0
- package/dist/services/rd/strategy.d.ts +13 -0
- package/dist/services/rd/strategy.js +60 -0
- package/dist/services/rd/tactical-stage.d.ts +33 -0
- package/dist/services/rd/tactical-stage.js +62 -0
- package/dist/services/rd/types.d.ts +252 -0
- package/dist/services/rd/types.js +47 -0
- package/dist/services/recommendations/capability-availability.d.ts +5 -0
- package/dist/services/recommendations/capability-availability.js +40 -0
- package/dist/services/recommendations/capability-map-service.d.ts +7 -0
- package/dist/services/recommendations/capability-map-service.js +131 -0
- package/dist/services/recommendations/capability-seed-items.d.ts +2 -0
- package/dist/services/recommendations/capability-seed-items.js +140 -0
- package/dist/services/recommendations/capability-seed-mappings.d.ts +2 -0
- package/dist/services/recommendations/capability-seed-mappings.js +54 -0
- package/dist/services/recommendations/capability-seed-sources.d.ts +2 -0
- package/dist/services/recommendations/capability-seed-sources.js +35 -0
- package/dist/services/recommendations/recommendation-service.d.ts +8 -0
- package/dist/services/recommendations/recommendation-service.js +106 -0
- package/dist/services/recommendations/recommendation-types.d.ts +129 -0
- package/dist/services/recommendations/recommendation-types.js +1 -0
- package/dist/services/recommendations/seed-capability-catalog.d.ts +3 -0
- package/dist/services/recommendations/seed-capability-catalog.js +3 -0
- package/dist/services/refactor/refactor-service.d.ts +9 -0
- package/dist/services/refactor/refactor-service.js +36 -0
- package/dist/services/release/release-state.d.ts +70 -0
- package/dist/services/release/release-state.js +140 -0
- package/dist/services/retrospective/retrospective-index.d.ts +37 -0
- package/dist/services/retrospective/retrospective-index.js +110 -0
- package/dist/services/retrospective/retrospective-search-service.d.ts +55 -0
- package/dist/services/retrospective/retrospective-search-service.js +107 -0
- package/dist/services/retrospective/retrospective-show.d.ts +40 -0
- package/dist/services/retrospective/retrospective-show.js +109 -0
- package/dist/services/reviewer/model-family.d.ts +18 -0
- package/dist/services/reviewer/model-family.js +70 -0
- package/dist/services/reviewer/providers/anthropic.d.ts +2 -0
- package/dist/services/reviewer/providers/anthropic.js +61 -0
- package/dist/services/reviewer/providers/ollama.d.ts +26 -0
- package/dist/services/reviewer/providers/ollama.js +38 -0
- package/dist/services/reviewer/providers/openai.d.ts +2 -0
- package/dist/services/reviewer/providers/openai.js +63 -0
- package/dist/services/reviewer/reviewer-config.d.ts +34 -0
- package/dist/services/reviewer/reviewer-config.js +100 -0
- package/dist/services/reviewer/reviewer-service.d.ts +56 -0
- package/dist/services/reviewer/reviewer-service.js +263 -0
- package/dist/services/reviewer/selection-strategies.d.ts +27 -0
- package/dist/services/reviewer/selection-strategies.js +53 -0
- package/dist/services/role/role-registry.d.ts +38 -0
- package/dist/services/role/role-registry.js +83 -0
- package/dist/services/runtime/runtime-detector.d.ts +15 -0
- package/dist/services/runtime/runtime-detector.js +62 -0
- package/dist/services/runtime/runtime-service.d.ts +59 -0
- package/dist/services/runtime/runtime-service.js +51 -0
- package/dist/services/runtime/vendor-adapter.d.ts +59 -0
- package/dist/services/runtime/vendor-adapter.js +1 -0
- package/dist/services/runtime/vendors/claude-code.d.ts +7 -0
- package/dist/services/runtime/vendors/claude-code.js +39 -0
- package/dist/services/runtime/vendors/codex.d.ts +7 -0
- package/dist/services/runtime/vendors/codex.js +43 -0
- package/dist/services/runtime/vendors/copilot.d.ts +7 -0
- package/dist/services/runtime/vendors/copilot.js +40 -0
- package/dist/services/sc/index.d.ts +1 -0
- package/dist/services/sc/index.js +1 -0
- package/dist/services/sc/sc-service.d.ts +131 -0
- package/dist/services/sc/sc-service.js +552 -0
- package/dist/services/scan/acceptance-coverage-service.d.ts +42 -0
- package/dist/services/scan/acceptance-coverage-service.js +140 -0
- package/dist/services/scan/api-surface-service.d.ts +69 -0
- package/dist/services/scan/api-surface-service.js +239 -0
- package/dist/services/scan/archetype-service.d.ts +5 -0
- package/dist/services/scan/archetype-service.js +254 -0
- package/dist/services/scan/diff-scope-service.d.ts +40 -0
- package/dist/services/scan/diff-scope-service.js +198 -0
- package/dist/services/scan/existing-system-service.d.ts +7 -0
- package/dist/services/scan/existing-system-service.js +300 -0
- package/dist/services/scan/file-size-scan.d.ts +23 -0
- package/dist/services/scan/file-size-scan.js +68 -0
- package/dist/services/scan/karpathy-service.d.ts +60 -0
- package/dist/services/scan/karpathy-service.js +228 -0
- package/dist/services/scan/libraries-service.d.ts +24 -0
- package/dist/services/scan/libraries-service.js +419 -0
- package/dist/services/scan/libraries-types.d.ts +59 -0
- package/dist/services/scan/libraries-types.js +9 -0
- package/dist/services/scan/orphan-service.d.ts +76 -0
- package/dist/services/scan/orphan-service.js +538 -0
- package/dist/services/scan/scan-types.d.ts +59 -0
- package/dist/services/scan/scan-types.js +1 -0
- package/dist/services/scan/type-sanity-service.d.ts +23 -0
- package/dist/services/scan/type-sanity-service.js +116 -0
- package/dist/services/security/safe-settings-path.d.ts +12 -0
- package/dist/services/security/safe-settings-path.js +104 -0
- package/dist/services/sediment/dispose-confirm.d.ts +9 -0
- package/dist/services/sediment/dispose-confirm.js +5 -0
- package/dist/services/sediment/json-schema.d.ts +247 -0
- package/dist/services/sediment/json-schema.js +26 -0
- package/dist/services/sediment/manifest-lint.d.ts +13 -0
- package/dist/services/sediment/manifest-lint.js +11 -0
- package/dist/services/sediment/pool-paths.d.ts +22 -0
- package/dist/services/sediment/pool-paths.js +25 -0
- package/dist/services/sediment/pool-read.d.ts +20 -0
- package/dist/services/sediment/pool-read.js +73 -0
- package/dist/services/sediment/pool-rebuild-index.d.ts +15 -0
- package/dist/services/sediment/pool-rebuild-index.js +28 -0
- package/dist/services/sediment/pool-write.d.ts +14 -0
- package/dist/services/sediment/pool-write.js +25 -0
- package/dist/services/sediment/promotion-gate.d.ts +12 -0
- package/dist/services/sediment/promotion-gate.js +20 -0
- package/dist/services/sediment/types.d.ts +52 -0
- package/dist/services/sediment/types.js +1 -0
- package/dist/services/session/binding-status-service.d.ts +56 -0
- package/dist/services/session/binding-status-service.js +106 -0
- package/dist/services/session/binding-store.d.ts +161 -0
- package/dist/services/session/binding-store.js +509 -0
- package/dist/services/session/caller-binding-service.d.ts +70 -0
- package/dist/services/session/caller-binding-service.js +148 -0
- package/dist/services/session/caller-id-types.d.ts +77 -0
- package/dist/services/session/caller-id-types.js +46 -0
- package/dist/services/session/getSessionDir.d.ts +1 -0
- package/dist/services/session/getSessionDir.js +27 -0
- package/dist/services/session/index.d.ts +6 -0
- package/dist/services/session/index.js +7 -0
- package/dist/services/session/platform-fallbacks.d.ts +31 -0
- package/dist/services/session/platform-fallbacks.js +35 -0
- package/dist/services/session/resolve-caller-id.d.ts +57 -0
- package/dist/services/session/resolve-caller-id.js +88 -0
- package/dist/services/session/session-binding-bridge.d.ts +76 -0
- package/dist/services/session/session-binding-bridge.js +247 -0
- package/dist/services/session/session-checkpoint-service.d.ts +57 -0
- package/dist/services/session/session-checkpoint-service.js +143 -0
- package/dist/services/session/session-manager.d.ts +168 -0
- package/dist/services/session/session-manager.js +502 -0
- package/dist/services/session/session-resume-service.d.ts +25 -0
- package/dist/services/session/session-resume-service.js +101 -0
- package/dist/services/share/bundle-reader.d.ts +100 -0
- package/dist/services/share/bundle-reader.js +434 -0
- package/dist/services/share/bundle-types.d.ts +392 -0
- package/dist/services/share/bundle-types.js +318 -0
- package/dist/services/share/bundle-writer.d.ts +97 -0
- package/dist/services/share/bundle-writer.js +429 -0
- package/dist/services/share/run-state-contract.d.ts +133 -0
- package/dist/services/share/run-state-contract.js +138 -0
- package/dist/services/signal/cancel-handler.d.ts +14 -0
- package/dist/services/signal/cancel-handler.js +76 -0
- package/dist/services/skill/resume-detector.d.ts +54 -0
- package/dist/services/skill/resume-detector.js +334 -0
- package/dist/services/skill/skill-scheduler.d.ts +40 -0
- package/dist/services/skill/skill-scheduler.js +53 -0
- package/dist/services/skill/skill-search-service.d.ts +88 -0
- package/dist/services/skill/skill-search-service.js +228 -0
- package/dist/services/skillhub/release-diff.d.ts +18 -0
- package/dist/services/skillhub/release-diff.js +38 -0
- package/dist/services/skillhub/release-export.d.ts +8 -0
- package/dist/services/skillhub/release-export.js +31 -0
- package/dist/services/skillhub/release-gc-blobs.d.ts +13 -0
- package/dist/services/skillhub/release-gc-blobs.js +32 -0
- package/dist/services/skillhub/release-import.d.ts +7 -0
- package/dist/services/skillhub/release-import.js +64 -0
- package/dist/services/skillhub/release-retain.d.ts +23 -0
- package/dist/services/skillhub/release-retain.js +94 -0
- package/dist/services/skillhub/sqlite-store.d.ts +22 -0
- package/dist/services/skillhub/sqlite-store.js +63 -0
- package/dist/services/skillhub/tar-runtime.d.ts +21 -0
- package/dist/services/skillhub/tar-runtime.js +91 -0
- package/dist/services/skillhub/types.d.ts +115 -0
- package/dist/services/skillhub/types.js +1 -0
- package/dist/services/skills/hooks-settings-service.d.ts +137 -0
- package/dist/services/skills/hooks-settings-service.js +396 -0
- package/dist/services/skills/skill-conformance-service.d.ts +40 -0
- package/dist/services/skills/skill-conformance-service.js +139 -0
- package/dist/services/skills/skill-presence-service.d.ts +158 -0
- package/dist/services/skills/skill-presence-service.js +474 -0
- package/dist/services/skills/skill-registry.d.ts +17 -0
- package/dist/services/skills/skill-registry.js +67 -0
- package/dist/services/skills/skill-runbook-service.d.ts +11 -0
- package/dist/services/skills/skill-runbook-service.js +128 -0
- package/dist/services/skills/skill-statusline-renderer.d.ts +6 -0
- package/dist/services/skills/skill-statusline-renderer.js +55 -0
- package/dist/services/skills/skill-statusline-service.d.ts +24 -0
- package/dist/services/skills/skill-statusline-service.js +110 -0
- package/dist/services/skills/statusline-settings-service.d.ts +59 -0
- package/dist/services/skills/statusline-settings-service.js +141 -0
- package/dist/services/skills/sync-service.d.ts +86 -0
- package/dist/services/skills/sync-service.js +271 -0
- package/dist/services/slice/calibration-store.d.ts +39 -0
- package/dist/services/slice/calibration-store.js +68 -0
- package/dist/services/slice/cross-pass-edge-merger.d.ts +53 -0
- package/dist/services/slice/cross-pass-edge-merger.js +246 -0
- package/dist/services/slice/granularity-decider.d.ts +37 -0
- package/dist/services/slice/granularity-decider.js +40 -0
- package/dist/services/slice/llm-arbitrator.d.ts +35 -0
- package/dist/services/slice/llm-arbitrator.js +63 -0
- package/dist/services/slice/multi-pass-orchestrator.d.ts +67 -0
- package/dist/services/slice/multi-pass-orchestrator.js +225 -0
- package/dist/services/slice/schema-router.d.ts +44 -0
- package/dist/services/slice/schema-router.js +61 -0
- package/dist/services/slice/slice-archive-service.d.ts +20 -0
- package/dist/services/slice/slice-archive-service.js +111 -0
- package/dist/services/slice/slice-benchmark-service.d.ts +19 -0
- package/dist/services/slice/slice-benchmark-service.js +60 -0
- package/dist/services/slice/slice-check-service.d.ts +2 -0
- package/dist/services/slice/slice-check-service.js +459 -0
- package/dist/services/slice/slice-check-types.d.ts +104 -0
- package/dist/services/slice/slice-check-types.js +28 -0
- package/dist/services/slice/slice-decompose-runners.d.ts +23 -0
- package/dist/services/slice/slice-decompose-runners.js +174 -0
- package/dist/services/slice/slice-decompose-service.d.ts +24 -0
- package/dist/services/slice/slice-decompose-service.js +532 -0
- package/dist/services/slice/slice-decompose-types.d.ts +263 -0
- package/dist/services/slice/slice-decompose-types.js +30 -0
- package/dist/services/slice/slice-integration.d.ts +43 -0
- package/dist/services/slice/slice-integration.js +106 -0
- package/dist/services/slice/slice-pick-service.d.ts +32 -0
- package/dist/services/slice/slice-pick-service.js +75 -0
- package/dist/services/slice/slice-review-state.d.ts +70 -0
- package/dist/services/slice/slice-review-state.js +109 -0
- package/dist/services/slice/slice-topology-types.d.ts +115 -0
- package/dist/services/slice/slice-topology-types.js +20 -0
- package/dist/services/smoke/smoke-paths-state.d.ts +73 -0
- package/dist/services/smoke/smoke-paths-state.js +117 -0
- package/dist/services/sop/gate-enforce-service.d.ts +33 -0
- package/dist/services/sop/gate-enforce-service.js +168 -0
- package/dist/services/sop/sop-advance-service.d.ts +74 -0
- package/dist/services/sop/sop-advance-service.js +115 -0
- package/dist/services/sop/sop-check-service.d.ts +45 -0
- package/dist/services/sop/sop-check-service.js +181 -0
- package/dist/services/sop/sop-paths.d.ts +62 -0
- package/dist/services/sop/sop-paths.js +92 -0
- package/dist/services/sop/sop-registry-service.d.ts +46 -0
- package/dist/services/sop/sop-registry-service.js +89 -0
- package/dist/services/sop/sop-service.d.ts +55 -0
- package/dist/services/sop/sop-service.js +222 -0
- package/dist/services/sop/sop-types.d.ts +95 -0
- package/dist/services/sop/sop-types.js +11 -0
- package/dist/services/standards/ide-aware-standards-service.d.ts +94 -0
- package/dist/services/standards/ide-aware-standards-service.js +91 -0
- package/dist/services/standards/loop-engineering-lint.d.ts +38 -0
- package/dist/services/standards/loop-engineering-lint.js +101 -0
- package/dist/services/standards/loop-engineering-readiness-lint.d.ts +111 -0
- package/dist/services/standards/loop-engineering-readiness-lint.js +248 -0
- package/dist/services/standards/migrate-claude-rules-service.d.ts +19 -0
- package/dist/services/standards/migrate-claude-rules-service.js +214 -0
- package/dist/services/standards/migrate-service.d.ts +63 -0
- package/dist/services/standards/migrate-service.js +193 -0
- package/dist/services/standards/missing-standards-detector.d.ts +81 -0
- package/dist/services/standards/missing-standards-detector.js +139 -0
- package/dist/services/standards/project-context.d.ts +24 -0
- package/dist/services/standards/project-context.js +314 -0
- package/dist/services/standards/project-standards-service.d.ts +114 -0
- package/dist/services/standards/project-standards-service.js +693 -0
- package/dist/services/tech/tech-service.d.ts +69 -0
- package/dist/services/tech/tech-service.js +299 -0
- package/dist/services/test-cache/test-cache-service.d.ts +70 -0
- package/dist/services/test-cache/test-cache-service.js +175 -0
- package/dist/services/understand/hybrid-types.d.ts +32 -0
- package/dist/services/understand/hybrid-types.js +1 -0
- package/dist/services/understand/understand-hybrid-service.d.ts +10 -0
- package/dist/services/understand/understand-hybrid-service.js +100 -0
- package/dist/services/understand/understand-scan-service.d.ts +28 -0
- package/dist/services/understand/understand-scan-service.js +170 -0
- package/dist/services/understand/understand-types.d.ts +50 -0
- package/dist/services/understand/understand-types.js +1 -0
- package/dist/services/upgrade/1x-detector-service.d.ts +7 -0
- package/dist/services/upgrade/1x-detector-service.js +94 -0
- package/dist/services/upgrade/gitignore-migrate-service.d.ts +56 -0
- package/dist/services/upgrade/gitignore-migrate-service.js +170 -0
- package/dist/services/upgrade/upgrade-service.d.ts +81 -0
- package/dist/services/upgrade/upgrade-service.js +403 -0
- package/dist/services/verdict/envelopes.d.ts +93 -0
- package/dist/services/verdict/envelopes.js +349 -0
- package/dist/services/verdict/verdict-aggregator.d.ts +94 -0
- package/dist/services/verdict/verdict-aggregator.js +112 -0
- package/dist/services/workflow/artifact-paths.d.ts +59 -0
- package/dist/services/workflow/artifact-paths.js +166 -0
- package/dist/services/workflow/autonomous-resume-writer.d.ts +16 -0
- package/dist/services/workflow/autonomous-resume-writer.js +170 -0
- package/dist/services/workflow/pipeline-verify-service.d.ts +90 -0
- package/dist/services/workflow/pipeline-verify-service.js +449 -0
- package/dist/services/workflow/plan-reader.d.ts +29 -0
- package/dist/services/workflow/plan-reader.js +174 -0
- package/dist/services/workflow/plan-refresher.d.ts +32 -0
- package/dist/services/workflow/plan-refresher.js +353 -0
- package/dist/services/workflow/plan-trigger-detector.d.ts +55 -0
- package/dist/services/workflow/plan-trigger-detector.js +142 -0
- package/dist/services/workflow/workflow-autonomous-resume-helpers.d.ts +19 -0
- package/dist/services/workflow/workflow-autonomous-resume-helpers.js +300 -0
- package/dist/services/workflow/workflow-autonomous-service.d.ts +100 -0
- package/dist/services/workflow/workflow-autonomous-service.js +306 -0
- package/dist/services/workflow/workflow-loader.d.ts +63 -0
- package/dist/services/workflow/workflow-loader.js +168 -0
- package/dist/services/workflow/workflow-router-service.d.ts +85 -0
- package/dist/services/workflow/workflow-router-service.js +233 -0
- package/dist/services/workflow/workflow-skip-service.d.ts +106 -0
- package/dist/services/workflow/workflow-skip-service.js +209 -0
- package/dist/services/workflow/workflow-spec.d.ts +116 -0
- package/dist/services/workflow/workflow-spec.js +431 -0
- package/dist/services/workflow/workflow-state-store.d.ts +27 -0
- package/dist/services/workflow/workflow-state-store.js +95 -0
- package/dist/services/workspace/claude-settings-template.d.ts +101 -0
- package/dist/services/workspace/claude-settings-template.js +254 -0
- package/dist/services/workspace/migrate-1-4-1-service.d.ts +44 -0
- package/dist/services/workspace/migrate-1-4-1-service.js +195 -0
- package/dist/services/workspace/migrate-service.d.ts +2 -0
- package/dist/services/workspace/migrate-service.js +613 -0
- package/dist/services/workspace/migrate-types.d.ts +127 -0
- package/dist/services/workspace/migrate-types.js +21 -0
- package/dist/services/workspace/reconcile-service.d.ts +188 -0
- package/dist/services/workspace/reconcile-service.js +683 -0
- package/dist/services/workspace/reconcile-types.d.ts +130 -0
- package/dist/services/workspace/reconcile-types.js +13 -0
- package/dist/services/workspace/sid-naming-guard.d.ts +17 -0
- package/dist/services/workspace/sid-naming-guard.js +34 -0
- package/dist/services/workspace/templates/project-scan/audit-output-schema.md +100 -0
- package/dist/services/workspace/templates/project-scan/business-knowledge.md +44 -0
- package/dist/services/workspace/templates/project-scan/index.d.ts +34 -0
- package/dist/services/workspace/templates/project-scan/index.js +60 -0
- package/dist/services/workspace/templates/project-scan/perf-template.md +109 -0
- package/dist/services/workspace/templates/project-scan/security-template.md +99 -0
- package/dist/services/workspace/workspace-claude-settings-materializer.d.ts +45 -0
- package/dist/services/workspace/workspace-claude-settings-materializer.js +194 -0
- package/dist/services/workspace/workspace-clean-service.d.ts +28 -0
- package/dist/services/workspace/workspace-clean-service.js +46 -0
- package/dist/services/workspace/workspace-service.d.ts +177 -0
- package/dist/services/workspace/workspace-service.js +432 -0
- package/dist/services/workspace/workspace-state-service.d.ts +7 -0
- package/dist/services/workspace/workspace-state-service.js +43 -0
- package/dist/shared/format-md-compact.d.ts +32 -0
- package/dist/shared/format-md-compact.js +297 -0
- package/dist/shared/frontmatter.d.ts +6 -0
- package/dist/shared/frontmatter.js +165 -0
- package/dist/shared/fs-utils.d.ts +4 -0
- package/dist/shared/fs-utils.js +16 -0
- package/dist/shared/fs.d.ts +4 -0
- package/dist/shared/fs.js +26 -0
- package/dist/shared/incrementing-number.d.ts +23 -0
- package/dist/shared/incrementing-number.js +68 -0
- package/dist/shared/json-schema-mini.d.ts +10 -0
- package/dist/shared/json-schema-mini.js +113 -0
- package/dist/shared/path-safety.d.ts +21 -0
- package/dist/shared/path-safety.js +54 -0
- package/dist/shared/path-utils.d.ts +13 -0
- package/dist/shared/path-utils.js +56 -0
- package/dist/shared/paths.d.ts +6 -0
- package/dist/shared/paths.js +50 -0
- package/dist/shared/planner-response.d.ts +21 -0
- package/dist/shared/planner-response.js +26 -0
- package/dist/shared/platform.d.ts +6 -0
- package/dist/shared/platform.js +11 -0
- package/dist/shared/process.d.ts +5 -0
- package/dist/shared/process.js +12 -0
- package/dist/shared/result.d.ts +22 -0
- package/dist/shared/result.js +46 -0
- package/dist/shared/stale-policy.d.ts +67 -0
- package/dist/shared/stale-policy.js +85 -0
- package/dist/shared/version.d.ts +1 -0
- package/dist/shared/version.js +1 -0
- package/dist/skills/peaks-maker/index.d.ts +5 -0
- package/dist/skills/peaks-maker/index.js +32 -0
- package/package.json +5 -4
- package/scripts/copy-templates.mjs +1 -1
|
@@ -0,0 +1,396 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { homedir } from 'node:os';
|
|
3
|
+
import { resolve } from 'node:path';
|
|
4
|
+
import { assertSafeSettingsFile } from '../ide/shared/safe-path.js';
|
|
5
|
+
import { atomicWriteJson, readJsonObjectFile } from '../ide/shared/atomic-json.js';
|
|
6
|
+
import { getAdapter } from '../ide/ide-registry.js';
|
|
7
|
+
// --- Module-level defaults (claude-code) -----------------------------------
|
|
8
|
+
// These exports remain for backward compat — tests and downstream callers
|
|
9
|
+
// that only care about Claude Code can keep importing them. The per-IDE
|
|
10
|
+
// values are computed lazily inside each public function call.
|
|
11
|
+
/** Sentinel substring identifying a Claude-Code gate-enforce hook entry. */
|
|
12
|
+
export const HOOK_ENFORCE_SENTINEL = 'peaks gate enforce';
|
|
13
|
+
/** Default (claude-code) hook command — kept as a stable export for tests. */
|
|
14
|
+
export const HOOK_ENFORCE_COMMAND = `peaks gate enforce --project "\${CLAUDE_PROJECT_DIR}"`;
|
|
15
|
+
/**
|
|
16
|
+
* Per-IDE hook command + sentinel. The default (Claude Code) uses the
|
|
17
|
+
* legacy `peaks gate enforce` surface; Trae / Cursor / Codex (Cursor-style
|
|
18
|
+
* siblings with `before*` / `pre_*` hook events) use `peaks hook handle`,
|
|
19
|
+
* the new dispatcher. New adapters register by adding a single line here.
|
|
20
|
+
*
|
|
21
|
+
* Slice #12 + #13 (2.4.0) honor the framework's "fill the table" promise
|
|
22
|
+
* — adding a new IDE does NOT require editing this function's control
|
|
23
|
+
* flow, only adding a line to this table.
|
|
24
|
+
*/
|
|
25
|
+
const HOOK_COMMAND_BY_IDE = {
|
|
26
|
+
'claude-code': { command: 'peaks gate enforce', sentinel: 'peaks gate enforce' },
|
|
27
|
+
'trae': { command: 'peaks hook handle', sentinel: 'peaks hook handle' },
|
|
28
|
+
'cursor': { command: 'peaks hook handle', sentinel: 'peaks hook handle' },
|
|
29
|
+
'codex': { command: 'peaks hook handle', sentinel: 'peaks hook handle' },
|
|
30
|
+
'hermes': { command: 'peaks gate enforce', sentinel: 'peaks gate enforce' },
|
|
31
|
+
'openclaw': { command: 'peaks gate enforce', sentinel: 'peaks gate enforce' },
|
|
32
|
+
// qoder / tongyi-lingma are reserved IdeIds (slice #1) but not yet
|
|
33
|
+
// registered. When a slice adds them, add a HOOK_COMMAND_BY_IDE entry
|
|
34
|
+
// here — the function below fail-closes on missing entries.
|
|
35
|
+
};
|
|
36
|
+
function resolveHookSpec(ide) {
|
|
37
|
+
// getAdapter throws on unregistered IDEs — the registry is the source of truth.
|
|
38
|
+
const adapter = getAdapter(ide);
|
|
39
|
+
const spec = HOOK_COMMAND_BY_IDE[ide];
|
|
40
|
+
if (!spec) {
|
|
41
|
+
// Defensive fallback: if an adapter is added to the registry without a
|
|
42
|
+
// HOOK_COMMAND_BY_IDE entry, fail-closed with a clear error instead of
|
|
43
|
+
// silently writing a Claude-shaped entry to a non-Claude settings.json.
|
|
44
|
+
throw new Error(`peaks hooks install: unsupported IDE '${ide}' (no HOOK_COMMAND_BY_IDE entry; add one to hooks-settings-service.ts)`);
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
hookEnforceCommand: `${spec.command} --project "\${${adapter.envVar}}"`,
|
|
48
|
+
hookEnforceSentinel: spec.sentinel,
|
|
49
|
+
hookEnforceMatcher: adapter.toolMatcher,
|
|
50
|
+
hookEnforceEvent: adapter.hookEvent
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
function resolveIde(options) {
|
|
54
|
+
return options?.ide ?? 'claude-code';
|
|
55
|
+
}
|
|
56
|
+
/** Slice #013: read the skipProgress opt-in flag. Slice #014: the underlying install no longer emits the progress-start entry, so the flag is effectively a no-op (kept for API stability). */
|
|
57
|
+
function resolveSkipProgress(options) {
|
|
58
|
+
return options?.skipProgress === true;
|
|
59
|
+
}
|
|
60
|
+
/** Resolve settings root dir for a scope. */
|
|
61
|
+
function resolveSettingsRoot(scope, projectRoot) {
|
|
62
|
+
if (scope === 'global')
|
|
63
|
+
return resolve(homedir());
|
|
64
|
+
if (!projectRoot) {
|
|
65
|
+
throw new Error('Project scope requires a project root');
|
|
66
|
+
}
|
|
67
|
+
return resolve(projectRoot);
|
|
68
|
+
}
|
|
69
|
+
function resolveSettingsPath(scope, ide, projectRoot) {
|
|
70
|
+
const root = resolveSettingsRoot(scope, projectRoot);
|
|
71
|
+
const adapter = getAdapter(ide);
|
|
72
|
+
return adapter.settings.resolveSettingsFile(scope, scope === 'global' ? homedir() : projectRoot);
|
|
73
|
+
}
|
|
74
|
+
function assertSafeSettingsPathCompat(scope, ide, root, settingsPath) {
|
|
75
|
+
const adapter = getAdapter(ide);
|
|
76
|
+
assertSafeSettingsFile(scope, root, adapter.settings.dirName, adapter.settings.settingsFileName);
|
|
77
|
+
// The compat path receives the already-computed settingsPath; double-check
|
|
78
|
+
// that the computed path matches what assertSafeSettingsFile would have
|
|
79
|
+
// produced. This guards against drift between the two resolvers.
|
|
80
|
+
const expected = adapter.settings.resolveSettingsFile(scope, scope === 'global' ? homedir() : root);
|
|
81
|
+
if (expected !== settingsPath) {
|
|
82
|
+
throw new Error(`settings path drift: ${expected} vs ${settingsPath}`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/** Read the existing hook array entries for the adapter's hookEvent (tolerant of any prior shape). */
|
|
86
|
+
function readHookEventEntries(settings, eventKey) {
|
|
87
|
+
const hooks = settings.hooks;
|
|
88
|
+
if (!hooks || typeof hooks !== 'object' || Array.isArray(hooks))
|
|
89
|
+
return [];
|
|
90
|
+
const arr = hooks[eventKey];
|
|
91
|
+
return Array.isArray(arr) ? arr : [];
|
|
92
|
+
}
|
|
93
|
+
/** Read the existing hook array entries from a `settings.hooks` object (already extracted). */
|
|
94
|
+
function readHookEntriesFromHooks(hooks, eventKey) {
|
|
95
|
+
const arr = hooks[eventKey];
|
|
96
|
+
return Array.isArray(arr) ? arr : [];
|
|
97
|
+
}
|
|
98
|
+
/** True when every command handler in the entry matches a known peaks sentinel for the given IDE. */
|
|
99
|
+
function entryIsPeaksManaged(entry, sentinels) {
|
|
100
|
+
const handlers = Array.isArray(entry?.hooks) ? entry.hooks : [];
|
|
101
|
+
if (handlers.length === 0)
|
|
102
|
+
return false;
|
|
103
|
+
return handlers.every((h) => {
|
|
104
|
+
if (typeof h?.command !== 'string')
|
|
105
|
+
return false;
|
|
106
|
+
const cmd = h.command;
|
|
107
|
+
return sentinels.some((sentinel) => cmd.includes(sentinel));
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Slice #014: read the *actually-installed* peaks-managed hook entries
|
|
112
|
+
* from a settings object. Replaces the pre-#014 `listInstalledEntriesForIde`
|
|
113
|
+
* helper in `hooks-commands.ts`, which returned the IDE-EXPECTED list
|
|
114
|
+
* (a hardcoded 2-entry array per adapter) rather than what was on disk.
|
|
115
|
+
* That bug surfaced when slice #013's local cleanup installed
|
|
116
|
+
* `peaks hooks install --no-progress` (gate-enforce only), but the
|
|
117
|
+
* status command still reported `entries: [Bash, Task]` because the
|
|
118
|
+
* helper didn't read the file.
|
|
119
|
+
*
|
|
120
|
+
* The new helper:
|
|
121
|
+
* 1. reads each `hooks.<event>` array,
|
|
122
|
+
* 2. filters to entries that are peaks-managed for the given IDE
|
|
123
|
+
* (matches the legacy sentinel set: gate-enforce + the no-longer-
|
|
124
|
+
* installed progress-start),
|
|
125
|
+
* 3. returns one `{ matcher, sentinel }` row per entry, taking the
|
|
126
|
+
* FIRST matching sentinel per entry (entries have a single command
|
|
127
|
+
* handler in practice, but the loop tolerates multi-handler
|
|
128
|
+
* entries by taking the first match).
|
|
129
|
+
*
|
|
130
|
+
* Pre-#014 settings.json files that have a stale progress-start entry
|
|
131
|
+
* will see it surface in the result. This is intentional: the status
|
|
132
|
+
* command is the user's tool for "what is on disk right now", and
|
|
133
|
+
* surfacing a stale entry is the only way the user can know to run
|
|
134
|
+
* `peaks hooks install` (which now strips it) or `peaks hooks
|
|
135
|
+
* uninstall` (which removes it).
|
|
136
|
+
*/
|
|
137
|
+
export function readInstalledEntriesFromSettings(settings, ide) {
|
|
138
|
+
const sentinels = resolveLegacySentinels(ide);
|
|
139
|
+
// Walk every event key the settings file has, not just the
|
|
140
|
+
// adapter-declared one. A pre-#014 install could have left a
|
|
141
|
+
// progress-start entry on a different event than the gate-enforce
|
|
142
|
+
// entry (Trae: both on beforeToolCall, but a stale install on a
|
|
143
|
+
// future IDE could split them).
|
|
144
|
+
const hooksRoot = settings.hooks;
|
|
145
|
+
if (!hooksRoot || typeof hooksRoot !== 'object' || Array.isArray(hooksRoot))
|
|
146
|
+
return [];
|
|
147
|
+
const result = [];
|
|
148
|
+
for (const eventKey of Object.keys(hooksRoot)) {
|
|
149
|
+
const entries = readHookEntriesFromHooks(hooksRoot, eventKey);
|
|
150
|
+
for (const entry of entries) {
|
|
151
|
+
if (!entryIsPeaksManaged(entry, sentinels))
|
|
152
|
+
continue;
|
|
153
|
+
const matcher = typeof entry.matcher === 'string' ? entry.matcher : '';
|
|
154
|
+
// Find the first matching sentinel inside the entry's command
|
|
155
|
+
// handlers. For each handler, find the first sentinel substring
|
|
156
|
+
// it contains. We pick the first handler's first matching
|
|
157
|
+
// sentinel (entries have a single command in practice).
|
|
158
|
+
const firstHandler = Array.isArray(entry.hooks) ? entry.hooks[0] : undefined;
|
|
159
|
+
const cmd = typeof firstHandler?.command === 'string' ? firstHandler.command : '';
|
|
160
|
+
const sentinel = sentinels.find((s) => cmd.includes(s));
|
|
161
|
+
if (matcher === '' || sentinel === undefined)
|
|
162
|
+
continue;
|
|
163
|
+
result.push({ matcher, sentinel });
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return result;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Compute the per-IDE peaks hook entries to merge into the settings file.
|
|
170
|
+
* Replaces the slice #1 hardcoded `PEAKS_HOOK_ENTRIES` constant; the constant
|
|
171
|
+
* remains exported (computed for claude-code) for backward compat.
|
|
172
|
+
*
|
|
173
|
+
* Slice #013 (`--no-progress` flag): when `skipProgress` is true, the
|
|
174
|
+
* progress-start entry is omitted from the returned list. Install with this
|
|
175
|
+
* flag will (a) NOT emit the progress hook entry, and (b) will idempotently
|
|
176
|
+
* remove any previously-installed progress entry (sentinel-based merge).
|
|
177
|
+
*
|
|
178
|
+
* Slice #014 (refactor — full removal): only the gate-enforce entry is
|
|
179
|
+
* ever emitted. The `skipProgress` parameter is kept for API stability
|
|
180
|
+
* but is a no-op — the returned list is always single-entry. The progress
|
|
181
|
+
* entry's sentinel is included in the legacy sentinel set so uninstall
|
|
182
|
+
* can find + remove any stale progress-start entry that an older
|
|
183
|
+
* `peaks hooks install` may have written before this slice.
|
|
184
|
+
*/
|
|
185
|
+
function resolveHookEntries(ide, _skipProgress = false) {
|
|
186
|
+
const spec = resolveHookSpec(ide);
|
|
187
|
+
return [
|
|
188
|
+
{ sentinel: spec.hookEnforceSentinel, matcher: spec.hookEnforceMatcher, command: spec.hookEnforceCommand, event: spec.hookEnforceEvent }
|
|
189
|
+
];
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Legacy sentinel set used by uninstall + status to find and remove stale
|
|
193
|
+
* progress-start entries written by pre-#014 installs. The progress-start
|
|
194
|
+
* sentinel is the literal substring that older installs emitted.
|
|
195
|
+
*/
|
|
196
|
+
const LEGACY_PROGRESS_START_SENTINEL = 'peaks progress start';
|
|
197
|
+
function resolveLegacySentinels(ide) {
|
|
198
|
+
if (ide === 'trae') {
|
|
199
|
+
return ['peaks hook handle', LEGACY_PROGRESS_START_SENTINEL];
|
|
200
|
+
}
|
|
201
|
+
return [HOOK_ENFORCE_SENTINEL, LEGACY_PROGRESS_START_SENTINEL];
|
|
202
|
+
}
|
|
203
|
+
/** Default (claude-code) peaks-managed hook entries — kept as a stable export for tests. Slice #014: only the gate-enforce entry. */
|
|
204
|
+
export const PEAKS_HOOK_ENTRIES = (() => {
|
|
205
|
+
const spec = resolveHookSpec('claude-code');
|
|
206
|
+
return [
|
|
207
|
+
{ sentinel: spec.hookEnforceSentinel, matcher: spec.hookEnforceMatcher, command: spec.hookEnforceCommand, event: spec.hookEnforceEvent }
|
|
208
|
+
];
|
|
209
|
+
})();
|
|
210
|
+
function isInstalledForIde(settings, ide) {
|
|
211
|
+
const entries = resolveHookEntries(ide);
|
|
212
|
+
const sentinels = entries.map((e) => e.sentinel);
|
|
213
|
+
// Check every distinct event key our entries could be on.
|
|
214
|
+
const eventKeys = new Set(entries.map((e) => e.event));
|
|
215
|
+
for (const eventKey of eventKeys) {
|
|
216
|
+
if (readHookEventEntries(settings, eventKey).some((e) => entryIsPeaksManaged(e, sentinels))) {
|
|
217
|
+
return true;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
return false;
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Slice #014: detect the "stale progress entry after pre-#014 install"
|
|
224
|
+
* case. The desired shape is gate-enforce-only. If the file currently
|
|
225
|
+
* has a peaks-managed progress-start entry (left behind by a pre-#014
|
|
226
|
+
* install), the install is NOT a no-op — it must strip the stale
|
|
227
|
+
* entry. This helper returns true exactly when the desired shape is
|
|
228
|
+
* fully reflected on disk: gate-enforce present AND no legacy
|
|
229
|
+
* progress-start present.
|
|
230
|
+
*/
|
|
231
|
+
function shapeMatchesDesired(settings, ide) {
|
|
232
|
+
const desiredEntries = resolveHookEntries(ide);
|
|
233
|
+
const desiredSentinels = new Set(desiredEntries.map((e) => e.sentinel));
|
|
234
|
+
const allPeaksSentinels = resolveLegacySentinels(ide);
|
|
235
|
+
const eventKeys = new Set(resolveHookEntries(ide).map((e) => e.event));
|
|
236
|
+
for (const eventKey of eventKeys) {
|
|
237
|
+
const present = readHookEventEntries(settings, eventKey);
|
|
238
|
+
const peaksPresent = present.filter((e) => entryIsPeaksManaged(e, allPeaksSentinels));
|
|
239
|
+
// (a) every peaks-managed entry currently on disk must match the
|
|
240
|
+
// desired sentinel set (no stale entries the caller wants removed).
|
|
241
|
+
for (const entry of peaksPresent) {
|
|
242
|
+
const entrySentinels = (entry.hooks ?? []).map((h) => allPeaksSentinels.find((s) => String(h.command ?? '').includes(s))).filter((s) => Boolean(s));
|
|
243
|
+
if (entrySentinels.some((s) => !desiredSentinels.has(s))) {
|
|
244
|
+
return false;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
// (b) every desired entry must be on disk.
|
|
248
|
+
for (const sentinel of desiredSentinels) {
|
|
249
|
+
const has = peaksPresent.some((entry) => (entry.hooks ?? []).some((h) => String(h.command ?? '').includes(sentinel)));
|
|
250
|
+
if (!has)
|
|
251
|
+
return false;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
return true;
|
|
255
|
+
}
|
|
256
|
+
export function planHookInstall(scope, projectRoot, options) {
|
|
257
|
+
const ide = resolveIde(options);
|
|
258
|
+
const _skipProgress = resolveSkipProgress(options);
|
|
259
|
+
const root = resolveSettingsRoot(scope, projectRoot);
|
|
260
|
+
const settingsPath = resolveSettingsPath(scope, ide, projectRoot);
|
|
261
|
+
assertSafeSettingsPathCompat(scope, ide, root, settingsPath);
|
|
262
|
+
const exists = existsSync(settingsPath);
|
|
263
|
+
const settings = exists ? readJsonObjectFile(settingsPath) : {};
|
|
264
|
+
const spec = resolveHookSpec(ide);
|
|
265
|
+
return {
|
|
266
|
+
scope,
|
|
267
|
+
settingsPath,
|
|
268
|
+
exists,
|
|
269
|
+
alreadyInstalled: isInstalledForIde(settings, ide),
|
|
270
|
+
desiredCommand: spec.hookEnforceCommand,
|
|
271
|
+
sentinel: spec.hookEnforceSentinel,
|
|
272
|
+
matcher: spec.hookEnforceMatcher
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
/** Merge all peaks-managed hook entries into settings, preserving all other keys and hooks. */
|
|
276
|
+
function withHooksInstalledForIde(settings, ide, _skipProgress = false) {
|
|
277
|
+
const existingHooks = (settings.hooks && typeof settings.hooks === 'object' && !Array.isArray(settings.hooks))
|
|
278
|
+
? settings.hooks
|
|
279
|
+
: {};
|
|
280
|
+
// Per-IDE entries may map to different events (Trae: gate-enforce on
|
|
281
|
+
// beforeToolCall; Claude: gate-enforce on PreToolUse). Group by event
|
|
282
|
+
// so each event array is independently merged.
|
|
283
|
+
const ourByEvent = new Map();
|
|
284
|
+
for (const spec of resolveHookEntries(ide)) {
|
|
285
|
+
const list = ourByEvent.get(spec.event) ?? [];
|
|
286
|
+
list.push(spec);
|
|
287
|
+
ourByEvent.set(spec.event, list);
|
|
288
|
+
}
|
|
289
|
+
// Slice #014: the legacy sentinel set includes the progress-start
|
|
290
|
+
// sentinel so a pre-#014 install's stale progress-start entry is
|
|
291
|
+
// stripped by the filter (the file converges on the new
|
|
292
|
+
// gate-enforce-only shape, idempotently). The desired set (passed
|
|
293
|
+
// in below) only contains the gate-enforce sentinel.
|
|
294
|
+
const allSentinels = resolveLegacySentinels(ide);
|
|
295
|
+
const nextHooks = { ...existingHooks };
|
|
296
|
+
for (const [eventKey, ourEntries] of ourByEvent) {
|
|
297
|
+
const existing = readHookEntriesFromHooks(nextHooks, eventKey);
|
|
298
|
+
const nonPeaks = existing.filter((entry) => !entryIsPeaksManaged(entry, allSentinels));
|
|
299
|
+
const ourFormatted = ourEntries.map((spec) => ({
|
|
300
|
+
matcher: spec.matcher,
|
|
301
|
+
hooks: [{ type: 'command', command: spec.command }]
|
|
302
|
+
}));
|
|
303
|
+
const merged = [...nonPeaks, ...ourFormatted];
|
|
304
|
+
if (merged.length > 0) {
|
|
305
|
+
nextHooks[eventKey] = merged;
|
|
306
|
+
}
|
|
307
|
+
else {
|
|
308
|
+
delete nextHooks[eventKey];
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
return {
|
|
312
|
+
...settings,
|
|
313
|
+
hooks: nextHooks
|
|
314
|
+
};
|
|
315
|
+
}
|
|
316
|
+
export function applyHookInstall(scope, projectRoot, options) {
|
|
317
|
+
const ide = resolveIde(options);
|
|
318
|
+
const _skipProgress = resolveSkipProgress(options);
|
|
319
|
+
const root = resolveSettingsRoot(scope, projectRoot);
|
|
320
|
+
const settingsPath = resolveSettingsPath(scope, ide, projectRoot);
|
|
321
|
+
assertSafeSettingsPathCompat(scope, ide, root, settingsPath);
|
|
322
|
+
const exists = existsSync(settingsPath);
|
|
323
|
+
const settings = exists ? readJsonObjectFile(settingsPath) : {};
|
|
324
|
+
const spec = resolveHookSpec(ide);
|
|
325
|
+
// Slice #014: `alreadyInstalled` reflects the FULL desired shape
|
|
326
|
+
// (gate-enforce-only + no stale progress-start entry). Pre-#014
|
|
327
|
+
// installs that left a progress-start entry behind will be treated
|
|
328
|
+
// as not-yet-installed, so the merge strips the stale entry on the
|
|
329
|
+
// next install call. This is the only path that converges the file
|
|
330
|
+
// on the new shape; pure presence-checks are insufficient.
|
|
331
|
+
const alreadyInstalled = shapeMatchesDesired(settings, ide);
|
|
332
|
+
const baseResult = {
|
|
333
|
+
scope,
|
|
334
|
+
settingsPath,
|
|
335
|
+
exists,
|
|
336
|
+
alreadyInstalled,
|
|
337
|
+
desiredCommand: spec.hookEnforceCommand,
|
|
338
|
+
sentinel: spec.hookEnforceSentinel,
|
|
339
|
+
matcher: spec.hookEnforceMatcher
|
|
340
|
+
};
|
|
341
|
+
if (baseResult.alreadyInstalled) {
|
|
342
|
+
return { ...baseResult, applied: false };
|
|
343
|
+
}
|
|
344
|
+
atomicWriteJson(settingsPath, withHooksInstalledForIde(settings, ide));
|
|
345
|
+
return { ...baseResult, alreadyInstalled: false, applied: true };
|
|
346
|
+
}
|
|
347
|
+
export function removeHookInstall(scope, projectRoot, options) {
|
|
348
|
+
const ide = resolveIde(options);
|
|
349
|
+
const root = resolveSettingsRoot(scope, projectRoot);
|
|
350
|
+
const settingsPath = resolveSettingsPath(scope, ide, projectRoot);
|
|
351
|
+
assertSafeSettingsPathCompat(scope, ide, root, settingsPath);
|
|
352
|
+
if (!existsSync(settingsPath)) {
|
|
353
|
+
return { scope, settingsPath, removed: false };
|
|
354
|
+
}
|
|
355
|
+
const settings = readJsonObjectFile(settingsPath);
|
|
356
|
+
const existingHooks = settings.hooks ?? {};
|
|
357
|
+
// Slice #014: uninstall must remove the gate-enforce entry AND any
|
|
358
|
+
// legacy progress-start entry that a pre-#014 install left behind.
|
|
359
|
+
// The legacy sentinel set covers both shapes so the uninstall
|
|
360
|
+
// converges the file on "no peaks-managed entries", regardless of
|
|
361
|
+
// what shape the file was in when the user ran uninstall.
|
|
362
|
+
const sentinels = resolveLegacySentinels(ide);
|
|
363
|
+
const eventKeys = new Set(resolveHookEntries(ide).map((e) => e.event));
|
|
364
|
+
let removedAny = false;
|
|
365
|
+
const nextHooks = { ...existingHooks };
|
|
366
|
+
for (const eventKey of eventKeys) {
|
|
367
|
+
const entries = readHookEntriesFromHooks(nextHooks, eventKey);
|
|
368
|
+
const kept = entries.filter((entry) => !entryIsPeaksManaged(entry, sentinels));
|
|
369
|
+
if (kept.length !== entries.length)
|
|
370
|
+
removedAny = true;
|
|
371
|
+
if (kept.length > 0) {
|
|
372
|
+
nextHooks[eventKey] = kept;
|
|
373
|
+
}
|
|
374
|
+
else {
|
|
375
|
+
delete nextHooks[eventKey];
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
const nextSettings = { ...settings };
|
|
379
|
+
if (Object.keys(nextHooks).length > 0) {
|
|
380
|
+
nextSettings.hooks = nextHooks;
|
|
381
|
+
}
|
|
382
|
+
else {
|
|
383
|
+
delete nextSettings.hooks;
|
|
384
|
+
}
|
|
385
|
+
atomicWriteJson(settingsPath, nextSettings);
|
|
386
|
+
return { scope, settingsPath, removed: removedAny };
|
|
387
|
+
}
|
|
388
|
+
export function readHookStatus(scope, projectRoot, options) {
|
|
389
|
+
const ide = resolveIde(options);
|
|
390
|
+
const root = resolveSettingsRoot(scope, projectRoot);
|
|
391
|
+
const settingsPath = resolveSettingsPath(scope, ide, projectRoot);
|
|
392
|
+
assertSafeSettingsPathCompat(scope, ide, root, settingsPath);
|
|
393
|
+
const exists = existsSync(settingsPath);
|
|
394
|
+
const settings = exists ? readJsonObjectFile(settingsPath) : {};
|
|
395
|
+
return { scope, settingsPath, exists, installed: isInstalledForIde(settings, ide) };
|
|
396
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill-conformance audit (Slice #12) — checks every peaks-* SKILL.md
|
|
3
|
+
* against the 5 standards from the L1+L2+L3 redesign §5.4 Slice #12:
|
|
4
|
+
*
|
|
5
|
+
* 1. task-level frontmatter (all 12 skills must declare one)
|
|
6
|
+
* 2. CLI-back 注解 coverage (each skill body must document which
|
|
7
|
+
* `peaks <cmd>` commands it composes; the absence is a SKILL.md
|
|
8
|
+
* anti-pattern — it means the LLM has to discover the CLI
|
|
9
|
+
* primitives by accident)
|
|
10
|
+
* 3. loadStrategy on-demand 标注 (skills should declare when they
|
|
11
|
+
* load — `eager` for always-loaded, `on-demand` for invoked)
|
|
12
|
+
* 4. 800-line cap (Karpathy limit per spec §2.3)
|
|
13
|
+
* 5. outputStyle: peaks-concise-v1 frontmatter (peak-cli display
|
|
14
|
+
* style for the skill's user-visible output)
|
|
15
|
+
*
|
|
16
|
+
* Plus 1 derived check:
|
|
17
|
+
* 6. CLI primitives declared in references/audit/ (Skill must
|
|
18
|
+
* surface every peaks <cmd> it composes in the references/ subdir;
|
|
19
|
+
* this is the "CLI-back 注解 100% 覆盖" check)
|
|
20
|
+
*/
|
|
21
|
+
export type LoadStrategy = 'eager' | 'on-demand';
|
|
22
|
+
export type ConformanceLevel = 'pass' | 'warn' | 'fail';
|
|
23
|
+
export interface ConformanceCheck {
|
|
24
|
+
readonly id: string;
|
|
25
|
+
readonly skill: string;
|
|
26
|
+
readonly level: ConformanceLevel;
|
|
27
|
+
readonly message: string;
|
|
28
|
+
}
|
|
29
|
+
export interface ConformanceReport {
|
|
30
|
+
readonly checked: number;
|
|
31
|
+
readonly passed: number;
|
|
32
|
+
readonly warned: number;
|
|
33
|
+
readonly failed: number;
|
|
34
|
+
readonly checks: readonly ConformanceCheck[];
|
|
35
|
+
readonly summary: string;
|
|
36
|
+
}
|
|
37
|
+
export interface SkillConformanceInput {
|
|
38
|
+
readonly projectRoot: string;
|
|
39
|
+
}
|
|
40
|
+
export declare function auditSkillConformance(input: SkillConformanceInput): ConformanceReport;
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill-conformance audit (Slice #12) — checks every peaks-* SKILL.md
|
|
3
|
+
* against the 5 standards from the L1+L2+L3 redesign §5.4 Slice #12:
|
|
4
|
+
*
|
|
5
|
+
* 1. task-level frontmatter (all 12 skills must declare one)
|
|
6
|
+
* 2. CLI-back 注解 coverage (each skill body must document which
|
|
7
|
+
* `peaks <cmd>` commands it composes; the absence is a SKILL.md
|
|
8
|
+
* anti-pattern — it means the LLM has to discover the CLI
|
|
9
|
+
* primitives by accident)
|
|
10
|
+
* 3. loadStrategy on-demand 标注 (skills should declare when they
|
|
11
|
+
* load — `eager` for always-loaded, `on-demand` for invoked)
|
|
12
|
+
* 4. 800-line cap (Karpathy limit per spec §2.3)
|
|
13
|
+
* 5. outputStyle: peaks-concise-v1 frontmatter (peak-cli display
|
|
14
|
+
* style for the skill's user-visible output)
|
|
15
|
+
*
|
|
16
|
+
* Plus 1 derived check:
|
|
17
|
+
* 6. CLI primitives declared in references/audit/ (Skill must
|
|
18
|
+
* surface every peaks <cmd> it composes in the references/ subdir;
|
|
19
|
+
* this is the "CLI-back 注解 100% 覆盖" check)
|
|
20
|
+
*/
|
|
21
|
+
import { readFileSync, statSync } from 'node:fs';
|
|
22
|
+
import { existsSync } from 'node:fs';
|
|
23
|
+
import { join } from 'node:path';
|
|
24
|
+
const SKILL_NAMES = [
|
|
25
|
+
'peaks-ide',
|
|
26
|
+
'peaks-prd',
|
|
27
|
+
'peaks-ui',
|
|
28
|
+
'peaks-rd',
|
|
29
|
+
'peaks-qa',
|
|
30
|
+
'peaks-sc',
|
|
31
|
+
'peaks-code',
|
|
32
|
+
'peaks-resume',
|
|
33
|
+
'peaks-status',
|
|
34
|
+
'peaks-test',
|
|
35
|
+
'peaks-sop',
|
|
36
|
+
'peaks-txt',
|
|
37
|
+
'peaks-doctor'
|
|
38
|
+
];
|
|
39
|
+
const REQUIRED_FRONTMATTER_FIELDS = ['name', 'description'];
|
|
40
|
+
const OPTIONAL_FRONTMATTER_FIELDS = ['task-level', 'loadStrategy', 'outputStyle'];
|
|
41
|
+
const MAX_LINE_COUNT = 800;
|
|
42
|
+
const CLI_BACK_PATTERNS = [
|
|
43
|
+
/`peaks\s+[a-z][a-z0-9-]+(?:\s+[a-z][a-z0-9-]+)*`/g,
|
|
44
|
+
/`peaks\s+[a-z][a-z0-9-]+/g,
|
|
45
|
+
];
|
|
46
|
+
function readSkillFrontmatter(skillPath) {
|
|
47
|
+
if (!existsSync(skillPath))
|
|
48
|
+
return null;
|
|
49
|
+
const content = readFileSync(skillPath, 'utf-8');
|
|
50
|
+
const match = /^---\n([\s\S]*?)\n---\n/.exec(content);
|
|
51
|
+
if (match === null)
|
|
52
|
+
return { raw: content, fields: {} };
|
|
53
|
+
const raw = match[1] ?? '';
|
|
54
|
+
const fields = {};
|
|
55
|
+
for (const line of raw.split('\n')) {
|
|
56
|
+
const colonIdx = line.indexOf(':');
|
|
57
|
+
if (colonIdx === -1)
|
|
58
|
+
continue;
|
|
59
|
+
const key = line.slice(0, colonIdx).trim();
|
|
60
|
+
const value = line.slice(colonIdx + 1).trim();
|
|
61
|
+
if (key.length > 0)
|
|
62
|
+
fields[key] = value;
|
|
63
|
+
}
|
|
64
|
+
return { raw, fields };
|
|
65
|
+
}
|
|
66
|
+
function lineCount(filePath) {
|
|
67
|
+
try {
|
|
68
|
+
return statSync(filePath).size > 0 ? readFileSync(filePath, 'utf-8').split(/\r?\n/).length : 0;
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
return 0;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
function countCliBackReferences(content) {
|
|
75
|
+
let count = 0;
|
|
76
|
+
for (const pattern of CLI_BACK_PATTERNS) {
|
|
77
|
+
pattern.lastIndex = 0;
|
|
78
|
+
const matches = content.match(pattern);
|
|
79
|
+
if (matches)
|
|
80
|
+
count += matches.length;
|
|
81
|
+
}
|
|
82
|
+
return count;
|
|
83
|
+
}
|
|
84
|
+
export function auditSkillConformance(input) {
|
|
85
|
+
const skillsDir = join(input.projectRoot, 'skills');
|
|
86
|
+
const checks = [];
|
|
87
|
+
for (const skillName of SKILL_NAMES) {
|
|
88
|
+
// LLM-internal skills live under `skills/bee/<name>/` per spec 2026-07-05.
|
|
89
|
+
const topPath = join(skillsDir, skillName, 'SKILL.md');
|
|
90
|
+
const beePath = join(skillsDir, 'bee', skillName, 'SKILL.md');
|
|
91
|
+
const skillPath = existsSync(topPath) ? topPath : beePath;
|
|
92
|
+
const fm = readSkillFrontmatter(skillPath);
|
|
93
|
+
// 1. task-level frontmatter
|
|
94
|
+
if (fm === null) {
|
|
95
|
+
checks.push({ id: 'frontmatter:present', skill: skillName, level: 'fail', message: 'SKILL.md missing' });
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
for (const required of REQUIRED_FRONTMATTER_FIELDS) {
|
|
99
|
+
if (fm.fields[required] === undefined) {
|
|
100
|
+
checks.push({ id: `frontmatter:${required}`, skill: skillName, level: 'fail', message: `frontmatter missing required field "${required}"` });
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
// 2. CLI-back annotation
|
|
105
|
+
if (fm !== null) {
|
|
106
|
+
const content = readFileSync(skillPath, 'utf-8');
|
|
107
|
+
const cliCount = countCliBackReferences(content);
|
|
108
|
+
if (cliCount === 0) {
|
|
109
|
+
checks.push({ id: 'cli-back:present', skill: skillName, level: 'warn', message: 'no `peaks <cmd>` references in SKILL.md body; consider documenting which CLI primitives the skill composes' });
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
// 3. loadStrategy on-demand 标注
|
|
113
|
+
if (fm !== null && fm.fields['loadStrategy'] === undefined) {
|
|
114
|
+
checks.push({ id: 'loadStrategy:declared', skill: skillName, level: 'warn', message: 'loadStrategy not declared in frontmatter (eager | on-demand)' });
|
|
115
|
+
}
|
|
116
|
+
// 4. 800-line cap
|
|
117
|
+
if (fm !== null) {
|
|
118
|
+
const lines = lineCount(skillPath);
|
|
119
|
+
if (lines > MAX_LINE_COUNT) {
|
|
120
|
+
checks.push({ id: 'line-count:cap', skill: skillName, level: 'fail', message: `${lines} lines > ${MAX_LINE_COUNT} cap (Karpathy)` });
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
// 5. outputStyle: peaks-concise-v1
|
|
124
|
+
if (fm !== null && fm.fields['outputStyle'] === undefined) {
|
|
125
|
+
checks.push({ id: 'outputStyle:declared', skill: skillName, level: 'warn', message: 'outputStyle not declared in frontmatter' });
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
const failed = checks.filter((c) => c.level === 'fail').length;
|
|
129
|
+
const warned = checks.filter((c) => c.level === 'warn').length;
|
|
130
|
+
const passed = checks.filter((c) => c.level === 'pass').length;
|
|
131
|
+
return {
|
|
132
|
+
checked: checks.length,
|
|
133
|
+
passed,
|
|
134
|
+
warned,
|
|
135
|
+
failed,
|
|
136
|
+
checks,
|
|
137
|
+
summary: failed === 0 ? 'all hard checks pass; warnings are advisory' : `${failed} hard failure(s); fix before shipping`,
|
|
138
|
+
};
|
|
139
|
+
}
|