peaks-loop 4.0.53 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +85 -0
- package/README-en.md +16 -1
- package/README.md +15 -1
- package/config/eslint/.peaks-rules.cjs +158 -13
- package/config/eslint/tsconfig.lint.json +47 -0
- package/dist/cli/cli-envelope.d.ts +114 -0
- package/dist/cli/cli-envelope.js +85 -0
- package/dist/cli/cli-helpers.d.ts +1 -1
- package/dist/cli/cli-helpers.js +8 -4
- package/dist/cli/commands/_cli-error-envelope.js +1 -1
- package/dist/cli/commands/_register.js +85 -38
- package/dist/cli/commands/_super.js +40 -7
- package/dist/cli/commands/adapter-commands-s2a.js +8 -7
- package/dist/cli/commands/adapter-commands.d.ts +2 -2
- package/dist/cli/commands/adapter-commands.js +7 -8
- package/dist/cli/commands/api-diff-commands.js +5 -4
- package/dist/cli/commands/asset-commands.d.ts +2 -2
- package/dist/cli/commands/asset-commands.js +135 -132
- package/dist/cli/commands/audit-commands.d.ts +1 -1
- package/dist/cli/commands/audit-commands.js +75 -32
- package/dist/cli/commands/autonomous-swarm-commands.d.ts +1 -1
- package/dist/cli/commands/autonomous-swarm-commands.js +14 -8
- package/dist/cli/commands/baseline-commands.js +34 -9
- package/dist/cli/commands/bee-commands.d.ts +1 -1
- package/dist/cli/commands/bee-commands.js +18 -21
- package/dist/cli/commands/best-practice-scan-command.js +6 -34
- package/dist/cli/commands/best-practice-scan-helpers.d.ts +12 -0
- package/dist/cli/commands/best-practice-scan-helpers.js +37 -0
- package/dist/cli/commands/capability-commands.d.ts +1 -1
- package/dist/cli/commands/capability-commands.js +14 -4
- package/dist/cli/commands/capability-worker-config-sc-commands.d.ts +1 -1
- package/dist/cli/commands/changeset-commands.js +21 -18
- package/dist/cli/commands/code-gate-command.js +9 -2
- package/dist/cli/commands/code-job-shape-commands-read-job-shape.d.ts +15 -0
- package/dist/cli/commands/code-job-shape-commands-read-job-shape.js +70 -0
- package/dist/cli/commands/code-job-shape-commands.js +21 -45
- package/dist/cli/commands/code-mode-gate-commands.d.ts +15 -1
- package/dist/cli/commands/code-mode-gate-commands.js +19 -199
- package/dist/cli/commands/code-mode-gate-plan-command.d.ts +14 -0
- package/dist/cli/commands/code-mode-gate-plan-command.js +23 -0
- package/dist/cli/commands/code-mode-gate-should-pause-command.d.ts +24 -0
- package/dist/cli/commands/code-mode-gate-should-pause-command.js +137 -0
- package/dist/cli/commands/code-mode-gate-should-pause-envelope.d.ts +59 -0
- package/dist/cli/commands/code-mode-gate-should-pause-envelope.js +144 -0
- package/dist/cli/commands/code-orchestrator-can-do.js +4 -4
- package/dist/cli/commands/code-review-commands.js +18 -3
- package/dist/cli/commands/code-run-command.js +44 -7
- package/dist/cli/commands/code-runtime-commands.d.ts +17 -0
- package/dist/cli/commands/code-runtime-commands.js +105 -73
- package/dist/cli/commands/codegraph-commands.js +175 -11
- package/dist/cli/commands/codegraph-status-command.js +6 -2
- package/dist/cli/commands/compact-command.js +52 -26
- package/dist/cli/commands/complexity-commands.js +6 -7
- package/dist/cli/commands/config-commands.d.ts +1 -1
- package/dist/cli/commands/config-commands.js +33 -9
- package/dist/cli/commands/container-commands.js +39 -15
- package/dist/cli/commands/context-commands.d.ts +1 -1
- package/dist/cli/commands/context-commands.js +40 -13
- package/dist/cli/commands/core/artifacts-command.js +11 -3
- package/dist/cli/commands/core/binding-commands.js +9 -6
- package/dist/cli/commands/core/doctor-command.js +7 -4
- package/dist/cli/commands/core/memory-command.js +81 -22
- package/dist/cli/commands/core/proxy-command.js +3 -1
- package/dist/cli/commands/core/session-command.js +16 -8
- package/dist/cli/commands/core/skill-command.js +31 -16
- package/dist/cli/commands/core/standards-command.js +55 -13
- package/dist/cli/commands/cron-commands-actions.d.ts +43 -0
- package/dist/cli/commands/cron-commands-actions.js +128 -0
- package/dist/cli/commands/cron-commands-schedule.d.ts +86 -0
- package/dist/cli/commands/cron-commands-schedule.js +151 -0
- package/dist/cli/commands/cron-commands.d.ts +35 -32
- package/dist/cli/commands/cron-commands.js +167 -211
- package/dist/cli/commands/cron-scheduler-commands.js +40 -20
- package/dist/cli/commands/cron-scheduler-persist.d.ts +110 -0
- package/dist/cli/commands/cron-scheduler-persist.js +171 -0
- package/dist/cli/commands/dashboard-long-run.js +45 -14
- package/dist/cli/commands/dashboard-summary.js +15 -5
- package/dist/cli/commands/dispatch-commands.js +69 -34
- package/dist/cli/commands/dispatch-from-dag.js +9 -10
- package/dist/cli/commands/doc-commands.js +8 -9
- package/dist/cli/commands/doctor/invoke-from-code.js +1 -1
- package/dist/cli/commands/e2e-verify-env.d.ts +19 -0
- package/dist/cli/commands/e2e-verify-env.js +19 -0
- package/dist/cli/commands/e2e-verify.d.ts +3 -14
- package/dist/cli/commands/e2e-verify.js +49 -29
- package/dist/cli/commands/ecc-commands.d.ts +1 -1
- package/dist/cli/commands/ecc-commands.js +8 -17
- package/dist/cli/commands/evidence-commands.js +10 -6
- package/dist/cli/commands/evolution-commands.d.ts +2 -2
- package/dist/cli/commands/evolution-commands.js +109 -115
- package/dist/cli/commands/feedback-commands-helpers.d.ts +22 -0
- package/dist/cli/commands/feedback-commands-helpers.js +33 -0
- package/dist/cli/commands/feedback-commands.js +15 -38
- package/dist/cli/commands/final-review-commands.d.ts +1 -1
- package/dist/cli/commands/final-review-commands.js +24 -22
- package/dist/cli/commands/fixture-commands.d.ts +1 -1
- package/dist/cli/commands/fixture-commands.js +17 -6
- package/dist/cli/commands/fork-commands-sync-verify.d.ts +12 -0
- package/dist/cli/commands/fork-commands-sync-verify.js +72 -0
- package/dist/cli/commands/fork-commands.js +19 -51
- package/dist/cli/commands/fresh-context-commands.js +3 -1
- package/dist/cli/commands/gate-commands-enforce.d.ts +82 -0
- package/dist/cli/commands/gate-commands-enforce.js +210 -0
- package/dist/cli/commands/gate-commands.d.ts +1 -1
- package/dist/cli/commands/gate-commands.js +85 -205
- package/dist/cli/commands/governance-classify-contract-commands.d.ts +1 -1
- package/dist/cli/commands/governance-classify-contract-commands.js +28 -17
- package/dist/cli/commands/heartbeat-commands-action.d.ts +7 -0
- package/dist/cli/commands/heartbeat-commands-action.js +192 -0
- package/dist/cli/commands/heartbeat-commands-validation.d.ts +57 -0
- package/dist/cli/commands/heartbeat-commands-validation.js +120 -0
- package/dist/cli/commands/heartbeat-commands.d.ts +27 -6
- package/dist/cli/commands/heartbeat-commands.js +19 -198
- package/dist/cli/commands/hook-handle.d.ts +1 -1
- package/dist/cli/commands/hook-handle.js +46 -13
- package/dist/cli/commands/hooks-commands.d.ts +1 -1
- package/dist/cli/commands/hooks-commands.js +18 -6
- package/dist/cli/commands/ide-commands.d.ts +1 -1
- package/dist/cli/commands/ide-commands.js +5 -3
- package/dist/cli/commands/impact-commands.js +8 -2
- package/dist/cli/commands/job-add-slice-command.d.ts +43 -0
- package/dist/cli/commands/job-add-slice-command.js +151 -0
- package/dist/cli/commands/job-commands.d.ts +64 -0
- package/dist/cli/commands/job-commands.js +134 -63
- package/dist/cli/commands/lease-metrics-commands-support.d.ts +73 -0
- package/dist/cli/commands/lease-metrics-commands-support.js +67 -0
- package/dist/cli/commands/lease-metrics-commands.d.ts +3 -44
- package/dist/cli/commands/lease-metrics-commands.js +21 -61
- package/dist/cli/commands/lease-stats-commands.d.ts +1 -1
- package/dist/cli/commands/lease-stats-commands.js +9 -6
- package/dist/cli/commands/lint-commands.d.ts +9 -3
- package/dist/cli/commands/lint-commands.js +15 -8
- package/dist/cli/commands/log-commands.d.ts +1 -1
- package/dist/cli/commands/log-commands.js +8 -6
- package/dist/cli/commands/loop-commands.d.ts +1 -1
- package/dist/cli/commands/loop-commands.js +50 -50
- package/dist/cli/commands/loop-eval-commands.d.ts +1 -1
- package/dist/cli/commands/loop-eval-commands.js +101 -30
- package/dist/cli/commands/memory-commands.js +21 -13
- package/dist/cli/commands/migrate-1-4-1-command.js +1 -1
- package/dist/cli/commands/migrate-v2-10-to-v2-11-command.js +2 -2
- package/dist/cli/commands/mut-commands-helpers.d.ts +30 -0
- package/dist/cli/commands/mut-commands-helpers.js +43 -0
- package/dist/cli/commands/mut-commands.js +16 -58
- package/dist/cli/commands/observability-commands-queries.d.ts +37 -0
- package/dist/cli/commands/observability-commands-queries.js +113 -0
- package/dist/cli/commands/observability-commands.d.ts +1 -1
- package/dist/cli/commands/observability-commands.js +7 -92
- package/dist/cli/commands/openspec-commands.d.ts +1 -1
- package/dist/cli/commands/openspec-commands.js +20 -8
- package/dist/cli/commands/outer-cache-commands.js +18 -7
- package/dist/cli/commands/perf-audit-commands.d.ts +1 -1
- package/dist/cli/commands/perf-audit-commands.js +12 -7
- package/dist/cli/commands/perf-commands.d.ts +1 -1
- package/dist/cli/commands/perf-commands.js +5 -5
- package/dist/cli/commands/playwright-commands.d.ts +1 -1
- package/dist/cli/commands/playwright-commands.js +20 -8
- package/dist/cli/commands/polyrepo-commands.js +21 -19
- package/dist/cli/commands/prd-blocks-commands.js +1 -3
- package/dist/cli/commands/prd-commands.d.ts +1 -1
- package/dist/cli/commands/prd-commands.js +21 -2
- package/dist/cli/commands/preferences-commands.js +13 -12
- package/dist/cli/commands/primer-command.js +5 -5
- package/dist/cli/commands/project-commands.d.ts +1 -1
- package/dist/cli/commands/project-commands.js +33 -9
- package/dist/cli/commands/qa-business-review-commands.js +16 -12
- package/dist/cli/commands/qa-commands.d.ts +1 -1
- package/dist/cli/commands/qa-commands.js +3 -5
- package/dist/cli/commands/release-commands.d.ts +3 -1
- package/dist/cli/commands/release-commands.js +33 -22
- package/dist/cli/commands/request-commands.js +47 -30
- package/dist/cli/commands/request-format-helpers.js +1 -1
- package/dist/cli/commands/retrospective-commands.d.ts +18 -11
- package/dist/cli/commands/retrospective-commands.js +24 -173
- package/dist/cli/commands/retrospective-index-command.d.ts +26 -0
- package/dist/cli/commands/retrospective-index-command.js +99 -0
- package/dist/cli/commands/retrospective-project-root.d.ts +9 -0
- package/dist/cli/commands/retrospective-project-root.js +15 -0
- package/dist/cli/commands/retrospective-search-command.d.ts +27 -0
- package/dist/cli/commands/retrospective-search-command.js +97 -0
- package/dist/cli/commands/retrospective-show-command.d.ts +23 -0
- package/dist/cli/commands/retrospective-show-command.js +80 -0
- package/dist/cli/commands/reviewer-commands.d.ts +1 -1
- package/dist/cli/commands/role-commands.js +14 -9
- package/dist/cli/commands/runtime-commands.js +14 -7
- package/dist/cli/commands/sc-commands.d.ts +1 -1
- package/dist/cli/commands/sc-commands.js +39 -6
- package/dist/cli/commands/scan-commands.js +36 -13
- package/dist/cli/commands/security-audit-commands.d.ts +1 -1
- package/dist/cli/commands/security-audit-commands.js +12 -7
- package/dist/cli/commands/sediment-commands.d.ts +2 -2
- package/dist/cli/commands/sediment-commands.js +146 -139
- package/dist/cli/commands/session-24h-mode.js +15 -2
- package/dist/cli/commands/session-checkpoint-command.js +1 -1
- package/dist/cli/commands/session-migrate-skill-name.js +1 -1
- package/dist/cli/commands/shadcn-commands.d.ts +1 -1
- package/dist/cli/commands/shadcn-commands.js +3 -1
- package/dist/cli/commands/share-commands.js +38 -39
- package/dist/cli/commands/skill-conformance-commands.d.ts +1 -1
- package/dist/cli/commands/skill-conformance-commands.js +1 -1
- package/dist/cli/commands/skill-loop-engineering-readiness-commands.js +16 -17
- package/dist/cli/commands/skill-visibility.js +2 -2
- package/dist/cli/commands/slice-commands.d.ts +1 -1
- package/dist/cli/commands/slice-commands.js +36 -12
- package/dist/cli/commands/slice-integrate-commands.js +6 -7
- package/dist/cli/commands/slice-review-commands-helpers.d.ts +26 -0
- package/dist/cli/commands/slice-review-commands-helpers.js +26 -0
- package/dist/cli/commands/slice-review-commands.js +16 -24
- package/dist/cli/commands/smoke-commands-add-path.d.ts +14 -0
- package/dist/cli/commands/smoke-commands-add-path.js +39 -0
- package/dist/cli/commands/smoke-commands-define.d.ts +18 -0
- package/dist/cli/commands/smoke-commands-define.js +97 -0
- package/dist/cli/commands/smoke-commands-run.d.ts +18 -0
- package/dist/cli/commands/smoke-commands-run.js +119 -0
- package/dist/cli/commands/smoke-commands.d.ts +10 -1
- package/dist/cli/commands/smoke-commands.js +17 -179
- package/dist/cli/commands/sop-commands.d.ts +1 -1
- package/dist/cli/commands/sop-commands.js +38 -10
- package/dist/cli/commands/statusline-commands.d.ts +1 -1
- package/dist/cli/commands/statusline-commands.js +21 -10
- package/dist/cli/commands/sub-agent/detached.js +3 -3
- package/dist/cli/commands/sub-agent-dispatch-guard.d.ts +1 -1
- package/dist/cli/commands/sub-agent-shared.d.ts +23 -0
- package/dist/cli/commands/sub-agent-shared.js +40 -1
- package/dist/cli/commands/sub-agent-shutdown-commands.js +17 -9
- package/dist/cli/commands/swarm-commands.d.ts +1 -1
- package/dist/cli/commands/swarm-commands.js +13 -6
- package/dist/cli/commands/tech-commands-helpers.d.ts +37 -0
- package/dist/cli/commands/tech-commands-helpers.js +24 -0
- package/dist/cli/commands/tech-commands.d.ts +2 -29
- package/dist/cli/commands/tech-commands.js +15 -28
- package/dist/cli/commands/test-commands.js +27 -7
- package/dist/cli/commands/upgrade-commands.d.ts +1 -1
- package/dist/cli/commands/user-touchpoint-commands.js +1 -3
- package/dist/cli/commands/verdict-aggregate-command.d.ts +1 -1
- package/dist/cli/commands/verdict-aggregate-command.js +20 -7
- package/dist/cli/commands/vm-commands.js +48 -19
- package/dist/cli/commands/wave-plan-commands.js +5 -2
- package/dist/cli/commands/web-commands.js +14 -4
- package/dist/cli/commands/web-lifecycle-commands.js +5 -3
- package/dist/cli/commands/workflow-commands.d.ts +1 -1
- package/dist/cli/commands/workflow-commands.js +64 -29
- package/dist/cli/commands/workflow-lifecycle-commands.js +19 -17
- package/dist/cli/commands/workflow-plan-commands-actions.d.ts +20 -0
- package/dist/cli/commands/workflow-plan-commands-actions.js +115 -0
- package/dist/cli/commands/workflow-plan-commands-session.d.ts +17 -0
- package/dist/cli/commands/workflow-plan-commands-session.js +59 -0
- package/dist/cli/commands/workflow-plan-commands.d.ts +10 -21
- package/dist/cli/commands/workflow-plan-commands.js +15 -141
- package/dist/cli/commands/workspace/clean-command.js +4 -1
- package/dist/cli/commands/workspace/helpers.js +2 -1
- package/dist/cli/commands/workspace/init-command.js +80 -20
- package/dist/cli/commands/workspace/reconcile-command.js +3 -1
- package/dist/cli/commands/workspace-commands.d.ts +1 -1
- package/dist/cli/commands/workspace-commands.js +1 -1
- package/dist/cli/commands/worktree-auth-commands.d.ts +1 -1
- package/dist/cli/commands/worktree-auth-commands.js +16 -169
- package/dist/cli/commands/worktree-auth-grant-command.d.ts +14 -0
- package/dist/cli/commands/worktree-auth-grant-command.js +118 -0
- package/dist/cli/commands/worktree-auth-manage-commands.d.ts +17 -0
- package/dist/cli/commands/worktree-auth-manage-commands.js +128 -0
- package/dist/cli/commands/worktree-lease-commands.d.ts +1 -1
- package/dist/cli/commands/worktree-lease-commands.js +65 -37
- package/dist/cli/index.js +6 -2
- package/dist/cli/program.js +6 -3
- package/dist/hooks/pre-tool-use-sub-agent.js +1 -6
- package/dist/reporters/bdd-reporter.js +9 -3
- package/dist/services/24h-mode/auto-engage.d.ts +19 -0
- package/dist/services/24h-mode/auto-engage.js +35 -0
- package/dist/services/24h-mode/decider.js +5 -1
- package/dist/services/24h-mode/store.js +4 -2
- package/dist/services/adapter/adapter-registry.js +20 -8
- package/dist/services/adapter/adapter.d.ts +2 -2
- package/dist/services/adapter/auto-adapter.d.ts +2 -2
- package/dist/services/adapter/auto-adapter.js +1 -1
- package/dist/services/adapter/claude-adapter.d.ts +1 -1
- package/dist/services/adapter/claude-adapter.js +8 -8
- package/dist/services/adapter/codex-adapter.d.ts +2 -2
- package/dist/services/adapter/codex-adapter.js +20 -8
- package/dist/services/adapter/copilot-adapter.d.ts +2 -2
- package/dist/services/adapter/copilot-adapter.js +20 -8
- package/dist/services/artifacts/artifact-prerequisites.js +44 -8
- package/dist/services/artifacts/artifact-service.js +3 -1
- package/dist/services/artifacts/artifact-template-bodies.d.ts +12 -0
- package/dist/services/artifacts/artifact-template-bodies.js +165 -0
- package/dist/services/artifacts/artifact-templates.js +26 -168
- package/dist/services/artifacts/request-artifact-service.js +14 -7
- package/dist/services/artifacts/request-artifact-state-helpers.d.ts +3 -2
- package/dist/services/artifacts/request-artifact-state-helpers.js +3 -5
- package/dist/services/artifacts/workspace-artifact-helpers.d.ts +28 -0
- package/dist/services/artifacts/workspace-artifact-helpers.js +54 -0
- package/dist/services/artifacts/workspace-service.d.ts +3 -22
- package/dist/services/artifacts/workspace-service.js +10 -60
- package/dist/services/audit/artifact-writer.js +21 -21
- package/dist/services/audit/audit-goal-service.js +2 -2
- package/dist/services/audit/backing-detector.js +7 -4
- package/dist/services/audit/classifier.js +3 -3
- package/dist/services/audit/decision-writer.js +13 -9
- package/dist/services/audit/enforcer-liveness.js +1 -1
- package/dist/services/audit/enforcers/active-skill-resolver.js +15 -7
- package/dist/services/audit/enforcers/design-draft-confirm.js +4 -4
- package/dist/services/audit/enforcers/lint-audit-regression.js +10 -5
- package/dist/services/audit/enforcers/lint-bee-runtime-contract.js +16 -8
- package/dist/services/audit/enforcers/lint-catalog-governance.js +8 -4
- package/dist/services/audit/enforcers/lint-output-style.js +4 -2
- package/dist/services/audit/enforcers/lint-peaks-code-runtime.js +8 -3
- package/dist/services/audit/enforcers/lint-peaks-skill-runtime.js +8 -3
- package/dist/services/audit/enforcers/lint-peaks-ui-sc-txt-runtime.js +20 -20
- package/dist/services/audit/enforcers/lint-prd-artifact-handoff.js +5 -5
- package/dist/services/audit/enforcers/lint-prd-source-snapshot.d.ts +1 -1
- package/dist/services/audit/enforcers/lint-prd-source-snapshot.js +5 -5
- package/dist/services/audit/enforcers/lint-qa-gateguard-and-runtime.js +10 -10
- package/dist/services/audit/enforcers/lint-rd-handoff-coverage.js +10 -8
- package/dist/services/audit/enforcers/lint-reference-shape.js +50 -18
- package/dist/services/audit/enforcers/lint-skill-presence-mandatory.js +5 -5
- package/dist/services/audit/enforcers/lint-style.js +44 -11
- package/dist/services/audit/enforcers/lint-workflow-shape.js +4 -2
- package/dist/services/audit/enforcers/login-gate.js +2 -6
- package/dist/services/audit/enforcers/mock-placement.js +2 -2
- package/dist/services/audit/enforcers/no-root-pollution.js +38 -9
- package/dist/services/audit/enforcers/pre-rd-scan.js +1 -1
- package/dist/services/audit/enforcers/prototype-fidelity.js +1 -1
- package/dist/services/audit/enforcers/resume-detection.js +5 -4
- package/dist/services/audit/prose-ratio-calculator.js +1 -1
- package/dist/services/audit/red-line-catalog-p2-a-bee-runtime.d.ts +39 -0
- package/dist/services/audit/red-line-catalog-p2-a-bee-runtime.js +205 -0
- package/dist/services/audit/red-line-catalog-p2-a-lint-style.d.ts +52 -0
- package/dist/services/audit/red-line-catalog-p2-a-lint-style.js +205 -0
- package/dist/services/audit/red-line-catalog-p2-a.js +3 -374
- package/dist/services/audit/red-line-catalog-p2-b.js +26 -26
- package/dist/services/audit/red-line-catalog.js +26 -38
- package/dist/services/audit/red-lines-service.js +64 -49
- package/dist/services/audit/scanners/openspec-scanner.js +2 -2
- package/dist/services/audit/scanners/rules-tree-scanner.js +2 -2
- package/dist/services/audit/scanners/skills-tree-scanner.js +2 -2
- package/dist/services/audit/static-service.js +3 -3
- package/dist/services/audit-independent/index.d.ts +2 -2
- package/dist/services/audit-independent/index.js +2 -2
- package/dist/services/audit-independent/perf-audit-service.js +19 -8
- package/dist/services/audit-independent/security-audit-service.js +31 -16
- package/dist/services/autonomous-swarm/autonomous-swarm-service.js +75 -46
- package/dist/services/best-practice/output-formatter.js +7 -1
- package/dist/services/capability-audit-service/cross-check.js +11 -5
- package/dist/services/capability-audit-service/runner.js +15 -7
- package/dist/services/capability-baseline/store.js +16 -4
- package/dist/services/capability-baseline/types.js +15 -3
- package/dist/services/capability-baseline/validator.js +43 -7
- package/dist/services/capability-guard-runner/contracts/J02.js +36 -6
- package/dist/services/capability-guard-runner/contracts/J03.js +20 -11
- package/dist/services/capability-guard-runner/contracts/J04.js +24 -15
- package/dist/services/capability-guard-runner/contracts/J05.js +26 -10
- package/dist/services/capability-guard-runner/contracts/J07.js +8 -2
- package/dist/services/capability-guard-runner/contracts/J08.js +22 -5
- package/dist/services/capability-guard-runner/contracts/J10.js +6 -2
- package/dist/services/capability-guard-runner/contracts/J11.d.ts +5 -0
- package/dist/services/capability-guard-runner/contracts/J11.js +14 -2
- package/dist/services/capability-guard-runner/contracts/J12.js +12 -3
- package/dist/services/capability-guard-runner/diff.js +1 -5
- package/dist/services/changeset/changeset-check-service.js +1 -3
- package/dist/services/classify/classify-service.js +20 -8
- package/dist/services/classify/classify-types.js +22 -9
- package/dist/services/code/auto-compact-lifecycle.js +62 -39
- package/dist/services/code/auto-compact-modes.js +2 -2
- package/dist/services/code/auto-compact-orchestrator.js +14 -9
- package/dist/services/code/batch-heartbeat-poller.d.ts +10 -0
- package/dist/services/code/batch-heartbeat-poller.js +17 -1
- package/dist/services/code/compact-event-settle-types.d.ts +80 -0
- package/dist/services/code/compact-event-settle-types.js +20 -0
- package/dist/services/code/compact-event-settle.d.ts +3 -68
- package/dist/services/code/compact-event-settle.js +14 -10
- package/dist/services/code/dag-orchestrator.js +32 -26
- package/dist/services/code/job-shape-decision.js +3 -1
- package/dist/services/code/mode-gate-types.d.ts +57 -0
- package/dist/services/code/mode-gate-types.js +67 -0
- package/dist/services/code/mode-gate.d.ts +4 -58
- package/dist/services/code/mode-gate.js +24 -60
- package/dist/services/code/orchestrator-can-do-advisories.d.ts +30 -0
- package/dist/services/code/orchestrator-can-do-advisories.js +81 -0
- package/dist/services/code/orchestrator-can-do-probes.d.ts +30 -0
- package/dist/services/code/orchestrator-can-do-probes.js +77 -0
- package/dist/services/code/orchestrator-can-do.d.ts +11 -22
- package/dist/services/code/orchestrator-can-do.js +37 -137
- package/dist/services/code/post-compact-checkpoint.d.ts +28 -0
- package/dist/services/code/post-compact-checkpoint.js +57 -0
- package/dist/services/code/post-compact-detector.js +16 -48
- package/dist/services/code/step-08-gate.d.ts +4 -3
- package/dist/services/code/step-08-gate.js +21 -9
- package/dist/services/code-review/ecc-bridge.js +23 -23
- package/dist/services/codegraph/codegraph-autorefresh.js +56 -39
- package/dist/services/codegraph/codegraph-config-repair-writer.d.ts +44 -0
- package/dist/services/codegraph/codegraph-config-repair-writer.js +116 -14
- package/dist/services/codegraph/codegraph-exclude-integrity.js +4 -1
- package/dist/services/codegraph/codegraph-exclude-repair.d.ts +23 -1
- package/dist/services/codegraph/codegraph-exclude-repair.js +7 -2
- package/dist/services/codegraph/codegraph-index-integrity.js +1 -1
- package/dist/services/codegraph/codegraph-preflight-service.d.ts +3 -26
- package/dist/services/codegraph/codegraph-preflight-service.js +16 -37
- package/dist/services/codegraph/codegraph-preflight-structure.d.ts +32 -0
- package/dist/services/codegraph/codegraph-preflight-structure.js +33 -0
- package/dist/services/codegraph/codegraph-process-runner.js +12 -1
- package/dist/services/codegraph/codegraph-service.js +9 -1
- package/dist/services/compact/request-transition-hook.js +2 -1
- package/dist/services/compact/suggest-service.d.ts +3 -61
- package/dist/services/compact/suggest-service.js +9 -12
- package/dist/services/compact/suggest-types.d.ts +76 -0
- package/dist/services/compact/suggest-types.js +10 -0
- package/dist/services/compact-history/compact-history-service.js +2 -2
- package/dist/services/compact-statusline/compact-lifecycle-store.d.ts +2 -32
- package/dist/services/compact-statusline/compact-lifecycle-store.js +7 -12
- package/dist/services/compact-statusline/compact-lifecycle-types.d.ts +32 -0
- package/dist/services/compact-statusline/compact-lifecycle-types.js +8 -0
- package/dist/services/compact-statusline/compact-statusline-cell-table.d.ts +42 -0
- package/dist/services/compact-statusline/compact-statusline-cell-table.js +63 -0
- package/dist/services/compact-statusline/compact-statusline-service.d.ts +4 -21
- package/dist/services/compact-statusline/compact-statusline-service.js +9 -101
- package/dist/services/compact-statusline/compact-statusline-state.d.ts +4 -0
- package/dist/services/compact-statusline/compact-statusline-state.js +50 -0
- package/dist/services/config/config-migration.js +2 -2
- package/dist/services/config/config-restore.js +1 -1
- package/dist/services/config/config-rollback.js +1 -1
- package/dist/services/config/config-safety.js +28 -10
- package/dist/services/config/config-service.js +114 -31
- package/dist/services/config/model-routing.js +5 -2
- package/dist/services/config/proxy-service.js +6 -1
- package/dist/services/config/workspace-state-service.js +17 -5
- package/dist/services/context/auto-compact-dispatcher-input.d.ts +38 -0
- package/dist/services/context/auto-compact-dispatcher-input.js +9 -0
- package/dist/services/context/auto-compact-dispatcher.d.ts +2 -30
- package/dist/services/context/auto-compact-reader-input.d.ts +30 -0
- package/dist/services/context/auto-compact-reader-input.js +8 -0
- package/dist/services/context/auto-compact-reader.d.ts +2 -24
- package/dist/services/context/auto-compact-reader.js +4 -1
- package/dist/services/context/auto-compact-thresholds.d.ts +54 -0
- package/dist/services/context/auto-compact-thresholds.js +19 -0
- package/dist/services/context/auto-compact-types.d.ts +2 -46
- package/dist/services/context/auto-compact-types.js +1 -11
- package/dist/services/context/build-dispatch-system-prompt.js +2 -2
- package/dist/services/context/collector.js +8 -10
- package/dist/services/context/context-audit-hint.js +7 -5
- package/dist/services/context/context-audit-keys.d.ts +15 -0
- package/dist/services/context/context-audit-keys.js +77 -0
- package/dist/services/context/context-audit-limits.d.ts +20 -0
- package/dist/services/context/context-audit-limits.js +31 -0
- package/dist/services/context/context-audit-scan.d.ts +19 -0
- package/dist/services/context/context-audit-scan.js +246 -0
- package/dist/services/context/context-audit-types.d.ts +65 -0
- package/dist/services/context/context-audit-types.js +10 -0
- package/dist/services/context/context-audit.d.ts +13 -59
- package/dist/services/context/context-audit.js +38 -254
- package/dist/services/context/context-builder.js +4 -4
- package/dist/services/context/context-schema.d.ts +1 -1
- package/dist/services/context/context-schema.js +13 -13
- package/dist/services/context/doc-retriever.js +2 -2
- package/dist/services/context/harness-context-witness.js +43 -24
- package/dist/services/context/harness-window-config.js +27 -7
- package/dist/services/context/ide-detect.js +2 -1
- package/dist/services/context/index.d.ts +1 -1
- package/dist/services/context/memory-index-reader.js +3 -9
- package/dist/services/context/memory-preflight-config.js +3 -5
- package/dist/services/context/memory-preflight-service.d.ts +2 -20
- package/dist/services/context/memory-preflight-service.js +37 -68
- package/dist/services/context/memory-preflight-support.d.ts +48 -0
- package/dist/services/context/memory-preflight-support.js +56 -0
- package/dist/services/context/post-compact-reinjection.js +3 -3
- package/dist/services/context/renderer.js +7 -3
- package/dist/services/context/spillover-store.js +3 -1
- package/dist/services/context/summary-view.js +1 -1
- package/dist/services/context/threshold.js +2 -2
- package/dist/services/context/tokenizer.js +3 -3
- package/dist/services/crystallization/crystallization-brief-schema.d.ts +80 -0
- package/dist/services/crystallization/crystallization-brief-schema.js +159 -0
- package/dist/services/crystallization/crystallization-service.d.ts +7 -7
- package/dist/services/crystallization/crystallization-service.js +56 -55
- package/dist/services/crystallization/crystallization-store.d.ts +2 -2
- package/dist/services/crystallization/crystallization-store.js +37 -20
- package/dist/services/crystallization/crystallization-types.d.ts +4 -56
- package/dist/services/crystallization/crystallization-types.js +31 -184
- package/dist/services/crystallization/evidence-brief-builder.d.ts +3 -3
- package/dist/services/crystallization/evidence-brief-builder.js +32 -38
- package/dist/services/crystallization/index.d.ts +4 -4
- package/dist/services/crystallization/index.js +4 -4
- package/dist/services/dashboard/project-dashboard-service.js +7 -1
- package/dist/services/dispatch/await-batch-helpers.d.ts +55 -0
- package/dist/services/dispatch/await-batch-helpers.js +206 -0
- package/dist/services/dispatch/await-batch.d.ts +50 -7
- package/dist/services/dispatch/await-batch.js +97 -194
- package/dist/services/dispatch/batch-counter.js +2 -1
- package/dist/services/dispatch/conflict-replay.js +2 -2
- package/dist/services/dispatch/contract-store.js +5 -2
- package/dist/services/dispatch/dispatch-record-input-types.d.ts +81 -0
- package/dist/services/dispatch/dispatch-record-input-types.js +1 -0
- package/dist/services/dispatch/dispatch-record-types.d.ts +6 -73
- package/dist/services/dispatch/dispatch-record-upgrade-fields.d.ts +72 -0
- package/dist/services/dispatch/dispatch-record-upgrade-fields.js +242 -0
- package/dist/services/dispatch/dispatch-record-upgrade-guards.d.ts +15 -0
- package/dist/services/dispatch/dispatch-record-upgrade-guards.js +55 -0
- package/dist/services/dispatch/dispatch-record-upgrade.d.ts +2 -4
- package/dist/services/dispatch/dispatch-record-upgrade.js +21 -213
- package/dist/services/dispatch/dispatch-record-writer.js +54 -26
- package/dist/services/dispatch/dispatch-sub-agent.js +7 -2
- package/dist/services/dispatch/e2e-fixtures.js +1 -1
- package/dist/services/dispatch/isolation-lease.js +39 -17
- package/dist/services/dispatch/merge-back-runner.js +51 -11
- package/dist/services/dispatch/service-shutdown.js +4 -1
- package/dist/services/dispatch/slice-dag-types.d.ts +116 -0
- package/dist/services/dispatch/slice-dag-types.js +41 -0
- package/dist/services/dispatch/slice-dag.d.ts +3 -109
- package/dist/services/dispatch/slice-dag.js +13 -36
- package/dist/services/dispatch/sub-agent-batch-await.d.ts +47 -0
- package/dist/services/dispatch/sub-agent-batch-await.js +73 -0
- package/dist/services/dispatch/sub-agent-dispatcher-types.d.ts +122 -0
- package/dist/services/dispatch/sub-agent-dispatcher-types.js +12 -0
- package/dist/services/dispatch/sub-agent-dispatcher.d.ts +3 -145
- package/dist/services/dispatch/sub-agent-dispatcher.js +14 -70
- package/dist/services/dispatch/test-tool-detection.js +12 -1
- package/dist/services/doc/doc-generator.js +19 -4
- package/dist/services/doctor/doctor-service/checks/check-id-schema.js +16 -8
- package/dist/services/doctor/doctor-service/checks/codegraph-capability.d.ts +7 -2
- package/dist/services/doctor/doctor-service/checks/codegraph-capability.js +26 -8
- package/dist/services/doctor/doctor-service/checks/codegraph-exclude-integrity.js +16 -8
- package/dist/services/doctor/doctor-service/checks/codegraph-index-integrity.js +16 -8
- package/dist/services/doctor/doctor-service/checks/dist-source-version.js +18 -9
- package/dist/services/doctor/doctor-service/checks/ecc-hooks-schema-drift.js +20 -10
- package/dist/services/doctor/doctor-service/checks/gateguard-conflict.js +18 -9
- package/dist/services/doctor/doctor-service/checks/l3-memory-health.js +25 -11
- package/dist/services/doctor/doctor-service/checks/l3-orphan-sessions.js +12 -6
- package/dist/services/doctor/doctor-service/checks/multi-binary-drift.d.ts +7 -16
- package/dist/services/doctor/doctor-service/checks/multi-binary-drift.js +50 -70
- package/dist/services/doctor/doctor-service/checks/schema-validity.js +5 -1
- package/dist/services/doctor/doctor-service/checks/skill-presence.js +4 -2
- package/dist/services/doctor/doctor-service/checks/statusline-install.js +8 -4
- package/dist/services/doctor/doctor-service/checks/statusline-runtime.js +8 -4
- package/dist/services/doctor/doctor-service/checks/user-config.js +4 -2
- package/dist/services/doctor/doctor-service/checks/workspace-init.js +8 -4
- package/dist/services/doctor/doctor-service/checks/workspace-layout.js +19 -11
- package/dist/services/doctor/doctor-service/index.js +4 -2
- package/dist/services/doctor/doctor-service/multi-binary-drift-helpers.d.ts +40 -0
- package/dist/services/doctor/doctor-service/multi-binary-drift-helpers.js +49 -0
- package/dist/services/doctor/doctor-service/plugin-registry.js +1 -1
- package/dist/services/doctor/doctor-service/probe-types.d.ts +210 -0
- package/dist/services/doctor/doctor-service/probe-types.js +14 -0
- package/dist/services/doctor/doctor-service/types.d.ts +7 -197
- package/dist/services/doctor/index.d.ts +1 -1
- package/dist/services/doctor/index.js +1 -1
- package/dist/services/env/shell-probe.js +8 -2
- package/dist/services/evidence/evidence-body-builders.d.ts +23 -0
- package/dist/services/evidence/evidence-body-builders.js +197 -0
- package/dist/services/evidence/evidence-generator.js +16 -189
- package/dist/services/evolution/evolution-constraints.d.ts +43 -0
- package/dist/services/evolution/evolution-constraints.js +54 -0
- package/dist/services/evolution/evolution-evaluation-schema.d.ts +43 -0
- package/dist/services/evolution/evolution-evaluation-schema.js +43 -0
- package/dist/services/evolution/evolution-service.d.ts +6 -6
- package/dist/services/evolution/evolution-service.js +58 -58
- package/dist/services/evolution/evolution-store.d.ts +2 -2
- package/dist/services/evolution/evolution-store.js +37 -51
- package/dist/services/evolution/evolution-types.d.ts +2 -22
- package/dist/services/evolution/evolution-types.js +41 -101
- package/dist/services/evolution/independent-evaluator-runner.d.ts +3 -3
- package/dist/services/evolution/independent-evaluator-runner.js +20 -22
- package/dist/services/evolution/regression-skeptic-runner.d.ts +2 -2
- package/dist/services/evolution/regression-skeptic-runner.js +18 -18
- package/dist/services/feedback/feedback-promotion-service.js +48 -12
- package/dist/services/feedback/promotion-artifact-evidence.d.ts +2 -16
- package/dist/services/feedback/promotion-artifact-evidence.js +6 -83
- package/dist/services/feedback/promotion-artifact-json-evidence.d.ts +29 -0
- package/dist/services/feedback/promotion-artifact-json-evidence.js +39 -0
- package/dist/services/feedback/promotion-source-comments.d.ts +47 -0
- package/dist/services/feedback/promotion-source-comments.js +61 -0
- package/dist/services/final-review/final-review-contract.d.ts +26 -0
- package/dist/services/final-review/final-review-contract.js +14 -0
- package/dist/services/final-review/final-review-delivery.d.ts +63 -0
- package/dist/services/final-review/final-review-delivery.js +124 -0
- package/dist/services/final-review/final-review-evidence-budget.d.ts +125 -0
- package/dist/services/final-review/final-review-evidence-budget.js +218 -0
- package/dist/services/final-review/final-review-evidence-collect.d.ts +4 -0
- package/dist/services/final-review/final-review-evidence-collect.js +230 -0
- package/dist/services/final-review/final-review-evidence-sources.d.ts +138 -0
- package/dist/services/final-review/final-review-evidence-sources.js +139 -0
- package/dist/services/final-review/final-review-fifth-dim.d.ts +8 -0
- package/dist/services/final-review/final-review-fifth-dim.js +20 -0
- package/dist/services/final-review/final-review-gates.d.ts +119 -0
- package/dist/services/final-review/final-review-gates.js +214 -0
- package/dist/services/final-review/final-review-output-budget.d.ts +88 -0
- package/dist/services/final-review/final-review-output-budget.js +161 -0
- package/dist/services/final-review/final-review-prompt.d.ts +35 -0
- package/dist/services/final-review/final-review-prompt.js +112 -0
- package/dist/services/final-review/final-review-reviewer.d.ts +57 -0
- package/dist/services/final-review/final-review-reviewer.js +95 -0
- package/dist/services/final-review/final-review-runner.d.ts +3 -0
- package/dist/services/final-review/final-review-runner.js +158 -0
- package/dist/services/final-review/final-review-service.d.ts +119 -373
- package/dist/services/final-review/final-review-service.js +48 -1380
- package/dist/services/final-review/final-review-verdicts.d.ts +60 -0
- package/dist/services/final-review/final-review-verdicts.js +91 -0
- package/dist/services/final-review/index.d.ts +3 -3
- package/dist/services/final-review/index.js +2 -2
- package/dist/services/final-review/pre-post-diff.js +32 -29
- package/dist/services/fixture/fixture-capture-service.js +14 -6
- package/dist/services/fresh-context/trigger-scan.js +13 -2
- package/dist/services/fuzzy-matching/fuzzy-match-service.js +1 -1
- package/dist/services/fuzzy-matching/fzf-pick-service.js +6 -1
- package/dist/services/hooks/pre-tool-code-gate.js +2 -2
- package/dist/services/hooks/presence-marker-detector.js +12 -2
- package/dist/services/hooks/worktree-authorization-gate.js +21 -7
- package/dist/services/ide/adapters/claude-code-adapter.js +30 -17
- package/dist/services/ide/adapters/codex-adapter.js +3 -5
- package/dist/services/ide/adapters/cursor-adapter.js +3 -5
- package/dist/services/ide/adapters/hermes-adapter.js +2 -4
- package/dist/services/ide/adapters/openclaw-adapter.js +2 -4
- package/dist/services/ide/adapters/qoder-adapter.js +2 -4
- package/dist/services/ide/adapters/tongyi-lingma-adapter.js +1 -1
- package/dist/services/ide/adapters/trae-adapter.js +3 -5
- package/dist/services/ide/adapters/zcode-adapter.js +8 -7
- package/dist/services/ide/current-model-detector.js +2 -1
- package/dist/services/ide/ide-compact-types.d.ts +153 -0
- package/dist/services/ide/ide-compact-types.js +1 -0
- package/dist/services/ide/ide-registry.js +1 -1
- package/dist/services/ide/ide-types.d.ts +7 -145
- package/dist/services/ide/resource-profile.js +1 -1
- package/dist/services/ide/shared/atomic-json.js +2 -1
- package/dist/services/impact/impact-scan-service.js +12 -5
- package/dist/services/job/job-commit-verification.d.ts +73 -0
- package/dist/services/job/job-commit-verification.js +72 -0
- package/dist/services/job/job-orchestrator.d.ts +42 -0
- package/dist/services/job/job-orchestrator.js +110 -10
- package/dist/services/job/job-progress-store.d.ts +75 -5
- package/dist/services/job/job-progress-store.js +83 -6
- package/dist/services/job/job-rotation.d.ts +1 -1
- package/dist/services/job/job-rotation.js +5 -1
- package/dist/services/job/job-state-store.js +2 -2
- package/dist/services/job/job-types.js +49 -20
- package/dist/services/job/subagent-job-wrapper.d.ts +1 -1
- package/dist/services/job/subagent-job-wrapper.js +5 -1
- package/dist/services/job-snapshot/snapshot.js +2 -2
- package/dist/services/karpathy-cost/karpathy-cost-check-service.js +23 -13
- package/dist/services/legacy/legacy-detector.js +51 -5
- package/dist/services/lint/detect-eslint.js +10 -4
- package/dist/services/lint/detect-ocr-18.js +11 -3
- package/dist/services/lint/eslint-runner-support.d.ts +22 -0
- package/dist/services/lint/eslint-runner-support.js +185 -0
- package/dist/services/lint/eslint-runner-types.d.ts +69 -0
- package/dist/services/lint/eslint-runner-types.js +11 -0
- package/dist/services/lint/eslint-runner.d.ts +4 -56
- package/dist/services/lint/eslint-runner.js +24 -178
- package/dist/services/lint/npx-resolver.js +1 -3
- package/dist/services/lint/ocr-18-acquire.js +15 -4
- package/dist/services/lint/ocr-multilang-adapter.js +4 -5
- package/dist/services/llm/anthropic-runner.js +4 -1
- package/dist/services/log/log-commands-service.js +2 -6
- package/dist/services/log/logger.js +15 -12
- package/dist/services/log/retention.js +3 -2
- package/dist/services/loop/evaluator-dispatcher.js +78 -42
- package/dist/services/loop/loop-bee-relation-service.d.ts +4 -4
- package/dist/services/loop/loop-bee-relation-service.js +36 -40
- package/dist/services/loop/loop-bee-relation-store.d.ts +3 -3
- package/dist/services/loop/loop-bee-relation-store.js +9 -11
- package/dist/services/loop/loop-bee-relation-types.d.ts +1 -1
- package/dist/services/loop/loop-bee-relation-types.js +14 -25
- package/dist/services/loop/loop-release-service.d.ts +2 -2
- package/dist/services/loop/loop-release-service.js +3 -3
- package/dist/services/loop/loop-release-store.d.ts +2 -2
- package/dist/services/loop/loop-release-store.js +4 -6
- package/dist/services/loop/loop-release-types.d.ts +1 -1
- package/dist/services/loop/loop-release-types.js +21 -31
- package/dist/services/loop/monotonic-guard-types.d.ts +51 -0
- package/dist/services/loop/monotonic-guard-types.js +9 -0
- package/dist/services/loop/monotonic-guard.d.ts +2 -43
- package/dist/services/loop/monotonic-runner-types.d.ts +63 -0
- package/dist/services/loop/monotonic-runner-types.js +17 -0
- package/dist/services/loop/monotonic-runner.d.ts +3 -34
- package/dist/services/loop/monotonic-runner.js +10 -20
- package/dist/services/loop/run-driver.js +16 -8
- package/dist/services/loop/spec-service.d.ts +0 -5
- package/dist/services/loop/spec-service.js +49 -9
- package/dist/services/memory/llm-reranker-core.d.ts +108 -0
- package/dist/services/memory/llm-reranker-core.js +105 -0
- package/dist/services/memory/llm-reranker.d.ts +3 -94
- package/dist/services/memory/llm-reranker.js +13 -102
- package/dist/services/memory/memory-ingest-service.d.ts +1 -22
- package/dist/services/memory/memory-ingest-service.js +29 -76
- package/dist/services/memory/memory-ingest-support.d.ts +23 -0
- package/dist/services/memory/memory-ingest-support.js +81 -0
- package/dist/services/memory/memory-rotate-service.js +41 -8
- package/dist/services/memory/memory-search-service.js +8 -4
- package/dist/services/memory/project-context-service.js +26 -5
- package/dist/services/memory/project-memory-service/index/kind-dispatch.d.ts +2 -7
- package/dist/services/memory/project-memory-service/index/kind-dispatch.js +17 -136
- package/dist/services/memory/project-memory-service/index/project-memory-plan-exec.d.ts +7 -0
- package/dist/services/memory/project-memory-service/index/project-memory-plan-exec.js +150 -0
- package/dist/services/memory/project-memory-service/index/ranking.js +6 -3
- package/dist/services/memory/project-memory-service/index/reindex.js +14 -5
- package/dist/services/memory/project-memory-service/index.d.ts +1 -1
- package/dist/services/memory/project-memory-service/index.js +1 -1
- package/dist/services/memory/project-memory-service/memory-kinds.d.ts +31 -0
- package/dist/services/memory/project-memory-service/memory-kinds.js +87 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter-parse.d.ts +24 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter-parse.js +104 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter.d.ts +2 -24
- package/dist/services/memory/project-memory-service/parsers/frontmatter.js +28 -79
- package/dist/services/memory/project-memory-service/parsers/markdown-pure.js +15 -3
- package/dist/services/memory/project-memory-service/store/atomic-write.d.ts +59 -0
- package/dist/services/memory/project-memory-service/store/atomic-write.js +189 -17
- package/dist/services/memory/project-memory-service/store/paths.js +2 -1
- package/dist/services/memory/project-memory-service/types.d.ts +3 -31
- package/dist/services/memory/project-memory-service/types.js +1 -76
- package/dist/services/migrate-skill-name/migrate.js +1 -1
- package/dist/services/migrate-skill-name/schema.js +1 -1
- package/dist/services/mode/mode-enforcement.js +4 -2
- package/dist/services/mode/mode-status-service.d.ts +27 -9
- package/dist/services/mode/mode-status-service.js +64 -12
- package/dist/services/observability/aggregation-helpers.d.ts +22 -0
- package/dist/services/observability/aggregation-helpers.js +65 -0
- package/dist/services/observability/aggregation-types.d.ts +66 -0
- package/dist/services/observability/aggregation-types.js +34 -0
- package/dist/services/observability/aggregation.d.ts +5 -53
- package/dist/services/observability/aggregation.js +17 -80
- package/dist/services/observability/jsonl-store.js +2 -1
- package/dist/services/observability/observability-schema.d.ts +71 -0
- package/dist/services/observability/observability-schema.js +64 -0
- package/dist/services/observability/observability-service.d.ts +3 -56
- package/dist/services/observability/observability-service.js +9 -49
- package/dist/services/openspec/coverage-evidence-reader.js +18 -11
- package/dist/services/openspec/openspec-archive-service.js +31 -24
- package/dist/services/openspec/openspec-init-service.js +8 -2
- package/dist/services/openspec/openspec-propose-from-doctor-service.js +1 -1
- package/dist/services/openspec/openspec-scan-service.js +4 -1
- package/dist/services/openspec/openspec-validate-service.js +26 -5
- package/dist/services/perf/perf-baseline-service.js +2 -6
- package/dist/services/polyrepo/polyrepo-dispatcher.js +2 -1
- package/dist/services/polyrepo/polyrepo-scanner.js +4 -1
- package/dist/services/prd/gate-evidence-derivation.d.ts +160 -0
- package/dist/services/prd/gate-evidence-derivation.js +270 -0
- package/dist/services/prd/handoff-auto-regen.js +13 -1
- package/dist/services/prd/handoff-frontmatter-shape.d.ts +42 -0
- package/dist/services/prd/handoff-frontmatter-shape.js +67 -0
- package/dist/services/prd/handoff-frontmatter.d.ts +1 -1
- package/dist/services/prd/handoff-frontmatter.js +63 -1
- package/dist/services/prd/handoff-gate-evidence.d.ts +95 -1
- package/dist/services/prd/handoff-gate-evidence.js +125 -57
- package/dist/services/prd/handoff-path-resolution.d.ts +37 -0
- package/dist/services/prd/handoff-path-resolution.js +101 -0
- package/dist/services/prd/handoff-service.d.ts +22 -38
- package/dist/services/prd/handoff-service.js +38 -127
- package/dist/services/prd/handoff-types.d.ts +40 -0
- package/dist/services/prd/handoff-types.js +28 -1
- package/dist/services/prd/prd-blocks-checker.js +28 -8
- package/dist/services/prd/project-scan-bootstrap-service.js +1 -5
- package/dist/services/prd/project-scan-reader.d.ts +7 -0
- package/dist/services/prd/project-scan-reader.js +8 -5
- package/dist/services/prd/project-scan-sediment.js +1 -4
- package/dist/services/preferences/preferences-service.js +6 -8
- package/dist/services/preferences/preferences-types.js +4 -4
- package/dist/services/qa/bdd-test-style-contract.d.ts +41 -0
- package/dist/services/qa/bdd-test-style-contract.js +37 -0
- package/dist/services/qa/bdd-test-style-verifier.d.ts +2 -24
- package/dist/services/qa/bdd-test-style-verifier.js +5 -31
- package/dist/services/qa/browser-event-logger.js +2 -1
- package/dist/services/qa/qa-business-review-state.js +20 -5
- package/dist/services/qa/screenshot-archive-service.js +1 -3
- package/dist/services/rd/ast-gate.js +2 -2
- package/dist/services/rd/impl.js +1 -1
- package/dist/services/rd/rd-service.js +117 -43
- package/dist/services/rd/reviewer-dispatch-policy.d.ts +36 -8
- package/dist/services/rd/reviewer-dispatch-policy.js +40 -15
- package/dist/services/rd/standards-diagnostic.js +4 -1
- package/dist/services/rd/strategy.js +10 -3
- package/dist/services/rd/tactical-stage.js +2 -2
- package/dist/services/rd/types.js +9 -7
- package/dist/services/rd-swarm/rd-swarm-service.d.ts +2 -45
- package/dist/services/rd-swarm/rd-swarm-service.js +140 -21
- package/dist/services/rd-swarm/rd-swarm-types.d.ts +54 -0
- package/dist/services/rd-swarm/rd-swarm-types.js +10 -0
- package/dist/services/recommendations/capability-map-service.js +10 -2
- package/dist/services/recommendations/capability-seed-items.js +81 -14
- package/dist/services/recommendations/capability-seed-mappings.js +420 -48
- package/dist/services/recommendations/capability-seed-sources-mcp-server.d.ts +9 -0
- package/dist/services/recommendations/capability-seed-sources-mcp-server.js +233 -0
- package/dist/services/recommendations/capability-seed-sources.js +127 -32
- package/dist/services/release/release-state.d.ts +2 -2
- package/dist/services/release/release-state.js +44 -15
- package/dist/services/release/version-precheck-layer-changeset.d.ts +2 -0
- package/dist/services/release/version-precheck-layer-changeset.js +43 -0
- package/dist/services/release/version-precheck-service.d.ts +11 -36
- package/dist/services/release/version-precheck-service.js +20 -104
- package/dist/services/release/version-precheck-support.d.ts +53 -0
- package/dist/services/release/version-precheck-support.js +64 -0
- package/dist/services/retrospective/retrospective-index.js +17 -3
- package/dist/services/retrospective/retrospective-search-service.js +6 -2
- package/dist/services/retrospective/retrospective-show.js +4 -1
- package/dist/services/reviewer/model-family.js +7 -1
- package/dist/services/reviewer/providers/anthropic.d.ts +5 -0
- package/dist/services/reviewer/providers/anthropic.js +10 -1
- package/dist/services/reviewer/providers/openai.d.ts +5 -0
- package/dist/services/reviewer/providers/openai.js +10 -1
- package/dist/services/reviewer/reviewer-config.js +4 -2
- package/dist/services/reviewer/reviewer-service.d.ts +2 -36
- package/dist/services/reviewer/reviewer-service.js +2 -1
- package/dist/services/reviewer/reviewer-types.d.ts +43 -0
- package/dist/services/reviewer/reviewer-types.js +1 -0
- package/dist/services/role/role-registry.js +9 -1
- package/dist/services/runtime/runtime-detector.js +4 -1
- package/dist/services/runtime/vendors/claude-code.js +14 -6
- package/dist/services/runtime/vendors/codex.js +11 -3
- package/dist/services/runtime/vendors/copilot.js +11 -3
- package/dist/services/sc/sc-service.js +28 -15
- package/dist/services/scan/acceptance-coverage-service.js +4 -1
- package/dist/services/scan/api-diff-openapi-schema-read.d.ts +67 -0
- package/dist/services/scan/api-diff-openapi-schema-read.js +154 -0
- package/dist/services/scan/api-diff-openapi.d.ts +16 -2
- package/dist/services/scan/api-diff-openapi.js +19 -123
- package/dist/services/scan/api-diff-recorded.js +16 -3
- package/dist/services/scan/api-diff-service.js +49 -16
- package/dist/services/scan/api-diff-types.js +12 -3
- package/dist/services/scan/api-surface-helpers.d.ts +13 -0
- package/dist/services/scan/api-surface-helpers.js +31 -0
- package/dist/services/scan/api-surface-service.d.ts +2 -45
- package/dist/services/scan/api-surface-service.js +15 -26
- package/dist/services/scan/api-surface-types.d.ts +54 -0
- package/dist/services/scan/api-surface-types.js +10 -0
- package/dist/services/scan/archetype-detection.d.ts +37 -0
- package/dist/services/scan/archetype-detection.js +142 -0
- package/dist/services/scan/archetype-service.js +36 -125
- package/dist/services/scan/diff-scope-service.js +35 -15
- package/dist/services/scan/existing-system-service.js +16 -99
- package/dist/services/scan/existing-system-visual-tokens.d.ts +20 -0
- package/dist/services/scan/existing-system-visual-tokens.js +123 -0
- package/dist/services/scan/file-size-policy.d.ts +86 -0
- package/dist/services/scan/file-size-policy.js +184 -0
- package/dist/services/scan/file-size-scan.d.ts +30 -3
- package/dist/services/scan/file-size-scan.js +47 -9
- package/dist/services/scan/karpathy-service.js +6 -1
- package/dist/services/scan/orphan-service.js +86 -20
- package/dist/services/scan/type-sanity-service.js +104 -10
- package/dist/services/sediment/dispose-confirm.d.ts +2 -2
- package/dist/services/sediment/dispose-confirm.js +2 -2
- package/dist/services/sediment/json-schema.d.ts +1 -1
- package/dist/services/sediment/json-schema.js +25 -13
- package/dist/services/sediment/manifest-lint.d.ts +1 -12
- package/dist/services/sediment/manifest-lint.js +1 -7
- package/dist/services/sediment/pool-paths.js +13 -9
- package/dist/services/sediment/pool-read.d.ts +1 -1
- package/dist/services/sediment/pool-read.js +42 -18
- package/dist/services/sediment/pool-rebuild-index.d.ts +1 -1
- package/dist/services/sediment/pool-rebuild-index.js +5 -5
- package/dist/services/sediment/pool-write.d.ts +1 -1
- package/dist/services/sediment/pool-write.js +7 -7
- package/dist/services/sediment/promotion-gate.d.ts +1 -1
- package/dist/services/sediment/promotion-gate.js +9 -9
- package/dist/services/sediment/types.d.ts +8 -8
- package/dist/services/session/binding-status-service.js +14 -4
- package/dist/services/session/caller-binding-service.js +2 -1
- package/dist/services/session/getSessionDir.js +4 -1
- package/dist/services/session/index.d.ts +1 -1
- package/dist/services/session/index.js +1 -1
- package/dist/services/session/resolve-caller-id.js +7 -5
- package/dist/services/session/session-binding-bridge.js +26 -25
- package/dist/services/session/session-checkpoint-service.js +1 -1
- package/dist/services/session/session-file-schema.d.ts +70 -0
- package/dist/services/session/session-file-schema.js +68 -0
- package/dist/services/session/session-manager.d.ts +6 -6
- package/dist/services/session/session-manager.js +30 -29
- package/dist/services/session/session-resume-service.js +2 -1
- package/dist/services/share/bundle-format-constants.d.ts +85 -0
- package/dist/services/share/bundle-format-constants.js +100 -0
- package/dist/services/share/bundle-reader.d.ts +3 -3
- package/dist/services/share/bundle-reader.js +75 -68
- package/dist/services/share/bundle-types.d.ts +3 -70
- package/dist/services/share/bundle-types.js +38 -107
- package/dist/services/share/bundle-writer.d.ts +3 -3
- package/dist/services/share/bundle-writer.js +101 -91
- package/dist/services/share/run-state-contract.d.ts +1 -1
- package/dist/services/share/run-state-contract.js +7 -13
- package/dist/services/signal/cancel-handler.js +2 -1
- package/dist/services/skill/resume-detector.js +6 -4
- package/dist/services/skill/skill-scheduler.js +3 -1
- package/dist/services/skill/skill-search-service.js +4 -4
- package/dist/services/skillhub/release-diff.d.ts +2 -2
- package/dist/services/skillhub/release-diff.js +6 -10
- package/dist/services/skillhub/release-export.d.ts +2 -2
- package/dist/services/skillhub/release-export.js +15 -17
- package/dist/services/skillhub/release-gc-blobs.d.ts +2 -2
- package/dist/services/skillhub/release-gc-blobs.js +4 -4
- package/dist/services/skillhub/release-import.d.ts +2 -2
- package/dist/services/skillhub/release-import.js +13 -12
- package/dist/services/skillhub/release-retain.d.ts +3 -3
- package/dist/services/skillhub/release-retain.js +22 -22
- package/dist/services/skillhub/sqlite-store.d.ts +1 -1
- package/dist/services/skillhub/sqlite-store.js +12 -11
- package/dist/services/skillhub/tar-runtime.js +15 -15
- package/dist/services/skillhub/types.d.ts +4 -4
- package/dist/services/skills/hooks-codegate-superpowers.js +16 -7
- package/dist/services/skills/hooks-settings-service.js +61 -19
- package/dist/services/skills/presence-lease-service.js +26 -16
- package/dist/services/skills/presence-lease-types.d.ts +1 -1
- package/dist/services/skills/presence-lease-types.js +1 -1
- package/dist/services/skills/skill-conformance-service.js +40 -8
- package/dist/services/skills/skill-presence-service.js +16 -14
- package/dist/services/skills/skill-runbook-service.js +2 -1
- package/dist/services/skills/skill-statusline-model.d.ts +128 -0
- package/dist/services/skills/skill-statusline-model.js +163 -0
- package/dist/services/skills/skill-statusline-renderer.js +4 -3
- package/dist/services/skills/skill-statusline-service.d.ts +3 -100
- package/dist/services/skills/skill-statusline-service.js +56 -163
- package/dist/services/skills/statusline-palette.js +11 -6
- package/dist/services/skills/statusline-settings-service.js +2 -1
- package/dist/services/skills/sync-service-support.d.ts +65 -0
- package/dist/services/skills/sync-service-support.js +50 -0
- package/dist/services/skills/sync-service.d.ts +3 -66
- package/dist/services/skills/sync-service.js +15 -53
- package/dist/services/slice/calibration-store.js +8 -2
- package/dist/services/slice/cross-pass-edge-merger.d.ts +3 -28
- package/dist/services/slice/cross-pass-edge-merger.js +13 -63
- package/dist/services/slice/cross-pass-edge-static-scan-support.d.ts +69 -0
- package/dist/services/slice/cross-pass-edge-static-scan-support.js +74 -0
- package/dist/services/slice/granularity-decider.js +2 -2
- package/dist/services/slice/slice-archive-service.js +8 -3
- package/dist/services/slice/slice-check-service.js +19 -8
- package/dist/services/slice/slice-decompose-runners.js +61 -23
- package/dist/services/slice/slice-decompose-service.js +4 -4
- package/dist/services/slice/slice-review-state.js +8 -2
- package/dist/services/smoke/smoke-paths-state.js +9 -2
- package/dist/services/sop/gate-enforce-service.js +9 -2
- package/dist/services/sop/sop-advance-service.js +14 -2
- package/dist/services/sop/sop-check-service.js +16 -4
- package/dist/services/sop/sop-paths.js +3 -1
- package/dist/services/sop/sop-registry-service.js +5 -1
- package/dist/services/sop/sop-service.js +29 -7
- package/dist/services/sop/sop-types.js +5 -1
- package/dist/services/standards/ide-aware-standards-service.js +2 -2
- package/dist/services/standards/loop-engineering-lint.js +12 -5
- package/dist/services/standards/loop-engineering-readiness-lint.js +5 -5
- package/dist/services/standards/migrate-claude-rules-service.js +9 -7
- package/dist/services/standards/missing-standards-detector.js +1 -3
- package/dist/services/standards/project-context-support.d.ts +50 -0
- package/dist/services/standards/project-context-support.js +244 -0
- package/dist/services/standards/project-context-types.d.ts +30 -0
- package/dist/services/standards/project-context-types.js +11 -0
- package/dist/services/standards/project-context.d.ts +10 -22
- package/dist/services/standards/project-context.js +27 -214
- package/dist/services/standards/project-standards-service.js +43 -12
- package/dist/services/standards/standards-render-common.d.ts +15 -0
- package/dist/services/standards/standards-render-common.js +49 -0
- package/dist/services/standards/standards-render.d.ts +1 -2
- package/dist/services/standards/standards-render.js +31 -58
- package/dist/services/standards/ui-library-dispatch-block.js +1 -1
- package/dist/services/tech/tech-change-id-service.js +7 -7
- package/dist/services/tech/tech-service.js +73 -26
- package/dist/services/test-cache/test-cache-service.js +8 -3
- package/dist/services/upgrade/1x-detector-service.js +5 -3
- package/dist/services/upgrade/gitignore-migrate-service.js +5 -5
- package/dist/services/upgrade/upgrade-service.js +36 -13
- package/dist/services/verdict/envelope-parsers.d.ts +84 -0
- package/dist/services/verdict/envelope-parsers.js +146 -0
- package/dist/services/verdict/envelopes.d.ts +50 -60
- package/dist/services/verdict/envelopes.js +18 -156
- package/dist/services/verdict/verdict-aggregator.js +27 -3
- package/dist/services/vm/vm-lease.js +15 -3
- package/dist/services/web/aria-node.d.ts +27 -0
- package/dist/services/web/aria-node.js +1 -0
- package/dist/services/web/browser-acquire.js +3 -1
- package/dist/services/web/browser-cache-probe.d.ts +18 -0
- package/dist/services/web/browser-cache-probe.js +110 -0
- package/dist/services/web/browser-session-manager.js +6 -2
- package/dist/services/web/daemon-registry.js +4 -1
- package/dist/services/web/playwright-loader.d.ts +2 -70
- package/dist/services/web/playwright-types.d.ts +75 -0
- package/dist/services/web/playwright-types.js +1 -0
- package/dist/services/web/snapshot-pruner.d.ts +2 -23
- package/dist/services/web/snapshot-pruner.js +8 -3
- package/dist/services/web/web-daemon-service.js +1 -3
- package/dist/services/web/web-install-service.d.ts +3 -32
- package/dist/services/web/web-install-service.js +21 -100
- package/dist/services/web/web-install-types.d.ts +31 -0
- package/dist/services/web/web-install-types.js +13 -0
- package/dist/services/web/web-login-profile.js +7 -5
- package/dist/services/web/web-protocol.js +3 -1
- package/dist/services/workflow/pipeline-verify-gate-support.js +63 -17
- package/dist/services/workflow/pipeline-verify-service.js +17 -6
- package/dist/services/workflow/plan-reader.js +5 -1
- package/dist/services/workflow/plan-refresher.js +20 -6
- package/dist/services/workflow/plan-trigger-detector.js +31 -8
- package/dist/services/workflow/provision-dispatch-node.js +8 -3
- package/dist/services/workflow/workflow-autonomous-resume-helpers.d.ts +3 -1
- package/dist/services/workflow/workflow-autonomous-resume-helpers.js +35 -144
- package/dist/services/workflow/workflow-autonomous-resume-validation.d.ts +16 -0
- package/dist/services/workflow/workflow-autonomous-resume-validation.js +155 -0
- package/dist/services/workflow/workflow-autonomous-service.js +25 -13
- package/dist/services/workflow/workflow-graph-store-helpers.d.ts +51 -0
- package/dist/services/workflow/workflow-graph-store-helpers.js +111 -0
- package/dist/services/workflow/workflow-graph-store.d.ts +2 -35
- package/dist/services/workflow/workflow-graph-store.js +30 -107
- package/dist/services/workflow/workflow-graph-types.js +3 -3
- package/dist/services/workflow/workflow-inflight-probe.js +14 -7
- package/dist/services/workflow/workflow-loader.js +5 -1
- package/dist/services/workflow/workflow-node-lifecycle.js +22 -21
- package/dist/services/workflow/workflow-presence-lifecycle-types.d.ts +50 -0
- package/dist/services/workflow/workflow-presence-lifecycle-types.js +1 -0
- package/dist/services/workflow/workflow-presence-lifecycle.d.ts +2 -42
- package/dist/services/workflow/workflow-presence-lifecycle.js +19 -21
- package/dist/services/workflow/workflow-router-service.js +169 -27
- package/dist/services/workflow/workflow-skip-service.js +14 -4
- package/dist/services/workflow/workflow-spec-builders.d.ts +15 -0
- package/dist/services/workflow/workflow-spec-builders.js +121 -0
- package/dist/services/workflow/workflow-spec.d.ts +7 -6
- package/dist/services/workflow/workflow-spec.js +22 -116
- package/dist/services/workflow/workflow-state-store.js +2 -1
- package/dist/services/workspace/migrate-1-4-1-service.js +80 -14
- package/dist/services/workspace/migrate-service.js +66 -16
- package/dist/services/workspace/reconcile-migrate.js +6 -2
- package/dist/services/workspace/reconcile-service.js +37 -16
- package/dist/services/workspace/workspace-claude-settings-materializer.js +7 -5
- package/dist/services/workspace/workspace-clean-service.js +4 -1
- package/dist/services/workspace/workspace-service.js +11 -3
- package/dist/services/workspace/workspace-state-service.js +1 -1
- package/dist/services/worktree/git-worktree-parser.js +13 -3
- package/dist/services/worktree/host-worktree-reconciler.js +8 -4
- package/dist/services/worktree/long-path-cleanup.js +23 -6
- package/dist/services/worktree/worktree-gc-guard.js +3 -1
- package/dist/services/worktree/worktree-lease-types.d.ts +53 -0
- package/dist/services/worktree/worktree-lease-types.js +10 -0
- package/dist/services/worktree/worktree-lease.d.ts +2 -44
- package/dist/shared/array-guards.d.ts +30 -0
- package/dist/shared/array-guards.js +32 -0
- package/dist/shared/format-md-compact-internals.d.ts +26 -0
- package/dist/shared/format-md-compact-internals.js +125 -0
- package/dist/shared/format-md-compact.js +1 -117
- package/dist/shared/fs-utils.js +2 -1
- package/dist/shared/incrementing-number.js +3 -3
- package/dist/shared/json-parse.d.ts +71 -0
- package/dist/shared/json-parse.js +32 -0
- package/dist/shared/json-schema-mini.js +3 -1
- package/dist/shared/path-safety.js +3 -1
- package/dist/shared/path-utils.d.ts +20 -0
- package/dist/shared/path-utils.js +26 -0
- package/dist/shared/planner-response.js +3 -3
- package/dist/shared/stale-policy.js +1 -3
- package/dist/skills/peaks-maker/index.js +11 -11
- package/package.json +32 -9
- package/scripts/clean-dist.mjs +1 -2
- package/scripts/copy-templates.mjs +2 -4
- package/scripts/install-skills.mjs +305 -125
- package/scripts/sync-version.mjs +25 -8
- package/scripts/watch.mjs +8 -2
- package/skills/bee/peaks-rd/SKILL.md +1 -1
- package/skills/bee/peaks-rd/references/rd-fanout-contracts.md +26 -10
- package/skills/bee/peaks-rd/references/rd-sub-agent-dispatch.md +1 -1
- package/skills/bee/peaks-rd/references/writing-handoff-frontmatter.md +6 -1
- package/skills/peaks-code/SKILL.md +1 -1
- package/skills/peaks-code/references/periodic-checkpoint.md +7 -5
- package/skills/peaks-code/references/startup-sequence.md +1 -1
- package/skills/peaks-final-review/SKILL.md +1 -1
- /package/{docs → contracts}/test-style-contract.md +0 -0
|
@@ -12,7 +12,13 @@
|
|
|
12
12
|
* 其他全部归一化到 peaks 内部模型(见 hook-protocol.ts)。
|
|
13
13
|
*/
|
|
14
14
|
import type { SubAgentDispatcher } from '../dispatch/sub-agent-dispatcher.js';
|
|
15
|
-
import type {
|
|
15
|
+
import type { ContextPercentFallbackInput, IdeCompactProfile } from './ide-compact-types.js';
|
|
16
|
+
/**
|
|
17
|
+
* Re-exported so every importer of `./ide-types.js` keeps seeing the whole
|
|
18
|
+
* adapter type surface from the original path (b1 file-size campaign: the two
|
|
19
|
+
* declarations now live in `./ide-compact-types.js`).
|
|
20
|
+
*/
|
|
21
|
+
export type { ContextPercentFallbackInput, IdeCompactProfile };
|
|
16
22
|
export type IdeId = 'claude-code' | 'trae' | 'codex' | 'cursor' | 'qoder' | 'tongyi-lingma' | 'hermes' | 'openclaw' | 'zcode';
|
|
17
23
|
export interface IdeCapabilities {
|
|
18
24
|
/** peaks gate enforce 是否适用该 IDE(必备) */
|
|
@@ -177,150 +183,6 @@ export interface IdeAdapter {
|
|
|
177
183
|
*/
|
|
178
184
|
readonly resolveCallerId: (env?: NodeJS.ProcessEnv) => string;
|
|
179
185
|
}
|
|
180
|
-
/**
|
|
181
|
-
* Per-IDE auto-compact capability descriptor. See `IdeAdapter.compact`
|
|
182
|
-
* for the protocol contract. The `MvpCompactPathway` string union
|
|
183
|
-
* keeps the field exhaustive — adding a new pathway requires updating
|
|
184
|
-
* every adapter that opts in.
|
|
185
|
-
*/
|
|
186
|
-
export interface IdeCompactProfile {
|
|
187
|
-
/** Env-var name the IDE writes per turn to expose context-fill %. */
|
|
188
|
-
readonly envVarForContextPercent: string;
|
|
189
|
-
/**
|
|
190
|
-
* Slash command or shell-call to invoke compact. The orchestrator
|
|
191
|
-
* spawns this via `child_process.spawn` (shell-exec pathway) or
|
|
192
|
-
* writes it to an IDE hook file (ide-native pathway).
|
|
193
|
-
*
|
|
194
|
-
* ZERO EXECUTOR as of slice 2026-09-13-auto-compact-trigger-ownership: every
|
|
195
|
-
* `shell-exec` branch now only REPORTS that it will not spawn (see
|
|
196
|
-
* `auto-compact-dispatcher.ts`), and the `ide-native` branch registers a
|
|
197
|
-
* harness-side trigger instead. The field is retained because the sibling
|
|
198
|
-
* work (A2, harness-side state re-injection) still needs it; nothing in this
|
|
199
|
-
* slice deletes it. Do not read it as a capability peaks-loop has.
|
|
200
|
-
*/
|
|
201
|
-
readonly compactCommand: string;
|
|
202
|
-
/**
|
|
203
|
-
* `shell-exec` — peaks-loop spawns the command via child_process
|
|
204
|
-
* (works for any IDE that accepts a slash command
|
|
205
|
-
* via a shell-spawnable entry point).
|
|
206
|
-
* `ide-native` — peaks-loop writes to an IDE-specific hook file;
|
|
207
|
-
* used when the IDE requires a registered hook
|
|
208
|
-
* rather than a runtime command.
|
|
209
|
-
* `llm-self-compress` — peaks-loop prompts the LLM to summarize
|
|
210
|
-
* its own context (no IDE integration required;
|
|
211
|
-
* least precise but always available).
|
|
212
|
-
* `noop` — peaks-loop records the intent but performs no action;
|
|
213
|
-
* used by IDEs that explicitly opt out (e.g. legacy
|
|
214
|
-
* adapters still on the v2.11.x model).
|
|
215
|
-
*/
|
|
216
|
-
readonly compactPathway: 'shell-exec' | 'ide-native' | 'llm-self-compress' | 'noop';
|
|
217
|
-
/**
|
|
218
|
-
* Optional settings key / env var the IDE reads its AUTO-COMPACT WINDOW
|
|
219
|
-
* from — i.e. the window the harness itself compacts against. When
|
|
220
|
-
* declared, peaks-loop writes the window it computes its ratio against
|
|
221
|
-
* into the adapter's machine-local settings `env` block, under this key,
|
|
222
|
-
* so both sides reference one number instead of two independent
|
|
223
|
-
* resolutions (slice 2026-09-13-auto-compact-trigger-ownership).
|
|
224
|
-
*
|
|
225
|
-
* `undefined` = this IDE exposes no such knob. peaks-loop then cannot
|
|
226
|
-
* close the drift; `peaks compact harness-window` reports that instead of
|
|
227
|
-
* pretending. Adapters that do not opt in are unchanged.
|
|
228
|
-
*/
|
|
229
|
-
readonly autoCompactWindowEnvVar?: string;
|
|
230
|
-
/**
|
|
231
|
-
* Optional command the runner invokes post-compact to confirm
|
|
232
|
-
* ratio dropped (e.g. `peaks code auto-compact --json`). When omitted,
|
|
233
|
-
* the orchestrator polls `envVarForContextPercent` directly.
|
|
234
|
-
*/
|
|
235
|
-
readonly postCompactDetectCommand?: string;
|
|
236
|
-
/**
|
|
237
|
-
* Optional vendor-specific fallback the generic `readContextPercent`
|
|
238
|
-
* reader calls when the primary env-var probe misses. Returns a
|
|
239
|
-
* completed `ContextPercentProbe` (e.g. `statusline-poll` /
|
|
240
|
-
* `transcript-estimate`) or `null` when the adapter has no signal —
|
|
241
|
-
* the reader then falls through to `conservative-fallback`.
|
|
242
|
-
*
|
|
243
|
-
* Keeps IDE-specific filesystem / env knowledge (Claude Code's
|
|
244
|
-
* `~/.claude/statusline-state.json` + `~/.claude/projects` transcript
|
|
245
|
-
* layout, etc.) inside the adapter, not the generic reader. Adapters
|
|
246
|
-
* that do not opt in simply omit the field; new IDEs are addable
|
|
247
|
-
* without touching the generic reader.
|
|
248
|
-
*
|
|
249
|
-
* Added in slice 2026-09-02-vendor-neutral-context-probe.
|
|
250
|
-
*/
|
|
251
|
-
readonly readContextPercentFallback?: (input: ContextPercentFallbackInput) => ContextPercentProbe | null;
|
|
252
|
-
/**
|
|
253
|
-
* Optional locator for the IDE's per-session transcript file (jsonl),
|
|
254
|
-
* keyed by the OUTER (harness) session id. `peaks code context-audit`
|
|
255
|
-
* (slice 2026-09-10-context-audit-and-discipline, Slice A) uses it to
|
|
256
|
-
* group the session's tool results by tool + short input key, so the
|
|
257
|
-
* generic audit service never learns any vendor's on-disk layout.
|
|
258
|
-
*
|
|
259
|
-
* Returns the absolute path, or `null` when the transcript does not
|
|
260
|
-
* exist. Adapters MUST NOT throw on a missing file — the audit treats
|
|
261
|
-
* `null` as `available: false` and continues.
|
|
262
|
-
*
|
|
263
|
-
* Adapters that do not opt in simply omit the field; the audit then
|
|
264
|
-
* reports `transcript-locator-unavailable`.
|
|
265
|
-
*/
|
|
266
|
-
readonly resolveTranscriptPath?: (outerSessionId: string) => string | null;
|
|
267
|
-
}
|
|
268
|
-
/**
|
|
269
|
-
* Input the generic `readContextPercent` reader passes to an adapter's
|
|
270
|
-
* optional `IdeCompactProfile.readContextPercentFallback` hook. The adapter
|
|
271
|
-
* owns the vendor-specific fallback logic (statusline poll, transcript
|
|
272
|
-
* lookup, etc.); the generic reader stays IDE-agnostic.
|
|
273
|
-
*
|
|
274
|
-
* Added in slice 2026-09-02-vendor-neutral-context-probe.
|
|
275
|
-
*/
|
|
276
|
-
export interface ContextPercentFallbackInput {
|
|
277
|
-
/** Project root (the probe's `--project` anchor). */
|
|
278
|
-
readonly projectRoot: string;
|
|
279
|
-
/** Peaks session id (NOT the harness / IDE transcript id). */
|
|
280
|
-
readonly sessionId: string;
|
|
281
|
-
/**
|
|
282
|
-
* Outer (harness / IDE) session id — the id the IDE uses to name its
|
|
283
|
-
* transcript / session files (e.g. a UUID). Optional: when unresolved,
|
|
284
|
-
* adapters whose fallback depends on it should return `null`.
|
|
285
|
-
*/
|
|
286
|
-
readonly outerSessionId?: string | undefined;
|
|
287
|
-
/** Injectable env (defaults to process.env in the reader). */
|
|
288
|
-
readonly env?: NodeJS.ProcessEnv | undefined;
|
|
289
|
-
/**
|
|
290
|
-
* Raw `context.windowTokens` value from the merged config (project layer
|
|
291
|
-
* over user layer), read by the generic reader so the adapter stays free
|
|
292
|
-
* of config-path knowledge. UNVALIDATED — the adapter validates it via
|
|
293
|
-
* `parseContextWindowOverride` and warns on a bad value.
|
|
294
|
-
*
|
|
295
|
-
* Slice 2026-09-09-context-window-override.
|
|
296
|
-
*/
|
|
297
|
-
readonly configWindowTokens?: unknown;
|
|
298
|
-
/**
|
|
299
|
-
* Raw value of the adapter's `autoCompactWindowEnvVar`, resolved by the
|
|
300
|
-
* generic reader from the adapter's own declarations (settings path +
|
|
301
|
-
* key name) — the window peaks-loop configured for the harness. Feeds the
|
|
302
|
-
* `harness-env` layer of `resolveContextWindow`.
|
|
303
|
-
*
|
|
304
|
-
* Slice 2026-09-13-auto-compact-trigger-ownership.
|
|
305
|
-
*/
|
|
306
|
-
readonly harnessWindowTokens?: unknown;
|
|
307
|
-
/**
|
|
308
|
-
* True when `harnessWindowTokens` is a value peaks-loop ITSELF wrote (the
|
|
309
|
-
* harness settings carry the provenance marker matching it), false when a
|
|
310
|
-
* human set the key by hand.
|
|
311
|
-
*
|
|
312
|
-
* The `harness-env` layer outranks the model heuristic either way — that is
|
|
313
|
-
* what keeps peaks-loop's ratio and the harness's trigger on one number. The
|
|
314
|
-
* flag decides only whether the late 1M rescue may OVERRULE that layer when
|
|
315
|
-
* the observed context proves it too small: peaks-loop's own earlier
|
|
316
|
-
* resolution is self-correcting, whereas a human's explicit pin must not be
|
|
317
|
-
* silently rewritten (and, since it is persisted, permanently so).
|
|
318
|
-
*
|
|
319
|
-
* Omitted = treated as not peaks-written (the safe direction: do not touch
|
|
320
|
-
* what you did not write).
|
|
321
|
-
*/
|
|
322
|
-
readonly harnessWindowPeakWritten?: boolean;
|
|
323
|
-
}
|
|
324
186
|
/**
|
|
325
187
|
* Per-IDE standards-file location + format profile. Used by the
|
|
326
188
|
* `peaks standards init` dispatch layer (slice 011) to write the
|
|
@@ -50,7 +50,8 @@ export function atomicWriteJson(filePath, value) {
|
|
|
50
50
|
try {
|
|
51
51
|
unlinkSync(tempPath);
|
|
52
52
|
}
|
|
53
|
-
catch {
|
|
53
|
+
catch {
|
|
54
|
+
// TODO(g2): legacy silent catch — grace: 1 minor release (v2.14.0)
|
|
54
55
|
// best effort cleanup
|
|
55
56
|
}
|
|
56
57
|
throw error;
|
|
@@ -71,12 +71,16 @@ export function matchGlob(pattern, path) {
|
|
|
71
71
|
}
|
|
72
72
|
/** Risk of a single file based on its path patterns. */
|
|
73
73
|
function fileRisk(path) {
|
|
74
|
-
if (matchGlob('**/auth/**', path) ||
|
|
75
|
-
matchGlob('**/
|
|
76
|
-
matchGlob('**/
|
|
74
|
+
if (matchGlob('**/auth/**', path) ||
|
|
75
|
+
matchGlob('**/permission/**', path) ||
|
|
76
|
+
matchGlob('**/rbac/**', path) ||
|
|
77
|
+
matchGlob('**/schema/**', path) ||
|
|
78
|
+
matchGlob('**/migrations/**', path) ||
|
|
79
|
+
matchGlob('**/prisma/**', path)) {
|
|
77
80
|
return 'high';
|
|
78
81
|
}
|
|
79
|
-
if (matchGlob('**/services/**', path) ||
|
|
82
|
+
if (matchGlob('**/services/**', path) ||
|
|
83
|
+
matchGlob('**/api/**', path) ||
|
|
80
84
|
matchGlob('**/components/**', path)) {
|
|
81
85
|
return 'medium';
|
|
82
86
|
}
|
|
@@ -103,7 +107,10 @@ export function runImpactScan(opts) {
|
|
|
103
107
|
for (const [name, patterns] of flows) {
|
|
104
108
|
const matches = changed.filter((f) => patterns.some((p) => matchGlob(p, f)));
|
|
105
109
|
if (matches.length > 0) {
|
|
106
|
-
affectedFlows.push({
|
|
110
|
+
affectedFlows.push({
|
|
111
|
+
name,
|
|
112
|
+
reason: `changes touch ${matches.length} file(s) in this flow: ${matches.slice(0, 3).join(', ')}`
|
|
113
|
+
});
|
|
107
114
|
}
|
|
108
115
|
}
|
|
109
116
|
// Predict other files that may be affected (siblings of changed files).
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* D2 (rid 2026-10-03-job-ledger-truthfulness) — can this commit sha be proved to
|
|
3
|
+
* exist in this repository?
|
|
4
|
+
*
|
|
5
|
+
* WHY THIS EXISTS. `peaks job checkpoint --state done --commit-sha <sha>` checked
|
|
6
|
+
* only `sha.length >= 7` (`job-orchestrator.ts:55`), so a typo'd sha was accepted
|
|
7
|
+
* and written into the ledger. Measured 2026-10-02 on `2026-10-02-c-wave9`, and
|
|
8
|
+
* again for this slice against the committed build: a 12-hex string that
|
|
9
|
+
* `git cat-file` calls `Not a valid object name` produced `ok: true` and a
|
|
10
|
+
* `state.json` whose `commitSha` named it. A ledger that points at a commit which
|
|
11
|
+
* does not exist is worse than no ledger, because it will be trusted later.
|
|
12
|
+
*
|
|
13
|
+
* WHY A GIT CALL AND NOT A REGEX. Length and alphabet say the string is
|
|
14
|
+
* sha-SHAPED; only the repository says whether the commit EXISTS. So the shape
|
|
15
|
+
* rule stays where it is (the checkpoint input schema's ≥7 pre-filter, which
|
|
16
|
+
* keeps a malformed string from paying a `git` call), and this module answers the
|
|
17
|
+
* one question git can answer: `git cat-file -e <sha>^{commit}`.
|
|
18
|
+
*
|
|
19
|
+
* THE BOUNDARY, STATED PLAINLY. Where the project root is not a git repository
|
|
20
|
+
* there is no "that repo" in which the sha could resolve, and git says so
|
|
21
|
+
* (`status: 'no-repository'`). That is not a verdict about the sha, so the
|
|
22
|
+
* checkpoint proceeds and records the claim exactly as it did before this slice —
|
|
23
|
+
* loudly named here rather than smuggled through, because the job suites run
|
|
24
|
+
* against tmp workspaces and a silent widening of the refusal to cover them would
|
|
25
|
+
* be a behaviour change this slice did not ask for.
|
|
26
|
+
*
|
|
27
|
+
* No writes, no locks, no state: one read-only question to git, four answers.
|
|
28
|
+
*/
|
|
29
|
+
/**
|
|
30
|
+
* The four things git can tell us about a sha-shaped string in a directory.
|
|
31
|
+
*
|
|
32
|
+
* - `verified` — the sha resolves to a commit here.
|
|
33
|
+
* - `unresolved` — a repository IS present and says this sha is not a
|
|
34
|
+
* commit. The refusal case.
|
|
35
|
+
* - `no-repository` — no repository at or above `projectRoot`; nothing to
|
|
36
|
+
* check the claim against.
|
|
37
|
+
* - `git-unavailable` — `git` itself could not be run. Also not a verdict about
|
|
38
|
+
* the sha, and deliberately distinct from `no-repository`:
|
|
39
|
+
* a broken tool must never read as "this repo has no git".
|
|
40
|
+
*/
|
|
41
|
+
export type CommitVerification = {
|
|
42
|
+
readonly status: 'verified';
|
|
43
|
+
readonly sha: string;
|
|
44
|
+
} | {
|
|
45
|
+
readonly status: 'unresolved';
|
|
46
|
+
readonly sha: string;
|
|
47
|
+
readonly detail: string;
|
|
48
|
+
} | {
|
|
49
|
+
readonly status: 'no-repository';
|
|
50
|
+
readonly detail: string;
|
|
51
|
+
} | {
|
|
52
|
+
readonly status: 'git-unavailable';
|
|
53
|
+
readonly detail: string;
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Ask the repository whether `commitSha` is a commit in it.
|
|
57
|
+
*
|
|
58
|
+
* `commitSha` is expected to have already passed the caller's shape pre-filter;
|
|
59
|
+
* it is interpolated into git's *argument list* (never a shell string), so a
|
|
60
|
+
* value like `../..` reaches git as one argv slot rather than as a path to
|
|
61
|
+
* resolve.
|
|
62
|
+
*/
|
|
63
|
+
export declare function verifyCommitSha(projectRoot: string, commitSha: string): CommitVerification;
|
|
64
|
+
/**
|
|
65
|
+
* The refusal sentence, or `null` when the claim may be recorded.
|
|
66
|
+
*
|
|
67
|
+
* Lives next to the check rather than at the call site so every consumer of the
|
|
68
|
+
* verdict says the same thing: the sha it was given, that it does not resolve,
|
|
69
|
+
* and where it looked. `git-unavailable` refuses too — a ledger entry whose
|
|
70
|
+
* commit could not be checked because git would not run is a claim the tool
|
|
71
|
+
* should say it could not honour, not one it quietly wrote.
|
|
72
|
+
*/
|
|
73
|
+
export declare function commitVerificationRefusal(verification: CommitVerification, projectRoot: string, commitSha: string): string | null;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* D2 (rid 2026-10-03-job-ledger-truthfulness) — can this commit sha be proved to
|
|
3
|
+
* exist in this repository?
|
|
4
|
+
*
|
|
5
|
+
* WHY THIS EXISTS. `peaks job checkpoint --state done --commit-sha <sha>` checked
|
|
6
|
+
* only `sha.length >= 7` (`job-orchestrator.ts:55`), so a typo'd sha was accepted
|
|
7
|
+
* and written into the ledger. Measured 2026-10-02 on `2026-10-02-c-wave9`, and
|
|
8
|
+
* again for this slice against the committed build: a 12-hex string that
|
|
9
|
+
* `git cat-file` calls `Not a valid object name` produced `ok: true` and a
|
|
10
|
+
* `state.json` whose `commitSha` named it. A ledger that points at a commit which
|
|
11
|
+
* does not exist is worse than no ledger, because it will be trusted later.
|
|
12
|
+
*
|
|
13
|
+
* WHY A GIT CALL AND NOT A REGEX. Length and alphabet say the string is
|
|
14
|
+
* sha-SHAPED; only the repository says whether the commit EXISTS. So the shape
|
|
15
|
+
* rule stays where it is (the checkpoint input schema's ≥7 pre-filter, which
|
|
16
|
+
* keeps a malformed string from paying a `git` call), and this module answers the
|
|
17
|
+
* one question git can answer: `git cat-file -e <sha>^{commit}`.
|
|
18
|
+
*
|
|
19
|
+
* THE BOUNDARY, STATED PLAINLY. Where the project root is not a git repository
|
|
20
|
+
* there is no "that repo" in which the sha could resolve, and git says so
|
|
21
|
+
* (`status: 'no-repository'`). That is not a verdict about the sha, so the
|
|
22
|
+
* checkpoint proceeds and records the claim exactly as it did before this slice —
|
|
23
|
+
* loudly named here rather than smuggled through, because the job suites run
|
|
24
|
+
* against tmp workspaces and a silent widening of the refusal to cover them would
|
|
25
|
+
* be a behaviour change this slice did not ask for.
|
|
26
|
+
*
|
|
27
|
+
* No writes, no locks, no state: one read-only question to git, four answers.
|
|
28
|
+
*/
|
|
29
|
+
import { spawnSync } from 'node:child_process';
|
|
30
|
+
/** The suffix that turns a sha into "the commit it names", per git's own grammar. */
|
|
31
|
+
const COMMIT_DEREF = '^{commit}';
|
|
32
|
+
/** git's own words for "this directory is not a repository" (all locales we ship). */
|
|
33
|
+
const NOT_A_REPOSITORY = /not a git repository/i;
|
|
34
|
+
/**
|
|
35
|
+
* Ask the repository whether `commitSha` is a commit in it.
|
|
36
|
+
*
|
|
37
|
+
* `commitSha` is expected to have already passed the caller's shape pre-filter;
|
|
38
|
+
* it is interpolated into git's *argument list* (never a shell string), so a
|
|
39
|
+
* value like `../..` reaches git as one argv slot rather than as a path to
|
|
40
|
+
* resolve.
|
|
41
|
+
*/
|
|
42
|
+
export function verifyCommitSha(projectRoot, commitSha) {
|
|
43
|
+
const res = spawnSync('git', ['-C', projectRoot, 'cat-file', '-e', `${commitSha}${COMMIT_DEREF}`], { encoding: 'utf8', windowsHide: true });
|
|
44
|
+
if (res.error !== undefined && res.error !== null) {
|
|
45
|
+
return { status: 'git-unavailable', detail: res.error.message };
|
|
46
|
+
}
|
|
47
|
+
const detail = (res.stderr ?? '').trim();
|
|
48
|
+
if (res.status === 0)
|
|
49
|
+
return { status: 'verified', sha: commitSha };
|
|
50
|
+
if (NOT_A_REPOSITORY.test(detail))
|
|
51
|
+
return { status: 'no-repository', detail };
|
|
52
|
+
return { status: 'unresolved', sha: commitSha, detail };
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* The refusal sentence, or `null` when the claim may be recorded.
|
|
56
|
+
*
|
|
57
|
+
* Lives next to the check rather than at the call site so every consumer of the
|
|
58
|
+
* verdict says the same thing: the sha it was given, that it does not resolve,
|
|
59
|
+
* and where it looked. `git-unavailable` refuses too — a ledger entry whose
|
|
60
|
+
* commit could not be checked because git would not run is a claim the tool
|
|
61
|
+
* should say it could not honour, not one it quietly wrote.
|
|
62
|
+
*/
|
|
63
|
+
export function commitVerificationRefusal(verification, projectRoot, commitSha) {
|
|
64
|
+
if (verification.status === 'verified' || verification.status === 'no-repository') {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
const detail = verification.detail.length > 0 ? ` (${verification.detail})` : '';
|
|
68
|
+
if (verification.status === 'git-unavailable') {
|
|
69
|
+
return `commitSha "${commitSha}" could not be checked: git did not run in "${projectRoot}"${detail}`;
|
|
70
|
+
}
|
|
71
|
+
return `commitSha "${verification.sha}" does not resolve to a commit in "${projectRoot}"${detail}`;
|
|
72
|
+
}
|
|
@@ -15,10 +15,52 @@ export interface BlockInput {
|
|
|
15
15
|
sliceId: string;
|
|
16
16
|
reason: string;
|
|
17
17
|
}
|
|
18
|
+
/** `peaks job add-slice` input, after the command has trimmed and checked shape. */
|
|
19
|
+
export interface AddSliceInput {
|
|
20
|
+
readonly jobId: string;
|
|
21
|
+
readonly label: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* What `addSlice` did. `added: false` is a SUCCESSFUL outcome — the label was
|
|
25
|
+
* already a slice of this job, so the honest answer is the slice that exists and
|
|
26
|
+
* a state file that was not written.
|
|
27
|
+
*/
|
|
28
|
+
export interface AddSliceOutcome {
|
|
29
|
+
readonly added: boolean;
|
|
30
|
+
readonly sliceId: string;
|
|
31
|
+
readonly label: string;
|
|
32
|
+
readonly total: number;
|
|
33
|
+
}
|
|
18
34
|
export declare class JobOrchestrator {
|
|
19
35
|
private readonly store;
|
|
20
36
|
constructor(store: JobStateStore);
|
|
21
37
|
init(input: JobInitInput): JobState;
|
|
38
|
+
/**
|
|
39
|
+
* D1 (rid 2026-10-03-job-ledger-truthfulness) — register one more slice on an
|
|
40
|
+
* existing job.
|
|
41
|
+
*
|
|
42
|
+
* WHY THIS EXISTS. The slice list was decided once, at `peaks job init
|
|
43
|
+
* --slice-list`, and nothing could add to it. A wave that discovers its slices
|
|
44
|
+
* one at a time — which is how every split wave in this repository actually
|
|
45
|
+
* runs — could not record the slices it found: `checkpoint --slice-id
|
|
46
|
+
* <new-work>` answered `SLICE_NOT_FOUND` and `progress` kept reporting the
|
|
47
|
+
* `total` `init` wrote, so the ledger recorded the tooling's limitation instead
|
|
48
|
+
* of the work.
|
|
49
|
+
*
|
|
50
|
+
* THE CONTRACT, and the parts of it that are the point:
|
|
51
|
+
* - **idempotent and honest** — a label already registered on this job is
|
|
52
|
+
* reported as itself with `added: false`, and `state.json` is never opened
|
|
53
|
+
* for writing. Re-running the command cannot grow the job.
|
|
54
|
+
* - **never a silent duplicate** — an empty or whitespace-only label throws;
|
|
55
|
+
* the command turns that into a structured refusal before it gets here.
|
|
56
|
+
* - **`total` follows** — the count every reader derives from `slices.length`
|
|
57
|
+
* (`status`, `progress`, `continue`), so nothing has to be re-initialised.
|
|
58
|
+
*
|
|
59
|
+
* The label is the caller's string; `sliceId` stays the CLI's own
|
|
60
|
+
* `slice-NNN`, so `checkpoint`/`block` resolve the new slice by either name
|
|
61
|
+
* through the existing D7 resolution in `job-commands.ts`.
|
|
62
|
+
*/
|
|
63
|
+
addSlice(input: AddSliceInput): AddSliceOutcome;
|
|
22
64
|
/**
|
|
23
65
|
* Atomically apply a mutation to a job's state under a single-process lock.
|
|
24
66
|
*
|
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `3` = the zero-padding width of the CLI's own `slice-NNN` id, the same width
|
|
3
|
+
* `JobStateStore.init` writes. Named because the pad is a convention, not a
|
|
4
|
+
* number to repeat.
|
|
5
|
+
*/
|
|
6
|
+
const SLICE_ID_PAD_WIDTH = 3;
|
|
7
|
+
/**
|
|
8
|
+
* The next free `slice-NNN` id: one past the highest number already in use, not
|
|
9
|
+
* `length + 1`. Two jobs whose slices were added out of order therefore cannot
|
|
10
|
+
* collide, and a list that somehow holds 12 slices still gets `slice-012`.
|
|
11
|
+
*/
|
|
12
|
+
function nextSliceId(slices) {
|
|
13
|
+
let highest = 0;
|
|
14
|
+
for (const sl of slices) {
|
|
15
|
+
const digits = /^slice-(\d+)$/.exec(sl.sliceId);
|
|
16
|
+
if (digits !== null)
|
|
17
|
+
highest = Math.max(highest, Number(digits[1]));
|
|
18
|
+
}
|
|
19
|
+
return `slice-${String(highest + 1).padStart(SLICE_ID_PAD_WIDTH, '0')}`;
|
|
20
|
+
}
|
|
1
21
|
export class JobOrchestrator {
|
|
2
22
|
store;
|
|
3
23
|
constructor(store) {
|
|
@@ -6,6 +26,68 @@ export class JobOrchestrator {
|
|
|
6
26
|
init(input) {
|
|
7
27
|
return this.store.init(input);
|
|
8
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* D1 (rid 2026-10-03-job-ledger-truthfulness) — register one more slice on an
|
|
31
|
+
* existing job.
|
|
32
|
+
*
|
|
33
|
+
* WHY THIS EXISTS. The slice list was decided once, at `peaks job init
|
|
34
|
+
* --slice-list`, and nothing could add to it. A wave that discovers its slices
|
|
35
|
+
* one at a time — which is how every split wave in this repository actually
|
|
36
|
+
* runs — could not record the slices it found: `checkpoint --slice-id
|
|
37
|
+
* <new-work>` answered `SLICE_NOT_FOUND` and `progress` kept reporting the
|
|
38
|
+
* `total` `init` wrote, so the ledger recorded the tooling's limitation instead
|
|
39
|
+
* of the work.
|
|
40
|
+
*
|
|
41
|
+
* THE CONTRACT, and the parts of it that are the point:
|
|
42
|
+
* - **idempotent and honest** — a label already registered on this job is
|
|
43
|
+
* reported as itself with `added: false`, and `state.json` is never opened
|
|
44
|
+
* for writing. Re-running the command cannot grow the job.
|
|
45
|
+
* - **never a silent duplicate** — an empty or whitespace-only label throws;
|
|
46
|
+
* the command turns that into a structured refusal before it gets here.
|
|
47
|
+
* - **`total` follows** — the count every reader derives from `slices.length`
|
|
48
|
+
* (`status`, `progress`, `continue`), so nothing has to be re-initialised.
|
|
49
|
+
*
|
|
50
|
+
* The label is the caller's string; `sliceId` stays the CLI's own
|
|
51
|
+
* `slice-NNN`, so `checkpoint`/`block` resolve the new slice by either name
|
|
52
|
+
* through the existing D7 resolution in `job-commands.ts`.
|
|
53
|
+
*/
|
|
54
|
+
addSlice(input) {
|
|
55
|
+
const label = input.label.trim();
|
|
56
|
+
if (label.length === 0) {
|
|
57
|
+
throw new Error('addSlice: slice label must not be empty');
|
|
58
|
+
}
|
|
59
|
+
const before = this.store.load(input.jobId);
|
|
60
|
+
const already = before.slices.find((sl) => sl.label === label);
|
|
61
|
+
if (already !== undefined) {
|
|
62
|
+
return {
|
|
63
|
+
added: false,
|
|
64
|
+
sliceId: already.sliceId,
|
|
65
|
+
label: already.label,
|
|
66
|
+
total: before.slices.length
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
const after = this.mutate(input.jobId, (s) => {
|
|
70
|
+
if (s.slices.some((sl) => sl.label === label))
|
|
71
|
+
return s;
|
|
72
|
+
const appended = {
|
|
73
|
+
sliceId: nextSliceId(s.slices),
|
|
74
|
+
label,
|
|
75
|
+
status: 'pending',
|
|
76
|
+
repairCycles: 0
|
|
77
|
+
};
|
|
78
|
+
return { ...s, slices: [...s.slices, appended] };
|
|
79
|
+
});
|
|
80
|
+
const registered = after.slices.find((sl) => sl.label === label);
|
|
81
|
+
if (registered === undefined) {
|
|
82
|
+
throw new Error(`addSlice: internal — "${label}" is not registered in the saved state for ${input.jobId}`);
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
added: after.slices.length > before.slices.length,
|
|
86
|
+
sliceId: registered.sliceId,
|
|
87
|
+
label: registered.label,
|
|
88
|
+
total: after.slices.length
|
|
89
|
+
};
|
|
90
|
+
}
|
|
9
91
|
/**
|
|
10
92
|
* Atomically apply a mutation to a job's state under a single-process lock.
|
|
11
93
|
*
|
|
@@ -41,8 +123,13 @@ export class JobOrchestrator {
|
|
|
41
123
|
...s,
|
|
42
124
|
lastCheckpointAt: new Date().toISOString(),
|
|
43
125
|
slices: s.slices.map((sl) => sl.sliceId === input.sliceId
|
|
44
|
-
? {
|
|
45
|
-
|
|
126
|
+
? {
|
|
127
|
+
...sl,
|
|
128
|
+
status: 'done',
|
|
129
|
+
commitSha: input.commitSha,
|
|
130
|
+
finishedAt: new Date().toISOString()
|
|
131
|
+
}
|
|
132
|
+
: sl)
|
|
46
133
|
};
|
|
47
134
|
});
|
|
48
135
|
}
|
|
@@ -50,7 +137,7 @@ export class JobOrchestrator {
|
|
|
50
137
|
return this.mutate(input.jobId, (s) => ({
|
|
51
138
|
...s,
|
|
52
139
|
lastCheckpointAt: new Date().toISOString(),
|
|
53
|
-
slices: s.slices.map((sl) => sl.sliceId === input.sliceId ? { ...sl, status: 'skipped' } : sl)
|
|
140
|
+
slices: s.slices.map((sl) => sl.sliceId === input.sliceId ? { ...sl, status: 'skipped' } : sl)
|
|
54
141
|
}));
|
|
55
142
|
}
|
|
56
143
|
async checkpointFailed(input) {
|
|
@@ -58,8 +145,13 @@ export class JobOrchestrator {
|
|
|
58
145
|
...s,
|
|
59
146
|
lastCheckpointAt: new Date().toISOString(),
|
|
60
147
|
slices: s.slices.map((sl) => sl.sliceId === input.sliceId
|
|
61
|
-
? {
|
|
62
|
-
|
|
148
|
+
? {
|
|
149
|
+
...sl,
|
|
150
|
+
status: 'failed',
|
|
151
|
+
failureReason: input.reason,
|
|
152
|
+
finishedAt: new Date().toISOString()
|
|
153
|
+
}
|
|
154
|
+
: sl)
|
|
63
155
|
}));
|
|
64
156
|
}
|
|
65
157
|
async blockSlice(input) {
|
|
@@ -67,8 +159,13 @@ export class JobOrchestrator {
|
|
|
67
159
|
...s,
|
|
68
160
|
lastCheckpointAt: new Date().toISOString(),
|
|
69
161
|
slices: s.slices.map((sl) => sl.sliceId === input.sliceId
|
|
70
|
-
? {
|
|
71
|
-
|
|
162
|
+
? {
|
|
163
|
+
...sl,
|
|
164
|
+
status: 'blocked',
|
|
165
|
+
blockedReason: input.reason,
|
|
166
|
+
finishedAt: new Date().toISOString()
|
|
167
|
+
}
|
|
168
|
+
: sl)
|
|
72
169
|
}));
|
|
73
170
|
}
|
|
74
171
|
status(jobId) {
|
|
@@ -84,7 +181,7 @@ export class JobOrchestrator {
|
|
|
84
181
|
else if (sl.status === 'skipped')
|
|
85
182
|
counts.skipped++;
|
|
86
183
|
}
|
|
87
|
-
const pendingIdx = s.slices.findIndex(sl => sl.status === 'pending' || sl.status === 'in-progress');
|
|
184
|
+
const pendingIdx = s.slices.findIndex((sl) => sl.status === 'pending' || sl.status === 'in-progress');
|
|
88
185
|
return {
|
|
89
186
|
total: s.slices.length,
|
|
90
187
|
done: counts.done,
|
|
@@ -94,11 +191,14 @@ export class JobOrchestrator {
|
|
|
94
191
|
currentSlice: pendingIdx >= 0 ? s.slices[pendingIdx].label : undefined,
|
|
95
192
|
lastCheckpoint: s.lastCheckpointAt,
|
|
96
193
|
mainLoopStrategy: s.mainLoopStrategy,
|
|
97
|
-
mainSessionCycle: s.mainSessionCycle
|
|
194
|
+
mainSessionCycle: s.mainSessionCycle
|
|
98
195
|
};
|
|
99
196
|
}
|
|
100
197
|
continueNow(jobId) {
|
|
101
198
|
const summary = this.status(jobId);
|
|
102
|
-
return {
|
|
199
|
+
return {
|
|
200
|
+
remaining: summary.total - summary.done - summary.skipped - summary.blocked - summary.failed,
|
|
201
|
+
next: summary.currentSlice
|
|
202
|
+
};
|
|
103
203
|
}
|
|
104
204
|
}
|