peaks-loop 4.0.54 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +36 -0
- package/README-en.md +16 -1
- package/README.md +15 -1
- package/config/eslint/.peaks-rules.cjs +158 -13
- package/config/eslint/tsconfig.lint.json +47 -0
- package/dist/cli/cli-envelope.d.ts +114 -0
- package/dist/cli/cli-envelope.js +85 -0
- package/dist/cli/cli-helpers.d.ts +1 -1
- package/dist/cli/cli-helpers.js +8 -4
- package/dist/cli/commands/_cli-error-envelope.js +1 -1
- package/dist/cli/commands/_register.js +85 -38
- package/dist/cli/commands/_super.js +40 -7
- package/dist/cli/commands/adapter-commands-s2a.js +8 -7
- package/dist/cli/commands/adapter-commands.d.ts +2 -2
- package/dist/cli/commands/adapter-commands.js +7 -8
- package/dist/cli/commands/api-diff-commands.js +5 -4
- package/dist/cli/commands/asset-commands.d.ts +2 -2
- package/dist/cli/commands/asset-commands.js +135 -132
- package/dist/cli/commands/audit-commands.d.ts +1 -1
- package/dist/cli/commands/audit-commands.js +75 -32
- package/dist/cli/commands/autonomous-swarm-commands.d.ts +1 -1
- package/dist/cli/commands/autonomous-swarm-commands.js +14 -8
- package/dist/cli/commands/baseline-commands.js +34 -9
- package/dist/cli/commands/bee-commands.d.ts +1 -1
- package/dist/cli/commands/bee-commands.js +18 -21
- package/dist/cli/commands/best-practice-scan-command.js +6 -34
- package/dist/cli/commands/best-practice-scan-helpers.d.ts +12 -0
- package/dist/cli/commands/best-practice-scan-helpers.js +37 -0
- package/dist/cli/commands/capability-commands.d.ts +1 -1
- package/dist/cli/commands/capability-commands.js +14 -4
- package/dist/cli/commands/capability-worker-config-sc-commands.d.ts +1 -1
- package/dist/cli/commands/changeset-commands.js +21 -18
- package/dist/cli/commands/code-gate-command.js +9 -2
- package/dist/cli/commands/code-job-shape-commands-read-job-shape.d.ts +15 -0
- package/dist/cli/commands/code-job-shape-commands-read-job-shape.js +70 -0
- package/dist/cli/commands/code-job-shape-commands.js +21 -45
- package/dist/cli/commands/code-mode-gate-commands.d.ts +15 -1
- package/dist/cli/commands/code-mode-gate-commands.js +19 -199
- package/dist/cli/commands/code-mode-gate-plan-command.d.ts +14 -0
- package/dist/cli/commands/code-mode-gate-plan-command.js +23 -0
- package/dist/cli/commands/code-mode-gate-should-pause-command.d.ts +24 -0
- package/dist/cli/commands/code-mode-gate-should-pause-command.js +137 -0
- package/dist/cli/commands/code-mode-gate-should-pause-envelope.d.ts +59 -0
- package/dist/cli/commands/code-mode-gate-should-pause-envelope.js +144 -0
- package/dist/cli/commands/code-orchestrator-can-do.js +4 -4
- package/dist/cli/commands/code-review-commands.js +18 -3
- package/dist/cli/commands/code-run-command.js +44 -7
- package/dist/cli/commands/code-runtime-commands.d.ts +17 -0
- package/dist/cli/commands/code-runtime-commands.js +105 -73
- package/dist/cli/commands/codegraph-commands.js +11 -6
- package/dist/cli/commands/codegraph-status-command.js +6 -2
- package/dist/cli/commands/compact-command.js +52 -26
- package/dist/cli/commands/complexity-commands.js +6 -7
- package/dist/cli/commands/config-commands.d.ts +1 -1
- package/dist/cli/commands/config-commands.js +33 -9
- package/dist/cli/commands/container-commands.js +39 -15
- package/dist/cli/commands/context-commands.d.ts +1 -1
- package/dist/cli/commands/context-commands.js +40 -13
- package/dist/cli/commands/core/artifacts-command.js +11 -3
- package/dist/cli/commands/core/binding-commands.js +9 -6
- package/dist/cli/commands/core/doctor-command.js +7 -4
- package/dist/cli/commands/core/memory-command.js +47 -21
- package/dist/cli/commands/core/proxy-command.js +3 -1
- package/dist/cli/commands/core/session-command.js +16 -8
- package/dist/cli/commands/core/skill-command.js +31 -16
- package/dist/cli/commands/core/standards-command.js +55 -13
- package/dist/cli/commands/cron-commands-actions.d.ts +43 -0
- package/dist/cli/commands/cron-commands-actions.js +128 -0
- package/dist/cli/commands/cron-commands-schedule.d.ts +86 -0
- package/dist/cli/commands/cron-commands-schedule.js +151 -0
- package/dist/cli/commands/cron-commands.d.ts +35 -32
- package/dist/cli/commands/cron-commands.js +167 -211
- package/dist/cli/commands/cron-scheduler-commands.js +40 -20
- package/dist/cli/commands/cron-scheduler-persist.d.ts +110 -0
- package/dist/cli/commands/cron-scheduler-persist.js +171 -0
- package/dist/cli/commands/dashboard-long-run.js +45 -14
- package/dist/cli/commands/dashboard-summary.js +15 -5
- package/dist/cli/commands/dispatch-commands.js +65 -32
- package/dist/cli/commands/dispatch-from-dag.js +9 -10
- package/dist/cli/commands/doc-commands.js +8 -9
- package/dist/cli/commands/doctor/invoke-from-code.js +1 -1
- package/dist/cli/commands/e2e-verify-env.d.ts +19 -0
- package/dist/cli/commands/e2e-verify-env.js +19 -0
- package/dist/cli/commands/e2e-verify.d.ts +3 -14
- package/dist/cli/commands/e2e-verify.js +49 -29
- package/dist/cli/commands/ecc-commands.d.ts +1 -1
- package/dist/cli/commands/ecc-commands.js +8 -17
- package/dist/cli/commands/evidence-commands.js +10 -6
- package/dist/cli/commands/evolution-commands.d.ts +2 -2
- package/dist/cli/commands/evolution-commands.js +109 -115
- package/dist/cli/commands/feedback-commands-helpers.d.ts +22 -0
- package/dist/cli/commands/feedback-commands-helpers.js +33 -0
- package/dist/cli/commands/feedback-commands.js +15 -38
- package/dist/cli/commands/final-review-commands.d.ts +1 -1
- package/dist/cli/commands/final-review-commands.js +24 -22
- package/dist/cli/commands/fixture-commands.d.ts +1 -1
- package/dist/cli/commands/fixture-commands.js +17 -6
- package/dist/cli/commands/fork-commands-sync-verify.d.ts +12 -0
- package/dist/cli/commands/fork-commands-sync-verify.js +72 -0
- package/dist/cli/commands/fork-commands.js +19 -51
- package/dist/cli/commands/fresh-context-commands.js +3 -1
- package/dist/cli/commands/gate-commands-enforce.d.ts +82 -0
- package/dist/cli/commands/gate-commands-enforce.js +210 -0
- package/dist/cli/commands/gate-commands.d.ts +1 -1
- package/dist/cli/commands/gate-commands.js +85 -205
- package/dist/cli/commands/governance-classify-contract-commands.d.ts +1 -1
- package/dist/cli/commands/governance-classify-contract-commands.js +28 -17
- package/dist/cli/commands/heartbeat-commands-action.d.ts +7 -0
- package/dist/cli/commands/heartbeat-commands-action.js +192 -0
- package/dist/cli/commands/heartbeat-commands-validation.d.ts +57 -0
- package/dist/cli/commands/heartbeat-commands-validation.js +120 -0
- package/dist/cli/commands/heartbeat-commands.d.ts +27 -6
- package/dist/cli/commands/heartbeat-commands.js +19 -198
- package/dist/cli/commands/hook-handle.d.ts +1 -1
- package/dist/cli/commands/hook-handle.js +46 -13
- package/dist/cli/commands/hooks-commands.d.ts +1 -1
- package/dist/cli/commands/hooks-commands.js +18 -6
- package/dist/cli/commands/ide-commands.d.ts +1 -1
- package/dist/cli/commands/ide-commands.js +5 -3
- package/dist/cli/commands/impact-commands.js +8 -2
- package/dist/cli/commands/job-add-slice-command.d.ts +43 -0
- package/dist/cli/commands/job-add-slice-command.js +151 -0
- package/dist/cli/commands/job-commands.d.ts +64 -0
- package/dist/cli/commands/job-commands.js +134 -63
- package/dist/cli/commands/lease-metrics-commands-support.d.ts +73 -0
- package/dist/cli/commands/lease-metrics-commands-support.js +67 -0
- package/dist/cli/commands/lease-metrics-commands.d.ts +3 -44
- package/dist/cli/commands/lease-metrics-commands.js +21 -61
- package/dist/cli/commands/lease-stats-commands.d.ts +1 -1
- package/dist/cli/commands/lease-stats-commands.js +9 -6
- package/dist/cli/commands/lint-commands.d.ts +9 -3
- package/dist/cli/commands/lint-commands.js +15 -8
- package/dist/cli/commands/log-commands.d.ts +1 -1
- package/dist/cli/commands/log-commands.js +8 -6
- package/dist/cli/commands/loop-commands.d.ts +1 -1
- package/dist/cli/commands/loop-commands.js +50 -50
- package/dist/cli/commands/loop-eval-commands.d.ts +1 -1
- package/dist/cli/commands/loop-eval-commands.js +101 -30
- package/dist/cli/commands/memory-commands.js +21 -13
- package/dist/cli/commands/migrate-1-4-1-command.js +1 -1
- package/dist/cli/commands/migrate-v2-10-to-v2-11-command.js +2 -2
- package/dist/cli/commands/mut-commands-helpers.d.ts +30 -0
- package/dist/cli/commands/mut-commands-helpers.js +43 -0
- package/dist/cli/commands/mut-commands.js +16 -58
- package/dist/cli/commands/observability-commands-queries.d.ts +37 -0
- package/dist/cli/commands/observability-commands-queries.js +113 -0
- package/dist/cli/commands/observability-commands.d.ts +1 -1
- package/dist/cli/commands/observability-commands.js +7 -92
- package/dist/cli/commands/openspec-commands.d.ts +1 -1
- package/dist/cli/commands/openspec-commands.js +20 -8
- package/dist/cli/commands/outer-cache-commands.js +18 -7
- package/dist/cli/commands/perf-audit-commands.d.ts +1 -1
- package/dist/cli/commands/perf-audit-commands.js +12 -7
- package/dist/cli/commands/perf-commands.d.ts +1 -1
- package/dist/cli/commands/perf-commands.js +5 -5
- package/dist/cli/commands/playwright-commands.d.ts +1 -1
- package/dist/cli/commands/playwright-commands.js +20 -8
- package/dist/cli/commands/polyrepo-commands.js +21 -19
- package/dist/cli/commands/prd-blocks-commands.js +1 -3
- package/dist/cli/commands/prd-commands.d.ts +1 -1
- package/dist/cli/commands/prd-commands.js +8 -4
- package/dist/cli/commands/preferences-commands.js +13 -12
- package/dist/cli/commands/primer-command.js +5 -5
- package/dist/cli/commands/project-commands.d.ts +1 -1
- package/dist/cli/commands/project-commands.js +33 -9
- package/dist/cli/commands/qa-business-review-commands.js +16 -12
- package/dist/cli/commands/qa-commands.d.ts +1 -1
- package/dist/cli/commands/qa-commands.js +3 -5
- package/dist/cli/commands/release-commands.d.ts +3 -1
- package/dist/cli/commands/release-commands.js +33 -22
- package/dist/cli/commands/request-commands.js +47 -30
- package/dist/cli/commands/request-format-helpers.js +1 -1
- package/dist/cli/commands/retrospective-commands.d.ts +18 -11
- package/dist/cli/commands/retrospective-commands.js +24 -173
- package/dist/cli/commands/retrospective-index-command.d.ts +26 -0
- package/dist/cli/commands/retrospective-index-command.js +99 -0
- package/dist/cli/commands/retrospective-project-root.d.ts +9 -0
- package/dist/cli/commands/retrospective-project-root.js +15 -0
- package/dist/cli/commands/retrospective-search-command.d.ts +27 -0
- package/dist/cli/commands/retrospective-search-command.js +97 -0
- package/dist/cli/commands/retrospective-show-command.d.ts +23 -0
- package/dist/cli/commands/retrospective-show-command.js +80 -0
- package/dist/cli/commands/reviewer-commands.d.ts +1 -1
- package/dist/cli/commands/role-commands.js +14 -9
- package/dist/cli/commands/runtime-commands.js +14 -7
- package/dist/cli/commands/sc-commands.d.ts +1 -1
- package/dist/cli/commands/sc-commands.js +39 -6
- package/dist/cli/commands/scan-commands.js +36 -13
- package/dist/cli/commands/security-audit-commands.d.ts +1 -1
- package/dist/cli/commands/security-audit-commands.js +12 -7
- package/dist/cli/commands/sediment-commands.d.ts +2 -2
- package/dist/cli/commands/sediment-commands.js +146 -139
- package/dist/cli/commands/session-24h-mode.js +15 -2
- package/dist/cli/commands/session-checkpoint-command.js +1 -1
- package/dist/cli/commands/session-migrate-skill-name.js +1 -1
- package/dist/cli/commands/shadcn-commands.d.ts +1 -1
- package/dist/cli/commands/shadcn-commands.js +3 -1
- package/dist/cli/commands/share-commands.js +38 -39
- package/dist/cli/commands/skill-conformance-commands.d.ts +1 -1
- package/dist/cli/commands/skill-conformance-commands.js +1 -1
- package/dist/cli/commands/skill-loop-engineering-readiness-commands.js +16 -17
- package/dist/cli/commands/skill-visibility.js +2 -2
- package/dist/cli/commands/slice-commands.d.ts +1 -1
- package/dist/cli/commands/slice-commands.js +36 -12
- package/dist/cli/commands/slice-integrate-commands.js +6 -7
- package/dist/cli/commands/slice-review-commands-helpers.d.ts +26 -0
- package/dist/cli/commands/slice-review-commands-helpers.js +26 -0
- package/dist/cli/commands/slice-review-commands.js +16 -24
- package/dist/cli/commands/smoke-commands-add-path.d.ts +14 -0
- package/dist/cli/commands/smoke-commands-add-path.js +39 -0
- package/dist/cli/commands/smoke-commands-define.d.ts +18 -0
- package/dist/cli/commands/smoke-commands-define.js +97 -0
- package/dist/cli/commands/smoke-commands-run.d.ts +18 -0
- package/dist/cli/commands/smoke-commands-run.js +119 -0
- package/dist/cli/commands/smoke-commands.d.ts +10 -1
- package/dist/cli/commands/smoke-commands.js +17 -179
- package/dist/cli/commands/sop-commands.d.ts +1 -1
- package/dist/cli/commands/sop-commands.js +38 -10
- package/dist/cli/commands/statusline-commands.d.ts +1 -1
- package/dist/cli/commands/statusline-commands.js +21 -10
- package/dist/cli/commands/sub-agent/detached.js +3 -3
- package/dist/cli/commands/sub-agent-dispatch-guard.d.ts +1 -1
- package/dist/cli/commands/sub-agent-shared.js +1 -1
- package/dist/cli/commands/sub-agent-shutdown-commands.js +17 -9
- package/dist/cli/commands/swarm-commands.d.ts +1 -1
- package/dist/cli/commands/swarm-commands.js +13 -6
- package/dist/cli/commands/tech-commands-helpers.d.ts +37 -0
- package/dist/cli/commands/tech-commands-helpers.js +24 -0
- package/dist/cli/commands/tech-commands.d.ts +2 -29
- package/dist/cli/commands/tech-commands.js +15 -28
- package/dist/cli/commands/test-commands.js +27 -7
- package/dist/cli/commands/upgrade-commands.d.ts +1 -1
- package/dist/cli/commands/user-touchpoint-commands.js +1 -3
- package/dist/cli/commands/verdict-aggregate-command.d.ts +1 -1
- package/dist/cli/commands/verdict-aggregate-command.js +20 -7
- package/dist/cli/commands/vm-commands.js +48 -19
- package/dist/cli/commands/wave-plan-commands.js +5 -2
- package/dist/cli/commands/web-commands.js +14 -4
- package/dist/cli/commands/web-lifecycle-commands.js +5 -3
- package/dist/cli/commands/workflow-commands.d.ts +1 -1
- package/dist/cli/commands/workflow-commands.js +64 -29
- package/dist/cli/commands/workflow-lifecycle-commands.js +19 -17
- package/dist/cli/commands/workflow-plan-commands-actions.d.ts +20 -0
- package/dist/cli/commands/workflow-plan-commands-actions.js +115 -0
- package/dist/cli/commands/workflow-plan-commands-session.d.ts +17 -0
- package/dist/cli/commands/workflow-plan-commands-session.js +59 -0
- package/dist/cli/commands/workflow-plan-commands.d.ts +10 -21
- package/dist/cli/commands/workflow-plan-commands.js +15 -141
- package/dist/cli/commands/workspace/clean-command.js +4 -1
- package/dist/cli/commands/workspace/helpers.js +2 -1
- package/dist/cli/commands/workspace/init-command.js +80 -20
- package/dist/cli/commands/workspace/reconcile-command.js +3 -1
- package/dist/cli/commands/workspace-commands.d.ts +1 -1
- package/dist/cli/commands/workspace-commands.js +1 -1
- package/dist/cli/commands/worktree-auth-commands.d.ts +1 -1
- package/dist/cli/commands/worktree-auth-commands.js +16 -169
- package/dist/cli/commands/worktree-auth-grant-command.d.ts +14 -0
- package/dist/cli/commands/worktree-auth-grant-command.js +118 -0
- package/dist/cli/commands/worktree-auth-manage-commands.d.ts +17 -0
- package/dist/cli/commands/worktree-auth-manage-commands.js +128 -0
- package/dist/cli/commands/worktree-lease-commands.d.ts +1 -1
- package/dist/cli/commands/worktree-lease-commands.js +65 -37
- package/dist/cli/index.js +6 -2
- package/dist/cli/program.js +6 -3
- package/dist/hooks/pre-tool-use-sub-agent.js +1 -6
- package/dist/reporters/bdd-reporter.js +9 -3
- package/dist/services/24h-mode/auto-engage.d.ts +19 -0
- package/dist/services/24h-mode/auto-engage.js +35 -0
- package/dist/services/24h-mode/decider.js +5 -1
- package/dist/services/24h-mode/store.js +4 -2
- package/dist/services/adapter/adapter-registry.js +20 -8
- package/dist/services/adapter/adapter.d.ts +2 -2
- package/dist/services/adapter/auto-adapter.d.ts +2 -2
- package/dist/services/adapter/auto-adapter.js +1 -1
- package/dist/services/adapter/claude-adapter.d.ts +1 -1
- package/dist/services/adapter/claude-adapter.js +8 -8
- package/dist/services/adapter/codex-adapter.d.ts +2 -2
- package/dist/services/adapter/codex-adapter.js +20 -8
- package/dist/services/adapter/copilot-adapter.d.ts +2 -2
- package/dist/services/adapter/copilot-adapter.js +20 -8
- package/dist/services/artifacts/artifact-prerequisites.js +10 -8
- package/dist/services/artifacts/artifact-service.js +3 -1
- package/dist/services/artifacts/artifact-template-bodies.d.ts +12 -0
- package/dist/services/artifacts/artifact-template-bodies.js +165 -0
- package/dist/services/artifacts/artifact-templates.js +26 -168
- package/dist/services/artifacts/request-artifact-service.js +14 -7
- package/dist/services/artifacts/request-artifact-state-helpers.d.ts +3 -2
- package/dist/services/artifacts/request-artifact-state-helpers.js +3 -5
- package/dist/services/artifacts/workspace-artifact-helpers.d.ts +28 -0
- package/dist/services/artifacts/workspace-artifact-helpers.js +54 -0
- package/dist/services/artifacts/workspace-service.d.ts +3 -22
- package/dist/services/artifacts/workspace-service.js +10 -60
- package/dist/services/audit/artifact-writer.js +21 -21
- package/dist/services/audit/audit-goal-service.js +2 -2
- package/dist/services/audit/backing-detector.js +7 -4
- package/dist/services/audit/classifier.js +3 -3
- package/dist/services/audit/decision-writer.js +13 -9
- package/dist/services/audit/enforcers/active-skill-resolver.js +15 -7
- package/dist/services/audit/enforcers/design-draft-confirm.js +4 -4
- package/dist/services/audit/enforcers/lint-audit-regression.js +10 -5
- package/dist/services/audit/enforcers/lint-bee-runtime-contract.js +16 -8
- package/dist/services/audit/enforcers/lint-catalog-governance.js +8 -4
- package/dist/services/audit/enforcers/lint-output-style.js +4 -2
- package/dist/services/audit/enforcers/lint-peaks-code-runtime.js +8 -3
- package/dist/services/audit/enforcers/lint-peaks-skill-runtime.js +8 -3
- package/dist/services/audit/enforcers/lint-peaks-ui-sc-txt-runtime.js +20 -20
- package/dist/services/audit/enforcers/lint-prd-artifact-handoff.js +5 -5
- package/dist/services/audit/enforcers/lint-prd-source-snapshot.d.ts +1 -1
- package/dist/services/audit/enforcers/lint-prd-source-snapshot.js +5 -5
- package/dist/services/audit/enforcers/lint-qa-gateguard-and-runtime.js +10 -10
- package/dist/services/audit/enforcers/lint-rd-handoff-coverage.js +10 -8
- package/dist/services/audit/enforcers/lint-reference-shape.js +50 -18
- package/dist/services/audit/enforcers/lint-skill-presence-mandatory.js +5 -5
- package/dist/services/audit/enforcers/lint-style.js +44 -11
- package/dist/services/audit/enforcers/lint-workflow-shape.js +4 -2
- package/dist/services/audit/enforcers/login-gate.js +2 -6
- package/dist/services/audit/enforcers/mock-placement.js +2 -2
- package/dist/services/audit/enforcers/no-root-pollution.js +38 -9
- package/dist/services/audit/enforcers/pre-rd-scan.js +1 -1
- package/dist/services/audit/enforcers/prototype-fidelity.js +1 -1
- package/dist/services/audit/enforcers/resume-detection.js +5 -4
- package/dist/services/audit/prose-ratio-calculator.js +1 -1
- package/dist/services/audit/red-line-catalog-p2-a-bee-runtime.d.ts +39 -0
- package/dist/services/audit/red-line-catalog-p2-a-bee-runtime.js +205 -0
- package/dist/services/audit/red-line-catalog-p2-a-lint-style.d.ts +52 -0
- package/dist/services/audit/red-line-catalog-p2-a-lint-style.js +205 -0
- package/dist/services/audit/red-line-catalog-p2-a.js +3 -374
- package/dist/services/audit/red-line-catalog-p2-b.js +26 -26
- package/dist/services/audit/red-line-catalog.js +26 -38
- package/dist/services/audit/red-lines-service.js +64 -49
- package/dist/services/audit/scanners/openspec-scanner.js +2 -2
- package/dist/services/audit/scanners/rules-tree-scanner.js +2 -2
- package/dist/services/audit/scanners/skills-tree-scanner.js +2 -2
- package/dist/services/audit/static-service.js +3 -3
- package/dist/services/audit-independent/index.d.ts +2 -2
- package/dist/services/audit-independent/index.js +2 -2
- package/dist/services/audit-independent/perf-audit-service.js +19 -8
- package/dist/services/audit-independent/security-audit-service.js +31 -16
- package/dist/services/autonomous-swarm/autonomous-swarm-service.js +75 -46
- package/dist/services/best-practice/output-formatter.js +7 -1
- package/dist/services/capability-audit-service/cross-check.js +11 -5
- package/dist/services/capability-audit-service/runner.js +15 -7
- package/dist/services/capability-baseline/store.js +16 -4
- package/dist/services/capability-baseline/types.js +15 -3
- package/dist/services/capability-baseline/validator.js +43 -7
- package/dist/services/capability-guard-runner/contracts/J02.js +36 -6
- package/dist/services/capability-guard-runner/contracts/J03.js +20 -11
- package/dist/services/capability-guard-runner/contracts/J04.js +24 -15
- package/dist/services/capability-guard-runner/contracts/J05.js +26 -10
- package/dist/services/capability-guard-runner/contracts/J07.js +8 -2
- package/dist/services/capability-guard-runner/contracts/J08.js +22 -5
- package/dist/services/capability-guard-runner/contracts/J10.js +6 -2
- package/dist/services/capability-guard-runner/contracts/J11.d.ts +5 -0
- package/dist/services/capability-guard-runner/contracts/J11.js +14 -2
- package/dist/services/capability-guard-runner/contracts/J12.js +12 -3
- package/dist/services/capability-guard-runner/diff.js +1 -5
- package/dist/services/changeset/changeset-check-service.js +1 -3
- package/dist/services/classify/classify-service.js +20 -8
- package/dist/services/classify/classify-types.js +22 -9
- package/dist/services/code/auto-compact-lifecycle.js +62 -39
- package/dist/services/code/auto-compact-modes.js +2 -2
- package/dist/services/code/auto-compact-orchestrator.js +14 -9
- package/dist/services/code/batch-heartbeat-poller.d.ts +10 -0
- package/dist/services/code/batch-heartbeat-poller.js +17 -1
- package/dist/services/code/compact-event-settle-types.d.ts +80 -0
- package/dist/services/code/compact-event-settle-types.js +20 -0
- package/dist/services/code/compact-event-settle.d.ts +3 -68
- package/dist/services/code/compact-event-settle.js +14 -10
- package/dist/services/code/dag-orchestrator.js +32 -26
- package/dist/services/code/job-shape-decision.js +3 -1
- package/dist/services/code/mode-gate-types.d.ts +57 -0
- package/dist/services/code/mode-gate-types.js +67 -0
- package/dist/services/code/mode-gate.d.ts +4 -58
- package/dist/services/code/mode-gate.js +24 -60
- package/dist/services/code/orchestrator-can-do-advisories.d.ts +30 -0
- package/dist/services/code/orchestrator-can-do-advisories.js +81 -0
- package/dist/services/code/orchestrator-can-do-probes.d.ts +30 -0
- package/dist/services/code/orchestrator-can-do-probes.js +77 -0
- package/dist/services/code/orchestrator-can-do.d.ts +11 -22
- package/dist/services/code/orchestrator-can-do.js +37 -137
- package/dist/services/code/post-compact-checkpoint.d.ts +28 -0
- package/dist/services/code/post-compact-checkpoint.js +57 -0
- package/dist/services/code/post-compact-detector.js +16 -48
- package/dist/services/code/step-08-gate.d.ts +4 -3
- package/dist/services/code/step-08-gate.js +21 -9
- package/dist/services/code-review/ecc-bridge.js +23 -23
- package/dist/services/codegraph/codegraph-autorefresh.js +56 -39
- package/dist/services/codegraph/codegraph-config-repair-writer.js +4 -1
- package/dist/services/codegraph/codegraph-exclude-integrity.js +4 -1
- package/dist/services/codegraph/codegraph-exclude-repair.js +1 -2
- package/dist/services/codegraph/codegraph-index-integrity.js +1 -1
- package/dist/services/codegraph/codegraph-preflight-service.d.ts +3 -26
- package/dist/services/codegraph/codegraph-preflight-service.js +16 -37
- package/dist/services/codegraph/codegraph-preflight-structure.d.ts +32 -0
- package/dist/services/codegraph/codegraph-preflight-structure.js +33 -0
- package/dist/services/codegraph/codegraph-process-runner.js +12 -1
- package/dist/services/codegraph/codegraph-service.js +9 -1
- package/dist/services/compact/request-transition-hook.js +2 -1
- package/dist/services/compact/suggest-service.d.ts +3 -61
- package/dist/services/compact/suggest-service.js +9 -12
- package/dist/services/compact/suggest-types.d.ts +76 -0
- package/dist/services/compact/suggest-types.js +10 -0
- package/dist/services/compact-history/compact-history-service.js +2 -2
- package/dist/services/compact-statusline/compact-lifecycle-store.d.ts +2 -32
- package/dist/services/compact-statusline/compact-lifecycle-store.js +7 -12
- package/dist/services/compact-statusline/compact-lifecycle-types.d.ts +32 -0
- package/dist/services/compact-statusline/compact-lifecycle-types.js +8 -0
- package/dist/services/compact-statusline/compact-statusline-cell-table.d.ts +42 -0
- package/dist/services/compact-statusline/compact-statusline-cell-table.js +63 -0
- package/dist/services/compact-statusline/compact-statusline-service.d.ts +4 -21
- package/dist/services/compact-statusline/compact-statusline-service.js +9 -101
- package/dist/services/compact-statusline/compact-statusline-state.d.ts +4 -0
- package/dist/services/compact-statusline/compact-statusline-state.js +50 -0
- package/dist/services/config/config-migration.js +2 -2
- package/dist/services/config/config-restore.js +1 -1
- package/dist/services/config/config-rollback.js +1 -1
- package/dist/services/config/config-safety.js +28 -10
- package/dist/services/config/config-service.js +114 -31
- package/dist/services/config/model-routing.js +5 -2
- package/dist/services/config/proxy-service.js +6 -1
- package/dist/services/config/workspace-state-service.js +17 -5
- package/dist/services/context/auto-compact-dispatcher-input.d.ts +38 -0
- package/dist/services/context/auto-compact-dispatcher-input.js +9 -0
- package/dist/services/context/auto-compact-dispatcher.d.ts +2 -30
- package/dist/services/context/auto-compact-reader-input.d.ts +30 -0
- package/dist/services/context/auto-compact-reader-input.js +8 -0
- package/dist/services/context/auto-compact-reader.d.ts +2 -24
- package/dist/services/context/auto-compact-reader.js +4 -1
- package/dist/services/context/auto-compact-thresholds.d.ts +54 -0
- package/dist/services/context/auto-compact-thresholds.js +19 -0
- package/dist/services/context/auto-compact-types.d.ts +2 -46
- package/dist/services/context/auto-compact-types.js +1 -11
- package/dist/services/context/build-dispatch-system-prompt.js +2 -2
- package/dist/services/context/collector.js +8 -10
- package/dist/services/context/context-audit-hint.js +7 -5
- package/dist/services/context/context-audit-keys.d.ts +15 -0
- package/dist/services/context/context-audit-keys.js +77 -0
- package/dist/services/context/context-audit-limits.d.ts +20 -0
- package/dist/services/context/context-audit-limits.js +31 -0
- package/dist/services/context/context-audit-scan.d.ts +19 -0
- package/dist/services/context/context-audit-scan.js +246 -0
- package/dist/services/context/context-audit-types.d.ts +65 -0
- package/dist/services/context/context-audit-types.js +10 -0
- package/dist/services/context/context-audit.d.ts +13 -59
- package/dist/services/context/context-audit.js +38 -254
- package/dist/services/context/context-builder.js +4 -4
- package/dist/services/context/context-schema.d.ts +1 -1
- package/dist/services/context/context-schema.js +13 -13
- package/dist/services/context/doc-retriever.js +2 -2
- package/dist/services/context/harness-context-witness.js +43 -24
- package/dist/services/context/harness-window-config.js +27 -7
- package/dist/services/context/ide-detect.js +2 -1
- package/dist/services/context/index.d.ts +1 -1
- package/dist/services/context/memory-index-reader.js +3 -9
- package/dist/services/context/memory-preflight-config.js +3 -5
- package/dist/services/context/memory-preflight-service.d.ts +2 -20
- package/dist/services/context/memory-preflight-service.js +37 -68
- package/dist/services/context/memory-preflight-support.d.ts +48 -0
- package/dist/services/context/memory-preflight-support.js +56 -0
- package/dist/services/context/post-compact-reinjection.js +3 -3
- package/dist/services/context/renderer.js +7 -3
- package/dist/services/context/spillover-store.js +3 -1
- package/dist/services/context/summary-view.js +1 -1
- package/dist/services/context/threshold.js +2 -2
- package/dist/services/context/tokenizer.js +3 -3
- package/dist/services/crystallization/crystallization-brief-schema.d.ts +80 -0
- package/dist/services/crystallization/crystallization-brief-schema.js +159 -0
- package/dist/services/crystallization/crystallization-service.d.ts +7 -7
- package/dist/services/crystallization/crystallization-service.js +56 -55
- package/dist/services/crystallization/crystallization-store.d.ts +2 -2
- package/dist/services/crystallization/crystallization-store.js +37 -20
- package/dist/services/crystallization/crystallization-types.d.ts +4 -56
- package/dist/services/crystallization/crystallization-types.js +31 -184
- package/dist/services/crystallization/evidence-brief-builder.d.ts +3 -3
- package/dist/services/crystallization/evidence-brief-builder.js +32 -38
- package/dist/services/crystallization/index.d.ts +4 -4
- package/dist/services/crystallization/index.js +4 -4
- package/dist/services/dashboard/project-dashboard-service.js +7 -1
- package/dist/services/dispatch/await-batch-helpers.d.ts +55 -0
- package/dist/services/dispatch/await-batch-helpers.js +206 -0
- package/dist/services/dispatch/await-batch.d.ts +50 -7
- package/dist/services/dispatch/await-batch.js +97 -194
- package/dist/services/dispatch/batch-counter.js +2 -1
- package/dist/services/dispatch/conflict-replay.js +2 -2
- package/dist/services/dispatch/contract-store.js +5 -2
- package/dist/services/dispatch/dispatch-record-input-types.d.ts +81 -0
- package/dist/services/dispatch/dispatch-record-input-types.js +1 -0
- package/dist/services/dispatch/dispatch-record-types.d.ts +6 -73
- package/dist/services/dispatch/dispatch-record-upgrade-fields.d.ts +72 -0
- package/dist/services/dispatch/dispatch-record-upgrade-fields.js +242 -0
- package/dist/services/dispatch/dispatch-record-upgrade-guards.d.ts +15 -0
- package/dist/services/dispatch/dispatch-record-upgrade-guards.js +55 -0
- package/dist/services/dispatch/dispatch-record-upgrade.d.ts +2 -4
- package/dist/services/dispatch/dispatch-record-upgrade.js +21 -213
- package/dist/services/dispatch/dispatch-record-writer.js +54 -26
- package/dist/services/dispatch/dispatch-sub-agent.js +7 -2
- package/dist/services/dispatch/e2e-fixtures.js +1 -1
- package/dist/services/dispatch/isolation-lease.js +39 -17
- package/dist/services/dispatch/merge-back-runner.js +51 -11
- package/dist/services/dispatch/service-shutdown.js +4 -1
- package/dist/services/dispatch/slice-dag-types.d.ts +116 -0
- package/dist/services/dispatch/slice-dag-types.js +41 -0
- package/dist/services/dispatch/slice-dag.d.ts +3 -109
- package/dist/services/dispatch/slice-dag.js +13 -36
- package/dist/services/dispatch/sub-agent-batch-await.d.ts +47 -0
- package/dist/services/dispatch/sub-agent-batch-await.js +73 -0
- package/dist/services/dispatch/sub-agent-dispatcher-types.d.ts +122 -0
- package/dist/services/dispatch/sub-agent-dispatcher-types.js +12 -0
- package/dist/services/dispatch/sub-agent-dispatcher.d.ts +3 -145
- package/dist/services/dispatch/sub-agent-dispatcher.js +14 -70
- package/dist/services/dispatch/test-tool-detection.js +12 -1
- package/dist/services/doc/doc-generator.js +19 -4
- package/dist/services/doctor/doctor-service/checks/check-id-schema.js +16 -8
- package/dist/services/doctor/doctor-service/checks/codegraph-capability.d.ts +7 -2
- package/dist/services/doctor/doctor-service/checks/codegraph-capability.js +26 -8
- package/dist/services/doctor/doctor-service/checks/codegraph-exclude-integrity.js +16 -8
- package/dist/services/doctor/doctor-service/checks/codegraph-index-integrity.js +16 -8
- package/dist/services/doctor/doctor-service/checks/dist-source-version.js +18 -9
- package/dist/services/doctor/doctor-service/checks/ecc-hooks-schema-drift.js +20 -10
- package/dist/services/doctor/doctor-service/checks/gateguard-conflict.js +18 -9
- package/dist/services/doctor/doctor-service/checks/l3-memory-health.js +25 -11
- package/dist/services/doctor/doctor-service/checks/l3-orphan-sessions.js +12 -6
- package/dist/services/doctor/doctor-service/checks/multi-binary-drift.d.ts +7 -16
- package/dist/services/doctor/doctor-service/checks/multi-binary-drift.js +50 -70
- package/dist/services/doctor/doctor-service/checks/schema-validity.js +5 -1
- package/dist/services/doctor/doctor-service/checks/skill-presence.js +4 -2
- package/dist/services/doctor/doctor-service/checks/statusline-install.js +8 -4
- package/dist/services/doctor/doctor-service/checks/statusline-runtime.js +8 -4
- package/dist/services/doctor/doctor-service/checks/user-config.js +4 -2
- package/dist/services/doctor/doctor-service/checks/workspace-init.js +8 -4
- package/dist/services/doctor/doctor-service/checks/workspace-layout.js +19 -11
- package/dist/services/doctor/doctor-service/index.js +4 -2
- package/dist/services/doctor/doctor-service/multi-binary-drift-helpers.d.ts +40 -0
- package/dist/services/doctor/doctor-service/multi-binary-drift-helpers.js +49 -0
- package/dist/services/doctor/doctor-service/plugin-registry.js +1 -1
- package/dist/services/doctor/doctor-service/probe-types.d.ts +210 -0
- package/dist/services/doctor/doctor-service/probe-types.js +14 -0
- package/dist/services/doctor/doctor-service/types.d.ts +7 -197
- package/dist/services/doctor/index.d.ts +1 -1
- package/dist/services/doctor/index.js +1 -1
- package/dist/services/env/shell-probe.js +8 -2
- package/dist/services/evidence/evidence-body-builders.d.ts +23 -0
- package/dist/services/evidence/evidence-body-builders.js +197 -0
- package/dist/services/evidence/evidence-generator.js +6 -187
- package/dist/services/evolution/evolution-constraints.d.ts +43 -0
- package/dist/services/evolution/evolution-constraints.js +54 -0
- package/dist/services/evolution/evolution-evaluation-schema.d.ts +43 -0
- package/dist/services/evolution/evolution-evaluation-schema.js +43 -0
- package/dist/services/evolution/evolution-service.d.ts +6 -6
- package/dist/services/evolution/evolution-service.js +58 -58
- package/dist/services/evolution/evolution-store.d.ts +2 -2
- package/dist/services/evolution/evolution-store.js +37 -51
- package/dist/services/evolution/evolution-types.d.ts +2 -22
- package/dist/services/evolution/evolution-types.js +41 -101
- package/dist/services/evolution/independent-evaluator-runner.d.ts +3 -3
- package/dist/services/evolution/independent-evaluator-runner.js +20 -22
- package/dist/services/evolution/regression-skeptic-runner.d.ts +2 -2
- package/dist/services/evolution/regression-skeptic-runner.js +18 -18
- package/dist/services/feedback/feedback-promotion-service.js +48 -12
- package/dist/services/feedback/promotion-artifact-evidence.d.ts +2 -16
- package/dist/services/feedback/promotion-artifact-evidence.js +6 -83
- package/dist/services/feedback/promotion-artifact-json-evidence.d.ts +29 -0
- package/dist/services/feedback/promotion-artifact-json-evidence.js +39 -0
- package/dist/services/feedback/promotion-source-comments.d.ts +47 -0
- package/dist/services/feedback/promotion-source-comments.js +61 -0
- package/dist/services/final-review/final-review-contract.d.ts +26 -0
- package/dist/services/final-review/final-review-contract.js +14 -0
- package/dist/services/final-review/final-review-delivery.d.ts +63 -0
- package/dist/services/final-review/final-review-delivery.js +124 -0
- package/dist/services/final-review/final-review-evidence-budget.d.ts +125 -0
- package/dist/services/final-review/final-review-evidence-budget.js +218 -0
- package/dist/services/final-review/final-review-evidence-collect.d.ts +4 -0
- package/dist/services/final-review/final-review-evidence-collect.js +230 -0
- package/dist/services/final-review/final-review-evidence-sources.d.ts +138 -0
- package/dist/services/final-review/final-review-evidence-sources.js +139 -0
- package/dist/services/final-review/final-review-fifth-dim.d.ts +8 -0
- package/dist/services/final-review/final-review-fifth-dim.js +20 -0
- package/dist/services/final-review/final-review-gates.d.ts +119 -0
- package/dist/services/final-review/final-review-gates.js +214 -0
- package/dist/services/final-review/final-review-output-budget.d.ts +88 -0
- package/dist/services/final-review/final-review-output-budget.js +161 -0
- package/dist/services/final-review/final-review-prompt.d.ts +35 -0
- package/dist/services/final-review/final-review-prompt.js +112 -0
- package/dist/services/final-review/final-review-reviewer.d.ts +57 -0
- package/dist/services/final-review/final-review-reviewer.js +95 -0
- package/dist/services/final-review/final-review-runner.d.ts +3 -0
- package/dist/services/final-review/final-review-runner.js +158 -0
- package/dist/services/final-review/final-review-service.d.ts +119 -373
- package/dist/services/final-review/final-review-service.js +48 -1380
- package/dist/services/final-review/final-review-verdicts.d.ts +60 -0
- package/dist/services/final-review/final-review-verdicts.js +91 -0
- package/dist/services/final-review/index.d.ts +3 -3
- package/dist/services/final-review/index.js +2 -2
- package/dist/services/final-review/pre-post-diff.js +32 -29
- package/dist/services/fixture/fixture-capture-service.js +14 -6
- package/dist/services/fresh-context/trigger-scan.js +13 -2
- package/dist/services/fuzzy-matching/fuzzy-match-service.js +1 -1
- package/dist/services/fuzzy-matching/fzf-pick-service.js +6 -1
- package/dist/services/hooks/pre-tool-code-gate.js +2 -2
- package/dist/services/hooks/presence-marker-detector.js +12 -2
- package/dist/services/hooks/worktree-authorization-gate.js +21 -7
- package/dist/services/ide/adapters/claude-code-adapter.js +30 -17
- package/dist/services/ide/adapters/codex-adapter.js +3 -5
- package/dist/services/ide/adapters/cursor-adapter.js +3 -5
- package/dist/services/ide/adapters/hermes-adapter.js +2 -4
- package/dist/services/ide/adapters/openclaw-adapter.js +2 -4
- package/dist/services/ide/adapters/qoder-adapter.js +2 -4
- package/dist/services/ide/adapters/tongyi-lingma-adapter.js +1 -1
- package/dist/services/ide/adapters/trae-adapter.js +3 -5
- package/dist/services/ide/adapters/zcode-adapter.js +8 -7
- package/dist/services/ide/current-model-detector.js +2 -1
- package/dist/services/ide/ide-compact-types.d.ts +153 -0
- package/dist/services/ide/ide-compact-types.js +1 -0
- package/dist/services/ide/ide-registry.js +1 -1
- package/dist/services/ide/ide-types.d.ts +7 -145
- package/dist/services/ide/resource-profile.js +1 -1
- package/dist/services/ide/shared/atomic-json.js +2 -1
- package/dist/services/impact/impact-scan-service.js +12 -5
- package/dist/services/job/job-commit-verification.d.ts +73 -0
- package/dist/services/job/job-commit-verification.js +72 -0
- package/dist/services/job/job-orchestrator.d.ts +42 -0
- package/dist/services/job/job-orchestrator.js +110 -10
- package/dist/services/job/job-progress-store.d.ts +75 -5
- package/dist/services/job/job-progress-store.js +83 -6
- package/dist/services/job/job-rotation.d.ts +1 -1
- package/dist/services/job/job-rotation.js +5 -1
- package/dist/services/job/job-state-store.js +2 -2
- package/dist/services/job/job-types.js +49 -20
- package/dist/services/job/subagent-job-wrapper.d.ts +1 -1
- package/dist/services/job/subagent-job-wrapper.js +5 -1
- package/dist/services/job-snapshot/snapshot.js +2 -2
- package/dist/services/karpathy-cost/karpathy-cost-check-service.js +23 -13
- package/dist/services/legacy/legacy-detector.js +51 -5
- package/dist/services/lint/detect-eslint.js +10 -4
- package/dist/services/lint/detect-ocr-18.js +11 -3
- package/dist/services/lint/eslint-runner-support.d.ts +22 -0
- package/dist/services/lint/eslint-runner-support.js +185 -0
- package/dist/services/lint/eslint-runner-types.d.ts +69 -0
- package/dist/services/lint/eslint-runner-types.js +11 -0
- package/dist/services/lint/eslint-runner.d.ts +4 -56
- package/dist/services/lint/eslint-runner.js +24 -178
- package/dist/services/lint/npx-resolver.js +1 -3
- package/dist/services/lint/ocr-18-acquire.js +15 -4
- package/dist/services/lint/ocr-multilang-adapter.js +4 -5
- package/dist/services/llm/anthropic-runner.js +4 -1
- package/dist/services/log/log-commands-service.js +2 -6
- package/dist/services/log/logger.js +15 -12
- package/dist/services/log/retention.js +3 -2
- package/dist/services/loop/evaluator-dispatcher.js +78 -42
- package/dist/services/loop/loop-bee-relation-service.d.ts +4 -4
- package/dist/services/loop/loop-bee-relation-service.js +36 -40
- package/dist/services/loop/loop-bee-relation-store.d.ts +3 -3
- package/dist/services/loop/loop-bee-relation-store.js +9 -11
- package/dist/services/loop/loop-bee-relation-types.d.ts +1 -1
- package/dist/services/loop/loop-bee-relation-types.js +14 -25
- package/dist/services/loop/loop-release-service.d.ts +2 -2
- package/dist/services/loop/loop-release-service.js +3 -3
- package/dist/services/loop/loop-release-store.d.ts +2 -2
- package/dist/services/loop/loop-release-store.js +4 -6
- package/dist/services/loop/loop-release-types.d.ts +1 -1
- package/dist/services/loop/loop-release-types.js +21 -31
- package/dist/services/loop/monotonic-guard-types.d.ts +51 -0
- package/dist/services/loop/monotonic-guard-types.js +9 -0
- package/dist/services/loop/monotonic-guard.d.ts +2 -43
- package/dist/services/loop/monotonic-runner-types.d.ts +63 -0
- package/dist/services/loop/monotonic-runner-types.js +17 -0
- package/dist/services/loop/monotonic-runner.d.ts +3 -34
- package/dist/services/loop/monotonic-runner.js +10 -20
- package/dist/services/loop/run-driver.js +16 -8
- package/dist/services/loop/spec-service.d.ts +0 -5
- package/dist/services/loop/spec-service.js +49 -9
- package/dist/services/memory/llm-reranker-core.d.ts +108 -0
- package/dist/services/memory/llm-reranker-core.js +105 -0
- package/dist/services/memory/llm-reranker.d.ts +3 -94
- package/dist/services/memory/llm-reranker.js +13 -102
- package/dist/services/memory/memory-ingest-service.d.ts +1 -22
- package/dist/services/memory/memory-ingest-service.js +29 -76
- package/dist/services/memory/memory-ingest-support.d.ts +23 -0
- package/dist/services/memory/memory-ingest-support.js +81 -0
- package/dist/services/memory/memory-rotate-service.js +41 -8
- package/dist/services/memory/memory-search-service.js +8 -4
- package/dist/services/memory/project-context-service.js +26 -5
- package/dist/services/memory/project-memory-service/index/kind-dispatch.d.ts +2 -7
- package/dist/services/memory/project-memory-service/index/kind-dispatch.js +17 -136
- package/dist/services/memory/project-memory-service/index/project-memory-plan-exec.d.ts +7 -0
- package/dist/services/memory/project-memory-service/index/project-memory-plan-exec.js +150 -0
- package/dist/services/memory/project-memory-service/index/ranking.js +6 -3
- package/dist/services/memory/project-memory-service/index/reindex.js +14 -5
- package/dist/services/memory/project-memory-service/memory-kinds.d.ts +31 -0
- package/dist/services/memory/project-memory-service/memory-kinds.js +87 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter-parse.d.ts +24 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter-parse.js +104 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter.d.ts +2 -24
- package/dist/services/memory/project-memory-service/parsers/frontmatter.js +28 -79
- package/dist/services/memory/project-memory-service/parsers/markdown-pure.js +15 -3
- package/dist/services/memory/project-memory-service/store/atomic-write.js +34 -22
- package/dist/services/memory/project-memory-service/store/paths.js +2 -1
- package/dist/services/memory/project-memory-service/types.d.ts +3 -31
- package/dist/services/memory/project-memory-service/types.js +1 -76
- package/dist/services/migrate-skill-name/migrate.js +1 -1
- package/dist/services/migrate-skill-name/schema.js +1 -1
- package/dist/services/mode/mode-enforcement.js +4 -2
- package/dist/services/mode/mode-status-service.d.ts +27 -9
- package/dist/services/mode/mode-status-service.js +64 -12
- package/dist/services/observability/aggregation-helpers.d.ts +22 -0
- package/dist/services/observability/aggregation-helpers.js +65 -0
- package/dist/services/observability/aggregation-types.d.ts +66 -0
- package/dist/services/observability/aggregation-types.js +34 -0
- package/dist/services/observability/aggregation.d.ts +5 -53
- package/dist/services/observability/aggregation.js +17 -80
- package/dist/services/observability/jsonl-store.js +2 -1
- package/dist/services/observability/observability-schema.d.ts +71 -0
- package/dist/services/observability/observability-schema.js +64 -0
- package/dist/services/observability/observability-service.d.ts +3 -56
- package/dist/services/observability/observability-service.js +9 -49
- package/dist/services/openspec/coverage-evidence-reader.js +18 -11
- package/dist/services/openspec/openspec-archive-service.js +31 -24
- package/dist/services/openspec/openspec-init-service.js +8 -2
- package/dist/services/openspec/openspec-propose-from-doctor-service.js +1 -1
- package/dist/services/openspec/openspec-scan-service.js +4 -1
- package/dist/services/openspec/openspec-validate-service.js +26 -5
- package/dist/services/perf/perf-baseline-service.js +2 -6
- package/dist/services/polyrepo/polyrepo-dispatcher.js +2 -1
- package/dist/services/polyrepo/polyrepo-scanner.js +4 -1
- package/dist/services/prd/handoff-frontmatter-shape.d.ts +42 -0
- package/dist/services/prd/handoff-frontmatter-shape.js +67 -0
- package/dist/services/prd/handoff-frontmatter.js +1 -1
- package/dist/services/prd/handoff-path-resolution.d.ts +37 -0
- package/dist/services/prd/handoff-path-resolution.js +101 -0
- package/dist/services/prd/handoff-service.d.ts +1 -37
- package/dist/services/prd/handoff-service.js +16 -148
- package/dist/services/prd/prd-blocks-checker.js +28 -8
- package/dist/services/prd/project-scan-bootstrap-service.js +1 -5
- package/dist/services/prd/project-scan-reader.js +1 -4
- package/dist/services/prd/project-scan-sediment.js +1 -4
- package/dist/services/preferences/preferences-service.js +6 -8
- package/dist/services/preferences/preferences-types.js +4 -4
- package/dist/services/qa/bdd-test-style-contract.d.ts +41 -0
- package/dist/services/qa/bdd-test-style-contract.js +37 -0
- package/dist/services/qa/bdd-test-style-verifier.d.ts +2 -24
- package/dist/services/qa/bdd-test-style-verifier.js +5 -31
- package/dist/services/qa/browser-event-logger.js +2 -1
- package/dist/services/qa/qa-business-review-state.js +20 -5
- package/dist/services/qa/screenshot-archive-service.js +1 -3
- package/dist/services/rd/ast-gate.js +2 -2
- package/dist/services/rd/impl.js +1 -1
- package/dist/services/rd/rd-service.js +117 -43
- package/dist/services/rd/reviewer-dispatch-policy.js +4 -7
- package/dist/services/rd/standards-diagnostic.js +4 -1
- package/dist/services/rd/strategy.js +10 -3
- package/dist/services/rd/tactical-stage.js +2 -2
- package/dist/services/rd/types.js +9 -7
- package/dist/services/rd-swarm/rd-swarm-service.d.ts +2 -45
- package/dist/services/rd-swarm/rd-swarm-service.js +140 -21
- package/dist/services/rd-swarm/rd-swarm-types.d.ts +54 -0
- package/dist/services/rd-swarm/rd-swarm-types.js +10 -0
- package/dist/services/recommendations/capability-map-service.js +10 -2
- package/dist/services/recommendations/capability-seed-items.js +81 -14
- package/dist/services/recommendations/capability-seed-mappings.js +420 -48
- package/dist/services/recommendations/capability-seed-sources-mcp-server.d.ts +9 -0
- package/dist/services/recommendations/capability-seed-sources-mcp-server.js +233 -0
- package/dist/services/recommendations/capability-seed-sources.js +127 -32
- package/dist/services/release/release-state.d.ts +2 -2
- package/dist/services/release/release-state.js +44 -15
- package/dist/services/release/version-precheck-layer-changeset.d.ts +2 -0
- package/dist/services/release/version-precheck-layer-changeset.js +43 -0
- package/dist/services/release/version-precheck-service.d.ts +11 -36
- package/dist/services/release/version-precheck-service.js +20 -104
- package/dist/services/release/version-precheck-support.d.ts +53 -0
- package/dist/services/release/version-precheck-support.js +64 -0
- package/dist/services/retrospective/retrospective-index.js +17 -3
- package/dist/services/retrospective/retrospective-search-service.js +6 -2
- package/dist/services/retrospective/retrospective-show.js +4 -1
- package/dist/services/reviewer/model-family.js +7 -1
- package/dist/services/reviewer/providers/anthropic.d.ts +5 -0
- package/dist/services/reviewer/providers/anthropic.js +10 -1
- package/dist/services/reviewer/providers/openai.d.ts +5 -0
- package/dist/services/reviewer/providers/openai.js +10 -1
- package/dist/services/reviewer/reviewer-config.js +4 -2
- package/dist/services/reviewer/reviewer-service.d.ts +2 -36
- package/dist/services/reviewer/reviewer-service.js +2 -1
- package/dist/services/reviewer/reviewer-types.d.ts +43 -0
- package/dist/services/reviewer/reviewer-types.js +1 -0
- package/dist/services/role/role-registry.js +9 -1
- package/dist/services/runtime/runtime-detector.js +4 -1
- package/dist/services/runtime/vendors/claude-code.js +14 -6
- package/dist/services/runtime/vendors/codex.js +11 -3
- package/dist/services/runtime/vendors/copilot.js +11 -3
- package/dist/services/sc/sc-service.js +28 -15
- package/dist/services/scan/acceptance-coverage-service.js +4 -1
- package/dist/services/scan/api-diff-openapi-schema-read.d.ts +67 -0
- package/dist/services/scan/api-diff-openapi-schema-read.js +154 -0
- package/dist/services/scan/api-diff-openapi.d.ts +16 -2
- package/dist/services/scan/api-diff-openapi.js +19 -123
- package/dist/services/scan/api-diff-recorded.js +16 -3
- package/dist/services/scan/api-diff-service.js +49 -16
- package/dist/services/scan/api-diff-types.js +12 -3
- package/dist/services/scan/api-surface-helpers.d.ts +13 -0
- package/dist/services/scan/api-surface-helpers.js +31 -0
- package/dist/services/scan/api-surface-service.d.ts +2 -45
- package/dist/services/scan/api-surface-service.js +15 -26
- package/dist/services/scan/api-surface-types.d.ts +54 -0
- package/dist/services/scan/api-surface-types.js +10 -0
- package/dist/services/scan/archetype-detection.d.ts +37 -0
- package/dist/services/scan/archetype-detection.js +142 -0
- package/dist/services/scan/archetype-service.js +36 -125
- package/dist/services/scan/diff-scope-service.js +35 -15
- package/dist/services/scan/existing-system-service.js +16 -99
- package/dist/services/scan/existing-system-visual-tokens.d.ts +20 -0
- package/dist/services/scan/existing-system-visual-tokens.js +123 -0
- package/dist/services/scan/file-size-policy.d.ts +86 -0
- package/dist/services/scan/file-size-policy.js +184 -0
- package/dist/services/scan/file-size-scan.d.ts +30 -3
- package/dist/services/scan/file-size-scan.js +47 -9
- package/dist/services/scan/karpathy-service.js +6 -1
- package/dist/services/scan/orphan-service.js +86 -20
- package/dist/services/scan/type-sanity-service.js +104 -10
- package/dist/services/sediment/dispose-confirm.d.ts +2 -2
- package/dist/services/sediment/dispose-confirm.js +2 -2
- package/dist/services/sediment/json-schema.d.ts +1 -1
- package/dist/services/sediment/json-schema.js +25 -13
- package/dist/services/sediment/manifest-lint.d.ts +1 -12
- package/dist/services/sediment/manifest-lint.js +1 -7
- package/dist/services/sediment/pool-paths.js +13 -9
- package/dist/services/sediment/pool-read.d.ts +1 -1
- package/dist/services/sediment/pool-read.js +42 -18
- package/dist/services/sediment/pool-rebuild-index.d.ts +1 -1
- package/dist/services/sediment/pool-rebuild-index.js +5 -5
- package/dist/services/sediment/pool-write.d.ts +1 -1
- package/dist/services/sediment/pool-write.js +7 -7
- package/dist/services/sediment/promotion-gate.d.ts +1 -1
- package/dist/services/sediment/promotion-gate.js +9 -9
- package/dist/services/sediment/types.d.ts +8 -8
- package/dist/services/session/binding-status-service.js +14 -4
- package/dist/services/session/caller-binding-service.js +2 -1
- package/dist/services/session/getSessionDir.js +4 -1
- package/dist/services/session/index.d.ts +1 -1
- package/dist/services/session/index.js +1 -1
- package/dist/services/session/resolve-caller-id.js +7 -5
- package/dist/services/session/session-binding-bridge.js +26 -25
- package/dist/services/session/session-checkpoint-service.js +1 -1
- package/dist/services/session/session-file-schema.d.ts +70 -0
- package/dist/services/session/session-file-schema.js +68 -0
- package/dist/services/session/session-manager.d.ts +6 -6
- package/dist/services/session/session-manager.js +30 -29
- package/dist/services/session/session-resume-service.js +2 -1
- package/dist/services/share/bundle-format-constants.d.ts +85 -0
- package/dist/services/share/bundle-format-constants.js +100 -0
- package/dist/services/share/bundle-reader.d.ts +3 -3
- package/dist/services/share/bundle-reader.js +75 -68
- package/dist/services/share/bundle-types.d.ts +3 -70
- package/dist/services/share/bundle-types.js +38 -107
- package/dist/services/share/bundle-writer.d.ts +3 -3
- package/dist/services/share/bundle-writer.js +101 -91
- package/dist/services/share/run-state-contract.d.ts +1 -1
- package/dist/services/share/run-state-contract.js +7 -13
- package/dist/services/signal/cancel-handler.js +2 -1
- package/dist/services/skill/resume-detector.js +6 -4
- package/dist/services/skill/skill-scheduler.js +3 -1
- package/dist/services/skill/skill-search-service.js +4 -4
- package/dist/services/skillhub/release-diff.d.ts +2 -2
- package/dist/services/skillhub/release-diff.js +6 -10
- package/dist/services/skillhub/release-export.d.ts +2 -2
- package/dist/services/skillhub/release-export.js +15 -17
- package/dist/services/skillhub/release-gc-blobs.d.ts +2 -2
- package/dist/services/skillhub/release-gc-blobs.js +4 -4
- package/dist/services/skillhub/release-import.d.ts +2 -2
- package/dist/services/skillhub/release-import.js +13 -12
- package/dist/services/skillhub/release-retain.d.ts +3 -3
- package/dist/services/skillhub/release-retain.js +22 -22
- package/dist/services/skillhub/sqlite-store.d.ts +1 -1
- package/dist/services/skillhub/sqlite-store.js +12 -11
- package/dist/services/skillhub/tar-runtime.js +15 -15
- package/dist/services/skillhub/types.d.ts +4 -4
- package/dist/services/skills/hooks-codegate-superpowers.js +16 -7
- package/dist/services/skills/hooks-settings-service.js +61 -19
- package/dist/services/skills/presence-lease-service.js +26 -16
- package/dist/services/skills/presence-lease-types.d.ts +1 -1
- package/dist/services/skills/presence-lease-types.js +1 -1
- package/dist/services/skills/skill-conformance-service.js +40 -8
- package/dist/services/skills/skill-presence-service.js +16 -14
- package/dist/services/skills/skill-runbook-service.js +2 -1
- package/dist/services/skills/skill-statusline-model.d.ts +128 -0
- package/dist/services/skills/skill-statusline-model.js +163 -0
- package/dist/services/skills/skill-statusline-renderer.js +4 -3
- package/dist/services/skills/skill-statusline-service.d.ts +3 -100
- package/dist/services/skills/skill-statusline-service.js +56 -163
- package/dist/services/skills/statusline-palette.js +11 -6
- package/dist/services/skills/statusline-settings-service.js +2 -1
- package/dist/services/skills/sync-service-support.d.ts +65 -0
- package/dist/services/skills/sync-service-support.js +50 -0
- package/dist/services/skills/sync-service.d.ts +3 -66
- package/dist/services/skills/sync-service.js +15 -53
- package/dist/services/slice/calibration-store.js +8 -2
- package/dist/services/slice/cross-pass-edge-merger.d.ts +3 -28
- package/dist/services/slice/cross-pass-edge-merger.js +13 -63
- package/dist/services/slice/cross-pass-edge-static-scan-support.d.ts +69 -0
- package/dist/services/slice/cross-pass-edge-static-scan-support.js +74 -0
- package/dist/services/slice/granularity-decider.js +2 -2
- package/dist/services/slice/slice-archive-service.js +8 -3
- package/dist/services/slice/slice-check-service.js +19 -8
- package/dist/services/slice/slice-decompose-runners.js +61 -23
- package/dist/services/slice/slice-decompose-service.js +4 -4
- package/dist/services/slice/slice-review-state.js +8 -2
- package/dist/services/smoke/smoke-paths-state.js +9 -2
- package/dist/services/sop/gate-enforce-service.js +9 -2
- package/dist/services/sop/sop-advance-service.js +14 -2
- package/dist/services/sop/sop-check-service.js +16 -4
- package/dist/services/sop/sop-paths.js +3 -1
- package/dist/services/sop/sop-registry-service.js +5 -1
- package/dist/services/sop/sop-service.js +29 -7
- package/dist/services/sop/sop-types.js +5 -1
- package/dist/services/standards/ide-aware-standards-service.js +2 -2
- package/dist/services/standards/loop-engineering-lint.js +12 -5
- package/dist/services/standards/loop-engineering-readiness-lint.js +5 -5
- package/dist/services/standards/migrate-claude-rules-service.js +9 -7
- package/dist/services/standards/missing-standards-detector.js +1 -3
- package/dist/services/standards/project-context-support.d.ts +50 -0
- package/dist/services/standards/project-context-support.js +244 -0
- package/dist/services/standards/project-context-types.d.ts +30 -0
- package/dist/services/standards/project-context-types.js +11 -0
- package/dist/services/standards/project-context.d.ts +10 -22
- package/dist/services/standards/project-context.js +27 -214
- package/dist/services/standards/project-standards-service.js +43 -12
- package/dist/services/standards/standards-render-common.d.ts +15 -0
- package/dist/services/standards/standards-render-common.js +49 -0
- package/dist/services/standards/standards-render.d.ts +1 -2
- package/dist/services/standards/standards-render.js +31 -58
- package/dist/services/standards/ui-library-dispatch-block.js +1 -1
- package/dist/services/tech/tech-change-id-service.js +7 -7
- package/dist/services/tech/tech-service.js +73 -26
- package/dist/services/test-cache/test-cache-service.js +8 -3
- package/dist/services/upgrade/1x-detector-service.js +5 -3
- package/dist/services/upgrade/gitignore-migrate-service.js +5 -5
- package/dist/services/upgrade/upgrade-service.js +36 -13
- package/dist/services/verdict/envelope-parsers.d.ts +84 -0
- package/dist/services/verdict/envelope-parsers.js +146 -0
- package/dist/services/verdict/envelopes.d.ts +50 -60
- package/dist/services/verdict/envelopes.js +18 -156
- package/dist/services/verdict/verdict-aggregator.js +27 -3
- package/dist/services/vm/vm-lease.js +15 -3
- package/dist/services/web/aria-node.d.ts +27 -0
- package/dist/services/web/aria-node.js +1 -0
- package/dist/services/web/browser-acquire.js +3 -1
- package/dist/services/web/browser-cache-probe.d.ts +18 -0
- package/dist/services/web/browser-cache-probe.js +110 -0
- package/dist/services/web/browser-session-manager.js +6 -2
- package/dist/services/web/daemon-registry.js +4 -1
- package/dist/services/web/playwright-loader.d.ts +2 -70
- package/dist/services/web/playwright-types.d.ts +75 -0
- package/dist/services/web/playwright-types.js +1 -0
- package/dist/services/web/snapshot-pruner.d.ts +2 -23
- package/dist/services/web/snapshot-pruner.js +8 -3
- package/dist/services/web/web-daemon-service.js +1 -3
- package/dist/services/web/web-install-service.d.ts +3 -32
- package/dist/services/web/web-install-service.js +21 -100
- package/dist/services/web/web-install-types.d.ts +31 -0
- package/dist/services/web/web-install-types.js +13 -0
- package/dist/services/web/web-login-profile.js +7 -5
- package/dist/services/web/web-protocol.js +3 -1
- package/dist/services/workflow/pipeline-verify-gate-support.js +63 -17
- package/dist/services/workflow/pipeline-verify-service.js +17 -6
- package/dist/services/workflow/plan-reader.js +5 -1
- package/dist/services/workflow/plan-refresher.js +20 -6
- package/dist/services/workflow/plan-trigger-detector.js +31 -8
- package/dist/services/workflow/provision-dispatch-node.js +8 -3
- package/dist/services/workflow/workflow-autonomous-resume-helpers.d.ts +3 -1
- package/dist/services/workflow/workflow-autonomous-resume-helpers.js +35 -144
- package/dist/services/workflow/workflow-autonomous-resume-validation.d.ts +16 -0
- package/dist/services/workflow/workflow-autonomous-resume-validation.js +155 -0
- package/dist/services/workflow/workflow-autonomous-service.js +25 -13
- package/dist/services/workflow/workflow-graph-store-helpers.d.ts +51 -0
- package/dist/services/workflow/workflow-graph-store-helpers.js +111 -0
- package/dist/services/workflow/workflow-graph-store.d.ts +2 -35
- package/dist/services/workflow/workflow-graph-store.js +30 -107
- package/dist/services/workflow/workflow-graph-types.js +3 -3
- package/dist/services/workflow/workflow-inflight-probe.js +14 -7
- package/dist/services/workflow/workflow-loader.js +5 -1
- package/dist/services/workflow/workflow-node-lifecycle.js +22 -21
- package/dist/services/workflow/workflow-presence-lifecycle-types.d.ts +50 -0
- package/dist/services/workflow/workflow-presence-lifecycle-types.js +1 -0
- package/dist/services/workflow/workflow-presence-lifecycle.d.ts +2 -42
- package/dist/services/workflow/workflow-presence-lifecycle.js +19 -21
- package/dist/services/workflow/workflow-router-service.js +169 -27
- package/dist/services/workflow/workflow-skip-service.js +14 -4
- package/dist/services/workflow/workflow-spec-builders.d.ts +15 -0
- package/dist/services/workflow/workflow-spec-builders.js +121 -0
- package/dist/services/workflow/workflow-spec.d.ts +7 -6
- package/dist/services/workflow/workflow-spec.js +22 -116
- package/dist/services/workflow/workflow-state-store.js +2 -1
- package/dist/services/workspace/migrate-1-4-1-service.js +80 -14
- package/dist/services/workspace/migrate-service.js +66 -16
- package/dist/services/workspace/reconcile-migrate.js +6 -2
- package/dist/services/workspace/reconcile-service.js +37 -16
- package/dist/services/workspace/workspace-claude-settings-materializer.js +7 -5
- package/dist/services/workspace/workspace-clean-service.js +4 -1
- package/dist/services/workspace/workspace-service.js +11 -3
- package/dist/services/workspace/workspace-state-service.js +1 -1
- package/dist/services/worktree/git-worktree-parser.js +13 -3
- package/dist/services/worktree/host-worktree-reconciler.js +8 -4
- package/dist/services/worktree/long-path-cleanup.js +23 -6
- package/dist/services/worktree/worktree-gc-guard.js +3 -1
- package/dist/services/worktree/worktree-lease-types.d.ts +53 -0
- package/dist/services/worktree/worktree-lease-types.js +10 -0
- package/dist/services/worktree/worktree-lease.d.ts +2 -44
- package/dist/shared/array-guards.d.ts +30 -0
- package/dist/shared/array-guards.js +32 -0
- package/dist/shared/format-md-compact-internals.d.ts +26 -0
- package/dist/shared/format-md-compact-internals.js +125 -0
- package/dist/shared/format-md-compact.js +1 -117
- package/dist/shared/fs-utils.js +2 -1
- package/dist/shared/incrementing-number.js +3 -3
- package/dist/shared/json-parse.d.ts +71 -0
- package/dist/shared/json-parse.js +32 -0
- package/dist/shared/json-schema-mini.js +3 -1
- package/dist/shared/path-safety.js +3 -1
- package/dist/shared/path-utils.d.ts +20 -0
- package/dist/shared/path-utils.js +26 -0
- package/dist/shared/planner-response.js +3 -3
- package/dist/shared/stale-policy.js +1 -3
- package/dist/skills/peaks-maker/index.js +11 -11
- package/package.json +31 -8
- package/scripts/clean-dist.mjs +1 -2
- package/scripts/copy-templates.mjs +2 -4
- package/scripts/install-skills.mjs +305 -125
- package/scripts/sync-version.mjs +25 -8
- package/scripts/watch.mjs +8 -2
- package/skills/peaks-code/SKILL.md +1 -1
|
@@ -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;
|
|
@@ -1,15 +1,21 @@
|
|
|
1
|
-
import { z } from
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { CRYS_BRIEF_SECTION_MAX, EvidenceBriefSchema, isBriefSectionFailure } from './crystallization-brief-schema.js';
|
|
3
|
+
// Public surface unchanged: every name below stays importable from this
|
|
4
|
+
// path (and through `crystallization/index.js`). The brief schema and its
|
|
5
|
+
// `z.infer` type travel together.
|
|
6
|
+
export { EvidenceBriefSchema, hasAllFourBriefSections, parseEvidenceBrief, safeParseEvidenceBrief } from './crystallization-brief-schema.js';
|
|
2
7
|
/* ---------------------------------------------------------------------- */
|
|
3
8
|
/* PRD-002b slice 2 — schema-limit constants extracted from inline */
|
|
4
9
|
/* `.max(N)` / `.length(N)` calls so the no-magic-numbers rule stops */
|
|
5
10
|
/* flagging the constraint values. Names describe the field, not the */
|
|
6
11
|
/* number. Bytewise-identical to the original literals. */
|
|
7
12
|
/* ---------------------------------------------------------------------- */
|
|
8
|
-
const CRYS_BRIEF_SECTION_MAX = 4000;
|
|
9
13
|
const CRYS_EVIDENCE_BULLET_MAX = 1000;
|
|
10
14
|
const CRYS_TRACE_POINTER_MAX = 256;
|
|
11
15
|
const CRYS_LOOP_ID_MAX = 64;
|
|
12
|
-
|
|
16
|
+
// 2 ** 31 - 1 spelled as its own literal so no-magic-numbers has no
|
|
17
|
+
// binary expression to flag. Same value, same bound, same message.
|
|
18
|
+
const CRYS_BEE_ID_MAX_I32 = 2147483647;
|
|
13
19
|
const CRYS_EVENT_ID_MAX = 128;
|
|
14
20
|
/**
|
|
15
21
|
* CrystallizationEvent — spec §4.5 / §4.7 / §5.
|
|
@@ -48,102 +54,21 @@ const CRYS_EVENT_ID_MAX = 128;
|
|
|
48
54
|
/* Trigger — §4.5 / §5.4 */
|
|
49
55
|
/* ---------------------------------------------------------------------- */
|
|
50
56
|
export const CrystallizationTriggerSchema = z.enum([
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
57
|
+
'user_explicit',
|
|
58
|
+
'llm_suggested',
|
|
59
|
+
'success_default_prompt',
|
|
60
|
+
'similar_task_recurrence'
|
|
55
61
|
]);
|
|
56
62
|
export const CRYSTALLIZATION_TRIGGERS = [
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
63
|
+
'user_explicit',
|
|
64
|
+
'llm_suggested',
|
|
65
|
+
'success_default_prompt',
|
|
66
|
+
'similar_task_recurrence'
|
|
61
67
|
];
|
|
62
68
|
/* ---------------------------------------------------------------------- */
|
|
63
69
|
/* Lifecycle status — §5.6 (event-scoped, not asset-scoped) */
|
|
64
70
|
/* ---------------------------------------------------------------------- */
|
|
65
|
-
export const CrystallizationEventStatusSchema = z.enum([
|
|
66
|
-
"candidate",
|
|
67
|
-
"stable",
|
|
68
|
-
"retired",
|
|
69
|
-
]);
|
|
70
|
-
/* ---------------------------------------------------------------------- */
|
|
71
|
-
/* EvidenceBrief — §4.7 / §10 RL-7. REQUIRED 4-section shape. */
|
|
72
|
-
/* ---------------------------------------------------------------------- */
|
|
73
|
-
/**
|
|
74
|
-
* The four brief sections. Spec §4.7 lists them as NL short
|
|
75
|
-
* sections; the service layer mandates 1-2 sentences (what_action
|
|
76
|
-
* is a single sentence per the spec). The Zod constraints below
|
|
77
|
-
* enforce NON-EMPTY strings. The brief-section guard (see
|
|
78
|
-
* `EvidenceBriefSchema.refine` below) rejects any payload missing
|
|
79
|
-
* one of the four keys, regardless of section content — it is
|
|
80
|
-
* the canonical hard gate per spec §10 RL-7.
|
|
81
|
-
*/
|
|
82
|
-
const BriefSectionSchema = z
|
|
83
|
-
.string()
|
|
84
|
-
.trim()
|
|
85
|
-
.min(1, "brief section must be non-empty natural language")
|
|
86
|
-
.max(CRYS_BRIEF_SECTION_MAX);
|
|
87
|
-
/**
|
|
88
|
-
* EvidenceBrief — the 4-section brief (spec §4.7).
|
|
89
|
-
*
|
|
90
|
-
* Hard shape invariant: ALL FOUR KEYS must be present at parse
|
|
91
|
-
* time, with non-empty NL content. The `.refine(...)` guard is
|
|
92
|
-
* what makes a brief a "brief" — without it, the projection is
|
|
93
|
-
* not a brief and the recommendation MUST NOT be rendered
|
|
94
|
-
* (service layer enforces this; Zod makes it a parse-time
|
|
95
|
-
* guarantee).
|
|
96
|
-
*
|
|
97
|
-
* Field semantics:
|
|
98
|
-
* - what_happened — 1-2 sentence factual account of the run.
|
|
99
|
-
* - why_it_matters — 1-2 sentence explanation of why this is
|
|
100
|
-
* worth promoting.
|
|
101
|
-
* - what_learned — 1-2 sentence learning: failure modes
|
|
102
|
-
* encoded, preferences extracted.
|
|
103
|
-
* - what_action — 1-sentence recommended action with
|
|
104
|
-
* rationale.
|
|
105
|
-
*/
|
|
106
|
-
export const EvidenceBriefSchema = z
|
|
107
|
-
.object({
|
|
108
|
-
what_happened: BriefSectionSchema,
|
|
109
|
-
why_it_matters: BriefSectionSchema,
|
|
110
|
-
what_learned: BriefSectionSchema,
|
|
111
|
-
what_action: BriefSectionSchema,
|
|
112
|
-
})
|
|
113
|
-
.strict()
|
|
114
|
-
.superRefine((b, ctx) => {
|
|
115
|
-
const ok = typeof b.what_happened === "string" &&
|
|
116
|
-
b.what_happened.trim().length > 0 &&
|
|
117
|
-
typeof b.why_it_matters === "string" &&
|
|
118
|
-
b.why_it_matters.trim().length > 0 &&
|
|
119
|
-
typeof b.what_learned === "string" &&
|
|
120
|
-
b.what_learned.trim().length > 0 &&
|
|
121
|
-
typeof b.what_action === "string" &&
|
|
122
|
-
b.what_action.trim().length > 0;
|
|
123
|
-
if (!ok) {
|
|
124
|
-
ctx.addIssue({
|
|
125
|
-
code: "custom",
|
|
126
|
-
path: [],
|
|
127
|
-
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)",
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
});
|
|
131
|
-
/**
|
|
132
|
-
* Helper for downstream code that needs to know whether a parsed
|
|
133
|
-
* brief satisfies the 4-section rule. Useful for the CLI when a
|
|
134
|
-
* payload arrived from the LLM and the brief-section guard has
|
|
135
|
-
* already passed — it returns the section count, always 4 here.
|
|
136
|
-
*/
|
|
137
|
-
export function hasAllFourBriefSections(brief) {
|
|
138
|
-
return (typeof brief.what_happened === "string" &&
|
|
139
|
-
brief.what_happened.trim().length > 0 &&
|
|
140
|
-
typeof brief.why_it_matters === "string" &&
|
|
141
|
-
brief.why_it_matters.trim().length > 0 &&
|
|
142
|
-
typeof brief.what_learned === "string" &&
|
|
143
|
-
brief.what_learned.trim().length > 0 &&
|
|
144
|
-
typeof brief.what_action === "string" &&
|
|
145
|
-
brief.what_action.trim().length > 0);
|
|
146
|
-
}
|
|
71
|
+
export const CrystallizationEventStatusSchema = z.enum(['candidate', 'stable', 'retired']);
|
|
147
72
|
/* ---------------------------------------------------------------------- */
|
|
148
73
|
/* CrystallizationEvent — §4.5 */
|
|
149
74
|
/* ---------------------------------------------------------------------- */
|
|
@@ -158,14 +83,14 @@ const OptionalLoopId = z
|
|
|
158
83
|
.min(1)
|
|
159
84
|
.max(CRYS_LOOP_ID_MAX)
|
|
160
85
|
.regex(/^[a-z][a-z0-9]*(-[a-z0-9]+)*$/, {
|
|
161
|
-
message:
|
|
86
|
+
message: 'loop_release_id must be kebab-case starting with a lowercase letter'
|
|
162
87
|
})
|
|
163
88
|
.optional();
|
|
164
89
|
const OptionalBeeId = z
|
|
165
90
|
.number()
|
|
166
91
|
.int()
|
|
167
92
|
.gt(0)
|
|
168
|
-
.max(CRYS_BEE_ID_MAX_I32,
|
|
93
|
+
.max(CRYS_BEE_ID_MAX_I32, 'bee_release_id out of 32-bit range')
|
|
169
94
|
.optional();
|
|
170
95
|
/**
|
|
171
96
|
* Zod schema for the create payload (CrystallizationEventInput).
|
|
@@ -178,27 +103,15 @@ const OptionalBeeId = z
|
|
|
178
103
|
export const CrystallizationEventInputSchema = z.object({
|
|
179
104
|
trigger: CrystallizationTriggerSchema,
|
|
180
105
|
evidence_brief: EvidenceBriefSchema,
|
|
181
|
-
evidence_bullets: z
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
.array(z.string().trim().min(1).max(CRYS_TRACE_POINTER_MAX))
|
|
186
|
-
.default([]),
|
|
187
|
-
evaluator_summary: z
|
|
188
|
-
.string()
|
|
189
|
-
.trim()
|
|
190
|
-
.max(CRYS_BRIEF_SECTION_MAX)
|
|
191
|
-
.default(""),
|
|
192
|
-
user_decision_summary: z
|
|
193
|
-
.string()
|
|
194
|
-
.trim()
|
|
195
|
-
.max(CRYS_BRIEF_SECTION_MAX)
|
|
196
|
-
.default(""),
|
|
106
|
+
evidence_bullets: z.array(z.string().trim().min(1).max(CRYS_EVIDENCE_BULLET_MAX)).default([]),
|
|
107
|
+
source_trace_pointers: z.array(z.string().trim().min(1).max(CRYS_TRACE_POINTER_MAX)).default([]),
|
|
108
|
+
evaluator_summary: z.string().trim().max(CRYS_BRIEF_SECTION_MAX).default(''),
|
|
109
|
+
user_decision_summary: z.string().trim().max(CRYS_BRIEF_SECTION_MAX).default(''),
|
|
197
110
|
created_loop_release_id: OptionalLoopId,
|
|
198
111
|
updated_loop_release_id: OptionalLoopId,
|
|
199
112
|
created_bee_release_id: OptionalBeeId,
|
|
200
113
|
updated_bee_release_id: OptionalBeeId,
|
|
201
|
-
lifecycle_status: CrystallizationEventStatusSchema.default(
|
|
114
|
+
lifecycle_status: CrystallizationEventStatusSchema.default('candidate')
|
|
202
115
|
});
|
|
203
116
|
/**
|
|
204
117
|
* Full persisted row schema. Adds `id` (the event id) and stamps
|
|
@@ -215,12 +128,10 @@ export const CrystallizationEventSchema = CrystallizationEventInputSchema.extend
|
|
|
215
128
|
.min(1)
|
|
216
129
|
.max(CRYS_EVENT_ID_MAX)
|
|
217
130
|
.regex(/^crys-[0-9a-f]{8,}$/, {
|
|
218
|
-
message: "id must start with 'crys-' followed by a hex suffix (spec §4.5)"
|
|
131
|
+
message: "id must start with 'crys-' followed by a hex suffix (spec §4.5)"
|
|
219
132
|
}),
|
|
220
|
-
schema_version: z
|
|
221
|
-
|
|
222
|
-
.default("peaks.crystallization/1"),
|
|
223
|
-
created_at: z.string().datetime(),
|
|
133
|
+
schema_version: z.literal('peaks.crystallization/1').default('peaks.crystallization/1'),
|
|
134
|
+
created_at: z.string().datetime()
|
|
224
135
|
});
|
|
225
136
|
/**
|
|
226
137
|
* Convenience: strict-parse an unknown payload into a
|
|
@@ -232,13 +143,6 @@ export const CrystallizationEventSchema = CrystallizationEventInputSchema.extend
|
|
|
232
143
|
export function parseCrystallizationEvent(input) {
|
|
233
144
|
return CrystallizationEventSchema.parse(input);
|
|
234
145
|
}
|
|
235
|
-
/**
|
|
236
|
-
* Convenience: strict-parse an unknown payload as a standalone
|
|
237
|
-
* EvidenceBrief. Throws ZodError on failure.
|
|
238
|
-
*/
|
|
239
|
-
export function parseEvidenceBrief(input) {
|
|
240
|
-
return EvidenceBriefSchema.parse(input);
|
|
241
|
-
}
|
|
242
146
|
/**
|
|
243
147
|
* Safe-parse twin of parseCrystallizationEvent. Returns a Result-like
|
|
244
148
|
* envelope so callers (CLI / tests) can render findings without
|
|
@@ -252,66 +156,9 @@ export function safeParseCrystallizationEvent(input) {
|
|
|
252
156
|
if (r.success)
|
|
253
157
|
return { ok: true, row: r.data };
|
|
254
158
|
const findings = r.error.issues.map((i) => ({
|
|
255
|
-
path: i.path.join(
|
|
256
|
-
message: i.message
|
|
159
|
+
path: i.path.join('.'),
|
|
160
|
+
message: i.message
|
|
257
161
|
}));
|
|
258
162
|
const isBrief = isBriefSectionFailure(r.error.issues);
|
|
259
|
-
return isBrief
|
|
260
|
-
? { ok: false, code: "MISSING_BRIEF_SECTION", findings }
|
|
261
|
-
: { ok: false, findings };
|
|
262
|
-
}
|
|
263
|
-
/**
|
|
264
|
-
* Safe-parse twin of parseEvidenceBrief. Same Result-like envelope
|
|
265
|
-
* shape; same MISSING_BRIEF_SECTION code mapping (covers both
|
|
266
|
-
* refine-guard failures and per-section missing/empty failures).
|
|
267
|
-
*/
|
|
268
|
-
export function safeParseEvidenceBrief(input) {
|
|
269
|
-
const r = EvidenceBriefSchema.safeParse(input);
|
|
270
|
-
if (r.success)
|
|
271
|
-
return { ok: true, row: r.data };
|
|
272
|
-
const findings = r.error.issues.map((i) => ({
|
|
273
|
-
path: i.path.join("."),
|
|
274
|
-
message: i.message,
|
|
275
|
-
}));
|
|
276
|
-
const isBrief = isBriefSectionFailure(r.error.issues);
|
|
277
|
-
return isBrief
|
|
278
|
-
? { ok: false, code: "MISSING_BRIEF_SECTION", findings }
|
|
279
|
-
: { ok: false, findings };
|
|
280
|
-
}
|
|
281
|
-
/**
|
|
282
|
-
* Decide whether a ZodIssue[] is a "brief section" failure: every
|
|
283
|
-
* issue points at one of the four required keys (the section is
|
|
284
|
-
* missing, or empty after trim), OR the explicit refine-guard issue
|
|
285
|
-
* is present. Used by both `safeParseCrystallizationEvent` and
|
|
286
|
-
* `safeParseEvidenceBrief` so callers see a single
|
|
287
|
-
* `MISSING_BRIEF_SECTION` code regardless of which Zod boundary
|
|
288
|
-
* caught the failure.
|
|
289
|
-
*/
|
|
290
|
-
function isBriefSectionFailure(issues) {
|
|
291
|
-
if (issues.length === 0)
|
|
292
|
-
return false;
|
|
293
|
-
// Explicit refine guard (EvidenceBriefSchema.refine message).
|
|
294
|
-
if (issues.some((i) => i.message.includes("evidence_brief must contain all 4 sections"))) {
|
|
295
|
-
return true;
|
|
296
|
-
}
|
|
297
|
-
// Per-section Zod failures (min(1) on each section key, or
|
|
298
|
-
// too_small, or invalid_type). Each issue's path will be either
|
|
299
|
-
// the section key (`what_happened`) OR the parent `evidence_brief`
|
|
300
|
-
// — Zod reports missing-key issues against the parent object.
|
|
301
|
-
return issues.every((i) => {
|
|
302
|
-
const path = i.path.join(".");
|
|
303
|
-
if (path === "evidence_brief")
|
|
304
|
-
return true;
|
|
305
|
-
if (i.path.length >= 2 && i.path[0] === "evidence_brief") {
|
|
306
|
-
const key = i.path[i.path.length - 1];
|
|
307
|
-
return (key === "what_happened" ||
|
|
308
|
-
key === "why_it_matters" ||
|
|
309
|
-
key === "what_learned" ||
|
|
310
|
-
key === "what_action");
|
|
311
|
-
}
|
|
312
|
-
return (path === "what_happened" ||
|
|
313
|
-
path === "why_it_matters" ||
|
|
314
|
-
path === "what_learned" ||
|
|
315
|
-
path === "what_action");
|
|
316
|
-
});
|
|
163
|
+
return isBrief ? { ok: false, code: 'MISSING_BRIEF_SECTION', findings } : { ok: false, findings };
|
|
317
164
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { z } from
|
|
2
|
-
import { type EvidenceBrief } from
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { type EvidenceBrief } from './crystallization-types.js';
|
|
3
3
|
/**
|
|
4
4
|
* EvidenceBriefBuilder — spec §4.7 / §10 RL-7.
|
|
5
5
|
*
|
|
@@ -129,7 +129,7 @@ export declare function safeRenderRecommendationPayload(input: unknown): {
|
|
|
129
129
|
payload: RecommendationPayload;
|
|
130
130
|
} | {
|
|
131
131
|
ok: false;
|
|
132
|
-
code?:
|
|
132
|
+
code?: 'MISSING_BRIEF_SECTION';
|
|
133
133
|
findings: Array<{
|
|
134
134
|
path: string;
|
|
135
135
|
message: string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { z } from
|
|
2
|
-
import { EvidenceBriefSchema
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { EvidenceBriefSchema } from './crystallization-types.js';
|
|
3
3
|
/* ---------------------------------------------------------------------- */
|
|
4
4
|
/* PRD-002b slice 2 — schema-limit constants extracted from inline */
|
|
5
5
|
/* `.max(N)` calls so the no-magic-numbers rule stops flagging the */
|
|
@@ -88,9 +88,7 @@ export const BriefTraceInputSchema = z.object({
|
|
|
88
88
|
* Source trace ids backing the brief (the column on
|
|
89
89
|
* crystallization_event spec §4.5).
|
|
90
90
|
*/
|
|
91
|
-
source_trace_pointers: z
|
|
92
|
-
.array(z.string().trim().min(1).max(BRIEF_TRACE_POINTER_MAX))
|
|
93
|
-
.default([]),
|
|
91
|
+
source_trace_pointers: z.array(z.string().trim().min(1).max(BRIEF_TRACE_POINTER_MAX)).default([])
|
|
94
92
|
});
|
|
95
93
|
/**
|
|
96
94
|
* The summary emitted by the independent evaluators (spec §4.5
|
|
@@ -99,8 +97,8 @@ export const BriefTraceInputSchema = z.object({
|
|
|
99
97
|
* flows into the recommendation envelope.
|
|
100
98
|
*/
|
|
101
99
|
export const EvaluatorSummarySchema = z.object({
|
|
102
|
-
one_liner: z.string().trim().max(BRIEF_EVALUATOR_ONE_LINER_MAX).default(
|
|
103
|
-
risk_tags: z.array(z.string().trim().min(1).max(BRIEF_EVALUATOR_RISK_TAG_MAX)).default([])
|
|
100
|
+
one_liner: z.string().trim().max(BRIEF_EVALUATOR_ONE_LINER_MAX).default(''),
|
|
101
|
+
risk_tags: z.array(z.string().trim().min(1).max(BRIEF_EVALUATOR_RISK_TAG_MAX)).default([])
|
|
104
102
|
});
|
|
105
103
|
/* ---------------------------------------------------------------------- */
|
|
106
104
|
/* Recommendation envelope — the CLI renders this. */
|
|
@@ -108,23 +106,21 @@ export const EvaluatorSummarySchema = z.object({
|
|
|
108
106
|
export const RecommendationPayloadSchema = z.object({
|
|
109
107
|
brief: EvidenceBriefSchema,
|
|
110
108
|
bullets: z.array(z.string().trim().min(1).max(BRIEF_BULLET_MAX)).default([]),
|
|
111
|
-
source_trace_pointers: z
|
|
112
|
-
.array(z.string().trim().min(1).max(BRIEF_TRACE_POINTER_MAX))
|
|
113
|
-
.default([]),
|
|
109
|
+
source_trace_pointers: z.array(z.string().trim().min(1).max(BRIEF_TRACE_POINTER_MAX)).default([]),
|
|
114
110
|
evaluator_summary: EvaluatorSummarySchema.default({
|
|
115
|
-
one_liner:
|
|
116
|
-
risk_tags: []
|
|
117
|
-
})
|
|
111
|
+
one_liner: '',
|
|
112
|
+
risk_tags: []
|
|
113
|
+
})
|
|
118
114
|
});
|
|
119
115
|
/* ---------------------------------------------------------------------- */
|
|
120
116
|
/* Errors */
|
|
121
117
|
/* ---------------------------------------------------------------------- */
|
|
122
118
|
export class BriefSectionError extends Error {
|
|
123
|
-
code =
|
|
119
|
+
code = 'MISSING_BRIEF_SECTION';
|
|
124
120
|
findings;
|
|
125
121
|
constructor(message, findings = []) {
|
|
126
122
|
super(message);
|
|
127
|
-
this.name =
|
|
123
|
+
this.name = 'BriefSectionError';
|
|
128
124
|
this.findings = findings;
|
|
129
125
|
}
|
|
130
126
|
}
|
|
@@ -164,15 +160,15 @@ export function buildEvidenceBrief(trace, evaluatorSummary) {
|
|
|
164
160
|
what_happened: parsedTrace.what_happened,
|
|
165
161
|
why_it_matters: parsedTrace.why_it_matters,
|
|
166
162
|
what_learned: parsedTrace.what_learned,
|
|
167
|
-
what_action: parsedTrace.what_action
|
|
163
|
+
what_action: parsedTrace.what_action
|
|
168
164
|
};
|
|
169
165
|
const result = EvidenceBriefSchema.safeParse(candidate);
|
|
170
166
|
if (!result.success) {
|
|
171
167
|
const findings = result.error.issues.map((i) => ({
|
|
172
|
-
path: i.path.join(
|
|
173
|
-
message: i.message
|
|
168
|
+
path: i.path.join('.'),
|
|
169
|
+
message: i.message
|
|
174
170
|
}));
|
|
175
|
-
throw new BriefSectionError(
|
|
171
|
+
throw new BriefSectionError('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)', findings);
|
|
176
172
|
}
|
|
177
173
|
// Silence the unused-var lint on evaluatorSummary at this layer —
|
|
178
174
|
// the builder currently does not consume it (the brief is NL
|
|
@@ -188,22 +184,22 @@ export function buildEvidenceBrief(trace, evaluatorSummary) {
|
|
|
188
184
|
function translateBriefZodError(err) {
|
|
189
185
|
if (err instanceof z.ZodError) {
|
|
190
186
|
const issues = err.issues;
|
|
191
|
-
const allBrief = issues.every((i) => BRIEF_SECTION_KEYS.has(i.path.join(
|
|
187
|
+
const allBrief = issues.every((i) => BRIEF_SECTION_KEYS.has(i.path.join('.')));
|
|
192
188
|
if (allBrief) {
|
|
193
189
|
const findings = issues.map((i) => ({
|
|
194
|
-
path: i.path.join(
|
|
195
|
-
message: i.message
|
|
190
|
+
path: i.path.join('.'),
|
|
191
|
+
message: i.message
|
|
196
192
|
}));
|
|
197
|
-
throw new BriefSectionError(
|
|
193
|
+
throw new BriefSectionError('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)', findings);
|
|
198
194
|
}
|
|
199
195
|
}
|
|
200
196
|
throw err;
|
|
201
197
|
}
|
|
202
198
|
const BRIEF_SECTION_KEYS = new Set([
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
199
|
+
'what_happened',
|
|
200
|
+
'why_it_matters',
|
|
201
|
+
'what_learned',
|
|
202
|
+
'what_action'
|
|
207
203
|
]);
|
|
208
204
|
/**
|
|
209
205
|
* Render the user-facing recommendation envelope (brief + bullets +
|
|
@@ -214,13 +210,13 @@ const BRIEF_SECTION_KEYS = new Set([
|
|
|
214
210
|
* On success, returns the validated `RecommendationPayload`. On a
|
|
215
211
|
* missing-section brief, throws `BriefSectionError`.
|
|
216
212
|
*/
|
|
217
|
-
export function renderRecommendationPayload(trace, evaluatorSummary = { one_liner:
|
|
213
|
+
export function renderRecommendationPayload(trace, evaluatorSummary = { one_liner: '', risk_tags: [] }) {
|
|
218
214
|
const brief = buildEvidenceBrief(trace, evaluatorSummary);
|
|
219
215
|
const payload = RecommendationPayloadSchema.parse({
|
|
220
216
|
brief,
|
|
221
217
|
bullets: trace.bullets ?? [],
|
|
222
218
|
source_trace_pointers: trace.source_trace_pointers ?? [],
|
|
223
|
-
evaluator_summary: evaluatorSummary
|
|
219
|
+
evaluator_summary: evaluatorSummary
|
|
224
220
|
});
|
|
225
221
|
return payload;
|
|
226
222
|
}
|
|
@@ -235,17 +231,15 @@ export function safeRenderRecommendationPayload(input) {
|
|
|
235
231
|
if (r.success)
|
|
236
232
|
return { ok: true, payload: r.data };
|
|
237
233
|
const findings = r.error.issues.map((i) => ({
|
|
238
|
-
path: i.path.join(
|
|
239
|
-
message: i.message
|
|
234
|
+
path: i.path.join('.'),
|
|
235
|
+
message: i.message
|
|
240
236
|
}));
|
|
241
237
|
// Map brief failures to MISSING_BRIEF_SECTION. A failure is
|
|
242
238
|
// recognized as brief iff (a) every issue points at the brief or
|
|
243
239
|
// its sections, OR (b) the explicit refine message is present.
|
|
244
|
-
const isBrief = r.error.issues.every((i) => i.message.includes(
|
|
245
|
-
BRIEF_SECTION_KEYS.has(i.path.join(
|
|
246
|
-
i.path[0] ===
|
|
247
|
-
(i.path.length >= 2 && i.path[0] ===
|
|
248
|
-
return isBrief
|
|
249
|
-
? { ok: false, code: "MISSING_BRIEF_SECTION", findings }
|
|
250
|
-
: { ok: false, findings };
|
|
240
|
+
const isBrief = r.error.issues.every((i) => i.message.includes('evidence_brief must contain all 4 sections') ||
|
|
241
|
+
BRIEF_SECTION_KEYS.has(i.path.join('.')) ||
|
|
242
|
+
i.path[0] === 'brief' ||
|
|
243
|
+
(i.path.length >= 2 && i.path[0] === 'brief'));
|
|
244
|
+
return isBrief ? { ok: false, code: 'MISSING_BRIEF_SECTION', findings } : { ok: false, findings };
|
|
251
245
|
}
|