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,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* peaks-loop v3.0.0 — Slice C.1
|
|
3
|
+
*
|
|
4
|
+
* Monotonic-improvement guard for the loop runtime. Compares adjacent
|
|
5
|
+
* cycles' per-evaluator scores (rescaled gateAction → 0..1) and
|
|
6
|
+
* returns a structured envelope indicating:
|
|
7
|
+
*
|
|
8
|
+
* - status: 'pass' | 'warn' | 'block' | 'skip'
|
|
9
|
+
* - regressions: per-evaluator score deltas where current < previous
|
|
10
|
+
* - reason: human-readable summary
|
|
11
|
+
*
|
|
12
|
+
* Karpathy §2 Simplicity First: pure function, no IO, no new deps.
|
|
13
|
+
*
|
|
14
|
+
* File budget: ≤ 800 lines (Karpathy §2).
|
|
15
|
+
*/
|
|
16
|
+
/** Per-evaluator score row, derived from an `EvaluatorVerdictEnvelope`. */
|
|
17
|
+
export interface MonotonicScoreRow {
|
|
18
|
+
readonly evaluator: string;
|
|
19
|
+
readonly score: number;
|
|
20
|
+
readonly gateAction: 'pass' | 'warn' | 'block';
|
|
21
|
+
readonly degraded: boolean;
|
|
22
|
+
/** ISO-8601 timestamp the verdict was recorded. */
|
|
23
|
+
readonly observedAt: string;
|
|
24
|
+
}
|
|
25
|
+
/** Cycle index — a single attempt at the loop. */
|
|
26
|
+
export interface MonotonicCycle {
|
|
27
|
+
readonly cycle: number;
|
|
28
|
+
/** Per-evaluator score rows. Same evaluator appearing twice collapses
|
|
29
|
+
* to the last entry (BC: deterministic, no merging surprises). */
|
|
30
|
+
readonly scores: readonly MonotonicScoreRow[];
|
|
31
|
+
}
|
|
32
|
+
export interface MonotonicRegression {
|
|
33
|
+
readonly evaluator: string;
|
|
34
|
+
readonly previousScore: number;
|
|
35
|
+
readonly currentScore: number;
|
|
36
|
+
readonly delta: number;
|
|
37
|
+
}
|
|
38
|
+
/** Result of a `checkMonotonicImprovement` call. */
|
|
39
|
+
export interface MonotonicReport {
|
|
40
|
+
readonly status: 'pass' | 'warn' | 'block' | 'skip';
|
|
41
|
+
readonly ok: boolean;
|
|
42
|
+
readonly reason: string;
|
|
43
|
+
readonly threshold: number;
|
|
44
|
+
readonly previousCycle: number | null;
|
|
45
|
+
readonly currentCycle: number;
|
|
46
|
+
/** Per-evaluator regressions exceeding the threshold (sorted by |delta| desc). */
|
|
47
|
+
readonly regressions: readonly MonotonicRegression[];
|
|
48
|
+
/** Convenience boolean — true iff a regression exceeds the threshold. */
|
|
49
|
+
readonly monotonicityViolation: boolean;
|
|
50
|
+
/** Diagnostic hint surfaced as `MONOTONICITY_VIOLATION` in the CLI envelope. */
|
|
51
|
+
readonly code: 'MONOTONIC_OK' | 'MONOTONIC_NO_PREVIOUS' | 'MONOTONIC_VIOLATION' | 'MONOTONIC_INCOMPARABLE_EVALUATORS';
|
|
52
|
+
}
|
|
53
|
+
/** Convert an envelope-shaped verdict row to `MonotonicScoreRow`.
|
|
54
|
+
* Pure helper, exported for the CLI layer. */
|
|
55
|
+
export declare function toScoreRow(evaluator: string, gateAction: 'pass' | 'warn' | 'block', degraded: boolean, observedAtIso?: string): MonotonicScoreRow;
|
|
56
|
+
/** Default threshold = 5% of [0,1] scale → 0.05. */
|
|
57
|
+
export declare const DEFAULT_MONOTONIC_THRESHOLD = 0.05;
|
|
58
|
+
export interface CheckMonotonicOptions {
|
|
59
|
+
/** Maximum regression permitted (in [0,1] scale). Default 0.05 (5%). */
|
|
60
|
+
readonly threshold?: number;
|
|
61
|
+
/** When provided, the guard logs the cycle id this report refers to. */
|
|
62
|
+
readonly nowIso?: string;
|
|
63
|
+
}
|
|
64
|
+
/** Compare `previous` against `current` and report monotonicity.
|
|
65
|
+
*
|
|
66
|
+
* Rules (reflected in `tests/unit/loop/monotonic-guard.test.ts`):
|
|
67
|
+
* - missing previous cycle → skip (`MONOTONIC_NO_PREVIOUS`)
|
|
68
|
+
* - evaluators not present in both cycles → skip that evaluator
|
|
69
|
+
* - score unchanged / up → ok
|
|
70
|
+
* - score ↓ ≤ threshold → ok
|
|
71
|
+
* - score ↓ > threshold → regression row + status 'block'
|
|
72
|
+
* with `code = MONOTONICITY_VIOLATION`.
|
|
73
|
+
*/
|
|
74
|
+
export declare function checkMonotonicImprovement(previous: MonotonicCycle | null, current: MonotonicCycle, options?: CheckMonotonicOptions): MonotonicReport;
|
|
75
|
+
/** Read `.peaks/_sub_agents/<sid>/shared/` cross-session signal — on
|
|
76
|
+
* any IO error, return `null` so the guard never crashes on missing
|
|
77
|
+
* cross-batch signal (per Slice C (b) case "跨 session 读
|
|
78
|
+
* .peaks/_sub_agents/<sid>/shared/ 跨批 signal → 不 crash").
|
|
79
|
+
* Pure helper; only present for the cross-session case. */
|
|
80
|
+
export declare function loadCrossSessionSignal(projectRoot: string, sid: string): MonotonicCycle | null;
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* peaks-loop v3.0.0 — Slice C.1
|
|
3
|
+
*
|
|
4
|
+
* Monotonic-improvement guard for the loop runtime. Compares adjacent
|
|
5
|
+
* cycles' per-evaluator scores (rescaled gateAction → 0..1) and
|
|
6
|
+
* returns a structured envelope indicating:
|
|
7
|
+
*
|
|
8
|
+
* - status: 'pass' | 'warn' | 'block' | 'skip'
|
|
9
|
+
* - regressions: per-evaluator score deltas where current < previous
|
|
10
|
+
* - reason: human-readable summary
|
|
11
|
+
*
|
|
12
|
+
* Karpathy §2 Simplicity First: pure function, no IO, no new deps.
|
|
13
|
+
*
|
|
14
|
+
* File budget: ≤ 800 lines (Karpathy §2).
|
|
15
|
+
*/
|
|
16
|
+
/** Score normalisation — gateAction maps to a 0..1 score:
|
|
17
|
+
* pass → 1.0
|
|
18
|
+
* warn → 0.5
|
|
19
|
+
* block → 0.0
|
|
20
|
+
*
|
|
21
|
+
* `degraded` (evaluator fell back to stub) collapses to 0.25 so the
|
|
22
|
+
* guard never regresses past the boundary value; downstream callers
|
|
23
|
+
* can surface `degraded` separately.
|
|
24
|
+
*/
|
|
25
|
+
function gateActionToScore(gateAction, degraded) {
|
|
26
|
+
if (degraded)
|
|
27
|
+
return 0.25;
|
|
28
|
+
if (gateAction === 'pass')
|
|
29
|
+
return 1.0;
|
|
30
|
+
if (gateAction === 'warn')
|
|
31
|
+
return 0.5;
|
|
32
|
+
return 0.0;
|
|
33
|
+
}
|
|
34
|
+
/** Strict-greater-than with a small epsilon to absorb FP rounding
|
|
35
|
+
* (e.g. 1.0 - 0.95 = 0.04999999…). The boundary at exactly
|
|
36
|
+
* threshold stays a pass. */
|
|
37
|
+
const DELTA_EPSILON = 1e-9;
|
|
38
|
+
/** Convert an envelope-shaped verdict row to `MonotonicScoreRow`.
|
|
39
|
+
* Pure helper, exported for the CLI layer. */
|
|
40
|
+
export function toScoreRow(evaluator, gateAction, degraded, observedAtIso = new Date(0).toISOString()) {
|
|
41
|
+
return {
|
|
42
|
+
evaluator,
|
|
43
|
+
score: gateActionToScore(gateAction, degraded),
|
|
44
|
+
gateAction,
|
|
45
|
+
degraded,
|
|
46
|
+
observedAt: observedAtIso
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
/** Default threshold = 5% of [0,1] scale → 0.05. */
|
|
50
|
+
export const DEFAULT_MONOTONIC_THRESHOLD = 0.05;
|
|
51
|
+
/** Compare `previous` against `current` and report monotonicity.
|
|
52
|
+
*
|
|
53
|
+
* Rules (reflected in `tests/unit/loop/monotonic-guard.test.ts`):
|
|
54
|
+
* - missing previous cycle → skip (`MONOTONIC_NO_PREVIOUS`)
|
|
55
|
+
* - evaluators not present in both cycles → skip that evaluator
|
|
56
|
+
* - score unchanged / up → ok
|
|
57
|
+
* - score ↓ ≤ threshold → ok
|
|
58
|
+
* - score ↓ > threshold → regression row + status 'block'
|
|
59
|
+
* with `code = MONOTONICITY_VIOLATION`.
|
|
60
|
+
*/
|
|
61
|
+
export function checkMonotonicImprovement(previous, current, options = {}) {
|
|
62
|
+
const threshold = options.threshold ?? DEFAULT_MONOTONIC_THRESHOLD;
|
|
63
|
+
const at = options.nowIso ?? new Date().toISOString();
|
|
64
|
+
if (previous === null) {
|
|
65
|
+
return {
|
|
66
|
+
status: 'skip',
|
|
67
|
+
ok: true,
|
|
68
|
+
reason: 'no previous cycle recorded — monotonicity check is a no-op (first run is allowed to start anywhere)',
|
|
69
|
+
threshold,
|
|
70
|
+
previousCycle: null,
|
|
71
|
+
currentCycle: current.cycle,
|
|
72
|
+
regressions: [],
|
|
73
|
+
monotonicityViolation: false,
|
|
74
|
+
code: 'MONOTONIC_NO_PREVIOUS'
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
// Build previous evaluator → score lookup.
|
|
78
|
+
const prevMap = new Map();
|
|
79
|
+
for (const row of previous.scores)
|
|
80
|
+
prevMap.set(row.evaluator, row);
|
|
81
|
+
const regressions = [];
|
|
82
|
+
let comparable = 0;
|
|
83
|
+
for (const cur of current.scores) {
|
|
84
|
+
const prev = prevMap.get(cur.evaluator);
|
|
85
|
+
if (prev === undefined)
|
|
86
|
+
continue; // incomparable evaluator → skip
|
|
87
|
+
comparable++;
|
|
88
|
+
const delta = prev.score - cur.score; // positive = regression
|
|
89
|
+
if (delta > threshold + DELTA_EPSILON) {
|
|
90
|
+
regressions.push({
|
|
91
|
+
evaluator: cur.evaluator,
|
|
92
|
+
previousScore: prev.score,
|
|
93
|
+
currentScore: cur.score,
|
|
94
|
+
delta: round4(delta)
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
regressions.sort((a, b) => b.delta - a.delta);
|
|
99
|
+
if (comparable === 0) {
|
|
100
|
+
return {
|
|
101
|
+
status: 'skip',
|
|
102
|
+
ok: true,
|
|
103
|
+
reason: 'no evaluator appears in both the previous and current cycle — nothing to compare',
|
|
104
|
+
threshold,
|
|
105
|
+
previousCycle: previous.cycle,
|
|
106
|
+
currentCycle: current.cycle,
|
|
107
|
+
regressions: [],
|
|
108
|
+
monotonicityViolation: false,
|
|
109
|
+
code: 'MONOTONIC_INCOMPARABLE_EVALUATORS'
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
if (regressions.length > 0) {
|
|
113
|
+
const summary = regressions
|
|
114
|
+
.map((r) => `${r.evaluator} ${r.previousScore.toFixed(4)}→${r.currentScore.toFixed(4)} (Δ=${r.delta.toFixed(4)})`)
|
|
115
|
+
.join(', ');
|
|
116
|
+
return {
|
|
117
|
+
status: 'block',
|
|
118
|
+
ok: false,
|
|
119
|
+
reason: `MONOTONICITY_VIOLATION: ${regressions.length} evaluator(s) regressed beyond threshold ${threshold} (at ${at}): ${summary}`,
|
|
120
|
+
threshold,
|
|
121
|
+
previousCycle: previous.cycle,
|
|
122
|
+
currentCycle: current.cycle,
|
|
123
|
+
regressions,
|
|
124
|
+
monotonicityViolation: true,
|
|
125
|
+
code: 'MONOTONIC_VIOLATION'
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
return {
|
|
129
|
+
status: 'pass',
|
|
130
|
+
ok: true,
|
|
131
|
+
reason: `all ${comparable} evaluators held or improved (threshold ${threshold})`,
|
|
132
|
+
threshold,
|
|
133
|
+
previousCycle: previous.cycle,
|
|
134
|
+
currentCycle: current.cycle,
|
|
135
|
+
regressions: [],
|
|
136
|
+
monotonicityViolation: false,
|
|
137
|
+
code: 'MONOTONIC_OK'
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
function classifyFsError(err) {
|
|
141
|
+
const code = err?.code;
|
|
142
|
+
if (code === 'ENOENT')
|
|
143
|
+
return 'NOT_FOUND';
|
|
144
|
+
return 'IO_ERROR';
|
|
145
|
+
}
|
|
146
|
+
/** Read `.peaks/_sub_agents/<sid>/shared/` cross-session signal — on
|
|
147
|
+
* any IO error, return `null` so the guard never crashes on missing
|
|
148
|
+
* cross-batch signal (per Slice C (b) case "跨 session 读
|
|
149
|
+
* .peaks/_sub_agents/<sid>/shared/ 跨批 signal → 不 crash").
|
|
150
|
+
* Pure helper; only present for the cross-session case. */
|
|
151
|
+
export function loadCrossSessionSignal(projectRoot, sid) {
|
|
152
|
+
// Lazily import so unit tests in non-windows environments don't pull
|
|
153
|
+
// node:fs through a static `import` (test envs stay small).
|
|
154
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
155
|
+
const fs = require('node:fs');
|
|
156
|
+
const path = require('node:path');
|
|
157
|
+
const sharedDir = path.join(projectRoot, '.peaks', '_sub_agents', sid, 'shared');
|
|
158
|
+
const readdir = (() => {
|
|
159
|
+
try {
|
|
160
|
+
return { ok: true, value: fs.readdirSync(sharedDir) };
|
|
161
|
+
}
|
|
162
|
+
catch (err) {
|
|
163
|
+
return { ok: false, reason: classifyFsError(err) };
|
|
164
|
+
}
|
|
165
|
+
})();
|
|
166
|
+
if (!readdir.ok)
|
|
167
|
+
return null; // missing dir or permission denied — both are no-ops.
|
|
168
|
+
const entries = readdir.value;
|
|
169
|
+
// Pick the highest cycle number from the filenames; tolerate garbage.
|
|
170
|
+
let best = null;
|
|
171
|
+
for (const entry of entries) {
|
|
172
|
+
const m = entry.match(/^cycle-(\d+)\.json$/);
|
|
173
|
+
if (m === null)
|
|
174
|
+
continue;
|
|
175
|
+
const cycle = parseInt(m[1] ?? '0', 10);
|
|
176
|
+
if (best === null || cycle > best)
|
|
177
|
+
best = cycle;
|
|
178
|
+
}
|
|
179
|
+
if (best === null)
|
|
180
|
+
return null;
|
|
181
|
+
const target = path.join(sharedDir, `cycle-${best}.json`);
|
|
182
|
+
const readFile = (() => {
|
|
183
|
+
try {
|
|
184
|
+
return { ok: true, value: fs.readFileSync(target, 'utf8') };
|
|
185
|
+
}
|
|
186
|
+
catch (err) {
|
|
187
|
+
return { ok: false, reason: classifyFsError(err) };
|
|
188
|
+
}
|
|
189
|
+
})();
|
|
190
|
+
if (!readFile.ok)
|
|
191
|
+
return null;
|
|
192
|
+
const parse = (() => {
|
|
193
|
+
try {
|
|
194
|
+
return { ok: true, value: JSON.parse(readFile.value) };
|
|
195
|
+
}
|
|
196
|
+
catch {
|
|
197
|
+
return { ok: false, reason: 'PARSE_ERROR' };
|
|
198
|
+
}
|
|
199
|
+
})();
|
|
200
|
+
if (!parse.ok)
|
|
201
|
+
return null;
|
|
202
|
+
const parsed = parse.value;
|
|
203
|
+
if (parsed === null || typeof parsed !== 'object')
|
|
204
|
+
return null;
|
|
205
|
+
const obj = parsed;
|
|
206
|
+
const cycleNo = typeof obj['cycle'] === 'number' ? obj['cycle'] : best;
|
|
207
|
+
const scoresRaw = Array.isArray(obj['scores']) ? obj['scores'] : [];
|
|
208
|
+
const scores = [];
|
|
209
|
+
for (const s of scoresRaw) {
|
|
210
|
+
if (s === null || typeof s !== 'object')
|
|
211
|
+
continue;
|
|
212
|
+
const r = s;
|
|
213
|
+
if (typeof r['evaluator'] !== 'string')
|
|
214
|
+
continue;
|
|
215
|
+
const gate = r['gateAction'];
|
|
216
|
+
if (gate !== 'pass' && gate !== 'warn' && gate !== 'block')
|
|
217
|
+
continue;
|
|
218
|
+
const observedAt = typeof r['observedAt'] === 'string' ? r['observedAt'] : new Date(0).toISOString();
|
|
219
|
+
const degraded = r['degraded'] === true;
|
|
220
|
+
scores.push({
|
|
221
|
+
evaluator: r['evaluator'],
|
|
222
|
+
score: typeof r['score'] === 'number' ? r['score'] : gateActionToScore(gate, degraded),
|
|
223
|
+
gateAction: gate,
|
|
224
|
+
degraded,
|
|
225
|
+
observedAt
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
return { cycle: cycleNo, scores };
|
|
229
|
+
}
|
|
230
|
+
function round4(n) {
|
|
231
|
+
return Math.round(n * 10000) / 10000;
|
|
232
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { type MonotonicCycle, type MonotonicScoreRow, type MonotonicReport } from './monotonic-guard.js';
|
|
2
|
+
/** Set of evaluator kinds the loop walker actually scores — keeps the
|
|
3
|
+
* guard surface tight (the verdict-aggregate is the cross-source merge
|
|
4
|
+
* and not a per-cycle input). */
|
|
5
|
+
declare const WALKED_EVALUATORS: readonly ["karpathy", "code-review", "security-review", "perf-baseline"];
|
|
6
|
+
type WalkedKind = (typeof WALKED_EVALUATORS)[number];
|
|
7
|
+
export interface RunMonotonicOptions {
|
|
8
|
+
readonly projectRoot: string;
|
|
9
|
+
readonly sid: string;
|
|
10
|
+
readonly rid: string;
|
|
11
|
+
/** Threshold (0..1 scale). Default 0.05 (5%). */
|
|
12
|
+
readonly threshold?: number;
|
|
13
|
+
/** When set, write the current cycle score rows to disk (default: true). */
|
|
14
|
+
readonly persist?: boolean;
|
|
15
|
+
/** When set, override the auto-derived cycle index. */
|
|
16
|
+
readonly cycle?: number;
|
|
17
|
+
/** Override the peaks binary path (default: `node bin/peaks.js`). */
|
|
18
|
+
readonly peaksBin?: string;
|
|
19
|
+
}
|
|
20
|
+
export interface RunMonotonicResult {
|
|
21
|
+
readonly projectRoot: string;
|
|
22
|
+
readonly sid: string;
|
|
23
|
+
readonly rid: string;
|
|
24
|
+
readonly currentCycle: number;
|
|
25
|
+
readonly previousCycle: number | null;
|
|
26
|
+
readonly persistedAt: string | null;
|
|
27
|
+
readonly rows: readonly MonotonicScoreRow[];
|
|
28
|
+
readonly report: MonotonicReport;
|
|
29
|
+
/** Additive surface for non-fatal persistence warnings (e.g. mkdir
|
|
30
|
+
* failure). Optional so existing destructures keep compiling. */
|
|
31
|
+
readonly warnings?: readonly string[];
|
|
32
|
+
}
|
|
33
|
+
/** Resolve the slice dir used by both writer + reader — keeps tests
|
|
34
|
+
* insulated from real sessions. */
|
|
35
|
+
export declare function sliceDir(projectRoot: string, sid: string, rid: string): string;
|
|
36
|
+
/** Load the most recent prior cycle (highest-N `cycle-N.json`) for
|
|
37
|
+
* `(sid, rid)` from the slice dir; falls back to the
|
|
38
|
+
* `.peaks/_sub_agents/<sid>/shared/` dir when no slice-level prior
|
|
39
|
+
* cycle exists. Returns `null` on any read error. */
|
|
40
|
+
export declare function loadPreviousCycle(projectRoot: string, sid: string, rid: string): MonotonicCycle | null;
|
|
41
|
+
/** Determine the next cycle index — `max(prior) + 1`, or `1` when none exist. */
|
|
42
|
+
export declare function nextCycleIndex(projectRoot: string, sid: string, rid: string): number;
|
|
43
|
+
/** Run the guard end-to-end: walk the 4 evaluators, persist the current
|
|
44
|
+
* cycle score rows, compare against the prior cycle, return a
|
|
45
|
+
* structured report. */
|
|
46
|
+
export declare function runMonotonicCheck(options: RunMonotonicOptions): RunMonotonicResult;
|
|
47
|
+
/** Helper for tests + CLI — resolve project root + sid consistently. */
|
|
48
|
+
export declare function resolveMonotonicContext(opts: {
|
|
49
|
+
project?: string;
|
|
50
|
+
session: string;
|
|
51
|
+
rid: string;
|
|
52
|
+
}): {
|
|
53
|
+
projectRoot: string;
|
|
54
|
+
sid: string;
|
|
55
|
+
rid: string;
|
|
56
|
+
};
|
|
57
|
+
/** Suppress unused-import lint when only the typedefs are exported. */
|
|
58
|
+
export type { WalkedKind };
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* peaks-loop v3.0.0 — Slice C.2
|
|
3
|
+
*
|
|
4
|
+
* Runtime for the `monotonic-improvement` evaluator. Walks the prior
|
|
5
|
+
* cycle's score rows (per evaluator), invokes each evaluator against
|
|
6
|
+
* the current rid + project, then compares adjacent cycles.
|
|
7
|
+
*
|
|
8
|
+
* - current cycle score rows are stored at
|
|
9
|
+
* .peaks/_runtime/<sid>/loop/<rid>/cycle-<N>.json
|
|
10
|
+
* - previous cycle rows are loaded from the same directory
|
|
11
|
+
* (or from `.peaks/_sub_agents/<sid>/shared/cycle-<M>.json`
|
|
12
|
+
* if the slice directory is empty).
|
|
13
|
+
* - missing previous cycle → skip (not abort).
|
|
14
|
+
*
|
|
15
|
+
* Karpathy §2 Simplicity First: shell-out to existing
|
|
16
|
+
* `dispatchEvaluator`, persist JSON to disk; no new deps.
|
|
17
|
+
*
|
|
18
|
+
* File budget: ≤ 800 lines (Karpathy §2).
|
|
19
|
+
*/
|
|
20
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
21
|
+
import { join } from 'node:path';
|
|
22
|
+
import { dispatchEvaluator } from './evaluator-dispatcher.js';
|
|
23
|
+
import { checkMonotonicImprovement, toScoreRow, DEFAULT_MONOTONIC_THRESHOLD } from './monotonic-guard.js';
|
|
24
|
+
import { findProjectRoot } from '../config/config-safety.js';
|
|
25
|
+
function classifyFsError(err) {
|
|
26
|
+
const code = err?.code;
|
|
27
|
+
if (code === 'ENOENT')
|
|
28
|
+
return 'NOT_FOUND';
|
|
29
|
+
return 'IO_ERROR';
|
|
30
|
+
}
|
|
31
|
+
/** Set of evaluator kinds the loop walker actually scores — keeps the
|
|
32
|
+
* guard surface tight (the verdict-aggregate is the cross-source merge
|
|
33
|
+
* and not a per-cycle input). */
|
|
34
|
+
const WALKED_EVALUATORS = [
|
|
35
|
+
'karpathy',
|
|
36
|
+
'code-review',
|
|
37
|
+
'security-review',
|
|
38
|
+
'perf-baseline'
|
|
39
|
+
];
|
|
40
|
+
/** Resolve the slice dir used by both writer + reader — keeps tests
|
|
41
|
+
* insulated from real sessions. */
|
|
42
|
+
export function sliceDir(projectRoot, sid, rid) {
|
|
43
|
+
return join(projectRoot, '.peaks', '_runtime', sid, 'loop', rid);
|
|
44
|
+
}
|
|
45
|
+
/** Load the most recent prior cycle (highest-N `cycle-N.json`) for
|
|
46
|
+
* `(sid, rid)` from the slice dir; falls back to the
|
|
47
|
+
* `.peaks/_sub_agents/<sid>/shared/` dir when no slice-level prior
|
|
48
|
+
* cycle exists. Returns `null` on any read error. */
|
|
49
|
+
export function loadPreviousCycle(projectRoot, sid, rid) {
|
|
50
|
+
return loadMostRecentCycle(sliceDir(projectRoot, sid, rid))
|
|
51
|
+
?? loadMostRecentCycleFromSubAgents(projectRoot, sid);
|
|
52
|
+
}
|
|
53
|
+
function loadMostRecentCycleFromSubAgents(projectRoot, sid) {
|
|
54
|
+
const dir = join(projectRoot, '.peaks', '_sub_agents', sid, 'shared');
|
|
55
|
+
return loadMostRecentCycle(dir);
|
|
56
|
+
}
|
|
57
|
+
function loadMostRecentCycle(dir) {
|
|
58
|
+
if (!existsSync(dir))
|
|
59
|
+
return null;
|
|
60
|
+
const readdir = (() => {
|
|
61
|
+
try {
|
|
62
|
+
return { ok: true, value: require('node:fs').readdirSync(dir) };
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
return { ok: false, reason: classifyFsError(err) };
|
|
66
|
+
}
|
|
67
|
+
})();
|
|
68
|
+
if (!readdir.ok)
|
|
69
|
+
return null;
|
|
70
|
+
const entries = readdir.value;
|
|
71
|
+
let bestCycle = null;
|
|
72
|
+
for (const entry of entries) {
|
|
73
|
+
const m = entry.match(/^cycle-(\d+)\.json$/);
|
|
74
|
+
if (m === null)
|
|
75
|
+
continue;
|
|
76
|
+
const n = parseInt(m[1] ?? '0', 10);
|
|
77
|
+
if (bestCycle === null || n > bestCycle)
|
|
78
|
+
bestCycle = n;
|
|
79
|
+
}
|
|
80
|
+
if (bestCycle === null)
|
|
81
|
+
return null;
|
|
82
|
+
const target = join(dir, `cycle-${bestCycle}.json`);
|
|
83
|
+
const readFile = (() => {
|
|
84
|
+
try {
|
|
85
|
+
return { ok: true, value: readFileSync(target, 'utf8') };
|
|
86
|
+
}
|
|
87
|
+
catch (err) {
|
|
88
|
+
return { ok: false, reason: classifyFsError(err) };
|
|
89
|
+
}
|
|
90
|
+
})();
|
|
91
|
+
if (!readFile.ok)
|
|
92
|
+
return null;
|
|
93
|
+
return parseCycle(readFile.value, bestCycle);
|
|
94
|
+
}
|
|
95
|
+
function parseCycle(raw, fallbackCycle) {
|
|
96
|
+
const parse = (() => {
|
|
97
|
+
try {
|
|
98
|
+
return { ok: true, value: JSON.parse(raw) };
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
return { ok: false, reason: 'PARSE_ERROR' };
|
|
102
|
+
}
|
|
103
|
+
})();
|
|
104
|
+
if (!parse.ok)
|
|
105
|
+
return null;
|
|
106
|
+
const parsed = parse.value;
|
|
107
|
+
if (parsed === null || typeof parsed !== 'object')
|
|
108
|
+
return null;
|
|
109
|
+
const obj = parsed;
|
|
110
|
+
const scores = Array.isArray(obj['scores']) ? obj['scores'] : [];
|
|
111
|
+
const rows = [];
|
|
112
|
+
for (const s of scores) {
|
|
113
|
+
if (s === null || typeof s !== 'object')
|
|
114
|
+
continue;
|
|
115
|
+
const r = s;
|
|
116
|
+
if (typeof r['evaluator'] !== 'string')
|
|
117
|
+
continue;
|
|
118
|
+
const gate = r['gateAction'];
|
|
119
|
+
if (gate !== 'pass' && gate !== 'warn' && gate !== 'block')
|
|
120
|
+
continue;
|
|
121
|
+
const observedAt = typeof r['observedAt'] === 'string' ? r['observedAt'] : new Date(0).toISOString();
|
|
122
|
+
rows.push({
|
|
123
|
+
evaluator: r['evaluator'],
|
|
124
|
+
score: typeof r['score'] === 'number' ? r['score'] : (gate === 'pass' ? 1.0 : gate === 'warn' ? 0.5 : 0.0),
|
|
125
|
+
gateAction: gate,
|
|
126
|
+
degraded: r['degraded'] === true,
|
|
127
|
+
observedAt
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
return { cycle: typeof obj['cycle'] === 'number' ? obj['cycle'] : fallbackCycle, scores: rows };
|
|
131
|
+
}
|
|
132
|
+
/** Determine the next cycle index — `max(prior) + 1`, or `1` when none exist. */
|
|
133
|
+
export function nextCycleIndex(projectRoot, sid, rid) {
|
|
134
|
+
const prev = loadPreviousCycle(projectRoot, sid, rid);
|
|
135
|
+
if (prev === null)
|
|
136
|
+
return 1;
|
|
137
|
+
return prev.cycle + 1;
|
|
138
|
+
}
|
|
139
|
+
/** Run the guard end-to-end: walk the 4 evaluators, persist the current
|
|
140
|
+
* cycle score rows, compare against the prior cycle, return a
|
|
141
|
+
* structured report. */
|
|
142
|
+
export function runMonotonicCheck(options) {
|
|
143
|
+
const threshold = options.threshold ?? DEFAULT_MONOTONIC_THRESHOLD;
|
|
144
|
+
const persist = options.persist !== false;
|
|
145
|
+
const cycle = options.cycle ?? nextCycleIndex(options.projectRoot, options.sid, options.rid);
|
|
146
|
+
const rows = [];
|
|
147
|
+
for (const kind of WALKED_EVALUATORS) {
|
|
148
|
+
let env;
|
|
149
|
+
try {
|
|
150
|
+
env = dispatchEvaluator(kind, {
|
|
151
|
+
projectRoot: options.projectRoot,
|
|
152
|
+
rid: options.rid,
|
|
153
|
+
...(options.peaksBin !== undefined ? { peaksBin: options.peaksBin } : {})
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
catch {
|
|
157
|
+
// Per-evaluator failures never abort the loop — degrade to warn,
|
|
158
|
+
// score 0.25, degraded=true, observed-at=now.
|
|
159
|
+
const now = new Date().toISOString();
|
|
160
|
+
rows.push({
|
|
161
|
+
evaluator: kind,
|
|
162
|
+
score: 0.25,
|
|
163
|
+
gateAction: 'warn',
|
|
164
|
+
degraded: true,
|
|
165
|
+
observedAt: now
|
|
166
|
+
});
|
|
167
|
+
continue;
|
|
168
|
+
}
|
|
169
|
+
rows.push(toScoreRow(env.kind, env.gateAction, env.degraded, new Date().toISOString()));
|
|
170
|
+
}
|
|
171
|
+
const currentCycle = { cycle, scores: rows };
|
|
172
|
+
const previousCycle = loadPreviousCycle(options.projectRoot, options.sid, options.rid);
|
|
173
|
+
const report = checkMonotonicImprovement(previousCycle, currentCycle, { threshold });
|
|
174
|
+
let persistedAt = null;
|
|
175
|
+
const envelopeWarns = [];
|
|
176
|
+
if (persist) {
|
|
177
|
+
const dir = sliceDir(options.projectRoot, options.sid, options.rid);
|
|
178
|
+
const mkdir = (() => {
|
|
179
|
+
try {
|
|
180
|
+
mkdirSync(dir, { recursive: true });
|
|
181
|
+
return { ok: true, value: undefined };
|
|
182
|
+
}
|
|
183
|
+
catch (err) {
|
|
184
|
+
return { ok: false, reason: classifyFsError(err) };
|
|
185
|
+
}
|
|
186
|
+
})();
|
|
187
|
+
if (!mkdir.ok) {
|
|
188
|
+
envelopeWarns.push(`mkdir-failed: ${dir} (${mkdir.reason})`);
|
|
189
|
+
}
|
|
190
|
+
const path = join(dir, `cycle-${cycle}.json`);
|
|
191
|
+
const payload = JSON.stringify({
|
|
192
|
+
cycle,
|
|
193
|
+
rid: options.rid,
|
|
194
|
+
sid: options.sid,
|
|
195
|
+
persistedAt: new Date().toISOString(),
|
|
196
|
+
scores: rows
|
|
197
|
+
});
|
|
198
|
+
const writeFile = (() => {
|
|
199
|
+
try {
|
|
200
|
+
writeFileSync(path, payload, 'utf8');
|
|
201
|
+
return { ok: true, value: undefined };
|
|
202
|
+
}
|
|
203
|
+
catch (err) {
|
|
204
|
+
return { ok: false, reason: classifyFsError(err) };
|
|
205
|
+
}
|
|
206
|
+
})();
|
|
207
|
+
if (writeFile.ok) {
|
|
208
|
+
persistedAt = path;
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
persistedAt = null;
|
|
212
|
+
envelopeWarns.push(`write-failed: ${path} (${writeFile.reason})`);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
return {
|
|
216
|
+
projectRoot: options.projectRoot,
|
|
217
|
+
sid: options.sid,
|
|
218
|
+
rid: options.rid,
|
|
219
|
+
currentCycle: cycle,
|
|
220
|
+
previousCycle: previousCycle === null ? null : previousCycle.cycle,
|
|
221
|
+
persistedAt,
|
|
222
|
+
rows,
|
|
223
|
+
report,
|
|
224
|
+
...(envelopeWarns.length > 0 ? { warnings: envelopeWarns } : {})
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
/** Helper for tests + CLI — resolve project root + sid consistently. */
|
|
228
|
+
export function resolveMonotonicContext(opts) {
|
|
229
|
+
const projectRoot = opts.project ?? findProjectRoot(process.cwd()) ?? process.cwd();
|
|
230
|
+
return { projectRoot, sid: opts.session, rid: opts.rid };
|
|
231
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { type SpecTerminationStrategy } from './spec-service.js';
|
|
2
|
+
import { type EvaluatorVerdictEnvelope } from './evaluator-dispatcher.js';
|
|
3
|
+
import { type MonotonicScoreRow, type MonotonicReport } from './monotonic-guard.js';
|
|
4
|
+
export type RunDriverCode = 'RUN_OK' | 'RUN_OK_REGRESSION' | 'SPEC_NOT_FOUND' | 'SPEC_INVALID' | 'UNKNOWN_TERMINATION_STRATEGY' | 'MONOTONICITY_VIOLATION' | 'EVALUATOR_THREW' | 'LOCKED' | 'EVALUATOR_UNKNOWN' | 'RUN_FAILED';
|
|
5
|
+
export interface RunDriverOptions {
|
|
6
|
+
readonly projectRoot: string;
|
|
7
|
+
readonly sid: string;
|
|
8
|
+
readonly rid: string;
|
|
9
|
+
/** Monotonic threshold (0..1). Default 0.05. */
|
|
10
|
+
readonly threshold?: number;
|
|
11
|
+
/** Override the strategy (otherwise read from spec.yaml). */
|
|
12
|
+
readonly strategyOverride?: SpecTerminationStrategy;
|
|
13
|
+
/** Override max-cycles (otherwise read from spec.yaml). */
|
|
14
|
+
readonly maxCyclesOverride?: number;
|
|
15
|
+
/** When true, persist cycle rows + a summary.json to disk. Default true. */
|
|
16
|
+
readonly persist?: boolean;
|
|
17
|
+
/** Test seam: when set, used as the dispatch path instead of `node bin/peaks.js`. */
|
|
18
|
+
readonly peaksBin?: string;
|
|
19
|
+
/** Test seam: when set, replaces the per-evaluator dispatcher (no shell-out). */
|
|
20
|
+
readonly dispatchOverride?: (kind: string, ctx: {
|
|
21
|
+
projectRoot: string;
|
|
22
|
+
rid: string;
|
|
23
|
+
sid: string;
|
|
24
|
+
}) => EvaluatorVerdictEnvelope;
|
|
25
|
+
}
|
|
26
|
+
export interface CycleRecord {
|
|
27
|
+
readonly cycle: number;
|
|
28
|
+
readonly rows: readonly MonotonicScoreRow[];
|
|
29
|
+
readonly persistedAt: string | null;
|
|
30
|
+
readonly monotonicReport: MonotonicReport;
|
|
31
|
+
}
|
|
32
|
+
export interface RunDriverResult {
|
|
33
|
+
readonly code: RunDriverCode;
|
|
34
|
+
readonly ok: boolean;
|
|
35
|
+
readonly message: string;
|
|
36
|
+
readonly strategy: SpecTerminationStrategy | 'unknown';
|
|
37
|
+
readonly maxCycles: number;
|
|
38
|
+
readonly cycles: readonly CycleRecord[];
|
|
39
|
+
readonly finalReport: MonotonicReport | null;
|
|
40
|
+
readonly summary: {
|
|
41
|
+
readonly reachedMaxCycles: boolean;
|
|
42
|
+
readonly regressionCount: number;
|
|
43
|
+
readonly totalCycles: number;
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/** Test seam: clear in-process locks between test cases. */
|
|
47
|
+
export declare function _clearRunLocks(): void;
|
|
48
|
+
/** Compose the cycle dir used for the writer (kept distinct from the
|
|
49
|
+
* slice dir so we can co-locate the per-cycle summary without
|
|
50
|
+
* overloading the monotonic-runner writer's `cycle-N.json`). */
|
|
51
|
+
export declare function cyclesDir(projectRoot: string, sid: string, rid: string): string;
|
|
52
|
+
/** Top-level entry point — `peaks loop run <rid>`.
|
|
53
|
+
*
|
|
54
|
+
* Returns a `RunDriverResult` (the CLI layer maps `code → exit
|
|
55
|
+
* code` + printResult envelope). The function is intentionally
|
|
56
|
+
* non-throwing; per-cycle errors are captured as
|
|
57
|
+
* `code = EVALUATOR_THREW` but the loop continues to the next cycle
|
|
58
|
+
* so the caller sees a complete picture. */
|
|
59
|
+
export declare function runLoop(options: RunDriverOptions): RunDriverResult;
|
|
60
|
+
/** CLI helper: resolve the project root, sid, and rid from a
|
|
61
|
+
* `(project, session, rid)` triple. */
|
|
62
|
+
export declare function resolveRunContext(opts: {
|
|
63
|
+
project?: string;
|
|
64
|
+
session: string;
|
|
65
|
+
rid: string;
|
|
66
|
+
}): {
|
|
67
|
+
projectRoot: string;
|
|
68
|
+
sid: string;
|
|
69
|
+
rid: string;
|
|
70
|
+
};
|