peaks-loop 4.0.53 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +85 -0
- package/README-en.md +16 -1
- package/README.md +15 -1
- package/config/eslint/.peaks-rules.cjs +158 -13
- package/config/eslint/tsconfig.lint.json +47 -0
- package/dist/cli/cli-envelope.d.ts +114 -0
- package/dist/cli/cli-envelope.js +85 -0
- package/dist/cli/cli-helpers.d.ts +1 -1
- package/dist/cli/cli-helpers.js +8 -4
- package/dist/cli/commands/_cli-error-envelope.js +1 -1
- package/dist/cli/commands/_register.js +85 -38
- package/dist/cli/commands/_super.js +40 -7
- package/dist/cli/commands/adapter-commands-s2a.js +8 -7
- package/dist/cli/commands/adapter-commands.d.ts +2 -2
- package/dist/cli/commands/adapter-commands.js +7 -8
- package/dist/cli/commands/api-diff-commands.js +5 -4
- package/dist/cli/commands/asset-commands.d.ts +2 -2
- package/dist/cli/commands/asset-commands.js +135 -132
- package/dist/cli/commands/audit-commands.d.ts +1 -1
- package/dist/cli/commands/audit-commands.js +75 -32
- package/dist/cli/commands/autonomous-swarm-commands.d.ts +1 -1
- package/dist/cli/commands/autonomous-swarm-commands.js +14 -8
- package/dist/cli/commands/baseline-commands.js +34 -9
- package/dist/cli/commands/bee-commands.d.ts +1 -1
- package/dist/cli/commands/bee-commands.js +18 -21
- package/dist/cli/commands/best-practice-scan-command.js +6 -34
- package/dist/cli/commands/best-practice-scan-helpers.d.ts +12 -0
- package/dist/cli/commands/best-practice-scan-helpers.js +37 -0
- package/dist/cli/commands/capability-commands.d.ts +1 -1
- package/dist/cli/commands/capability-commands.js +14 -4
- package/dist/cli/commands/capability-worker-config-sc-commands.d.ts +1 -1
- package/dist/cli/commands/changeset-commands.js +21 -18
- package/dist/cli/commands/code-gate-command.js +9 -2
- package/dist/cli/commands/code-job-shape-commands-read-job-shape.d.ts +15 -0
- package/dist/cli/commands/code-job-shape-commands-read-job-shape.js +70 -0
- package/dist/cli/commands/code-job-shape-commands.js +21 -45
- package/dist/cli/commands/code-mode-gate-commands.d.ts +15 -1
- package/dist/cli/commands/code-mode-gate-commands.js +19 -199
- package/dist/cli/commands/code-mode-gate-plan-command.d.ts +14 -0
- package/dist/cli/commands/code-mode-gate-plan-command.js +23 -0
- package/dist/cli/commands/code-mode-gate-should-pause-command.d.ts +24 -0
- package/dist/cli/commands/code-mode-gate-should-pause-command.js +137 -0
- package/dist/cli/commands/code-mode-gate-should-pause-envelope.d.ts +59 -0
- package/dist/cli/commands/code-mode-gate-should-pause-envelope.js +144 -0
- package/dist/cli/commands/code-orchestrator-can-do.js +4 -4
- package/dist/cli/commands/code-review-commands.js +18 -3
- package/dist/cli/commands/code-run-command.js +44 -7
- package/dist/cli/commands/code-runtime-commands.d.ts +17 -0
- package/dist/cli/commands/code-runtime-commands.js +105 -73
- package/dist/cli/commands/codegraph-commands.js +175 -11
- package/dist/cli/commands/codegraph-status-command.js +6 -2
- package/dist/cli/commands/compact-command.js +52 -26
- package/dist/cli/commands/complexity-commands.js +6 -7
- package/dist/cli/commands/config-commands.d.ts +1 -1
- package/dist/cli/commands/config-commands.js +33 -9
- package/dist/cli/commands/container-commands.js +39 -15
- package/dist/cli/commands/context-commands.d.ts +1 -1
- package/dist/cli/commands/context-commands.js +40 -13
- package/dist/cli/commands/core/artifacts-command.js +11 -3
- package/dist/cli/commands/core/binding-commands.js +9 -6
- package/dist/cli/commands/core/doctor-command.js +7 -4
- package/dist/cli/commands/core/memory-command.js +81 -22
- package/dist/cli/commands/core/proxy-command.js +3 -1
- package/dist/cli/commands/core/session-command.js +16 -8
- package/dist/cli/commands/core/skill-command.js +31 -16
- package/dist/cli/commands/core/standards-command.js +55 -13
- package/dist/cli/commands/cron-commands-actions.d.ts +43 -0
- package/dist/cli/commands/cron-commands-actions.js +128 -0
- package/dist/cli/commands/cron-commands-schedule.d.ts +86 -0
- package/dist/cli/commands/cron-commands-schedule.js +151 -0
- package/dist/cli/commands/cron-commands.d.ts +35 -32
- package/dist/cli/commands/cron-commands.js +167 -211
- package/dist/cli/commands/cron-scheduler-commands.js +40 -20
- package/dist/cli/commands/cron-scheduler-persist.d.ts +110 -0
- package/dist/cli/commands/cron-scheduler-persist.js +171 -0
- package/dist/cli/commands/dashboard-long-run.js +45 -14
- package/dist/cli/commands/dashboard-summary.js +15 -5
- package/dist/cli/commands/dispatch-commands.js +69 -34
- package/dist/cli/commands/dispatch-from-dag.js +9 -10
- package/dist/cli/commands/doc-commands.js +8 -9
- package/dist/cli/commands/doctor/invoke-from-code.js +1 -1
- package/dist/cli/commands/e2e-verify-env.d.ts +19 -0
- package/dist/cli/commands/e2e-verify-env.js +19 -0
- package/dist/cli/commands/e2e-verify.d.ts +3 -14
- package/dist/cli/commands/e2e-verify.js +49 -29
- package/dist/cli/commands/ecc-commands.d.ts +1 -1
- package/dist/cli/commands/ecc-commands.js +8 -17
- package/dist/cli/commands/evidence-commands.js +10 -6
- package/dist/cli/commands/evolution-commands.d.ts +2 -2
- package/dist/cli/commands/evolution-commands.js +109 -115
- package/dist/cli/commands/feedback-commands-helpers.d.ts +22 -0
- package/dist/cli/commands/feedback-commands-helpers.js +33 -0
- package/dist/cli/commands/feedback-commands.js +15 -38
- package/dist/cli/commands/final-review-commands.d.ts +1 -1
- package/dist/cli/commands/final-review-commands.js +24 -22
- package/dist/cli/commands/fixture-commands.d.ts +1 -1
- package/dist/cli/commands/fixture-commands.js +17 -6
- package/dist/cli/commands/fork-commands-sync-verify.d.ts +12 -0
- package/dist/cli/commands/fork-commands-sync-verify.js +72 -0
- package/dist/cli/commands/fork-commands.js +19 -51
- package/dist/cli/commands/fresh-context-commands.js +3 -1
- package/dist/cli/commands/gate-commands-enforce.d.ts +82 -0
- package/dist/cli/commands/gate-commands-enforce.js +210 -0
- package/dist/cli/commands/gate-commands.d.ts +1 -1
- package/dist/cli/commands/gate-commands.js +85 -205
- package/dist/cli/commands/governance-classify-contract-commands.d.ts +1 -1
- package/dist/cli/commands/governance-classify-contract-commands.js +28 -17
- package/dist/cli/commands/heartbeat-commands-action.d.ts +7 -0
- package/dist/cli/commands/heartbeat-commands-action.js +192 -0
- package/dist/cli/commands/heartbeat-commands-validation.d.ts +57 -0
- package/dist/cli/commands/heartbeat-commands-validation.js +120 -0
- package/dist/cli/commands/heartbeat-commands.d.ts +27 -6
- package/dist/cli/commands/heartbeat-commands.js +19 -198
- package/dist/cli/commands/hook-handle.d.ts +1 -1
- package/dist/cli/commands/hook-handle.js +46 -13
- package/dist/cli/commands/hooks-commands.d.ts +1 -1
- package/dist/cli/commands/hooks-commands.js +18 -6
- package/dist/cli/commands/ide-commands.d.ts +1 -1
- package/dist/cli/commands/ide-commands.js +5 -3
- package/dist/cli/commands/impact-commands.js +8 -2
- package/dist/cli/commands/job-add-slice-command.d.ts +43 -0
- package/dist/cli/commands/job-add-slice-command.js +151 -0
- package/dist/cli/commands/job-commands.d.ts +64 -0
- package/dist/cli/commands/job-commands.js +134 -63
- package/dist/cli/commands/lease-metrics-commands-support.d.ts +73 -0
- package/dist/cli/commands/lease-metrics-commands-support.js +67 -0
- package/dist/cli/commands/lease-metrics-commands.d.ts +3 -44
- package/dist/cli/commands/lease-metrics-commands.js +21 -61
- package/dist/cli/commands/lease-stats-commands.d.ts +1 -1
- package/dist/cli/commands/lease-stats-commands.js +9 -6
- package/dist/cli/commands/lint-commands.d.ts +9 -3
- package/dist/cli/commands/lint-commands.js +15 -8
- package/dist/cli/commands/log-commands.d.ts +1 -1
- package/dist/cli/commands/log-commands.js +8 -6
- package/dist/cli/commands/loop-commands.d.ts +1 -1
- package/dist/cli/commands/loop-commands.js +50 -50
- package/dist/cli/commands/loop-eval-commands.d.ts +1 -1
- package/dist/cli/commands/loop-eval-commands.js +101 -30
- package/dist/cli/commands/memory-commands.js +21 -13
- package/dist/cli/commands/migrate-1-4-1-command.js +1 -1
- package/dist/cli/commands/migrate-v2-10-to-v2-11-command.js +2 -2
- package/dist/cli/commands/mut-commands-helpers.d.ts +30 -0
- package/dist/cli/commands/mut-commands-helpers.js +43 -0
- package/dist/cli/commands/mut-commands.js +16 -58
- package/dist/cli/commands/observability-commands-queries.d.ts +37 -0
- package/dist/cli/commands/observability-commands-queries.js +113 -0
- package/dist/cli/commands/observability-commands.d.ts +1 -1
- package/dist/cli/commands/observability-commands.js +7 -92
- package/dist/cli/commands/openspec-commands.d.ts +1 -1
- package/dist/cli/commands/openspec-commands.js +20 -8
- package/dist/cli/commands/outer-cache-commands.js +18 -7
- package/dist/cli/commands/perf-audit-commands.d.ts +1 -1
- package/dist/cli/commands/perf-audit-commands.js +12 -7
- package/dist/cli/commands/perf-commands.d.ts +1 -1
- package/dist/cli/commands/perf-commands.js +5 -5
- package/dist/cli/commands/playwright-commands.d.ts +1 -1
- package/dist/cli/commands/playwright-commands.js +20 -8
- package/dist/cli/commands/polyrepo-commands.js +21 -19
- package/dist/cli/commands/prd-blocks-commands.js +1 -3
- package/dist/cli/commands/prd-commands.d.ts +1 -1
- package/dist/cli/commands/prd-commands.js +21 -2
- package/dist/cli/commands/preferences-commands.js +13 -12
- package/dist/cli/commands/primer-command.js +5 -5
- package/dist/cli/commands/project-commands.d.ts +1 -1
- package/dist/cli/commands/project-commands.js +33 -9
- package/dist/cli/commands/qa-business-review-commands.js +16 -12
- package/dist/cli/commands/qa-commands.d.ts +1 -1
- package/dist/cli/commands/qa-commands.js +3 -5
- package/dist/cli/commands/release-commands.d.ts +3 -1
- package/dist/cli/commands/release-commands.js +33 -22
- package/dist/cli/commands/request-commands.js +47 -30
- package/dist/cli/commands/request-format-helpers.js +1 -1
- package/dist/cli/commands/retrospective-commands.d.ts +18 -11
- package/dist/cli/commands/retrospective-commands.js +24 -173
- package/dist/cli/commands/retrospective-index-command.d.ts +26 -0
- package/dist/cli/commands/retrospective-index-command.js +99 -0
- package/dist/cli/commands/retrospective-project-root.d.ts +9 -0
- package/dist/cli/commands/retrospective-project-root.js +15 -0
- package/dist/cli/commands/retrospective-search-command.d.ts +27 -0
- package/dist/cli/commands/retrospective-search-command.js +97 -0
- package/dist/cli/commands/retrospective-show-command.d.ts +23 -0
- package/dist/cli/commands/retrospective-show-command.js +80 -0
- package/dist/cli/commands/reviewer-commands.d.ts +1 -1
- package/dist/cli/commands/role-commands.js +14 -9
- package/dist/cli/commands/runtime-commands.js +14 -7
- package/dist/cli/commands/sc-commands.d.ts +1 -1
- package/dist/cli/commands/sc-commands.js +39 -6
- package/dist/cli/commands/scan-commands.js +36 -13
- package/dist/cli/commands/security-audit-commands.d.ts +1 -1
- package/dist/cli/commands/security-audit-commands.js +12 -7
- package/dist/cli/commands/sediment-commands.d.ts +2 -2
- package/dist/cli/commands/sediment-commands.js +146 -139
- package/dist/cli/commands/session-24h-mode.js +15 -2
- package/dist/cli/commands/session-checkpoint-command.js +1 -1
- package/dist/cli/commands/session-migrate-skill-name.js +1 -1
- package/dist/cli/commands/shadcn-commands.d.ts +1 -1
- package/dist/cli/commands/shadcn-commands.js +3 -1
- package/dist/cli/commands/share-commands.js +38 -39
- package/dist/cli/commands/skill-conformance-commands.d.ts +1 -1
- package/dist/cli/commands/skill-conformance-commands.js +1 -1
- package/dist/cli/commands/skill-loop-engineering-readiness-commands.js +16 -17
- package/dist/cli/commands/skill-visibility.js +2 -2
- package/dist/cli/commands/slice-commands.d.ts +1 -1
- package/dist/cli/commands/slice-commands.js +36 -12
- package/dist/cli/commands/slice-integrate-commands.js +6 -7
- package/dist/cli/commands/slice-review-commands-helpers.d.ts +26 -0
- package/dist/cli/commands/slice-review-commands-helpers.js +26 -0
- package/dist/cli/commands/slice-review-commands.js +16 -24
- package/dist/cli/commands/smoke-commands-add-path.d.ts +14 -0
- package/dist/cli/commands/smoke-commands-add-path.js +39 -0
- package/dist/cli/commands/smoke-commands-define.d.ts +18 -0
- package/dist/cli/commands/smoke-commands-define.js +97 -0
- package/dist/cli/commands/smoke-commands-run.d.ts +18 -0
- package/dist/cli/commands/smoke-commands-run.js +119 -0
- package/dist/cli/commands/smoke-commands.d.ts +10 -1
- package/dist/cli/commands/smoke-commands.js +17 -179
- package/dist/cli/commands/sop-commands.d.ts +1 -1
- package/dist/cli/commands/sop-commands.js +38 -10
- package/dist/cli/commands/statusline-commands.d.ts +1 -1
- package/dist/cli/commands/statusline-commands.js +21 -10
- package/dist/cli/commands/sub-agent/detached.js +3 -3
- package/dist/cli/commands/sub-agent-dispatch-guard.d.ts +1 -1
- package/dist/cli/commands/sub-agent-shared.d.ts +23 -0
- package/dist/cli/commands/sub-agent-shared.js +40 -1
- package/dist/cli/commands/sub-agent-shutdown-commands.js +17 -9
- package/dist/cli/commands/swarm-commands.d.ts +1 -1
- package/dist/cli/commands/swarm-commands.js +13 -6
- package/dist/cli/commands/tech-commands-helpers.d.ts +37 -0
- package/dist/cli/commands/tech-commands-helpers.js +24 -0
- package/dist/cli/commands/tech-commands.d.ts +2 -29
- package/dist/cli/commands/tech-commands.js +15 -28
- package/dist/cli/commands/test-commands.js +27 -7
- package/dist/cli/commands/upgrade-commands.d.ts +1 -1
- package/dist/cli/commands/user-touchpoint-commands.js +1 -3
- package/dist/cli/commands/verdict-aggregate-command.d.ts +1 -1
- package/dist/cli/commands/verdict-aggregate-command.js +20 -7
- package/dist/cli/commands/vm-commands.js +48 -19
- package/dist/cli/commands/wave-plan-commands.js +5 -2
- package/dist/cli/commands/web-commands.js +14 -4
- package/dist/cli/commands/web-lifecycle-commands.js +5 -3
- package/dist/cli/commands/workflow-commands.d.ts +1 -1
- package/dist/cli/commands/workflow-commands.js +64 -29
- package/dist/cli/commands/workflow-lifecycle-commands.js +19 -17
- package/dist/cli/commands/workflow-plan-commands-actions.d.ts +20 -0
- package/dist/cli/commands/workflow-plan-commands-actions.js +115 -0
- package/dist/cli/commands/workflow-plan-commands-session.d.ts +17 -0
- package/dist/cli/commands/workflow-plan-commands-session.js +59 -0
- package/dist/cli/commands/workflow-plan-commands.d.ts +10 -21
- package/dist/cli/commands/workflow-plan-commands.js +15 -141
- package/dist/cli/commands/workspace/clean-command.js +4 -1
- package/dist/cli/commands/workspace/helpers.js +2 -1
- package/dist/cli/commands/workspace/init-command.js +80 -20
- package/dist/cli/commands/workspace/reconcile-command.js +3 -1
- package/dist/cli/commands/workspace-commands.d.ts +1 -1
- package/dist/cli/commands/workspace-commands.js +1 -1
- package/dist/cli/commands/worktree-auth-commands.d.ts +1 -1
- package/dist/cli/commands/worktree-auth-commands.js +16 -169
- package/dist/cli/commands/worktree-auth-grant-command.d.ts +14 -0
- package/dist/cli/commands/worktree-auth-grant-command.js +118 -0
- package/dist/cli/commands/worktree-auth-manage-commands.d.ts +17 -0
- package/dist/cli/commands/worktree-auth-manage-commands.js +128 -0
- package/dist/cli/commands/worktree-lease-commands.d.ts +1 -1
- package/dist/cli/commands/worktree-lease-commands.js +65 -37
- package/dist/cli/index.js +6 -2
- package/dist/cli/program.js +6 -3
- package/dist/hooks/pre-tool-use-sub-agent.js +1 -6
- package/dist/reporters/bdd-reporter.js +9 -3
- package/dist/services/24h-mode/auto-engage.d.ts +19 -0
- package/dist/services/24h-mode/auto-engage.js +35 -0
- package/dist/services/24h-mode/decider.js +5 -1
- package/dist/services/24h-mode/store.js +4 -2
- package/dist/services/adapter/adapter-registry.js +20 -8
- package/dist/services/adapter/adapter.d.ts +2 -2
- package/dist/services/adapter/auto-adapter.d.ts +2 -2
- package/dist/services/adapter/auto-adapter.js +1 -1
- package/dist/services/adapter/claude-adapter.d.ts +1 -1
- package/dist/services/adapter/claude-adapter.js +8 -8
- package/dist/services/adapter/codex-adapter.d.ts +2 -2
- package/dist/services/adapter/codex-adapter.js +20 -8
- package/dist/services/adapter/copilot-adapter.d.ts +2 -2
- package/dist/services/adapter/copilot-adapter.js +20 -8
- package/dist/services/artifacts/artifact-prerequisites.js +44 -8
- package/dist/services/artifacts/artifact-service.js +3 -1
- package/dist/services/artifacts/artifact-template-bodies.d.ts +12 -0
- package/dist/services/artifacts/artifact-template-bodies.js +165 -0
- package/dist/services/artifacts/artifact-templates.js +26 -168
- package/dist/services/artifacts/request-artifact-service.js +14 -7
- package/dist/services/artifacts/request-artifact-state-helpers.d.ts +3 -2
- package/dist/services/artifacts/request-artifact-state-helpers.js +3 -5
- package/dist/services/artifacts/workspace-artifact-helpers.d.ts +28 -0
- package/dist/services/artifacts/workspace-artifact-helpers.js +54 -0
- package/dist/services/artifacts/workspace-service.d.ts +3 -22
- package/dist/services/artifacts/workspace-service.js +10 -60
- package/dist/services/audit/artifact-writer.js +21 -21
- package/dist/services/audit/audit-goal-service.js +2 -2
- package/dist/services/audit/backing-detector.js +7 -4
- package/dist/services/audit/classifier.js +3 -3
- package/dist/services/audit/decision-writer.js +13 -9
- package/dist/services/audit/enforcer-liveness.js +1 -1
- package/dist/services/audit/enforcers/active-skill-resolver.js +15 -7
- package/dist/services/audit/enforcers/design-draft-confirm.js +4 -4
- package/dist/services/audit/enforcers/lint-audit-regression.js +10 -5
- package/dist/services/audit/enforcers/lint-bee-runtime-contract.js +16 -8
- package/dist/services/audit/enforcers/lint-catalog-governance.js +8 -4
- package/dist/services/audit/enforcers/lint-output-style.js +4 -2
- package/dist/services/audit/enforcers/lint-peaks-code-runtime.js +8 -3
- package/dist/services/audit/enforcers/lint-peaks-skill-runtime.js +8 -3
- package/dist/services/audit/enforcers/lint-peaks-ui-sc-txt-runtime.js +20 -20
- package/dist/services/audit/enforcers/lint-prd-artifact-handoff.js +5 -5
- package/dist/services/audit/enforcers/lint-prd-source-snapshot.d.ts +1 -1
- package/dist/services/audit/enforcers/lint-prd-source-snapshot.js +5 -5
- package/dist/services/audit/enforcers/lint-qa-gateguard-and-runtime.js +10 -10
- package/dist/services/audit/enforcers/lint-rd-handoff-coverage.js +10 -8
- package/dist/services/audit/enforcers/lint-reference-shape.js +50 -18
- package/dist/services/audit/enforcers/lint-skill-presence-mandatory.js +5 -5
- package/dist/services/audit/enforcers/lint-style.js +44 -11
- package/dist/services/audit/enforcers/lint-workflow-shape.js +4 -2
- package/dist/services/audit/enforcers/login-gate.js +2 -6
- package/dist/services/audit/enforcers/mock-placement.js +2 -2
- package/dist/services/audit/enforcers/no-root-pollution.js +38 -9
- package/dist/services/audit/enforcers/pre-rd-scan.js +1 -1
- package/dist/services/audit/enforcers/prototype-fidelity.js +1 -1
- package/dist/services/audit/enforcers/resume-detection.js +5 -4
- package/dist/services/audit/prose-ratio-calculator.js +1 -1
- package/dist/services/audit/red-line-catalog-p2-a-bee-runtime.d.ts +39 -0
- package/dist/services/audit/red-line-catalog-p2-a-bee-runtime.js +205 -0
- package/dist/services/audit/red-line-catalog-p2-a-lint-style.d.ts +52 -0
- package/dist/services/audit/red-line-catalog-p2-a-lint-style.js +205 -0
- package/dist/services/audit/red-line-catalog-p2-a.js +3 -374
- package/dist/services/audit/red-line-catalog-p2-b.js +26 -26
- package/dist/services/audit/red-line-catalog.js +26 -38
- package/dist/services/audit/red-lines-service.js +64 -49
- package/dist/services/audit/scanners/openspec-scanner.js +2 -2
- package/dist/services/audit/scanners/rules-tree-scanner.js +2 -2
- package/dist/services/audit/scanners/skills-tree-scanner.js +2 -2
- package/dist/services/audit/static-service.js +3 -3
- package/dist/services/audit-independent/index.d.ts +2 -2
- package/dist/services/audit-independent/index.js +2 -2
- package/dist/services/audit-independent/perf-audit-service.js +19 -8
- package/dist/services/audit-independent/security-audit-service.js +31 -16
- package/dist/services/autonomous-swarm/autonomous-swarm-service.js +75 -46
- package/dist/services/best-practice/output-formatter.js +7 -1
- package/dist/services/capability-audit-service/cross-check.js +11 -5
- package/dist/services/capability-audit-service/runner.js +15 -7
- package/dist/services/capability-baseline/store.js +16 -4
- package/dist/services/capability-baseline/types.js +15 -3
- package/dist/services/capability-baseline/validator.js +43 -7
- package/dist/services/capability-guard-runner/contracts/J02.js +36 -6
- package/dist/services/capability-guard-runner/contracts/J03.js +20 -11
- package/dist/services/capability-guard-runner/contracts/J04.js +24 -15
- package/dist/services/capability-guard-runner/contracts/J05.js +26 -10
- package/dist/services/capability-guard-runner/contracts/J07.js +8 -2
- package/dist/services/capability-guard-runner/contracts/J08.js +22 -5
- package/dist/services/capability-guard-runner/contracts/J10.js +6 -2
- package/dist/services/capability-guard-runner/contracts/J11.d.ts +5 -0
- package/dist/services/capability-guard-runner/contracts/J11.js +14 -2
- package/dist/services/capability-guard-runner/contracts/J12.js +12 -3
- package/dist/services/capability-guard-runner/diff.js +1 -5
- package/dist/services/changeset/changeset-check-service.js +1 -3
- package/dist/services/classify/classify-service.js +20 -8
- package/dist/services/classify/classify-types.js +22 -9
- package/dist/services/code/auto-compact-lifecycle.js +62 -39
- package/dist/services/code/auto-compact-modes.js +2 -2
- package/dist/services/code/auto-compact-orchestrator.js +14 -9
- package/dist/services/code/batch-heartbeat-poller.d.ts +10 -0
- package/dist/services/code/batch-heartbeat-poller.js +17 -1
- package/dist/services/code/compact-event-settle-types.d.ts +80 -0
- package/dist/services/code/compact-event-settle-types.js +20 -0
- package/dist/services/code/compact-event-settle.d.ts +3 -68
- package/dist/services/code/compact-event-settle.js +14 -10
- package/dist/services/code/dag-orchestrator.js +32 -26
- package/dist/services/code/job-shape-decision.js +3 -1
- package/dist/services/code/mode-gate-types.d.ts +57 -0
- package/dist/services/code/mode-gate-types.js +67 -0
- package/dist/services/code/mode-gate.d.ts +4 -58
- package/dist/services/code/mode-gate.js +24 -60
- package/dist/services/code/orchestrator-can-do-advisories.d.ts +30 -0
- package/dist/services/code/orchestrator-can-do-advisories.js +81 -0
- package/dist/services/code/orchestrator-can-do-probes.d.ts +30 -0
- package/dist/services/code/orchestrator-can-do-probes.js +77 -0
- package/dist/services/code/orchestrator-can-do.d.ts +11 -22
- package/dist/services/code/orchestrator-can-do.js +37 -137
- package/dist/services/code/post-compact-checkpoint.d.ts +28 -0
- package/dist/services/code/post-compact-checkpoint.js +57 -0
- package/dist/services/code/post-compact-detector.js +16 -48
- package/dist/services/code/step-08-gate.d.ts +4 -3
- package/dist/services/code/step-08-gate.js +21 -9
- package/dist/services/code-review/ecc-bridge.js +23 -23
- package/dist/services/codegraph/codegraph-autorefresh.js +56 -39
- package/dist/services/codegraph/codegraph-config-repair-writer.d.ts +44 -0
- package/dist/services/codegraph/codegraph-config-repair-writer.js +116 -14
- package/dist/services/codegraph/codegraph-exclude-integrity.js +4 -1
- package/dist/services/codegraph/codegraph-exclude-repair.d.ts +23 -1
- package/dist/services/codegraph/codegraph-exclude-repair.js +7 -2
- package/dist/services/codegraph/codegraph-index-integrity.js +1 -1
- package/dist/services/codegraph/codegraph-preflight-service.d.ts +3 -26
- package/dist/services/codegraph/codegraph-preflight-service.js +16 -37
- package/dist/services/codegraph/codegraph-preflight-structure.d.ts +32 -0
- package/dist/services/codegraph/codegraph-preflight-structure.js +33 -0
- package/dist/services/codegraph/codegraph-process-runner.js +12 -1
- package/dist/services/codegraph/codegraph-service.js +9 -1
- package/dist/services/compact/request-transition-hook.js +2 -1
- package/dist/services/compact/suggest-service.d.ts +3 -61
- package/dist/services/compact/suggest-service.js +9 -12
- package/dist/services/compact/suggest-types.d.ts +76 -0
- package/dist/services/compact/suggest-types.js +10 -0
- package/dist/services/compact-history/compact-history-service.js +2 -2
- package/dist/services/compact-statusline/compact-lifecycle-store.d.ts +2 -32
- package/dist/services/compact-statusline/compact-lifecycle-store.js +7 -12
- package/dist/services/compact-statusline/compact-lifecycle-types.d.ts +32 -0
- package/dist/services/compact-statusline/compact-lifecycle-types.js +8 -0
- package/dist/services/compact-statusline/compact-statusline-cell-table.d.ts +42 -0
- package/dist/services/compact-statusline/compact-statusline-cell-table.js +63 -0
- package/dist/services/compact-statusline/compact-statusline-service.d.ts +4 -21
- package/dist/services/compact-statusline/compact-statusline-service.js +9 -101
- package/dist/services/compact-statusline/compact-statusline-state.d.ts +4 -0
- package/dist/services/compact-statusline/compact-statusline-state.js +50 -0
- package/dist/services/config/config-migration.js +2 -2
- package/dist/services/config/config-restore.js +1 -1
- package/dist/services/config/config-rollback.js +1 -1
- package/dist/services/config/config-safety.js +28 -10
- package/dist/services/config/config-service.js +114 -31
- package/dist/services/config/model-routing.js +5 -2
- package/dist/services/config/proxy-service.js +6 -1
- package/dist/services/config/workspace-state-service.js +17 -5
- package/dist/services/context/auto-compact-dispatcher-input.d.ts +38 -0
- package/dist/services/context/auto-compact-dispatcher-input.js +9 -0
- package/dist/services/context/auto-compact-dispatcher.d.ts +2 -30
- package/dist/services/context/auto-compact-reader-input.d.ts +30 -0
- package/dist/services/context/auto-compact-reader-input.js +8 -0
- package/dist/services/context/auto-compact-reader.d.ts +2 -24
- package/dist/services/context/auto-compact-reader.js +4 -1
- package/dist/services/context/auto-compact-thresholds.d.ts +54 -0
- package/dist/services/context/auto-compact-thresholds.js +19 -0
- package/dist/services/context/auto-compact-types.d.ts +2 -46
- package/dist/services/context/auto-compact-types.js +1 -11
- package/dist/services/context/build-dispatch-system-prompt.js +2 -2
- package/dist/services/context/collector.js +8 -10
- package/dist/services/context/context-audit-hint.js +7 -5
- package/dist/services/context/context-audit-keys.d.ts +15 -0
- package/dist/services/context/context-audit-keys.js +77 -0
- package/dist/services/context/context-audit-limits.d.ts +20 -0
- package/dist/services/context/context-audit-limits.js +31 -0
- package/dist/services/context/context-audit-scan.d.ts +19 -0
- package/dist/services/context/context-audit-scan.js +246 -0
- package/dist/services/context/context-audit-types.d.ts +65 -0
- package/dist/services/context/context-audit-types.js +10 -0
- package/dist/services/context/context-audit.d.ts +13 -59
- package/dist/services/context/context-audit.js +38 -254
- package/dist/services/context/context-builder.js +4 -4
- package/dist/services/context/context-schema.d.ts +1 -1
- package/dist/services/context/context-schema.js +13 -13
- package/dist/services/context/doc-retriever.js +2 -2
- package/dist/services/context/harness-context-witness.js +43 -24
- package/dist/services/context/harness-window-config.js +27 -7
- package/dist/services/context/ide-detect.js +2 -1
- package/dist/services/context/index.d.ts +1 -1
- package/dist/services/context/memory-index-reader.js +3 -9
- package/dist/services/context/memory-preflight-config.js +3 -5
- package/dist/services/context/memory-preflight-service.d.ts +2 -20
- package/dist/services/context/memory-preflight-service.js +37 -68
- package/dist/services/context/memory-preflight-support.d.ts +48 -0
- package/dist/services/context/memory-preflight-support.js +56 -0
- package/dist/services/context/post-compact-reinjection.js +3 -3
- package/dist/services/context/renderer.js +7 -3
- package/dist/services/context/spillover-store.js +3 -1
- package/dist/services/context/summary-view.js +1 -1
- package/dist/services/context/threshold.js +2 -2
- package/dist/services/context/tokenizer.js +3 -3
- package/dist/services/crystallization/crystallization-brief-schema.d.ts +80 -0
- package/dist/services/crystallization/crystallization-brief-schema.js +159 -0
- package/dist/services/crystallization/crystallization-service.d.ts +7 -7
- package/dist/services/crystallization/crystallization-service.js +56 -55
- package/dist/services/crystallization/crystallization-store.d.ts +2 -2
- package/dist/services/crystallization/crystallization-store.js +37 -20
- package/dist/services/crystallization/crystallization-types.d.ts +4 -56
- package/dist/services/crystallization/crystallization-types.js +31 -184
- package/dist/services/crystallization/evidence-brief-builder.d.ts +3 -3
- package/dist/services/crystallization/evidence-brief-builder.js +32 -38
- package/dist/services/crystallization/index.d.ts +4 -4
- package/dist/services/crystallization/index.js +4 -4
- package/dist/services/dashboard/project-dashboard-service.js +7 -1
- package/dist/services/dispatch/await-batch-helpers.d.ts +55 -0
- package/dist/services/dispatch/await-batch-helpers.js +206 -0
- package/dist/services/dispatch/await-batch.d.ts +50 -7
- package/dist/services/dispatch/await-batch.js +97 -194
- package/dist/services/dispatch/batch-counter.js +2 -1
- package/dist/services/dispatch/conflict-replay.js +2 -2
- package/dist/services/dispatch/contract-store.js +5 -2
- package/dist/services/dispatch/dispatch-record-input-types.d.ts +81 -0
- package/dist/services/dispatch/dispatch-record-input-types.js +1 -0
- package/dist/services/dispatch/dispatch-record-types.d.ts +6 -73
- package/dist/services/dispatch/dispatch-record-upgrade-fields.d.ts +72 -0
- package/dist/services/dispatch/dispatch-record-upgrade-fields.js +242 -0
- package/dist/services/dispatch/dispatch-record-upgrade-guards.d.ts +15 -0
- package/dist/services/dispatch/dispatch-record-upgrade-guards.js +55 -0
- package/dist/services/dispatch/dispatch-record-upgrade.d.ts +2 -4
- package/dist/services/dispatch/dispatch-record-upgrade.js +21 -213
- package/dist/services/dispatch/dispatch-record-writer.js +54 -26
- package/dist/services/dispatch/dispatch-sub-agent.js +7 -2
- package/dist/services/dispatch/e2e-fixtures.js +1 -1
- package/dist/services/dispatch/isolation-lease.js +39 -17
- package/dist/services/dispatch/merge-back-runner.js +51 -11
- package/dist/services/dispatch/service-shutdown.js +4 -1
- package/dist/services/dispatch/slice-dag-types.d.ts +116 -0
- package/dist/services/dispatch/slice-dag-types.js +41 -0
- package/dist/services/dispatch/slice-dag.d.ts +3 -109
- package/dist/services/dispatch/slice-dag.js +13 -36
- package/dist/services/dispatch/sub-agent-batch-await.d.ts +47 -0
- package/dist/services/dispatch/sub-agent-batch-await.js +73 -0
- package/dist/services/dispatch/sub-agent-dispatcher-types.d.ts +122 -0
- package/dist/services/dispatch/sub-agent-dispatcher-types.js +12 -0
- package/dist/services/dispatch/sub-agent-dispatcher.d.ts +3 -145
- package/dist/services/dispatch/sub-agent-dispatcher.js +14 -70
- package/dist/services/dispatch/test-tool-detection.js +12 -1
- package/dist/services/doc/doc-generator.js +19 -4
- package/dist/services/doctor/doctor-service/checks/check-id-schema.js +16 -8
- package/dist/services/doctor/doctor-service/checks/codegraph-capability.d.ts +7 -2
- package/dist/services/doctor/doctor-service/checks/codegraph-capability.js +26 -8
- package/dist/services/doctor/doctor-service/checks/codegraph-exclude-integrity.js +16 -8
- package/dist/services/doctor/doctor-service/checks/codegraph-index-integrity.js +16 -8
- package/dist/services/doctor/doctor-service/checks/dist-source-version.js +18 -9
- package/dist/services/doctor/doctor-service/checks/ecc-hooks-schema-drift.js +20 -10
- package/dist/services/doctor/doctor-service/checks/gateguard-conflict.js +18 -9
- package/dist/services/doctor/doctor-service/checks/l3-memory-health.js +25 -11
- package/dist/services/doctor/doctor-service/checks/l3-orphan-sessions.js +12 -6
- package/dist/services/doctor/doctor-service/checks/multi-binary-drift.d.ts +7 -16
- package/dist/services/doctor/doctor-service/checks/multi-binary-drift.js +50 -70
- package/dist/services/doctor/doctor-service/checks/schema-validity.js +5 -1
- package/dist/services/doctor/doctor-service/checks/skill-presence.js +4 -2
- package/dist/services/doctor/doctor-service/checks/statusline-install.js +8 -4
- package/dist/services/doctor/doctor-service/checks/statusline-runtime.js +8 -4
- package/dist/services/doctor/doctor-service/checks/user-config.js +4 -2
- package/dist/services/doctor/doctor-service/checks/workspace-init.js +8 -4
- package/dist/services/doctor/doctor-service/checks/workspace-layout.js +19 -11
- package/dist/services/doctor/doctor-service/index.js +4 -2
- package/dist/services/doctor/doctor-service/multi-binary-drift-helpers.d.ts +40 -0
- package/dist/services/doctor/doctor-service/multi-binary-drift-helpers.js +49 -0
- package/dist/services/doctor/doctor-service/plugin-registry.js +1 -1
- package/dist/services/doctor/doctor-service/probe-types.d.ts +210 -0
- package/dist/services/doctor/doctor-service/probe-types.js +14 -0
- package/dist/services/doctor/doctor-service/types.d.ts +7 -197
- package/dist/services/doctor/index.d.ts +1 -1
- package/dist/services/doctor/index.js +1 -1
- package/dist/services/env/shell-probe.js +8 -2
- package/dist/services/evidence/evidence-body-builders.d.ts +23 -0
- package/dist/services/evidence/evidence-body-builders.js +197 -0
- package/dist/services/evidence/evidence-generator.js +16 -189
- package/dist/services/evolution/evolution-constraints.d.ts +43 -0
- package/dist/services/evolution/evolution-constraints.js +54 -0
- package/dist/services/evolution/evolution-evaluation-schema.d.ts +43 -0
- package/dist/services/evolution/evolution-evaluation-schema.js +43 -0
- package/dist/services/evolution/evolution-service.d.ts +6 -6
- package/dist/services/evolution/evolution-service.js +58 -58
- package/dist/services/evolution/evolution-store.d.ts +2 -2
- package/dist/services/evolution/evolution-store.js +37 -51
- package/dist/services/evolution/evolution-types.d.ts +2 -22
- package/dist/services/evolution/evolution-types.js +41 -101
- package/dist/services/evolution/independent-evaluator-runner.d.ts +3 -3
- package/dist/services/evolution/independent-evaluator-runner.js +20 -22
- package/dist/services/evolution/regression-skeptic-runner.d.ts +2 -2
- package/dist/services/evolution/regression-skeptic-runner.js +18 -18
- package/dist/services/feedback/feedback-promotion-service.js +48 -12
- package/dist/services/feedback/promotion-artifact-evidence.d.ts +2 -16
- package/dist/services/feedback/promotion-artifact-evidence.js +6 -83
- package/dist/services/feedback/promotion-artifact-json-evidence.d.ts +29 -0
- package/dist/services/feedback/promotion-artifact-json-evidence.js +39 -0
- package/dist/services/feedback/promotion-source-comments.d.ts +47 -0
- package/dist/services/feedback/promotion-source-comments.js +61 -0
- package/dist/services/final-review/final-review-contract.d.ts +26 -0
- package/dist/services/final-review/final-review-contract.js +14 -0
- package/dist/services/final-review/final-review-delivery.d.ts +63 -0
- package/dist/services/final-review/final-review-delivery.js +124 -0
- package/dist/services/final-review/final-review-evidence-budget.d.ts +125 -0
- package/dist/services/final-review/final-review-evidence-budget.js +218 -0
- package/dist/services/final-review/final-review-evidence-collect.d.ts +4 -0
- package/dist/services/final-review/final-review-evidence-collect.js +230 -0
- package/dist/services/final-review/final-review-evidence-sources.d.ts +138 -0
- package/dist/services/final-review/final-review-evidence-sources.js +139 -0
- package/dist/services/final-review/final-review-fifth-dim.d.ts +8 -0
- package/dist/services/final-review/final-review-fifth-dim.js +20 -0
- package/dist/services/final-review/final-review-gates.d.ts +119 -0
- package/dist/services/final-review/final-review-gates.js +214 -0
- package/dist/services/final-review/final-review-output-budget.d.ts +88 -0
- package/dist/services/final-review/final-review-output-budget.js +161 -0
- package/dist/services/final-review/final-review-prompt.d.ts +35 -0
- package/dist/services/final-review/final-review-prompt.js +112 -0
- package/dist/services/final-review/final-review-reviewer.d.ts +57 -0
- package/dist/services/final-review/final-review-reviewer.js +95 -0
- package/dist/services/final-review/final-review-runner.d.ts +3 -0
- package/dist/services/final-review/final-review-runner.js +158 -0
- package/dist/services/final-review/final-review-service.d.ts +119 -373
- package/dist/services/final-review/final-review-service.js +48 -1380
- package/dist/services/final-review/final-review-verdicts.d.ts +60 -0
- package/dist/services/final-review/final-review-verdicts.js +91 -0
- package/dist/services/final-review/index.d.ts +3 -3
- package/dist/services/final-review/index.js +2 -2
- package/dist/services/final-review/pre-post-diff.js +32 -29
- package/dist/services/fixture/fixture-capture-service.js +14 -6
- package/dist/services/fresh-context/trigger-scan.js +13 -2
- package/dist/services/fuzzy-matching/fuzzy-match-service.js +1 -1
- package/dist/services/fuzzy-matching/fzf-pick-service.js +6 -1
- package/dist/services/hooks/pre-tool-code-gate.js +2 -2
- package/dist/services/hooks/presence-marker-detector.js +12 -2
- package/dist/services/hooks/worktree-authorization-gate.js +21 -7
- package/dist/services/ide/adapters/claude-code-adapter.js +30 -17
- package/dist/services/ide/adapters/codex-adapter.js +3 -5
- package/dist/services/ide/adapters/cursor-adapter.js +3 -5
- package/dist/services/ide/adapters/hermes-adapter.js +2 -4
- package/dist/services/ide/adapters/openclaw-adapter.js +2 -4
- package/dist/services/ide/adapters/qoder-adapter.js +2 -4
- package/dist/services/ide/adapters/tongyi-lingma-adapter.js +1 -1
- package/dist/services/ide/adapters/trae-adapter.js +3 -5
- package/dist/services/ide/adapters/zcode-adapter.js +8 -7
- package/dist/services/ide/current-model-detector.js +2 -1
- package/dist/services/ide/ide-compact-types.d.ts +153 -0
- package/dist/services/ide/ide-compact-types.js +1 -0
- package/dist/services/ide/ide-registry.js +1 -1
- package/dist/services/ide/ide-types.d.ts +7 -145
- package/dist/services/ide/resource-profile.js +1 -1
- package/dist/services/ide/shared/atomic-json.js +2 -1
- package/dist/services/impact/impact-scan-service.js +12 -5
- package/dist/services/job/job-commit-verification.d.ts +73 -0
- package/dist/services/job/job-commit-verification.js +72 -0
- package/dist/services/job/job-orchestrator.d.ts +42 -0
- package/dist/services/job/job-orchestrator.js +110 -10
- package/dist/services/job/job-progress-store.d.ts +75 -5
- package/dist/services/job/job-progress-store.js +83 -6
- package/dist/services/job/job-rotation.d.ts +1 -1
- package/dist/services/job/job-rotation.js +5 -1
- package/dist/services/job/job-state-store.js +2 -2
- package/dist/services/job/job-types.js +49 -20
- package/dist/services/job/subagent-job-wrapper.d.ts +1 -1
- package/dist/services/job/subagent-job-wrapper.js +5 -1
- package/dist/services/job-snapshot/snapshot.js +2 -2
- package/dist/services/karpathy-cost/karpathy-cost-check-service.js +23 -13
- package/dist/services/legacy/legacy-detector.js +51 -5
- package/dist/services/lint/detect-eslint.js +10 -4
- package/dist/services/lint/detect-ocr-18.js +11 -3
- package/dist/services/lint/eslint-runner-support.d.ts +22 -0
- package/dist/services/lint/eslint-runner-support.js +185 -0
- package/dist/services/lint/eslint-runner-types.d.ts +69 -0
- package/dist/services/lint/eslint-runner-types.js +11 -0
- package/dist/services/lint/eslint-runner.d.ts +4 -56
- package/dist/services/lint/eslint-runner.js +24 -178
- package/dist/services/lint/npx-resolver.js +1 -3
- package/dist/services/lint/ocr-18-acquire.js +15 -4
- package/dist/services/lint/ocr-multilang-adapter.js +4 -5
- package/dist/services/llm/anthropic-runner.js +4 -1
- package/dist/services/log/log-commands-service.js +2 -6
- package/dist/services/log/logger.js +15 -12
- package/dist/services/log/retention.js +3 -2
- package/dist/services/loop/evaluator-dispatcher.js +78 -42
- package/dist/services/loop/loop-bee-relation-service.d.ts +4 -4
- package/dist/services/loop/loop-bee-relation-service.js +36 -40
- package/dist/services/loop/loop-bee-relation-store.d.ts +3 -3
- package/dist/services/loop/loop-bee-relation-store.js +9 -11
- package/dist/services/loop/loop-bee-relation-types.d.ts +1 -1
- package/dist/services/loop/loop-bee-relation-types.js +14 -25
- package/dist/services/loop/loop-release-service.d.ts +2 -2
- package/dist/services/loop/loop-release-service.js +3 -3
- package/dist/services/loop/loop-release-store.d.ts +2 -2
- package/dist/services/loop/loop-release-store.js +4 -6
- package/dist/services/loop/loop-release-types.d.ts +1 -1
- package/dist/services/loop/loop-release-types.js +21 -31
- package/dist/services/loop/monotonic-guard-types.d.ts +51 -0
- package/dist/services/loop/monotonic-guard-types.js +9 -0
- package/dist/services/loop/monotonic-guard.d.ts +2 -43
- package/dist/services/loop/monotonic-runner-types.d.ts +63 -0
- package/dist/services/loop/monotonic-runner-types.js +17 -0
- package/dist/services/loop/monotonic-runner.d.ts +3 -34
- package/dist/services/loop/monotonic-runner.js +10 -20
- package/dist/services/loop/run-driver.js +16 -8
- package/dist/services/loop/spec-service.d.ts +0 -5
- package/dist/services/loop/spec-service.js +49 -9
- package/dist/services/memory/llm-reranker-core.d.ts +108 -0
- package/dist/services/memory/llm-reranker-core.js +105 -0
- package/dist/services/memory/llm-reranker.d.ts +3 -94
- package/dist/services/memory/llm-reranker.js +13 -102
- package/dist/services/memory/memory-ingest-service.d.ts +1 -22
- package/dist/services/memory/memory-ingest-service.js +29 -76
- package/dist/services/memory/memory-ingest-support.d.ts +23 -0
- package/dist/services/memory/memory-ingest-support.js +81 -0
- package/dist/services/memory/memory-rotate-service.js +41 -8
- package/dist/services/memory/memory-search-service.js +8 -4
- package/dist/services/memory/project-context-service.js +26 -5
- package/dist/services/memory/project-memory-service/index/kind-dispatch.d.ts +2 -7
- package/dist/services/memory/project-memory-service/index/kind-dispatch.js +17 -136
- package/dist/services/memory/project-memory-service/index/project-memory-plan-exec.d.ts +7 -0
- package/dist/services/memory/project-memory-service/index/project-memory-plan-exec.js +150 -0
- package/dist/services/memory/project-memory-service/index/ranking.js +6 -3
- package/dist/services/memory/project-memory-service/index/reindex.js +14 -5
- package/dist/services/memory/project-memory-service/index.d.ts +1 -1
- package/dist/services/memory/project-memory-service/index.js +1 -1
- package/dist/services/memory/project-memory-service/memory-kinds.d.ts +31 -0
- package/dist/services/memory/project-memory-service/memory-kinds.js +87 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter-parse.d.ts +24 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter-parse.js +104 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter.d.ts +2 -24
- package/dist/services/memory/project-memory-service/parsers/frontmatter.js +28 -79
- package/dist/services/memory/project-memory-service/parsers/markdown-pure.js +15 -3
- package/dist/services/memory/project-memory-service/store/atomic-write.d.ts +59 -0
- package/dist/services/memory/project-memory-service/store/atomic-write.js +189 -17
- package/dist/services/memory/project-memory-service/store/paths.js +2 -1
- package/dist/services/memory/project-memory-service/types.d.ts +3 -31
- package/dist/services/memory/project-memory-service/types.js +1 -76
- package/dist/services/migrate-skill-name/migrate.js +1 -1
- package/dist/services/migrate-skill-name/schema.js +1 -1
- package/dist/services/mode/mode-enforcement.js +4 -2
- package/dist/services/mode/mode-status-service.d.ts +27 -9
- package/dist/services/mode/mode-status-service.js +64 -12
- package/dist/services/observability/aggregation-helpers.d.ts +22 -0
- package/dist/services/observability/aggregation-helpers.js +65 -0
- package/dist/services/observability/aggregation-types.d.ts +66 -0
- package/dist/services/observability/aggregation-types.js +34 -0
- package/dist/services/observability/aggregation.d.ts +5 -53
- package/dist/services/observability/aggregation.js +17 -80
- package/dist/services/observability/jsonl-store.js +2 -1
- package/dist/services/observability/observability-schema.d.ts +71 -0
- package/dist/services/observability/observability-schema.js +64 -0
- package/dist/services/observability/observability-service.d.ts +3 -56
- package/dist/services/observability/observability-service.js +9 -49
- package/dist/services/openspec/coverage-evidence-reader.js +18 -11
- package/dist/services/openspec/openspec-archive-service.js +31 -24
- package/dist/services/openspec/openspec-init-service.js +8 -2
- package/dist/services/openspec/openspec-propose-from-doctor-service.js +1 -1
- package/dist/services/openspec/openspec-scan-service.js +4 -1
- package/dist/services/openspec/openspec-validate-service.js +26 -5
- package/dist/services/perf/perf-baseline-service.js +2 -6
- package/dist/services/polyrepo/polyrepo-dispatcher.js +2 -1
- package/dist/services/polyrepo/polyrepo-scanner.js +4 -1
- package/dist/services/prd/gate-evidence-derivation.d.ts +160 -0
- package/dist/services/prd/gate-evidence-derivation.js +270 -0
- package/dist/services/prd/handoff-auto-regen.js +13 -1
- package/dist/services/prd/handoff-frontmatter-shape.d.ts +42 -0
- package/dist/services/prd/handoff-frontmatter-shape.js +67 -0
- package/dist/services/prd/handoff-frontmatter.d.ts +1 -1
- package/dist/services/prd/handoff-frontmatter.js +63 -1
- package/dist/services/prd/handoff-gate-evidence.d.ts +95 -1
- package/dist/services/prd/handoff-gate-evidence.js +125 -57
- package/dist/services/prd/handoff-path-resolution.d.ts +37 -0
- package/dist/services/prd/handoff-path-resolution.js +101 -0
- package/dist/services/prd/handoff-service.d.ts +22 -38
- package/dist/services/prd/handoff-service.js +38 -127
- package/dist/services/prd/handoff-types.d.ts +40 -0
- package/dist/services/prd/handoff-types.js +28 -1
- package/dist/services/prd/prd-blocks-checker.js +28 -8
- package/dist/services/prd/project-scan-bootstrap-service.js +1 -5
- package/dist/services/prd/project-scan-reader.d.ts +7 -0
- package/dist/services/prd/project-scan-reader.js +8 -5
- package/dist/services/prd/project-scan-sediment.js +1 -4
- package/dist/services/preferences/preferences-service.js +6 -8
- package/dist/services/preferences/preferences-types.js +4 -4
- package/dist/services/qa/bdd-test-style-contract.d.ts +41 -0
- package/dist/services/qa/bdd-test-style-contract.js +37 -0
- package/dist/services/qa/bdd-test-style-verifier.d.ts +2 -24
- package/dist/services/qa/bdd-test-style-verifier.js +5 -31
- package/dist/services/qa/browser-event-logger.js +2 -1
- package/dist/services/qa/qa-business-review-state.js +20 -5
- package/dist/services/qa/screenshot-archive-service.js +1 -3
- package/dist/services/rd/ast-gate.js +2 -2
- package/dist/services/rd/impl.js +1 -1
- package/dist/services/rd/rd-service.js +117 -43
- package/dist/services/rd/reviewer-dispatch-policy.d.ts +36 -8
- package/dist/services/rd/reviewer-dispatch-policy.js +40 -15
- package/dist/services/rd/standards-diagnostic.js +4 -1
- package/dist/services/rd/strategy.js +10 -3
- package/dist/services/rd/tactical-stage.js +2 -2
- package/dist/services/rd/types.js +9 -7
- package/dist/services/rd-swarm/rd-swarm-service.d.ts +2 -45
- package/dist/services/rd-swarm/rd-swarm-service.js +140 -21
- package/dist/services/rd-swarm/rd-swarm-types.d.ts +54 -0
- package/dist/services/rd-swarm/rd-swarm-types.js +10 -0
- package/dist/services/recommendations/capability-map-service.js +10 -2
- package/dist/services/recommendations/capability-seed-items.js +81 -14
- package/dist/services/recommendations/capability-seed-mappings.js +420 -48
- package/dist/services/recommendations/capability-seed-sources-mcp-server.d.ts +9 -0
- package/dist/services/recommendations/capability-seed-sources-mcp-server.js +233 -0
- package/dist/services/recommendations/capability-seed-sources.js +127 -32
- package/dist/services/release/release-state.d.ts +2 -2
- package/dist/services/release/release-state.js +44 -15
- package/dist/services/release/version-precheck-layer-changeset.d.ts +2 -0
- package/dist/services/release/version-precheck-layer-changeset.js +43 -0
- package/dist/services/release/version-precheck-service.d.ts +11 -36
- package/dist/services/release/version-precheck-service.js +20 -104
- package/dist/services/release/version-precheck-support.d.ts +53 -0
- package/dist/services/release/version-precheck-support.js +64 -0
- package/dist/services/retrospective/retrospective-index.js +17 -3
- package/dist/services/retrospective/retrospective-search-service.js +6 -2
- package/dist/services/retrospective/retrospective-show.js +4 -1
- package/dist/services/reviewer/model-family.js +7 -1
- package/dist/services/reviewer/providers/anthropic.d.ts +5 -0
- package/dist/services/reviewer/providers/anthropic.js +10 -1
- package/dist/services/reviewer/providers/openai.d.ts +5 -0
- package/dist/services/reviewer/providers/openai.js +10 -1
- package/dist/services/reviewer/reviewer-config.js +4 -2
- package/dist/services/reviewer/reviewer-service.d.ts +2 -36
- package/dist/services/reviewer/reviewer-service.js +2 -1
- package/dist/services/reviewer/reviewer-types.d.ts +43 -0
- package/dist/services/reviewer/reviewer-types.js +1 -0
- package/dist/services/role/role-registry.js +9 -1
- package/dist/services/runtime/runtime-detector.js +4 -1
- package/dist/services/runtime/vendors/claude-code.js +14 -6
- package/dist/services/runtime/vendors/codex.js +11 -3
- package/dist/services/runtime/vendors/copilot.js +11 -3
- package/dist/services/sc/sc-service.js +28 -15
- package/dist/services/scan/acceptance-coverage-service.js +4 -1
- package/dist/services/scan/api-diff-openapi-schema-read.d.ts +67 -0
- package/dist/services/scan/api-diff-openapi-schema-read.js +154 -0
- package/dist/services/scan/api-diff-openapi.d.ts +16 -2
- package/dist/services/scan/api-diff-openapi.js +19 -123
- package/dist/services/scan/api-diff-recorded.js +16 -3
- package/dist/services/scan/api-diff-service.js +49 -16
- package/dist/services/scan/api-diff-types.js +12 -3
- package/dist/services/scan/api-surface-helpers.d.ts +13 -0
- package/dist/services/scan/api-surface-helpers.js +31 -0
- package/dist/services/scan/api-surface-service.d.ts +2 -45
- package/dist/services/scan/api-surface-service.js +15 -26
- package/dist/services/scan/api-surface-types.d.ts +54 -0
- package/dist/services/scan/api-surface-types.js +10 -0
- package/dist/services/scan/archetype-detection.d.ts +37 -0
- package/dist/services/scan/archetype-detection.js +142 -0
- package/dist/services/scan/archetype-service.js +36 -125
- package/dist/services/scan/diff-scope-service.js +35 -15
- package/dist/services/scan/existing-system-service.js +16 -99
- package/dist/services/scan/existing-system-visual-tokens.d.ts +20 -0
- package/dist/services/scan/existing-system-visual-tokens.js +123 -0
- package/dist/services/scan/file-size-policy.d.ts +86 -0
- package/dist/services/scan/file-size-policy.js +184 -0
- package/dist/services/scan/file-size-scan.d.ts +30 -3
- package/dist/services/scan/file-size-scan.js +47 -9
- package/dist/services/scan/karpathy-service.js +6 -1
- package/dist/services/scan/orphan-service.js +86 -20
- package/dist/services/scan/type-sanity-service.js +104 -10
- package/dist/services/sediment/dispose-confirm.d.ts +2 -2
- package/dist/services/sediment/dispose-confirm.js +2 -2
- package/dist/services/sediment/json-schema.d.ts +1 -1
- package/dist/services/sediment/json-schema.js +25 -13
- package/dist/services/sediment/manifest-lint.d.ts +1 -12
- package/dist/services/sediment/manifest-lint.js +1 -7
- package/dist/services/sediment/pool-paths.js +13 -9
- package/dist/services/sediment/pool-read.d.ts +1 -1
- package/dist/services/sediment/pool-read.js +42 -18
- package/dist/services/sediment/pool-rebuild-index.d.ts +1 -1
- package/dist/services/sediment/pool-rebuild-index.js +5 -5
- package/dist/services/sediment/pool-write.d.ts +1 -1
- package/dist/services/sediment/pool-write.js +7 -7
- package/dist/services/sediment/promotion-gate.d.ts +1 -1
- package/dist/services/sediment/promotion-gate.js +9 -9
- package/dist/services/sediment/types.d.ts +8 -8
- package/dist/services/session/binding-status-service.js +14 -4
- package/dist/services/session/caller-binding-service.js +2 -1
- package/dist/services/session/getSessionDir.js +4 -1
- package/dist/services/session/index.d.ts +1 -1
- package/dist/services/session/index.js +1 -1
- package/dist/services/session/resolve-caller-id.js +7 -5
- package/dist/services/session/session-binding-bridge.js +26 -25
- package/dist/services/session/session-checkpoint-service.js +1 -1
- package/dist/services/session/session-file-schema.d.ts +70 -0
- package/dist/services/session/session-file-schema.js +68 -0
- package/dist/services/session/session-manager.d.ts +6 -6
- package/dist/services/session/session-manager.js +30 -29
- package/dist/services/session/session-resume-service.js +2 -1
- package/dist/services/share/bundle-format-constants.d.ts +85 -0
- package/dist/services/share/bundle-format-constants.js +100 -0
- package/dist/services/share/bundle-reader.d.ts +3 -3
- package/dist/services/share/bundle-reader.js +75 -68
- package/dist/services/share/bundle-types.d.ts +3 -70
- package/dist/services/share/bundle-types.js +38 -107
- package/dist/services/share/bundle-writer.d.ts +3 -3
- package/dist/services/share/bundle-writer.js +101 -91
- package/dist/services/share/run-state-contract.d.ts +1 -1
- package/dist/services/share/run-state-contract.js +7 -13
- package/dist/services/signal/cancel-handler.js +2 -1
- package/dist/services/skill/resume-detector.js +6 -4
- package/dist/services/skill/skill-scheduler.js +3 -1
- package/dist/services/skill/skill-search-service.js +4 -4
- package/dist/services/skillhub/release-diff.d.ts +2 -2
- package/dist/services/skillhub/release-diff.js +6 -10
- package/dist/services/skillhub/release-export.d.ts +2 -2
- package/dist/services/skillhub/release-export.js +15 -17
- package/dist/services/skillhub/release-gc-blobs.d.ts +2 -2
- package/dist/services/skillhub/release-gc-blobs.js +4 -4
- package/dist/services/skillhub/release-import.d.ts +2 -2
- package/dist/services/skillhub/release-import.js +13 -12
- package/dist/services/skillhub/release-retain.d.ts +3 -3
- package/dist/services/skillhub/release-retain.js +22 -22
- package/dist/services/skillhub/sqlite-store.d.ts +1 -1
- package/dist/services/skillhub/sqlite-store.js +12 -11
- package/dist/services/skillhub/tar-runtime.js +15 -15
- package/dist/services/skillhub/types.d.ts +4 -4
- package/dist/services/skills/hooks-codegate-superpowers.js +16 -7
- package/dist/services/skills/hooks-settings-service.js +61 -19
- package/dist/services/skills/presence-lease-service.js +26 -16
- package/dist/services/skills/presence-lease-types.d.ts +1 -1
- package/dist/services/skills/presence-lease-types.js +1 -1
- package/dist/services/skills/skill-conformance-service.js +40 -8
- package/dist/services/skills/skill-presence-service.js +16 -14
- package/dist/services/skills/skill-runbook-service.js +2 -1
- package/dist/services/skills/skill-statusline-model.d.ts +128 -0
- package/dist/services/skills/skill-statusline-model.js +163 -0
- package/dist/services/skills/skill-statusline-renderer.js +4 -3
- package/dist/services/skills/skill-statusline-service.d.ts +3 -100
- package/dist/services/skills/skill-statusline-service.js +56 -163
- package/dist/services/skills/statusline-palette.js +11 -6
- package/dist/services/skills/statusline-settings-service.js +2 -1
- package/dist/services/skills/sync-service-support.d.ts +65 -0
- package/dist/services/skills/sync-service-support.js +50 -0
- package/dist/services/skills/sync-service.d.ts +3 -66
- package/dist/services/skills/sync-service.js +15 -53
- package/dist/services/slice/calibration-store.js +8 -2
- package/dist/services/slice/cross-pass-edge-merger.d.ts +3 -28
- package/dist/services/slice/cross-pass-edge-merger.js +13 -63
- package/dist/services/slice/cross-pass-edge-static-scan-support.d.ts +69 -0
- package/dist/services/slice/cross-pass-edge-static-scan-support.js +74 -0
- package/dist/services/slice/granularity-decider.js +2 -2
- package/dist/services/slice/slice-archive-service.js +8 -3
- package/dist/services/slice/slice-check-service.js +19 -8
- package/dist/services/slice/slice-decompose-runners.js +61 -23
- package/dist/services/slice/slice-decompose-service.js +4 -4
- package/dist/services/slice/slice-review-state.js +8 -2
- package/dist/services/smoke/smoke-paths-state.js +9 -2
- package/dist/services/sop/gate-enforce-service.js +9 -2
- package/dist/services/sop/sop-advance-service.js +14 -2
- package/dist/services/sop/sop-check-service.js +16 -4
- package/dist/services/sop/sop-paths.js +3 -1
- package/dist/services/sop/sop-registry-service.js +5 -1
- package/dist/services/sop/sop-service.js +29 -7
- package/dist/services/sop/sop-types.js +5 -1
- package/dist/services/standards/ide-aware-standards-service.js +2 -2
- package/dist/services/standards/loop-engineering-lint.js +12 -5
- package/dist/services/standards/loop-engineering-readiness-lint.js +5 -5
- package/dist/services/standards/migrate-claude-rules-service.js +9 -7
- package/dist/services/standards/missing-standards-detector.js +1 -3
- package/dist/services/standards/project-context-support.d.ts +50 -0
- package/dist/services/standards/project-context-support.js +244 -0
- package/dist/services/standards/project-context-types.d.ts +30 -0
- package/dist/services/standards/project-context-types.js +11 -0
- package/dist/services/standards/project-context.d.ts +10 -22
- package/dist/services/standards/project-context.js +27 -214
- package/dist/services/standards/project-standards-service.js +43 -12
- package/dist/services/standards/standards-render-common.d.ts +15 -0
- package/dist/services/standards/standards-render-common.js +49 -0
- package/dist/services/standards/standards-render.d.ts +1 -2
- package/dist/services/standards/standards-render.js +31 -58
- package/dist/services/standards/ui-library-dispatch-block.js +1 -1
- package/dist/services/tech/tech-change-id-service.js +7 -7
- package/dist/services/tech/tech-service.js +73 -26
- package/dist/services/test-cache/test-cache-service.js +8 -3
- package/dist/services/upgrade/1x-detector-service.js +5 -3
- package/dist/services/upgrade/gitignore-migrate-service.js +5 -5
- package/dist/services/upgrade/upgrade-service.js +36 -13
- package/dist/services/verdict/envelope-parsers.d.ts +84 -0
- package/dist/services/verdict/envelope-parsers.js +146 -0
- package/dist/services/verdict/envelopes.d.ts +50 -60
- package/dist/services/verdict/envelopes.js +18 -156
- package/dist/services/verdict/verdict-aggregator.js +27 -3
- package/dist/services/vm/vm-lease.js +15 -3
- package/dist/services/web/aria-node.d.ts +27 -0
- package/dist/services/web/aria-node.js +1 -0
- package/dist/services/web/browser-acquire.js +3 -1
- package/dist/services/web/browser-cache-probe.d.ts +18 -0
- package/dist/services/web/browser-cache-probe.js +110 -0
- package/dist/services/web/browser-session-manager.js +6 -2
- package/dist/services/web/daemon-registry.js +4 -1
- package/dist/services/web/playwright-loader.d.ts +2 -70
- package/dist/services/web/playwright-types.d.ts +75 -0
- package/dist/services/web/playwright-types.js +1 -0
- package/dist/services/web/snapshot-pruner.d.ts +2 -23
- package/dist/services/web/snapshot-pruner.js +8 -3
- package/dist/services/web/web-daemon-service.js +1 -3
- package/dist/services/web/web-install-service.d.ts +3 -32
- package/dist/services/web/web-install-service.js +21 -100
- package/dist/services/web/web-install-types.d.ts +31 -0
- package/dist/services/web/web-install-types.js +13 -0
- package/dist/services/web/web-login-profile.js +7 -5
- package/dist/services/web/web-protocol.js +3 -1
- package/dist/services/workflow/pipeline-verify-gate-support.js +63 -17
- package/dist/services/workflow/pipeline-verify-service.js +17 -6
- package/dist/services/workflow/plan-reader.js +5 -1
- package/dist/services/workflow/plan-refresher.js +20 -6
- package/dist/services/workflow/plan-trigger-detector.js +31 -8
- package/dist/services/workflow/provision-dispatch-node.js +8 -3
- package/dist/services/workflow/workflow-autonomous-resume-helpers.d.ts +3 -1
- package/dist/services/workflow/workflow-autonomous-resume-helpers.js +35 -144
- package/dist/services/workflow/workflow-autonomous-resume-validation.d.ts +16 -0
- package/dist/services/workflow/workflow-autonomous-resume-validation.js +155 -0
- package/dist/services/workflow/workflow-autonomous-service.js +25 -13
- package/dist/services/workflow/workflow-graph-store-helpers.d.ts +51 -0
- package/dist/services/workflow/workflow-graph-store-helpers.js +111 -0
- package/dist/services/workflow/workflow-graph-store.d.ts +2 -35
- package/dist/services/workflow/workflow-graph-store.js +30 -107
- package/dist/services/workflow/workflow-graph-types.js +3 -3
- package/dist/services/workflow/workflow-inflight-probe.js +14 -7
- package/dist/services/workflow/workflow-loader.js +5 -1
- package/dist/services/workflow/workflow-node-lifecycle.js +22 -21
- package/dist/services/workflow/workflow-presence-lifecycle-types.d.ts +50 -0
- package/dist/services/workflow/workflow-presence-lifecycle-types.js +1 -0
- package/dist/services/workflow/workflow-presence-lifecycle.d.ts +2 -42
- package/dist/services/workflow/workflow-presence-lifecycle.js +19 -21
- package/dist/services/workflow/workflow-router-service.js +169 -27
- package/dist/services/workflow/workflow-skip-service.js +14 -4
- package/dist/services/workflow/workflow-spec-builders.d.ts +15 -0
- package/dist/services/workflow/workflow-spec-builders.js +121 -0
- package/dist/services/workflow/workflow-spec.d.ts +7 -6
- package/dist/services/workflow/workflow-spec.js +22 -116
- package/dist/services/workflow/workflow-state-store.js +2 -1
- package/dist/services/workspace/migrate-1-4-1-service.js +80 -14
- package/dist/services/workspace/migrate-service.js +66 -16
- package/dist/services/workspace/reconcile-migrate.js +6 -2
- package/dist/services/workspace/reconcile-service.js +37 -16
- package/dist/services/workspace/workspace-claude-settings-materializer.js +7 -5
- package/dist/services/workspace/workspace-clean-service.js +4 -1
- package/dist/services/workspace/workspace-service.js +11 -3
- package/dist/services/workspace/workspace-state-service.js +1 -1
- package/dist/services/worktree/git-worktree-parser.js +13 -3
- package/dist/services/worktree/host-worktree-reconciler.js +8 -4
- package/dist/services/worktree/long-path-cleanup.js +23 -6
- package/dist/services/worktree/worktree-gc-guard.js +3 -1
- package/dist/services/worktree/worktree-lease-types.d.ts +53 -0
- package/dist/services/worktree/worktree-lease-types.js +10 -0
- package/dist/services/worktree/worktree-lease.d.ts +2 -44
- package/dist/shared/array-guards.d.ts +30 -0
- package/dist/shared/array-guards.js +32 -0
- package/dist/shared/format-md-compact-internals.d.ts +26 -0
- package/dist/shared/format-md-compact-internals.js +125 -0
- package/dist/shared/format-md-compact.js +1 -117
- package/dist/shared/fs-utils.js +2 -1
- package/dist/shared/incrementing-number.js +3 -3
- package/dist/shared/json-parse.d.ts +71 -0
- package/dist/shared/json-parse.js +32 -0
- package/dist/shared/json-schema-mini.js +3 -1
- package/dist/shared/path-safety.js +3 -1
- package/dist/shared/path-utils.d.ts +20 -0
- package/dist/shared/path-utils.js +26 -0
- package/dist/shared/planner-response.js +3 -3
- package/dist/shared/stale-policy.js +1 -3
- package/dist/skills/peaks-maker/index.js +11 -11
- package/package.json +32 -9
- package/scripts/clean-dist.mjs +1 -2
- package/scripts/copy-templates.mjs +2 -4
- package/scripts/install-skills.mjs +305 -125
- package/scripts/sync-version.mjs +25 -8
- package/scripts/watch.mjs +8 -2
- package/skills/bee/peaks-rd/SKILL.md +1 -1
- package/skills/bee/peaks-rd/references/rd-fanout-contracts.md +26 -10
- package/skills/bee/peaks-rd/references/rd-sub-agent-dispatch.md +1 -1
- package/skills/bee/peaks-rd/references/writing-handoff-frontmatter.md +6 -1
- package/skills/peaks-code/SKILL.md +1 -1
- package/skills/peaks-code/references/periodic-checkpoint.md +7 -5
- package/skills/peaks-code/references/startup-sequence.md +1 -1
- package/skills/peaks-final-review/SKILL.md +1 -1
- /package/{docs → contracts}/test-style-contract.md +0 -0
|
@@ -1,26 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
* (`role` is `"text"` for static text fragments; state flags and element
|
|
4
|
-
* attributes are optional).
|
|
5
|
-
*/
|
|
6
|
-
export interface AriaNode {
|
|
7
|
-
readonly role: string;
|
|
8
|
-
readonly name?: string;
|
|
9
|
-
readonly text?: string;
|
|
10
|
-
readonly children?: readonly AriaNode[];
|
|
11
|
-
readonly checked?: boolean | 'mixed';
|
|
12
|
-
readonly disabled?: boolean;
|
|
13
|
-
readonly expanded?: boolean;
|
|
14
|
-
readonly active?: boolean;
|
|
15
|
-
readonly invalid?: boolean | 'mixed';
|
|
16
|
-
readonly level?: number;
|
|
17
|
-
readonly pressed?: boolean | 'mixed';
|
|
18
|
-
readonly selected?: boolean;
|
|
19
|
-
readonly url?: string;
|
|
20
|
-
readonly placeholder?: string;
|
|
21
|
-
readonly ref?: string;
|
|
22
|
-
readonly cursor?: string;
|
|
23
|
-
}
|
|
1
|
+
import type { AriaNode } from './aria-node.js';
|
|
2
|
+
export type { AriaNode };
|
|
24
3
|
/**
|
|
25
4
|
* Roles that carry no information on their own. A node of one of these roles
|
|
26
5
|
* is removed and its children are hoisted into its parent when it also has no
|
|
@@ -48,7 +48,10 @@ export function pruneAriaSnapshot(nodes) {
|
|
|
48
48
|
});
|
|
49
49
|
const nodeCapped = droppedByNodeCap > 0;
|
|
50
50
|
const pruned = nodeCapped
|
|
51
|
-
? [
|
|
51
|
+
? [
|
|
52
|
+
...cappedNodes,
|
|
53
|
+
{ role: 'text', text: `${TRUNCATION_TEXT} [${droppedByNodeCap} more nodes]` }
|
|
54
|
+
]
|
|
52
55
|
: cappedNodes;
|
|
53
56
|
return {
|
|
54
57
|
nodes: pruned,
|
|
@@ -91,7 +94,7 @@ function isDroppable(node) {
|
|
|
91
94
|
function dropAndHoist(list, counter) {
|
|
92
95
|
const root = [];
|
|
93
96
|
const stack = [
|
|
94
|
-
{ source: list, index: 0, out: root }
|
|
97
|
+
{ source: list, index: 0, out: root }
|
|
95
98
|
];
|
|
96
99
|
while (stack.length > 0) {
|
|
97
100
|
const frame = stack[stack.length - 1];
|
|
@@ -148,7 +151,9 @@ function applyNodeCap(list, maxNodes, state, onDrop) {
|
|
|
148
151
|
}
|
|
149
152
|
state.emitted += 1;
|
|
150
153
|
const children = node.children ?? [];
|
|
151
|
-
out.push(children.length > 0
|
|
154
|
+
out.push(children.length > 0
|
|
155
|
+
? { ...node, children: applyNodeCap(children, maxNodes, state, onDrop) }
|
|
156
|
+
: node);
|
|
152
157
|
}
|
|
153
158
|
return out;
|
|
154
159
|
}
|
|
@@ -124,9 +124,7 @@ export async function startWebDaemon(config) {
|
|
|
124
124
|
return shutdown;
|
|
125
125
|
}
|
|
126
126
|
shutdown = (async () => {
|
|
127
|
-
const closed = manager === null
|
|
128
|
-
? { closedContexts: 0, stateWriteFailures: [] }
|
|
129
|
-
: await manager.closeAll();
|
|
127
|
+
const closed = manager === null ? { closedContexts: 0, stateWriteFailures: [] } : await manager.closeAll();
|
|
130
128
|
if (browser !== null) {
|
|
131
129
|
// Closing the browser ends the chromium process. Without this the
|
|
132
130
|
// daemon could record a clean stop while the browser outlived it —
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import { type InstallOutcome } from './web-install-types.js';
|
|
2
|
+
export { probeBrowserInstalled } from './browser-cache-probe.js';
|
|
3
|
+
export type { BrowserProbe, InstallOutcome } from './web-install-types.js';
|
|
1
4
|
/**
|
|
2
5
|
* R2: the size of the one-time download, named so it is never a surprise.
|
|
3
6
|
*
|
|
@@ -8,44 +11,12 @@
|
|
|
8
11
|
* each pin bump adds another ~700 MiB beside the old one (1.4 GiB held here).
|
|
9
12
|
*/
|
|
10
13
|
export declare const INSTALL_SIZE_WARNING = "downloading chromium (~700 MB on disk, one time)";
|
|
11
|
-
/** What the cache says, without downloading anything (tech-doc §5.3). */
|
|
12
|
-
export interface BrowserProbe {
|
|
13
|
-
readonly installed: boolean;
|
|
14
|
-
/** The resolved Playwright PACKAGE version, or `null` when the package is absent. */
|
|
15
|
-
readonly version: string | null;
|
|
16
|
-
readonly executablePath: string | null;
|
|
17
|
-
}
|
|
18
|
-
export interface InstallOutcome {
|
|
19
|
-
readonly ok: boolean;
|
|
20
|
-
/** `''` on success, otherwise `WEB_INSTALL_BUSY` | `WEB_INSTALL_FAILED` | `WEB_INSTALL_TIMEOUT`. */
|
|
21
|
-
readonly code: string;
|
|
22
|
-
readonly message: string;
|
|
23
|
-
/** The size warning whenever this call actually ran the installer. */
|
|
24
|
-
readonly warnings: readonly string[];
|
|
25
|
-
}
|
|
26
14
|
/**
|
|
27
15
|
* `PEAKS_WEB_DISABLED=1`, and nothing else. `'0'`, `'true'`, `''` and `'1 '`
|
|
28
16
|
* are all "not disabled" — the flag is an explicit opt-out, so a typo must fail
|
|
29
17
|
* towards the local browser rather than silently skipping it.
|
|
30
18
|
*/
|
|
31
19
|
export declare function isWebDisabled(env: NodeJS.ProcessEnv): boolean;
|
|
32
|
-
/**
|
|
33
|
-
* Is the pinned browser on disk? Never throws, never spawns, never downloads.
|
|
34
|
-
*
|
|
35
|
-
* **It answers about the artifact `launch()` starts** (R6). `executablePath()`
|
|
36
|
-
* names the `chromium` build, but `chromium.launch()` with no options and
|
|
37
|
-
* `headless` defaulting true resolves `chromium-headless-shell`
|
|
38
|
-
* (`registry.getExecutableName`) — a SEPARATE ~271 MiB download. Probing the
|
|
39
|
-
* full chromium therefore answered "installed" for a machine on which no op
|
|
40
|
-
* could launch: `launch()` failed, S1's net downloaded, the probe kept saying
|
|
41
|
-
* installed, and `peaks web install` short-circuited to a no-op success. See
|
|
42
|
-
* `headlessShellDir` for how the right path is obtained.
|
|
43
|
-
*
|
|
44
|
-
* `version` is reported even when the executable is missing, because "the
|
|
45
|
-
* package is cached but its browser is not" is a different diagnosis from
|
|
46
|
-
* "nothing is installed" — the first is one `peaks web install` away.
|
|
47
|
-
*/
|
|
48
|
-
export declare function probeBrowserInstalled(): Promise<BrowserProbe>;
|
|
49
20
|
/**
|
|
50
21
|
* The exact argv of the one-time download (tech-doc §3.3):
|
|
51
22
|
* `npx --yes --package playwright@<pin> -- playwright install chromium`, with
|
|
@@ -21,14 +21,21 @@
|
|
|
21
21
|
* the `install.lock` around the spawn so two callers cannot download 700 MB
|
|
22
22
|
* each (R6). The lock is released on every path, including a thrown spawn.
|
|
23
23
|
*/
|
|
24
|
-
import {
|
|
25
|
-
import { dirname
|
|
24
|
+
import { mkdirSync, readFileSync, renameSync, unlinkSync, writeFileSync } from 'node:fs';
|
|
25
|
+
import { dirname } from 'node:path';
|
|
26
26
|
import { spawnSync } from 'node:child_process';
|
|
27
27
|
import { getErrorMessage } from 'peaks-loop-shared/result';
|
|
28
28
|
import { resolveNpxInvocation } from '../lint/npx-resolver.js';
|
|
29
29
|
import { isProcessAlive } from './daemon-registry.js';
|
|
30
|
-
import {
|
|
30
|
+
import { PLAYWRIGHT_VERSION_PIN } from './playwright-loader.js';
|
|
31
31
|
import { webInstallLockPath } from './web-artifact-paths.js';
|
|
32
|
+
// The probe and the path derivations it reads live in `browser-cache-probe.ts`,
|
|
33
|
+
// and the three record shapes in `web-install-types.ts` (wave-3 file-size cap
|
|
34
|
+
// split; declarations moved verbatim). `probeBrowserInstalled`, `BrowserProbe`
|
|
35
|
+
// and `InstallOutcome` are re-exported here so importers keep resolving them
|
|
36
|
+
// from `web-install-service.js` unchanged; `InstallLockBody` was module-private
|
|
37
|
+
// and is imported for use only.
|
|
38
|
+
export { probeBrowserInstalled } from './browser-cache-probe.js';
|
|
32
39
|
/**
|
|
33
40
|
* R2: the size of the one-time download, named so it is never a surprise.
|
|
34
41
|
*
|
|
@@ -64,100 +71,6 @@ const LOCK_FILE_MODE = 0o600;
|
|
|
64
71
|
export function isWebDisabled(env) {
|
|
65
72
|
return env['PEAKS_WEB_DISABLED'] === '1';
|
|
66
73
|
}
|
|
67
|
-
/**
|
|
68
|
-
* Is the pinned browser on disk? Never throws, never spawns, never downloads.
|
|
69
|
-
*
|
|
70
|
-
* **It answers about the artifact `launch()` starts** (R6). `executablePath()`
|
|
71
|
-
* names the `chromium` build, but `chromium.launch()` with no options and
|
|
72
|
-
* `headless` defaulting true resolves `chromium-headless-shell`
|
|
73
|
-
* (`registry.getExecutableName`) — a SEPARATE ~271 MiB download. Probing the
|
|
74
|
-
* full chromium therefore answered "installed" for a machine on which no op
|
|
75
|
-
* could launch: `launch()` failed, S1's net downloaded, the probe kept saying
|
|
76
|
-
* installed, and `peaks web install` short-circuited to a no-op success. See
|
|
77
|
-
* `headlessShellDir` for how the right path is obtained.
|
|
78
|
-
*
|
|
79
|
-
* `version` is reported even when the executable is missing, because "the
|
|
80
|
-
* package is cached but its browser is not" is a different diagnosis from
|
|
81
|
-
* "nothing is installed" — the first is one `peaks web install` away.
|
|
82
|
-
*/
|
|
83
|
-
export async function probeBrowserInstalled() {
|
|
84
|
-
const version = await playwrightVersion();
|
|
85
|
-
if (version === null) {
|
|
86
|
-
return { installed: false, version: null, executablePath: null };
|
|
87
|
-
}
|
|
88
|
-
try {
|
|
89
|
-
const chromiumPath = (await loadPlaywright()).chromium.executablePath();
|
|
90
|
-
const shellDir = headlessShellDir(chromiumPath);
|
|
91
|
-
if (shellDir === null) {
|
|
92
|
-
// Not a registry shape we recognise: answer about the path Playwright
|
|
93
|
-
// handed us, exactly as this probe did before R6, rather than about a
|
|
94
|
-
// directory we invented.
|
|
95
|
-
return { installed: existsSync(chromiumPath), version, executablePath: chromiumPath };
|
|
96
|
-
}
|
|
97
|
-
// Absent is the answer, and the whole point: `null` here is what steers
|
|
98
|
-
// `peaks web install` to download and `acquireChromium` to refuse.
|
|
99
|
-
const executablePath = headlessShellExecutable(shellDir);
|
|
100
|
-
return { installed: executablePath !== null, version, executablePath };
|
|
101
|
-
}
|
|
102
|
-
catch {
|
|
103
|
-
// The package resolved but would not load — a broken cache, not a download.
|
|
104
|
-
return { installed: false, version, executablePath: null };
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* The `chromium_headless_shell-<rev>` directory that sits beside
|
|
109
|
-
* `chromiumExecutablePath`'s own revision directory, or `null` when the path is
|
|
110
|
-
* not shaped like Playwright's registry.
|
|
111
|
-
*
|
|
112
|
-
* Playwright's public API cannot name the shell — `BrowserType.executablePath()`
|
|
113
|
-
* takes no options and always answers with the `chromium` build — so it is
|
|
114
|
-
* derived from the one path Playwright does hand out. One naming rule is
|
|
115
|
-
* assumed, and it is the one the cache itself shows: `<rev>` directories are
|
|
116
|
-
* named after the browser, `chromium-1243` beside `chromium_headless_shell-1243`.
|
|
117
|
-
*/
|
|
118
|
-
function headlessShellDir(chromiumExecutablePath) {
|
|
119
|
-
const segments = chromiumExecutablePath.split(/[\\/]/);
|
|
120
|
-
let revision = -1;
|
|
121
|
-
for (let i = segments.length - 1; i > 0; i -= 1) {
|
|
122
|
-
if (/^chromium-\d+$/.test(segments[i] ?? '')) {
|
|
123
|
-
revision = i;
|
|
124
|
-
break;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
const revisionDir = segments[revision];
|
|
128
|
-
if (revision <= 0 || revisionDir === undefined) {
|
|
129
|
-
return null;
|
|
130
|
-
}
|
|
131
|
-
return join(segments.slice(0, revision).join(sep), revisionDir.replace('chromium-', 'chromium_headless_shell-'));
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* The shell executable inside `shellDir`, or `null`.
|
|
135
|
-
*
|
|
136
|
-
* The shell's own platform directory is deliberately NOT assumed — it is
|
|
137
|
-
* `chrome-headless-shell-<platform>` where chromium's is `chrome-<platform>` —
|
|
138
|
-
* so the file is looked for rather than named from a copy of Playwright's
|
|
139
|
-
* per-platform path table.
|
|
140
|
-
*/
|
|
141
|
-
function headlessShellExecutable(shellDir) {
|
|
142
|
-
for (const entry of safeReaddir(shellDir)) {
|
|
143
|
-
const platformDir = join(shellDir, entry);
|
|
144
|
-
for (const file of safeReaddir(platformDir)) {
|
|
145
|
-
if (/^chrome-headless-shell(\.exe)?$/.test(file)) {
|
|
146
|
-
return join(platformDir, file);
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
return null;
|
|
151
|
-
}
|
|
152
|
-
function safeReaddir(dir) {
|
|
153
|
-
try {
|
|
154
|
-
return readdirSync(dir);
|
|
155
|
-
}
|
|
156
|
-
catch {
|
|
157
|
-
// Absent is the normal case on a machine that never installed the shell.
|
|
158
|
-
return [];
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
74
|
/**
|
|
162
75
|
* The exact argv of the one-time download (tech-doc §3.3):
|
|
163
76
|
* `npx --yes --package playwright@<pin> -- playwright install chromium`, with
|
|
@@ -253,7 +166,9 @@ export function releaseInstallLock() {
|
|
|
253
166
|
}
|
|
254
167
|
/** Is this body a lock we must not touch — an owner that is alive and in date? */
|
|
255
168
|
function isLiveInstallLock(body) {
|
|
256
|
-
return (body !== null &&
|
|
169
|
+
return (body !== null &&
|
|
170
|
+
isProcessAlive(body.pid) &&
|
|
171
|
+
Date.now() - Date.parse(body.startedAt) <= INSTALL_LOCK_STALE_MS);
|
|
257
172
|
}
|
|
258
173
|
/** Does the file at `target` still name this process? */
|
|
259
174
|
function ownsInstallLock(target) {
|
|
@@ -314,7 +229,9 @@ export async function installChromium(options = {}) {
|
|
|
314
229
|
}
|
|
315
230
|
}
|
|
316
231
|
function spawnFailure(error) {
|
|
317
|
-
const code = error.code === 'ETIMEDOUT'
|
|
232
|
+
const code = error.code === 'ETIMEDOUT'
|
|
233
|
+
? 'WEB_INSTALL_TIMEOUT'
|
|
234
|
+
: 'WEB_INSTALL_FAILED';
|
|
318
235
|
return failure(code, `\`playwright install chromium\` did not complete: ${error.message}`);
|
|
319
236
|
}
|
|
320
237
|
function failure(code, message) {
|
|
@@ -323,7 +240,11 @@ function failure(code, message) {
|
|
|
323
240
|
function tryCreateInstallLock(target) {
|
|
324
241
|
const body = { pid: process.pid, startedAt: new Date().toISOString() };
|
|
325
242
|
try {
|
|
326
|
-
writeFileSync(target, JSON.stringify(body), {
|
|
243
|
+
writeFileSync(target, JSON.stringify(body), {
|
|
244
|
+
flag: 'wx',
|
|
245
|
+
encoding: 'utf8',
|
|
246
|
+
mode: LOCK_FILE_MODE
|
|
247
|
+
});
|
|
327
248
|
return true;
|
|
328
249
|
}
|
|
329
250
|
catch {
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `src/services/web/web-install-types.ts`
|
|
3
|
+
*
|
|
4
|
+
* The record shapes of browser acquisition (`web-install-service.ts`): what
|
|
5
|
+
* the cache probe answers, what an install run reports, and the body of the
|
|
6
|
+
* install lock on disk. Extracted verbatim (wave 3, file-size cap campaign) so
|
|
7
|
+
* the install module stays under the 300 raw-line cap. Types only — no probe,
|
|
8
|
+
* lock or spawn behaviour lives here. `web-install-service.ts` imports them and
|
|
9
|
+
* re-exports the two that were public, so importers keep resolving
|
|
10
|
+
* `BrowserProbe` / `InstallOutcome` from `web-install-service.js` unchanged;
|
|
11
|
+
* `InstallLockBody` was module-private and stays unexported there.
|
|
12
|
+
*/
|
|
13
|
+
/** What the cache says, without downloading anything (tech-doc §5.3). */
|
|
14
|
+
export interface BrowserProbe {
|
|
15
|
+
readonly installed: boolean;
|
|
16
|
+
/** The resolved Playwright PACKAGE version, or `null` when the package is absent. */
|
|
17
|
+
readonly version: string | null;
|
|
18
|
+
readonly executablePath: string | null;
|
|
19
|
+
}
|
|
20
|
+
export interface InstallOutcome {
|
|
21
|
+
readonly ok: boolean;
|
|
22
|
+
/** `''` on success, otherwise `WEB_INSTALL_BUSY` | `WEB_INSTALL_FAILED` | `WEB_INSTALL_TIMEOUT`. */
|
|
23
|
+
readonly code: string;
|
|
24
|
+
readonly message: string;
|
|
25
|
+
/** The size warning whenever this call actually ran the installer. */
|
|
26
|
+
readonly warnings: readonly string[];
|
|
27
|
+
}
|
|
28
|
+
export interface InstallLockBody {
|
|
29
|
+
readonly pid: number;
|
|
30
|
+
readonly startedAt: string;
|
|
31
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `src/services/web/web-install-types.ts`
|
|
3
|
+
*
|
|
4
|
+
* The record shapes of browser acquisition (`web-install-service.ts`): what
|
|
5
|
+
* the cache probe answers, what an install run reports, and the body of the
|
|
6
|
+
* install lock on disk. Extracted verbatim (wave 3, file-size cap campaign) so
|
|
7
|
+
* the install module stays under the 300 raw-line cap. Types only — no probe,
|
|
8
|
+
* lock or spawn behaviour lives here. `web-install-service.ts` imports them and
|
|
9
|
+
* re-exports the two that were public, so importers keep resolving
|
|
10
|
+
* `BrowserProbe` / `InstallOutcome` from `web-install-service.js` unchanged;
|
|
11
|
+
* `InstallLockBody` was module-private and stays unexported there.
|
|
12
|
+
*/
|
|
13
|
+
export {};
|
|
@@ -413,10 +413,7 @@ function isEmptyCapture(snapshot) {
|
|
|
413
413
|
}
|
|
414
414
|
const cookies = snapshot.cookies;
|
|
415
415
|
const origins = snapshot.origins;
|
|
416
|
-
return (Array.isArray(cookies) &&
|
|
417
|
-
cookies.length === 0 &&
|
|
418
|
-
Array.isArray(origins) &&
|
|
419
|
-
origins.length === 0);
|
|
416
|
+
return (Array.isArray(cookies) && cookies.length === 0 && Array.isArray(origins) && origins.length === 0);
|
|
420
417
|
}
|
|
421
418
|
/**
|
|
422
419
|
* Watch for the user closing the window (UD-4), from the moment the browser is
|
|
@@ -498,7 +495,12 @@ async function readSession(context) {
|
|
|
498
495
|
}
|
|
499
496
|
catch (error) {
|
|
500
497
|
const raw = getErrorMessage(error);
|
|
501
|
-
return {
|
|
498
|
+
return {
|
|
499
|
+
ok: false,
|
|
500
|
+
state: null,
|
|
501
|
+
error: cappedEcho(raw),
|
|
502
|
+
closedTarget: isClosedTargetError(raw)
|
|
503
|
+
};
|
|
502
504
|
}
|
|
503
505
|
}
|
|
504
506
|
/**
|
|
@@ -41,7 +41,9 @@ export function parseDaemonInfo(raw) {
|
|
|
41
41
|
if (!isNonEmptyString(token) || !isNonEmptyString(version)) {
|
|
42
42
|
return null;
|
|
43
43
|
}
|
|
44
|
-
if (!isNonEmptyString(projectRoot) ||
|
|
44
|
+
if (!isNonEmptyString(projectRoot) ||
|
|
45
|
+
!isNonEmptyString(sessionId) ||
|
|
46
|
+
!isNonEmptyString(startedAt)) {
|
|
45
47
|
return null;
|
|
46
48
|
}
|
|
47
49
|
return { protocolVersion, pid, port, token, version, projectRoot, sessionId, startedAt };
|
|
@@ -25,7 +25,11 @@ export function extractState(markdown) {
|
|
|
25
25
|
* `.peaks/_runtime/<sessionId>/<role>/requests/`.
|
|
26
26
|
*/
|
|
27
27
|
export async function findRequestFile(projectRoot, role, rid) {
|
|
28
|
-
const artifact = await showRequestArtifact({
|
|
28
|
+
const artifact = await showRequestArtifact({
|
|
29
|
+
projectRoot,
|
|
30
|
+
role: role,
|
|
31
|
+
requestId: rid
|
|
32
|
+
});
|
|
29
33
|
if (artifact === null)
|
|
30
34
|
return null;
|
|
31
35
|
// Slice 2026-06-28-code-mode-bypass-fix (defect #3) used to strip a
|
|
@@ -112,7 +116,12 @@ function contractBodyViolations(role, state, requestType, probeName, absolutePat
|
|
|
112
116
|
}
|
|
113
117
|
export function rdGatesForType(requestType) {
|
|
114
118
|
const gates = [
|
|
115
|
-
{
|
|
119
|
+
{
|
|
120
|
+
name: 'rd-request-exists',
|
|
121
|
+
description: 'RD request artifact created',
|
|
122
|
+
passed: false,
|
|
123
|
+
detail: ''
|
|
124
|
+
}
|
|
116
125
|
];
|
|
117
126
|
// This slot used to pin a `tech-doc` gate to `rd/tech-doc.md`, an artifact
|
|
118
127
|
// v2.11.0 Group A retired and the table no longer carries — so the gate
|
|
@@ -123,16 +132,39 @@ export function rdGatesForType(requestType) {
|
|
|
123
132
|
// budget and the resume detector. Neither is served by failing a compliant
|
|
124
133
|
// slice.)
|
|
125
134
|
if (contractEvidencePaths('rd', 'qa-handoff', requestType, 'prd/handoff.md') !== null) {
|
|
126
|
-
gates.push({
|
|
135
|
+
gates.push({
|
|
136
|
+
name: 'prd-handoff',
|
|
137
|
+
description: 'PRD handoff capsule (approved scope + non-goals)',
|
|
138
|
+
passed: false,
|
|
139
|
+
detail: ''
|
|
140
|
+
});
|
|
127
141
|
}
|
|
128
142
|
if (requestType === 'bugfix') {
|
|
129
|
-
gates.push({
|
|
143
|
+
gates.push({
|
|
144
|
+
name: 'bug-analysis',
|
|
145
|
+
description: 'Bug root-cause analysis',
|
|
146
|
+
passed: false,
|
|
147
|
+
detail: ''
|
|
148
|
+
});
|
|
130
149
|
}
|
|
131
150
|
if (requestType !== 'docs' && requestType !== 'chore' && requestType !== 'config') {
|
|
132
|
-
gates.push({
|
|
151
|
+
gates.push({
|
|
152
|
+
name: 'code-review',
|
|
153
|
+
description: 'Code review evidence',
|
|
154
|
+
passed: false,
|
|
155
|
+
detail: ''
|
|
156
|
+
});
|
|
133
157
|
}
|
|
134
|
-
if (requestType === 'feature' ||
|
|
135
|
-
|
|
158
|
+
if (requestType === 'feature' ||
|
|
159
|
+
requestType === 'refactor' ||
|
|
160
|
+
requestType === 'bugfix' ||
|
|
161
|
+
requestType === 'config') {
|
|
162
|
+
gates.push({
|
|
163
|
+
name: 'security-review',
|
|
164
|
+
description: 'Security review evidence',
|
|
165
|
+
passed: false,
|
|
166
|
+
detail: ''
|
|
167
|
+
});
|
|
136
168
|
}
|
|
137
169
|
// The perf evidence the contract requires at `rd:qa-handoff` is `AUDIT_PERF`
|
|
138
170
|
// — `audit/perf-<rid>.md`, with `audit/perf.md` and `rd/perf-baseline.md` as
|
|
@@ -143,17 +175,32 @@ export function rdGatesForType(requestType) {
|
|
|
143
175
|
// deleting it) is what keeps AC3's control meaningful: perf evidence that is
|
|
144
176
|
// genuinely absent must still fail.
|
|
145
177
|
if (contractEvidencePaths('rd', 'qa-handoff', requestType, 'rd/perf-baseline.md') !== null) {
|
|
146
|
-
gates.push({
|
|
178
|
+
gates.push({
|
|
179
|
+
name: 'perf-baseline',
|
|
180
|
+
description: 'Performance audit evidence',
|
|
181
|
+
passed: false,
|
|
182
|
+
detail: ''
|
|
183
|
+
});
|
|
147
184
|
}
|
|
148
185
|
return gates;
|
|
149
186
|
}
|
|
150
187
|
export function qaGatesForType(requestType) {
|
|
151
188
|
const gates = [
|
|
152
|
-
{
|
|
189
|
+
{
|
|
190
|
+
name: 'qa-request-exists',
|
|
191
|
+
description: 'QA request artifact created',
|
|
192
|
+
passed: false,
|
|
193
|
+
detail: ''
|
|
194
|
+
}
|
|
153
195
|
];
|
|
154
196
|
if (requestType === 'feature' || requestType === 'refactor' || requestType === 'bugfix') {
|
|
155
197
|
gates.push({ name: 'test-cases', description: 'QA test cases', passed: false, detail: '' });
|
|
156
|
-
gates.push({
|
|
198
|
+
gates.push({
|
|
199
|
+
name: 'test-report',
|
|
200
|
+
description: 'QA test report with execution results',
|
|
201
|
+
passed: false,
|
|
202
|
+
detail: ''
|
|
203
|
+
});
|
|
157
204
|
}
|
|
158
205
|
// The `security-findings` / `performance-findings` gates were removed here
|
|
159
206
|
// (rid 2026-09-14-verify-pipeline-contract-drift). peaks-qa does not own
|
|
@@ -189,8 +236,7 @@ export function resolveRdEvidencePaths(gates, rdEvidenceDir, projectRoot, rid, r
|
|
|
189
236
|
let allResolvedPathsCanonical = tracker.allResolvedPathsCanonical;
|
|
190
237
|
for (const gate of gates.slice(1)) {
|
|
191
238
|
const probeName = RD_EVIDENCE_PROBE[gate.name];
|
|
192
|
-
const relativePaths = (contractEvidencePaths('rd', 'qa-handoff', requestType, probeName) ?? [probeName])
|
|
193
|
-
.map((relative) => relative.replace('<rid>', rid));
|
|
239
|
+
const relativePaths = (contractEvidencePaths('rd', 'qa-handoff', requestType, probeName) ?? [probeName]).map((relative) => relative.replace('<rid>', rid));
|
|
194
240
|
const primaryRelativePath = relativePaths[0];
|
|
195
241
|
const canonicalPath = join(projectRoot, '.peaks', '_runtime', rdEvidenceDir, primaryRelativePath);
|
|
196
242
|
// Two independent axes, kept apart because they mean different things:
|
|
@@ -229,9 +275,10 @@ export function resolveRdEvidencePaths(gates, rdEvidenceDir, projectRoot, rid, r
|
|
|
229
275
|
}
|
|
230
276
|
else {
|
|
231
277
|
gate.passed = true;
|
|
232
|
-
gate.detail =
|
|
233
|
-
|
|
234
|
-
|
|
278
|
+
gate.detail =
|
|
279
|
+
hit.path +
|
|
280
|
+
(hit.legacyRoot ? ' [DEPRECATION_LEGACY_PATH_USED]' : '') +
|
|
281
|
+
(hit.legacyForm ? ' [LEGACY_EVIDENCE_PATH]' : '');
|
|
235
282
|
}
|
|
236
283
|
if (hit.legacyRoot) {
|
|
237
284
|
violations.push(`DEPRECATION_LEGACY_PATH_USED: ${hit.path} — move the file into .peaks/_runtime/${rdEvidenceDir}/${primaryRelativePath} (the canonical location) so subsequent runs resolve on the canonical path. The legacy \`peaks workspace migrate-change-scope\` helper was removed in v2.19.0; use \`peaks workspace migrate\` to relocate misplaced content.`);
|
|
@@ -264,8 +311,7 @@ export function resolveQaEvidencePaths(gates, projectRoot, rdEvidenceDir, reques
|
|
|
264
311
|
let allResolvedPathsCanonical = tracker.allResolvedPathsCanonical;
|
|
265
312
|
for (const gate of gates.slice(1)) {
|
|
266
313
|
const probeName = QA_EVIDENCE_PROBE[gate.name];
|
|
267
|
-
const relativePaths = (contractEvidencePaths('qa', 'verdict-issued', requestType, probeName) ?? [probeName])
|
|
268
|
-
.map((relative) => relative.replace('<rid>', rid));
|
|
314
|
+
const relativePaths = (contractEvidencePaths('qa', 'verdict-issued', requestType, probeName) ?? [probeName]).map((relative) => relative.replace('<rid>', rid));
|
|
269
315
|
const primaryRelativePath = relativePaths[0];
|
|
270
316
|
const canonicalQaPath = join(projectRoot, '.peaks', '_runtime', rdEvidenceDir, primaryRelativePath);
|
|
271
317
|
const candidates = [];
|
|
@@ -19,7 +19,9 @@ import { getSessionIdCanonical } from '../session/session-manager.js';
|
|
|
19
19
|
import { listPromotionExempt, listUnpromotedFeedback } from '../feedback/feedback-promotion-service.js';
|
|
20
20
|
import { QA_COMPLETE_STATES, RD_QA_HANDOFF_STATES, extractState, findRequestFile, qaGatesForType, rdGatesForType, resolveQaEvidencePaths, resolveRdEvidencePaths } from './pipeline-verify-gate-support.js';
|
|
21
21
|
export async function verifyPipeline(options) {
|
|
22
|
-
const requestType = isRequestType(options.requestType ?? '')
|
|
22
|
+
const requestType = isRequestType(options.requestType ?? '')
|
|
23
|
+
? options.requestType
|
|
24
|
+
: 'feature';
|
|
23
25
|
const violations = [];
|
|
24
26
|
const nextActions = [];
|
|
25
27
|
const rdGates = rdGatesForType(requestType);
|
|
@@ -95,7 +97,10 @@ export async function verifyPipeline(options) {
|
|
|
95
97
|
// binding-store is the preferred filesystem scope; falling through
|
|
96
98
|
// to `options.rid` would make every missing-evidence path look like
|
|
97
99
|
// a per-rid scope dir.
|
|
98
|
-
const rdEvidenceDir = resolvedChangeId ||
|
|
100
|
+
const rdEvidenceDir = resolvedChangeId ||
|
|
101
|
+
options.sessionId ||
|
|
102
|
+
getSessionIdCanonical(options.projectRoot) ||
|
|
103
|
+
options.rid;
|
|
99
104
|
const rdTracker = resolveRdEvidencePaths(rdGates, rdEvidenceDir, options.projectRoot, options.rid, requestType, violations, nextActions, { anyEvidenceResolved: false, allResolvedPathsCanonical: true });
|
|
100
105
|
// Check if RD reached qa-handoff
|
|
101
106
|
if (rdInvoked && !RD_QA_HANDOFF_STATES.has(rdState)) {
|
|
@@ -225,13 +230,19 @@ export async function verifyPipeline(options) {
|
|
|
225
230
|
// failures (e.g. permission denied). Treat as "no feedback" —
|
|
226
231
|
// fail-open on gate infrastructure rather than blocking ship.
|
|
227
232
|
feedbackGates[0].passed = true;
|
|
228
|
-
feedbackGates[0].detail =
|
|
233
|
+
feedbackGates[0].detail =
|
|
234
|
+
'feedback-promotion scan skipped (memory dir unreadable; treating as no feedback)';
|
|
229
235
|
}
|
|
230
236
|
const allFeedbackGatesPassed = feedbackGates.every((g) => g.passed);
|
|
231
237
|
const allRdGatesPassed = rdGates.every((g) => g.passed);
|
|
232
238
|
const allQaGatesPassed = qaGates.every((g) => g.passed);
|
|
233
|
-
const complete = rdInvoked &&
|
|
234
|
-
|
|
239
|
+
const complete = rdInvoked &&
|
|
240
|
+
qaInvoked &&
|
|
241
|
+
allRdGatesPassed &&
|
|
242
|
+
allQaGatesPassed &&
|
|
243
|
+
allFeedbackGatesPassed &&
|
|
244
|
+
RD_QA_HANDOFF_STATES.has(rdState) &&
|
|
245
|
+
QA_COMPLETE_STATES.has(qaState);
|
|
235
246
|
// Slice 025 — derive the `acceptedForm` and `gateC` verdict. The form is
|
|
236
247
|
// 'suffixed' when the contract's current path served the file and 'legacy'
|
|
237
248
|
// when the deprecated fallback did; 'none' if neither gate passed.
|
|
@@ -250,7 +261,7 @@ export async function verifyPipeline(options) {
|
|
|
250
261
|
const perfForm = formOf(perfGate);
|
|
251
262
|
const acceptedForm = !secGate?.passed && !perfGate?.passed
|
|
252
263
|
? 'none'
|
|
253
|
-
:
|
|
264
|
+
: secForm === 'legacy' || perfForm === 'legacy'
|
|
254
265
|
? 'legacy'
|
|
255
266
|
: 'suffixed';
|
|
256
267
|
const gateC = allQaGatesPassed ? 'pass' : 'fail';
|
|
@@ -126,7 +126,11 @@ export function readPlan(args) {
|
|
|
126
126
|
source: 'missing'
|
|
127
127
|
});
|
|
128
128
|
}
|
|
129
|
-
const canonical = canonicalPath({
|
|
129
|
+
const canonical = canonicalPath({
|
|
130
|
+
projectRoot: args.project,
|
|
131
|
+
sessionId: args.sessionId,
|
|
132
|
+
type: args.type
|
|
133
|
+
});
|
|
130
134
|
if (existsSync(canonical)) {
|
|
131
135
|
const guard = assertContained({
|
|
132
136
|
expectedBase: getSessionDir(args.project, args.sessionId),
|
|
@@ -26,7 +26,8 @@ function readPackageJson(projectRoot) {
|
|
|
26
26
|
try {
|
|
27
27
|
return JSON.parse(readFileSync(path, 'utf8'));
|
|
28
28
|
}
|
|
29
|
-
catch {
|
|
29
|
+
catch {
|
|
30
|
+
// TODO(g2): legacy silent catch — grace: 1 minor release (v2.14.0)
|
|
30
31
|
return null;
|
|
31
32
|
}
|
|
32
33
|
}
|
|
@@ -55,7 +56,9 @@ function listAuthTsFiles(projectRoot) {
|
|
|
55
56
|
if (entry.isDirectory()) {
|
|
56
57
|
stack.push(full);
|
|
57
58
|
}
|
|
58
|
-
else if (entry.isFile() &&
|
|
59
|
+
else if (entry.isFile() &&
|
|
60
|
+
/auth.*\.ts$|\.ts$/i.test(entry.name) &&
|
|
61
|
+
/auth/i.test(entry.name)) {
|
|
59
62
|
out.push(full);
|
|
60
63
|
}
|
|
61
64
|
}
|
|
@@ -197,12 +200,18 @@ function nowIso() {
|
|
|
197
200
|
return new Date().toISOString();
|
|
198
201
|
}
|
|
199
202
|
export function refreshPlan(args) {
|
|
200
|
-
const target = planPath({
|
|
203
|
+
const target = planPath({
|
|
204
|
+
projectRoot: args.project,
|
|
205
|
+
sessionId: args.sessionId,
|
|
206
|
+
type: args.type
|
|
207
|
+
});
|
|
201
208
|
// The body is a *function* of the project (sorted inputs + normalized
|
|
202
209
|
// output). To make the hash independent of the current wall clock, we
|
|
203
210
|
// always emit the same `Generated:` timestamp; the real `refreshedAt`
|
|
204
211
|
// is reported separately as the envelope field.
|
|
205
|
-
const rawBody = args.type === 'security'
|
|
212
|
+
const rawBody = args.type === 'security'
|
|
213
|
+
? buildSecurityPlanBody(args.project)
|
|
214
|
+
: buildPerfPlanBody(args.project);
|
|
206
215
|
const hash = hashNormalizedBody(rawBody);
|
|
207
216
|
const wouldWrite = [target];
|
|
208
217
|
const refreshedAt = nowIso();
|
|
@@ -260,7 +269,10 @@ export function refreshPlan(args) {
|
|
|
260
269
|
let cursor = parent;
|
|
261
270
|
// Bound the walk: stop at the project root (inclusive). If the
|
|
262
271
|
// project root itself does not exist, that's an error.
|
|
263
|
-
while (cursor !== projectRoot &&
|
|
272
|
+
while (cursor !== projectRoot &&
|
|
273
|
+
cursor !== join(projectRoot, '..') &&
|
|
274
|
+
cursor !== '' &&
|
|
275
|
+
cursor !== sep) {
|
|
264
276
|
if (existsSync(cursor)) {
|
|
265
277
|
existingParent = cursor;
|
|
266
278
|
break;
|
|
@@ -345,7 +357,9 @@ export function refreshPlan(args) {
|
|
|
345
357
|
export { normalizePlanBody };
|
|
346
358
|
// Helper for the CLI to use the same body builder.
|
|
347
359
|
export function renderPlanBody(args) {
|
|
348
|
-
return args.type === 'security'
|
|
360
|
+
return args.type === 'security'
|
|
361
|
+
? buildSecurityPlanBody(args.project)
|
|
362
|
+
: buildPerfPlanBody(args.project);
|
|
349
363
|
}
|
|
350
364
|
// hash helper for tests that want to assert a body against a fixture.
|
|
351
365
|
export function hashBody(body) {
|