peaks-loop 4.0.54 → 4.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +61 -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 +86 -39
- 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/comments-commands.d.ts +14 -0
- package/dist/cli/commands/comments-commands.js +96 -0
- 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 +57 -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 +32 -17
- package/dist/cli/commands/core/standards-command.js +56 -14
- 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 +18 -23
- package/dist/cli/commands/ecc-commands.js +39 -36
- 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 +16 -6
- 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/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 +8 -10
- 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 +66 -0
- package/dist/services/code/mode-gate.d.ts +4 -58
- package/dist/services/code/mode-gate.js +25 -69
- 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/user-touchpoint-classifier.js +0 -7
- package/dist/services/code-review/ecc-bridge.d.ts +6 -6
- 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/comments/citation-rules.d.ts +154 -0
- package/dist/services/comments/citation-rules.js +241 -0
- package/dist/services/comments/comment-audit.d.ts +57 -0
- package/dist/services/comments/comment-audit.js +100 -0
- package/dist/services/comments/comment-citations.d.ts +60 -0
- package/dist/services/comments/comment-citations.js +186 -0
- package/dist/services/comments/comment-hygiene.d.ts +79 -0
- package/dist/services/comments/comment-hygiene.js +133 -0
- package/dist/services/comments/comment-prune.d.ts +88 -0
- package/dist/services/comments/comment-prune.js +148 -0
- package/dist/services/comments/prune-apply.d.ts +60 -0
- package/dist/services/comments/prune-apply.js +150 -0
- package/dist/services/comments/repo-path-probe.d.ts +43 -0
- package/dist/services/comments/repo-path-probe.js +78 -0
- 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.d.ts +0 -16
- package/dist/services/log/retention.js +2 -18
- package/dist/services/loop/evaluator-dispatcher.js +78 -42
- package/dist/services/loop/loop-bee-relation-service.d.ts +4 -4
- package/dist/services/loop/loop-bee-relation-service.js +36 -40
- package/dist/services/loop/loop-bee-relation-store.d.ts +3 -3
- package/dist/services/loop/loop-bee-relation-store.js +9 -11
- package/dist/services/loop/loop-bee-relation-types.d.ts +1 -1
- package/dist/services/loop/loop-bee-relation-types.js +14 -25
- package/dist/services/loop/loop-release-service.d.ts +2 -2
- package/dist/services/loop/loop-release-service.js +3 -3
- package/dist/services/loop/loop-release-store.d.ts +2 -2
- package/dist/services/loop/loop-release-store.js +4 -6
- package/dist/services/loop/loop-release-types.d.ts +1 -1
- package/dist/services/loop/loop-release-types.js +21 -31
- package/dist/services/loop/monotonic-guard-types.d.ts +51 -0
- package/dist/services/loop/monotonic-guard-types.js +9 -0
- package/dist/services/loop/monotonic-guard.d.ts +2 -43
- package/dist/services/loop/monotonic-runner-types.d.ts +63 -0
- package/dist/services/loop/monotonic-runner-types.js +17 -0
- package/dist/services/loop/monotonic-runner.d.ts +3 -34
- package/dist/services/loop/monotonic-runner.js +10 -20
- package/dist/services/loop/run-driver.js +16 -8
- package/dist/services/loop/spec-service.d.ts +0 -5
- package/dist/services/loop/spec-service.js +49 -9
- package/dist/services/memory/llm-reranker-core.d.ts +108 -0
- package/dist/services/memory/llm-reranker-core.js +105 -0
- package/dist/services/memory/llm-reranker.d.ts +3 -94
- package/dist/services/memory/llm-reranker.js +13 -102
- package/dist/services/memory/memory-ingest-service.d.ts +1 -22
- package/dist/services/memory/memory-ingest-service.js +29 -76
- package/dist/services/memory/memory-ingest-support.d.ts +23 -0
- package/dist/services/memory/memory-ingest-support.js +81 -0
- package/dist/services/memory/memory-rotate-service.js +41 -8
- package/dist/services/memory/memory-search-service.js +8 -4
- package/dist/services/memory/project-context-service.js +26 -5
- package/dist/services/memory/project-memory-service/index/kind-dispatch.d.ts +2 -7
- package/dist/services/memory/project-memory-service/index/kind-dispatch.js +17 -136
- package/dist/services/memory/project-memory-service/index/project-memory-plan-exec.d.ts +7 -0
- package/dist/services/memory/project-memory-service/index/project-memory-plan-exec.js +150 -0
- package/dist/services/memory/project-memory-service/index/ranking.js +6 -3
- package/dist/services/memory/project-memory-service/index/reindex.js +14 -5
- package/dist/services/memory/project-memory-service/index.d.ts +1 -1
- package/dist/services/memory/project-memory-service/index.js +1 -1
- package/dist/services/memory/project-memory-service/memory-kinds.d.ts +31 -0
- package/dist/services/memory/project-memory-service/memory-kinds.js +87 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter-parse.d.ts +24 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter-parse.js +104 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter.d.ts +2 -24
- package/dist/services/memory/project-memory-service/parsers/frontmatter.js +28 -79
- package/dist/services/memory/project-memory-service/parsers/markdown-pure.js +15 -3
- package/dist/services/memory/project-memory-service/store/atomic-write.d.ts +19 -7
- package/dist/services/memory/project-memory-service/store/atomic-write.js +144 -38
- 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 +62 -1
- package/dist/services/prd/handoff-gate-evidence.js +14 -10
- 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 +12 -38
- package/dist/services/prd/handoff-service.js +25 -147
- package/dist/services/prd/handoff-types.d.ts +33 -1
- package/dist/services/prd/prd-blocks-checker.js +28 -8
- package/dist/services/prd/project-scan-bootstrap-service.js +1 -5
- package/dist/services/prd/project-scan-reader.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/recommendations/installed-capability-detector.d.ts +5 -5
- package/dist/services/recommendations/installed-capability-detector.js +11 -10
- 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 +74 -0
- package/dist/services/scan/archetype-detection.js +315 -0
- package/dist/services/scan/archetype-service.js +58 -133
- 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/scan-types.d.ts +9 -0
- 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/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/generated-artifacts-stamp.d.ts +2 -2
- package/dist/services/workspace/generated-artifacts-stamp.js +2 -2
- 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 +12 -4
- 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 +286 -283
- package/scripts/sync-version.mjs +25 -8
- package/scripts/watch.mjs +8 -2
- package/skills/bee/peaks-qa/references/reading-handoff-frontmatter.md +3 -1
- package/skills/bee/peaks-rd/references/parallel-review-fanout.md +1 -1
- package/skills/bee/peaks-rd/references/rd-fanout-contracts.md +3 -2
- package/skills/bee/peaks-rd/references/writing-handoff-frontmatter.md +29 -7
- package/skills/peaks-code/SKILL.md +1 -1
- package/skills/peaks-code/references/frontend-only-mode.md +2 -2
- package/skills/peaks-code/references/startup-sequence.md +0 -4
- package/dist/cli/commands/upgrade-commands.d.ts +0 -25
- package/dist/cli/commands/upgrade-commands.js +0 -154
- package/dist/services/upgrade/1x-detector-service.d.ts +0 -7
- package/dist/services/upgrade/1x-detector-service.js +0 -94
- package/dist/services/upgrade/gitignore-migrate-service.d.ts +0 -56
- package/dist/services/upgrade/gitignore-migrate-service.js +0 -170
- package/dist/services/upgrade/upgrade-service.d.ts +0 -81
- package/dist/services/upgrade/upgrade-service.js +0 -405
- package/skills/peaks-code/references/step-0-55-1x-detection.md +0 -83
|
@@ -23,112 +23,30 @@
|
|
|
23
23
|
* markdown source — no normalization, no trailing-newline padding.
|
|
24
24
|
*/
|
|
25
25
|
import { createHash } from 'node:crypto';
|
|
26
|
-
import { existsSync } from 'node:fs';
|
|
27
26
|
import { mkdir, readFile, writeFile } from 'node:fs/promises';
|
|
28
27
|
import { dirname, join } from 'node:path';
|
|
29
28
|
import { parse as parseYaml } from 'yaml';
|
|
30
|
-
import { isUnsafePathInput } from '../../shared/path-safety.js';
|
|
31
|
-
import { REQUEST_ID_PATTERN } from '../artifacts/request-artifact-service.js';
|
|
32
|
-
import { serializeHandoffFrontmatter } from './handoff-frontmatter.js';
|
|
33
29
|
import { classifyGateEvidence } from './handoff-gate-evidence.js';
|
|
34
|
-
|
|
35
|
-
|
|
30
|
+
import { HANDOFF_SCHEMA_VERSION, isGateEvidence, isSchemaVersion2, serializeHandoff } from './handoff-frontmatter-shape.js';
|
|
31
|
+
import { handoffRelativePath } from './handoff-path-resolution.js';
|
|
32
|
+
// Slice `b1-filesplit-campaign` (wave 3): the capsule PATH layer
|
|
33
|
+
// (`assertSafeHandoffIds` / `handoffRelativePath` / `resolveHandoffPath`) and the
|
|
34
|
+
// frontmatter field primitives (`HANDOFF_SCHEMA_VERSION` / `serializeHandoff` /
|
|
35
|
+
// `isSchemaVersion2` / `isGateEvidence`) moved VERBATIM to
|
|
36
|
+
// `./handoff-path-resolution.ts` and `./handoff-frontmatter-shape.ts` so this
|
|
37
|
+
// file clears the 300 raw-line cap. The public names below are re-exported from
|
|
38
|
+
// this path, so no importer changed; the id->path guard these joins carry is
|
|
39
|
+
// still measured — the new module is named in rule D's scanned set in
|
|
40
|
+
// `tests/unit/runtime/no-runtime-input-guard.test.ts`.
|
|
41
|
+
export { handoffRelativePath, resolveHandoffPath } from './handoff-path-resolution.js';
|
|
36
42
|
/** Compute the lowercase hex sha256 of a UTF-8 string. */
|
|
37
43
|
export function sha256OfBody(body) {
|
|
38
44
|
return createHash('sha256').update(body, 'utf8').digest('hex');
|
|
39
45
|
}
|
|
40
|
-
/**
|
|
41
|
-
* Both ids in a handoff path are caller-supplied path segments, so both are
|
|
42
|
-
* checked at the join. Added 2026-09-14 (repair R1, security audit F2 of
|
|
43
|
-
* `2026-09-14-cli-id-escape-instrumentation`).
|
|
44
|
-
*
|
|
45
|
-
* This function was introduced by `0536d5bd` — the commit that instrumented
|
|
46
|
-
* this defect class — with neither id checked, and it sat outside rule D's
|
|
47
|
-
* scanned layer, so the instrument could not see its own new member.
|
|
48
|
-
* Measured on the pre-fix tree (`prd handoff init --apply`, temp project,
|
|
49
|
-
* `ok: true` both times):
|
|
50
|
-
*
|
|
51
|
-
* --rid '../../../../../../README' replaced the project-root README.md
|
|
52
|
-
* --sid '../../../../SIDOUT' wrote 4 levels above the project root
|
|
53
|
-
*
|
|
54
|
-
* The two axes need two different controls, for a recorded reason: the rid has
|
|
55
|
-
* a pinned format (`REQUEST_ID_PATTERN`, no separator, no dot-dot, no drive)
|
|
56
|
-
* and the sid has none, so it gets the segment check. `isUnsafePathInput`
|
|
57
|
-
* alone is NOT enough for the rid — it admits `a/b` (two non-empty segments),
|
|
58
|
-
* which `request-artifact-service.ts` would reject.
|
|
59
|
-
*
|
|
60
|
-
* Guarding HERE rather than at the three `prd`/`env` flags means every producer
|
|
61
|
-
* that writes through this constructor — `initHandoff`'s default,
|
|
62
|
-
* `handoff-auto-regen.ts`, `evidence-generator.ts` — is covered by the join
|
|
63
|
-
* itself, not by each caller re-deciding.
|
|
64
|
-
*/
|
|
65
|
-
function assertSafeHandoffIds(sessionId, requestId) {
|
|
66
|
-
if (!REQUEST_ID_PATTERN.test(requestId)) {
|
|
67
|
-
throw new Error(`Invalid request id: ${requestId} (expected letters, digits, dots, underscores, or dashes)`);
|
|
68
|
-
}
|
|
69
|
-
if (isUnsafePathInput(sessionId)) {
|
|
70
|
-
throw new Error(`Invalid session id: ${sessionId} (must be a single path segment)`);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* The canonical capsule path for ONE SLICE, relative to the project root.
|
|
75
|
-
*
|
|
76
|
-
* Slice `2026-09-14-prd-capsule-rid-scoping`: the capsule used to be one slot
|
|
77
|
-
* per SESSION (`prd/handoff.md`), so the second slice's handoff silently
|
|
78
|
-
* overwrote the first slice's — and `AUDIT_REQUIRES_HANDOFF` stayed green
|
|
79
|
-
* because it never checked WHOSE rid the file named. Measured on
|
|
80
|
-
* `2026-09-13-session-21878f`: a four-slice job passed that prerequisite on a
|
|
81
|
-
* capsule left by a different line of work.
|
|
82
|
-
*
|
|
83
|
-
* This is the WRITE target, so it always carries the rid — a consumer-side
|
|
84
|
-
* fallback here would leave a rid-scoped requirement with a bare-name writer,
|
|
85
|
-
* which is the defect shape this slice exists to remove. Readers that must
|
|
86
|
-
* tolerate pre-rid-scoping sessions call `resolveHandoffPath` instead.
|
|
87
|
-
*/
|
|
88
|
-
export function handoffRelativePath(sessionId, requestId) {
|
|
89
|
-
assertSafeHandoffIds(sessionId, requestId);
|
|
90
|
-
return join('.peaks', '_runtime', sessionId, 'prd', `handoff-${requestId}.md`);
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* The capsule a CONSUMER should read for (session, requestId): the rid-scoped
|
|
94
|
-
* path when it is on disk, else the pre-rid-scoping bare name. Returns null
|
|
95
|
-
* when neither exists.
|
|
96
|
-
*
|
|
97
|
-
* Three sessions on disk still hold only the bare file
|
|
98
|
-
* (`2026-09-06-session-a87ca4`, `2026-09-12-session-e37ef0`,
|
|
99
|
-
* `2026-09-13-session-21878f`), so the legacy tier has to keep resolving for
|
|
100
|
-
* the gate and for every reader below.
|
|
101
|
-
*
|
|
102
|
-
* `requestId` is optional because the detect-only audit surface reaches its
|
|
103
|
-
* service without one. Such a caller can name only the bare path: a session
|
|
104
|
-
* holding nothing but rid-scoped capsules reports missing rather than picking
|
|
105
|
-
* among its siblings' capsules, which would re-open the cross-slice mix-up
|
|
106
|
-
* this scoping exists to close (fail closed, not "some capsule is there").
|
|
107
|
-
*/
|
|
108
|
-
export function resolveHandoffPath(opts) {
|
|
109
|
-
// The legacy bare-name candidate below is a second join of the same sid, in a
|
|
110
|
-
// second function, so it needs the sid guarded in its own right — the
|
|
111
|
-
// optional-requestId branch reaches `handoffRelativePath` (guarded there), but
|
|
112
|
-
// the branch that is taken when a caller has NO rid reaches this join only.
|
|
113
|
-
if (isUnsafePathInput(opts.sessionId)) {
|
|
114
|
-
throw new Error(`Invalid session id: ${opts.sessionId} (must be a single path segment)`);
|
|
115
|
-
}
|
|
116
|
-
const candidates = [
|
|
117
|
-
...(opts.requestId !== undefined ? [handoffRelativePath(opts.sessionId, opts.requestId)] : []),
|
|
118
|
-
join('.peaks', '_runtime', opts.sessionId, 'prd', 'handoff.md')
|
|
119
|
-
];
|
|
120
|
-
for (const relative of candidates) {
|
|
121
|
-
const absolute = join(opts.projectRoot, relative);
|
|
122
|
-
if (existsSync(absolute))
|
|
123
|
-
return absolute;
|
|
124
|
-
}
|
|
125
|
-
return null;
|
|
126
|
-
}
|
|
127
46
|
/** Pure: produce a Handoff with the frontmatter populated. Hash is
|
|
128
47
|
* computed here; callers MUST NOT pre-populate `handoffHash`. */
|
|
129
48
|
export function initHandoff(opts) {
|
|
130
|
-
const handoffPath = opts.handoffPath ??
|
|
131
|
-
handoffRelativePath(opts.sessionId, opts.requestId);
|
|
49
|
+
const handoffPath = opts.handoffPath ?? handoffRelativePath(opts.sessionId, opts.requestId);
|
|
132
50
|
const handoffHash = sha256OfBody(opts.body);
|
|
133
51
|
const frontmatter = {
|
|
134
52
|
requestId: opts.requestId,
|
|
@@ -146,6 +64,16 @@ export function initHandoff(opts) {
|
|
|
146
64
|
// `frontmatter.gateEvidence` key present-but-undefined for every caller
|
|
147
65
|
// that declares nothing.
|
|
148
66
|
...(opts.gateEvidence === undefined ? {} : { gateEvidence: opts.gateEvidence }),
|
|
67
|
+
// The authored fields, each spread only when present. The same
|
|
68
|
+
// `exactOptionalPropertyTypes` reason as `gateEvidence` above: an absent
|
|
69
|
+
// field is absent, not present-and-undefined, so a capsule that declares
|
|
70
|
+
// nothing writes nothing — and a copy is taken so a caller mutating its own
|
|
71
|
+
// array afterwards cannot change a handoff that has already been hashed.
|
|
72
|
+
...(opts.scope === undefined ? {} : { scope: [...opts.scope] }),
|
|
73
|
+
...(opts.files === undefined ? {} : { files: [...opts.files] }),
|
|
74
|
+
...(opts.decisions === undefined ? {} : { decisions: [...opts.decisions] }),
|
|
75
|
+
...(opts.risks === undefined ? {} : { risks: [...opts.risks] }),
|
|
76
|
+
...(opts.nextActions === undefined ? {} : { nextActions: [...opts.nextActions] })
|
|
149
77
|
};
|
|
150
78
|
return { frontmatter, body: opts.body };
|
|
151
79
|
}
|
|
@@ -194,7 +122,7 @@ export async function verifyHandoff(filePath) {
|
|
|
194
122
|
return {
|
|
195
123
|
ok: false,
|
|
196
124
|
reason: 'schema-version-mismatch',
|
|
197
|
-
actualHash: handoff.frontmatter.handoffHash
|
|
125
|
+
actualHash: handoff.frontmatter.handoffHash
|
|
198
126
|
};
|
|
199
127
|
}
|
|
200
128
|
const actualHash = sha256OfBody(handoff.body);
|
|
@@ -203,7 +131,7 @@ export async function verifyHandoff(filePath) {
|
|
|
203
131
|
ok: false,
|
|
204
132
|
reason: 'hash-mismatch',
|
|
205
133
|
actualHash,
|
|
206
|
-
expectedHash: handoff.frontmatter.handoffHash
|
|
134
|
+
expectedHash: handoff.frontmatter.handoffHash
|
|
207
135
|
};
|
|
208
136
|
}
|
|
209
137
|
return { ok: true, actualHash, expectedHash: actualHash };
|
|
@@ -258,34 +186,6 @@ function parseHandoffContent(content) {
|
|
|
258
186
|
body
|
|
259
187
|
};
|
|
260
188
|
}
|
|
261
|
-
function serializeHandoff(handoff) {
|
|
262
|
-
// The one canonical frontmatter rendering, shared with
|
|
263
|
-
// `handoff-auto-regen.ts`. `yaml.stringify` used to render this block and
|
|
264
|
-
// emitted `schemaVersion: "2"` + a bare `handoffHash:`, which the
|
|
265
|
-
// `AUDIT_REQUIRES_HANDOFF` gate and both audit loaders all reject.
|
|
266
|
-
return `${serializeHandoffFrontmatter(handoff.frontmatter)}${handoff.body}`;
|
|
267
|
-
}
|
|
268
|
-
/**
|
|
269
|
-
* N1: accept BOTH shapes of `schemaVersion` — the string `'2'` and the bare
|
|
270
|
-
* YAML number `2` — and reject any other value.
|
|
271
|
-
*
|
|
272
|
-
* The reader used to require `typeof v.schemaVersion === 'string'`. That made
|
|
273
|
-
* `readHandoff` refuse `prd/handoff.md` written by `handoff-auto-regen.ts`,
|
|
274
|
-
* which emits the unquoted `schemaVersion: 2`, while the
|
|
275
|
-
* `AUDIT_REQUIRES_HANDOFF` prereq — a SUBSTRING check for `schemaVersion: 2` —
|
|
276
|
-
* happily passed the same bytes. So the gate that exists to guarantee a
|
|
277
|
-
* readable handoff was satisfied by a handoff the parser would not read, and
|
|
278
|
-
* `peaks prd handoff verify` exited 1 on a healthy file.
|
|
279
|
-
*
|
|
280
|
-
* Slice `2026-09-14-handoff-writer-gate-divergence` then fixed the other half:
|
|
281
|
-
* the writer no longer emits the quoted form at all (see
|
|
282
|
-
* `handoff-frontmatter.ts`). This tolerance stays because handoffs already on
|
|
283
|
-
* disk were written by the old writer and by hand; the writer fix must not
|
|
284
|
-
* retroactively make them unreadable.
|
|
285
|
-
*/
|
|
286
|
-
function isSchemaVersion2(value) {
|
|
287
|
-
return value === HANDOFF_SCHEMA_VERSION || value === 2;
|
|
288
|
-
}
|
|
289
189
|
/**
|
|
290
190
|
* The READER's shape check — deliberately looser than `verifyHandoff`:
|
|
291
191
|
* `handoffHash` must be a string, and nothing about its VALUE is validated here.
|
|
@@ -319,25 +219,3 @@ function isHandoffFrontmatter(value) {
|
|
|
319
219
|
typeof v.handoffPath === 'string' &&
|
|
320
220
|
isGateEvidence(v.gateEvidence));
|
|
321
221
|
}
|
|
322
|
-
/**
|
|
323
|
-
* B1: `gateEvidence` is optional, but when present it MUST be a map of
|
|
324
|
-
* strings — an ARRAY here is the pre-B1 shape its own test file used to
|
|
325
|
-
* write, and it is a broken declaration, not a claim.
|
|
326
|
-
*
|
|
327
|
-
* F2 of `rid-b1-qa` removed this function's own copy of the shape rule. It
|
|
328
|
-
* used to be a second predicate (same boundary, different downstream result)
|
|
329
|
-
* that let the same bytes read one way here and another way through
|
|
330
|
-
* `readHandoffGateEvidence`; both now ask `classifyGateEvidence`. Only
|
|
331
|
-
* `absent` and `ok` are accepted: a malformed declaration must be refused by
|
|
332
|
-
* `readHandoff` (which is documented to throw on malformed input) exactly as
|
|
333
|
-
* the reader refuses it, so the two can never disagree about the same file.
|
|
334
|
-
*
|
|
335
|
-
* Unknown keys are still accepted HERE — the map is normalized to the five
|
|
336
|
-
* known keys by the caller — because refusing them would make a typo render
|
|
337
|
-
* a whole capsule unreadable, and the reader's `unknownKeys` is the surface
|
|
338
|
-
* that makes the typo diagnosable instead.
|
|
339
|
-
*/
|
|
340
|
-
function isGateEvidence(value) {
|
|
341
|
-
const kind = classifyGateEvidence(value).kind;
|
|
342
|
-
return kind === 'absent' || kind === 'ok';
|
|
343
|
-
}
|
|
@@ -63,7 +63,39 @@ export type GateEvidence = Readonly<Partial<Record<GateEvidenceKey, string>>>;
|
|
|
63
63
|
* immutability: once written, peaks-rd / peaks-qa / sub-agents MUST
|
|
64
64
|
* NOT mutate the on-disk copy.
|
|
65
65
|
*/
|
|
66
|
-
|
|
66
|
+
/** One entry of `decisions[]` — a choice an implementer could question. */
|
|
67
|
+
export type HandoffDecision = {
|
|
68
|
+
readonly id: string;
|
|
69
|
+
readonly summary: string;
|
|
70
|
+
readonly rationale: string;
|
|
71
|
+
};
|
|
72
|
+
/** One entry of `risks[]`. `mitigation` is required by the field rule in
|
|
73
|
+
* `skills/bee/peaks-rd/references/writing-handoff-frontmatter.md:52`: a risk
|
|
74
|
+
* without one is a red line, so the type has no optional form of it. */
|
|
75
|
+
export type HandoffRisk = {
|
|
76
|
+
readonly id: string;
|
|
77
|
+
readonly description: string;
|
|
78
|
+
readonly mitigation: string;
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* The fields a WRITER authors and a READER cross-checks, absent when the capsule
|
|
82
|
+
* declares nothing. They were documented as required frontmatter long before the
|
|
83
|
+
* type carried them — `readHandoff` spread the parsed YAML, so an authored capsule
|
|
84
|
+
* kept them at runtime while the serializer, which renders from the TYPE, dropped
|
|
85
|
+
* them on every rewrite. That is the data loss `handoff-auto-regen` used to cause
|
|
86
|
+
* and these fields exist to end.
|
|
87
|
+
*/
|
|
88
|
+
export type HandoffAuthoredFields = {
|
|
89
|
+
/** Repo-relative paths this slice touches, sorted. */
|
|
90
|
+
readonly scope?: readonly string[];
|
|
91
|
+
/** Files the slice expects in its diff; peaks-qa checks this against git. */
|
|
92
|
+
readonly files?: readonly string[];
|
|
93
|
+
readonly decisions?: readonly HandoffDecision[];
|
|
94
|
+
readonly risks?: readonly HandoffRisk[];
|
|
95
|
+
/** Verb-first; what the next role does, in order. */
|
|
96
|
+
readonly nextActions?: readonly string[];
|
|
97
|
+
};
|
|
98
|
+
export interface HandoffFrontmatter extends HandoffAuthoredFields {
|
|
67
99
|
readonly requestId: string;
|
|
68
100
|
readonly sessionId: string;
|
|
69
101
|
readonly schemaVersion: HandoffSchemaVersion;
|
|
@@ -17,10 +17,30 @@
|
|
|
17
17
|
import { readFileSync, existsSync, readdirSync, statSync } from 'node:fs';
|
|
18
18
|
import { join, resolve } from 'node:path';
|
|
19
19
|
const BLOCK_HEADINGS = [
|
|
20
|
-
{
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
{
|
|
21
|
+
block: 1,
|
|
22
|
+
name: '业务场景',
|
|
23
|
+
pattern: /^#{1,4}\s*(?:\d+\.\s*)?业务场景[^\n]*$/m,
|
|
24
|
+
requiredByDefault: true
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
block: 2,
|
|
28
|
+
name: '边界 case',
|
|
29
|
+
pattern: /^#{1,4}\s*(?:\d+\.\s*)?边界\s*case[^\n]*$/im,
|
|
30
|
+
requiredByDefault: true
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
block: 3,
|
|
34
|
+
name: 'UI 装配意图',
|
|
35
|
+
pattern: /^#{1,4}\s*(?:\d+\.\s*)?UI\s*装配[^\n]*$/im,
|
|
36
|
+
requiredByDefault: true
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
block: 4,
|
|
40
|
+
name: '上游基线',
|
|
41
|
+
pattern: /^#{1,4}\s*(?:\d+\.\s*)?上游基线[^\n]*$/m,
|
|
42
|
+
requiredByDefault: false
|
|
43
|
+
}
|
|
24
44
|
];
|
|
25
45
|
const MIN_CONTENT_LENGTH = 50;
|
|
26
46
|
export function findPrdArtifact(projectRoot, requestId) {
|
|
@@ -75,9 +95,7 @@ export function checkPrdBlocks(projectRoot, requestId) {
|
|
|
75
95
|
required: h.requiredByDefault,
|
|
76
96
|
present: false,
|
|
77
97
|
content: null,
|
|
78
|
-
issues: h.requiredByDefault
|
|
79
|
-
? ['PRD artifact not found — write the prd body first.']
|
|
80
|
-
: []
|
|
98
|
+
issues: h.requiredByDefault ? ['PRD artifact not found — write the prd body first.'] : []
|
|
81
99
|
})),
|
|
82
100
|
ok: false
|
|
83
101
|
};
|
|
@@ -95,7 +113,9 @@ export function checkPrdBlocks(projectRoot, requestId) {
|
|
|
95
113
|
present: false,
|
|
96
114
|
content: null,
|
|
97
115
|
issues: required
|
|
98
|
-
? [
|
|
116
|
+
? [
|
|
117
|
+
`Missing required block: ${h.name}. Add a heading like "## ${h.name}" with at least ${MIN_CONTENT_LENGTH} chars of content.`
|
|
118
|
+
]
|
|
99
119
|
: []
|
|
100
120
|
};
|
|
101
121
|
}
|
|
@@ -42,11 +42,7 @@ const SOURCE_FILE_EXTENSIONS = /\.(tsx?|jsx?|vue|svelte)$/;
|
|
|
42
42
|
* here — those projects should be detected via `package.json`
|
|
43
43
|
* workspaces[] field below.
|
|
44
44
|
*/
|
|
45
|
-
const MONOREPO_ROOT_CONFIGS = [
|
|
46
|
-
'pnpm-workspace.yaml',
|
|
47
|
-
'turbo.json',
|
|
48
|
-
'nx.json'
|
|
49
|
-
];
|
|
45
|
+
const MONOREPO_ROOT_CONFIGS = ['pnpm-workspace.yaml', 'turbo.json', 'nx.json'];
|
|
50
46
|
/** True iff the project root declares pnpm / yarn / npm workspaces. */
|
|
51
47
|
function projectHasWorkspacesInPackageJson(projectRoot) {
|
|
52
48
|
const pkgPath = join(projectRoot, 'package.json');
|
|
@@ -59,10 +59,7 @@ async function readOptionalFile(projectRoot, relativePath) {
|
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
61
|
function isEnoent(error) {
|
|
62
|
-
return
|
|
63
|
-
error !== null &&
|
|
64
|
-
'code' in error &&
|
|
65
|
-
error.code === 'ENOENT');
|
|
62
|
+
return typeof error === 'object' && error !== null && 'code' in error && error.code === 'ENOENT';
|
|
66
63
|
}
|
|
67
64
|
function parseProjectScanContent(content) {
|
|
68
65
|
const { frontmatter } = splitFrontmatter(content);
|
|
@@ -397,10 +397,7 @@ async function readOptionalFile(absolutePath) {
|
|
|
397
397
|
}
|
|
398
398
|
}
|
|
399
399
|
function isEnoent(error) {
|
|
400
|
-
return
|
|
401
|
-
error !== null &&
|
|
402
|
-
'code' in error &&
|
|
403
|
-
error.code === 'ENOENT');
|
|
400
|
+
return typeof error === 'object' && error !== null && 'code' in error && error.code === 'ENOENT';
|
|
404
401
|
}
|
|
405
402
|
/** Serialize a `BusinessKnowledge` to the markdown-table body format.
|
|
406
403
|
* Matches the bootstrap template at `.peaks/project-scan/business-knowledge.md`. */
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from 'node:fs';
|
|
2
2
|
import { dirname, join } from 'node:path';
|
|
3
|
-
import { DEFAULT_PREFERENCES, FANOUT_MODES, isFanoutMode, PREFERENCES_SCHEMA_VERSION
|
|
3
|
+
import { DEFAULT_PREFERENCES, FANOUT_MODES, isFanoutMode, PREFERENCES_SCHEMA_VERSION } from './preferences-types.js';
|
|
4
4
|
const PREFS_REL_PATH = '.peaks/preferences.json';
|
|
5
5
|
export { DEFAULT_PREFERENCES, PREFERENCES_SCHEMA_VERSION };
|
|
6
6
|
export function preferencesPath(projectRoot) {
|
|
@@ -93,7 +93,7 @@ function mergePreferences(base, overrides) {
|
|
|
93
93
|
// that already specified `defaultMode` in their preferences.json.
|
|
94
94
|
const shallow = {
|
|
95
95
|
...base,
|
|
96
|
-
...Object.fromEntries(definedEntries)
|
|
96
|
+
...Object.fromEntries(definedEntries)
|
|
97
97
|
};
|
|
98
98
|
const overrideFanout = overrides.fanout;
|
|
99
99
|
if (overrideFanout !== undefined &&
|
|
@@ -107,7 +107,7 @@ function mergePreferences(base, overrides) {
|
|
|
107
107
|
}
|
|
108
108
|
return {
|
|
109
109
|
...shallow,
|
|
110
|
-
schema_version: PREFERENCES_SCHEMA_VERSION
|
|
110
|
+
schema_version: PREFERENCES_SCHEMA_VERSION
|
|
111
111
|
};
|
|
112
112
|
}
|
|
113
113
|
export function migratePreferences(projectRoot, opts = {}) {
|
|
@@ -122,9 +122,7 @@ export function migratePreferences(projectRoot, opts = {}) {
|
|
|
122
122
|
catch (err) {
|
|
123
123
|
throw new Error(`PREFERENCES_JSON_INVALID: failed to parse ${filePath}: ${err.message}`);
|
|
124
124
|
}
|
|
125
|
-
const fromVersion = typeof raw.schema_version === 'string'
|
|
126
|
-
? raw.schema_version
|
|
127
|
-
: 'unknown';
|
|
125
|
+
const fromVersion = typeof raw.schema_version === 'string' ? raw.schema_version : 'unknown';
|
|
128
126
|
if (fromVersion === PREFERENCES_SCHEMA_VERSION) {
|
|
129
127
|
return {
|
|
130
128
|
fromVersion,
|
|
@@ -158,9 +156,9 @@ export function migratePreferences(projectRoot, opts = {}) {
|
|
|
158
156
|
const migrated = mergePreferences(DEFAULT_PREFERENCES, {
|
|
159
157
|
...raw,
|
|
160
158
|
fanout: typeof raw.fanout === 'object' && raw.fanout !== null && !Array.isArray(raw.fanout)
|
|
161
|
-
?
|
|
159
|
+
? raw.fanout.defaultMode === 'serial'
|
|
162
160
|
? { defaultMode: 'fan-out' }
|
|
163
|
-
: raw.fanout
|
|
161
|
+
: raw.fanout
|
|
164
162
|
: { defaultMode: 'fan-out' }
|
|
165
163
|
});
|
|
166
164
|
let written = false;
|
|
@@ -26,12 +26,12 @@ export const DEFAULT_PREFERENCES = {
|
|
|
26
26
|
classifyRules: {
|
|
27
27
|
feature_threshold_files: 10,
|
|
28
28
|
feature_threshold_lines: 100,
|
|
29
|
-
runtime_clean_grace_hours: 24
|
|
29
|
+
runtime_clean_grace_hours: 24
|
|
30
30
|
},
|
|
31
31
|
swarmSpeculative: {
|
|
32
32
|
enabled: true,
|
|
33
33
|
maxConcurrent: 3,
|
|
34
|
-
minHitRate: 0.5
|
|
34
|
+
minHitRate: 0.5
|
|
35
35
|
},
|
|
36
36
|
loopAutonomousEnabled: false,
|
|
37
37
|
agentShieldEnabled: false,
|
|
@@ -55,6 +55,6 @@ export const DEFAULT_PREFERENCES = {
|
|
|
55
55
|
warmItemCap: 4,
|
|
56
56
|
warmMinTokenHits: 1,
|
|
57
57
|
selectionTimeBudgetMs: 200,
|
|
58
|
-
includeBodies: false
|
|
59
|
-
}
|
|
58
|
+
includeBodies: false
|
|
59
|
+
}
|
|
60
60
|
};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `src/services/qa/bdd-test-style-contract.ts`
|
|
3
|
+
*
|
|
4
|
+
* Verdict types and pure string matchers extracted verbatim from
|
|
5
|
+
* `bdd-test-style-verifier.ts` (wave 2, file-size cap campaign) so the
|
|
6
|
+
* verifier stays under the 300 raw-line cap. Mechanical move only —
|
|
7
|
+
* the verifier re-exports every public type from its original path.
|
|
8
|
+
*/
|
|
9
|
+
/** Structured failure reasons the verifier can return. */
|
|
10
|
+
export type BddStyleFailureReason = 'missing-given-when-then' | 'description-no-should-when';
|
|
11
|
+
/** Successful verdict — includes the count of inspected `it`/`test` calls. */
|
|
12
|
+
export interface BddStyleOk {
|
|
13
|
+
readonly ok: true;
|
|
14
|
+
readonly scanned: number;
|
|
15
|
+
}
|
|
16
|
+
/** Structured failure verdict — the file/line makes the rejection actionable. */
|
|
17
|
+
export interface BddStyleFail {
|
|
18
|
+
readonly ok: false;
|
|
19
|
+
readonly reason: BddStyleFailureReason;
|
|
20
|
+
readonly file: string;
|
|
21
|
+
readonly line: number;
|
|
22
|
+
/** For `description-no-should-when`: the original description. */
|
|
23
|
+
readonly description?: string;
|
|
24
|
+
/** For `missing-given-when-then`: a stable string the caller can compare. */
|
|
25
|
+
readonly expected?: string;
|
|
26
|
+
}
|
|
27
|
+
export type BddStyleVerdict = BddStyleOk | BddStyleFail;
|
|
28
|
+
/** Public input surface — keep small so the contract is hard to misuse. */
|
|
29
|
+
export interface VerifyBddStyleInput {
|
|
30
|
+
readonly projectRoot: string;
|
|
31
|
+
readonly testFiles: readonly string[];
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Match the three leading comments against the BDD triple. Each
|
|
35
|
+
* entry must be a `// <keyword>:` line (with optional trailing
|
|
36
|
+
* whitespace); the keywords must appear in `given`, `when`, `then`
|
|
37
|
+
* order, case-insensitive.
|
|
38
|
+
*/
|
|
39
|
+
export declare function matchesBddTriple(triple: readonly string[]): boolean;
|
|
40
|
+
/** True when `text` contains `when` or `should` as a whole word. */
|
|
41
|
+
export declare function hasWhenOrShould(text: string): boolean;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `src/services/qa/bdd-test-style-contract.ts`
|
|
3
|
+
*
|
|
4
|
+
* Verdict types and pure string matchers extracted verbatim from
|
|
5
|
+
* `bdd-test-style-verifier.ts` (wave 2, file-size cap campaign) so the
|
|
6
|
+
* verifier stays under the 300 raw-line cap. Mechanical move only —
|
|
7
|
+
* the verifier re-exports every public type from its original path.
|
|
8
|
+
*/
|
|
9
|
+
/** Number of comment lines that make up the BDD triple (`given`/`when`/`then`). */
|
|
10
|
+
const BDD_TRIPLE_SIZE = 3;
|
|
11
|
+
/**
|
|
12
|
+
* Match the three leading comments against the BDD triple. Each
|
|
13
|
+
* entry must be a `// <keyword>:` line (with optional trailing
|
|
14
|
+
* whitespace); the keywords must appear in `given`, `when`, `then`
|
|
15
|
+
* order, case-insensitive.
|
|
16
|
+
*/
|
|
17
|
+
export function matchesBddTriple(triple) {
|
|
18
|
+
if (triple.length !== BDD_TRIPLE_SIZE)
|
|
19
|
+
return false;
|
|
20
|
+
// Each entry must be a `// <keyword>:` line, optionally followed
|
|
21
|
+
// by descriptive text. The Slice A migrator's `buildCommentBlock`
|
|
22
|
+
// produces `// given: the test setup` / `// when: the function
|
|
23
|
+
// under test is invoked` / `// then: the result matches the
|
|
24
|
+
// expectation` — the `when` line uses two spaces after the colon
|
|
25
|
+
// for visual alignment with `given:` and `then:`, so the regex
|
|
26
|
+
// is intentionally permissive about trailing text.
|
|
27
|
+
const patterns = [
|
|
28
|
+
/^\s*\/\/\s*given\s*:/i,
|
|
29
|
+
/^\s*\/\/\s*when\s*:/i,
|
|
30
|
+
/^\s*\/\/\s*then\s*:/i
|
|
31
|
+
];
|
|
32
|
+
return patterns.every((pat, i) => pat.test(triple[i] ?? ''));
|
|
33
|
+
}
|
|
34
|
+
/** True when `text` contains `when` or `should` as a whole word. */
|
|
35
|
+
export function hasWhenOrShould(text) {
|
|
36
|
+
return /(\bwhen\b|\bshould\b)/i.test(text);
|
|
37
|
+
}
|
|
@@ -39,30 +39,7 @@
|
|
|
39
39
|
* malformed test files. A parse error is a structural problem; the
|
|
40
40
|
* caller must surface it.
|
|
41
41
|
*/
|
|
42
|
-
|
|
43
|
-
export type BddStyleFailureReason = 'missing-given-when-then' | 'description-no-should-when';
|
|
44
|
-
/** Successful verdict — includes the count of inspected `it`/`test` calls. */
|
|
45
|
-
export interface BddStyleOk {
|
|
46
|
-
readonly ok: true;
|
|
47
|
-
readonly scanned: number;
|
|
48
|
-
}
|
|
49
|
-
/** Structured failure verdict — the file/line makes the rejection actionable. */
|
|
50
|
-
export interface BddStyleFail {
|
|
51
|
-
readonly ok: false;
|
|
52
|
-
readonly reason: BddStyleFailureReason;
|
|
53
|
-
readonly file: string;
|
|
54
|
-
readonly line: number;
|
|
55
|
-
/** For `description-no-should-when`: the original description. */
|
|
56
|
-
readonly description?: string;
|
|
57
|
-
/** For `missing-given-when-then`: a stable string the caller can compare. */
|
|
58
|
-
readonly expected?: string;
|
|
59
|
-
}
|
|
60
|
-
export type BddStyleVerdict = BddStyleOk | BddStyleFail;
|
|
61
|
-
/** Public input surface — keep small so the contract is hard to misuse. */
|
|
62
|
-
export interface VerifyBddStyleInput {
|
|
63
|
-
readonly projectRoot: string;
|
|
64
|
-
readonly testFiles: readonly string[];
|
|
65
|
-
}
|
|
42
|
+
import { type BddStyleVerdict, type VerifyBddStyleInput } from './bdd-test-style-contract.js';
|
|
66
43
|
/**
|
|
67
44
|
* Verify that every `it(...)` / `test(...)` call in the given test
|
|
68
45
|
* files follows the BDD given-when-then contract.
|
|
@@ -86,3 +63,4 @@ export interface VerifyBddStyleInput {
|
|
|
86
63
|
* caller maps to `qa-handoff` rejection.
|
|
87
64
|
*/
|
|
88
65
|
export declare function verifyBddStyle(input: VerifyBddStyleInput): BddStyleVerdict;
|
|
66
|
+
export type { BddStyleFailureReason, BddStyleOk, BddStyleFail, BddStyleVerdict, VerifyBddStyleInput } from './bdd-test-style-contract.js';
|
|
@@ -42,6 +42,7 @@
|
|
|
42
42
|
import { readFileSync } from 'node:fs';
|
|
43
43
|
import { resolve } from 'node:path';
|
|
44
44
|
import ts from 'typescript';
|
|
45
|
+
import { matchesBddTriple, hasWhenOrShould } from './bdd-test-style-contract.js';
|
|
45
46
|
/** Test runners whose first string-arg is the test description. */
|
|
46
47
|
const TEST_NAMES = new Set(['it', 'test']);
|
|
47
48
|
/**
|
|
@@ -129,7 +130,7 @@ function checkDescription(call, sourceFile, relPath) {
|
|
|
129
130
|
file: relPath,
|
|
130
131
|
line: line + 1,
|
|
131
132
|
description: '<non-literal first argument>',
|
|
132
|
-
expected: 'first argument must be a string literal containing "when" or "should"'
|
|
133
|
+
expected: 'first argument must be a string literal containing "when" or "should"'
|
|
133
134
|
};
|
|
134
135
|
}
|
|
135
136
|
const description = firstArg.text;
|
|
@@ -142,7 +143,7 @@ function checkDescription(call, sourceFile, relPath) {
|
|
|
142
143
|
file: relPath,
|
|
143
144
|
line: line + 1,
|
|
144
145
|
description,
|
|
145
|
-
expected: 'description must contain the word "when" or "should" (BDD style)'
|
|
146
|
+
expected: 'description must contain the word "when" or "should" (BDD style)'
|
|
146
147
|
};
|
|
147
148
|
}
|
|
148
149
|
return null;
|
|
@@ -182,7 +183,7 @@ function checkBody(call, sourceFile, relPath) {
|
|
|
182
183
|
reason: 'missing-given-when-then',
|
|
183
184
|
file: relPath,
|
|
184
185
|
line: line + 1,
|
|
185
|
-
expected: 'block-body callback with // given: / // when: / // then: comments at the top'
|
|
186
|
+
expected: 'block-body callback with // given: / // when: / // then: comments at the top'
|
|
186
187
|
};
|
|
187
188
|
}
|
|
188
189
|
function getCallbackBlock(call) {
|
|
@@ -236,33 +237,6 @@ function makeMissingCommentFailure(block, sourceFile, relPath) {
|
|
|
236
237
|
reason: 'missing-given-when-then',
|
|
237
238
|
file: relPath,
|
|
238
239
|
line: line + 1,
|
|
239
|
-
expected: '// given: / // when: / // then: triple at the top of the block body'
|
|
240
|
+
expected: '// given: / // when: / // then: triple at the top of the block body'
|
|
240
241
|
};
|
|
241
242
|
}
|
|
242
|
-
/**
|
|
243
|
-
* Match the three leading comments against the BDD triple. Each
|
|
244
|
-
* entry must be a `// <keyword>:` line (with optional trailing
|
|
245
|
-
* whitespace); the keywords must appear in `given`, `when`, `then`
|
|
246
|
-
* order, case-insensitive.
|
|
247
|
-
*/
|
|
248
|
-
function matchesBddTriple(triple) {
|
|
249
|
-
if (triple.length !== 3)
|
|
250
|
-
return false;
|
|
251
|
-
// Each entry must be a `// <keyword>:` line, optionally followed
|
|
252
|
-
// by descriptive text. The Slice A migrator's `buildCommentBlock`
|
|
253
|
-
// produces `// given: the test setup` / `// when: the function
|
|
254
|
-
// under test is invoked` / `// then: the result matches the
|
|
255
|
-
// expectation` — the `when` line uses two spaces after the colon
|
|
256
|
-
// for visual alignment with `given:` and `then:`, so the regex
|
|
257
|
-
// is intentionally permissive about trailing text.
|
|
258
|
-
const patterns = [
|
|
259
|
-
/^\s*\/\/\s*given\s*:/i,
|
|
260
|
-
/^\s*\/\/\s*when\s*:/i,
|
|
261
|
-
/^\s*\/\/\s*then\s*:/i,
|
|
262
|
-
];
|
|
263
|
-
return patterns.every((pat, i) => pat.test(triple[i] ?? ''));
|
|
264
|
-
}
|
|
265
|
-
/** True when `text` contains `when` or `should` as a whole word. */
|
|
266
|
-
function hasWhenOrShould(text) {
|
|
267
|
-
return /(\bwhen\b|\bshould\b)/i.test(text);
|
|
268
|
-
}
|
|
@@ -47,7 +47,8 @@ export class BrowserEventLogger {
|
|
|
47
47
|
try {
|
|
48
48
|
appendFileSync(this.filePath, line + '\n');
|
|
49
49
|
}
|
|
50
|
-
catch {
|
|
50
|
+
catch {
|
|
51
|
+
// TODO(g2): legacy silent catch — grace: 1 minor release (v2.14.0)
|
|
51
52
|
/* best-effort; never block the CLI on a log write */
|
|
52
53
|
}
|
|
53
54
|
}
|