peaks-loop 4.0.54 → 4.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +61 -0
- package/README-en.md +16 -1
- package/README.md +15 -1
- package/config/eslint/.peaks-rules.cjs +158 -13
- package/config/eslint/tsconfig.lint.json +47 -0
- package/dist/cli/cli-envelope.d.ts +114 -0
- package/dist/cli/cli-envelope.js +85 -0
- package/dist/cli/cli-helpers.d.ts +1 -1
- package/dist/cli/cli-helpers.js +8 -4
- package/dist/cli/commands/_cli-error-envelope.js +1 -1
- package/dist/cli/commands/_register.js +86 -39
- package/dist/cli/commands/_super.js +40 -7
- package/dist/cli/commands/adapter-commands-s2a.js +8 -7
- package/dist/cli/commands/adapter-commands.d.ts +2 -2
- package/dist/cli/commands/adapter-commands.js +7 -8
- package/dist/cli/commands/api-diff-commands.js +5 -4
- package/dist/cli/commands/asset-commands.d.ts +2 -2
- package/dist/cli/commands/asset-commands.js +135 -132
- package/dist/cli/commands/audit-commands.d.ts +1 -1
- package/dist/cli/commands/audit-commands.js +75 -32
- package/dist/cli/commands/autonomous-swarm-commands.d.ts +1 -1
- package/dist/cli/commands/autonomous-swarm-commands.js +14 -8
- package/dist/cli/commands/baseline-commands.js +34 -9
- package/dist/cli/commands/bee-commands.d.ts +1 -1
- package/dist/cli/commands/bee-commands.js +18 -21
- package/dist/cli/commands/best-practice-scan-command.js +6 -34
- package/dist/cli/commands/best-practice-scan-helpers.d.ts +12 -0
- package/dist/cli/commands/best-practice-scan-helpers.js +37 -0
- package/dist/cli/commands/capability-commands.d.ts +1 -1
- package/dist/cli/commands/capability-commands.js +14 -4
- package/dist/cli/commands/capability-worker-config-sc-commands.d.ts +1 -1
- package/dist/cli/commands/changeset-commands.js +21 -18
- package/dist/cli/commands/code-gate-command.js +9 -2
- package/dist/cli/commands/code-job-shape-commands-read-job-shape.d.ts +15 -0
- package/dist/cli/commands/code-job-shape-commands-read-job-shape.js +70 -0
- package/dist/cli/commands/code-job-shape-commands.js +21 -45
- package/dist/cli/commands/code-mode-gate-commands.d.ts +15 -1
- package/dist/cli/commands/code-mode-gate-commands.js +19 -199
- package/dist/cli/commands/code-mode-gate-plan-command.d.ts +14 -0
- package/dist/cli/commands/code-mode-gate-plan-command.js +23 -0
- package/dist/cli/commands/code-mode-gate-should-pause-command.d.ts +24 -0
- package/dist/cli/commands/code-mode-gate-should-pause-command.js +137 -0
- package/dist/cli/commands/code-mode-gate-should-pause-envelope.d.ts +59 -0
- package/dist/cli/commands/code-mode-gate-should-pause-envelope.js +144 -0
- package/dist/cli/commands/code-orchestrator-can-do.js +4 -4
- package/dist/cli/commands/code-review-commands.js +18 -3
- package/dist/cli/commands/code-run-command.js +44 -7
- package/dist/cli/commands/code-runtime-commands.d.ts +17 -0
- package/dist/cli/commands/code-runtime-commands.js +105 -73
- package/dist/cli/commands/codegraph-commands.js +11 -6
- package/dist/cli/commands/codegraph-status-command.js +6 -2
- package/dist/cli/commands/comments-commands.d.ts +14 -0
- package/dist/cli/commands/comments-commands.js +96 -0
- package/dist/cli/commands/compact-command.js +52 -26
- package/dist/cli/commands/complexity-commands.js +6 -7
- package/dist/cli/commands/config-commands.d.ts +1 -1
- package/dist/cli/commands/config-commands.js +33 -9
- package/dist/cli/commands/container-commands.js +39 -15
- package/dist/cli/commands/context-commands.d.ts +1 -1
- package/dist/cli/commands/context-commands.js +40 -13
- package/dist/cli/commands/core/artifacts-command.js +11 -3
- package/dist/cli/commands/core/binding-commands.js +9 -6
- package/dist/cli/commands/core/doctor-command.js +7 -4
- package/dist/cli/commands/core/memory-command.js +57 -21
- package/dist/cli/commands/core/proxy-command.js +3 -1
- package/dist/cli/commands/core/session-command.js +16 -8
- package/dist/cli/commands/core/skill-command.js +32 -17
- package/dist/cli/commands/core/standards-command.js +56 -14
- package/dist/cli/commands/cron-commands-actions.d.ts +43 -0
- package/dist/cli/commands/cron-commands-actions.js +128 -0
- package/dist/cli/commands/cron-commands-schedule.d.ts +86 -0
- package/dist/cli/commands/cron-commands-schedule.js +151 -0
- package/dist/cli/commands/cron-commands.d.ts +35 -32
- package/dist/cli/commands/cron-commands.js +167 -211
- package/dist/cli/commands/cron-scheduler-commands.js +40 -20
- package/dist/cli/commands/cron-scheduler-persist.d.ts +110 -0
- package/dist/cli/commands/cron-scheduler-persist.js +171 -0
- package/dist/cli/commands/dashboard-long-run.js +45 -14
- package/dist/cli/commands/dashboard-summary.js +15 -5
- package/dist/cli/commands/dispatch-commands.js +65 -32
- package/dist/cli/commands/dispatch-from-dag.js +9 -10
- package/dist/cli/commands/doc-commands.js +8 -9
- package/dist/cli/commands/doctor/invoke-from-code.js +1 -1
- package/dist/cli/commands/e2e-verify-env.d.ts +19 -0
- package/dist/cli/commands/e2e-verify-env.js +19 -0
- package/dist/cli/commands/e2e-verify.d.ts +3 -14
- package/dist/cli/commands/e2e-verify.js +49 -29
- package/dist/cli/commands/ecc-commands.d.ts +18 -23
- package/dist/cli/commands/ecc-commands.js +39 -36
- package/dist/cli/commands/evidence-commands.js +10 -6
- package/dist/cli/commands/evolution-commands.d.ts +2 -2
- package/dist/cli/commands/evolution-commands.js +109 -115
- package/dist/cli/commands/feedback-commands-helpers.d.ts +22 -0
- package/dist/cli/commands/feedback-commands-helpers.js +33 -0
- package/dist/cli/commands/feedback-commands.js +15 -38
- package/dist/cli/commands/final-review-commands.d.ts +1 -1
- package/dist/cli/commands/final-review-commands.js +24 -22
- package/dist/cli/commands/fixture-commands.d.ts +1 -1
- package/dist/cli/commands/fixture-commands.js +17 -6
- package/dist/cli/commands/fork-commands-sync-verify.d.ts +12 -0
- package/dist/cli/commands/fork-commands-sync-verify.js +72 -0
- package/dist/cli/commands/fork-commands.js +19 -51
- package/dist/cli/commands/fresh-context-commands.js +3 -1
- package/dist/cli/commands/gate-commands-enforce.d.ts +82 -0
- package/dist/cli/commands/gate-commands-enforce.js +210 -0
- package/dist/cli/commands/gate-commands.d.ts +1 -1
- package/dist/cli/commands/gate-commands.js +85 -205
- package/dist/cli/commands/governance-classify-contract-commands.d.ts +1 -1
- package/dist/cli/commands/governance-classify-contract-commands.js +28 -17
- package/dist/cli/commands/heartbeat-commands-action.d.ts +7 -0
- package/dist/cli/commands/heartbeat-commands-action.js +192 -0
- package/dist/cli/commands/heartbeat-commands-validation.d.ts +57 -0
- package/dist/cli/commands/heartbeat-commands-validation.js +120 -0
- package/dist/cli/commands/heartbeat-commands.d.ts +27 -6
- package/dist/cli/commands/heartbeat-commands.js +19 -198
- package/dist/cli/commands/hook-handle.d.ts +1 -1
- package/dist/cli/commands/hook-handle.js +46 -13
- package/dist/cli/commands/hooks-commands.d.ts +1 -1
- package/dist/cli/commands/hooks-commands.js +18 -6
- package/dist/cli/commands/ide-commands.d.ts +1 -1
- package/dist/cli/commands/ide-commands.js +5 -3
- package/dist/cli/commands/impact-commands.js +8 -2
- package/dist/cli/commands/job-add-slice-command.d.ts +43 -0
- package/dist/cli/commands/job-add-slice-command.js +151 -0
- package/dist/cli/commands/job-commands.d.ts +64 -0
- package/dist/cli/commands/job-commands.js +134 -63
- package/dist/cli/commands/lease-metrics-commands-support.d.ts +73 -0
- package/dist/cli/commands/lease-metrics-commands-support.js +67 -0
- package/dist/cli/commands/lease-metrics-commands.d.ts +3 -44
- package/dist/cli/commands/lease-metrics-commands.js +21 -61
- package/dist/cli/commands/lease-stats-commands.d.ts +1 -1
- package/dist/cli/commands/lease-stats-commands.js +9 -6
- package/dist/cli/commands/lint-commands.d.ts +9 -3
- package/dist/cli/commands/lint-commands.js +15 -8
- package/dist/cli/commands/log-commands.d.ts +1 -1
- package/dist/cli/commands/log-commands.js +8 -6
- package/dist/cli/commands/loop-commands.d.ts +1 -1
- package/dist/cli/commands/loop-commands.js +50 -50
- package/dist/cli/commands/loop-eval-commands.d.ts +1 -1
- package/dist/cli/commands/loop-eval-commands.js +101 -30
- package/dist/cli/commands/memory-commands.js +21 -13
- package/dist/cli/commands/migrate-1-4-1-command.js +1 -1
- package/dist/cli/commands/migrate-v2-10-to-v2-11-command.js +2 -2
- package/dist/cli/commands/mut-commands-helpers.d.ts +30 -0
- package/dist/cli/commands/mut-commands-helpers.js +43 -0
- package/dist/cli/commands/mut-commands.js +16 -58
- package/dist/cli/commands/observability-commands-queries.d.ts +37 -0
- package/dist/cli/commands/observability-commands-queries.js +113 -0
- package/dist/cli/commands/observability-commands.d.ts +1 -1
- package/dist/cli/commands/observability-commands.js +7 -92
- package/dist/cli/commands/openspec-commands.d.ts +1 -1
- package/dist/cli/commands/openspec-commands.js +20 -8
- package/dist/cli/commands/outer-cache-commands.js +18 -7
- package/dist/cli/commands/perf-audit-commands.d.ts +1 -1
- package/dist/cli/commands/perf-audit-commands.js +12 -7
- package/dist/cli/commands/perf-commands.d.ts +1 -1
- package/dist/cli/commands/perf-commands.js +5 -5
- package/dist/cli/commands/playwright-commands.d.ts +1 -1
- package/dist/cli/commands/playwright-commands.js +20 -8
- package/dist/cli/commands/polyrepo-commands.js +21 -19
- package/dist/cli/commands/prd-blocks-commands.js +1 -3
- package/dist/cli/commands/prd-commands.d.ts +1 -1
- package/dist/cli/commands/prd-commands.js +16 -6
- package/dist/cli/commands/preferences-commands.js +13 -12
- package/dist/cli/commands/primer-command.js +5 -5
- package/dist/cli/commands/project-commands.d.ts +1 -1
- package/dist/cli/commands/project-commands.js +33 -9
- package/dist/cli/commands/qa-business-review-commands.js +16 -12
- package/dist/cli/commands/qa-commands.d.ts +1 -1
- package/dist/cli/commands/qa-commands.js +3 -5
- package/dist/cli/commands/release-commands.d.ts +3 -1
- package/dist/cli/commands/release-commands.js +33 -22
- package/dist/cli/commands/request-commands.js +47 -30
- package/dist/cli/commands/request-format-helpers.js +1 -1
- package/dist/cli/commands/retrospective-commands.d.ts +18 -11
- package/dist/cli/commands/retrospective-commands.js +24 -173
- package/dist/cli/commands/retrospective-index-command.d.ts +26 -0
- package/dist/cli/commands/retrospective-index-command.js +99 -0
- package/dist/cli/commands/retrospective-project-root.d.ts +9 -0
- package/dist/cli/commands/retrospective-project-root.js +15 -0
- package/dist/cli/commands/retrospective-search-command.d.ts +27 -0
- package/dist/cli/commands/retrospective-search-command.js +97 -0
- package/dist/cli/commands/retrospective-show-command.d.ts +23 -0
- package/dist/cli/commands/retrospective-show-command.js +80 -0
- package/dist/cli/commands/reviewer-commands.d.ts +1 -1
- package/dist/cli/commands/role-commands.js +14 -9
- package/dist/cli/commands/runtime-commands.js +14 -7
- package/dist/cli/commands/sc-commands.d.ts +1 -1
- package/dist/cli/commands/sc-commands.js +39 -6
- package/dist/cli/commands/scan-commands.js +36 -13
- package/dist/cli/commands/security-audit-commands.d.ts +1 -1
- package/dist/cli/commands/security-audit-commands.js +12 -7
- package/dist/cli/commands/sediment-commands.d.ts +2 -2
- package/dist/cli/commands/sediment-commands.js +146 -139
- package/dist/cli/commands/session-24h-mode.js +15 -2
- package/dist/cli/commands/session-checkpoint-command.js +1 -1
- package/dist/cli/commands/session-migrate-skill-name.js +1 -1
- package/dist/cli/commands/shadcn-commands.d.ts +1 -1
- package/dist/cli/commands/shadcn-commands.js +3 -1
- package/dist/cli/commands/share-commands.js +38 -39
- package/dist/cli/commands/skill-conformance-commands.d.ts +1 -1
- package/dist/cli/commands/skill-conformance-commands.js +1 -1
- package/dist/cli/commands/skill-loop-engineering-readiness-commands.js +16 -17
- package/dist/cli/commands/skill-visibility.js +2 -2
- package/dist/cli/commands/slice-commands.d.ts +1 -1
- package/dist/cli/commands/slice-commands.js +36 -12
- package/dist/cli/commands/slice-integrate-commands.js +6 -7
- package/dist/cli/commands/slice-review-commands-helpers.d.ts +26 -0
- package/dist/cli/commands/slice-review-commands-helpers.js +26 -0
- package/dist/cli/commands/slice-review-commands.js +16 -24
- package/dist/cli/commands/smoke-commands-add-path.d.ts +14 -0
- package/dist/cli/commands/smoke-commands-add-path.js +39 -0
- package/dist/cli/commands/smoke-commands-define.d.ts +18 -0
- package/dist/cli/commands/smoke-commands-define.js +97 -0
- package/dist/cli/commands/smoke-commands-run.d.ts +18 -0
- package/dist/cli/commands/smoke-commands-run.js +119 -0
- package/dist/cli/commands/smoke-commands.d.ts +10 -1
- package/dist/cli/commands/smoke-commands.js +17 -179
- package/dist/cli/commands/sop-commands.d.ts +1 -1
- package/dist/cli/commands/sop-commands.js +38 -10
- package/dist/cli/commands/statusline-commands.d.ts +1 -1
- package/dist/cli/commands/statusline-commands.js +21 -10
- package/dist/cli/commands/sub-agent/detached.js +3 -3
- package/dist/cli/commands/sub-agent-dispatch-guard.d.ts +1 -1
- package/dist/cli/commands/sub-agent-shared.js +1 -1
- package/dist/cli/commands/sub-agent-shutdown-commands.js +17 -9
- package/dist/cli/commands/swarm-commands.d.ts +1 -1
- package/dist/cli/commands/swarm-commands.js +13 -6
- package/dist/cli/commands/tech-commands-helpers.d.ts +37 -0
- package/dist/cli/commands/tech-commands-helpers.js +24 -0
- package/dist/cli/commands/tech-commands.d.ts +2 -29
- package/dist/cli/commands/tech-commands.js +15 -28
- package/dist/cli/commands/test-commands.js +27 -7
- package/dist/cli/commands/user-touchpoint-commands.js +1 -3
- package/dist/cli/commands/verdict-aggregate-command.d.ts +1 -1
- package/dist/cli/commands/verdict-aggregate-command.js +20 -7
- package/dist/cli/commands/vm-commands.js +48 -19
- package/dist/cli/commands/wave-plan-commands.js +5 -2
- package/dist/cli/commands/web-commands.js +14 -4
- package/dist/cli/commands/web-lifecycle-commands.js +5 -3
- package/dist/cli/commands/workflow-commands.d.ts +1 -1
- package/dist/cli/commands/workflow-commands.js +64 -29
- package/dist/cli/commands/workflow-lifecycle-commands.js +19 -17
- package/dist/cli/commands/workflow-plan-commands-actions.d.ts +20 -0
- package/dist/cli/commands/workflow-plan-commands-actions.js +115 -0
- package/dist/cli/commands/workflow-plan-commands-session.d.ts +17 -0
- package/dist/cli/commands/workflow-plan-commands-session.js +59 -0
- package/dist/cli/commands/workflow-plan-commands.d.ts +10 -21
- package/dist/cli/commands/workflow-plan-commands.js +15 -141
- package/dist/cli/commands/workspace/clean-command.js +4 -1
- package/dist/cli/commands/workspace/helpers.js +2 -1
- package/dist/cli/commands/workspace/init-command.js +80 -20
- package/dist/cli/commands/workspace/reconcile-command.js +3 -1
- package/dist/cli/commands/workspace-commands.d.ts +1 -1
- package/dist/cli/commands/workspace-commands.js +1 -1
- package/dist/cli/commands/worktree-auth-commands.d.ts +1 -1
- package/dist/cli/commands/worktree-auth-commands.js +16 -169
- package/dist/cli/commands/worktree-auth-grant-command.d.ts +14 -0
- package/dist/cli/commands/worktree-auth-grant-command.js +118 -0
- package/dist/cli/commands/worktree-auth-manage-commands.d.ts +17 -0
- package/dist/cli/commands/worktree-auth-manage-commands.js +128 -0
- package/dist/cli/commands/worktree-lease-commands.d.ts +1 -1
- package/dist/cli/commands/worktree-lease-commands.js +65 -37
- package/dist/cli/index.js +6 -2
- package/dist/cli/program.js +8 -10
- package/dist/hooks/pre-tool-use-sub-agent.js +1 -6
- package/dist/reporters/bdd-reporter.js +9 -3
- package/dist/services/24h-mode/auto-engage.d.ts +19 -0
- package/dist/services/24h-mode/auto-engage.js +35 -0
- package/dist/services/24h-mode/decider.js +5 -1
- package/dist/services/24h-mode/store.js +4 -2
- package/dist/services/adapter/adapter-registry.js +20 -8
- package/dist/services/adapter/adapter.d.ts +2 -2
- package/dist/services/adapter/auto-adapter.d.ts +2 -2
- package/dist/services/adapter/auto-adapter.js +1 -1
- package/dist/services/adapter/claude-adapter.d.ts +1 -1
- package/dist/services/adapter/claude-adapter.js +8 -8
- package/dist/services/adapter/codex-adapter.d.ts +2 -2
- package/dist/services/adapter/codex-adapter.js +20 -8
- package/dist/services/adapter/copilot-adapter.d.ts +2 -2
- package/dist/services/adapter/copilot-adapter.js +20 -8
- package/dist/services/artifacts/artifact-prerequisites.js +10 -8
- package/dist/services/artifacts/artifact-service.js +3 -1
- package/dist/services/artifacts/artifact-template-bodies.d.ts +12 -0
- package/dist/services/artifacts/artifact-template-bodies.js +165 -0
- package/dist/services/artifacts/artifact-templates.js +26 -168
- package/dist/services/artifacts/request-artifact-service.js +14 -7
- package/dist/services/artifacts/request-artifact-state-helpers.d.ts +3 -2
- package/dist/services/artifacts/request-artifact-state-helpers.js +3 -5
- package/dist/services/artifacts/workspace-artifact-helpers.d.ts +28 -0
- package/dist/services/artifacts/workspace-artifact-helpers.js +54 -0
- package/dist/services/artifacts/workspace-service.d.ts +3 -22
- package/dist/services/artifacts/workspace-service.js +10 -60
- package/dist/services/audit/artifact-writer.js +21 -21
- package/dist/services/audit/audit-goal-service.js +2 -2
- package/dist/services/audit/backing-detector.js +7 -4
- package/dist/services/audit/classifier.js +3 -3
- package/dist/services/audit/decision-writer.js +13 -9
- package/dist/services/audit/enforcers/active-skill-resolver.js +15 -7
- package/dist/services/audit/enforcers/design-draft-confirm.js +4 -4
- package/dist/services/audit/enforcers/lint-audit-regression.js +10 -5
- package/dist/services/audit/enforcers/lint-bee-runtime-contract.js +16 -8
- package/dist/services/audit/enforcers/lint-catalog-governance.js +8 -4
- package/dist/services/audit/enforcers/lint-output-style.js +4 -2
- package/dist/services/audit/enforcers/lint-peaks-code-runtime.js +8 -3
- package/dist/services/audit/enforcers/lint-peaks-skill-runtime.js +8 -3
- package/dist/services/audit/enforcers/lint-peaks-ui-sc-txt-runtime.js +20 -20
- package/dist/services/audit/enforcers/lint-prd-artifact-handoff.js +5 -5
- package/dist/services/audit/enforcers/lint-prd-source-snapshot.d.ts +1 -1
- package/dist/services/audit/enforcers/lint-prd-source-snapshot.js +5 -5
- package/dist/services/audit/enforcers/lint-qa-gateguard-and-runtime.js +10 -10
- package/dist/services/audit/enforcers/lint-rd-handoff-coverage.js +10 -8
- package/dist/services/audit/enforcers/lint-reference-shape.js +50 -18
- package/dist/services/audit/enforcers/lint-skill-presence-mandatory.js +5 -5
- package/dist/services/audit/enforcers/lint-style.js +44 -11
- package/dist/services/audit/enforcers/lint-workflow-shape.js +4 -2
- package/dist/services/audit/enforcers/login-gate.js +2 -6
- package/dist/services/audit/enforcers/mock-placement.js +2 -2
- package/dist/services/audit/enforcers/no-root-pollution.js +38 -9
- package/dist/services/audit/enforcers/pre-rd-scan.js +1 -1
- package/dist/services/audit/enforcers/prototype-fidelity.js +1 -1
- package/dist/services/audit/enforcers/resume-detection.js +5 -4
- package/dist/services/audit/prose-ratio-calculator.js +1 -1
- package/dist/services/audit/red-line-catalog-p2-a-bee-runtime.d.ts +39 -0
- package/dist/services/audit/red-line-catalog-p2-a-bee-runtime.js +205 -0
- package/dist/services/audit/red-line-catalog-p2-a-lint-style.d.ts +52 -0
- package/dist/services/audit/red-line-catalog-p2-a-lint-style.js +205 -0
- package/dist/services/audit/red-line-catalog-p2-a.js +3 -374
- package/dist/services/audit/red-line-catalog-p2-b.js +26 -26
- package/dist/services/audit/red-line-catalog.js +26 -38
- package/dist/services/audit/red-lines-service.js +64 -49
- package/dist/services/audit/scanners/openspec-scanner.js +2 -2
- package/dist/services/audit/scanners/rules-tree-scanner.js +2 -2
- package/dist/services/audit/scanners/skills-tree-scanner.js +2 -2
- package/dist/services/audit/static-service.js +3 -3
- package/dist/services/audit-independent/index.d.ts +2 -2
- package/dist/services/audit-independent/index.js +2 -2
- package/dist/services/audit-independent/perf-audit-service.js +19 -8
- package/dist/services/audit-independent/security-audit-service.js +31 -16
- package/dist/services/autonomous-swarm/autonomous-swarm-service.js +75 -46
- package/dist/services/best-practice/output-formatter.js +7 -1
- package/dist/services/capability-audit-service/cross-check.js +11 -5
- package/dist/services/capability-audit-service/runner.js +15 -7
- package/dist/services/capability-baseline/store.js +16 -4
- package/dist/services/capability-baseline/types.js +15 -3
- package/dist/services/capability-baseline/validator.js +43 -7
- package/dist/services/capability-guard-runner/contracts/J02.js +36 -6
- package/dist/services/capability-guard-runner/contracts/J03.js +20 -11
- package/dist/services/capability-guard-runner/contracts/J04.js +24 -15
- package/dist/services/capability-guard-runner/contracts/J05.js +26 -10
- package/dist/services/capability-guard-runner/contracts/J07.js +8 -2
- package/dist/services/capability-guard-runner/contracts/J08.js +22 -5
- package/dist/services/capability-guard-runner/contracts/J10.js +6 -2
- package/dist/services/capability-guard-runner/contracts/J11.d.ts +5 -0
- package/dist/services/capability-guard-runner/contracts/J11.js +14 -2
- package/dist/services/capability-guard-runner/contracts/J12.js +12 -3
- package/dist/services/capability-guard-runner/diff.js +1 -5
- package/dist/services/changeset/changeset-check-service.js +1 -3
- package/dist/services/classify/classify-service.js +20 -8
- package/dist/services/classify/classify-types.js +22 -9
- package/dist/services/code/auto-compact-lifecycle.js +62 -39
- package/dist/services/code/auto-compact-modes.js +2 -2
- package/dist/services/code/auto-compact-orchestrator.js +14 -9
- package/dist/services/code/batch-heartbeat-poller.d.ts +10 -0
- package/dist/services/code/batch-heartbeat-poller.js +17 -1
- package/dist/services/code/compact-event-settle-types.d.ts +80 -0
- package/dist/services/code/compact-event-settle-types.js +20 -0
- package/dist/services/code/compact-event-settle.d.ts +3 -68
- package/dist/services/code/compact-event-settle.js +14 -10
- package/dist/services/code/dag-orchestrator.js +32 -26
- package/dist/services/code/job-shape-decision.js +3 -1
- package/dist/services/code/mode-gate-types.d.ts +57 -0
- package/dist/services/code/mode-gate-types.js +66 -0
- package/dist/services/code/mode-gate.d.ts +4 -58
- package/dist/services/code/mode-gate.js +25 -69
- package/dist/services/code/orchestrator-can-do-advisories.d.ts +30 -0
- package/dist/services/code/orchestrator-can-do-advisories.js +81 -0
- package/dist/services/code/orchestrator-can-do-probes.d.ts +30 -0
- package/dist/services/code/orchestrator-can-do-probes.js +77 -0
- package/dist/services/code/orchestrator-can-do.d.ts +11 -22
- package/dist/services/code/orchestrator-can-do.js +37 -137
- package/dist/services/code/post-compact-checkpoint.d.ts +28 -0
- package/dist/services/code/post-compact-checkpoint.js +57 -0
- package/dist/services/code/post-compact-detector.js +16 -48
- package/dist/services/code/step-08-gate.d.ts +4 -3
- package/dist/services/code/step-08-gate.js +21 -9
- package/dist/services/code/user-touchpoint-classifier.js +0 -7
- package/dist/services/code-review/ecc-bridge.d.ts +6 -6
- package/dist/services/code-review/ecc-bridge.js +23 -23
- package/dist/services/codegraph/codegraph-autorefresh.js +56 -39
- package/dist/services/codegraph/codegraph-config-repair-writer.js +4 -1
- package/dist/services/codegraph/codegraph-exclude-integrity.js +4 -1
- package/dist/services/codegraph/codegraph-exclude-repair.js +1 -2
- package/dist/services/codegraph/codegraph-index-integrity.js +1 -1
- package/dist/services/codegraph/codegraph-preflight-service.d.ts +3 -26
- package/dist/services/codegraph/codegraph-preflight-service.js +16 -37
- package/dist/services/codegraph/codegraph-preflight-structure.d.ts +32 -0
- package/dist/services/codegraph/codegraph-preflight-structure.js +33 -0
- package/dist/services/codegraph/codegraph-process-runner.js +12 -1
- package/dist/services/codegraph/codegraph-service.js +9 -1
- package/dist/services/comments/citation-rules.d.ts +154 -0
- package/dist/services/comments/citation-rules.js +241 -0
- package/dist/services/comments/comment-audit.d.ts +57 -0
- package/dist/services/comments/comment-audit.js +100 -0
- package/dist/services/comments/comment-citations.d.ts +60 -0
- package/dist/services/comments/comment-citations.js +186 -0
- package/dist/services/comments/comment-hygiene.d.ts +79 -0
- package/dist/services/comments/comment-hygiene.js +133 -0
- package/dist/services/comments/comment-prune.d.ts +88 -0
- package/dist/services/comments/comment-prune.js +148 -0
- package/dist/services/comments/prune-apply.d.ts +60 -0
- package/dist/services/comments/prune-apply.js +150 -0
- package/dist/services/comments/repo-path-probe.d.ts +43 -0
- package/dist/services/comments/repo-path-probe.js +78 -0
- package/dist/services/compact/request-transition-hook.js +2 -1
- package/dist/services/compact/suggest-service.d.ts +3 -61
- package/dist/services/compact/suggest-service.js +9 -12
- package/dist/services/compact/suggest-types.d.ts +76 -0
- package/dist/services/compact/suggest-types.js +10 -0
- package/dist/services/compact-history/compact-history-service.js +2 -2
- package/dist/services/compact-statusline/compact-lifecycle-store.d.ts +2 -32
- package/dist/services/compact-statusline/compact-lifecycle-store.js +7 -12
- package/dist/services/compact-statusline/compact-lifecycle-types.d.ts +32 -0
- package/dist/services/compact-statusline/compact-lifecycle-types.js +8 -0
- package/dist/services/compact-statusline/compact-statusline-cell-table.d.ts +42 -0
- package/dist/services/compact-statusline/compact-statusline-cell-table.js +63 -0
- package/dist/services/compact-statusline/compact-statusline-service.d.ts +4 -21
- package/dist/services/compact-statusline/compact-statusline-service.js +9 -101
- package/dist/services/compact-statusline/compact-statusline-state.d.ts +4 -0
- package/dist/services/compact-statusline/compact-statusline-state.js +50 -0
- package/dist/services/config/config-migration.js +2 -2
- package/dist/services/config/config-restore.js +1 -1
- package/dist/services/config/config-rollback.js +1 -1
- package/dist/services/config/config-safety.js +28 -10
- package/dist/services/config/config-service.js +114 -31
- package/dist/services/config/model-routing.js +5 -2
- package/dist/services/config/proxy-service.js +6 -1
- package/dist/services/config/workspace-state-service.js +17 -5
- package/dist/services/context/auto-compact-dispatcher-input.d.ts +38 -0
- package/dist/services/context/auto-compact-dispatcher-input.js +9 -0
- package/dist/services/context/auto-compact-dispatcher.d.ts +2 -30
- package/dist/services/context/auto-compact-reader-input.d.ts +30 -0
- package/dist/services/context/auto-compact-reader-input.js +8 -0
- package/dist/services/context/auto-compact-reader.d.ts +2 -24
- package/dist/services/context/auto-compact-reader.js +4 -1
- package/dist/services/context/auto-compact-thresholds.d.ts +54 -0
- package/dist/services/context/auto-compact-thresholds.js +19 -0
- package/dist/services/context/auto-compact-types.d.ts +2 -46
- package/dist/services/context/auto-compact-types.js +1 -11
- package/dist/services/context/build-dispatch-system-prompt.js +2 -2
- package/dist/services/context/collector.js +8 -10
- package/dist/services/context/context-audit-hint.js +7 -5
- package/dist/services/context/context-audit-keys.d.ts +15 -0
- package/dist/services/context/context-audit-keys.js +77 -0
- package/dist/services/context/context-audit-limits.d.ts +20 -0
- package/dist/services/context/context-audit-limits.js +31 -0
- package/dist/services/context/context-audit-scan.d.ts +19 -0
- package/dist/services/context/context-audit-scan.js +246 -0
- package/dist/services/context/context-audit-types.d.ts +65 -0
- package/dist/services/context/context-audit-types.js +10 -0
- package/dist/services/context/context-audit.d.ts +13 -59
- package/dist/services/context/context-audit.js +38 -254
- package/dist/services/context/context-builder.js +4 -4
- package/dist/services/context/context-schema.d.ts +1 -1
- package/dist/services/context/context-schema.js +13 -13
- package/dist/services/context/doc-retriever.js +2 -2
- package/dist/services/context/harness-context-witness.js +43 -24
- package/dist/services/context/harness-window-config.js +27 -7
- package/dist/services/context/ide-detect.js +2 -1
- package/dist/services/context/index.d.ts +1 -1
- package/dist/services/context/memory-index-reader.js +3 -9
- package/dist/services/context/memory-preflight-config.js +3 -5
- package/dist/services/context/memory-preflight-service.d.ts +2 -20
- package/dist/services/context/memory-preflight-service.js +37 -68
- package/dist/services/context/memory-preflight-support.d.ts +48 -0
- package/dist/services/context/memory-preflight-support.js +56 -0
- package/dist/services/context/post-compact-reinjection.js +3 -3
- package/dist/services/context/renderer.js +7 -3
- package/dist/services/context/spillover-store.js +3 -1
- package/dist/services/context/summary-view.js +1 -1
- package/dist/services/context/threshold.js +2 -2
- package/dist/services/context/tokenizer.js +3 -3
- package/dist/services/crystallization/crystallization-brief-schema.d.ts +80 -0
- package/dist/services/crystallization/crystallization-brief-schema.js +159 -0
- package/dist/services/crystallization/crystallization-service.d.ts +7 -7
- package/dist/services/crystallization/crystallization-service.js +56 -55
- package/dist/services/crystallization/crystallization-store.d.ts +2 -2
- package/dist/services/crystallization/crystallization-store.js +37 -20
- package/dist/services/crystallization/crystallization-types.d.ts +4 -56
- package/dist/services/crystallization/crystallization-types.js +31 -184
- package/dist/services/crystallization/evidence-brief-builder.d.ts +3 -3
- package/dist/services/crystallization/evidence-brief-builder.js +32 -38
- package/dist/services/crystallization/index.d.ts +4 -4
- package/dist/services/crystallization/index.js +4 -4
- package/dist/services/dashboard/project-dashboard-service.js +7 -1
- package/dist/services/dispatch/await-batch-helpers.d.ts +55 -0
- package/dist/services/dispatch/await-batch-helpers.js +206 -0
- package/dist/services/dispatch/await-batch.d.ts +50 -7
- package/dist/services/dispatch/await-batch.js +97 -194
- package/dist/services/dispatch/batch-counter.js +2 -1
- package/dist/services/dispatch/conflict-replay.js +2 -2
- package/dist/services/dispatch/contract-store.js +5 -2
- package/dist/services/dispatch/dispatch-record-input-types.d.ts +81 -0
- package/dist/services/dispatch/dispatch-record-input-types.js +1 -0
- package/dist/services/dispatch/dispatch-record-types.d.ts +6 -73
- package/dist/services/dispatch/dispatch-record-upgrade-fields.d.ts +72 -0
- package/dist/services/dispatch/dispatch-record-upgrade-fields.js +242 -0
- package/dist/services/dispatch/dispatch-record-upgrade-guards.d.ts +15 -0
- package/dist/services/dispatch/dispatch-record-upgrade-guards.js +55 -0
- package/dist/services/dispatch/dispatch-record-upgrade.d.ts +2 -4
- package/dist/services/dispatch/dispatch-record-upgrade.js +21 -213
- package/dist/services/dispatch/dispatch-record-writer.js +54 -26
- package/dist/services/dispatch/dispatch-sub-agent.js +7 -2
- package/dist/services/dispatch/e2e-fixtures.js +1 -1
- package/dist/services/dispatch/isolation-lease.js +39 -17
- package/dist/services/dispatch/merge-back-runner.js +51 -11
- package/dist/services/dispatch/service-shutdown.js +4 -1
- package/dist/services/dispatch/slice-dag-types.d.ts +116 -0
- package/dist/services/dispatch/slice-dag-types.js +41 -0
- package/dist/services/dispatch/slice-dag.d.ts +3 -109
- package/dist/services/dispatch/slice-dag.js +13 -36
- package/dist/services/dispatch/sub-agent-batch-await.d.ts +47 -0
- package/dist/services/dispatch/sub-agent-batch-await.js +73 -0
- package/dist/services/dispatch/sub-agent-dispatcher-types.d.ts +122 -0
- package/dist/services/dispatch/sub-agent-dispatcher-types.js +12 -0
- package/dist/services/dispatch/sub-agent-dispatcher.d.ts +3 -145
- package/dist/services/dispatch/sub-agent-dispatcher.js +14 -70
- package/dist/services/dispatch/test-tool-detection.js +12 -1
- package/dist/services/doc/doc-generator.js +19 -4
- package/dist/services/doctor/doctor-service/checks/check-id-schema.js +16 -8
- package/dist/services/doctor/doctor-service/checks/codegraph-capability.d.ts +7 -2
- package/dist/services/doctor/doctor-service/checks/codegraph-capability.js +26 -8
- package/dist/services/doctor/doctor-service/checks/codegraph-exclude-integrity.js +16 -8
- package/dist/services/doctor/doctor-service/checks/codegraph-index-integrity.js +16 -8
- package/dist/services/doctor/doctor-service/checks/dist-source-version.js +18 -9
- package/dist/services/doctor/doctor-service/checks/ecc-hooks-schema-drift.js +20 -10
- package/dist/services/doctor/doctor-service/checks/gateguard-conflict.js +18 -9
- package/dist/services/doctor/doctor-service/checks/l3-memory-health.js +25 -11
- package/dist/services/doctor/doctor-service/checks/l3-orphan-sessions.js +12 -6
- package/dist/services/doctor/doctor-service/checks/multi-binary-drift.d.ts +7 -16
- package/dist/services/doctor/doctor-service/checks/multi-binary-drift.js +50 -70
- package/dist/services/doctor/doctor-service/checks/schema-validity.js +5 -1
- package/dist/services/doctor/doctor-service/checks/skill-presence.js +4 -2
- package/dist/services/doctor/doctor-service/checks/statusline-install.js +8 -4
- package/dist/services/doctor/doctor-service/checks/statusline-runtime.js +8 -4
- package/dist/services/doctor/doctor-service/checks/user-config.js +4 -2
- package/dist/services/doctor/doctor-service/checks/workspace-init.js +8 -4
- package/dist/services/doctor/doctor-service/checks/workspace-layout.js +19 -11
- package/dist/services/doctor/doctor-service/index.js +4 -2
- package/dist/services/doctor/doctor-service/multi-binary-drift-helpers.d.ts +40 -0
- package/dist/services/doctor/doctor-service/multi-binary-drift-helpers.js +49 -0
- package/dist/services/doctor/doctor-service/plugin-registry.js +1 -1
- package/dist/services/doctor/doctor-service/probe-types.d.ts +210 -0
- package/dist/services/doctor/doctor-service/probe-types.js +14 -0
- package/dist/services/doctor/doctor-service/types.d.ts +7 -197
- package/dist/services/doctor/index.d.ts +1 -1
- package/dist/services/doctor/index.js +1 -1
- package/dist/services/env/shell-probe.js +8 -2
- package/dist/services/evidence/evidence-body-builders.d.ts +23 -0
- package/dist/services/evidence/evidence-body-builders.js +197 -0
- package/dist/services/evidence/evidence-generator.js +6 -187
- package/dist/services/evolution/evolution-constraints.d.ts +43 -0
- package/dist/services/evolution/evolution-constraints.js +54 -0
- package/dist/services/evolution/evolution-evaluation-schema.d.ts +43 -0
- package/dist/services/evolution/evolution-evaluation-schema.js +43 -0
- package/dist/services/evolution/evolution-service.d.ts +6 -6
- package/dist/services/evolution/evolution-service.js +58 -58
- package/dist/services/evolution/evolution-store.d.ts +2 -2
- package/dist/services/evolution/evolution-store.js +37 -51
- package/dist/services/evolution/evolution-types.d.ts +2 -22
- package/dist/services/evolution/evolution-types.js +41 -101
- package/dist/services/evolution/independent-evaluator-runner.d.ts +3 -3
- package/dist/services/evolution/independent-evaluator-runner.js +20 -22
- package/dist/services/evolution/regression-skeptic-runner.d.ts +2 -2
- package/dist/services/evolution/regression-skeptic-runner.js +18 -18
- package/dist/services/feedback/feedback-promotion-service.js +48 -12
- package/dist/services/feedback/promotion-artifact-evidence.d.ts +2 -16
- package/dist/services/feedback/promotion-artifact-evidence.js +6 -83
- package/dist/services/feedback/promotion-artifact-json-evidence.d.ts +29 -0
- package/dist/services/feedback/promotion-artifact-json-evidence.js +39 -0
- package/dist/services/feedback/promotion-source-comments.d.ts +47 -0
- package/dist/services/feedback/promotion-source-comments.js +61 -0
- package/dist/services/final-review/final-review-contract.d.ts +26 -0
- package/dist/services/final-review/final-review-contract.js +14 -0
- package/dist/services/final-review/final-review-delivery.d.ts +63 -0
- package/dist/services/final-review/final-review-delivery.js +124 -0
- package/dist/services/final-review/final-review-evidence-budget.d.ts +125 -0
- package/dist/services/final-review/final-review-evidence-budget.js +218 -0
- package/dist/services/final-review/final-review-evidence-collect.d.ts +4 -0
- package/dist/services/final-review/final-review-evidence-collect.js +230 -0
- package/dist/services/final-review/final-review-evidence-sources.d.ts +138 -0
- package/dist/services/final-review/final-review-evidence-sources.js +139 -0
- package/dist/services/final-review/final-review-fifth-dim.d.ts +8 -0
- package/dist/services/final-review/final-review-fifth-dim.js +20 -0
- package/dist/services/final-review/final-review-gates.d.ts +119 -0
- package/dist/services/final-review/final-review-gates.js +214 -0
- package/dist/services/final-review/final-review-output-budget.d.ts +88 -0
- package/dist/services/final-review/final-review-output-budget.js +161 -0
- package/dist/services/final-review/final-review-prompt.d.ts +35 -0
- package/dist/services/final-review/final-review-prompt.js +112 -0
- package/dist/services/final-review/final-review-reviewer.d.ts +57 -0
- package/dist/services/final-review/final-review-reviewer.js +95 -0
- package/dist/services/final-review/final-review-runner.d.ts +3 -0
- package/dist/services/final-review/final-review-runner.js +158 -0
- package/dist/services/final-review/final-review-service.d.ts +119 -373
- package/dist/services/final-review/final-review-service.js +48 -1380
- package/dist/services/final-review/final-review-verdicts.d.ts +60 -0
- package/dist/services/final-review/final-review-verdicts.js +91 -0
- package/dist/services/final-review/index.d.ts +3 -3
- package/dist/services/final-review/index.js +2 -2
- package/dist/services/final-review/pre-post-diff.js +32 -29
- package/dist/services/fixture/fixture-capture-service.js +14 -6
- package/dist/services/fresh-context/trigger-scan.js +13 -2
- package/dist/services/fuzzy-matching/fuzzy-match-service.js +1 -1
- package/dist/services/fuzzy-matching/fzf-pick-service.js +6 -1
- package/dist/services/hooks/pre-tool-code-gate.js +2 -2
- package/dist/services/hooks/presence-marker-detector.js +12 -2
- package/dist/services/hooks/worktree-authorization-gate.js +21 -7
- package/dist/services/ide/adapters/claude-code-adapter.js +30 -17
- package/dist/services/ide/adapters/codex-adapter.js +3 -5
- package/dist/services/ide/adapters/cursor-adapter.js +3 -5
- package/dist/services/ide/adapters/hermes-adapter.js +2 -4
- package/dist/services/ide/adapters/openclaw-adapter.js +2 -4
- package/dist/services/ide/adapters/qoder-adapter.js +2 -4
- package/dist/services/ide/adapters/tongyi-lingma-adapter.js +1 -1
- package/dist/services/ide/adapters/trae-adapter.js +3 -5
- package/dist/services/ide/adapters/zcode-adapter.js +8 -7
- package/dist/services/ide/current-model-detector.js +2 -1
- package/dist/services/ide/ide-compact-types.d.ts +153 -0
- package/dist/services/ide/ide-compact-types.js +1 -0
- package/dist/services/ide/ide-registry.js +1 -1
- package/dist/services/ide/ide-types.d.ts +7 -145
- package/dist/services/ide/resource-profile.js +1 -1
- package/dist/services/ide/shared/atomic-json.js +2 -1
- package/dist/services/impact/impact-scan-service.js +12 -5
- package/dist/services/job/job-commit-verification.d.ts +73 -0
- package/dist/services/job/job-commit-verification.js +72 -0
- package/dist/services/job/job-orchestrator.d.ts +42 -0
- package/dist/services/job/job-orchestrator.js +110 -10
- package/dist/services/job/job-progress-store.d.ts +75 -5
- package/dist/services/job/job-progress-store.js +83 -6
- package/dist/services/job/job-rotation.d.ts +1 -1
- package/dist/services/job/job-rotation.js +5 -1
- package/dist/services/job/job-state-store.js +2 -2
- package/dist/services/job/job-types.js +49 -20
- package/dist/services/job/subagent-job-wrapper.d.ts +1 -1
- package/dist/services/job/subagent-job-wrapper.js +5 -1
- package/dist/services/job-snapshot/snapshot.js +2 -2
- package/dist/services/karpathy-cost/karpathy-cost-check-service.js +23 -13
- package/dist/services/legacy/legacy-detector.js +51 -5
- package/dist/services/lint/detect-eslint.js +10 -4
- package/dist/services/lint/detect-ocr-18.js +11 -3
- package/dist/services/lint/eslint-runner-support.d.ts +22 -0
- package/dist/services/lint/eslint-runner-support.js +185 -0
- package/dist/services/lint/eslint-runner-types.d.ts +69 -0
- package/dist/services/lint/eslint-runner-types.js +11 -0
- package/dist/services/lint/eslint-runner.d.ts +4 -56
- package/dist/services/lint/eslint-runner.js +24 -178
- package/dist/services/lint/npx-resolver.js +1 -3
- package/dist/services/lint/ocr-18-acquire.js +15 -4
- package/dist/services/lint/ocr-multilang-adapter.js +4 -5
- package/dist/services/llm/anthropic-runner.js +4 -1
- package/dist/services/log/log-commands-service.js +2 -6
- package/dist/services/log/logger.js +15 -12
- package/dist/services/log/retention.d.ts +0 -16
- package/dist/services/log/retention.js +2 -18
- package/dist/services/loop/evaluator-dispatcher.js +78 -42
- package/dist/services/loop/loop-bee-relation-service.d.ts +4 -4
- package/dist/services/loop/loop-bee-relation-service.js +36 -40
- package/dist/services/loop/loop-bee-relation-store.d.ts +3 -3
- package/dist/services/loop/loop-bee-relation-store.js +9 -11
- package/dist/services/loop/loop-bee-relation-types.d.ts +1 -1
- package/dist/services/loop/loop-bee-relation-types.js +14 -25
- package/dist/services/loop/loop-release-service.d.ts +2 -2
- package/dist/services/loop/loop-release-service.js +3 -3
- package/dist/services/loop/loop-release-store.d.ts +2 -2
- package/dist/services/loop/loop-release-store.js +4 -6
- package/dist/services/loop/loop-release-types.d.ts +1 -1
- package/dist/services/loop/loop-release-types.js +21 -31
- package/dist/services/loop/monotonic-guard-types.d.ts +51 -0
- package/dist/services/loop/monotonic-guard-types.js +9 -0
- package/dist/services/loop/monotonic-guard.d.ts +2 -43
- package/dist/services/loop/monotonic-runner-types.d.ts +63 -0
- package/dist/services/loop/monotonic-runner-types.js +17 -0
- package/dist/services/loop/monotonic-runner.d.ts +3 -34
- package/dist/services/loop/monotonic-runner.js +10 -20
- package/dist/services/loop/run-driver.js +16 -8
- package/dist/services/loop/spec-service.d.ts +0 -5
- package/dist/services/loop/spec-service.js +49 -9
- package/dist/services/memory/llm-reranker-core.d.ts +108 -0
- package/dist/services/memory/llm-reranker-core.js +105 -0
- package/dist/services/memory/llm-reranker.d.ts +3 -94
- package/dist/services/memory/llm-reranker.js +13 -102
- package/dist/services/memory/memory-ingest-service.d.ts +1 -22
- package/dist/services/memory/memory-ingest-service.js +29 -76
- package/dist/services/memory/memory-ingest-support.d.ts +23 -0
- package/dist/services/memory/memory-ingest-support.js +81 -0
- package/dist/services/memory/memory-rotate-service.js +41 -8
- package/dist/services/memory/memory-search-service.js +8 -4
- package/dist/services/memory/project-context-service.js +26 -5
- package/dist/services/memory/project-memory-service/index/kind-dispatch.d.ts +2 -7
- package/dist/services/memory/project-memory-service/index/kind-dispatch.js +17 -136
- package/dist/services/memory/project-memory-service/index/project-memory-plan-exec.d.ts +7 -0
- package/dist/services/memory/project-memory-service/index/project-memory-plan-exec.js +150 -0
- package/dist/services/memory/project-memory-service/index/ranking.js +6 -3
- package/dist/services/memory/project-memory-service/index/reindex.js +14 -5
- package/dist/services/memory/project-memory-service/index.d.ts +1 -1
- package/dist/services/memory/project-memory-service/index.js +1 -1
- package/dist/services/memory/project-memory-service/memory-kinds.d.ts +31 -0
- package/dist/services/memory/project-memory-service/memory-kinds.js +87 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter-parse.d.ts +24 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter-parse.js +104 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter.d.ts +2 -24
- package/dist/services/memory/project-memory-service/parsers/frontmatter.js +28 -79
- package/dist/services/memory/project-memory-service/parsers/markdown-pure.js +15 -3
- package/dist/services/memory/project-memory-service/store/atomic-write.d.ts +19 -7
- package/dist/services/memory/project-memory-service/store/atomic-write.js +144 -38
- package/dist/services/memory/project-memory-service/store/paths.js +2 -1
- package/dist/services/memory/project-memory-service/types.d.ts +3 -31
- package/dist/services/memory/project-memory-service/types.js +1 -76
- package/dist/services/migrate-skill-name/migrate.js +1 -1
- package/dist/services/migrate-skill-name/schema.js +1 -1
- package/dist/services/mode/mode-enforcement.js +4 -2
- package/dist/services/mode/mode-status-service.d.ts +27 -9
- package/dist/services/mode/mode-status-service.js +64 -12
- package/dist/services/observability/aggregation-helpers.d.ts +22 -0
- package/dist/services/observability/aggregation-helpers.js +65 -0
- package/dist/services/observability/aggregation-types.d.ts +66 -0
- package/dist/services/observability/aggregation-types.js +34 -0
- package/dist/services/observability/aggregation.d.ts +5 -53
- package/dist/services/observability/aggregation.js +17 -80
- package/dist/services/observability/jsonl-store.js +2 -1
- package/dist/services/observability/observability-schema.d.ts +71 -0
- package/dist/services/observability/observability-schema.js +64 -0
- package/dist/services/observability/observability-service.d.ts +3 -56
- package/dist/services/observability/observability-service.js +9 -49
- package/dist/services/openspec/coverage-evidence-reader.js +18 -11
- package/dist/services/openspec/openspec-archive-service.js +31 -24
- package/dist/services/openspec/openspec-init-service.js +8 -2
- package/dist/services/openspec/openspec-propose-from-doctor-service.js +1 -1
- package/dist/services/openspec/openspec-scan-service.js +4 -1
- package/dist/services/openspec/openspec-validate-service.js +26 -5
- package/dist/services/perf/perf-baseline-service.js +2 -6
- package/dist/services/polyrepo/polyrepo-dispatcher.js +2 -1
- package/dist/services/polyrepo/polyrepo-scanner.js +4 -1
- package/dist/services/prd/handoff-frontmatter-shape.d.ts +42 -0
- package/dist/services/prd/handoff-frontmatter-shape.js +67 -0
- package/dist/services/prd/handoff-frontmatter.js +62 -1
- package/dist/services/prd/handoff-gate-evidence.js +14 -10
- package/dist/services/prd/handoff-path-resolution.d.ts +37 -0
- package/dist/services/prd/handoff-path-resolution.js +101 -0
- package/dist/services/prd/handoff-service.d.ts +12 -38
- package/dist/services/prd/handoff-service.js +25 -147
- package/dist/services/prd/handoff-types.d.ts +33 -1
- package/dist/services/prd/prd-blocks-checker.js +28 -8
- package/dist/services/prd/project-scan-bootstrap-service.js +1 -5
- package/dist/services/prd/project-scan-reader.js +1 -4
- package/dist/services/prd/project-scan-sediment.js +1 -4
- package/dist/services/preferences/preferences-service.js +6 -8
- package/dist/services/preferences/preferences-types.js +4 -4
- package/dist/services/qa/bdd-test-style-contract.d.ts +41 -0
- package/dist/services/qa/bdd-test-style-contract.js +37 -0
- package/dist/services/qa/bdd-test-style-verifier.d.ts +2 -24
- package/dist/services/qa/bdd-test-style-verifier.js +5 -31
- package/dist/services/qa/browser-event-logger.js +2 -1
- package/dist/services/qa/qa-business-review-state.js +20 -5
- package/dist/services/qa/screenshot-archive-service.js +1 -3
- package/dist/services/rd/ast-gate.js +2 -2
- package/dist/services/rd/impl.js +1 -1
- package/dist/services/rd/rd-service.js +117 -43
- package/dist/services/rd/reviewer-dispatch-policy.js +4 -7
- package/dist/services/rd/standards-diagnostic.js +4 -1
- package/dist/services/rd/strategy.js +10 -3
- package/dist/services/rd/tactical-stage.js +2 -2
- package/dist/services/rd/types.js +9 -7
- package/dist/services/rd-swarm/rd-swarm-service.d.ts +2 -45
- package/dist/services/rd-swarm/rd-swarm-service.js +140 -21
- package/dist/services/rd-swarm/rd-swarm-types.d.ts +54 -0
- package/dist/services/rd-swarm/rd-swarm-types.js +10 -0
- package/dist/services/recommendations/capability-map-service.js +10 -2
- package/dist/services/recommendations/capability-seed-items.js +81 -14
- package/dist/services/recommendations/capability-seed-mappings.js +420 -48
- package/dist/services/recommendations/capability-seed-sources-mcp-server.d.ts +9 -0
- package/dist/services/recommendations/capability-seed-sources-mcp-server.js +233 -0
- package/dist/services/recommendations/capability-seed-sources.js +127 -32
- package/dist/services/recommendations/installed-capability-detector.d.ts +5 -5
- package/dist/services/recommendations/installed-capability-detector.js +11 -10
- package/dist/services/release/release-state.d.ts +2 -2
- package/dist/services/release/release-state.js +44 -15
- package/dist/services/release/version-precheck-layer-changeset.d.ts +2 -0
- package/dist/services/release/version-precheck-layer-changeset.js +43 -0
- package/dist/services/release/version-precheck-service.d.ts +11 -36
- package/dist/services/release/version-precheck-service.js +20 -104
- package/dist/services/release/version-precheck-support.d.ts +53 -0
- package/dist/services/release/version-precheck-support.js +64 -0
- package/dist/services/retrospective/retrospective-index.js +17 -3
- package/dist/services/retrospective/retrospective-search-service.js +6 -2
- package/dist/services/retrospective/retrospective-show.js +4 -1
- package/dist/services/reviewer/model-family.js +7 -1
- package/dist/services/reviewer/providers/anthropic.d.ts +5 -0
- package/dist/services/reviewer/providers/anthropic.js +10 -1
- package/dist/services/reviewer/providers/openai.d.ts +5 -0
- package/dist/services/reviewer/providers/openai.js +10 -1
- package/dist/services/reviewer/reviewer-config.js +4 -2
- package/dist/services/reviewer/reviewer-service.d.ts +2 -36
- package/dist/services/reviewer/reviewer-service.js +2 -1
- package/dist/services/reviewer/reviewer-types.d.ts +43 -0
- package/dist/services/reviewer/reviewer-types.js +1 -0
- package/dist/services/role/role-registry.js +9 -1
- package/dist/services/runtime/runtime-detector.js +4 -1
- package/dist/services/runtime/vendors/claude-code.js +14 -6
- package/dist/services/runtime/vendors/codex.js +11 -3
- package/dist/services/runtime/vendors/copilot.js +11 -3
- package/dist/services/sc/sc-service.js +28 -15
- package/dist/services/scan/acceptance-coverage-service.js +4 -1
- package/dist/services/scan/api-diff-openapi-schema-read.d.ts +67 -0
- package/dist/services/scan/api-diff-openapi-schema-read.js +154 -0
- package/dist/services/scan/api-diff-openapi.d.ts +16 -2
- package/dist/services/scan/api-diff-openapi.js +19 -123
- package/dist/services/scan/api-diff-recorded.js +16 -3
- package/dist/services/scan/api-diff-service.js +49 -16
- package/dist/services/scan/api-diff-types.js +12 -3
- package/dist/services/scan/api-surface-helpers.d.ts +13 -0
- package/dist/services/scan/api-surface-helpers.js +31 -0
- package/dist/services/scan/api-surface-service.d.ts +2 -45
- package/dist/services/scan/api-surface-service.js +15 -26
- package/dist/services/scan/api-surface-types.d.ts +54 -0
- package/dist/services/scan/api-surface-types.js +10 -0
- package/dist/services/scan/archetype-detection.d.ts +74 -0
- package/dist/services/scan/archetype-detection.js +315 -0
- package/dist/services/scan/archetype-service.js +58 -133
- package/dist/services/scan/diff-scope-service.js +35 -15
- package/dist/services/scan/existing-system-service.js +16 -99
- package/dist/services/scan/existing-system-visual-tokens.d.ts +20 -0
- package/dist/services/scan/existing-system-visual-tokens.js +123 -0
- package/dist/services/scan/file-size-policy.d.ts +86 -0
- package/dist/services/scan/file-size-policy.js +184 -0
- package/dist/services/scan/file-size-scan.d.ts +30 -3
- package/dist/services/scan/file-size-scan.js +47 -9
- package/dist/services/scan/karpathy-service.js +6 -1
- package/dist/services/scan/orphan-service.js +86 -20
- package/dist/services/scan/scan-types.d.ts +9 -0
- package/dist/services/scan/type-sanity-service.js +104 -10
- package/dist/services/sediment/dispose-confirm.d.ts +2 -2
- package/dist/services/sediment/dispose-confirm.js +2 -2
- package/dist/services/sediment/json-schema.d.ts +1 -1
- package/dist/services/sediment/json-schema.js +25 -13
- package/dist/services/sediment/manifest-lint.d.ts +1 -12
- package/dist/services/sediment/manifest-lint.js +1 -7
- package/dist/services/sediment/pool-paths.js +13 -9
- package/dist/services/sediment/pool-read.d.ts +1 -1
- package/dist/services/sediment/pool-read.js +42 -18
- package/dist/services/sediment/pool-rebuild-index.d.ts +1 -1
- package/dist/services/sediment/pool-rebuild-index.js +5 -5
- package/dist/services/sediment/pool-write.d.ts +1 -1
- package/dist/services/sediment/pool-write.js +7 -7
- package/dist/services/sediment/promotion-gate.d.ts +1 -1
- package/dist/services/sediment/promotion-gate.js +9 -9
- package/dist/services/sediment/types.d.ts +8 -8
- package/dist/services/session/binding-status-service.js +14 -4
- package/dist/services/session/caller-binding-service.js +2 -1
- package/dist/services/session/getSessionDir.js +4 -1
- package/dist/services/session/index.d.ts +1 -1
- package/dist/services/session/index.js +1 -1
- package/dist/services/session/resolve-caller-id.js +7 -5
- package/dist/services/session/session-binding-bridge.js +26 -25
- package/dist/services/session/session-checkpoint-service.js +1 -1
- package/dist/services/session/session-file-schema.d.ts +70 -0
- package/dist/services/session/session-file-schema.js +68 -0
- package/dist/services/session/session-manager.d.ts +6 -6
- package/dist/services/session/session-manager.js +30 -29
- package/dist/services/session/session-resume-service.js +2 -1
- package/dist/services/share/bundle-format-constants.d.ts +85 -0
- package/dist/services/share/bundle-format-constants.js +100 -0
- package/dist/services/share/bundle-reader.d.ts +3 -3
- package/dist/services/share/bundle-reader.js +75 -68
- package/dist/services/share/bundle-types.d.ts +3 -70
- package/dist/services/share/bundle-types.js +38 -107
- package/dist/services/share/bundle-writer.d.ts +3 -3
- package/dist/services/share/bundle-writer.js +101 -91
- package/dist/services/share/run-state-contract.d.ts +1 -1
- package/dist/services/share/run-state-contract.js +7 -13
- package/dist/services/signal/cancel-handler.js +2 -1
- package/dist/services/skill/resume-detector.js +6 -4
- package/dist/services/skill/skill-scheduler.js +3 -1
- package/dist/services/skill/skill-search-service.js +4 -4
- package/dist/services/skillhub/release-diff.d.ts +2 -2
- package/dist/services/skillhub/release-diff.js +6 -10
- package/dist/services/skillhub/release-export.d.ts +2 -2
- package/dist/services/skillhub/release-export.js +15 -17
- package/dist/services/skillhub/release-gc-blobs.d.ts +2 -2
- package/dist/services/skillhub/release-gc-blobs.js +4 -4
- package/dist/services/skillhub/release-import.d.ts +2 -2
- package/dist/services/skillhub/release-import.js +13 -12
- package/dist/services/skillhub/release-retain.d.ts +3 -3
- package/dist/services/skillhub/release-retain.js +22 -22
- package/dist/services/skillhub/sqlite-store.d.ts +1 -1
- package/dist/services/skillhub/sqlite-store.js +12 -11
- package/dist/services/skillhub/tar-runtime.js +15 -15
- package/dist/services/skillhub/types.d.ts +4 -4
- package/dist/services/skills/hooks-codegate-superpowers.js +16 -7
- package/dist/services/skills/hooks-settings-service.js +61 -19
- package/dist/services/skills/presence-lease-service.js +26 -16
- package/dist/services/skills/presence-lease-types.d.ts +1 -1
- package/dist/services/skills/presence-lease-types.js +1 -1
- package/dist/services/skills/skill-conformance-service.js +40 -8
- package/dist/services/skills/skill-presence-service.js +16 -14
- package/dist/services/skills/skill-runbook-service.js +2 -1
- package/dist/services/skills/skill-statusline-model.d.ts +128 -0
- package/dist/services/skills/skill-statusline-model.js +163 -0
- package/dist/services/skills/skill-statusline-renderer.js +4 -3
- package/dist/services/skills/skill-statusline-service.d.ts +3 -100
- package/dist/services/skills/skill-statusline-service.js +56 -163
- package/dist/services/skills/statusline-palette.js +11 -6
- package/dist/services/skills/statusline-settings-service.js +2 -1
- package/dist/services/skills/sync-service-support.d.ts +65 -0
- package/dist/services/skills/sync-service-support.js +50 -0
- package/dist/services/skills/sync-service.d.ts +3 -66
- package/dist/services/skills/sync-service.js +15 -53
- package/dist/services/slice/calibration-store.js +8 -2
- package/dist/services/slice/cross-pass-edge-merger.d.ts +3 -28
- package/dist/services/slice/cross-pass-edge-merger.js +13 -63
- package/dist/services/slice/cross-pass-edge-static-scan-support.d.ts +69 -0
- package/dist/services/slice/cross-pass-edge-static-scan-support.js +74 -0
- package/dist/services/slice/granularity-decider.js +2 -2
- package/dist/services/slice/slice-archive-service.js +8 -3
- package/dist/services/slice/slice-check-service.js +19 -8
- package/dist/services/slice/slice-decompose-runners.js +61 -23
- package/dist/services/slice/slice-decompose-service.js +4 -4
- package/dist/services/slice/slice-review-state.js +8 -2
- package/dist/services/smoke/smoke-paths-state.js +9 -2
- package/dist/services/sop/gate-enforce-service.js +9 -2
- package/dist/services/sop/sop-advance-service.js +14 -2
- package/dist/services/sop/sop-check-service.js +16 -4
- package/dist/services/sop/sop-paths.js +3 -1
- package/dist/services/sop/sop-registry-service.js +5 -1
- package/dist/services/sop/sop-service.js +29 -7
- package/dist/services/sop/sop-types.js +5 -1
- package/dist/services/standards/ide-aware-standards-service.js +2 -2
- package/dist/services/standards/loop-engineering-lint.js +12 -5
- package/dist/services/standards/loop-engineering-readiness-lint.js +5 -5
- package/dist/services/standards/migrate-claude-rules-service.js +9 -7
- package/dist/services/standards/missing-standards-detector.js +1 -3
- package/dist/services/standards/project-context-support.d.ts +50 -0
- package/dist/services/standards/project-context-support.js +244 -0
- package/dist/services/standards/project-context-types.d.ts +30 -0
- package/dist/services/standards/project-context-types.js +11 -0
- package/dist/services/standards/project-context.d.ts +10 -22
- package/dist/services/standards/project-context.js +27 -214
- package/dist/services/standards/project-standards-service.js +43 -12
- package/dist/services/standards/standards-render-common.d.ts +15 -0
- package/dist/services/standards/standards-render-common.js +49 -0
- package/dist/services/standards/standards-render.d.ts +1 -2
- package/dist/services/standards/standards-render.js +31 -58
- package/dist/services/standards/ui-library-dispatch-block.js +1 -1
- package/dist/services/tech/tech-change-id-service.js +7 -7
- package/dist/services/tech/tech-service.js +73 -26
- package/dist/services/test-cache/test-cache-service.js +8 -3
- package/dist/services/verdict/envelope-parsers.d.ts +84 -0
- package/dist/services/verdict/envelope-parsers.js +146 -0
- package/dist/services/verdict/envelopes.d.ts +50 -60
- package/dist/services/verdict/envelopes.js +18 -156
- package/dist/services/verdict/verdict-aggregator.js +27 -3
- package/dist/services/vm/vm-lease.js +15 -3
- package/dist/services/web/aria-node.d.ts +27 -0
- package/dist/services/web/aria-node.js +1 -0
- package/dist/services/web/browser-acquire.js +3 -1
- package/dist/services/web/browser-cache-probe.d.ts +18 -0
- package/dist/services/web/browser-cache-probe.js +110 -0
- package/dist/services/web/browser-session-manager.js +6 -2
- package/dist/services/web/daemon-registry.js +4 -1
- package/dist/services/web/playwright-loader.d.ts +2 -70
- package/dist/services/web/playwright-types.d.ts +75 -0
- package/dist/services/web/playwright-types.js +1 -0
- package/dist/services/web/snapshot-pruner.d.ts +2 -23
- package/dist/services/web/snapshot-pruner.js +8 -3
- package/dist/services/web/web-daemon-service.js +1 -3
- package/dist/services/web/web-install-service.d.ts +3 -32
- package/dist/services/web/web-install-service.js +21 -100
- package/dist/services/web/web-install-types.d.ts +31 -0
- package/dist/services/web/web-install-types.js +13 -0
- package/dist/services/web/web-login-profile.js +7 -5
- package/dist/services/web/web-protocol.js +3 -1
- package/dist/services/workflow/pipeline-verify-gate-support.js +63 -17
- package/dist/services/workflow/pipeline-verify-service.js +17 -6
- package/dist/services/workflow/plan-reader.js +5 -1
- package/dist/services/workflow/plan-refresher.js +20 -6
- package/dist/services/workflow/plan-trigger-detector.js +31 -8
- package/dist/services/workflow/provision-dispatch-node.js +8 -3
- package/dist/services/workflow/workflow-autonomous-resume-helpers.d.ts +3 -1
- package/dist/services/workflow/workflow-autonomous-resume-helpers.js +35 -144
- package/dist/services/workflow/workflow-autonomous-resume-validation.d.ts +16 -0
- package/dist/services/workflow/workflow-autonomous-resume-validation.js +155 -0
- package/dist/services/workflow/workflow-autonomous-service.js +25 -13
- package/dist/services/workflow/workflow-graph-store-helpers.d.ts +51 -0
- package/dist/services/workflow/workflow-graph-store-helpers.js +111 -0
- package/dist/services/workflow/workflow-graph-store.d.ts +2 -35
- package/dist/services/workflow/workflow-graph-store.js +30 -107
- package/dist/services/workflow/workflow-graph-types.js +3 -3
- package/dist/services/workflow/workflow-inflight-probe.js +14 -7
- package/dist/services/workflow/workflow-loader.js +5 -1
- package/dist/services/workflow/workflow-node-lifecycle.js +22 -21
- package/dist/services/workflow/workflow-presence-lifecycle-types.d.ts +50 -0
- package/dist/services/workflow/workflow-presence-lifecycle-types.js +1 -0
- package/dist/services/workflow/workflow-presence-lifecycle.d.ts +2 -42
- package/dist/services/workflow/workflow-presence-lifecycle.js +19 -21
- package/dist/services/workflow/workflow-router-service.js +169 -27
- package/dist/services/workflow/workflow-skip-service.js +14 -4
- package/dist/services/workflow/workflow-spec-builders.d.ts +15 -0
- package/dist/services/workflow/workflow-spec-builders.js +121 -0
- package/dist/services/workflow/workflow-spec.d.ts +7 -6
- package/dist/services/workflow/workflow-spec.js +22 -116
- package/dist/services/workflow/workflow-state-store.js +2 -1
- package/dist/services/workspace/generated-artifacts-stamp.d.ts +2 -2
- package/dist/services/workspace/generated-artifacts-stamp.js +2 -2
- package/dist/services/workspace/migrate-1-4-1-service.js +80 -14
- package/dist/services/workspace/migrate-service.js +66 -16
- package/dist/services/workspace/reconcile-migrate.js +6 -2
- package/dist/services/workspace/reconcile-service.js +37 -16
- package/dist/services/workspace/workspace-claude-settings-materializer.js +7 -5
- package/dist/services/workspace/workspace-clean-service.js +4 -1
- package/dist/services/workspace/workspace-service.js +12 -4
- package/dist/services/workspace/workspace-state-service.js +1 -1
- package/dist/services/worktree/git-worktree-parser.js +13 -3
- package/dist/services/worktree/host-worktree-reconciler.js +8 -4
- package/dist/services/worktree/long-path-cleanup.js +23 -6
- package/dist/services/worktree/worktree-gc-guard.js +3 -1
- package/dist/services/worktree/worktree-lease-types.d.ts +53 -0
- package/dist/services/worktree/worktree-lease-types.js +10 -0
- package/dist/services/worktree/worktree-lease.d.ts +2 -44
- package/dist/shared/array-guards.d.ts +30 -0
- package/dist/shared/array-guards.js +32 -0
- package/dist/shared/format-md-compact-internals.d.ts +26 -0
- package/dist/shared/format-md-compact-internals.js +125 -0
- package/dist/shared/format-md-compact.js +1 -117
- package/dist/shared/fs-utils.js +2 -1
- package/dist/shared/incrementing-number.js +3 -3
- package/dist/shared/json-parse.d.ts +71 -0
- package/dist/shared/json-parse.js +32 -0
- package/dist/shared/json-schema-mini.js +3 -1
- package/dist/shared/path-safety.js +3 -1
- package/dist/shared/path-utils.d.ts +20 -0
- package/dist/shared/path-utils.js +26 -0
- package/dist/shared/planner-response.js +3 -3
- package/dist/shared/stale-policy.js +1 -3
- package/dist/skills/peaks-maker/index.js +11 -11
- package/package.json +31 -8
- package/scripts/clean-dist.mjs +1 -2
- package/scripts/copy-templates.mjs +2 -4
- package/scripts/install-skills.mjs +286 -283
- package/scripts/sync-version.mjs +25 -8
- package/scripts/watch.mjs +8 -2
- package/skills/bee/peaks-qa/references/reading-handoff-frontmatter.md +3 -1
- package/skills/bee/peaks-rd/references/parallel-review-fanout.md +1 -1
- package/skills/bee/peaks-rd/references/rd-fanout-contracts.md +3 -2
- package/skills/bee/peaks-rd/references/writing-handoff-frontmatter.md +29 -7
- package/skills/peaks-code/SKILL.md +1 -1
- package/skills/peaks-code/references/frontend-only-mode.md +2 -2
- package/skills/peaks-code/references/startup-sequence.md +0 -4
- package/dist/cli/commands/upgrade-commands.d.ts +0 -25
- package/dist/cli/commands/upgrade-commands.js +0 -154
- package/dist/services/upgrade/1x-detector-service.d.ts +0 -7
- package/dist/services/upgrade/1x-detector-service.js +0 -94
- package/dist/services/upgrade/gitignore-migrate-service.d.ts +0 -56
- package/dist/services/upgrade/gitignore-migrate-service.js +0 -170
- package/dist/services/upgrade/upgrade-service.d.ts +0 -81
- package/dist/services/upgrade/upgrade-service.js +0 -405
- package/skills/peaks-code/references/step-0-55-1x-detection.md +0 -83
|
@@ -51,7 +51,8 @@ export function readTestCache(projectRoot, filePath) {
|
|
|
51
51
|
const parsed = JSON.parse(raw);
|
|
52
52
|
return parsed;
|
|
53
53
|
}
|
|
54
|
-
catch {
|
|
54
|
+
catch {
|
|
55
|
+
// TODO(g2): legacy silent catch — grace: 1 minor release (v2.14.0)
|
|
55
56
|
return null;
|
|
56
57
|
}
|
|
57
58
|
}
|
|
@@ -100,7 +101,10 @@ export function isCacheable(projectRoot, filePath, testName) {
|
|
|
100
101
|
if (!record)
|
|
101
102
|
return { hit: false, reason: 'no-cache' };
|
|
102
103
|
if (record.status !== 'passed') {
|
|
103
|
-
return {
|
|
104
|
+
return {
|
|
105
|
+
hit: false,
|
|
106
|
+
reason: record.status === 'failed' ? 'previous-failed' : 'previous-skipped'
|
|
107
|
+
};
|
|
104
108
|
}
|
|
105
109
|
return { hit: true, cached: record };
|
|
106
110
|
}
|
|
@@ -148,7 +152,8 @@ export function detectTestFramework(projectRoot) {
|
|
|
148
152
|
try {
|
|
149
153
|
pkg = JSON.parse(readFileSync(pkgPath, 'utf8'));
|
|
150
154
|
}
|
|
151
|
-
catch {
|
|
155
|
+
catch {
|
|
156
|
+
// TODO(g2): legacy silent catch — grace: 1 minor release (v2.14.0)
|
|
152
157
|
return null;
|
|
153
158
|
}
|
|
154
159
|
const all = {
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* peaks-loop v2.13.3 — Envelope parsers (split from `envelopes.ts`).
|
|
3
|
+
*
|
|
4
|
+
* `envelopes.ts` exceeded the 300-raw-line file-size cap, so the
|
|
5
|
+
* finding-free parser mass — the `AnyEnvelope` discriminated-union
|
|
6
|
+
* projection, the security / perf / karpathy markdown parsers, the
|
|
7
|
+
* `AnyEnvelope → AggregatorInput` adapter, and the two markdown
|
|
8
|
+
* section / bullet readers — moved here verbatim. The finding-carrying
|
|
9
|
+
* helpers (`parseAuditMarkdown`, `parseKarpathyViolations`, `matchEnum`,
|
|
10
|
+
* `parseFindingBullet`) stay in `envelopes.ts`, which re-exports every
|
|
11
|
+
* name below so `./envelopes.js` stays the public import path.
|
|
12
|
+
*
|
|
13
|
+
* Cycle note: `envelopes.ts` and this file import each other. That is
|
|
14
|
+
* safe under `module: NodeNext` + `"type": "module"` because every
|
|
15
|
+
* cross-boundary reference is a hoisted function declaration (resolved
|
|
16
|
+
* at call time) or an erased `type` — neither module reads a value from
|
|
17
|
+
* the other at evaluation time.
|
|
18
|
+
*/
|
|
19
|
+
import { type PerfAuditEnvelope, type SecurityAuditEnvelope } from '../audit-independent/index.js';
|
|
20
|
+
import { type KarpathyEnvelope, type MutEnvelope, type QaEnvelope, type AggregatorInput } from './verdict-aggregator.js';
|
|
21
|
+
/**
|
|
22
|
+
* `kind` is the discriminator. The on-disk file format is unchanged;
|
|
23
|
+
* this field exists only in the TS type projection. The aggregator
|
|
24
|
+
* accepts both the legacy `{security, perf, ...}` shape and the new
|
|
25
|
+
* union via a thin adapter (`aggregateFromEnvelopes`).
|
|
26
|
+
*/
|
|
27
|
+
export type AnyEnvelope = {
|
|
28
|
+
kind: 'security';
|
|
29
|
+
envelope: SecurityAuditEnvelope;
|
|
30
|
+
} | {
|
|
31
|
+
kind: 'perf';
|
|
32
|
+
envelope: PerfAuditEnvelope;
|
|
33
|
+
} | {
|
|
34
|
+
kind: 'karpathy';
|
|
35
|
+
envelope: KarpathyEnvelope;
|
|
36
|
+
} | {
|
|
37
|
+
kind: 'mut';
|
|
38
|
+
envelope: MutEnvelope;
|
|
39
|
+
} | {
|
|
40
|
+
kind: 'qa';
|
|
41
|
+
envelope: QaEnvelope;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* v2.13.3 AC-1 — parse real v2.12.0 audit markdown.
|
|
45
|
+
*
|
|
46
|
+
* Strategy (per PRD AC-1 mitigation):
|
|
47
|
+
* 1. Try JSON.parse first (back-compat with prior unit tests + any
|
|
48
|
+
* consumer that passes a JSON string explicitly).
|
|
49
|
+
* 2. Fall back to markdown parse: extract `verdict:` from YAML
|
|
50
|
+
* frontmatter, parse `## Findings` bullets in the body, return
|
|
51
|
+
* a SecurityAuditEnvelope.
|
|
52
|
+
* 3. Return null when neither path yields a valid envelope.
|
|
53
|
+
*/
|
|
54
|
+
export declare function parseSecurityEnvelope(md: string): SecurityAuditEnvelope | null;
|
|
55
|
+
export declare function parsePerfEnvelope(md: string): PerfAuditEnvelope | null;
|
|
56
|
+
/**
|
|
57
|
+
* Karpathy review is stored as markdown (`.peaks/_runtime/<sid>/rd/karpathy-review.md`).
|
|
58
|
+
* We parse the 3 state lines that drive the aggregator:
|
|
59
|
+
* - `gateAction: pass | warn | block`
|
|
60
|
+
* - `verdict: pass | warn | block` (alias for gateAction)
|
|
61
|
+
* - `passed: true | false`
|
|
62
|
+
* Plus the violations list under a `## Violations` heading, where each
|
|
63
|
+
* bullet begins with `[SEVERITY] file:line — hint` and declares a
|
|
64
|
+
* guideline tag like `(simplicity-first)`.
|
|
65
|
+
*/
|
|
66
|
+
export declare function parseKarpathyEnvelope(md: string): KarpathyEnvelope | null;
|
|
67
|
+
/**
|
|
68
|
+
* Convert a partial list of `AnyEnvelope` values to the legacy
|
|
69
|
+
* `AggregatorInput` shape. `null` envelopes are skipped (a missing
|
|
70
|
+
* envelope is treated as "audit not run" — same semantics as
|
|
71
|
+
* `AggregatorInput` without that key).
|
|
72
|
+
*/
|
|
73
|
+
export declare function envelopesToAggregatorInput(list: ReadonlyArray<AnyEnvelope | null>): AggregatorInput;
|
|
74
|
+
/** Extract the body of a `## Heading` section (text up to the next
|
|
75
|
+
* `## ` heading or EOF). Returns null when the heading is absent. */
|
|
76
|
+
export declare function extractSection(body: string, heading: string): string | null;
|
|
77
|
+
/** Parse `## Findings` bullets. Accepts the 3 real v2.12.0 shapes. */
|
|
78
|
+
export declare function parseFindingBullets(body: string): Array<{
|
|
79
|
+
dimension: string;
|
|
80
|
+
severity: 'CRITICAL' | 'HIGH' | 'MED' | 'LOW';
|
|
81
|
+
file: string;
|
|
82
|
+
line: number;
|
|
83
|
+
hint: string;
|
|
84
|
+
}>;
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* peaks-loop v2.13.3 — Envelope parsers (split from `envelopes.ts`).
|
|
3
|
+
*
|
|
4
|
+
* `envelopes.ts` exceeded the 300-raw-line file-size cap, so the
|
|
5
|
+
* finding-free parser mass — the `AnyEnvelope` discriminated-union
|
|
6
|
+
* projection, the security / perf / karpathy markdown parsers, the
|
|
7
|
+
* `AnyEnvelope → AggregatorInput` adapter, and the two markdown
|
|
8
|
+
* section / bullet readers — moved here verbatim. The finding-carrying
|
|
9
|
+
* helpers (`parseAuditMarkdown`, `parseKarpathyViolations`, `matchEnum`,
|
|
10
|
+
* `parseFindingBullet`) stay in `envelopes.ts`, which re-exports every
|
|
11
|
+
* name below so `./envelopes.js` stays the public import path.
|
|
12
|
+
*
|
|
13
|
+
* Cycle note: `envelopes.ts` and this file import each other. That is
|
|
14
|
+
* safe under `module: NodeNext` + `"type": "module"` because every
|
|
15
|
+
* cross-boundary reference is a hoisted function declaration (resolved
|
|
16
|
+
* at call time) or an erased `type` — neither module reads a value from
|
|
17
|
+
* the other at evaluation time.
|
|
18
|
+
*/
|
|
19
|
+
import { isPerfAuditEnvelope, isSecurityAuditEnvelope } from '../audit-independent/index.js';
|
|
20
|
+
import { matchEnum, parseAuditMarkdown, parseFindingBullet, parseKarpathyViolations } from './envelopes.js';
|
|
21
|
+
// ─── 5 parsers (pure, never throw) ─────────────────────────────────────
|
|
22
|
+
/**
|
|
23
|
+
* v2.13.3 AC-1 — parse real v2.12.0 audit markdown.
|
|
24
|
+
*
|
|
25
|
+
* Strategy (per PRD AC-1 mitigation):
|
|
26
|
+
* 1. Try JSON.parse first (back-compat with prior unit tests + any
|
|
27
|
+
* consumer that passes a JSON string explicitly).
|
|
28
|
+
* 2. Fall back to markdown parse: extract `verdict:` from YAML
|
|
29
|
+
* frontmatter, parse `## Findings` bullets in the body, return
|
|
30
|
+
* a SecurityAuditEnvelope.
|
|
31
|
+
* 3. Return null when neither path yields a valid envelope.
|
|
32
|
+
*/
|
|
33
|
+
export function parseSecurityEnvelope(md) {
|
|
34
|
+
if (typeof md !== 'string' || md.length === 0)
|
|
35
|
+
return null;
|
|
36
|
+
// Path 1: JSON (legacy / back-compat)
|
|
37
|
+
try {
|
|
38
|
+
const jsonValue = JSON.parse(md);
|
|
39
|
+
if (isSecurityAuditEnvelope(jsonValue))
|
|
40
|
+
return jsonValue;
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
// TODO(g2): legacy silent catch — grace: 1 minor release (v2.14.0)
|
|
44
|
+
// not JSON — fall through to markdown parse
|
|
45
|
+
}
|
|
46
|
+
// Path 2: real v2.12.0 markdown (YAML frontmatter + body)
|
|
47
|
+
return parseAuditMarkdown(md, isSecurityAuditEnvelope);
|
|
48
|
+
}
|
|
49
|
+
export function parsePerfEnvelope(md) {
|
|
50
|
+
if (typeof md !== 'string' || md.length === 0)
|
|
51
|
+
return null;
|
|
52
|
+
// Path 1: JSON (legacy / back-compat)
|
|
53
|
+
try {
|
|
54
|
+
const jsonValue = JSON.parse(md);
|
|
55
|
+
if (isPerfAuditEnvelope(jsonValue))
|
|
56
|
+
return jsonValue;
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
// TODO(g2): legacy silent catch — grace: 1 minor release (v2.14.0)
|
|
60
|
+
// not JSON — fall through to markdown parse
|
|
61
|
+
}
|
|
62
|
+
// Path 2: real v2.12.0 markdown (YAML frontmatter + body)
|
|
63
|
+
return parseAuditMarkdown(md, isPerfAuditEnvelope);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Karpathy review is stored as markdown (`.peaks/_runtime/<sid>/rd/karpathy-review.md`).
|
|
67
|
+
* We parse the 3 state lines that drive the aggregator:
|
|
68
|
+
* - `gateAction: pass | warn | block`
|
|
69
|
+
* - `verdict: pass | warn | block` (alias for gateAction)
|
|
70
|
+
* - `passed: true | false`
|
|
71
|
+
* Plus the violations list under a `## Violations` heading, where each
|
|
72
|
+
* bullet begins with `[SEVERITY] file:line — hint` and declares a
|
|
73
|
+
* guideline tag like `(simplicity-first)`.
|
|
74
|
+
*/
|
|
75
|
+
export function parseKarpathyEnvelope(md) {
|
|
76
|
+
if (typeof md !== 'string' || md.length === 0)
|
|
77
|
+
return null;
|
|
78
|
+
const gateAction = matchEnum(md, /^\s*(?:gateAction|verdict)\s*:\s*(pass|warn|block)\s*$/m);
|
|
79
|
+
const passedMatch = md.match(/^\s*passed\s*:\s*(true|false)\s*$/m);
|
|
80
|
+
if (gateAction === null || passedMatch === null)
|
|
81
|
+
return null;
|
|
82
|
+
const violations = parseKarpathyViolations(md);
|
|
83
|
+
return {
|
|
84
|
+
passed: passedMatch[1] === 'true',
|
|
85
|
+
violations,
|
|
86
|
+
gateAction
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
// ─── Adapter: union → AggregatorInput (zero call-site churn) ──────────
|
|
90
|
+
/**
|
|
91
|
+
* Convert a partial list of `AnyEnvelope` values to the legacy
|
|
92
|
+
* `AggregatorInput` shape. `null` envelopes are skipped (a missing
|
|
93
|
+
* envelope is treated as "audit not run" — same semantics as
|
|
94
|
+
* `AggregatorInput` without that key).
|
|
95
|
+
*/
|
|
96
|
+
export function envelopesToAggregatorInput(list) {
|
|
97
|
+
const out = {};
|
|
98
|
+
for (const item of list) {
|
|
99
|
+
if (item === null)
|
|
100
|
+
continue;
|
|
101
|
+
if (item.kind === 'security')
|
|
102
|
+
out.security = item.envelope;
|
|
103
|
+
else if (item.kind === 'perf')
|
|
104
|
+
out.perf = item.envelope;
|
|
105
|
+
else if (item.kind === 'karpathy')
|
|
106
|
+
out.karpathy = item.envelope;
|
|
107
|
+
else if (item.kind === 'mut')
|
|
108
|
+
out.mut = item.envelope;
|
|
109
|
+
else if (item.kind === 'qa')
|
|
110
|
+
out.qa = item.envelope;
|
|
111
|
+
}
|
|
112
|
+
return out;
|
|
113
|
+
}
|
|
114
|
+
/** Extract the body of a `## Heading` section (text up to the next
|
|
115
|
+
* `## ` heading or EOF). Returns null when the heading is absent. */
|
|
116
|
+
export function extractSection(body, heading) {
|
|
117
|
+
const re = new RegExp(`^##\\s+${heading}\\s*$`, 'm');
|
|
118
|
+
const sectionStart = body.search(re);
|
|
119
|
+
if (sectionStart === -1)
|
|
120
|
+
return null;
|
|
121
|
+
const afterHeading = body.slice(sectionStart).split('\n');
|
|
122
|
+
// skip the heading line
|
|
123
|
+
afterHeading.shift();
|
|
124
|
+
// collect lines until next `## ` heading
|
|
125
|
+
const lines = [];
|
|
126
|
+
for (const line of afterHeading) {
|
|
127
|
+
if (/^##\s+/.test(line))
|
|
128
|
+
break;
|
|
129
|
+
lines.push(line);
|
|
130
|
+
}
|
|
131
|
+
return lines.join('\n').trim();
|
|
132
|
+
}
|
|
133
|
+
/** Parse `## Findings` bullets. Accepts the 3 real v2.12.0 shapes. */
|
|
134
|
+
export function parseFindingBullets(body) {
|
|
135
|
+
const section = body.split(/^##\s+Findings\s*$/m)[1];
|
|
136
|
+
if (section === undefined)
|
|
137
|
+
return [];
|
|
138
|
+
const lines = section.split('\n').filter((l) => l.trim().startsWith('- '));
|
|
139
|
+
const out = [];
|
|
140
|
+
for (const line of lines) {
|
|
141
|
+
const v = parseFindingBullet(line);
|
|
142
|
+
if (v !== null)
|
|
143
|
+
out.push(v);
|
|
144
|
+
}
|
|
145
|
+
return out;
|
|
146
|
+
}
|
|
@@ -15,62 +15,18 @@
|
|
|
15
15
|
* passed JSON explicitly) and adds a markdown fallback that extracts
|
|
16
16
|
* `verdict:` from the frontmatter and parses `## Findings` bullets.
|
|
17
17
|
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
18
|
+
* Wave 5 file-size split: the `AnyEnvelope` projection, the security /
|
|
19
|
+
* perf / karpathy parsers, the adapter and the section / bullet readers
|
|
20
|
+
* moved verbatim to `./envelope-parsers.js` (re-exported below so
|
|
21
|
+
* `./envelopes.js` stays the public path). The finding-carrying
|
|
22
|
+
* markdown helpers stay here. The parent ↔ sibling cycle is safe under
|
|
23
|
+
* `module: NodeNext` + `"type": "module"` (hoisted function
|
|
24
|
+
* declarations + erased types, all resolved at call time).
|
|
25
25
|
*/
|
|
26
|
-
import { type
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
* this field exists only in the TS type projection. The aggregator
|
|
31
|
-
* accepts both the legacy `{security, perf, ...}` shape and the new
|
|
32
|
-
* union via a thin adapter (`aggregateFromEnvelopes`).
|
|
33
|
-
*/
|
|
34
|
-
export type AnyEnvelope = {
|
|
35
|
-
kind: 'security';
|
|
36
|
-
envelope: SecurityAuditEnvelope;
|
|
37
|
-
} | {
|
|
38
|
-
kind: 'perf';
|
|
39
|
-
envelope: PerfAuditEnvelope;
|
|
40
|
-
} | {
|
|
41
|
-
kind: 'karpathy';
|
|
42
|
-
envelope: KarpathyEnvelope;
|
|
43
|
-
} | {
|
|
44
|
-
kind: 'mut';
|
|
45
|
-
envelope: MutEnvelope;
|
|
46
|
-
} | {
|
|
47
|
-
kind: 'qa';
|
|
48
|
-
envelope: QaEnvelope;
|
|
49
|
-
};
|
|
50
|
-
/**
|
|
51
|
-
* v2.13.3 AC-1 — parse real v2.12.0 audit markdown.
|
|
52
|
-
*
|
|
53
|
-
* Strategy (per PRD AC-1 mitigation):
|
|
54
|
-
* 1. Try JSON.parse first (back-compat with prior unit tests + any
|
|
55
|
-
* consumer that passes a JSON string explicitly).
|
|
56
|
-
* 2. Fall back to markdown parse: extract `verdict:` from YAML
|
|
57
|
-
* frontmatter, parse `## Findings` bullets in the body, return
|
|
58
|
-
* a SecurityAuditEnvelope.
|
|
59
|
-
* 3. Return null when neither path yields a valid envelope.
|
|
60
|
-
*/
|
|
61
|
-
export declare function parseSecurityEnvelope(md: string): SecurityAuditEnvelope | null;
|
|
62
|
-
export declare function parsePerfEnvelope(md: string): PerfAuditEnvelope | null;
|
|
63
|
-
/**
|
|
64
|
-
* Karpathy review is stored as markdown (`.peaks/_runtime/<sid>/rd/karpathy-review.md`).
|
|
65
|
-
* We parse the 3 state lines that drive the aggregator:
|
|
66
|
-
* - `gateAction: pass | warn | block`
|
|
67
|
-
* - `verdict: pass | warn | block` (alias for gateAction)
|
|
68
|
-
* - `passed: true | false`
|
|
69
|
-
* Plus the violations list under a `## Violations` heading, where each
|
|
70
|
-
* bullet begins with `[SEVERITY] file:line — hint` and declares a
|
|
71
|
-
* guideline tag like `(simplicity-first)`.
|
|
72
|
-
*/
|
|
73
|
-
export declare function parseKarpathyEnvelope(md: string): KarpathyEnvelope | null;
|
|
26
|
+
import { type KarpathyEnvelope, type MutEnvelope, type QaEnvelope } from './verdict-aggregator.js';
|
|
27
|
+
export { envelopesToAggregatorInput, parseKarpathyEnvelope, parsePerfEnvelope, parseSecurityEnvelope } from './envelope-parsers.js';
|
|
28
|
+
export type { AnyEnvelope } from './envelope-parsers.js';
|
|
29
|
+
export declare function parseKarpathyViolations(md: string): KarpathyEnvelope['violations'];
|
|
74
30
|
/**
|
|
75
31
|
* Mut envelope is JSON. Mirrors `loadMutReport`'s contract: missing
|
|
76
32
|
* fields → null. The strict shape matches `MutReportJson` in
|
|
@@ -83,10 +39,44 @@ export declare function parseMutEnvelope(json: unknown): MutEnvelope | null;
|
|
|
83
39
|
* optionally carries a `reportPath:` line. Anything else → null.
|
|
84
40
|
*/
|
|
85
41
|
export declare function parseQaEnvelope(md: string): QaEnvelope | null;
|
|
42
|
+
type AuditEnvelopeGuard<T> = (v: unknown) => v is T;
|
|
86
43
|
/**
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
-
*
|
|
44
|
+
* Parse a v2.12.0 audit markdown file:
|
|
45
|
+
* ---
|
|
46
|
+
* schemaVersion: 1
|
|
47
|
+
* verdict: warn
|
|
48
|
+
* violationsCount: 1
|
|
49
|
+
* ---
|
|
50
|
+
* ## Summary
|
|
51
|
+
* Test security envelope for dogfood.
|
|
52
|
+
*
|
|
53
|
+
* ## Findings
|
|
54
|
+
* - HIGH: hardcoded password in src/auth.ts:42
|
|
55
|
+
*
|
|
56
|
+
* ## Verdict
|
|
57
|
+
* verdict: warn
|
|
58
|
+
* CRITICAL: 0
|
|
59
|
+
*
|
|
60
|
+
* Strategy:
|
|
61
|
+
* 1. Strip YAML frontmatter (`---\n...\n---\n`). The frontmatter
|
|
62
|
+
* `verdict:` line is the source of truth — the body's `## Verdict`
|
|
63
|
+
* block is corroborating.
|
|
64
|
+
* 2. Pull `verdict` from frontmatter (regex, line-anchored).
|
|
65
|
+
* 3. Parse `## Findings` bullets — accept 3 real v2.12.0 shapes:
|
|
66
|
+
* a. `- [SEV] dim @ file:line — hint` (rendered by renderSecurityAuditArtifact)
|
|
67
|
+
* b. `- HIGH: hint in file:line` (real dogfood fixture shape)
|
|
68
|
+
* c. `- (none)` — empty
|
|
69
|
+
* 4. Build a candidate envelope and run through the strict-shape
|
|
70
|
+
* guard. Return null if the guard rejects (per the parser
|
|
71
|
+
* contract: parsers never throw).
|
|
91
72
|
*/
|
|
92
|
-
export declare function
|
|
73
|
+
export declare function parseAuditMarkdown<T>(md: string, guard: AuditEnvelopeGuard<T>): T | null;
|
|
74
|
+
/** Parse a single finding bullet. Returns null on malformed input. */
|
|
75
|
+
export declare function parseFindingBullet(line: string): {
|
|
76
|
+
dimension: string;
|
|
77
|
+
severity: 'CRITICAL' | 'HIGH' | 'MED' | 'LOW';
|
|
78
|
+
file: string;
|
|
79
|
+
line: number;
|
|
80
|
+
hint: string;
|
|
81
|
+
} | null;
|
|
82
|
+
export declare function matchEnum(md: string, regex: RegExp): string | null;
|
|
@@ -1,95 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
* heterogeneous (peaks-security-audit / peaks-perf-audit / karpathy /
|
|
6
|
-
* peaks-mut / peaks-qa). v2.13.1 shipped precedence wiring without
|
|
7
|
-
* touching the on-disk shapes. v2.13.2 introduced a discriminated-union
|
|
8
|
-
* type projection `AnyEnvelope` and 5 pure parser functions.
|
|
9
|
-
*
|
|
10
|
-
* v2.13.3 dogfood bug #1: parseSecurity/Perf previously only supported
|
|
11
|
-
* a JSON.parse path. The real v2.12.0 audit files at
|
|
12
|
-
* `.peaks/_runtime/<sid>/audit/security.md` and `audit/perf.md` are
|
|
13
|
-
* YAML frontmatter + markdown body — NOT JSON. The fix preserves
|
|
14
|
-
* the JSON.parse path (back-compat for unit tests + any consumer that
|
|
15
|
-
* passed JSON explicitly) and adds a markdown fallback that extracts
|
|
16
|
-
* `verdict:` from the frontmatter and parses `## Findings` bullets.
|
|
17
|
-
*
|
|
18
|
-
* Karpathy §2 (Simplicity First):
|
|
19
|
-
* - single file, ~210 lines, zero new IO.
|
|
20
|
-
* - re-uses existing strict-shape guards (isSecurityAuditEnvelope /
|
|
21
|
-
* isPerfAuditEnvelope) — no duplicate validation logic.
|
|
22
|
-
* - parsers return `null` on malformed input (mirrors loadMutReport's
|
|
23
|
-
* "missing → null" contract). Callers can detect "envelope missing"
|
|
24
|
-
* without throwing.
|
|
25
|
-
*/
|
|
26
|
-
import { isPerfAuditEnvelope, isSecurityAuditEnvelope } from '../audit-independent/index.js';
|
|
27
|
-
// ─── 5 parsers (pure, never throw) ─────────────────────────────────────
|
|
28
|
-
/**
|
|
29
|
-
* v2.13.3 AC-1 — parse real v2.12.0 audit markdown.
|
|
30
|
-
*
|
|
31
|
-
* Strategy (per PRD AC-1 mitigation):
|
|
32
|
-
* 1. Try JSON.parse first (back-compat with prior unit tests + any
|
|
33
|
-
* consumer that passes a JSON string explicitly).
|
|
34
|
-
* 2. Fall back to markdown parse: extract `verdict:` from YAML
|
|
35
|
-
* frontmatter, parse `## Findings` bullets in the body, return
|
|
36
|
-
* a SecurityAuditEnvelope.
|
|
37
|
-
* 3. Return null when neither path yields a valid envelope.
|
|
38
|
-
*/
|
|
39
|
-
export function parseSecurityEnvelope(md) {
|
|
40
|
-
if (typeof md !== 'string' || md.length === 0)
|
|
41
|
-
return null;
|
|
42
|
-
// Path 1: JSON (legacy / back-compat)
|
|
43
|
-
try {
|
|
44
|
-
const jsonValue = JSON.parse(md);
|
|
45
|
-
if (isSecurityAuditEnvelope(jsonValue))
|
|
46
|
-
return jsonValue;
|
|
47
|
-
}
|
|
48
|
-
catch { // TODO(g2): legacy silent catch — grace: 1 minor release (v2.14.0)
|
|
49
|
-
// not JSON — fall through to markdown parse
|
|
50
|
-
}
|
|
51
|
-
// Path 2: real v2.12.0 markdown (YAML frontmatter + body)
|
|
52
|
-
return parseAuditMarkdown(md, isSecurityAuditEnvelope);
|
|
53
|
-
}
|
|
54
|
-
export function parsePerfEnvelope(md) {
|
|
55
|
-
if (typeof md !== 'string' || md.length === 0)
|
|
56
|
-
return null;
|
|
57
|
-
// Path 1: JSON (legacy / back-compat)
|
|
58
|
-
try {
|
|
59
|
-
const jsonValue = JSON.parse(md);
|
|
60
|
-
if (isPerfAuditEnvelope(jsonValue))
|
|
61
|
-
return jsonValue;
|
|
62
|
-
}
|
|
63
|
-
catch { // TODO(g2): legacy silent catch — grace: 1 minor release (v2.14.0)
|
|
64
|
-
// not JSON — fall through to markdown parse
|
|
65
|
-
}
|
|
66
|
-
// Path 2: real v2.12.0 markdown (YAML frontmatter + body)
|
|
67
|
-
return parseAuditMarkdown(md, isPerfAuditEnvelope);
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Karpathy review is stored as markdown (`.peaks/_runtime/<sid>/rd/karpathy-review.md`).
|
|
71
|
-
* We parse the 3 state lines that drive the aggregator:
|
|
72
|
-
* - `gateAction: pass | warn | block`
|
|
73
|
-
* - `verdict: pass | warn | block` (alias for gateAction)
|
|
74
|
-
* - `passed: true | false`
|
|
75
|
-
* Plus the violations list under a `## Violations` heading, where each
|
|
76
|
-
* bullet begins with `[SEVERITY] file:line — hint` and declares a
|
|
77
|
-
* guideline tag like `(simplicity-first)`.
|
|
78
|
-
*/
|
|
79
|
-
export function parseKarpathyEnvelope(md) {
|
|
80
|
-
if (typeof md !== 'string' || md.length === 0)
|
|
81
|
-
return null;
|
|
82
|
-
const gateAction = matchEnum(md, /^\s*(?:gateAction|verdict)\s*:\s*(pass|warn|block)\s*$/m);
|
|
83
|
-
const passedMatch = md.match(/^\s*passed\s*:\s*(true|false)\s*$/m);
|
|
84
|
-
if (gateAction === null || passedMatch === null)
|
|
85
|
-
return null;
|
|
86
|
-
const violations = parseKarpathyViolations(md);
|
|
87
|
-
return {
|
|
88
|
-
passed: passedMatch[1] === 'true',
|
|
89
|
-
violations,
|
|
90
|
-
gateAction
|
|
91
|
-
};
|
|
92
|
-
}
|
|
1
|
+
import { extractSection, parseFindingBullets } from './envelope-parsers.js';
|
|
2
|
+
// ─── Re-exports: parsers that live in ./envelope-parsers.js ───────────
|
|
3
|
+
export { envelopesToAggregatorInput, parseKarpathyEnvelope, parsePerfEnvelope, parseSecurityEnvelope } from './envelope-parsers.js';
|
|
4
|
+
// ─── Karpathy violation reader (called by parseKarpathyEnvelope) ───────
|
|
93
5
|
const KARPATHY_GUIDELINES = [
|
|
94
6
|
'think-before-coding',
|
|
95
7
|
'simplicity-first',
|
|
@@ -97,7 +9,7 @@ const KARPATHY_GUIDELINES = [
|
|
|
97
9
|
'goal-driven-execution'
|
|
98
10
|
];
|
|
99
11
|
const KARPATHY_SEVERITIES = ['CRITICAL', 'HIGH', 'MED', 'LOW'];
|
|
100
|
-
function parseKarpathyViolations(md) {
|
|
12
|
+
export function parseKarpathyViolations(md) {
|
|
101
13
|
const section = md.split(/^##\s+Violations\s*$/m)[1];
|
|
102
14
|
if (section === undefined)
|
|
103
15
|
return [];
|
|
@@ -108,7 +20,11 @@ function parseKarpathyViolations(md) {
|
|
|
108
20
|
if (m === null)
|
|
109
21
|
continue;
|
|
110
22
|
const [, severity, file, lineNo, hint, guideline] = m;
|
|
111
|
-
if (severity === undefined ||
|
|
23
|
+
if (severity === undefined ||
|
|
24
|
+
file === undefined ||
|
|
25
|
+
lineNo === undefined ||
|
|
26
|
+
hint === undefined ||
|
|
27
|
+
guideline === undefined)
|
|
112
28
|
continue;
|
|
113
29
|
if (!KARPATHY_SEVERITIES.includes(severity))
|
|
114
30
|
continue;
|
|
@@ -180,31 +96,6 @@ export function parseQaEnvelope(md) {
|
|
|
180
96
|
...(reportPathMatch !== null ? { reportPath: reportPathMatch[1].trim() } : {})
|
|
181
97
|
};
|
|
182
98
|
}
|
|
183
|
-
// ─── Adapter: union → AggregatorInput (zero call-site churn) ──────────
|
|
184
|
-
/**
|
|
185
|
-
* Convert a partial list of `AnyEnvelope` values to the legacy
|
|
186
|
-
* `AggregatorInput` shape. `null` envelopes are skipped (a missing
|
|
187
|
-
* envelope is treated as "audit not run" — same semantics as
|
|
188
|
-
* `AggregatorInput` without that key).
|
|
189
|
-
*/
|
|
190
|
-
export function envelopesToAggregatorInput(list) {
|
|
191
|
-
const out = {};
|
|
192
|
-
for (const item of list) {
|
|
193
|
-
if (item === null)
|
|
194
|
-
continue;
|
|
195
|
-
if (item.kind === 'security')
|
|
196
|
-
out.security = item.envelope;
|
|
197
|
-
else if (item.kind === 'perf')
|
|
198
|
-
out.perf = item.envelope;
|
|
199
|
-
else if (item.kind === 'karpathy')
|
|
200
|
-
out.karpathy = item.envelope;
|
|
201
|
-
else if (item.kind === 'mut')
|
|
202
|
-
out.mut = item.envelope;
|
|
203
|
-
else if (item.kind === 'qa')
|
|
204
|
-
out.qa = item.envelope;
|
|
205
|
-
}
|
|
206
|
-
return out;
|
|
207
|
-
}
|
|
208
99
|
/**
|
|
209
100
|
* Parse a v2.12.0 audit markdown file:
|
|
210
101
|
* ---
|
|
@@ -235,7 +126,7 @@ export function envelopesToAggregatorInput(list) {
|
|
|
235
126
|
* guard. Return null if the guard rejects (per the parser
|
|
236
127
|
* contract: parsers never throw).
|
|
237
128
|
*/
|
|
238
|
-
function parseAuditMarkdown(md, guard) {
|
|
129
|
+
export function parseAuditMarkdown(md, guard) {
|
|
239
130
|
const frontmatterMatch = md.match(/^---\n([\s\S]*?)\n---\n([\s\S]*)$/);
|
|
240
131
|
// The v2.12.0 audit artifact contract is YAML frontmatter + body.
|
|
241
132
|
// The CLI also writes a body-only variant (no frontmatter) when the
|
|
@@ -270,46 +161,17 @@ function parseAuditMarkdown(md, guard) {
|
|
|
270
161
|
};
|
|
271
162
|
return guard(candidate) ? candidate : null;
|
|
272
163
|
}
|
|
273
|
-
/** Extract the body of a `## Heading` section (text up to the next
|
|
274
|
-
* `## ` heading or EOF). Returns null when the heading is absent. */
|
|
275
|
-
function extractSection(body, heading) {
|
|
276
|
-
const re = new RegExp(`^##\\s+${heading}\\s*$`, 'm');
|
|
277
|
-
const sectionStart = body.search(re);
|
|
278
|
-
if (sectionStart === -1)
|
|
279
|
-
return null;
|
|
280
|
-
const afterHeading = body.slice(sectionStart).split('\n');
|
|
281
|
-
// skip the heading line
|
|
282
|
-
afterHeading.shift();
|
|
283
|
-
// collect lines until next `## ` heading
|
|
284
|
-
const lines = [];
|
|
285
|
-
for (const line of afterHeading) {
|
|
286
|
-
if (/^##\s+/.test(line))
|
|
287
|
-
break;
|
|
288
|
-
lines.push(line);
|
|
289
|
-
}
|
|
290
|
-
return lines.join('\n').trim();
|
|
291
|
-
}
|
|
292
|
-
/** Parse `## Findings` bullets. Accepts the 3 real v2.12.0 shapes. */
|
|
293
|
-
function parseFindingBullets(body) {
|
|
294
|
-
const section = body.split(/^##\s+Findings\s*$/m)[1];
|
|
295
|
-
if (section === undefined)
|
|
296
|
-
return [];
|
|
297
|
-
const lines = section.split('\n').filter((l) => l.trim().startsWith('- '));
|
|
298
|
-
const out = [];
|
|
299
|
-
for (const line of lines) {
|
|
300
|
-
const v = parseFindingBullet(line);
|
|
301
|
-
if (v !== null)
|
|
302
|
-
out.push(v);
|
|
303
|
-
}
|
|
304
|
-
return out;
|
|
305
|
-
}
|
|
306
164
|
/** Parse a single finding bullet. Returns null on malformed input. */
|
|
307
|
-
function parseFindingBullet(line) {
|
|
165
|
+
export function parseFindingBullet(line) {
|
|
308
166
|
// Shape A (rendered by renderSecurityAuditArtifact): `- [SEV] dim @ file:line — hint`
|
|
309
167
|
const a = line.match(/^\s*-\s*\[(CRITICAL|HIGH|MED|LOW)\]\s+(\S+)\s+@\s+([^:\s]+):(\d+)\s+[—-]\s+(.+)$/);
|
|
310
168
|
if (a !== null) {
|
|
311
169
|
const [, severity, dimension, file, lineNo, hint] = a;
|
|
312
|
-
if (severity === undefined ||
|
|
170
|
+
if (severity === undefined ||
|
|
171
|
+
dimension === undefined ||
|
|
172
|
+
file === undefined ||
|
|
173
|
+
lineNo === undefined ||
|
|
174
|
+
hint === undefined)
|
|
313
175
|
return null;
|
|
314
176
|
return {
|
|
315
177
|
severity: severity,
|
|
@@ -342,7 +204,7 @@ function parseFindingBullet(line) {
|
|
|
342
204
|
// future dimension-extraction contract. Already covered above.
|
|
343
205
|
return null;
|
|
344
206
|
}
|
|
345
|
-
function matchEnum(md, regex) {
|
|
207
|
+
export function matchEnum(md, regex) {
|
|
346
208
|
const m = md.match(regex);
|
|
347
209
|
return m === null ? null : m[1];
|
|
348
210
|
}
|
|
@@ -49,7 +49,15 @@ export function aggregateVerdict(input) {
|
|
|
49
49
|
const env = input.security;
|
|
50
50
|
elevate(env.verdict);
|
|
51
51
|
for (const v of env.violations) {
|
|
52
|
-
pushFix(state, {
|
|
52
|
+
pushFix(state, {
|
|
53
|
+
source: 'security-audit',
|
|
54
|
+
sources: ['security-audit'],
|
|
55
|
+
signal: env.verdict,
|
|
56
|
+
severity: v.severity,
|
|
57
|
+
file: v.file,
|
|
58
|
+
line: v.line,
|
|
59
|
+
hint: v.hint
|
|
60
|
+
}, { file: v.file, line: v.line, hint: v.hint });
|
|
53
61
|
}
|
|
54
62
|
}
|
|
55
63
|
// 2. Perf audit envelope (v2.12.0 schema — preserved).
|
|
@@ -57,7 +65,15 @@ export function aggregateVerdict(input) {
|
|
|
57
65
|
const env = input.perf;
|
|
58
66
|
elevate(env.verdict);
|
|
59
67
|
for (const v of env.violations) {
|
|
60
|
-
pushFix(state, {
|
|
68
|
+
pushFix(state, {
|
|
69
|
+
source: 'perf-audit',
|
|
70
|
+
sources: ['perf-audit'],
|
|
71
|
+
signal: env.verdict,
|
|
72
|
+
severity: v.severity,
|
|
73
|
+
file: v.file,
|
|
74
|
+
line: v.line,
|
|
75
|
+
hint: v.hint
|
|
76
|
+
}, { file: v.file, line: v.line, hint: v.hint });
|
|
61
77
|
}
|
|
62
78
|
}
|
|
63
79
|
// 3. Karpathy reviewer — gateAction drives precedence.
|
|
@@ -65,7 +81,15 @@ export function aggregateVerdict(input) {
|
|
|
65
81
|
const env = input.karpathy;
|
|
66
82
|
elevate(env.gateAction);
|
|
67
83
|
for (const v of env.violations) {
|
|
68
|
-
pushFix(state, {
|
|
84
|
+
pushFix(state, {
|
|
85
|
+
source: 'karpathy-reviewer',
|
|
86
|
+
sources: ['karpathy-reviewer'],
|
|
87
|
+
signal: env.gateAction,
|
|
88
|
+
severity: v.severity,
|
|
89
|
+
file: v.file,
|
|
90
|
+
line: v.line,
|
|
91
|
+
hint: v.hint
|
|
92
|
+
}, { file: v.file, line: v.line, hint: v.hint });
|
|
69
93
|
}
|
|
70
94
|
}
|
|
71
95
|
// 4. peaks-mut — passed:false → block with per-violation reason.
|