peaks-loop 4.0.53 → 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 +85 -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 +175 -11
- 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 +81 -22
- 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 +69 -34
- 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 +21 -2
- 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.d.ts +23 -0
- package/dist/cli/commands/sub-agent-shared.js +40 -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 +44 -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/enforcer-liveness.js +1 -1
- 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.d.ts +44 -0
- package/dist/services/codegraph/codegraph-config-repair-writer.js +116 -14
- package/dist/services/codegraph/codegraph-exclude-integrity.js +4 -1
- package/dist/services/codegraph/codegraph-exclude-repair.d.ts +23 -1
- package/dist/services/codegraph/codegraph-exclude-repair.js +7 -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 +16 -189
- 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/index.d.ts +1 -1
- package/dist/services/memory/project-memory-service/index.js +1 -1
- 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.d.ts +59 -0
- package/dist/services/memory/project-memory-service/store/atomic-write.js +189 -17
- 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/gate-evidence-derivation.d.ts +160 -0
- package/dist/services/prd/gate-evidence-derivation.js +270 -0
- package/dist/services/prd/handoff-auto-regen.js +13 -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.d.ts +1 -1
- package/dist/services/prd/handoff-frontmatter.js +63 -1
- package/dist/services/prd/handoff-gate-evidence.d.ts +95 -1
- package/dist/services/prd/handoff-gate-evidence.js +125 -57
- 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 +22 -38
- package/dist/services/prd/handoff-service.js +38 -127
- package/dist/services/prd/handoff-types.d.ts +40 -0
- package/dist/services/prd/handoff-types.js +28 -1
- 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.d.ts +7 -0
- package/dist/services/prd/project-scan-reader.js +8 -5
- 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.d.ts +36 -8
- package/dist/services/rd/reviewer-dispatch-policy.js +40 -15
- 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 +32 -9
- 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/bee/peaks-rd/SKILL.md +1 -1
- package/skills/bee/peaks-rd/references/rd-fanout-contracts.md +26 -10
- package/skills/bee/peaks-rd/references/rd-sub-agent-dispatch.md +1 -1
- package/skills/bee/peaks-rd/references/writing-handoff-frontmatter.md +6 -1
- package/skills/peaks-code/SKILL.md +1 -1
- package/skills/peaks-code/references/periodic-checkpoint.md +7 -5
- package/skills/peaks-code/references/startup-sequence.md +1 -1
- package/skills/peaks-final-review/SKILL.md +1 -1
- /package/{docs → contracts}/test-style-contract.md +0 -0
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Crystallization evidence-brief schema — hoisted VERBATIM out of
|
|
3
|
+
* `crystallization-types.ts` so that file clears the 300 raw-line cap.
|
|
4
|
+
* Nothing here was rewritten: same constraints, same `.superRefine`
|
|
5
|
+
* guard, same issue message, same MISSING_BRIEF_SECTION mapping.
|
|
6
|
+
*
|
|
7
|
+
* `crystallization-types.ts` re-exports every public name from this
|
|
8
|
+
* path, so `EvidenceBriefSchema` / `EvidenceBrief` /
|
|
9
|
+
* `hasAllFourBriefSections` / `parseEvidenceBrief` /
|
|
10
|
+
* `safeParseEvidenceBrief` stay importable from their original module
|
|
11
|
+
* and from `crystallization/index.js`.
|
|
12
|
+
*/
|
|
13
|
+
import { z } from 'zod';
|
|
14
|
+
/* ---------------------------------------------------------------------- */
|
|
15
|
+
/* PRD-002b slice 2 — schema-limit constants extracted from inline */
|
|
16
|
+
/* `.max(N)` / `.length(N)` calls so the no-magic-numbers rule stops */
|
|
17
|
+
/* flagging the constraint values. Names describe the field, not the */
|
|
18
|
+
/* number. Bytewise-identical to the original literals. */
|
|
19
|
+
/* ---------------------------------------------------------------------- */
|
|
20
|
+
/** Brief-section cap; the event-level free-text columns in
|
|
21
|
+
* `crystallization-types.ts` reuse the same bound. */
|
|
22
|
+
export const CRYS_BRIEF_SECTION_MAX = 4000;
|
|
23
|
+
/* ---------------------------------------------------------------------- */
|
|
24
|
+
/* EvidenceBrief — §4.7 / §10 RL-7. REQUIRED 4-section shape. */
|
|
25
|
+
/* ---------------------------------------------------------------------- */
|
|
26
|
+
/**
|
|
27
|
+
* The four brief sections. Spec §4.7 lists them as NL short
|
|
28
|
+
* sections; the service layer mandates 1-2 sentences (what_action
|
|
29
|
+
* is a single sentence per the spec). The Zod constraints below
|
|
30
|
+
* enforce NON-EMPTY strings. The brief-section guard (see
|
|
31
|
+
* `EvidenceBriefSchema.refine` below) rejects any payload missing
|
|
32
|
+
* one of the four keys, regardless of section content — it is
|
|
33
|
+
* the canonical hard gate per spec §10 RL-7.
|
|
34
|
+
*/
|
|
35
|
+
const BriefSectionSchema = z
|
|
36
|
+
.string()
|
|
37
|
+
.trim()
|
|
38
|
+
.min(1, 'brief section must be non-empty natural language')
|
|
39
|
+
.max(CRYS_BRIEF_SECTION_MAX);
|
|
40
|
+
/**
|
|
41
|
+
* EvidenceBrief — the 4-section brief (spec §4.7).
|
|
42
|
+
*
|
|
43
|
+
* Hard shape invariant: ALL FOUR KEYS must be present at parse
|
|
44
|
+
* time, with non-empty NL content. The `.refine(...)` guard is
|
|
45
|
+
* what makes a brief a "brief" — without it, the projection is
|
|
46
|
+
* not a brief and the recommendation MUST NOT be rendered
|
|
47
|
+
* (service layer enforces this; Zod makes it a parse-time
|
|
48
|
+
* guarantee).
|
|
49
|
+
*
|
|
50
|
+
* Field semantics:
|
|
51
|
+
* - what_happened — 1-2 sentence factual account of the run.
|
|
52
|
+
* - why_it_matters — 1-2 sentence explanation of why this is
|
|
53
|
+
* worth promoting.
|
|
54
|
+
* - what_learned — 1-2 sentence learning: failure modes
|
|
55
|
+
* encoded, preferences extracted.
|
|
56
|
+
* - what_action — 1-sentence recommended action with
|
|
57
|
+
* rationale.
|
|
58
|
+
*/
|
|
59
|
+
export const EvidenceBriefSchema = z
|
|
60
|
+
.object({
|
|
61
|
+
what_happened: BriefSectionSchema,
|
|
62
|
+
why_it_matters: BriefSectionSchema,
|
|
63
|
+
what_learned: BriefSectionSchema,
|
|
64
|
+
what_action: BriefSectionSchema
|
|
65
|
+
})
|
|
66
|
+
.strict()
|
|
67
|
+
.superRefine((b, ctx) => {
|
|
68
|
+
const ok = typeof b.what_happened === 'string' &&
|
|
69
|
+
b.what_happened.trim().length > 0 &&
|
|
70
|
+
typeof b.why_it_matters === 'string' &&
|
|
71
|
+
b.why_it_matters.trim().length > 0 &&
|
|
72
|
+
typeof b.what_learned === 'string' &&
|
|
73
|
+
b.what_learned.trim().length > 0 &&
|
|
74
|
+
typeof b.what_action === 'string' &&
|
|
75
|
+
b.what_action.trim().length > 0;
|
|
76
|
+
if (!ok) {
|
|
77
|
+
ctx.addIssue({
|
|
78
|
+
code: 'custom',
|
|
79
|
+
path: [],
|
|
80
|
+
message: 'evidence_brief must contain all 4 sections (what_happened, why_it_matters, what_learned, what_action) with non-empty content (spec §4.7 / RL-7)'
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
/**
|
|
85
|
+
* Helper for downstream code that needs to know whether a parsed
|
|
86
|
+
* brief satisfies the 4-section rule. Useful for the CLI when a
|
|
87
|
+
* payload arrived from the LLM and the brief-section guard has
|
|
88
|
+
* already passed — it returns the section count, always 4 here.
|
|
89
|
+
*/
|
|
90
|
+
export function hasAllFourBriefSections(brief) {
|
|
91
|
+
return (typeof brief.what_happened === 'string' &&
|
|
92
|
+
brief.what_happened.trim().length > 0 &&
|
|
93
|
+
typeof brief.why_it_matters === 'string' &&
|
|
94
|
+
brief.why_it_matters.trim().length > 0 &&
|
|
95
|
+
typeof brief.what_learned === 'string' &&
|
|
96
|
+
brief.what_learned.trim().length > 0 &&
|
|
97
|
+
typeof brief.what_action === 'string' &&
|
|
98
|
+
brief.what_action.trim().length > 0);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Convenience: strict-parse an unknown payload as a standalone
|
|
102
|
+
* EvidenceBrief. Throws ZodError on failure.
|
|
103
|
+
*/
|
|
104
|
+
export function parseEvidenceBrief(input) {
|
|
105
|
+
return EvidenceBriefSchema.parse(input);
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Safe-parse twin of parseEvidenceBrief. Same Result-like envelope
|
|
109
|
+
* shape; same MISSING_BRIEF_SECTION code mapping (covers both
|
|
110
|
+
* refine-guard failures and per-section missing/empty failures).
|
|
111
|
+
*/
|
|
112
|
+
export function safeParseEvidenceBrief(input) {
|
|
113
|
+
const r = EvidenceBriefSchema.safeParse(input);
|
|
114
|
+
if (r.success)
|
|
115
|
+
return { ok: true, row: r.data };
|
|
116
|
+
const findings = r.error.issues.map((i) => ({
|
|
117
|
+
path: i.path.join('.'),
|
|
118
|
+
message: i.message
|
|
119
|
+
}));
|
|
120
|
+
const isBrief = isBriefSectionFailure(r.error.issues);
|
|
121
|
+
return isBrief ? { ok: false, code: 'MISSING_BRIEF_SECTION', findings } : { ok: false, findings };
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Decide whether a ZodIssue[] is a "brief section" failure: every
|
|
125
|
+
* issue points at one of the four required keys (the section is
|
|
126
|
+
* missing, or empty after trim), OR the explicit refine-guard issue
|
|
127
|
+
* is present. Used by both `safeParseCrystallizationEvent` and
|
|
128
|
+
* `safeParseEvidenceBrief` so callers see a single
|
|
129
|
+
* `MISSING_BRIEF_SECTION` code regardless of which Zod boundary
|
|
130
|
+
* caught the failure.
|
|
131
|
+
*/
|
|
132
|
+
export function isBriefSectionFailure(issues) {
|
|
133
|
+
if (issues.length === 0)
|
|
134
|
+
return false;
|
|
135
|
+
// Explicit refine guard (EvidenceBriefSchema.refine message).
|
|
136
|
+
if (issues.some((i) => i.message.includes('evidence_brief must contain all 4 sections'))) {
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
139
|
+
// Per-section Zod failures (min(1) on each section key, or
|
|
140
|
+
// too_small, or invalid_type). Each issue's path will be either
|
|
141
|
+
// the section key (`what_happened`) OR the parent `evidence_brief`
|
|
142
|
+
// — Zod reports missing-key issues against the parent object.
|
|
143
|
+
return issues.every((i) => {
|
|
144
|
+
const path = i.path.join('.');
|
|
145
|
+
if (path === 'evidence_brief')
|
|
146
|
+
return true;
|
|
147
|
+
if (i.path.length >= 2 && i.path[0] === 'evidence_brief') {
|
|
148
|
+
const key = i.path[i.path.length - 1];
|
|
149
|
+
return (key === 'what_happened' ||
|
|
150
|
+
key === 'why_it_matters' ||
|
|
151
|
+
key === 'what_learned' ||
|
|
152
|
+
key === 'what_action');
|
|
153
|
+
}
|
|
154
|
+
return (path === 'what_happened' ||
|
|
155
|
+
path === 'why_it_matters' ||
|
|
156
|
+
path === 'what_learned' ||
|
|
157
|
+
path === 'what_action');
|
|
158
|
+
});
|
|
159
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type Database from
|
|
2
|
-
import { z } from
|
|
3
|
-
import { type CrystallizationEvent, type CrystallizationEventInput, type CrystallizationEventStatus, type EvidenceBrief } from
|
|
4
|
-
import { listCrystallizationEvents } from
|
|
1
|
+
import type Database from 'better-sqlite3';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { type CrystallizationEvent, type CrystallizationEventInput, type CrystallizationEventStatus, type EvidenceBrief } from './crystallization-types.js';
|
|
4
|
+
import { listCrystallizationEvents } from './crystallization-store.js';
|
|
5
5
|
type LoopReleaseZodSchema = {
|
|
6
6
|
parse: (input: unknown) => unknown;
|
|
7
7
|
};
|
|
@@ -72,9 +72,9 @@ export declare const CrystallizationTaskStateSchema: z.ZodObject<{
|
|
|
72
72
|
evidence_collected: z.ZodLiteral<true>;
|
|
73
73
|
}, z.core.$strip>;
|
|
74
74
|
export type CrystallizationTaskState = z.infer<typeof CrystallizationTaskStateSchema>;
|
|
75
|
-
export type CrystallizationIntegrityErrorCode =
|
|
75
|
+
export type CrystallizationIntegrityErrorCode = 'CRYSTALLIZATION_PRE_RUN' | 'CRYSTALLIZATION_INVALID_TASK_STATE' | 'CRYSTALLIZATION_TX_FAILED' | 'MISSING_BRIEF_SECTION';
|
|
76
76
|
export declare class CrystallizationIntegrityError extends Error {
|
|
77
|
-
readonly code: CrystallizationIntegrityErrorCode |
|
|
77
|
+
readonly code: CrystallizationIntegrityErrorCode | 'MISSING_BRIEF_SECTION';
|
|
78
78
|
readonly findings: ReadonlyArray<{
|
|
79
79
|
path: string;
|
|
80
80
|
message: string;
|
|
@@ -115,7 +115,7 @@ export interface CrystallizePayload {
|
|
|
115
115
|
/** Optional user decision summary (spec §4.5). */
|
|
116
116
|
user_decision_summary?: string;
|
|
117
117
|
/** Trigger classification (spec §5.4). */
|
|
118
|
-
trigger: CrystallizationEventInput[
|
|
118
|
+
trigger: CrystallizationEventInput['trigger'];
|
|
119
119
|
}
|
|
120
120
|
/**
|
|
121
121
|
* Minimum bee_release payload the service needs to create a main bee
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { z, ZodError } from
|
|
2
|
-
import { CrystallizationEventSchema, EvidenceBriefSchema
|
|
3
|
-
import { BriefSectionError } from
|
|
4
|
-
import { CRYSTALLIZATION_SCHEMA_VERSION, ensureCrystallizationEventTable, getCrystallizationEvent, listCrystallizationEvents, newCrystallizationId, updateCrystallizationEventStatus
|
|
1
|
+
import { z, ZodError } from 'zod';
|
|
2
|
+
import { CrystallizationEventSchema, EvidenceBriefSchema } from './crystallization-types.js';
|
|
3
|
+
import { BriefSectionError } from './evidence-brief-builder.js';
|
|
4
|
+
import { CRYSTALLIZATION_SCHEMA_VERSION, ensureCrystallizationEventTable, getCrystallizationEvent, listCrystallizationEvents, newCrystallizationId, updateCrystallizationEventStatus } from './crystallization-store.js';
|
|
5
5
|
/**
|
|
6
6
|
* CrystallizationService — spec §5 (post-run crystallization)
|
|
7
7
|
* + §4.5 + §4.7 + §10 RL-2 / RL-3 / RL-7.
|
|
@@ -50,11 +50,11 @@ import { CRYSTALLIZATION_SCHEMA_VERSION, ensureCrystallizationEventTable, getCry
|
|
|
50
50
|
/* Pre-run task gate — AC-4 / RL-2 */
|
|
51
51
|
/* ---------------------------------------------------------------------- */
|
|
52
52
|
export const CRYSTALLIZATION_TASK_STATUSES = [
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
53
|
+
'completed',
|
|
54
|
+
'in_progress',
|
|
55
|
+
'scratch',
|
|
56
|
+
'blocked',
|
|
57
|
+
'failed'
|
|
58
58
|
];
|
|
59
59
|
/**
|
|
60
60
|
* The pre-run task state the service requires. Crystallization is
|
|
@@ -64,22 +64,22 @@ export const CRYSTALLIZATION_TASK_STATUSES = [
|
|
|
64
64
|
*/
|
|
65
65
|
export const CrystallizationTaskStateSchema = z.object({
|
|
66
66
|
task_id: z.string().trim().min(1).max(256),
|
|
67
|
-
task_status: z.literal(
|
|
68
|
-
error: () => "task_status must be 'completed' for crystallization (AC-4 / RL-2)"
|
|
67
|
+
task_status: z.literal('completed', {
|
|
68
|
+
error: () => "task_status must be 'completed' for crystallization (AC-4 / RL-2)"
|
|
69
69
|
}),
|
|
70
70
|
gates_passed: z.literal(true, {
|
|
71
|
-
error: () =>
|
|
71
|
+
error: () => 'gates_passed must be true for crystallization (AC-4 / RL-2)'
|
|
72
72
|
}),
|
|
73
73
|
evidence_collected: z.literal(true, {
|
|
74
|
-
error: () =>
|
|
75
|
-
})
|
|
74
|
+
error: () => 'evidence_collected must be true for crystallization (AC-4 / RL-2)'
|
|
75
|
+
})
|
|
76
76
|
});
|
|
77
77
|
export class CrystallizationIntegrityError extends Error {
|
|
78
78
|
code;
|
|
79
79
|
findings;
|
|
80
80
|
constructor(code, message, findings = []) {
|
|
81
81
|
super(message);
|
|
82
|
-
this.name =
|
|
82
|
+
this.name = 'CrystallizationIntegrityError';
|
|
83
83
|
this.code = code;
|
|
84
84
|
this.findings = findings;
|
|
85
85
|
}
|
|
@@ -99,22 +99,20 @@ export class CrystallizationIntegrityError extends Error {
|
|
|
99
99
|
const BeeNameSchema = z
|
|
100
100
|
.string()
|
|
101
101
|
.trim()
|
|
102
|
-
.min(1,
|
|
102
|
+
.min(1, 'bee_name is required')
|
|
103
103
|
.max(200)
|
|
104
104
|
.regex(/^[a-z0-9][a-z0-9._-]*$/, {
|
|
105
|
-
message:
|
|
105
|
+
message: 'bee_name must be kebab-/snake-case starting with a lowercase letter or digit'
|
|
106
106
|
});
|
|
107
107
|
const BeeCrystallizeInputSchema = z.object({
|
|
108
108
|
bee_name: BeeNameSchema,
|
|
109
|
-
version: z
|
|
110
|
-
|
|
111
|
-
.regex(/^\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?$/, {
|
|
112
|
-
message: "version must be a semver string (e.g. 0.1.0)",
|
|
109
|
+
version: z.string().regex(/^\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?$/, {
|
|
110
|
+
message: 'version must be a semver string (e.g. 0.1.0)'
|
|
113
111
|
}),
|
|
114
112
|
description: z.string().trim().min(1).max(4000),
|
|
115
113
|
user_intent_raw: z.string().trim().max(4000).optional(),
|
|
116
114
|
parent_version: z.string().trim().max(64).optional(),
|
|
117
|
-
changelog: z.string().trim().max(8000).optional()
|
|
115
|
+
changelog: z.string().trim().max(8000).optional()
|
|
118
116
|
});
|
|
119
117
|
export class CrystallizationService {
|
|
120
118
|
db;
|
|
@@ -170,23 +168,23 @@ export class CrystallizationService {
|
|
|
170
168
|
catch (err) {
|
|
171
169
|
if (err instanceof ZodError) {
|
|
172
170
|
const findings = err.issues.map((i) => ({
|
|
173
|
-
path: i.path.join(
|
|
174
|
-
message: i.message
|
|
171
|
+
path: i.path.join('.'),
|
|
172
|
+
message: i.message
|
|
175
173
|
}));
|
|
176
174
|
const first = err.issues[0];
|
|
177
|
-
throw new CrystallizationIntegrityError(
|
|
175
|
+
throw new CrystallizationIntegrityError('CRYSTALLIZATION_PRE_RUN', `pre-run gate failed: ${first?.message ?? 'invalid task state'}`, findings);
|
|
178
176
|
}
|
|
179
177
|
throw err;
|
|
180
178
|
}
|
|
181
179
|
// Defense in depth — re-assert at the service boundary.
|
|
182
|
-
if (parsed.task_status !==
|
|
180
|
+
if (parsed.task_status !== 'completed' ||
|
|
183
181
|
parsed.gates_passed !== true ||
|
|
184
182
|
parsed.evidence_collected !== true) {
|
|
185
|
-
throw new CrystallizationIntegrityError(
|
|
183
|
+
throw new CrystallizationIntegrityError('CRYSTALLIZATION_PRE_RUN', 'pre-run gate failed: task must be completed with gates_passed=true AND evidence_collected=true (AC-4 / RL-2)', [
|
|
186
184
|
{
|
|
187
|
-
path:
|
|
188
|
-
message: "task_status must equal 'completed' and gates_passed and evidence_collected must both be true"
|
|
189
|
-
}
|
|
185
|
+
path: 'task',
|
|
186
|
+
message: "task_status must equal 'completed' and gates_passed and evidence_collected must both be true"
|
|
187
|
+
}
|
|
190
188
|
]);
|
|
191
189
|
}
|
|
192
190
|
return parsed;
|
|
@@ -235,11 +233,11 @@ export class CrystallizationService {
|
|
|
235
233
|
if (err instanceof ZodError || err instanceof BriefSectionError) {
|
|
236
234
|
const findings = err instanceof ZodError
|
|
237
235
|
? err.issues.map((i) => ({
|
|
238
|
-
path: i.path.join(
|
|
239
|
-
message: i.message
|
|
236
|
+
path: i.path.join('.'),
|
|
237
|
+
message: i.message
|
|
240
238
|
}))
|
|
241
239
|
: err.findings;
|
|
242
|
-
throw new CrystallizationIntegrityError(
|
|
240
|
+
throw new CrystallizationIntegrityError('MISSING_BRIEF_SECTION', 'evidence_brief is missing at least one of the 4 required sections (spec §4.7 / RL-7)', [...findings]);
|
|
243
241
|
}
|
|
244
242
|
throw err;
|
|
245
243
|
}
|
|
@@ -252,14 +250,16 @@ export class CrystallizationService {
|
|
|
252
250
|
// account the LLM authored). We validate the shape WITHOUT
|
|
253
251
|
// bee_release_id (which is filled in by the bee insert below),
|
|
254
252
|
// then validate the final tuple after the SQL writes.
|
|
255
|
-
const relationInputShape = this.opts.loopBeeRelationSchema
|
|
253
|
+
const relationInputShape = this.opts.loopBeeRelationSchema
|
|
254
|
+
.omit({
|
|
256
255
|
id: true,
|
|
257
256
|
created_at: true,
|
|
258
|
-
bee_release_id: true
|
|
259
|
-
})
|
|
257
|
+
bee_release_id: true
|
|
258
|
+
})
|
|
259
|
+
.parse({
|
|
260
260
|
loop_release_id: loopRow.id,
|
|
261
|
-
role:
|
|
262
|
-
reason: payload.bee_relation_reason
|
|
261
|
+
role: 'main',
|
|
262
|
+
reason: payload.bee_relation_reason
|
|
263
263
|
});
|
|
264
264
|
const eventId = newCrystallizationId();
|
|
265
265
|
const eventCreatedAt = new Date().toISOString();
|
|
@@ -280,7 +280,7 @@ export class CrystallizationService {
|
|
|
280
280
|
user_intent_raw, description, parent_version, changelog,
|
|
281
281
|
shareable, desktop_visible
|
|
282
282
|
) VALUES (?, ?, 'user', ?, ?, ?, ?, ?, ?, 1, 1)`);
|
|
283
|
-
const beeInfo = beeInsert.run(beeRow.bee_name, beeRow.version, eventCreatedAt,
|
|
283
|
+
const beeInfo = beeInsert.run(beeRow.bee_name, beeRow.version, eventCreatedAt, 'llm', beeRow.user_intent_raw ?? null, beeRow.description, beeRow.parent_version ?? null, beeRow.changelog ?? null);
|
|
284
284
|
beeReleaseId = Number(beeInfo.lastInsertRowid);
|
|
285
285
|
// Update the bee_release_pointer row so the latest version is
|
|
286
286
|
// discoverable via list tooling.
|
|
@@ -296,18 +296,20 @@ export class CrystallizationService {
|
|
|
296
296
|
entrypoint_preamble, promotion, min_cycles,
|
|
297
297
|
requires_human, requires_smoke, retire_on_misses
|
|
298
298
|
) VALUES (?, ?, ?, '[]', '', 'candidate', NULL, 0, 0, NULL)`)
|
|
299
|
-
.run(beeReleaseId,
|
|
299
|
+
.run(beeReleaseId, 'peaks.bee/1', beeRow.description);
|
|
300
300
|
// 4. Insert the loop_bee_relation row (FKs now valid). Re-parse
|
|
301
301
|
// through the input schema so the bee_release_id is validated
|
|
302
302
|
// too — defense in depth. `id` is autoincrement (not in input).
|
|
303
|
-
const fullRelation = this.opts.loopBeeRelationSchema
|
|
303
|
+
const fullRelation = this.opts.loopBeeRelationSchema
|
|
304
|
+
.omit({
|
|
304
305
|
id: true,
|
|
305
|
-
created_at: true
|
|
306
|
-
})
|
|
306
|
+
created_at: true
|
|
307
|
+
})
|
|
308
|
+
.parse({
|
|
307
309
|
loop_release_id: relationInputShape.loop_release_id,
|
|
308
310
|
bee_release_id: beeReleaseId,
|
|
309
311
|
role: relationInputShape.role,
|
|
310
|
-
reason: relationInputShape.reason
|
|
312
|
+
reason: relationInputShape.reason
|
|
311
313
|
});
|
|
312
314
|
const relationRow = this.opts.insertLoopBeeRelation(this.db, fullRelation);
|
|
313
315
|
relationId = relationRow.id;
|
|
@@ -318,13 +320,13 @@ export class CrystallizationService {
|
|
|
318
320
|
evidence_brief: brief,
|
|
319
321
|
evidence_bullets: payload.evidence_bullets ?? [],
|
|
320
322
|
source_trace_pointers: payload.source_trace_pointers ?? [],
|
|
321
|
-
evaluator_summary: payload.evaluator_summary ??
|
|
322
|
-
user_decision_summary: payload.user_decision_summary ??
|
|
323
|
+
evaluator_summary: payload.evaluator_summary ?? '',
|
|
324
|
+
user_decision_summary: payload.user_decision_summary ?? '',
|
|
323
325
|
created_loop_release_id: loopReleaseId,
|
|
324
326
|
created_bee_release_id: beeReleaseId,
|
|
325
327
|
// updated_* are not set on a CREATE crystallization; they will
|
|
326
328
|
// be set on future UPDATE crystallizations.
|
|
327
|
-
lifecycle_status:
|
|
329
|
+
lifecycle_status: 'candidate'
|
|
328
330
|
};
|
|
329
331
|
const persisted = insertCrystallizationEventRaw(this.db, eventInput, eventId, eventCreatedAt);
|
|
330
332
|
eventPersistedId = persisted.id;
|
|
@@ -336,16 +338,15 @@ export class CrystallizationService {
|
|
|
336
338
|
// Map known SQLite constraint errors to friendlier codes; raise
|
|
337
339
|
// CrystallizationIntegrityError so the CLI can render the JSON
|
|
338
340
|
// envelope.
|
|
339
|
-
if (err instanceof CrystallizationIntegrityError ||
|
|
340
|
-
err instanceof BriefSectionError) {
|
|
341
|
+
if (err instanceof CrystallizationIntegrityError || err instanceof BriefSectionError) {
|
|
341
342
|
throw err;
|
|
342
343
|
}
|
|
343
344
|
const message = err instanceof Error ? err.message : String(err);
|
|
344
|
-
throw new CrystallizationIntegrityError(
|
|
345
|
+
throw new CrystallizationIntegrityError('CRYSTALLIZATION_TX_FAILED', `crystallization transaction failed: ${message}`, [
|
|
345
346
|
{
|
|
346
|
-
path:
|
|
347
|
-
message:
|
|
348
|
-
}
|
|
347
|
+
path: 'tx',
|
|
348
|
+
message: 'transaction rolled back; verify loop/bee ids are unique and FK targets exist'
|
|
349
|
+
}
|
|
349
350
|
]);
|
|
350
351
|
}
|
|
351
352
|
// Silence the unused-variable lint; the parsed task is the source
|
|
@@ -356,7 +357,7 @@ export class CrystallizationService {
|
|
|
356
357
|
bee_release_id: beeReleaseId,
|
|
357
358
|
loop_bee_relation_id: relationId,
|
|
358
359
|
crystallization_event_id: eventPersistedId,
|
|
359
|
-
loop_release_lifecycle_status:
|
|
360
|
+
loop_release_lifecycle_status: 'candidate'
|
|
360
361
|
};
|
|
361
362
|
}
|
|
362
363
|
}
|
|
@@ -370,7 +371,7 @@ function insertCrystallizationEventRaw(db, row, id, createdAt) {
|
|
|
370
371
|
...row,
|
|
371
372
|
id,
|
|
372
373
|
schema_version: CRYSTALLIZATION_SCHEMA_VERSION,
|
|
373
|
-
created_at: createdAt
|
|
374
|
+
created_at: createdAt
|
|
374
375
|
});
|
|
375
376
|
const stmt = db.prepare(`INSERT INTO crystallization_event (
|
|
376
377
|
id, trigger, evidence_brief_json, evidence_bullets_json,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type Database from
|
|
2
|
-
import { type CrystallizationEvent, type CrystallizationEventInput, type CrystallizationEventStatus } from
|
|
1
|
+
import type Database from 'better-sqlite3';
|
|
2
|
+
import { type CrystallizationEvent, type CrystallizationEventInput, type CrystallizationEventStatus } from './crystallization-types.js';
|
|
3
3
|
/**
|
|
4
4
|
* Low-level SQLite access for the `crystallization_event` table.
|
|
5
5
|
* The migration is registered with the existing `openStateDb()`
|
|
@@ -1,4 +1,23 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { parseJson } from '../../shared/json-parse.js';
|
|
3
|
+
import { CrystallizationEventSchema, EvidenceBriefSchema } from './crystallization-types.js';
|
|
4
|
+
/**
|
|
5
|
+
* The two string-list JSON columns of `crystallization_event`, as they come
|
|
6
|
+
* back OUT of SQLite.
|
|
7
|
+
*
|
|
8
|
+
* WHY THIS EXISTS (batch B4). `JSON.parse(text)` is `any`, so
|
|
9
|
+
* `rowToCrystallizationEvent` handed three `any` values straight into a
|
|
10
|
+
* `CrystallizationEvent`; `evidence_bullets` / `source_trace_pointers` were
|
|
11
|
+
* papered over with an `as string[]` costume cast, and `evidence_brief` leaked
|
|
12
|
+
* a `no-unsafe-assignment` finding because it had no cast at all. The declared
|
|
13
|
+
* column type (`CrystallizationEventRow.evidence_bullets_json: string`) is the
|
|
14
|
+
* schema's job to re-establish, because SQLite stores TEXT and does not.
|
|
15
|
+
*
|
|
16
|
+
* The read schema is the SAME `EvidenceBriefSchema` the write path validates
|
|
17
|
+
* with: a row that no longer matches it is a defect at the boundary, not a
|
|
18
|
+
* value to hand onward with an unchecked claim attached.
|
|
19
|
+
*/
|
|
20
|
+
const StringListJsonSchema = z.array(z.string());
|
|
2
21
|
/**
|
|
3
22
|
* Low-level SQLite access for the `crystallization_event` table.
|
|
4
23
|
* The migration is registered with the existing `openStateDb()`
|
|
@@ -19,7 +38,7 @@ import { CrystallizationEventSchema, } from "./crystallization-types.js";
|
|
|
19
38
|
* enforced at the SERVICE layer (not the DB); the DB stores
|
|
20
39
|
* the persisted, validated row.
|
|
21
40
|
*/
|
|
22
|
-
const SCHEMA_VERSION =
|
|
41
|
+
const SCHEMA_VERSION = 'peaks.crystallization/1';
|
|
23
42
|
/**
|
|
24
43
|
* Re-apply the crystallization_event table migration against an
|
|
25
44
|
* already-open database. Used by tests that build their own DB
|
|
@@ -69,9 +88,9 @@ function rowToCrystallizationEvent(row) {
|
|
|
69
88
|
return {
|
|
70
89
|
id: row.id,
|
|
71
90
|
trigger: row.trigger,
|
|
72
|
-
evidence_brief:
|
|
73
|
-
evidence_bullets:
|
|
74
|
-
source_trace_pointers:
|
|
91
|
+
evidence_brief: parseJson(row.evidence_brief_json, EvidenceBriefSchema),
|
|
92
|
+
evidence_bullets: parseJson(row.evidence_bullets_json, StringListJsonSchema),
|
|
93
|
+
source_trace_pointers: parseJson(row.source_trace_pointers_json, StringListJsonSchema),
|
|
75
94
|
evaluator_summary: row.evaluator_summary,
|
|
76
95
|
user_decision_summary: row.user_decision_summary,
|
|
77
96
|
created_loop_release_id: row.created_loop_release_id ?? undefined,
|
|
@@ -80,7 +99,7 @@ function rowToCrystallizationEvent(row) {
|
|
|
80
99
|
updated_bee_release_id: row.updated_bee_release_id ?? undefined,
|
|
81
100
|
lifecycle_status: row.lifecycle_status,
|
|
82
101
|
schema_version: row.schema_version,
|
|
83
|
-
created_at: row.created_at
|
|
102
|
+
created_at: row.created_at
|
|
84
103
|
};
|
|
85
104
|
}
|
|
86
105
|
/**
|
|
@@ -103,7 +122,7 @@ export function insertCrystallizationEvent(db, row) {
|
|
|
103
122
|
...row,
|
|
104
123
|
id,
|
|
105
124
|
schema_version: SCHEMA_VERSION,
|
|
106
|
-
created_at: createdAt
|
|
125
|
+
created_at: createdAt
|
|
107
126
|
});
|
|
108
127
|
const stmt = db.prepare(`INSERT INTO crystallization_event (
|
|
109
128
|
id, trigger, evidence_brief_json, evidence_bullets_json,
|
|
@@ -118,9 +137,7 @@ export function insertCrystallizationEvent(db, row) {
|
|
|
118
137
|
}
|
|
119
138
|
/** Read a single CrystallizationEvent row by id; returns undefined if absent. */
|
|
120
139
|
export function getCrystallizationEvent(db, id) {
|
|
121
|
-
const row = db
|
|
122
|
-
.prepare("SELECT * FROM crystallization_event WHERE id = ?")
|
|
123
|
-
.get(id);
|
|
140
|
+
const row = db.prepare('SELECT * FROM crystallization_event WHERE id = ?').get(id);
|
|
124
141
|
if (!row)
|
|
125
142
|
return undefined;
|
|
126
143
|
return rowToCrystallizationEvent(row);
|
|
@@ -134,29 +151,29 @@ export function listCrystallizationEvents(db, opts = {}) {
|
|
|
134
151
|
const wheres = [];
|
|
135
152
|
const params = [];
|
|
136
153
|
if (opts.lifecycle_status !== undefined) {
|
|
137
|
-
wheres.push(
|
|
154
|
+
wheres.push('lifecycle_status = ?');
|
|
138
155
|
params.push(opts.lifecycle_status);
|
|
139
156
|
}
|
|
140
157
|
if (opts.created_loop_release_id !== undefined) {
|
|
141
|
-
wheres.push(
|
|
158
|
+
wheres.push('created_loop_release_id = ?');
|
|
142
159
|
params.push(opts.created_loop_release_id);
|
|
143
160
|
}
|
|
144
161
|
if (opts.updated_loop_release_id !== undefined) {
|
|
145
|
-
wheres.push(
|
|
162
|
+
wheres.push('updated_loop_release_id = ?');
|
|
146
163
|
params.push(opts.updated_loop_release_id);
|
|
147
164
|
}
|
|
148
165
|
if (opts.created_bee_release_id !== undefined) {
|
|
149
|
-
wheres.push(
|
|
166
|
+
wheres.push('created_bee_release_id = ?');
|
|
150
167
|
params.push(opts.created_bee_release_id);
|
|
151
168
|
}
|
|
152
169
|
if (opts.updated_bee_release_id !== undefined) {
|
|
153
|
-
wheres.push(
|
|
170
|
+
wheres.push('updated_bee_release_id = ?');
|
|
154
171
|
params.push(opts.updated_bee_release_id);
|
|
155
172
|
}
|
|
156
|
-
let sql =
|
|
173
|
+
let sql = 'SELECT * FROM crystallization_event';
|
|
157
174
|
if (wheres.length > 0)
|
|
158
|
-
sql +=
|
|
159
|
-
sql +=
|
|
175
|
+
sql += ' WHERE ' + wheres.join(' AND ');
|
|
176
|
+
sql += ' ORDER BY created_at DESC, id ASC';
|
|
160
177
|
const rows = db.prepare(sql).all(...params);
|
|
161
178
|
return rows.map(rowToCrystallizationEvent);
|
|
162
179
|
}
|
|
@@ -172,7 +189,7 @@ export function updateCrystallizationEventStatus(db, id, next) {
|
|
|
172
189
|
const existing = getCrystallizationEvent(db, id);
|
|
173
190
|
if (!existing)
|
|
174
191
|
return undefined;
|
|
175
|
-
db.prepare(
|
|
192
|
+
db.prepare('UPDATE crystallization_event SET lifecycle_status = ? WHERE id = ?').run(next, id);
|
|
176
193
|
return getCrystallizationEvent(db, id);
|
|
177
194
|
}
|
|
178
195
|
/**
|
|
@@ -183,7 +200,7 @@ export function updateCrystallizationEventStatus(db, id, next) {
|
|
|
183
200
|
export function newCrystallizationId() {
|
|
184
201
|
const hex = Math.floor(Math.random() * 0x1_000_000_000_000)
|
|
185
202
|
.toString(16)
|
|
186
|
-
.padStart(12,
|
|
203
|
+
.padStart(12, '0');
|
|
187
204
|
return `crys-${hex}`;
|
|
188
205
|
}
|
|
189
206
|
/**
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import { z } from
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export { EvidenceBriefSchema, hasAllFourBriefSections, parseEvidenceBrief, safeParseEvidenceBrief } from './crystallization-brief-schema.js';
|
|
3
|
+
export type { EvidenceBrief } from './crystallization-brief-schema.js';
|
|
2
4
|
/**
|
|
3
5
|
* CrystallizationEvent — spec §4.5 / §4.7 / §5.
|
|
4
6
|
*
|
|
@@ -46,39 +48,6 @@ export declare const CrystallizationEventStatusSchema: z.ZodEnum<{
|
|
|
46
48
|
retired: "retired";
|
|
47
49
|
}>;
|
|
48
50
|
export type CrystallizationEventStatus = z.infer<typeof CrystallizationEventStatusSchema>;
|
|
49
|
-
/**
|
|
50
|
-
* EvidenceBrief — the 4-section brief (spec §4.7).
|
|
51
|
-
*
|
|
52
|
-
* Hard shape invariant: ALL FOUR KEYS must be present at parse
|
|
53
|
-
* time, with non-empty NL content. The `.refine(...)` guard is
|
|
54
|
-
* what makes a brief a "brief" — without it, the projection is
|
|
55
|
-
* not a brief and the recommendation MUST NOT be rendered
|
|
56
|
-
* (service layer enforces this; Zod makes it a parse-time
|
|
57
|
-
* guarantee).
|
|
58
|
-
*
|
|
59
|
-
* Field semantics:
|
|
60
|
-
* - what_happened — 1-2 sentence factual account of the run.
|
|
61
|
-
* - why_it_matters — 1-2 sentence explanation of why this is
|
|
62
|
-
* worth promoting.
|
|
63
|
-
* - what_learned — 1-2 sentence learning: failure modes
|
|
64
|
-
* encoded, preferences extracted.
|
|
65
|
-
* - what_action — 1-sentence recommended action with
|
|
66
|
-
* rationale.
|
|
67
|
-
*/
|
|
68
|
-
export declare const EvidenceBriefSchema: z.ZodObject<{
|
|
69
|
-
what_happened: z.ZodString;
|
|
70
|
-
why_it_matters: z.ZodString;
|
|
71
|
-
what_learned: z.ZodString;
|
|
72
|
-
what_action: z.ZodString;
|
|
73
|
-
}, z.core.$strict>;
|
|
74
|
-
export type EvidenceBrief = z.infer<typeof EvidenceBriefSchema>;
|
|
75
|
-
/**
|
|
76
|
-
* Helper for downstream code that needs to know whether a parsed
|
|
77
|
-
* brief satisfies the 4-section rule. Useful for the CLI when a
|
|
78
|
-
* payload arrived from the LLM and the brief-section guard has
|
|
79
|
-
* already passed — it returns the section count, always 4 here.
|
|
80
|
-
*/
|
|
81
|
-
export declare function hasAllFourBriefSections(brief: EvidenceBrief): boolean;
|
|
82
51
|
/**
|
|
83
52
|
* Zod schema for the create payload (CrystallizationEventInput).
|
|
84
53
|
*
|
|
@@ -163,11 +132,6 @@ export type CrystallizationEvent = z.infer<typeof CrystallizationEventSchema>;
|
|
|
163
132
|
* Use this at every parse boundary (CLI input, store insertion).
|
|
164
133
|
*/
|
|
165
134
|
export declare function parseCrystallizationEvent(input: unknown): CrystallizationEvent;
|
|
166
|
-
/**
|
|
167
|
-
* Convenience: strict-parse an unknown payload as a standalone
|
|
168
|
-
* EvidenceBrief. Throws ZodError on failure.
|
|
169
|
-
*/
|
|
170
|
-
export declare function parseEvidenceBrief(input: unknown): EvidenceBrief;
|
|
171
135
|
/**
|
|
172
136
|
* Safe-parse twin of parseCrystallizationEvent. Returns a Result-like
|
|
173
137
|
* envelope so callers (CLI / tests) can render findings without
|
|
@@ -181,23 +145,7 @@ export declare function safeParseCrystallizationEvent(input: unknown): {
|
|
|
181
145
|
row: CrystallizationEvent;
|
|
182
146
|
} | {
|
|
183
147
|
ok: false;
|
|
184
|
-
code?:
|
|
185
|
-
findings: Array<{
|
|
186
|
-
path: string;
|
|
187
|
-
message: string;
|
|
188
|
-
}>;
|
|
189
|
-
};
|
|
190
|
-
/**
|
|
191
|
-
* Safe-parse twin of parseEvidenceBrief. Same Result-like envelope
|
|
192
|
-
* shape; same MISSING_BRIEF_SECTION code mapping (covers both
|
|
193
|
-
* refine-guard failures and per-section missing/empty failures).
|
|
194
|
-
*/
|
|
195
|
-
export declare function safeParseEvidenceBrief(input: unknown): {
|
|
196
|
-
ok: true;
|
|
197
|
-
row: EvidenceBrief;
|
|
198
|
-
} | {
|
|
199
|
-
ok: false;
|
|
200
|
-
code?: "MISSING_BRIEF_SECTION";
|
|
148
|
+
code?: 'MISSING_BRIEF_SECTION';
|
|
201
149
|
findings: Array<{
|
|
202
150
|
path: string;
|
|
203
151
|
message: string;
|