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
|
@@ -18,51 +18,16 @@
|
|
|
18
18
|
* log if it wants — but the calling hook site itself swallows the
|
|
19
19
|
* result (fire-and-forget by convention).
|
|
20
20
|
*/
|
|
21
|
-
import { z } from 'zod';
|
|
22
21
|
import { appendMetricLine, pruneMetricsFiles, readMetricLines, tryMetricsFilePath } from './jsonl-store.js';
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
'token-usage',
|
|
33
|
-
'monotonic-trigger',
|
|
34
|
-
// Slice 2026-07-29-worktree-l2-extended Part 4.A: lease lifecycle
|
|
35
|
-
// metrics. Emitted by `peaks worktree spawn / renew / release /
|
|
36
|
-
// gc` and by the auto-release hook in dispatch finalization (Part
|
|
37
|
-
// 3.A). Read by `peaks lease metrics`. The `detail.kind` field
|
|
38
|
-
// discriminates spawn / renew / release / gc / autoRelease /
|
|
39
|
-
// autoRelease-failed / autoRelease-skipped.
|
|
40
|
-
'lease'
|
|
41
|
-
];
|
|
42
|
-
// v2.12.0 fan-out collapse: `security-reviewer` (in-process RD slot)
|
|
43
|
-
// moved out to the standalone `peaks-security-audit` skill; the matching
|
|
44
|
-
// perf slot was `perf-baseline-reviewer` which is replaced by the
|
|
45
|
-
// standalone `peaks-perf-audit` skill. The 1-minor-release back-compat
|
|
46
|
-
// window keeps `security-reviewer` readable as a deprecated alias (see
|
|
47
|
-
// the dispatcher in `src/services/rd/reviewer-dispatch-policy.ts`);
|
|
48
|
-
// observability drops it because no new events carry that role tag.
|
|
49
|
-
export const OBSERVABILITY_SUBAGENT_ROLES = [
|
|
50
|
-
'rd',
|
|
51
|
-
'qa',
|
|
52
|
-
'code-reviewer',
|
|
53
|
-
'karpathy-reviewer',
|
|
54
|
-
'peaks-security-audit',
|
|
55
|
-
'peaks-perf-audit'
|
|
56
|
-
];
|
|
57
|
-
export const ObservabilityEventSchema = z.object({
|
|
58
|
-
schemaVersion: z.literal(OBSERVABILITY_SCHEMA_VERSION),
|
|
59
|
-
ts: z.string().datetime({ offset: true }),
|
|
60
|
-
sessionId: z.string().min(1),
|
|
61
|
-
category: z.enum(OBSERVABILITY_CATEGORIES),
|
|
62
|
-
sliceRid: z.string().min(1).optional(),
|
|
63
|
-
role: z.enum(OBSERVABILITY_SUBAGENT_ROLES).optional(),
|
|
64
|
-
detail: z.record(z.string(), z.unknown())
|
|
65
|
-
});
|
|
22
|
+
import { OBSERVABILITY_SCHEMA_VERSION, ObservabilityEventSchema } from './observability-schema.js';
|
|
23
|
+
// The schema version, the category / subagent-role vocabularies, the zod
|
|
24
|
+
// schema, the emit contract types and the `OBSERVABILITY_CONSTANTS` roll-up
|
|
25
|
+
// live in `observability-schema.ts` (wave-3C file-size cap split — those
|
|
26
|
+
// declarations moved verbatim and nothing else changed). Every PUBLIC name is
|
|
27
|
+
// re-exported below so importers keep resolving it from
|
|
28
|
+
// `observability-service.js` unchanged; the names this module calls are
|
|
29
|
+
// imported for use just above.
|
|
30
|
+
export { OBSERVABILITY_CATEGORIES, OBSERVABILITY_CONSTANTS, OBSERVABILITY_SCHEMA_VERSION, OBSERVABILITY_SUBAGENT_ROLES, ObservabilityEventSchema } from './observability-schema.js';
|
|
66
31
|
/**
|
|
67
32
|
* Append a single observability event to the session's JSONL metrics
|
|
68
33
|
* file. Synchronous (small append, sub-ms in practice) and
|
|
@@ -135,11 +100,6 @@ export function readObservabilityEvents(projectRoot, sessionId) {
|
|
|
135
100
|
export function isCurrentSchemaVersion(record) {
|
|
136
101
|
return ObservabilityEventSchema.safeParse(record).success;
|
|
137
102
|
}
|
|
138
|
-
export const OBSERVABILITY_CONSTANTS = {
|
|
139
|
-
SCHEMA_VERSION: OBSERVABILITY_SCHEMA_VERSION,
|
|
140
|
-
CATEGORIES: OBSERVABILITY_CATEGORIES,
|
|
141
|
-
SUBAGENT_ROLES: OBSERVABILITY_SUBAGENT_ROLES
|
|
142
|
-
};
|
|
143
103
|
export function emitLeaseEvent(opts) {
|
|
144
104
|
const detail = { kind: opts.kind, leaseId: opts.leaseId };
|
|
145
105
|
if (opts.rid !== undefined)
|
|
@@ -30,7 +30,7 @@ import { normalizePath } from '../../shared/path-utils.js';
|
|
|
30
30
|
// ---------------------------------------------------------------------------
|
|
31
31
|
const DEFAULT_DISCOVERY = [
|
|
32
32
|
(root) => `${root}/coverage/coverage-summary.json`,
|
|
33
|
-
(root) => `${root}/openspec/coverage-summary.json
|
|
33
|
+
(root) => `${root}/openspec/coverage-summary.json`
|
|
34
34
|
];
|
|
35
35
|
/**
|
|
36
36
|
* Resolve the path to a coverage-summary.json.
|
|
@@ -52,7 +52,11 @@ export async function resolveCoverageSummaryPath(input) {
|
|
|
52
52
|
if (await isReadable(abs)) {
|
|
53
53
|
return ok(abs);
|
|
54
54
|
}
|
|
55
|
-
return err({
|
|
55
|
+
return err({
|
|
56
|
+
code: 'not-readable',
|
|
57
|
+
path: abs,
|
|
58
|
+
message: `Cannot read coverage summary at ${abs}`
|
|
59
|
+
});
|
|
56
60
|
}
|
|
57
61
|
for (const factory of DEFAULT_DISCOVERY) {
|
|
58
62
|
const candidate = factory(toPosix(input.projectRoot));
|
|
@@ -120,14 +124,14 @@ export async function readC8Summary(path) {
|
|
|
120
124
|
statements,
|
|
121
125
|
branches,
|
|
122
126
|
functions,
|
|
123
|
-
lines
|
|
127
|
+
lines
|
|
124
128
|
});
|
|
125
129
|
}
|
|
126
130
|
const stat_ = await stat(path);
|
|
127
131
|
return {
|
|
128
132
|
path,
|
|
129
133
|
capturedAt: stat_.mtime.toISOString(),
|
|
130
|
-
files
|
|
134
|
+
files
|
|
131
135
|
};
|
|
132
136
|
}
|
|
133
137
|
function asMetric(input) {
|
|
@@ -202,7 +206,10 @@ function parseCapabilityRow(line) {
|
|
|
202
206
|
const trimmed = line.trim();
|
|
203
207
|
if (!trimmed.startsWith('|'))
|
|
204
208
|
return null;
|
|
205
|
-
const cells = trimmed
|
|
209
|
+
const cells = trimmed
|
|
210
|
+
.split('|')
|
|
211
|
+
.slice(1, -1)
|
|
212
|
+
.map((c) => c.trim());
|
|
206
213
|
if (cells.length < 2)
|
|
207
214
|
return null;
|
|
208
215
|
const capability = cells[0];
|
|
@@ -216,7 +223,7 @@ function parseCapabilityRow(line) {
|
|
|
216
223
|
return null;
|
|
217
224
|
const row = {
|
|
218
225
|
capability,
|
|
219
|
-
source: normalizePath(source).replace(/^\.\//, '').replace(/\/$/, '')
|
|
226
|
+
source: normalizePath(source).replace(/^\.\//, '').replace(/\/$/, '')
|
|
220
227
|
};
|
|
221
228
|
if (testAnchor !== undefined && testAnchor !== '') {
|
|
222
229
|
row.testAnchor = testAnchor;
|
|
@@ -292,7 +299,7 @@ export async function validateCapabilityCoverage(input) {
|
|
|
292
299
|
failing.push({
|
|
293
300
|
path: file,
|
|
294
301
|
actual: { statements: 0, branches: 0, functions: 0, lines: 0 },
|
|
295
|
-
reason: 'missing-from-summary'
|
|
302
|
+
reason: 'missing-from-summary'
|
|
296
303
|
});
|
|
297
304
|
continue;
|
|
298
305
|
}
|
|
@@ -306,9 +313,9 @@ export async function validateCapabilityCoverage(input) {
|
|
|
306
313
|
statements: entry.statements.pct,
|
|
307
314
|
branches: entry.branches.pct,
|
|
308
315
|
functions: entry.functions.pct,
|
|
309
|
-
lines: entry.lines.pct
|
|
316
|
+
lines: entry.lines.pct
|
|
310
317
|
},
|
|
311
|
-
reason: 'below-threshold'
|
|
318
|
+
reason: 'below-threshold'
|
|
312
319
|
});
|
|
313
320
|
}
|
|
314
321
|
}
|
|
@@ -316,7 +323,7 @@ export async function validateCapabilityCoverage(input) {
|
|
|
316
323
|
mismatches.push({
|
|
317
324
|
capability: row.capability,
|
|
318
325
|
source: row.source,
|
|
319
|
-
failingFiles: failing
|
|
326
|
+
failingFiles: failing
|
|
320
327
|
});
|
|
321
328
|
}
|
|
322
329
|
}
|
|
@@ -344,7 +351,7 @@ export async function findStaleChangeFiles(input) {
|
|
|
344
351
|
const candidates = [
|
|
345
352
|
`${changeRoot}/proposal.md`,
|
|
346
353
|
`${changeRoot}/tasks.md`,
|
|
347
|
-
`${changeRoot}/design.md
|
|
354
|
+
`${changeRoot}/design.md`
|
|
348
355
|
];
|
|
349
356
|
// spec files
|
|
350
357
|
const specsRoot = `${changeRoot}/specs`;
|
|
@@ -2,7 +2,7 @@ import { mkdir, readFile, rename, readdir } from 'node:fs/promises';
|
|
|
2
2
|
import { dirname, join, resolve } from 'node:path';
|
|
3
3
|
import { isDirectory } from 'peaks-loop-shared/fs';
|
|
4
4
|
import { validateChangeId } from './artifact-boundary.js';
|
|
5
|
-
import { findStaleChangeFiles, parseCapabilityMapping, readC8Summary, resolveCoverageSummaryPath, validateCapabilityCoverage
|
|
5
|
+
import { findStaleChangeFiles, parseCapabilityMapping, readC8Summary, resolveCoverageSummaryPath, validateCapabilityCoverage } from './coverage-evidence-reader.js';
|
|
6
6
|
export class OpenSpecArchiveError extends Error {
|
|
7
7
|
code;
|
|
8
8
|
detail;
|
|
@@ -44,7 +44,7 @@ export async function parseCoverageEvidence(proposalPath) {
|
|
|
44
44
|
summaryStatus: 'unavailable',
|
|
45
45
|
capabilityValidation: 'not-enforced',
|
|
46
46
|
staleFiles: [],
|
|
47
|
-
mismatches: []
|
|
47
|
+
mismatches: []
|
|
48
48
|
};
|
|
49
49
|
}
|
|
50
50
|
const lines = raw.split(/\r?\n/);
|
|
@@ -57,7 +57,7 @@ export async function parseCoverageEvidence(proposalPath) {
|
|
|
57
57
|
summaryStatus: 'unavailable',
|
|
58
58
|
capabilityValidation: 'not-enforced',
|
|
59
59
|
staleFiles: [],
|
|
60
|
-
mismatches: []
|
|
60
|
+
mismatches: []
|
|
61
61
|
};
|
|
62
62
|
}
|
|
63
63
|
const rows = [];
|
|
@@ -90,14 +90,17 @@ export async function parseCoverageEvidence(proposalPath) {
|
|
|
90
90
|
summaryStatus: 'unavailable',
|
|
91
91
|
capabilityValidation: 'not-enforced',
|
|
92
92
|
staleFiles: [],
|
|
93
|
-
mismatches: []
|
|
93
|
+
mismatches: []
|
|
94
94
|
};
|
|
95
95
|
}
|
|
96
96
|
function parseTableRow(line) {
|
|
97
97
|
const trimmed = line.trim();
|
|
98
98
|
if (!trimmed.startsWith('|'))
|
|
99
99
|
return null;
|
|
100
|
-
const cells = trimmed
|
|
100
|
+
const cells = trimmed
|
|
101
|
+
.split('|')
|
|
102
|
+
.slice(1, -1)
|
|
103
|
+
.map((c) => c.trim());
|
|
101
104
|
if (cells.length < 3)
|
|
102
105
|
return null;
|
|
103
106
|
const capability = cells[0];
|
|
@@ -116,7 +119,7 @@ function parseTableRow(line) {
|
|
|
116
119
|
const row = {
|
|
117
120
|
capability,
|
|
118
121
|
requirement,
|
|
119
|
-
status: status
|
|
122
|
+
status: status
|
|
120
123
|
};
|
|
121
124
|
if (testAnchor !== undefined && testAnchor !== '') {
|
|
122
125
|
row.testAnchor = testAnchor;
|
|
@@ -154,14 +157,14 @@ function evaluateGate(evidence) {
|
|
|
154
157
|
return {
|
|
155
158
|
ok: false,
|
|
156
159
|
reason: 'requirement-not-fully-covered',
|
|
157
|
-
failing
|
|
160
|
+
failing
|
|
158
161
|
};
|
|
159
162
|
}
|
|
160
163
|
if (evidence.rows.length === 0) {
|
|
161
164
|
return {
|
|
162
165
|
ok: false,
|
|
163
166
|
reason: 'no-coverage-evidence-block',
|
|
164
|
-
failing: []
|
|
167
|
+
failing: []
|
|
165
168
|
};
|
|
166
169
|
}
|
|
167
170
|
return { ok: true };
|
|
@@ -209,9 +212,9 @@ export async function archiveOpenSpecChange(changeId, options = {}) {
|
|
|
209
212
|
requirement: r.requirement,
|
|
210
213
|
status: r.status,
|
|
211
214
|
testAnchor: r.testAnchor,
|
|
212
|
-
line: r.line
|
|
215
|
+
line: r.line
|
|
213
216
|
})),
|
|
214
|
-
coverage
|
|
217
|
+
coverage
|
|
215
218
|
});
|
|
216
219
|
}
|
|
217
220
|
}
|
|
@@ -219,7 +222,7 @@ export async function archiveOpenSpecChange(changeId, options = {}) {
|
|
|
219
222
|
const mapping = await parseCapabilityMapping(proposalPath);
|
|
220
223
|
coverage = {
|
|
221
224
|
...coverage,
|
|
222
|
-
capabilityRows: mapping.rows
|
|
225
|
+
capabilityRows: mapping.rows
|
|
223
226
|
};
|
|
224
227
|
if (mapping.rows.length === 0) {
|
|
225
228
|
// No mapping → cannot enforce per-capability. Refuse with the same
|
|
@@ -232,18 +235,22 @@ export async function archiveOpenSpecChange(changeId, options = {}) {
|
|
|
232
235
|
const projectRoot = resolve(openspecRoot, '..');
|
|
233
236
|
const summaryPathResult = await resolveCoverageSummaryPath({
|
|
234
237
|
projectRoot,
|
|
235
|
-
...(options.coverageSummaryPath !== undefined
|
|
238
|
+
...(options.coverageSummaryPath !== undefined
|
|
239
|
+
? { explicitPath: options.coverageSummaryPath }
|
|
240
|
+
: {})
|
|
236
241
|
});
|
|
237
242
|
if (!summaryPathResult.ok) {
|
|
238
243
|
// AC1: missing or not-readable
|
|
239
|
-
const triedPaths = summaryPathResult.error.code === 'missing'
|
|
244
|
+
const triedPaths = summaryPathResult.error.code === 'missing'
|
|
245
|
+
? summaryPathResult.error.triedPaths
|
|
246
|
+
: [summaryPathResult.error.path];
|
|
240
247
|
throw new OpenSpecArchiveError('OPENSPEC_COVERAGE_EVIDENCE_MISSING', `Refusing to archive "${changeId}": no coverage-summary.json found at any of: ${triedPaths.join(', ')}. ` +
|
|
241
248
|
'Run `pnpm test:coverage` (which invokes scripts/coverage-c8.mjs) to generate one, ' +
|
|
242
249
|
'or pass --coverage-summary <path> to point at an existing summary, ' +
|
|
243
250
|
'or re-run with --force to bypass.', {
|
|
244
251
|
changeId,
|
|
245
252
|
triedPaths,
|
|
246
|
-
coverage
|
|
253
|
+
coverage
|
|
247
254
|
});
|
|
248
255
|
}
|
|
249
256
|
// Parse summary + check freshness (AC2)
|
|
@@ -257,38 +264,38 @@ export async function archiveOpenSpecChange(changeId, options = {}) {
|
|
|
257
264
|
}
|
|
258
265
|
coverage = {
|
|
259
266
|
...coverage,
|
|
260
|
-
summaryPath: summary.path
|
|
267
|
+
summaryPath: summary.path
|
|
261
268
|
};
|
|
262
269
|
const staleFiles = await findStaleChangeFiles({
|
|
263
270
|
projectRoot,
|
|
264
271
|
openspecRoot,
|
|
265
272
|
changeId,
|
|
266
|
-
summary
|
|
273
|
+
summary
|
|
267
274
|
});
|
|
268
275
|
if (staleFiles.length > 0) {
|
|
269
276
|
coverage = {
|
|
270
277
|
...coverage,
|
|
271
278
|
summaryStatus: 'stale',
|
|
272
|
-
staleFiles
|
|
279
|
+
staleFiles
|
|
273
280
|
};
|
|
274
281
|
throw new OpenSpecArchiveError('OPENSPEC_COVERAGE_EVIDENCE_STALE', `Refusing to archive "${changeId}": coverage-summary.json is older than ${staleFiles.length} change file(s). ` +
|
|
275
282
|
'Re-run `pnpm test:coverage` to refresh, or re-run with --force to bypass.', { changeId, staleFiles, summaryPath: summary.path, coverage });
|
|
276
283
|
}
|
|
277
284
|
coverage = {
|
|
278
285
|
...coverage,
|
|
279
|
-
summaryStatus: 'fresh'
|
|
286
|
+
summaryStatus: 'fresh'
|
|
280
287
|
};
|
|
281
288
|
// Per-capability coverage check (AC4)
|
|
282
289
|
const validation = await validateCapabilityCoverage({
|
|
283
290
|
projectRoot,
|
|
284
291
|
summary,
|
|
285
|
-
rows: mapping.rows
|
|
292
|
+
rows: mapping.rows
|
|
286
293
|
});
|
|
287
294
|
if (!validation.ok) {
|
|
288
295
|
coverage = {
|
|
289
296
|
...coverage,
|
|
290
297
|
capabilityValidation: 'mismatch',
|
|
291
|
-
mismatches: validation.mismatches
|
|
298
|
+
mismatches: validation.mismatches
|
|
292
299
|
};
|
|
293
300
|
if (options.force === true) {
|
|
294
301
|
coverageMismatchBypassed = true;
|
|
@@ -298,14 +305,14 @@ export async function archiveOpenSpecChange(changeId, options = {}) {
|
|
|
298
305
|
'Re-run `pnpm test:coverage` after closing the gap, or re-run with --force to bypass.', {
|
|
299
306
|
changeId,
|
|
300
307
|
mismatches: validation.mismatches,
|
|
301
|
-
coverage
|
|
308
|
+
coverage
|
|
302
309
|
});
|
|
303
310
|
}
|
|
304
311
|
}
|
|
305
312
|
else {
|
|
306
313
|
coverage = {
|
|
307
314
|
...coverage,
|
|
308
|
-
capabilityValidation: 'ok'
|
|
315
|
+
capabilityValidation: 'ok'
|
|
309
316
|
};
|
|
310
317
|
}
|
|
311
318
|
}
|
|
@@ -320,7 +327,7 @@ export async function archiveOpenSpecChange(changeId, options = {}) {
|
|
|
320
327
|
from,
|
|
321
328
|
to,
|
|
322
329
|
applied: false,
|
|
323
|
-
...(coverage !== undefined ? { coverage } : {})
|
|
330
|
+
...(coverage !== undefined ? { coverage } : {})
|
|
324
331
|
};
|
|
325
332
|
}
|
|
326
333
|
if (await isDirectory(to)) {
|
|
@@ -335,6 +342,6 @@ export async function archiveOpenSpecChange(changeId, options = {}) {
|
|
|
335
342
|
applied: true,
|
|
336
343
|
...(coverage !== undefined ? { coverage } : {}),
|
|
337
344
|
...(coverageGateBypassed === true ? { coverageGateBypassed: true } : {}),
|
|
338
|
-
...(coverageMismatchBypassed === true ? { coverageMismatchBypassed: true } : {})
|
|
345
|
+
...(coverageMismatchBypassed === true ? { coverageMismatchBypassed: true } : {})
|
|
339
346
|
};
|
|
340
347
|
}
|
|
@@ -50,7 +50,12 @@ function buildPlan(projectRoot, apply) {
|
|
|
50
50
|
{ path: changesRoot, kind: 'directory', bytes: 0, content: '' },
|
|
51
51
|
{ path: archiveRoot, kind: 'directory', bytes: 0, content: '' },
|
|
52
52
|
{ path: join(openspecRoot, 'README.md'), kind: 'file', bytes: 0, content: renderReadme() },
|
|
53
|
-
{
|
|
53
|
+
{
|
|
54
|
+
path: join(openspecRoot, 'CHANGES.md'),
|
|
55
|
+
kind: 'file',
|
|
56
|
+
bytes: 0,
|
|
57
|
+
content: renderChangesIndex()
|
|
58
|
+
}
|
|
54
59
|
];
|
|
55
60
|
// Stamp byte counts now that content is finalised.
|
|
56
61
|
for (const write of plannedWrites) {
|
|
@@ -94,7 +99,8 @@ export async function planOpenSpecInit(options) {
|
|
|
94
99
|
return directoryKeep.has(write.path);
|
|
95
100
|
return !existing.includes(write.path);
|
|
96
101
|
});
|
|
97
|
-
plan.alreadyInitialized =
|
|
102
|
+
plan.alreadyInitialized =
|
|
103
|
+
existing.length > 0 || (await isDirectory(join(openspecRoot, 'changes')));
|
|
98
104
|
plan.existingFiles = existing;
|
|
99
105
|
}
|
|
100
106
|
return plan;
|
|
@@ -32,7 +32,10 @@ function parseBullets(content) {
|
|
|
32
32
|
.map((line) => line.trim())
|
|
33
33
|
.filter((line) => line.startsWith('- ') || line === '-')
|
|
34
34
|
.map((line) => line.replace(/^-\s*/, '').trim())
|
|
35
|
-
.filter((line) => line.length > 0 &&
|
|
35
|
+
.filter((line) => line.length > 0 &&
|
|
36
|
+
!line.startsWith('[ ]') &&
|
|
37
|
+
!line.startsWith('[x]') &&
|
|
38
|
+
!line.startsWith('[X]'));
|
|
36
39
|
}
|
|
37
40
|
function parseProposal(markdown) {
|
|
38
41
|
const sections = parseMarkdownSections(markdown);
|
|
@@ -27,10 +27,18 @@ function buildInternalIssues(changeId, detail) {
|
|
|
27
27
|
issues.push({ level: 'warning', rule: 'why-non-empty', message: 'Why section is empty' });
|
|
28
28
|
}
|
|
29
29
|
if (proposal.whatChanges.length === 0) {
|
|
30
|
-
issues.push({
|
|
30
|
+
issues.push({
|
|
31
|
+
level: 'error',
|
|
32
|
+
rule: 'what-changes-non-empty',
|
|
33
|
+
message: 'What Changes section has no bullets'
|
|
34
|
+
});
|
|
31
35
|
}
|
|
32
36
|
if (proposal.acceptanceCriteria.length === 0) {
|
|
33
|
-
issues.push({
|
|
37
|
+
issues.push({
|
|
38
|
+
level: 'error',
|
|
39
|
+
rule: 'acceptance-non-empty',
|
|
40
|
+
message: 'Acceptance Criteria section has no bullets'
|
|
41
|
+
});
|
|
34
42
|
}
|
|
35
43
|
return issues;
|
|
36
44
|
}
|
|
@@ -57,11 +65,20 @@ export async function validateOpenSpecChange(changeId, options = {}) {
|
|
|
57
65
|
if (options.preferExternal === true) {
|
|
58
66
|
const outcome = await runner('openspec', ['validate', changeId]);
|
|
59
67
|
if (outcome.available) {
|
|
60
|
-
const cliOutput = [outcome.stdout, outcome.stderr]
|
|
68
|
+
const cliOutput = [outcome.stdout, outcome.stderr]
|
|
69
|
+
.filter((part) => part.length > 0)
|
|
70
|
+
.join('\n')
|
|
71
|
+
.trim();
|
|
61
72
|
const passed = outcome.exitCode === 0;
|
|
62
73
|
const issues = passed
|
|
63
74
|
? []
|
|
64
|
-
: [
|
|
75
|
+
: [
|
|
76
|
+
{
|
|
77
|
+
level: 'error',
|
|
78
|
+
rule: 'openspec-cli-failed',
|
|
79
|
+
message: `openspec validate exited with code ${outcome.exitCode ?? 'null'}`
|
|
80
|
+
}
|
|
81
|
+
];
|
|
65
82
|
return { changeId, valid: passed, source: 'openspec-cli', issues, cliOutput };
|
|
66
83
|
}
|
|
67
84
|
const internal = await runInternal(changeId, openspecRoot);
|
|
@@ -69,7 +86,11 @@ export async function validateOpenSpecChange(changeId, options = {}) {
|
|
|
69
86
|
return null;
|
|
70
87
|
}
|
|
71
88
|
internal.issues = [
|
|
72
|
-
{
|
|
89
|
+
{
|
|
90
|
+
level: 'warning',
|
|
91
|
+
rule: 'openspec-cli-unavailable',
|
|
92
|
+
message: 'openspec CLI not found, fell back to internal lint'
|
|
93
|
+
},
|
|
73
94
|
...internal.issues
|
|
74
95
|
];
|
|
75
96
|
return internal;
|
|
@@ -117,12 +117,8 @@ function renderBaselineTemplate() {
|
|
|
117
117
|
}
|
|
118
118
|
function buildPlan(projectRoot, apply) {
|
|
119
119
|
const sessionId = getSessionId(projectRoot);
|
|
120
|
-
const sessionRoot = sessionId !== null
|
|
121
|
-
|
|
122
|
-
: null;
|
|
123
|
-
const perfBaselinePath = sessionRoot !== null
|
|
124
|
-
? join(sessionRoot, 'rd', 'perf-baseline.md')
|
|
125
|
-
: null;
|
|
120
|
+
const sessionRoot = sessionId !== null ? getSessionDir(projectRoot, sessionId) : null;
|
|
121
|
+
const perfBaselinePath = sessionRoot !== null ? join(sessionRoot, 'rd', 'perf-baseline.md') : null;
|
|
126
122
|
const plannedWrites = [];
|
|
127
123
|
if (sessionRoot !== null && perfBaselinePath !== null) {
|
|
128
124
|
plannedWrites.push({
|
|
@@ -118,7 +118,8 @@ export function readManifest(root) {
|
|
|
118
118
|
const raw = readFileSync(p, 'utf8');
|
|
119
119
|
return JSON.parse(raw);
|
|
120
120
|
}
|
|
121
|
-
catch {
|
|
121
|
+
catch {
|
|
122
|
+
// TODO(g2): fail-closed JSON parse — null is the documented contract, caller checks via existsSync
|
|
122
123
|
return null;
|
|
123
124
|
}
|
|
124
125
|
}
|
|
@@ -29,7 +29,10 @@ function childHasPeaks(dir) {
|
|
|
29
29
|
* leading dots or dashes. Used when the dir name itself is the id
|
|
30
30
|
* (the common case). */
|
|
31
31
|
function sanitizeId(name) {
|
|
32
|
-
return name
|
|
32
|
+
return name
|
|
33
|
+
.toLowerCase()
|
|
34
|
+
.replace(/[^a-z0-9._-]+/g, '-')
|
|
35
|
+
.replace(/^[-.]+|[-.]+$/g, '');
|
|
33
36
|
}
|
|
34
37
|
/** Walk the parent root at depth 1 and return discovered children. */
|
|
35
38
|
export function scanPolyrepo(root, opts = {}) {
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { Handoff, HandoffSchemaVersion } from './handoff-types.js';
|
|
2
|
+
/** Required schema version for new handoffs. */
|
|
3
|
+
export declare const HANDOFF_SCHEMA_VERSION: HandoffSchemaVersion;
|
|
4
|
+
export declare function serializeHandoff(handoff: Handoff): string;
|
|
5
|
+
/**
|
|
6
|
+
* N1: accept BOTH shapes of `schemaVersion` — the string `'2'` and the bare
|
|
7
|
+
* YAML number `2` — and reject any other value.
|
|
8
|
+
*
|
|
9
|
+
* The reader used to require `typeof v.schemaVersion === 'string'`. That made
|
|
10
|
+
* `readHandoff` refuse `prd/handoff.md` written by `handoff-auto-regen.ts`,
|
|
11
|
+
* which emits the unquoted `schemaVersion: 2`, while the
|
|
12
|
+
* `AUDIT_REQUIRES_HANDOFF` prereq — a SUBSTRING check for `schemaVersion: 2` —
|
|
13
|
+
* happily passed the same bytes. So the gate that exists to guarantee a
|
|
14
|
+
* readable handoff was satisfied by a handoff the parser would not read, and
|
|
15
|
+
* `peaks prd handoff verify` exited 1 on a healthy file.
|
|
16
|
+
*
|
|
17
|
+
* Slice `2026-09-14-handoff-writer-gate-divergence` then fixed the other half:
|
|
18
|
+
* the writer no longer emits the quoted form at all (see
|
|
19
|
+
* `handoff-frontmatter.ts`). This tolerance stays because handoffs already on
|
|
20
|
+
* disk were written by the old writer and by hand; the writer fix must not
|
|
21
|
+
* retroactively make them unreadable.
|
|
22
|
+
*/
|
|
23
|
+
export declare function isSchemaVersion2(value: unknown): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* B1: `gateEvidence` is optional, but when present it MUST be a map of
|
|
26
|
+
* strings — an ARRAY here is the pre-B1 shape its own test file used to
|
|
27
|
+
* write, and it is a broken declaration, not a claim.
|
|
28
|
+
*
|
|
29
|
+
* F2 of `rid-b1-qa` removed this function's own copy of the shape rule. It
|
|
30
|
+
* used to be a second predicate (same boundary, different downstream result)
|
|
31
|
+
* that let the same bytes read one way here and another way through
|
|
32
|
+
* `readHandoffGateEvidence`; both now ask `classifyGateEvidence`. Only
|
|
33
|
+
* `absent` and `ok` are accepted: a malformed declaration must be refused by
|
|
34
|
+
* `readHandoff` (which is documented to throw on malformed input) exactly as
|
|
35
|
+
* the reader refuses it, so the two can never disagree about the same file.
|
|
36
|
+
*
|
|
37
|
+
* Unknown keys are still accepted HERE — the map is normalized to the five
|
|
38
|
+
* known keys by the caller — because refusing them would make a typo render
|
|
39
|
+
* a whole capsule unreadable, and the reader's `unknownKeys` is the surface
|
|
40
|
+
* that makes the typo diagnosable instead.
|
|
41
|
+
*/
|
|
42
|
+
export declare function isGateEvidence(value: unknown): boolean;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slice `b1-filesplit-campaign` (wave 3) — verbatim extraction of the handoff
|
|
3
|
+
* frontmatter's FIELD-level primitives from `./handoff-service.ts`: the required
|
|
4
|
+
* schema version, the one canonical frontmatter rendering, and the two
|
|
5
|
+
* per-field acceptance rules (`schemaVersion`, `gateEvidence`). The composite
|
|
6
|
+
* predicate that calls them, `isHandoffFrontmatter`, stays in
|
|
7
|
+
* `handoff-service.ts` — it carries an existing `complexity` finding, and a new
|
|
8
|
+
* module must start clean, so only what it calls moved.
|
|
9
|
+
*
|
|
10
|
+
* Bodies, doc comments and thrown strings are unchanged; `handoff-service.ts`
|
|
11
|
+
* imports these and keeps exporting its own public surface, so no importer
|
|
12
|
+
* changed.
|
|
13
|
+
*/
|
|
14
|
+
import { serializeHandoffFrontmatter } from './handoff-frontmatter.js';
|
|
15
|
+
import { classifyGateEvidence } from './handoff-gate-evidence.js';
|
|
16
|
+
/** Required schema version for new handoffs. */
|
|
17
|
+
export const HANDOFF_SCHEMA_VERSION = '2';
|
|
18
|
+
export function serializeHandoff(handoff) {
|
|
19
|
+
// The one canonical frontmatter rendering, shared with
|
|
20
|
+
// `handoff-auto-regen.ts`. `yaml.stringify` used to render this block and
|
|
21
|
+
// emitted `schemaVersion: "2"` + a bare `handoffHash:`, which the
|
|
22
|
+
// `AUDIT_REQUIRES_HANDOFF` gate and both audit loaders all reject.
|
|
23
|
+
return `${serializeHandoffFrontmatter(handoff.frontmatter)}${handoff.body}`;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* N1: accept BOTH shapes of `schemaVersion` — the string `'2'` and the bare
|
|
27
|
+
* YAML number `2` — and reject any other value.
|
|
28
|
+
*
|
|
29
|
+
* The reader used to require `typeof v.schemaVersion === 'string'`. That made
|
|
30
|
+
* `readHandoff` refuse `prd/handoff.md` written by `handoff-auto-regen.ts`,
|
|
31
|
+
* which emits the unquoted `schemaVersion: 2`, while the
|
|
32
|
+
* `AUDIT_REQUIRES_HANDOFF` prereq — a SUBSTRING check for `schemaVersion: 2` —
|
|
33
|
+
* happily passed the same bytes. So the gate that exists to guarantee a
|
|
34
|
+
* readable handoff was satisfied by a handoff the parser would not read, and
|
|
35
|
+
* `peaks prd handoff verify` exited 1 on a healthy file.
|
|
36
|
+
*
|
|
37
|
+
* Slice `2026-09-14-handoff-writer-gate-divergence` then fixed the other half:
|
|
38
|
+
* the writer no longer emits the quoted form at all (see
|
|
39
|
+
* `handoff-frontmatter.ts`). This tolerance stays because handoffs already on
|
|
40
|
+
* disk were written by the old writer and by hand; the writer fix must not
|
|
41
|
+
* retroactively make them unreadable.
|
|
42
|
+
*/
|
|
43
|
+
export function isSchemaVersion2(value) {
|
|
44
|
+
return value === HANDOFF_SCHEMA_VERSION || value === 2;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* B1: `gateEvidence` is optional, but when present it MUST be a map of
|
|
48
|
+
* strings — an ARRAY here is the pre-B1 shape its own test file used to
|
|
49
|
+
* write, and it is a broken declaration, not a claim.
|
|
50
|
+
*
|
|
51
|
+
* F2 of `rid-b1-qa` removed this function's own copy of the shape rule. It
|
|
52
|
+
* used to be a second predicate (same boundary, different downstream result)
|
|
53
|
+
* that let the same bytes read one way here and another way through
|
|
54
|
+
* `readHandoffGateEvidence`; both now ask `classifyGateEvidence`. Only
|
|
55
|
+
* `absent` and `ok` are accepted: a malformed declaration must be refused by
|
|
56
|
+
* `readHandoff` (which is documented to throw on malformed input) exactly as
|
|
57
|
+
* the reader refuses it, so the two can never disagree about the same file.
|
|
58
|
+
*
|
|
59
|
+
* Unknown keys are still accepted HERE — the map is normalized to the five
|
|
60
|
+
* known keys by the caller — because refusing them would make a typo render
|
|
61
|
+
* a whole capsule unreadable, and the reader's `unknownKeys` is the surface
|
|
62
|
+
* that makes the typo diagnosable instead.
|
|
63
|
+
*/
|
|
64
|
+
export function isGateEvidence(value) {
|
|
65
|
+
const kind = classifyGateEvidence(value).kind;
|
|
66
|
+
return kind === 'absent' || kind === 'ok';
|
|
67
|
+
}
|
|
@@ -131,7 +131,7 @@ export function serializeHandoffFrontmatter(frontmatter) {
|
|
|
131
131
|
// indented lines only, leaving the top-level key set exactly as it was
|
|
132
132
|
// for every capsule that declares no evidence.
|
|
133
133
|
...gateEvidenceBlock(frontmatter.gateEvidence),
|
|
134
|
-
'---'
|
|
134
|
+
'---'
|
|
135
135
|
];
|
|
136
136
|
return `${lines.join('\n')}\n`;
|
|
137
137
|
}
|