peaks-loop 4.0.54 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +36 -0
- package/README-en.md +16 -1
- package/README.md +15 -1
- package/config/eslint/.peaks-rules.cjs +158 -13
- package/config/eslint/tsconfig.lint.json +47 -0
- package/dist/cli/cli-envelope.d.ts +114 -0
- package/dist/cli/cli-envelope.js +85 -0
- package/dist/cli/cli-helpers.d.ts +1 -1
- package/dist/cli/cli-helpers.js +8 -4
- package/dist/cli/commands/_cli-error-envelope.js +1 -1
- package/dist/cli/commands/_register.js +85 -38
- package/dist/cli/commands/_super.js +40 -7
- package/dist/cli/commands/adapter-commands-s2a.js +8 -7
- package/dist/cli/commands/adapter-commands.d.ts +2 -2
- package/dist/cli/commands/adapter-commands.js +7 -8
- package/dist/cli/commands/api-diff-commands.js +5 -4
- package/dist/cli/commands/asset-commands.d.ts +2 -2
- package/dist/cli/commands/asset-commands.js +135 -132
- package/dist/cli/commands/audit-commands.d.ts +1 -1
- package/dist/cli/commands/audit-commands.js +75 -32
- package/dist/cli/commands/autonomous-swarm-commands.d.ts +1 -1
- package/dist/cli/commands/autonomous-swarm-commands.js +14 -8
- package/dist/cli/commands/baseline-commands.js +34 -9
- package/dist/cli/commands/bee-commands.d.ts +1 -1
- package/dist/cli/commands/bee-commands.js +18 -21
- package/dist/cli/commands/best-practice-scan-command.js +6 -34
- package/dist/cli/commands/best-practice-scan-helpers.d.ts +12 -0
- package/dist/cli/commands/best-practice-scan-helpers.js +37 -0
- package/dist/cli/commands/capability-commands.d.ts +1 -1
- package/dist/cli/commands/capability-commands.js +14 -4
- package/dist/cli/commands/capability-worker-config-sc-commands.d.ts +1 -1
- package/dist/cli/commands/changeset-commands.js +21 -18
- package/dist/cli/commands/code-gate-command.js +9 -2
- package/dist/cli/commands/code-job-shape-commands-read-job-shape.d.ts +15 -0
- package/dist/cli/commands/code-job-shape-commands-read-job-shape.js +70 -0
- package/dist/cli/commands/code-job-shape-commands.js +21 -45
- package/dist/cli/commands/code-mode-gate-commands.d.ts +15 -1
- package/dist/cli/commands/code-mode-gate-commands.js +19 -199
- package/dist/cli/commands/code-mode-gate-plan-command.d.ts +14 -0
- package/dist/cli/commands/code-mode-gate-plan-command.js +23 -0
- package/dist/cli/commands/code-mode-gate-should-pause-command.d.ts +24 -0
- package/dist/cli/commands/code-mode-gate-should-pause-command.js +137 -0
- package/dist/cli/commands/code-mode-gate-should-pause-envelope.d.ts +59 -0
- package/dist/cli/commands/code-mode-gate-should-pause-envelope.js +144 -0
- package/dist/cli/commands/code-orchestrator-can-do.js +4 -4
- package/dist/cli/commands/code-review-commands.js +18 -3
- package/dist/cli/commands/code-run-command.js +44 -7
- package/dist/cli/commands/code-runtime-commands.d.ts +17 -0
- package/dist/cli/commands/code-runtime-commands.js +105 -73
- package/dist/cli/commands/codegraph-commands.js +11 -6
- package/dist/cli/commands/codegraph-status-command.js +6 -2
- package/dist/cli/commands/compact-command.js +52 -26
- package/dist/cli/commands/complexity-commands.js +6 -7
- package/dist/cli/commands/config-commands.d.ts +1 -1
- package/dist/cli/commands/config-commands.js +33 -9
- package/dist/cli/commands/container-commands.js +39 -15
- package/dist/cli/commands/context-commands.d.ts +1 -1
- package/dist/cli/commands/context-commands.js +40 -13
- package/dist/cli/commands/core/artifacts-command.js +11 -3
- package/dist/cli/commands/core/binding-commands.js +9 -6
- package/dist/cli/commands/core/doctor-command.js +7 -4
- package/dist/cli/commands/core/memory-command.js +47 -21
- package/dist/cli/commands/core/proxy-command.js +3 -1
- package/dist/cli/commands/core/session-command.js +16 -8
- package/dist/cli/commands/core/skill-command.js +31 -16
- package/dist/cli/commands/core/standards-command.js +55 -13
- package/dist/cli/commands/cron-commands-actions.d.ts +43 -0
- package/dist/cli/commands/cron-commands-actions.js +128 -0
- package/dist/cli/commands/cron-commands-schedule.d.ts +86 -0
- package/dist/cli/commands/cron-commands-schedule.js +151 -0
- package/dist/cli/commands/cron-commands.d.ts +35 -32
- package/dist/cli/commands/cron-commands.js +167 -211
- package/dist/cli/commands/cron-scheduler-commands.js +40 -20
- package/dist/cli/commands/cron-scheduler-persist.d.ts +110 -0
- package/dist/cli/commands/cron-scheduler-persist.js +171 -0
- package/dist/cli/commands/dashboard-long-run.js +45 -14
- package/dist/cli/commands/dashboard-summary.js +15 -5
- package/dist/cli/commands/dispatch-commands.js +65 -32
- package/dist/cli/commands/dispatch-from-dag.js +9 -10
- package/dist/cli/commands/doc-commands.js +8 -9
- package/dist/cli/commands/doctor/invoke-from-code.js +1 -1
- package/dist/cli/commands/e2e-verify-env.d.ts +19 -0
- package/dist/cli/commands/e2e-verify-env.js +19 -0
- package/dist/cli/commands/e2e-verify.d.ts +3 -14
- package/dist/cli/commands/e2e-verify.js +49 -29
- package/dist/cli/commands/ecc-commands.d.ts +1 -1
- package/dist/cli/commands/ecc-commands.js +8 -17
- package/dist/cli/commands/evidence-commands.js +10 -6
- package/dist/cli/commands/evolution-commands.d.ts +2 -2
- package/dist/cli/commands/evolution-commands.js +109 -115
- package/dist/cli/commands/feedback-commands-helpers.d.ts +22 -0
- package/dist/cli/commands/feedback-commands-helpers.js +33 -0
- package/dist/cli/commands/feedback-commands.js +15 -38
- package/dist/cli/commands/final-review-commands.d.ts +1 -1
- package/dist/cli/commands/final-review-commands.js +24 -22
- package/dist/cli/commands/fixture-commands.d.ts +1 -1
- package/dist/cli/commands/fixture-commands.js +17 -6
- package/dist/cli/commands/fork-commands-sync-verify.d.ts +12 -0
- package/dist/cli/commands/fork-commands-sync-verify.js +72 -0
- package/dist/cli/commands/fork-commands.js +19 -51
- package/dist/cli/commands/fresh-context-commands.js +3 -1
- package/dist/cli/commands/gate-commands-enforce.d.ts +82 -0
- package/dist/cli/commands/gate-commands-enforce.js +210 -0
- package/dist/cli/commands/gate-commands.d.ts +1 -1
- package/dist/cli/commands/gate-commands.js +85 -205
- package/dist/cli/commands/governance-classify-contract-commands.d.ts +1 -1
- package/dist/cli/commands/governance-classify-contract-commands.js +28 -17
- package/dist/cli/commands/heartbeat-commands-action.d.ts +7 -0
- package/dist/cli/commands/heartbeat-commands-action.js +192 -0
- package/dist/cli/commands/heartbeat-commands-validation.d.ts +57 -0
- package/dist/cli/commands/heartbeat-commands-validation.js +120 -0
- package/dist/cli/commands/heartbeat-commands.d.ts +27 -6
- package/dist/cli/commands/heartbeat-commands.js +19 -198
- package/dist/cli/commands/hook-handle.d.ts +1 -1
- package/dist/cli/commands/hook-handle.js +46 -13
- package/dist/cli/commands/hooks-commands.d.ts +1 -1
- package/dist/cli/commands/hooks-commands.js +18 -6
- package/dist/cli/commands/ide-commands.d.ts +1 -1
- package/dist/cli/commands/ide-commands.js +5 -3
- package/dist/cli/commands/impact-commands.js +8 -2
- package/dist/cli/commands/job-add-slice-command.d.ts +43 -0
- package/dist/cli/commands/job-add-slice-command.js +151 -0
- package/dist/cli/commands/job-commands.d.ts +64 -0
- package/dist/cli/commands/job-commands.js +134 -63
- package/dist/cli/commands/lease-metrics-commands-support.d.ts +73 -0
- package/dist/cli/commands/lease-metrics-commands-support.js +67 -0
- package/dist/cli/commands/lease-metrics-commands.d.ts +3 -44
- package/dist/cli/commands/lease-metrics-commands.js +21 -61
- package/dist/cli/commands/lease-stats-commands.d.ts +1 -1
- package/dist/cli/commands/lease-stats-commands.js +9 -6
- package/dist/cli/commands/lint-commands.d.ts +9 -3
- package/dist/cli/commands/lint-commands.js +15 -8
- package/dist/cli/commands/log-commands.d.ts +1 -1
- package/dist/cli/commands/log-commands.js +8 -6
- package/dist/cli/commands/loop-commands.d.ts +1 -1
- package/dist/cli/commands/loop-commands.js +50 -50
- package/dist/cli/commands/loop-eval-commands.d.ts +1 -1
- package/dist/cli/commands/loop-eval-commands.js +101 -30
- package/dist/cli/commands/memory-commands.js +21 -13
- package/dist/cli/commands/migrate-1-4-1-command.js +1 -1
- package/dist/cli/commands/migrate-v2-10-to-v2-11-command.js +2 -2
- package/dist/cli/commands/mut-commands-helpers.d.ts +30 -0
- package/dist/cli/commands/mut-commands-helpers.js +43 -0
- package/dist/cli/commands/mut-commands.js +16 -58
- package/dist/cli/commands/observability-commands-queries.d.ts +37 -0
- package/dist/cli/commands/observability-commands-queries.js +113 -0
- package/dist/cli/commands/observability-commands.d.ts +1 -1
- package/dist/cli/commands/observability-commands.js +7 -92
- package/dist/cli/commands/openspec-commands.d.ts +1 -1
- package/dist/cli/commands/openspec-commands.js +20 -8
- package/dist/cli/commands/outer-cache-commands.js +18 -7
- package/dist/cli/commands/perf-audit-commands.d.ts +1 -1
- package/dist/cli/commands/perf-audit-commands.js +12 -7
- package/dist/cli/commands/perf-commands.d.ts +1 -1
- package/dist/cli/commands/perf-commands.js +5 -5
- package/dist/cli/commands/playwright-commands.d.ts +1 -1
- package/dist/cli/commands/playwright-commands.js +20 -8
- package/dist/cli/commands/polyrepo-commands.js +21 -19
- package/dist/cli/commands/prd-blocks-commands.js +1 -3
- package/dist/cli/commands/prd-commands.d.ts +1 -1
- package/dist/cli/commands/prd-commands.js +8 -4
- package/dist/cli/commands/preferences-commands.js +13 -12
- package/dist/cli/commands/primer-command.js +5 -5
- package/dist/cli/commands/project-commands.d.ts +1 -1
- package/dist/cli/commands/project-commands.js +33 -9
- package/dist/cli/commands/qa-business-review-commands.js +16 -12
- package/dist/cli/commands/qa-commands.d.ts +1 -1
- package/dist/cli/commands/qa-commands.js +3 -5
- package/dist/cli/commands/release-commands.d.ts +3 -1
- package/dist/cli/commands/release-commands.js +33 -22
- package/dist/cli/commands/request-commands.js +47 -30
- package/dist/cli/commands/request-format-helpers.js +1 -1
- package/dist/cli/commands/retrospective-commands.d.ts +18 -11
- package/dist/cli/commands/retrospective-commands.js +24 -173
- package/dist/cli/commands/retrospective-index-command.d.ts +26 -0
- package/dist/cli/commands/retrospective-index-command.js +99 -0
- package/dist/cli/commands/retrospective-project-root.d.ts +9 -0
- package/dist/cli/commands/retrospective-project-root.js +15 -0
- package/dist/cli/commands/retrospective-search-command.d.ts +27 -0
- package/dist/cli/commands/retrospective-search-command.js +97 -0
- package/dist/cli/commands/retrospective-show-command.d.ts +23 -0
- package/dist/cli/commands/retrospective-show-command.js +80 -0
- package/dist/cli/commands/reviewer-commands.d.ts +1 -1
- package/dist/cli/commands/role-commands.js +14 -9
- package/dist/cli/commands/runtime-commands.js +14 -7
- package/dist/cli/commands/sc-commands.d.ts +1 -1
- package/dist/cli/commands/sc-commands.js +39 -6
- package/dist/cli/commands/scan-commands.js +36 -13
- package/dist/cli/commands/security-audit-commands.d.ts +1 -1
- package/dist/cli/commands/security-audit-commands.js +12 -7
- package/dist/cli/commands/sediment-commands.d.ts +2 -2
- package/dist/cli/commands/sediment-commands.js +146 -139
- package/dist/cli/commands/session-24h-mode.js +15 -2
- package/dist/cli/commands/session-checkpoint-command.js +1 -1
- package/dist/cli/commands/session-migrate-skill-name.js +1 -1
- package/dist/cli/commands/shadcn-commands.d.ts +1 -1
- package/dist/cli/commands/shadcn-commands.js +3 -1
- package/dist/cli/commands/share-commands.js +38 -39
- package/dist/cli/commands/skill-conformance-commands.d.ts +1 -1
- package/dist/cli/commands/skill-conformance-commands.js +1 -1
- package/dist/cli/commands/skill-loop-engineering-readiness-commands.js +16 -17
- package/dist/cli/commands/skill-visibility.js +2 -2
- package/dist/cli/commands/slice-commands.d.ts +1 -1
- package/dist/cli/commands/slice-commands.js +36 -12
- package/dist/cli/commands/slice-integrate-commands.js +6 -7
- package/dist/cli/commands/slice-review-commands-helpers.d.ts +26 -0
- package/dist/cli/commands/slice-review-commands-helpers.js +26 -0
- package/dist/cli/commands/slice-review-commands.js +16 -24
- package/dist/cli/commands/smoke-commands-add-path.d.ts +14 -0
- package/dist/cli/commands/smoke-commands-add-path.js +39 -0
- package/dist/cli/commands/smoke-commands-define.d.ts +18 -0
- package/dist/cli/commands/smoke-commands-define.js +97 -0
- package/dist/cli/commands/smoke-commands-run.d.ts +18 -0
- package/dist/cli/commands/smoke-commands-run.js +119 -0
- package/dist/cli/commands/smoke-commands.d.ts +10 -1
- package/dist/cli/commands/smoke-commands.js +17 -179
- package/dist/cli/commands/sop-commands.d.ts +1 -1
- package/dist/cli/commands/sop-commands.js +38 -10
- package/dist/cli/commands/statusline-commands.d.ts +1 -1
- package/dist/cli/commands/statusline-commands.js +21 -10
- package/dist/cli/commands/sub-agent/detached.js +3 -3
- package/dist/cli/commands/sub-agent-dispatch-guard.d.ts +1 -1
- package/dist/cli/commands/sub-agent-shared.js +1 -1
- package/dist/cli/commands/sub-agent-shutdown-commands.js +17 -9
- package/dist/cli/commands/swarm-commands.d.ts +1 -1
- package/dist/cli/commands/swarm-commands.js +13 -6
- package/dist/cli/commands/tech-commands-helpers.d.ts +37 -0
- package/dist/cli/commands/tech-commands-helpers.js +24 -0
- package/dist/cli/commands/tech-commands.d.ts +2 -29
- package/dist/cli/commands/tech-commands.js +15 -28
- package/dist/cli/commands/test-commands.js +27 -7
- package/dist/cli/commands/upgrade-commands.d.ts +1 -1
- package/dist/cli/commands/user-touchpoint-commands.js +1 -3
- package/dist/cli/commands/verdict-aggregate-command.d.ts +1 -1
- package/dist/cli/commands/verdict-aggregate-command.js +20 -7
- package/dist/cli/commands/vm-commands.js +48 -19
- package/dist/cli/commands/wave-plan-commands.js +5 -2
- package/dist/cli/commands/web-commands.js +14 -4
- package/dist/cli/commands/web-lifecycle-commands.js +5 -3
- package/dist/cli/commands/workflow-commands.d.ts +1 -1
- package/dist/cli/commands/workflow-commands.js +64 -29
- package/dist/cli/commands/workflow-lifecycle-commands.js +19 -17
- package/dist/cli/commands/workflow-plan-commands-actions.d.ts +20 -0
- package/dist/cli/commands/workflow-plan-commands-actions.js +115 -0
- package/dist/cli/commands/workflow-plan-commands-session.d.ts +17 -0
- package/dist/cli/commands/workflow-plan-commands-session.js +59 -0
- package/dist/cli/commands/workflow-plan-commands.d.ts +10 -21
- package/dist/cli/commands/workflow-plan-commands.js +15 -141
- package/dist/cli/commands/workspace/clean-command.js +4 -1
- package/dist/cli/commands/workspace/helpers.js +2 -1
- package/dist/cli/commands/workspace/init-command.js +80 -20
- package/dist/cli/commands/workspace/reconcile-command.js +3 -1
- package/dist/cli/commands/workspace-commands.d.ts +1 -1
- package/dist/cli/commands/workspace-commands.js +1 -1
- package/dist/cli/commands/worktree-auth-commands.d.ts +1 -1
- package/dist/cli/commands/worktree-auth-commands.js +16 -169
- package/dist/cli/commands/worktree-auth-grant-command.d.ts +14 -0
- package/dist/cli/commands/worktree-auth-grant-command.js +118 -0
- package/dist/cli/commands/worktree-auth-manage-commands.d.ts +17 -0
- package/dist/cli/commands/worktree-auth-manage-commands.js +128 -0
- package/dist/cli/commands/worktree-lease-commands.d.ts +1 -1
- package/dist/cli/commands/worktree-lease-commands.js +65 -37
- package/dist/cli/index.js +6 -2
- package/dist/cli/program.js +6 -3
- package/dist/hooks/pre-tool-use-sub-agent.js +1 -6
- package/dist/reporters/bdd-reporter.js +9 -3
- package/dist/services/24h-mode/auto-engage.d.ts +19 -0
- package/dist/services/24h-mode/auto-engage.js +35 -0
- package/dist/services/24h-mode/decider.js +5 -1
- package/dist/services/24h-mode/store.js +4 -2
- package/dist/services/adapter/adapter-registry.js +20 -8
- package/dist/services/adapter/adapter.d.ts +2 -2
- package/dist/services/adapter/auto-adapter.d.ts +2 -2
- package/dist/services/adapter/auto-adapter.js +1 -1
- package/dist/services/adapter/claude-adapter.d.ts +1 -1
- package/dist/services/adapter/claude-adapter.js +8 -8
- package/dist/services/adapter/codex-adapter.d.ts +2 -2
- package/dist/services/adapter/codex-adapter.js +20 -8
- package/dist/services/adapter/copilot-adapter.d.ts +2 -2
- package/dist/services/adapter/copilot-adapter.js +20 -8
- package/dist/services/artifacts/artifact-prerequisites.js +10 -8
- package/dist/services/artifacts/artifact-service.js +3 -1
- package/dist/services/artifacts/artifact-template-bodies.d.ts +12 -0
- package/dist/services/artifacts/artifact-template-bodies.js +165 -0
- package/dist/services/artifacts/artifact-templates.js +26 -168
- package/dist/services/artifacts/request-artifact-service.js +14 -7
- package/dist/services/artifacts/request-artifact-state-helpers.d.ts +3 -2
- package/dist/services/artifacts/request-artifact-state-helpers.js +3 -5
- package/dist/services/artifacts/workspace-artifact-helpers.d.ts +28 -0
- package/dist/services/artifacts/workspace-artifact-helpers.js +54 -0
- package/dist/services/artifacts/workspace-service.d.ts +3 -22
- package/dist/services/artifacts/workspace-service.js +10 -60
- package/dist/services/audit/artifact-writer.js +21 -21
- package/dist/services/audit/audit-goal-service.js +2 -2
- package/dist/services/audit/backing-detector.js +7 -4
- package/dist/services/audit/classifier.js +3 -3
- package/dist/services/audit/decision-writer.js +13 -9
- package/dist/services/audit/enforcers/active-skill-resolver.js +15 -7
- package/dist/services/audit/enforcers/design-draft-confirm.js +4 -4
- package/dist/services/audit/enforcers/lint-audit-regression.js +10 -5
- package/dist/services/audit/enforcers/lint-bee-runtime-contract.js +16 -8
- package/dist/services/audit/enforcers/lint-catalog-governance.js +8 -4
- package/dist/services/audit/enforcers/lint-output-style.js +4 -2
- package/dist/services/audit/enforcers/lint-peaks-code-runtime.js +8 -3
- package/dist/services/audit/enforcers/lint-peaks-skill-runtime.js +8 -3
- package/dist/services/audit/enforcers/lint-peaks-ui-sc-txt-runtime.js +20 -20
- package/dist/services/audit/enforcers/lint-prd-artifact-handoff.js +5 -5
- package/dist/services/audit/enforcers/lint-prd-source-snapshot.d.ts +1 -1
- package/dist/services/audit/enforcers/lint-prd-source-snapshot.js +5 -5
- package/dist/services/audit/enforcers/lint-qa-gateguard-and-runtime.js +10 -10
- package/dist/services/audit/enforcers/lint-rd-handoff-coverage.js +10 -8
- package/dist/services/audit/enforcers/lint-reference-shape.js +50 -18
- package/dist/services/audit/enforcers/lint-skill-presence-mandatory.js +5 -5
- package/dist/services/audit/enforcers/lint-style.js +44 -11
- package/dist/services/audit/enforcers/lint-workflow-shape.js +4 -2
- package/dist/services/audit/enforcers/login-gate.js +2 -6
- package/dist/services/audit/enforcers/mock-placement.js +2 -2
- package/dist/services/audit/enforcers/no-root-pollution.js +38 -9
- package/dist/services/audit/enforcers/pre-rd-scan.js +1 -1
- package/dist/services/audit/enforcers/prototype-fidelity.js +1 -1
- package/dist/services/audit/enforcers/resume-detection.js +5 -4
- package/dist/services/audit/prose-ratio-calculator.js +1 -1
- package/dist/services/audit/red-line-catalog-p2-a-bee-runtime.d.ts +39 -0
- package/dist/services/audit/red-line-catalog-p2-a-bee-runtime.js +205 -0
- package/dist/services/audit/red-line-catalog-p2-a-lint-style.d.ts +52 -0
- package/dist/services/audit/red-line-catalog-p2-a-lint-style.js +205 -0
- package/dist/services/audit/red-line-catalog-p2-a.js +3 -374
- package/dist/services/audit/red-line-catalog-p2-b.js +26 -26
- package/dist/services/audit/red-line-catalog.js +26 -38
- package/dist/services/audit/red-lines-service.js +64 -49
- package/dist/services/audit/scanners/openspec-scanner.js +2 -2
- package/dist/services/audit/scanners/rules-tree-scanner.js +2 -2
- package/dist/services/audit/scanners/skills-tree-scanner.js +2 -2
- package/dist/services/audit/static-service.js +3 -3
- package/dist/services/audit-independent/index.d.ts +2 -2
- package/dist/services/audit-independent/index.js +2 -2
- package/dist/services/audit-independent/perf-audit-service.js +19 -8
- package/dist/services/audit-independent/security-audit-service.js +31 -16
- package/dist/services/autonomous-swarm/autonomous-swarm-service.js +75 -46
- package/dist/services/best-practice/output-formatter.js +7 -1
- package/dist/services/capability-audit-service/cross-check.js +11 -5
- package/dist/services/capability-audit-service/runner.js +15 -7
- package/dist/services/capability-baseline/store.js +16 -4
- package/dist/services/capability-baseline/types.js +15 -3
- package/dist/services/capability-baseline/validator.js +43 -7
- package/dist/services/capability-guard-runner/contracts/J02.js +36 -6
- package/dist/services/capability-guard-runner/contracts/J03.js +20 -11
- package/dist/services/capability-guard-runner/contracts/J04.js +24 -15
- package/dist/services/capability-guard-runner/contracts/J05.js +26 -10
- package/dist/services/capability-guard-runner/contracts/J07.js +8 -2
- package/dist/services/capability-guard-runner/contracts/J08.js +22 -5
- package/dist/services/capability-guard-runner/contracts/J10.js +6 -2
- package/dist/services/capability-guard-runner/contracts/J11.d.ts +5 -0
- package/dist/services/capability-guard-runner/contracts/J11.js +14 -2
- package/dist/services/capability-guard-runner/contracts/J12.js +12 -3
- package/dist/services/capability-guard-runner/diff.js +1 -5
- package/dist/services/changeset/changeset-check-service.js +1 -3
- package/dist/services/classify/classify-service.js +20 -8
- package/dist/services/classify/classify-types.js +22 -9
- package/dist/services/code/auto-compact-lifecycle.js +62 -39
- package/dist/services/code/auto-compact-modes.js +2 -2
- package/dist/services/code/auto-compact-orchestrator.js +14 -9
- package/dist/services/code/batch-heartbeat-poller.d.ts +10 -0
- package/dist/services/code/batch-heartbeat-poller.js +17 -1
- package/dist/services/code/compact-event-settle-types.d.ts +80 -0
- package/dist/services/code/compact-event-settle-types.js +20 -0
- package/dist/services/code/compact-event-settle.d.ts +3 -68
- package/dist/services/code/compact-event-settle.js +14 -10
- package/dist/services/code/dag-orchestrator.js +32 -26
- package/dist/services/code/job-shape-decision.js +3 -1
- package/dist/services/code/mode-gate-types.d.ts +57 -0
- package/dist/services/code/mode-gate-types.js +67 -0
- package/dist/services/code/mode-gate.d.ts +4 -58
- package/dist/services/code/mode-gate.js +24 -60
- package/dist/services/code/orchestrator-can-do-advisories.d.ts +30 -0
- package/dist/services/code/orchestrator-can-do-advisories.js +81 -0
- package/dist/services/code/orchestrator-can-do-probes.d.ts +30 -0
- package/dist/services/code/orchestrator-can-do-probes.js +77 -0
- package/dist/services/code/orchestrator-can-do.d.ts +11 -22
- package/dist/services/code/orchestrator-can-do.js +37 -137
- package/dist/services/code/post-compact-checkpoint.d.ts +28 -0
- package/dist/services/code/post-compact-checkpoint.js +57 -0
- package/dist/services/code/post-compact-detector.js +16 -48
- package/dist/services/code/step-08-gate.d.ts +4 -3
- package/dist/services/code/step-08-gate.js +21 -9
- package/dist/services/code-review/ecc-bridge.js +23 -23
- package/dist/services/codegraph/codegraph-autorefresh.js +56 -39
- package/dist/services/codegraph/codegraph-config-repair-writer.js +4 -1
- package/dist/services/codegraph/codegraph-exclude-integrity.js +4 -1
- package/dist/services/codegraph/codegraph-exclude-repair.js +1 -2
- package/dist/services/codegraph/codegraph-index-integrity.js +1 -1
- package/dist/services/codegraph/codegraph-preflight-service.d.ts +3 -26
- package/dist/services/codegraph/codegraph-preflight-service.js +16 -37
- package/dist/services/codegraph/codegraph-preflight-structure.d.ts +32 -0
- package/dist/services/codegraph/codegraph-preflight-structure.js +33 -0
- package/dist/services/codegraph/codegraph-process-runner.js +12 -1
- package/dist/services/codegraph/codegraph-service.js +9 -1
- package/dist/services/compact/request-transition-hook.js +2 -1
- package/dist/services/compact/suggest-service.d.ts +3 -61
- package/dist/services/compact/suggest-service.js +9 -12
- package/dist/services/compact/suggest-types.d.ts +76 -0
- package/dist/services/compact/suggest-types.js +10 -0
- package/dist/services/compact-history/compact-history-service.js +2 -2
- package/dist/services/compact-statusline/compact-lifecycle-store.d.ts +2 -32
- package/dist/services/compact-statusline/compact-lifecycle-store.js +7 -12
- package/dist/services/compact-statusline/compact-lifecycle-types.d.ts +32 -0
- package/dist/services/compact-statusline/compact-lifecycle-types.js +8 -0
- package/dist/services/compact-statusline/compact-statusline-cell-table.d.ts +42 -0
- package/dist/services/compact-statusline/compact-statusline-cell-table.js +63 -0
- package/dist/services/compact-statusline/compact-statusline-service.d.ts +4 -21
- package/dist/services/compact-statusline/compact-statusline-service.js +9 -101
- package/dist/services/compact-statusline/compact-statusline-state.d.ts +4 -0
- package/dist/services/compact-statusline/compact-statusline-state.js +50 -0
- package/dist/services/config/config-migration.js +2 -2
- package/dist/services/config/config-restore.js +1 -1
- package/dist/services/config/config-rollback.js +1 -1
- package/dist/services/config/config-safety.js +28 -10
- package/dist/services/config/config-service.js +114 -31
- package/dist/services/config/model-routing.js +5 -2
- package/dist/services/config/proxy-service.js +6 -1
- package/dist/services/config/workspace-state-service.js +17 -5
- package/dist/services/context/auto-compact-dispatcher-input.d.ts +38 -0
- package/dist/services/context/auto-compact-dispatcher-input.js +9 -0
- package/dist/services/context/auto-compact-dispatcher.d.ts +2 -30
- package/dist/services/context/auto-compact-reader-input.d.ts +30 -0
- package/dist/services/context/auto-compact-reader-input.js +8 -0
- package/dist/services/context/auto-compact-reader.d.ts +2 -24
- package/dist/services/context/auto-compact-reader.js +4 -1
- package/dist/services/context/auto-compact-thresholds.d.ts +54 -0
- package/dist/services/context/auto-compact-thresholds.js +19 -0
- package/dist/services/context/auto-compact-types.d.ts +2 -46
- package/dist/services/context/auto-compact-types.js +1 -11
- package/dist/services/context/build-dispatch-system-prompt.js +2 -2
- package/dist/services/context/collector.js +8 -10
- package/dist/services/context/context-audit-hint.js +7 -5
- package/dist/services/context/context-audit-keys.d.ts +15 -0
- package/dist/services/context/context-audit-keys.js +77 -0
- package/dist/services/context/context-audit-limits.d.ts +20 -0
- package/dist/services/context/context-audit-limits.js +31 -0
- package/dist/services/context/context-audit-scan.d.ts +19 -0
- package/dist/services/context/context-audit-scan.js +246 -0
- package/dist/services/context/context-audit-types.d.ts +65 -0
- package/dist/services/context/context-audit-types.js +10 -0
- package/dist/services/context/context-audit.d.ts +13 -59
- package/dist/services/context/context-audit.js +38 -254
- package/dist/services/context/context-builder.js +4 -4
- package/dist/services/context/context-schema.d.ts +1 -1
- package/dist/services/context/context-schema.js +13 -13
- package/dist/services/context/doc-retriever.js +2 -2
- package/dist/services/context/harness-context-witness.js +43 -24
- package/dist/services/context/harness-window-config.js +27 -7
- package/dist/services/context/ide-detect.js +2 -1
- package/dist/services/context/index.d.ts +1 -1
- package/dist/services/context/memory-index-reader.js +3 -9
- package/dist/services/context/memory-preflight-config.js +3 -5
- package/dist/services/context/memory-preflight-service.d.ts +2 -20
- package/dist/services/context/memory-preflight-service.js +37 -68
- package/dist/services/context/memory-preflight-support.d.ts +48 -0
- package/dist/services/context/memory-preflight-support.js +56 -0
- package/dist/services/context/post-compact-reinjection.js +3 -3
- package/dist/services/context/renderer.js +7 -3
- package/dist/services/context/spillover-store.js +3 -1
- package/dist/services/context/summary-view.js +1 -1
- package/dist/services/context/threshold.js +2 -2
- package/dist/services/context/tokenizer.js +3 -3
- package/dist/services/crystallization/crystallization-brief-schema.d.ts +80 -0
- package/dist/services/crystallization/crystallization-brief-schema.js +159 -0
- package/dist/services/crystallization/crystallization-service.d.ts +7 -7
- package/dist/services/crystallization/crystallization-service.js +56 -55
- package/dist/services/crystallization/crystallization-store.d.ts +2 -2
- package/dist/services/crystallization/crystallization-store.js +37 -20
- package/dist/services/crystallization/crystallization-types.d.ts +4 -56
- package/dist/services/crystallization/crystallization-types.js +31 -184
- package/dist/services/crystallization/evidence-brief-builder.d.ts +3 -3
- package/dist/services/crystallization/evidence-brief-builder.js +32 -38
- package/dist/services/crystallization/index.d.ts +4 -4
- package/dist/services/crystallization/index.js +4 -4
- package/dist/services/dashboard/project-dashboard-service.js +7 -1
- package/dist/services/dispatch/await-batch-helpers.d.ts +55 -0
- package/dist/services/dispatch/await-batch-helpers.js +206 -0
- package/dist/services/dispatch/await-batch.d.ts +50 -7
- package/dist/services/dispatch/await-batch.js +97 -194
- package/dist/services/dispatch/batch-counter.js +2 -1
- package/dist/services/dispatch/conflict-replay.js +2 -2
- package/dist/services/dispatch/contract-store.js +5 -2
- package/dist/services/dispatch/dispatch-record-input-types.d.ts +81 -0
- package/dist/services/dispatch/dispatch-record-input-types.js +1 -0
- package/dist/services/dispatch/dispatch-record-types.d.ts +6 -73
- package/dist/services/dispatch/dispatch-record-upgrade-fields.d.ts +72 -0
- package/dist/services/dispatch/dispatch-record-upgrade-fields.js +242 -0
- package/dist/services/dispatch/dispatch-record-upgrade-guards.d.ts +15 -0
- package/dist/services/dispatch/dispatch-record-upgrade-guards.js +55 -0
- package/dist/services/dispatch/dispatch-record-upgrade.d.ts +2 -4
- package/dist/services/dispatch/dispatch-record-upgrade.js +21 -213
- package/dist/services/dispatch/dispatch-record-writer.js +54 -26
- package/dist/services/dispatch/dispatch-sub-agent.js +7 -2
- package/dist/services/dispatch/e2e-fixtures.js +1 -1
- package/dist/services/dispatch/isolation-lease.js +39 -17
- package/dist/services/dispatch/merge-back-runner.js +51 -11
- package/dist/services/dispatch/service-shutdown.js +4 -1
- package/dist/services/dispatch/slice-dag-types.d.ts +116 -0
- package/dist/services/dispatch/slice-dag-types.js +41 -0
- package/dist/services/dispatch/slice-dag.d.ts +3 -109
- package/dist/services/dispatch/slice-dag.js +13 -36
- package/dist/services/dispatch/sub-agent-batch-await.d.ts +47 -0
- package/dist/services/dispatch/sub-agent-batch-await.js +73 -0
- package/dist/services/dispatch/sub-agent-dispatcher-types.d.ts +122 -0
- package/dist/services/dispatch/sub-agent-dispatcher-types.js +12 -0
- package/dist/services/dispatch/sub-agent-dispatcher.d.ts +3 -145
- package/dist/services/dispatch/sub-agent-dispatcher.js +14 -70
- package/dist/services/dispatch/test-tool-detection.js +12 -1
- package/dist/services/doc/doc-generator.js +19 -4
- package/dist/services/doctor/doctor-service/checks/check-id-schema.js +16 -8
- package/dist/services/doctor/doctor-service/checks/codegraph-capability.d.ts +7 -2
- package/dist/services/doctor/doctor-service/checks/codegraph-capability.js +26 -8
- package/dist/services/doctor/doctor-service/checks/codegraph-exclude-integrity.js +16 -8
- package/dist/services/doctor/doctor-service/checks/codegraph-index-integrity.js +16 -8
- package/dist/services/doctor/doctor-service/checks/dist-source-version.js +18 -9
- package/dist/services/doctor/doctor-service/checks/ecc-hooks-schema-drift.js +20 -10
- package/dist/services/doctor/doctor-service/checks/gateguard-conflict.js +18 -9
- package/dist/services/doctor/doctor-service/checks/l3-memory-health.js +25 -11
- package/dist/services/doctor/doctor-service/checks/l3-orphan-sessions.js +12 -6
- package/dist/services/doctor/doctor-service/checks/multi-binary-drift.d.ts +7 -16
- package/dist/services/doctor/doctor-service/checks/multi-binary-drift.js +50 -70
- package/dist/services/doctor/doctor-service/checks/schema-validity.js +5 -1
- package/dist/services/doctor/doctor-service/checks/skill-presence.js +4 -2
- package/dist/services/doctor/doctor-service/checks/statusline-install.js +8 -4
- package/dist/services/doctor/doctor-service/checks/statusline-runtime.js +8 -4
- package/dist/services/doctor/doctor-service/checks/user-config.js +4 -2
- package/dist/services/doctor/doctor-service/checks/workspace-init.js +8 -4
- package/dist/services/doctor/doctor-service/checks/workspace-layout.js +19 -11
- package/dist/services/doctor/doctor-service/index.js +4 -2
- package/dist/services/doctor/doctor-service/multi-binary-drift-helpers.d.ts +40 -0
- package/dist/services/doctor/doctor-service/multi-binary-drift-helpers.js +49 -0
- package/dist/services/doctor/doctor-service/plugin-registry.js +1 -1
- package/dist/services/doctor/doctor-service/probe-types.d.ts +210 -0
- package/dist/services/doctor/doctor-service/probe-types.js +14 -0
- package/dist/services/doctor/doctor-service/types.d.ts +7 -197
- package/dist/services/doctor/index.d.ts +1 -1
- package/dist/services/doctor/index.js +1 -1
- package/dist/services/env/shell-probe.js +8 -2
- package/dist/services/evidence/evidence-body-builders.d.ts +23 -0
- package/dist/services/evidence/evidence-body-builders.js +197 -0
- package/dist/services/evidence/evidence-generator.js +6 -187
- package/dist/services/evolution/evolution-constraints.d.ts +43 -0
- package/dist/services/evolution/evolution-constraints.js +54 -0
- package/dist/services/evolution/evolution-evaluation-schema.d.ts +43 -0
- package/dist/services/evolution/evolution-evaluation-schema.js +43 -0
- package/dist/services/evolution/evolution-service.d.ts +6 -6
- package/dist/services/evolution/evolution-service.js +58 -58
- package/dist/services/evolution/evolution-store.d.ts +2 -2
- package/dist/services/evolution/evolution-store.js +37 -51
- package/dist/services/evolution/evolution-types.d.ts +2 -22
- package/dist/services/evolution/evolution-types.js +41 -101
- package/dist/services/evolution/independent-evaluator-runner.d.ts +3 -3
- package/dist/services/evolution/independent-evaluator-runner.js +20 -22
- package/dist/services/evolution/regression-skeptic-runner.d.ts +2 -2
- package/dist/services/evolution/regression-skeptic-runner.js +18 -18
- package/dist/services/feedback/feedback-promotion-service.js +48 -12
- package/dist/services/feedback/promotion-artifact-evidence.d.ts +2 -16
- package/dist/services/feedback/promotion-artifact-evidence.js +6 -83
- package/dist/services/feedback/promotion-artifact-json-evidence.d.ts +29 -0
- package/dist/services/feedback/promotion-artifact-json-evidence.js +39 -0
- package/dist/services/feedback/promotion-source-comments.d.ts +47 -0
- package/dist/services/feedback/promotion-source-comments.js +61 -0
- package/dist/services/final-review/final-review-contract.d.ts +26 -0
- package/dist/services/final-review/final-review-contract.js +14 -0
- package/dist/services/final-review/final-review-delivery.d.ts +63 -0
- package/dist/services/final-review/final-review-delivery.js +124 -0
- package/dist/services/final-review/final-review-evidence-budget.d.ts +125 -0
- package/dist/services/final-review/final-review-evidence-budget.js +218 -0
- package/dist/services/final-review/final-review-evidence-collect.d.ts +4 -0
- package/dist/services/final-review/final-review-evidence-collect.js +230 -0
- package/dist/services/final-review/final-review-evidence-sources.d.ts +138 -0
- package/dist/services/final-review/final-review-evidence-sources.js +139 -0
- package/dist/services/final-review/final-review-fifth-dim.d.ts +8 -0
- package/dist/services/final-review/final-review-fifth-dim.js +20 -0
- package/dist/services/final-review/final-review-gates.d.ts +119 -0
- package/dist/services/final-review/final-review-gates.js +214 -0
- package/dist/services/final-review/final-review-output-budget.d.ts +88 -0
- package/dist/services/final-review/final-review-output-budget.js +161 -0
- package/dist/services/final-review/final-review-prompt.d.ts +35 -0
- package/dist/services/final-review/final-review-prompt.js +112 -0
- package/dist/services/final-review/final-review-reviewer.d.ts +57 -0
- package/dist/services/final-review/final-review-reviewer.js +95 -0
- package/dist/services/final-review/final-review-runner.d.ts +3 -0
- package/dist/services/final-review/final-review-runner.js +158 -0
- package/dist/services/final-review/final-review-service.d.ts +119 -373
- package/dist/services/final-review/final-review-service.js +48 -1380
- package/dist/services/final-review/final-review-verdicts.d.ts +60 -0
- package/dist/services/final-review/final-review-verdicts.js +91 -0
- package/dist/services/final-review/index.d.ts +3 -3
- package/dist/services/final-review/index.js +2 -2
- package/dist/services/final-review/pre-post-diff.js +32 -29
- package/dist/services/fixture/fixture-capture-service.js +14 -6
- package/dist/services/fresh-context/trigger-scan.js +13 -2
- package/dist/services/fuzzy-matching/fuzzy-match-service.js +1 -1
- package/dist/services/fuzzy-matching/fzf-pick-service.js +6 -1
- package/dist/services/hooks/pre-tool-code-gate.js +2 -2
- package/dist/services/hooks/presence-marker-detector.js +12 -2
- package/dist/services/hooks/worktree-authorization-gate.js +21 -7
- package/dist/services/ide/adapters/claude-code-adapter.js +30 -17
- package/dist/services/ide/adapters/codex-adapter.js +3 -5
- package/dist/services/ide/adapters/cursor-adapter.js +3 -5
- package/dist/services/ide/adapters/hermes-adapter.js +2 -4
- package/dist/services/ide/adapters/openclaw-adapter.js +2 -4
- package/dist/services/ide/adapters/qoder-adapter.js +2 -4
- package/dist/services/ide/adapters/tongyi-lingma-adapter.js +1 -1
- package/dist/services/ide/adapters/trae-adapter.js +3 -5
- package/dist/services/ide/adapters/zcode-adapter.js +8 -7
- package/dist/services/ide/current-model-detector.js +2 -1
- package/dist/services/ide/ide-compact-types.d.ts +153 -0
- package/dist/services/ide/ide-compact-types.js +1 -0
- package/dist/services/ide/ide-registry.js +1 -1
- package/dist/services/ide/ide-types.d.ts +7 -145
- package/dist/services/ide/resource-profile.js +1 -1
- package/dist/services/ide/shared/atomic-json.js +2 -1
- package/dist/services/impact/impact-scan-service.js +12 -5
- package/dist/services/job/job-commit-verification.d.ts +73 -0
- package/dist/services/job/job-commit-verification.js +72 -0
- package/dist/services/job/job-orchestrator.d.ts +42 -0
- package/dist/services/job/job-orchestrator.js +110 -10
- package/dist/services/job/job-progress-store.d.ts +75 -5
- package/dist/services/job/job-progress-store.js +83 -6
- package/dist/services/job/job-rotation.d.ts +1 -1
- package/dist/services/job/job-rotation.js +5 -1
- package/dist/services/job/job-state-store.js +2 -2
- package/dist/services/job/job-types.js +49 -20
- package/dist/services/job/subagent-job-wrapper.d.ts +1 -1
- package/dist/services/job/subagent-job-wrapper.js +5 -1
- package/dist/services/job-snapshot/snapshot.js +2 -2
- package/dist/services/karpathy-cost/karpathy-cost-check-service.js +23 -13
- package/dist/services/legacy/legacy-detector.js +51 -5
- package/dist/services/lint/detect-eslint.js +10 -4
- package/dist/services/lint/detect-ocr-18.js +11 -3
- package/dist/services/lint/eslint-runner-support.d.ts +22 -0
- package/dist/services/lint/eslint-runner-support.js +185 -0
- package/dist/services/lint/eslint-runner-types.d.ts +69 -0
- package/dist/services/lint/eslint-runner-types.js +11 -0
- package/dist/services/lint/eslint-runner.d.ts +4 -56
- package/dist/services/lint/eslint-runner.js +24 -178
- package/dist/services/lint/npx-resolver.js +1 -3
- package/dist/services/lint/ocr-18-acquire.js +15 -4
- package/dist/services/lint/ocr-multilang-adapter.js +4 -5
- package/dist/services/llm/anthropic-runner.js +4 -1
- package/dist/services/log/log-commands-service.js +2 -6
- package/dist/services/log/logger.js +15 -12
- package/dist/services/log/retention.js +3 -2
- package/dist/services/loop/evaluator-dispatcher.js +78 -42
- package/dist/services/loop/loop-bee-relation-service.d.ts +4 -4
- package/dist/services/loop/loop-bee-relation-service.js +36 -40
- package/dist/services/loop/loop-bee-relation-store.d.ts +3 -3
- package/dist/services/loop/loop-bee-relation-store.js +9 -11
- package/dist/services/loop/loop-bee-relation-types.d.ts +1 -1
- package/dist/services/loop/loop-bee-relation-types.js +14 -25
- package/dist/services/loop/loop-release-service.d.ts +2 -2
- package/dist/services/loop/loop-release-service.js +3 -3
- package/dist/services/loop/loop-release-store.d.ts +2 -2
- package/dist/services/loop/loop-release-store.js +4 -6
- package/dist/services/loop/loop-release-types.d.ts +1 -1
- package/dist/services/loop/loop-release-types.js +21 -31
- package/dist/services/loop/monotonic-guard-types.d.ts +51 -0
- package/dist/services/loop/monotonic-guard-types.js +9 -0
- package/dist/services/loop/monotonic-guard.d.ts +2 -43
- package/dist/services/loop/monotonic-runner-types.d.ts +63 -0
- package/dist/services/loop/monotonic-runner-types.js +17 -0
- package/dist/services/loop/monotonic-runner.d.ts +3 -34
- package/dist/services/loop/monotonic-runner.js +10 -20
- package/dist/services/loop/run-driver.js +16 -8
- package/dist/services/loop/spec-service.d.ts +0 -5
- package/dist/services/loop/spec-service.js +49 -9
- package/dist/services/memory/llm-reranker-core.d.ts +108 -0
- package/dist/services/memory/llm-reranker-core.js +105 -0
- package/dist/services/memory/llm-reranker.d.ts +3 -94
- package/dist/services/memory/llm-reranker.js +13 -102
- package/dist/services/memory/memory-ingest-service.d.ts +1 -22
- package/dist/services/memory/memory-ingest-service.js +29 -76
- package/dist/services/memory/memory-ingest-support.d.ts +23 -0
- package/dist/services/memory/memory-ingest-support.js +81 -0
- package/dist/services/memory/memory-rotate-service.js +41 -8
- package/dist/services/memory/memory-search-service.js +8 -4
- package/dist/services/memory/project-context-service.js +26 -5
- package/dist/services/memory/project-memory-service/index/kind-dispatch.d.ts +2 -7
- package/dist/services/memory/project-memory-service/index/kind-dispatch.js +17 -136
- package/dist/services/memory/project-memory-service/index/project-memory-plan-exec.d.ts +7 -0
- package/dist/services/memory/project-memory-service/index/project-memory-plan-exec.js +150 -0
- package/dist/services/memory/project-memory-service/index/ranking.js +6 -3
- package/dist/services/memory/project-memory-service/index/reindex.js +14 -5
- package/dist/services/memory/project-memory-service/memory-kinds.d.ts +31 -0
- package/dist/services/memory/project-memory-service/memory-kinds.js +87 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter-parse.d.ts +24 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter-parse.js +104 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter.d.ts +2 -24
- package/dist/services/memory/project-memory-service/parsers/frontmatter.js +28 -79
- package/dist/services/memory/project-memory-service/parsers/markdown-pure.js +15 -3
- package/dist/services/memory/project-memory-service/store/atomic-write.js +34 -22
- package/dist/services/memory/project-memory-service/store/paths.js +2 -1
- package/dist/services/memory/project-memory-service/types.d.ts +3 -31
- package/dist/services/memory/project-memory-service/types.js +1 -76
- package/dist/services/migrate-skill-name/migrate.js +1 -1
- package/dist/services/migrate-skill-name/schema.js +1 -1
- package/dist/services/mode/mode-enforcement.js +4 -2
- package/dist/services/mode/mode-status-service.d.ts +27 -9
- package/dist/services/mode/mode-status-service.js +64 -12
- package/dist/services/observability/aggregation-helpers.d.ts +22 -0
- package/dist/services/observability/aggregation-helpers.js +65 -0
- package/dist/services/observability/aggregation-types.d.ts +66 -0
- package/dist/services/observability/aggregation-types.js +34 -0
- package/dist/services/observability/aggregation.d.ts +5 -53
- package/dist/services/observability/aggregation.js +17 -80
- package/dist/services/observability/jsonl-store.js +2 -1
- package/dist/services/observability/observability-schema.d.ts +71 -0
- package/dist/services/observability/observability-schema.js +64 -0
- package/dist/services/observability/observability-service.d.ts +3 -56
- package/dist/services/observability/observability-service.js +9 -49
- package/dist/services/openspec/coverage-evidence-reader.js +18 -11
- package/dist/services/openspec/openspec-archive-service.js +31 -24
- package/dist/services/openspec/openspec-init-service.js +8 -2
- package/dist/services/openspec/openspec-propose-from-doctor-service.js +1 -1
- package/dist/services/openspec/openspec-scan-service.js +4 -1
- package/dist/services/openspec/openspec-validate-service.js +26 -5
- package/dist/services/perf/perf-baseline-service.js +2 -6
- package/dist/services/polyrepo/polyrepo-dispatcher.js +2 -1
- package/dist/services/polyrepo/polyrepo-scanner.js +4 -1
- package/dist/services/prd/handoff-frontmatter-shape.d.ts +42 -0
- package/dist/services/prd/handoff-frontmatter-shape.js +67 -0
- package/dist/services/prd/handoff-frontmatter.js +1 -1
- package/dist/services/prd/handoff-path-resolution.d.ts +37 -0
- package/dist/services/prd/handoff-path-resolution.js +101 -0
- package/dist/services/prd/handoff-service.d.ts +1 -37
- package/dist/services/prd/handoff-service.js +16 -148
- package/dist/services/prd/prd-blocks-checker.js +28 -8
- package/dist/services/prd/project-scan-bootstrap-service.js +1 -5
- package/dist/services/prd/project-scan-reader.js +1 -4
- package/dist/services/prd/project-scan-sediment.js +1 -4
- package/dist/services/preferences/preferences-service.js +6 -8
- package/dist/services/preferences/preferences-types.js +4 -4
- package/dist/services/qa/bdd-test-style-contract.d.ts +41 -0
- package/dist/services/qa/bdd-test-style-contract.js +37 -0
- package/dist/services/qa/bdd-test-style-verifier.d.ts +2 -24
- package/dist/services/qa/bdd-test-style-verifier.js +5 -31
- package/dist/services/qa/browser-event-logger.js +2 -1
- package/dist/services/qa/qa-business-review-state.js +20 -5
- package/dist/services/qa/screenshot-archive-service.js +1 -3
- package/dist/services/rd/ast-gate.js +2 -2
- package/dist/services/rd/impl.js +1 -1
- package/dist/services/rd/rd-service.js +117 -43
- package/dist/services/rd/reviewer-dispatch-policy.js +4 -7
- package/dist/services/rd/standards-diagnostic.js +4 -1
- package/dist/services/rd/strategy.js +10 -3
- package/dist/services/rd/tactical-stage.js +2 -2
- package/dist/services/rd/types.js +9 -7
- package/dist/services/rd-swarm/rd-swarm-service.d.ts +2 -45
- package/dist/services/rd-swarm/rd-swarm-service.js +140 -21
- package/dist/services/rd-swarm/rd-swarm-types.d.ts +54 -0
- package/dist/services/rd-swarm/rd-swarm-types.js +10 -0
- package/dist/services/recommendations/capability-map-service.js +10 -2
- package/dist/services/recommendations/capability-seed-items.js +81 -14
- package/dist/services/recommendations/capability-seed-mappings.js +420 -48
- package/dist/services/recommendations/capability-seed-sources-mcp-server.d.ts +9 -0
- package/dist/services/recommendations/capability-seed-sources-mcp-server.js +233 -0
- package/dist/services/recommendations/capability-seed-sources.js +127 -32
- package/dist/services/release/release-state.d.ts +2 -2
- package/dist/services/release/release-state.js +44 -15
- package/dist/services/release/version-precheck-layer-changeset.d.ts +2 -0
- package/dist/services/release/version-precheck-layer-changeset.js +43 -0
- package/dist/services/release/version-precheck-service.d.ts +11 -36
- package/dist/services/release/version-precheck-service.js +20 -104
- package/dist/services/release/version-precheck-support.d.ts +53 -0
- package/dist/services/release/version-precheck-support.js +64 -0
- package/dist/services/retrospective/retrospective-index.js +17 -3
- package/dist/services/retrospective/retrospective-search-service.js +6 -2
- package/dist/services/retrospective/retrospective-show.js +4 -1
- package/dist/services/reviewer/model-family.js +7 -1
- package/dist/services/reviewer/providers/anthropic.d.ts +5 -0
- package/dist/services/reviewer/providers/anthropic.js +10 -1
- package/dist/services/reviewer/providers/openai.d.ts +5 -0
- package/dist/services/reviewer/providers/openai.js +10 -1
- package/dist/services/reviewer/reviewer-config.js +4 -2
- package/dist/services/reviewer/reviewer-service.d.ts +2 -36
- package/dist/services/reviewer/reviewer-service.js +2 -1
- package/dist/services/reviewer/reviewer-types.d.ts +43 -0
- package/dist/services/reviewer/reviewer-types.js +1 -0
- package/dist/services/role/role-registry.js +9 -1
- package/dist/services/runtime/runtime-detector.js +4 -1
- package/dist/services/runtime/vendors/claude-code.js +14 -6
- package/dist/services/runtime/vendors/codex.js +11 -3
- package/dist/services/runtime/vendors/copilot.js +11 -3
- package/dist/services/sc/sc-service.js +28 -15
- package/dist/services/scan/acceptance-coverage-service.js +4 -1
- package/dist/services/scan/api-diff-openapi-schema-read.d.ts +67 -0
- package/dist/services/scan/api-diff-openapi-schema-read.js +154 -0
- package/dist/services/scan/api-diff-openapi.d.ts +16 -2
- package/dist/services/scan/api-diff-openapi.js +19 -123
- package/dist/services/scan/api-diff-recorded.js +16 -3
- package/dist/services/scan/api-diff-service.js +49 -16
- package/dist/services/scan/api-diff-types.js +12 -3
- package/dist/services/scan/api-surface-helpers.d.ts +13 -0
- package/dist/services/scan/api-surface-helpers.js +31 -0
- package/dist/services/scan/api-surface-service.d.ts +2 -45
- package/dist/services/scan/api-surface-service.js +15 -26
- package/dist/services/scan/api-surface-types.d.ts +54 -0
- package/dist/services/scan/api-surface-types.js +10 -0
- package/dist/services/scan/archetype-detection.d.ts +37 -0
- package/dist/services/scan/archetype-detection.js +142 -0
- package/dist/services/scan/archetype-service.js +36 -125
- package/dist/services/scan/diff-scope-service.js +35 -15
- package/dist/services/scan/existing-system-service.js +16 -99
- package/dist/services/scan/existing-system-visual-tokens.d.ts +20 -0
- package/dist/services/scan/existing-system-visual-tokens.js +123 -0
- package/dist/services/scan/file-size-policy.d.ts +86 -0
- package/dist/services/scan/file-size-policy.js +184 -0
- package/dist/services/scan/file-size-scan.d.ts +30 -3
- package/dist/services/scan/file-size-scan.js +47 -9
- package/dist/services/scan/karpathy-service.js +6 -1
- package/dist/services/scan/orphan-service.js +86 -20
- package/dist/services/scan/type-sanity-service.js +104 -10
- package/dist/services/sediment/dispose-confirm.d.ts +2 -2
- package/dist/services/sediment/dispose-confirm.js +2 -2
- package/dist/services/sediment/json-schema.d.ts +1 -1
- package/dist/services/sediment/json-schema.js +25 -13
- package/dist/services/sediment/manifest-lint.d.ts +1 -12
- package/dist/services/sediment/manifest-lint.js +1 -7
- package/dist/services/sediment/pool-paths.js +13 -9
- package/dist/services/sediment/pool-read.d.ts +1 -1
- package/dist/services/sediment/pool-read.js +42 -18
- package/dist/services/sediment/pool-rebuild-index.d.ts +1 -1
- package/dist/services/sediment/pool-rebuild-index.js +5 -5
- package/dist/services/sediment/pool-write.d.ts +1 -1
- package/dist/services/sediment/pool-write.js +7 -7
- package/dist/services/sediment/promotion-gate.d.ts +1 -1
- package/dist/services/sediment/promotion-gate.js +9 -9
- package/dist/services/sediment/types.d.ts +8 -8
- package/dist/services/session/binding-status-service.js +14 -4
- package/dist/services/session/caller-binding-service.js +2 -1
- package/dist/services/session/getSessionDir.js +4 -1
- package/dist/services/session/index.d.ts +1 -1
- package/dist/services/session/index.js +1 -1
- package/dist/services/session/resolve-caller-id.js +7 -5
- package/dist/services/session/session-binding-bridge.js +26 -25
- package/dist/services/session/session-checkpoint-service.js +1 -1
- package/dist/services/session/session-file-schema.d.ts +70 -0
- package/dist/services/session/session-file-schema.js +68 -0
- package/dist/services/session/session-manager.d.ts +6 -6
- package/dist/services/session/session-manager.js +30 -29
- package/dist/services/session/session-resume-service.js +2 -1
- package/dist/services/share/bundle-format-constants.d.ts +85 -0
- package/dist/services/share/bundle-format-constants.js +100 -0
- package/dist/services/share/bundle-reader.d.ts +3 -3
- package/dist/services/share/bundle-reader.js +75 -68
- package/dist/services/share/bundle-types.d.ts +3 -70
- package/dist/services/share/bundle-types.js +38 -107
- package/dist/services/share/bundle-writer.d.ts +3 -3
- package/dist/services/share/bundle-writer.js +101 -91
- package/dist/services/share/run-state-contract.d.ts +1 -1
- package/dist/services/share/run-state-contract.js +7 -13
- package/dist/services/signal/cancel-handler.js +2 -1
- package/dist/services/skill/resume-detector.js +6 -4
- package/dist/services/skill/skill-scheduler.js +3 -1
- package/dist/services/skill/skill-search-service.js +4 -4
- package/dist/services/skillhub/release-diff.d.ts +2 -2
- package/dist/services/skillhub/release-diff.js +6 -10
- package/dist/services/skillhub/release-export.d.ts +2 -2
- package/dist/services/skillhub/release-export.js +15 -17
- package/dist/services/skillhub/release-gc-blobs.d.ts +2 -2
- package/dist/services/skillhub/release-gc-blobs.js +4 -4
- package/dist/services/skillhub/release-import.d.ts +2 -2
- package/dist/services/skillhub/release-import.js +13 -12
- package/dist/services/skillhub/release-retain.d.ts +3 -3
- package/dist/services/skillhub/release-retain.js +22 -22
- package/dist/services/skillhub/sqlite-store.d.ts +1 -1
- package/dist/services/skillhub/sqlite-store.js +12 -11
- package/dist/services/skillhub/tar-runtime.js +15 -15
- package/dist/services/skillhub/types.d.ts +4 -4
- package/dist/services/skills/hooks-codegate-superpowers.js +16 -7
- package/dist/services/skills/hooks-settings-service.js +61 -19
- package/dist/services/skills/presence-lease-service.js +26 -16
- package/dist/services/skills/presence-lease-types.d.ts +1 -1
- package/dist/services/skills/presence-lease-types.js +1 -1
- package/dist/services/skills/skill-conformance-service.js +40 -8
- package/dist/services/skills/skill-presence-service.js +16 -14
- package/dist/services/skills/skill-runbook-service.js +2 -1
- package/dist/services/skills/skill-statusline-model.d.ts +128 -0
- package/dist/services/skills/skill-statusline-model.js +163 -0
- package/dist/services/skills/skill-statusline-renderer.js +4 -3
- package/dist/services/skills/skill-statusline-service.d.ts +3 -100
- package/dist/services/skills/skill-statusline-service.js +56 -163
- package/dist/services/skills/statusline-palette.js +11 -6
- package/dist/services/skills/statusline-settings-service.js +2 -1
- package/dist/services/skills/sync-service-support.d.ts +65 -0
- package/dist/services/skills/sync-service-support.js +50 -0
- package/dist/services/skills/sync-service.d.ts +3 -66
- package/dist/services/skills/sync-service.js +15 -53
- package/dist/services/slice/calibration-store.js +8 -2
- package/dist/services/slice/cross-pass-edge-merger.d.ts +3 -28
- package/dist/services/slice/cross-pass-edge-merger.js +13 -63
- package/dist/services/slice/cross-pass-edge-static-scan-support.d.ts +69 -0
- package/dist/services/slice/cross-pass-edge-static-scan-support.js +74 -0
- package/dist/services/slice/granularity-decider.js +2 -2
- package/dist/services/slice/slice-archive-service.js +8 -3
- package/dist/services/slice/slice-check-service.js +19 -8
- package/dist/services/slice/slice-decompose-runners.js +61 -23
- package/dist/services/slice/slice-decompose-service.js +4 -4
- package/dist/services/slice/slice-review-state.js +8 -2
- package/dist/services/smoke/smoke-paths-state.js +9 -2
- package/dist/services/sop/gate-enforce-service.js +9 -2
- package/dist/services/sop/sop-advance-service.js +14 -2
- package/dist/services/sop/sop-check-service.js +16 -4
- package/dist/services/sop/sop-paths.js +3 -1
- package/dist/services/sop/sop-registry-service.js +5 -1
- package/dist/services/sop/sop-service.js +29 -7
- package/dist/services/sop/sop-types.js +5 -1
- package/dist/services/standards/ide-aware-standards-service.js +2 -2
- package/dist/services/standards/loop-engineering-lint.js +12 -5
- package/dist/services/standards/loop-engineering-readiness-lint.js +5 -5
- package/dist/services/standards/migrate-claude-rules-service.js +9 -7
- package/dist/services/standards/missing-standards-detector.js +1 -3
- package/dist/services/standards/project-context-support.d.ts +50 -0
- package/dist/services/standards/project-context-support.js +244 -0
- package/dist/services/standards/project-context-types.d.ts +30 -0
- package/dist/services/standards/project-context-types.js +11 -0
- package/dist/services/standards/project-context.d.ts +10 -22
- package/dist/services/standards/project-context.js +27 -214
- package/dist/services/standards/project-standards-service.js +43 -12
- package/dist/services/standards/standards-render-common.d.ts +15 -0
- package/dist/services/standards/standards-render-common.js +49 -0
- package/dist/services/standards/standards-render.d.ts +1 -2
- package/dist/services/standards/standards-render.js +31 -58
- package/dist/services/standards/ui-library-dispatch-block.js +1 -1
- package/dist/services/tech/tech-change-id-service.js +7 -7
- package/dist/services/tech/tech-service.js +73 -26
- package/dist/services/test-cache/test-cache-service.js +8 -3
- package/dist/services/upgrade/1x-detector-service.js +5 -3
- package/dist/services/upgrade/gitignore-migrate-service.js +5 -5
- package/dist/services/upgrade/upgrade-service.js +36 -13
- package/dist/services/verdict/envelope-parsers.d.ts +84 -0
- package/dist/services/verdict/envelope-parsers.js +146 -0
- package/dist/services/verdict/envelopes.d.ts +50 -60
- package/dist/services/verdict/envelopes.js +18 -156
- package/dist/services/verdict/verdict-aggregator.js +27 -3
- package/dist/services/vm/vm-lease.js +15 -3
- package/dist/services/web/aria-node.d.ts +27 -0
- package/dist/services/web/aria-node.js +1 -0
- package/dist/services/web/browser-acquire.js +3 -1
- package/dist/services/web/browser-cache-probe.d.ts +18 -0
- package/dist/services/web/browser-cache-probe.js +110 -0
- package/dist/services/web/browser-session-manager.js +6 -2
- package/dist/services/web/daemon-registry.js +4 -1
- package/dist/services/web/playwright-loader.d.ts +2 -70
- package/dist/services/web/playwright-types.d.ts +75 -0
- package/dist/services/web/playwright-types.js +1 -0
- package/dist/services/web/snapshot-pruner.d.ts +2 -23
- package/dist/services/web/snapshot-pruner.js +8 -3
- package/dist/services/web/web-daemon-service.js +1 -3
- package/dist/services/web/web-install-service.d.ts +3 -32
- package/dist/services/web/web-install-service.js +21 -100
- package/dist/services/web/web-install-types.d.ts +31 -0
- package/dist/services/web/web-install-types.js +13 -0
- package/dist/services/web/web-login-profile.js +7 -5
- package/dist/services/web/web-protocol.js +3 -1
- package/dist/services/workflow/pipeline-verify-gate-support.js +63 -17
- package/dist/services/workflow/pipeline-verify-service.js +17 -6
- package/dist/services/workflow/plan-reader.js +5 -1
- package/dist/services/workflow/plan-refresher.js +20 -6
- package/dist/services/workflow/plan-trigger-detector.js +31 -8
- package/dist/services/workflow/provision-dispatch-node.js +8 -3
- package/dist/services/workflow/workflow-autonomous-resume-helpers.d.ts +3 -1
- package/dist/services/workflow/workflow-autonomous-resume-helpers.js +35 -144
- package/dist/services/workflow/workflow-autonomous-resume-validation.d.ts +16 -0
- package/dist/services/workflow/workflow-autonomous-resume-validation.js +155 -0
- package/dist/services/workflow/workflow-autonomous-service.js +25 -13
- package/dist/services/workflow/workflow-graph-store-helpers.d.ts +51 -0
- package/dist/services/workflow/workflow-graph-store-helpers.js +111 -0
- package/dist/services/workflow/workflow-graph-store.d.ts +2 -35
- package/dist/services/workflow/workflow-graph-store.js +30 -107
- package/dist/services/workflow/workflow-graph-types.js +3 -3
- package/dist/services/workflow/workflow-inflight-probe.js +14 -7
- package/dist/services/workflow/workflow-loader.js +5 -1
- package/dist/services/workflow/workflow-node-lifecycle.js +22 -21
- package/dist/services/workflow/workflow-presence-lifecycle-types.d.ts +50 -0
- package/dist/services/workflow/workflow-presence-lifecycle-types.js +1 -0
- package/dist/services/workflow/workflow-presence-lifecycle.d.ts +2 -42
- package/dist/services/workflow/workflow-presence-lifecycle.js +19 -21
- package/dist/services/workflow/workflow-router-service.js +169 -27
- package/dist/services/workflow/workflow-skip-service.js +14 -4
- package/dist/services/workflow/workflow-spec-builders.d.ts +15 -0
- package/dist/services/workflow/workflow-spec-builders.js +121 -0
- package/dist/services/workflow/workflow-spec.d.ts +7 -6
- package/dist/services/workflow/workflow-spec.js +22 -116
- package/dist/services/workflow/workflow-state-store.js +2 -1
- package/dist/services/workspace/migrate-1-4-1-service.js +80 -14
- package/dist/services/workspace/migrate-service.js +66 -16
- package/dist/services/workspace/reconcile-migrate.js +6 -2
- package/dist/services/workspace/reconcile-service.js +37 -16
- package/dist/services/workspace/workspace-claude-settings-materializer.js +7 -5
- package/dist/services/workspace/workspace-clean-service.js +4 -1
- package/dist/services/workspace/workspace-service.js +11 -3
- package/dist/services/workspace/workspace-state-service.js +1 -1
- package/dist/services/worktree/git-worktree-parser.js +13 -3
- package/dist/services/worktree/host-worktree-reconciler.js +8 -4
- package/dist/services/worktree/long-path-cleanup.js +23 -6
- package/dist/services/worktree/worktree-gc-guard.js +3 -1
- package/dist/services/worktree/worktree-lease-types.d.ts +53 -0
- package/dist/services/worktree/worktree-lease-types.js +10 -0
- package/dist/services/worktree/worktree-lease.d.ts +2 -44
- package/dist/shared/array-guards.d.ts +30 -0
- package/dist/shared/array-guards.js +32 -0
- package/dist/shared/format-md-compact-internals.d.ts +26 -0
- package/dist/shared/format-md-compact-internals.js +125 -0
- package/dist/shared/format-md-compact.js +1 -117
- package/dist/shared/fs-utils.js +2 -1
- package/dist/shared/incrementing-number.js +3 -3
- package/dist/shared/json-parse.d.ts +71 -0
- package/dist/shared/json-parse.js +32 -0
- package/dist/shared/json-schema-mini.js +3 -1
- package/dist/shared/path-safety.js +3 -1
- package/dist/shared/path-utils.d.ts +20 -0
- package/dist/shared/path-utils.js +26 -0
- package/dist/shared/planner-response.js +3 -3
- package/dist/shared/stale-policy.js +1 -3
- package/dist/skills/peaks-maker/index.js +11 -11
- package/package.json +31 -8
- package/scripts/clean-dist.mjs +1 -2
- package/scripts/copy-templates.mjs +2 -4
- package/scripts/install-skills.mjs +305 -125
- package/scripts/sync-version.mjs +25 -8
- package/scripts/watch.mjs +8 -2
- package/skills/peaks-code/SKILL.md +1 -1
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** Default tool-call threshold before first suggestion. */
|
|
2
|
+
export const DEFAULT_TOOL_CALL_THRESHOLD = 50;
|
|
3
|
+
/** Default additional tool calls before the suggestion repeats. */
|
|
4
|
+
export const TOOL_CALL_REMIND_STEP = 25;
|
|
5
|
+
/** Default context-size threshold on a 200k window. */
|
|
6
|
+
export const DEFAULT_CONTEXT_THRESHOLD_200K = 160_000;
|
|
7
|
+
/** Default context-size threshold on a 1M window. */
|
|
8
|
+
export const DEFAULT_CONTEXT_THRESHOLD_1M = 250_000;
|
|
9
|
+
/** Default re-remind interval for context size. */
|
|
10
|
+
export const DEFAULT_CONTEXT_INTERVAL = 60_000;
|
|
@@ -96,7 +96,7 @@ export function summarizeCompactHistory(events) {
|
|
|
96
96
|
lastBeforeRatio: null,
|
|
97
97
|
lastRedLine: false,
|
|
98
98
|
redLineCount: 0,
|
|
99
|
-
failedCount: 0
|
|
99
|
+
failedCount: 0
|
|
100
100
|
};
|
|
101
101
|
}
|
|
102
102
|
const last = events[events.length - 1];
|
|
@@ -106,6 +106,6 @@ export function summarizeCompactHistory(events) {
|
|
|
106
106
|
lastBeforeRatio: last.beforeRatio,
|
|
107
107
|
lastRedLine: last.redLine,
|
|
108
108
|
redLineCount: events.filter((e) => e.redLine).length,
|
|
109
|
-
failedCount: events.filter((e) => !e.ok).length
|
|
109
|
+
failedCount: events.filter((e) => !e.ok).length
|
|
110
110
|
};
|
|
111
111
|
}
|
|
@@ -1,35 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
* Slice 2026-09-12-compact-band-policy: a compact trigger was
|
|
4
|
-
* REGISTERED but no compaction has started — e.g. claude-code's
|
|
5
|
-
* `ide-native` pathway only installs the PreToolUse hook, which
|
|
6
|
-
* compacts in-band at ratio ≥ 0.95. In the 0.80–0.95 band nothing
|
|
7
|
-
* is in flight, so claiming `compacting` was a false heartbeat.
|
|
8
|
-
*/
|
|
9
|
-
| 'armed' | 'verifying' | 'completed' | 'failed';
|
|
10
|
-
export interface CompactLifecycleRecord {
|
|
11
|
-
readonly schemaVersion: 1;
|
|
12
|
-
readonly runId: string;
|
|
13
|
-
readonly stage: CompactLifecycleStage;
|
|
14
|
-
readonly updatedAt: string;
|
|
15
|
-
readonly triggerRatio: number;
|
|
16
|
-
readonly afterRatio?: number;
|
|
17
|
-
readonly redLine: boolean;
|
|
18
|
-
readonly failedAt?: Exclude<CompactLifecycleStage, 'failed' | 'completed'>;
|
|
19
|
-
readonly errorSummary?: string;
|
|
20
|
-
}
|
|
21
|
-
export type CompactLifecycleRead = {
|
|
22
|
-
readonly kind: 'missing';
|
|
23
|
-
} | {
|
|
24
|
-
readonly kind: 'valid';
|
|
25
|
-
readonly record: CompactLifecycleRecord;
|
|
26
|
-
} | {
|
|
27
|
-
readonly kind: 'invalid';
|
|
28
|
-
readonly reason: string;
|
|
29
|
-
} | {
|
|
30
|
-
readonly kind: 'stalled';
|
|
31
|
-
readonly record: CompactLifecycleRecord;
|
|
32
|
-
};
|
|
1
|
+
import type { CompactLifecycleRead, CompactLifecycleRecord, CompactLifecycleStage } from './compact-lifecycle-types.js';
|
|
2
|
+
export type { CompactLifecycleRead, CompactLifecycleRecord, CompactLifecycleStage };
|
|
33
3
|
/**
|
|
34
4
|
* Atomically write a compact lifecycle record. Uses a temp file in
|
|
35
5
|
* the same directory plus `renameSync`, so a crash mid-write never
|
|
@@ -40,12 +40,7 @@ const ERROR_SUMMARY_MAX = 160;
|
|
|
40
40
|
* `armed` is deliberately NOT here — see the header. It is a resting
|
|
41
41
|
* state, not a heartbeat.
|
|
42
42
|
*/
|
|
43
|
-
const ACTIVE_STAGES = [
|
|
44
|
-
'queued',
|
|
45
|
-
'preparing',
|
|
46
|
-
'compacting',
|
|
47
|
-
'verifying',
|
|
48
|
-
];
|
|
43
|
+
const ACTIVE_STAGES = ['queued', 'preparing', 'compacting', 'verifying'];
|
|
49
44
|
const ALL_STAGES = [
|
|
50
45
|
'queued',
|
|
51
46
|
'preparing',
|
|
@@ -53,7 +48,7 @@ const ALL_STAGES = [
|
|
|
53
48
|
'armed',
|
|
54
49
|
'verifying',
|
|
55
50
|
'completed',
|
|
56
|
-
'failed'
|
|
51
|
+
'failed'
|
|
57
52
|
];
|
|
58
53
|
function lifecyclePath(projectRoot, sessionId) {
|
|
59
54
|
return join(getSessionDir(projectRoot, sessionId), LIFECYCLE_FILENAME);
|
|
@@ -114,7 +109,7 @@ function coerceRecord(raw) {
|
|
|
114
109
|
redLine: raw['redLine'],
|
|
115
110
|
failedAt: failedAt,
|
|
116
111
|
...(raw['afterRatio'] !== undefined ? { afterRatio: raw['afterRatio'] } : {}),
|
|
117
|
-
...(errorSummary !== undefined ? { errorSummary: errorSummary } : {})
|
|
112
|
+
...(errorSummary !== undefined ? { errorSummary: errorSummary } : {})
|
|
118
113
|
};
|
|
119
114
|
}
|
|
120
115
|
// Non-failed records must NOT carry a failedAt or errorSummary.
|
|
@@ -131,7 +126,7 @@ function coerceRecord(raw) {
|
|
|
131
126
|
updatedAt: raw['updatedAt'],
|
|
132
127
|
triggerRatio: raw['triggerRatio'],
|
|
133
128
|
redLine: raw['redLine'],
|
|
134
|
-
...(raw['afterRatio'] !== undefined ? { afterRatio: raw['afterRatio'] } : {})
|
|
129
|
+
...(raw['afterRatio'] !== undefined ? { afterRatio: raw['afterRatio'] } : {})
|
|
135
130
|
};
|
|
136
131
|
}
|
|
137
132
|
function clampErrorSummary(value) {
|
|
@@ -163,7 +158,7 @@ export function writeCompactLifecycle(input) {
|
|
|
163
158
|
// (Re-coercing also catches cases where the caller bypassed TypeScript.)
|
|
164
159
|
const validated = coerceRecord({
|
|
165
160
|
...input.record,
|
|
166
|
-
errorSummary: clampErrorSummary(input.record.errorSummary)
|
|
161
|
+
errorSummary: clampErrorSummary(input.record.errorSummary)
|
|
167
162
|
});
|
|
168
163
|
const tmp = `${path}.tmp-${process.pid}-${Date.now()}`;
|
|
169
164
|
try {
|
|
@@ -210,7 +205,7 @@ export function readCompactLifecycle(input) {
|
|
|
210
205
|
catch (error) {
|
|
211
206
|
return {
|
|
212
207
|
kind: 'invalid',
|
|
213
|
-
reason: `compact-lifecycle: unable to read record file: ${error.message}
|
|
208
|
+
reason: `compact-lifecycle: unable to read record file: ${error.message}`
|
|
214
209
|
};
|
|
215
210
|
}
|
|
216
211
|
let parsed;
|
|
@@ -220,7 +215,7 @@ export function readCompactLifecycle(input) {
|
|
|
220
215
|
catch (error) {
|
|
221
216
|
return {
|
|
222
217
|
kind: 'invalid',
|
|
223
|
-
reason: `compact-lifecycle: malformed JSON (${error.message})
|
|
218
|
+
reason: `compact-lifecycle: malformed JSON (${error.message})`
|
|
224
219
|
};
|
|
225
220
|
}
|
|
226
221
|
let record;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export type CompactLifecycleStage = 'queued' | 'preparing' | 'compacting'
|
|
2
|
+
/**
|
|
3
|
+
* Slice 2026-09-12-compact-band-policy: a compact trigger was
|
|
4
|
+
* REGISTERED but no compaction has started — e.g. claude-code's
|
|
5
|
+
* `ide-native` pathway only installs the PreToolUse hook, which
|
|
6
|
+
* compacts in-band at ratio ≥ 0.95. In the 0.80–0.95 band nothing
|
|
7
|
+
* is in flight, so claiming `compacting` was a false heartbeat.
|
|
8
|
+
*/
|
|
9
|
+
| 'armed' | 'verifying' | 'completed' | 'failed';
|
|
10
|
+
export interface CompactLifecycleRecord {
|
|
11
|
+
readonly schemaVersion: 1;
|
|
12
|
+
readonly runId: string;
|
|
13
|
+
readonly stage: CompactLifecycleStage;
|
|
14
|
+
readonly updatedAt: string;
|
|
15
|
+
readonly triggerRatio: number;
|
|
16
|
+
readonly afterRatio?: number;
|
|
17
|
+
readonly redLine: boolean;
|
|
18
|
+
readonly failedAt?: Exclude<CompactLifecycleStage, 'failed' | 'completed'>;
|
|
19
|
+
readonly errorSummary?: string;
|
|
20
|
+
}
|
|
21
|
+
export type CompactLifecycleRead = {
|
|
22
|
+
readonly kind: 'missing';
|
|
23
|
+
} | {
|
|
24
|
+
readonly kind: 'valid';
|
|
25
|
+
readonly record: CompactLifecycleRecord;
|
|
26
|
+
} | {
|
|
27
|
+
readonly kind: 'invalid';
|
|
28
|
+
readonly reason: string;
|
|
29
|
+
} | {
|
|
30
|
+
readonly kind: 'stalled';
|
|
31
|
+
readonly record: CompactLifecycleRecord;
|
|
32
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// src/services/compact-statusline/compact-lifecycle-types.ts
|
|
2
|
+
//
|
|
3
|
+
// The record shape for the runtime compact-lifecycle store
|
|
4
|
+
// (`compact-lifecycle-store.ts`), split out to keep the store under the
|
|
5
|
+
// 300-raw-line file cap. Types only — no behaviour lives here. The store
|
|
6
|
+
// re-exports every name below, so importers keep using
|
|
7
|
+
// `compact-lifecycle-store.js` unchanged.
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { CompactLifecycleStage } from './compact-lifecycle-store.js';
|
|
2
|
+
export type CompactDisplayKind = 'none' | 'queued' | 'preparing' | 'compacting' | 'verifying' | 'completed' | 'failed' | 'stalled' | 'invalid' | 'armed';
|
|
3
|
+
export interface CompactStatuslineState {
|
|
4
|
+
readonly kind: CompactDisplayKind;
|
|
5
|
+
readonly filledCells: 0 | 2 | 4 | 6 | 8;
|
|
6
|
+
readonly triggerRatio?: number;
|
|
7
|
+
readonly afterRatio?: number;
|
|
8
|
+
readonly redLine?: boolean;
|
|
9
|
+
readonly failedAt?: CompactLifecycleStage;
|
|
10
|
+
readonly detail?: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Concrete first-version stale timeout. Adjustable after real timing
|
|
14
|
+
* evidence from the auto-compact orchestrator (it currently writes a
|
|
15
|
+
* heartbeat on every state transition; 120 s is the longest realistic
|
|
16
|
+
* gap between a heartbeat and an actual stall).
|
|
17
|
+
*/
|
|
18
|
+
export declare const DEFAULT_STALE_AFTER_MS = 120000;
|
|
19
|
+
/**
|
|
20
|
+
* 10-second completed-window expiry. The brief (Task 6 design requirement)
|
|
21
|
+
* calls out: once a compact lifecycle reaches `completed`, the primary
|
|
22
|
+
* statusline should surface the success indicator for at most 10 seconds,
|
|
23
|
+
* then fall back to the C1 baseline so the consumer (the IDE) does not
|
|
24
|
+
* keep a green ✓ pinned on the status bar indefinitely. The narrow window
|
|
25
|
+
* is sufficient for the human to see "we just compacted" and long enough
|
|
26
|
+
* to not flap on subsequent reads. Adjustable after real timing feedback.
|
|
27
|
+
*/
|
|
28
|
+
export declare const COMPLETED_EXPIRY_MS = 10000;
|
|
29
|
+
/**
|
|
30
|
+
* How recently the last history row must itself have been written for the
|
|
31
|
+
* legacy path to report it as "just compacted". Measured against the row's own
|
|
32
|
+
* `ts` — the fact — rather than the file's mtime, which is only a proxy for it
|
|
33
|
+
* and is also moved by rows that record no compaction (repair R9).
|
|
34
|
+
*/
|
|
35
|
+
export declare const LEGACY_JUST_COMPACTED_WINDOW_MS = 30000;
|
|
36
|
+
export declare const STAGE_CELL_COMPACTING = 4;
|
|
37
|
+
export declare const STAGE_CELL_VERIFYING = 6;
|
|
38
|
+
export declare const STAGE_CELL_COMPLETED = 8;
|
|
39
|
+
export declare const CELL_BY_STAGE: ReadonlyMap<CompactLifecycleStage, 0 | 2 | 4 | 6 | 8>;
|
|
40
|
+
export declare const NO_AFTER_RATIO_HINT = "after-ratio not recorded";
|
|
41
|
+
export declare function renderBar(filledCells: 0 | 2 | 4 | 6 | 8): string;
|
|
42
|
+
export declare function renderLegacyBar(filledCells: 0 | 2 | 4 | 6 | 8): string;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
// src/services/compact-statusline/compact-statusline-cell-table.ts
|
|
2
|
+
//
|
|
3
|
+
// Wave-5 class-A hoist (rid 2026-10-01-wave5-w5-3-compact-release): the
|
|
4
|
+
// display-state types, timing windows, and frozen cell-table render
|
|
5
|
+
// primitives moved VERBATIM out of `compact-statusline-service.ts` (:51-135
|
|
6
|
+
// at the split) for the 300-raw-line cap. The
|
|
7
|
+
// `/* eslint-disable no-magic-numbers */ ... /* eslint-enable */` pair is
|
|
8
|
+
// relocated WHOLE with the region it suppresses — no chunk arrives here
|
|
9
|
+
// without its suppression. The parent re-exports `CompactDisplayKind`,
|
|
10
|
+
// `CompactStatuslineState` and `COMPLETED_EXPIRY_MS` so existing import
|
|
11
|
+
// paths keep working.
|
|
12
|
+
/**
|
|
13
|
+
* Concrete first-version stale timeout. Adjustable after real timing
|
|
14
|
+
* evidence from the auto-compact orchestrator (it currently writes a
|
|
15
|
+
* heartbeat on every state transition; 120 s is the longest realistic
|
|
16
|
+
* gap between a heartbeat and an actual stall).
|
|
17
|
+
*/
|
|
18
|
+
export const DEFAULT_STALE_AFTER_MS = 120_000;
|
|
19
|
+
/**
|
|
20
|
+
* 10-second completed-window expiry. The brief (Task 6 design requirement)
|
|
21
|
+
* calls out: once a compact lifecycle reaches `completed`, the primary
|
|
22
|
+
* statusline should surface the success indicator for at most 10 seconds,
|
|
23
|
+
* then fall back to the C1 baseline so the consumer (the IDE) does not
|
|
24
|
+
* keep a green ✓ pinned on the status bar indefinitely. The narrow window
|
|
25
|
+
* is sufficient for the human to see "we just compacted" and long enough
|
|
26
|
+
* to not flap on subsequent reads. Adjustable after real timing feedback.
|
|
27
|
+
*/
|
|
28
|
+
export const COMPLETED_EXPIRY_MS = 10_000;
|
|
29
|
+
/**
|
|
30
|
+
* How recently the last history row must itself have been written for the
|
|
31
|
+
* legacy path to report it as "just compacted". Measured against the row's own
|
|
32
|
+
* `ts` — the fact — rather than the file's mtime, which is only a proxy for it
|
|
33
|
+
* and is also moved by rows that record no compaction (repair R9).
|
|
34
|
+
*/
|
|
35
|
+
export const LEGACY_JUST_COMPACTED_WINDOW_MS = 30_000;
|
|
36
|
+
// PRD-002b slice 2 — extract cell-table magic numbers (4/6/8) into named
|
|
37
|
+
// consts so the no-magic-numbers lint rule stops flagging the typed
|
|
38
|
+
// literal-union cell-table values. Values match the documented contract.
|
|
39
|
+
export const STAGE_CELL_COMPACTING = 4;
|
|
40
|
+
export const STAGE_CELL_VERIFYING = 6;
|
|
41
|
+
export const STAGE_CELL_COMPLETED = 8;
|
|
42
|
+
/* eslint-disable no-magic-numbers -- cell-table contract uses literal-type unions (`0 | 2 | 4 | 6 | 8`); these are type-position discriminators, not runtime values. Magic-number extraction is done at the runtime call sites via STAGE_CELL_* constants above. */
|
|
43
|
+
export const CELL_BY_STAGE = new Map([
|
|
44
|
+
['queued', 0],
|
|
45
|
+
['preparing', 2],
|
|
46
|
+
['compacting', STAGE_CELL_COMPACTING],
|
|
47
|
+
['verifying', STAGE_CELL_VERIFYING],
|
|
48
|
+
['completed', STAGE_CELL_COMPLETED],
|
|
49
|
+
['failed', STAGE_CELL_COMPACTING]
|
|
50
|
+
// `armed` is not in the cell table: it renders WITHOUT a bar (see
|
|
51
|
+
// renderCompactStatusline). Lookups therefore miss and fall back to 0.
|
|
52
|
+
]);
|
|
53
|
+
const FILLED = '█';
|
|
54
|
+
const EMPTY = '░';
|
|
55
|
+
const BAR_WIDTH = STAGE_CELL_COMPLETED;
|
|
56
|
+
export const NO_AFTER_RATIO_HINT = 'after-ratio not recorded';
|
|
57
|
+
export function renderBar(filledCells) {
|
|
58
|
+
return `[${FILLED.repeat(filledCells)}${EMPTY.repeat(BAR_WIDTH - filledCells)}]`;
|
|
59
|
+
}
|
|
60
|
+
export function renderLegacyBar(filledCells) {
|
|
61
|
+
return renderBar(filledCells);
|
|
62
|
+
}
|
|
63
|
+
/* eslint-enable no-magic-numbers */
|
|
@@ -1,24 +1,7 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
export type CompactDisplayKind
|
|
3
|
-
export
|
|
4
|
-
|
|
5
|
-
readonly filledCells: 0 | 2 | 4 | 6 | 8;
|
|
6
|
-
readonly triggerRatio?: number;
|
|
7
|
-
readonly afterRatio?: number;
|
|
8
|
-
readonly redLine?: boolean;
|
|
9
|
-
readonly failedAt?: CompactLifecycleStage;
|
|
10
|
-
readonly detail?: string;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* 10-second completed-window expiry. The brief (Task 6 design requirement)
|
|
14
|
-
* calls out: once a compact lifecycle reaches `completed`, the primary
|
|
15
|
-
* statusline should surface the success indicator for at most 10 seconds,
|
|
16
|
-
* then fall back to the C1 baseline so the consumer (the IDE) does not
|
|
17
|
-
* keep a green ✓ pinned on the status bar indefinitely. The narrow window
|
|
18
|
-
* is sufficient for the human to see "we just compacted" and long enough
|
|
19
|
-
* to not flap on subsequent reads. Adjustable after real timing feedback.
|
|
20
|
-
*/
|
|
21
|
-
export declare const COMPLETED_EXPIRY_MS = 10000;
|
|
1
|
+
import { type CompactStatuslineState } from './compact-statusline-cell-table.js';
|
|
2
|
+
export type { CompactDisplayKind } from './compact-statusline-cell-table.js';
|
|
3
|
+
export type { CompactStatuslineState } from './compact-statusline-cell-table.js';
|
|
4
|
+
export { COMPLETED_EXPIRY_MS } from './compact-statusline-cell-table.js';
|
|
22
5
|
export declare function decideCompactStatusline(input: {
|
|
23
6
|
readonly projectRoot: string;
|
|
24
7
|
readonly sessionId: string | null;
|
|
@@ -41,59 +41,10 @@ import { existsSync, readFileSync } from 'node:fs';
|
|
|
41
41
|
import { getSessionDir } from '../session/getSessionDir.js';
|
|
42
42
|
import { AUTO_COMPACT_RED_LINE_RATIO } from '../context/auto-compact-types.js';
|
|
43
43
|
import { readCompactHistory } from '../compact-history/compact-history-service.js';
|
|
44
|
-
import { readCompactLifecycle
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
* heartbeat on every state transition; 120 s is the longest realistic
|
|
49
|
-
* gap between a heartbeat and an actual stall).
|
|
50
|
-
*/
|
|
51
|
-
const DEFAULT_STALE_AFTER_MS = 120_000;
|
|
52
|
-
/**
|
|
53
|
-
* 10-second completed-window expiry. The brief (Task 6 design requirement)
|
|
54
|
-
* calls out: once a compact lifecycle reaches `completed`, the primary
|
|
55
|
-
* statusline should surface the success indicator for at most 10 seconds,
|
|
56
|
-
* then fall back to the C1 baseline so the consumer (the IDE) does not
|
|
57
|
-
* keep a green ✓ pinned on the status bar indefinitely. The narrow window
|
|
58
|
-
* is sufficient for the human to see "we just compacted" and long enough
|
|
59
|
-
* to not flap on subsequent reads. Adjustable after real timing feedback.
|
|
60
|
-
*/
|
|
61
|
-
export const COMPLETED_EXPIRY_MS = 10_000;
|
|
62
|
-
/**
|
|
63
|
-
* How recently the last history row must itself have been written for the
|
|
64
|
-
* legacy path to report it as "just compacted". Measured against the row's own
|
|
65
|
-
* `ts` — the fact — rather than the file's mtime, which is only a proxy for it
|
|
66
|
-
* and is also moved by rows that record no compaction (repair R9).
|
|
67
|
-
*/
|
|
68
|
-
const LEGACY_JUST_COMPACTED_WINDOW_MS = 30_000;
|
|
69
|
-
// PRD-002b slice 2 — extract cell-table magic numbers (4/6/8) into named
|
|
70
|
-
// consts so the no-magic-numbers lint rule stops flagging the typed
|
|
71
|
-
// literal-union cell-table values. Values match the documented contract.
|
|
72
|
-
const STAGE_CELL_COMPACTING = 4;
|
|
73
|
-
const STAGE_CELL_VERIFYING = 6;
|
|
74
|
-
const STAGE_CELL_COMPLETED = 8;
|
|
75
|
-
/* eslint-disable no-magic-numbers -- cell-table contract uses literal-type unions (`0 | 2 | 4 | 6 | 8`); these are type-position discriminators, not runtime values. Magic-number extraction is done at the runtime call sites via STAGE_CELL_* constants above. */
|
|
76
|
-
const CELL_BY_STAGE = new Map([
|
|
77
|
-
['queued', 0],
|
|
78
|
-
['preparing', 2],
|
|
79
|
-
['compacting', STAGE_CELL_COMPACTING],
|
|
80
|
-
['verifying', STAGE_CELL_VERIFYING],
|
|
81
|
-
['completed', STAGE_CELL_COMPLETED],
|
|
82
|
-
['failed', STAGE_CELL_COMPACTING],
|
|
83
|
-
// `armed` is not in the cell table: it renders WITHOUT a bar (see
|
|
84
|
-
// renderCompactStatusline). Lookups therefore miss and fall back to 0.
|
|
85
|
-
]);
|
|
86
|
-
const FILLED = '█';
|
|
87
|
-
const EMPTY = '░';
|
|
88
|
-
const BAR_WIDTH = STAGE_CELL_COMPLETED;
|
|
89
|
-
const NO_AFTER_RATIO_HINT = 'after-ratio not recorded';
|
|
90
|
-
function renderBar(filledCells) {
|
|
91
|
-
return `[${FILLED.repeat(filledCells)}${EMPTY.repeat(BAR_WIDTH - filledCells)}]`;
|
|
92
|
-
}
|
|
93
|
-
function renderLegacyBar(filledCells) {
|
|
94
|
-
return renderBar(filledCells);
|
|
95
|
-
}
|
|
96
|
-
/* eslint-enable no-magic-numbers */
|
|
44
|
+
import { readCompactLifecycle } from './compact-lifecycle-store.js';
|
|
45
|
+
import { CELL_BY_STAGE, COMPLETED_EXPIRY_MS, DEFAULT_STALE_AFTER_MS, LEGACY_JUST_COMPACTED_WINDOW_MS, NO_AFTER_RATIO_HINT, renderBar, renderLegacyBar, STAGE_CELL_COMPACTING, STAGE_CELL_VERIFYING, STAGE_CELL_COMPLETED } from './compact-statusline-cell-table.js';
|
|
46
|
+
import { stateFromLifecycle, stateFromStalled } from './compact-statusline-state.js';
|
|
47
|
+
export { COMPLETED_EXPIRY_MS } from './compact-statusline-cell-table.js';
|
|
97
48
|
export function decideCompactStatusline(input) {
|
|
98
49
|
const staleAfterMs = input.staleAfterMs ?? DEFAULT_STALE_AFTER_MS;
|
|
99
50
|
const completedExpiryMs = input.completedExpiryMs ?? COMPLETED_EXPIRY_MS;
|
|
@@ -107,7 +58,7 @@ export function decideCompactStatusline(input) {
|
|
|
107
58
|
projectRoot: input.projectRoot,
|
|
108
59
|
sessionId: input.sessionId,
|
|
109
60
|
nowMs: input.now,
|
|
110
|
-
staleAfterMs
|
|
61
|
+
staleAfterMs
|
|
111
62
|
});
|
|
112
63
|
if (lifecycle.kind === 'valid') {
|
|
113
64
|
// 10-second completed-expiry: once a compact lifecycle reaches
|
|
@@ -142,7 +93,7 @@ export function decideCompactStatusline(input) {
|
|
|
142
93
|
return {
|
|
143
94
|
kind: 'invalid',
|
|
144
95
|
filledCells: 0,
|
|
145
|
-
detail: lifecycle.reason
|
|
96
|
+
detail: lifecycle.reason
|
|
146
97
|
};
|
|
147
98
|
}
|
|
148
99
|
// lifecycle.kind === 'missing' → fall back to legacy files.
|
|
@@ -150,52 +101,9 @@ export function decideCompactStatusline(input) {
|
|
|
150
101
|
projectRoot: input.projectRoot,
|
|
151
102
|
sessionId: input.sessionId,
|
|
152
103
|
sessionDir,
|
|
153
|
-
now: input.now
|
|
104
|
+
now: input.now
|
|
154
105
|
});
|
|
155
106
|
}
|
|
156
|
-
function stateFromLifecycle(record) {
|
|
157
|
-
if (record.stage === 'failed') {
|
|
158
|
-
const failedAt = record.failedAt ?? 'compacting';
|
|
159
|
-
const state = {
|
|
160
|
-
kind: 'failed',
|
|
161
|
-
filledCells: CELL_BY_STAGE.get(failedAt) ?? STAGE_CELL_COMPACTING,
|
|
162
|
-
triggerRatio: record.triggerRatio,
|
|
163
|
-
redLine: record.redLine,
|
|
164
|
-
failedAt,
|
|
165
|
-
};
|
|
166
|
-
if (record.errorSummary !== undefined) {
|
|
167
|
-
return { ...state, detail: record.errorSummary };
|
|
168
|
-
}
|
|
169
|
-
return state;
|
|
170
|
-
}
|
|
171
|
-
const filledCells = CELL_BY_STAGE.get(record.stage) ?? 0;
|
|
172
|
-
const base = {
|
|
173
|
-
kind: record.stage,
|
|
174
|
-
filledCells,
|
|
175
|
-
triggerRatio: record.triggerRatio,
|
|
176
|
-
redLine: record.redLine,
|
|
177
|
-
};
|
|
178
|
-
if (record.stage === 'completed' && typeof record.afterRatio === 'number') {
|
|
179
|
-
return { ...base, afterRatio: record.afterRatio };
|
|
180
|
-
}
|
|
181
|
-
return base;
|
|
182
|
-
}
|
|
183
|
-
function stateFromStalled(record) {
|
|
184
|
-
const filledCells = CELL_BY_STAGE.get(record.stage) ?? STAGE_CELL_COMPACTING;
|
|
185
|
-
const detailText = record.stage === 'failed'
|
|
186
|
-
? record.errorSummary
|
|
187
|
-
: `no heartbeat for ${record.stage} stage`;
|
|
188
|
-
const state = {
|
|
189
|
-
kind: 'stalled',
|
|
190
|
-
filledCells,
|
|
191
|
-
triggerRatio: record.triggerRatio,
|
|
192
|
-
redLine: record.redLine,
|
|
193
|
-
};
|
|
194
|
-
if (detailText !== undefined) {
|
|
195
|
-
return { ...state, detail: detailText };
|
|
196
|
-
}
|
|
197
|
-
return state;
|
|
198
|
-
}
|
|
199
107
|
function decideLegacyFallback(input) {
|
|
200
108
|
const { sessionDir, now } = input;
|
|
201
109
|
const pendingPath = `${sessionDir}/txt/auto-compact-pending.json`;
|
|
@@ -211,7 +119,7 @@ function decideLegacyFallback(input) {
|
|
|
211
119
|
filledCells: 0,
|
|
212
120
|
...(typeof parsed.ratio === 'number' ? { triggerRatio: parsed.ratio } : {}),
|
|
213
121
|
...(parsed.redLine === true ? { redLine: true } : {}),
|
|
214
|
-
detail: pendingPath
|
|
122
|
+
detail: pendingPath
|
|
215
123
|
};
|
|
216
124
|
}
|
|
217
125
|
}
|
|
@@ -259,7 +167,7 @@ function decideLegacyFallback(input) {
|
|
|
259
167
|
return {
|
|
260
168
|
kind: 'completed',
|
|
261
169
|
filledCells: 8,
|
|
262
|
-
detail: historyPath
|
|
170
|
+
detail: historyPath
|
|
263
171
|
};
|
|
264
172
|
}
|
|
265
173
|
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { CompactLifecycleRecord } from './compact-lifecycle-store.js';
|
|
2
|
+
import { type CompactStatuslineState } from './compact-statusline-cell-table.js';
|
|
3
|
+
export declare function stateFromLifecycle(record: CompactLifecycleRecord): CompactStatuslineState;
|
|
4
|
+
export declare function stateFromStalled(record: CompactLifecycleRecord): CompactStatuslineState;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
// src/services/compact-statusline/compact-statusline-state.ts
|
|
2
|
+
//
|
|
3
|
+
// Wave-5 class-A hoist (rid 2026-10-01-wave5-w5-3-compact-release): the two
|
|
4
|
+
// lifecycle-state readers `stateFromLifecycle` and `stateFromStalled` moved
|
|
5
|
+
// VERBATIM out of `compact-statusline-service.ts` (:210-252 at the split)
|
|
6
|
+
// for the 300-raw-line cap. They are module-internal helpers of the parent
|
|
7
|
+
// decision layer; nothing outside imports them. One-directional imports
|
|
8
|
+
// only: this module reads the cell table, the parent reads both.
|
|
9
|
+
import { CELL_BY_STAGE, STAGE_CELL_COMPACTING } from './compact-statusline-cell-table.js';
|
|
10
|
+
export function stateFromLifecycle(record) {
|
|
11
|
+
if (record.stage === 'failed') {
|
|
12
|
+
const failedAt = record.failedAt ?? 'compacting';
|
|
13
|
+
const state = {
|
|
14
|
+
kind: 'failed',
|
|
15
|
+
filledCells: CELL_BY_STAGE.get(failedAt) ?? STAGE_CELL_COMPACTING,
|
|
16
|
+
triggerRatio: record.triggerRatio,
|
|
17
|
+
redLine: record.redLine,
|
|
18
|
+
failedAt
|
|
19
|
+
};
|
|
20
|
+
if (record.errorSummary !== undefined) {
|
|
21
|
+
return { ...state, detail: record.errorSummary };
|
|
22
|
+
}
|
|
23
|
+
return state;
|
|
24
|
+
}
|
|
25
|
+
const filledCells = CELL_BY_STAGE.get(record.stage) ?? 0;
|
|
26
|
+
const base = {
|
|
27
|
+
kind: record.stage,
|
|
28
|
+
filledCells,
|
|
29
|
+
triggerRatio: record.triggerRatio,
|
|
30
|
+
redLine: record.redLine
|
|
31
|
+
};
|
|
32
|
+
if (record.stage === 'completed' && typeof record.afterRatio === 'number') {
|
|
33
|
+
return { ...base, afterRatio: record.afterRatio };
|
|
34
|
+
}
|
|
35
|
+
return base;
|
|
36
|
+
}
|
|
37
|
+
export function stateFromStalled(record) {
|
|
38
|
+
const filledCells = CELL_BY_STAGE.get(record.stage) ?? STAGE_CELL_COMPACTING;
|
|
39
|
+
const detailText = record.stage === 'failed' ? record.errorSummary : `no heartbeat for ${record.stage} stage`;
|
|
40
|
+
const state = {
|
|
41
|
+
kind: 'stalled',
|
|
42
|
+
filledCells,
|
|
43
|
+
triggerRatio: record.triggerRatio,
|
|
44
|
+
redLine: record.redLine
|
|
45
|
+
};
|
|
46
|
+
if (detailText !== undefined) {
|
|
47
|
+
return { ...state, detail: detailText };
|
|
48
|
+
}
|
|
49
|
+
return state;
|
|
50
|
+
}
|
|
@@ -55,14 +55,14 @@ export function planMigration(opts) {
|
|
|
55
55
|
alreadyAtV2: true,
|
|
56
56
|
detectedSchemaVersion,
|
|
57
57
|
newConfigSchemaVersion: CONFIG_SCHEMA_VERSION_V2,
|
|
58
|
-
willMigrateFields: []
|
|
58
|
+
willMigrateFields: []
|
|
59
59
|
};
|
|
60
60
|
}
|
|
61
61
|
return {
|
|
62
62
|
alreadyAtV2: false,
|
|
63
63
|
detectedSchemaVersion,
|
|
64
64
|
newConfigSchemaVersion: CONFIG_SCHEMA_VERSION_V2,
|
|
65
|
-
willMigrateFields
|
|
65
|
+
willMigrateFields
|
|
66
66
|
};
|
|
67
67
|
}
|
|
68
68
|
export function executeMigration(opts) {
|
|
@@ -71,7 +71,7 @@ export function restoreField(opts) {
|
|
|
71
71
|
field: opts.field,
|
|
72
72
|
value: bak[opts.field],
|
|
73
73
|
source: 'config.json.1.x.bak',
|
|
74
|
-
restoredAt: new Date().toISOString()
|
|
74
|
+
restoredAt: new Date().toISOString()
|
|
75
75
|
};
|
|
76
76
|
writeFileSync(sidecar, JSON.stringify(payload, null, 2) + '\n', 'utf8');
|
|
77
77
|
return { available: true, field: opts.field, applied: true, sidecarPath: sidecar };
|
|
@@ -43,10 +43,14 @@ function normalizeBoundaryPath(path) {
|
|
|
43
43
|
catch {
|
|
44
44
|
realPath = resolved;
|
|
45
45
|
}
|
|
46
|
-
return process.platform === 'win32' || process.platform === 'darwin'
|
|
46
|
+
return process.platform === 'win32' || process.platform === 'darwin'
|
|
47
|
+
? realPath.toLowerCase()
|
|
48
|
+
: realPath;
|
|
47
49
|
}
|
|
48
50
|
function getHomeBoundaryPaths() {
|
|
49
|
-
return new Set([homedir(), process.env.HOME, process.env.USERPROFILE]
|
|
51
|
+
return new Set([homedir(), process.env.HOME, process.env.USERPROFILE]
|
|
52
|
+
.filter((path) => typeof path === 'string' && path.length > 0)
|
|
53
|
+
.map(normalizeBoundaryPath));
|
|
50
54
|
}
|
|
51
55
|
export function findProjectRoot(startPath) {
|
|
52
56
|
const homeBoundaryPaths = getHomeBoundaryPaths();
|
|
@@ -54,7 +58,8 @@ export function findProjectRoot(startPath) {
|
|
|
54
58
|
let parent = dirname(current);
|
|
55
59
|
let pkgRoot = null;
|
|
56
60
|
while (current !== parent && !homeBoundaryPaths.has(normalizeBoundaryPath(current))) {
|
|
57
|
-
if (existsSync(resolve(current, '.peaks', 'config.json')) &&
|
|
61
|
+
if (existsSync(resolve(current, '.peaks', 'config.json')) &&
|
|
62
|
+
isSafeProjectConfigMarker(current)) {
|
|
58
63
|
return current;
|
|
59
64
|
}
|
|
60
65
|
// .git is the definitive project root — return immediately
|
|
@@ -77,7 +82,8 @@ export function resolveProjectRootForConfig(startPath) {
|
|
|
77
82
|
let parent = dirname(current);
|
|
78
83
|
let pkgRoot = null;
|
|
79
84
|
while (current !== parent && !homeBoundaryPaths.has(normalizeBoundaryPath(current))) {
|
|
80
|
-
if (existsSync(resolve(current, '.peaks', 'config.json')) &&
|
|
85
|
+
if (existsSync(resolve(current, '.peaks', 'config.json')) &&
|
|
86
|
+
isSafeProjectConfigMarker(current)) {
|
|
81
87
|
return current;
|
|
82
88
|
}
|
|
83
89
|
if (existsSync(resolve(current, '.git'))) {
|
|
@@ -213,7 +219,8 @@ function resolveProjectRootFromGit(startPath) {
|
|
|
213
219
|
return null;
|
|
214
220
|
rawRoot = resolve(trimmed);
|
|
215
221
|
}
|
|
216
|
-
catch {
|
|
222
|
+
catch {
|
|
223
|
+
// TODO(g2): legacy silent catch — grace: 1 minor release (v2.14.0)
|
|
217
224
|
// git not on PATH, startPath is not in a repo, or some other
|
|
218
225
|
// benign failure — fall through to the heuristic.
|
|
219
226
|
return null;
|
|
@@ -327,7 +334,9 @@ function validateProjectBootstrapConfigPath(projectRootPath, peaksPath, configPa
|
|
|
327
334
|
const projectRootReal = realpathSync(projectRootPath);
|
|
328
335
|
const peaksStats = lstatSync(peaksPath);
|
|
329
336
|
const peaksReal = realpathSync(peaksPath);
|
|
330
|
-
if (!peaksStats.isDirectory() ||
|
|
337
|
+
if (!peaksStats.isDirectory() ||
|
|
338
|
+
peaksStats.isSymbolicLink() ||
|
|
339
|
+
peaksReal !== resolve(projectRootReal, '.peaks')) {
|
|
331
340
|
throw new Error('Project config path must stay inside the project root');
|
|
332
341
|
}
|
|
333
342
|
try {
|
|
@@ -359,7 +368,9 @@ export function validateUserConfigPathForWrite(configPath) {
|
|
|
359
368
|
const userRootReal = realpathSync(userRoot);
|
|
360
369
|
const peaksStats = lstatSync(peaksPath);
|
|
361
370
|
const peaksReal = realpathSync(peaksPath);
|
|
362
|
-
if (!peaksStats.isDirectory() ||
|
|
371
|
+
if (!peaksStats.isDirectory() ||
|
|
372
|
+
peaksStats.isSymbolicLink() ||
|
|
373
|
+
peaksReal !== resolve(userRootReal, '.peaks')) {
|
|
363
374
|
throw new Error('User config path must stay inside the user root');
|
|
364
375
|
}
|
|
365
376
|
try {
|
|
@@ -395,7 +406,9 @@ export function validateArtifactWorkspaceMarkerPath(artifactRoot, peaksPath, mar
|
|
|
395
406
|
const artifactRootReal = realpathSync(artifactRoot);
|
|
396
407
|
const peaksStats = lstatSync(peaksPath);
|
|
397
408
|
const peaksReal = realpathSync(peaksPath);
|
|
398
|
-
if (!peaksStats.isDirectory() ||
|
|
409
|
+
if (!peaksStats.isDirectory() ||
|
|
410
|
+
peaksStats.isSymbolicLink() ||
|
|
411
|
+
peaksReal !== resolve(artifactRootReal, '.peaks')) {
|
|
399
412
|
throw new Error('Artifact workspace marker must stay inside the artifact workspace');
|
|
400
413
|
}
|
|
401
414
|
try {
|
|
@@ -420,7 +433,10 @@ export function validateArtifactWorkspaceMarkerPath(artifactRoot, peaksPath, mar
|
|
|
420
433
|
function validateOpenConfigFile(fd, tempPath, errorMessage) {
|
|
421
434
|
const fdStats = fstatSync(fd);
|
|
422
435
|
const pathStats = lstatSync(tempPath);
|
|
423
|
-
if (!fdStats.isFile() ||
|
|
436
|
+
if (!fdStats.isFile() ||
|
|
437
|
+
!pathStats.isFile() ||
|
|
438
|
+
fdStats.dev !== pathStats.dev ||
|
|
439
|
+
fdStats.ino !== pathStats.ino) {
|
|
424
440
|
throw new Error(errorMessage);
|
|
425
441
|
}
|
|
426
442
|
if (fdStats.nlink !== 1 || pathStats.nlink !== 1) {
|
|
@@ -432,7 +448,9 @@ function getSafeTempOpenFlags() {
|
|
|
432
448
|
return typeof constants.O_NOFOLLOW === 'number' ? baseFlags | constants.O_NOFOLLOW : baseFlags;
|
|
433
449
|
}
|
|
434
450
|
function getSafeReadOpenFlags() {
|
|
435
|
-
return typeof constants.O_NOFOLLOW === 'number'
|
|
451
|
+
return typeof constants.O_NOFOLLOW === 'number'
|
|
452
|
+
? constants.O_RDONLY | constants.O_NOFOLLOW
|
|
453
|
+
: constants.O_RDONLY;
|
|
436
454
|
}
|
|
437
455
|
export function readConfigFileSafely(configPath, errorMessage) {
|
|
438
456
|
const fd = openSync(configPath, getSafeReadOpenFlags());
|