peaks-loop 4.0.53 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +85 -0
- package/README-en.md +16 -1
- package/README.md +15 -1
- package/config/eslint/.peaks-rules.cjs +158 -13
- package/config/eslint/tsconfig.lint.json +47 -0
- package/dist/cli/cli-envelope.d.ts +114 -0
- package/dist/cli/cli-envelope.js +85 -0
- package/dist/cli/cli-helpers.d.ts +1 -1
- package/dist/cli/cli-helpers.js +8 -4
- package/dist/cli/commands/_cli-error-envelope.js +1 -1
- package/dist/cli/commands/_register.js +85 -38
- package/dist/cli/commands/_super.js +40 -7
- package/dist/cli/commands/adapter-commands-s2a.js +8 -7
- package/dist/cli/commands/adapter-commands.d.ts +2 -2
- package/dist/cli/commands/adapter-commands.js +7 -8
- package/dist/cli/commands/api-diff-commands.js +5 -4
- package/dist/cli/commands/asset-commands.d.ts +2 -2
- package/dist/cli/commands/asset-commands.js +135 -132
- package/dist/cli/commands/audit-commands.d.ts +1 -1
- package/dist/cli/commands/audit-commands.js +75 -32
- package/dist/cli/commands/autonomous-swarm-commands.d.ts +1 -1
- package/dist/cli/commands/autonomous-swarm-commands.js +14 -8
- package/dist/cli/commands/baseline-commands.js +34 -9
- package/dist/cli/commands/bee-commands.d.ts +1 -1
- package/dist/cli/commands/bee-commands.js +18 -21
- package/dist/cli/commands/best-practice-scan-command.js +6 -34
- package/dist/cli/commands/best-practice-scan-helpers.d.ts +12 -0
- package/dist/cli/commands/best-practice-scan-helpers.js +37 -0
- package/dist/cli/commands/capability-commands.d.ts +1 -1
- package/dist/cli/commands/capability-commands.js +14 -4
- package/dist/cli/commands/capability-worker-config-sc-commands.d.ts +1 -1
- package/dist/cli/commands/changeset-commands.js +21 -18
- package/dist/cli/commands/code-gate-command.js +9 -2
- package/dist/cli/commands/code-job-shape-commands-read-job-shape.d.ts +15 -0
- package/dist/cli/commands/code-job-shape-commands-read-job-shape.js +70 -0
- package/dist/cli/commands/code-job-shape-commands.js +21 -45
- package/dist/cli/commands/code-mode-gate-commands.d.ts +15 -1
- package/dist/cli/commands/code-mode-gate-commands.js +19 -199
- package/dist/cli/commands/code-mode-gate-plan-command.d.ts +14 -0
- package/dist/cli/commands/code-mode-gate-plan-command.js +23 -0
- package/dist/cli/commands/code-mode-gate-should-pause-command.d.ts +24 -0
- package/dist/cli/commands/code-mode-gate-should-pause-command.js +137 -0
- package/dist/cli/commands/code-mode-gate-should-pause-envelope.d.ts +59 -0
- package/dist/cli/commands/code-mode-gate-should-pause-envelope.js +144 -0
- package/dist/cli/commands/code-orchestrator-can-do.js +4 -4
- package/dist/cli/commands/code-review-commands.js +18 -3
- package/dist/cli/commands/code-run-command.js +44 -7
- package/dist/cli/commands/code-runtime-commands.d.ts +17 -0
- package/dist/cli/commands/code-runtime-commands.js +105 -73
- package/dist/cli/commands/codegraph-commands.js +175 -11
- package/dist/cli/commands/codegraph-status-command.js +6 -2
- package/dist/cli/commands/compact-command.js +52 -26
- package/dist/cli/commands/complexity-commands.js +6 -7
- package/dist/cli/commands/config-commands.d.ts +1 -1
- package/dist/cli/commands/config-commands.js +33 -9
- package/dist/cli/commands/container-commands.js +39 -15
- package/dist/cli/commands/context-commands.d.ts +1 -1
- package/dist/cli/commands/context-commands.js +40 -13
- package/dist/cli/commands/core/artifacts-command.js +11 -3
- package/dist/cli/commands/core/binding-commands.js +9 -6
- package/dist/cli/commands/core/doctor-command.js +7 -4
- package/dist/cli/commands/core/memory-command.js +81 -22
- package/dist/cli/commands/core/proxy-command.js +3 -1
- package/dist/cli/commands/core/session-command.js +16 -8
- package/dist/cli/commands/core/skill-command.js +31 -16
- package/dist/cli/commands/core/standards-command.js +55 -13
- package/dist/cli/commands/cron-commands-actions.d.ts +43 -0
- package/dist/cli/commands/cron-commands-actions.js +128 -0
- package/dist/cli/commands/cron-commands-schedule.d.ts +86 -0
- package/dist/cli/commands/cron-commands-schedule.js +151 -0
- package/dist/cli/commands/cron-commands.d.ts +35 -32
- package/dist/cli/commands/cron-commands.js +167 -211
- package/dist/cli/commands/cron-scheduler-commands.js +40 -20
- package/dist/cli/commands/cron-scheduler-persist.d.ts +110 -0
- package/dist/cli/commands/cron-scheduler-persist.js +171 -0
- package/dist/cli/commands/dashboard-long-run.js +45 -14
- package/dist/cli/commands/dashboard-summary.js +15 -5
- package/dist/cli/commands/dispatch-commands.js +69 -34
- package/dist/cli/commands/dispatch-from-dag.js +9 -10
- package/dist/cli/commands/doc-commands.js +8 -9
- package/dist/cli/commands/doctor/invoke-from-code.js +1 -1
- package/dist/cli/commands/e2e-verify-env.d.ts +19 -0
- package/dist/cli/commands/e2e-verify-env.js +19 -0
- package/dist/cli/commands/e2e-verify.d.ts +3 -14
- package/dist/cli/commands/e2e-verify.js +49 -29
- package/dist/cli/commands/ecc-commands.d.ts +1 -1
- package/dist/cli/commands/ecc-commands.js +8 -17
- package/dist/cli/commands/evidence-commands.js +10 -6
- package/dist/cli/commands/evolution-commands.d.ts +2 -2
- package/dist/cli/commands/evolution-commands.js +109 -115
- package/dist/cli/commands/feedback-commands-helpers.d.ts +22 -0
- package/dist/cli/commands/feedback-commands-helpers.js +33 -0
- package/dist/cli/commands/feedback-commands.js +15 -38
- package/dist/cli/commands/final-review-commands.d.ts +1 -1
- package/dist/cli/commands/final-review-commands.js +24 -22
- package/dist/cli/commands/fixture-commands.d.ts +1 -1
- package/dist/cli/commands/fixture-commands.js +17 -6
- package/dist/cli/commands/fork-commands-sync-verify.d.ts +12 -0
- package/dist/cli/commands/fork-commands-sync-verify.js +72 -0
- package/dist/cli/commands/fork-commands.js +19 -51
- package/dist/cli/commands/fresh-context-commands.js +3 -1
- package/dist/cli/commands/gate-commands-enforce.d.ts +82 -0
- package/dist/cli/commands/gate-commands-enforce.js +210 -0
- package/dist/cli/commands/gate-commands.d.ts +1 -1
- package/dist/cli/commands/gate-commands.js +85 -205
- package/dist/cli/commands/governance-classify-contract-commands.d.ts +1 -1
- package/dist/cli/commands/governance-classify-contract-commands.js +28 -17
- package/dist/cli/commands/heartbeat-commands-action.d.ts +7 -0
- package/dist/cli/commands/heartbeat-commands-action.js +192 -0
- package/dist/cli/commands/heartbeat-commands-validation.d.ts +57 -0
- package/dist/cli/commands/heartbeat-commands-validation.js +120 -0
- package/dist/cli/commands/heartbeat-commands.d.ts +27 -6
- package/dist/cli/commands/heartbeat-commands.js +19 -198
- package/dist/cli/commands/hook-handle.d.ts +1 -1
- package/dist/cli/commands/hook-handle.js +46 -13
- package/dist/cli/commands/hooks-commands.d.ts +1 -1
- package/dist/cli/commands/hooks-commands.js +18 -6
- package/dist/cli/commands/ide-commands.d.ts +1 -1
- package/dist/cli/commands/ide-commands.js +5 -3
- package/dist/cli/commands/impact-commands.js +8 -2
- package/dist/cli/commands/job-add-slice-command.d.ts +43 -0
- package/dist/cli/commands/job-add-slice-command.js +151 -0
- package/dist/cli/commands/job-commands.d.ts +64 -0
- package/dist/cli/commands/job-commands.js +134 -63
- package/dist/cli/commands/lease-metrics-commands-support.d.ts +73 -0
- package/dist/cli/commands/lease-metrics-commands-support.js +67 -0
- package/dist/cli/commands/lease-metrics-commands.d.ts +3 -44
- package/dist/cli/commands/lease-metrics-commands.js +21 -61
- package/dist/cli/commands/lease-stats-commands.d.ts +1 -1
- package/dist/cli/commands/lease-stats-commands.js +9 -6
- package/dist/cli/commands/lint-commands.d.ts +9 -3
- package/dist/cli/commands/lint-commands.js +15 -8
- package/dist/cli/commands/log-commands.d.ts +1 -1
- package/dist/cli/commands/log-commands.js +8 -6
- package/dist/cli/commands/loop-commands.d.ts +1 -1
- package/dist/cli/commands/loop-commands.js +50 -50
- package/dist/cli/commands/loop-eval-commands.d.ts +1 -1
- package/dist/cli/commands/loop-eval-commands.js +101 -30
- package/dist/cli/commands/memory-commands.js +21 -13
- package/dist/cli/commands/migrate-1-4-1-command.js +1 -1
- package/dist/cli/commands/migrate-v2-10-to-v2-11-command.js +2 -2
- package/dist/cli/commands/mut-commands-helpers.d.ts +30 -0
- package/dist/cli/commands/mut-commands-helpers.js +43 -0
- package/dist/cli/commands/mut-commands.js +16 -58
- package/dist/cli/commands/observability-commands-queries.d.ts +37 -0
- package/dist/cli/commands/observability-commands-queries.js +113 -0
- package/dist/cli/commands/observability-commands.d.ts +1 -1
- package/dist/cli/commands/observability-commands.js +7 -92
- package/dist/cli/commands/openspec-commands.d.ts +1 -1
- package/dist/cli/commands/openspec-commands.js +20 -8
- package/dist/cli/commands/outer-cache-commands.js +18 -7
- package/dist/cli/commands/perf-audit-commands.d.ts +1 -1
- package/dist/cli/commands/perf-audit-commands.js +12 -7
- package/dist/cli/commands/perf-commands.d.ts +1 -1
- package/dist/cli/commands/perf-commands.js +5 -5
- package/dist/cli/commands/playwright-commands.d.ts +1 -1
- package/dist/cli/commands/playwright-commands.js +20 -8
- package/dist/cli/commands/polyrepo-commands.js +21 -19
- package/dist/cli/commands/prd-blocks-commands.js +1 -3
- package/dist/cli/commands/prd-commands.d.ts +1 -1
- package/dist/cli/commands/prd-commands.js +21 -2
- package/dist/cli/commands/preferences-commands.js +13 -12
- package/dist/cli/commands/primer-command.js +5 -5
- package/dist/cli/commands/project-commands.d.ts +1 -1
- package/dist/cli/commands/project-commands.js +33 -9
- package/dist/cli/commands/qa-business-review-commands.js +16 -12
- package/dist/cli/commands/qa-commands.d.ts +1 -1
- package/dist/cli/commands/qa-commands.js +3 -5
- package/dist/cli/commands/release-commands.d.ts +3 -1
- package/dist/cli/commands/release-commands.js +33 -22
- package/dist/cli/commands/request-commands.js +47 -30
- package/dist/cli/commands/request-format-helpers.js +1 -1
- package/dist/cli/commands/retrospective-commands.d.ts +18 -11
- package/dist/cli/commands/retrospective-commands.js +24 -173
- package/dist/cli/commands/retrospective-index-command.d.ts +26 -0
- package/dist/cli/commands/retrospective-index-command.js +99 -0
- package/dist/cli/commands/retrospective-project-root.d.ts +9 -0
- package/dist/cli/commands/retrospective-project-root.js +15 -0
- package/dist/cli/commands/retrospective-search-command.d.ts +27 -0
- package/dist/cli/commands/retrospective-search-command.js +97 -0
- package/dist/cli/commands/retrospective-show-command.d.ts +23 -0
- package/dist/cli/commands/retrospective-show-command.js +80 -0
- package/dist/cli/commands/reviewer-commands.d.ts +1 -1
- package/dist/cli/commands/role-commands.js +14 -9
- package/dist/cli/commands/runtime-commands.js +14 -7
- package/dist/cli/commands/sc-commands.d.ts +1 -1
- package/dist/cli/commands/sc-commands.js +39 -6
- package/dist/cli/commands/scan-commands.js +36 -13
- package/dist/cli/commands/security-audit-commands.d.ts +1 -1
- package/dist/cli/commands/security-audit-commands.js +12 -7
- package/dist/cli/commands/sediment-commands.d.ts +2 -2
- package/dist/cli/commands/sediment-commands.js +146 -139
- package/dist/cli/commands/session-24h-mode.js +15 -2
- package/dist/cli/commands/session-checkpoint-command.js +1 -1
- package/dist/cli/commands/session-migrate-skill-name.js +1 -1
- package/dist/cli/commands/shadcn-commands.d.ts +1 -1
- package/dist/cli/commands/shadcn-commands.js +3 -1
- package/dist/cli/commands/share-commands.js +38 -39
- package/dist/cli/commands/skill-conformance-commands.d.ts +1 -1
- package/dist/cli/commands/skill-conformance-commands.js +1 -1
- package/dist/cli/commands/skill-loop-engineering-readiness-commands.js +16 -17
- package/dist/cli/commands/skill-visibility.js +2 -2
- package/dist/cli/commands/slice-commands.d.ts +1 -1
- package/dist/cli/commands/slice-commands.js +36 -12
- package/dist/cli/commands/slice-integrate-commands.js +6 -7
- package/dist/cli/commands/slice-review-commands-helpers.d.ts +26 -0
- package/dist/cli/commands/slice-review-commands-helpers.js +26 -0
- package/dist/cli/commands/slice-review-commands.js +16 -24
- package/dist/cli/commands/smoke-commands-add-path.d.ts +14 -0
- package/dist/cli/commands/smoke-commands-add-path.js +39 -0
- package/dist/cli/commands/smoke-commands-define.d.ts +18 -0
- package/dist/cli/commands/smoke-commands-define.js +97 -0
- package/dist/cli/commands/smoke-commands-run.d.ts +18 -0
- package/dist/cli/commands/smoke-commands-run.js +119 -0
- package/dist/cli/commands/smoke-commands.d.ts +10 -1
- package/dist/cli/commands/smoke-commands.js +17 -179
- package/dist/cli/commands/sop-commands.d.ts +1 -1
- package/dist/cli/commands/sop-commands.js +38 -10
- package/dist/cli/commands/statusline-commands.d.ts +1 -1
- package/dist/cli/commands/statusline-commands.js +21 -10
- package/dist/cli/commands/sub-agent/detached.js +3 -3
- package/dist/cli/commands/sub-agent-dispatch-guard.d.ts +1 -1
- package/dist/cli/commands/sub-agent-shared.d.ts +23 -0
- package/dist/cli/commands/sub-agent-shared.js +40 -1
- package/dist/cli/commands/sub-agent-shutdown-commands.js +17 -9
- package/dist/cli/commands/swarm-commands.d.ts +1 -1
- package/dist/cli/commands/swarm-commands.js +13 -6
- package/dist/cli/commands/tech-commands-helpers.d.ts +37 -0
- package/dist/cli/commands/tech-commands-helpers.js +24 -0
- package/dist/cli/commands/tech-commands.d.ts +2 -29
- package/dist/cli/commands/tech-commands.js +15 -28
- package/dist/cli/commands/test-commands.js +27 -7
- package/dist/cli/commands/upgrade-commands.d.ts +1 -1
- package/dist/cli/commands/user-touchpoint-commands.js +1 -3
- package/dist/cli/commands/verdict-aggregate-command.d.ts +1 -1
- package/dist/cli/commands/verdict-aggregate-command.js +20 -7
- package/dist/cli/commands/vm-commands.js +48 -19
- package/dist/cli/commands/wave-plan-commands.js +5 -2
- package/dist/cli/commands/web-commands.js +14 -4
- package/dist/cli/commands/web-lifecycle-commands.js +5 -3
- package/dist/cli/commands/workflow-commands.d.ts +1 -1
- package/dist/cli/commands/workflow-commands.js +64 -29
- package/dist/cli/commands/workflow-lifecycle-commands.js +19 -17
- package/dist/cli/commands/workflow-plan-commands-actions.d.ts +20 -0
- package/dist/cli/commands/workflow-plan-commands-actions.js +115 -0
- package/dist/cli/commands/workflow-plan-commands-session.d.ts +17 -0
- package/dist/cli/commands/workflow-plan-commands-session.js +59 -0
- package/dist/cli/commands/workflow-plan-commands.d.ts +10 -21
- package/dist/cli/commands/workflow-plan-commands.js +15 -141
- package/dist/cli/commands/workspace/clean-command.js +4 -1
- package/dist/cli/commands/workspace/helpers.js +2 -1
- package/dist/cli/commands/workspace/init-command.js +80 -20
- package/dist/cli/commands/workspace/reconcile-command.js +3 -1
- package/dist/cli/commands/workspace-commands.d.ts +1 -1
- package/dist/cli/commands/workspace-commands.js +1 -1
- package/dist/cli/commands/worktree-auth-commands.d.ts +1 -1
- package/dist/cli/commands/worktree-auth-commands.js +16 -169
- package/dist/cli/commands/worktree-auth-grant-command.d.ts +14 -0
- package/dist/cli/commands/worktree-auth-grant-command.js +118 -0
- package/dist/cli/commands/worktree-auth-manage-commands.d.ts +17 -0
- package/dist/cli/commands/worktree-auth-manage-commands.js +128 -0
- package/dist/cli/commands/worktree-lease-commands.d.ts +1 -1
- package/dist/cli/commands/worktree-lease-commands.js +65 -37
- package/dist/cli/index.js +6 -2
- package/dist/cli/program.js +6 -3
- package/dist/hooks/pre-tool-use-sub-agent.js +1 -6
- package/dist/reporters/bdd-reporter.js +9 -3
- package/dist/services/24h-mode/auto-engage.d.ts +19 -0
- package/dist/services/24h-mode/auto-engage.js +35 -0
- package/dist/services/24h-mode/decider.js +5 -1
- package/dist/services/24h-mode/store.js +4 -2
- package/dist/services/adapter/adapter-registry.js +20 -8
- package/dist/services/adapter/adapter.d.ts +2 -2
- package/dist/services/adapter/auto-adapter.d.ts +2 -2
- package/dist/services/adapter/auto-adapter.js +1 -1
- package/dist/services/adapter/claude-adapter.d.ts +1 -1
- package/dist/services/adapter/claude-adapter.js +8 -8
- package/dist/services/adapter/codex-adapter.d.ts +2 -2
- package/dist/services/adapter/codex-adapter.js +20 -8
- package/dist/services/adapter/copilot-adapter.d.ts +2 -2
- package/dist/services/adapter/copilot-adapter.js +20 -8
- package/dist/services/artifacts/artifact-prerequisites.js +44 -8
- package/dist/services/artifacts/artifact-service.js +3 -1
- package/dist/services/artifacts/artifact-template-bodies.d.ts +12 -0
- package/dist/services/artifacts/artifact-template-bodies.js +165 -0
- package/dist/services/artifacts/artifact-templates.js +26 -168
- package/dist/services/artifacts/request-artifact-service.js +14 -7
- package/dist/services/artifacts/request-artifact-state-helpers.d.ts +3 -2
- package/dist/services/artifacts/request-artifact-state-helpers.js +3 -5
- package/dist/services/artifacts/workspace-artifact-helpers.d.ts +28 -0
- package/dist/services/artifacts/workspace-artifact-helpers.js +54 -0
- package/dist/services/artifacts/workspace-service.d.ts +3 -22
- package/dist/services/artifacts/workspace-service.js +10 -60
- package/dist/services/audit/artifact-writer.js +21 -21
- package/dist/services/audit/audit-goal-service.js +2 -2
- package/dist/services/audit/backing-detector.js +7 -4
- package/dist/services/audit/classifier.js +3 -3
- package/dist/services/audit/decision-writer.js +13 -9
- package/dist/services/audit/enforcer-liveness.js +1 -1
- package/dist/services/audit/enforcers/active-skill-resolver.js +15 -7
- package/dist/services/audit/enforcers/design-draft-confirm.js +4 -4
- package/dist/services/audit/enforcers/lint-audit-regression.js +10 -5
- package/dist/services/audit/enforcers/lint-bee-runtime-contract.js +16 -8
- package/dist/services/audit/enforcers/lint-catalog-governance.js +8 -4
- package/dist/services/audit/enforcers/lint-output-style.js +4 -2
- package/dist/services/audit/enforcers/lint-peaks-code-runtime.js +8 -3
- package/dist/services/audit/enforcers/lint-peaks-skill-runtime.js +8 -3
- package/dist/services/audit/enforcers/lint-peaks-ui-sc-txt-runtime.js +20 -20
- package/dist/services/audit/enforcers/lint-prd-artifact-handoff.js +5 -5
- package/dist/services/audit/enforcers/lint-prd-source-snapshot.d.ts +1 -1
- package/dist/services/audit/enforcers/lint-prd-source-snapshot.js +5 -5
- package/dist/services/audit/enforcers/lint-qa-gateguard-and-runtime.js +10 -10
- package/dist/services/audit/enforcers/lint-rd-handoff-coverage.js +10 -8
- package/dist/services/audit/enforcers/lint-reference-shape.js +50 -18
- package/dist/services/audit/enforcers/lint-skill-presence-mandatory.js +5 -5
- package/dist/services/audit/enforcers/lint-style.js +44 -11
- package/dist/services/audit/enforcers/lint-workflow-shape.js +4 -2
- package/dist/services/audit/enforcers/login-gate.js +2 -6
- package/dist/services/audit/enforcers/mock-placement.js +2 -2
- package/dist/services/audit/enforcers/no-root-pollution.js +38 -9
- package/dist/services/audit/enforcers/pre-rd-scan.js +1 -1
- package/dist/services/audit/enforcers/prototype-fidelity.js +1 -1
- package/dist/services/audit/enforcers/resume-detection.js +5 -4
- package/dist/services/audit/prose-ratio-calculator.js +1 -1
- package/dist/services/audit/red-line-catalog-p2-a-bee-runtime.d.ts +39 -0
- package/dist/services/audit/red-line-catalog-p2-a-bee-runtime.js +205 -0
- package/dist/services/audit/red-line-catalog-p2-a-lint-style.d.ts +52 -0
- package/dist/services/audit/red-line-catalog-p2-a-lint-style.js +205 -0
- package/dist/services/audit/red-line-catalog-p2-a.js +3 -374
- package/dist/services/audit/red-line-catalog-p2-b.js +26 -26
- package/dist/services/audit/red-line-catalog.js +26 -38
- package/dist/services/audit/red-lines-service.js +64 -49
- package/dist/services/audit/scanners/openspec-scanner.js +2 -2
- package/dist/services/audit/scanners/rules-tree-scanner.js +2 -2
- package/dist/services/audit/scanners/skills-tree-scanner.js +2 -2
- package/dist/services/audit/static-service.js +3 -3
- package/dist/services/audit-independent/index.d.ts +2 -2
- package/dist/services/audit-independent/index.js +2 -2
- package/dist/services/audit-independent/perf-audit-service.js +19 -8
- package/dist/services/audit-independent/security-audit-service.js +31 -16
- package/dist/services/autonomous-swarm/autonomous-swarm-service.js +75 -46
- package/dist/services/best-practice/output-formatter.js +7 -1
- package/dist/services/capability-audit-service/cross-check.js +11 -5
- package/dist/services/capability-audit-service/runner.js +15 -7
- package/dist/services/capability-baseline/store.js +16 -4
- package/dist/services/capability-baseline/types.js +15 -3
- package/dist/services/capability-baseline/validator.js +43 -7
- package/dist/services/capability-guard-runner/contracts/J02.js +36 -6
- package/dist/services/capability-guard-runner/contracts/J03.js +20 -11
- package/dist/services/capability-guard-runner/contracts/J04.js +24 -15
- package/dist/services/capability-guard-runner/contracts/J05.js +26 -10
- package/dist/services/capability-guard-runner/contracts/J07.js +8 -2
- package/dist/services/capability-guard-runner/contracts/J08.js +22 -5
- package/dist/services/capability-guard-runner/contracts/J10.js +6 -2
- package/dist/services/capability-guard-runner/contracts/J11.d.ts +5 -0
- package/dist/services/capability-guard-runner/contracts/J11.js +14 -2
- package/dist/services/capability-guard-runner/contracts/J12.js +12 -3
- package/dist/services/capability-guard-runner/diff.js +1 -5
- package/dist/services/changeset/changeset-check-service.js +1 -3
- package/dist/services/classify/classify-service.js +20 -8
- package/dist/services/classify/classify-types.js +22 -9
- package/dist/services/code/auto-compact-lifecycle.js +62 -39
- package/dist/services/code/auto-compact-modes.js +2 -2
- package/dist/services/code/auto-compact-orchestrator.js +14 -9
- package/dist/services/code/batch-heartbeat-poller.d.ts +10 -0
- package/dist/services/code/batch-heartbeat-poller.js +17 -1
- package/dist/services/code/compact-event-settle-types.d.ts +80 -0
- package/dist/services/code/compact-event-settle-types.js +20 -0
- package/dist/services/code/compact-event-settle.d.ts +3 -68
- package/dist/services/code/compact-event-settle.js +14 -10
- package/dist/services/code/dag-orchestrator.js +32 -26
- package/dist/services/code/job-shape-decision.js +3 -1
- package/dist/services/code/mode-gate-types.d.ts +57 -0
- package/dist/services/code/mode-gate-types.js +67 -0
- package/dist/services/code/mode-gate.d.ts +4 -58
- package/dist/services/code/mode-gate.js +24 -60
- package/dist/services/code/orchestrator-can-do-advisories.d.ts +30 -0
- package/dist/services/code/orchestrator-can-do-advisories.js +81 -0
- package/dist/services/code/orchestrator-can-do-probes.d.ts +30 -0
- package/dist/services/code/orchestrator-can-do-probes.js +77 -0
- package/dist/services/code/orchestrator-can-do.d.ts +11 -22
- package/dist/services/code/orchestrator-can-do.js +37 -137
- package/dist/services/code/post-compact-checkpoint.d.ts +28 -0
- package/dist/services/code/post-compact-checkpoint.js +57 -0
- package/dist/services/code/post-compact-detector.js +16 -48
- package/dist/services/code/step-08-gate.d.ts +4 -3
- package/dist/services/code/step-08-gate.js +21 -9
- package/dist/services/code-review/ecc-bridge.js +23 -23
- package/dist/services/codegraph/codegraph-autorefresh.js +56 -39
- package/dist/services/codegraph/codegraph-config-repair-writer.d.ts +44 -0
- package/dist/services/codegraph/codegraph-config-repair-writer.js +116 -14
- package/dist/services/codegraph/codegraph-exclude-integrity.js +4 -1
- package/dist/services/codegraph/codegraph-exclude-repair.d.ts +23 -1
- package/dist/services/codegraph/codegraph-exclude-repair.js +7 -2
- package/dist/services/codegraph/codegraph-index-integrity.js +1 -1
- package/dist/services/codegraph/codegraph-preflight-service.d.ts +3 -26
- package/dist/services/codegraph/codegraph-preflight-service.js +16 -37
- package/dist/services/codegraph/codegraph-preflight-structure.d.ts +32 -0
- package/dist/services/codegraph/codegraph-preflight-structure.js +33 -0
- package/dist/services/codegraph/codegraph-process-runner.js +12 -1
- package/dist/services/codegraph/codegraph-service.js +9 -1
- package/dist/services/compact/request-transition-hook.js +2 -1
- package/dist/services/compact/suggest-service.d.ts +3 -61
- package/dist/services/compact/suggest-service.js +9 -12
- package/dist/services/compact/suggest-types.d.ts +76 -0
- package/dist/services/compact/suggest-types.js +10 -0
- package/dist/services/compact-history/compact-history-service.js +2 -2
- package/dist/services/compact-statusline/compact-lifecycle-store.d.ts +2 -32
- package/dist/services/compact-statusline/compact-lifecycle-store.js +7 -12
- package/dist/services/compact-statusline/compact-lifecycle-types.d.ts +32 -0
- package/dist/services/compact-statusline/compact-lifecycle-types.js +8 -0
- package/dist/services/compact-statusline/compact-statusline-cell-table.d.ts +42 -0
- package/dist/services/compact-statusline/compact-statusline-cell-table.js +63 -0
- package/dist/services/compact-statusline/compact-statusline-service.d.ts +4 -21
- package/dist/services/compact-statusline/compact-statusline-service.js +9 -101
- package/dist/services/compact-statusline/compact-statusline-state.d.ts +4 -0
- package/dist/services/compact-statusline/compact-statusline-state.js +50 -0
- package/dist/services/config/config-migration.js +2 -2
- package/dist/services/config/config-restore.js +1 -1
- package/dist/services/config/config-rollback.js +1 -1
- package/dist/services/config/config-safety.js +28 -10
- package/dist/services/config/config-service.js +114 -31
- package/dist/services/config/model-routing.js +5 -2
- package/dist/services/config/proxy-service.js +6 -1
- package/dist/services/config/workspace-state-service.js +17 -5
- package/dist/services/context/auto-compact-dispatcher-input.d.ts +38 -0
- package/dist/services/context/auto-compact-dispatcher-input.js +9 -0
- package/dist/services/context/auto-compact-dispatcher.d.ts +2 -30
- package/dist/services/context/auto-compact-reader-input.d.ts +30 -0
- package/dist/services/context/auto-compact-reader-input.js +8 -0
- package/dist/services/context/auto-compact-reader.d.ts +2 -24
- package/dist/services/context/auto-compact-reader.js +4 -1
- package/dist/services/context/auto-compact-thresholds.d.ts +54 -0
- package/dist/services/context/auto-compact-thresholds.js +19 -0
- package/dist/services/context/auto-compact-types.d.ts +2 -46
- package/dist/services/context/auto-compact-types.js +1 -11
- package/dist/services/context/build-dispatch-system-prompt.js +2 -2
- package/dist/services/context/collector.js +8 -10
- package/dist/services/context/context-audit-hint.js +7 -5
- package/dist/services/context/context-audit-keys.d.ts +15 -0
- package/dist/services/context/context-audit-keys.js +77 -0
- package/dist/services/context/context-audit-limits.d.ts +20 -0
- package/dist/services/context/context-audit-limits.js +31 -0
- package/dist/services/context/context-audit-scan.d.ts +19 -0
- package/dist/services/context/context-audit-scan.js +246 -0
- package/dist/services/context/context-audit-types.d.ts +65 -0
- package/dist/services/context/context-audit-types.js +10 -0
- package/dist/services/context/context-audit.d.ts +13 -59
- package/dist/services/context/context-audit.js +38 -254
- package/dist/services/context/context-builder.js +4 -4
- package/dist/services/context/context-schema.d.ts +1 -1
- package/dist/services/context/context-schema.js +13 -13
- package/dist/services/context/doc-retriever.js +2 -2
- package/dist/services/context/harness-context-witness.js +43 -24
- package/dist/services/context/harness-window-config.js +27 -7
- package/dist/services/context/ide-detect.js +2 -1
- package/dist/services/context/index.d.ts +1 -1
- package/dist/services/context/memory-index-reader.js +3 -9
- package/dist/services/context/memory-preflight-config.js +3 -5
- package/dist/services/context/memory-preflight-service.d.ts +2 -20
- package/dist/services/context/memory-preflight-service.js +37 -68
- package/dist/services/context/memory-preflight-support.d.ts +48 -0
- package/dist/services/context/memory-preflight-support.js +56 -0
- package/dist/services/context/post-compact-reinjection.js +3 -3
- package/dist/services/context/renderer.js +7 -3
- package/dist/services/context/spillover-store.js +3 -1
- package/dist/services/context/summary-view.js +1 -1
- package/dist/services/context/threshold.js +2 -2
- package/dist/services/context/tokenizer.js +3 -3
- package/dist/services/crystallization/crystallization-brief-schema.d.ts +80 -0
- package/dist/services/crystallization/crystallization-brief-schema.js +159 -0
- package/dist/services/crystallization/crystallization-service.d.ts +7 -7
- package/dist/services/crystallization/crystallization-service.js +56 -55
- package/dist/services/crystallization/crystallization-store.d.ts +2 -2
- package/dist/services/crystallization/crystallization-store.js +37 -20
- package/dist/services/crystallization/crystallization-types.d.ts +4 -56
- package/dist/services/crystallization/crystallization-types.js +31 -184
- package/dist/services/crystallization/evidence-brief-builder.d.ts +3 -3
- package/dist/services/crystallization/evidence-brief-builder.js +32 -38
- package/dist/services/crystallization/index.d.ts +4 -4
- package/dist/services/crystallization/index.js +4 -4
- package/dist/services/dashboard/project-dashboard-service.js +7 -1
- package/dist/services/dispatch/await-batch-helpers.d.ts +55 -0
- package/dist/services/dispatch/await-batch-helpers.js +206 -0
- package/dist/services/dispatch/await-batch.d.ts +50 -7
- package/dist/services/dispatch/await-batch.js +97 -194
- package/dist/services/dispatch/batch-counter.js +2 -1
- package/dist/services/dispatch/conflict-replay.js +2 -2
- package/dist/services/dispatch/contract-store.js +5 -2
- package/dist/services/dispatch/dispatch-record-input-types.d.ts +81 -0
- package/dist/services/dispatch/dispatch-record-input-types.js +1 -0
- package/dist/services/dispatch/dispatch-record-types.d.ts +6 -73
- package/dist/services/dispatch/dispatch-record-upgrade-fields.d.ts +72 -0
- package/dist/services/dispatch/dispatch-record-upgrade-fields.js +242 -0
- package/dist/services/dispatch/dispatch-record-upgrade-guards.d.ts +15 -0
- package/dist/services/dispatch/dispatch-record-upgrade-guards.js +55 -0
- package/dist/services/dispatch/dispatch-record-upgrade.d.ts +2 -4
- package/dist/services/dispatch/dispatch-record-upgrade.js +21 -213
- package/dist/services/dispatch/dispatch-record-writer.js +54 -26
- package/dist/services/dispatch/dispatch-sub-agent.js +7 -2
- package/dist/services/dispatch/e2e-fixtures.js +1 -1
- package/dist/services/dispatch/isolation-lease.js +39 -17
- package/dist/services/dispatch/merge-back-runner.js +51 -11
- package/dist/services/dispatch/service-shutdown.js +4 -1
- package/dist/services/dispatch/slice-dag-types.d.ts +116 -0
- package/dist/services/dispatch/slice-dag-types.js +41 -0
- package/dist/services/dispatch/slice-dag.d.ts +3 -109
- package/dist/services/dispatch/slice-dag.js +13 -36
- package/dist/services/dispatch/sub-agent-batch-await.d.ts +47 -0
- package/dist/services/dispatch/sub-agent-batch-await.js +73 -0
- package/dist/services/dispatch/sub-agent-dispatcher-types.d.ts +122 -0
- package/dist/services/dispatch/sub-agent-dispatcher-types.js +12 -0
- package/dist/services/dispatch/sub-agent-dispatcher.d.ts +3 -145
- package/dist/services/dispatch/sub-agent-dispatcher.js +14 -70
- package/dist/services/dispatch/test-tool-detection.js +12 -1
- package/dist/services/doc/doc-generator.js +19 -4
- package/dist/services/doctor/doctor-service/checks/check-id-schema.js +16 -8
- package/dist/services/doctor/doctor-service/checks/codegraph-capability.d.ts +7 -2
- package/dist/services/doctor/doctor-service/checks/codegraph-capability.js +26 -8
- package/dist/services/doctor/doctor-service/checks/codegraph-exclude-integrity.js +16 -8
- package/dist/services/doctor/doctor-service/checks/codegraph-index-integrity.js +16 -8
- package/dist/services/doctor/doctor-service/checks/dist-source-version.js +18 -9
- package/dist/services/doctor/doctor-service/checks/ecc-hooks-schema-drift.js +20 -10
- package/dist/services/doctor/doctor-service/checks/gateguard-conflict.js +18 -9
- package/dist/services/doctor/doctor-service/checks/l3-memory-health.js +25 -11
- package/dist/services/doctor/doctor-service/checks/l3-orphan-sessions.js +12 -6
- package/dist/services/doctor/doctor-service/checks/multi-binary-drift.d.ts +7 -16
- package/dist/services/doctor/doctor-service/checks/multi-binary-drift.js +50 -70
- package/dist/services/doctor/doctor-service/checks/schema-validity.js +5 -1
- package/dist/services/doctor/doctor-service/checks/skill-presence.js +4 -2
- package/dist/services/doctor/doctor-service/checks/statusline-install.js +8 -4
- package/dist/services/doctor/doctor-service/checks/statusline-runtime.js +8 -4
- package/dist/services/doctor/doctor-service/checks/user-config.js +4 -2
- package/dist/services/doctor/doctor-service/checks/workspace-init.js +8 -4
- package/dist/services/doctor/doctor-service/checks/workspace-layout.js +19 -11
- package/dist/services/doctor/doctor-service/index.js +4 -2
- package/dist/services/doctor/doctor-service/multi-binary-drift-helpers.d.ts +40 -0
- package/dist/services/doctor/doctor-service/multi-binary-drift-helpers.js +49 -0
- package/dist/services/doctor/doctor-service/plugin-registry.js +1 -1
- package/dist/services/doctor/doctor-service/probe-types.d.ts +210 -0
- package/dist/services/doctor/doctor-service/probe-types.js +14 -0
- package/dist/services/doctor/doctor-service/types.d.ts +7 -197
- package/dist/services/doctor/index.d.ts +1 -1
- package/dist/services/doctor/index.js +1 -1
- package/dist/services/env/shell-probe.js +8 -2
- package/dist/services/evidence/evidence-body-builders.d.ts +23 -0
- package/dist/services/evidence/evidence-body-builders.js +197 -0
- package/dist/services/evidence/evidence-generator.js +16 -189
- package/dist/services/evolution/evolution-constraints.d.ts +43 -0
- package/dist/services/evolution/evolution-constraints.js +54 -0
- package/dist/services/evolution/evolution-evaluation-schema.d.ts +43 -0
- package/dist/services/evolution/evolution-evaluation-schema.js +43 -0
- package/dist/services/evolution/evolution-service.d.ts +6 -6
- package/dist/services/evolution/evolution-service.js +58 -58
- package/dist/services/evolution/evolution-store.d.ts +2 -2
- package/dist/services/evolution/evolution-store.js +37 -51
- package/dist/services/evolution/evolution-types.d.ts +2 -22
- package/dist/services/evolution/evolution-types.js +41 -101
- package/dist/services/evolution/independent-evaluator-runner.d.ts +3 -3
- package/dist/services/evolution/independent-evaluator-runner.js +20 -22
- package/dist/services/evolution/regression-skeptic-runner.d.ts +2 -2
- package/dist/services/evolution/regression-skeptic-runner.js +18 -18
- package/dist/services/feedback/feedback-promotion-service.js +48 -12
- package/dist/services/feedback/promotion-artifact-evidence.d.ts +2 -16
- package/dist/services/feedback/promotion-artifact-evidence.js +6 -83
- package/dist/services/feedback/promotion-artifact-json-evidence.d.ts +29 -0
- package/dist/services/feedback/promotion-artifact-json-evidence.js +39 -0
- package/dist/services/feedback/promotion-source-comments.d.ts +47 -0
- package/dist/services/feedback/promotion-source-comments.js +61 -0
- package/dist/services/final-review/final-review-contract.d.ts +26 -0
- package/dist/services/final-review/final-review-contract.js +14 -0
- package/dist/services/final-review/final-review-delivery.d.ts +63 -0
- package/dist/services/final-review/final-review-delivery.js +124 -0
- package/dist/services/final-review/final-review-evidence-budget.d.ts +125 -0
- package/dist/services/final-review/final-review-evidence-budget.js +218 -0
- package/dist/services/final-review/final-review-evidence-collect.d.ts +4 -0
- package/dist/services/final-review/final-review-evidence-collect.js +230 -0
- package/dist/services/final-review/final-review-evidence-sources.d.ts +138 -0
- package/dist/services/final-review/final-review-evidence-sources.js +139 -0
- package/dist/services/final-review/final-review-fifth-dim.d.ts +8 -0
- package/dist/services/final-review/final-review-fifth-dim.js +20 -0
- package/dist/services/final-review/final-review-gates.d.ts +119 -0
- package/dist/services/final-review/final-review-gates.js +214 -0
- package/dist/services/final-review/final-review-output-budget.d.ts +88 -0
- package/dist/services/final-review/final-review-output-budget.js +161 -0
- package/dist/services/final-review/final-review-prompt.d.ts +35 -0
- package/dist/services/final-review/final-review-prompt.js +112 -0
- package/dist/services/final-review/final-review-reviewer.d.ts +57 -0
- package/dist/services/final-review/final-review-reviewer.js +95 -0
- package/dist/services/final-review/final-review-runner.d.ts +3 -0
- package/dist/services/final-review/final-review-runner.js +158 -0
- package/dist/services/final-review/final-review-service.d.ts +119 -373
- package/dist/services/final-review/final-review-service.js +48 -1380
- package/dist/services/final-review/final-review-verdicts.d.ts +60 -0
- package/dist/services/final-review/final-review-verdicts.js +91 -0
- package/dist/services/final-review/index.d.ts +3 -3
- package/dist/services/final-review/index.js +2 -2
- package/dist/services/final-review/pre-post-diff.js +32 -29
- package/dist/services/fixture/fixture-capture-service.js +14 -6
- package/dist/services/fresh-context/trigger-scan.js +13 -2
- package/dist/services/fuzzy-matching/fuzzy-match-service.js +1 -1
- package/dist/services/fuzzy-matching/fzf-pick-service.js +6 -1
- package/dist/services/hooks/pre-tool-code-gate.js +2 -2
- package/dist/services/hooks/presence-marker-detector.js +12 -2
- package/dist/services/hooks/worktree-authorization-gate.js +21 -7
- package/dist/services/ide/adapters/claude-code-adapter.js +30 -17
- package/dist/services/ide/adapters/codex-adapter.js +3 -5
- package/dist/services/ide/adapters/cursor-adapter.js +3 -5
- package/dist/services/ide/adapters/hermes-adapter.js +2 -4
- package/dist/services/ide/adapters/openclaw-adapter.js +2 -4
- package/dist/services/ide/adapters/qoder-adapter.js +2 -4
- package/dist/services/ide/adapters/tongyi-lingma-adapter.js +1 -1
- package/dist/services/ide/adapters/trae-adapter.js +3 -5
- package/dist/services/ide/adapters/zcode-adapter.js +8 -7
- package/dist/services/ide/current-model-detector.js +2 -1
- package/dist/services/ide/ide-compact-types.d.ts +153 -0
- package/dist/services/ide/ide-compact-types.js +1 -0
- package/dist/services/ide/ide-registry.js +1 -1
- package/dist/services/ide/ide-types.d.ts +7 -145
- package/dist/services/ide/resource-profile.js +1 -1
- package/dist/services/ide/shared/atomic-json.js +2 -1
- package/dist/services/impact/impact-scan-service.js +12 -5
- package/dist/services/job/job-commit-verification.d.ts +73 -0
- package/dist/services/job/job-commit-verification.js +72 -0
- package/dist/services/job/job-orchestrator.d.ts +42 -0
- package/dist/services/job/job-orchestrator.js +110 -10
- package/dist/services/job/job-progress-store.d.ts +75 -5
- package/dist/services/job/job-progress-store.js +83 -6
- package/dist/services/job/job-rotation.d.ts +1 -1
- package/dist/services/job/job-rotation.js +5 -1
- package/dist/services/job/job-state-store.js +2 -2
- package/dist/services/job/job-types.js +49 -20
- package/dist/services/job/subagent-job-wrapper.d.ts +1 -1
- package/dist/services/job/subagent-job-wrapper.js +5 -1
- package/dist/services/job-snapshot/snapshot.js +2 -2
- package/dist/services/karpathy-cost/karpathy-cost-check-service.js +23 -13
- package/dist/services/legacy/legacy-detector.js +51 -5
- package/dist/services/lint/detect-eslint.js +10 -4
- package/dist/services/lint/detect-ocr-18.js +11 -3
- package/dist/services/lint/eslint-runner-support.d.ts +22 -0
- package/dist/services/lint/eslint-runner-support.js +185 -0
- package/dist/services/lint/eslint-runner-types.d.ts +69 -0
- package/dist/services/lint/eslint-runner-types.js +11 -0
- package/dist/services/lint/eslint-runner.d.ts +4 -56
- package/dist/services/lint/eslint-runner.js +24 -178
- package/dist/services/lint/npx-resolver.js +1 -3
- package/dist/services/lint/ocr-18-acquire.js +15 -4
- package/dist/services/lint/ocr-multilang-adapter.js +4 -5
- package/dist/services/llm/anthropic-runner.js +4 -1
- package/dist/services/log/log-commands-service.js +2 -6
- package/dist/services/log/logger.js +15 -12
- package/dist/services/log/retention.js +3 -2
- package/dist/services/loop/evaluator-dispatcher.js +78 -42
- package/dist/services/loop/loop-bee-relation-service.d.ts +4 -4
- package/dist/services/loop/loop-bee-relation-service.js +36 -40
- package/dist/services/loop/loop-bee-relation-store.d.ts +3 -3
- package/dist/services/loop/loop-bee-relation-store.js +9 -11
- package/dist/services/loop/loop-bee-relation-types.d.ts +1 -1
- package/dist/services/loop/loop-bee-relation-types.js +14 -25
- package/dist/services/loop/loop-release-service.d.ts +2 -2
- package/dist/services/loop/loop-release-service.js +3 -3
- package/dist/services/loop/loop-release-store.d.ts +2 -2
- package/dist/services/loop/loop-release-store.js +4 -6
- package/dist/services/loop/loop-release-types.d.ts +1 -1
- package/dist/services/loop/loop-release-types.js +21 -31
- package/dist/services/loop/monotonic-guard-types.d.ts +51 -0
- package/dist/services/loop/monotonic-guard-types.js +9 -0
- package/dist/services/loop/monotonic-guard.d.ts +2 -43
- package/dist/services/loop/monotonic-runner-types.d.ts +63 -0
- package/dist/services/loop/monotonic-runner-types.js +17 -0
- package/dist/services/loop/monotonic-runner.d.ts +3 -34
- package/dist/services/loop/monotonic-runner.js +10 -20
- package/dist/services/loop/run-driver.js +16 -8
- package/dist/services/loop/spec-service.d.ts +0 -5
- package/dist/services/loop/spec-service.js +49 -9
- package/dist/services/memory/llm-reranker-core.d.ts +108 -0
- package/dist/services/memory/llm-reranker-core.js +105 -0
- package/dist/services/memory/llm-reranker.d.ts +3 -94
- package/dist/services/memory/llm-reranker.js +13 -102
- package/dist/services/memory/memory-ingest-service.d.ts +1 -22
- package/dist/services/memory/memory-ingest-service.js +29 -76
- package/dist/services/memory/memory-ingest-support.d.ts +23 -0
- package/dist/services/memory/memory-ingest-support.js +81 -0
- package/dist/services/memory/memory-rotate-service.js +41 -8
- package/dist/services/memory/memory-search-service.js +8 -4
- package/dist/services/memory/project-context-service.js +26 -5
- package/dist/services/memory/project-memory-service/index/kind-dispatch.d.ts +2 -7
- package/dist/services/memory/project-memory-service/index/kind-dispatch.js +17 -136
- package/dist/services/memory/project-memory-service/index/project-memory-plan-exec.d.ts +7 -0
- package/dist/services/memory/project-memory-service/index/project-memory-plan-exec.js +150 -0
- package/dist/services/memory/project-memory-service/index/ranking.js +6 -3
- package/dist/services/memory/project-memory-service/index/reindex.js +14 -5
- package/dist/services/memory/project-memory-service/index.d.ts +1 -1
- package/dist/services/memory/project-memory-service/index.js +1 -1
- package/dist/services/memory/project-memory-service/memory-kinds.d.ts +31 -0
- package/dist/services/memory/project-memory-service/memory-kinds.js +87 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter-parse.d.ts +24 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter-parse.js +104 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter.d.ts +2 -24
- package/dist/services/memory/project-memory-service/parsers/frontmatter.js +28 -79
- package/dist/services/memory/project-memory-service/parsers/markdown-pure.js +15 -3
- package/dist/services/memory/project-memory-service/store/atomic-write.d.ts +59 -0
- package/dist/services/memory/project-memory-service/store/atomic-write.js +189 -17
- package/dist/services/memory/project-memory-service/store/paths.js +2 -1
- package/dist/services/memory/project-memory-service/types.d.ts +3 -31
- package/dist/services/memory/project-memory-service/types.js +1 -76
- package/dist/services/migrate-skill-name/migrate.js +1 -1
- package/dist/services/migrate-skill-name/schema.js +1 -1
- package/dist/services/mode/mode-enforcement.js +4 -2
- package/dist/services/mode/mode-status-service.d.ts +27 -9
- package/dist/services/mode/mode-status-service.js +64 -12
- package/dist/services/observability/aggregation-helpers.d.ts +22 -0
- package/dist/services/observability/aggregation-helpers.js +65 -0
- package/dist/services/observability/aggregation-types.d.ts +66 -0
- package/dist/services/observability/aggregation-types.js +34 -0
- package/dist/services/observability/aggregation.d.ts +5 -53
- package/dist/services/observability/aggregation.js +17 -80
- package/dist/services/observability/jsonl-store.js +2 -1
- package/dist/services/observability/observability-schema.d.ts +71 -0
- package/dist/services/observability/observability-schema.js +64 -0
- package/dist/services/observability/observability-service.d.ts +3 -56
- package/dist/services/observability/observability-service.js +9 -49
- package/dist/services/openspec/coverage-evidence-reader.js +18 -11
- package/dist/services/openspec/openspec-archive-service.js +31 -24
- package/dist/services/openspec/openspec-init-service.js +8 -2
- package/dist/services/openspec/openspec-propose-from-doctor-service.js +1 -1
- package/dist/services/openspec/openspec-scan-service.js +4 -1
- package/dist/services/openspec/openspec-validate-service.js +26 -5
- package/dist/services/perf/perf-baseline-service.js +2 -6
- package/dist/services/polyrepo/polyrepo-dispatcher.js +2 -1
- package/dist/services/polyrepo/polyrepo-scanner.js +4 -1
- package/dist/services/prd/gate-evidence-derivation.d.ts +160 -0
- package/dist/services/prd/gate-evidence-derivation.js +270 -0
- package/dist/services/prd/handoff-auto-regen.js +13 -1
- package/dist/services/prd/handoff-frontmatter-shape.d.ts +42 -0
- package/dist/services/prd/handoff-frontmatter-shape.js +67 -0
- package/dist/services/prd/handoff-frontmatter.d.ts +1 -1
- package/dist/services/prd/handoff-frontmatter.js +63 -1
- package/dist/services/prd/handoff-gate-evidence.d.ts +95 -1
- package/dist/services/prd/handoff-gate-evidence.js +125 -57
- package/dist/services/prd/handoff-path-resolution.d.ts +37 -0
- package/dist/services/prd/handoff-path-resolution.js +101 -0
- package/dist/services/prd/handoff-service.d.ts +22 -38
- package/dist/services/prd/handoff-service.js +38 -127
- package/dist/services/prd/handoff-types.d.ts +40 -0
- package/dist/services/prd/handoff-types.js +28 -1
- package/dist/services/prd/prd-blocks-checker.js +28 -8
- package/dist/services/prd/project-scan-bootstrap-service.js +1 -5
- package/dist/services/prd/project-scan-reader.d.ts +7 -0
- package/dist/services/prd/project-scan-reader.js +8 -5
- package/dist/services/prd/project-scan-sediment.js +1 -4
- package/dist/services/preferences/preferences-service.js +6 -8
- package/dist/services/preferences/preferences-types.js +4 -4
- package/dist/services/qa/bdd-test-style-contract.d.ts +41 -0
- package/dist/services/qa/bdd-test-style-contract.js +37 -0
- package/dist/services/qa/bdd-test-style-verifier.d.ts +2 -24
- package/dist/services/qa/bdd-test-style-verifier.js +5 -31
- package/dist/services/qa/browser-event-logger.js +2 -1
- package/dist/services/qa/qa-business-review-state.js +20 -5
- package/dist/services/qa/screenshot-archive-service.js +1 -3
- package/dist/services/rd/ast-gate.js +2 -2
- package/dist/services/rd/impl.js +1 -1
- package/dist/services/rd/rd-service.js +117 -43
- package/dist/services/rd/reviewer-dispatch-policy.d.ts +36 -8
- package/dist/services/rd/reviewer-dispatch-policy.js +40 -15
- package/dist/services/rd/standards-diagnostic.js +4 -1
- package/dist/services/rd/strategy.js +10 -3
- package/dist/services/rd/tactical-stage.js +2 -2
- package/dist/services/rd/types.js +9 -7
- package/dist/services/rd-swarm/rd-swarm-service.d.ts +2 -45
- package/dist/services/rd-swarm/rd-swarm-service.js +140 -21
- package/dist/services/rd-swarm/rd-swarm-types.d.ts +54 -0
- package/dist/services/rd-swarm/rd-swarm-types.js +10 -0
- package/dist/services/recommendations/capability-map-service.js +10 -2
- package/dist/services/recommendations/capability-seed-items.js +81 -14
- package/dist/services/recommendations/capability-seed-mappings.js +420 -48
- package/dist/services/recommendations/capability-seed-sources-mcp-server.d.ts +9 -0
- package/dist/services/recommendations/capability-seed-sources-mcp-server.js +233 -0
- package/dist/services/recommendations/capability-seed-sources.js +127 -32
- package/dist/services/release/release-state.d.ts +2 -2
- package/dist/services/release/release-state.js +44 -15
- package/dist/services/release/version-precheck-layer-changeset.d.ts +2 -0
- package/dist/services/release/version-precheck-layer-changeset.js +43 -0
- package/dist/services/release/version-precheck-service.d.ts +11 -36
- package/dist/services/release/version-precheck-service.js +20 -104
- package/dist/services/release/version-precheck-support.d.ts +53 -0
- package/dist/services/release/version-precheck-support.js +64 -0
- package/dist/services/retrospective/retrospective-index.js +17 -3
- package/dist/services/retrospective/retrospective-search-service.js +6 -2
- package/dist/services/retrospective/retrospective-show.js +4 -1
- package/dist/services/reviewer/model-family.js +7 -1
- package/dist/services/reviewer/providers/anthropic.d.ts +5 -0
- package/dist/services/reviewer/providers/anthropic.js +10 -1
- package/dist/services/reviewer/providers/openai.d.ts +5 -0
- package/dist/services/reviewer/providers/openai.js +10 -1
- package/dist/services/reviewer/reviewer-config.js +4 -2
- package/dist/services/reviewer/reviewer-service.d.ts +2 -36
- package/dist/services/reviewer/reviewer-service.js +2 -1
- package/dist/services/reviewer/reviewer-types.d.ts +43 -0
- package/dist/services/reviewer/reviewer-types.js +1 -0
- package/dist/services/role/role-registry.js +9 -1
- package/dist/services/runtime/runtime-detector.js +4 -1
- package/dist/services/runtime/vendors/claude-code.js +14 -6
- package/dist/services/runtime/vendors/codex.js +11 -3
- package/dist/services/runtime/vendors/copilot.js +11 -3
- package/dist/services/sc/sc-service.js +28 -15
- package/dist/services/scan/acceptance-coverage-service.js +4 -1
- package/dist/services/scan/api-diff-openapi-schema-read.d.ts +67 -0
- package/dist/services/scan/api-diff-openapi-schema-read.js +154 -0
- package/dist/services/scan/api-diff-openapi.d.ts +16 -2
- package/dist/services/scan/api-diff-openapi.js +19 -123
- package/dist/services/scan/api-diff-recorded.js +16 -3
- package/dist/services/scan/api-diff-service.js +49 -16
- package/dist/services/scan/api-diff-types.js +12 -3
- package/dist/services/scan/api-surface-helpers.d.ts +13 -0
- package/dist/services/scan/api-surface-helpers.js +31 -0
- package/dist/services/scan/api-surface-service.d.ts +2 -45
- package/dist/services/scan/api-surface-service.js +15 -26
- package/dist/services/scan/api-surface-types.d.ts +54 -0
- package/dist/services/scan/api-surface-types.js +10 -0
- package/dist/services/scan/archetype-detection.d.ts +37 -0
- package/dist/services/scan/archetype-detection.js +142 -0
- package/dist/services/scan/archetype-service.js +36 -125
- package/dist/services/scan/diff-scope-service.js +35 -15
- package/dist/services/scan/existing-system-service.js +16 -99
- package/dist/services/scan/existing-system-visual-tokens.d.ts +20 -0
- package/dist/services/scan/existing-system-visual-tokens.js +123 -0
- package/dist/services/scan/file-size-policy.d.ts +86 -0
- package/dist/services/scan/file-size-policy.js +184 -0
- package/dist/services/scan/file-size-scan.d.ts +30 -3
- package/dist/services/scan/file-size-scan.js +47 -9
- package/dist/services/scan/karpathy-service.js +6 -1
- package/dist/services/scan/orphan-service.js +86 -20
- package/dist/services/scan/type-sanity-service.js +104 -10
- package/dist/services/sediment/dispose-confirm.d.ts +2 -2
- package/dist/services/sediment/dispose-confirm.js +2 -2
- package/dist/services/sediment/json-schema.d.ts +1 -1
- package/dist/services/sediment/json-schema.js +25 -13
- package/dist/services/sediment/manifest-lint.d.ts +1 -12
- package/dist/services/sediment/manifest-lint.js +1 -7
- package/dist/services/sediment/pool-paths.js +13 -9
- package/dist/services/sediment/pool-read.d.ts +1 -1
- package/dist/services/sediment/pool-read.js +42 -18
- package/dist/services/sediment/pool-rebuild-index.d.ts +1 -1
- package/dist/services/sediment/pool-rebuild-index.js +5 -5
- package/dist/services/sediment/pool-write.d.ts +1 -1
- package/dist/services/sediment/pool-write.js +7 -7
- package/dist/services/sediment/promotion-gate.d.ts +1 -1
- package/dist/services/sediment/promotion-gate.js +9 -9
- package/dist/services/sediment/types.d.ts +8 -8
- package/dist/services/session/binding-status-service.js +14 -4
- package/dist/services/session/caller-binding-service.js +2 -1
- package/dist/services/session/getSessionDir.js +4 -1
- package/dist/services/session/index.d.ts +1 -1
- package/dist/services/session/index.js +1 -1
- package/dist/services/session/resolve-caller-id.js +7 -5
- package/dist/services/session/session-binding-bridge.js +26 -25
- package/dist/services/session/session-checkpoint-service.js +1 -1
- package/dist/services/session/session-file-schema.d.ts +70 -0
- package/dist/services/session/session-file-schema.js +68 -0
- package/dist/services/session/session-manager.d.ts +6 -6
- package/dist/services/session/session-manager.js +30 -29
- package/dist/services/session/session-resume-service.js +2 -1
- package/dist/services/share/bundle-format-constants.d.ts +85 -0
- package/dist/services/share/bundle-format-constants.js +100 -0
- package/dist/services/share/bundle-reader.d.ts +3 -3
- package/dist/services/share/bundle-reader.js +75 -68
- package/dist/services/share/bundle-types.d.ts +3 -70
- package/dist/services/share/bundle-types.js +38 -107
- package/dist/services/share/bundle-writer.d.ts +3 -3
- package/dist/services/share/bundle-writer.js +101 -91
- package/dist/services/share/run-state-contract.d.ts +1 -1
- package/dist/services/share/run-state-contract.js +7 -13
- package/dist/services/signal/cancel-handler.js +2 -1
- package/dist/services/skill/resume-detector.js +6 -4
- package/dist/services/skill/skill-scheduler.js +3 -1
- package/dist/services/skill/skill-search-service.js +4 -4
- package/dist/services/skillhub/release-diff.d.ts +2 -2
- package/dist/services/skillhub/release-diff.js +6 -10
- package/dist/services/skillhub/release-export.d.ts +2 -2
- package/dist/services/skillhub/release-export.js +15 -17
- package/dist/services/skillhub/release-gc-blobs.d.ts +2 -2
- package/dist/services/skillhub/release-gc-blobs.js +4 -4
- package/dist/services/skillhub/release-import.d.ts +2 -2
- package/dist/services/skillhub/release-import.js +13 -12
- package/dist/services/skillhub/release-retain.d.ts +3 -3
- package/dist/services/skillhub/release-retain.js +22 -22
- package/dist/services/skillhub/sqlite-store.d.ts +1 -1
- package/dist/services/skillhub/sqlite-store.js +12 -11
- package/dist/services/skillhub/tar-runtime.js +15 -15
- package/dist/services/skillhub/types.d.ts +4 -4
- package/dist/services/skills/hooks-codegate-superpowers.js +16 -7
- package/dist/services/skills/hooks-settings-service.js +61 -19
- package/dist/services/skills/presence-lease-service.js +26 -16
- package/dist/services/skills/presence-lease-types.d.ts +1 -1
- package/dist/services/skills/presence-lease-types.js +1 -1
- package/dist/services/skills/skill-conformance-service.js +40 -8
- package/dist/services/skills/skill-presence-service.js +16 -14
- package/dist/services/skills/skill-runbook-service.js +2 -1
- package/dist/services/skills/skill-statusline-model.d.ts +128 -0
- package/dist/services/skills/skill-statusline-model.js +163 -0
- package/dist/services/skills/skill-statusline-renderer.js +4 -3
- package/dist/services/skills/skill-statusline-service.d.ts +3 -100
- package/dist/services/skills/skill-statusline-service.js +56 -163
- package/dist/services/skills/statusline-palette.js +11 -6
- package/dist/services/skills/statusline-settings-service.js +2 -1
- package/dist/services/skills/sync-service-support.d.ts +65 -0
- package/dist/services/skills/sync-service-support.js +50 -0
- package/dist/services/skills/sync-service.d.ts +3 -66
- package/dist/services/skills/sync-service.js +15 -53
- package/dist/services/slice/calibration-store.js +8 -2
- package/dist/services/slice/cross-pass-edge-merger.d.ts +3 -28
- package/dist/services/slice/cross-pass-edge-merger.js +13 -63
- package/dist/services/slice/cross-pass-edge-static-scan-support.d.ts +69 -0
- package/dist/services/slice/cross-pass-edge-static-scan-support.js +74 -0
- package/dist/services/slice/granularity-decider.js +2 -2
- package/dist/services/slice/slice-archive-service.js +8 -3
- package/dist/services/slice/slice-check-service.js +19 -8
- package/dist/services/slice/slice-decompose-runners.js +61 -23
- package/dist/services/slice/slice-decompose-service.js +4 -4
- package/dist/services/slice/slice-review-state.js +8 -2
- package/dist/services/smoke/smoke-paths-state.js +9 -2
- package/dist/services/sop/gate-enforce-service.js +9 -2
- package/dist/services/sop/sop-advance-service.js +14 -2
- package/dist/services/sop/sop-check-service.js +16 -4
- package/dist/services/sop/sop-paths.js +3 -1
- package/dist/services/sop/sop-registry-service.js +5 -1
- package/dist/services/sop/sop-service.js +29 -7
- package/dist/services/sop/sop-types.js +5 -1
- package/dist/services/standards/ide-aware-standards-service.js +2 -2
- package/dist/services/standards/loop-engineering-lint.js +12 -5
- package/dist/services/standards/loop-engineering-readiness-lint.js +5 -5
- package/dist/services/standards/migrate-claude-rules-service.js +9 -7
- package/dist/services/standards/missing-standards-detector.js +1 -3
- package/dist/services/standards/project-context-support.d.ts +50 -0
- package/dist/services/standards/project-context-support.js +244 -0
- package/dist/services/standards/project-context-types.d.ts +30 -0
- package/dist/services/standards/project-context-types.js +11 -0
- package/dist/services/standards/project-context.d.ts +10 -22
- package/dist/services/standards/project-context.js +27 -214
- package/dist/services/standards/project-standards-service.js +43 -12
- package/dist/services/standards/standards-render-common.d.ts +15 -0
- package/dist/services/standards/standards-render-common.js +49 -0
- package/dist/services/standards/standards-render.d.ts +1 -2
- package/dist/services/standards/standards-render.js +31 -58
- package/dist/services/standards/ui-library-dispatch-block.js +1 -1
- package/dist/services/tech/tech-change-id-service.js +7 -7
- package/dist/services/tech/tech-service.js +73 -26
- package/dist/services/test-cache/test-cache-service.js +8 -3
- package/dist/services/upgrade/1x-detector-service.js +5 -3
- package/dist/services/upgrade/gitignore-migrate-service.js +5 -5
- package/dist/services/upgrade/upgrade-service.js +36 -13
- package/dist/services/verdict/envelope-parsers.d.ts +84 -0
- package/dist/services/verdict/envelope-parsers.js +146 -0
- package/dist/services/verdict/envelopes.d.ts +50 -60
- package/dist/services/verdict/envelopes.js +18 -156
- package/dist/services/verdict/verdict-aggregator.js +27 -3
- package/dist/services/vm/vm-lease.js +15 -3
- package/dist/services/web/aria-node.d.ts +27 -0
- package/dist/services/web/aria-node.js +1 -0
- package/dist/services/web/browser-acquire.js +3 -1
- package/dist/services/web/browser-cache-probe.d.ts +18 -0
- package/dist/services/web/browser-cache-probe.js +110 -0
- package/dist/services/web/browser-session-manager.js +6 -2
- package/dist/services/web/daemon-registry.js +4 -1
- package/dist/services/web/playwright-loader.d.ts +2 -70
- package/dist/services/web/playwright-types.d.ts +75 -0
- package/dist/services/web/playwright-types.js +1 -0
- package/dist/services/web/snapshot-pruner.d.ts +2 -23
- package/dist/services/web/snapshot-pruner.js +8 -3
- package/dist/services/web/web-daemon-service.js +1 -3
- package/dist/services/web/web-install-service.d.ts +3 -32
- package/dist/services/web/web-install-service.js +21 -100
- package/dist/services/web/web-install-types.d.ts +31 -0
- package/dist/services/web/web-install-types.js +13 -0
- package/dist/services/web/web-login-profile.js +7 -5
- package/dist/services/web/web-protocol.js +3 -1
- package/dist/services/workflow/pipeline-verify-gate-support.js +63 -17
- package/dist/services/workflow/pipeline-verify-service.js +17 -6
- package/dist/services/workflow/plan-reader.js +5 -1
- package/dist/services/workflow/plan-refresher.js +20 -6
- package/dist/services/workflow/plan-trigger-detector.js +31 -8
- package/dist/services/workflow/provision-dispatch-node.js +8 -3
- package/dist/services/workflow/workflow-autonomous-resume-helpers.d.ts +3 -1
- package/dist/services/workflow/workflow-autonomous-resume-helpers.js +35 -144
- package/dist/services/workflow/workflow-autonomous-resume-validation.d.ts +16 -0
- package/dist/services/workflow/workflow-autonomous-resume-validation.js +155 -0
- package/dist/services/workflow/workflow-autonomous-service.js +25 -13
- package/dist/services/workflow/workflow-graph-store-helpers.d.ts +51 -0
- package/dist/services/workflow/workflow-graph-store-helpers.js +111 -0
- package/dist/services/workflow/workflow-graph-store.d.ts +2 -35
- package/dist/services/workflow/workflow-graph-store.js +30 -107
- package/dist/services/workflow/workflow-graph-types.js +3 -3
- package/dist/services/workflow/workflow-inflight-probe.js +14 -7
- package/dist/services/workflow/workflow-loader.js +5 -1
- package/dist/services/workflow/workflow-node-lifecycle.js +22 -21
- package/dist/services/workflow/workflow-presence-lifecycle-types.d.ts +50 -0
- package/dist/services/workflow/workflow-presence-lifecycle-types.js +1 -0
- package/dist/services/workflow/workflow-presence-lifecycle.d.ts +2 -42
- package/dist/services/workflow/workflow-presence-lifecycle.js +19 -21
- package/dist/services/workflow/workflow-router-service.js +169 -27
- package/dist/services/workflow/workflow-skip-service.js +14 -4
- package/dist/services/workflow/workflow-spec-builders.d.ts +15 -0
- package/dist/services/workflow/workflow-spec-builders.js +121 -0
- package/dist/services/workflow/workflow-spec.d.ts +7 -6
- package/dist/services/workflow/workflow-spec.js +22 -116
- package/dist/services/workflow/workflow-state-store.js +2 -1
- package/dist/services/workspace/migrate-1-4-1-service.js +80 -14
- package/dist/services/workspace/migrate-service.js +66 -16
- package/dist/services/workspace/reconcile-migrate.js +6 -2
- package/dist/services/workspace/reconcile-service.js +37 -16
- package/dist/services/workspace/workspace-claude-settings-materializer.js +7 -5
- package/dist/services/workspace/workspace-clean-service.js +4 -1
- package/dist/services/workspace/workspace-service.js +11 -3
- package/dist/services/workspace/workspace-state-service.js +1 -1
- package/dist/services/worktree/git-worktree-parser.js +13 -3
- package/dist/services/worktree/host-worktree-reconciler.js +8 -4
- package/dist/services/worktree/long-path-cleanup.js +23 -6
- package/dist/services/worktree/worktree-gc-guard.js +3 -1
- package/dist/services/worktree/worktree-lease-types.d.ts +53 -0
- package/dist/services/worktree/worktree-lease-types.js +10 -0
- package/dist/services/worktree/worktree-lease.d.ts +2 -44
- package/dist/shared/array-guards.d.ts +30 -0
- package/dist/shared/array-guards.js +32 -0
- package/dist/shared/format-md-compact-internals.d.ts +26 -0
- package/dist/shared/format-md-compact-internals.js +125 -0
- package/dist/shared/format-md-compact.js +1 -117
- package/dist/shared/fs-utils.js +2 -1
- package/dist/shared/incrementing-number.js +3 -3
- package/dist/shared/json-parse.d.ts +71 -0
- package/dist/shared/json-parse.js +32 -0
- package/dist/shared/json-schema-mini.js +3 -1
- package/dist/shared/path-safety.js +3 -1
- package/dist/shared/path-utils.d.ts +20 -0
- package/dist/shared/path-utils.js +26 -0
- package/dist/shared/planner-response.js +3 -3
- package/dist/shared/stale-policy.js +1 -3
- package/dist/skills/peaks-maker/index.js +11 -11
- package/package.json +32 -9
- package/scripts/clean-dist.mjs +1 -2
- package/scripts/copy-templates.mjs +2 -4
- package/scripts/install-skills.mjs +305 -125
- package/scripts/sync-version.mjs +25 -8
- package/scripts/watch.mjs +8 -2
- package/skills/bee/peaks-rd/SKILL.md +1 -1
- package/skills/bee/peaks-rd/references/rd-fanout-contracts.md +26 -10
- package/skills/bee/peaks-rd/references/rd-sub-agent-dispatch.md +1 -1
- package/skills/bee/peaks-rd/references/writing-handoff-frontmatter.md +6 -1
- package/skills/peaks-code/SKILL.md +1 -1
- package/skills/peaks-code/references/periodic-checkpoint.md +7 -5
- package/skills/peaks-code/references/startup-sequence.md +1 -1
- package/skills/peaks-final-review/SKILL.md +1 -1
- /package/{docs → contracts}/test-style-contract.md +0 -0
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
// build), not `init`.
|
|
56
56
|
import { existsSync, statSync } from 'node:fs';
|
|
57
57
|
import { join } from 'node:path';
|
|
58
|
-
import { CODEGRAPH_DIR_NAME, CODEGRAPH_MARKER_NAME, createCodegraphInvocation, executeCodegraphInvocation, isCodegraphInitialized
|
|
58
|
+
import { CODEGRAPH_DIR_NAME, CODEGRAPH_MARKER_NAME, createCodegraphInvocation, executeCodegraphInvocation, isCodegraphInitialized } from './codegraph-service.js';
|
|
59
59
|
import { repairCodegraphExcludeFromProject } from './codegraph-exclude-repair.js';
|
|
60
60
|
/**
|
|
61
61
|
* The operator-facing line for a refresh that did not happen, or `null` when
|
|
@@ -115,6 +115,50 @@ function firstMeaningfulLine(text) {
|
|
|
115
115
|
const first = trimmed.split(/\r?\n/)[0];
|
|
116
116
|
return first !== undefined ? first.slice(0, 200) : 'no upstream output';
|
|
117
117
|
}
|
|
118
|
+
/**
|
|
119
|
+
* Self-heal a `.codegraph/` dir that exists without a `codegraph.db`
|
|
120
|
+
* (extracted verbatim from `refreshCodegraphAfterSlice` to clear the
|
|
121
|
+
* `max-lines-per-function` arm; behavior unchanged). Returns a terminal
|
|
122
|
+
* result when the refresh must stop, `null` when the caller may proceed
|
|
123
|
+
* to the index step.
|
|
124
|
+
*/
|
|
125
|
+
async function selfHealUninitializedCodegraph(projectRoot, runner) {
|
|
126
|
+
// A `.codegraph/` dir without a `codegraph.db` is uninitialized:
|
|
127
|
+
// - NOT peaks-loop-managed → foreign schema, never touch it.
|
|
128
|
+
// - peaks-loop-managed → the dangling state left by the pre-fix
|
|
129
|
+
// rid-CG-001 auto-stake (marker stamped, no upstream init). Run
|
|
130
|
+
// init (fast, offline-safe — no full index) so the subsequent
|
|
131
|
+
// index has a schema to write into.
|
|
132
|
+
if (!isCodegraphInitialized(projectRoot)) {
|
|
133
|
+
if (!isCodegraphPeaksLoopManaged(projectRoot)) {
|
|
134
|
+
return {
|
|
135
|
+
refreshed: false,
|
|
136
|
+
reason: 'no-codegraph-dir',
|
|
137
|
+
note: `auto codegraph refresh skipped: ${CODEGRAPH_DIR_NAME}/ exists without a codegraph.db and is not peaks-loop-managed. Run \`peaks codegraph init\` once to enable post-slice auto-refresh.`
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
const initResult = await executeCodegraphInvocation(createCodegraphInvocation({ subcommand: 'init', project: projectRoot }), runner);
|
|
141
|
+
if (initResult.exitCode !== 0) {
|
|
142
|
+
return {
|
|
143
|
+
refreshed: false,
|
|
144
|
+
reason: 'index-failed',
|
|
145
|
+
note: `auto codegraph refresh self-heal init failed (exit ${String(initResult.exitCode)}): ${firstMeaningfulLine(initResult.stderr || initResult.stdout)}. ${REFRESH_REMEDY}`
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
// That init just wrote upstream's 99-rule default `exclude`
|
|
149
|
+
// template, some of which block tracked source files — the same
|
|
150
|
+
// self-heal the CLI's `peaks codegraph init` performs, via the
|
|
151
|
+
// same shared helper. Skipped, this path would stamp the
|
|
152
|
+
// peaks-loop marker over an incomplete index that no later
|
|
153
|
+
// `init` (it would no-op) could ever repair.
|
|
154
|
+
//
|
|
155
|
+
// Never throws (the helper catches everything), and
|
|
156
|
+
// `reindex: false` because the index call below covers the
|
|
157
|
+
// recovered files.
|
|
158
|
+
await repairCodegraphExcludeFromProject(projectRoot, runner, { reindex: false });
|
|
159
|
+
}
|
|
160
|
+
return null;
|
|
161
|
+
}
|
|
118
162
|
/**
|
|
119
163
|
* Run a best-effort `codegraph index` refresh for `projectRoot` after a
|
|
120
164
|
* slice-complete boundary. NEVER throws — every failure path returns a
|
|
@@ -128,51 +172,24 @@ export async function refreshCodegraphAfterSlice(projectRoot, runner) {
|
|
|
128
172
|
return {
|
|
129
173
|
refreshed: false,
|
|
130
174
|
reason: 'no-codegraph-dir',
|
|
131
|
-
note: `auto codegraph refresh skipped: no ${CODEGRAPH_DIR_NAME} directory at ${join(projectRoot, CODEGRAPH_DIR_NAME)}. Run \`peaks codegraph init\` once to enable post-slice auto-refresh
|
|
175
|
+
note: `auto codegraph refresh skipped: no ${CODEGRAPH_DIR_NAME} directory at ${join(projectRoot, CODEGRAPH_DIR_NAME)}. Run \`peaks codegraph init\` once to enable post-slice auto-refresh.`
|
|
132
176
|
};
|
|
133
177
|
}
|
|
134
178
|
try {
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
return {
|
|
144
|
-
refreshed: false,
|
|
145
|
-
reason: 'no-codegraph-dir',
|
|
146
|
-
note: `auto codegraph refresh skipped: ${CODEGRAPH_DIR_NAME}/ exists without a codegraph.db and is not peaks-loop-managed. Run \`peaks codegraph init\` once to enable post-slice auto-refresh.`,
|
|
147
|
-
};
|
|
148
|
-
}
|
|
149
|
-
const initResult = await executeCodegraphInvocation(createCodegraphInvocation({ subcommand: 'init', project: projectRoot }), runner);
|
|
150
|
-
if (initResult.exitCode !== 0) {
|
|
151
|
-
return {
|
|
152
|
-
refreshed: false,
|
|
153
|
-
reason: 'index-failed',
|
|
154
|
-
note: `auto codegraph refresh self-heal init failed (exit ${String(initResult.exitCode)}): ${firstMeaningfulLine(initResult.stderr || initResult.stdout)}. ${REFRESH_REMEDY}`,
|
|
155
|
-
};
|
|
156
|
-
}
|
|
157
|
-
// That init just wrote upstream's 99-rule default `exclude`
|
|
158
|
-
// template, some of which block tracked source files — the same
|
|
159
|
-
// self-heal the CLI's `peaks codegraph init` performs, via the
|
|
160
|
-
// same shared helper. Skipped, this path would stamp the
|
|
161
|
-
// peaks-loop marker over an incomplete index that no later
|
|
162
|
-
// `init` (it would no-op) could ever repair.
|
|
163
|
-
//
|
|
164
|
-
// Never throws (the helper catches everything), and
|
|
165
|
-
// `reindex: false` because the index call below covers the
|
|
166
|
-
// recovered files.
|
|
167
|
-
await repairCodegraphExcludeFromProject(projectRoot, runner, { reindex: false });
|
|
168
|
-
}
|
|
169
|
-
const invocation = createCodegraphInvocation({ subcommand: 'index', project: projectRoot, quiet: true });
|
|
179
|
+
const selfHeal = await selfHealUninitializedCodegraph(projectRoot, runner);
|
|
180
|
+
if (selfHeal !== null)
|
|
181
|
+
return selfHeal;
|
|
182
|
+
const invocation = createCodegraphInvocation({
|
|
183
|
+
subcommand: 'index',
|
|
184
|
+
project: projectRoot,
|
|
185
|
+
quiet: true
|
|
186
|
+
});
|
|
170
187
|
const result = await executeCodegraphInvocation(invocation, runner);
|
|
171
188
|
if (result.exitCode !== 0) {
|
|
172
189
|
return {
|
|
173
190
|
refreshed: false,
|
|
174
191
|
reason: 'index-failed',
|
|
175
|
-
note: `auto codegraph refresh failed (exit ${String(result.exitCode)}): ${firstMeaningfulLine(result.stderr || result.stdout)}. ${REFRESH_REMEDY}
|
|
192
|
+
note: `auto codegraph refresh failed (exit ${String(result.exitCode)}): ${firstMeaningfulLine(result.stderr || result.stdout)}. ${REFRESH_REMEDY}`
|
|
176
193
|
};
|
|
177
194
|
}
|
|
178
195
|
return { refreshed: true };
|
|
@@ -181,7 +198,7 @@ export async function refreshCodegraphAfterSlice(projectRoot, runner) {
|
|
|
181
198
|
return {
|
|
182
199
|
refreshed: false,
|
|
183
200
|
reason: 'unavailable',
|
|
184
|
-
note: `auto codegraph refresh unavailable: ${errorMessage(error)}. ${REFRESH_REMEDY}
|
|
201
|
+
note: `auto codegraph refresh unavailable: ${errorMessage(error)}. ${REFRESH_REMEDY}`
|
|
185
202
|
};
|
|
186
203
|
}
|
|
187
204
|
}
|
|
@@ -86,3 +86,47 @@ export type CodegraphConfigRepairOutcome = {
|
|
|
86
86
|
* anything is written, so a throw can never half-apply.
|
|
87
87
|
*/
|
|
88
88
|
export declare function applyCodegraphConfigRepair(projectRoot: string, repair: CodegraphConfigRepairPlan): CodegraphConfigRepairOutcome;
|
|
89
|
+
export type CodegraphConfigRollbackResult = {
|
|
90
|
+
readonly rolledBack: true;
|
|
91
|
+
readonly configPath: string;
|
|
92
|
+
readonly backupPath: string;
|
|
93
|
+
} | {
|
|
94
|
+
readonly rolledBack: false;
|
|
95
|
+
readonly configPath: string;
|
|
96
|
+
readonly backupPath: string;
|
|
97
|
+
/** Why the rollback did not happen. Never `null` on this arm. */
|
|
98
|
+
readonly error: string;
|
|
99
|
+
};
|
|
100
|
+
/**
|
|
101
|
+
* Put `configPath` back to the bytes `writeConfigBackup` saved beside it, and
|
|
102
|
+
* back to the mode those bytes were saved with.
|
|
103
|
+
*
|
|
104
|
+
* This is the reverse of `applyCodegraphConfigRepair`'s write half and the only
|
|
105
|
+
* reason the `.bak` exists: until this function, the backup had no reader
|
|
106
|
+
* anywhere in the repository, so "byte-exact rollback" described a file nobody
|
|
107
|
+
* ever restored.
|
|
108
|
+
*
|
|
109
|
+
* The guard is `linkOrDirectoryAt` — the SAME predicate that refuses to WRITE
|
|
110
|
+
* through a link at the backup path refuses to READ through one here. The
|
|
111
|
+
* attack it closes is the mirror image of the writer's: `config.json.bak` is
|
|
112
|
+
* fixed and committable, so a repository that ships it as a link would
|
|
113
|
+
* otherwise have the link's target's bytes published into `.codegraph/config.json`
|
|
114
|
+
* as if they were the pre-repair config — attacker-chosen content, written
|
|
115
|
+
* under the operator's own config path, from a file the operator never
|
|
116
|
+
* reviewed. A refusal is a refusal and not a repair, at both ends.
|
|
117
|
+
*
|
|
118
|
+
* The restore runs through `writeConfigAtomic` (same-directory CSPRNG temp +
|
|
119
|
+
* `renameSync`) for the same reason the backup write does: a crash mid-write
|
|
120
|
+
* must leave the repaired config intact rather than a prefix of the restored
|
|
121
|
+
* one, and the mode is applied to the TEMP before the rename so the published
|
|
122
|
+
* file never exists at the process umask. The mode comes from `statSync` of the
|
|
123
|
+
* backup, symmetrical with the write end: the copy carries the original
|
|
124
|
+
* config's mode, so handing that mode back to the config restores what the
|
|
125
|
+
* project had granted rather than this process's umask.
|
|
126
|
+
*
|
|
127
|
+
* A refusal, or a backup that cannot be read, is RETURNED rather than thrown:
|
|
128
|
+
* the caller reports it as a field and must keep going — the forced rebuild it
|
|
129
|
+
* was asked for still has to run. `writeConfigAtomic`'s own fs throw is left to
|
|
130
|
+
* propagate, and the caller catches that too.
|
|
131
|
+
*/
|
|
132
|
+
export declare function rollbackCodegraphConfig(configPath: string): Promise<CodegraphConfigRollbackResult>;
|
|
@@ -3,7 +3,10 @@
|
|
|
3
3
|
// The pure repair plans (`repairCodegraphExclude` for the exclude axis,
|
|
4
4
|
// `repairCodegraphInclude` for the include axis) and the writer that applies
|
|
5
5
|
// them to `<projectRoot>/.codegraph/config.json` in ONE atomic rewrite, plus
|
|
6
|
-
// the byte-exact `config.json.bak` copy it keeps for rollback
|
|
6
|
+
// the byte-exact `config.json.bak` copy it keeps for rollback and
|
|
7
|
+
// `rollbackCodegraphConfig`, that copy's reader (slice A1 of
|
|
8
|
+
// `2026-09-17-session-607ead`: the reverse write, so the rollback the `.bak`
|
|
9
|
+
// has always promised is reachable).
|
|
7
10
|
//
|
|
8
11
|
// Extracted verbatim from `codegraph-exclude-repair.ts` (rid
|
|
9
12
|
// 2026-09-17-oversize-followup, G1 — the 800-line file-size cap). Every moved
|
|
@@ -142,6 +145,40 @@ function writeConfigAtomic(filePath, content, mode) {
|
|
|
142
145
|
throw error;
|
|
143
146
|
}
|
|
144
147
|
}
|
|
148
|
+
/**
|
|
149
|
+
* The shared shape of the two refusals this module makes at the FIXED,
|
|
150
|
+
* therefore guessable, `config.json.bak` path: a symbolic link (bytes land in
|
|
151
|
+
* whatever it points at), a directory (there is nowhere for them to land), or
|
|
152
|
+
* a hard link (`nlink > 1` — another name shares this inode). Returns `null`
|
|
153
|
+
* when the path is absent or is a plain regular file, the only two states both
|
|
154
|
+
* ends of the rollback contract may act on.
|
|
155
|
+
*
|
|
156
|
+
* ONE predicate, two callers, and that is the point: `writeConfigBackup`
|
|
157
|
+
* WRITES this copy and `rollbackCodegraphConfig` READS it back. A guard that
|
|
158
|
+
* drifted between the two would leave the rollback trusting a path the writer
|
|
159
|
+
* would have refused, so the refusal is the same at both ends because the
|
|
160
|
+
* trust premise is the same at both ends.
|
|
161
|
+
*
|
|
162
|
+
* `lstat`, never `stat`: `stat` follows a link and reports the victim's
|
|
163
|
+
* regular-file type, which is exactly the case both callers must refuse.
|
|
164
|
+
*/
|
|
165
|
+
function linkOrDirectoryAt(path) {
|
|
166
|
+
const existing = lstatSync(path, { throwIfNoEntry: false });
|
|
167
|
+
if (existing === undefined ||
|
|
168
|
+
(!existing.isSymbolicLink() && !existing.isDirectory() && existing.nlink <= 1)) {
|
|
169
|
+
return null;
|
|
170
|
+
}
|
|
171
|
+
return {
|
|
172
|
+
// "through" for a link (the bytes land in whatever it points at), "at" for
|
|
173
|
+
// a directory (there is nowhere for them to land).
|
|
174
|
+
preposition: existing.isDirectory() ? 'at' : 'through',
|
|
175
|
+
kind: existing.isSymbolicLink()
|
|
176
|
+
? 'a symbolic link'
|
|
177
|
+
: existing.isDirectory()
|
|
178
|
+
? 'a directory'
|
|
179
|
+
: `a hard link (link count ${String(existing.nlink)})`
|
|
180
|
+
};
|
|
181
|
+
}
|
|
145
182
|
/**
|
|
146
183
|
* Copy the config's ORIGINAL bytes to `config.json.bak`, refusing to write
|
|
147
184
|
* through a link that already occupies that path.
|
|
@@ -207,18 +244,9 @@ function writeConfigAtomic(filePath, content, mode) {
|
|
|
207
244
|
*/
|
|
208
245
|
function writeConfigBackup(configPath, originalText) {
|
|
209
246
|
const backupPath = `${configPath}${CODEGRAPH_CONFIG_BACKUP_SUFFIX}`;
|
|
210
|
-
const
|
|
211
|
-
if (
|
|
212
|
-
|
|
213
|
-
const kind = existing.isSymbolicLink()
|
|
214
|
-
? 'a symbolic link'
|
|
215
|
-
: existing.isDirectory()
|
|
216
|
-
? 'a directory'
|
|
217
|
-
: `a hard link (link count ${String(existing.nlink)})`;
|
|
218
|
-
// "through" for a link (the bytes land in whatever it points at), "at" for
|
|
219
|
-
// a directory (there is nowhere for them to land).
|
|
220
|
-
const preposition = existing.isDirectory() ? 'at' : 'through';
|
|
221
|
-
throw new Error(`codegraph config backup ${backupPath}: refusing to write ${preposition} ${kind} occupying ` +
|
|
247
|
+
const occupied = linkOrDirectoryAt(backupPath);
|
|
248
|
+
if (occupied !== null) {
|
|
249
|
+
throw new Error(`codegraph config backup ${backupPath}: refusing to write ${occupied.preposition} ${occupied.kind} occupying ` +
|
|
222
250
|
'this path. Another file or directory shares it, so a backup written here would overwrite ' +
|
|
223
251
|
'that. Remove it (or point `peaks` at a project root whose `.codegraph/` it owns) and re-run.');
|
|
224
252
|
}
|
|
@@ -286,7 +314,10 @@ export function applyCodegraphConfigRepair(projectRoot, repair) {
|
|
|
286
314
|
// is how a wrong `include` would survive a repair that reported success.
|
|
287
315
|
const include = record.include === undefined ? [] : assertStringArray(record.include, 'include', configPath);
|
|
288
316
|
const excludePlan = repairCodegraphExclude({ exclude, rulesToRemove: repair.rulesToRemove });
|
|
289
|
-
const includePlan = repairCodegraphInclude({
|
|
317
|
+
const includePlan = repairCodegraphInclude({
|
|
318
|
+
include,
|
|
319
|
+
patternsToAdd: repair.includePatternsToAdd
|
|
320
|
+
});
|
|
290
321
|
if (!excludePlan.changed && !includePlan.changed) {
|
|
291
322
|
return {
|
|
292
323
|
applied: false,
|
|
@@ -320,3 +351,74 @@ export function applyCodegraphConfigRepair(projectRoot, repair) {
|
|
|
320
351
|
includeCountAfter: includePlan.include.length
|
|
321
352
|
};
|
|
322
353
|
}
|
|
354
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
355
|
+
// Rollback — the read side of the `.bak`
|
|
356
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
357
|
+
/** Local, because this module must not import `codegraph-exclude-repair.ts`. */
|
|
358
|
+
function errorMessage(error) {
|
|
359
|
+
return error instanceof Error ? error.message : String(error);
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* Put `configPath` back to the bytes `writeConfigBackup` saved beside it, and
|
|
363
|
+
* back to the mode those bytes were saved with.
|
|
364
|
+
*
|
|
365
|
+
* This is the reverse of `applyCodegraphConfigRepair`'s write half and the only
|
|
366
|
+
* reason the `.bak` exists: until this function, the backup had no reader
|
|
367
|
+
* anywhere in the repository, so "byte-exact rollback" described a file nobody
|
|
368
|
+
* ever restored.
|
|
369
|
+
*
|
|
370
|
+
* The guard is `linkOrDirectoryAt` — the SAME predicate that refuses to WRITE
|
|
371
|
+
* through a link at the backup path refuses to READ through one here. The
|
|
372
|
+
* attack it closes is the mirror image of the writer's: `config.json.bak` is
|
|
373
|
+
* fixed and committable, so a repository that ships it as a link would
|
|
374
|
+
* otherwise have the link's target's bytes published into `.codegraph/config.json`
|
|
375
|
+
* as if they were the pre-repair config — attacker-chosen content, written
|
|
376
|
+
* under the operator's own config path, from a file the operator never
|
|
377
|
+
* reviewed. A refusal is a refusal and not a repair, at both ends.
|
|
378
|
+
*
|
|
379
|
+
* The restore runs through `writeConfigAtomic` (same-directory CSPRNG temp +
|
|
380
|
+
* `renameSync`) for the same reason the backup write does: a crash mid-write
|
|
381
|
+
* must leave the repaired config intact rather than a prefix of the restored
|
|
382
|
+
* one, and the mode is applied to the TEMP before the rename so the published
|
|
383
|
+
* file never exists at the process umask. The mode comes from `statSync` of the
|
|
384
|
+
* backup, symmetrical with the write end: the copy carries the original
|
|
385
|
+
* config's mode, so handing that mode back to the config restores what the
|
|
386
|
+
* project had granted rather than this process's umask.
|
|
387
|
+
*
|
|
388
|
+
* A refusal, or a backup that cannot be read, is RETURNED rather than thrown:
|
|
389
|
+
* the caller reports it as a field and must keep going — the forced rebuild it
|
|
390
|
+
* was asked for still has to run. `writeConfigAtomic`'s own fs throw is left to
|
|
391
|
+
* propagate, and the caller catches that too.
|
|
392
|
+
*/
|
|
393
|
+
export async function rollbackCodegraphConfig(configPath) {
|
|
394
|
+
const backupPath = `${configPath}${CODEGRAPH_CONFIG_BACKUP_SUFFIX}`;
|
|
395
|
+
const occupied = linkOrDirectoryAt(backupPath);
|
|
396
|
+
if (occupied !== null) {
|
|
397
|
+
return {
|
|
398
|
+
rolledBack: false,
|
|
399
|
+
configPath,
|
|
400
|
+
backupPath,
|
|
401
|
+
error: `codegraph config rollback ${backupPath}: refusing to restore ${occupied.preposition} ${occupied.kind} occupying ` +
|
|
402
|
+
'this path. A backup this writer did not create is not a rollback point, and restoring through it ' +
|
|
403
|
+
'would publish bytes nobody reviewed. Restore it by hand and re-run.'
|
|
404
|
+
};
|
|
405
|
+
}
|
|
406
|
+
let originalText;
|
|
407
|
+
let originalMode;
|
|
408
|
+
try {
|
|
409
|
+
originalText = readFileSync(backupPath, 'utf8');
|
|
410
|
+
// `& 0o777` drops the file-type bits `statSync` packs above the permission
|
|
411
|
+
// bits — `chmod` takes permission bits only.
|
|
412
|
+
originalMode = statSync(backupPath).mode & 0o777;
|
|
413
|
+
}
|
|
414
|
+
catch (error) {
|
|
415
|
+
return {
|
|
416
|
+
rolledBack: false,
|
|
417
|
+
configPath,
|
|
418
|
+
backupPath,
|
|
419
|
+
error: `codegraph config rollback: cannot read ${backupPath}: ${errorMessage(error)}`
|
|
420
|
+
};
|
|
421
|
+
}
|
|
422
|
+
writeConfigAtomic(configPath, originalText, originalMode);
|
|
423
|
+
return { rolledBack: true, configPath, backupPath };
|
|
424
|
+
}
|
|
@@ -84,7 +84,10 @@ export function inspectCodegraphExcludeIntegrity(projectRoot, inputs = {}) {
|
|
|
84
84
|
excludedTrackedCount: result.excludedTrackedCount,
|
|
85
85
|
violations: result.violations,
|
|
86
86
|
rulesToRemove: result.rulesToRemove,
|
|
87
|
-
ruleImpacts: result.rulesToRemove.map((rule) => ({
|
|
87
|
+
ruleImpacts: result.rulesToRemove.map((rule) => ({
|
|
88
|
+
rule,
|
|
89
|
+
blockedCount: blockedCounts.get(rule) ?? 0
|
|
90
|
+
}))
|
|
88
91
|
};
|
|
89
92
|
}
|
|
90
93
|
/**
|
|
@@ -64,7 +64,15 @@ export type CodegraphExcludeRepairReport = {
|
|
|
64
64
|
* AND the reads failed (there is no config to name).
|
|
65
65
|
*/
|
|
66
66
|
readonly configPath: string;
|
|
67
|
-
/**
|
|
67
|
+
/**
|
|
68
|
+
* Byte-exact rollback copy (null when nothing was written).
|
|
69
|
+
*
|
|
70
|
+
* It is a rollback POINT, not a rollback: nothing in this seam reads it back.
|
|
71
|
+
* Putting the config back is the separate, explicit
|
|
72
|
+
* `peaks codegraph config-restore` verb, so this field is what that verb
|
|
73
|
+
* would read — and its presence is the one guarantee that a restore is
|
|
74
|
+
* possible at all.
|
|
75
|
+
*/
|
|
68
76
|
readonly backupPath: string | null;
|
|
69
77
|
/** True when the post-repair `codegraph index` finished successfully. */
|
|
70
78
|
readonly reindexed: boolean;
|
|
@@ -127,6 +135,20 @@ export type CodegraphExcludeRepairOptions = {
|
|
|
127
135
|
* C) exists so that upgrading peaks-loop cannot change a downstream
|
|
128
136
|
* project's cost profile, and purging dead rows is the caller's explicit
|
|
129
137
|
* request instead.
|
|
138
|
+
*
|
|
139
|
+
* `'force'` changes ONLY the rebuild, never the config: it is the same
|
|
140
|
+
* two-axis repair as `'exclude'`, followed by `cg.clear()` + `indexAll()`
|
|
141
|
+
* instead of an incremental index. The config repair STAYS — that is what
|
|
142
|
+
* makes the force mode worth its cost, because `include` has to be widened
|
|
143
|
+
* before a rebuild can admit the files the config was dropping.
|
|
144
|
+
*
|
|
145
|
+
* Not a self-cancelling run, and that is a design decision rather than a
|
|
146
|
+
* detail: a mode that wrote the repair and then restored the pre-repair bytes
|
|
147
|
+
* would leave the config exactly as it found it, `peaks codegraph status`
|
|
148
|
+
* would still report the gap, and exit 75 would never clear. Putting the
|
|
149
|
+
* config BACK is the explicit `peaks codegraph config-restore` verb, which
|
|
150
|
+
* reads the `.bak` this run leaves — an operator decision, not a side effect
|
|
151
|
+
* of asking for a rebuild.
|
|
130
152
|
*/
|
|
131
153
|
readonly reindex?: boolean | 'force';
|
|
132
154
|
};
|
|
@@ -64,6 +64,12 @@
|
|
|
64
64
|
// consumer project (`config.json.bak` matches neither the peaks-loop
|
|
65
65
|
// snippet nor upstream's own `.codegraph/.gitignore`), so both files
|
|
66
66
|
// are committable.
|
|
67
|
+
// - `rollbackCodegraphConfig` is that copy's READER, and it is reached by the
|
|
68
|
+
// EXPLICIT `peaks codegraph config-restore` verb — never from here. A
|
|
69
|
+
// repair must not undo itself: this seam's job is to close the gap, so a
|
|
70
|
+
// run that restored its own write would leave the config exactly as it
|
|
71
|
+
// found it and `peaks codegraph status` still reporting the gap (exit 75
|
|
72
|
+
// never clearing). Rolling back is an operator decision, not a step.
|
|
67
73
|
// - The DIRECTORY both paths live in is contained: `assertCodegraphDirContained`
|
|
68
74
|
// refuses when `<projectRoot>/.codegraph` resolves (junction or symlink)
|
|
69
75
|
// outside the canonical project root, so neither the read nor either
|
|
@@ -204,8 +210,7 @@ export async function repairCodegraphExcludeFromProject(projectRoot, runner, opt
|
|
|
204
210
|
// pass runs only on the one run per project that actually widens
|
|
205
211
|
// `include`, where a repair is about to spend seconds rebuilding an index.
|
|
206
212
|
const includeFilesRecovered = includePlan.changed
|
|
207
|
-
? includeAdmittedAfter -
|
|
208
|
-
filterAdmittedTrackedFiles(trackedFiles, config.include).length
|
|
213
|
+
? includeAdmittedAfter - filterAdmittedTrackedFiles(trackedFiles, config.include).length
|
|
209
214
|
: 0;
|
|
210
215
|
const nothingToRepair = includePlan.addedPatterns.length === 0 && reconcile.rulesToRemove.length === 0;
|
|
211
216
|
const unchanged = {
|
|
@@ -135,7 +135,7 @@ export const CODEGRAPH_REPAIR_INDEX_COMMAND = 'peaks codegraph repair-index --pr
|
|
|
135
135
|
export const CODEGRAPH_INDEX_STRICT_ENV_VAR = 'PEAKS_CODEGRAPH_INDEX_STRICT';
|
|
136
136
|
/** True when the project opted in to blocking index-gap verdicts. */
|
|
137
137
|
export function isCodegraphIndexStrictMode(env = process.env) {
|
|
138
|
-
return env[CODEGRAPH_INDEX_STRICT_ENV_VAR] === '1' || env[CODEGRAPH_INDEX_STRICT_ENV_VAR] === 'true';
|
|
138
|
+
return (env[CODEGRAPH_INDEX_STRICT_ENV_VAR] === '1' || env[CODEGRAPH_INDEX_STRICT_ENV_VAR] === 'true');
|
|
139
139
|
}
|
|
140
140
|
/**
|
|
141
141
|
* Fold the inspected report (null when there is no index to inspect) and
|
|
@@ -1,30 +1,7 @@
|
|
|
1
1
|
import { type CodegraphProcessRunner } from './codegraph-service.js';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
fileCount: number;
|
|
6
|
-
truncated: boolean;
|
|
7
|
-
} | {
|
|
8
|
-
available: false;
|
|
9
|
-
note: string;
|
|
10
|
-
};
|
|
11
|
-
/** Cap for the directory histogram in the rendered structure block. */
|
|
12
|
-
export declare const CODEGRAPH_STRUCTURE_MAX_DIRS = 40;
|
|
13
|
-
/** Cap for bare root files listed in the rendered structure block. */
|
|
14
|
-
export declare const CODEGRAPH_STRUCTURE_MAX_ROOT_FILES = 12;
|
|
15
|
-
export interface CodegraphStructureFileEntry {
|
|
16
|
-
readonly path: string;
|
|
17
|
-
}
|
|
18
|
-
export interface CodegraphStructureRenderOptions {
|
|
19
|
-
readonly maxDirs?: number;
|
|
20
|
-
readonly maxRootFiles?: number;
|
|
21
|
-
}
|
|
22
|
-
export interface CodegraphStructureSummary {
|
|
23
|
-
/** Full `## Codegraph structure` markdown block, ending on its own paragraph. */
|
|
24
|
-
block: string;
|
|
25
|
-
total: number;
|
|
26
|
-
truncated: boolean;
|
|
27
|
-
}
|
|
2
|
+
import { type CodegraphPreflightResult, type CodegraphStructureFileEntry, type CodegraphStructureRenderOptions, type CodegraphStructureSummary } from './codegraph-preflight-structure.js';
|
|
3
|
+
export { CODEGRAPH_STRUCTURE_MAX_DIRS, CODEGRAPH_STRUCTURE_MAX_ROOT_FILES } from './codegraph-preflight-structure.js';
|
|
4
|
+
export type { CodegraphPreflightResult, CodegraphStructureFileEntry, CodegraphStructureRenderOptions, CodegraphStructureSummary } from './codegraph-preflight-structure.js';
|
|
28
5
|
/**
|
|
29
6
|
* Pure renderer: turn the codegraph `files --json` payload into a bounded
|
|
30
7
|
* `## Codegraph structure` block. Files are aggregated into a directory
|
|
@@ -31,17 +31,11 @@
|
|
|
31
31
|
// - CODEGRAPH_STRUCTURE_MAX_DIRS = 40 directory rows
|
|
32
32
|
// - CODEGRAPH_STRUCTURE_MAX_ROOT_FILES = 12 bare root files
|
|
33
33
|
import { mkdirSync } from 'node:fs';
|
|
34
|
-
import { CODEGRAPH_DIR_NAME, createCodegraphInvocation, defaultCodegraphInitGuard, executeCodegraphInvocation, isCodegraphInitialized, writeCodegraphMarker
|
|
34
|
+
import { CODEGRAPH_DIR_NAME, createCodegraphInvocation, defaultCodegraphInitGuard, executeCodegraphInvocation, isCodegraphInitialized, writeCodegraphMarker } from './codegraph-service.js';
|
|
35
35
|
import { defaultCodegraphProcessRunner } from './codegraph-process-runner.js';
|
|
36
36
|
import { repairCodegraphExcludeFromProject } from './codegraph-exclude-repair.js';
|
|
37
|
-
|
|
38
|
-
export
|
|
39
|
-
/** Cap for bare root files listed in the rendered structure block. */
|
|
40
|
-
export const CODEGRAPH_STRUCTURE_MAX_ROOT_FILES = 12;
|
|
41
|
-
/** Strip a leading `./` (upstream codegraph paths may carry it). */
|
|
42
|
-
function normalizeCodegraphPath(path) {
|
|
43
|
-
return path.startsWith('./') ? path.slice(2) : path;
|
|
44
|
-
}
|
|
37
|
+
import { CODEGRAPH_STRUCTURE_MAX_DIRS, CODEGRAPH_STRUCTURE_MAX_ROOT_FILES, normalizeCodegraphPath, parseFilesPayload } from './codegraph-preflight-structure.js';
|
|
38
|
+
export { CODEGRAPH_STRUCTURE_MAX_DIRS, CODEGRAPH_STRUCTURE_MAX_ROOT_FILES } from './codegraph-preflight-structure.js';
|
|
45
39
|
/**
|
|
46
40
|
* Pure renderer: turn the codegraph `files --json` payload into a bounded
|
|
47
41
|
* `## Codegraph structure` block. Files are aggregated into a directory
|
|
@@ -69,8 +63,7 @@ export function renderCodegraphStructureBlock(files, options = {}) {
|
|
|
69
63
|
const dir = raw.slice(0, slash);
|
|
70
64
|
dirCounts.set(dir, (dirCounts.get(dir) ?? 0) + 1);
|
|
71
65
|
}
|
|
72
|
-
const sortedDirs = [...dirCounts.entries()]
|
|
73
|
-
.sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0]));
|
|
66
|
+
const sortedDirs = [...dirCounts.entries()].sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0]));
|
|
74
67
|
const shownDirs = sortedDirs.slice(0, maxDirs);
|
|
75
68
|
const truncatedDirs = sortedDirs.length > maxDirs;
|
|
76
69
|
const sortedRoot = [...rootFiles].sort((a, b) => a.localeCompare(b));
|
|
@@ -102,28 +95,14 @@ function firstMeaningfulLine(text) {
|
|
|
102
95
|
const first = trimmed.split(/\r?\n/)[0];
|
|
103
96
|
return first !== undefined ? first.slice(0, 200) : 'no upstream output';
|
|
104
97
|
}
|
|
105
|
-
function parseFilesPayload(stdout) {
|
|
106
|
-
try {
|
|
107
|
-
const parsed = JSON.parse(stdout);
|
|
108
|
-
if (Array.isArray(parsed)) {
|
|
109
|
-
const entries = parsed
|
|
110
|
-
.filter((entry) => typeof entry === 'object' && entry !== null && 'path' in entry)
|
|
111
|
-
.map((entry) => ({ path: typeof entry.path === 'string' ? entry.path : '' }))
|
|
112
|
-
.filter((entry) => entry.path.length > 0);
|
|
113
|
-
return { ok: true, entries };
|
|
114
|
-
}
|
|
115
|
-
// JSON but not an array — not the shape we expect.
|
|
116
|
-
return { ok: false, entries: [] };
|
|
117
|
-
}
|
|
118
|
-
catch {
|
|
119
|
-
// Not JSON at all — e.g. the upstream text path ("No files indexed…").
|
|
120
|
-
return { ok: false, entries: [] };
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
98
|
async function readStructure(projectRoot, runner) {
|
|
124
99
|
let result;
|
|
125
100
|
try {
|
|
126
|
-
const invocation = createCodegraphInvocation({
|
|
101
|
+
const invocation = createCodegraphInvocation({
|
|
102
|
+
subcommand: 'files',
|
|
103
|
+
project: projectRoot,
|
|
104
|
+
json: true
|
|
105
|
+
});
|
|
127
106
|
result = await executeCodegraphInvocation(invocation, runner);
|
|
128
107
|
}
|
|
129
108
|
catch (error) {
|
|
@@ -132,20 +111,20 @@ async function readStructure(projectRoot, runner) {
|
|
|
132
111
|
if (result.exitCode !== 0) {
|
|
133
112
|
return {
|
|
134
113
|
available: false,
|
|
135
|
-
note: `codegraph files failed (exit ${String(result.exitCode)}): ${firstMeaningfulLine(result.stderr || result.stdout)}
|
|
114
|
+
note: `codegraph files failed (exit ${String(result.exitCode)}): ${firstMeaningfulLine(result.stderr || result.stdout)}`
|
|
136
115
|
};
|
|
137
116
|
}
|
|
138
117
|
const { ok, entries } = parseFilesPayload(result.stdout);
|
|
139
118
|
if (!ok) {
|
|
140
119
|
return {
|
|
141
120
|
available: false,
|
|
142
|
-
note: 'codegraph files returned no parseable structure — run `peaks codegraph index` before dispatch for symbol-accurate structure.'
|
|
121
|
+
note: 'codegraph files returned no parseable structure — run `peaks codegraph index` before dispatch for symbol-accurate structure.'
|
|
143
122
|
};
|
|
144
123
|
}
|
|
145
124
|
if (entries.length === 0) {
|
|
146
125
|
return {
|
|
147
126
|
available: false,
|
|
148
|
-
note: 'codegraph index has no files — run `peaks codegraph index` before dispatch for symbol-accurate structure.'
|
|
127
|
+
note: 'codegraph index has no files — run `peaks codegraph index` before dispatch for symbol-accurate structure.'
|
|
149
128
|
};
|
|
150
129
|
}
|
|
151
130
|
const summary = renderCodegraphStructureBlock(entries);
|
|
@@ -153,7 +132,7 @@ async function readStructure(projectRoot, runner) {
|
|
|
153
132
|
available: true,
|
|
154
133
|
block: summary.block,
|
|
155
134
|
fileCount: summary.total,
|
|
156
|
-
truncated: summary.truncated
|
|
135
|
+
truncated: summary.truncated
|
|
157
136
|
};
|
|
158
137
|
}
|
|
159
138
|
/**
|
|
@@ -181,7 +160,7 @@ export async function buildCodegraphPreflightBlock(projectRoot, runner) {
|
|
|
181
160
|
if (guard.status === 'conflict-foreign-schema') {
|
|
182
161
|
return {
|
|
183
162
|
available: false,
|
|
184
|
-
note: `codegraph unavailable: ${CODEGRAPH_DIR_NAME}/ exists with a non-peaks-loop schema and was not touched. Move or rename the foreign directory, then re-run \`peaks codegraph init\` to enable pre-dispatch structure reads
|
|
163
|
+
note: `codegraph unavailable: ${CODEGRAPH_DIR_NAME}/ exists with a non-peaks-loop schema and was not touched. Move or rename the foreign directory, then re-run \`peaks codegraph init\` to enable pre-dispatch structure reads.`
|
|
185
164
|
};
|
|
186
165
|
}
|
|
187
166
|
// 'fresh' (no dir) OR a dangling peaks-loop dir (marker present, no
|
|
@@ -196,7 +175,7 @@ export async function buildCodegraphPreflightBlock(projectRoot, runner) {
|
|
|
196
175
|
if (initResult.exitCode !== 0) {
|
|
197
176
|
return {
|
|
198
177
|
available: false,
|
|
199
|
-
note: `codegraph init failed (exit ${String(initResult.exitCode)}): ${firstMeaningfulLine(initResult.stderr || initResult.stdout)}
|
|
178
|
+
note: `codegraph init failed (exit ${String(initResult.exitCode)}): ${firstMeaningfulLine(initResult.stderr || initResult.stdout)}`
|
|
200
179
|
};
|
|
201
180
|
}
|
|
202
181
|
try {
|
|
@@ -230,7 +209,7 @@ export async function buildCodegraphPreflightBlock(projectRoot, runner) {
|
|
|
230
209
|
if (indexResult.exitCode !== 0) {
|
|
231
210
|
return {
|
|
232
211
|
available: false,
|
|
233
|
-
note: `codegraph index failed (exit ${String(indexResult.exitCode)}): ${firstMeaningfulLine(indexResult.stderr || indexResult.stdout)}
|
|
212
|
+
note: `codegraph index failed (exit ${String(indexResult.exitCode)}): ${firstMeaningfulLine(indexResult.stderr || indexResult.stdout)}`
|
|
234
213
|
};
|
|
235
214
|
}
|
|
236
215
|
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export type CodegraphPreflightResult = {
|
|
2
|
+
available: true;
|
|
3
|
+
block: string;
|
|
4
|
+
fileCount: number;
|
|
5
|
+
truncated: boolean;
|
|
6
|
+
} | {
|
|
7
|
+
available: false;
|
|
8
|
+
note: string;
|
|
9
|
+
};
|
|
10
|
+
/** Cap for the directory histogram in the rendered structure block. */
|
|
11
|
+
export declare const CODEGRAPH_STRUCTURE_MAX_DIRS = 40;
|
|
12
|
+
/** Cap for bare root files listed in the rendered structure block. */
|
|
13
|
+
export declare const CODEGRAPH_STRUCTURE_MAX_ROOT_FILES = 12;
|
|
14
|
+
export interface CodegraphStructureFileEntry {
|
|
15
|
+
readonly path: string;
|
|
16
|
+
}
|
|
17
|
+
export interface CodegraphStructureRenderOptions {
|
|
18
|
+
readonly maxDirs?: number;
|
|
19
|
+
readonly maxRootFiles?: number;
|
|
20
|
+
}
|
|
21
|
+
export interface CodegraphStructureSummary {
|
|
22
|
+
/** Full `## Codegraph structure` markdown block, ending on its own paragraph. */
|
|
23
|
+
block: string;
|
|
24
|
+
total: number;
|
|
25
|
+
truncated: boolean;
|
|
26
|
+
}
|
|
27
|
+
/** Strip a leading `./` (upstream codegraph paths may carry it). */
|
|
28
|
+
export declare function normalizeCodegraphPath(path: string): string;
|
|
29
|
+
export declare function parseFilesPayload(stdout: string): {
|
|
30
|
+
ok: boolean;
|
|
31
|
+
entries: CodegraphStructureFileEntry[];
|
|
32
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// src/services/codegraph/codegraph-preflight-structure.ts
|
|
2
|
+
//
|
|
3
|
+
// The declaration + payload-parsing surface of the pre-dispatch codegraph
|
|
4
|
+
// preflight (`codegraph-preflight-service.ts`), extracted so the service
|
|
5
|
+
// module stays under the repo file-size cap. `codegraph-preflight-service.ts`
|
|
6
|
+
// imports these and re-exports the public ones, so importers keep resolving
|
|
7
|
+
// every name from the original path.
|
|
8
|
+
/** Cap for the directory histogram in the rendered structure block. */
|
|
9
|
+
export const CODEGRAPH_STRUCTURE_MAX_DIRS = 40;
|
|
10
|
+
/** Cap for bare root files listed in the rendered structure block. */
|
|
11
|
+
export const CODEGRAPH_STRUCTURE_MAX_ROOT_FILES = 12;
|
|
12
|
+
/** Strip a leading `./` (upstream codegraph paths may carry it). */
|
|
13
|
+
export function normalizeCodegraphPath(path) {
|
|
14
|
+
return path.startsWith('./') ? path.slice(2) : path;
|
|
15
|
+
}
|
|
16
|
+
export function parseFilesPayload(stdout) {
|
|
17
|
+
try {
|
|
18
|
+
const parsed = JSON.parse(stdout);
|
|
19
|
+
if (Array.isArray(parsed)) {
|
|
20
|
+
const entries = parsed
|
|
21
|
+
.filter((entry) => typeof entry === 'object' && entry !== null && 'path' in entry)
|
|
22
|
+
.map((entry) => ({ path: typeof entry.path === 'string' ? entry.path : '' }))
|
|
23
|
+
.filter((entry) => entry.path.length > 0);
|
|
24
|
+
return { ok: true, entries };
|
|
25
|
+
}
|
|
26
|
+
// JSON but not an array — not the shape we expect.
|
|
27
|
+
return { ok: false, entries: [] };
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
// Not JSON at all — e.g. the upstream text path ("No files indexed…").
|
|
31
|
+
return { ok: false, entries: [] };
|
|
32
|
+
}
|
|
33
|
+
}
|