peaks-loop 4.0.54 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +36 -0
- package/README-en.md +16 -1
- package/README.md +15 -1
- package/config/eslint/.peaks-rules.cjs +158 -13
- package/config/eslint/tsconfig.lint.json +47 -0
- package/dist/cli/cli-envelope.d.ts +114 -0
- package/dist/cli/cli-envelope.js +85 -0
- package/dist/cli/cli-helpers.d.ts +1 -1
- package/dist/cli/cli-helpers.js +8 -4
- package/dist/cli/commands/_cli-error-envelope.js +1 -1
- package/dist/cli/commands/_register.js +85 -38
- package/dist/cli/commands/_super.js +40 -7
- package/dist/cli/commands/adapter-commands-s2a.js +8 -7
- package/dist/cli/commands/adapter-commands.d.ts +2 -2
- package/dist/cli/commands/adapter-commands.js +7 -8
- package/dist/cli/commands/api-diff-commands.js +5 -4
- package/dist/cli/commands/asset-commands.d.ts +2 -2
- package/dist/cli/commands/asset-commands.js +135 -132
- package/dist/cli/commands/audit-commands.d.ts +1 -1
- package/dist/cli/commands/audit-commands.js +75 -32
- package/dist/cli/commands/autonomous-swarm-commands.d.ts +1 -1
- package/dist/cli/commands/autonomous-swarm-commands.js +14 -8
- package/dist/cli/commands/baseline-commands.js +34 -9
- package/dist/cli/commands/bee-commands.d.ts +1 -1
- package/dist/cli/commands/bee-commands.js +18 -21
- package/dist/cli/commands/best-practice-scan-command.js +6 -34
- package/dist/cli/commands/best-practice-scan-helpers.d.ts +12 -0
- package/dist/cli/commands/best-practice-scan-helpers.js +37 -0
- package/dist/cli/commands/capability-commands.d.ts +1 -1
- package/dist/cli/commands/capability-commands.js +14 -4
- package/dist/cli/commands/capability-worker-config-sc-commands.d.ts +1 -1
- package/dist/cli/commands/changeset-commands.js +21 -18
- package/dist/cli/commands/code-gate-command.js +9 -2
- package/dist/cli/commands/code-job-shape-commands-read-job-shape.d.ts +15 -0
- package/dist/cli/commands/code-job-shape-commands-read-job-shape.js +70 -0
- package/dist/cli/commands/code-job-shape-commands.js +21 -45
- package/dist/cli/commands/code-mode-gate-commands.d.ts +15 -1
- package/dist/cli/commands/code-mode-gate-commands.js +19 -199
- package/dist/cli/commands/code-mode-gate-plan-command.d.ts +14 -0
- package/dist/cli/commands/code-mode-gate-plan-command.js +23 -0
- package/dist/cli/commands/code-mode-gate-should-pause-command.d.ts +24 -0
- package/dist/cli/commands/code-mode-gate-should-pause-command.js +137 -0
- package/dist/cli/commands/code-mode-gate-should-pause-envelope.d.ts +59 -0
- package/dist/cli/commands/code-mode-gate-should-pause-envelope.js +144 -0
- package/dist/cli/commands/code-orchestrator-can-do.js +4 -4
- package/dist/cli/commands/code-review-commands.js +18 -3
- package/dist/cli/commands/code-run-command.js +44 -7
- package/dist/cli/commands/code-runtime-commands.d.ts +17 -0
- package/dist/cli/commands/code-runtime-commands.js +105 -73
- package/dist/cli/commands/codegraph-commands.js +11 -6
- package/dist/cli/commands/codegraph-status-command.js +6 -2
- package/dist/cli/commands/compact-command.js +52 -26
- package/dist/cli/commands/complexity-commands.js +6 -7
- package/dist/cli/commands/config-commands.d.ts +1 -1
- package/dist/cli/commands/config-commands.js +33 -9
- package/dist/cli/commands/container-commands.js +39 -15
- package/dist/cli/commands/context-commands.d.ts +1 -1
- package/dist/cli/commands/context-commands.js +40 -13
- package/dist/cli/commands/core/artifacts-command.js +11 -3
- package/dist/cli/commands/core/binding-commands.js +9 -6
- package/dist/cli/commands/core/doctor-command.js +7 -4
- package/dist/cli/commands/core/memory-command.js +47 -21
- package/dist/cli/commands/core/proxy-command.js +3 -1
- package/dist/cli/commands/core/session-command.js +16 -8
- package/dist/cli/commands/core/skill-command.js +31 -16
- package/dist/cli/commands/core/standards-command.js +55 -13
- package/dist/cli/commands/cron-commands-actions.d.ts +43 -0
- package/dist/cli/commands/cron-commands-actions.js +128 -0
- package/dist/cli/commands/cron-commands-schedule.d.ts +86 -0
- package/dist/cli/commands/cron-commands-schedule.js +151 -0
- package/dist/cli/commands/cron-commands.d.ts +35 -32
- package/dist/cli/commands/cron-commands.js +167 -211
- package/dist/cli/commands/cron-scheduler-commands.js +40 -20
- package/dist/cli/commands/cron-scheduler-persist.d.ts +110 -0
- package/dist/cli/commands/cron-scheduler-persist.js +171 -0
- package/dist/cli/commands/dashboard-long-run.js +45 -14
- package/dist/cli/commands/dashboard-summary.js +15 -5
- package/dist/cli/commands/dispatch-commands.js +65 -32
- package/dist/cli/commands/dispatch-from-dag.js +9 -10
- package/dist/cli/commands/doc-commands.js +8 -9
- package/dist/cli/commands/doctor/invoke-from-code.js +1 -1
- package/dist/cli/commands/e2e-verify-env.d.ts +19 -0
- package/dist/cli/commands/e2e-verify-env.js +19 -0
- package/dist/cli/commands/e2e-verify.d.ts +3 -14
- package/dist/cli/commands/e2e-verify.js +49 -29
- package/dist/cli/commands/ecc-commands.d.ts +1 -1
- package/dist/cli/commands/ecc-commands.js +8 -17
- package/dist/cli/commands/evidence-commands.js +10 -6
- package/dist/cli/commands/evolution-commands.d.ts +2 -2
- package/dist/cli/commands/evolution-commands.js +109 -115
- package/dist/cli/commands/feedback-commands-helpers.d.ts +22 -0
- package/dist/cli/commands/feedback-commands-helpers.js +33 -0
- package/dist/cli/commands/feedback-commands.js +15 -38
- package/dist/cli/commands/final-review-commands.d.ts +1 -1
- package/dist/cli/commands/final-review-commands.js +24 -22
- package/dist/cli/commands/fixture-commands.d.ts +1 -1
- package/dist/cli/commands/fixture-commands.js +17 -6
- package/dist/cli/commands/fork-commands-sync-verify.d.ts +12 -0
- package/dist/cli/commands/fork-commands-sync-verify.js +72 -0
- package/dist/cli/commands/fork-commands.js +19 -51
- package/dist/cli/commands/fresh-context-commands.js +3 -1
- package/dist/cli/commands/gate-commands-enforce.d.ts +82 -0
- package/dist/cli/commands/gate-commands-enforce.js +210 -0
- package/dist/cli/commands/gate-commands.d.ts +1 -1
- package/dist/cli/commands/gate-commands.js +85 -205
- package/dist/cli/commands/governance-classify-contract-commands.d.ts +1 -1
- package/dist/cli/commands/governance-classify-contract-commands.js +28 -17
- package/dist/cli/commands/heartbeat-commands-action.d.ts +7 -0
- package/dist/cli/commands/heartbeat-commands-action.js +192 -0
- package/dist/cli/commands/heartbeat-commands-validation.d.ts +57 -0
- package/dist/cli/commands/heartbeat-commands-validation.js +120 -0
- package/dist/cli/commands/heartbeat-commands.d.ts +27 -6
- package/dist/cli/commands/heartbeat-commands.js +19 -198
- package/dist/cli/commands/hook-handle.d.ts +1 -1
- package/dist/cli/commands/hook-handle.js +46 -13
- package/dist/cli/commands/hooks-commands.d.ts +1 -1
- package/dist/cli/commands/hooks-commands.js +18 -6
- package/dist/cli/commands/ide-commands.d.ts +1 -1
- package/dist/cli/commands/ide-commands.js +5 -3
- package/dist/cli/commands/impact-commands.js +8 -2
- package/dist/cli/commands/job-add-slice-command.d.ts +43 -0
- package/dist/cli/commands/job-add-slice-command.js +151 -0
- package/dist/cli/commands/job-commands.d.ts +64 -0
- package/dist/cli/commands/job-commands.js +134 -63
- package/dist/cli/commands/lease-metrics-commands-support.d.ts +73 -0
- package/dist/cli/commands/lease-metrics-commands-support.js +67 -0
- package/dist/cli/commands/lease-metrics-commands.d.ts +3 -44
- package/dist/cli/commands/lease-metrics-commands.js +21 -61
- package/dist/cli/commands/lease-stats-commands.d.ts +1 -1
- package/dist/cli/commands/lease-stats-commands.js +9 -6
- package/dist/cli/commands/lint-commands.d.ts +9 -3
- package/dist/cli/commands/lint-commands.js +15 -8
- package/dist/cli/commands/log-commands.d.ts +1 -1
- package/dist/cli/commands/log-commands.js +8 -6
- package/dist/cli/commands/loop-commands.d.ts +1 -1
- package/dist/cli/commands/loop-commands.js +50 -50
- package/dist/cli/commands/loop-eval-commands.d.ts +1 -1
- package/dist/cli/commands/loop-eval-commands.js +101 -30
- package/dist/cli/commands/memory-commands.js +21 -13
- package/dist/cli/commands/migrate-1-4-1-command.js +1 -1
- package/dist/cli/commands/migrate-v2-10-to-v2-11-command.js +2 -2
- package/dist/cli/commands/mut-commands-helpers.d.ts +30 -0
- package/dist/cli/commands/mut-commands-helpers.js +43 -0
- package/dist/cli/commands/mut-commands.js +16 -58
- package/dist/cli/commands/observability-commands-queries.d.ts +37 -0
- package/dist/cli/commands/observability-commands-queries.js +113 -0
- package/dist/cli/commands/observability-commands.d.ts +1 -1
- package/dist/cli/commands/observability-commands.js +7 -92
- package/dist/cli/commands/openspec-commands.d.ts +1 -1
- package/dist/cli/commands/openspec-commands.js +20 -8
- package/dist/cli/commands/outer-cache-commands.js +18 -7
- package/dist/cli/commands/perf-audit-commands.d.ts +1 -1
- package/dist/cli/commands/perf-audit-commands.js +12 -7
- package/dist/cli/commands/perf-commands.d.ts +1 -1
- package/dist/cli/commands/perf-commands.js +5 -5
- package/dist/cli/commands/playwright-commands.d.ts +1 -1
- package/dist/cli/commands/playwright-commands.js +20 -8
- package/dist/cli/commands/polyrepo-commands.js +21 -19
- package/dist/cli/commands/prd-blocks-commands.js +1 -3
- package/dist/cli/commands/prd-commands.d.ts +1 -1
- package/dist/cli/commands/prd-commands.js +8 -4
- package/dist/cli/commands/preferences-commands.js +13 -12
- package/dist/cli/commands/primer-command.js +5 -5
- package/dist/cli/commands/project-commands.d.ts +1 -1
- package/dist/cli/commands/project-commands.js +33 -9
- package/dist/cli/commands/qa-business-review-commands.js +16 -12
- package/dist/cli/commands/qa-commands.d.ts +1 -1
- package/dist/cli/commands/qa-commands.js +3 -5
- package/dist/cli/commands/release-commands.d.ts +3 -1
- package/dist/cli/commands/release-commands.js +33 -22
- package/dist/cli/commands/request-commands.js +47 -30
- package/dist/cli/commands/request-format-helpers.js +1 -1
- package/dist/cli/commands/retrospective-commands.d.ts +18 -11
- package/dist/cli/commands/retrospective-commands.js +24 -173
- package/dist/cli/commands/retrospective-index-command.d.ts +26 -0
- package/dist/cli/commands/retrospective-index-command.js +99 -0
- package/dist/cli/commands/retrospective-project-root.d.ts +9 -0
- package/dist/cli/commands/retrospective-project-root.js +15 -0
- package/dist/cli/commands/retrospective-search-command.d.ts +27 -0
- package/dist/cli/commands/retrospective-search-command.js +97 -0
- package/dist/cli/commands/retrospective-show-command.d.ts +23 -0
- package/dist/cli/commands/retrospective-show-command.js +80 -0
- package/dist/cli/commands/reviewer-commands.d.ts +1 -1
- package/dist/cli/commands/role-commands.js +14 -9
- package/dist/cli/commands/runtime-commands.js +14 -7
- package/dist/cli/commands/sc-commands.d.ts +1 -1
- package/dist/cli/commands/sc-commands.js +39 -6
- package/dist/cli/commands/scan-commands.js +36 -13
- package/dist/cli/commands/security-audit-commands.d.ts +1 -1
- package/dist/cli/commands/security-audit-commands.js +12 -7
- package/dist/cli/commands/sediment-commands.d.ts +2 -2
- package/dist/cli/commands/sediment-commands.js +146 -139
- package/dist/cli/commands/session-24h-mode.js +15 -2
- package/dist/cli/commands/session-checkpoint-command.js +1 -1
- package/dist/cli/commands/session-migrate-skill-name.js +1 -1
- package/dist/cli/commands/shadcn-commands.d.ts +1 -1
- package/dist/cli/commands/shadcn-commands.js +3 -1
- package/dist/cli/commands/share-commands.js +38 -39
- package/dist/cli/commands/skill-conformance-commands.d.ts +1 -1
- package/dist/cli/commands/skill-conformance-commands.js +1 -1
- package/dist/cli/commands/skill-loop-engineering-readiness-commands.js +16 -17
- package/dist/cli/commands/skill-visibility.js +2 -2
- package/dist/cli/commands/slice-commands.d.ts +1 -1
- package/dist/cli/commands/slice-commands.js +36 -12
- package/dist/cli/commands/slice-integrate-commands.js +6 -7
- package/dist/cli/commands/slice-review-commands-helpers.d.ts +26 -0
- package/dist/cli/commands/slice-review-commands-helpers.js +26 -0
- package/dist/cli/commands/slice-review-commands.js +16 -24
- package/dist/cli/commands/smoke-commands-add-path.d.ts +14 -0
- package/dist/cli/commands/smoke-commands-add-path.js +39 -0
- package/dist/cli/commands/smoke-commands-define.d.ts +18 -0
- package/dist/cli/commands/smoke-commands-define.js +97 -0
- package/dist/cli/commands/smoke-commands-run.d.ts +18 -0
- package/dist/cli/commands/smoke-commands-run.js +119 -0
- package/dist/cli/commands/smoke-commands.d.ts +10 -1
- package/dist/cli/commands/smoke-commands.js +17 -179
- package/dist/cli/commands/sop-commands.d.ts +1 -1
- package/dist/cli/commands/sop-commands.js +38 -10
- package/dist/cli/commands/statusline-commands.d.ts +1 -1
- package/dist/cli/commands/statusline-commands.js +21 -10
- package/dist/cli/commands/sub-agent/detached.js +3 -3
- package/dist/cli/commands/sub-agent-dispatch-guard.d.ts +1 -1
- package/dist/cli/commands/sub-agent-shared.js +1 -1
- package/dist/cli/commands/sub-agent-shutdown-commands.js +17 -9
- package/dist/cli/commands/swarm-commands.d.ts +1 -1
- package/dist/cli/commands/swarm-commands.js +13 -6
- package/dist/cli/commands/tech-commands-helpers.d.ts +37 -0
- package/dist/cli/commands/tech-commands-helpers.js +24 -0
- package/dist/cli/commands/tech-commands.d.ts +2 -29
- package/dist/cli/commands/tech-commands.js +15 -28
- package/dist/cli/commands/test-commands.js +27 -7
- package/dist/cli/commands/upgrade-commands.d.ts +1 -1
- package/dist/cli/commands/user-touchpoint-commands.js +1 -3
- package/dist/cli/commands/verdict-aggregate-command.d.ts +1 -1
- package/dist/cli/commands/verdict-aggregate-command.js +20 -7
- package/dist/cli/commands/vm-commands.js +48 -19
- package/dist/cli/commands/wave-plan-commands.js +5 -2
- package/dist/cli/commands/web-commands.js +14 -4
- package/dist/cli/commands/web-lifecycle-commands.js +5 -3
- package/dist/cli/commands/workflow-commands.d.ts +1 -1
- package/dist/cli/commands/workflow-commands.js +64 -29
- package/dist/cli/commands/workflow-lifecycle-commands.js +19 -17
- package/dist/cli/commands/workflow-plan-commands-actions.d.ts +20 -0
- package/dist/cli/commands/workflow-plan-commands-actions.js +115 -0
- package/dist/cli/commands/workflow-plan-commands-session.d.ts +17 -0
- package/dist/cli/commands/workflow-plan-commands-session.js +59 -0
- package/dist/cli/commands/workflow-plan-commands.d.ts +10 -21
- package/dist/cli/commands/workflow-plan-commands.js +15 -141
- package/dist/cli/commands/workspace/clean-command.js +4 -1
- package/dist/cli/commands/workspace/helpers.js +2 -1
- package/dist/cli/commands/workspace/init-command.js +80 -20
- package/dist/cli/commands/workspace/reconcile-command.js +3 -1
- package/dist/cli/commands/workspace-commands.d.ts +1 -1
- package/dist/cli/commands/workspace-commands.js +1 -1
- package/dist/cli/commands/worktree-auth-commands.d.ts +1 -1
- package/dist/cli/commands/worktree-auth-commands.js +16 -169
- package/dist/cli/commands/worktree-auth-grant-command.d.ts +14 -0
- package/dist/cli/commands/worktree-auth-grant-command.js +118 -0
- package/dist/cli/commands/worktree-auth-manage-commands.d.ts +17 -0
- package/dist/cli/commands/worktree-auth-manage-commands.js +128 -0
- package/dist/cli/commands/worktree-lease-commands.d.ts +1 -1
- package/dist/cli/commands/worktree-lease-commands.js +65 -37
- package/dist/cli/index.js +6 -2
- package/dist/cli/program.js +6 -3
- package/dist/hooks/pre-tool-use-sub-agent.js +1 -6
- package/dist/reporters/bdd-reporter.js +9 -3
- package/dist/services/24h-mode/auto-engage.d.ts +19 -0
- package/dist/services/24h-mode/auto-engage.js +35 -0
- package/dist/services/24h-mode/decider.js +5 -1
- package/dist/services/24h-mode/store.js +4 -2
- package/dist/services/adapter/adapter-registry.js +20 -8
- package/dist/services/adapter/adapter.d.ts +2 -2
- package/dist/services/adapter/auto-adapter.d.ts +2 -2
- package/dist/services/adapter/auto-adapter.js +1 -1
- package/dist/services/adapter/claude-adapter.d.ts +1 -1
- package/dist/services/adapter/claude-adapter.js +8 -8
- package/dist/services/adapter/codex-adapter.d.ts +2 -2
- package/dist/services/adapter/codex-adapter.js +20 -8
- package/dist/services/adapter/copilot-adapter.d.ts +2 -2
- package/dist/services/adapter/copilot-adapter.js +20 -8
- package/dist/services/artifacts/artifact-prerequisites.js +10 -8
- package/dist/services/artifacts/artifact-service.js +3 -1
- package/dist/services/artifacts/artifact-template-bodies.d.ts +12 -0
- package/dist/services/artifacts/artifact-template-bodies.js +165 -0
- package/dist/services/artifacts/artifact-templates.js +26 -168
- package/dist/services/artifacts/request-artifact-service.js +14 -7
- package/dist/services/artifacts/request-artifact-state-helpers.d.ts +3 -2
- package/dist/services/artifacts/request-artifact-state-helpers.js +3 -5
- package/dist/services/artifacts/workspace-artifact-helpers.d.ts +28 -0
- package/dist/services/artifacts/workspace-artifact-helpers.js +54 -0
- package/dist/services/artifacts/workspace-service.d.ts +3 -22
- package/dist/services/artifacts/workspace-service.js +10 -60
- package/dist/services/audit/artifact-writer.js +21 -21
- package/dist/services/audit/audit-goal-service.js +2 -2
- package/dist/services/audit/backing-detector.js +7 -4
- package/dist/services/audit/classifier.js +3 -3
- package/dist/services/audit/decision-writer.js +13 -9
- package/dist/services/audit/enforcers/active-skill-resolver.js +15 -7
- package/dist/services/audit/enforcers/design-draft-confirm.js +4 -4
- package/dist/services/audit/enforcers/lint-audit-regression.js +10 -5
- package/dist/services/audit/enforcers/lint-bee-runtime-contract.js +16 -8
- package/dist/services/audit/enforcers/lint-catalog-governance.js +8 -4
- package/dist/services/audit/enforcers/lint-output-style.js +4 -2
- package/dist/services/audit/enforcers/lint-peaks-code-runtime.js +8 -3
- package/dist/services/audit/enforcers/lint-peaks-skill-runtime.js +8 -3
- package/dist/services/audit/enforcers/lint-peaks-ui-sc-txt-runtime.js +20 -20
- package/dist/services/audit/enforcers/lint-prd-artifact-handoff.js +5 -5
- package/dist/services/audit/enforcers/lint-prd-source-snapshot.d.ts +1 -1
- package/dist/services/audit/enforcers/lint-prd-source-snapshot.js +5 -5
- package/dist/services/audit/enforcers/lint-qa-gateguard-and-runtime.js +10 -10
- package/dist/services/audit/enforcers/lint-rd-handoff-coverage.js +10 -8
- package/dist/services/audit/enforcers/lint-reference-shape.js +50 -18
- package/dist/services/audit/enforcers/lint-skill-presence-mandatory.js +5 -5
- package/dist/services/audit/enforcers/lint-style.js +44 -11
- package/dist/services/audit/enforcers/lint-workflow-shape.js +4 -2
- package/dist/services/audit/enforcers/login-gate.js +2 -6
- package/dist/services/audit/enforcers/mock-placement.js +2 -2
- package/dist/services/audit/enforcers/no-root-pollution.js +38 -9
- package/dist/services/audit/enforcers/pre-rd-scan.js +1 -1
- package/dist/services/audit/enforcers/prototype-fidelity.js +1 -1
- package/dist/services/audit/enforcers/resume-detection.js +5 -4
- package/dist/services/audit/prose-ratio-calculator.js +1 -1
- package/dist/services/audit/red-line-catalog-p2-a-bee-runtime.d.ts +39 -0
- package/dist/services/audit/red-line-catalog-p2-a-bee-runtime.js +205 -0
- package/dist/services/audit/red-line-catalog-p2-a-lint-style.d.ts +52 -0
- package/dist/services/audit/red-line-catalog-p2-a-lint-style.js +205 -0
- package/dist/services/audit/red-line-catalog-p2-a.js +3 -374
- package/dist/services/audit/red-line-catalog-p2-b.js +26 -26
- package/dist/services/audit/red-line-catalog.js +26 -38
- package/dist/services/audit/red-lines-service.js +64 -49
- package/dist/services/audit/scanners/openspec-scanner.js +2 -2
- package/dist/services/audit/scanners/rules-tree-scanner.js +2 -2
- package/dist/services/audit/scanners/skills-tree-scanner.js +2 -2
- package/dist/services/audit/static-service.js +3 -3
- package/dist/services/audit-independent/index.d.ts +2 -2
- package/dist/services/audit-independent/index.js +2 -2
- package/dist/services/audit-independent/perf-audit-service.js +19 -8
- package/dist/services/audit-independent/security-audit-service.js +31 -16
- package/dist/services/autonomous-swarm/autonomous-swarm-service.js +75 -46
- package/dist/services/best-practice/output-formatter.js +7 -1
- package/dist/services/capability-audit-service/cross-check.js +11 -5
- package/dist/services/capability-audit-service/runner.js +15 -7
- package/dist/services/capability-baseline/store.js +16 -4
- package/dist/services/capability-baseline/types.js +15 -3
- package/dist/services/capability-baseline/validator.js +43 -7
- package/dist/services/capability-guard-runner/contracts/J02.js +36 -6
- package/dist/services/capability-guard-runner/contracts/J03.js +20 -11
- package/dist/services/capability-guard-runner/contracts/J04.js +24 -15
- package/dist/services/capability-guard-runner/contracts/J05.js +26 -10
- package/dist/services/capability-guard-runner/contracts/J07.js +8 -2
- package/dist/services/capability-guard-runner/contracts/J08.js +22 -5
- package/dist/services/capability-guard-runner/contracts/J10.js +6 -2
- package/dist/services/capability-guard-runner/contracts/J11.d.ts +5 -0
- package/dist/services/capability-guard-runner/contracts/J11.js +14 -2
- package/dist/services/capability-guard-runner/contracts/J12.js +12 -3
- package/dist/services/capability-guard-runner/diff.js +1 -5
- package/dist/services/changeset/changeset-check-service.js +1 -3
- package/dist/services/classify/classify-service.js +20 -8
- package/dist/services/classify/classify-types.js +22 -9
- package/dist/services/code/auto-compact-lifecycle.js +62 -39
- package/dist/services/code/auto-compact-modes.js +2 -2
- package/dist/services/code/auto-compact-orchestrator.js +14 -9
- package/dist/services/code/batch-heartbeat-poller.d.ts +10 -0
- package/dist/services/code/batch-heartbeat-poller.js +17 -1
- package/dist/services/code/compact-event-settle-types.d.ts +80 -0
- package/dist/services/code/compact-event-settle-types.js +20 -0
- package/dist/services/code/compact-event-settle.d.ts +3 -68
- package/dist/services/code/compact-event-settle.js +14 -10
- package/dist/services/code/dag-orchestrator.js +32 -26
- package/dist/services/code/job-shape-decision.js +3 -1
- package/dist/services/code/mode-gate-types.d.ts +57 -0
- package/dist/services/code/mode-gate-types.js +67 -0
- package/dist/services/code/mode-gate.d.ts +4 -58
- package/dist/services/code/mode-gate.js +24 -60
- package/dist/services/code/orchestrator-can-do-advisories.d.ts +30 -0
- package/dist/services/code/orchestrator-can-do-advisories.js +81 -0
- package/dist/services/code/orchestrator-can-do-probes.d.ts +30 -0
- package/dist/services/code/orchestrator-can-do-probes.js +77 -0
- package/dist/services/code/orchestrator-can-do.d.ts +11 -22
- package/dist/services/code/orchestrator-can-do.js +37 -137
- package/dist/services/code/post-compact-checkpoint.d.ts +28 -0
- package/dist/services/code/post-compact-checkpoint.js +57 -0
- package/dist/services/code/post-compact-detector.js +16 -48
- package/dist/services/code/step-08-gate.d.ts +4 -3
- package/dist/services/code/step-08-gate.js +21 -9
- package/dist/services/code-review/ecc-bridge.js +23 -23
- package/dist/services/codegraph/codegraph-autorefresh.js +56 -39
- package/dist/services/codegraph/codegraph-config-repair-writer.js +4 -1
- package/dist/services/codegraph/codegraph-exclude-integrity.js +4 -1
- package/dist/services/codegraph/codegraph-exclude-repair.js +1 -2
- package/dist/services/codegraph/codegraph-index-integrity.js +1 -1
- package/dist/services/codegraph/codegraph-preflight-service.d.ts +3 -26
- package/dist/services/codegraph/codegraph-preflight-service.js +16 -37
- package/dist/services/codegraph/codegraph-preflight-structure.d.ts +32 -0
- package/dist/services/codegraph/codegraph-preflight-structure.js +33 -0
- package/dist/services/codegraph/codegraph-process-runner.js +12 -1
- package/dist/services/codegraph/codegraph-service.js +9 -1
- package/dist/services/compact/request-transition-hook.js +2 -1
- package/dist/services/compact/suggest-service.d.ts +3 -61
- package/dist/services/compact/suggest-service.js +9 -12
- package/dist/services/compact/suggest-types.d.ts +76 -0
- package/dist/services/compact/suggest-types.js +10 -0
- package/dist/services/compact-history/compact-history-service.js +2 -2
- package/dist/services/compact-statusline/compact-lifecycle-store.d.ts +2 -32
- package/dist/services/compact-statusline/compact-lifecycle-store.js +7 -12
- package/dist/services/compact-statusline/compact-lifecycle-types.d.ts +32 -0
- package/dist/services/compact-statusline/compact-lifecycle-types.js +8 -0
- package/dist/services/compact-statusline/compact-statusline-cell-table.d.ts +42 -0
- package/dist/services/compact-statusline/compact-statusline-cell-table.js +63 -0
- package/dist/services/compact-statusline/compact-statusline-service.d.ts +4 -21
- package/dist/services/compact-statusline/compact-statusline-service.js +9 -101
- package/dist/services/compact-statusline/compact-statusline-state.d.ts +4 -0
- package/dist/services/compact-statusline/compact-statusline-state.js +50 -0
- package/dist/services/config/config-migration.js +2 -2
- package/dist/services/config/config-restore.js +1 -1
- package/dist/services/config/config-rollback.js +1 -1
- package/dist/services/config/config-safety.js +28 -10
- package/dist/services/config/config-service.js +114 -31
- package/dist/services/config/model-routing.js +5 -2
- package/dist/services/config/proxy-service.js +6 -1
- package/dist/services/config/workspace-state-service.js +17 -5
- package/dist/services/context/auto-compact-dispatcher-input.d.ts +38 -0
- package/dist/services/context/auto-compact-dispatcher-input.js +9 -0
- package/dist/services/context/auto-compact-dispatcher.d.ts +2 -30
- package/dist/services/context/auto-compact-reader-input.d.ts +30 -0
- package/dist/services/context/auto-compact-reader-input.js +8 -0
- package/dist/services/context/auto-compact-reader.d.ts +2 -24
- package/dist/services/context/auto-compact-reader.js +4 -1
- package/dist/services/context/auto-compact-thresholds.d.ts +54 -0
- package/dist/services/context/auto-compact-thresholds.js +19 -0
- package/dist/services/context/auto-compact-types.d.ts +2 -46
- package/dist/services/context/auto-compact-types.js +1 -11
- package/dist/services/context/build-dispatch-system-prompt.js +2 -2
- package/dist/services/context/collector.js +8 -10
- package/dist/services/context/context-audit-hint.js +7 -5
- package/dist/services/context/context-audit-keys.d.ts +15 -0
- package/dist/services/context/context-audit-keys.js +77 -0
- package/dist/services/context/context-audit-limits.d.ts +20 -0
- package/dist/services/context/context-audit-limits.js +31 -0
- package/dist/services/context/context-audit-scan.d.ts +19 -0
- package/dist/services/context/context-audit-scan.js +246 -0
- package/dist/services/context/context-audit-types.d.ts +65 -0
- package/dist/services/context/context-audit-types.js +10 -0
- package/dist/services/context/context-audit.d.ts +13 -59
- package/dist/services/context/context-audit.js +38 -254
- package/dist/services/context/context-builder.js +4 -4
- package/dist/services/context/context-schema.d.ts +1 -1
- package/dist/services/context/context-schema.js +13 -13
- package/dist/services/context/doc-retriever.js +2 -2
- package/dist/services/context/harness-context-witness.js +43 -24
- package/dist/services/context/harness-window-config.js +27 -7
- package/dist/services/context/ide-detect.js +2 -1
- package/dist/services/context/index.d.ts +1 -1
- package/dist/services/context/memory-index-reader.js +3 -9
- package/dist/services/context/memory-preflight-config.js +3 -5
- package/dist/services/context/memory-preflight-service.d.ts +2 -20
- package/dist/services/context/memory-preflight-service.js +37 -68
- package/dist/services/context/memory-preflight-support.d.ts +48 -0
- package/dist/services/context/memory-preflight-support.js +56 -0
- package/dist/services/context/post-compact-reinjection.js +3 -3
- package/dist/services/context/renderer.js +7 -3
- package/dist/services/context/spillover-store.js +3 -1
- package/dist/services/context/summary-view.js +1 -1
- package/dist/services/context/threshold.js +2 -2
- package/dist/services/context/tokenizer.js +3 -3
- package/dist/services/crystallization/crystallization-brief-schema.d.ts +80 -0
- package/dist/services/crystallization/crystallization-brief-schema.js +159 -0
- package/dist/services/crystallization/crystallization-service.d.ts +7 -7
- package/dist/services/crystallization/crystallization-service.js +56 -55
- package/dist/services/crystallization/crystallization-store.d.ts +2 -2
- package/dist/services/crystallization/crystallization-store.js +37 -20
- package/dist/services/crystallization/crystallization-types.d.ts +4 -56
- package/dist/services/crystallization/crystallization-types.js +31 -184
- package/dist/services/crystallization/evidence-brief-builder.d.ts +3 -3
- package/dist/services/crystallization/evidence-brief-builder.js +32 -38
- package/dist/services/crystallization/index.d.ts +4 -4
- package/dist/services/crystallization/index.js +4 -4
- package/dist/services/dashboard/project-dashboard-service.js +7 -1
- package/dist/services/dispatch/await-batch-helpers.d.ts +55 -0
- package/dist/services/dispatch/await-batch-helpers.js +206 -0
- package/dist/services/dispatch/await-batch.d.ts +50 -7
- package/dist/services/dispatch/await-batch.js +97 -194
- package/dist/services/dispatch/batch-counter.js +2 -1
- package/dist/services/dispatch/conflict-replay.js +2 -2
- package/dist/services/dispatch/contract-store.js +5 -2
- package/dist/services/dispatch/dispatch-record-input-types.d.ts +81 -0
- package/dist/services/dispatch/dispatch-record-input-types.js +1 -0
- package/dist/services/dispatch/dispatch-record-types.d.ts +6 -73
- package/dist/services/dispatch/dispatch-record-upgrade-fields.d.ts +72 -0
- package/dist/services/dispatch/dispatch-record-upgrade-fields.js +242 -0
- package/dist/services/dispatch/dispatch-record-upgrade-guards.d.ts +15 -0
- package/dist/services/dispatch/dispatch-record-upgrade-guards.js +55 -0
- package/dist/services/dispatch/dispatch-record-upgrade.d.ts +2 -4
- package/dist/services/dispatch/dispatch-record-upgrade.js +21 -213
- package/dist/services/dispatch/dispatch-record-writer.js +54 -26
- package/dist/services/dispatch/dispatch-sub-agent.js +7 -2
- package/dist/services/dispatch/e2e-fixtures.js +1 -1
- package/dist/services/dispatch/isolation-lease.js +39 -17
- package/dist/services/dispatch/merge-back-runner.js +51 -11
- package/dist/services/dispatch/service-shutdown.js +4 -1
- package/dist/services/dispatch/slice-dag-types.d.ts +116 -0
- package/dist/services/dispatch/slice-dag-types.js +41 -0
- package/dist/services/dispatch/slice-dag.d.ts +3 -109
- package/dist/services/dispatch/slice-dag.js +13 -36
- package/dist/services/dispatch/sub-agent-batch-await.d.ts +47 -0
- package/dist/services/dispatch/sub-agent-batch-await.js +73 -0
- package/dist/services/dispatch/sub-agent-dispatcher-types.d.ts +122 -0
- package/dist/services/dispatch/sub-agent-dispatcher-types.js +12 -0
- package/dist/services/dispatch/sub-agent-dispatcher.d.ts +3 -145
- package/dist/services/dispatch/sub-agent-dispatcher.js +14 -70
- package/dist/services/dispatch/test-tool-detection.js +12 -1
- package/dist/services/doc/doc-generator.js +19 -4
- package/dist/services/doctor/doctor-service/checks/check-id-schema.js +16 -8
- package/dist/services/doctor/doctor-service/checks/codegraph-capability.d.ts +7 -2
- package/dist/services/doctor/doctor-service/checks/codegraph-capability.js +26 -8
- package/dist/services/doctor/doctor-service/checks/codegraph-exclude-integrity.js +16 -8
- package/dist/services/doctor/doctor-service/checks/codegraph-index-integrity.js +16 -8
- package/dist/services/doctor/doctor-service/checks/dist-source-version.js +18 -9
- package/dist/services/doctor/doctor-service/checks/ecc-hooks-schema-drift.js +20 -10
- package/dist/services/doctor/doctor-service/checks/gateguard-conflict.js +18 -9
- package/dist/services/doctor/doctor-service/checks/l3-memory-health.js +25 -11
- package/dist/services/doctor/doctor-service/checks/l3-orphan-sessions.js +12 -6
- package/dist/services/doctor/doctor-service/checks/multi-binary-drift.d.ts +7 -16
- package/dist/services/doctor/doctor-service/checks/multi-binary-drift.js +50 -70
- package/dist/services/doctor/doctor-service/checks/schema-validity.js +5 -1
- package/dist/services/doctor/doctor-service/checks/skill-presence.js +4 -2
- package/dist/services/doctor/doctor-service/checks/statusline-install.js +8 -4
- package/dist/services/doctor/doctor-service/checks/statusline-runtime.js +8 -4
- package/dist/services/doctor/doctor-service/checks/user-config.js +4 -2
- package/dist/services/doctor/doctor-service/checks/workspace-init.js +8 -4
- package/dist/services/doctor/doctor-service/checks/workspace-layout.js +19 -11
- package/dist/services/doctor/doctor-service/index.js +4 -2
- package/dist/services/doctor/doctor-service/multi-binary-drift-helpers.d.ts +40 -0
- package/dist/services/doctor/doctor-service/multi-binary-drift-helpers.js +49 -0
- package/dist/services/doctor/doctor-service/plugin-registry.js +1 -1
- package/dist/services/doctor/doctor-service/probe-types.d.ts +210 -0
- package/dist/services/doctor/doctor-service/probe-types.js +14 -0
- package/dist/services/doctor/doctor-service/types.d.ts +7 -197
- package/dist/services/doctor/index.d.ts +1 -1
- package/dist/services/doctor/index.js +1 -1
- package/dist/services/env/shell-probe.js +8 -2
- package/dist/services/evidence/evidence-body-builders.d.ts +23 -0
- package/dist/services/evidence/evidence-body-builders.js +197 -0
- package/dist/services/evidence/evidence-generator.js +6 -187
- package/dist/services/evolution/evolution-constraints.d.ts +43 -0
- package/dist/services/evolution/evolution-constraints.js +54 -0
- package/dist/services/evolution/evolution-evaluation-schema.d.ts +43 -0
- package/dist/services/evolution/evolution-evaluation-schema.js +43 -0
- package/dist/services/evolution/evolution-service.d.ts +6 -6
- package/dist/services/evolution/evolution-service.js +58 -58
- package/dist/services/evolution/evolution-store.d.ts +2 -2
- package/dist/services/evolution/evolution-store.js +37 -51
- package/dist/services/evolution/evolution-types.d.ts +2 -22
- package/dist/services/evolution/evolution-types.js +41 -101
- package/dist/services/evolution/independent-evaluator-runner.d.ts +3 -3
- package/dist/services/evolution/independent-evaluator-runner.js +20 -22
- package/dist/services/evolution/regression-skeptic-runner.d.ts +2 -2
- package/dist/services/evolution/regression-skeptic-runner.js +18 -18
- package/dist/services/feedback/feedback-promotion-service.js +48 -12
- package/dist/services/feedback/promotion-artifact-evidence.d.ts +2 -16
- package/dist/services/feedback/promotion-artifact-evidence.js +6 -83
- package/dist/services/feedback/promotion-artifact-json-evidence.d.ts +29 -0
- package/dist/services/feedback/promotion-artifact-json-evidence.js +39 -0
- package/dist/services/feedback/promotion-source-comments.d.ts +47 -0
- package/dist/services/feedback/promotion-source-comments.js +61 -0
- package/dist/services/final-review/final-review-contract.d.ts +26 -0
- package/dist/services/final-review/final-review-contract.js +14 -0
- package/dist/services/final-review/final-review-delivery.d.ts +63 -0
- package/dist/services/final-review/final-review-delivery.js +124 -0
- package/dist/services/final-review/final-review-evidence-budget.d.ts +125 -0
- package/dist/services/final-review/final-review-evidence-budget.js +218 -0
- package/dist/services/final-review/final-review-evidence-collect.d.ts +4 -0
- package/dist/services/final-review/final-review-evidence-collect.js +230 -0
- package/dist/services/final-review/final-review-evidence-sources.d.ts +138 -0
- package/dist/services/final-review/final-review-evidence-sources.js +139 -0
- package/dist/services/final-review/final-review-fifth-dim.d.ts +8 -0
- package/dist/services/final-review/final-review-fifth-dim.js +20 -0
- package/dist/services/final-review/final-review-gates.d.ts +119 -0
- package/dist/services/final-review/final-review-gates.js +214 -0
- package/dist/services/final-review/final-review-output-budget.d.ts +88 -0
- package/dist/services/final-review/final-review-output-budget.js +161 -0
- package/dist/services/final-review/final-review-prompt.d.ts +35 -0
- package/dist/services/final-review/final-review-prompt.js +112 -0
- package/dist/services/final-review/final-review-reviewer.d.ts +57 -0
- package/dist/services/final-review/final-review-reviewer.js +95 -0
- package/dist/services/final-review/final-review-runner.d.ts +3 -0
- package/dist/services/final-review/final-review-runner.js +158 -0
- package/dist/services/final-review/final-review-service.d.ts +119 -373
- package/dist/services/final-review/final-review-service.js +48 -1380
- package/dist/services/final-review/final-review-verdicts.d.ts +60 -0
- package/dist/services/final-review/final-review-verdicts.js +91 -0
- package/dist/services/final-review/index.d.ts +3 -3
- package/dist/services/final-review/index.js +2 -2
- package/dist/services/final-review/pre-post-diff.js +32 -29
- package/dist/services/fixture/fixture-capture-service.js +14 -6
- package/dist/services/fresh-context/trigger-scan.js +13 -2
- package/dist/services/fuzzy-matching/fuzzy-match-service.js +1 -1
- package/dist/services/fuzzy-matching/fzf-pick-service.js +6 -1
- package/dist/services/hooks/pre-tool-code-gate.js +2 -2
- package/dist/services/hooks/presence-marker-detector.js +12 -2
- package/dist/services/hooks/worktree-authorization-gate.js +21 -7
- package/dist/services/ide/adapters/claude-code-adapter.js +30 -17
- package/dist/services/ide/adapters/codex-adapter.js +3 -5
- package/dist/services/ide/adapters/cursor-adapter.js +3 -5
- package/dist/services/ide/adapters/hermes-adapter.js +2 -4
- package/dist/services/ide/adapters/openclaw-adapter.js +2 -4
- package/dist/services/ide/adapters/qoder-adapter.js +2 -4
- package/dist/services/ide/adapters/tongyi-lingma-adapter.js +1 -1
- package/dist/services/ide/adapters/trae-adapter.js +3 -5
- package/dist/services/ide/adapters/zcode-adapter.js +8 -7
- package/dist/services/ide/current-model-detector.js +2 -1
- package/dist/services/ide/ide-compact-types.d.ts +153 -0
- package/dist/services/ide/ide-compact-types.js +1 -0
- package/dist/services/ide/ide-registry.js +1 -1
- package/dist/services/ide/ide-types.d.ts +7 -145
- package/dist/services/ide/resource-profile.js +1 -1
- package/dist/services/ide/shared/atomic-json.js +2 -1
- package/dist/services/impact/impact-scan-service.js +12 -5
- package/dist/services/job/job-commit-verification.d.ts +73 -0
- package/dist/services/job/job-commit-verification.js +72 -0
- package/dist/services/job/job-orchestrator.d.ts +42 -0
- package/dist/services/job/job-orchestrator.js +110 -10
- package/dist/services/job/job-progress-store.d.ts +75 -5
- package/dist/services/job/job-progress-store.js +83 -6
- package/dist/services/job/job-rotation.d.ts +1 -1
- package/dist/services/job/job-rotation.js +5 -1
- package/dist/services/job/job-state-store.js +2 -2
- package/dist/services/job/job-types.js +49 -20
- package/dist/services/job/subagent-job-wrapper.d.ts +1 -1
- package/dist/services/job/subagent-job-wrapper.js +5 -1
- package/dist/services/job-snapshot/snapshot.js +2 -2
- package/dist/services/karpathy-cost/karpathy-cost-check-service.js +23 -13
- package/dist/services/legacy/legacy-detector.js +51 -5
- package/dist/services/lint/detect-eslint.js +10 -4
- package/dist/services/lint/detect-ocr-18.js +11 -3
- package/dist/services/lint/eslint-runner-support.d.ts +22 -0
- package/dist/services/lint/eslint-runner-support.js +185 -0
- package/dist/services/lint/eslint-runner-types.d.ts +69 -0
- package/dist/services/lint/eslint-runner-types.js +11 -0
- package/dist/services/lint/eslint-runner.d.ts +4 -56
- package/dist/services/lint/eslint-runner.js +24 -178
- package/dist/services/lint/npx-resolver.js +1 -3
- package/dist/services/lint/ocr-18-acquire.js +15 -4
- package/dist/services/lint/ocr-multilang-adapter.js +4 -5
- package/dist/services/llm/anthropic-runner.js +4 -1
- package/dist/services/log/log-commands-service.js +2 -6
- package/dist/services/log/logger.js +15 -12
- package/dist/services/log/retention.js +3 -2
- package/dist/services/loop/evaluator-dispatcher.js +78 -42
- package/dist/services/loop/loop-bee-relation-service.d.ts +4 -4
- package/dist/services/loop/loop-bee-relation-service.js +36 -40
- package/dist/services/loop/loop-bee-relation-store.d.ts +3 -3
- package/dist/services/loop/loop-bee-relation-store.js +9 -11
- package/dist/services/loop/loop-bee-relation-types.d.ts +1 -1
- package/dist/services/loop/loop-bee-relation-types.js +14 -25
- package/dist/services/loop/loop-release-service.d.ts +2 -2
- package/dist/services/loop/loop-release-service.js +3 -3
- package/dist/services/loop/loop-release-store.d.ts +2 -2
- package/dist/services/loop/loop-release-store.js +4 -6
- package/dist/services/loop/loop-release-types.d.ts +1 -1
- package/dist/services/loop/loop-release-types.js +21 -31
- package/dist/services/loop/monotonic-guard-types.d.ts +51 -0
- package/dist/services/loop/monotonic-guard-types.js +9 -0
- package/dist/services/loop/monotonic-guard.d.ts +2 -43
- package/dist/services/loop/monotonic-runner-types.d.ts +63 -0
- package/dist/services/loop/monotonic-runner-types.js +17 -0
- package/dist/services/loop/monotonic-runner.d.ts +3 -34
- package/dist/services/loop/monotonic-runner.js +10 -20
- package/dist/services/loop/run-driver.js +16 -8
- package/dist/services/loop/spec-service.d.ts +0 -5
- package/dist/services/loop/spec-service.js +49 -9
- package/dist/services/memory/llm-reranker-core.d.ts +108 -0
- package/dist/services/memory/llm-reranker-core.js +105 -0
- package/dist/services/memory/llm-reranker.d.ts +3 -94
- package/dist/services/memory/llm-reranker.js +13 -102
- package/dist/services/memory/memory-ingest-service.d.ts +1 -22
- package/dist/services/memory/memory-ingest-service.js +29 -76
- package/dist/services/memory/memory-ingest-support.d.ts +23 -0
- package/dist/services/memory/memory-ingest-support.js +81 -0
- package/dist/services/memory/memory-rotate-service.js +41 -8
- package/dist/services/memory/memory-search-service.js +8 -4
- package/dist/services/memory/project-context-service.js +26 -5
- package/dist/services/memory/project-memory-service/index/kind-dispatch.d.ts +2 -7
- package/dist/services/memory/project-memory-service/index/kind-dispatch.js +17 -136
- package/dist/services/memory/project-memory-service/index/project-memory-plan-exec.d.ts +7 -0
- package/dist/services/memory/project-memory-service/index/project-memory-plan-exec.js +150 -0
- package/dist/services/memory/project-memory-service/index/ranking.js +6 -3
- package/dist/services/memory/project-memory-service/index/reindex.js +14 -5
- package/dist/services/memory/project-memory-service/memory-kinds.d.ts +31 -0
- package/dist/services/memory/project-memory-service/memory-kinds.js +87 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter-parse.d.ts +24 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter-parse.js +104 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter.d.ts +2 -24
- package/dist/services/memory/project-memory-service/parsers/frontmatter.js +28 -79
- package/dist/services/memory/project-memory-service/parsers/markdown-pure.js +15 -3
- package/dist/services/memory/project-memory-service/store/atomic-write.js +34 -22
- package/dist/services/memory/project-memory-service/store/paths.js +2 -1
- package/dist/services/memory/project-memory-service/types.d.ts +3 -31
- package/dist/services/memory/project-memory-service/types.js +1 -76
- package/dist/services/migrate-skill-name/migrate.js +1 -1
- package/dist/services/migrate-skill-name/schema.js +1 -1
- package/dist/services/mode/mode-enforcement.js +4 -2
- package/dist/services/mode/mode-status-service.d.ts +27 -9
- package/dist/services/mode/mode-status-service.js +64 -12
- package/dist/services/observability/aggregation-helpers.d.ts +22 -0
- package/dist/services/observability/aggregation-helpers.js +65 -0
- package/dist/services/observability/aggregation-types.d.ts +66 -0
- package/dist/services/observability/aggregation-types.js +34 -0
- package/dist/services/observability/aggregation.d.ts +5 -53
- package/dist/services/observability/aggregation.js +17 -80
- package/dist/services/observability/jsonl-store.js +2 -1
- package/dist/services/observability/observability-schema.d.ts +71 -0
- package/dist/services/observability/observability-schema.js +64 -0
- package/dist/services/observability/observability-service.d.ts +3 -56
- package/dist/services/observability/observability-service.js +9 -49
- package/dist/services/openspec/coverage-evidence-reader.js +18 -11
- package/dist/services/openspec/openspec-archive-service.js +31 -24
- package/dist/services/openspec/openspec-init-service.js +8 -2
- package/dist/services/openspec/openspec-propose-from-doctor-service.js +1 -1
- package/dist/services/openspec/openspec-scan-service.js +4 -1
- package/dist/services/openspec/openspec-validate-service.js +26 -5
- package/dist/services/perf/perf-baseline-service.js +2 -6
- package/dist/services/polyrepo/polyrepo-dispatcher.js +2 -1
- package/dist/services/polyrepo/polyrepo-scanner.js +4 -1
- package/dist/services/prd/handoff-frontmatter-shape.d.ts +42 -0
- package/dist/services/prd/handoff-frontmatter-shape.js +67 -0
- package/dist/services/prd/handoff-frontmatter.js +1 -1
- package/dist/services/prd/handoff-path-resolution.d.ts +37 -0
- package/dist/services/prd/handoff-path-resolution.js +101 -0
- package/dist/services/prd/handoff-service.d.ts +1 -37
- package/dist/services/prd/handoff-service.js +16 -148
- package/dist/services/prd/prd-blocks-checker.js +28 -8
- package/dist/services/prd/project-scan-bootstrap-service.js +1 -5
- package/dist/services/prd/project-scan-reader.js +1 -4
- package/dist/services/prd/project-scan-sediment.js +1 -4
- package/dist/services/preferences/preferences-service.js +6 -8
- package/dist/services/preferences/preferences-types.js +4 -4
- package/dist/services/qa/bdd-test-style-contract.d.ts +41 -0
- package/dist/services/qa/bdd-test-style-contract.js +37 -0
- package/dist/services/qa/bdd-test-style-verifier.d.ts +2 -24
- package/dist/services/qa/bdd-test-style-verifier.js +5 -31
- package/dist/services/qa/browser-event-logger.js +2 -1
- package/dist/services/qa/qa-business-review-state.js +20 -5
- package/dist/services/qa/screenshot-archive-service.js +1 -3
- package/dist/services/rd/ast-gate.js +2 -2
- package/dist/services/rd/impl.js +1 -1
- package/dist/services/rd/rd-service.js +117 -43
- package/dist/services/rd/reviewer-dispatch-policy.js +4 -7
- package/dist/services/rd/standards-diagnostic.js +4 -1
- package/dist/services/rd/strategy.js +10 -3
- package/dist/services/rd/tactical-stage.js +2 -2
- package/dist/services/rd/types.js +9 -7
- package/dist/services/rd-swarm/rd-swarm-service.d.ts +2 -45
- package/dist/services/rd-swarm/rd-swarm-service.js +140 -21
- package/dist/services/rd-swarm/rd-swarm-types.d.ts +54 -0
- package/dist/services/rd-swarm/rd-swarm-types.js +10 -0
- package/dist/services/recommendations/capability-map-service.js +10 -2
- package/dist/services/recommendations/capability-seed-items.js +81 -14
- package/dist/services/recommendations/capability-seed-mappings.js +420 -48
- package/dist/services/recommendations/capability-seed-sources-mcp-server.d.ts +9 -0
- package/dist/services/recommendations/capability-seed-sources-mcp-server.js +233 -0
- package/dist/services/recommendations/capability-seed-sources.js +127 -32
- package/dist/services/release/release-state.d.ts +2 -2
- package/dist/services/release/release-state.js +44 -15
- package/dist/services/release/version-precheck-layer-changeset.d.ts +2 -0
- package/dist/services/release/version-precheck-layer-changeset.js +43 -0
- package/dist/services/release/version-precheck-service.d.ts +11 -36
- package/dist/services/release/version-precheck-service.js +20 -104
- package/dist/services/release/version-precheck-support.d.ts +53 -0
- package/dist/services/release/version-precheck-support.js +64 -0
- package/dist/services/retrospective/retrospective-index.js +17 -3
- package/dist/services/retrospective/retrospective-search-service.js +6 -2
- package/dist/services/retrospective/retrospective-show.js +4 -1
- package/dist/services/reviewer/model-family.js +7 -1
- package/dist/services/reviewer/providers/anthropic.d.ts +5 -0
- package/dist/services/reviewer/providers/anthropic.js +10 -1
- package/dist/services/reviewer/providers/openai.d.ts +5 -0
- package/dist/services/reviewer/providers/openai.js +10 -1
- package/dist/services/reviewer/reviewer-config.js +4 -2
- package/dist/services/reviewer/reviewer-service.d.ts +2 -36
- package/dist/services/reviewer/reviewer-service.js +2 -1
- package/dist/services/reviewer/reviewer-types.d.ts +43 -0
- package/dist/services/reviewer/reviewer-types.js +1 -0
- package/dist/services/role/role-registry.js +9 -1
- package/dist/services/runtime/runtime-detector.js +4 -1
- package/dist/services/runtime/vendors/claude-code.js +14 -6
- package/dist/services/runtime/vendors/codex.js +11 -3
- package/dist/services/runtime/vendors/copilot.js +11 -3
- package/dist/services/sc/sc-service.js +28 -15
- package/dist/services/scan/acceptance-coverage-service.js +4 -1
- package/dist/services/scan/api-diff-openapi-schema-read.d.ts +67 -0
- package/dist/services/scan/api-diff-openapi-schema-read.js +154 -0
- package/dist/services/scan/api-diff-openapi.d.ts +16 -2
- package/dist/services/scan/api-diff-openapi.js +19 -123
- package/dist/services/scan/api-diff-recorded.js +16 -3
- package/dist/services/scan/api-diff-service.js +49 -16
- package/dist/services/scan/api-diff-types.js +12 -3
- package/dist/services/scan/api-surface-helpers.d.ts +13 -0
- package/dist/services/scan/api-surface-helpers.js +31 -0
- package/dist/services/scan/api-surface-service.d.ts +2 -45
- package/dist/services/scan/api-surface-service.js +15 -26
- package/dist/services/scan/api-surface-types.d.ts +54 -0
- package/dist/services/scan/api-surface-types.js +10 -0
- package/dist/services/scan/archetype-detection.d.ts +37 -0
- package/dist/services/scan/archetype-detection.js +142 -0
- package/dist/services/scan/archetype-service.js +36 -125
- package/dist/services/scan/diff-scope-service.js +35 -15
- package/dist/services/scan/existing-system-service.js +16 -99
- package/dist/services/scan/existing-system-visual-tokens.d.ts +20 -0
- package/dist/services/scan/existing-system-visual-tokens.js +123 -0
- package/dist/services/scan/file-size-policy.d.ts +86 -0
- package/dist/services/scan/file-size-policy.js +184 -0
- package/dist/services/scan/file-size-scan.d.ts +30 -3
- package/dist/services/scan/file-size-scan.js +47 -9
- package/dist/services/scan/karpathy-service.js +6 -1
- package/dist/services/scan/orphan-service.js +86 -20
- package/dist/services/scan/type-sanity-service.js +104 -10
- package/dist/services/sediment/dispose-confirm.d.ts +2 -2
- package/dist/services/sediment/dispose-confirm.js +2 -2
- package/dist/services/sediment/json-schema.d.ts +1 -1
- package/dist/services/sediment/json-schema.js +25 -13
- package/dist/services/sediment/manifest-lint.d.ts +1 -12
- package/dist/services/sediment/manifest-lint.js +1 -7
- package/dist/services/sediment/pool-paths.js +13 -9
- package/dist/services/sediment/pool-read.d.ts +1 -1
- package/dist/services/sediment/pool-read.js +42 -18
- package/dist/services/sediment/pool-rebuild-index.d.ts +1 -1
- package/dist/services/sediment/pool-rebuild-index.js +5 -5
- package/dist/services/sediment/pool-write.d.ts +1 -1
- package/dist/services/sediment/pool-write.js +7 -7
- package/dist/services/sediment/promotion-gate.d.ts +1 -1
- package/dist/services/sediment/promotion-gate.js +9 -9
- package/dist/services/sediment/types.d.ts +8 -8
- package/dist/services/session/binding-status-service.js +14 -4
- package/dist/services/session/caller-binding-service.js +2 -1
- package/dist/services/session/getSessionDir.js +4 -1
- package/dist/services/session/index.d.ts +1 -1
- package/dist/services/session/index.js +1 -1
- package/dist/services/session/resolve-caller-id.js +7 -5
- package/dist/services/session/session-binding-bridge.js +26 -25
- package/dist/services/session/session-checkpoint-service.js +1 -1
- package/dist/services/session/session-file-schema.d.ts +70 -0
- package/dist/services/session/session-file-schema.js +68 -0
- package/dist/services/session/session-manager.d.ts +6 -6
- package/dist/services/session/session-manager.js +30 -29
- package/dist/services/session/session-resume-service.js +2 -1
- package/dist/services/share/bundle-format-constants.d.ts +85 -0
- package/dist/services/share/bundle-format-constants.js +100 -0
- package/dist/services/share/bundle-reader.d.ts +3 -3
- package/dist/services/share/bundle-reader.js +75 -68
- package/dist/services/share/bundle-types.d.ts +3 -70
- package/dist/services/share/bundle-types.js +38 -107
- package/dist/services/share/bundle-writer.d.ts +3 -3
- package/dist/services/share/bundle-writer.js +101 -91
- package/dist/services/share/run-state-contract.d.ts +1 -1
- package/dist/services/share/run-state-contract.js +7 -13
- package/dist/services/signal/cancel-handler.js +2 -1
- package/dist/services/skill/resume-detector.js +6 -4
- package/dist/services/skill/skill-scheduler.js +3 -1
- package/dist/services/skill/skill-search-service.js +4 -4
- package/dist/services/skillhub/release-diff.d.ts +2 -2
- package/dist/services/skillhub/release-diff.js +6 -10
- package/dist/services/skillhub/release-export.d.ts +2 -2
- package/dist/services/skillhub/release-export.js +15 -17
- package/dist/services/skillhub/release-gc-blobs.d.ts +2 -2
- package/dist/services/skillhub/release-gc-blobs.js +4 -4
- package/dist/services/skillhub/release-import.d.ts +2 -2
- package/dist/services/skillhub/release-import.js +13 -12
- package/dist/services/skillhub/release-retain.d.ts +3 -3
- package/dist/services/skillhub/release-retain.js +22 -22
- package/dist/services/skillhub/sqlite-store.d.ts +1 -1
- package/dist/services/skillhub/sqlite-store.js +12 -11
- package/dist/services/skillhub/tar-runtime.js +15 -15
- package/dist/services/skillhub/types.d.ts +4 -4
- package/dist/services/skills/hooks-codegate-superpowers.js +16 -7
- package/dist/services/skills/hooks-settings-service.js +61 -19
- package/dist/services/skills/presence-lease-service.js +26 -16
- package/dist/services/skills/presence-lease-types.d.ts +1 -1
- package/dist/services/skills/presence-lease-types.js +1 -1
- package/dist/services/skills/skill-conformance-service.js +40 -8
- package/dist/services/skills/skill-presence-service.js +16 -14
- package/dist/services/skills/skill-runbook-service.js +2 -1
- package/dist/services/skills/skill-statusline-model.d.ts +128 -0
- package/dist/services/skills/skill-statusline-model.js +163 -0
- package/dist/services/skills/skill-statusline-renderer.js +4 -3
- package/dist/services/skills/skill-statusline-service.d.ts +3 -100
- package/dist/services/skills/skill-statusline-service.js +56 -163
- package/dist/services/skills/statusline-palette.js +11 -6
- package/dist/services/skills/statusline-settings-service.js +2 -1
- package/dist/services/skills/sync-service-support.d.ts +65 -0
- package/dist/services/skills/sync-service-support.js +50 -0
- package/dist/services/skills/sync-service.d.ts +3 -66
- package/dist/services/skills/sync-service.js +15 -53
- package/dist/services/slice/calibration-store.js +8 -2
- package/dist/services/slice/cross-pass-edge-merger.d.ts +3 -28
- package/dist/services/slice/cross-pass-edge-merger.js +13 -63
- package/dist/services/slice/cross-pass-edge-static-scan-support.d.ts +69 -0
- package/dist/services/slice/cross-pass-edge-static-scan-support.js +74 -0
- package/dist/services/slice/granularity-decider.js +2 -2
- package/dist/services/slice/slice-archive-service.js +8 -3
- package/dist/services/slice/slice-check-service.js +19 -8
- package/dist/services/slice/slice-decompose-runners.js +61 -23
- package/dist/services/slice/slice-decompose-service.js +4 -4
- package/dist/services/slice/slice-review-state.js +8 -2
- package/dist/services/smoke/smoke-paths-state.js +9 -2
- package/dist/services/sop/gate-enforce-service.js +9 -2
- package/dist/services/sop/sop-advance-service.js +14 -2
- package/dist/services/sop/sop-check-service.js +16 -4
- package/dist/services/sop/sop-paths.js +3 -1
- package/dist/services/sop/sop-registry-service.js +5 -1
- package/dist/services/sop/sop-service.js +29 -7
- package/dist/services/sop/sop-types.js +5 -1
- package/dist/services/standards/ide-aware-standards-service.js +2 -2
- package/dist/services/standards/loop-engineering-lint.js +12 -5
- package/dist/services/standards/loop-engineering-readiness-lint.js +5 -5
- package/dist/services/standards/migrate-claude-rules-service.js +9 -7
- package/dist/services/standards/missing-standards-detector.js +1 -3
- package/dist/services/standards/project-context-support.d.ts +50 -0
- package/dist/services/standards/project-context-support.js +244 -0
- package/dist/services/standards/project-context-types.d.ts +30 -0
- package/dist/services/standards/project-context-types.js +11 -0
- package/dist/services/standards/project-context.d.ts +10 -22
- package/dist/services/standards/project-context.js +27 -214
- package/dist/services/standards/project-standards-service.js +43 -12
- package/dist/services/standards/standards-render-common.d.ts +15 -0
- package/dist/services/standards/standards-render-common.js +49 -0
- package/dist/services/standards/standards-render.d.ts +1 -2
- package/dist/services/standards/standards-render.js +31 -58
- package/dist/services/standards/ui-library-dispatch-block.js +1 -1
- package/dist/services/tech/tech-change-id-service.js +7 -7
- package/dist/services/tech/tech-service.js +73 -26
- package/dist/services/test-cache/test-cache-service.js +8 -3
- package/dist/services/upgrade/1x-detector-service.js +5 -3
- package/dist/services/upgrade/gitignore-migrate-service.js +5 -5
- package/dist/services/upgrade/upgrade-service.js +36 -13
- package/dist/services/verdict/envelope-parsers.d.ts +84 -0
- package/dist/services/verdict/envelope-parsers.js +146 -0
- package/dist/services/verdict/envelopes.d.ts +50 -60
- package/dist/services/verdict/envelopes.js +18 -156
- package/dist/services/verdict/verdict-aggregator.js +27 -3
- package/dist/services/vm/vm-lease.js +15 -3
- package/dist/services/web/aria-node.d.ts +27 -0
- package/dist/services/web/aria-node.js +1 -0
- package/dist/services/web/browser-acquire.js +3 -1
- package/dist/services/web/browser-cache-probe.d.ts +18 -0
- package/dist/services/web/browser-cache-probe.js +110 -0
- package/dist/services/web/browser-session-manager.js +6 -2
- package/dist/services/web/daemon-registry.js +4 -1
- package/dist/services/web/playwright-loader.d.ts +2 -70
- package/dist/services/web/playwright-types.d.ts +75 -0
- package/dist/services/web/playwright-types.js +1 -0
- package/dist/services/web/snapshot-pruner.d.ts +2 -23
- package/dist/services/web/snapshot-pruner.js +8 -3
- package/dist/services/web/web-daemon-service.js +1 -3
- package/dist/services/web/web-install-service.d.ts +3 -32
- package/dist/services/web/web-install-service.js +21 -100
- package/dist/services/web/web-install-types.d.ts +31 -0
- package/dist/services/web/web-install-types.js +13 -0
- package/dist/services/web/web-login-profile.js +7 -5
- package/dist/services/web/web-protocol.js +3 -1
- package/dist/services/workflow/pipeline-verify-gate-support.js +63 -17
- package/dist/services/workflow/pipeline-verify-service.js +17 -6
- package/dist/services/workflow/plan-reader.js +5 -1
- package/dist/services/workflow/plan-refresher.js +20 -6
- package/dist/services/workflow/plan-trigger-detector.js +31 -8
- package/dist/services/workflow/provision-dispatch-node.js +8 -3
- package/dist/services/workflow/workflow-autonomous-resume-helpers.d.ts +3 -1
- package/dist/services/workflow/workflow-autonomous-resume-helpers.js +35 -144
- package/dist/services/workflow/workflow-autonomous-resume-validation.d.ts +16 -0
- package/dist/services/workflow/workflow-autonomous-resume-validation.js +155 -0
- package/dist/services/workflow/workflow-autonomous-service.js +25 -13
- package/dist/services/workflow/workflow-graph-store-helpers.d.ts +51 -0
- package/dist/services/workflow/workflow-graph-store-helpers.js +111 -0
- package/dist/services/workflow/workflow-graph-store.d.ts +2 -35
- package/dist/services/workflow/workflow-graph-store.js +30 -107
- package/dist/services/workflow/workflow-graph-types.js +3 -3
- package/dist/services/workflow/workflow-inflight-probe.js +14 -7
- package/dist/services/workflow/workflow-loader.js +5 -1
- package/dist/services/workflow/workflow-node-lifecycle.js +22 -21
- package/dist/services/workflow/workflow-presence-lifecycle-types.d.ts +50 -0
- package/dist/services/workflow/workflow-presence-lifecycle-types.js +1 -0
- package/dist/services/workflow/workflow-presence-lifecycle.d.ts +2 -42
- package/dist/services/workflow/workflow-presence-lifecycle.js +19 -21
- package/dist/services/workflow/workflow-router-service.js +169 -27
- package/dist/services/workflow/workflow-skip-service.js +14 -4
- package/dist/services/workflow/workflow-spec-builders.d.ts +15 -0
- package/dist/services/workflow/workflow-spec-builders.js +121 -0
- package/dist/services/workflow/workflow-spec.d.ts +7 -6
- package/dist/services/workflow/workflow-spec.js +22 -116
- package/dist/services/workflow/workflow-state-store.js +2 -1
- package/dist/services/workspace/migrate-1-4-1-service.js +80 -14
- package/dist/services/workspace/migrate-service.js +66 -16
- package/dist/services/workspace/reconcile-migrate.js +6 -2
- package/dist/services/workspace/reconcile-service.js +37 -16
- package/dist/services/workspace/workspace-claude-settings-materializer.js +7 -5
- package/dist/services/workspace/workspace-clean-service.js +4 -1
- package/dist/services/workspace/workspace-service.js +11 -3
- package/dist/services/workspace/workspace-state-service.js +1 -1
- package/dist/services/worktree/git-worktree-parser.js +13 -3
- package/dist/services/worktree/host-worktree-reconciler.js +8 -4
- package/dist/services/worktree/long-path-cleanup.js +23 -6
- package/dist/services/worktree/worktree-gc-guard.js +3 -1
- package/dist/services/worktree/worktree-lease-types.d.ts +53 -0
- package/dist/services/worktree/worktree-lease-types.js +10 -0
- package/dist/services/worktree/worktree-lease.d.ts +2 -44
- package/dist/shared/array-guards.d.ts +30 -0
- package/dist/shared/array-guards.js +32 -0
- package/dist/shared/format-md-compact-internals.d.ts +26 -0
- package/dist/shared/format-md-compact-internals.js +125 -0
- package/dist/shared/format-md-compact.js +1 -117
- package/dist/shared/fs-utils.js +2 -1
- package/dist/shared/incrementing-number.js +3 -3
- package/dist/shared/json-parse.d.ts +71 -0
- package/dist/shared/json-parse.js +32 -0
- package/dist/shared/json-schema-mini.js +3 -1
- package/dist/shared/path-safety.js +3 -1
- package/dist/shared/path-utils.d.ts +20 -0
- package/dist/shared/path-utils.js +26 -0
- package/dist/shared/planner-response.js +3 -3
- package/dist/shared/stale-policy.js +1 -3
- package/dist/skills/peaks-maker/index.js +11 -11
- package/package.json +31 -8
- package/scripts/clean-dist.mjs +1 -2
- package/scripts/copy-templates.mjs +2 -4
- package/scripts/install-skills.mjs +305 -125
- package/scripts/sync-version.mjs +25 -8
- package/scripts/watch.mjs +8 -2
- package/skills/peaks-code/SKILL.md +1 -1
|
@@ -107,7 +107,11 @@ const FRACTION_MAX = 1;
|
|
|
107
107
|
/** Upper bound of a sane percentage scale; above this the payload is not a percent. */
|
|
108
108
|
const PERCENT_SCALE_MAX = 100;
|
|
109
109
|
/** The three prompt-side components peaks-loop's own `rawTokens` sums. */
|
|
110
|
-
const USAGE_TOKEN_KEYS = [
|
|
110
|
+
const USAGE_TOKEN_KEYS = [
|
|
111
|
+
'input_tokens',
|
|
112
|
+
'cache_read_input_tokens',
|
|
113
|
+
'cache_creation_input_tokens'
|
|
114
|
+
];
|
|
111
115
|
function finiteNumber(value) {
|
|
112
116
|
return typeof value === 'number' && Number.isFinite(value) ? value : null;
|
|
113
117
|
}
|
|
@@ -284,7 +288,10 @@ export function writeHarnessWitness(input) {
|
|
|
284
288
|
if (!existsSync(dirname(path)))
|
|
285
289
|
return false;
|
|
286
290
|
if (witness.usedPercentage === null) {
|
|
287
|
-
const existing = readHarnessWitness({
|
|
291
|
+
const existing = readHarnessWitness({
|
|
292
|
+
projectRoot: input.projectRoot,
|
|
293
|
+
sessionId: input.sessionId
|
|
294
|
+
});
|
|
288
295
|
if (existing.kind === 'valid' && existing.witness.usedPercentage !== null)
|
|
289
296
|
return false;
|
|
290
297
|
}
|
|
@@ -356,8 +363,8 @@ export function readHarnessWitness(input) {
|
|
|
356
363
|
* ratio difference are the same number — see `compareHarnessWitness`.
|
|
357
364
|
*/
|
|
358
365
|
export function witnessToleranceTokens(input) {
|
|
359
|
-
return WITNESS_PERCENT_ROUNDING_FRACTION * input.windowTokens
|
|
360
|
-
|
|
366
|
+
return (WITNESS_PERCENT_ROUNDING_FRACTION * input.windowTokens +
|
|
367
|
+
WITNESS_NUMERATOR_FRACTION * input.usedTokens);
|
|
361
368
|
}
|
|
362
369
|
/**
|
|
363
370
|
* Whether this sample can support an `agree`.
|
|
@@ -382,7 +389,8 @@ export function witnessToleranceTokens(input) {
|
|
|
382
389
|
* the one answer that was honest there could not be produced there.
|
|
383
390
|
*/
|
|
384
391
|
function sampleSupportsAgreement(harnessPct, tolerance) {
|
|
385
|
-
const smallestGapSignal = (MIN_DETECTABLE_WINDOW_DIFFERENCE * Math.abs(harnessPct)) /
|
|
392
|
+
const smallestGapSignal = (MIN_DETECTABLE_WINDOW_DIFFERENCE * Math.abs(harnessPct)) /
|
|
393
|
+
(1 + MIN_DETECTABLE_WINDOW_DIFFERENCE);
|
|
386
394
|
return smallestGapSignal > 2 * tolerance;
|
|
387
395
|
}
|
|
388
396
|
/** Which of the three `absent` states applies, in the reader's own words. */
|
|
@@ -391,8 +399,8 @@ function absentReason(cause) {
|
|
|
391
399
|
return 'this session has no runtime directory yet, so nothing has been captured for it';
|
|
392
400
|
}
|
|
393
401
|
if (cause === 'unreadable') {
|
|
394
|
-
return 'a witness file exists for this session but could not be read as a record — the statusline DID '
|
|
395
|
-
|
|
402
|
+
return ('a witness file exists for this session but could not be read as a record — the statusline DID ' +
|
|
403
|
+
'render here, and its record is unreadable, malformed, or not the shape this reader expects');
|
|
396
404
|
}
|
|
397
405
|
return 'no render has been recorded for this session — the statusline has not rendered through peaks-loop here';
|
|
398
406
|
}
|
|
@@ -402,12 +410,12 @@ function unusableReason(witness) {
|
|
|
402
410
|
return 'the payload carried no `used_percentage`, so this render recorded nothing to compare';
|
|
403
411
|
}
|
|
404
412
|
if (witness.usedPercentageUnit === 'unestablished') {
|
|
405
|
-
return `the payload reported used_percentage ${witness.usedPercentageRaw} and carried no token snapshot `
|
|
406
|
-
|
|
407
|
-
|
|
413
|
+
return (`the payload reported used_percentage ${witness.usedPercentageRaw} and carried no token snapshot ` +
|
|
414
|
+
'to settle whether that is a fraction or a percent; the raw value is recorded, and no comparison is ' +
|
|
415
|
+
'made from it');
|
|
408
416
|
}
|
|
409
|
-
return `the payload reported used_percentage ${witness.usedPercentageRaw}, which is on neither scale `
|
|
410
|
-
|
|
417
|
+
return (`the payload reported used_percentage ${witness.usedPercentageRaw}, which is on neither scale ` +
|
|
418
|
+
'(a 0..1 fraction or a 0..100 percent); the raw value is recorded, and no comparison is made from it');
|
|
411
419
|
}
|
|
412
420
|
/**
|
|
413
421
|
* Compare peaks-loop's ratio with the harness's own percentage.
|
|
@@ -480,9 +488,9 @@ export function compareHarnessWitness(input) {
|
|
|
480
488
|
return {
|
|
481
489
|
...base,
|
|
482
490
|
verdict: 'unverifiable',
|
|
483
|
-
reason: `this witness was recorded under schema v${witness.schemaVersion} and this revision reads `
|
|
484
|
-
|
|
485
|
-
|
|
491
|
+
reason: `this witness was recorded under schema v${witness.schemaVersion} and this revision reads ` +
|
|
492
|
+
`v${WITNESS_SCHEMA_VERSION}, which do not agree on what the recorded percentage means; it is not ` +
|
|
493
|
+
'compared, and the next render replaces it',
|
|
486
494
|
harnessPct: null,
|
|
487
495
|
deviation: null,
|
|
488
496
|
residual: null,
|
|
@@ -517,7 +525,10 @@ export function compareHarnessWitness(input) {
|
|
|
517
525
|
tolerance: null
|
|
518
526
|
};
|
|
519
527
|
}
|
|
520
|
-
if (windowTokens === null ||
|
|
528
|
+
if (windowTokens === null ||
|
|
529
|
+
windowTokens <= 0 ||
|
|
530
|
+
peaksTokens === null ||
|
|
531
|
+
witnessTokens === null) {
|
|
521
532
|
return {
|
|
522
533
|
...base,
|
|
523
534
|
verdict: 'unverifiable',
|
|
@@ -539,7 +550,15 @@ export function compareHarnessWitness(input) {
|
|
|
539
550
|
// `disagree` only claims that SOME difference exists, and a residual past the
|
|
540
551
|
// budget is exactly that claim — sound at any ratio, any witness age.
|
|
541
552
|
if (Math.abs(residual) > tolerance) {
|
|
542
|
-
return {
|
|
553
|
+
return {
|
|
554
|
+
...base,
|
|
555
|
+
verdict: 'disagree',
|
|
556
|
+
reason: null,
|
|
557
|
+
harnessPct,
|
|
558
|
+
deviation,
|
|
559
|
+
residual,
|
|
560
|
+
tolerance
|
|
561
|
+
};
|
|
543
562
|
}
|
|
544
563
|
// `agree` claims there is no difference, which needs the sample to be sharp
|
|
545
564
|
// enough to support it — see `sampleSupportsAgreement`.
|
|
@@ -576,13 +595,13 @@ export function describeHarnessWitness(comparison) {
|
|
|
576
595
|
const readAs = comparison.witnessPercentageUnit === null
|
|
577
596
|
? ''
|
|
578
597
|
: ` (raw ${comparison.witnessRawPercentage}, read as a ${comparison.witnessPercentageUnit})`;
|
|
579
|
-
return `Harness context witness disagrees: the harness reports ${pct(comparison.harnessPct ?? 0)} used${readAs}, `
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
598
|
+
return (`Harness context witness disagrees: the harness reports ${pct(comparison.harnessPct ?? 0)} used${readAs}, ` +
|
|
599
|
+
`peaks-loop computes ${pct(comparison.peaksRatio)} (deviation ${pct(Math.abs(comparison.deviation ?? 0))}` +
|
|
600
|
+
`${skew === null ? '' : `, of which the measured sampling skew explains ${pct(Math.abs(skew))}`}, ` +
|
|
601
|
+
`leaving ${pct(Math.abs(comparison.residual ?? 0))} against a budget of ${pct(comparison.tolerance ?? 0)}). ` +
|
|
602
|
+
'The two ratios do not share a denominator: ' +
|
|
603
|
+
"peaks-loop's configured auto-compact window and the harness's effective auto-compact window are " +
|
|
604
|
+
'different numbers. Nothing is blocked.');
|
|
586
605
|
}
|
|
587
606
|
/** Convenience for the CLI: read + compare in one call. */
|
|
588
607
|
export function readAndCompareHarnessWitness(input) {
|
|
@@ -99,7 +99,7 @@ export const HARNESS_WINDOW_MAX_TOKENS = 1_000_000;
|
|
|
99
99
|
* `null` (absent / unparseable) is NOT in band — there is no window at all.
|
|
100
100
|
*/
|
|
101
101
|
export function isHarnessWindowInRange(tokens) {
|
|
102
|
-
return tokens !== null && tokens >= HARNESS_WINDOW_MIN_TOKENS && tokens <= HARNESS_WINDOW_MAX_TOKENS;
|
|
102
|
+
return (tokens !== null && tokens >= HARNESS_WINDOW_MIN_TOKENS && tokens <= HARNESS_WINDOW_MAX_TOKENS);
|
|
103
103
|
}
|
|
104
104
|
/**
|
|
105
105
|
* The BAND SENTENCE, in one place: both the write refusal and the read
|
|
@@ -248,7 +248,9 @@ function harnessWindowConflictClause(result) {
|
|
|
248
248
|
* different window and the disk keeps claiming `500k` on every probe after it.
|
|
249
249
|
*/
|
|
250
250
|
function unreadableWindowValueClause(result) {
|
|
251
|
-
if (result.action !== 'skipped' ||
|
|
251
|
+
if (result.action !== 'skipped' ||
|
|
252
|
+
result.previousTokens !== null ||
|
|
253
|
+
result.previousRawValue === undefined)
|
|
252
254
|
return '';
|
|
253
255
|
const raw = JSON.stringify(result.previousRawValue);
|
|
254
256
|
return ` The value in ${result.settingsPath} is ${raw}, which is not a plain token count: peaks-loop cannot read a window from it, so it resolved this ratio against its own fallback while the file keeps saying ${raw}. peaks-loop cannot align the two without overwriting a value it did not write — set the value to a plain token count, or run \`peaks compact harness-window --reset\` to remove the key and let the next probe write peaks-loop's number.`;
|
|
@@ -345,16 +347,34 @@ export function readHarnessWindow(input) {
|
|
|
345
347
|
const fromEnv = input.env?.[input.location.envVar];
|
|
346
348
|
if (fromEnv !== undefined) {
|
|
347
349
|
return {
|
|
348
|
-
tokens: parseHarnessWindowTokens(fromEnv),
|
|
349
|
-
|
|
350
|
+
tokens: parseHarnessWindowTokens(fromEnv),
|
|
351
|
+
raw: fromEnv,
|
|
352
|
+
source: 'process-env',
|
|
353
|
+
optedOut,
|
|
354
|
+
peakWritten,
|
|
355
|
+
fileTokens,
|
|
356
|
+
fileRaw
|
|
350
357
|
};
|
|
351
358
|
}
|
|
352
359
|
if (fileRaw !== undefined) {
|
|
353
|
-
return {
|
|
360
|
+
return {
|
|
361
|
+
tokens: fileTokens,
|
|
362
|
+
raw: fileRaw,
|
|
363
|
+
source: 'settings-file',
|
|
364
|
+
optedOut,
|
|
365
|
+
peakWritten,
|
|
366
|
+
fileTokens,
|
|
367
|
+
fileRaw
|
|
368
|
+
};
|
|
354
369
|
}
|
|
355
370
|
return {
|
|
356
|
-
tokens: null,
|
|
357
|
-
|
|
371
|
+
tokens: null,
|
|
372
|
+
raw: undefined,
|
|
373
|
+
source: null,
|
|
374
|
+
optedOut,
|
|
375
|
+
peakWritten: false,
|
|
376
|
+
fileTokens: null,
|
|
377
|
+
fileRaw: undefined
|
|
358
378
|
};
|
|
359
379
|
}
|
|
360
380
|
/**
|
|
@@ -8,7 +8,8 @@ export function isIdeKind(value) {
|
|
|
8
8
|
return IDE_KINDS.includes(value);
|
|
9
9
|
}
|
|
10
10
|
export function detectIdeFromEnv(env = process.env) {
|
|
11
|
-
if (typeof env['CLAUDE_CODE_ENTRYPOINT'] === 'string' &&
|
|
11
|
+
if (typeof env['CLAUDE_CODE_ENTRYPOINT'] === 'string' &&
|
|
12
|
+
env['CLAUDE_CODE_ENTRYPOINT'].length > 0) {
|
|
12
13
|
return 'claude-code';
|
|
13
14
|
}
|
|
14
15
|
if (typeof env['CLAUDE_SESSION_ID'] === 'string' && env['CLAUDE_SESSION_ID'].length > 0) {
|
|
@@ -4,4 +4,4 @@ export { tokenize } from './tokenizer.js';
|
|
|
4
4
|
export { render, type RenderInput } from './renderer.js';
|
|
5
5
|
export { ContextJsonSchema } from './context-schema.js';
|
|
6
6
|
export { buildContext, type BuildInput } from './context-builder.js';
|
|
7
|
-
export type { ContextJson, Audience, DepsMode, FileKind, CollectedFile, GitStatus, MemoryEntry, DepInfo, DocSection, FetchedDoc, SkippedDoc, TokenizedItem, CollectorOutput, DocRetrieverOutput, TokenizerOutput, RendererOutput
|
|
7
|
+
export type { ContextJson, Audience, DepsMode, FileKind, CollectedFile, GitStatus, MemoryEntry, DepInfo, DocSection, FetchedDoc, SkippedDoc, TokenizedItem, CollectorOutput, DocRetrieverOutput, TokenizerOutput, RendererOutput } from './types.js';
|
|
@@ -45,13 +45,9 @@ export class MemoryIndexReader {
|
|
|
45
45
|
const raw = JSON.parse(readFileSync(indexPath, 'utf8'));
|
|
46
46
|
const tiers = {
|
|
47
47
|
hot: flattenBucket(raw, 'hot'),
|
|
48
|
-
warm: flattenBucket(raw, 'warm')
|
|
48
|
+
warm: flattenBucket(raw, 'warm')
|
|
49
49
|
};
|
|
50
|
-
const entries = [
|
|
51
|
-
...tiers.hot,
|
|
52
|
-
...tiers.warm,
|
|
53
|
-
...flattenBucket(raw, 'cold'),
|
|
54
|
-
];
|
|
50
|
+
const entries = [...tiers.hot, ...tiers.warm, ...flattenBucket(raw, 'cold')];
|
|
55
51
|
this.cache = { mtimeMs, entries, tiers };
|
|
56
52
|
return this.cache;
|
|
57
53
|
}
|
|
@@ -67,9 +63,7 @@ function bucketOf(raw, layer) {
|
|
|
67
63
|
if (!raw || typeof raw !== 'object')
|
|
68
64
|
return null;
|
|
69
65
|
const bucket = raw[layer];
|
|
70
|
-
return bucket && typeof bucket === 'object'
|
|
71
|
-
? bucket
|
|
72
|
-
: null;
|
|
66
|
+
return bucket && typeof bucket === 'object' ? bucket : null;
|
|
73
67
|
}
|
|
74
68
|
function flattenBucket(raw, layer) {
|
|
75
69
|
const bucket = bucketOf(raw, layer);
|
|
@@ -7,7 +7,7 @@ const DEFAULTS = Object.freeze({
|
|
|
7
7
|
warmItemCap: 4,
|
|
8
8
|
warmMinTokenHits: 1,
|
|
9
9
|
selectionTimeBudgetMs: 200,
|
|
10
|
-
includeBodies: false
|
|
10
|
+
includeBodies: false
|
|
11
11
|
});
|
|
12
12
|
const LIST_CAP_MIN = 1;
|
|
13
13
|
const LIST_CAP_MAX = 50;
|
|
@@ -18,9 +18,7 @@ function asFiniteInt(value, fallback) {
|
|
|
18
18
|
: fallback;
|
|
19
19
|
}
|
|
20
20
|
function asFiniteNumber(value, fallback) {
|
|
21
|
-
return typeof value === 'number' && Number.isFinite(value) && value >= 0
|
|
22
|
-
? value
|
|
23
|
-
: fallback;
|
|
21
|
+
return typeof value === 'number' && Number.isFinite(value) && value >= 0 ? value : fallback;
|
|
24
22
|
}
|
|
25
23
|
function clamp(value, min, max) {
|
|
26
24
|
return Math.min(max, Math.max(min, value));
|
|
@@ -50,6 +48,6 @@ export function resolveMemoryPreflightConfig(prefs) {
|
|
|
50
48
|
warmItemCap: clamp(asFiniteInt(m.warmItemCap, DEFAULTS.warmItemCap), 0, ITEM_CAP_MAX),
|
|
51
49
|
warmMinTokenHits: clamp(asFiniteInt(m.warmMinTokenHits, DEFAULTS.warmMinTokenHits), 1, ITEM_CAP_MAX),
|
|
52
50
|
selectionTimeBudgetMs: clamp(asFiniteNumber(m.selectionTimeBudgetMs, DEFAULTS.selectionTimeBudgetMs), 0, 10_000),
|
|
53
|
-
includeBodies: m.includeBodies === true ? true : DEFAULTS.includeBodies
|
|
51
|
+
includeBodies: m.includeBodies === true ? true : DEFAULTS.includeBodies
|
|
54
52
|
};
|
|
55
53
|
}
|
|
@@ -1,24 +1,6 @@
|
|
|
1
1
|
import { type MemoryPreflightPrefsInput } from './memory-preflight-config.js';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
block?: string;
|
|
5
|
-
/** Back-compat: total items emitted (hot + warm). */
|
|
6
|
-
feedbackListItems?: number;
|
|
7
|
-
cachedItemCount?: number;
|
|
8
|
-
reason?: string;
|
|
9
|
-
truncated?: boolean | undefined;
|
|
10
|
-
droppedCount?: number | undefined;
|
|
11
|
-
/** Slice 2026-09-09: hot items emitted. */
|
|
12
|
-
hotSelected?: number | undefined;
|
|
13
|
-
/** Slice 2026-09-09: warm items emitted. */
|
|
14
|
-
warmSelected?: number | undefined;
|
|
15
|
-
/** Slice 2026-09-09: bytes of the emitted block (utf8). */
|
|
16
|
-
bytesEmitted?: number | undefined;
|
|
17
|
-
/** Slice 2026-09-09: true when ANY budget (items / bytes / time) cut content. */
|
|
18
|
-
budgetTruncated?: boolean | undefined;
|
|
19
|
-
/** Slice 2026-09-09: true when the soft selection time budget was hit. */
|
|
20
|
-
timedOut?: boolean | undefined;
|
|
21
|
-
}
|
|
2
|
+
import { type MemoryPreflightResult } from './memory-preflight-support.js';
|
|
3
|
+
export type { MemoryPreflightResult };
|
|
22
4
|
export declare class MemoryPreflightService {
|
|
23
5
|
private readonly reader;
|
|
24
6
|
private readonly config;
|
|
@@ -28,19 +28,41 @@
|
|
|
28
28
|
import { performance } from 'node:perf_hooks';
|
|
29
29
|
import { fuzzyMatchWithKey } from '../fuzzy-matching/fuzzy-match-service.js';
|
|
30
30
|
import { MemoryIndexReader } from './memory-index-reader.js';
|
|
31
|
-
import { resolveMemoryPreflightConfig
|
|
31
|
+
import { resolveMemoryPreflightConfig } from './memory-preflight-config.js';
|
|
32
|
+
import { MIN_TOKEN_LENGTH, countItemsInBlock, renderEntry, tokenHits } from './memory-preflight-support.js';
|
|
32
33
|
/** Function words carry no selection signal. */
|
|
33
34
|
const STOPWORDS = new Set([
|
|
34
|
-
'the',
|
|
35
|
-
'
|
|
36
|
-
'
|
|
35
|
+
'the',
|
|
36
|
+
'and',
|
|
37
|
+
'for',
|
|
38
|
+
'with',
|
|
39
|
+
'from',
|
|
40
|
+
'that',
|
|
41
|
+
'this',
|
|
42
|
+
'not',
|
|
43
|
+
'are',
|
|
44
|
+
'was',
|
|
45
|
+
'but',
|
|
46
|
+
'you',
|
|
47
|
+
'all',
|
|
48
|
+
'any',
|
|
49
|
+
'can',
|
|
50
|
+
'has',
|
|
51
|
+
'its',
|
|
52
|
+
'our',
|
|
53
|
+
'out',
|
|
54
|
+
'use',
|
|
55
|
+
'via',
|
|
56
|
+
'per',
|
|
57
|
+
'into',
|
|
58
|
+
'when',
|
|
59
|
+
'then',
|
|
60
|
+
'than',
|
|
61
|
+
'they',
|
|
62
|
+
'their',
|
|
63
|
+
'should',
|
|
64
|
+
'must'
|
|
37
65
|
]);
|
|
38
|
-
/**
|
|
39
|
-
* Tokens shorter than 4 chars are too promiscuous for literal containment
|
|
40
|
-
* ("add" is a substring of "padding"), so they rank but do not gate.
|
|
41
|
-
*/
|
|
42
|
-
const MIN_TOKEN_LENGTH = 4;
|
|
43
|
-
const CJK_RE = /[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}]/u;
|
|
44
66
|
function queryTokens(query) {
|
|
45
67
|
const seen = new Set();
|
|
46
68
|
const out = [];
|
|
@@ -52,32 +74,6 @@ function queryTokens(query) {
|
|
|
52
74
|
}
|
|
53
75
|
return out;
|
|
54
76
|
}
|
|
55
|
-
/**
|
|
56
|
-
* Absolute relevance gate: does the token literally occur in the entry?
|
|
57
|
-
*
|
|
58
|
-
* The fuzzy kernel's score is normalized per batch (best match = 1.0), so
|
|
59
|
-
* it cannot distinguish a strong match from the best of a bad lot — an
|
|
60
|
-
* absolute check is required for the warm gate. CJK titles have no word
|
|
61
|
-
* boundaries, so those tokens fall back to 2-char gram overlap.
|
|
62
|
-
*/
|
|
63
|
-
function tokenHits(text, tokens) {
|
|
64
|
-
let hits = 0;
|
|
65
|
-
for (const token of tokens) {
|
|
66
|
-
if (text.includes(token)) {
|
|
67
|
-
hits += 1;
|
|
68
|
-
continue;
|
|
69
|
-
}
|
|
70
|
-
if (!CJK_RE.test(token))
|
|
71
|
-
continue;
|
|
72
|
-
for (let i = 0; i + 2 <= token.length; i += 1) {
|
|
73
|
-
if (text.includes(token.slice(i, i + 2))) {
|
|
74
|
-
hits += 1;
|
|
75
|
-
break;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
return hits;
|
|
80
|
-
}
|
|
81
77
|
function truncateToCap(text, capBytes) {
|
|
82
78
|
if (Buffer.byteLength(text, 'utf8') <= capBytes) {
|
|
83
79
|
return { text, truncated: false };
|
|
@@ -114,7 +110,7 @@ export class MemoryPreflightService {
|
|
|
114
110
|
// Fail-soft: a selection failure must never block a dispatch.
|
|
115
111
|
return {
|
|
116
112
|
available: false,
|
|
117
|
-
reason: `SELECTION_ERROR: ${err.message ?? String(err)}
|
|
113
|
+
reason: `SELECTION_ERROR: ${err.message ?? String(err)}`
|
|
118
114
|
};
|
|
119
115
|
}
|
|
120
116
|
}
|
|
@@ -145,8 +141,7 @@ export class MemoryPreflightService {
|
|
|
145
141
|
for (const candidate of warmRanked) {
|
|
146
142
|
if (warmSelected.length >= this.config.warmItemCap)
|
|
147
143
|
break;
|
|
148
|
-
if (performance.now() - startedAt >=
|
|
149
|
-
this.config.selectionTimeBudgetMs) {
|
|
144
|
+
if (performance.now() - startedAt >= this.config.selectionTimeBudgetMs) {
|
|
150
145
|
timedOut = true;
|
|
151
146
|
break;
|
|
152
147
|
}
|
|
@@ -182,9 +177,7 @@ export class MemoryPreflightService {
|
|
|
182
177
|
const { text, truncated } = truncateToCap(composed, this.config.maxBytes);
|
|
183
178
|
const selectedCount = hotSelected.length + warmSelected.length;
|
|
184
179
|
const droppedByItemCap = hotRanked.length - hotSelected.length + (warmEligibleCount - warmSelected.length);
|
|
185
|
-
const droppedByBytes = truncated
|
|
186
|
-
? Math.max(0, selectedCount - countItemsInBlock(text))
|
|
187
|
-
: 0;
|
|
180
|
+
const droppedByBytes = truncated ? Math.max(0, selectedCount - countItemsInBlock(text)) : 0;
|
|
188
181
|
const droppedCount = droppedByItemCap + droppedByBytes;
|
|
189
182
|
return {
|
|
190
183
|
available: true,
|
|
@@ -197,7 +190,7 @@ export class MemoryPreflightService {
|
|
|
197
190
|
budgetTruncated: truncated || droppedByItemCap > 0 || timedOut,
|
|
198
191
|
timedOut,
|
|
199
192
|
truncated,
|
|
200
|
-
droppedCount: droppedCount > 0 ? droppedCount : undefined
|
|
193
|
+
droppedCount: droppedCount > 0 ? droppedCount : undefined
|
|
201
194
|
};
|
|
202
195
|
}
|
|
203
196
|
}
|
|
@@ -239,7 +232,7 @@ function rankByRelevance(query, entries) {
|
|
|
239
232
|
const matches = fuzzyMatchWithKey(token, entries, {
|
|
240
233
|
keyFn: (e) => `${e.name} ${e.description}`,
|
|
241
234
|
limit: entries.length,
|
|
242
|
-
caseSensitive: false
|
|
235
|
+
caseSensitive: false
|
|
243
236
|
});
|
|
244
237
|
for (const match of matches) {
|
|
245
238
|
accumulated.set(match.item, (accumulated.get(match.item) ?? 0) + match.score);
|
|
@@ -250,27 +243,3 @@ function rankByRelevance(query, entries) {
|
|
|
250
243
|
.map((entry) => ({ entry, score: accumulated.get(entry) ?? 0 }))
|
|
251
244
|
.sort((a, b) => b.score - a.score);
|
|
252
245
|
}
|
|
253
|
-
function renderEntry(entry) {
|
|
254
|
-
return `- * ${entry.name}\n Path: ${entry.sourcePath}\n One-line: ${summarize(entry.description)}`;
|
|
255
|
-
}
|
|
256
|
-
function summarize(description) {
|
|
257
|
-
// Drop the <!-- peaks-feedback-promoted: layer=A --> marker, take the next 1 line.
|
|
258
|
-
const cleaned = description.replace(/<!--[^>]*-->/g, '').trim();
|
|
259
|
-
return cleaned.split('\n')[0] ?? cleaned;
|
|
260
|
-
}
|
|
261
|
-
function countItemsInBlock(text) {
|
|
262
|
-
// Count `- * ` markers ONLY in the list portion (between the
|
|
263
|
-
// `## Project memory relevant to this task` header and the
|
|
264
|
-
// `## Requested memory details:` sub-section, if present). Memo
|
|
265
|
-
// bodies appended under `## Requested memory details:` may
|
|
266
|
-
// legitimately contain their own `- * ` markdown bullets, which
|
|
267
|
-
// would otherwise inflate the count and produce a wrong
|
|
268
|
-
// `droppedCount` in the truncated case.
|
|
269
|
-
const headerEnd = text.indexOf('\n## ');
|
|
270
|
-
if (headerEnd === -1) {
|
|
271
|
-
return (text.match(/- \* /g) ?? []).length;
|
|
272
|
-
}
|
|
273
|
-
const tailStart = text.indexOf('\n## Requested memory details:', headerEnd + 1);
|
|
274
|
-
const listEnd = tailStart === -1 ? text.length : tailStart;
|
|
275
|
-
return (text.slice(0, listEnd).match(/- \* /g) ?? []).length;
|
|
276
|
-
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Declarations extracted from `memory-preflight-service.ts` by the b1
|
|
3
|
+
* file-size campaign: the result/ranking types, the token/CJK constants,
|
|
4
|
+
* and the pure selection helpers (token gate, entry renderer, one-line
|
|
5
|
+
* summariser, block item counter). The service re-exports the public type
|
|
6
|
+
* and imports the helpers back, so importers keep the original path.
|
|
7
|
+
*/
|
|
8
|
+
import type { MemoryIndexEntry } from '../memory/memory-search-service.js';
|
|
9
|
+
export interface MemoryPreflightResult {
|
|
10
|
+
available: boolean;
|
|
11
|
+
block?: string;
|
|
12
|
+
/** Back-compat: total items emitted (hot + warm). */
|
|
13
|
+
feedbackListItems?: number;
|
|
14
|
+
cachedItemCount?: number;
|
|
15
|
+
reason?: string;
|
|
16
|
+
truncated?: boolean | undefined;
|
|
17
|
+
droppedCount?: number | undefined;
|
|
18
|
+
/** Slice 2026-09-09: hot items emitted. */
|
|
19
|
+
hotSelected?: number | undefined;
|
|
20
|
+
/** Slice 2026-09-09: warm items emitted. */
|
|
21
|
+
warmSelected?: number | undefined;
|
|
22
|
+
/** Slice 2026-09-09: bytes of the emitted block (utf8). */
|
|
23
|
+
bytesEmitted?: number | undefined;
|
|
24
|
+
/** Slice 2026-09-09: true when ANY budget (items / bytes / time) cut content. */
|
|
25
|
+
budgetTruncated?: boolean | undefined;
|
|
26
|
+
/** Slice 2026-09-09: true when the soft selection time budget was hit. */
|
|
27
|
+
timedOut?: boolean | undefined;
|
|
28
|
+
}
|
|
29
|
+
export interface RankedEntry {
|
|
30
|
+
entry: MemoryIndexEntry;
|
|
31
|
+
score: number;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Tokens shorter than 4 chars are too promiscuous for literal containment
|
|
35
|
+
* ("add" is a substring of "padding"), so they rank but do not gate.
|
|
36
|
+
*/
|
|
37
|
+
export declare const MIN_TOKEN_LENGTH = 4;
|
|
38
|
+
/**
|
|
39
|
+
* Absolute relevance gate: does the token literally occur in the entry?
|
|
40
|
+
*
|
|
41
|
+
* The fuzzy kernel's score is normalized per batch (best match = 1.0), so
|
|
42
|
+
* it cannot distinguish a strong match from the best of a bad lot — an
|
|
43
|
+
* absolute check is required for the warm gate. CJK titles have no word
|
|
44
|
+
* boundaries, so those tokens fall back to 2-char gram overlap.
|
|
45
|
+
*/
|
|
46
|
+
export declare function tokenHits(text: string, tokens: string[]): number;
|
|
47
|
+
export declare function renderEntry(entry: MemoryIndexEntry): string;
|
|
48
|
+
export declare function countItemsInBlock(text: string): number;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tokens shorter than 4 chars are too promiscuous for literal containment
|
|
3
|
+
* ("add" is a substring of "padding"), so they rank but do not gate.
|
|
4
|
+
*/
|
|
5
|
+
export const MIN_TOKEN_LENGTH = 4;
|
|
6
|
+
const CJK_RE = /[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}]/u;
|
|
7
|
+
/**
|
|
8
|
+
* Absolute relevance gate: does the token literally occur in the entry?
|
|
9
|
+
*
|
|
10
|
+
* The fuzzy kernel's score is normalized per batch (best match = 1.0), so
|
|
11
|
+
* it cannot distinguish a strong match from the best of a bad lot — an
|
|
12
|
+
* absolute check is required for the warm gate. CJK titles have no word
|
|
13
|
+
* boundaries, so those tokens fall back to 2-char gram overlap.
|
|
14
|
+
*/
|
|
15
|
+
export function tokenHits(text, tokens) {
|
|
16
|
+
let hits = 0;
|
|
17
|
+
for (const token of tokens) {
|
|
18
|
+
if (text.includes(token)) {
|
|
19
|
+
hits += 1;
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
if (!CJK_RE.test(token))
|
|
23
|
+
continue;
|
|
24
|
+
for (let i = 0; i + 2 <= token.length; i += 1) {
|
|
25
|
+
if (text.includes(token.slice(i, i + 2))) {
|
|
26
|
+
hits += 1;
|
|
27
|
+
break;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return hits;
|
|
32
|
+
}
|
|
33
|
+
export function renderEntry(entry) {
|
|
34
|
+
return `- * ${entry.name}\n Path: ${entry.sourcePath}\n One-line: ${summarize(entry.description)}`;
|
|
35
|
+
}
|
|
36
|
+
function summarize(description) {
|
|
37
|
+
// Drop the <!-- peaks-feedback-promoted: layer=A --> marker, take the next 1 line.
|
|
38
|
+
const cleaned = description.replace(/<!--[^>]*-->/g, '').trim();
|
|
39
|
+
return cleaned.split('\n')[0] ?? cleaned;
|
|
40
|
+
}
|
|
41
|
+
export function countItemsInBlock(text) {
|
|
42
|
+
// Count `- * ` markers ONLY in the list portion (between the
|
|
43
|
+
// `## Project memory relevant to this task` header and the
|
|
44
|
+
// `## Requested memory details:` sub-section, if present). Memo
|
|
45
|
+
// bodies appended under `## Requested memory details:` may
|
|
46
|
+
// legitimately contain their own `- * ` markdown bullets, which
|
|
47
|
+
// would otherwise inflate the count and produce a wrong
|
|
48
|
+
// `droppedCount` in the truncated case.
|
|
49
|
+
const headerEnd = text.indexOf('\n## ');
|
|
50
|
+
if (headerEnd === -1) {
|
|
51
|
+
return (text.match(/- \* /g) ?? []).length;
|
|
52
|
+
}
|
|
53
|
+
const tailStart = text.indexOf('\n## Requested memory details:', headerEnd + 1);
|
|
54
|
+
const listEnd = tailStart === -1 ? text.length : tailStart;
|
|
55
|
+
return (text.slice(0, listEnd).match(/- \* /g) ?? []).length;
|
|
56
|
+
}
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
import { readdirSync, statSync } from 'node:fs';
|
|
64
64
|
import { join } from 'node:path';
|
|
65
65
|
import { readJobShapeDecision } from '../code/job-shape-decision.js';
|
|
66
|
-
import { tryReadJobProgress } from '../job/job-progress-store.js';
|
|
66
|
+
import { describeNextSlice, tryReadJobProgress } from '../job/job-progress-store.js';
|
|
67
67
|
import { getSessionIdCanonical } from '../session/session-manager.js';
|
|
68
68
|
/**
|
|
69
69
|
* Hard ceiling on the card's size, in UTF-8 bytes.
|
|
@@ -110,7 +110,7 @@ export const POST_COMPACT_REINJECTION_BYTE_BUDGET = 3072;
|
|
|
110
110
|
export const AGENT_RUNTIME_RULES = Object.freeze([
|
|
111
111
|
'CLI: run `node --import tsx src/cli/index.ts <cmd>`, never `pnpm exec tsx` — on Windows the latter truncates any argument at its first newline.',
|
|
112
112
|
'Test scope: one file or pattern per run; the full suite requires PEAKS_FULL_TEST=1.',
|
|
113
|
-
|
|
113
|
+
"Exit codes: never read a test result through a pipe (`| tail` reports tail's status); read ${PIPESTATUS[0]}.",
|
|
114
114
|
'Never write `.claude/settings.local.json` from a slice — reproduce against a temp project copy via `--project <tmpdir>`.',
|
|
115
115
|
'Git: commit / push policy is per-dispatch and is NOT inherited from this card — re-read the dispatch record before any state-mutating git command.',
|
|
116
116
|
'No interactive questions: decide, act, and record the decision in the artifact.'
|
|
@@ -404,7 +404,7 @@ function buildBlocks(facts) {
|
|
|
404
404
|
// Rank 3 — next action.
|
|
405
405
|
const next = [];
|
|
406
406
|
if (facts.progress !== null) {
|
|
407
|
-
next.push(`job ${facts.jobId ?? '?'}:
|
|
407
|
+
next.push(`job ${facts.jobId ?? '?'}: ${describeNextSlice(facts.progress, facts.jobId)}`);
|
|
408
408
|
}
|
|
409
409
|
else if (facts.isJob) {
|
|
410
410
|
next.push(`job ${facts.jobId ?? '?'}: no progress.json yet — resume at the first unfinished slice`);
|
|
@@ -13,8 +13,12 @@ export function render(input) {
|
|
|
13
13
|
const serialized = JSON.stringify({
|
|
14
14
|
goal: input.goal,
|
|
15
15
|
audience: input.audience,
|
|
16
|
-
docs: docs.map((d) => ({
|
|
17
|
-
|
|
16
|
+
docs: docs.map((d) => ({
|
|
17
|
+
dep: d.dep,
|
|
18
|
+
version: d.version,
|
|
19
|
+
excerpt: d.sections.map((s) => s.excerpt).join(' ')
|
|
20
|
+
})),
|
|
21
|
+
skipped: input.docRetriever.skipped
|
|
18
22
|
});
|
|
19
23
|
const sizeBytes = Buffer.byteLength(serialized, 'utf8');
|
|
20
24
|
const approxTokens = Math.ceil(sizeBytes / 4);
|
|
@@ -24,7 +28,7 @@ export function render(input) {
|
|
|
24
28
|
renderedAt: now().toISOString(),
|
|
25
29
|
sizeBytes,
|
|
26
30
|
truncated,
|
|
27
|
-
...(truncated ? { truncatedReason: 'doc_budget_exceeded' } : {})
|
|
31
|
+
...(truncated ? { truncatedReason: 'doc_budget_exceeded' } : {})
|
|
28
32
|
};
|
|
29
33
|
return Object.freeze(result);
|
|
30
34
|
}
|
|
@@ -10,7 +10,9 @@ function assertSafeSegment(value, name) {
|
|
|
10
10
|
}
|
|
11
11
|
function assertInside(base, target) {
|
|
12
12
|
const rel = relative(base, target);
|
|
13
|
-
if (rel === '..' ||
|
|
13
|
+
if (rel === '..' ||
|
|
14
|
+
rel.startsWith(`..${process.platform === 'win32' ? '\\' : '/'}`) ||
|
|
15
|
+
isAbsolute(rel)) {
|
|
14
16
|
throw new Error('Spill path must stay inside the session spill directory');
|
|
15
17
|
}
|
|
16
18
|
}
|
|
@@ -44,7 +44,7 @@ function clipName(name, maxChars) {
|
|
|
44
44
|
export function boundedNames(names) {
|
|
45
45
|
return {
|
|
46
46
|
count: names.length,
|
|
47
|
-
names: names.slice(0, SUMMARY_INITIAL_NAMES).map((n) => clipName(n, SUMMARY_NAME_MAX_CHARS))
|
|
47
|
+
names: names.slice(0, SUMMARY_INITIAL_NAMES).map((n) => clipName(n, SUMMARY_NAME_MAX_CHARS))
|
|
48
48
|
};
|
|
49
49
|
}
|
|
50
50
|
/**
|
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
export const CONTEXT_CAPACITY_DEFAULT_BYTES = 256 * 1024; // 256K
|
|
9
9
|
export const THRESHOLD_SOFT_WARN_RATIO = 0.5; // 50%
|
|
10
10
|
export const THRESHOLD_NEAR_LIMIT_RATIO = 0.75; // 75% — user red line
|
|
11
|
-
export const THRESHOLD_HARD_REJECT_RATIO = 0.
|
|
12
|
-
export const THRESHOLD_EMERGENCY_RATIO = 0.
|
|
11
|
+
export const THRESHOLD_HARD_REJECT_RATIO = 0.8; // 80%
|
|
12
|
+
export const THRESHOLD_EMERGENCY_RATIO = 0.9; // 90%
|
|
13
13
|
/**
|
|
14
14
|
* Compute the threshold tier for a given prompt size. Pure function
|
|
15
15
|
* (no IO, no side effects). The `capacityBytes` parameter lets callers
|