peaks-loop 4.0.54 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +36 -0
- package/README-en.md +16 -1
- package/README.md +15 -1
- package/config/eslint/.peaks-rules.cjs +158 -13
- package/config/eslint/tsconfig.lint.json +47 -0
- package/dist/cli/cli-envelope.d.ts +114 -0
- package/dist/cli/cli-envelope.js +85 -0
- package/dist/cli/cli-helpers.d.ts +1 -1
- package/dist/cli/cli-helpers.js +8 -4
- package/dist/cli/commands/_cli-error-envelope.js +1 -1
- package/dist/cli/commands/_register.js +85 -38
- package/dist/cli/commands/_super.js +40 -7
- package/dist/cli/commands/adapter-commands-s2a.js +8 -7
- package/dist/cli/commands/adapter-commands.d.ts +2 -2
- package/dist/cli/commands/adapter-commands.js +7 -8
- package/dist/cli/commands/api-diff-commands.js +5 -4
- package/dist/cli/commands/asset-commands.d.ts +2 -2
- package/dist/cli/commands/asset-commands.js +135 -132
- package/dist/cli/commands/audit-commands.d.ts +1 -1
- package/dist/cli/commands/audit-commands.js +75 -32
- package/dist/cli/commands/autonomous-swarm-commands.d.ts +1 -1
- package/dist/cli/commands/autonomous-swarm-commands.js +14 -8
- package/dist/cli/commands/baseline-commands.js +34 -9
- package/dist/cli/commands/bee-commands.d.ts +1 -1
- package/dist/cli/commands/bee-commands.js +18 -21
- package/dist/cli/commands/best-practice-scan-command.js +6 -34
- package/dist/cli/commands/best-practice-scan-helpers.d.ts +12 -0
- package/dist/cli/commands/best-practice-scan-helpers.js +37 -0
- package/dist/cli/commands/capability-commands.d.ts +1 -1
- package/dist/cli/commands/capability-commands.js +14 -4
- package/dist/cli/commands/capability-worker-config-sc-commands.d.ts +1 -1
- package/dist/cli/commands/changeset-commands.js +21 -18
- package/dist/cli/commands/code-gate-command.js +9 -2
- package/dist/cli/commands/code-job-shape-commands-read-job-shape.d.ts +15 -0
- package/dist/cli/commands/code-job-shape-commands-read-job-shape.js +70 -0
- package/dist/cli/commands/code-job-shape-commands.js +21 -45
- package/dist/cli/commands/code-mode-gate-commands.d.ts +15 -1
- package/dist/cli/commands/code-mode-gate-commands.js +19 -199
- package/dist/cli/commands/code-mode-gate-plan-command.d.ts +14 -0
- package/dist/cli/commands/code-mode-gate-plan-command.js +23 -0
- package/dist/cli/commands/code-mode-gate-should-pause-command.d.ts +24 -0
- package/dist/cli/commands/code-mode-gate-should-pause-command.js +137 -0
- package/dist/cli/commands/code-mode-gate-should-pause-envelope.d.ts +59 -0
- package/dist/cli/commands/code-mode-gate-should-pause-envelope.js +144 -0
- package/dist/cli/commands/code-orchestrator-can-do.js +4 -4
- package/dist/cli/commands/code-review-commands.js +18 -3
- package/dist/cli/commands/code-run-command.js +44 -7
- package/dist/cli/commands/code-runtime-commands.d.ts +17 -0
- package/dist/cli/commands/code-runtime-commands.js +105 -73
- package/dist/cli/commands/codegraph-commands.js +11 -6
- package/dist/cli/commands/codegraph-status-command.js +6 -2
- package/dist/cli/commands/compact-command.js +52 -26
- package/dist/cli/commands/complexity-commands.js +6 -7
- package/dist/cli/commands/config-commands.d.ts +1 -1
- package/dist/cli/commands/config-commands.js +33 -9
- package/dist/cli/commands/container-commands.js +39 -15
- package/dist/cli/commands/context-commands.d.ts +1 -1
- package/dist/cli/commands/context-commands.js +40 -13
- package/dist/cli/commands/core/artifacts-command.js +11 -3
- package/dist/cli/commands/core/binding-commands.js +9 -6
- package/dist/cli/commands/core/doctor-command.js +7 -4
- package/dist/cli/commands/core/memory-command.js +47 -21
- package/dist/cli/commands/core/proxy-command.js +3 -1
- package/dist/cli/commands/core/session-command.js +16 -8
- package/dist/cli/commands/core/skill-command.js +31 -16
- package/dist/cli/commands/core/standards-command.js +55 -13
- package/dist/cli/commands/cron-commands-actions.d.ts +43 -0
- package/dist/cli/commands/cron-commands-actions.js +128 -0
- package/dist/cli/commands/cron-commands-schedule.d.ts +86 -0
- package/dist/cli/commands/cron-commands-schedule.js +151 -0
- package/dist/cli/commands/cron-commands.d.ts +35 -32
- package/dist/cli/commands/cron-commands.js +167 -211
- package/dist/cli/commands/cron-scheduler-commands.js +40 -20
- package/dist/cli/commands/cron-scheduler-persist.d.ts +110 -0
- package/dist/cli/commands/cron-scheduler-persist.js +171 -0
- package/dist/cli/commands/dashboard-long-run.js +45 -14
- package/dist/cli/commands/dashboard-summary.js +15 -5
- package/dist/cli/commands/dispatch-commands.js +65 -32
- package/dist/cli/commands/dispatch-from-dag.js +9 -10
- package/dist/cli/commands/doc-commands.js +8 -9
- package/dist/cli/commands/doctor/invoke-from-code.js +1 -1
- package/dist/cli/commands/e2e-verify-env.d.ts +19 -0
- package/dist/cli/commands/e2e-verify-env.js +19 -0
- package/dist/cli/commands/e2e-verify.d.ts +3 -14
- package/dist/cli/commands/e2e-verify.js +49 -29
- package/dist/cli/commands/ecc-commands.d.ts +1 -1
- package/dist/cli/commands/ecc-commands.js +8 -17
- package/dist/cli/commands/evidence-commands.js +10 -6
- package/dist/cli/commands/evolution-commands.d.ts +2 -2
- package/dist/cli/commands/evolution-commands.js +109 -115
- package/dist/cli/commands/feedback-commands-helpers.d.ts +22 -0
- package/dist/cli/commands/feedback-commands-helpers.js +33 -0
- package/dist/cli/commands/feedback-commands.js +15 -38
- package/dist/cli/commands/final-review-commands.d.ts +1 -1
- package/dist/cli/commands/final-review-commands.js +24 -22
- package/dist/cli/commands/fixture-commands.d.ts +1 -1
- package/dist/cli/commands/fixture-commands.js +17 -6
- package/dist/cli/commands/fork-commands-sync-verify.d.ts +12 -0
- package/dist/cli/commands/fork-commands-sync-verify.js +72 -0
- package/dist/cli/commands/fork-commands.js +19 -51
- package/dist/cli/commands/fresh-context-commands.js +3 -1
- package/dist/cli/commands/gate-commands-enforce.d.ts +82 -0
- package/dist/cli/commands/gate-commands-enforce.js +210 -0
- package/dist/cli/commands/gate-commands.d.ts +1 -1
- package/dist/cli/commands/gate-commands.js +85 -205
- package/dist/cli/commands/governance-classify-contract-commands.d.ts +1 -1
- package/dist/cli/commands/governance-classify-contract-commands.js +28 -17
- package/dist/cli/commands/heartbeat-commands-action.d.ts +7 -0
- package/dist/cli/commands/heartbeat-commands-action.js +192 -0
- package/dist/cli/commands/heartbeat-commands-validation.d.ts +57 -0
- package/dist/cli/commands/heartbeat-commands-validation.js +120 -0
- package/dist/cli/commands/heartbeat-commands.d.ts +27 -6
- package/dist/cli/commands/heartbeat-commands.js +19 -198
- package/dist/cli/commands/hook-handle.d.ts +1 -1
- package/dist/cli/commands/hook-handle.js +46 -13
- package/dist/cli/commands/hooks-commands.d.ts +1 -1
- package/dist/cli/commands/hooks-commands.js +18 -6
- package/dist/cli/commands/ide-commands.d.ts +1 -1
- package/dist/cli/commands/ide-commands.js +5 -3
- package/dist/cli/commands/impact-commands.js +8 -2
- package/dist/cli/commands/job-add-slice-command.d.ts +43 -0
- package/dist/cli/commands/job-add-slice-command.js +151 -0
- package/dist/cli/commands/job-commands.d.ts +64 -0
- package/dist/cli/commands/job-commands.js +134 -63
- package/dist/cli/commands/lease-metrics-commands-support.d.ts +73 -0
- package/dist/cli/commands/lease-metrics-commands-support.js +67 -0
- package/dist/cli/commands/lease-metrics-commands.d.ts +3 -44
- package/dist/cli/commands/lease-metrics-commands.js +21 -61
- package/dist/cli/commands/lease-stats-commands.d.ts +1 -1
- package/dist/cli/commands/lease-stats-commands.js +9 -6
- package/dist/cli/commands/lint-commands.d.ts +9 -3
- package/dist/cli/commands/lint-commands.js +15 -8
- package/dist/cli/commands/log-commands.d.ts +1 -1
- package/dist/cli/commands/log-commands.js +8 -6
- package/dist/cli/commands/loop-commands.d.ts +1 -1
- package/dist/cli/commands/loop-commands.js +50 -50
- package/dist/cli/commands/loop-eval-commands.d.ts +1 -1
- package/dist/cli/commands/loop-eval-commands.js +101 -30
- package/dist/cli/commands/memory-commands.js +21 -13
- package/dist/cli/commands/migrate-1-4-1-command.js +1 -1
- package/dist/cli/commands/migrate-v2-10-to-v2-11-command.js +2 -2
- package/dist/cli/commands/mut-commands-helpers.d.ts +30 -0
- package/dist/cli/commands/mut-commands-helpers.js +43 -0
- package/dist/cli/commands/mut-commands.js +16 -58
- package/dist/cli/commands/observability-commands-queries.d.ts +37 -0
- package/dist/cli/commands/observability-commands-queries.js +113 -0
- package/dist/cli/commands/observability-commands.d.ts +1 -1
- package/dist/cli/commands/observability-commands.js +7 -92
- package/dist/cli/commands/openspec-commands.d.ts +1 -1
- package/dist/cli/commands/openspec-commands.js +20 -8
- package/dist/cli/commands/outer-cache-commands.js +18 -7
- package/dist/cli/commands/perf-audit-commands.d.ts +1 -1
- package/dist/cli/commands/perf-audit-commands.js +12 -7
- package/dist/cli/commands/perf-commands.d.ts +1 -1
- package/dist/cli/commands/perf-commands.js +5 -5
- package/dist/cli/commands/playwright-commands.d.ts +1 -1
- package/dist/cli/commands/playwright-commands.js +20 -8
- package/dist/cli/commands/polyrepo-commands.js +21 -19
- package/dist/cli/commands/prd-blocks-commands.js +1 -3
- package/dist/cli/commands/prd-commands.d.ts +1 -1
- package/dist/cli/commands/prd-commands.js +8 -4
- package/dist/cli/commands/preferences-commands.js +13 -12
- package/dist/cli/commands/primer-command.js +5 -5
- package/dist/cli/commands/project-commands.d.ts +1 -1
- package/dist/cli/commands/project-commands.js +33 -9
- package/dist/cli/commands/qa-business-review-commands.js +16 -12
- package/dist/cli/commands/qa-commands.d.ts +1 -1
- package/dist/cli/commands/qa-commands.js +3 -5
- package/dist/cli/commands/release-commands.d.ts +3 -1
- package/dist/cli/commands/release-commands.js +33 -22
- package/dist/cli/commands/request-commands.js +47 -30
- package/dist/cli/commands/request-format-helpers.js +1 -1
- package/dist/cli/commands/retrospective-commands.d.ts +18 -11
- package/dist/cli/commands/retrospective-commands.js +24 -173
- package/dist/cli/commands/retrospective-index-command.d.ts +26 -0
- package/dist/cli/commands/retrospective-index-command.js +99 -0
- package/dist/cli/commands/retrospective-project-root.d.ts +9 -0
- package/dist/cli/commands/retrospective-project-root.js +15 -0
- package/dist/cli/commands/retrospective-search-command.d.ts +27 -0
- package/dist/cli/commands/retrospective-search-command.js +97 -0
- package/dist/cli/commands/retrospective-show-command.d.ts +23 -0
- package/dist/cli/commands/retrospective-show-command.js +80 -0
- package/dist/cli/commands/reviewer-commands.d.ts +1 -1
- package/dist/cli/commands/role-commands.js +14 -9
- package/dist/cli/commands/runtime-commands.js +14 -7
- package/dist/cli/commands/sc-commands.d.ts +1 -1
- package/dist/cli/commands/sc-commands.js +39 -6
- package/dist/cli/commands/scan-commands.js +36 -13
- package/dist/cli/commands/security-audit-commands.d.ts +1 -1
- package/dist/cli/commands/security-audit-commands.js +12 -7
- package/dist/cli/commands/sediment-commands.d.ts +2 -2
- package/dist/cli/commands/sediment-commands.js +146 -139
- package/dist/cli/commands/session-24h-mode.js +15 -2
- package/dist/cli/commands/session-checkpoint-command.js +1 -1
- package/dist/cli/commands/session-migrate-skill-name.js +1 -1
- package/dist/cli/commands/shadcn-commands.d.ts +1 -1
- package/dist/cli/commands/shadcn-commands.js +3 -1
- package/dist/cli/commands/share-commands.js +38 -39
- package/dist/cli/commands/skill-conformance-commands.d.ts +1 -1
- package/dist/cli/commands/skill-conformance-commands.js +1 -1
- package/dist/cli/commands/skill-loop-engineering-readiness-commands.js +16 -17
- package/dist/cli/commands/skill-visibility.js +2 -2
- package/dist/cli/commands/slice-commands.d.ts +1 -1
- package/dist/cli/commands/slice-commands.js +36 -12
- package/dist/cli/commands/slice-integrate-commands.js +6 -7
- package/dist/cli/commands/slice-review-commands-helpers.d.ts +26 -0
- package/dist/cli/commands/slice-review-commands-helpers.js +26 -0
- package/dist/cli/commands/slice-review-commands.js +16 -24
- package/dist/cli/commands/smoke-commands-add-path.d.ts +14 -0
- package/dist/cli/commands/smoke-commands-add-path.js +39 -0
- package/dist/cli/commands/smoke-commands-define.d.ts +18 -0
- package/dist/cli/commands/smoke-commands-define.js +97 -0
- package/dist/cli/commands/smoke-commands-run.d.ts +18 -0
- package/dist/cli/commands/smoke-commands-run.js +119 -0
- package/dist/cli/commands/smoke-commands.d.ts +10 -1
- package/dist/cli/commands/smoke-commands.js +17 -179
- package/dist/cli/commands/sop-commands.d.ts +1 -1
- package/dist/cli/commands/sop-commands.js +38 -10
- package/dist/cli/commands/statusline-commands.d.ts +1 -1
- package/dist/cli/commands/statusline-commands.js +21 -10
- package/dist/cli/commands/sub-agent/detached.js +3 -3
- package/dist/cli/commands/sub-agent-dispatch-guard.d.ts +1 -1
- package/dist/cli/commands/sub-agent-shared.js +1 -1
- package/dist/cli/commands/sub-agent-shutdown-commands.js +17 -9
- package/dist/cli/commands/swarm-commands.d.ts +1 -1
- package/dist/cli/commands/swarm-commands.js +13 -6
- package/dist/cli/commands/tech-commands-helpers.d.ts +37 -0
- package/dist/cli/commands/tech-commands-helpers.js +24 -0
- package/dist/cli/commands/tech-commands.d.ts +2 -29
- package/dist/cli/commands/tech-commands.js +15 -28
- package/dist/cli/commands/test-commands.js +27 -7
- package/dist/cli/commands/upgrade-commands.d.ts +1 -1
- package/dist/cli/commands/user-touchpoint-commands.js +1 -3
- package/dist/cli/commands/verdict-aggregate-command.d.ts +1 -1
- package/dist/cli/commands/verdict-aggregate-command.js +20 -7
- package/dist/cli/commands/vm-commands.js +48 -19
- package/dist/cli/commands/wave-plan-commands.js +5 -2
- package/dist/cli/commands/web-commands.js +14 -4
- package/dist/cli/commands/web-lifecycle-commands.js +5 -3
- package/dist/cli/commands/workflow-commands.d.ts +1 -1
- package/dist/cli/commands/workflow-commands.js +64 -29
- package/dist/cli/commands/workflow-lifecycle-commands.js +19 -17
- package/dist/cli/commands/workflow-plan-commands-actions.d.ts +20 -0
- package/dist/cli/commands/workflow-plan-commands-actions.js +115 -0
- package/dist/cli/commands/workflow-plan-commands-session.d.ts +17 -0
- package/dist/cli/commands/workflow-plan-commands-session.js +59 -0
- package/dist/cli/commands/workflow-plan-commands.d.ts +10 -21
- package/dist/cli/commands/workflow-plan-commands.js +15 -141
- package/dist/cli/commands/workspace/clean-command.js +4 -1
- package/dist/cli/commands/workspace/helpers.js +2 -1
- package/dist/cli/commands/workspace/init-command.js +80 -20
- package/dist/cli/commands/workspace/reconcile-command.js +3 -1
- package/dist/cli/commands/workspace-commands.d.ts +1 -1
- package/dist/cli/commands/workspace-commands.js +1 -1
- package/dist/cli/commands/worktree-auth-commands.d.ts +1 -1
- package/dist/cli/commands/worktree-auth-commands.js +16 -169
- package/dist/cli/commands/worktree-auth-grant-command.d.ts +14 -0
- package/dist/cli/commands/worktree-auth-grant-command.js +118 -0
- package/dist/cli/commands/worktree-auth-manage-commands.d.ts +17 -0
- package/dist/cli/commands/worktree-auth-manage-commands.js +128 -0
- package/dist/cli/commands/worktree-lease-commands.d.ts +1 -1
- package/dist/cli/commands/worktree-lease-commands.js +65 -37
- package/dist/cli/index.js +6 -2
- package/dist/cli/program.js +6 -3
- package/dist/hooks/pre-tool-use-sub-agent.js +1 -6
- package/dist/reporters/bdd-reporter.js +9 -3
- package/dist/services/24h-mode/auto-engage.d.ts +19 -0
- package/dist/services/24h-mode/auto-engage.js +35 -0
- package/dist/services/24h-mode/decider.js +5 -1
- package/dist/services/24h-mode/store.js +4 -2
- package/dist/services/adapter/adapter-registry.js +20 -8
- package/dist/services/adapter/adapter.d.ts +2 -2
- package/dist/services/adapter/auto-adapter.d.ts +2 -2
- package/dist/services/adapter/auto-adapter.js +1 -1
- package/dist/services/adapter/claude-adapter.d.ts +1 -1
- package/dist/services/adapter/claude-adapter.js +8 -8
- package/dist/services/adapter/codex-adapter.d.ts +2 -2
- package/dist/services/adapter/codex-adapter.js +20 -8
- package/dist/services/adapter/copilot-adapter.d.ts +2 -2
- package/dist/services/adapter/copilot-adapter.js +20 -8
- package/dist/services/artifacts/artifact-prerequisites.js +10 -8
- package/dist/services/artifacts/artifact-service.js +3 -1
- package/dist/services/artifacts/artifact-template-bodies.d.ts +12 -0
- package/dist/services/artifacts/artifact-template-bodies.js +165 -0
- package/dist/services/artifacts/artifact-templates.js +26 -168
- package/dist/services/artifacts/request-artifact-service.js +14 -7
- package/dist/services/artifacts/request-artifact-state-helpers.d.ts +3 -2
- package/dist/services/artifacts/request-artifact-state-helpers.js +3 -5
- package/dist/services/artifacts/workspace-artifact-helpers.d.ts +28 -0
- package/dist/services/artifacts/workspace-artifact-helpers.js +54 -0
- package/dist/services/artifacts/workspace-service.d.ts +3 -22
- package/dist/services/artifacts/workspace-service.js +10 -60
- package/dist/services/audit/artifact-writer.js +21 -21
- package/dist/services/audit/audit-goal-service.js +2 -2
- package/dist/services/audit/backing-detector.js +7 -4
- package/dist/services/audit/classifier.js +3 -3
- package/dist/services/audit/decision-writer.js +13 -9
- package/dist/services/audit/enforcers/active-skill-resolver.js +15 -7
- package/dist/services/audit/enforcers/design-draft-confirm.js +4 -4
- package/dist/services/audit/enforcers/lint-audit-regression.js +10 -5
- package/dist/services/audit/enforcers/lint-bee-runtime-contract.js +16 -8
- package/dist/services/audit/enforcers/lint-catalog-governance.js +8 -4
- package/dist/services/audit/enforcers/lint-output-style.js +4 -2
- package/dist/services/audit/enforcers/lint-peaks-code-runtime.js +8 -3
- package/dist/services/audit/enforcers/lint-peaks-skill-runtime.js +8 -3
- package/dist/services/audit/enforcers/lint-peaks-ui-sc-txt-runtime.js +20 -20
- package/dist/services/audit/enforcers/lint-prd-artifact-handoff.js +5 -5
- package/dist/services/audit/enforcers/lint-prd-source-snapshot.d.ts +1 -1
- package/dist/services/audit/enforcers/lint-prd-source-snapshot.js +5 -5
- package/dist/services/audit/enforcers/lint-qa-gateguard-and-runtime.js +10 -10
- package/dist/services/audit/enforcers/lint-rd-handoff-coverage.js +10 -8
- package/dist/services/audit/enforcers/lint-reference-shape.js +50 -18
- package/dist/services/audit/enforcers/lint-skill-presence-mandatory.js +5 -5
- package/dist/services/audit/enforcers/lint-style.js +44 -11
- package/dist/services/audit/enforcers/lint-workflow-shape.js +4 -2
- package/dist/services/audit/enforcers/login-gate.js +2 -6
- package/dist/services/audit/enforcers/mock-placement.js +2 -2
- package/dist/services/audit/enforcers/no-root-pollution.js +38 -9
- package/dist/services/audit/enforcers/pre-rd-scan.js +1 -1
- package/dist/services/audit/enforcers/prototype-fidelity.js +1 -1
- package/dist/services/audit/enforcers/resume-detection.js +5 -4
- package/dist/services/audit/prose-ratio-calculator.js +1 -1
- package/dist/services/audit/red-line-catalog-p2-a-bee-runtime.d.ts +39 -0
- package/dist/services/audit/red-line-catalog-p2-a-bee-runtime.js +205 -0
- package/dist/services/audit/red-line-catalog-p2-a-lint-style.d.ts +52 -0
- package/dist/services/audit/red-line-catalog-p2-a-lint-style.js +205 -0
- package/dist/services/audit/red-line-catalog-p2-a.js +3 -374
- package/dist/services/audit/red-line-catalog-p2-b.js +26 -26
- package/dist/services/audit/red-line-catalog.js +26 -38
- package/dist/services/audit/red-lines-service.js +64 -49
- package/dist/services/audit/scanners/openspec-scanner.js +2 -2
- package/dist/services/audit/scanners/rules-tree-scanner.js +2 -2
- package/dist/services/audit/scanners/skills-tree-scanner.js +2 -2
- package/dist/services/audit/static-service.js +3 -3
- package/dist/services/audit-independent/index.d.ts +2 -2
- package/dist/services/audit-independent/index.js +2 -2
- package/dist/services/audit-independent/perf-audit-service.js +19 -8
- package/dist/services/audit-independent/security-audit-service.js +31 -16
- package/dist/services/autonomous-swarm/autonomous-swarm-service.js +75 -46
- package/dist/services/best-practice/output-formatter.js +7 -1
- package/dist/services/capability-audit-service/cross-check.js +11 -5
- package/dist/services/capability-audit-service/runner.js +15 -7
- package/dist/services/capability-baseline/store.js +16 -4
- package/dist/services/capability-baseline/types.js +15 -3
- package/dist/services/capability-baseline/validator.js +43 -7
- package/dist/services/capability-guard-runner/contracts/J02.js +36 -6
- package/dist/services/capability-guard-runner/contracts/J03.js +20 -11
- package/dist/services/capability-guard-runner/contracts/J04.js +24 -15
- package/dist/services/capability-guard-runner/contracts/J05.js +26 -10
- package/dist/services/capability-guard-runner/contracts/J07.js +8 -2
- package/dist/services/capability-guard-runner/contracts/J08.js +22 -5
- package/dist/services/capability-guard-runner/contracts/J10.js +6 -2
- package/dist/services/capability-guard-runner/contracts/J11.d.ts +5 -0
- package/dist/services/capability-guard-runner/contracts/J11.js +14 -2
- package/dist/services/capability-guard-runner/contracts/J12.js +12 -3
- package/dist/services/capability-guard-runner/diff.js +1 -5
- package/dist/services/changeset/changeset-check-service.js +1 -3
- package/dist/services/classify/classify-service.js +20 -8
- package/dist/services/classify/classify-types.js +22 -9
- package/dist/services/code/auto-compact-lifecycle.js +62 -39
- package/dist/services/code/auto-compact-modes.js +2 -2
- package/dist/services/code/auto-compact-orchestrator.js +14 -9
- package/dist/services/code/batch-heartbeat-poller.d.ts +10 -0
- package/dist/services/code/batch-heartbeat-poller.js +17 -1
- package/dist/services/code/compact-event-settle-types.d.ts +80 -0
- package/dist/services/code/compact-event-settle-types.js +20 -0
- package/dist/services/code/compact-event-settle.d.ts +3 -68
- package/dist/services/code/compact-event-settle.js +14 -10
- package/dist/services/code/dag-orchestrator.js +32 -26
- package/dist/services/code/job-shape-decision.js +3 -1
- package/dist/services/code/mode-gate-types.d.ts +57 -0
- package/dist/services/code/mode-gate-types.js +67 -0
- package/dist/services/code/mode-gate.d.ts +4 -58
- package/dist/services/code/mode-gate.js +24 -60
- package/dist/services/code/orchestrator-can-do-advisories.d.ts +30 -0
- package/dist/services/code/orchestrator-can-do-advisories.js +81 -0
- package/dist/services/code/orchestrator-can-do-probes.d.ts +30 -0
- package/dist/services/code/orchestrator-can-do-probes.js +77 -0
- package/dist/services/code/orchestrator-can-do.d.ts +11 -22
- package/dist/services/code/orchestrator-can-do.js +37 -137
- package/dist/services/code/post-compact-checkpoint.d.ts +28 -0
- package/dist/services/code/post-compact-checkpoint.js +57 -0
- package/dist/services/code/post-compact-detector.js +16 -48
- package/dist/services/code/step-08-gate.d.ts +4 -3
- package/dist/services/code/step-08-gate.js +21 -9
- package/dist/services/code-review/ecc-bridge.js +23 -23
- package/dist/services/codegraph/codegraph-autorefresh.js +56 -39
- package/dist/services/codegraph/codegraph-config-repair-writer.js +4 -1
- package/dist/services/codegraph/codegraph-exclude-integrity.js +4 -1
- package/dist/services/codegraph/codegraph-exclude-repair.js +1 -2
- package/dist/services/codegraph/codegraph-index-integrity.js +1 -1
- package/dist/services/codegraph/codegraph-preflight-service.d.ts +3 -26
- package/dist/services/codegraph/codegraph-preflight-service.js +16 -37
- package/dist/services/codegraph/codegraph-preflight-structure.d.ts +32 -0
- package/dist/services/codegraph/codegraph-preflight-structure.js +33 -0
- package/dist/services/codegraph/codegraph-process-runner.js +12 -1
- package/dist/services/codegraph/codegraph-service.js +9 -1
- package/dist/services/compact/request-transition-hook.js +2 -1
- package/dist/services/compact/suggest-service.d.ts +3 -61
- package/dist/services/compact/suggest-service.js +9 -12
- package/dist/services/compact/suggest-types.d.ts +76 -0
- package/dist/services/compact/suggest-types.js +10 -0
- package/dist/services/compact-history/compact-history-service.js +2 -2
- package/dist/services/compact-statusline/compact-lifecycle-store.d.ts +2 -32
- package/dist/services/compact-statusline/compact-lifecycle-store.js +7 -12
- package/dist/services/compact-statusline/compact-lifecycle-types.d.ts +32 -0
- package/dist/services/compact-statusline/compact-lifecycle-types.js +8 -0
- package/dist/services/compact-statusline/compact-statusline-cell-table.d.ts +42 -0
- package/dist/services/compact-statusline/compact-statusline-cell-table.js +63 -0
- package/dist/services/compact-statusline/compact-statusline-service.d.ts +4 -21
- package/dist/services/compact-statusline/compact-statusline-service.js +9 -101
- package/dist/services/compact-statusline/compact-statusline-state.d.ts +4 -0
- package/dist/services/compact-statusline/compact-statusline-state.js +50 -0
- package/dist/services/config/config-migration.js +2 -2
- package/dist/services/config/config-restore.js +1 -1
- package/dist/services/config/config-rollback.js +1 -1
- package/dist/services/config/config-safety.js +28 -10
- package/dist/services/config/config-service.js +114 -31
- package/dist/services/config/model-routing.js +5 -2
- package/dist/services/config/proxy-service.js +6 -1
- package/dist/services/config/workspace-state-service.js +17 -5
- package/dist/services/context/auto-compact-dispatcher-input.d.ts +38 -0
- package/dist/services/context/auto-compact-dispatcher-input.js +9 -0
- package/dist/services/context/auto-compact-dispatcher.d.ts +2 -30
- package/dist/services/context/auto-compact-reader-input.d.ts +30 -0
- package/dist/services/context/auto-compact-reader-input.js +8 -0
- package/dist/services/context/auto-compact-reader.d.ts +2 -24
- package/dist/services/context/auto-compact-reader.js +4 -1
- package/dist/services/context/auto-compact-thresholds.d.ts +54 -0
- package/dist/services/context/auto-compact-thresholds.js +19 -0
- package/dist/services/context/auto-compact-types.d.ts +2 -46
- package/dist/services/context/auto-compact-types.js +1 -11
- package/dist/services/context/build-dispatch-system-prompt.js +2 -2
- package/dist/services/context/collector.js +8 -10
- package/dist/services/context/context-audit-hint.js +7 -5
- package/dist/services/context/context-audit-keys.d.ts +15 -0
- package/dist/services/context/context-audit-keys.js +77 -0
- package/dist/services/context/context-audit-limits.d.ts +20 -0
- package/dist/services/context/context-audit-limits.js +31 -0
- package/dist/services/context/context-audit-scan.d.ts +19 -0
- package/dist/services/context/context-audit-scan.js +246 -0
- package/dist/services/context/context-audit-types.d.ts +65 -0
- package/dist/services/context/context-audit-types.js +10 -0
- package/dist/services/context/context-audit.d.ts +13 -59
- package/dist/services/context/context-audit.js +38 -254
- package/dist/services/context/context-builder.js +4 -4
- package/dist/services/context/context-schema.d.ts +1 -1
- package/dist/services/context/context-schema.js +13 -13
- package/dist/services/context/doc-retriever.js +2 -2
- package/dist/services/context/harness-context-witness.js +43 -24
- package/dist/services/context/harness-window-config.js +27 -7
- package/dist/services/context/ide-detect.js +2 -1
- package/dist/services/context/index.d.ts +1 -1
- package/dist/services/context/memory-index-reader.js +3 -9
- package/dist/services/context/memory-preflight-config.js +3 -5
- package/dist/services/context/memory-preflight-service.d.ts +2 -20
- package/dist/services/context/memory-preflight-service.js +37 -68
- package/dist/services/context/memory-preflight-support.d.ts +48 -0
- package/dist/services/context/memory-preflight-support.js +56 -0
- package/dist/services/context/post-compact-reinjection.js +3 -3
- package/dist/services/context/renderer.js +7 -3
- package/dist/services/context/spillover-store.js +3 -1
- package/dist/services/context/summary-view.js +1 -1
- package/dist/services/context/threshold.js +2 -2
- package/dist/services/context/tokenizer.js +3 -3
- package/dist/services/crystallization/crystallization-brief-schema.d.ts +80 -0
- package/dist/services/crystallization/crystallization-brief-schema.js +159 -0
- package/dist/services/crystallization/crystallization-service.d.ts +7 -7
- package/dist/services/crystallization/crystallization-service.js +56 -55
- package/dist/services/crystallization/crystallization-store.d.ts +2 -2
- package/dist/services/crystallization/crystallization-store.js +37 -20
- package/dist/services/crystallization/crystallization-types.d.ts +4 -56
- package/dist/services/crystallization/crystallization-types.js +31 -184
- package/dist/services/crystallization/evidence-brief-builder.d.ts +3 -3
- package/dist/services/crystallization/evidence-brief-builder.js +32 -38
- package/dist/services/crystallization/index.d.ts +4 -4
- package/dist/services/crystallization/index.js +4 -4
- package/dist/services/dashboard/project-dashboard-service.js +7 -1
- package/dist/services/dispatch/await-batch-helpers.d.ts +55 -0
- package/dist/services/dispatch/await-batch-helpers.js +206 -0
- package/dist/services/dispatch/await-batch.d.ts +50 -7
- package/dist/services/dispatch/await-batch.js +97 -194
- package/dist/services/dispatch/batch-counter.js +2 -1
- package/dist/services/dispatch/conflict-replay.js +2 -2
- package/dist/services/dispatch/contract-store.js +5 -2
- package/dist/services/dispatch/dispatch-record-input-types.d.ts +81 -0
- package/dist/services/dispatch/dispatch-record-input-types.js +1 -0
- package/dist/services/dispatch/dispatch-record-types.d.ts +6 -73
- package/dist/services/dispatch/dispatch-record-upgrade-fields.d.ts +72 -0
- package/dist/services/dispatch/dispatch-record-upgrade-fields.js +242 -0
- package/dist/services/dispatch/dispatch-record-upgrade-guards.d.ts +15 -0
- package/dist/services/dispatch/dispatch-record-upgrade-guards.js +55 -0
- package/dist/services/dispatch/dispatch-record-upgrade.d.ts +2 -4
- package/dist/services/dispatch/dispatch-record-upgrade.js +21 -213
- package/dist/services/dispatch/dispatch-record-writer.js +54 -26
- package/dist/services/dispatch/dispatch-sub-agent.js +7 -2
- package/dist/services/dispatch/e2e-fixtures.js +1 -1
- package/dist/services/dispatch/isolation-lease.js +39 -17
- package/dist/services/dispatch/merge-back-runner.js +51 -11
- package/dist/services/dispatch/service-shutdown.js +4 -1
- package/dist/services/dispatch/slice-dag-types.d.ts +116 -0
- package/dist/services/dispatch/slice-dag-types.js +41 -0
- package/dist/services/dispatch/slice-dag.d.ts +3 -109
- package/dist/services/dispatch/slice-dag.js +13 -36
- package/dist/services/dispatch/sub-agent-batch-await.d.ts +47 -0
- package/dist/services/dispatch/sub-agent-batch-await.js +73 -0
- package/dist/services/dispatch/sub-agent-dispatcher-types.d.ts +122 -0
- package/dist/services/dispatch/sub-agent-dispatcher-types.js +12 -0
- package/dist/services/dispatch/sub-agent-dispatcher.d.ts +3 -145
- package/dist/services/dispatch/sub-agent-dispatcher.js +14 -70
- package/dist/services/dispatch/test-tool-detection.js +12 -1
- package/dist/services/doc/doc-generator.js +19 -4
- package/dist/services/doctor/doctor-service/checks/check-id-schema.js +16 -8
- package/dist/services/doctor/doctor-service/checks/codegraph-capability.d.ts +7 -2
- package/dist/services/doctor/doctor-service/checks/codegraph-capability.js +26 -8
- package/dist/services/doctor/doctor-service/checks/codegraph-exclude-integrity.js +16 -8
- package/dist/services/doctor/doctor-service/checks/codegraph-index-integrity.js +16 -8
- package/dist/services/doctor/doctor-service/checks/dist-source-version.js +18 -9
- package/dist/services/doctor/doctor-service/checks/ecc-hooks-schema-drift.js +20 -10
- package/dist/services/doctor/doctor-service/checks/gateguard-conflict.js +18 -9
- package/dist/services/doctor/doctor-service/checks/l3-memory-health.js +25 -11
- package/dist/services/doctor/doctor-service/checks/l3-orphan-sessions.js +12 -6
- package/dist/services/doctor/doctor-service/checks/multi-binary-drift.d.ts +7 -16
- package/dist/services/doctor/doctor-service/checks/multi-binary-drift.js +50 -70
- package/dist/services/doctor/doctor-service/checks/schema-validity.js +5 -1
- package/dist/services/doctor/doctor-service/checks/skill-presence.js +4 -2
- package/dist/services/doctor/doctor-service/checks/statusline-install.js +8 -4
- package/dist/services/doctor/doctor-service/checks/statusline-runtime.js +8 -4
- package/dist/services/doctor/doctor-service/checks/user-config.js +4 -2
- package/dist/services/doctor/doctor-service/checks/workspace-init.js +8 -4
- package/dist/services/doctor/doctor-service/checks/workspace-layout.js +19 -11
- package/dist/services/doctor/doctor-service/index.js +4 -2
- package/dist/services/doctor/doctor-service/multi-binary-drift-helpers.d.ts +40 -0
- package/dist/services/doctor/doctor-service/multi-binary-drift-helpers.js +49 -0
- package/dist/services/doctor/doctor-service/plugin-registry.js +1 -1
- package/dist/services/doctor/doctor-service/probe-types.d.ts +210 -0
- package/dist/services/doctor/doctor-service/probe-types.js +14 -0
- package/dist/services/doctor/doctor-service/types.d.ts +7 -197
- package/dist/services/doctor/index.d.ts +1 -1
- package/dist/services/doctor/index.js +1 -1
- package/dist/services/env/shell-probe.js +8 -2
- package/dist/services/evidence/evidence-body-builders.d.ts +23 -0
- package/dist/services/evidence/evidence-body-builders.js +197 -0
- package/dist/services/evidence/evidence-generator.js +6 -187
- package/dist/services/evolution/evolution-constraints.d.ts +43 -0
- package/dist/services/evolution/evolution-constraints.js +54 -0
- package/dist/services/evolution/evolution-evaluation-schema.d.ts +43 -0
- package/dist/services/evolution/evolution-evaluation-schema.js +43 -0
- package/dist/services/evolution/evolution-service.d.ts +6 -6
- package/dist/services/evolution/evolution-service.js +58 -58
- package/dist/services/evolution/evolution-store.d.ts +2 -2
- package/dist/services/evolution/evolution-store.js +37 -51
- package/dist/services/evolution/evolution-types.d.ts +2 -22
- package/dist/services/evolution/evolution-types.js +41 -101
- package/dist/services/evolution/independent-evaluator-runner.d.ts +3 -3
- package/dist/services/evolution/independent-evaluator-runner.js +20 -22
- package/dist/services/evolution/regression-skeptic-runner.d.ts +2 -2
- package/dist/services/evolution/regression-skeptic-runner.js +18 -18
- package/dist/services/feedback/feedback-promotion-service.js +48 -12
- package/dist/services/feedback/promotion-artifact-evidence.d.ts +2 -16
- package/dist/services/feedback/promotion-artifact-evidence.js +6 -83
- package/dist/services/feedback/promotion-artifact-json-evidence.d.ts +29 -0
- package/dist/services/feedback/promotion-artifact-json-evidence.js +39 -0
- package/dist/services/feedback/promotion-source-comments.d.ts +47 -0
- package/dist/services/feedback/promotion-source-comments.js +61 -0
- package/dist/services/final-review/final-review-contract.d.ts +26 -0
- package/dist/services/final-review/final-review-contract.js +14 -0
- package/dist/services/final-review/final-review-delivery.d.ts +63 -0
- package/dist/services/final-review/final-review-delivery.js +124 -0
- package/dist/services/final-review/final-review-evidence-budget.d.ts +125 -0
- package/dist/services/final-review/final-review-evidence-budget.js +218 -0
- package/dist/services/final-review/final-review-evidence-collect.d.ts +4 -0
- package/dist/services/final-review/final-review-evidence-collect.js +230 -0
- package/dist/services/final-review/final-review-evidence-sources.d.ts +138 -0
- package/dist/services/final-review/final-review-evidence-sources.js +139 -0
- package/dist/services/final-review/final-review-fifth-dim.d.ts +8 -0
- package/dist/services/final-review/final-review-fifth-dim.js +20 -0
- package/dist/services/final-review/final-review-gates.d.ts +119 -0
- package/dist/services/final-review/final-review-gates.js +214 -0
- package/dist/services/final-review/final-review-output-budget.d.ts +88 -0
- package/dist/services/final-review/final-review-output-budget.js +161 -0
- package/dist/services/final-review/final-review-prompt.d.ts +35 -0
- package/dist/services/final-review/final-review-prompt.js +112 -0
- package/dist/services/final-review/final-review-reviewer.d.ts +57 -0
- package/dist/services/final-review/final-review-reviewer.js +95 -0
- package/dist/services/final-review/final-review-runner.d.ts +3 -0
- package/dist/services/final-review/final-review-runner.js +158 -0
- package/dist/services/final-review/final-review-service.d.ts +119 -373
- package/dist/services/final-review/final-review-service.js +48 -1380
- package/dist/services/final-review/final-review-verdicts.d.ts +60 -0
- package/dist/services/final-review/final-review-verdicts.js +91 -0
- package/dist/services/final-review/index.d.ts +3 -3
- package/dist/services/final-review/index.js +2 -2
- package/dist/services/final-review/pre-post-diff.js +32 -29
- package/dist/services/fixture/fixture-capture-service.js +14 -6
- package/dist/services/fresh-context/trigger-scan.js +13 -2
- package/dist/services/fuzzy-matching/fuzzy-match-service.js +1 -1
- package/dist/services/fuzzy-matching/fzf-pick-service.js +6 -1
- package/dist/services/hooks/pre-tool-code-gate.js +2 -2
- package/dist/services/hooks/presence-marker-detector.js +12 -2
- package/dist/services/hooks/worktree-authorization-gate.js +21 -7
- package/dist/services/ide/adapters/claude-code-adapter.js +30 -17
- package/dist/services/ide/adapters/codex-adapter.js +3 -5
- package/dist/services/ide/adapters/cursor-adapter.js +3 -5
- package/dist/services/ide/adapters/hermes-adapter.js +2 -4
- package/dist/services/ide/adapters/openclaw-adapter.js +2 -4
- package/dist/services/ide/adapters/qoder-adapter.js +2 -4
- package/dist/services/ide/adapters/tongyi-lingma-adapter.js +1 -1
- package/dist/services/ide/adapters/trae-adapter.js +3 -5
- package/dist/services/ide/adapters/zcode-adapter.js +8 -7
- package/dist/services/ide/current-model-detector.js +2 -1
- package/dist/services/ide/ide-compact-types.d.ts +153 -0
- package/dist/services/ide/ide-compact-types.js +1 -0
- package/dist/services/ide/ide-registry.js +1 -1
- package/dist/services/ide/ide-types.d.ts +7 -145
- package/dist/services/ide/resource-profile.js +1 -1
- package/dist/services/ide/shared/atomic-json.js +2 -1
- package/dist/services/impact/impact-scan-service.js +12 -5
- package/dist/services/job/job-commit-verification.d.ts +73 -0
- package/dist/services/job/job-commit-verification.js +72 -0
- package/dist/services/job/job-orchestrator.d.ts +42 -0
- package/dist/services/job/job-orchestrator.js +110 -10
- package/dist/services/job/job-progress-store.d.ts +75 -5
- package/dist/services/job/job-progress-store.js +83 -6
- package/dist/services/job/job-rotation.d.ts +1 -1
- package/dist/services/job/job-rotation.js +5 -1
- package/dist/services/job/job-state-store.js +2 -2
- package/dist/services/job/job-types.js +49 -20
- package/dist/services/job/subagent-job-wrapper.d.ts +1 -1
- package/dist/services/job/subagent-job-wrapper.js +5 -1
- package/dist/services/job-snapshot/snapshot.js +2 -2
- package/dist/services/karpathy-cost/karpathy-cost-check-service.js +23 -13
- package/dist/services/legacy/legacy-detector.js +51 -5
- package/dist/services/lint/detect-eslint.js +10 -4
- package/dist/services/lint/detect-ocr-18.js +11 -3
- package/dist/services/lint/eslint-runner-support.d.ts +22 -0
- package/dist/services/lint/eslint-runner-support.js +185 -0
- package/dist/services/lint/eslint-runner-types.d.ts +69 -0
- package/dist/services/lint/eslint-runner-types.js +11 -0
- package/dist/services/lint/eslint-runner.d.ts +4 -56
- package/dist/services/lint/eslint-runner.js +24 -178
- package/dist/services/lint/npx-resolver.js +1 -3
- package/dist/services/lint/ocr-18-acquire.js +15 -4
- package/dist/services/lint/ocr-multilang-adapter.js +4 -5
- package/dist/services/llm/anthropic-runner.js +4 -1
- package/dist/services/log/log-commands-service.js +2 -6
- package/dist/services/log/logger.js +15 -12
- package/dist/services/log/retention.js +3 -2
- package/dist/services/loop/evaluator-dispatcher.js +78 -42
- package/dist/services/loop/loop-bee-relation-service.d.ts +4 -4
- package/dist/services/loop/loop-bee-relation-service.js +36 -40
- package/dist/services/loop/loop-bee-relation-store.d.ts +3 -3
- package/dist/services/loop/loop-bee-relation-store.js +9 -11
- package/dist/services/loop/loop-bee-relation-types.d.ts +1 -1
- package/dist/services/loop/loop-bee-relation-types.js +14 -25
- package/dist/services/loop/loop-release-service.d.ts +2 -2
- package/dist/services/loop/loop-release-service.js +3 -3
- package/dist/services/loop/loop-release-store.d.ts +2 -2
- package/dist/services/loop/loop-release-store.js +4 -6
- package/dist/services/loop/loop-release-types.d.ts +1 -1
- package/dist/services/loop/loop-release-types.js +21 -31
- package/dist/services/loop/monotonic-guard-types.d.ts +51 -0
- package/dist/services/loop/monotonic-guard-types.js +9 -0
- package/dist/services/loop/monotonic-guard.d.ts +2 -43
- package/dist/services/loop/monotonic-runner-types.d.ts +63 -0
- package/dist/services/loop/monotonic-runner-types.js +17 -0
- package/dist/services/loop/monotonic-runner.d.ts +3 -34
- package/dist/services/loop/monotonic-runner.js +10 -20
- package/dist/services/loop/run-driver.js +16 -8
- package/dist/services/loop/spec-service.d.ts +0 -5
- package/dist/services/loop/spec-service.js +49 -9
- package/dist/services/memory/llm-reranker-core.d.ts +108 -0
- package/dist/services/memory/llm-reranker-core.js +105 -0
- package/dist/services/memory/llm-reranker.d.ts +3 -94
- package/dist/services/memory/llm-reranker.js +13 -102
- package/dist/services/memory/memory-ingest-service.d.ts +1 -22
- package/dist/services/memory/memory-ingest-service.js +29 -76
- package/dist/services/memory/memory-ingest-support.d.ts +23 -0
- package/dist/services/memory/memory-ingest-support.js +81 -0
- package/dist/services/memory/memory-rotate-service.js +41 -8
- package/dist/services/memory/memory-search-service.js +8 -4
- package/dist/services/memory/project-context-service.js +26 -5
- package/dist/services/memory/project-memory-service/index/kind-dispatch.d.ts +2 -7
- package/dist/services/memory/project-memory-service/index/kind-dispatch.js +17 -136
- package/dist/services/memory/project-memory-service/index/project-memory-plan-exec.d.ts +7 -0
- package/dist/services/memory/project-memory-service/index/project-memory-plan-exec.js +150 -0
- package/dist/services/memory/project-memory-service/index/ranking.js +6 -3
- package/dist/services/memory/project-memory-service/index/reindex.js +14 -5
- package/dist/services/memory/project-memory-service/memory-kinds.d.ts +31 -0
- package/dist/services/memory/project-memory-service/memory-kinds.js +87 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter-parse.d.ts +24 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter-parse.js +104 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter.d.ts +2 -24
- package/dist/services/memory/project-memory-service/parsers/frontmatter.js +28 -79
- package/dist/services/memory/project-memory-service/parsers/markdown-pure.js +15 -3
- package/dist/services/memory/project-memory-service/store/atomic-write.js +34 -22
- package/dist/services/memory/project-memory-service/store/paths.js +2 -1
- package/dist/services/memory/project-memory-service/types.d.ts +3 -31
- package/dist/services/memory/project-memory-service/types.js +1 -76
- package/dist/services/migrate-skill-name/migrate.js +1 -1
- package/dist/services/migrate-skill-name/schema.js +1 -1
- package/dist/services/mode/mode-enforcement.js +4 -2
- package/dist/services/mode/mode-status-service.d.ts +27 -9
- package/dist/services/mode/mode-status-service.js +64 -12
- package/dist/services/observability/aggregation-helpers.d.ts +22 -0
- package/dist/services/observability/aggregation-helpers.js +65 -0
- package/dist/services/observability/aggregation-types.d.ts +66 -0
- package/dist/services/observability/aggregation-types.js +34 -0
- package/dist/services/observability/aggregation.d.ts +5 -53
- package/dist/services/observability/aggregation.js +17 -80
- package/dist/services/observability/jsonl-store.js +2 -1
- package/dist/services/observability/observability-schema.d.ts +71 -0
- package/dist/services/observability/observability-schema.js +64 -0
- package/dist/services/observability/observability-service.d.ts +3 -56
- package/dist/services/observability/observability-service.js +9 -49
- package/dist/services/openspec/coverage-evidence-reader.js +18 -11
- package/dist/services/openspec/openspec-archive-service.js +31 -24
- package/dist/services/openspec/openspec-init-service.js +8 -2
- package/dist/services/openspec/openspec-propose-from-doctor-service.js +1 -1
- package/dist/services/openspec/openspec-scan-service.js +4 -1
- package/dist/services/openspec/openspec-validate-service.js +26 -5
- package/dist/services/perf/perf-baseline-service.js +2 -6
- package/dist/services/polyrepo/polyrepo-dispatcher.js +2 -1
- package/dist/services/polyrepo/polyrepo-scanner.js +4 -1
- package/dist/services/prd/handoff-frontmatter-shape.d.ts +42 -0
- package/dist/services/prd/handoff-frontmatter-shape.js +67 -0
- package/dist/services/prd/handoff-frontmatter.js +1 -1
- package/dist/services/prd/handoff-path-resolution.d.ts +37 -0
- package/dist/services/prd/handoff-path-resolution.js +101 -0
- package/dist/services/prd/handoff-service.d.ts +1 -37
- package/dist/services/prd/handoff-service.js +16 -148
- package/dist/services/prd/prd-blocks-checker.js +28 -8
- package/dist/services/prd/project-scan-bootstrap-service.js +1 -5
- package/dist/services/prd/project-scan-reader.js +1 -4
- package/dist/services/prd/project-scan-sediment.js +1 -4
- package/dist/services/preferences/preferences-service.js +6 -8
- package/dist/services/preferences/preferences-types.js +4 -4
- package/dist/services/qa/bdd-test-style-contract.d.ts +41 -0
- package/dist/services/qa/bdd-test-style-contract.js +37 -0
- package/dist/services/qa/bdd-test-style-verifier.d.ts +2 -24
- package/dist/services/qa/bdd-test-style-verifier.js +5 -31
- package/dist/services/qa/browser-event-logger.js +2 -1
- package/dist/services/qa/qa-business-review-state.js +20 -5
- package/dist/services/qa/screenshot-archive-service.js +1 -3
- package/dist/services/rd/ast-gate.js +2 -2
- package/dist/services/rd/impl.js +1 -1
- package/dist/services/rd/rd-service.js +117 -43
- package/dist/services/rd/reviewer-dispatch-policy.js +4 -7
- package/dist/services/rd/standards-diagnostic.js +4 -1
- package/dist/services/rd/strategy.js +10 -3
- package/dist/services/rd/tactical-stage.js +2 -2
- package/dist/services/rd/types.js +9 -7
- package/dist/services/rd-swarm/rd-swarm-service.d.ts +2 -45
- package/dist/services/rd-swarm/rd-swarm-service.js +140 -21
- package/dist/services/rd-swarm/rd-swarm-types.d.ts +54 -0
- package/dist/services/rd-swarm/rd-swarm-types.js +10 -0
- package/dist/services/recommendations/capability-map-service.js +10 -2
- package/dist/services/recommendations/capability-seed-items.js +81 -14
- package/dist/services/recommendations/capability-seed-mappings.js +420 -48
- package/dist/services/recommendations/capability-seed-sources-mcp-server.d.ts +9 -0
- package/dist/services/recommendations/capability-seed-sources-mcp-server.js +233 -0
- package/dist/services/recommendations/capability-seed-sources.js +127 -32
- package/dist/services/release/release-state.d.ts +2 -2
- package/dist/services/release/release-state.js +44 -15
- package/dist/services/release/version-precheck-layer-changeset.d.ts +2 -0
- package/dist/services/release/version-precheck-layer-changeset.js +43 -0
- package/dist/services/release/version-precheck-service.d.ts +11 -36
- package/dist/services/release/version-precheck-service.js +20 -104
- package/dist/services/release/version-precheck-support.d.ts +53 -0
- package/dist/services/release/version-precheck-support.js +64 -0
- package/dist/services/retrospective/retrospective-index.js +17 -3
- package/dist/services/retrospective/retrospective-search-service.js +6 -2
- package/dist/services/retrospective/retrospective-show.js +4 -1
- package/dist/services/reviewer/model-family.js +7 -1
- package/dist/services/reviewer/providers/anthropic.d.ts +5 -0
- package/dist/services/reviewer/providers/anthropic.js +10 -1
- package/dist/services/reviewer/providers/openai.d.ts +5 -0
- package/dist/services/reviewer/providers/openai.js +10 -1
- package/dist/services/reviewer/reviewer-config.js +4 -2
- package/dist/services/reviewer/reviewer-service.d.ts +2 -36
- package/dist/services/reviewer/reviewer-service.js +2 -1
- package/dist/services/reviewer/reviewer-types.d.ts +43 -0
- package/dist/services/reviewer/reviewer-types.js +1 -0
- package/dist/services/role/role-registry.js +9 -1
- package/dist/services/runtime/runtime-detector.js +4 -1
- package/dist/services/runtime/vendors/claude-code.js +14 -6
- package/dist/services/runtime/vendors/codex.js +11 -3
- package/dist/services/runtime/vendors/copilot.js +11 -3
- package/dist/services/sc/sc-service.js +28 -15
- package/dist/services/scan/acceptance-coverage-service.js +4 -1
- package/dist/services/scan/api-diff-openapi-schema-read.d.ts +67 -0
- package/dist/services/scan/api-diff-openapi-schema-read.js +154 -0
- package/dist/services/scan/api-diff-openapi.d.ts +16 -2
- package/dist/services/scan/api-diff-openapi.js +19 -123
- package/dist/services/scan/api-diff-recorded.js +16 -3
- package/dist/services/scan/api-diff-service.js +49 -16
- package/dist/services/scan/api-diff-types.js +12 -3
- package/dist/services/scan/api-surface-helpers.d.ts +13 -0
- package/dist/services/scan/api-surface-helpers.js +31 -0
- package/dist/services/scan/api-surface-service.d.ts +2 -45
- package/dist/services/scan/api-surface-service.js +15 -26
- package/dist/services/scan/api-surface-types.d.ts +54 -0
- package/dist/services/scan/api-surface-types.js +10 -0
- package/dist/services/scan/archetype-detection.d.ts +37 -0
- package/dist/services/scan/archetype-detection.js +142 -0
- package/dist/services/scan/archetype-service.js +36 -125
- package/dist/services/scan/diff-scope-service.js +35 -15
- package/dist/services/scan/existing-system-service.js +16 -99
- package/dist/services/scan/existing-system-visual-tokens.d.ts +20 -0
- package/dist/services/scan/existing-system-visual-tokens.js +123 -0
- package/dist/services/scan/file-size-policy.d.ts +86 -0
- package/dist/services/scan/file-size-policy.js +184 -0
- package/dist/services/scan/file-size-scan.d.ts +30 -3
- package/dist/services/scan/file-size-scan.js +47 -9
- package/dist/services/scan/karpathy-service.js +6 -1
- package/dist/services/scan/orphan-service.js +86 -20
- package/dist/services/scan/type-sanity-service.js +104 -10
- package/dist/services/sediment/dispose-confirm.d.ts +2 -2
- package/dist/services/sediment/dispose-confirm.js +2 -2
- package/dist/services/sediment/json-schema.d.ts +1 -1
- package/dist/services/sediment/json-schema.js +25 -13
- package/dist/services/sediment/manifest-lint.d.ts +1 -12
- package/dist/services/sediment/manifest-lint.js +1 -7
- package/dist/services/sediment/pool-paths.js +13 -9
- package/dist/services/sediment/pool-read.d.ts +1 -1
- package/dist/services/sediment/pool-read.js +42 -18
- package/dist/services/sediment/pool-rebuild-index.d.ts +1 -1
- package/dist/services/sediment/pool-rebuild-index.js +5 -5
- package/dist/services/sediment/pool-write.d.ts +1 -1
- package/dist/services/sediment/pool-write.js +7 -7
- package/dist/services/sediment/promotion-gate.d.ts +1 -1
- package/dist/services/sediment/promotion-gate.js +9 -9
- package/dist/services/sediment/types.d.ts +8 -8
- package/dist/services/session/binding-status-service.js +14 -4
- package/dist/services/session/caller-binding-service.js +2 -1
- package/dist/services/session/getSessionDir.js +4 -1
- package/dist/services/session/index.d.ts +1 -1
- package/dist/services/session/index.js +1 -1
- package/dist/services/session/resolve-caller-id.js +7 -5
- package/dist/services/session/session-binding-bridge.js +26 -25
- package/dist/services/session/session-checkpoint-service.js +1 -1
- package/dist/services/session/session-file-schema.d.ts +70 -0
- package/dist/services/session/session-file-schema.js +68 -0
- package/dist/services/session/session-manager.d.ts +6 -6
- package/dist/services/session/session-manager.js +30 -29
- package/dist/services/session/session-resume-service.js +2 -1
- package/dist/services/share/bundle-format-constants.d.ts +85 -0
- package/dist/services/share/bundle-format-constants.js +100 -0
- package/dist/services/share/bundle-reader.d.ts +3 -3
- package/dist/services/share/bundle-reader.js +75 -68
- package/dist/services/share/bundle-types.d.ts +3 -70
- package/dist/services/share/bundle-types.js +38 -107
- package/dist/services/share/bundle-writer.d.ts +3 -3
- package/dist/services/share/bundle-writer.js +101 -91
- package/dist/services/share/run-state-contract.d.ts +1 -1
- package/dist/services/share/run-state-contract.js +7 -13
- package/dist/services/signal/cancel-handler.js +2 -1
- package/dist/services/skill/resume-detector.js +6 -4
- package/dist/services/skill/skill-scheduler.js +3 -1
- package/dist/services/skill/skill-search-service.js +4 -4
- package/dist/services/skillhub/release-diff.d.ts +2 -2
- package/dist/services/skillhub/release-diff.js +6 -10
- package/dist/services/skillhub/release-export.d.ts +2 -2
- package/dist/services/skillhub/release-export.js +15 -17
- package/dist/services/skillhub/release-gc-blobs.d.ts +2 -2
- package/dist/services/skillhub/release-gc-blobs.js +4 -4
- package/dist/services/skillhub/release-import.d.ts +2 -2
- package/dist/services/skillhub/release-import.js +13 -12
- package/dist/services/skillhub/release-retain.d.ts +3 -3
- package/dist/services/skillhub/release-retain.js +22 -22
- package/dist/services/skillhub/sqlite-store.d.ts +1 -1
- package/dist/services/skillhub/sqlite-store.js +12 -11
- package/dist/services/skillhub/tar-runtime.js +15 -15
- package/dist/services/skillhub/types.d.ts +4 -4
- package/dist/services/skills/hooks-codegate-superpowers.js +16 -7
- package/dist/services/skills/hooks-settings-service.js +61 -19
- package/dist/services/skills/presence-lease-service.js +26 -16
- package/dist/services/skills/presence-lease-types.d.ts +1 -1
- package/dist/services/skills/presence-lease-types.js +1 -1
- package/dist/services/skills/skill-conformance-service.js +40 -8
- package/dist/services/skills/skill-presence-service.js +16 -14
- package/dist/services/skills/skill-runbook-service.js +2 -1
- package/dist/services/skills/skill-statusline-model.d.ts +128 -0
- package/dist/services/skills/skill-statusline-model.js +163 -0
- package/dist/services/skills/skill-statusline-renderer.js +4 -3
- package/dist/services/skills/skill-statusline-service.d.ts +3 -100
- package/dist/services/skills/skill-statusline-service.js +56 -163
- package/dist/services/skills/statusline-palette.js +11 -6
- package/dist/services/skills/statusline-settings-service.js +2 -1
- package/dist/services/skills/sync-service-support.d.ts +65 -0
- package/dist/services/skills/sync-service-support.js +50 -0
- package/dist/services/skills/sync-service.d.ts +3 -66
- package/dist/services/skills/sync-service.js +15 -53
- package/dist/services/slice/calibration-store.js +8 -2
- package/dist/services/slice/cross-pass-edge-merger.d.ts +3 -28
- package/dist/services/slice/cross-pass-edge-merger.js +13 -63
- package/dist/services/slice/cross-pass-edge-static-scan-support.d.ts +69 -0
- package/dist/services/slice/cross-pass-edge-static-scan-support.js +74 -0
- package/dist/services/slice/granularity-decider.js +2 -2
- package/dist/services/slice/slice-archive-service.js +8 -3
- package/dist/services/slice/slice-check-service.js +19 -8
- package/dist/services/slice/slice-decompose-runners.js +61 -23
- package/dist/services/slice/slice-decompose-service.js +4 -4
- package/dist/services/slice/slice-review-state.js +8 -2
- package/dist/services/smoke/smoke-paths-state.js +9 -2
- package/dist/services/sop/gate-enforce-service.js +9 -2
- package/dist/services/sop/sop-advance-service.js +14 -2
- package/dist/services/sop/sop-check-service.js +16 -4
- package/dist/services/sop/sop-paths.js +3 -1
- package/dist/services/sop/sop-registry-service.js +5 -1
- package/dist/services/sop/sop-service.js +29 -7
- package/dist/services/sop/sop-types.js +5 -1
- package/dist/services/standards/ide-aware-standards-service.js +2 -2
- package/dist/services/standards/loop-engineering-lint.js +12 -5
- package/dist/services/standards/loop-engineering-readiness-lint.js +5 -5
- package/dist/services/standards/migrate-claude-rules-service.js +9 -7
- package/dist/services/standards/missing-standards-detector.js +1 -3
- package/dist/services/standards/project-context-support.d.ts +50 -0
- package/dist/services/standards/project-context-support.js +244 -0
- package/dist/services/standards/project-context-types.d.ts +30 -0
- package/dist/services/standards/project-context-types.js +11 -0
- package/dist/services/standards/project-context.d.ts +10 -22
- package/dist/services/standards/project-context.js +27 -214
- package/dist/services/standards/project-standards-service.js +43 -12
- package/dist/services/standards/standards-render-common.d.ts +15 -0
- package/dist/services/standards/standards-render-common.js +49 -0
- package/dist/services/standards/standards-render.d.ts +1 -2
- package/dist/services/standards/standards-render.js +31 -58
- package/dist/services/standards/ui-library-dispatch-block.js +1 -1
- package/dist/services/tech/tech-change-id-service.js +7 -7
- package/dist/services/tech/tech-service.js +73 -26
- package/dist/services/test-cache/test-cache-service.js +8 -3
- package/dist/services/upgrade/1x-detector-service.js +5 -3
- package/dist/services/upgrade/gitignore-migrate-service.js +5 -5
- package/dist/services/upgrade/upgrade-service.js +36 -13
- package/dist/services/verdict/envelope-parsers.d.ts +84 -0
- package/dist/services/verdict/envelope-parsers.js +146 -0
- package/dist/services/verdict/envelopes.d.ts +50 -60
- package/dist/services/verdict/envelopes.js +18 -156
- package/dist/services/verdict/verdict-aggregator.js +27 -3
- package/dist/services/vm/vm-lease.js +15 -3
- package/dist/services/web/aria-node.d.ts +27 -0
- package/dist/services/web/aria-node.js +1 -0
- package/dist/services/web/browser-acquire.js +3 -1
- package/dist/services/web/browser-cache-probe.d.ts +18 -0
- package/dist/services/web/browser-cache-probe.js +110 -0
- package/dist/services/web/browser-session-manager.js +6 -2
- package/dist/services/web/daemon-registry.js +4 -1
- package/dist/services/web/playwright-loader.d.ts +2 -70
- package/dist/services/web/playwright-types.d.ts +75 -0
- package/dist/services/web/playwright-types.js +1 -0
- package/dist/services/web/snapshot-pruner.d.ts +2 -23
- package/dist/services/web/snapshot-pruner.js +8 -3
- package/dist/services/web/web-daemon-service.js +1 -3
- package/dist/services/web/web-install-service.d.ts +3 -32
- package/dist/services/web/web-install-service.js +21 -100
- package/dist/services/web/web-install-types.d.ts +31 -0
- package/dist/services/web/web-install-types.js +13 -0
- package/dist/services/web/web-login-profile.js +7 -5
- package/dist/services/web/web-protocol.js +3 -1
- package/dist/services/workflow/pipeline-verify-gate-support.js +63 -17
- package/dist/services/workflow/pipeline-verify-service.js +17 -6
- package/dist/services/workflow/plan-reader.js +5 -1
- package/dist/services/workflow/plan-refresher.js +20 -6
- package/dist/services/workflow/plan-trigger-detector.js +31 -8
- package/dist/services/workflow/provision-dispatch-node.js +8 -3
- package/dist/services/workflow/workflow-autonomous-resume-helpers.d.ts +3 -1
- package/dist/services/workflow/workflow-autonomous-resume-helpers.js +35 -144
- package/dist/services/workflow/workflow-autonomous-resume-validation.d.ts +16 -0
- package/dist/services/workflow/workflow-autonomous-resume-validation.js +155 -0
- package/dist/services/workflow/workflow-autonomous-service.js +25 -13
- package/dist/services/workflow/workflow-graph-store-helpers.d.ts +51 -0
- package/dist/services/workflow/workflow-graph-store-helpers.js +111 -0
- package/dist/services/workflow/workflow-graph-store.d.ts +2 -35
- package/dist/services/workflow/workflow-graph-store.js +30 -107
- package/dist/services/workflow/workflow-graph-types.js +3 -3
- package/dist/services/workflow/workflow-inflight-probe.js +14 -7
- package/dist/services/workflow/workflow-loader.js +5 -1
- package/dist/services/workflow/workflow-node-lifecycle.js +22 -21
- package/dist/services/workflow/workflow-presence-lifecycle-types.d.ts +50 -0
- package/dist/services/workflow/workflow-presence-lifecycle-types.js +1 -0
- package/dist/services/workflow/workflow-presence-lifecycle.d.ts +2 -42
- package/dist/services/workflow/workflow-presence-lifecycle.js +19 -21
- package/dist/services/workflow/workflow-router-service.js +169 -27
- package/dist/services/workflow/workflow-skip-service.js +14 -4
- package/dist/services/workflow/workflow-spec-builders.d.ts +15 -0
- package/dist/services/workflow/workflow-spec-builders.js +121 -0
- package/dist/services/workflow/workflow-spec.d.ts +7 -6
- package/dist/services/workflow/workflow-spec.js +22 -116
- package/dist/services/workflow/workflow-state-store.js +2 -1
- package/dist/services/workspace/migrate-1-4-1-service.js +80 -14
- package/dist/services/workspace/migrate-service.js +66 -16
- package/dist/services/workspace/reconcile-migrate.js +6 -2
- package/dist/services/workspace/reconcile-service.js +37 -16
- package/dist/services/workspace/workspace-claude-settings-materializer.js +7 -5
- package/dist/services/workspace/workspace-clean-service.js +4 -1
- package/dist/services/workspace/workspace-service.js +11 -3
- package/dist/services/workspace/workspace-state-service.js +1 -1
- package/dist/services/worktree/git-worktree-parser.js +13 -3
- package/dist/services/worktree/host-worktree-reconciler.js +8 -4
- package/dist/services/worktree/long-path-cleanup.js +23 -6
- package/dist/services/worktree/worktree-gc-guard.js +3 -1
- package/dist/services/worktree/worktree-lease-types.d.ts +53 -0
- package/dist/services/worktree/worktree-lease-types.js +10 -0
- package/dist/services/worktree/worktree-lease.d.ts +2 -44
- package/dist/shared/array-guards.d.ts +30 -0
- package/dist/shared/array-guards.js +32 -0
- package/dist/shared/format-md-compact-internals.d.ts +26 -0
- package/dist/shared/format-md-compact-internals.js +125 -0
- package/dist/shared/format-md-compact.js +1 -117
- package/dist/shared/fs-utils.js +2 -1
- package/dist/shared/incrementing-number.js +3 -3
- package/dist/shared/json-parse.d.ts +71 -0
- package/dist/shared/json-parse.js +32 -0
- package/dist/shared/json-schema-mini.js +3 -1
- package/dist/shared/path-safety.js +3 -1
- package/dist/shared/path-utils.d.ts +20 -0
- package/dist/shared/path-utils.js +26 -0
- package/dist/shared/planner-response.js +3 -3
- package/dist/shared/stale-policy.js +1 -3
- package/dist/skills/peaks-maker/index.js +11 -11
- package/package.json +31 -8
- package/scripts/clean-dist.mjs +1 -2
- package/scripts/copy-templates.mjs +2 -4
- package/scripts/install-skills.mjs +305 -125
- package/scripts/sync-version.mjs +25 -8
- package/scripts/watch.mjs +8 -2
- package/skills/peaks-code/SKILL.md +1 -1
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workflow graph store helpers (B wave-3 file-size split).
|
|
3
|
+
*
|
|
4
|
+
* Extracted verbatim from `workflow-graph-store.ts`: the canonical
|
|
5
|
+
* `PEAKS_*` error-code constants, the `GraphStoreError` shape +
|
|
6
|
+
* `makeError` factory, the session-root/path resolution helpers, the
|
|
7
|
+
* cycle detector, and the fresh-graph builder. The on-disk graph
|
|
8
|
+
* record layout is defined by `workflow-graph-types.ts` and is NOT
|
|
9
|
+
* altered by this move — `emptyGraph` emits the identical node/edge
|
|
10
|
+
* shape as before. `workflow-graph-store.ts` re-exports every public
|
|
11
|
+
* name from this module so all importers keep resolving the same path.
|
|
12
|
+
*/
|
|
13
|
+
import { join, resolve, sep } from 'node:path';
|
|
14
|
+
import { WORKFLOW_ID_REGEX, isSafeRelativeGraphRef } from './workflow-graph-types.js';
|
|
15
|
+
export const PEAKS_GRAPH_NOT_FOUND = 'PEAKS_GRAPH_NOT_FOUND';
|
|
16
|
+
export const PEAKS_GRAPH_CORRUPTED = 'PEAKS_GRAPH_CORRUPTED';
|
|
17
|
+
export const PEAKS_GRAPH_CYCLE = 'PEAKS_GRAPH_CYCLE';
|
|
18
|
+
export const PEAKS_GRAPH_REF_BROKEN = 'PEAKS_GRAPH_REF_BROKEN';
|
|
19
|
+
export const PEAKS_GRAPH_NODE_REQUIRED = 'PEAKS_GRAPH_NODE_REQUIRED';
|
|
20
|
+
export const PEAKS_GRAPH_NODE_NOT_PREPARED = 'PEAKS_GRAPH_NODE_NOT_PREPARED';
|
|
21
|
+
export const PEAKS_GRAPH_NODE_KIND_INVALID = 'PEAKS_GRAPH_NODE_KIND_INVALID';
|
|
22
|
+
export const PEAKS_NODE_EXISTS = 'PEAKS_NODE_EXISTS';
|
|
23
|
+
export const PEAKS_NODE_TRANSITION_INVALID = 'PEAKS_NODE_TRANSITION_INVALID';
|
|
24
|
+
export const PEAKS_ENVELOPE_NOT_RECEIVED = 'PEAKS_ENVELOPE_NOT_RECEIVED';
|
|
25
|
+
export const PEAKS_ENVELOPE_GRAPH_MISMATCH = 'PEAKS_ENVELOPE_GRAPH_MISMATCH';
|
|
26
|
+
export const PEAKS_TERMINAL_REASON_INVALID = 'PEAKS_TERMINAL_REASON_INVALID';
|
|
27
|
+
export const PEAKS_TERMINALIZE_ATOMICITY_FAILED = 'PEAKS_TERMINALIZE_ATOMICITY_FAILED';
|
|
28
|
+
export const PEAKS_UNCONSUMED_ENVELOPE = 'PEAKS_UNCONSUMED_ENVELOPE';
|
|
29
|
+
export const PEAKS_DEPENDENCY_NOT_CONSUMED = 'PEAKS_DEPENDENCY_NOT_CONSUMED';
|
|
30
|
+
export const PEAKS_WORKFLOW_OWNS_PRESENCE_CLEAR = 'PEAKS_WORKFLOW_OWNS_PRESENCE_CLEAR';
|
|
31
|
+
export const PEAKS_SESSION_NOT_BOUND = 'PEAKS_SESSION_NOT_BOUND';
|
|
32
|
+
export const PEAKS_CALLER_NOT_RESOLVED = 'PEAKS_CALLER_NOT_RESOLVED';
|
|
33
|
+
export function makeError(code, message, legacyFallback = false) {
|
|
34
|
+
const err = new Error(message);
|
|
35
|
+
err.name = 'GraphStoreError';
|
|
36
|
+
err.code = code;
|
|
37
|
+
err.legacyFallback = legacyFallback;
|
|
38
|
+
return err;
|
|
39
|
+
}
|
|
40
|
+
function safeSessionRuntimeRoot(projectRoot, sessionId) {
|
|
41
|
+
if (!WORKFLOW_ID_REGEX.test(sessionId)) {
|
|
42
|
+
throw makeError(PEAKS_GRAPH_REF_BROKEN, `invalid sessionId: ${sessionId}`);
|
|
43
|
+
}
|
|
44
|
+
const root = resolve(projectRoot);
|
|
45
|
+
return join(root, '.peaks', '_runtime', sessionId);
|
|
46
|
+
}
|
|
47
|
+
/** Compute the on-disk graph path. Validates `graphRef` stays under the session root. */
|
|
48
|
+
export function graphPathFor(input) {
|
|
49
|
+
if (!isSafeRelativeGraphRef(input.graphRef, input.workflowId)) {
|
|
50
|
+
throw makeError(PEAKS_GRAPH_REF_BROKEN, `graphRef is not safe: ${input.graphRef}`);
|
|
51
|
+
}
|
|
52
|
+
if (!WORKFLOW_ID_REGEX.test(input.workflowId)) {
|
|
53
|
+
throw makeError(PEAKS_GRAPH_REF_BROKEN, `workflowId is not safe: ${input.workflowId}`);
|
|
54
|
+
}
|
|
55
|
+
const sessionRoot = safeSessionRuntimeRoot(input.projectRoot, input.sessionId);
|
|
56
|
+
const resolved = resolve(sessionRoot, input.graphRef);
|
|
57
|
+
if (!resolved.startsWith(sessionRoot + sep) && resolved !== sessionRoot) {
|
|
58
|
+
throw makeError(PEAKS_GRAPH_REF_BROKEN, `graphRef escapes session root: ${input.graphRef}`);
|
|
59
|
+
}
|
|
60
|
+
return resolved;
|
|
61
|
+
}
|
|
62
|
+
/** Detect cycles in a node-dependency graph. */
|
|
63
|
+
export function detectCycle(nodes) {
|
|
64
|
+
const map = new Map();
|
|
65
|
+
for (const n of nodes)
|
|
66
|
+
map.set(n.id, n);
|
|
67
|
+
const color = new Map();
|
|
68
|
+
const visiting = (id) => {
|
|
69
|
+
const c = color.get(id) ?? 0;
|
|
70
|
+
if (c === 1)
|
|
71
|
+
return true;
|
|
72
|
+
if (c === 2)
|
|
73
|
+
return false;
|
|
74
|
+
color.set(id, 1);
|
|
75
|
+
const node = map.get(id);
|
|
76
|
+
if (node) {
|
|
77
|
+
for (const dep of node.dependsOn) {
|
|
78
|
+
if (visiting(dep))
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
color.set(id, 2);
|
|
83
|
+
return false;
|
|
84
|
+
};
|
|
85
|
+
for (const n of nodes) {
|
|
86
|
+
if (visiting(n.id))
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
/** Build a fresh empty graph with one terminal node. */
|
|
92
|
+
export function emptyGraph(input) {
|
|
93
|
+
const graph = {
|
|
94
|
+
workflowId: input.workflowId,
|
|
95
|
+
rootSkill: input.rootSkill,
|
|
96
|
+
...(input.parentWorkflowId ? { parentWorkflowId: input.parentWorkflowId } : {}),
|
|
97
|
+
nodes: [
|
|
98
|
+
{
|
|
99
|
+
id: 'terminal',
|
|
100
|
+
kind: 'terminal',
|
|
101
|
+
label: 'workflow complete',
|
|
102
|
+
status: 'prepared',
|
|
103
|
+
dependsOn: [],
|
|
104
|
+
ackStatus: 'not-required'
|
|
105
|
+
}
|
|
106
|
+
],
|
|
107
|
+
edges: [],
|
|
108
|
+
schemaVersion: 1
|
|
109
|
+
};
|
|
110
|
+
return graph;
|
|
111
|
+
}
|
|
@@ -9,35 +9,8 @@
|
|
|
9
9
|
* canonical corruption is surfaced with `PEAKS_GRAPH_CORRUPTED`.
|
|
10
10
|
*/
|
|
11
11
|
import { type WorkflowGraph, type WorkflowId } from './workflow-graph-types.js';
|
|
12
|
-
export
|
|
13
|
-
export
|
|
14
|
-
export declare const PEAKS_GRAPH_CYCLE = "PEAKS_GRAPH_CYCLE";
|
|
15
|
-
export declare const PEAKS_GRAPH_REF_BROKEN = "PEAKS_GRAPH_REF_BROKEN";
|
|
16
|
-
export declare const PEAKS_GRAPH_NODE_REQUIRED = "PEAKS_GRAPH_NODE_REQUIRED";
|
|
17
|
-
export declare const PEAKS_GRAPH_NODE_NOT_PREPARED = "PEAKS_GRAPH_NODE_NOT_PREPARED";
|
|
18
|
-
export declare const PEAKS_GRAPH_NODE_KIND_INVALID = "PEAKS_GRAPH_NODE_KIND_INVALID";
|
|
19
|
-
export declare const PEAKS_NODE_EXISTS = "PEAKS_NODE_EXISTS";
|
|
20
|
-
export declare const PEAKS_NODE_TRANSITION_INVALID = "PEAKS_NODE_TRANSITION_INVALID";
|
|
21
|
-
export declare const PEAKS_ENVELOPE_NOT_RECEIVED = "PEAKS_ENVELOPE_NOT_RECEIVED";
|
|
22
|
-
export declare const PEAKS_ENVELOPE_GRAPH_MISMATCH = "PEAKS_ENVELOPE_GRAPH_MISMATCH";
|
|
23
|
-
export declare const PEAKS_TERMINAL_REASON_INVALID = "PEAKS_TERMINAL_REASON_INVALID";
|
|
24
|
-
export declare const PEAKS_TERMINALIZE_ATOMICITY_FAILED = "PEAKS_TERMINALIZE_ATOMICITY_FAILED";
|
|
25
|
-
export declare const PEAKS_UNCONSUMED_ENVELOPE = "PEAKS_UNCONSUMED_ENVELOPE";
|
|
26
|
-
export declare const PEAKS_DEPENDENCY_NOT_CONSUMED = "PEAKS_DEPENDENCY_NOT_CONSUMED";
|
|
27
|
-
export declare const PEAKS_WORKFLOW_OWNS_PRESENCE_CLEAR = "PEAKS_WORKFLOW_OWNS_PRESENCE_CLEAR";
|
|
28
|
-
export declare const PEAKS_SESSION_NOT_BOUND = "PEAKS_SESSION_NOT_BOUND";
|
|
29
|
-
export declare const PEAKS_CALLER_NOT_RESOLVED = "PEAKS_CALLER_NOT_RESOLVED";
|
|
30
|
-
export interface GraphStoreError extends Error {
|
|
31
|
-
readonly code: string;
|
|
32
|
-
readonly legacyFallback: boolean;
|
|
33
|
-
}
|
|
34
|
-
/** Compute the on-disk graph path. Validates `graphRef` stays under the session root. */
|
|
35
|
-
export declare function graphPathFor(input: {
|
|
36
|
-
projectRoot: string;
|
|
37
|
-
sessionId: string;
|
|
38
|
-
graphRef: string;
|
|
39
|
-
workflowId: WorkflowId;
|
|
40
|
-
}): string;
|
|
12
|
+
export { PEAKS_GRAPH_NOT_FOUND, PEAKS_GRAPH_CORRUPTED, PEAKS_GRAPH_CYCLE, PEAKS_GRAPH_REF_BROKEN, PEAKS_GRAPH_NODE_REQUIRED, PEAKS_GRAPH_NODE_NOT_PREPARED, PEAKS_GRAPH_NODE_KIND_INVALID, PEAKS_NODE_EXISTS, PEAKS_NODE_TRANSITION_INVALID, PEAKS_ENVELOPE_NOT_RECEIVED, PEAKS_ENVELOPE_GRAPH_MISMATCH, PEAKS_TERMINAL_REASON_INVALID, PEAKS_TERMINALIZE_ATOMICITY_FAILED, PEAKS_UNCONSUMED_ENVELOPE, PEAKS_DEPENDENCY_NOT_CONSUMED, PEAKS_WORKFLOW_OWNS_PRESENCE_CLEAR, PEAKS_SESSION_NOT_BOUND, PEAKS_CALLER_NOT_RESOLVED, graphPathFor, emptyGraph } from './workflow-graph-store-helpers.js';
|
|
13
|
+
export type { GraphStoreError } from './workflow-graph-store-helpers.js';
|
|
41
14
|
/** Validate a graph shape; throw `PEAKS_GRAPH_CORRUPTED` on any violation. */
|
|
42
15
|
export declare function validateGraph(graph: unknown): WorkflowGraph;
|
|
43
16
|
/** Read a graph from disk; never falls back to legacy. */
|
|
@@ -60,12 +33,6 @@ export declare function writeGraph(input: {
|
|
|
60
33
|
}): {
|
|
61
34
|
path: string;
|
|
62
35
|
};
|
|
63
|
-
/** Build a fresh empty graph with one terminal node. */
|
|
64
|
-
export declare function emptyGraph(input: {
|
|
65
|
-
workflowId: WorkflowId;
|
|
66
|
-
rootSkill: string;
|
|
67
|
-
parentWorkflowId?: WorkflowId;
|
|
68
|
-
}): WorkflowGraph;
|
|
69
36
|
/** Validate a `graphRef` is well-formed without writing. */
|
|
70
37
|
export declare function validateGraphRef(input: {
|
|
71
38
|
graphRef: string;
|
|
@@ -9,55 +9,11 @@
|
|
|
9
9
|
* canonical corruption is surfaced with `PEAKS_GRAPH_CORRUPTED`.
|
|
10
10
|
*/
|
|
11
11
|
import { existsSync, mkdirSync, readFileSync, renameSync, statSync, unlinkSync, writeFileSync } from 'node:fs';
|
|
12
|
-
import { dirname
|
|
13
|
-
import {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
export
|
|
17
|
-
export const PEAKS_GRAPH_REF_BROKEN = 'PEAKS_GRAPH_REF_BROKEN';
|
|
18
|
-
export const PEAKS_GRAPH_NODE_REQUIRED = 'PEAKS_GRAPH_NODE_REQUIRED';
|
|
19
|
-
export const PEAKS_GRAPH_NODE_NOT_PREPARED = 'PEAKS_GRAPH_NODE_NOT_PREPARED';
|
|
20
|
-
export const PEAKS_GRAPH_NODE_KIND_INVALID = 'PEAKS_GRAPH_NODE_KIND_INVALID';
|
|
21
|
-
export const PEAKS_NODE_EXISTS = 'PEAKS_NODE_EXISTS';
|
|
22
|
-
export const PEAKS_NODE_TRANSITION_INVALID = 'PEAKS_NODE_TRANSITION_INVALID';
|
|
23
|
-
export const PEAKS_ENVELOPE_NOT_RECEIVED = 'PEAKS_ENVELOPE_NOT_RECEIVED';
|
|
24
|
-
export const PEAKS_ENVELOPE_GRAPH_MISMATCH = 'PEAKS_ENVELOPE_GRAPH_MISMATCH';
|
|
25
|
-
export const PEAKS_TERMINAL_REASON_INVALID = 'PEAKS_TERMINAL_REASON_INVALID';
|
|
26
|
-
export const PEAKS_TERMINALIZE_ATOMICITY_FAILED = 'PEAKS_TERMINALIZE_ATOMICITY_FAILED';
|
|
27
|
-
export const PEAKS_UNCONSUMED_ENVELOPE = 'PEAKS_UNCONSUMED_ENVELOPE';
|
|
28
|
-
export const PEAKS_DEPENDENCY_NOT_CONSUMED = 'PEAKS_DEPENDENCY_NOT_CONSUMED';
|
|
29
|
-
export const PEAKS_WORKFLOW_OWNS_PRESENCE_CLEAR = 'PEAKS_WORKFLOW_OWNS_PRESENCE_CLEAR';
|
|
30
|
-
export const PEAKS_SESSION_NOT_BOUND = 'PEAKS_SESSION_NOT_BOUND';
|
|
31
|
-
export const PEAKS_CALLER_NOT_RESOLVED = 'PEAKS_CALLER_NOT_RESOLVED';
|
|
32
|
-
function makeError(code, message, legacyFallback = false) {
|
|
33
|
-
const err = new Error(message);
|
|
34
|
-
err.name = 'GraphStoreError';
|
|
35
|
-
err.code = code;
|
|
36
|
-
err.legacyFallback = legacyFallback;
|
|
37
|
-
return err;
|
|
38
|
-
}
|
|
39
|
-
function safeSessionRuntimeRoot(projectRoot, sessionId) {
|
|
40
|
-
if (!WORKFLOW_ID_REGEX.test(sessionId)) {
|
|
41
|
-
throw makeError(PEAKS_GRAPH_REF_BROKEN, `invalid sessionId: ${sessionId}`);
|
|
42
|
-
}
|
|
43
|
-
const root = resolve(projectRoot);
|
|
44
|
-
return join(root, '.peaks', '_runtime', sessionId);
|
|
45
|
-
}
|
|
46
|
-
/** Compute the on-disk graph path. Validates `graphRef` stays under the session root. */
|
|
47
|
-
export function graphPathFor(input) {
|
|
48
|
-
if (!isSafeRelativeGraphRef(input.graphRef, input.workflowId)) {
|
|
49
|
-
throw makeError(PEAKS_GRAPH_REF_BROKEN, `graphRef is not safe: ${input.graphRef}`);
|
|
50
|
-
}
|
|
51
|
-
if (!WORKFLOW_ID_REGEX.test(input.workflowId)) {
|
|
52
|
-
throw makeError(PEAKS_GRAPH_REF_BROKEN, `workflowId is not safe: ${input.workflowId}`);
|
|
53
|
-
}
|
|
54
|
-
const sessionRoot = safeSessionRuntimeRoot(input.projectRoot, input.sessionId);
|
|
55
|
-
const resolved = resolve(sessionRoot, input.graphRef);
|
|
56
|
-
if (!resolved.startsWith(sessionRoot + sep) && resolved !== sessionRoot) {
|
|
57
|
-
throw makeError(PEAKS_GRAPH_REF_BROKEN, `graphRef escapes session root: ${input.graphRef}`);
|
|
58
|
-
}
|
|
59
|
-
return resolved;
|
|
60
|
-
}
|
|
12
|
+
import { dirname } from 'node:path';
|
|
13
|
+
import { isArray } from '../../shared/array-guards.js';
|
|
14
|
+
import { WORKFLOW_ID_REGEX, NODE_ID_REGEX } from './workflow-graph-types.js';
|
|
15
|
+
import { detectCycle, graphPathFor, makeError, PEAKS_GRAPH_NOT_FOUND, PEAKS_GRAPH_CORRUPTED, PEAKS_GRAPH_REF_BROKEN } from './workflow-graph-store-helpers.js';
|
|
16
|
+
export { PEAKS_GRAPH_NOT_FOUND, PEAKS_GRAPH_CORRUPTED, PEAKS_GRAPH_CYCLE, PEAKS_GRAPH_REF_BROKEN, PEAKS_GRAPH_NODE_REQUIRED, PEAKS_GRAPH_NODE_NOT_PREPARED, PEAKS_GRAPH_NODE_KIND_INVALID, PEAKS_NODE_EXISTS, PEAKS_NODE_TRANSITION_INVALID, PEAKS_ENVELOPE_NOT_RECEIVED, PEAKS_ENVELOPE_GRAPH_MISMATCH, PEAKS_TERMINAL_REASON_INVALID, PEAKS_TERMINALIZE_ATOMICITY_FAILED, PEAKS_UNCONSUMED_ENVELOPE, PEAKS_DEPENDENCY_NOT_CONSUMED, PEAKS_WORKFLOW_OWNS_PRESENCE_CLEAR, PEAKS_SESSION_NOT_BOUND, PEAKS_CALLER_NOT_RESOLVED, graphPathFor, emptyGraph } from './workflow-graph-store-helpers.js';
|
|
61
17
|
/** Atomically write a graph: tmp + rename. */
|
|
62
18
|
function writeAtomic(targetPath, body) {
|
|
63
19
|
const dir = dirname(targetPath);
|
|
@@ -79,7 +35,9 @@ function acquireLock(lockPath, holder, ttlMs = 30_000) {
|
|
|
79
35
|
try {
|
|
80
36
|
unlinkSync(lockPath);
|
|
81
37
|
}
|
|
82
|
-
catch {
|
|
38
|
+
catch {
|
|
39
|
+
/* swallow */
|
|
40
|
+
}
|
|
83
41
|
}
|
|
84
42
|
else {
|
|
85
43
|
throw makeError('PEAKS_GRAPH_LOCK_HELD', `graph lock held: ${lockPath}`);
|
|
@@ -92,36 +50,9 @@ function releaseLock(lockPath) {
|
|
|
92
50
|
if (existsSync(lockPath))
|
|
93
51
|
unlinkSync(lockPath);
|
|
94
52
|
}
|
|
95
|
-
catch {
|
|
96
|
-
|
|
97
|
-
/** Detect cycles in a node-dependency graph. */
|
|
98
|
-
function detectCycle(nodes) {
|
|
99
|
-
const map = new Map();
|
|
100
|
-
for (const n of nodes)
|
|
101
|
-
map.set(n.id, n);
|
|
102
|
-
const color = new Map();
|
|
103
|
-
const visiting = (id) => {
|
|
104
|
-
const c = color.get(id) ?? 0;
|
|
105
|
-
if (c === 1)
|
|
106
|
-
return true;
|
|
107
|
-
if (c === 2)
|
|
108
|
-
return false;
|
|
109
|
-
color.set(id, 1);
|
|
110
|
-
const node = map.get(id);
|
|
111
|
-
if (node) {
|
|
112
|
-
for (const dep of node.dependsOn) {
|
|
113
|
-
if (visiting(dep))
|
|
114
|
-
return true;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
color.set(id, 2);
|
|
118
|
-
return false;
|
|
119
|
-
};
|
|
120
|
-
for (const n of nodes) {
|
|
121
|
-
if (visiting(n.id))
|
|
122
|
-
return true;
|
|
53
|
+
catch {
|
|
54
|
+
/* swallow */
|
|
123
55
|
}
|
|
124
|
-
return false;
|
|
125
56
|
}
|
|
126
57
|
/** Validate a graph shape; throw `PEAKS_GRAPH_CORRUPTED` on any violation. */
|
|
127
58
|
export function validateGraph(graph) {
|
|
@@ -138,9 +69,16 @@ export function validateGraph(graph) {
|
|
|
138
69
|
if (g.parentWorkflowId !== undefined && typeof g.parentWorkflowId !== 'string') {
|
|
139
70
|
throw makeError(PEAKS_GRAPH_CORRUPTED, 'parentWorkflowId must be a string when present');
|
|
140
71
|
}
|
|
141
|
-
|
|
72
|
+
// `isArray` (not `Array.isArray`, which is typed `arg is any[]`): the guard
|
|
73
|
+
// here is the same runtime check, but the built-in would widen `g.nodes` /
|
|
74
|
+
// `g.edges` from `readonly WorkflowNode[]` / `readonly WorkflowEdge[]` to
|
|
75
|
+
// `any[]`, making every access in the loops below an `any` access. The
|
|
76
|
+
// `=== undefined` half is the explicit price of a `boolean` helper — it
|
|
77
|
+
// cannot narrow, so defined-ness is stated in the open. See
|
|
78
|
+
// `src/shared/array-guards.ts`.
|
|
79
|
+
if (g.nodes === undefined || !isArray(g.nodes))
|
|
142
80
|
throw makeError(PEAKS_GRAPH_CORRUPTED, 'nodes missing');
|
|
143
|
-
if (!
|
|
81
|
+
if (g.edges === undefined || !isArray(g.edges))
|
|
144
82
|
throw makeError(PEAKS_GRAPH_CORRUPTED, 'edges missing');
|
|
145
83
|
if (g.schemaVersion !== 1)
|
|
146
84
|
throw makeError(PEAKS_GRAPH_CORRUPTED, 'schemaVersion must be 1');
|
|
@@ -159,7 +97,7 @@ export function validateGraph(graph) {
|
|
|
159
97
|
if (typeof n.label !== 'string' || n.label.length === 0) {
|
|
160
98
|
throw makeError(PEAKS_GRAPH_CORRUPTED, 'label missing');
|
|
161
99
|
}
|
|
162
|
-
if (!
|
|
100
|
+
if (!isArray(n.dependsOn)) {
|
|
163
101
|
throw makeError(PEAKS_GRAPH_CORRUPTED, 'dependsOn must be an array');
|
|
164
102
|
}
|
|
165
103
|
if (n.kind === 'terminal')
|
|
@@ -181,6 +119,11 @@ export function validateGraph(graph) {
|
|
|
181
119
|
throw makeError(PEAKS_GRAPH_CORRUPTED, `edge to unknown node: ${String(e.to)}`);
|
|
182
120
|
}
|
|
183
121
|
}
|
|
122
|
+
// S10: the two `as WorkflowGraphNode[]` casts that used to be here are gone.
|
|
123
|
+
// They existed only to undo the `Array.isArray` widening above; with `isArray`
|
|
124
|
+
// the receiver is already `readonly WorkflowGraphNode[]`, `detectCycle`
|
|
125
|
+
// already accepts that, so the casts were `no-unnecessary-type-assertion`
|
|
126
|
+
// after the fix and are simply deleted.
|
|
184
127
|
for (const n of g.nodes) {
|
|
185
128
|
for (const dep of n.dependsOn) {
|
|
186
129
|
if (!ids.has(dep)) {
|
|
@@ -203,7 +146,7 @@ export function readGraph(input) {
|
|
|
203
146
|
projectRoot: input.projectRoot ?? '',
|
|
204
147
|
sessionId: input.sessionId ?? '',
|
|
205
148
|
graphRef: input.graphRef ?? '',
|
|
206
|
-
workflowId: input.workflowId ?? ''
|
|
149
|
+
workflowId: input.workflowId ?? ''
|
|
207
150
|
});
|
|
208
151
|
if (!existsSync(path)) {
|
|
209
152
|
throw makeError(PEAKS_GRAPH_NOT_FOUND, `graph not found: ${path}`);
|
|
@@ -225,8 +168,10 @@ export function readGraph(input) {
|
|
|
225
168
|
}
|
|
226
169
|
// Confirm parsed graph's workflowId matches the supplied one (when provided);
|
|
227
170
|
// otherwise it's a graphRef mismatch (e.g. stale graph swapped under the lease).
|
|
228
|
-
if (typeof input.workflowId === 'string' &&
|
|
229
|
-
|
|
171
|
+
if (typeof input.workflowId === 'string' &&
|
|
172
|
+
input.workflowId.length > 0 &&
|
|
173
|
+
typeof parsed === 'object' &&
|
|
174
|
+
parsed !== null) {
|
|
230
175
|
const wf = parsed.workflowId;
|
|
231
176
|
if (typeof wf === 'string' && wf !== input.workflowId) {
|
|
232
177
|
throw makeError(PEAKS_GRAPH_REF_BROKEN, `graphRef points at foreign workflow: ${wf} vs ${input.workflowId}`, false);
|
|
@@ -248,31 +193,9 @@ export function writeGraph(input) {
|
|
|
248
193
|
}
|
|
249
194
|
return { path };
|
|
250
195
|
}
|
|
251
|
-
/** Build a fresh empty graph with one terminal node. */
|
|
252
|
-
export function emptyGraph(input) {
|
|
253
|
-
const graph = {
|
|
254
|
-
workflowId: input.workflowId,
|
|
255
|
-
rootSkill: input.rootSkill,
|
|
256
|
-
...(input.parentWorkflowId ? { parentWorkflowId: input.parentWorkflowId } : {}),
|
|
257
|
-
nodes: [
|
|
258
|
-
{
|
|
259
|
-
id: 'terminal',
|
|
260
|
-
kind: 'terminal',
|
|
261
|
-
label: 'workflow complete',
|
|
262
|
-
status: 'prepared',
|
|
263
|
-
dependsOn: [],
|
|
264
|
-
ackStatus: 'not-required',
|
|
265
|
-
},
|
|
266
|
-
],
|
|
267
|
-
edges: [],
|
|
268
|
-
schemaVersion: 1,
|
|
269
|
-
};
|
|
270
|
-
return graph;
|
|
271
|
-
}
|
|
272
196
|
/** Validate a `graphRef` is well-formed without writing. */
|
|
273
197
|
export function validateGraphRef(input) {
|
|
274
198
|
return { path: graphPathFor(input) };
|
|
275
199
|
}
|
|
276
200
|
/** Suppress unused import warnings. */
|
|
277
|
-
void isAbsolute;
|
|
278
201
|
void dirname;
|
|
@@ -16,13 +16,13 @@ export const TERMINAL_REASONS = [
|
|
|
16
16
|
'outer-session-mismatch',
|
|
17
17
|
'parent-acked-no-envelope',
|
|
18
18
|
'graph-corrupted',
|
|
19
|
-
'unknown'
|
|
19
|
+
'unknown'
|
|
20
20
|
];
|
|
21
21
|
export const LEASE_STATUSES = [
|
|
22
22
|
'preparing',
|
|
23
23
|
'running',
|
|
24
24
|
'terminalized',
|
|
25
|
-
'lost'
|
|
25
|
+
'lost'
|
|
26
26
|
];
|
|
27
27
|
export const GRAPH_NODE_STATUSES = [
|
|
28
28
|
'prepared',
|
|
@@ -31,7 +31,7 @@ export const GRAPH_NODE_STATUSES = [
|
|
|
31
31
|
'envelope-received',
|
|
32
32
|
'consumed-by-parent',
|
|
33
33
|
'terminalized',
|
|
34
|
-
'lost'
|
|
34
|
+
'lost'
|
|
35
35
|
];
|
|
36
36
|
/**
|
|
37
37
|
* `id` regex: ASCII letters, digits, dot, underscore, hyphen; 1-200 chars.
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
* production replacement for the previous lease-age `inFlightBatch`
|
|
9
9
|
* computation in `auto-compact-orchestrator.ts`.
|
|
10
10
|
*/
|
|
11
|
+
import { isArray } from '../../shared/array-guards.js';
|
|
11
12
|
export const FRESH_RUNNING_THRESHOLD_MS = 30 * 60 * 1000; // 30 minutes
|
|
12
13
|
export const PEAKS_HEARTBEAT_MISSING = 'PEAKS_HEARTBEAT_MISSING';
|
|
13
14
|
export const PEAKS_GRAPH_REF_BROKEN = 'PEAKS_GRAPH_REF_BROKEN';
|
|
@@ -18,7 +19,7 @@ const NON_RUNNING = new Set([
|
|
|
18
19
|
'envelope-received',
|
|
19
20
|
'consumed-by-parent',
|
|
20
21
|
'terminalized',
|
|
21
|
-
'lost'
|
|
22
|
+
'lost'
|
|
22
23
|
]);
|
|
23
24
|
export function probeInFlightBatch(input) {
|
|
24
25
|
const nowMs = new Date(input.now).getTime();
|
|
@@ -30,15 +31,19 @@ export function probeInFlightBatch(input) {
|
|
|
30
31
|
errors.push({
|
|
31
32
|
code: PEAKS_GRAPH_REF_BROKEN,
|
|
32
33
|
message: 'corrupt or missing graph',
|
|
33
|
-
...(graph.graphRef ? { graphRef: graph.graphRef } : {})
|
|
34
|
+
...(graph.graphRef ? { graphRef: graph.graphRef } : {})
|
|
34
35
|
});
|
|
35
36
|
continue;
|
|
36
37
|
}
|
|
37
|
-
|
|
38
|
+
// `isArray` (not `Array.isArray`, typed `arg is any[]`), so `graph.nodes`
|
|
39
|
+
// keeps its declared `ReadonlyArray<{...}>` and the loop below reads typed
|
|
40
|
+
// `node` fields. The `!graph.nodes` half already covers undefined. See
|
|
41
|
+
// `src/shared/array-guards.ts`.
|
|
42
|
+
if (!graph.nodes || !isArray(graph.nodes)) {
|
|
38
43
|
errors.push({
|
|
39
44
|
code: PEAKS_GRAPH_CORRUPTED,
|
|
40
45
|
message: 'graph.nodes missing',
|
|
41
|
-
...(graph.graphRef ? { graphRef: graph.graphRef } : {})
|
|
46
|
+
...(graph.graphRef ? { graphRef: graph.graphRef } : {})
|
|
42
47
|
});
|
|
43
48
|
continue;
|
|
44
49
|
}
|
|
@@ -49,7 +54,7 @@ export function probeInFlightBatch(input) {
|
|
|
49
54
|
warnings.push({
|
|
50
55
|
code: PEAKS_HEARTBEAT_MISSING,
|
|
51
56
|
message: 'running node missing lastHeartbeat',
|
|
52
|
-
...(node.id ? { nodeId: node.id } : {})
|
|
57
|
+
...(node.id ? { nodeId: node.id } : {})
|
|
53
58
|
});
|
|
54
59
|
continue;
|
|
55
60
|
}
|
|
@@ -58,7 +63,7 @@ export function probeInFlightBatch(input) {
|
|
|
58
63
|
warnings.push({
|
|
59
64
|
code: PEAKS_HEARTBEAT_MISSING,
|
|
60
65
|
message: 'heartbeat unparseable',
|
|
61
|
-
...(node.id ? { nodeId: node.id } : {})
|
|
66
|
+
...(node.id ? { nodeId: node.id } : {})
|
|
62
67
|
});
|
|
63
68
|
continue;
|
|
64
69
|
}
|
|
@@ -79,7 +84,9 @@ export function probeInFlightBatch(input) {
|
|
|
79
84
|
errors,
|
|
80
85
|
reason: inFlight
|
|
81
86
|
? 'fresh-running-node'
|
|
82
|
-
:
|
|
87
|
+
: errors.length > 0
|
|
88
|
+
? 'corrupt-graphs'
|
|
89
|
+
: 'no-fresh-running-node'
|
|
83
90
|
};
|
|
84
91
|
}
|
|
85
92
|
void NON_RUNNING;
|
|
@@ -53,7 +53,11 @@ export function resolveWorkflow(projectRoot, id) {
|
|
|
53
53
|
return {
|
|
54
54
|
source: { kind: 'missing' },
|
|
55
55
|
spec: emptySpec(id),
|
|
56
|
-
lint: {
|
|
56
|
+
lint: {
|
|
57
|
+
ok: false,
|
|
58
|
+
errors: [`workflow "${id}" not found in project, global, or bundled locations`],
|
|
59
|
+
warnings: []
|
|
60
|
+
}
|
|
57
61
|
};
|
|
58
62
|
}
|
|
59
63
|
export function planWorkflow(spec, source) {
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
* Anti-fake-green rule: this module never imports a vendor env var.
|
|
10
10
|
* The vendor signal lives entirely in the IDE adapters.
|
|
11
11
|
*/
|
|
12
|
-
import { TERMINAL_REASONS
|
|
13
|
-
import { PEAKS_NODE_TRANSITION_INVALID, PEAKS_NODE_EXISTS, PEAKS_DEPENDENCY_NOT_CONSUMED, PEAKS_GRAPH_CYCLE, PEAKS_GRAPH_NODE_REQUIRED, PEAKS_GRAPH_NODE_KIND_INVALID, PEAKS_GRAPH_CORRUPTED, PEAKS_GRAPH_REF_BROKEN, PEAKS_ENVELOPE_NOT_RECEIVED, PEAKS_ENVELOPE_GRAPH_MISMATCH, PEAKS_TERMINAL_REASON_INVALID
|
|
12
|
+
import { TERMINAL_REASONS } from './workflow-graph-types.js';
|
|
13
|
+
import { PEAKS_NODE_TRANSITION_INVALID, PEAKS_NODE_EXISTS, PEAKS_DEPENDENCY_NOT_CONSUMED, PEAKS_GRAPH_CYCLE, PEAKS_GRAPH_NODE_REQUIRED, PEAKS_GRAPH_NODE_KIND_INVALID, PEAKS_GRAPH_CORRUPTED, PEAKS_GRAPH_REF_BROKEN, PEAKS_ENVELOPE_NOT_RECEIVED, PEAKS_ENVELOPE_GRAPH_MISMATCH, PEAKS_TERMINAL_REASON_INVALID } from './workflow-graph-store.js';
|
|
14
14
|
function lifeError(code, message) {
|
|
15
15
|
const err = new Error(message);
|
|
16
16
|
err.name = 'LifecycleError';
|
|
@@ -22,7 +22,7 @@ const LEASE_FROM_BY_TO = {
|
|
|
22
22
|
preparing: ['running', 'terminalized', 'lost'],
|
|
23
23
|
running: ['terminalized', 'lost'],
|
|
24
24
|
terminalized: [],
|
|
25
|
-
lost: []
|
|
25
|
+
lost: []
|
|
26
26
|
};
|
|
27
27
|
export function transitionLease(from, to, input = {}) {
|
|
28
28
|
const allowed = LEASE_FROM_BY_TO[from] ?? [];
|
|
@@ -44,7 +44,8 @@ export function transitionLease(from, to, input = {}) {
|
|
|
44
44
|
throw lifeError(PEAKS_TERMINAL_REASON_INVALID, `terminalReason missing or invalid: ${String(reason)}`);
|
|
45
45
|
}
|
|
46
46
|
result.terminalReason = reason;
|
|
47
|
-
result.terminalAt =
|
|
47
|
+
result.terminalAt =
|
|
48
|
+
typeof input.terminalAt === 'string' ? input.terminalAt : new Date().toISOString();
|
|
48
49
|
if (to === 'terminalized' && reason === 'unknown') {
|
|
49
50
|
// `success` is the only valid success reason for terminalized; anything
|
|
50
51
|
// else maps to `lost` per RD §3.
|
|
@@ -58,16 +59,15 @@ export function transitionLease(from, to, input = {}) {
|
|
|
58
59
|
result.lastHeartbeat = input.lastHeartbeat;
|
|
59
60
|
}
|
|
60
61
|
else if (to === 'running') {
|
|
61
|
-
result.lastHeartbeat =
|
|
62
|
-
? input.lastHeartbeat
|
|
63
|
-
: new Date().toISOString();
|
|
62
|
+
result.lastHeartbeat =
|
|
63
|
+
typeof input.lastHeartbeat === 'string' ? input.lastHeartbeat : new Date().toISOString();
|
|
64
64
|
}
|
|
65
65
|
// Caller-scoped terminalization: if expectedCallerId was supplied and
|
|
66
66
|
// doesn't match the input's callerId, fail closed (caller cannot clear a
|
|
67
67
|
// different caller's lease).
|
|
68
|
-
if (typeof input.expectedCallerId === 'string'
|
|
69
|
-
|
|
70
|
-
|
|
68
|
+
if (typeof input.expectedCallerId === 'string' &&
|
|
69
|
+
typeof input.callerId === 'string' &&
|
|
70
|
+
input.callerId !== input.expectedCallerId) {
|
|
71
71
|
throw lifeError(PEAKS_NODE_TRANSITION_INVALID, `callerId ${input.callerId} != expected ${input.expectedCallerId}`);
|
|
72
72
|
}
|
|
73
73
|
// ttl-expired requires both age thresholds to hold (RD §3).
|
|
@@ -92,7 +92,7 @@ const NODE_FROM_BY_TO = {
|
|
|
92
92
|
'envelope-received': ['consumed-by-parent', 'lost'],
|
|
93
93
|
'consumed-by-parent': ['terminalized'],
|
|
94
94
|
terminalized: [],
|
|
95
|
-
lost: []
|
|
95
|
+
lost: []
|
|
96
96
|
};
|
|
97
97
|
export function transitionNode(from, to, input = {}) {
|
|
98
98
|
// Graph corruption fires BEFORE the transition guard so a caller
|
|
@@ -119,7 +119,9 @@ export function transitionNode(from, to, input = {}) {
|
|
|
119
119
|
if (to === 'envelope-received') {
|
|
120
120
|
const nodeDispatchRef = typeof input.dispatchRef === 'string' ? input.dispatchRef : null;
|
|
121
121
|
const envelopeDispatchRef = typeof input.envelopeDispatchRef === 'string' ? input.envelopeDispatchRef : null;
|
|
122
|
-
if (nodeDispatchRef !== null &&
|
|
122
|
+
if (nodeDispatchRef !== null &&
|
|
123
|
+
envelopeDispatchRef !== null &&
|
|
124
|
+
nodeDispatchRef !== envelopeDispatchRef) {
|
|
123
125
|
throw lifeError(PEAKS_ENVELOPE_GRAPH_MISMATCH, `dispatchRef mismatch: ${nodeDispatchRef} vs ${envelopeDispatchRef}`);
|
|
124
126
|
}
|
|
125
127
|
}
|
|
@@ -149,9 +151,8 @@ export function transitionNode(from, to, input = {}) {
|
|
|
149
151
|
result.lastHeartbeat = input.lastHeartbeat;
|
|
150
152
|
}
|
|
151
153
|
else if (to === 'running' || to === 'dispatched') {
|
|
152
|
-
result.lastHeartbeat =
|
|
153
|
-
? input.lastHeartbeat
|
|
154
|
-
: new Date().toISOString();
|
|
154
|
+
result.lastHeartbeat =
|
|
155
|
+
typeof input.lastHeartbeat === 'string' ? input.lastHeartbeat : new Date().toISOString();
|
|
155
156
|
}
|
|
156
157
|
return result;
|
|
157
158
|
}
|
|
@@ -233,7 +234,7 @@ export function buildGraphNode(input) {
|
|
|
233
234
|
...(input.dispatchRef ? { dispatchRef: input.dispatchRef } : {}),
|
|
234
235
|
...(input.lastHeartbeat ? { lastHeartbeat: input.lastHeartbeat } : {}),
|
|
235
236
|
...(input.ackStatus ? { ackStatus: input.ackStatus } : {}),
|
|
236
|
-
dependsOn: input.dependsOn ?? []
|
|
237
|
+
dependsOn: input.dependsOn ?? []
|
|
237
238
|
};
|
|
238
239
|
}
|
|
239
240
|
export function resolveDispatchBinding(input) {
|
|
@@ -272,7 +273,7 @@ export function prepareNodeAction(input) {
|
|
|
272
273
|
...(input.dispatchRef ? { dispatchRef: input.dispatchRef } : {}),
|
|
273
274
|
...(input.lastHeartbeat ? { lastHeartbeat: input.lastHeartbeat } : {}),
|
|
274
275
|
...(input.graphNode?.ackStatus ? { ackStatus: input.graphNode.ackStatus } : {}),
|
|
275
|
-
dependsOn
|
|
276
|
+
dependsOn
|
|
276
277
|
});
|
|
277
278
|
}
|
|
278
279
|
export function dispatchNode(input) {
|
|
@@ -281,7 +282,7 @@ export function dispatchNode(input) {
|
|
|
281
282
|
}
|
|
282
283
|
return transitionNode('prepared', 'dispatched', {
|
|
283
284
|
graphNode: input.graphNode,
|
|
284
|
-
dispatchRef: input.dispatchRef
|
|
285
|
+
dispatchRef: input.dispatchRef
|
|
285
286
|
});
|
|
286
287
|
}
|
|
287
288
|
export function heartbeatNode(input) {
|
|
@@ -291,7 +292,7 @@ export function heartbeatNode(input) {
|
|
|
291
292
|
graphNode: input.graphNode,
|
|
292
293
|
firstHeartbeat: true,
|
|
293
294
|
lastHeartbeat: input.lastHeartbeat,
|
|
294
|
-
dispatchRef: input.dispatchRef
|
|
295
|
+
dispatchRef: input.dispatchRef
|
|
295
296
|
});
|
|
296
297
|
}
|
|
297
298
|
// Subsequent heartbeat — idempotent self-update, only bumps timestamp.
|
|
@@ -299,14 +300,14 @@ export function heartbeatNode(input) {
|
|
|
299
300
|
graphNode: input.graphNode,
|
|
300
301
|
firstHeartbeat: false,
|
|
301
302
|
lastHeartbeat: input.lastHeartbeat,
|
|
302
|
-
probe: false
|
|
303
|
+
probe: false
|
|
303
304
|
});
|
|
304
305
|
}
|
|
305
306
|
export function writeEnvelope(input) {
|
|
306
307
|
return transitionNode('running', 'envelope-received', {
|
|
307
308
|
graphNode: input.graphNode,
|
|
308
309
|
dispatchRef: input.dispatchRef,
|
|
309
|
-
envelopeDispatchRef: input.envelopeDispatchRef ?? input.dispatchRef
|
|
310
|
+
envelopeDispatchRef: input.envelopeDispatchRef ?? input.dispatchRef
|
|
310
311
|
});
|
|
311
312
|
}
|
|
312
313
|
export function ackNode(input) {
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* workflow-presence-lifecycle-types.ts — input/result/error interfaces of
|
|
3
|
+
* the workflow presence lifecycle orchestrator.
|
|
4
|
+
*
|
|
5
|
+
* Extracted verbatim from `workflow-presence-lifecycle.ts` for the 300-line
|
|
6
|
+
* file-size cap (`.peaks/docs/lint-gate.md` §4 row 5). The original module
|
|
7
|
+
* re-exports every name below, so importers keep using that path unchanged.
|
|
8
|
+
*/
|
|
9
|
+
import { type WorkflowGraph, type WorkflowId, type TerminalReason } from './workflow-graph-types.js';
|
|
10
|
+
import type { SkillPresenceLease, PresenceIndex } from '../skills/presence-lease-types.js';
|
|
11
|
+
export interface InitWorkflowInput {
|
|
12
|
+
readonly projectRoot: string;
|
|
13
|
+
readonly sessionId: string;
|
|
14
|
+
readonly callerId: string;
|
|
15
|
+
readonly skill: string;
|
|
16
|
+
readonly workflowId?: WorkflowId;
|
|
17
|
+
readonly parentWorkflowId?: WorkflowId;
|
|
18
|
+
readonly graphRef?: string;
|
|
19
|
+
readonly depth?: number;
|
|
20
|
+
readonly now?: string;
|
|
21
|
+
}
|
|
22
|
+
export interface InitWorkflowResult {
|
|
23
|
+
readonly workflowId: WorkflowId;
|
|
24
|
+
readonly graphRef: string;
|
|
25
|
+
readonly graph: WorkflowGraph;
|
|
26
|
+
readonly lease: SkillPresenceLease;
|
|
27
|
+
readonly index: PresenceIndex;
|
|
28
|
+
readonly events: ReadonlyArray<Record<string, unknown>>;
|
|
29
|
+
}
|
|
30
|
+
export interface TerminalizeWorkflowInput {
|
|
31
|
+
readonly projectRoot: string;
|
|
32
|
+
readonly sessionId: string;
|
|
33
|
+
readonly callerId: string;
|
|
34
|
+
readonly workflowId: WorkflowId;
|
|
35
|
+
readonly graphRef: string;
|
|
36
|
+
readonly reason: TerminalReason;
|
|
37
|
+
readonly requireConsumed?: boolean;
|
|
38
|
+
readonly now?: string;
|
|
39
|
+
}
|
|
40
|
+
export interface TerminalizeWorkflowResult {
|
|
41
|
+
readonly lease: SkillPresenceLease;
|
|
42
|
+
readonly graph: WorkflowGraph;
|
|
43
|
+
readonly events: ReadonlyArray<Record<string, unknown>>;
|
|
44
|
+
readonly indexCleared: boolean;
|
|
45
|
+
}
|
|
46
|
+
export interface TerminalizeError extends Error {
|
|
47
|
+
readonly code: string;
|
|
48
|
+
readonly successEventCount?: number;
|
|
49
|
+
readonly consistent?: boolean;
|
|
50
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|