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
|
@@ -7,15 +7,15 @@ import { addJsonOption, printResult } from '../cli-helpers.js';
|
|
|
7
7
|
import { isUnsafePathInput } from '../../shared/path-safety.js';
|
|
8
8
|
import { JobStateStore } from '../../services/job/job-state-store.js';
|
|
9
9
|
import { JobOrchestrator } from '../../services/job/job-orchestrator.js';
|
|
10
|
-
import { writeJobProgress, readJobProgress, tryReadJobProgress } from '../../services/job/job-progress-store.js';
|
|
10
|
+
import { writeJobProgress, readJobProgress, tryReadJobProgress, describeNextSlice } from '../../services/job/job-progress-store.js';
|
|
11
11
|
import { JobRotation } from '../../services/job/job-rotation.js';
|
|
12
12
|
import { SubAgentJobWrapper } from '../../services/job/subagent-job-wrapper.js';
|
|
13
13
|
import { emitJobEvent } from '../../services/job/job-event-emitter.js';
|
|
14
|
-
import { JobInitInputSchema, JobCheckpointInputSchema, JobBlockInputSchema
|
|
14
|
+
import { JobInitInputSchema, JobCheckpointInputSchema, JobBlockInputSchema } from '../../services/job/job-types.js';
|
|
15
15
|
import { getCurrentSessionId } from '../../services/skills/skill-presence-service.js';
|
|
16
|
-
import { buildCostCheckEnvelope, runKarpathyCostCheck
|
|
16
|
+
import { buildCostCheckEnvelope, runKarpathyCostCheck } from '../../services/karpathy-cost/karpathy-cost-check-service.js';
|
|
17
17
|
import { read24hState } from '../../services/24h-mode/store.js';
|
|
18
|
-
import { codegraphRefreshNotice, refreshCodegraphAfterSlice
|
|
18
|
+
import { codegraphRefreshNotice, refreshCodegraphAfterSlice } from '../../services/codegraph/codegraph-autorefresh.js';
|
|
19
19
|
// `printResult`'s third parameter is `asJson: boolean`. Each `job` subcommand
|
|
20
20
|
// registers `--json` (see the `addJsonOption` calls below), so the flag to pass
|
|
21
21
|
// it is `opts.json` — NEVER the whole options object. Commander types an
|
|
@@ -26,7 +26,13 @@ import { codegraphRefreshNotice, refreshCodegraphAfterSlice, } from '../../servi
|
|
|
26
26
|
// envelope instead of on stderr as `warning: `. `job progress` always passed
|
|
27
27
|
// `opts.json`; the rest of this file did not, and E1 (2026-09-17) brought them
|
|
28
28
|
// in line. Do not reintroduce the object form.
|
|
29
|
-
|
|
29
|
+
//
|
|
30
|
+
// S10 (2026-09-20): the parameter is now `JobJsonOpts` rather than `any`. The
|
|
31
|
+
// gate above is about which VALUE is passed, not about the parameter's type —
|
|
32
|
+
// declaring the one field this function reads is what stops every `opts.<x>`
|
|
33
|
+
// call site in the file from being an `any` access. See the option-interface
|
|
34
|
+
// block above `registerJobCommands`.
|
|
35
|
+
export function asJson(opts) {
|
|
30
36
|
return opts.json === true;
|
|
31
37
|
}
|
|
32
38
|
/**
|
|
@@ -71,7 +77,7 @@ function projectRoot(opts) {
|
|
|
71
77
|
* that job state has no "unknown-sid" location to land in — an unresolvable
|
|
72
78
|
* session is an error, not a silent fallback.
|
|
73
79
|
*/
|
|
74
|
-
const SESSION_ID_HELP = 'session id (default: resolve from .peaks/_runtime/session.json; falls back to PEAKS_SESSION_ID env var; final fallback: NO_ACTIVE_SESSION error)';
|
|
80
|
+
export const SESSION_ID_HELP = 'session id (default: resolve from .peaks/_runtime/session.json; falls back to PEAKS_SESSION_ID env var; final fallback: NO_ACTIVE_SESSION error)';
|
|
75
81
|
/**
|
|
76
82
|
* The session (a direct child of `<project>/.peaks/_runtime/`) that holds
|
|
77
83
|
* `jobId`, or null. Only used to explain a miss: a job that lives in another
|
|
@@ -82,7 +88,8 @@ function findSessionHoldingJob(project, jobId) {
|
|
|
82
88
|
if (!existsSync(runtimeDir))
|
|
83
89
|
return null;
|
|
84
90
|
for (const entry of readdirSync(runtimeDir, { withFileTypes: true })) {
|
|
85
|
-
if (entry.isDirectory() &&
|
|
91
|
+
if (entry.isDirectory() &&
|
|
92
|
+
existsSync(join(runtimeDir, entry.name, 'job', jobId, 'state.json'))) {
|
|
86
93
|
return entry.name;
|
|
87
94
|
}
|
|
88
95
|
}
|
|
@@ -109,7 +116,7 @@ function findSessionHoldingJob(project, jobId) {
|
|
|
109
116
|
* error names the session that does hold it (if any), instead of leaving the
|
|
110
117
|
* caller with a bare "no state for <job> at <other-sid>" path.
|
|
111
118
|
*/
|
|
112
|
-
function resolveJobStateRoot(opts, jobId) {
|
|
119
|
+
export function resolveJobStateRoot(opts, jobId) {
|
|
113
120
|
const project = projectRoot(opts);
|
|
114
121
|
const sessionId = opts.sessionId ?? process.env.PEAKS_SESSION_ID ?? getCurrentSessionId(project);
|
|
115
122
|
if (!sessionId) {
|
|
@@ -146,10 +153,13 @@ function resolveSliceId(store, jobId, sliceId) {
|
|
|
146
153
|
return { sliceId: hit.sliceId };
|
|
147
154
|
return {
|
|
148
155
|
message: `no slice "${sliceId}" in job ${jobId}; valid ids: ${slices.map((sl) => `${sl.sliceId} (${sl.label})`).join(', ')}`,
|
|
149
|
-
validSliceIds: slices.map((sl) => sl.sliceId)
|
|
156
|
+
validSliceIds: slices.map((sl) => sl.sliceId)
|
|
150
157
|
};
|
|
151
158
|
}
|
|
152
|
-
export function registerJobCommands(program, io = {
|
|
159
|
+
export function registerJobCommands(program, io = {
|
|
160
|
+
stdout: (t) => process.stdout.write(t),
|
|
161
|
+
stderr: (t) => process.stderr.write(t)
|
|
162
|
+
}) {
|
|
153
163
|
const job = new Command('job').description('Drive long multi-slice work as one Job (peaks-code Step 0.8+)');
|
|
154
164
|
job
|
|
155
165
|
.command('init')
|
|
@@ -161,7 +171,7 @@ export function registerJobCommands(program, io = { stdout: (t) => process.stdou
|
|
|
161
171
|
.option('--rotate-every <n>', 'rotate every N slices (rotating mode)', '3')
|
|
162
172
|
.option('--session-id <sid>', SESSION_ID_HELP)
|
|
163
173
|
.option('--project <repo>')
|
|
164
|
-
.action(
|
|
174
|
+
.action((opts) => {
|
|
165
175
|
const project = projectRoot(opts);
|
|
166
176
|
// Resolve sessionId: explicit flag > PEAKS_SESSION_ID > caller-first session binding
|
|
167
177
|
// (this caller's binding, else the project-global session.json) > FAIL.
|
|
@@ -177,13 +187,16 @@ export function registerJobCommands(program, io = { stdout: (t) => process.stdou
|
|
|
177
187
|
const parsed = JobInitInputSchema.safeParse({
|
|
178
188
|
jobId: opts.jobId,
|
|
179
189
|
sessionId,
|
|
180
|
-
sliceList: opts.sliceList
|
|
190
|
+
sliceList: opts.sliceList
|
|
191
|
+
.split(',')
|
|
192
|
+
.map((s) => s.trim())
|
|
193
|
+
.filter(Boolean),
|
|
181
194
|
parallelismHint: opts.parallelismHint,
|
|
182
195
|
exitPolicy: opts.exitPolicy,
|
|
183
196
|
mainLoopStrategy: opts.mainLoopStrategy,
|
|
184
197
|
rotateEvery: Number(opts.rotateEvery),
|
|
185
198
|
project,
|
|
186
|
-
json: opts.json
|
|
199
|
+
json: opts.json
|
|
187
200
|
});
|
|
188
201
|
if (!parsed.success)
|
|
189
202
|
return failResult(io, fail('init', 'INVALID_INIT', parsed.error.message, {}), opts);
|
|
@@ -197,10 +210,15 @@ export function registerJobCommands(program, io = { stdout: (t) => process.stdou
|
|
|
197
210
|
parallelismHint: parsed.data.parallelismHint,
|
|
198
211
|
exitPolicy: parsed.data.exitPolicy,
|
|
199
212
|
mainLoopStrategy: parsed.data.mainLoopStrategy,
|
|
200
|
-
rotateEvery: parsed.data.rotateEvery
|
|
213
|
+
rotateEvery: parsed.data.rotateEvery
|
|
201
214
|
});
|
|
202
215
|
try {
|
|
203
|
-
emitJobEvent({
|
|
216
|
+
emitJobEvent({
|
|
217
|
+
kind: 'job-started',
|
|
218
|
+
jobId: state.jobId,
|
|
219
|
+
total: state.slices.length,
|
|
220
|
+
strategy: state.mainLoopStrategy
|
|
221
|
+
});
|
|
204
222
|
}
|
|
205
223
|
catch (e) {
|
|
206
224
|
// ADVISORY (F1, 2026-09-17) — deliberately exits 0. Event emission is a
|
|
@@ -210,9 +228,13 @@ export function registerJobCommands(program, io = { stdout: (t) => process.stdou
|
|
|
210
228
|
// in tests/unit/cli/job-exit-code.test.ts.
|
|
211
229
|
void e;
|
|
212
230
|
}
|
|
213
|
-
printResult(io, ok('init', {
|
|
231
|
+
printResult(io, ok('init', {
|
|
232
|
+
jobId: state.jobId,
|
|
233
|
+
sliceCount: state.slices.length,
|
|
234
|
+
statePath: `${jobRoot.rootDir}/${state.jobId}/state.json`
|
|
235
|
+
}), asJson(opts));
|
|
214
236
|
});
|
|
215
|
-
addJsonOption(job.commands.find(c => c.name() === 'init'));
|
|
237
|
+
addJsonOption(job.commands.find((c) => c.name() === 'init'));
|
|
216
238
|
job
|
|
217
239
|
.command('status')
|
|
218
240
|
.requiredOption('--job-id <jid>')
|
|
@@ -220,7 +242,7 @@ export function registerJobCommands(program, io = { stdout: (t) => process.stdou
|
|
|
220
242
|
.option('--show-cost', 'overlay cost from peaks budget')
|
|
221
243
|
.option('--session-id <sid>', SESSION_ID_HELP)
|
|
222
244
|
.option('--project <repo>')
|
|
223
|
-
.action(
|
|
245
|
+
.action((opts) => {
|
|
224
246
|
const store = new JobStateStore(resolveJobStateRoot(opts, opts.jobId).rootDir);
|
|
225
247
|
const orch = new JobOrchestrator(store);
|
|
226
248
|
const s = orch.status(opts.jobId);
|
|
@@ -230,13 +252,28 @@ export function registerJobCommands(program, io = { stdout: (t) => process.stdou
|
|
|
230
252
|
process.stdout.write(`\rjob ${opts.jobId}: ${bar} ${s.done}/${s.total}${s.currentSlice ? ` next=${s.currentSlice}` : ''} `);
|
|
231
253
|
};
|
|
232
254
|
draw();
|
|
233
|
-
const iv = setInterval(() => {
|
|
234
|
-
|
|
235
|
-
|
|
255
|
+
const iv = setInterval(() => {
|
|
256
|
+
const u = orch.status(opts.jobId);
|
|
257
|
+
Object.assign(s, u);
|
|
258
|
+
draw();
|
|
259
|
+
if (u.done + u.failed + u.skipped + u.blocked >= u.total)
|
|
260
|
+
clearInterval(iv);
|
|
261
|
+
}, 3000);
|
|
262
|
+
process.on('SIGINT', () => {
|
|
263
|
+
clearInterval(iv);
|
|
264
|
+
process.stdout.write('\n');
|
|
265
|
+
process.exit(0);
|
|
266
|
+
});
|
|
236
267
|
return;
|
|
237
268
|
}
|
|
238
269
|
try {
|
|
239
|
-
emitJobEvent({
|
|
270
|
+
emitJobEvent({
|
|
271
|
+
kind: 'job-progress',
|
|
272
|
+
jobId: opts.jobId,
|
|
273
|
+
done: s.done,
|
|
274
|
+
total: s.total,
|
|
275
|
+
...(s.currentSlice ? { currentSlice: s.currentSlice } : {})
|
|
276
|
+
});
|
|
240
277
|
}
|
|
241
278
|
catch (e) {
|
|
242
279
|
// ADVISORY (F1, 2026-09-17) — deliberately exits 0. The status itself
|
|
@@ -246,20 +283,26 @@ export function registerJobCommands(program, io = { stdout: (t) => process.stdou
|
|
|
246
283
|
}
|
|
247
284
|
printResult(io, ok('status', s), asJson(opts));
|
|
248
285
|
});
|
|
249
|
-
addJsonOption(job.commands.find(c => c.name() === 'status'));
|
|
286
|
+
addJsonOption(job.commands.find((c) => c.name() === 'status'));
|
|
250
287
|
// M4.2: wire rotate-now to JobRotation (session-rotate callbacks are stubs pending M6.5 batch-fix).
|
|
251
|
-
job
|
|
288
|
+
job
|
|
289
|
+
.command('rotate-now')
|
|
252
290
|
.requiredOption('--job-id <jid>')
|
|
253
291
|
.option('--session-id <sid>', SESSION_ID_HELP)
|
|
254
292
|
.option('--project <repo>')
|
|
255
293
|
.action(async (opts) => {
|
|
256
294
|
const store = new JobStateStore(resolveJobStateRoot(opts, opts.jobId).rootDir);
|
|
257
|
-
const rotation = new JobRotation(store, async (_jid) => {
|
|
295
|
+
const rotation = new JobRotation(store, async (_jid) => {
|
|
296
|
+
/* delegate to peaks session rotate — implementation wired in M6.5 batch-fix */ return {
|
|
297
|
+
rotated: true
|
|
298
|
+
};
|
|
299
|
+
}, async (jid) => ({ jobId: jid, cycle: 0 }));
|
|
258
300
|
const r = await rotation.rotateNow(opts.jobId);
|
|
259
301
|
printResult(io, ok('rotate-now', r), asJson(opts));
|
|
260
302
|
});
|
|
261
|
-
addJsonOption(job.commands.find(c => c.name() === 'rotate-now'));
|
|
262
|
-
job
|
|
303
|
+
addJsonOption(job.commands.find((c) => c.name() === 'rotate-now'));
|
|
304
|
+
job
|
|
305
|
+
.command('subagent-cleanup')
|
|
263
306
|
.requiredOption('--job-id <jid>')
|
|
264
307
|
.requiredOption('--batch-id <bid>')
|
|
265
308
|
.option('--force')
|
|
@@ -267,10 +310,14 @@ export function registerJobCommands(program, io = { stdout: (t) => process.stdou
|
|
|
267
310
|
.option('--project <repo>')
|
|
268
311
|
.action(async (opts) => {
|
|
269
312
|
const wrapper = new SubAgentJobWrapper(new JobStateStore(resolveJobStateRoot(opts, opts.jobId).rootDir), async () => ({ batchId: opts.batchId }));
|
|
270
|
-
const r = await wrapper.cleanup({
|
|
313
|
+
const r = await wrapper.cleanup({
|
|
314
|
+
jobId: opts.jobId,
|
|
315
|
+
batchId: opts.batchId,
|
|
316
|
+
force: !!opts.force
|
|
317
|
+
});
|
|
271
318
|
printResult(io, ok('subagent-cleanup', r), asJson(opts));
|
|
272
319
|
});
|
|
273
|
-
addJsonOption(job.commands.find(c => c.name() === 'subagent-cleanup'));
|
|
320
|
+
addJsonOption(job.commands.find((c) => c.name() === 'subagent-cleanup'));
|
|
274
321
|
// M3.2: wire the remaining 5 subcommand slots — block, checkpoint, continue, handoff, resume.
|
|
275
322
|
job
|
|
276
323
|
.command('checkpoint')
|
|
@@ -283,9 +330,13 @@ export function registerJobCommands(program, io = { stdout: (t) => process.stdou
|
|
|
283
330
|
.option('--project <repo>')
|
|
284
331
|
.action(async (opts) => {
|
|
285
332
|
const parsed = JobCheckpointInputSchema.safeParse({
|
|
286
|
-
jobId: opts.jobId,
|
|
287
|
-
|
|
288
|
-
|
|
333
|
+
jobId: opts.jobId,
|
|
334
|
+
sliceId: opts.sliceId,
|
|
335
|
+
state: opts.state,
|
|
336
|
+
commitSha: opts.commitSha,
|
|
337
|
+
reason: opts.reason,
|
|
338
|
+
project: projectRoot(opts),
|
|
339
|
+
json: opts.json
|
|
289
340
|
});
|
|
290
341
|
if (!parsed.success)
|
|
291
342
|
return failResult(io, fail('checkpoint', 'INVALID_CHECKPOINT', parsed.error.message, {}), opts);
|
|
@@ -297,7 +348,9 @@ export function registerJobCommands(program, io = { stdout: (t) => process.stdou
|
|
|
297
348
|
const slice = resolveSliceId(store, parsed.data.jobId, parsed.data.sliceId);
|
|
298
349
|
if ('message' in slice) {
|
|
299
350
|
return failResult(io, fail('checkpoint', 'SLICE_NOT_FOUND', slice.message, {
|
|
300
|
-
jobId: parsed.data.jobId,
|
|
351
|
+
jobId: parsed.data.jobId,
|
|
352
|
+
sliceId: parsed.data.sliceId,
|
|
353
|
+
validSliceIds: slice.validSliceIds
|
|
301
354
|
}, ['Re-run with one of the valid slice ids']), opts);
|
|
302
355
|
}
|
|
303
356
|
const sliceId = slice.sliceId;
|
|
@@ -310,7 +363,11 @@ export function registerJobCommands(program, io = { stdout: (t) => process.stdou
|
|
|
310
363
|
// when the refresh succeeded or when no codegraph store was in use.
|
|
311
364
|
let codegraphWarning = null;
|
|
312
365
|
if (parsed.data.state === 'done') {
|
|
313
|
-
await orch.checkpointDone({
|
|
366
|
+
await orch.checkpointDone({
|
|
367
|
+
jobId: parsed.data.jobId,
|
|
368
|
+
sliceId,
|
|
369
|
+
...(parsed.data.commitSha ? { commitSha: parsed.data.commitSha } : {})
|
|
370
|
+
});
|
|
314
371
|
// v3.1.2: after each --state done, mirror slice progress to
|
|
315
372
|
// .peaks/_runtime/<sessionId>/job/<jid>/progress.json so the
|
|
316
373
|
// next LLM turn (or peaks code gate-step-08 hook) can read it.
|
|
@@ -321,7 +378,7 @@ export function registerJobCommands(program, io = { stdout: (t) => process.stdou
|
|
|
321
378
|
jobId: parsed.data.jobId,
|
|
322
379
|
done: state.done,
|
|
323
380
|
total: state.total,
|
|
324
|
-
currentSlice: state.currentSlice
|
|
381
|
+
currentSlice: state.currentSlice,
|
|
325
382
|
lastCommitSha: parsed.data.commitSha ?? null,
|
|
326
383
|
updatedAt: new Date().toISOString()
|
|
327
384
|
});
|
|
@@ -347,19 +404,31 @@ export function registerJobCommands(program, io = { stdout: (t) => process.stdou
|
|
|
347
404
|
codegraph = await refreshCodegraphAfterSlice(project);
|
|
348
405
|
}
|
|
349
406
|
catch (e) {
|
|
350
|
-
codegraph = {
|
|
407
|
+
codegraph = {
|
|
408
|
+
refreshed: false,
|
|
409
|
+
reason: 'unavailable',
|
|
410
|
+
note: `auto codegraph refresh failed: ${e instanceof Error ? e.message : String(e)}`
|
|
411
|
+
};
|
|
351
412
|
}
|
|
352
413
|
codegraphWarning = codegraphRefreshNotice(codegraph);
|
|
353
414
|
}
|
|
354
415
|
else if (parsed.data.state === 'skipped') {
|
|
355
|
-
await orch.checkpointSkipped({
|
|
416
|
+
await orch.checkpointSkipped({
|
|
417
|
+
jobId: parsed.data.jobId,
|
|
418
|
+
sliceId,
|
|
419
|
+
reason: parsed.data.reason
|
|
420
|
+
});
|
|
356
421
|
}
|
|
357
422
|
else {
|
|
358
|
-
await orch.checkpointFailed({
|
|
423
|
+
await orch.checkpointFailed({
|
|
424
|
+
jobId: parsed.data.jobId,
|
|
425
|
+
sliceId,
|
|
426
|
+
reason: parsed.data.reason
|
|
427
|
+
});
|
|
359
428
|
}
|
|
360
429
|
printResult(io, ok('checkpoint', { sliceId, status: parsed.data.state, codegraph }, codegraphWarning === null ? [] : [codegraphWarning]), asJson(opts));
|
|
361
430
|
});
|
|
362
|
-
addJsonOption(job.commands.find(c => c.name() === 'checkpoint'));
|
|
431
|
+
addJsonOption(job.commands.find((c) => c.name() === 'checkpoint'));
|
|
363
432
|
job
|
|
364
433
|
.command('block')
|
|
365
434
|
.requiredOption('--job-id <jid>')
|
|
@@ -369,8 +438,11 @@ export function registerJobCommands(program, io = { stdout: (t) => process.stdou
|
|
|
369
438
|
.option('--project <repo>')
|
|
370
439
|
.action(async (opts) => {
|
|
371
440
|
const parsed = JobBlockInputSchema.safeParse({
|
|
372
|
-
jobId: opts.jobId,
|
|
373
|
-
|
|
441
|
+
jobId: opts.jobId,
|
|
442
|
+
sliceId: opts.sliceId,
|
|
443
|
+
reason: opts.reason,
|
|
444
|
+
project: projectRoot(opts),
|
|
445
|
+
json: opts.json
|
|
374
446
|
});
|
|
375
447
|
if (!parsed.success)
|
|
376
448
|
return failResult(io, fail('block', 'INVALID_BLOCK', parsed.error.message, {}), opts);
|
|
@@ -380,42 +452,43 @@ export function registerJobCommands(program, io = { stdout: (t) => process.stdou
|
|
|
380
452
|
const slice = resolveSliceId(store, parsed.data.jobId, parsed.data.sliceId);
|
|
381
453
|
if ('message' in slice) {
|
|
382
454
|
return failResult(io, fail('block', 'SLICE_NOT_FOUND', slice.message, {
|
|
383
|
-
jobId: parsed.data.jobId,
|
|
455
|
+
jobId: parsed.data.jobId,
|
|
456
|
+
sliceId: parsed.data.sliceId,
|
|
457
|
+
validSliceIds: slice.validSliceIds
|
|
384
458
|
}, ['Re-run with one of the valid slice ids']), opts);
|
|
385
459
|
}
|
|
386
460
|
const orch = new JobOrchestrator(store);
|
|
387
461
|
await orch.blockSlice({ ...parsed.data, sliceId: slice.sliceId });
|
|
388
462
|
printResult(io, ok('block', { blocked: slice.sliceId, reason: parsed.data.reason }), asJson(opts));
|
|
389
463
|
});
|
|
390
|
-
addJsonOption(job.commands.find(c => c.name() === 'block'));
|
|
464
|
+
addJsonOption(job.commands.find((c) => c.name() === 'block'));
|
|
391
465
|
job
|
|
392
466
|
.command('continue')
|
|
393
467
|
.requiredOption('--job-id <jid>')
|
|
394
468
|
.option('--session-id <sid>', SESSION_ID_HELP)
|
|
395
469
|
.option('--project <repo>')
|
|
396
|
-
.action(
|
|
470
|
+
.action((opts) => {
|
|
397
471
|
const store = new JobStateStore(resolveJobStateRoot(opts, opts.jobId).rootDir);
|
|
398
472
|
const orch = new JobOrchestrator(store);
|
|
399
473
|
const r = orch.continueNow(opts.jobId);
|
|
400
474
|
printResult(io, ok('continue', r), asJson(opts));
|
|
401
475
|
});
|
|
402
|
-
addJsonOption(job.commands.find(c => c.name() === 'continue'));
|
|
476
|
+
addJsonOption(job.commands.find((c) => c.name() === 'continue'));
|
|
403
477
|
job
|
|
404
478
|
.command('resume')
|
|
405
479
|
.requiredOption('--job-id <jid>')
|
|
406
480
|
.option('--session-id <sid>', SESSION_ID_HELP)
|
|
407
481
|
.option('--project <repo>')
|
|
408
|
-
.action(
|
|
482
|
+
.action((opts) => {
|
|
409
483
|
const store = new JobStateStore(resolveJobStateRoot(opts, opts.jobId).rootDir);
|
|
410
484
|
const orch = new JobOrchestrator(store);
|
|
411
485
|
const s = orch.status(opts.jobId);
|
|
412
486
|
printResult(io, ok('resume', { resumed: opts.jobId, ...s }), asJson(opts));
|
|
413
487
|
});
|
|
414
|
-
addJsonOption(job.commands.find(c => c.name() === 'resume'));
|
|
415
|
-
// v3.1.2: read the on-disk slice progress mirror written by `peaks
|
|
416
|
-
//
|
|
417
|
-
//
|
|
418
|
-
// (<currentSlice>)` without re-deriving from state.json.
|
|
488
|
+
addJsonOption(job.commands.find((c) => c.name() === 'resume'));
|
|
489
|
+
// v3.1.2: read the on-disk slice progress mirror written by `peaks job
|
|
490
|
+
// checkpoint --state done`; gate-step-08 and Step 0.7 (resume) read it too. The
|
|
491
|
+
// `next:` sentence comes from describeNextSlice, never re-derived from state.json.
|
|
419
492
|
job
|
|
420
493
|
.command('progress')
|
|
421
494
|
.description('v3.1.2: read the on-disk slice progress mirror (.peaks/_runtime/<sid>/job/<jid>/progress.json). ' +
|
|
@@ -436,7 +509,7 @@ export function registerJobCommands(program, io = { stdout: (t) => process.stdou
|
|
|
436
509
|
// `tryReadJobProgress` returns `null` for a corrupt file too, so "done=0"
|
|
437
510
|
// there would report unreadable state as empty state).
|
|
438
511
|
.option('--allow-missing', 'report an absent progress.json as NO_PROGRESS (expected absence) rather than PROGRESS_READ_FAILED (read error); the command still exits non-zero')
|
|
439
|
-
.action(
|
|
512
|
+
.action((opts) => {
|
|
440
513
|
try {
|
|
441
514
|
const jobRoot = resolveJobStateRoot(opts, opts.jobId);
|
|
442
515
|
const sessId = jobRoot.sessionId;
|
|
@@ -462,40 +535,38 @@ export function registerJobCommands(program, io = { stdout: (t) => process.stdou
|
|
|
462
535
|
]), opts);
|
|
463
536
|
return;
|
|
464
537
|
}
|
|
465
|
-
printResult(io, ok('progress', progress, [], [
|
|
466
|
-
`Next: slice #${progress.done + 1} of ${progress.total} (${progress.currentSlice})`
|
|
467
|
-
]), asJson(opts));
|
|
538
|
+
printResult(io, ok('progress', progress, [], [`Next: ${describeNextSlice(progress, progress.jobId)}`]), asJson(opts));
|
|
468
539
|
}
|
|
469
540
|
catch (err) {
|
|
470
541
|
failResult(io, fail('progress', 'PROGRESS_READ_FAILED', err instanceof Error ? err.message : String(err), { jobId: opts.jobId }, ['Verify the job id and try again']), opts);
|
|
471
542
|
}
|
|
472
543
|
});
|
|
473
|
-
addJsonOption(job.commands.find(c => c.name() === 'progress'));
|
|
544
|
+
addJsonOption(job.commands.find((c) => c.name() === 'progress'));
|
|
474
545
|
job
|
|
475
546
|
.command('handoff')
|
|
476
547
|
.requiredOption('--job-id <jid>')
|
|
477
548
|
.option('--session-id <sid>', SESSION_ID_HELP)
|
|
478
549
|
.option('--project <repo>')
|
|
479
|
-
.action(
|
|
550
|
+
.action((opts) => {
|
|
480
551
|
const store = new JobStateStore(resolveJobStateRoot(opts, opts.jobId).rootDir);
|
|
481
552
|
const orch = new JobOrchestrator(store);
|
|
482
553
|
const s = orch.status(opts.jobId);
|
|
483
554
|
printResult(io, ok('handoff', { handoffFor: opts.jobId, ...s }), asJson(opts));
|
|
484
555
|
});
|
|
485
|
-
addJsonOption(job.commands.find(c => c.name() === 'handoff'));
|
|
556
|
+
addJsonOption(job.commands.find((c) => c.name() === 'handoff'));
|
|
486
557
|
job
|
|
487
558
|
.command('karpathy-cost-check')
|
|
488
|
-
.description(
|
|
559
|
+
.description("Read the slice's rd/karpathy-review.md and decide whether to downgrade a block gateAction to warn (slice 2026-07-30-karpathy-cost-self-review).")
|
|
489
560
|
.requiredOption('--review-file <path>', 'path to rd/karpathy-review.md (or its .json sibling if the file is JSON)')
|
|
490
561
|
.option('--project <repo>')
|
|
491
562
|
.option('--session-id <sid>', SESSION_ID_HELP)
|
|
492
|
-
.action(
|
|
563
|
+
.action((opts) => {
|
|
493
564
|
const project = projectRoot(opts);
|
|
494
565
|
const sessionId = opts.sessionId ?? process.env.PEAKS_SESSION_ID ?? getCurrentSessionId(project);
|
|
495
566
|
if (!sessionId) {
|
|
496
567
|
return failResult(io, fail('karpathy-cost-check', 'NO_ACTIVE_SESSION', 'karpathy-cost-check requires --session-id (or an active peaks-code session)', { project }, [
|
|
497
568
|
'Re-run with --session-id <sid>',
|
|
498
|
-
'Or run `peaks workspace init` to create a session first'
|
|
569
|
+
'Or run `peaks workspace init` to create a session first'
|
|
499
570
|
]), opts);
|
|
500
571
|
}
|
|
501
572
|
const is24hModeActive = () => {
|
|
@@ -509,10 +580,10 @@ export function registerJobCommands(program, io = { stdout: (t) => process.stdou
|
|
|
509
580
|
};
|
|
510
581
|
const out = runKarpathyCostCheck({
|
|
511
582
|
reviewFilePath: opts.reviewFile,
|
|
512
|
-
is24hModeActive
|
|
583
|
+
is24hModeActive
|
|
513
584
|
});
|
|
514
585
|
printResult(io, buildCostCheckEnvelope(out), asJson(opts));
|
|
515
586
|
});
|
|
516
|
-
addJsonOption(job.commands.find(c => c.name() === 'karpathy-cost-check'));
|
|
587
|
+
addJsonOption(job.commands.find((c) => c.name() === 'karpathy-cost-check'));
|
|
517
588
|
program.addCommand(job);
|
|
518
589
|
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slice `b1-filesplit-campaign` (wave 3B) — verbatim extraction of the
|
|
3
|
+
* `peaks lease-metrics` option/kind type layer and the multi-session event
|
|
4
|
+
* reader out of `./lease-metrics-commands.ts` (344 raw lines > the 300 cap) so
|
|
5
|
+
* that module clears the cap. No field, no default, no message string and no
|
|
6
|
+
* filter changed: `lease-metrics-commands.ts` imports the names it still uses,
|
|
7
|
+
* re-exports the two public ones from its own path, and
|
|
8
|
+
* `./lease-stats-commands.ts` therefore needed no edit.
|
|
9
|
+
*
|
|
10
|
+
* `aggregateLeaseEvents` and `recomputeRate` stayed behind on purpose — each
|
|
11
|
+
* carries findings, and a NEW module in this campaign must be clean outright.
|
|
12
|
+
*/
|
|
13
|
+
import { type ObservabilityEvent } from '../../services/observability/observability-service.js';
|
|
14
|
+
export type LeaseMetricsOptions = {
|
|
15
|
+
session?: string;
|
|
16
|
+
project?: string;
|
|
17
|
+
rate?: boolean;
|
|
18
|
+
allSessions?: boolean;
|
|
19
|
+
json?: boolean;
|
|
20
|
+
};
|
|
21
|
+
export type KindCounts = {
|
|
22
|
+
spawn: number;
|
|
23
|
+
renew: number;
|
|
24
|
+
release: number;
|
|
25
|
+
gc: number;
|
|
26
|
+
autoRelease: number;
|
|
27
|
+
'autoRelease-failed': number;
|
|
28
|
+
'autoRelease-skipped': number;
|
|
29
|
+
};
|
|
30
|
+
export declare const EMPTY_COUNTS: KindCounts;
|
|
31
|
+
/**
|
|
32
|
+
* Part 5: leak-rate + lifetime statistics.
|
|
33
|
+
*
|
|
34
|
+
* Leaks are leases that were spawned but neither released (manual)
|
|
35
|
+
* nor auto-released nor gc'd. A naive count is
|
|
36
|
+
* `spawn - release - gc - autoRelease`; the result is the number
|
|
37
|
+
* of currently-alive leases in the absence of in-flight work
|
|
38
|
+
* (the on-disk lease files in `.peaks/_runtime/<sid>/worktree-leases/`
|
|
39
|
+
* are the canonical "alive" set; this aggregation is an estimate
|
|
40
|
+
* for sessions whose files have been pruned but the metrics
|
|
41
|
+
* stream survived).
|
|
42
|
+
*
|
|
43
|
+
* Lifetime: pair each spawn event with its first terminal event
|
|
44
|
+
* (release / gc / autoRelease / autoRelease-failed) for the same
|
|
45
|
+
* leaseId; the duration is the difference in milliseconds. The
|
|
46
|
+
* result is an avg / p99 across the completed leases. p99 is the
|
|
47
|
+
* 99th percentile; with 0-1 completed leases the field is null.
|
|
48
|
+
*/
|
|
49
|
+
export type RateStats = {
|
|
50
|
+
readonly totalSpawn: number;
|
|
51
|
+
readonly totalTerminal: number;
|
|
52
|
+
/** spawn - terminal — leases still "alive" per the metrics stream alone. */
|
|
53
|
+
readonly estimatedActive: number;
|
|
54
|
+
/** Estimated leaked = active - autoRelease-failed. Positive = worktrees
|
|
55
|
+
* the user / CLI will need to gc manually. */
|
|
56
|
+
readonly estimatedLeaked: number;
|
|
57
|
+
readonly completedLifetimes: number;
|
|
58
|
+
readonly avgLifetimeMs: number | null;
|
|
59
|
+
readonly p99LifetimeMs: number | null;
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Part 5: enumerate every session under `.peaks/_runtime/` for a
|
|
63
|
+
* project root and aggregate their lease events. Sessions without
|
|
64
|
+
* a `metrics/slices.jsonl` are skipped silently (a clean project
|
|
65
|
+
* has no lease events to report; that's not an error).
|
|
66
|
+
*/
|
|
67
|
+
export declare function readAllSessionLeaseEvents(projectRoot: string): {
|
|
68
|
+
sessions: ReadonlyArray<{
|
|
69
|
+
sessionId: string;
|
|
70
|
+
events: ReadonlyArray<ObservabilityEvent>;
|
|
71
|
+
}>;
|
|
72
|
+
missingSessions: number;
|
|
73
|
+
};
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slice `b1-filesplit-campaign` (wave 3B) — verbatim extraction of the
|
|
3
|
+
* `peaks lease-metrics` option/kind type layer and the multi-session event
|
|
4
|
+
* reader out of `./lease-metrics-commands.ts` (344 raw lines > the 300 cap) so
|
|
5
|
+
* that module clears the cap. No field, no default, no message string and no
|
|
6
|
+
* filter changed: `lease-metrics-commands.ts` imports the names it still uses,
|
|
7
|
+
* re-exports the two public ones from its own path, and
|
|
8
|
+
* `./lease-stats-commands.ts` therefore needed no edit.
|
|
9
|
+
*
|
|
10
|
+
* `aggregateLeaseEvents` and `recomputeRate` stayed behind on purpose — each
|
|
11
|
+
* carries findings, and a NEW module in this campaign must be clean outright.
|
|
12
|
+
*/
|
|
13
|
+
import { existsSync, readdirSync, statSync } from 'node:fs';
|
|
14
|
+
import { join } from 'node:path';
|
|
15
|
+
import { readObservabilityEvents } from '../../services/observability/observability-service.js';
|
|
16
|
+
export const EMPTY_COUNTS = {
|
|
17
|
+
spawn: 0,
|
|
18
|
+
renew: 0,
|
|
19
|
+
release: 0,
|
|
20
|
+
gc: 0,
|
|
21
|
+
autoRelease: 0,
|
|
22
|
+
'autoRelease-failed': 0,
|
|
23
|
+
'autoRelease-skipped': 0
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Part 5: enumerate every session under `.peaks/_runtime/` for a
|
|
27
|
+
* project root and aggregate their lease events. Sessions without
|
|
28
|
+
* a `metrics/slices.jsonl` are skipped silently (a clean project
|
|
29
|
+
* has no lease events to report; that's not an error).
|
|
30
|
+
*/
|
|
31
|
+
export function readAllSessionLeaseEvents(projectRoot) {
|
|
32
|
+
const runtimeDir = join(projectRoot, '.peaks', '_runtime');
|
|
33
|
+
if (!existsSync(runtimeDir))
|
|
34
|
+
return { sessions: [], missingSessions: 0 };
|
|
35
|
+
let entries;
|
|
36
|
+
try {
|
|
37
|
+
entries = readdirSync(runtimeDir);
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return { sessions: [], missingSessions: 0 };
|
|
41
|
+
}
|
|
42
|
+
const sessions = [];
|
|
43
|
+
let missing = 0;
|
|
44
|
+
for (const sid of entries) {
|
|
45
|
+
const sessionDir = join(runtimeDir, sid);
|
|
46
|
+
try {
|
|
47
|
+
if (!statSync(sessionDir).isDirectory())
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
try {
|
|
54
|
+
const all = readObservabilityEvents(projectRoot, sid);
|
|
55
|
+
const leaseEvents = all.filter((e) => e.category === 'lease');
|
|
56
|
+
if (leaseEvents.length === 0) {
|
|
57
|
+
missing++;
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
sessions.push({ sessionId: sid, events: leaseEvents });
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
missing++;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return { sessions, missingSessions: missing };
|
|
67
|
+
}
|
|
@@ -17,51 +17,10 @@
|
|
|
17
17
|
* on `category === 'lease'`; the schema is the same as every other
|
|
18
18
|
* observability event (Part 4.A reused the existing schema v1).
|
|
19
19
|
*/
|
|
20
|
-
import { Command } from 'commander';
|
|
20
|
+
import type { Command } from 'commander';
|
|
21
21
|
import { type ProgramIO } from '../cli-helpers.js';
|
|
22
22
|
import { type ObservabilityEvent } from '../../services/observability/observability-service.js';
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
*
|
|
26
|
-
* Leaks are leases that were spawned but neither released (manual)
|
|
27
|
-
* nor auto-released nor gc'd. A naive count is
|
|
28
|
-
* `spawn - release - gc - autoRelease`; the result is the number
|
|
29
|
-
* of currently-alive leases in the absence of in-flight work
|
|
30
|
-
* (the on-disk lease files in `.peaks/_runtime/<sid>/worktree-leases/`
|
|
31
|
-
* are the canonical "alive" set; this aggregation is an estimate
|
|
32
|
-
* for sessions whose files have been pruned but the metrics
|
|
33
|
-
* stream survived).
|
|
34
|
-
*
|
|
35
|
-
* Lifetime: pair each spawn event with its first terminal event
|
|
36
|
-
* (release / gc / autoRelease / autoRelease-failed) for the same
|
|
37
|
-
* leaseId; the duration is the difference in milliseconds. The
|
|
38
|
-
* result is an avg / p99 across the completed leases. p99 is the
|
|
39
|
-
* 99th percentile; with 0-1 completed leases the field is null.
|
|
40
|
-
*/
|
|
41
|
-
export type RateStats = {
|
|
42
|
-
readonly totalSpawn: number;
|
|
43
|
-
readonly totalTerminal: number;
|
|
44
|
-
/** spawn - terminal — leases still "alive" per the metrics stream alone. */
|
|
45
|
-
readonly estimatedActive: number;
|
|
46
|
-
/** Estimated leaked = active - autoRelease-failed. Positive = worktrees
|
|
47
|
-
* the user / CLI will need to gc manually. */
|
|
48
|
-
readonly estimatedLeaked: number;
|
|
49
|
-
readonly completedLifetimes: number;
|
|
50
|
-
readonly avgLifetimeMs: number | null;
|
|
51
|
-
readonly p99LifetimeMs: number | null;
|
|
52
|
-
};
|
|
23
|
+
import { readAllSessionLeaseEvents, type RateStats } from './lease-metrics-commands-support.js';
|
|
24
|
+
export { readAllSessionLeaseEvents, type RateStats };
|
|
53
25
|
export declare function recomputeRate(leaseEvents: ReadonlyArray<ObservabilityEvent>): RateStats;
|
|
54
|
-
/**
|
|
55
|
-
* Part 5: enumerate every session under `.peaks/_runtime/` for a
|
|
56
|
-
* project root and aggregate their lease events. Sessions without
|
|
57
|
-
* a `metrics/slices.jsonl` are skipped silently (a clean project
|
|
58
|
-
* has no lease events to report; that's not an error).
|
|
59
|
-
*/
|
|
60
|
-
export declare function readAllSessionLeaseEvents(projectRoot: string): {
|
|
61
|
-
sessions: ReadonlyArray<{
|
|
62
|
-
sessionId: string;
|
|
63
|
-
events: ReadonlyArray<ObservabilityEvent>;
|
|
64
|
-
}>;
|
|
65
|
-
missingSessions: number;
|
|
66
|
-
};
|
|
67
26
|
export declare function registerLeaseMetricsCommand(parent: Command, io: ProgramIO): void;
|