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
|
@@ -26,9 +26,7 @@ import { registerSession24hModeCommand } from '../session-24h-mode.js';
|
|
|
26
26
|
import { registerSpillDemoCommand } from '../spill-demo-command.js';
|
|
27
27
|
export function registerSessionCommand(program, io) {
|
|
28
28
|
const session = program.command('session').description('Manage Peaks session directories');
|
|
29
|
-
addJsonOption(session
|
|
30
|
-
.command('list')
|
|
31
|
-
.description('List all session directories with titles and metadata')).action((options) => {
|
|
29
|
+
addJsonOption(session.command('list').description('List all session directories with titles and metadata')).action((options) => {
|
|
32
30
|
const projectRoot = findProjectRoot(process.cwd()) ?? process.cwd();
|
|
33
31
|
const metas = listSessionMetas(projectRoot);
|
|
34
32
|
printResult(io, ok('session.list', { sessions: metas, total: metas.length }), options.json);
|
|
@@ -64,7 +62,10 @@ export function registerSessionCommand(program, io) {
|
|
|
64
62
|
catch (error) {
|
|
65
63
|
if (error instanceof CallerIdError) {
|
|
66
64
|
const code = error.code === 'EX_USAGE' ? 64 : 65;
|
|
67
|
-
printResult(io, fail('session.info', 'CALLER_ID_INVALID', error.message, { source: error.source }, [
|
|
65
|
+
printResult(io, fail('session.info', 'CALLER_ID_INVALID', error.message, { source: error.source }, [
|
|
66
|
+
`Set --caller-id to a value matching ^[a-zA-Z0-9._-]{1,200}$`,
|
|
67
|
+
'Or set PEAKS_CALLER_ID env var (or CLAUDE_CODE_SESSION_ID for Claude Code)'
|
|
68
|
+
]), options.json);
|
|
68
69
|
process.exitCode = code;
|
|
69
70
|
return;
|
|
70
71
|
}
|
|
@@ -93,7 +94,10 @@ export function registerSessionCommand(program, io) {
|
|
|
93
94
|
}), options.json);
|
|
94
95
|
return;
|
|
95
96
|
}
|
|
96
|
-
printResult(io, ok('session.info', {
|
|
97
|
+
printResult(io, ok('session.info', {
|
|
98
|
+
callerId,
|
|
99
|
+
note: '--caller-id resolved; pass --active to also look up the bound peak session'
|
|
100
|
+
}), options.json);
|
|
97
101
|
return;
|
|
98
102
|
}
|
|
99
103
|
// Slice 007 + slice 021 — sub-agent session sharing. A sub-agent that
|
|
@@ -147,7 +151,9 @@ export function registerSessionCommand(program, io) {
|
|
|
147
151
|
// contract). `warnings` is a top-level envelope field, not a
|
|
148
152
|
// data field, so it goes through ok()'s 3rd positional arg.
|
|
149
153
|
const legacyWarnings = bindingSource === 'legacy'
|
|
150
|
-
? [
|
|
154
|
+
? [
|
|
155
|
+
'Read from legacy back-compat path .peaks/.session.json. Run `peaks workspace reconcile --apply` to migrate to the canonical home (.peaks/_runtime/session.json).'
|
|
156
|
+
]
|
|
151
157
|
: [];
|
|
152
158
|
printResult(io, ok('session.info', {
|
|
153
159
|
active: true,
|
|
@@ -182,7 +188,9 @@ export function registerSessionCommand(program, io) {
|
|
|
182
188
|
printResult(io, ok('session.title', meta), options.json);
|
|
183
189
|
}
|
|
184
190
|
catch (error) {
|
|
185
|
-
printResult(io, fail('session.title', 'SESSION_TITLE_FAILED', getErrorMessage(error), { sessionId }, [
|
|
191
|
+
printResult(io, fail('session.title', 'SESSION_TITLE_FAILED', getErrorMessage(error), { sessionId }, [
|
|
192
|
+
'Verify the sessionId exists under .peaks/'
|
|
193
|
+
]), options.json);
|
|
186
194
|
process.exitCode = 1;
|
|
187
195
|
}
|
|
188
196
|
});
|
|
@@ -210,7 +218,7 @@ export function registerSessionCommand(program, io) {
|
|
|
210
218
|
.command('rotate')
|
|
211
219
|
.description('Drop the project-level session binding so the next peaks call auto-generates a fresh session id. The on-disk session directory is left intact — only .peaks/.session.json is removed.')
|
|
212
220
|
.option('--project <path>', 'target project root (defaults to git root or cwd)')
|
|
213
|
-
.option('--reason <text>', 'human-readable reason for the rotation, recorded in the response data')).action(
|
|
221
|
+
.option('--reason <text>', 'human-readable reason for the rotation, recorded in the response data')).action((options) => {
|
|
214
222
|
try {
|
|
215
223
|
// Canonicalise the project root before touching the binding.
|
|
216
224
|
// `peaks workspace init` writes the binding with the
|
|
@@ -153,7 +153,10 @@ import { addJsonOption, getErrorMessage, printResult } from '../../cli-helpers.j
|
|
|
153
153
|
import { registerSkillSearchCommand } from '../skill-search-commands.js';
|
|
154
154
|
export function registerSkillCommand(program, io) {
|
|
155
155
|
const skill = program.command('skill').description('Manage Peaks skills');
|
|
156
|
-
addJsonOption(skill
|
|
156
|
+
addJsonOption(skill
|
|
157
|
+
.command('list')
|
|
158
|
+
.description('List skills derived from skills/*/SKILL.md')
|
|
159
|
+
.option('--include-internal', 'include skills with visibility: internal (default: hide them)')).action(async (options) => {
|
|
157
160
|
let skills = await listSkills();
|
|
158
161
|
if (options.includeInternal !== true) {
|
|
159
162
|
skills = skills.filter((s) => s.visibility !== 'internal');
|
|
@@ -227,14 +230,14 @@ export function registerSkillCommand(program, io) {
|
|
|
227
230
|
projectRoot,
|
|
228
231
|
...(platforms !== undefined ? { platforms } : {}),
|
|
229
232
|
...(options.dryRun === true ? { dryRun: true } : {}),
|
|
230
|
-
...(options.reconcileJunctions === true ? { reconcileJunctions: true } : {})
|
|
233
|
+
...(options.reconcileJunctions === true ? { reconcileJunctions: true } : {})
|
|
231
234
|
});
|
|
232
235
|
const envelope = ok('skill.sync', result, [], [
|
|
233
236
|
`syncedCount: ${result.syncedCount}/${result.perPlatform.length} platforms`,
|
|
234
237
|
`totalInstalled: ${result.totalInstalled} skill symlinks`,
|
|
235
238
|
result.failedCount > 0
|
|
236
239
|
? `failedCount: ${result.failedCount} (run \`peaks skill status\` for details)`
|
|
237
|
-
: 'no failures'
|
|
240
|
+
: 'no failures'
|
|
238
241
|
]);
|
|
239
242
|
printResult(io, envelope, options.json);
|
|
240
243
|
if (result.failedCount > 0) {
|
|
@@ -257,7 +260,9 @@ export function registerSkillCommand(program, io) {
|
|
|
257
260
|
: fail('skill.runbook', inspection.hasRunbook ? 'SKILL_RUNBOOK_APPLY_UNGATED' : 'SKILL_RUNBOOK_MISSING', inspection.hasRunbook
|
|
258
261
|
? `Skill ${inspection.name} has ${inspection.destructiveApplyLines.length} destructive --apply command(s) without an authorization/dry-run note`
|
|
259
262
|
: `Skill ${inspection.name} is missing a ## Default runbook section`, inspection, inspection.hasRunbook
|
|
260
|
-
? [
|
|
263
|
+
? [
|
|
264
|
+
'Add an authorization or --dry-run note next to destructive --apply lines in the runbook section'
|
|
265
|
+
]
|
|
261
266
|
: ['Add a `## Default runbook` section to the skill SKILL.md']);
|
|
262
267
|
printResult(io, result, options.json);
|
|
263
268
|
if (!inspection.ok) {
|
|
@@ -304,7 +309,12 @@ export function registerSkillCommand(program, io) {
|
|
|
304
309
|
}, generatedConfig.warnings, verdict.nextActions), options.json);
|
|
305
310
|
return;
|
|
306
311
|
}
|
|
307
|
-
printResult(io, ok('skill.presence', {
|
|
312
|
+
printResult(io, ok('skill.presence', {
|
|
313
|
+
active: true,
|
|
314
|
+
...presence,
|
|
315
|
+
...(verdict.context !== null ? { context: verdict.context } : {}),
|
|
316
|
+
...generatedConfig.field
|
|
317
|
+
}, generatedConfig.warnings, verdict.nextActions), options.json);
|
|
308
318
|
});
|
|
309
319
|
addJsonOption(skill
|
|
310
320
|
.command('presence:set <name>')
|
|
@@ -328,7 +338,9 @@ export function registerSkillCommand(program, io) {
|
|
|
328
338
|
// production CLI traffic must go through this gate.
|
|
329
339
|
const boundSessionId = getSessionId(projectRoot);
|
|
330
340
|
if (boundSessionId === null) {
|
|
331
|
-
printResult(io, fail('skill.presence:set', 'PEAKS_SESSION_NOT_BOUND', 'No canonical peaks session is bound for this project (RD §3 D1).', { projectRoot, name }, [
|
|
341
|
+
printResult(io, fail('skill.presence:set', 'PEAKS_SESSION_NOT_BOUND', 'No canonical peaks session is bound for this project (RD §3 D1).', { projectRoot, name }, [
|
|
342
|
+
'Run `peaks workspace init --project <p>` first, then re-run `peaks skill presence:set`.'
|
|
343
|
+
]), options.json);
|
|
332
344
|
process.exitCode = 1;
|
|
333
345
|
return;
|
|
334
346
|
}
|
|
@@ -337,8 +349,10 @@ export function registerSkillCommand(program, io) {
|
|
|
337
349
|
}
|
|
338
350
|
catch (err) {
|
|
339
351
|
const message = err instanceof Error ? err.message : String(err);
|
|
340
|
-
printResult(io, fail('skill.presence:set', 'PEAKS_CALLER_NOT_RESOLVED', `Active IDE adapter could not resolve a callerId (RD §3 D1): ${message}`, { projectRoot, name }, [
|
|
341
|
-
'
|
|
352
|
+
printResult(io, fail('skill.presence:set', 'PEAKS_CALLER_NOT_RESOLVED', `Active IDE adapter could not resolve a callerId (RD §3 D1): ${message}`, { projectRoot, name }, [
|
|
353
|
+
'Ensure the active IDE is detected by `peaks` and the IDE session variable is set.',
|
|
354
|
+
'Or set PEAKS_CALLER_ID=<id> in the environment for scripted usage.'
|
|
355
|
+
]), options.json);
|
|
342
356
|
process.exitCode = 1;
|
|
343
357
|
return;
|
|
344
358
|
}
|
|
@@ -376,7 +390,8 @@ export function registerSkillCommand(program, io) {
|
|
|
376
390
|
try {
|
|
377
391
|
await generateProjectContext(projectRoot);
|
|
378
392
|
}
|
|
379
|
-
catch {
|
|
393
|
+
catch {
|
|
394
|
+
// TODO(g2): legacy silent catch — grace: 1 minor release (v2.14.0)
|
|
380
395
|
// non-fatal: context update failure should not block presence clear
|
|
381
396
|
}
|
|
382
397
|
// Report the state the project is actually in, not the state this command
|
|
@@ -435,7 +450,7 @@ export function registerSkillCommand(program, io) {
|
|
|
435
450
|
const result = await gcStalePresenceLeases({
|
|
436
451
|
projectRoot,
|
|
437
452
|
...(options.now !== undefined ? { now: options.now } : {}),
|
|
438
|
-
trigger: 'manual'
|
|
453
|
+
trigger: 'manual'
|
|
439
454
|
});
|
|
440
455
|
printResult(io, ok('skill.lease.gc', {
|
|
441
456
|
envelopeVersion: '4.0.8',
|
|
@@ -444,14 +459,16 @@ export function registerSkillCommand(program, io) {
|
|
|
444
459
|
trigger: result.trigger,
|
|
445
460
|
inFlightBatch: result.inFlightBatch,
|
|
446
461
|
warnings: result.warnings,
|
|
447
|
-
errors: result.errors
|
|
462
|
+
errors: result.errors
|
|
448
463
|
}, result.warnings.map((w) => `${w.code}: ${w.message}`), [
|
|
449
464
|
'GC predicate: now - lastHeartbeat > 1h AND now - startedAt > 24h (RD §3 D2 + D3).',
|
|
450
|
-
'Re-run `peaks workspace init` or `peaks skill presence:set` to sweep the same project on the bound trigger.'
|
|
465
|
+
'Re-run `peaks workspace init` or `peaks skill presence:set` to sweep the same project on the bound trigger.'
|
|
451
466
|
]), options.json);
|
|
452
467
|
}
|
|
453
468
|
catch (err) {
|
|
454
|
-
printResult(io, fail('skill.lease.gc', 'PEAKS_LEASE_GC_FAILED', getErrorMessage(err), { projectRoot }, [
|
|
469
|
+
printResult(io, fail('skill.lease.gc', 'PEAKS_LEASE_GC_FAILED', getErrorMessage(err), { projectRoot }, [
|
|
470
|
+
'Re-run with a valid --project and ensure the session is bound.'
|
|
471
|
+
]), options.json);
|
|
455
472
|
process.exitCode = 1;
|
|
456
473
|
}
|
|
457
474
|
});
|
|
@@ -495,9 +512,7 @@ export function registerSkillCommand(program, io) {
|
|
|
495
512
|
};
|
|
496
513
|
printResult(io, ok('skill.presence:check-stale', data), options.json);
|
|
497
514
|
});
|
|
498
|
-
addJsonOption(skill
|
|
499
|
-
.command('heartbeat')
|
|
500
|
-
.description('Show the heartbeat status of the active Peaks skill')).action((options) => {
|
|
515
|
+
addJsonOption(skill.command('heartbeat').description('Show the heartbeat status of the active Peaks skill')).action((options) => {
|
|
501
516
|
const presence = getSkillPresence();
|
|
502
517
|
if (presence === null) {
|
|
503
518
|
printResult(io, ok('skill.heartbeat', { active: false, heartbeat: 'none' }), options.json);
|
|
@@ -20,14 +20,22 @@ export const LOOP_ENGINEERING_GUIDELINES_RELATIVE_PATH = '.peaks/standards/loop-
|
|
|
20
20
|
export function runLoopEngineeringLint(projectRoot) {
|
|
21
21
|
const root = resolve(projectRoot);
|
|
22
22
|
const guidelinePath = join(root, LOOP_ENGINEERING_GUIDELINES_RELATIVE_PATH);
|
|
23
|
-
const data = {
|
|
23
|
+
const data = {
|
|
24
|
+
category: LOOP_ENGINEERING_CATEGORY,
|
|
25
|
+
path: guidelinePath,
|
|
26
|
+
redLineCount: 0,
|
|
27
|
+
redLineIds: [],
|
|
28
|
+
findings: []
|
|
29
|
+
};
|
|
24
30
|
if (!existsSync(guidelinePath)) {
|
|
25
31
|
return {
|
|
26
32
|
ok: false,
|
|
27
33
|
code: 'LINT_FILE_NOT_FOUND',
|
|
28
34
|
message: `no ${LOOP_ENGINEERING_GUIDELINES_RELATIVE_PATH} under ${root}`,
|
|
29
35
|
data,
|
|
30
|
-
nextActions: [
|
|
36
|
+
nextActions: [
|
|
37
|
+
`Pass --project pointing at a peaks-loop checkout (the lint reads its own guideline file).`
|
|
38
|
+
]
|
|
31
39
|
};
|
|
32
40
|
}
|
|
33
41
|
const result = lintLoopEngineeringGuidelines(readFileSync(guidelinePath, 'utf-8'));
|
|
@@ -39,7 +47,7 @@ export function runLoopEngineeringLint(projectRoot) {
|
|
|
39
47
|
code: 'STANDARDS_LINT_OK',
|
|
40
48
|
message: `${redLineIds.length} red line(s) present with all 4 sections (expected: ${EXPECTED_RED_LINE_IDS.join(', ')})`,
|
|
41
49
|
data: fullData,
|
|
42
|
-
nextActions: ['Any new red line must use the 4-section form or this lint will reject it.']
|
|
50
|
+
nextActions: ['Any new red line must use the 4-section form or this lint will reject it.']
|
|
43
51
|
};
|
|
44
52
|
}
|
|
45
53
|
return {
|
|
@@ -49,12 +57,14 @@ export function runLoopEngineeringLint(projectRoot) {
|
|
|
49
57
|
data: { ...fullData, findings: result.findings },
|
|
50
58
|
nextActions: [
|
|
51
59
|
'Address every finding in data.findings, then re-run the lint.',
|
|
52
|
-
'Each red line must be a `## RL-N — <title>` heading with the 4 sections: Failure modes / Rewrite / Self-check / Out-of-scope.'
|
|
53
|
-
]
|
|
60
|
+
'Each red line must be a `## RL-N — <title>` heading with the 4 sections: Failure modes / Rewrite / Self-check / Out-of-scope.'
|
|
61
|
+
]
|
|
54
62
|
};
|
|
55
63
|
}
|
|
56
64
|
export function registerStandardsCommand(program, io) {
|
|
57
|
-
const standards = program
|
|
65
|
+
const standards = program
|
|
66
|
+
.command('standards')
|
|
67
|
+
.description('Manage project-local coding standards');
|
|
58
68
|
addJsonOption(standards
|
|
59
69
|
.command('init')
|
|
60
70
|
.description('Initialize project-local coding standards for Peaks skill preflight')
|
|
@@ -69,11 +79,22 @@ export function registerStandardsCommand(program, io) {
|
|
|
69
79
|
return;
|
|
70
80
|
}
|
|
71
81
|
try {
|
|
72
|
-
const result = executeProjectStandardsInitIdeAware({
|
|
82
|
+
const result = executeProjectStandardsInitIdeAware({
|
|
83
|
+
projectRoot: options.project,
|
|
84
|
+
...(options.language !== undefined ? { language: options.language } : {}),
|
|
85
|
+
...(options.ide !== undefined
|
|
86
|
+
? {
|
|
87
|
+
ideId: options.ide
|
|
88
|
+
}
|
|
89
|
+
: {}),
|
|
90
|
+
apply: options.apply === true
|
|
91
|
+
});
|
|
73
92
|
printResult(io, ok('standards.init', summarizeProjectStandardsInitResult(result)), options.json);
|
|
74
93
|
}
|
|
75
94
|
catch (error) {
|
|
76
|
-
printResult(io, fail('standards.init', 'STANDARDS_INIT_FAILED', getErrorMessage(error), {}, [
|
|
95
|
+
printResult(io, fail('standards.init', 'STANDARDS_INIT_FAILED', getErrorMessage(error), {}, [
|
|
96
|
+
'Check the project path and existing .claude/rules directory before retrying'
|
|
97
|
+
]), options.json);
|
|
77
98
|
process.exitCode = 1;
|
|
78
99
|
}
|
|
79
100
|
});
|
|
@@ -86,12 +107,23 @@ export function registerStandardsCommand(program, io) {
|
|
|
86
107
|
.option('--dry-run', 'preview writes without changing files')
|
|
87
108
|
.option('--apply', 'append managed metadata to the target project')).action((options) => {
|
|
88
109
|
if (options.dryRun === true && options.apply === true) {
|
|
89
|
-
printResult(io, fail('standards.update', 'INVALID_STANDARDS_UPDATE_FLAGS', 'Use either --dry-run or --apply, not both', {}, [
|
|
110
|
+
printResult(io, fail('standards.update', 'INVALID_STANDARDS_UPDATE_FLAGS', 'Use either --dry-run or --apply, not both', {}, [
|
|
111
|
+
'Run without --apply to preview writes, or omit --dry-run when applying standards updates'
|
|
112
|
+
]), options.json);
|
|
90
113
|
process.exitCode = 1;
|
|
91
114
|
return;
|
|
92
115
|
}
|
|
93
116
|
try {
|
|
94
|
-
const result = executeProjectStandardsUpdateIdeAware({
|
|
117
|
+
const result = executeProjectStandardsUpdateIdeAware({
|
|
118
|
+
projectRoot: options.project,
|
|
119
|
+
...(options.language !== undefined ? { language: options.language } : {}),
|
|
120
|
+
...(options.ide !== undefined
|
|
121
|
+
? {
|
|
122
|
+
ideId: options.ide
|
|
123
|
+
}
|
|
124
|
+
: {}),
|
|
125
|
+
apply: options.apply === true
|
|
126
|
+
});
|
|
95
127
|
const summary = summarizeProjectStandardsUpdateResult(result);
|
|
96
128
|
const response = summary.reviewSuggestions.length > 0
|
|
97
129
|
? fail('standards.update', 'STANDARDS_UPDATE_REVIEW_REQUIRED', 'Standards update requires manual review', summary, summary.reviewSuggestions)
|
|
@@ -102,7 +134,9 @@ export function registerStandardsCommand(program, io) {
|
|
|
102
134
|
}
|
|
103
135
|
}
|
|
104
136
|
catch (error) {
|
|
105
|
-
printResult(io, fail('standards.update', 'STANDARDS_UPDATE_FAILED', getErrorMessage(error), {}, [
|
|
137
|
+
printResult(io, fail('standards.update', 'STANDARDS_UPDATE_FAILED', getErrorMessage(error), {}, [
|
|
138
|
+
'Check the project path, CLAUDE.md contents, and existing .claude/rules directory before retrying'
|
|
139
|
+
]), options.json);
|
|
106
140
|
process.exitCode = 1;
|
|
107
141
|
}
|
|
108
142
|
});
|
|
@@ -126,7 +160,7 @@ export function registerStandardsCommand(program, io) {
|
|
|
126
160
|
preservedFiles: [],
|
|
127
161
|
wouldChange: false,
|
|
128
162
|
applied: false,
|
|
129
|
-
nextActions: []
|
|
163
|
+
nextActions: []
|
|
130
164
|
}, [getErrorMessage(error)]), options.json);
|
|
131
165
|
process.exitCode = 1;
|
|
132
166
|
}
|
|
@@ -137,7 +171,15 @@ export function registerStandardsCommand(program, io) {
|
|
|
137
171
|
printResult(io, ok('standards.migrate', result.data, [], result.data.nextActions), options.json);
|
|
138
172
|
}
|
|
139
173
|
catch (error) {
|
|
140
|
-
printResult(io, fail('standards.migrate', 'STANDARDS_MIGRATE_FAILED', getErrorMessage(error), {
|
|
174
|
+
printResult(io, fail('standards.migrate', 'STANDARDS_MIGRATE_FAILED', getErrorMessage(error), {
|
|
175
|
+
file: null,
|
|
176
|
+
foundOldBlock: false,
|
|
177
|
+
wouldChange: false,
|
|
178
|
+
applied: false,
|
|
179
|
+
before: null,
|
|
180
|
+
after: null,
|
|
181
|
+
nextActions: []
|
|
182
|
+
}, [getErrorMessage(error)]), options.json);
|
|
141
183
|
process.exitCode = 1;
|
|
142
184
|
}
|
|
143
185
|
});
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The three `peaks cron` action handlers (init / list / run) — moved VERBATIM
|
|
3
|
+
* out of `cron-commands.ts` (job strict-remediation-abc, slice
|
|
4
|
+
* c1-eslint-family-sweep, leaf c3w1-cron-commands) so the registration file
|
|
5
|
+
* clears the `max-lines-per-function` findings.
|
|
6
|
+
*
|
|
7
|
+
* NOTHING was restructured: same predicate order inside the due/nextDueAt
|
|
8
|
+
* annotation (`e.enabled && (e.lastRunAt === null || now - e.lastRunAt >=
|
|
9
|
+
* e.intervalMs)`, with `>=` exactly as it was), same `process.exitCode = 1`
|
|
10
|
+
* points, same emitted message text, same sort. The run action's 66-line body
|
|
11
|
+
* was further split into `runCronTasks` / `runTargets` / `printRunOutcome`
|
|
12
|
+
* purely to cross the function-length line; ordering is unchanged.
|
|
13
|
+
*
|
|
14
|
+
* One dead local was not copied: `const now = Date.now();` inside the run
|
|
15
|
+
* action was never read (it carried a `no-unused-vars` baseline ERROR on the
|
|
16
|
+
* original file). Removing an unread, effect-free assignment changes no branch,
|
|
17
|
+
* throw, exit code, or emitted byte — and a new sibling must be clean outright.
|
|
18
|
+
*
|
|
19
|
+
* ONE thing has since been restructured, and it is not the verbatim move above:
|
|
20
|
+
* rid `2026-10-01-cron-last-run-at-01` repair cycle 1 replaced `runCronTasks`'s
|
|
21
|
+
* own fold-and-write (a `runTargets` that built the next file from the snapshot
|
|
22
|
+
* read before the runs, stamping every record including killed ones) with the
|
|
23
|
+
* scheduler's `persistLastRunAt`, so one rule and one write-time re-read cover
|
|
24
|
+
* all three `lastRunAt` writers. The `ran` / `records` envelope, the exit-code
|
|
25
|
+
* branch and every emitted message are unchanged; what changed on disk is that a
|
|
26
|
+
* killed run no longer advances `lastRunAt` here, and that entries another writer
|
|
27
|
+
* added mid-run are no longer reverted. The rule is in
|
|
28
|
+
* `cron-scheduler-persist.ts`.
|
|
29
|
+
*/
|
|
30
|
+
import { type ProgramIO } from '../cli-helpers.js';
|
|
31
|
+
export declare function handleCronInit(io: ProgramIO, options: {
|
|
32
|
+
project?: string;
|
|
33
|
+
json?: boolean;
|
|
34
|
+
}): void;
|
|
35
|
+
export declare function handleCronList(io: ProgramIO, options: {
|
|
36
|
+
project?: string;
|
|
37
|
+
json?: boolean;
|
|
38
|
+
}): void;
|
|
39
|
+
export declare function handleCronRun(io: ProgramIO, options: {
|
|
40
|
+
id?: string;
|
|
41
|
+
project?: string;
|
|
42
|
+
json?: boolean;
|
|
43
|
+
}): void;
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The three `peaks cron` action handlers (init / list / run) — moved VERBATIM
|
|
3
|
+
* out of `cron-commands.ts` (job strict-remediation-abc, slice
|
|
4
|
+
* c1-eslint-family-sweep, leaf c3w1-cron-commands) so the registration file
|
|
5
|
+
* clears the `max-lines-per-function` findings.
|
|
6
|
+
*
|
|
7
|
+
* NOTHING was restructured: same predicate order inside the due/nextDueAt
|
|
8
|
+
* annotation (`e.enabled && (e.lastRunAt === null || now - e.lastRunAt >=
|
|
9
|
+
* e.intervalMs)`, with `>=` exactly as it was), same `process.exitCode = 1`
|
|
10
|
+
* points, same emitted message text, same sort. The run action's 66-line body
|
|
11
|
+
* was further split into `runCronTasks` / `runTargets` / `printRunOutcome`
|
|
12
|
+
* purely to cross the function-length line; ordering is unchanged.
|
|
13
|
+
*
|
|
14
|
+
* One dead local was not copied: `const now = Date.now();` inside the run
|
|
15
|
+
* action was never read (it carried a `no-unused-vars` baseline ERROR on the
|
|
16
|
+
* original file). Removing an unread, effect-free assignment changes no branch,
|
|
17
|
+
* throw, exit code, or emitted byte — and a new sibling must be clean outright.
|
|
18
|
+
*
|
|
19
|
+
* ONE thing has since been restructured, and it is not the verbatim move above:
|
|
20
|
+
* rid `2026-10-01-cron-last-run-at-01` repair cycle 1 replaced `runCronTasks`'s
|
|
21
|
+
* own fold-and-write (a `runTargets` that built the next file from the snapshot
|
|
22
|
+
* read before the runs, stamping every record including killed ones) with the
|
|
23
|
+
* scheduler's `persistLastRunAt`, so one rule and one write-time re-read cover
|
|
24
|
+
* all three `lastRunAt` writers. The `ran` / `records` envelope, the exit-code
|
|
25
|
+
* branch and every emitted message are unchanged; what changed on disk is that a
|
|
26
|
+
* killed run no longer advances `lastRunAt` here, and that entries another writer
|
|
27
|
+
* added mid-run are no longer reverted. The rule is in
|
|
28
|
+
* `cron-scheduler-persist.ts`.
|
|
29
|
+
*/
|
|
30
|
+
import { fail, getErrorMessage, ok } from 'peaks-loop-shared/result';
|
|
31
|
+
import { printResult } from '../cli-helpers.js';
|
|
32
|
+
import { findProjectRoot } from '../../services/config/config-safety.js';
|
|
33
|
+
import { ensureLeaseGcEntry, listDueTasks, readSchedule, schedulePath, writeSchedule } from './cron-commands-schedule.js';
|
|
34
|
+
import { runTask } from './cron-commands.js';
|
|
35
|
+
import { persistLastRunAt } from './cron-scheduler-persist.js';
|
|
36
|
+
const STDERR_NEXT_ACTIONS_TRUNCATE_CHARS = 200;
|
|
37
|
+
export function handleCronInit(io, options) {
|
|
38
|
+
try {
|
|
39
|
+
const projectRoot = options.project ?? findProjectRoot(process.cwd()) ?? process.cwd();
|
|
40
|
+
const file = readSchedule(projectRoot);
|
|
41
|
+
const updated = ensureLeaseGcEntry(file);
|
|
42
|
+
writeSchedule(projectRoot, updated);
|
|
43
|
+
const added = updated.entries.length - file.entries.length;
|
|
44
|
+
printResult(io, ok('cron.init', {
|
|
45
|
+
projectRoot,
|
|
46
|
+
schedulePath: schedulePath(projectRoot),
|
|
47
|
+
totalEntries: updated.entries.length,
|
|
48
|
+
added
|
|
49
|
+
}, [], [
|
|
50
|
+
added > 0
|
|
51
|
+
? `Added ${added} built-in task(s). Use 'peaks cron list' to inspect.`
|
|
52
|
+
: 'Schedule already contains the built-in tasks; no change made.'
|
|
53
|
+
]), options.json);
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
printResult(io, fail('cron.init', 'CRON_INIT_FAILED', getErrorMessage(err), { projectRoot: options.project }, [
|
|
57
|
+
'Verify the project root is a peaks-loop project (.peaks/ exists).',
|
|
58
|
+
'Check filesystem permissions.'
|
|
59
|
+
]), options.json);
|
|
60
|
+
process.exitCode = 1;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
export function handleCronList(io, options) {
|
|
64
|
+
try {
|
|
65
|
+
const projectRoot = options.project ?? findProjectRoot(process.cwd()) ?? process.cwd();
|
|
66
|
+
const file = readSchedule(projectRoot);
|
|
67
|
+
const now = Date.now();
|
|
68
|
+
const annotated = file.entries.map((e) => ({
|
|
69
|
+
...e,
|
|
70
|
+
due: e.enabled && (e.lastRunAt === null || now - e.lastRunAt >= e.intervalMs),
|
|
71
|
+
nextDueAt: e.lastRunAt === null ? now : e.lastRunAt + e.intervalMs
|
|
72
|
+
}));
|
|
73
|
+
annotated.sort((a, b) => a.nextDueAt - b.nextDueAt);
|
|
74
|
+
printResult(io, ok('cron.list', { projectRoot, schedulePath: schedulePath(projectRoot), entries: annotated }, [], [`${annotated.length} task(s); ${annotated.filter((e) => e.due).length} due now.`]), options.json);
|
|
75
|
+
}
|
|
76
|
+
catch (err) {
|
|
77
|
+
printResult(io, fail('cron.list', 'CRON_LIST_FAILED', getErrorMessage(err), { projectRoot: options.project }, ["If schedule.json is missing, run 'peaks cron init' first."]), options.json);
|
|
78
|
+
process.exitCode = 1;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
export function handleCronRun(io, options) {
|
|
82
|
+
try {
|
|
83
|
+
runCronTasks(io, options);
|
|
84
|
+
}
|
|
85
|
+
catch (err) {
|
|
86
|
+
printResult(io, fail('cron.run', 'CRON_RUN_FAILED', getErrorMessage(err), { projectRoot: options.project }, [
|
|
87
|
+
"If schedule.json is missing, run 'peaks cron init' first."
|
|
88
|
+
]), options.json);
|
|
89
|
+
process.exitCode = 1;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
function runCronTasks(io, options) {
|
|
93
|
+
const projectRoot = options.project ?? findProjectRoot(process.cwd()) ?? process.cwd();
|
|
94
|
+
const file = readSchedule(projectRoot);
|
|
95
|
+
const targets = options.id
|
|
96
|
+
? file.entries.filter((e) => e.id === options.id)
|
|
97
|
+
: listDueTasks(projectRoot);
|
|
98
|
+
if (targets.length === 0) {
|
|
99
|
+
printResult(io, ok('cron.run', { projectRoot, ran: 0, records: [] }, [], ['No due tasks; nothing to run.']), options.json);
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
const records = runTargets(projectRoot, targets);
|
|
103
|
+
// ONE rule, ONE writer (rid `2026-10-01-cron-last-run-at-01`, repair cycle 1).
|
|
104
|
+
// This call is the third site of the `lastRunAt` fold, whose rule and platform
|
|
105
|
+
// costs live in `cron-scheduler-persist.ts`. Two things it replaces: a fold that
|
|
106
|
+
// stamped EVERY record, killed ones included (so the same killed fire went quiet
|
|
107
|
+
// here and stayed due under the daemon), and a write built from the `file`
|
|
108
|
+
// snapshot read above — taken up to `EXEC_TIMEOUT_MS` (300,000 ms) of synchronous
|
|
109
|
+
// runs before the write, so it reverted any stamp the daemon landed in between,
|
|
110
|
+
// back to `null`. `persistLastRunAt` re-reads at write time instead.
|
|
111
|
+
persistLastRunAt(projectRoot, records);
|
|
112
|
+
printRunOutcome(io, options, projectRoot, records);
|
|
113
|
+
}
|
|
114
|
+
function runTargets(projectRoot, targets) {
|
|
115
|
+
const records = [];
|
|
116
|
+
for (const task of targets)
|
|
117
|
+
records.push(runTask(projectRoot, task));
|
|
118
|
+
return records;
|
|
119
|
+
}
|
|
120
|
+
function printRunOutcome(io, options, projectRoot, records) {
|
|
121
|
+
printResult(io, ok('cron.run', { projectRoot, ran: records.length, records }, records
|
|
122
|
+
.filter((r) => r.exitCode !== 0)
|
|
123
|
+
.map((r) => `Task ${r.taskId} failed (exit=${r.exitCode}): ${r.stderr.slice(0, STDERR_NEXT_ACTIONS_TRUNCATE_CHARS)}`), [
|
|
124
|
+
`Ran ${records.length} task(s); ${records.filter((r) => r.exitCode === 0).length} succeeded.`
|
|
125
|
+
]), options.json);
|
|
126
|
+
if (records.some((r) => r.exitCode !== 0))
|
|
127
|
+
process.exitCode = 1;
|
|
128
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The schedule model half of `peaks cron` (Part 14) — moved VERBATIM out of
|
|
3
|
+
* `cron-commands.ts` (job strict-remediation-abc, slice c1-eslint-family-sweep,
|
|
4
|
+
* leaf c3w1-cron-commands) so that file clears the 300-line cap and the
|
|
5
|
+
* `complexity` finding on `readSchedule` falls.
|
|
6
|
+
*
|
|
7
|
+
* NOTHING was restructured: same branch order, same predicates, same throw
|
|
8
|
+
* points, same message text, same on-disk bytes. `readSchedule` was split into
|
|
9
|
+
* `assertScheduleRoot` + `toScheduleEntry` + `isStringArray` only to shed the
|
|
10
|
+
* complexity finding; every check still runs in the original order with the
|
|
11
|
+
* original short-circuits.
|
|
12
|
+
*
|
|
13
|
+
* `runTask` (and its exec-timeout + record-truncation constants) deliberately
|
|
14
|
+
* stays in `cron-commands.ts`: that file carries the baseline `no-magic-numbers`
|
|
15
|
+
* warning on the timeout constant, and a new sibling must be clean outright.
|
|
16
|
+
*/
|
|
17
|
+
export declare const SCHEDULE_VERSION: 1;
|
|
18
|
+
/**
|
|
19
|
+
* PRD-002b slice 2 — extract cron-orchestration magic numbers (24h
|
|
20
|
+
* default interval, 5-minute exec timeout, stderr-message truncation
|
|
21
|
+
* lengths in the renderer). The exec-timeout constant itself stayed in
|
|
22
|
+
* `cron-commands.ts` with `runTask`.
|
|
23
|
+
*/
|
|
24
|
+
export declare const MS_PER_SECOND = 1000;
|
|
25
|
+
export declare const MINUTES_PER_HOUR = 60;
|
|
26
|
+
export declare const SECONDS_PER_MINUTE = 60;
|
|
27
|
+
export type ScheduleEntry = {
|
|
28
|
+
readonly id: string;
|
|
29
|
+
readonly name: string;
|
|
30
|
+
readonly command: string;
|
|
31
|
+
readonly args: ReadonlyArray<string>;
|
|
32
|
+
readonly intervalMs: number;
|
|
33
|
+
readonly lastRunAt: number | null;
|
|
34
|
+
readonly enabled: boolean;
|
|
35
|
+
readonly createdAt: number;
|
|
36
|
+
};
|
|
37
|
+
export type ScheduleFile = {
|
|
38
|
+
readonly version: typeof SCHEDULE_VERSION;
|
|
39
|
+
readonly entries: ReadonlyArray<ScheduleEntry>;
|
|
40
|
+
};
|
|
41
|
+
export type RunRecord = {
|
|
42
|
+
readonly id: string;
|
|
43
|
+
readonly taskId: string;
|
|
44
|
+
readonly startedAt: number;
|
|
45
|
+
readonly finishedAt: number;
|
|
46
|
+
readonly exitCode: number;
|
|
47
|
+
readonly stderr: string;
|
|
48
|
+
/**
|
|
49
|
+
* Present (and `true`) ONLY when the task was killed for exceeding its exec
|
|
50
|
+
* timeout — i.e. when there is no child exit status behind `exitCode` and the
|
|
51
|
+
* work may have been mid-flight. Added by rid 2026-10-01-cron-task-tree-kill-01
|
|
52
|
+
* so a killed run cannot be read as a clean `exitCode 1` failure.
|
|
53
|
+
*
|
|
54
|
+
* OPTIONAL on purpose: `appendHistory` is the only writer of
|
|
55
|
+
* `history.jsonl` and nothing in this repo reads it back, so the smallest
|
|
56
|
+
* representation that consumers can carry is "the key is absent unless the
|
|
57
|
+
* task was killed" — every pre-existing row shape is unchanged.
|
|
58
|
+
*/
|
|
59
|
+
readonly killed?: true;
|
|
60
|
+
};
|
|
61
|
+
export declare function schedulePath(projectRoot: string): string;
|
|
62
|
+
export declare function readSchedule(projectRoot: string): ScheduleFile;
|
|
63
|
+
/**
|
|
64
|
+
* The one "can this raw JSON entry be represented?" predicate. Exported because
|
|
65
|
+
* a writer that must NOT lose an entry needs to know which ones the reader
|
|
66
|
+
* dropped (rid `2026-10-01-cron-last-run-at-01`, repair cycle 1, F5 — see
|
|
67
|
+
* `persistLastRunAt` in `cron-scheduler-persist.ts`).
|
|
68
|
+
*/
|
|
69
|
+
export declare function toScheduleEntry(e: unknown): ScheduleEntry | null;
|
|
70
|
+
/**
|
|
71
|
+
* The write half's input shape: a version plus the entries to store.
|
|
72
|
+
*
|
|
73
|
+
* `entries` is `ReadonlyArray<unknown>`, not `ReadonlyArray<ScheduleEntry>`, for one
|
|
74
|
+
* caller: `persistLastRunAt` re-writes the raw JSON of entries `toScheduleEntry`
|
|
75
|
+
* refused, so that a daemon write cannot delete an operator's hand-edited entry
|
|
76
|
+
* (rid `2026-10-01-cron-last-run-at-01` repair cycle 1, F5). Every other caller
|
|
77
|
+
* passes a `ScheduleFile`, which satisfies this shape.
|
|
78
|
+
*/
|
|
79
|
+
export type ScheduleWrite = {
|
|
80
|
+
readonly version: typeof SCHEDULE_VERSION;
|
|
81
|
+
readonly entries: ReadonlyArray<unknown>;
|
|
82
|
+
};
|
|
83
|
+
export declare function writeSchedule(projectRoot: string, file: ScheduleWrite): void;
|
|
84
|
+
export declare function appendHistory(projectRoot: string, record: RunRecord): void;
|
|
85
|
+
export declare function ensureLeaseGcEntry(file: ScheduleFile): ScheduleFile;
|
|
86
|
+
export declare function listDueTasks(projectRoot: string, now?: number): ReadonlyArray<ScheduleEntry>;
|