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,431 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* peaks-workflow v3.0.0 — Slice A.1 + Slice B.1
|
|
3
|
+
*
|
|
4
|
+
* Schema for `.peaks/workflows/<id>.yaml` (text + git, reviewable per ADR
|
|
5
|
+
* 0007 v2 concern #1). Workflows are the WHO/HOW/WITH-WHAT layer; SOPs
|
|
6
|
+
* remain the WHAT layer (gate definitions). Workflows reference SOPs
|
|
7
|
+
* for their gates — never duplicate gate logic.
|
|
8
|
+
*
|
|
9
|
+
* The schema is intentionally narrow on v3.0.0:
|
|
10
|
+
* - phases[] (ordered or grouped for parallelism)
|
|
11
|
+
* - gates[] (sop-id references — the leaf primitive)
|
|
12
|
+
* - evaluators[] (native evaluator types the runtime can call directly
|
|
13
|
+
* without LLM scheduling)
|
|
14
|
+
* - contextSnapshot (files + scope the LLM/worker should preload)
|
|
15
|
+
* - budget (token + wall + cycle caps)
|
|
16
|
+
*
|
|
17
|
+
* Karpathy §2 Simplicity First: no external framework, no DSL, no new
|
|
18
|
+
* IO. Pure types + a single `parseWorkflowYaml` / `lintWorkflowSpec`
|
|
19
|
+
* pair. Anything more elaborate (e.g. conditionals on outputs) belongs
|
|
20
|
+
* in a future minor.
|
|
21
|
+
*
|
|
22
|
+
* File budget: ≤ 800 lines (Karpathy §2).
|
|
23
|
+
*/
|
|
24
|
+
const VALID_EVALUATORS = new Set([
|
|
25
|
+
'karpathy',
|
|
26
|
+
'code-review',
|
|
27
|
+
'security-review',
|
|
28
|
+
'perf-baseline',
|
|
29
|
+
'verdict-aggregate',
|
|
30
|
+
'monotonic-improvement',
|
|
31
|
+
'impact-scan',
|
|
32
|
+
'smoke-run',
|
|
33
|
+
'canary-watch'
|
|
34
|
+
]);
|
|
35
|
+
const ID_PATTERN = /^[a-z][a-z0-9-]*$/;
|
|
36
|
+
/** Parse a raw yaml string into a workflow spec. Pure (no IO), throws on
|
|
37
|
+
* unparseable input. Use `lintWorkflowSpec` after parsing for semantic checks. */
|
|
38
|
+
export function parseWorkflowYaml(raw, expectedId) {
|
|
39
|
+
// Minimal hand-rolled YAML loader — we control the schema and want zero
|
|
40
|
+
// new deps. The shape is flat-ish: nested objects only via indentation.
|
|
41
|
+
// Indentation depth = 2 spaces (matches the default-fullauto-md.yaml we ship).
|
|
42
|
+
if (typeof raw !== 'string' || raw.length === 0) {
|
|
43
|
+
throw new Error('workflow yaml: input is empty');
|
|
44
|
+
}
|
|
45
|
+
const lines = raw.split(/\r?\n/);
|
|
46
|
+
// First non-blank line should be `schemaVersion: 1`. Detect blank-header
|
|
47
|
+
// tolerance: skip leading blanks/comments.
|
|
48
|
+
const root = {};
|
|
49
|
+
let i = 0;
|
|
50
|
+
while (i < lines.length && (lines[i]?.trim() === '' || lines[i]?.trim().startsWith('#')))
|
|
51
|
+
i++;
|
|
52
|
+
// Strip a leading `---` document marker (YAML frontmatter) if present.
|
|
53
|
+
if (lines[i]?.trim() === '---')
|
|
54
|
+
i++;
|
|
55
|
+
const stack = [{ kind: 'object', container: root, key: '__root__' }];
|
|
56
|
+
function pushChild(parent, childKey, child) {
|
|
57
|
+
if (parent.kind === 'object') {
|
|
58
|
+
parent.container[childKey] = child;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
for (; i < lines.length; i++) {
|
|
62
|
+
const line = lines[i] ?? '';
|
|
63
|
+
if (line.trim() === '' || line.trim().startsWith('#'))
|
|
64
|
+
continue;
|
|
65
|
+
const indent = leadingSpaces(line);
|
|
66
|
+
const trimmed = line.trim();
|
|
67
|
+
// Pop the stack to the correct depth.
|
|
68
|
+
// indent 0 → root only; indent 2 → 1 deep; indent 4 → 2 deep; etc.
|
|
69
|
+
while (stack.length > 1) {
|
|
70
|
+
const top = stack[stack.length - 1];
|
|
71
|
+
const expectedIndent = (stack.length - 1) * 2;
|
|
72
|
+
if (indent <= expectedIndent - 2) {
|
|
73
|
+
stack.pop();
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
void top;
|
|
79
|
+
}
|
|
80
|
+
const top = stack[stack.length - 1];
|
|
81
|
+
if (indent === 0 && trimmed.endsWith(':')) {
|
|
82
|
+
// New top-level key — open a child container.
|
|
83
|
+
const key = trimmed.slice(0, -1);
|
|
84
|
+
const peek = (lines[i + 1] ?? '').trim();
|
|
85
|
+
if (peek.startsWith('- ') || peek === '-') {
|
|
86
|
+
const arr = [];
|
|
87
|
+
pushChild(top, key, arr);
|
|
88
|
+
stack.push({ kind: 'array', container: arr, key });
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
const obj = {};
|
|
92
|
+
pushChild(top, key, obj);
|
|
93
|
+
stack.push({ kind: 'object', container: obj, key });
|
|
94
|
+
}
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
if (indent === 0 && trimmed.includes(':')) {
|
|
98
|
+
const key = trimmed.split(':')[0] ?? '';
|
|
99
|
+
const value = trimmed.split(':').slice(1).join(':').trim();
|
|
100
|
+
pushChild(top, key, parseScalar(value));
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
if (top.kind === 'array' && trimmed.startsWith('- ')) {
|
|
104
|
+
// Array item — peek next line for nested-key continuation.
|
|
105
|
+
const itemText = trimmed.slice(2);
|
|
106
|
+
// Detect: `- files:` (nested array) or `- id: foo` (inline object) or
|
|
107
|
+
// `- src/foo` (scalar).
|
|
108
|
+
const nextLine = (lines[i + 1] ?? '').trim();
|
|
109
|
+
const nextIndent = leadingSpaces(lines[i + 1] ?? '');
|
|
110
|
+
if (itemText.endsWith(':') && (nextLine.startsWith('- ') || nextLine === '-') && nextIndent > indent) {
|
|
111
|
+
// Nested array under object.
|
|
112
|
+
const obj = {};
|
|
113
|
+
const childKey = itemText.slice(0, -1);
|
|
114
|
+
obj['__pendingArrayKey'] = childKey;
|
|
115
|
+
top.container.push(obj);
|
|
116
|
+
// We push a new frame so subsequent `- ` lines belong to the inner array.
|
|
117
|
+
stack.push({ kind: 'array', container: top.container, key: childKey });
|
|
118
|
+
// Replace top's last item with the placeholder object — but we
|
|
119
|
+
// actually need a separate child array. Simpler: convert the
|
|
120
|
+
// last pushed object into { [childKey]: [] } and push the array
|
|
121
|
+
// as a new frame.
|
|
122
|
+
const arr = [];
|
|
123
|
+
const placeholder = { [childKey]: arr };
|
|
124
|
+
top.container.pop();
|
|
125
|
+
top.container.push(placeholder);
|
|
126
|
+
// Replace the top frame's container with the new array.
|
|
127
|
+
stack[stack.length - 1] = { kind: 'array', container: arr, key: childKey };
|
|
128
|
+
}
|
|
129
|
+
else if (itemText.includes(':')) {
|
|
130
|
+
// Inline object.
|
|
131
|
+
const obj = {};
|
|
132
|
+
const inlineParts = itemText.split(':');
|
|
133
|
+
obj[inlineParts[0] ?? ''] = parseScalar((inlineParts.slice(1).join(':')).trim());
|
|
134
|
+
top.container.push(obj);
|
|
135
|
+
stack.push({ kind: 'object', container: obj, key: inlineParts[0] ?? '' });
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
top.container.push(parseScalar(itemText));
|
|
139
|
+
}
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
if (top.kind === 'array' && trimmed.includes(':') && !trimmed.startsWith('- ')) {
|
|
143
|
+
// Continuation of the last array object.
|
|
144
|
+
const lastItem = top.container[top.container.length - 1];
|
|
145
|
+
if (lastItem !== undefined && lastItem !== null && typeof lastItem === 'object' && !Array.isArray(lastItem)) {
|
|
146
|
+
const parts = trimmed.split(':');
|
|
147
|
+
const key = parts[0] ?? '';
|
|
148
|
+
const value = parts.slice(1).join(':').trim();
|
|
149
|
+
lastItem[key] = parseScalar(value);
|
|
150
|
+
}
|
|
151
|
+
continue;
|
|
152
|
+
}
|
|
153
|
+
if (top.kind === 'object' && trimmed.includes(':')) {
|
|
154
|
+
const parts = trimmed.split(':');
|
|
155
|
+
const key = parts[0] ?? '';
|
|
156
|
+
const value = parts.slice(1).join(':').trim();
|
|
157
|
+
const peek = (lines[i + 1] ?? '').trim();
|
|
158
|
+
const nextIndent = leadingSpaces(lines[i + 1] ?? '');
|
|
159
|
+
if (value === '' && (peek.startsWith('- ') || peek === '-') && nextIndent > indent) {
|
|
160
|
+
// Nested array under this object key.
|
|
161
|
+
const arr = [];
|
|
162
|
+
top.container[key] = arr;
|
|
163
|
+
stack.push({ kind: 'array', container: arr, key });
|
|
164
|
+
}
|
|
165
|
+
else if (value === '|' || value === '>') {
|
|
166
|
+
// Block scalar (literal / folded) — accumulate lines at indent > key.
|
|
167
|
+
const blockLines = [];
|
|
168
|
+
const blockIndent = indent + 2;
|
|
169
|
+
let j = i + 1;
|
|
170
|
+
while (j < lines.length) {
|
|
171
|
+
const bl = lines[j] ?? '';
|
|
172
|
+
if (bl.trim() === '') {
|
|
173
|
+
blockLines.push('');
|
|
174
|
+
j++;
|
|
175
|
+
continue;
|
|
176
|
+
}
|
|
177
|
+
if (leadingSpaces(bl) < blockIndent && bl.trim() !== '')
|
|
178
|
+
break;
|
|
179
|
+
blockLines.push(bl.slice(blockIndent));
|
|
180
|
+
j++;
|
|
181
|
+
}
|
|
182
|
+
const joined = value === '|' ? blockLines.join('\n') : blockLines.join(' ');
|
|
183
|
+
top.container[key] = joined.replace(/\n+$/, '').trim();
|
|
184
|
+
i = j - 1;
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
top.container[key] = parseScalar(value);
|
|
188
|
+
}
|
|
189
|
+
continue;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
// Build the typed spec.
|
|
193
|
+
return buildSpec(root, expectedId);
|
|
194
|
+
}
|
|
195
|
+
function buildSpec(root, expectedId) {
|
|
196
|
+
const id = stringField(root, 'id', expectedId);
|
|
197
|
+
if (id !== expectedId) {
|
|
198
|
+
throw new Error(`workflow yaml: id "${id}" does not match filename "${expectedId}"`);
|
|
199
|
+
}
|
|
200
|
+
const schemaVersion = numberField(root, 'schemaVersion', 1);
|
|
201
|
+
if (schemaVersion !== 1) {
|
|
202
|
+
throw new Error(`workflow yaml: unsupported schemaVersion ${schemaVersion} (expected 1)`);
|
|
203
|
+
}
|
|
204
|
+
const phasesRaw = arrayField(root, 'phases');
|
|
205
|
+
const gatesRaw = arrayField(root, 'gates');
|
|
206
|
+
const evaluatorsRaw = arrayField(root, 'evaluators');
|
|
207
|
+
const snapshotRaw = objectField(root, 'contextSnapshot');
|
|
208
|
+
const budgetRaw = objectField(root, 'budget');
|
|
209
|
+
const phases = phasesRaw.map((p) => buildPhase(p));
|
|
210
|
+
const gates = gatesRaw.map((g) => buildGate(g));
|
|
211
|
+
const evaluators = evaluatorsRaw.map((e) => buildEvaluator(e));
|
|
212
|
+
const contextSnapshot = {
|
|
213
|
+
files: stringArrayField(snapshotRaw, 'files'),
|
|
214
|
+
memory: stringArrayField(snapshotRaw, 'memory')
|
|
215
|
+
};
|
|
216
|
+
const budget = {
|
|
217
|
+
...(budgetRaw['tokens'] !== undefined ? { tokens: numberField(budgetRaw, 'tokens') } : {}),
|
|
218
|
+
...(budgetRaw['wallSeconds'] !== undefined ? { wallSeconds: numberField(budgetRaw, 'wallSeconds') } : {}),
|
|
219
|
+
...(budgetRaw['cycles'] !== undefined ? { cycles: numberField(budgetRaw, 'cycles') } : {})
|
|
220
|
+
};
|
|
221
|
+
return {
|
|
222
|
+
schemaVersion: 1,
|
|
223
|
+
id,
|
|
224
|
+
label: stringField(root, 'label', id),
|
|
225
|
+
description: stringField(root, 'description', ''),
|
|
226
|
+
phases,
|
|
227
|
+
gates,
|
|
228
|
+
evaluators,
|
|
229
|
+
contextSnapshot,
|
|
230
|
+
budget
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
function buildPhase(raw) {
|
|
234
|
+
const obj = objectField({ phase: raw }, 'phase');
|
|
235
|
+
const id = stringField(obj, 'id');
|
|
236
|
+
if (!ID_PATTERN.test(id)) {
|
|
237
|
+
throw new Error(`workflow phase id "${id}" must match ${ID_PATTERN.source}`);
|
|
238
|
+
}
|
|
239
|
+
const role = stringField(obj, 'role');
|
|
240
|
+
if (!role.startsWith('peaks-')) {
|
|
241
|
+
throw new Error(`workflow phase "${id}" role "${role}" must start with "peaks-"`);
|
|
242
|
+
}
|
|
243
|
+
const gatesRaw = obj['gates'];
|
|
244
|
+
const gates = Array.isArray(gatesRaw) ? gatesRaw.map((g) => String(g)) : [];
|
|
245
|
+
const outputRaw = obj['outputContract'];
|
|
246
|
+
const outputContract = Array.isArray(outputRaw) ? outputRaw.map((g) => String(g)) : [];
|
|
247
|
+
const dependsOnRaw = obj['dependsOn'];
|
|
248
|
+
const dependsOn = Array.isArray(dependsOnRaw) ? dependsOnRaw.map((g) => String(g)) : undefined;
|
|
249
|
+
const parallelGroup = typeof obj['parallelGroup'] === 'string' ? obj['parallelGroup'] : undefined;
|
|
250
|
+
return {
|
|
251
|
+
id,
|
|
252
|
+
role,
|
|
253
|
+
promptTemplate: stringField(obj, 'promptTemplate'),
|
|
254
|
+
gates,
|
|
255
|
+
outputContract,
|
|
256
|
+
...(dependsOn !== undefined ? { dependsOn } : {}),
|
|
257
|
+
...(parallelGroup !== undefined ? { parallelGroup } : {})
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
function buildGate(raw) {
|
|
261
|
+
const obj = objectField({ gate: raw }, 'gate');
|
|
262
|
+
const id = stringField(obj, 'id');
|
|
263
|
+
const sopId = stringField(obj, 'sopId');
|
|
264
|
+
const description = typeof obj['description'] === 'string' ? obj['description'] : undefined;
|
|
265
|
+
return {
|
|
266
|
+
id,
|
|
267
|
+
sopId,
|
|
268
|
+
...(description !== undefined ? { description } : {})
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
function buildEvaluator(raw) {
|
|
272
|
+
const obj = objectField({ evaluator: raw }, 'evaluator');
|
|
273
|
+
const typeRaw = stringField(obj, 'type');
|
|
274
|
+
if (!VALID_EVALUATORS.has(typeRaw)) {
|
|
275
|
+
throw new Error(`workflow evaluator type "${typeRaw}" is not a native evaluator (allowed: ${[...VALID_EVALUATORS].join(', ')})`);
|
|
276
|
+
}
|
|
277
|
+
const type = typeRaw;
|
|
278
|
+
const gate = typeof obj['gate'] === 'string' ? obj['gate'] : undefined;
|
|
279
|
+
const scope = typeof obj['scope'] === 'string' ? obj['scope'] : undefined;
|
|
280
|
+
const threshold = typeof obj['threshold'] === 'string' ? obj['threshold'] : undefined;
|
|
281
|
+
return {
|
|
282
|
+
type,
|
|
283
|
+
...(gate !== undefined ? { gate } : {}),
|
|
284
|
+
...(scope !== undefined ? { scope } : {}),
|
|
285
|
+
...(threshold !== undefined ? { threshold } : {})
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
/** Lint a parsed spec — returns a report with semantic errors / warnings. */
|
|
289
|
+
export function lintWorkflowSpec(spec) {
|
|
290
|
+
const errors = [];
|
|
291
|
+
const warnings = [];
|
|
292
|
+
// Phase ids must be unique.
|
|
293
|
+
const seen = new Set();
|
|
294
|
+
for (const phase of spec.phases) {
|
|
295
|
+
if (seen.has(phase.id))
|
|
296
|
+
errors.push(`duplicate phase id "${phase.id}"`);
|
|
297
|
+
seen.add(phase.id);
|
|
298
|
+
}
|
|
299
|
+
// Gate references in phases must exist in the gates list (or be a known
|
|
300
|
+
// built-in like "Gate B3").
|
|
301
|
+
const gateIds = new Set(spec.gates.map((g) => g.id));
|
|
302
|
+
for (const phase of spec.phases) {
|
|
303
|
+
for (const gateRef of phase.gates) {
|
|
304
|
+
if (!gateIds.has(gateRef) && !gateRef.startsWith('Gate ')) {
|
|
305
|
+
warnings.push(`phase "${phase.id}" references unknown gate "${gateRef}" (not in gates[] and not a built-in "Gate …" label)`);
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
// Evaluator gates must match a gate id when present.
|
|
310
|
+
for (const ev of spec.evaluators) {
|
|
311
|
+
if (ev.gate !== undefined && !gateIds.has(ev.gate) && !ev.gate.startsWith('Gate ')) {
|
|
312
|
+
warnings.push(`evaluator "${ev.type}" references unknown gate "${ev.gate}"`);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
// dependsOn references must resolve.
|
|
316
|
+
const phaseIds = new Set(spec.phases.map((p) => p.id));
|
|
317
|
+
for (const phase of spec.phases) {
|
|
318
|
+
if (phase.dependsOn !== undefined) {
|
|
319
|
+
for (const dep of phase.dependsOn) {
|
|
320
|
+
if (!phaseIds.has(dep))
|
|
321
|
+
errors.push(`phase "${phase.id}" depends on missing phase "${dep}"`);
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
// Parallel groups must contain ≥2 phases.
|
|
326
|
+
const groupCounts = new Map();
|
|
327
|
+
for (const phase of spec.phases) {
|
|
328
|
+
if (phase.parallelGroup !== undefined) {
|
|
329
|
+
groupCounts.set(phase.parallelGroup, (groupCounts.get(phase.parallelGroup) ?? 0) + 1);
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
for (const [group, count] of groupCounts) {
|
|
333
|
+
if (count < 2)
|
|
334
|
+
warnings.push(`parallelGroup "${group}" has only ${count} phase(s); parallelism requires ≥2`);
|
|
335
|
+
}
|
|
336
|
+
// Budget sanity.
|
|
337
|
+
if (spec.budget.cycles !== undefined && spec.budget.cycles < 1) {
|
|
338
|
+
errors.push(`budget.cycles must be ≥1 when set (got ${spec.budget.cycles})`);
|
|
339
|
+
}
|
|
340
|
+
if (spec.budget.tokens !== undefined && spec.budget.tokens < 1) {
|
|
341
|
+
errors.push(`budget.tokens must be ≥1 when set (got ${spec.budget.tokens})`);
|
|
342
|
+
}
|
|
343
|
+
if (spec.budget.wallSeconds !== undefined && spec.budget.wallSeconds < 1) {
|
|
344
|
+
errors.push(`budget.wallSeconds must be ≥1 when set (got ${spec.budget.wallSeconds})`);
|
|
345
|
+
}
|
|
346
|
+
return {
|
|
347
|
+
ok: errors.length === 0,
|
|
348
|
+
errors,
|
|
349
|
+
warnings,
|
|
350
|
+
normalizedSpec: spec
|
|
351
|
+
};
|
|
352
|
+
}
|
|
353
|
+
// ─── yaml helper primitives ─────────────────────────────────────────────
|
|
354
|
+
function leadingSpaces(line) {
|
|
355
|
+
let n = 0;
|
|
356
|
+
for (const ch of line) {
|
|
357
|
+
if (ch === ' ')
|
|
358
|
+
n++;
|
|
359
|
+
else
|
|
360
|
+
break;
|
|
361
|
+
}
|
|
362
|
+
return n;
|
|
363
|
+
}
|
|
364
|
+
function parseScalar(raw) {
|
|
365
|
+
if (raw === '')
|
|
366
|
+
return '';
|
|
367
|
+
if (raw === 'true')
|
|
368
|
+
return true;
|
|
369
|
+
if (raw === 'false')
|
|
370
|
+
return false;
|
|
371
|
+
if (raw === 'null' || raw === '~')
|
|
372
|
+
return null;
|
|
373
|
+
// Inline array form `[a, b, c]`
|
|
374
|
+
if (raw.startsWith('[') && raw.endsWith(']')) {
|
|
375
|
+
const inner = raw.slice(1, -1).trim();
|
|
376
|
+
if (inner === '')
|
|
377
|
+
return [];
|
|
378
|
+
return inner.split(',').map((s) => parseScalar(s.trim()));
|
|
379
|
+
}
|
|
380
|
+
// Strip optional surrounding quotes.
|
|
381
|
+
if ((raw.startsWith('"') && raw.endsWith('"')) || (raw.startsWith("'") && raw.endsWith("'"))) {
|
|
382
|
+
return raw.slice(1, -1);
|
|
383
|
+
}
|
|
384
|
+
// Number?
|
|
385
|
+
if (/^-?\d+$/.test(raw))
|
|
386
|
+
return parseInt(raw, 10);
|
|
387
|
+
if (/^-?\d+\.\d+$/.test(raw))
|
|
388
|
+
return parseFloat(raw);
|
|
389
|
+
return raw;
|
|
390
|
+
}
|
|
391
|
+
function stringField(obj, key, fallback) {
|
|
392
|
+
const v = obj[key];
|
|
393
|
+
if (typeof v === 'string')
|
|
394
|
+
return v;
|
|
395
|
+
if (fallback !== undefined)
|
|
396
|
+
return fallback;
|
|
397
|
+
throw new Error(`workflow yaml: missing required string field "${key}"`);
|
|
398
|
+
}
|
|
399
|
+
function numberField(obj, key, fallback) {
|
|
400
|
+
const v = obj[key];
|
|
401
|
+
if (typeof v === 'number' && Number.isFinite(v))
|
|
402
|
+
return v;
|
|
403
|
+
if (fallback !== undefined)
|
|
404
|
+
return fallback;
|
|
405
|
+
throw new Error(`workflow yaml: missing required number field "${key}"`);
|
|
406
|
+
}
|
|
407
|
+
function arrayField(obj, key) {
|
|
408
|
+
const v = obj[key];
|
|
409
|
+
if (v === undefined)
|
|
410
|
+
return [];
|
|
411
|
+
if (!Array.isArray(v))
|
|
412
|
+
throw new Error(`workflow yaml: field "${key}" must be an array`);
|
|
413
|
+
return v;
|
|
414
|
+
}
|
|
415
|
+
function objectField(obj, key) {
|
|
416
|
+
const v = obj[key];
|
|
417
|
+
if (v === undefined)
|
|
418
|
+
return {};
|
|
419
|
+
if (v === null || typeof v !== 'object' || Array.isArray(v)) {
|
|
420
|
+
throw new Error(`workflow yaml: field "${key}" must be an object`);
|
|
421
|
+
}
|
|
422
|
+
return v;
|
|
423
|
+
}
|
|
424
|
+
function stringArrayField(obj, key) {
|
|
425
|
+
const v = obj[key];
|
|
426
|
+
if (v === undefined)
|
|
427
|
+
return [];
|
|
428
|
+
if (!Array.isArray(v))
|
|
429
|
+
throw new Error(`workflow yaml: field "${key}" must be an array of strings`);
|
|
430
|
+
return v.map((s) => String(s));
|
|
431
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export type WorkflowSkipState = {
|
|
2
|
+
rid: string;
|
|
3
|
+
skippedGates: string[];
|
|
4
|
+
skipReason: string;
|
|
5
|
+
skipAppliedAt: string;
|
|
6
|
+
skipAppliedBy: string;
|
|
7
|
+
callerKind: 'human' | 'llm' | 'script';
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Read the skip-state for a rid, or `null` if no state file exists or
|
|
11
|
+
* the file is malformed. The caller is expected to treat `null` as
|
|
12
|
+
* "no skip applied; evaluate all gates normally".
|
|
13
|
+
*/
|
|
14
|
+
export declare function readSkipState(projectRoot: string, sessionId: string, rid: string): WorkflowSkipState | null;
|
|
15
|
+
/**
|
|
16
|
+
* Write (or overwrite) the skip-state for a rid. Returns the absolute
|
|
17
|
+
* path to the file that was written. Caller is responsible for
|
|
18
|
+
* surfacing this in the envelope as `persistedTo`.
|
|
19
|
+
*/
|
|
20
|
+
export declare function writeSkipState(projectRoot: string, sessionId: string, state: WorkflowSkipState): string;
|
|
21
|
+
/**
|
|
22
|
+
* Delete the skip-state file for a rid. Idempotent: missing file is
|
|
23
|
+
* a no-op (returns false). Used by `peaks workflow unskip` (v2) and
|
|
24
|
+
* by the rollback path of `applySkip` if the caller passes
|
|
25
|
+
* `--dry-run` and we want to clean up any preview state.
|
|
26
|
+
*/
|
|
27
|
+
export declare function deleteSkipState(projectRoot: string, sessionId: string, rid: string): boolean;
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slice 2026-06-13-peaks-workflow-skip — workflow state store.
|
|
3
|
+
*
|
|
4
|
+
* Per-slice ephemeral runtime state, keyed by rid. Lives under
|
|
5
|
+
* `.peaks/_runtime/<sessionId>/workflow-state/<rid>.json` (gitignored
|
|
6
|
+
* alongside the rest of `.peaks/_runtime/`).
|
|
7
|
+
*
|
|
8
|
+
* Today only the skip-marker shape is persisted. Future workflow-edit
|
|
9
|
+
* primitives (e.g. `peaks workflow inject`, `peaks workflow unskip`)
|
|
10
|
+
* can extend the schema additively.
|
|
11
|
+
*
|
|
12
|
+
* Design:
|
|
13
|
+
* - Synchronous read (the state file is tiny, < 200 bytes; not worth
|
|
14
|
+
* an async I/O layer for it).
|
|
15
|
+
* - Synchronous write (same rationale; the file is in the user's
|
|
16
|
+
* own `.peaks/_runtime/` and the write is bounded by the
|
|
17
|
+
* dispatcher that already has the file handle).
|
|
18
|
+
* - Tolerate malformed JSON: returns null on parse error so the
|
|
19
|
+
* caller can treat "no state" as "no skip applied" rather than
|
|
20
|
+
* blowing up the workflow.
|
|
21
|
+
*/
|
|
22
|
+
import { existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync } from 'node:fs';
|
|
23
|
+
import { dirname, join } from 'node:path';
|
|
24
|
+
const STATE_FILE_NAME = 'workflow-state.json';
|
|
25
|
+
function stateFilePath(projectRoot, sessionId, rid) {
|
|
26
|
+
return join(projectRoot, '.peaks', '_runtime', sessionId, 'workflow-state', `${rid}.json`);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Read the skip-state for a rid, or `null` if no state file exists or
|
|
30
|
+
* the file is malformed. The caller is expected to treat `null` as
|
|
31
|
+
* "no skip applied; evaluate all gates normally".
|
|
32
|
+
*/
|
|
33
|
+
export function readSkipState(projectRoot, sessionId, rid) {
|
|
34
|
+
const path = stateFilePath(projectRoot, sessionId, rid);
|
|
35
|
+
if (!existsSync(path)) {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
try {
|
|
39
|
+
const raw = readFileSync(path, 'utf8');
|
|
40
|
+
const parsed = JSON.parse(raw);
|
|
41
|
+
if (!isWorkflowSkipState(parsed)) {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
return parsed;
|
|
45
|
+
}
|
|
46
|
+
catch { // TODO(g2): legacy silent catch — grace: 1 minor release (v2.14.0)
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Write (or overwrite) the skip-state for a rid. Returns the absolute
|
|
52
|
+
* path to the file that was written. Caller is responsible for
|
|
53
|
+
* surfacing this in the envelope as `persistedTo`.
|
|
54
|
+
*/
|
|
55
|
+
export function writeSkipState(projectRoot, sessionId, state) {
|
|
56
|
+
const path = stateFilePath(projectRoot, sessionId, state.rid);
|
|
57
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
58
|
+
writeFileSync(path, `${JSON.stringify(state, null, 2)}\n`, 'utf8');
|
|
59
|
+
return path;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Delete the skip-state file for a rid. Idempotent: missing file is
|
|
63
|
+
* a no-op (returns false). Used by `peaks workflow unskip` (v2) and
|
|
64
|
+
* by the rollback path of `applySkip` if the caller passes
|
|
65
|
+
* `--dry-run` and we want to clean up any preview state.
|
|
66
|
+
*/
|
|
67
|
+
export function deleteSkipState(projectRoot, sessionId, rid) {
|
|
68
|
+
const path = stateFilePath(projectRoot, sessionId, rid);
|
|
69
|
+
if (!existsSync(path)) {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
unlinkSync(path);
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
function isWorkflowSkipState(value) {
|
|
76
|
+
if (typeof value !== 'object' || value === null) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
const v = value;
|
|
80
|
+
if (typeof v.rid !== 'string')
|
|
81
|
+
return false;
|
|
82
|
+
if (!Array.isArray(v.skippedGates))
|
|
83
|
+
return false;
|
|
84
|
+
if (!v.skippedGates.every((g) => typeof g === 'string'))
|
|
85
|
+
return false;
|
|
86
|
+
if (typeof v.skipReason !== 'string')
|
|
87
|
+
return false;
|
|
88
|
+
if (typeof v.skipAppliedAt !== 'string')
|
|
89
|
+
return false;
|
|
90
|
+
if (typeof v.skipAppliedBy !== 'string')
|
|
91
|
+
return false;
|
|
92
|
+
if (v.callerKind !== 'human' && v.callerKind !== 'llm' && v.callerKind !== 'script')
|
|
93
|
+
return false;
|
|
94
|
+
return true;
|
|
95
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slice 2.0.1-bug3-fact-forcing-bypass — pure-data template for the
|
|
3
|
+
* consumer-project `.claude/settings.local.json` file.
|
|
4
|
+
*
|
|
5
|
+
* The template is a PreToolUse hook allow-list that bypasses the
|
|
6
|
+
* Claude Code [Fact-Forcing Gate] for tool calls whose paths target
|
|
7
|
+
* the peaks-managed `.peaks/` workspace. Without this bypass,
|
|
8
|
+
* `peaks workspace init` (Step 0 of every peaks-code session) is
|
|
9
|
+
* unrunnable in a consumer project because the gate blocks the very
|
|
10
|
+
* first Write.
|
|
11
|
+
*
|
|
12
|
+
* The template is a pure-data function (no filesystem, no clock) so
|
|
13
|
+
* it can be unit-tested in isolation and so the on-disk file matches
|
|
14
|
+
* the in-memory template byte-for-byte.
|
|
15
|
+
*
|
|
16
|
+
* One matcher is emitted:
|
|
17
|
+
* 1. `Write|Edit|MultiEdit` — a node one-liner that path-matches
|
|
18
|
+
* `.peaks/_runtime/` and `.peaks/_runtime/<sessionId>/`. Exits 0 (allow)
|
|
19
|
+
* for those paths, non-zero (deny → fall through to gate) for
|
|
20
|
+
* everything else.
|
|
21
|
+
*
|
|
22
|
+
* The previous `Bash` matcher (which whitelisted a fixed `peaks
|
|
23
|
+
* <subcommand>` prefix) was removed in TEMPLATE_VERSION 1.2.0. The
|
|
24
|
+
* [Fact-Forcing Gate] is an Edit/Write concern (it forces the LLM
|
|
25
|
+
* to quote user instructions before any file write), and the Bash
|
|
26
|
+
* matcher was emitting `process.exit(1)` with no stderr on every
|
|
27
|
+
* non-peaks Bash call — a non-blocking "No stderr output" noise
|
|
28
|
+
* decoration in the Claude Code UI even though the underlying tool
|
|
29
|
+
* call still proceeded. Bash command enforcement is now owned by
|
|
30
|
+
* `peaks gate enforce`, which `peaks hooks install` injects into the
|
|
31
|
+
* consumer project's `.claude/settings.json` and which exits 0
|
|
32
|
+
* silently for any command not guarded by a registered SOP gate.
|
|
33
|
+
*/
|
|
34
|
+
export declare const CLAUDE_SETTINGS_LOCAL_FILENAME = ".claude/settings.local.json";
|
|
35
|
+
/**
|
|
36
|
+
* Informational version of the offline template shape. Bumped when the
|
|
37
|
+
* template's hooks tree (matchers, allow-list content, wrapper format)
|
|
38
|
+
* changes in a way that should trigger a refresh of stale on-disk
|
|
39
|
+
* copies. The comparator (`templateContentMatches`) is the source of
|
|
40
|
+
* truth for refresh decisions — this constant exists so a developer
|
|
41
|
+
* reading the diff can correlate a template change with a deliberate
|
|
42
|
+
* bump. Future work may write a version-marker file to short-circuit
|
|
43
|
+
* the comparator; for now the constant is informational only.
|
|
44
|
+
*
|
|
45
|
+
* History:
|
|
46
|
+
* 1.0.0 — initial template with `Write|Edit|MultiEdit` and `Bash`
|
|
47
|
+
* matchers (slice 2.0.1-bug3-fact-forcing-bypass)
|
|
48
|
+
* 1.1.0 — added `node -e "..."` wrapper contract
|
|
49
|
+
* (slice fix-claude-settings-template-hook-node-wrapper)
|
|
50
|
+
* 1.2.0 — removed the `Bash` matcher; Edit/Write fact-forcing
|
|
51
|
+
* bypass is the only emit. Bash enforcement is owned by
|
|
52
|
+
* `peaks gate enforce` in `settings.json`.
|
|
53
|
+
* 1.3.0 — added the v3.1.2 `Bash` PreToolUse matcher that runs
|
|
54
|
+
* `peaks code gate-step-08 --project .` (Step 0.8 mechanical
|
|
55
|
+
* gate). The existing Write|Edit|MultiEdit matcher is
|
|
56
|
+
* preserved. The new matcher's exit code is the load-bearing
|
|
57
|
+
* signal: 0 = allow, 2 = block (with stderr BLOCKED reason).
|
|
58
|
+
*/
|
|
59
|
+
export declare const TEMPLATE_VERSION = "1.3.0";
|
|
60
|
+
/**
|
|
61
|
+
* Compare two serialized template strings for semantic equivalence.
|
|
62
|
+
*
|
|
63
|
+
* Returns `true` iff both strings parse to objects whose
|
|
64
|
+
* `hooks.PreToolUse` arrays are structurally identical (same length;
|
|
65
|
+
* each entry's `matcher`, `hooks[].type`, `hooks[].command` match).
|
|
66
|
+
*
|
|
67
|
+
* Returns `false` on any `JSON.parse` error, shape mismatch, or
|
|
68
|
+
* missing `hooks.PreToolUse`. Whitespace and key order do NOT affect
|
|
69
|
+
* the result — the comparison is on the parsed AST, not on bytes.
|
|
70
|
+
*
|
|
71
|
+
* This is the comparator `initWorkspace` uses to decide whether to
|
|
72
|
+
* refresh a stale `.peaks/.claude-settings-template.json` on disk.
|
|
73
|
+
*/
|
|
74
|
+
export declare function templateContentMatches(generated: string, onDisk: string): boolean;
|
|
75
|
+
type ClaudeHookCommand = {
|
|
76
|
+
type: 'command';
|
|
77
|
+
command: string;
|
|
78
|
+
};
|
|
79
|
+
type ClaudePreToolUseEntry = {
|
|
80
|
+
matcher: string;
|
|
81
|
+
hooks: ClaudeHookCommand[];
|
|
82
|
+
};
|
|
83
|
+
type ClaudeSettingsLocal = {
|
|
84
|
+
hooks: {
|
|
85
|
+
PreToolUse: ClaudePreToolUseEntry[];
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* Build the full template object. The shape is the subset of Claude
|
|
90
|
+
* Code's `.claude/settings.local.json` schema that PreToolUse hooks
|
|
91
|
+
* need — we do not emit the `permissions` block because the fact-
|
|
92
|
+
* forcing gate is a core feature that PreToolUse hooks can short-
|
|
93
|
+
* circuit but that the `permissions` block cannot.
|
|
94
|
+
*
|
|
95
|
+
* As of TEMPLATE_VERSION 1.2.0, only the `Write|Edit|MultiEdit`
|
|
96
|
+
* matcher is emitted. Bash command enforcement is the responsibility
|
|
97
|
+
* of `peaks gate enforce`, which `peaks hooks install` injects into
|
|
98
|
+
* `.claude/settings.json` (not `.claude/settings.local.json`).
|
|
99
|
+
*/
|
|
100
|
+
export declare function buildClaudeSettingsLocalJson(): ClaudeSettingsLocal;
|
|
101
|
+
export {};
|