peaks-loop 4.0.0-beta.8 → 4.0.1
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 +955 -141
- package/README-en.md +26 -7
- package/README.md +75 -6
- package/agents/karpathy-reviewer.md +33 -0
- package/bin/peaks.js +1 -1
- package/dist/cli/cli-helpers.d.ts +68 -0
- package/dist/cli/cli-helpers.js +109 -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/_register.d.ts +3 -0
- package/dist/cli/commands/_register.js +139 -0
- package/dist/cli/commands/_super.d.ts +10 -0
- package/dist/cli/commands/_super.js +97 -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/asset-commands.d.ts +45 -0
- package/dist/cli/commands/asset-commands.js +421 -0
- package/dist/cli/commands/audit-commands.d.ts +28 -0
- package/dist/cli/commands/audit-commands.js +437 -0
- package/dist/cli/commands/autonomous-swarm-commands.d.ts +12 -0
- package/dist/cli/commands/autonomous-swarm-commands.js +120 -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 +8 -0
- package/dist/cli/commands/changeset-commands.d.ts +13 -0
- package/dist/cli/commands/changeset-commands.js +46 -0
- package/dist/cli/commands/code-commands.d.ts +90 -0
- package/dist/cli/commands/code-commands.js +118 -0
- package/dist/cli/commands/code-job-shape-commands.d.ts +9 -0
- package/dist/cli/commands/code-job-shape-commands.js +164 -0
- package/dist/cli/commands/code-mode-gate-commands.d.ts +9 -0
- package/dist/cli/commands/code-mode-gate-commands.js +223 -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/code-run-command.d.ts +12 -0
- package/dist/cli/commands/code-run-command.js +68 -0
- package/dist/cli/commands/code-runtime-commands.d.ts +11 -0
- package/dist/cli/commands/code-runtime-commands.js +391 -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 +304 -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 +149 -0
- package/dist/cli/commands/container-commands.d.ts +28 -0
- package/dist/cli/commands/container-commands.js +221 -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 +255 -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 +264 -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 +243 -0
- package/dist/cli/commands/core/skill-command.d.ts +3 -0
- package/dist/cli/commands/core/skill-command.js +303 -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/cron-commands.d.ts +57 -0
- package/dist/cli/commands/cron-commands.js +257 -0
- package/dist/cli/commands/cron-scheduler-commands.d.ts +47 -0
- package/dist/cli/commands/cron-scheduler-commands.js +284 -0
- package/dist/cli/commands/dashboard-commands.d.ts +4 -0
- package/dist/cli/commands/dashboard-commands.js +10 -0
- package/dist/cli/commands/dashboard-long-run.d.ts +25 -0
- package/dist/cli/commands/dashboard-long-run.js +122 -0
- package/dist/cli/commands/dashboard-summary.d.ts +12 -0
- package/dist/cli/commands/dashboard-summary.js +58 -0
- package/dist/cli/commands/dispatch-commands.d.ts +3 -0
- package/dist/cli/commands/dispatch-commands.js +715 -0
- package/dist/cli/commands/dispatch-from-dag.d.ts +3 -0
- package/dist/cli/commands/dispatch-from-dag.js +254 -0
- package/dist/cli/commands/doc-commands.d.ts +11 -0
- package/dist/cli/commands/doc-commands.js +65 -0
- package/dist/cli/commands/ecc-commands.d.ts +30 -0
- package/dist/cli/commands/ecc-commands.js +119 -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 +239 -0
- package/dist/cli/commands/governance-classify-contract-commands.d.ts +21 -0
- package/dist/cli/commands/governance-classify-contract-commands.js +273 -0
- package/dist/cli/commands/heartbeat-commands.d.ts +3 -0
- package/dist/cli/commands/heartbeat-commands.js +206 -0
- package/dist/cli/commands/heartbeat-watch-command.d.ts +31 -0
- package/dist/cli/commands/heartbeat-watch-command.js +146 -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 +272 -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 +322 -0
- package/dist/cli/commands/lease-metrics-commands.d.ts +67 -0
- package/dist/cli/commands/lease-metrics-commands.js +231 -0
- package/dist/cli/commands/lease-stats-commands.d.ts +65 -0
- package/dist/cli/commands/lease-stats-commands.js +107 -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 +235 -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 +298 -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 +143 -0
- package/dist/cli/commands/preferences-commands.d.ts +2 -0
- package/dist/cli/commands/preferences-commands.js +217 -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 +307 -0
- package/dist/cli/commands/release-commands.d.ts +39 -0
- package/dist/cli/commands/release-commands.js +323 -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-helpers.d.ts +7 -0
- package/dist/cli/commands/runtime-commands-helpers.js +24 -0
- package/dist/cli/commands/runtime-commands.d.ts +52 -0
- package/dist/cli/commands/runtime-commands.js +149 -0
- package/dist/cli/commands/sc-commands.d.ts +3 -0
- package/dist/cli/commands/sc-commands.js +47 -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 +658 -0
- package/dist/cli/commands/session-24h-mode.d.ts +26 -0
- package/dist/cli/commands/session-24h-mode.js +196 -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 +36 -0
- package/dist/cli/commands/share-commands.js +415 -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 +71 -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/spill-demo-command.d.ts +7 -0
- package/dist/cli/commands/spill-demo-command.js +29 -0
- package/dist/cli/commands/statusline-commands.d.ts +15 -0
- package/dist/cli/commands/statusline-commands.js +231 -0
- package/dist/cli/commands/sub-agent-commands.d.ts +22 -0
- package/dist/cli/commands/sub-agent-commands.js +20 -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 +109 -0
- package/dist/cli/commands/sub-agent-shared.js +90 -0
- package/dist/cli/commands/swarm-commands.d.ts +13 -0
- package/dist/cli/commands/swarm-commands.js +77 -0
- package/dist/cli/commands/tech-commands.d.ts +64 -0
- package/dist/cli/commands/tech-commands.js +195 -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 +25 -0
- package/dist/cli/commands/upgrade-commands.js +154 -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/vm-commands.d.ts +31 -0
- package/dist/cli/commands/vm-commands.js +274 -0
- package/dist/cli/commands/workflow-commands.d.ts +3 -0
- package/dist/cli/commands/workflow-commands.js +567 -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/commands/worktree-auth-commands.d.ts +29 -0
- package/dist/cli/commands/worktree-auth-commands.js +652 -0
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/index.js +75 -0
- package/dist/cli/program.d.ts +5 -0
- package/dist/cli/program.js +213 -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/24h-mode/decider.d.ts +103 -0
- package/dist/services/24h-mode/decider.js +144 -0
- package/dist/services/24h-mode/index.d.ts +12 -0
- package/dist/services/24h-mode/index.js +12 -0
- package/dist/services/24h-mode/state.d.ts +48 -0
- package/dist/services/24h-mode/state.js +51 -0
- package/dist/services/24h-mode/store.d.ts +27 -0
- package/dist/services/24h-mode/store.js +119 -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/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-bee-runtime-contract.d.ts +25 -0
- package/dist/services/audit/enforcers/lint-bee-runtime-contract.js +91 -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-peaks-code-runtime.d.ts +16 -0
- package/dist/services/audit/enforcers/lint-peaks-code-runtime.js +31 -0
- package/dist/services/audit/enforcers/lint-peaks-skill-runtime.d.ts +23 -0
- package/dist/services/audit/enforcers/lint-peaks-skill-runtime.js +59 -0
- package/dist/services/audit/enforcers/lint-peaks-ui-sc-txt-runtime.d.ts +28 -0
- package/dist/services/audit/enforcers/lint-peaks-ui-sc-txt-runtime.js +86 -0
- package/dist/services/audit/enforcers/lint-prd-artifact-handoff.d.ts +16 -0
- package/dist/services/audit/enforcers/lint-prd-artifact-handoff.js +41 -0
- package/dist/services/audit/enforcers/lint-prd-source-snapshot.d.ts +27 -0
- package/dist/services/audit/enforcers/lint-prd-source-snapshot.js +47 -0
- package/dist/services/audit/enforcers/lint-qa-gateguard-and-runtime.d.ts +19 -0
- package/dist/services/audit/enforcers/lint-qa-gateguard-and-runtime.js +47 -0
- package/dist/services/audit/enforcers/lint-rd-handoff-coverage.d.ts +18 -0
- package/dist/services/audit/enforcers/lint-rd-handoff-coverage.js +70 -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-skill-presence-mandatory.d.ts +25 -0
- package/dist/services/audit/enforcers/lint-skill-presence-mandatory.js +53 -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 +15 -0
- package/dist/services/audit/red-line-catalog-p2-a.js +458 -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 +67 -0
- package/dist/services/audit/static-service.js +51 -0
- package/dist/services/audit/types.d.ts +86 -0
- package/dist/services/audit/types.js +13 -0
- package/dist/services/audit-independent/index.d.ts +2 -0
- package/dist/services/audit-independent/index.js +2 -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/autonomous-swarm/autonomous-swarm-service.d.ts +127 -0
- package/dist/services/autonomous-swarm/autonomous-swarm-service.js +446 -0
- package/dist/services/changeset/changeset-check-service.d.ts +22 -0
- package/dist/services/changeset/changeset-check-service.js +47 -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-modes.d.ts +30 -0
- package/dist/services/code/auto-compact-modes.js +38 -0
- package/dist/services/code/auto-compact-orchestrator.d.ts +136 -0
- package/dist/services/code/auto-compact-orchestrator.js +423 -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 +157 -0
- package/dist/services/code/dag-orchestrator.js +409 -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 +36 -0
- package/dist/services/code/status-line-renderer.js +73 -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 +372 -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/compact-history/compact-history-service.d.ts +41 -0
- package/dist/services/compact-history/compact-history-service.js +62 -0
- package/dist/services/compact-statusline/compact-statusline-service.d.ts +16 -0
- package/dist/services/compact-statusline/compact-statusline-service.js +83 -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 +58 -0
- package/dist/services/config/config-service.js +745 -0
- package/dist/services/config/config-types.d.ts +117 -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/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/container/container-lease.d.ts +67 -0
- package/dist/services/container/container-lease.js +135 -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 +72 -0
- package/dist/services/context/auto-compact-dispatcher.js +170 -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 +168 -0
- package/dist/services/context/auto-compact-types.js +43 -0
- package/dist/services/context/build-dispatch-system-prompt.d.ts +75 -0
- package/dist/services/context/build-dispatch-system-prompt.js +117 -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/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/ide-detect.d.ts +4 -0
- package/dist/services/context/ide-detect.js +24 -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 +86 -0
- package/dist/services/context/main-session-monitor.js +119 -0
- package/dist/services/context/memory-index-reader.d.ts +8 -0
- package/dist/services/context/memory-index-reader.js +57 -0
- package/dist/services/context/memory-lru-cache.d.ts +12 -0
- package/dist/services/context/memory-lru-cache.js +60 -0
- package/dist/services/context/memory-preflight-config.d.ts +19 -0
- package/dist/services/context/memory-preflight-config.js +25 -0
- package/dist/services/context/memory-preflight-service.d.ts +19 -0
- package/dist/services/context/memory-preflight-service.js +120 -0
- package/dist/services/context/renderer.d.ts +20 -0
- package/dist/services/context/renderer.js +30 -0
- package/dist/services/context/spillover-store.d.ts +23 -0
- package/dist/services/context/spillover-store.js +155 -0
- package/dist/services/context/spillover-types.d.ts +18 -0
- package/dist/services/context/spillover-types.js +1 -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 +256 -0
- package/dist/services/crystallization/crystallization-service.js +391 -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/crystallization/index.d.ts +13 -0
- package/dist/services/crystallization/index.js +13 -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/await-batch.d.ts +70 -0
- package/dist/services/dispatch/await-batch.js +272 -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 +260 -0
- package/dist/services/dispatch/dispatch-record-writer.js +690 -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 +127 -0
- package/dist/services/dispatch/slice-dag.js +244 -0
- package/dist/services/dispatch/stage-enum.d.ts +27 -0
- package/dist/services/dispatch/stage-enum.js +48 -0
- package/dist/services/dispatch/startup-timeout.d.ts +86 -0
- package/dist/services/dispatch/startup-timeout.js +97 -0
- package/dist/services/dispatch/sub-agent-dispatcher.d.ts +239 -0
- package/dist/services/dispatch/sub-agent-dispatcher.js +333 -0
- package/dist/services/dispatch/test-tool-detection.d.ts +60 -0
- package/dist/services/dispatch/test-tool-detection.js +126 -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/checks/check-id-schema.d.ts +18 -0
- package/dist/services/doctor/doctor-service/checks/check-id-schema.js +64 -0
- package/dist/services/doctor/doctor-service/checks/codegraph-capability.d.ts +14 -0
- package/dist/services/doctor/doctor-service/checks/codegraph-capability.js +69 -0
- package/dist/services/doctor/doctor-service/checks/dist-source-version.d.ts +32 -0
- package/dist/services/doctor/doctor-service/checks/dist-source-version.js +110 -0
- package/dist/services/doctor/doctor-service/checks/gateguard-conflict.d.ts +24 -0
- package/dist/services/doctor/doctor-service/checks/gateguard-conflict.js +164 -0
- package/dist/services/doctor/doctor-service/checks/l3-memory-health.d.ts +16 -0
- package/dist/services/doctor/doctor-service/checks/l3-memory-health.js +57 -0
- package/dist/services/doctor/doctor-service/checks/l3-orphan-sessions.d.ts +19 -0
- package/dist/services/doctor/doctor-service/checks/l3-orphan-sessions.js +66 -0
- package/dist/services/doctor/doctor-service/checks/schema-validity.d.ts +10 -0
- package/dist/services/doctor/doctor-service/checks/schema-validity.js +33 -0
- package/dist/services/doctor/doctor-service/checks/skill-apply-note.d.ts +20 -0
- package/dist/services/doctor/doctor-service/checks/skill-apply-note.js +85 -0
- package/dist/services/doctor/doctor-service/checks/skill-existence.d.ts +13 -0
- package/dist/services/doctor/doctor-service/checks/skill-existence.js +30 -0
- package/dist/services/doctor/doctor-service/checks/skill-name-match.d.ts +10 -0
- package/dist/services/doctor/doctor-service/checks/skill-name-match.js +25 -0
- package/dist/services/doctor/doctor-service/checks/skill-parse.d.ts +10 -0
- package/dist/services/doctor/doctor-service/checks/skill-parse.js +19 -0
- package/dist/services/doctor/doctor-service/checks/skill-presence.d.ts +21 -0
- package/dist/services/doctor/doctor-service/checks/skill-presence.js +75 -0
- package/dist/services/doctor/doctor-service/checks/skill-runbook.d.ts +14 -0
- package/dist/services/doctor/doctor-service/checks/skill-runbook.js +47 -0
- package/dist/services/doctor/doctor-service/checks/statusline-install.d.ts +14 -0
- package/dist/services/doctor/doctor-service/checks/statusline-install.js +32 -0
- package/dist/services/doctor/doctor-service/checks/statusline-runtime.d.ts +13 -0
- package/dist/services/doctor/doctor-service/checks/statusline-runtime.js +30 -0
- package/dist/services/doctor/doctor-service/checks/user-config.d.ts +11 -0
- package/dist/services/doctor/doctor-service/checks/user-config.js +27 -0
- package/dist/services/doctor/doctor-service/checks/workspace-init.d.ts +16 -0
- package/dist/services/doctor/doctor-service/checks/workspace-init.js +34 -0
- package/dist/services/doctor/doctor-service/checks/workspace-layout.d.ts +33 -0
- package/dist/services/doctor/doctor-service/checks/workspace-layout.js +180 -0
- package/dist/services/doctor/doctor-service/index.d.ts +48 -0
- package/dist/services/doctor/doctor-service/index.js +254 -0
- package/dist/services/doctor/doctor-service/plugin-registry.d.ts +41 -0
- package/dist/services/doctor/doctor-service/plugin-registry.js +77 -0
- package/dist/services/doctor/doctor-service/report/final-summary.d.ts +20 -0
- package/dist/services/doctor/doctor-service/report/final-summary.js +29 -0
- package/dist/services/doctor/doctor-service/types.d.ts +245 -0
- package/dist/services/doctor/doctor-service/types.js +15 -0
- package/dist/services/doctor/doctor-service.d.ts +18 -0
- package/dist/services/doctor/doctor-service.js +25 -0
- package/dist/services/doctor/index.d.ts +22 -0
- package/dist/services/doctor/index.js +22 -0
- package/dist/services/env/shell-probe.d.ts +71 -0
- package/dist/services/env/shell-probe.js +161 -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/final-review/final-review-service.d.ts +22 -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/final-review/index.d.ts +2 -0
- package/dist/services/final-review/index.js +1 -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 +103 -0
- package/dist/services/hooks/auto-compact-hook-install.js +156 -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/hooks/worktree-authorization-gate.d.ts +205 -0
- package/dist/services/hooks/worktree-authorization-gate.js +492 -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/qoder-adapter.d.ts +25 -0
- package/dist/services/ide/adapters/qoder-adapter.js +57 -0
- package/dist/services/ide/adapters/tongyi-lingma-adapter.d.ts +16 -0
- package/dist/services/ide/adapters/tongyi-lingma-adapter.js +45 -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 +69 -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-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/job-snapshot/index.d.ts +8 -0
- package/dist/services/job-snapshot/index.js +7 -0
- package/dist/services/job-snapshot/snapshot.d.ts +7 -0
- package/dist/services/job-snapshot/snapshot.js +75 -0
- package/dist/services/job-snapshot/types.d.ts +7 -0
- package/dist/services/job-snapshot/types.js +1 -0
- package/dist/services/karpathy-cost/karpathy-cost-check-service.d.ts +67 -0
- package/dist/services/karpathy-cost/karpathy-cost-check-service.js +108 -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 +50 -0
- package/dist/services/log/retention.js +95 -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 +64 -0
- package/dist/services/loop/monotonic-runner.js +270 -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/index/kind-dispatch.d.ts +8 -0
- package/dist/services/memory/project-memory-service/index/kind-dispatch.js +253 -0
- package/dist/services/memory/project-memory-service/index/ranking.d.ts +6 -0
- package/dist/services/memory/project-memory-service/index/ranking.js +171 -0
- package/dist/services/memory/project-memory-service/index/search.d.ts +34 -0
- package/dist/services/memory/project-memory-service/index/search.js +194 -0
- package/dist/services/memory/project-memory-service/index.d.ts +9 -0
- package/dist/services/memory/project-memory-service/index.js +24 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter.d.ts +9 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter.js +106 -0
- package/dist/services/memory/project-memory-service/parsers/markdown-pure.d.ts +7 -0
- package/dist/services/memory/project-memory-service/parsers/markdown-pure.js +96 -0
- package/dist/services/memory/project-memory-service/store/atomic-write.d.ts +5 -0
- package/dist/services/memory/project-memory-service/store/atomic-write.js +56 -0
- package/dist/services/memory/project-memory-service/store/paths.d.ts +8 -0
- package/dist/services/memory/project-memory-service/store/paths.js +116 -0
- package/dist/services/memory/project-memory-service/types.d.ts +128 -0
- package/dist/services/memory/project-memory-service/types.js +9 -0
- package/dist/services/memory/project-memory-service.d.ts +1 -0
- package/dist/services/memory/project-memory-service.js +20 -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/observability/aggregation.d.ts +91 -0
- package/dist/services/observability/aggregation.js +289 -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 +161 -0
- package/dist/services/observability/observability-service.js +205 -0
- package/dist/services/observability/report-formatter.d.ts +42 -0
- package/dist/services/observability/report-formatter.js +156 -0
- package/dist/services/openspec/artifact-boundary.d.ts +138 -0
- package/dist/services/openspec/artifact-boundary.js +150 -0
- package/dist/services/openspec/coverage-evidence-reader.d.ts +191 -0
- package/dist/services/openspec/coverage-evidence-reader.js +386 -0
- package/dist/services/openspec/openspec-archive-service.d.ts +82 -0
- package/dist/services/openspec/openspec-archive-service.js +340 -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 +133 -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 +78 -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 +208 -0
- package/dist/services/preferences/preferences-types.d.ts +161 -0
- package/dist/services/preferences/preferences-types.js +64 -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/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/qa/screenshot-archive-service.d.ts +51 -0
- package/dist/services/qa/screenshot-archive-service.js +134 -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 +440 -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/rd-swarm/rd-swarm-service.d.ts +60 -0
- package/dist/services/rd-swarm/rd-swarm-service.js +93 -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 +139 -0
- package/dist/services/recommendations/capability-seed-mappings.d.ts +2 -0
- package/dist/services/recommendations/capability-seed-mappings.js +53 -0
- package/dist/services/recommendations/capability-seed-sources.d.ts +2 -0
- package/dist/services/recommendations/capability-seed-sources.js +34 -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/release/version-precheck-service.d.ts +51 -0
- package/dist/services/release/version-precheck-service.js +257 -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 +93 -0
- package/dist/services/skill/skill-search-service.js +232 -0
- package/dist/services/skillhub/migrations/001-initial.sql +71 -0
- package/dist/services/skillhub/migrations/002-loop-release.sql +32 -0
- package/dist/services/skillhub/migrations/003-loop-bee-relation.sql +35 -0
- package/dist/services/skillhub/migrations/004-loop-bee-extension.sql +65 -0
- package/dist/services/skillhub/migrations/005-evolution-evaluation.sql +81 -0
- package/dist/services/skillhub/migrations/006-crystallization-event.sql +92 -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 +212 -0
- package/dist/services/skills/hooks-settings-service.js +624 -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 +18 -0
- package/dist/services/skills/skill-registry.js +69 -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/main-session-monitor-ban-hook.d.ts +14 -0
- package/dist/services/standards/main-session-monitor-ban-hook.js +19 -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 +106 -0
- package/dist/services/standards/missing-standards-detector.js +170 -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-change-id-service.d.ts +82 -0
- package/dist/services/tech/tech-change-id-service.js +117 -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 +404 -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/vm/vm-lease.d.ts +40 -0
- package/dist/services/vm/vm-lease.js +137 -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-gate-support.d.ts +47 -0
- package/dist/services/workflow/pipeline-verify-gate-support.js +194 -0
- package/dist/services/workflow/pipeline-verify-service.d.ts +26 -0
- package/dist/services/workflow/pipeline-verify-service.js +273 -0
- package/dist/services/workflow/pipeline-verify-types.d.ts +90 -0
- package/dist/services/workflow/pipeline-verify-types.js +10 -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 +4 -0
- package/dist/services/workflow/workflow-autonomous-service.js +306 -0
- package/dist/services/workflow/workflow-autonomous-types.d.ts +114 -0
- package/dist/services/workflow/workflow-autonomous-types.js +21 -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 +235 -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-lint.d.ts +13 -0
- package/dist/services/workflow/workflow-spec-lint.js +75 -0
- package/dist/services/workflow/workflow-spec-types.d.ts +100 -0
- package/dist/services/workflow/workflow-spec-types.js +13 -0
- package/dist/services/workflow/workflow-spec-yaml.d.ts +17 -0
- package/dist/services/workflow/workflow-spec-yaml.js +88 -0
- package/dist/services/workflow/workflow-spec.d.ts +36 -0
- package/dist/services/workflow/workflow-spec.js +302 -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/services/worktree/worktree-lease.d.ts +170 -0
- package/dist/services/worktree/worktree-lease.js +242 -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/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/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/stale-policy.d.ts +67 -0
- package/dist/shared/stale-policy.js +85 -0
- package/dist/skills/peaks-maker/index.d.ts +5 -0
- package/dist/skills/peaks-maker/index.js +32 -0
- package/package.json +51 -54
- package/scripts/clean-dist.mjs +31 -1
- package/scripts/copy-templates.mjs +17 -1
- package/scripts/sync-version.mjs +53 -2
- package/skills/bee/peaks-perf-audit/SKILL.md +17 -0
- package/skills/bee/peaks-prd/SKILL.md +16 -0
- package/skills/bee/peaks-prd/test-prompts.json +12 -0
- package/skills/bee/peaks-qa/SKILL.md +16 -1
- package/skills/bee/peaks-qa/references/qa-sub-agent-dispatch.md +22 -0
- package/skills/bee/peaks-qa/test-prompts.json +12 -0
- package/skills/bee/peaks-rd/SKILL.md +29 -20
- package/skills/bee/peaks-rd/references/rd-sub-agent-dispatch.md +39 -0
- package/skills/bee/peaks-rd/test-prompts.json +12 -0
- package/skills/bee/peaks-reviewer/SKILL.md +17 -0
- package/skills/bee/peaks-sc/SKILL.md +16 -0
- package/skills/bee/peaks-security-audit/SKILL.md +17 -0
- package/skills/bee/peaks-txt/SKILL.md +16 -0
- package/skills/bee/peaks-txt/test-prompts.json +12 -0
- package/skills/bee/peaks-ui/SKILL.md +49 -43
- package/skills/bee/peaks-ui/test-prompts.json +12 -0
- package/skills/peaks-code/SKILL.md +54 -109
- package/skills/peaks-code/references/boundaries.md +15 -1
- package/skills/peaks-code/references/cron-scheduler-deployment.md +313 -0
- package/skills/peaks-code/references/external-skill-invocation.md +27 -0
- package/skills/peaks-code/references/lease-dashboard.html +224 -0
- package/skills/peaks-code/references/lease-stats.sample.json +26 -0
- package/skills/peaks-code/references/peaks-worktree-l2-enforcers.md +208 -0
- package/skills/peaks-code/references/periodic-checkpoint.md +4 -4
- package/skills/peaks-code/references/runbook.md +63 -1
- package/skills/peaks-code/references/startup-sequence.md +110 -0
- package/skills/peaks-code/references/step-0-8-gate.md +1 -1
- package/skills/peaks-code/references/sub-agent-dispatch.md +92 -1
- package/skills/peaks-code/references/worktree-governance.md +123 -0
- package/skills/peaks-code/test-prompts.json +12 -0
- package/skills/peaks-doctor/SKILL.md +1 -1
- package/skills/peaks-ide/SKILL.md +1 -1
- package/skills/peaks-solo/SKILL.md +21 -0
- package/skills/peaks-solo/references/triage-decision-table.md +6 -0
- package/skills/peaks-sop/test-prompts.json +17 -0
- package/examples/video-demo/README.md +0 -142
- package/examples/video-demo/out/en-closing-960.png +0 -0
- package/examples/video-demo/out/zh-closing-960.png +0 -0
- package/examples/video-demo/preview/peaks-loop-demo-en.mp4 +0 -0
- package/examples/video-demo/preview/peaks-loop-demo.mp4 +0 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* G6.4 / RL-16 — heartbeat truncation helper.
|
|
3
|
+
*
|
|
4
|
+
* Each dispatch record keeps an append-only `heartbeats[]` array so
|
|
5
|
+
* reducers / auditors can reconstruct what the sub-agent did. Without
|
|
6
|
+
* a cap, a long-running sub-agent can blow the record JSON past 1 MB
|
|
7
|
+
* (a 30s cadence over a 1-hour run = 120 entries * ~120 bytes = ~14 KB;
|
|
8
|
+
* a 5s cadence over 24h = 17 000 entries * ~120 bytes = ~2 MB). The
|
|
9
|
+
* 100-entry cap is LLM-friendly: stale heartbeats are not informative
|
|
10
|
+
* once the poller has read them, so dropping the oldest ones is a
|
|
11
|
+
* non-event.
|
|
12
|
+
*
|
|
13
|
+
* Pure helper; no IO. The writer in `dispatch-record-writer.ts` calls
|
|
14
|
+
* this on every `appendHeartbeat`. Exposed as a separate module so
|
|
15
|
+
* tests can pin the contract.
|
|
16
|
+
*/
|
|
17
|
+
import type { Heartbeat } from './dispatch-record-writer.js';
|
|
18
|
+
export declare const HEARTBEAT_TRUNCATE_LIMIT = 100;
|
|
19
|
+
export interface TruncationResult {
|
|
20
|
+
readonly heartbeats: readonly Heartbeat[];
|
|
21
|
+
readonly truncated: boolean;
|
|
22
|
+
/** The number of entries dropped by this truncation. */
|
|
23
|
+
readonly dropped: number;
|
|
24
|
+
}
|
|
25
|
+
/** Apply the 100-entry cap. Returns the most recent N entries + a flag. */
|
|
26
|
+
export declare function truncateHeartbeats(entries: readonly Heartbeat[]): TruncationResult;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export const HEARTBEAT_TRUNCATE_LIMIT = 100;
|
|
2
|
+
/** Apply the 100-entry cap. Returns the most recent N entries + a flag. */
|
|
3
|
+
export function truncateHeartbeats(entries) {
|
|
4
|
+
if (entries.length <= HEARTBEAT_TRUNCATE_LIMIT) {
|
|
5
|
+
return { heartbeats: [...entries], truncated: false, dropped: 0 };
|
|
6
|
+
}
|
|
7
|
+
const start = entries.length - HEARTBEAT_TRUNCATE_LIMIT;
|
|
8
|
+
return {
|
|
9
|
+
heartbeats: entries.slice(start),
|
|
10
|
+
truncated: true,
|
|
11
|
+
dropped: start
|
|
12
|
+
};
|
|
13
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type DispatchRecord } from './dispatch-record-writer.js';
|
|
2
|
+
export declare const DEFAULT_LEAK_THRESHOLD_MS: number;
|
|
3
|
+
export interface LeakedRecord {
|
|
4
|
+
readonly path: string;
|
|
5
|
+
readonly record: DispatchRecord;
|
|
6
|
+
readonly ageMs: number;
|
|
7
|
+
}
|
|
8
|
+
export declare function findLeakedDispatchRecords(projectRoot: string, sessionId: string, options?: {
|
|
9
|
+
now?: () => Date;
|
|
10
|
+
thresholdMs?: number;
|
|
11
|
+
}): readonly LeakedRecord[];
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slice #009 / G5 RL-7 — dispatch record leak detector.
|
|
3
|
+
*
|
|
4
|
+
* After peaks-code's reducer consumes a batch, any dispatch record that
|
|
5
|
+
* is still `disposed === false` AND was created more than `thresholdMs`
|
|
6
|
+
* ago is a **leak**. This helper scans the on-disk records under
|
|
7
|
+
* `.peaks/_sub_agents/<sid>/` and returns the leaked ones. The CLI or
|
|
8
|
+
* the reducer's next-batch step emits a user-visible warning when the
|
|
9
|
+
* list is non-empty.
|
|
10
|
+
*
|
|
11
|
+
* Threshold: 1h (configurable). Rationale: the longest empirical
|
|
12
|
+
* peaks-rd / peaks-qa fan-out + reducer cycle is < 60s; the threshold
|
|
13
|
+
* gives slow slices headroom without hiding leaks for the next session.
|
|
14
|
+
*/
|
|
15
|
+
import { existsSync, readdirSync, readFileSync } from 'node:fs';
|
|
16
|
+
import { join } from 'node:path';
|
|
17
|
+
import { isDispatchStatus, isOutcome } from './dispatch-record-writer.js';
|
|
18
|
+
export const DEFAULT_LEAK_THRESHOLD_MS = 60 * 60 * 1000; // 1 hour
|
|
19
|
+
export function findLeakedDispatchRecords(projectRoot, sessionId, options = {}) {
|
|
20
|
+
const now = options.now ?? (() => new Date());
|
|
21
|
+
const thresholdMs = options.thresholdMs ?? DEFAULT_LEAK_THRESHOLD_MS;
|
|
22
|
+
const nowMs = now().getTime();
|
|
23
|
+
const dir = join(projectRoot, '.peaks', '_sub_agents', sessionId);
|
|
24
|
+
if (!existsSync(dir))
|
|
25
|
+
return [];
|
|
26
|
+
const out = [];
|
|
27
|
+
for (const entry of readdirSync(dir)) {
|
|
28
|
+
if (!entry.startsWith('dispatch-') || !entry.endsWith('.json'))
|
|
29
|
+
continue;
|
|
30
|
+
const fullPath = join(dir, entry);
|
|
31
|
+
let raw;
|
|
32
|
+
try {
|
|
33
|
+
raw = readFileSync(fullPath, 'utf8');
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
continue; // skip unreadable files
|
|
37
|
+
}
|
|
38
|
+
let parsed;
|
|
39
|
+
try {
|
|
40
|
+
parsed = JSON.parse(raw);
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
continue; // skip malformed files
|
|
44
|
+
}
|
|
45
|
+
if (!isRecordShape(parsed))
|
|
46
|
+
continue;
|
|
47
|
+
if (parsed.disposed === true)
|
|
48
|
+
continue;
|
|
49
|
+
const createdMs = Date.parse(parsed.createdAt);
|
|
50
|
+
if (Number.isNaN(createdMs))
|
|
51
|
+
continue;
|
|
52
|
+
const ageMs = nowMs - createdMs;
|
|
53
|
+
if (ageMs < thresholdMs)
|
|
54
|
+
continue;
|
|
55
|
+
out.push({ path: fullPath, record: parsed, ageMs });
|
|
56
|
+
}
|
|
57
|
+
return out;
|
|
58
|
+
}
|
|
59
|
+
function isRecordShape(v) {
|
|
60
|
+
if (typeof v !== 'object' || v === null)
|
|
61
|
+
return false;
|
|
62
|
+
const obj = v;
|
|
63
|
+
return (typeof obj.createdAt === 'string' &&
|
|
64
|
+
typeof obj.role === 'string' &&
|
|
65
|
+
typeof obj.requestId === 'string' &&
|
|
66
|
+
typeof obj.sessionId === 'string' &&
|
|
67
|
+
typeof obj.prompt === 'string' &&
|
|
68
|
+
isOutcome(obj.outcome) &&
|
|
69
|
+
isDispatchStatus(obj.status) &&
|
|
70
|
+
typeof obj.disposed === 'boolean' &&
|
|
71
|
+
Array.isArray(obj.artifactPaths));
|
|
72
|
+
}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slice complexity tier (v2.15.0 follow-up, G2 in 12 Gaps).
|
|
3
|
+
* Used by Code to schedule complex slices during user-attended hours
|
|
4
|
+
* and trivial / simple slices overnight.
|
|
5
|
+
*/
|
|
6
|
+
export type SliceComplexity = 'trivial' | 'simple' | 'complex';
|
|
7
|
+
export declare const SLICE_COMPLEXITIES: readonly SliceComplexity[];
|
|
8
|
+
export declare function isSliceComplexity(value: string): value is SliceComplexity;
|
|
9
|
+
export interface SliceNode {
|
|
10
|
+
readonly id: string;
|
|
11
|
+
readonly role: string;
|
|
12
|
+
/** Human-readable label, optional. */
|
|
13
|
+
readonly label?: string;
|
|
14
|
+
/** Optional prompt override; dispatch falls back to a default placeholder. */
|
|
15
|
+
readonly prompt?: string;
|
|
16
|
+
/**
|
|
17
|
+
* v2.15.0 follow-up — G12: foundation slice. Foundation slices run before
|
|
18
|
+
* business slices in the layered DAG. Business slices do NOT wait for
|
|
19
|
+
* ALL foundation slices — they wait only for the foundation subset
|
|
20
|
+
* they declare as `dependsOn`. Optional; default false.
|
|
21
|
+
*/
|
|
22
|
+
readonly foundation?: boolean;
|
|
23
|
+
/**
|
|
24
|
+
* v2.15.0 follow-up — G11: upstream sync slice. Marks a slice that
|
|
25
|
+
* syncs an upstream fork (e.g. hermes) to a new tag. UpstreamSync
|
|
26
|
+
* slices take priority within their topological level. Optional.
|
|
27
|
+
*/
|
|
28
|
+
readonly upstreamSync?: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* v2.15.0 follow-up — G2: complexity tier. Drives Code's scheduling
|
|
31
|
+
* (complex = user-attended, simple/trivial = overnight). Optional.
|
|
32
|
+
*/
|
|
33
|
+
readonly complexity?: SliceComplexity;
|
|
34
|
+
}
|
|
35
|
+
export interface DependsOn {
|
|
36
|
+
readonly from: string;
|
|
37
|
+
readonly to: string;
|
|
38
|
+
}
|
|
39
|
+
export interface SliceDag {
|
|
40
|
+
readonly nodes: readonly SliceNode[];
|
|
41
|
+
readonly edges: readonly DependsOn[];
|
|
42
|
+
}
|
|
43
|
+
/** Thrown by `validateDag` when the graph violates one of the constraints. */
|
|
44
|
+
export declare class InvalidSliceDagError extends Error {
|
|
45
|
+
readonly path?: readonly string[] | undefined;
|
|
46
|
+
readonly code: "INVALID_SLICE_DAG";
|
|
47
|
+
constructor(message: string, path?: readonly string[] | undefined);
|
|
48
|
+
}
|
|
49
|
+
/** Thrown by `topologicalLevels` when the graph has a cycle (defensive). */
|
|
50
|
+
export declare class SliceDagCycleError extends Error {
|
|
51
|
+
readonly cyclePath: readonly string[];
|
|
52
|
+
readonly code: "SLICE_DAG_CYCLE";
|
|
53
|
+
constructor(cyclePath: readonly string[]);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Validate a SliceDag. Throws `InvalidSliceDagError` on the first violation.
|
|
57
|
+
* Pure. Cheap. No I/O.
|
|
58
|
+
*/
|
|
59
|
+
export declare function validateDag(dag: SliceDag): void;
|
|
60
|
+
/**
|
|
61
|
+
* Compute topological levels. Each level is an array of node IDs that can
|
|
62
|
+
* run in parallel. Throws `SliceDagCycleError` on cycle (defensive;
|
|
63
|
+
* `validateDag` should have caught it).
|
|
64
|
+
*
|
|
65
|
+
* Algorithm: Kahn's algorithm. O(V + E).
|
|
66
|
+
*/
|
|
67
|
+
export declare function topologicalLevels(dag: SliceDag): readonly (readonly string[])[];
|
|
68
|
+
/**
|
|
69
|
+
* Return the next set of node IDs that are ready to run given the set of
|
|
70
|
+
* completed node IDs. A node is ready when all of its `from` predecessors
|
|
71
|
+
* are in `completed`.
|
|
72
|
+
*/
|
|
73
|
+
export declare function sliceReadyToRun(dag: SliceDag, completed: ReadonlySet<string>): readonly string[];
|
|
74
|
+
/**
|
|
75
|
+
* Serialize the DAG into a deterministic JSON string. Node IDs are sorted;
|
|
76
|
+
* edges are sorted by `(from, to)`. The result is suitable for SHA-256
|
|
77
|
+
* hashing and for byte-stable diffs.
|
|
78
|
+
*/
|
|
79
|
+
export declare function serializeDag(dag: SliceDag): string;
|
|
80
|
+
/** SHA-256 hash of the serialized DAG. Stable across runs. */
|
|
81
|
+
export declare function hashDag(dag: SliceDag): string;
|
|
82
|
+
/**
|
|
83
|
+
* Knobs for wave planning + artifact-pass behaviour.
|
|
84
|
+
*
|
|
85
|
+
* - `maxConcurrency`: hard cap on how many slices a single Wave can hold.
|
|
86
|
+
* Each topological level is chunked into Waves of at most this many
|
|
87
|
+
* slice IDs (default 6 per `2026-07-28-24h-loop-audit.md` E direction).
|
|
88
|
+
* - `passArtifacts`: when true, each Wave's prompt is augmented with a
|
|
89
|
+
* `WaveArtifact` envelope (contracts of preceding Waves). Default
|
|
90
|
+
* false — the existing `runDag` ancestor-injection path already covers
|
|
91
|
+
* per-slice contract coverage.
|
|
92
|
+
*/
|
|
93
|
+
export interface WaveOptions {
|
|
94
|
+
readonly maxConcurrency: number;
|
|
95
|
+
readonly passArtifacts: boolean;
|
|
96
|
+
}
|
|
97
|
+
/** Default wave options: 6 leaves per wave; artifact-pass off. */
|
|
98
|
+
export declare const DEFAULT_MAX_CONCURRENCY = 6;
|
|
99
|
+
export declare const DEFAULT_WAVE_OPTIONS: WaveOptions;
|
|
100
|
+
/**
|
|
101
|
+
* Artifact envelope emitted when a Wave completes successfully.
|
|
102
|
+
*
|
|
103
|
+
* - `waveIndex`: sequential, 0-based across the whole plan.
|
|
104
|
+
* - `completedLeaves`: slice IDs that finished (`status: 'done'`). Failed
|
|
105
|
+
* or cancelled leaves are NOT included.
|
|
106
|
+
* - `contracts`: per-slice public contract snapshot (sliceId → record).
|
|
107
|
+
* Stored verbatim so a downstream Wave can re-inject this without
|
|
108
|
+
* re-reading the disk-side contract store.
|
|
109
|
+
* - `passedAt`: ISO timestamp of Wave completion (caller-supplied to keep
|
|
110
|
+
* the surface pure).
|
|
111
|
+
*/
|
|
112
|
+
export interface WaveArtifact {
|
|
113
|
+
readonly waveIndex: number;
|
|
114
|
+
readonly completedLeaves: readonly string[];
|
|
115
|
+
readonly contracts: Readonly<Record<string, unknown>>;
|
|
116
|
+
readonly passedAt: string;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* A single dispatch Wave. Holds the slice IDs that must execute together,
|
|
120
|
+
* respecting `WaveOptions.maxConcurrency`. Waves are emitted in
|
|
121
|
+
* topological order; downstream consumers may treat `waveIndex` as a
|
|
122
|
+
* monotonic cursor.
|
|
123
|
+
*/
|
|
124
|
+
export interface Wave {
|
|
125
|
+
readonly waveIndex: number;
|
|
126
|
+
readonly slices: readonly string[];
|
|
127
|
+
}
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slice DAG model — 2.7.0 slice-dag-dispatcher MVP (slice 1.2.a).
|
|
3
|
+
*
|
|
4
|
+
* Pure function module. No I/O. No external state.
|
|
5
|
+
*
|
|
6
|
+
* Types:
|
|
7
|
+
* - `SliceNode` — a single unit of work (e.g. "implement CLI dispatch").
|
|
8
|
+
* - `DependsOn` — directed edge from `to` to `from` (i.e. `to` runs after `from`).
|
|
9
|
+
* - `SliceDag` — `{ nodes, edges }`. The graph MUST be a DAG.
|
|
10
|
+
*
|
|
11
|
+
* Constraints (validated by `validateDag`):
|
|
12
|
+
* 1. No cycles.
|
|
13
|
+
* 2. Node IDs are globally unique.
|
|
14
|
+
* 3. Every edge endpoints reference existing node IDs.
|
|
15
|
+
* 4. Node `role` is a non-empty string (whitelist hint, not a strict check).
|
|
16
|
+
*
|
|
17
|
+
* Why this lives outside `sub-agent-dispatcher.ts`:
|
|
18
|
+
* The dispatcher is a per-IDE adapter; the DAG is a logical plan. Keeping
|
|
19
|
+
* them split keeps the adapter file IDE-shape-focused and the DAG file
|
|
20
|
+
* plan-shape-focused. Both are pure.
|
|
21
|
+
*
|
|
22
|
+
* Hash stability:
|
|
23
|
+
* `serializeDag` sorts nodes by `id` and edges by `(from, to)` so the
|
|
24
|
+
* resulting JSON string is stable across object-literal ordering. The
|
|
25
|
+
* SHA-256 hash is therefore reproducible for the same logical DAG.
|
|
26
|
+
*/
|
|
27
|
+
import { createHash } from 'node:crypto';
|
|
28
|
+
export const SLICE_COMPLEXITIES = [
|
|
29
|
+
'trivial',
|
|
30
|
+
'simple',
|
|
31
|
+
'complex'
|
|
32
|
+
];
|
|
33
|
+
export function isSliceComplexity(value) {
|
|
34
|
+
return SLICE_COMPLEXITIES.includes(value);
|
|
35
|
+
}
|
|
36
|
+
/** Thrown by `validateDag` when the graph violates one of the constraints. */
|
|
37
|
+
export class InvalidSliceDagError extends Error {
|
|
38
|
+
path;
|
|
39
|
+
code = 'INVALID_SLICE_DAG';
|
|
40
|
+
constructor(message, path) {
|
|
41
|
+
super(message);
|
|
42
|
+
this.path = path;
|
|
43
|
+
this.name = 'InvalidSliceDagError';
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/** Thrown by `topologicalLevels` when the graph has a cycle (defensive). */
|
|
47
|
+
export class SliceDagCycleError extends Error {
|
|
48
|
+
cyclePath;
|
|
49
|
+
code = 'SLICE_DAG_CYCLE';
|
|
50
|
+
constructor(cyclePath) {
|
|
51
|
+
super(`cycle detected in slice DAG: ${cyclePath.join(' -> ')}`);
|
|
52
|
+
this.cyclePath = cyclePath;
|
|
53
|
+
this.name = 'SliceDagCycleError';
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Validate a SliceDag. Throws `InvalidSliceDagError` on the first violation.
|
|
58
|
+
* Pure. Cheap. No I/O.
|
|
59
|
+
*/
|
|
60
|
+
export function validateDag(dag) {
|
|
61
|
+
if (!dag || !Array.isArray(dag.nodes) || !Array.isArray(dag.edges)) {
|
|
62
|
+
throw new InvalidSliceDagError('dag must have nodes and edges arrays');
|
|
63
|
+
}
|
|
64
|
+
if (dag.nodes.length === 0) {
|
|
65
|
+
throw new InvalidSliceDagError('dag must have at least one node');
|
|
66
|
+
}
|
|
67
|
+
const seen = new Set();
|
|
68
|
+
for (const n of dag.nodes) {
|
|
69
|
+
if (!n || typeof n.id !== 'string' || n.id.length === 0) {
|
|
70
|
+
throw new InvalidSliceDagError('every node must have a non-empty id');
|
|
71
|
+
}
|
|
72
|
+
if (typeof n.role !== 'string' || n.role.length === 0) {
|
|
73
|
+
throw new InvalidSliceDagError(`node ${n.id} must have a non-empty role`);
|
|
74
|
+
}
|
|
75
|
+
if (seen.has(n.id)) {
|
|
76
|
+
throw new InvalidSliceDagError(`duplicate node id: ${n.id}`);
|
|
77
|
+
}
|
|
78
|
+
seen.add(n.id);
|
|
79
|
+
}
|
|
80
|
+
for (const e of dag.edges) {
|
|
81
|
+
if (!e || typeof e.from !== 'string' || typeof e.to !== 'string') {
|
|
82
|
+
throw new InvalidSliceDagError('every edge must have string from/to');
|
|
83
|
+
}
|
|
84
|
+
if (!seen.has(e.from)) {
|
|
85
|
+
throw new InvalidSliceDagError(`edge references unknown node: ${e.from}`);
|
|
86
|
+
}
|
|
87
|
+
if (!seen.has(e.to)) {
|
|
88
|
+
throw new InvalidSliceDagError(`edge references unknown node: ${e.to}`);
|
|
89
|
+
}
|
|
90
|
+
if (e.from === e.to) {
|
|
91
|
+
throw new InvalidSliceDagError(`self-loop not allowed: ${e.from}`);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// v2.15.0 follow-up — G12: validate optional new fields ONLY when present
|
|
95
|
+
// (老 DAG 不强制要求新字段,保持向后兼容).
|
|
96
|
+
for (const n of dag.nodes) {
|
|
97
|
+
if (n.foundation !== undefined && typeof n.foundation !== 'boolean') {
|
|
98
|
+
throw new InvalidSliceDagError(`node ${n.id} foundation must be boolean when present`);
|
|
99
|
+
}
|
|
100
|
+
if (n.upstreamSync !== undefined && typeof n.upstreamSync !== 'boolean') {
|
|
101
|
+
throw new InvalidSliceDagError(`node ${n.id} upstreamSync must be boolean when present`);
|
|
102
|
+
}
|
|
103
|
+
if (n.complexity !== undefined && !isSliceComplexity(n.complexity)) {
|
|
104
|
+
throw new InvalidSliceDagError(`node ${n.id} complexity must be one of ${SLICE_COMPLEXITIES.join('|')} when present`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
// v2.15.0 follow-up — G12 defensive rule: foundation slice can only
|
|
108
|
+
// depend on another foundation slice. Business depending on foundation
|
|
109
|
+
// is the main use case; foundation depending on business is a smell.
|
|
110
|
+
const foundationSet = new Set(dag.nodes.filter((n) => n.foundation === true).map((n) => n.id));
|
|
111
|
+
for (const e of dag.edges) {
|
|
112
|
+
if (foundationSet.has(e.to) && !foundationSet.has(e.from)) {
|
|
113
|
+
throw new InvalidSliceDagError(`foundation slice ${e.to} cannot depend on non-foundation slice ${e.from}`);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Compute topological levels. Each level is an array of node IDs that can
|
|
119
|
+
* run in parallel. Throws `SliceDagCycleError` on cycle (defensive;
|
|
120
|
+
* `validateDag` should have caught it).
|
|
121
|
+
*
|
|
122
|
+
* Algorithm: Kahn's algorithm. O(V + E).
|
|
123
|
+
*/
|
|
124
|
+
export function topologicalLevels(dag) {
|
|
125
|
+
validateDag(dag);
|
|
126
|
+
const indeg = new Map();
|
|
127
|
+
const adj = new Map();
|
|
128
|
+
// v2.15.0 follow-up — G12: priority sets for foundation / upstreamSync.
|
|
129
|
+
const foundationSet = new Set(dag.nodes.filter((n) => n.foundation === true).map((n) => n.id));
|
|
130
|
+
const upstreamSyncSet = new Set(dag.nodes.filter((n) => n.upstreamSync === true).map((n) => n.id));
|
|
131
|
+
for (const n of dag.nodes) {
|
|
132
|
+
indeg.set(n.id, 0);
|
|
133
|
+
adj.set(n.id, []);
|
|
134
|
+
}
|
|
135
|
+
for (const e of dag.edges) {
|
|
136
|
+
// Edge `from -> to` means `to` depends on `from`; `to` has one more incoming.
|
|
137
|
+
indeg.set(e.to, (indeg.get(e.to) ?? 0) + 1);
|
|
138
|
+
adj.get(e.from)?.push(e.to);
|
|
139
|
+
}
|
|
140
|
+
const levels = [];
|
|
141
|
+
let frontier = dag.nodes.map((n) => n.id).filter((id) => (indeg.get(id) ?? 0) === 0);
|
|
142
|
+
const consumed = new Set();
|
|
143
|
+
while (frontier.length > 0) {
|
|
144
|
+
// v2.15.0 follow-up — G12: sort frontier by (foundation desc,
|
|
145
|
+
// upstreamSync desc, id asc). Stable across calls.
|
|
146
|
+
const sortedFrontier = [...frontier].sort((a, b) => {
|
|
147
|
+
const aF = foundationSet.has(a) ? 1 : 0;
|
|
148
|
+
const bF = foundationSet.has(b) ? 1 : 0;
|
|
149
|
+
if (aF !== bF)
|
|
150
|
+
return bF - aF;
|
|
151
|
+
const aU = upstreamSyncSet.has(a) ? 1 : 0;
|
|
152
|
+
const bU = upstreamSyncSet.has(b) ? 1 : 0;
|
|
153
|
+
if (aU !== bU)
|
|
154
|
+
return bU - aU;
|
|
155
|
+
return a < b ? -1 : a > b ? 1 : 0;
|
|
156
|
+
});
|
|
157
|
+
levels.push(sortedFrontier);
|
|
158
|
+
const next = [];
|
|
159
|
+
for (const id of sortedFrontier) {
|
|
160
|
+
consumed.add(id);
|
|
161
|
+
for (const succ of adj.get(id) ?? []) {
|
|
162
|
+
const d = (indeg.get(succ) ?? 0) - 1;
|
|
163
|
+
indeg.set(succ, d);
|
|
164
|
+
if (d === 0 && !consumed.has(succ)) {
|
|
165
|
+
next.push(succ);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
frontier = next;
|
|
170
|
+
}
|
|
171
|
+
if (consumed.size !== dag.nodes.length) {
|
|
172
|
+
// Find a cycle path for the error message.
|
|
173
|
+
const remaining = dag.nodes.map((n) => n.id).filter((id) => !consumed.has(id));
|
|
174
|
+
throw new SliceDagCycleError(remaining);
|
|
175
|
+
}
|
|
176
|
+
return levels;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Return the next set of node IDs that are ready to run given the set of
|
|
180
|
+
* completed node IDs. A node is ready when all of its `from` predecessors
|
|
181
|
+
* are in `completed`.
|
|
182
|
+
*/
|
|
183
|
+
export function sliceReadyToRun(dag, completed) {
|
|
184
|
+
validateDag(dag);
|
|
185
|
+
const done = new Set(completed);
|
|
186
|
+
const predecessors = new Map();
|
|
187
|
+
for (const n of dag.nodes) {
|
|
188
|
+
predecessors.set(n.id, []);
|
|
189
|
+
}
|
|
190
|
+
for (const e of dag.edges) {
|
|
191
|
+
predecessors.get(e.to)?.push(e.from);
|
|
192
|
+
}
|
|
193
|
+
const ready = [];
|
|
194
|
+
for (const n of dag.nodes) {
|
|
195
|
+
if (done.has(n.id))
|
|
196
|
+
continue;
|
|
197
|
+
const preds = predecessors.get(n.id) ?? [];
|
|
198
|
+
if (preds.every((p) => done.has(p))) {
|
|
199
|
+
ready.push(n.id);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
return ready.sort();
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Serialize the DAG into a deterministic JSON string. Node IDs are sorted;
|
|
206
|
+
* edges are sorted by `(from, to)`. The result is suitable for SHA-256
|
|
207
|
+
* hashing and for byte-stable diffs.
|
|
208
|
+
*/
|
|
209
|
+
export function serializeDag(dag) {
|
|
210
|
+
validateDag(dag);
|
|
211
|
+
const nodes = [...dag.nodes]
|
|
212
|
+
.sort((a, b) => (a.id < b.id ? -1 : a.id > b.id ? 1 : 0))
|
|
213
|
+
.map((n) => ({
|
|
214
|
+
id: n.id,
|
|
215
|
+
role: n.role,
|
|
216
|
+
...(n.label !== undefined ? { label: n.label } : {}),
|
|
217
|
+
...(n.prompt !== undefined ? { prompt: n.prompt } : {}),
|
|
218
|
+
// v2.15.0 follow-up — G12: include new fields in serialization
|
|
219
|
+
// (only when present, preserving hash stability for old DAGs).
|
|
220
|
+
...(n.foundation !== undefined ? { foundation: n.foundation } : {}),
|
|
221
|
+
...(n.upstreamSync !== undefined ? { upstreamSync: n.upstreamSync } : {}),
|
|
222
|
+
...(n.complexity !== undefined ? { complexity: n.complexity } : {})
|
|
223
|
+
}));
|
|
224
|
+
const edges = [...dag.edges]
|
|
225
|
+
.sort((a, b) => {
|
|
226
|
+
if (a.from !== b.from)
|
|
227
|
+
return a.from < b.from ? -1 : 1;
|
|
228
|
+
if (a.to !== b.to)
|
|
229
|
+
return a.to < b.to ? -1 : 1;
|
|
230
|
+
return 0;
|
|
231
|
+
})
|
|
232
|
+
.map((e) => ({ from: e.from, to: e.to }));
|
|
233
|
+
return JSON.stringify({ nodes, edges });
|
|
234
|
+
}
|
|
235
|
+
/** SHA-256 hash of the serialized DAG. Stable across runs. */
|
|
236
|
+
export function hashDag(dag) {
|
|
237
|
+
return createHash('sha256').update(serializeDag(dag)).digest('hex');
|
|
238
|
+
}
|
|
239
|
+
/** Default wave options: 6 leaves per wave; artifact-pass off. */
|
|
240
|
+
export const DEFAULT_MAX_CONCURRENCY = 6;
|
|
241
|
+
export const DEFAULT_WAVE_OPTIONS = {
|
|
242
|
+
maxConcurrency: DEFAULT_MAX_CONCURRENCY,
|
|
243
|
+
passArtifacts: false
|
|
244
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slice 2026-07-29-dispatch-stall-governance / S5 — bounded stage
|
|
3
|
+
* vocabulary.
|
|
4
|
+
*
|
|
5
|
+
* Why a bounded enum (not a free-form string):
|
|
6
|
+
* - a free-form `stage` recreates the `note` field, which already
|
|
7
|
+
* exists and did not solve visibility.
|
|
8
|
+
* - the watch surface renders a stage label inline (`role 30%
|
|
9
|
+
* (5s ago) [planning]`); an unbounded vocabulary would let typos
|
|
10
|
+
* and near-duplicates spread across the swarm.
|
|
11
|
+
* - the LLM-side runner can validate the stage at write time
|
|
12
|
+
* (`setStage` rejects unknown values with `INVALID_STAGE`).
|
|
13
|
+
*
|
|
14
|
+
* The enum is intentionally small and stable. Adding a new stage is a
|
|
15
|
+
* deliberate code change (this file + the `setStage` validation) so a
|
|
16
|
+
* future user cannot accidentally flood the watch with `awaiting-coffee`
|
|
17
|
+
* or `idk`.
|
|
18
|
+
*
|
|
19
|
+
* `null` is NOT a stage — it is the absence of a stage. Records that
|
|
20
|
+
* have not yet been promoted carry `stage: null`; the watch surface
|
|
21
|
+
* renders no marker.
|
|
22
|
+
*/
|
|
23
|
+
export declare const STAGE_LABELS: readonly ["intake", "planning", "gathering", "analyzing", "writing", "testing", "reviewing", "finalizing"];
|
|
24
|
+
export type StageLabel = (typeof STAGE_LABELS)[number];
|
|
25
|
+
export declare const DEFAULT_STAGE_LABELS: readonly StageLabel[];
|
|
26
|
+
export declare function isStageLabel(value: unknown): value is StageLabel;
|
|
27
|
+
export declare function normalizeStage(value: string | null | undefined): StageLabel | null;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slice 2026-07-29-dispatch-stall-governance / S5 — bounded stage
|
|
3
|
+
* vocabulary.
|
|
4
|
+
*
|
|
5
|
+
* Why a bounded enum (not a free-form string):
|
|
6
|
+
* - a free-form `stage` recreates the `note` field, which already
|
|
7
|
+
* exists and did not solve visibility.
|
|
8
|
+
* - the watch surface renders a stage label inline (`role 30%
|
|
9
|
+
* (5s ago) [planning]`); an unbounded vocabulary would let typos
|
|
10
|
+
* and near-duplicates spread across the swarm.
|
|
11
|
+
* - the LLM-side runner can validate the stage at write time
|
|
12
|
+
* (`setStage` rejects unknown values with `INVALID_STAGE`).
|
|
13
|
+
*
|
|
14
|
+
* The enum is intentionally small and stable. Adding a new stage is a
|
|
15
|
+
* deliberate code change (this file + the `setStage` validation) so a
|
|
16
|
+
* future user cannot accidentally flood the watch with `awaiting-coffee`
|
|
17
|
+
* or `idk`.
|
|
18
|
+
*
|
|
19
|
+
* `null` is NOT a stage — it is the absence of a stage. Records that
|
|
20
|
+
* have not yet been promoted carry `stage: null`; the watch surface
|
|
21
|
+
* renders no marker.
|
|
22
|
+
*/
|
|
23
|
+
export const STAGE_LABELS = [
|
|
24
|
+
'intake',
|
|
25
|
+
'planning',
|
|
26
|
+
'gathering',
|
|
27
|
+
'analyzing',
|
|
28
|
+
'writing',
|
|
29
|
+
'testing',
|
|
30
|
+
'reviewing',
|
|
31
|
+
'finalizing'
|
|
32
|
+
];
|
|
33
|
+
export const DEFAULT_STAGE_LABELS = STAGE_LABELS;
|
|
34
|
+
export function isStageLabel(value) {
|
|
35
|
+
return typeof value === 'string' && STAGE_LABELS.includes(value);
|
|
36
|
+
}
|
|
37
|
+
export function normalizeStage(value) {
|
|
38
|
+
if (value === null || value === undefined)
|
|
39
|
+
return null;
|
|
40
|
+
if (typeof value !== 'string')
|
|
41
|
+
return null;
|
|
42
|
+
const trimmed = value.trim();
|
|
43
|
+
if (trimmed.length === 0)
|
|
44
|
+
return null;
|
|
45
|
+
if (isStageLabel(trimmed))
|
|
46
|
+
return trimmed;
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slice 2026-07-29-dispatch-stall-governance / S1 — startup-timeout service.
|
|
3
|
+
*
|
|
4
|
+
* Why a separate module (vs adding the logic inline to
|
|
5
|
+
* `dispatch-record-writer.ts`):
|
|
6
|
+
* - the writer is the on-disk format owner; the eval logic is a small
|
|
7
|
+
* pure function over a `DispatchRecord` snapshot.
|
|
8
|
+
* - keeps the writer surface unchanged (no extra `markStartupTimeout`
|
|
9
|
+
* method) so other consumers (heartbeat, watch, batch poller) do not
|
|
10
|
+
* have to learn a new mutation API.
|
|
11
|
+
* - a future `markStartupTimeout` writer helper, if added, would import
|
|
12
|
+
* this module's STARTUP_OUTCOME / DEFAULT_STARTUP_BUDGET_MS so the
|
|
13
|
+
* CLI help text and the eval share a single source of truth.
|
|
14
|
+
*
|
|
15
|
+
* Contract (see tests/unit/dispatch/startup-timeout.test.ts for the
|
|
16
|
+
* pinned assertions):
|
|
17
|
+
*
|
|
18
|
+
* evaluateStartupTimeout(record, now, opts) → StartupTimeoutEvaluation
|
|
19
|
+
*
|
|
20
|
+
* - `outcome: 'within-budget' | 'never-started' | 'unreadable'`
|
|
21
|
+
* - `targetStatus: DispatchRecordStatus` — the status to write when
|
|
22
|
+
* `marked === true`. Distinct from `stale` (heartbeat seen, gone
|
|
23
|
+
* quiet) and from `no-execution` (the pre-slice silent default).
|
|
24
|
+
* - `marked: boolean` — whether the caller should write
|
|
25
|
+
* `targetStatus` to the record.
|
|
26
|
+
* - `reason: string` — short human-readable rationale, rendered in
|
|
27
|
+
* the watcher text line and in the dispatch envelope's
|
|
28
|
+
* `notes[]`.
|
|
29
|
+
*
|
|
30
|
+
* DEFAULT_STARTUP_BUDGET_MS = 60_000
|
|
31
|
+
* - 1 order of magnitude above the measured 4–6s cold-start figure
|
|
32
|
+
* from .peaks/memory/2026-07-28-sub-agent-visibility-issue.md
|
|
33
|
+
* - well below the 5-minute heartbeat stale threshold so this
|
|
34
|
+
* fires first
|
|
35
|
+
* - configurable via opts.budgetMs
|
|
36
|
+
*
|
|
37
|
+
* STARTUP_OUTCOME = { NEVER_STARTED: 'never-started', UNREADABLE:
|
|
38
|
+
* 'unreadable' }
|
|
39
|
+
* - exported so the CLI help text, the watch command, and the
|
|
40
|
+
* reader's legacy fallback all reference the same strings.
|
|
41
|
+
*/
|
|
42
|
+
import type { DispatchRecord, DispatchRecordStatus } from './dispatch-record-writer.js';
|
|
43
|
+
/**
|
|
44
|
+
* Default budget: 60s. 1 order of magnitude above the measured 4–6s
|
|
45
|
+
* cold-start figure from .peaks/memory/2026-07-28-sub-agent-visibility-
|
|
46
|
+
* issue.md; well below the 5-min heartbeat stale threshold so this
|
|
47
|
+
* fires first.
|
|
48
|
+
*/
|
|
49
|
+
export declare const DEFAULT_STARTUP_BUDGET_MS = 60000;
|
|
50
|
+
/**
|
|
51
|
+
* String constants for the new terminal statuses. Distinct from the
|
|
52
|
+
* pre-slice `stale` (heartbeat seen, then quiet) and `no-execution`
|
|
53
|
+
* (legacy silent fallback). These are added to the writer's
|
|
54
|
+
* `DispatchRecordStatus` union in the same slice; the constants here
|
|
55
|
+
* are the canonical source so the CLI help / watch / writer all
|
|
56
|
+
* reference the same strings.
|
|
57
|
+
*/
|
|
58
|
+
export declare const STARTUP_OUTCOME: {
|
|
59
|
+
readonly NEVER_STARTED: "never-started";
|
|
60
|
+
readonly UNREADABLE: "unreadable";
|
|
61
|
+
};
|
|
62
|
+
export type StartupTimeoutOutcome = 'within-budget' | 'never-started' | 'unreadable';
|
|
63
|
+
export interface StartupTimeoutOptions {
|
|
64
|
+
/** Override the default 60s budget. */
|
|
65
|
+
readonly budgetMs?: number;
|
|
66
|
+
/**
|
|
67
|
+
* Test seam: when true, the record is treated as if its body is
|
|
68
|
+
* corrupt (status field unparseable). The function returns
|
|
69
|
+
* `{ outcome: 'unreadable', ... }` and recommends writing the
|
|
70
|
+
* `unreadable` status. The CLI never sets this; the read path does.
|
|
71
|
+
*/
|
|
72
|
+
readonly corrupt?: boolean;
|
|
73
|
+
}
|
|
74
|
+
export interface StartupTimeoutEvaluation {
|
|
75
|
+
readonly outcome: StartupTimeoutOutcome;
|
|
76
|
+
readonly marked: boolean;
|
|
77
|
+
readonly targetStatus: DispatchRecordStatus;
|
|
78
|
+
readonly reason: string;
|
|
79
|
+
readonly ageMs: number;
|
|
80
|
+
readonly budgetMs: number;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Pure eval. Returns a typed triple; the caller decides whether to
|
|
84
|
+
* write `targetStatus` to the record.
|
|
85
|
+
*/
|
|
86
|
+
export declare function evaluateStartupTimeout(record: DispatchRecord, now?: () => Date, options?: StartupTimeoutOptions): StartupTimeoutEvaluation;
|