peaks-loop 4.0.53 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +85 -0
- package/README-en.md +16 -1
- package/README.md +15 -1
- package/config/eslint/.peaks-rules.cjs +158 -13
- package/config/eslint/tsconfig.lint.json +47 -0
- package/dist/cli/cli-envelope.d.ts +114 -0
- package/dist/cli/cli-envelope.js +85 -0
- package/dist/cli/cli-helpers.d.ts +1 -1
- package/dist/cli/cli-helpers.js +8 -4
- package/dist/cli/commands/_cli-error-envelope.js +1 -1
- package/dist/cli/commands/_register.js +85 -38
- package/dist/cli/commands/_super.js +40 -7
- package/dist/cli/commands/adapter-commands-s2a.js +8 -7
- package/dist/cli/commands/adapter-commands.d.ts +2 -2
- package/dist/cli/commands/adapter-commands.js +7 -8
- package/dist/cli/commands/api-diff-commands.js +5 -4
- package/dist/cli/commands/asset-commands.d.ts +2 -2
- package/dist/cli/commands/asset-commands.js +135 -132
- package/dist/cli/commands/audit-commands.d.ts +1 -1
- package/dist/cli/commands/audit-commands.js +75 -32
- package/dist/cli/commands/autonomous-swarm-commands.d.ts +1 -1
- package/dist/cli/commands/autonomous-swarm-commands.js +14 -8
- package/dist/cli/commands/baseline-commands.js +34 -9
- package/dist/cli/commands/bee-commands.d.ts +1 -1
- package/dist/cli/commands/bee-commands.js +18 -21
- package/dist/cli/commands/best-practice-scan-command.js +6 -34
- package/dist/cli/commands/best-practice-scan-helpers.d.ts +12 -0
- package/dist/cli/commands/best-practice-scan-helpers.js +37 -0
- package/dist/cli/commands/capability-commands.d.ts +1 -1
- package/dist/cli/commands/capability-commands.js +14 -4
- package/dist/cli/commands/capability-worker-config-sc-commands.d.ts +1 -1
- package/dist/cli/commands/changeset-commands.js +21 -18
- package/dist/cli/commands/code-gate-command.js +9 -2
- package/dist/cli/commands/code-job-shape-commands-read-job-shape.d.ts +15 -0
- package/dist/cli/commands/code-job-shape-commands-read-job-shape.js +70 -0
- package/dist/cli/commands/code-job-shape-commands.js +21 -45
- package/dist/cli/commands/code-mode-gate-commands.d.ts +15 -1
- package/dist/cli/commands/code-mode-gate-commands.js +19 -199
- package/dist/cli/commands/code-mode-gate-plan-command.d.ts +14 -0
- package/dist/cli/commands/code-mode-gate-plan-command.js +23 -0
- package/dist/cli/commands/code-mode-gate-should-pause-command.d.ts +24 -0
- package/dist/cli/commands/code-mode-gate-should-pause-command.js +137 -0
- package/dist/cli/commands/code-mode-gate-should-pause-envelope.d.ts +59 -0
- package/dist/cli/commands/code-mode-gate-should-pause-envelope.js +144 -0
- package/dist/cli/commands/code-orchestrator-can-do.js +4 -4
- package/dist/cli/commands/code-review-commands.js +18 -3
- package/dist/cli/commands/code-run-command.js +44 -7
- package/dist/cli/commands/code-runtime-commands.d.ts +17 -0
- package/dist/cli/commands/code-runtime-commands.js +105 -73
- package/dist/cli/commands/codegraph-commands.js +175 -11
- package/dist/cli/commands/codegraph-status-command.js +6 -2
- package/dist/cli/commands/compact-command.js +52 -26
- package/dist/cli/commands/complexity-commands.js +6 -7
- package/dist/cli/commands/config-commands.d.ts +1 -1
- package/dist/cli/commands/config-commands.js +33 -9
- package/dist/cli/commands/container-commands.js +39 -15
- package/dist/cli/commands/context-commands.d.ts +1 -1
- package/dist/cli/commands/context-commands.js +40 -13
- package/dist/cli/commands/core/artifacts-command.js +11 -3
- package/dist/cli/commands/core/binding-commands.js +9 -6
- package/dist/cli/commands/core/doctor-command.js +7 -4
- package/dist/cli/commands/core/memory-command.js +81 -22
- package/dist/cli/commands/core/proxy-command.js +3 -1
- package/dist/cli/commands/core/session-command.js +16 -8
- package/dist/cli/commands/core/skill-command.js +31 -16
- package/dist/cli/commands/core/standards-command.js +55 -13
- package/dist/cli/commands/cron-commands-actions.d.ts +43 -0
- package/dist/cli/commands/cron-commands-actions.js +128 -0
- package/dist/cli/commands/cron-commands-schedule.d.ts +86 -0
- package/dist/cli/commands/cron-commands-schedule.js +151 -0
- package/dist/cli/commands/cron-commands.d.ts +35 -32
- package/dist/cli/commands/cron-commands.js +167 -211
- package/dist/cli/commands/cron-scheduler-commands.js +40 -20
- package/dist/cli/commands/cron-scheduler-persist.d.ts +110 -0
- package/dist/cli/commands/cron-scheduler-persist.js +171 -0
- package/dist/cli/commands/dashboard-long-run.js +45 -14
- package/dist/cli/commands/dashboard-summary.js +15 -5
- package/dist/cli/commands/dispatch-commands.js +69 -34
- package/dist/cli/commands/dispatch-from-dag.js +9 -10
- package/dist/cli/commands/doc-commands.js +8 -9
- package/dist/cli/commands/doctor/invoke-from-code.js +1 -1
- package/dist/cli/commands/e2e-verify-env.d.ts +19 -0
- package/dist/cli/commands/e2e-verify-env.js +19 -0
- package/dist/cli/commands/e2e-verify.d.ts +3 -14
- package/dist/cli/commands/e2e-verify.js +49 -29
- package/dist/cli/commands/ecc-commands.d.ts +1 -1
- package/dist/cli/commands/ecc-commands.js +8 -17
- package/dist/cli/commands/evidence-commands.js +10 -6
- package/dist/cli/commands/evolution-commands.d.ts +2 -2
- package/dist/cli/commands/evolution-commands.js +109 -115
- package/dist/cli/commands/feedback-commands-helpers.d.ts +22 -0
- package/dist/cli/commands/feedback-commands-helpers.js +33 -0
- package/dist/cli/commands/feedback-commands.js +15 -38
- package/dist/cli/commands/final-review-commands.d.ts +1 -1
- package/dist/cli/commands/final-review-commands.js +24 -22
- package/dist/cli/commands/fixture-commands.d.ts +1 -1
- package/dist/cli/commands/fixture-commands.js +17 -6
- package/dist/cli/commands/fork-commands-sync-verify.d.ts +12 -0
- package/dist/cli/commands/fork-commands-sync-verify.js +72 -0
- package/dist/cli/commands/fork-commands.js +19 -51
- package/dist/cli/commands/fresh-context-commands.js +3 -1
- package/dist/cli/commands/gate-commands-enforce.d.ts +82 -0
- package/dist/cli/commands/gate-commands-enforce.js +210 -0
- package/dist/cli/commands/gate-commands.d.ts +1 -1
- package/dist/cli/commands/gate-commands.js +85 -205
- package/dist/cli/commands/governance-classify-contract-commands.d.ts +1 -1
- package/dist/cli/commands/governance-classify-contract-commands.js +28 -17
- package/dist/cli/commands/heartbeat-commands-action.d.ts +7 -0
- package/dist/cli/commands/heartbeat-commands-action.js +192 -0
- package/dist/cli/commands/heartbeat-commands-validation.d.ts +57 -0
- package/dist/cli/commands/heartbeat-commands-validation.js +120 -0
- package/dist/cli/commands/heartbeat-commands.d.ts +27 -6
- package/dist/cli/commands/heartbeat-commands.js +19 -198
- package/dist/cli/commands/hook-handle.d.ts +1 -1
- package/dist/cli/commands/hook-handle.js +46 -13
- package/dist/cli/commands/hooks-commands.d.ts +1 -1
- package/dist/cli/commands/hooks-commands.js +18 -6
- package/dist/cli/commands/ide-commands.d.ts +1 -1
- package/dist/cli/commands/ide-commands.js +5 -3
- package/dist/cli/commands/impact-commands.js +8 -2
- package/dist/cli/commands/job-add-slice-command.d.ts +43 -0
- package/dist/cli/commands/job-add-slice-command.js +151 -0
- package/dist/cli/commands/job-commands.d.ts +64 -0
- package/dist/cli/commands/job-commands.js +134 -63
- package/dist/cli/commands/lease-metrics-commands-support.d.ts +73 -0
- package/dist/cli/commands/lease-metrics-commands-support.js +67 -0
- package/dist/cli/commands/lease-metrics-commands.d.ts +3 -44
- package/dist/cli/commands/lease-metrics-commands.js +21 -61
- package/dist/cli/commands/lease-stats-commands.d.ts +1 -1
- package/dist/cli/commands/lease-stats-commands.js +9 -6
- package/dist/cli/commands/lint-commands.d.ts +9 -3
- package/dist/cli/commands/lint-commands.js +15 -8
- package/dist/cli/commands/log-commands.d.ts +1 -1
- package/dist/cli/commands/log-commands.js +8 -6
- package/dist/cli/commands/loop-commands.d.ts +1 -1
- package/dist/cli/commands/loop-commands.js +50 -50
- package/dist/cli/commands/loop-eval-commands.d.ts +1 -1
- package/dist/cli/commands/loop-eval-commands.js +101 -30
- package/dist/cli/commands/memory-commands.js +21 -13
- package/dist/cli/commands/migrate-1-4-1-command.js +1 -1
- package/dist/cli/commands/migrate-v2-10-to-v2-11-command.js +2 -2
- package/dist/cli/commands/mut-commands-helpers.d.ts +30 -0
- package/dist/cli/commands/mut-commands-helpers.js +43 -0
- package/dist/cli/commands/mut-commands.js +16 -58
- package/dist/cli/commands/observability-commands-queries.d.ts +37 -0
- package/dist/cli/commands/observability-commands-queries.js +113 -0
- package/dist/cli/commands/observability-commands.d.ts +1 -1
- package/dist/cli/commands/observability-commands.js +7 -92
- package/dist/cli/commands/openspec-commands.d.ts +1 -1
- package/dist/cli/commands/openspec-commands.js +20 -8
- package/dist/cli/commands/outer-cache-commands.js +18 -7
- package/dist/cli/commands/perf-audit-commands.d.ts +1 -1
- package/dist/cli/commands/perf-audit-commands.js +12 -7
- package/dist/cli/commands/perf-commands.d.ts +1 -1
- package/dist/cli/commands/perf-commands.js +5 -5
- package/dist/cli/commands/playwright-commands.d.ts +1 -1
- package/dist/cli/commands/playwright-commands.js +20 -8
- package/dist/cli/commands/polyrepo-commands.js +21 -19
- package/dist/cli/commands/prd-blocks-commands.js +1 -3
- package/dist/cli/commands/prd-commands.d.ts +1 -1
- package/dist/cli/commands/prd-commands.js +21 -2
- package/dist/cli/commands/preferences-commands.js +13 -12
- package/dist/cli/commands/primer-command.js +5 -5
- package/dist/cli/commands/project-commands.d.ts +1 -1
- package/dist/cli/commands/project-commands.js +33 -9
- package/dist/cli/commands/qa-business-review-commands.js +16 -12
- package/dist/cli/commands/qa-commands.d.ts +1 -1
- package/dist/cli/commands/qa-commands.js +3 -5
- package/dist/cli/commands/release-commands.d.ts +3 -1
- package/dist/cli/commands/release-commands.js +33 -22
- package/dist/cli/commands/request-commands.js +47 -30
- package/dist/cli/commands/request-format-helpers.js +1 -1
- package/dist/cli/commands/retrospective-commands.d.ts +18 -11
- package/dist/cli/commands/retrospective-commands.js +24 -173
- package/dist/cli/commands/retrospective-index-command.d.ts +26 -0
- package/dist/cli/commands/retrospective-index-command.js +99 -0
- package/dist/cli/commands/retrospective-project-root.d.ts +9 -0
- package/dist/cli/commands/retrospective-project-root.js +15 -0
- package/dist/cli/commands/retrospective-search-command.d.ts +27 -0
- package/dist/cli/commands/retrospective-search-command.js +97 -0
- package/dist/cli/commands/retrospective-show-command.d.ts +23 -0
- package/dist/cli/commands/retrospective-show-command.js +80 -0
- package/dist/cli/commands/reviewer-commands.d.ts +1 -1
- package/dist/cli/commands/role-commands.js +14 -9
- package/dist/cli/commands/runtime-commands.js +14 -7
- package/dist/cli/commands/sc-commands.d.ts +1 -1
- package/dist/cli/commands/sc-commands.js +39 -6
- package/dist/cli/commands/scan-commands.js +36 -13
- package/dist/cli/commands/security-audit-commands.d.ts +1 -1
- package/dist/cli/commands/security-audit-commands.js +12 -7
- package/dist/cli/commands/sediment-commands.d.ts +2 -2
- package/dist/cli/commands/sediment-commands.js +146 -139
- package/dist/cli/commands/session-24h-mode.js +15 -2
- package/dist/cli/commands/session-checkpoint-command.js +1 -1
- package/dist/cli/commands/session-migrate-skill-name.js +1 -1
- package/dist/cli/commands/shadcn-commands.d.ts +1 -1
- package/dist/cli/commands/shadcn-commands.js +3 -1
- package/dist/cli/commands/share-commands.js +38 -39
- package/dist/cli/commands/skill-conformance-commands.d.ts +1 -1
- package/dist/cli/commands/skill-conformance-commands.js +1 -1
- package/dist/cli/commands/skill-loop-engineering-readiness-commands.js +16 -17
- package/dist/cli/commands/skill-visibility.js +2 -2
- package/dist/cli/commands/slice-commands.d.ts +1 -1
- package/dist/cli/commands/slice-commands.js +36 -12
- package/dist/cli/commands/slice-integrate-commands.js +6 -7
- package/dist/cli/commands/slice-review-commands-helpers.d.ts +26 -0
- package/dist/cli/commands/slice-review-commands-helpers.js +26 -0
- package/dist/cli/commands/slice-review-commands.js +16 -24
- package/dist/cli/commands/smoke-commands-add-path.d.ts +14 -0
- package/dist/cli/commands/smoke-commands-add-path.js +39 -0
- package/dist/cli/commands/smoke-commands-define.d.ts +18 -0
- package/dist/cli/commands/smoke-commands-define.js +97 -0
- package/dist/cli/commands/smoke-commands-run.d.ts +18 -0
- package/dist/cli/commands/smoke-commands-run.js +119 -0
- package/dist/cli/commands/smoke-commands.d.ts +10 -1
- package/dist/cli/commands/smoke-commands.js +17 -179
- package/dist/cli/commands/sop-commands.d.ts +1 -1
- package/dist/cli/commands/sop-commands.js +38 -10
- package/dist/cli/commands/statusline-commands.d.ts +1 -1
- package/dist/cli/commands/statusline-commands.js +21 -10
- package/dist/cli/commands/sub-agent/detached.js +3 -3
- package/dist/cli/commands/sub-agent-dispatch-guard.d.ts +1 -1
- package/dist/cli/commands/sub-agent-shared.d.ts +23 -0
- package/dist/cli/commands/sub-agent-shared.js +40 -1
- package/dist/cli/commands/sub-agent-shutdown-commands.js +17 -9
- package/dist/cli/commands/swarm-commands.d.ts +1 -1
- package/dist/cli/commands/swarm-commands.js +13 -6
- package/dist/cli/commands/tech-commands-helpers.d.ts +37 -0
- package/dist/cli/commands/tech-commands-helpers.js +24 -0
- package/dist/cli/commands/tech-commands.d.ts +2 -29
- package/dist/cli/commands/tech-commands.js +15 -28
- package/dist/cli/commands/test-commands.js +27 -7
- package/dist/cli/commands/upgrade-commands.d.ts +1 -1
- package/dist/cli/commands/user-touchpoint-commands.js +1 -3
- package/dist/cli/commands/verdict-aggregate-command.d.ts +1 -1
- package/dist/cli/commands/verdict-aggregate-command.js +20 -7
- package/dist/cli/commands/vm-commands.js +48 -19
- package/dist/cli/commands/wave-plan-commands.js +5 -2
- package/dist/cli/commands/web-commands.js +14 -4
- package/dist/cli/commands/web-lifecycle-commands.js +5 -3
- package/dist/cli/commands/workflow-commands.d.ts +1 -1
- package/dist/cli/commands/workflow-commands.js +64 -29
- package/dist/cli/commands/workflow-lifecycle-commands.js +19 -17
- package/dist/cli/commands/workflow-plan-commands-actions.d.ts +20 -0
- package/dist/cli/commands/workflow-plan-commands-actions.js +115 -0
- package/dist/cli/commands/workflow-plan-commands-session.d.ts +17 -0
- package/dist/cli/commands/workflow-plan-commands-session.js +59 -0
- package/dist/cli/commands/workflow-plan-commands.d.ts +10 -21
- package/dist/cli/commands/workflow-plan-commands.js +15 -141
- package/dist/cli/commands/workspace/clean-command.js +4 -1
- package/dist/cli/commands/workspace/helpers.js +2 -1
- package/dist/cli/commands/workspace/init-command.js +80 -20
- package/dist/cli/commands/workspace/reconcile-command.js +3 -1
- package/dist/cli/commands/workspace-commands.d.ts +1 -1
- package/dist/cli/commands/workspace-commands.js +1 -1
- package/dist/cli/commands/worktree-auth-commands.d.ts +1 -1
- package/dist/cli/commands/worktree-auth-commands.js +16 -169
- package/dist/cli/commands/worktree-auth-grant-command.d.ts +14 -0
- package/dist/cli/commands/worktree-auth-grant-command.js +118 -0
- package/dist/cli/commands/worktree-auth-manage-commands.d.ts +17 -0
- package/dist/cli/commands/worktree-auth-manage-commands.js +128 -0
- package/dist/cli/commands/worktree-lease-commands.d.ts +1 -1
- package/dist/cli/commands/worktree-lease-commands.js +65 -37
- package/dist/cli/index.js +6 -2
- package/dist/cli/program.js +6 -3
- package/dist/hooks/pre-tool-use-sub-agent.js +1 -6
- package/dist/reporters/bdd-reporter.js +9 -3
- package/dist/services/24h-mode/auto-engage.d.ts +19 -0
- package/dist/services/24h-mode/auto-engage.js +35 -0
- package/dist/services/24h-mode/decider.js +5 -1
- package/dist/services/24h-mode/store.js +4 -2
- package/dist/services/adapter/adapter-registry.js +20 -8
- package/dist/services/adapter/adapter.d.ts +2 -2
- package/dist/services/adapter/auto-adapter.d.ts +2 -2
- package/dist/services/adapter/auto-adapter.js +1 -1
- package/dist/services/adapter/claude-adapter.d.ts +1 -1
- package/dist/services/adapter/claude-adapter.js +8 -8
- package/dist/services/adapter/codex-adapter.d.ts +2 -2
- package/dist/services/adapter/codex-adapter.js +20 -8
- package/dist/services/adapter/copilot-adapter.d.ts +2 -2
- package/dist/services/adapter/copilot-adapter.js +20 -8
- package/dist/services/artifacts/artifact-prerequisites.js +44 -8
- package/dist/services/artifacts/artifact-service.js +3 -1
- package/dist/services/artifacts/artifact-template-bodies.d.ts +12 -0
- package/dist/services/artifacts/artifact-template-bodies.js +165 -0
- package/dist/services/artifacts/artifact-templates.js +26 -168
- package/dist/services/artifacts/request-artifact-service.js +14 -7
- package/dist/services/artifacts/request-artifact-state-helpers.d.ts +3 -2
- package/dist/services/artifacts/request-artifact-state-helpers.js +3 -5
- package/dist/services/artifacts/workspace-artifact-helpers.d.ts +28 -0
- package/dist/services/artifacts/workspace-artifact-helpers.js +54 -0
- package/dist/services/artifacts/workspace-service.d.ts +3 -22
- package/dist/services/artifacts/workspace-service.js +10 -60
- package/dist/services/audit/artifact-writer.js +21 -21
- package/dist/services/audit/audit-goal-service.js +2 -2
- package/dist/services/audit/backing-detector.js +7 -4
- package/dist/services/audit/classifier.js +3 -3
- package/dist/services/audit/decision-writer.js +13 -9
- package/dist/services/audit/enforcer-liveness.js +1 -1
- package/dist/services/audit/enforcers/active-skill-resolver.js +15 -7
- package/dist/services/audit/enforcers/design-draft-confirm.js +4 -4
- package/dist/services/audit/enforcers/lint-audit-regression.js +10 -5
- package/dist/services/audit/enforcers/lint-bee-runtime-contract.js +16 -8
- package/dist/services/audit/enforcers/lint-catalog-governance.js +8 -4
- package/dist/services/audit/enforcers/lint-output-style.js +4 -2
- package/dist/services/audit/enforcers/lint-peaks-code-runtime.js +8 -3
- package/dist/services/audit/enforcers/lint-peaks-skill-runtime.js +8 -3
- package/dist/services/audit/enforcers/lint-peaks-ui-sc-txt-runtime.js +20 -20
- package/dist/services/audit/enforcers/lint-prd-artifact-handoff.js +5 -5
- package/dist/services/audit/enforcers/lint-prd-source-snapshot.d.ts +1 -1
- package/dist/services/audit/enforcers/lint-prd-source-snapshot.js +5 -5
- package/dist/services/audit/enforcers/lint-qa-gateguard-and-runtime.js +10 -10
- package/dist/services/audit/enforcers/lint-rd-handoff-coverage.js +10 -8
- package/dist/services/audit/enforcers/lint-reference-shape.js +50 -18
- package/dist/services/audit/enforcers/lint-skill-presence-mandatory.js +5 -5
- package/dist/services/audit/enforcers/lint-style.js +44 -11
- package/dist/services/audit/enforcers/lint-workflow-shape.js +4 -2
- package/dist/services/audit/enforcers/login-gate.js +2 -6
- package/dist/services/audit/enforcers/mock-placement.js +2 -2
- package/dist/services/audit/enforcers/no-root-pollution.js +38 -9
- package/dist/services/audit/enforcers/pre-rd-scan.js +1 -1
- package/dist/services/audit/enforcers/prototype-fidelity.js +1 -1
- package/dist/services/audit/enforcers/resume-detection.js +5 -4
- package/dist/services/audit/prose-ratio-calculator.js +1 -1
- package/dist/services/audit/red-line-catalog-p2-a-bee-runtime.d.ts +39 -0
- package/dist/services/audit/red-line-catalog-p2-a-bee-runtime.js +205 -0
- package/dist/services/audit/red-line-catalog-p2-a-lint-style.d.ts +52 -0
- package/dist/services/audit/red-line-catalog-p2-a-lint-style.js +205 -0
- package/dist/services/audit/red-line-catalog-p2-a.js +3 -374
- package/dist/services/audit/red-line-catalog-p2-b.js +26 -26
- package/dist/services/audit/red-line-catalog.js +26 -38
- package/dist/services/audit/red-lines-service.js +64 -49
- package/dist/services/audit/scanners/openspec-scanner.js +2 -2
- package/dist/services/audit/scanners/rules-tree-scanner.js +2 -2
- package/dist/services/audit/scanners/skills-tree-scanner.js +2 -2
- package/dist/services/audit/static-service.js +3 -3
- package/dist/services/audit-independent/index.d.ts +2 -2
- package/dist/services/audit-independent/index.js +2 -2
- package/dist/services/audit-independent/perf-audit-service.js +19 -8
- package/dist/services/audit-independent/security-audit-service.js +31 -16
- package/dist/services/autonomous-swarm/autonomous-swarm-service.js +75 -46
- package/dist/services/best-practice/output-formatter.js +7 -1
- package/dist/services/capability-audit-service/cross-check.js +11 -5
- package/dist/services/capability-audit-service/runner.js +15 -7
- package/dist/services/capability-baseline/store.js +16 -4
- package/dist/services/capability-baseline/types.js +15 -3
- package/dist/services/capability-baseline/validator.js +43 -7
- package/dist/services/capability-guard-runner/contracts/J02.js +36 -6
- package/dist/services/capability-guard-runner/contracts/J03.js +20 -11
- package/dist/services/capability-guard-runner/contracts/J04.js +24 -15
- package/dist/services/capability-guard-runner/contracts/J05.js +26 -10
- package/dist/services/capability-guard-runner/contracts/J07.js +8 -2
- package/dist/services/capability-guard-runner/contracts/J08.js +22 -5
- package/dist/services/capability-guard-runner/contracts/J10.js +6 -2
- package/dist/services/capability-guard-runner/contracts/J11.d.ts +5 -0
- package/dist/services/capability-guard-runner/contracts/J11.js +14 -2
- package/dist/services/capability-guard-runner/contracts/J12.js +12 -3
- package/dist/services/capability-guard-runner/diff.js +1 -5
- package/dist/services/changeset/changeset-check-service.js +1 -3
- package/dist/services/classify/classify-service.js +20 -8
- package/dist/services/classify/classify-types.js +22 -9
- package/dist/services/code/auto-compact-lifecycle.js +62 -39
- package/dist/services/code/auto-compact-modes.js +2 -2
- package/dist/services/code/auto-compact-orchestrator.js +14 -9
- package/dist/services/code/batch-heartbeat-poller.d.ts +10 -0
- package/dist/services/code/batch-heartbeat-poller.js +17 -1
- package/dist/services/code/compact-event-settle-types.d.ts +80 -0
- package/dist/services/code/compact-event-settle-types.js +20 -0
- package/dist/services/code/compact-event-settle.d.ts +3 -68
- package/dist/services/code/compact-event-settle.js +14 -10
- package/dist/services/code/dag-orchestrator.js +32 -26
- package/dist/services/code/job-shape-decision.js +3 -1
- package/dist/services/code/mode-gate-types.d.ts +57 -0
- package/dist/services/code/mode-gate-types.js +67 -0
- package/dist/services/code/mode-gate.d.ts +4 -58
- package/dist/services/code/mode-gate.js +24 -60
- package/dist/services/code/orchestrator-can-do-advisories.d.ts +30 -0
- package/dist/services/code/orchestrator-can-do-advisories.js +81 -0
- package/dist/services/code/orchestrator-can-do-probes.d.ts +30 -0
- package/dist/services/code/orchestrator-can-do-probes.js +77 -0
- package/dist/services/code/orchestrator-can-do.d.ts +11 -22
- package/dist/services/code/orchestrator-can-do.js +37 -137
- package/dist/services/code/post-compact-checkpoint.d.ts +28 -0
- package/dist/services/code/post-compact-checkpoint.js +57 -0
- package/dist/services/code/post-compact-detector.js +16 -48
- package/dist/services/code/step-08-gate.d.ts +4 -3
- package/dist/services/code/step-08-gate.js +21 -9
- package/dist/services/code-review/ecc-bridge.js +23 -23
- package/dist/services/codegraph/codegraph-autorefresh.js +56 -39
- package/dist/services/codegraph/codegraph-config-repair-writer.d.ts +44 -0
- package/dist/services/codegraph/codegraph-config-repair-writer.js +116 -14
- package/dist/services/codegraph/codegraph-exclude-integrity.js +4 -1
- package/dist/services/codegraph/codegraph-exclude-repair.d.ts +23 -1
- package/dist/services/codegraph/codegraph-exclude-repair.js +7 -2
- package/dist/services/codegraph/codegraph-index-integrity.js +1 -1
- package/dist/services/codegraph/codegraph-preflight-service.d.ts +3 -26
- package/dist/services/codegraph/codegraph-preflight-service.js +16 -37
- package/dist/services/codegraph/codegraph-preflight-structure.d.ts +32 -0
- package/dist/services/codegraph/codegraph-preflight-structure.js +33 -0
- package/dist/services/codegraph/codegraph-process-runner.js +12 -1
- package/dist/services/codegraph/codegraph-service.js +9 -1
- package/dist/services/compact/request-transition-hook.js +2 -1
- package/dist/services/compact/suggest-service.d.ts +3 -61
- package/dist/services/compact/suggest-service.js +9 -12
- package/dist/services/compact/suggest-types.d.ts +76 -0
- package/dist/services/compact/suggest-types.js +10 -0
- package/dist/services/compact-history/compact-history-service.js +2 -2
- package/dist/services/compact-statusline/compact-lifecycle-store.d.ts +2 -32
- package/dist/services/compact-statusline/compact-lifecycle-store.js +7 -12
- package/dist/services/compact-statusline/compact-lifecycle-types.d.ts +32 -0
- package/dist/services/compact-statusline/compact-lifecycle-types.js +8 -0
- package/dist/services/compact-statusline/compact-statusline-cell-table.d.ts +42 -0
- package/dist/services/compact-statusline/compact-statusline-cell-table.js +63 -0
- package/dist/services/compact-statusline/compact-statusline-service.d.ts +4 -21
- package/dist/services/compact-statusline/compact-statusline-service.js +9 -101
- package/dist/services/compact-statusline/compact-statusline-state.d.ts +4 -0
- package/dist/services/compact-statusline/compact-statusline-state.js +50 -0
- package/dist/services/config/config-migration.js +2 -2
- package/dist/services/config/config-restore.js +1 -1
- package/dist/services/config/config-rollback.js +1 -1
- package/dist/services/config/config-safety.js +28 -10
- package/dist/services/config/config-service.js +114 -31
- package/dist/services/config/model-routing.js +5 -2
- package/dist/services/config/proxy-service.js +6 -1
- package/dist/services/config/workspace-state-service.js +17 -5
- package/dist/services/context/auto-compact-dispatcher-input.d.ts +38 -0
- package/dist/services/context/auto-compact-dispatcher-input.js +9 -0
- package/dist/services/context/auto-compact-dispatcher.d.ts +2 -30
- package/dist/services/context/auto-compact-reader-input.d.ts +30 -0
- package/dist/services/context/auto-compact-reader-input.js +8 -0
- package/dist/services/context/auto-compact-reader.d.ts +2 -24
- package/dist/services/context/auto-compact-reader.js +4 -1
- package/dist/services/context/auto-compact-thresholds.d.ts +54 -0
- package/dist/services/context/auto-compact-thresholds.js +19 -0
- package/dist/services/context/auto-compact-types.d.ts +2 -46
- package/dist/services/context/auto-compact-types.js +1 -11
- package/dist/services/context/build-dispatch-system-prompt.js +2 -2
- package/dist/services/context/collector.js +8 -10
- package/dist/services/context/context-audit-hint.js +7 -5
- package/dist/services/context/context-audit-keys.d.ts +15 -0
- package/dist/services/context/context-audit-keys.js +77 -0
- package/dist/services/context/context-audit-limits.d.ts +20 -0
- package/dist/services/context/context-audit-limits.js +31 -0
- package/dist/services/context/context-audit-scan.d.ts +19 -0
- package/dist/services/context/context-audit-scan.js +246 -0
- package/dist/services/context/context-audit-types.d.ts +65 -0
- package/dist/services/context/context-audit-types.js +10 -0
- package/dist/services/context/context-audit.d.ts +13 -59
- package/dist/services/context/context-audit.js +38 -254
- package/dist/services/context/context-builder.js +4 -4
- package/dist/services/context/context-schema.d.ts +1 -1
- package/dist/services/context/context-schema.js +13 -13
- package/dist/services/context/doc-retriever.js +2 -2
- package/dist/services/context/harness-context-witness.js +43 -24
- package/dist/services/context/harness-window-config.js +27 -7
- package/dist/services/context/ide-detect.js +2 -1
- package/dist/services/context/index.d.ts +1 -1
- package/dist/services/context/memory-index-reader.js +3 -9
- package/dist/services/context/memory-preflight-config.js +3 -5
- package/dist/services/context/memory-preflight-service.d.ts +2 -20
- package/dist/services/context/memory-preflight-service.js +37 -68
- package/dist/services/context/memory-preflight-support.d.ts +48 -0
- package/dist/services/context/memory-preflight-support.js +56 -0
- package/dist/services/context/post-compact-reinjection.js +3 -3
- package/dist/services/context/renderer.js +7 -3
- package/dist/services/context/spillover-store.js +3 -1
- package/dist/services/context/summary-view.js +1 -1
- package/dist/services/context/threshold.js +2 -2
- package/dist/services/context/tokenizer.js +3 -3
- package/dist/services/crystallization/crystallization-brief-schema.d.ts +80 -0
- package/dist/services/crystallization/crystallization-brief-schema.js +159 -0
- package/dist/services/crystallization/crystallization-service.d.ts +7 -7
- package/dist/services/crystallization/crystallization-service.js +56 -55
- package/dist/services/crystallization/crystallization-store.d.ts +2 -2
- package/dist/services/crystallization/crystallization-store.js +37 -20
- package/dist/services/crystallization/crystallization-types.d.ts +4 -56
- package/dist/services/crystallization/crystallization-types.js +31 -184
- package/dist/services/crystallization/evidence-brief-builder.d.ts +3 -3
- package/dist/services/crystallization/evidence-brief-builder.js +32 -38
- package/dist/services/crystallization/index.d.ts +4 -4
- package/dist/services/crystallization/index.js +4 -4
- package/dist/services/dashboard/project-dashboard-service.js +7 -1
- package/dist/services/dispatch/await-batch-helpers.d.ts +55 -0
- package/dist/services/dispatch/await-batch-helpers.js +206 -0
- package/dist/services/dispatch/await-batch.d.ts +50 -7
- package/dist/services/dispatch/await-batch.js +97 -194
- package/dist/services/dispatch/batch-counter.js +2 -1
- package/dist/services/dispatch/conflict-replay.js +2 -2
- package/dist/services/dispatch/contract-store.js +5 -2
- package/dist/services/dispatch/dispatch-record-input-types.d.ts +81 -0
- package/dist/services/dispatch/dispatch-record-input-types.js +1 -0
- package/dist/services/dispatch/dispatch-record-types.d.ts +6 -73
- package/dist/services/dispatch/dispatch-record-upgrade-fields.d.ts +72 -0
- package/dist/services/dispatch/dispatch-record-upgrade-fields.js +242 -0
- package/dist/services/dispatch/dispatch-record-upgrade-guards.d.ts +15 -0
- package/dist/services/dispatch/dispatch-record-upgrade-guards.js +55 -0
- package/dist/services/dispatch/dispatch-record-upgrade.d.ts +2 -4
- package/dist/services/dispatch/dispatch-record-upgrade.js +21 -213
- package/dist/services/dispatch/dispatch-record-writer.js +54 -26
- package/dist/services/dispatch/dispatch-sub-agent.js +7 -2
- package/dist/services/dispatch/e2e-fixtures.js +1 -1
- package/dist/services/dispatch/isolation-lease.js +39 -17
- package/dist/services/dispatch/merge-back-runner.js +51 -11
- package/dist/services/dispatch/service-shutdown.js +4 -1
- package/dist/services/dispatch/slice-dag-types.d.ts +116 -0
- package/dist/services/dispatch/slice-dag-types.js +41 -0
- package/dist/services/dispatch/slice-dag.d.ts +3 -109
- package/dist/services/dispatch/slice-dag.js +13 -36
- package/dist/services/dispatch/sub-agent-batch-await.d.ts +47 -0
- package/dist/services/dispatch/sub-agent-batch-await.js +73 -0
- package/dist/services/dispatch/sub-agent-dispatcher-types.d.ts +122 -0
- package/dist/services/dispatch/sub-agent-dispatcher-types.js +12 -0
- package/dist/services/dispatch/sub-agent-dispatcher.d.ts +3 -145
- package/dist/services/dispatch/sub-agent-dispatcher.js +14 -70
- package/dist/services/dispatch/test-tool-detection.js +12 -1
- package/dist/services/doc/doc-generator.js +19 -4
- package/dist/services/doctor/doctor-service/checks/check-id-schema.js +16 -8
- package/dist/services/doctor/doctor-service/checks/codegraph-capability.d.ts +7 -2
- package/dist/services/doctor/doctor-service/checks/codegraph-capability.js +26 -8
- package/dist/services/doctor/doctor-service/checks/codegraph-exclude-integrity.js +16 -8
- package/dist/services/doctor/doctor-service/checks/codegraph-index-integrity.js +16 -8
- package/dist/services/doctor/doctor-service/checks/dist-source-version.js +18 -9
- package/dist/services/doctor/doctor-service/checks/ecc-hooks-schema-drift.js +20 -10
- package/dist/services/doctor/doctor-service/checks/gateguard-conflict.js +18 -9
- package/dist/services/doctor/doctor-service/checks/l3-memory-health.js +25 -11
- package/dist/services/doctor/doctor-service/checks/l3-orphan-sessions.js +12 -6
- package/dist/services/doctor/doctor-service/checks/multi-binary-drift.d.ts +7 -16
- package/dist/services/doctor/doctor-service/checks/multi-binary-drift.js +50 -70
- package/dist/services/doctor/doctor-service/checks/schema-validity.js +5 -1
- package/dist/services/doctor/doctor-service/checks/skill-presence.js +4 -2
- package/dist/services/doctor/doctor-service/checks/statusline-install.js +8 -4
- package/dist/services/doctor/doctor-service/checks/statusline-runtime.js +8 -4
- package/dist/services/doctor/doctor-service/checks/user-config.js +4 -2
- package/dist/services/doctor/doctor-service/checks/workspace-init.js +8 -4
- package/dist/services/doctor/doctor-service/checks/workspace-layout.js +19 -11
- package/dist/services/doctor/doctor-service/index.js +4 -2
- package/dist/services/doctor/doctor-service/multi-binary-drift-helpers.d.ts +40 -0
- package/dist/services/doctor/doctor-service/multi-binary-drift-helpers.js +49 -0
- package/dist/services/doctor/doctor-service/plugin-registry.js +1 -1
- package/dist/services/doctor/doctor-service/probe-types.d.ts +210 -0
- package/dist/services/doctor/doctor-service/probe-types.js +14 -0
- package/dist/services/doctor/doctor-service/types.d.ts +7 -197
- package/dist/services/doctor/index.d.ts +1 -1
- package/dist/services/doctor/index.js +1 -1
- package/dist/services/env/shell-probe.js +8 -2
- package/dist/services/evidence/evidence-body-builders.d.ts +23 -0
- package/dist/services/evidence/evidence-body-builders.js +197 -0
- package/dist/services/evidence/evidence-generator.js +16 -189
- package/dist/services/evolution/evolution-constraints.d.ts +43 -0
- package/dist/services/evolution/evolution-constraints.js +54 -0
- package/dist/services/evolution/evolution-evaluation-schema.d.ts +43 -0
- package/dist/services/evolution/evolution-evaluation-schema.js +43 -0
- package/dist/services/evolution/evolution-service.d.ts +6 -6
- package/dist/services/evolution/evolution-service.js +58 -58
- package/dist/services/evolution/evolution-store.d.ts +2 -2
- package/dist/services/evolution/evolution-store.js +37 -51
- package/dist/services/evolution/evolution-types.d.ts +2 -22
- package/dist/services/evolution/evolution-types.js +41 -101
- package/dist/services/evolution/independent-evaluator-runner.d.ts +3 -3
- package/dist/services/evolution/independent-evaluator-runner.js +20 -22
- package/dist/services/evolution/regression-skeptic-runner.d.ts +2 -2
- package/dist/services/evolution/regression-skeptic-runner.js +18 -18
- package/dist/services/feedback/feedback-promotion-service.js +48 -12
- package/dist/services/feedback/promotion-artifact-evidence.d.ts +2 -16
- package/dist/services/feedback/promotion-artifact-evidence.js +6 -83
- package/dist/services/feedback/promotion-artifact-json-evidence.d.ts +29 -0
- package/dist/services/feedback/promotion-artifact-json-evidence.js +39 -0
- package/dist/services/feedback/promotion-source-comments.d.ts +47 -0
- package/dist/services/feedback/promotion-source-comments.js +61 -0
- package/dist/services/final-review/final-review-contract.d.ts +26 -0
- package/dist/services/final-review/final-review-contract.js +14 -0
- package/dist/services/final-review/final-review-delivery.d.ts +63 -0
- package/dist/services/final-review/final-review-delivery.js +124 -0
- package/dist/services/final-review/final-review-evidence-budget.d.ts +125 -0
- package/dist/services/final-review/final-review-evidence-budget.js +218 -0
- package/dist/services/final-review/final-review-evidence-collect.d.ts +4 -0
- package/dist/services/final-review/final-review-evidence-collect.js +230 -0
- package/dist/services/final-review/final-review-evidence-sources.d.ts +138 -0
- package/dist/services/final-review/final-review-evidence-sources.js +139 -0
- package/dist/services/final-review/final-review-fifth-dim.d.ts +8 -0
- package/dist/services/final-review/final-review-fifth-dim.js +20 -0
- package/dist/services/final-review/final-review-gates.d.ts +119 -0
- package/dist/services/final-review/final-review-gates.js +214 -0
- package/dist/services/final-review/final-review-output-budget.d.ts +88 -0
- package/dist/services/final-review/final-review-output-budget.js +161 -0
- package/dist/services/final-review/final-review-prompt.d.ts +35 -0
- package/dist/services/final-review/final-review-prompt.js +112 -0
- package/dist/services/final-review/final-review-reviewer.d.ts +57 -0
- package/dist/services/final-review/final-review-reviewer.js +95 -0
- package/dist/services/final-review/final-review-runner.d.ts +3 -0
- package/dist/services/final-review/final-review-runner.js +158 -0
- package/dist/services/final-review/final-review-service.d.ts +119 -373
- package/dist/services/final-review/final-review-service.js +48 -1380
- package/dist/services/final-review/final-review-verdicts.d.ts +60 -0
- package/dist/services/final-review/final-review-verdicts.js +91 -0
- package/dist/services/final-review/index.d.ts +3 -3
- package/dist/services/final-review/index.js +2 -2
- package/dist/services/final-review/pre-post-diff.js +32 -29
- package/dist/services/fixture/fixture-capture-service.js +14 -6
- package/dist/services/fresh-context/trigger-scan.js +13 -2
- package/dist/services/fuzzy-matching/fuzzy-match-service.js +1 -1
- package/dist/services/fuzzy-matching/fzf-pick-service.js +6 -1
- package/dist/services/hooks/pre-tool-code-gate.js +2 -2
- package/dist/services/hooks/presence-marker-detector.js +12 -2
- package/dist/services/hooks/worktree-authorization-gate.js +21 -7
- package/dist/services/ide/adapters/claude-code-adapter.js +30 -17
- package/dist/services/ide/adapters/codex-adapter.js +3 -5
- package/dist/services/ide/adapters/cursor-adapter.js +3 -5
- package/dist/services/ide/adapters/hermes-adapter.js +2 -4
- package/dist/services/ide/adapters/openclaw-adapter.js +2 -4
- package/dist/services/ide/adapters/qoder-adapter.js +2 -4
- package/dist/services/ide/adapters/tongyi-lingma-adapter.js +1 -1
- package/dist/services/ide/adapters/trae-adapter.js +3 -5
- package/dist/services/ide/adapters/zcode-adapter.js +8 -7
- package/dist/services/ide/current-model-detector.js +2 -1
- package/dist/services/ide/ide-compact-types.d.ts +153 -0
- package/dist/services/ide/ide-compact-types.js +1 -0
- package/dist/services/ide/ide-registry.js +1 -1
- package/dist/services/ide/ide-types.d.ts +7 -145
- package/dist/services/ide/resource-profile.js +1 -1
- package/dist/services/ide/shared/atomic-json.js +2 -1
- package/dist/services/impact/impact-scan-service.js +12 -5
- package/dist/services/job/job-commit-verification.d.ts +73 -0
- package/dist/services/job/job-commit-verification.js +72 -0
- package/dist/services/job/job-orchestrator.d.ts +42 -0
- package/dist/services/job/job-orchestrator.js +110 -10
- package/dist/services/job/job-progress-store.d.ts +75 -5
- package/dist/services/job/job-progress-store.js +83 -6
- package/dist/services/job/job-rotation.d.ts +1 -1
- package/dist/services/job/job-rotation.js +5 -1
- package/dist/services/job/job-state-store.js +2 -2
- package/dist/services/job/job-types.js +49 -20
- package/dist/services/job/subagent-job-wrapper.d.ts +1 -1
- package/dist/services/job/subagent-job-wrapper.js +5 -1
- package/dist/services/job-snapshot/snapshot.js +2 -2
- package/dist/services/karpathy-cost/karpathy-cost-check-service.js +23 -13
- package/dist/services/legacy/legacy-detector.js +51 -5
- package/dist/services/lint/detect-eslint.js +10 -4
- package/dist/services/lint/detect-ocr-18.js +11 -3
- package/dist/services/lint/eslint-runner-support.d.ts +22 -0
- package/dist/services/lint/eslint-runner-support.js +185 -0
- package/dist/services/lint/eslint-runner-types.d.ts +69 -0
- package/dist/services/lint/eslint-runner-types.js +11 -0
- package/dist/services/lint/eslint-runner.d.ts +4 -56
- package/dist/services/lint/eslint-runner.js +24 -178
- package/dist/services/lint/npx-resolver.js +1 -3
- package/dist/services/lint/ocr-18-acquire.js +15 -4
- package/dist/services/lint/ocr-multilang-adapter.js +4 -5
- package/dist/services/llm/anthropic-runner.js +4 -1
- package/dist/services/log/log-commands-service.js +2 -6
- package/dist/services/log/logger.js +15 -12
- package/dist/services/log/retention.js +3 -2
- package/dist/services/loop/evaluator-dispatcher.js +78 -42
- package/dist/services/loop/loop-bee-relation-service.d.ts +4 -4
- package/dist/services/loop/loop-bee-relation-service.js +36 -40
- package/dist/services/loop/loop-bee-relation-store.d.ts +3 -3
- package/dist/services/loop/loop-bee-relation-store.js +9 -11
- package/dist/services/loop/loop-bee-relation-types.d.ts +1 -1
- package/dist/services/loop/loop-bee-relation-types.js +14 -25
- package/dist/services/loop/loop-release-service.d.ts +2 -2
- package/dist/services/loop/loop-release-service.js +3 -3
- package/dist/services/loop/loop-release-store.d.ts +2 -2
- package/dist/services/loop/loop-release-store.js +4 -6
- package/dist/services/loop/loop-release-types.d.ts +1 -1
- package/dist/services/loop/loop-release-types.js +21 -31
- package/dist/services/loop/monotonic-guard-types.d.ts +51 -0
- package/dist/services/loop/monotonic-guard-types.js +9 -0
- package/dist/services/loop/monotonic-guard.d.ts +2 -43
- package/dist/services/loop/monotonic-runner-types.d.ts +63 -0
- package/dist/services/loop/monotonic-runner-types.js +17 -0
- package/dist/services/loop/monotonic-runner.d.ts +3 -34
- package/dist/services/loop/monotonic-runner.js +10 -20
- package/dist/services/loop/run-driver.js +16 -8
- package/dist/services/loop/spec-service.d.ts +0 -5
- package/dist/services/loop/spec-service.js +49 -9
- package/dist/services/memory/llm-reranker-core.d.ts +108 -0
- package/dist/services/memory/llm-reranker-core.js +105 -0
- package/dist/services/memory/llm-reranker.d.ts +3 -94
- package/dist/services/memory/llm-reranker.js +13 -102
- package/dist/services/memory/memory-ingest-service.d.ts +1 -22
- package/dist/services/memory/memory-ingest-service.js +29 -76
- package/dist/services/memory/memory-ingest-support.d.ts +23 -0
- package/dist/services/memory/memory-ingest-support.js +81 -0
- package/dist/services/memory/memory-rotate-service.js +41 -8
- package/dist/services/memory/memory-search-service.js +8 -4
- package/dist/services/memory/project-context-service.js +26 -5
- package/dist/services/memory/project-memory-service/index/kind-dispatch.d.ts +2 -7
- package/dist/services/memory/project-memory-service/index/kind-dispatch.js +17 -136
- package/dist/services/memory/project-memory-service/index/project-memory-plan-exec.d.ts +7 -0
- package/dist/services/memory/project-memory-service/index/project-memory-plan-exec.js +150 -0
- package/dist/services/memory/project-memory-service/index/ranking.js +6 -3
- package/dist/services/memory/project-memory-service/index/reindex.js +14 -5
- package/dist/services/memory/project-memory-service/index.d.ts +1 -1
- package/dist/services/memory/project-memory-service/index.js +1 -1
- package/dist/services/memory/project-memory-service/memory-kinds.d.ts +31 -0
- package/dist/services/memory/project-memory-service/memory-kinds.js +87 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter-parse.d.ts +24 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter-parse.js +104 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter.d.ts +2 -24
- package/dist/services/memory/project-memory-service/parsers/frontmatter.js +28 -79
- package/dist/services/memory/project-memory-service/parsers/markdown-pure.js +15 -3
- package/dist/services/memory/project-memory-service/store/atomic-write.d.ts +59 -0
- package/dist/services/memory/project-memory-service/store/atomic-write.js +189 -17
- package/dist/services/memory/project-memory-service/store/paths.js +2 -1
- package/dist/services/memory/project-memory-service/types.d.ts +3 -31
- package/dist/services/memory/project-memory-service/types.js +1 -76
- package/dist/services/migrate-skill-name/migrate.js +1 -1
- package/dist/services/migrate-skill-name/schema.js +1 -1
- package/dist/services/mode/mode-enforcement.js +4 -2
- package/dist/services/mode/mode-status-service.d.ts +27 -9
- package/dist/services/mode/mode-status-service.js +64 -12
- package/dist/services/observability/aggregation-helpers.d.ts +22 -0
- package/dist/services/observability/aggregation-helpers.js +65 -0
- package/dist/services/observability/aggregation-types.d.ts +66 -0
- package/dist/services/observability/aggregation-types.js +34 -0
- package/dist/services/observability/aggregation.d.ts +5 -53
- package/dist/services/observability/aggregation.js +17 -80
- package/dist/services/observability/jsonl-store.js +2 -1
- package/dist/services/observability/observability-schema.d.ts +71 -0
- package/dist/services/observability/observability-schema.js +64 -0
- package/dist/services/observability/observability-service.d.ts +3 -56
- package/dist/services/observability/observability-service.js +9 -49
- package/dist/services/openspec/coverage-evidence-reader.js +18 -11
- package/dist/services/openspec/openspec-archive-service.js +31 -24
- package/dist/services/openspec/openspec-init-service.js +8 -2
- package/dist/services/openspec/openspec-propose-from-doctor-service.js +1 -1
- package/dist/services/openspec/openspec-scan-service.js +4 -1
- package/dist/services/openspec/openspec-validate-service.js +26 -5
- package/dist/services/perf/perf-baseline-service.js +2 -6
- package/dist/services/polyrepo/polyrepo-dispatcher.js +2 -1
- package/dist/services/polyrepo/polyrepo-scanner.js +4 -1
- package/dist/services/prd/gate-evidence-derivation.d.ts +160 -0
- package/dist/services/prd/gate-evidence-derivation.js +270 -0
- package/dist/services/prd/handoff-auto-regen.js +13 -1
- package/dist/services/prd/handoff-frontmatter-shape.d.ts +42 -0
- package/dist/services/prd/handoff-frontmatter-shape.js +67 -0
- package/dist/services/prd/handoff-frontmatter.d.ts +1 -1
- package/dist/services/prd/handoff-frontmatter.js +63 -1
- package/dist/services/prd/handoff-gate-evidence.d.ts +95 -1
- package/dist/services/prd/handoff-gate-evidence.js +125 -57
- package/dist/services/prd/handoff-path-resolution.d.ts +37 -0
- package/dist/services/prd/handoff-path-resolution.js +101 -0
- package/dist/services/prd/handoff-service.d.ts +22 -38
- package/dist/services/prd/handoff-service.js +38 -127
- package/dist/services/prd/handoff-types.d.ts +40 -0
- package/dist/services/prd/handoff-types.js +28 -1
- package/dist/services/prd/prd-blocks-checker.js +28 -8
- package/dist/services/prd/project-scan-bootstrap-service.js +1 -5
- package/dist/services/prd/project-scan-reader.d.ts +7 -0
- package/dist/services/prd/project-scan-reader.js +8 -5
- package/dist/services/prd/project-scan-sediment.js +1 -4
- package/dist/services/preferences/preferences-service.js +6 -8
- package/dist/services/preferences/preferences-types.js +4 -4
- package/dist/services/qa/bdd-test-style-contract.d.ts +41 -0
- package/dist/services/qa/bdd-test-style-contract.js +37 -0
- package/dist/services/qa/bdd-test-style-verifier.d.ts +2 -24
- package/dist/services/qa/bdd-test-style-verifier.js +5 -31
- package/dist/services/qa/browser-event-logger.js +2 -1
- package/dist/services/qa/qa-business-review-state.js +20 -5
- package/dist/services/qa/screenshot-archive-service.js +1 -3
- package/dist/services/rd/ast-gate.js +2 -2
- package/dist/services/rd/impl.js +1 -1
- package/dist/services/rd/rd-service.js +117 -43
- package/dist/services/rd/reviewer-dispatch-policy.d.ts +36 -8
- package/dist/services/rd/reviewer-dispatch-policy.js +40 -15
- package/dist/services/rd/standards-diagnostic.js +4 -1
- package/dist/services/rd/strategy.js +10 -3
- package/dist/services/rd/tactical-stage.js +2 -2
- package/dist/services/rd/types.js +9 -7
- package/dist/services/rd-swarm/rd-swarm-service.d.ts +2 -45
- package/dist/services/rd-swarm/rd-swarm-service.js +140 -21
- package/dist/services/rd-swarm/rd-swarm-types.d.ts +54 -0
- package/dist/services/rd-swarm/rd-swarm-types.js +10 -0
- package/dist/services/recommendations/capability-map-service.js +10 -2
- package/dist/services/recommendations/capability-seed-items.js +81 -14
- package/dist/services/recommendations/capability-seed-mappings.js +420 -48
- package/dist/services/recommendations/capability-seed-sources-mcp-server.d.ts +9 -0
- package/dist/services/recommendations/capability-seed-sources-mcp-server.js +233 -0
- package/dist/services/recommendations/capability-seed-sources.js +127 -32
- package/dist/services/release/release-state.d.ts +2 -2
- package/dist/services/release/release-state.js +44 -15
- package/dist/services/release/version-precheck-layer-changeset.d.ts +2 -0
- package/dist/services/release/version-precheck-layer-changeset.js +43 -0
- package/dist/services/release/version-precheck-service.d.ts +11 -36
- package/dist/services/release/version-precheck-service.js +20 -104
- package/dist/services/release/version-precheck-support.d.ts +53 -0
- package/dist/services/release/version-precheck-support.js +64 -0
- package/dist/services/retrospective/retrospective-index.js +17 -3
- package/dist/services/retrospective/retrospective-search-service.js +6 -2
- package/dist/services/retrospective/retrospective-show.js +4 -1
- package/dist/services/reviewer/model-family.js +7 -1
- package/dist/services/reviewer/providers/anthropic.d.ts +5 -0
- package/dist/services/reviewer/providers/anthropic.js +10 -1
- package/dist/services/reviewer/providers/openai.d.ts +5 -0
- package/dist/services/reviewer/providers/openai.js +10 -1
- package/dist/services/reviewer/reviewer-config.js +4 -2
- package/dist/services/reviewer/reviewer-service.d.ts +2 -36
- package/dist/services/reviewer/reviewer-service.js +2 -1
- package/dist/services/reviewer/reviewer-types.d.ts +43 -0
- package/dist/services/reviewer/reviewer-types.js +1 -0
- package/dist/services/role/role-registry.js +9 -1
- package/dist/services/runtime/runtime-detector.js +4 -1
- package/dist/services/runtime/vendors/claude-code.js +14 -6
- package/dist/services/runtime/vendors/codex.js +11 -3
- package/dist/services/runtime/vendors/copilot.js +11 -3
- package/dist/services/sc/sc-service.js +28 -15
- package/dist/services/scan/acceptance-coverage-service.js +4 -1
- package/dist/services/scan/api-diff-openapi-schema-read.d.ts +67 -0
- package/dist/services/scan/api-diff-openapi-schema-read.js +154 -0
- package/dist/services/scan/api-diff-openapi.d.ts +16 -2
- package/dist/services/scan/api-diff-openapi.js +19 -123
- package/dist/services/scan/api-diff-recorded.js +16 -3
- package/dist/services/scan/api-diff-service.js +49 -16
- package/dist/services/scan/api-diff-types.js +12 -3
- package/dist/services/scan/api-surface-helpers.d.ts +13 -0
- package/dist/services/scan/api-surface-helpers.js +31 -0
- package/dist/services/scan/api-surface-service.d.ts +2 -45
- package/dist/services/scan/api-surface-service.js +15 -26
- package/dist/services/scan/api-surface-types.d.ts +54 -0
- package/dist/services/scan/api-surface-types.js +10 -0
- package/dist/services/scan/archetype-detection.d.ts +37 -0
- package/dist/services/scan/archetype-detection.js +142 -0
- package/dist/services/scan/archetype-service.js +36 -125
- package/dist/services/scan/diff-scope-service.js +35 -15
- package/dist/services/scan/existing-system-service.js +16 -99
- package/dist/services/scan/existing-system-visual-tokens.d.ts +20 -0
- package/dist/services/scan/existing-system-visual-tokens.js +123 -0
- package/dist/services/scan/file-size-policy.d.ts +86 -0
- package/dist/services/scan/file-size-policy.js +184 -0
- package/dist/services/scan/file-size-scan.d.ts +30 -3
- package/dist/services/scan/file-size-scan.js +47 -9
- package/dist/services/scan/karpathy-service.js +6 -1
- package/dist/services/scan/orphan-service.js +86 -20
- package/dist/services/scan/type-sanity-service.js +104 -10
- package/dist/services/sediment/dispose-confirm.d.ts +2 -2
- package/dist/services/sediment/dispose-confirm.js +2 -2
- package/dist/services/sediment/json-schema.d.ts +1 -1
- package/dist/services/sediment/json-schema.js +25 -13
- package/dist/services/sediment/manifest-lint.d.ts +1 -12
- package/dist/services/sediment/manifest-lint.js +1 -7
- package/dist/services/sediment/pool-paths.js +13 -9
- package/dist/services/sediment/pool-read.d.ts +1 -1
- package/dist/services/sediment/pool-read.js +42 -18
- package/dist/services/sediment/pool-rebuild-index.d.ts +1 -1
- package/dist/services/sediment/pool-rebuild-index.js +5 -5
- package/dist/services/sediment/pool-write.d.ts +1 -1
- package/dist/services/sediment/pool-write.js +7 -7
- package/dist/services/sediment/promotion-gate.d.ts +1 -1
- package/dist/services/sediment/promotion-gate.js +9 -9
- package/dist/services/sediment/types.d.ts +8 -8
- package/dist/services/session/binding-status-service.js +14 -4
- package/dist/services/session/caller-binding-service.js +2 -1
- package/dist/services/session/getSessionDir.js +4 -1
- package/dist/services/session/index.d.ts +1 -1
- package/dist/services/session/index.js +1 -1
- package/dist/services/session/resolve-caller-id.js +7 -5
- package/dist/services/session/session-binding-bridge.js +26 -25
- package/dist/services/session/session-checkpoint-service.js +1 -1
- package/dist/services/session/session-file-schema.d.ts +70 -0
- package/dist/services/session/session-file-schema.js +68 -0
- package/dist/services/session/session-manager.d.ts +6 -6
- package/dist/services/session/session-manager.js +30 -29
- package/dist/services/session/session-resume-service.js +2 -1
- package/dist/services/share/bundle-format-constants.d.ts +85 -0
- package/dist/services/share/bundle-format-constants.js +100 -0
- package/dist/services/share/bundle-reader.d.ts +3 -3
- package/dist/services/share/bundle-reader.js +75 -68
- package/dist/services/share/bundle-types.d.ts +3 -70
- package/dist/services/share/bundle-types.js +38 -107
- package/dist/services/share/bundle-writer.d.ts +3 -3
- package/dist/services/share/bundle-writer.js +101 -91
- package/dist/services/share/run-state-contract.d.ts +1 -1
- package/dist/services/share/run-state-contract.js +7 -13
- package/dist/services/signal/cancel-handler.js +2 -1
- package/dist/services/skill/resume-detector.js +6 -4
- package/dist/services/skill/skill-scheduler.js +3 -1
- package/dist/services/skill/skill-search-service.js +4 -4
- package/dist/services/skillhub/release-diff.d.ts +2 -2
- package/dist/services/skillhub/release-diff.js +6 -10
- package/dist/services/skillhub/release-export.d.ts +2 -2
- package/dist/services/skillhub/release-export.js +15 -17
- package/dist/services/skillhub/release-gc-blobs.d.ts +2 -2
- package/dist/services/skillhub/release-gc-blobs.js +4 -4
- package/dist/services/skillhub/release-import.d.ts +2 -2
- package/dist/services/skillhub/release-import.js +13 -12
- package/dist/services/skillhub/release-retain.d.ts +3 -3
- package/dist/services/skillhub/release-retain.js +22 -22
- package/dist/services/skillhub/sqlite-store.d.ts +1 -1
- package/dist/services/skillhub/sqlite-store.js +12 -11
- package/dist/services/skillhub/tar-runtime.js +15 -15
- package/dist/services/skillhub/types.d.ts +4 -4
- package/dist/services/skills/hooks-codegate-superpowers.js +16 -7
- package/dist/services/skills/hooks-settings-service.js +61 -19
- package/dist/services/skills/presence-lease-service.js +26 -16
- package/dist/services/skills/presence-lease-types.d.ts +1 -1
- package/dist/services/skills/presence-lease-types.js +1 -1
- package/dist/services/skills/skill-conformance-service.js +40 -8
- package/dist/services/skills/skill-presence-service.js +16 -14
- package/dist/services/skills/skill-runbook-service.js +2 -1
- package/dist/services/skills/skill-statusline-model.d.ts +128 -0
- package/dist/services/skills/skill-statusline-model.js +163 -0
- package/dist/services/skills/skill-statusline-renderer.js +4 -3
- package/dist/services/skills/skill-statusline-service.d.ts +3 -100
- package/dist/services/skills/skill-statusline-service.js +56 -163
- package/dist/services/skills/statusline-palette.js +11 -6
- package/dist/services/skills/statusline-settings-service.js +2 -1
- package/dist/services/skills/sync-service-support.d.ts +65 -0
- package/dist/services/skills/sync-service-support.js +50 -0
- package/dist/services/skills/sync-service.d.ts +3 -66
- package/dist/services/skills/sync-service.js +15 -53
- package/dist/services/slice/calibration-store.js +8 -2
- package/dist/services/slice/cross-pass-edge-merger.d.ts +3 -28
- package/dist/services/slice/cross-pass-edge-merger.js +13 -63
- package/dist/services/slice/cross-pass-edge-static-scan-support.d.ts +69 -0
- package/dist/services/slice/cross-pass-edge-static-scan-support.js +74 -0
- package/dist/services/slice/granularity-decider.js +2 -2
- package/dist/services/slice/slice-archive-service.js +8 -3
- package/dist/services/slice/slice-check-service.js +19 -8
- package/dist/services/slice/slice-decompose-runners.js +61 -23
- package/dist/services/slice/slice-decompose-service.js +4 -4
- package/dist/services/slice/slice-review-state.js +8 -2
- package/dist/services/smoke/smoke-paths-state.js +9 -2
- package/dist/services/sop/gate-enforce-service.js +9 -2
- package/dist/services/sop/sop-advance-service.js +14 -2
- package/dist/services/sop/sop-check-service.js +16 -4
- package/dist/services/sop/sop-paths.js +3 -1
- package/dist/services/sop/sop-registry-service.js +5 -1
- package/dist/services/sop/sop-service.js +29 -7
- package/dist/services/sop/sop-types.js +5 -1
- package/dist/services/standards/ide-aware-standards-service.js +2 -2
- package/dist/services/standards/loop-engineering-lint.js +12 -5
- package/dist/services/standards/loop-engineering-readiness-lint.js +5 -5
- package/dist/services/standards/migrate-claude-rules-service.js +9 -7
- package/dist/services/standards/missing-standards-detector.js +1 -3
- package/dist/services/standards/project-context-support.d.ts +50 -0
- package/dist/services/standards/project-context-support.js +244 -0
- package/dist/services/standards/project-context-types.d.ts +30 -0
- package/dist/services/standards/project-context-types.js +11 -0
- package/dist/services/standards/project-context.d.ts +10 -22
- package/dist/services/standards/project-context.js +27 -214
- package/dist/services/standards/project-standards-service.js +43 -12
- package/dist/services/standards/standards-render-common.d.ts +15 -0
- package/dist/services/standards/standards-render-common.js +49 -0
- package/dist/services/standards/standards-render.d.ts +1 -2
- package/dist/services/standards/standards-render.js +31 -58
- package/dist/services/standards/ui-library-dispatch-block.js +1 -1
- package/dist/services/tech/tech-change-id-service.js +7 -7
- package/dist/services/tech/tech-service.js +73 -26
- package/dist/services/test-cache/test-cache-service.js +8 -3
- package/dist/services/upgrade/1x-detector-service.js +5 -3
- package/dist/services/upgrade/gitignore-migrate-service.js +5 -5
- package/dist/services/upgrade/upgrade-service.js +36 -13
- package/dist/services/verdict/envelope-parsers.d.ts +84 -0
- package/dist/services/verdict/envelope-parsers.js +146 -0
- package/dist/services/verdict/envelopes.d.ts +50 -60
- package/dist/services/verdict/envelopes.js +18 -156
- package/dist/services/verdict/verdict-aggregator.js +27 -3
- package/dist/services/vm/vm-lease.js +15 -3
- package/dist/services/web/aria-node.d.ts +27 -0
- package/dist/services/web/aria-node.js +1 -0
- package/dist/services/web/browser-acquire.js +3 -1
- package/dist/services/web/browser-cache-probe.d.ts +18 -0
- package/dist/services/web/browser-cache-probe.js +110 -0
- package/dist/services/web/browser-session-manager.js +6 -2
- package/dist/services/web/daemon-registry.js +4 -1
- package/dist/services/web/playwright-loader.d.ts +2 -70
- package/dist/services/web/playwright-types.d.ts +75 -0
- package/dist/services/web/playwright-types.js +1 -0
- package/dist/services/web/snapshot-pruner.d.ts +2 -23
- package/dist/services/web/snapshot-pruner.js +8 -3
- package/dist/services/web/web-daemon-service.js +1 -3
- package/dist/services/web/web-install-service.d.ts +3 -32
- package/dist/services/web/web-install-service.js +21 -100
- package/dist/services/web/web-install-types.d.ts +31 -0
- package/dist/services/web/web-install-types.js +13 -0
- package/dist/services/web/web-login-profile.js +7 -5
- package/dist/services/web/web-protocol.js +3 -1
- package/dist/services/workflow/pipeline-verify-gate-support.js +63 -17
- package/dist/services/workflow/pipeline-verify-service.js +17 -6
- package/dist/services/workflow/plan-reader.js +5 -1
- package/dist/services/workflow/plan-refresher.js +20 -6
- package/dist/services/workflow/plan-trigger-detector.js +31 -8
- package/dist/services/workflow/provision-dispatch-node.js +8 -3
- package/dist/services/workflow/workflow-autonomous-resume-helpers.d.ts +3 -1
- package/dist/services/workflow/workflow-autonomous-resume-helpers.js +35 -144
- package/dist/services/workflow/workflow-autonomous-resume-validation.d.ts +16 -0
- package/dist/services/workflow/workflow-autonomous-resume-validation.js +155 -0
- package/dist/services/workflow/workflow-autonomous-service.js +25 -13
- package/dist/services/workflow/workflow-graph-store-helpers.d.ts +51 -0
- package/dist/services/workflow/workflow-graph-store-helpers.js +111 -0
- package/dist/services/workflow/workflow-graph-store.d.ts +2 -35
- package/dist/services/workflow/workflow-graph-store.js +30 -107
- package/dist/services/workflow/workflow-graph-types.js +3 -3
- package/dist/services/workflow/workflow-inflight-probe.js +14 -7
- package/dist/services/workflow/workflow-loader.js +5 -1
- package/dist/services/workflow/workflow-node-lifecycle.js +22 -21
- package/dist/services/workflow/workflow-presence-lifecycle-types.d.ts +50 -0
- package/dist/services/workflow/workflow-presence-lifecycle-types.js +1 -0
- package/dist/services/workflow/workflow-presence-lifecycle.d.ts +2 -42
- package/dist/services/workflow/workflow-presence-lifecycle.js +19 -21
- package/dist/services/workflow/workflow-router-service.js +169 -27
- package/dist/services/workflow/workflow-skip-service.js +14 -4
- package/dist/services/workflow/workflow-spec-builders.d.ts +15 -0
- package/dist/services/workflow/workflow-spec-builders.js +121 -0
- package/dist/services/workflow/workflow-spec.d.ts +7 -6
- package/dist/services/workflow/workflow-spec.js +22 -116
- package/dist/services/workflow/workflow-state-store.js +2 -1
- package/dist/services/workspace/migrate-1-4-1-service.js +80 -14
- package/dist/services/workspace/migrate-service.js +66 -16
- package/dist/services/workspace/reconcile-migrate.js +6 -2
- package/dist/services/workspace/reconcile-service.js +37 -16
- package/dist/services/workspace/workspace-claude-settings-materializer.js +7 -5
- package/dist/services/workspace/workspace-clean-service.js +4 -1
- package/dist/services/workspace/workspace-service.js +11 -3
- package/dist/services/workspace/workspace-state-service.js +1 -1
- package/dist/services/worktree/git-worktree-parser.js +13 -3
- package/dist/services/worktree/host-worktree-reconciler.js +8 -4
- package/dist/services/worktree/long-path-cleanup.js +23 -6
- package/dist/services/worktree/worktree-gc-guard.js +3 -1
- package/dist/services/worktree/worktree-lease-types.d.ts +53 -0
- package/dist/services/worktree/worktree-lease-types.js +10 -0
- package/dist/services/worktree/worktree-lease.d.ts +2 -44
- package/dist/shared/array-guards.d.ts +30 -0
- package/dist/shared/array-guards.js +32 -0
- package/dist/shared/format-md-compact-internals.d.ts +26 -0
- package/dist/shared/format-md-compact-internals.js +125 -0
- package/dist/shared/format-md-compact.js +1 -117
- package/dist/shared/fs-utils.js +2 -1
- package/dist/shared/incrementing-number.js +3 -3
- package/dist/shared/json-parse.d.ts +71 -0
- package/dist/shared/json-parse.js +32 -0
- package/dist/shared/json-schema-mini.js +3 -1
- package/dist/shared/path-safety.js +3 -1
- package/dist/shared/path-utils.d.ts +20 -0
- package/dist/shared/path-utils.js +26 -0
- package/dist/shared/planner-response.js +3 -3
- package/dist/shared/stale-policy.js +1 -3
- package/dist/skills/peaks-maker/index.js +11 -11
- package/package.json +32 -9
- package/scripts/clean-dist.mjs +1 -2
- package/scripts/copy-templates.mjs +2 -4
- package/scripts/install-skills.mjs +305 -125
- package/scripts/sync-version.mjs +25 -8
- package/scripts/watch.mjs +8 -2
- package/skills/bee/peaks-rd/SKILL.md +1 -1
- package/skills/bee/peaks-rd/references/rd-fanout-contracts.md +26 -10
- package/skills/bee/peaks-rd/references/rd-sub-agent-dispatch.md +1 -1
- package/skills/bee/peaks-rd/references/writing-handoff-frontmatter.md +6 -1
- package/skills/peaks-code/SKILL.md +1 -1
- package/skills/peaks-code/references/periodic-checkpoint.md +7 -5
- package/skills/peaks-code/references/startup-sequence.md +1 -1
- package/skills/peaks-final-review/SKILL.md +1 -1
- /package/{docs → contracts}/test-style-contract.md +0 -0
|
@@ -51,8 +51,8 @@ const ALLOWED_EVALUATOR_KINDS = new Set([
|
|
|
51
51
|
'canary-watch'
|
|
52
52
|
]);
|
|
53
53
|
/** In-process lock registry. Test seam: cleared by `_clearRunLocks()`. */
|
|
54
|
-
const RUN_LOCKS = globalThis
|
|
55
|
-
|
|
54
|
+
const RUN_LOCKS = globalThis.__PEAKS_RUN_LOCKS__ ??
|
|
55
|
+
new Map();
|
|
56
56
|
globalThis.__PEAKS_RUN_LOCKS__ = RUN_LOCKS;
|
|
57
57
|
/** Test seam: clear in-process locks between test cases. */
|
|
58
58
|
export function _clearRunLocks() {
|
|
@@ -209,8 +209,8 @@ function emptyResult(code, message, options) {
|
|
|
209
209
|
function runLoopLocked(spec, strategy, maxCycles, options) {
|
|
210
210
|
const threshold = options.threshold ?? DEFAULT_MONOTONIC_THRESHOLD;
|
|
211
211
|
const persist = options.persist !== false;
|
|
212
|
-
const dispatchFn = options.dispatchOverride
|
|
213
|
-
|
|
212
|
+
const dispatchFn = options.dispatchOverride ??
|
|
213
|
+
((kind) => defaultDispatch(kind, {
|
|
214
214
|
projectRoot: options.projectRoot,
|
|
215
215
|
rid: options.rid,
|
|
216
216
|
sid: options.sid
|
|
@@ -311,9 +311,11 @@ function runLoopLocked(spec, strategy, maxCycles, options) {
|
|
|
311
311
|
return {
|
|
312
312
|
code: aborted ? abortCode : 'RUN_OK',
|
|
313
313
|
ok,
|
|
314
|
-
message: aborted
|
|
315
|
-
?
|
|
316
|
-
:
|
|
314
|
+
message: aborted
|
|
315
|
+
? abortMessage
|
|
316
|
+
: strategy === 'manual'
|
|
317
|
+
? `reached 1 cycle for manual strategy (no regressions observed)`
|
|
318
|
+
: `reached maxCycles ${cycleLimit} with ${regressionCount} regression(s)`,
|
|
317
319
|
strategy,
|
|
318
320
|
maxCycles,
|
|
319
321
|
cycles,
|
|
@@ -384,7 +386,13 @@ function parseCycleFromPath(path, fallbackCycle) {
|
|
|
384
386
|
const observedAt = typeof r['observedAt'] === 'string' ? r['observedAt'] : new Date(0).toISOString();
|
|
385
387
|
rows.push({
|
|
386
388
|
evaluator: r['evaluator'],
|
|
387
|
-
score: typeof r['score'] === 'number'
|
|
389
|
+
score: typeof r['score'] === 'number'
|
|
390
|
+
? r['score']
|
|
391
|
+
: gate === 'pass'
|
|
392
|
+
? 1.0
|
|
393
|
+
: gate === 'warn'
|
|
394
|
+
? 0.5
|
|
395
|
+
: 0.0,
|
|
388
396
|
gateAction: gate,
|
|
389
397
|
degraded: r['degraded'] === true,
|
|
390
398
|
observedAt
|
|
@@ -51,11 +51,6 @@ export declare function resolveLoopSpec(projectRoot: string, sid: string, rid: s
|
|
|
51
51
|
origin: SpecOrigin;
|
|
52
52
|
spec: LoopSpec | null;
|
|
53
53
|
};
|
|
54
|
-
/** Build a spec from a structured object (so CLI callers can pass a
|
|
55
|
-
* JSON-derived payload through to the writer). Pure, never throws.
|
|
56
|
-
* Note: numeric range validation is the lint layer's responsibility;
|
|
57
|
-
* `buildSpec` preserves raw values so out-of-range entries surface in
|
|
58
|
-
* `lintLoopSpec` rather than being silently clamped. */
|
|
59
54
|
export declare function buildSpec(input: Partial<LoopSpec>, expectedRid: string): LoopSpec;
|
|
60
55
|
/** Lint a LoopSpec — returns a report with semantic errors / warnings.
|
|
61
56
|
*
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
*/
|
|
26
26
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
27
27
|
import { dirname, join, isAbsolute } from 'node:path';
|
|
28
|
+
import { isArray } from '../../shared/array-guards.js';
|
|
28
29
|
/** Default termination strategy — wired by `peaks loop run` so a
|
|
29
30
|
* spec.yaml produced by `loop spec bootstrap` actually drives the
|
|
30
31
|
* loop driver. Previously the string was declared-and-validated but
|
|
@@ -50,21 +51,53 @@ export function resolveLoopSpec(projectRoot, sid, rid) {
|
|
|
50
51
|
* Note: numeric range validation is the lint layer's responsibility;
|
|
51
52
|
* `buildSpec` preserves raw values so out-of-range entries surface in
|
|
52
53
|
* `lintLoopSpec` rather than being silently clamped. */
|
|
53
|
-
|
|
54
|
-
|
|
54
|
+
/** `evaluators[]` from a JSON-derived payload, or `[]` when absent / not an
|
|
55
|
+
* array. Each entry is still inspected field-by-field; `kind` falls back to
|
|
56
|
+
* `''` so `lintLoopSpec` reports it rather than this function throwing.
|
|
57
|
+
*
|
|
58
|
+
* S10 (2026-09-20): extracted from `buildSpec` for two reasons. (1) The inline
|
|
59
|
+
* form used `Array.isArray`, typed `arg is any[]`, which widened
|
|
60
|
+
* `input.evaluators` — already `readonly SpecEvaluatorEntry[] | undefined` —
|
|
61
|
+
* to `any[]` and made `e.kind` an `any` access; `isArray` does not widen.
|
|
62
|
+
* (2) Keeping it inline would have cost `buildSpec` two extra branches, and its
|
|
63
|
+
* complexity was already exactly at the rule's limit — extracting instead
|
|
64
|
+
* lowers it. See `src/shared/array-guards.ts`. */
|
|
65
|
+
function toEvaluatorEntries(value) {
|
|
66
|
+
if (value === undefined)
|
|
67
|
+
return [];
|
|
68
|
+
if (!isArray(value))
|
|
69
|
+
return [];
|
|
70
|
+
return value.map((e) => ({
|
|
55
71
|
kind: typeof e.kind === 'string' ? e.kind : '',
|
|
56
72
|
...(typeof e.gate === 'string' ? { gate: e.gate } : {}),
|
|
57
73
|
...(typeof e.scope === 'string' ? { scope: e.scope } : {})
|
|
58
|
-
}))
|
|
59
|
-
|
|
74
|
+
}));
|
|
75
|
+
}
|
|
76
|
+
/** `sla[]` from a JSON-derived payload, or `[]` when absent / not an array. */
|
|
77
|
+
function toSlaEntries(value) {
|
|
78
|
+
if (value === undefined)
|
|
79
|
+
return [];
|
|
80
|
+
if (!isArray(value))
|
|
81
|
+
return [];
|
|
82
|
+
return value.map((s) => ({
|
|
60
83
|
evaluator: typeof s.evaluator === 'string' ? s.evaluator : '',
|
|
61
84
|
maxScore: typeof s.maxScore === 'number' && Number.isFinite(s.maxScore) ? s.maxScore : Number.NaN
|
|
62
|
-
}))
|
|
85
|
+
}));
|
|
86
|
+
}
|
|
87
|
+
export function buildSpec(input, expectedRid) {
|
|
88
|
+
const evaluators = toEvaluatorEntries(input.evaluators);
|
|
89
|
+
const sla = toSlaEntries(input.sla);
|
|
63
90
|
const term = input.termination ?? { strategy: 'manual' };
|
|
64
|
-
const strategy =
|
|
91
|
+
const strategy = term.strategy === 'max-cycles' ||
|
|
92
|
+
term.strategy === 'monotonic-violation' ||
|
|
93
|
+
term.strategy === 'manual'
|
|
94
|
+
? term.strategy
|
|
95
|
+
: 'manual';
|
|
65
96
|
const termination = {
|
|
66
97
|
strategy,
|
|
67
|
-
...(typeof term.maxCycles === 'number' && Number.isFinite(term.maxCycles) && term.maxCycles > 0
|
|
98
|
+
...(typeof term.maxCycles === 'number' && Number.isFinite(term.maxCycles) && term.maxCycles > 0
|
|
99
|
+
? { maxCycles: Math.floor(term.maxCycles) }
|
|
100
|
+
: {})
|
|
68
101
|
};
|
|
69
102
|
return {
|
|
70
103
|
schemaVersion: 1,
|
|
@@ -123,7 +156,8 @@ function validateSla(sla, evaluators, errors) {
|
|
|
123
156
|
}
|
|
124
157
|
}
|
|
125
158
|
function validateTermination(termination, errors) {
|
|
126
|
-
if (termination.strategy === 'max-cycles' &&
|
|
159
|
+
if (termination.strategy === 'max-cycles' &&
|
|
160
|
+
(termination.maxCycles === undefined || termination.maxCycles < 1)) {
|
|
127
161
|
errors.push(`termination.strategy=max-cycles requires maxCycles ≥ 1`);
|
|
128
162
|
}
|
|
129
163
|
}
|
|
@@ -199,7 +233,13 @@ export function lintSpecFile(filePath, expectedRid) {
|
|
|
199
233
|
return {
|
|
200
234
|
raw,
|
|
201
235
|
spec: null,
|
|
202
|
-
report: {
|
|
236
|
+
report: {
|
|
237
|
+
ok: false,
|
|
238
|
+
errors: [
|
|
239
|
+
`failed to parse spec yaml: ${error instanceof Error ? error.message : String(error)}`
|
|
240
|
+
],
|
|
241
|
+
warnings: []
|
|
242
|
+
}
|
|
203
243
|
};
|
|
204
244
|
}
|
|
205
245
|
}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slice Z-A (2.8.0) — LLM rerank service: pure core.
|
|
3
|
+
*
|
|
4
|
+
* Extraction target for the `b1-filesplit-campaign` (wave 3, leaf
|
|
5
|
+
* `b1w3-c-memory`): the finding-free top-level surface of
|
|
6
|
+
* `llm-reranker.ts` (token/prompt constants, the public option/result types,
|
|
7
|
+
* and the synchronous pure helpers). `llm-reranker.ts` imports and re-exports
|
|
8
|
+
* everything here so its public API path is unchanged.
|
|
9
|
+
*/
|
|
10
|
+
import type { MemorySearchResult } from './memory-search-service.js';
|
|
11
|
+
export declare const DEFAULT_TOP_N = 10;
|
|
12
|
+
export declare const DEFAULT_TOP_K = 5;
|
|
13
|
+
export declare const MAX_CANDIDATES = 30;
|
|
14
|
+
export declare const DEFAULT_CHAT_TIMEOUT_MS = 5000;
|
|
15
|
+
/**
|
|
16
|
+
* One chat message in OpenAI-compatible format. The rerank layer
|
|
17
|
+
* sends a single user-role message; `system` is reserved for Z-B
|
|
18
|
+
* once the prompt-engineering is solid.
|
|
19
|
+
*/
|
|
20
|
+
export interface RerankChatMessage {
|
|
21
|
+
readonly role: 'user' | 'system' | 'assistant';
|
|
22
|
+
readonly content: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Chat function injection. The caller is responsible for routing
|
|
26
|
+
* the messages to the active IDE's LLM (or a mock for tests). The
|
|
27
|
+
* function MUST resolve with the LLM's raw text response, or reject
|
|
28
|
+
* on timeout / network error. Markdown code fences are tolerated by
|
|
29
|
+
* `parseRerankResponse` and are NOT the chat function's job to strip.
|
|
30
|
+
*/
|
|
31
|
+
export type RerankChatFn = (messages: readonly RerankChatMessage[], signal: AbortSignal) => Promise<string>;
|
|
32
|
+
/**
|
|
33
|
+
* Options for `rerank()`. All optional; defaults match the Z-A
|
|
34
|
+
* proposal's AC-ZA-4 (fuzzy top-10 → rerank → top-5).
|
|
35
|
+
*/
|
|
36
|
+
export interface RerankOptions {
|
|
37
|
+
/** Max candidates fed to the LLM. Default 10 (per AC-ZA-4). */
|
|
38
|
+
readonly topN?: number;
|
|
39
|
+
/** Max results returned to the caller. Default 5 (per AC-ZA-4). */
|
|
40
|
+
readonly topK?: number;
|
|
41
|
+
/** Per-call chat timeout in ms. Default 5000 (per AC-ZA-8 L2). */
|
|
42
|
+
readonly chatTimeoutMs?: number;
|
|
43
|
+
/** Chat function injection. Default fails-open (returns input order). */
|
|
44
|
+
readonly chat?: RerankChatFn;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Token accounting for a single rerank call. Exposed so the
|
|
48
|
+
* AC-ZA-5 benchmark can report per-pipeline cost.
|
|
49
|
+
*/
|
|
50
|
+
export interface RerankTokenUsage {
|
|
51
|
+
/** Tokens used to assemble the rerank prompt (query + candidates). */
|
|
52
|
+
readonly promptTokens: number;
|
|
53
|
+
/** Tokens the LLM emitted (estimated via length/4). */
|
|
54
|
+
readonly responseTokens: number;
|
|
55
|
+
readonly total: number;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Rerank result. Always returns a `topK` array (possibly the
|
|
59
|
+
* original fuzzy order if rerank failed / was skipped) and a
|
|
60
|
+
* `warning` describing any degradation. Never throws — the
|
|
61
|
+
* caller can always use `topK` as a safe drop-in for the
|
|
62
|
+
* fuzzy top-K.
|
|
63
|
+
*/
|
|
64
|
+
export interface RerankResult {
|
|
65
|
+
/** Final ordered list (length <= topK, never more than input). */
|
|
66
|
+
readonly topK: readonly MemorySearchResult[];
|
|
67
|
+
/** Token accounting (zeros when rerank was skipped). */
|
|
68
|
+
readonly tokens: RerankTokenUsage;
|
|
69
|
+
/** One of 'reranked' | 'parse-failed-fallback' | 'chat-failed-fallback'
|
|
70
|
+
* | 'timeout-fallback' | 'skipped-no-chat-fn' | 'noop-empty-input'. */
|
|
71
|
+
readonly degradation: string;
|
|
72
|
+
/** Human-readable detail. null when degradation === 'reranked'. */
|
|
73
|
+
readonly warning: string | null;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Estimate token count for a string. `1 token ≈ 4 bytes` for English
|
|
77
|
+
* text (standard rough approximation).
|
|
78
|
+
*/
|
|
79
|
+
export declare function estimateTokens(text: string): number;
|
|
80
|
+
/**
|
|
81
|
+
* Build the rerank prompt. Pure function — no IO, no side effects.
|
|
82
|
+
* Trivially testable.
|
|
83
|
+
*
|
|
84
|
+
* Format (locked for Z-A; Z-B may tune):
|
|
85
|
+
*
|
|
86
|
+
* Query: "<query>"
|
|
87
|
+
*
|
|
88
|
+
* Rank the following <N> candidate memories by relevance to the
|
|
89
|
+
* query. Return a JSON array of the candidate indices in
|
|
90
|
+
* descending relevance. Return only the JSON — no prose, no
|
|
91
|
+
* markdown.
|
|
92
|
+
*
|
|
93
|
+
* Candidates:
|
|
94
|
+
* [0] name-a — description-a…
|
|
95
|
+
* [1] name-b — description-b…
|
|
96
|
+
* ...
|
|
97
|
+
*
|
|
98
|
+
* The LLM is expected to return e.g. `[3, 0, 4, 1, 2]`. The
|
|
99
|
+
* output is parsed by `parseRerankResponse`.
|
|
100
|
+
*/
|
|
101
|
+
export declare function renderRerankPrompt(query: string, candidates: readonly MemorySearchResult[]): string;
|
|
102
|
+
/**
|
|
103
|
+
* Apply a parsed index ordering to a candidate list. Indices that
|
|
104
|
+
* are out-of-range or duplicated are skipped (defensive). If the
|
|
105
|
+
* ordering covers fewer candidates than `topK`, the remaining
|
|
106
|
+
* slots are filled from the original fuzzy order.
|
|
107
|
+
*/
|
|
108
|
+
export declare function applyRerankOrder(candidates: readonly MemorySearchResult[], order: readonly number[], topK: number): MemorySearchResult[];
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slice Z-A (2.8.0) — LLM rerank service: pure core.
|
|
3
|
+
*
|
|
4
|
+
* Extraction target for the `b1-filesplit-campaign` (wave 3, leaf
|
|
5
|
+
* `b1w3-c-memory`): the finding-free top-level surface of
|
|
6
|
+
* `llm-reranker.ts` (token/prompt constants, the public option/result types,
|
|
7
|
+
* and the synchronous pure helpers). `llm-reranker.ts` imports and re-exports
|
|
8
|
+
* everything here so its public API path is unchanged.
|
|
9
|
+
*/
|
|
10
|
+
// Approximate 1 token = 4 bytes for English text. Standard rough
|
|
11
|
+
// approximation used across the pipeline (AC-ZA-5 benchmark).
|
|
12
|
+
const BYTES_PER_TOKEN = 4;
|
|
13
|
+
// Hard caps so a pathological query / 60-candidate list cannot blow
|
|
14
|
+
// up the LLM prompt. These are conservative defaults; Z-B may tune.
|
|
15
|
+
// Exported so `rerank()` (which stays in `llm-reranker.ts`) can read them.
|
|
16
|
+
export const DEFAULT_TOP_N = 10;
|
|
17
|
+
export const DEFAULT_TOP_K = 5;
|
|
18
|
+
export const MAX_CANDIDATES = 30;
|
|
19
|
+
const MAX_DESCRIPTION_CHARS = 240;
|
|
20
|
+
export const DEFAULT_CHAT_TIMEOUT_MS = 5_000;
|
|
21
|
+
/**
|
|
22
|
+
* Estimate token count for a string. `1 token ≈ 4 bytes` for English
|
|
23
|
+
* text (standard rough approximation).
|
|
24
|
+
*/
|
|
25
|
+
export function estimateTokens(text) {
|
|
26
|
+
return Math.ceil(Buffer.byteLength(text, 'utf8') / BYTES_PER_TOKEN);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Truncate a string to a maximum character count, appending an
|
|
30
|
+
* ellipsis marker when truncated. Used to keep the rerank prompt
|
|
31
|
+
* bounded when a candidate's description is unusually long.
|
|
32
|
+
*/
|
|
33
|
+
function truncateForPrompt(text, maxChars) {
|
|
34
|
+
if (text.length <= maxChars)
|
|
35
|
+
return text;
|
|
36
|
+
return `${text.slice(0, Math.max(0, maxChars - 1))}…`;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Build the rerank prompt. Pure function — no IO, no side effects.
|
|
40
|
+
* Trivially testable.
|
|
41
|
+
*
|
|
42
|
+
* Format (locked for Z-A; Z-B may tune):
|
|
43
|
+
*
|
|
44
|
+
* Query: "<query>"
|
|
45
|
+
*
|
|
46
|
+
* Rank the following <N> candidate memories by relevance to the
|
|
47
|
+
* query. Return a JSON array of the candidate indices in
|
|
48
|
+
* descending relevance. Return only the JSON — no prose, no
|
|
49
|
+
* markdown.
|
|
50
|
+
*
|
|
51
|
+
* Candidates:
|
|
52
|
+
* [0] name-a — description-a…
|
|
53
|
+
* [1] name-b — description-b…
|
|
54
|
+
* ...
|
|
55
|
+
*
|
|
56
|
+
* The LLM is expected to return e.g. `[3, 0, 4, 1, 2]`. The
|
|
57
|
+
* output is parsed by `parseRerankResponse`.
|
|
58
|
+
*/
|
|
59
|
+
export function renderRerankPrompt(query, candidates) {
|
|
60
|
+
const blocks = candidates.map((c, i) => {
|
|
61
|
+
const desc = truncateForPrompt(c.description, MAX_DESCRIPTION_CHARS);
|
|
62
|
+
return `[${i}] ${c.name} — ${desc}`;
|
|
63
|
+
});
|
|
64
|
+
return [
|
|
65
|
+
`Query: "${query}"`,
|
|
66
|
+
'',
|
|
67
|
+
`Rank the following ${candidates.length} candidate memories by relevance to the query. Return a JSON array of the candidate indices in descending relevance. Return only the JSON — no prose, no markdown.`,
|
|
68
|
+
'',
|
|
69
|
+
'Candidates:',
|
|
70
|
+
...blocks
|
|
71
|
+
].join('\n');
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Apply a parsed index ordering to a candidate list. Indices that
|
|
75
|
+
* are out-of-range or duplicated are skipped (defensive). If the
|
|
76
|
+
* ordering covers fewer candidates than `topK`, the remaining
|
|
77
|
+
* slots are filled from the original fuzzy order.
|
|
78
|
+
*/
|
|
79
|
+
export function applyRerankOrder(candidates, order, topK) {
|
|
80
|
+
const result = [];
|
|
81
|
+
const seen = new Set();
|
|
82
|
+
for (const idx of order) {
|
|
83
|
+
if (idx >= candidates.length)
|
|
84
|
+
continue;
|
|
85
|
+
if (seen.has(idx))
|
|
86
|
+
continue;
|
|
87
|
+
seen.add(idx);
|
|
88
|
+
const item = candidates[idx];
|
|
89
|
+
if (item === undefined)
|
|
90
|
+
continue;
|
|
91
|
+
result.push(item);
|
|
92
|
+
if (result.length >= topK)
|
|
93
|
+
return result;
|
|
94
|
+
}
|
|
95
|
+
for (let i = 0; i < candidates.length && result.length < topK; i += 1) {
|
|
96
|
+
if (seen.has(i))
|
|
97
|
+
continue;
|
|
98
|
+
const item = candidates[i];
|
|
99
|
+
if (item === undefined)
|
|
100
|
+
continue;
|
|
101
|
+
seen.add(i);
|
|
102
|
+
result.push(item);
|
|
103
|
+
}
|
|
104
|
+
return result;
|
|
105
|
+
}
|
|
@@ -49,93 +49,9 @@
|
|
|
49
49
|
* the wiring into `peaks memory search` is Z-B).
|
|
50
50
|
*/
|
|
51
51
|
import type { MemorySearchResult } from './memory-search-service.js';
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
* once the prompt-engineering is solid.
|
|
56
|
-
*/
|
|
57
|
-
export interface RerankChatMessage {
|
|
58
|
-
readonly role: 'user' | 'system' | 'assistant';
|
|
59
|
-
readonly content: string;
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Chat function injection. The caller is responsible for routing
|
|
63
|
-
* the messages to the active IDE's LLM (or a mock for tests). The
|
|
64
|
-
* function MUST resolve with the LLM's raw text response, or reject
|
|
65
|
-
* on timeout / network error. Markdown code fences are tolerated by
|
|
66
|
-
* `parseRerankResponse` and are NOT the chat function's job to strip.
|
|
67
|
-
*/
|
|
68
|
-
export type RerankChatFn = (messages: readonly RerankChatMessage[], signal: AbortSignal) => Promise<string>;
|
|
69
|
-
/**
|
|
70
|
-
* Options for `rerank()`. All optional; defaults match the Z-A
|
|
71
|
-
* proposal's AC-ZA-4 (fuzzy top-10 → rerank → top-5).
|
|
72
|
-
*/
|
|
73
|
-
export interface RerankOptions {
|
|
74
|
-
/** Max candidates fed to the LLM. Default 10 (per AC-ZA-4). */
|
|
75
|
-
readonly topN?: number;
|
|
76
|
-
/** Max results returned to the caller. Default 5 (per AC-ZA-4). */
|
|
77
|
-
readonly topK?: number;
|
|
78
|
-
/** Per-call chat timeout in ms. Default 5000 (per AC-ZA-8 L2). */
|
|
79
|
-
readonly chatTimeoutMs?: number;
|
|
80
|
-
/** Chat function injection. Default fails-open (returns input order). */
|
|
81
|
-
readonly chat?: RerankChatFn;
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Token accounting for a single rerank call. Exposed so the
|
|
85
|
-
* AC-ZA-5 benchmark can report per-pipeline cost.
|
|
86
|
-
*/
|
|
87
|
-
export interface RerankTokenUsage {
|
|
88
|
-
/** Tokens used to assemble the rerank prompt (query + candidates). */
|
|
89
|
-
readonly promptTokens: number;
|
|
90
|
-
/** Tokens the LLM emitted (estimated via length/4). */
|
|
91
|
-
readonly responseTokens: number;
|
|
92
|
-
readonly total: number;
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Rerank result. Always returns a `topK` array (possibly the
|
|
96
|
-
* original fuzzy order if rerank failed / was skipped) and a
|
|
97
|
-
* `warning` describing any degradation. Never throws — the
|
|
98
|
-
* caller can always use `topK` as a safe drop-in for the
|
|
99
|
-
* fuzzy top-K.
|
|
100
|
-
*/
|
|
101
|
-
export interface RerankResult {
|
|
102
|
-
/** Final ordered list (length <= topK, never more than input). */
|
|
103
|
-
readonly topK: readonly MemorySearchResult[];
|
|
104
|
-
/** Token accounting (zeros when rerank was skipped). */
|
|
105
|
-
readonly tokens: RerankTokenUsage;
|
|
106
|
-
/** One of 'reranked' | 'parse-failed-fallback' | 'chat-failed-fallback'
|
|
107
|
-
* | 'timeout-fallback' | 'skipped-no-chat-fn' | 'noop-empty-input'. */
|
|
108
|
-
readonly degradation: string;
|
|
109
|
-
/** Human-readable detail. null when degradation === 'reranked'. */
|
|
110
|
-
readonly warning: string | null;
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Estimate token count for a string. `1 token ≈ 4 bytes` for English
|
|
114
|
-
* text (standard rough approximation).
|
|
115
|
-
*/
|
|
116
|
-
export declare function estimateTokens(text: string): number;
|
|
117
|
-
/**
|
|
118
|
-
* Build the rerank prompt. Pure function — no IO, no side effects.
|
|
119
|
-
* Trivially testable.
|
|
120
|
-
*
|
|
121
|
-
* Format (locked for Z-A; Z-B may tune):
|
|
122
|
-
*
|
|
123
|
-
* Query: "<query>"
|
|
124
|
-
*
|
|
125
|
-
* Rank the following <N> candidate memories by relevance to the
|
|
126
|
-
* query. Return a JSON array of the candidate indices in
|
|
127
|
-
* descending relevance. Return only the JSON — no prose, no
|
|
128
|
-
* markdown.
|
|
129
|
-
*
|
|
130
|
-
* Candidates:
|
|
131
|
-
* [0] name-a — description-a…
|
|
132
|
-
* [1] name-b — description-b…
|
|
133
|
-
* ...
|
|
134
|
-
*
|
|
135
|
-
* The LLM is expected to return e.g. `[3, 0, 4, 1, 2]`. The
|
|
136
|
-
* output is parsed by `parseRerankResponse`.
|
|
137
|
-
*/
|
|
138
|
-
export declare function renderRerankPrompt(query: string, candidates: readonly MemorySearchResult[]): string;
|
|
52
|
+
import { type RerankChatFn, type RerankOptions, type RerankResult } from './llm-reranker-core.js';
|
|
53
|
+
export { applyRerankOrder, estimateTokens, renderRerankPrompt } from './llm-reranker-core.js';
|
|
54
|
+
export type { RerankChatFn, RerankChatMessage, RerankOptions, RerankResult, RerankTokenUsage } from './llm-reranker-core.js';
|
|
139
55
|
/**
|
|
140
56
|
* Parse the LLM's raw text response into an ordered list of
|
|
141
57
|
* candidate indices. Tolerates:
|
|
@@ -152,13 +68,6 @@ export declare function renderRerankPrompt(query: string, candidates: readonly M
|
|
|
152
68
|
* fuzzy order per AC-ZA-8 L3).
|
|
153
69
|
*/
|
|
154
70
|
export declare function parseRerankResponse(raw: string): readonly number[] | null;
|
|
155
|
-
/**
|
|
156
|
-
* Apply a parsed index ordering to a candidate list. Indices that
|
|
157
|
-
* are out-of-range or duplicated are skipped (defensive). If the
|
|
158
|
-
* ordering covers fewer candidates than `topK`, the remaining
|
|
159
|
-
* slots are filled from the original fuzzy order.
|
|
160
|
-
*/
|
|
161
|
-
export declare function applyRerankOrder(candidates: readonly MemorySearchResult[], order: readonly number[], topK: number): MemorySearchResult[];
|
|
162
71
|
/**
|
|
163
72
|
* The no-op chat function. Used when no real chat injection is
|
|
164
73
|
* available — the rerank layer fails-open and the caller gets
|
|
@@ -48,68 +48,11 @@
|
|
|
48
48
|
* - No integration with `memory-search-service.ts` (Z-A is a spike;
|
|
49
49
|
* the wiring into `peaks memory search` is Z-B).
|
|
50
50
|
*/
|
|
51
|
-
|
|
52
|
-
//
|
|
53
|
-
|
|
54
|
-
//
|
|
55
|
-
|
|
56
|
-
const DEFAULT_TOP_N = 10;
|
|
57
|
-
const DEFAULT_TOP_K = 5;
|
|
58
|
-
const MAX_CANDIDATES = 30;
|
|
59
|
-
const MAX_DESCRIPTION_CHARS = 240;
|
|
60
|
-
const DEFAULT_CHAT_TIMEOUT_MS = 5_000;
|
|
61
|
-
/**
|
|
62
|
-
* Estimate token count for a string. `1 token ≈ 4 bytes` for English
|
|
63
|
-
* text (standard rough approximation).
|
|
64
|
-
*/
|
|
65
|
-
export function estimateTokens(text) {
|
|
66
|
-
return Math.ceil(Buffer.byteLength(text, 'utf8') / BYTES_PER_TOKEN);
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Truncate a string to a maximum character count, appending an
|
|
70
|
-
* ellipsis marker when truncated. Used to keep the rerank prompt
|
|
71
|
-
* bounded when a candidate's description is unusually long.
|
|
72
|
-
*/
|
|
73
|
-
function truncateForPrompt(text, maxChars) {
|
|
74
|
-
if (text.length <= maxChars)
|
|
75
|
-
return text;
|
|
76
|
-
return `${text.slice(0, Math.max(0, maxChars - 1))}…`;
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Build the rerank prompt. Pure function — no IO, no side effects.
|
|
80
|
-
* Trivially testable.
|
|
81
|
-
*
|
|
82
|
-
* Format (locked for Z-A; Z-B may tune):
|
|
83
|
-
*
|
|
84
|
-
* Query: "<query>"
|
|
85
|
-
*
|
|
86
|
-
* Rank the following <N> candidate memories by relevance to the
|
|
87
|
-
* query. Return a JSON array of the candidate indices in
|
|
88
|
-
* descending relevance. Return only the JSON — no prose, no
|
|
89
|
-
* markdown.
|
|
90
|
-
*
|
|
91
|
-
* Candidates:
|
|
92
|
-
* [0] name-a — description-a…
|
|
93
|
-
* [1] name-b — description-b…
|
|
94
|
-
* ...
|
|
95
|
-
*
|
|
96
|
-
* The LLM is expected to return e.g. `[3, 0, 4, 1, 2]`. The
|
|
97
|
-
* output is parsed by `parseRerankResponse`.
|
|
98
|
-
*/
|
|
99
|
-
export function renderRerankPrompt(query, candidates) {
|
|
100
|
-
const blocks = candidates.map((c, i) => {
|
|
101
|
-
const desc = truncateForPrompt(c.description, MAX_DESCRIPTION_CHARS);
|
|
102
|
-
return `[${i}] ${c.name} — ${desc}`;
|
|
103
|
-
});
|
|
104
|
-
return [
|
|
105
|
-
`Query: "${query}"`,
|
|
106
|
-
'',
|
|
107
|
-
`Rank the following ${candidates.length} candidate memories by relevance to the query. Return a JSON array of the candidate indices in descending relevance. Return only the JSON — no prose, no markdown.`,
|
|
108
|
-
'',
|
|
109
|
-
'Candidates:',
|
|
110
|
-
...blocks,
|
|
111
|
-
].join('\n');
|
|
112
|
-
}
|
|
51
|
+
import { applyRerankOrder, DEFAULT_CHAT_TIMEOUT_MS, DEFAULT_TOP_K, DEFAULT_TOP_N, estimateTokens, MAX_CANDIDATES, renderRerankPrompt } from './llm-reranker-core.js';
|
|
52
|
+
// The pure core (constants, public option/result types, synchronous helpers)
|
|
53
|
+
// now lives in `llm-reranker-core.ts`. Re-export it from this module path so
|
|
54
|
+
// every existing importer of `llm-reranker.js` keeps resolving the same names.
|
|
55
|
+
export { applyRerankOrder, estimateTokens, renderRerankPrompt } from './llm-reranker-core.js';
|
|
113
56
|
/**
|
|
114
57
|
* Parse the LLM's raw text response into an ordered list of
|
|
115
58
|
* candidate indices. Tolerates:
|
|
@@ -142,7 +85,8 @@ export function parseRerankResponse(raw) {
|
|
|
142
85
|
try {
|
|
143
86
|
parsed = JSON.parse(candidate);
|
|
144
87
|
}
|
|
145
|
-
catch {
|
|
88
|
+
catch {
|
|
89
|
+
// TODO(g2): legacy silent catch — grace: 1 minor release (v2.14.0)
|
|
146
90
|
return null;
|
|
147
91
|
}
|
|
148
92
|
if (!Array.isArray(parsed))
|
|
@@ -156,39 +100,6 @@ export function parseRerankResponse(raw) {
|
|
|
156
100
|
}
|
|
157
101
|
return indices;
|
|
158
102
|
}
|
|
159
|
-
/**
|
|
160
|
-
* Apply a parsed index ordering to a candidate list. Indices that
|
|
161
|
-
* are out-of-range or duplicated are skipped (defensive). If the
|
|
162
|
-
* ordering covers fewer candidates than `topK`, the remaining
|
|
163
|
-
* slots are filled from the original fuzzy order.
|
|
164
|
-
*/
|
|
165
|
-
export function applyRerankOrder(candidates, order, topK) {
|
|
166
|
-
const result = [];
|
|
167
|
-
const seen = new Set();
|
|
168
|
-
for (const idx of order) {
|
|
169
|
-
if (idx >= candidates.length)
|
|
170
|
-
continue;
|
|
171
|
-
if (seen.has(idx))
|
|
172
|
-
continue;
|
|
173
|
-
seen.add(idx);
|
|
174
|
-
const item = candidates[idx];
|
|
175
|
-
if (item === undefined)
|
|
176
|
-
continue;
|
|
177
|
-
result.push(item);
|
|
178
|
-
if (result.length >= topK)
|
|
179
|
-
return result;
|
|
180
|
-
}
|
|
181
|
-
for (let i = 0; i < candidates.length && result.length < topK; i += 1) {
|
|
182
|
-
if (seen.has(i))
|
|
183
|
-
continue;
|
|
184
|
-
const item = candidates[i];
|
|
185
|
-
if (item === undefined)
|
|
186
|
-
continue;
|
|
187
|
-
seen.add(i);
|
|
188
|
-
result.push(item);
|
|
189
|
-
}
|
|
190
|
-
return result;
|
|
191
|
-
}
|
|
192
103
|
/**
|
|
193
104
|
* The no-op chat function. Used when no real chat injection is
|
|
194
105
|
* available — the rerank layer fails-open and the caller gets
|
|
@@ -213,7 +124,7 @@ export async function rerank(query, candidates, options = {}) {
|
|
|
213
124
|
topK: [],
|
|
214
125
|
tokens: { promptTokens: 0, responseTokens: 0, total: 0 },
|
|
215
126
|
degradation: 'noop-empty-input',
|
|
216
|
-
warning: null
|
|
127
|
+
warning: null
|
|
217
128
|
};
|
|
218
129
|
}
|
|
219
130
|
// Edge case 2: input fits within topK already. Rerank would be
|
|
@@ -223,7 +134,7 @@ export async function rerank(query, candidates, options = {}) {
|
|
|
223
134
|
topK: candidates.slice(0, topK),
|
|
224
135
|
tokens: { promptTokens: 0, responseTokens: 0, total: 0 },
|
|
225
136
|
degradation: 'noop-empty-input',
|
|
226
|
-
warning: null
|
|
137
|
+
warning: null
|
|
227
138
|
};
|
|
228
139
|
}
|
|
229
140
|
// Slice to topN (fuzzy already returns in score-descending order).
|
|
@@ -236,7 +147,7 @@ export async function rerank(query, candidates, options = {}) {
|
|
|
236
147
|
topK: truncated.slice(0, topK),
|
|
237
148
|
tokens: { promptTokens, responseTokens: 0, total: promptTokens },
|
|
238
149
|
degradation: 'skipped-no-chat-fn',
|
|
239
|
-
warning: 'No chat function provided; returning original fuzzy order.'
|
|
150
|
+
warning: 'No chat function provided; returning original fuzzy order.'
|
|
240
151
|
};
|
|
241
152
|
}
|
|
242
153
|
// Chat call with timeout (AbortController-based).
|
|
@@ -256,7 +167,7 @@ export async function rerank(query, candidates, options = {}) {
|
|
|
256
167
|
degradation: isTimeout ? 'timeout-fallback' : 'chat-failed-fallback',
|
|
257
168
|
warning: isTimeout
|
|
258
169
|
? `Chat timeout after ${chatTimeoutMs}ms; returning original fuzzy order.`
|
|
259
|
-
: `Chat failed: ${message}; returning original fuzzy order
|
|
170
|
+
: `Chat failed: ${message}; returning original fuzzy order.`
|
|
260
171
|
};
|
|
261
172
|
}
|
|
262
173
|
clearTimeout(timeoutHandle);
|
|
@@ -268,7 +179,7 @@ export async function rerank(query, candidates, options = {}) {
|
|
|
268
179
|
topK: truncated.slice(0, topK),
|
|
269
180
|
tokens: { promptTokens, responseTokens, total: promptTokens + responseTokens },
|
|
270
181
|
degradation: 'parse-failed-fallback',
|
|
271
|
-
warning: 'LLM response was not a valid JSON index array; returning original fuzzy order.'
|
|
182
|
+
warning: 'LLM response was not a valid JSON index array; returning original fuzzy order.'
|
|
272
183
|
};
|
|
273
184
|
}
|
|
274
185
|
// Apply the order and return.
|
|
@@ -277,6 +188,6 @@ export async function rerank(query, candidates, options = {}) {
|
|
|
277
188
|
topK: topKResult,
|
|
278
189
|
tokens: { promptTokens, responseTokens, total: promptTokens + responseTokens },
|
|
279
190
|
degradation: 'reranked',
|
|
280
|
-
warning: null
|
|
191
|
+
warning: null
|
|
281
192
|
};
|
|
282
193
|
}
|