peaks-loop 4.0.54 → 4.1.1
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 +61 -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 +86 -39
- package/dist/cli/commands/_super.js +40 -7
- package/dist/cli/commands/adapter-commands-s2a.js +8 -7
- package/dist/cli/commands/adapter-commands.d.ts +2 -2
- package/dist/cli/commands/adapter-commands.js +7 -8
- package/dist/cli/commands/api-diff-commands.js +5 -4
- package/dist/cli/commands/asset-commands.d.ts +2 -2
- package/dist/cli/commands/asset-commands.js +135 -132
- package/dist/cli/commands/audit-commands.d.ts +1 -1
- package/dist/cli/commands/audit-commands.js +75 -32
- package/dist/cli/commands/autonomous-swarm-commands.d.ts +1 -1
- package/dist/cli/commands/autonomous-swarm-commands.js +14 -8
- package/dist/cli/commands/baseline-commands.js +34 -9
- package/dist/cli/commands/bee-commands.d.ts +1 -1
- package/dist/cli/commands/bee-commands.js +18 -21
- package/dist/cli/commands/best-practice-scan-command.js +6 -34
- package/dist/cli/commands/best-practice-scan-helpers.d.ts +12 -0
- package/dist/cli/commands/best-practice-scan-helpers.js +37 -0
- package/dist/cli/commands/capability-commands.d.ts +1 -1
- package/dist/cli/commands/capability-commands.js +14 -4
- package/dist/cli/commands/capability-worker-config-sc-commands.d.ts +1 -1
- package/dist/cli/commands/changeset-commands.js +21 -18
- package/dist/cli/commands/code-gate-command.js +9 -2
- package/dist/cli/commands/code-job-shape-commands-read-job-shape.d.ts +15 -0
- package/dist/cli/commands/code-job-shape-commands-read-job-shape.js +70 -0
- package/dist/cli/commands/code-job-shape-commands.js +21 -45
- package/dist/cli/commands/code-mode-gate-commands.d.ts +15 -1
- package/dist/cli/commands/code-mode-gate-commands.js +19 -199
- package/dist/cli/commands/code-mode-gate-plan-command.d.ts +14 -0
- package/dist/cli/commands/code-mode-gate-plan-command.js +23 -0
- package/dist/cli/commands/code-mode-gate-should-pause-command.d.ts +24 -0
- package/dist/cli/commands/code-mode-gate-should-pause-command.js +137 -0
- package/dist/cli/commands/code-mode-gate-should-pause-envelope.d.ts +59 -0
- package/dist/cli/commands/code-mode-gate-should-pause-envelope.js +144 -0
- package/dist/cli/commands/code-orchestrator-can-do.js +4 -4
- package/dist/cli/commands/code-review-commands.js +18 -3
- package/dist/cli/commands/code-run-command.js +44 -7
- package/dist/cli/commands/code-runtime-commands.d.ts +17 -0
- package/dist/cli/commands/code-runtime-commands.js +105 -73
- package/dist/cli/commands/codegraph-commands.js +11 -6
- package/dist/cli/commands/codegraph-status-command.js +6 -2
- package/dist/cli/commands/comments-commands.d.ts +14 -0
- package/dist/cli/commands/comments-commands.js +96 -0
- 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 +57 -21
- package/dist/cli/commands/core/proxy-command.js +3 -1
- package/dist/cli/commands/core/session-command.js +16 -8
- package/dist/cli/commands/core/skill-command.js +32 -17
- package/dist/cli/commands/core/standards-command.js +56 -14
- package/dist/cli/commands/cron-commands-actions.d.ts +43 -0
- package/dist/cli/commands/cron-commands-actions.js +128 -0
- package/dist/cli/commands/cron-commands-schedule.d.ts +86 -0
- package/dist/cli/commands/cron-commands-schedule.js +151 -0
- package/dist/cli/commands/cron-commands.d.ts +35 -32
- package/dist/cli/commands/cron-commands.js +167 -211
- package/dist/cli/commands/cron-scheduler-commands.js +40 -20
- package/dist/cli/commands/cron-scheduler-persist.d.ts +110 -0
- package/dist/cli/commands/cron-scheduler-persist.js +171 -0
- package/dist/cli/commands/dashboard-long-run.js +45 -14
- package/dist/cli/commands/dashboard-summary.js +15 -5
- package/dist/cli/commands/dispatch-commands.js +65 -32
- package/dist/cli/commands/dispatch-from-dag.js +9 -10
- package/dist/cli/commands/doc-commands.js +8 -9
- package/dist/cli/commands/doctor/invoke-from-code.js +1 -1
- package/dist/cli/commands/e2e-verify-env.d.ts +19 -0
- package/dist/cli/commands/e2e-verify-env.js +19 -0
- package/dist/cli/commands/e2e-verify.d.ts +3 -14
- package/dist/cli/commands/e2e-verify.js +49 -29
- package/dist/cli/commands/ecc-commands.d.ts +18 -23
- package/dist/cli/commands/ecc-commands.js +39 -36
- 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 +16 -6
- package/dist/cli/commands/preferences-commands.js +13 -12
- package/dist/cli/commands/primer-command.js +5 -5
- package/dist/cli/commands/project-commands.d.ts +1 -1
- package/dist/cli/commands/project-commands.js +33 -9
- package/dist/cli/commands/qa-business-review-commands.js +16 -12
- package/dist/cli/commands/qa-commands.d.ts +1 -1
- package/dist/cli/commands/qa-commands.js +3 -5
- package/dist/cli/commands/release-commands.d.ts +3 -1
- package/dist/cli/commands/release-commands.js +33 -22
- package/dist/cli/commands/request-commands.js +47 -30
- package/dist/cli/commands/request-format-helpers.js +1 -1
- package/dist/cli/commands/retrospective-commands.d.ts +18 -11
- package/dist/cli/commands/retrospective-commands.js +24 -173
- package/dist/cli/commands/retrospective-index-command.d.ts +26 -0
- package/dist/cli/commands/retrospective-index-command.js +99 -0
- package/dist/cli/commands/retrospective-project-root.d.ts +9 -0
- package/dist/cli/commands/retrospective-project-root.js +15 -0
- package/dist/cli/commands/retrospective-search-command.d.ts +27 -0
- package/dist/cli/commands/retrospective-search-command.js +97 -0
- package/dist/cli/commands/retrospective-show-command.d.ts +23 -0
- package/dist/cli/commands/retrospective-show-command.js +80 -0
- package/dist/cli/commands/reviewer-commands.d.ts +1 -1
- package/dist/cli/commands/role-commands.js +14 -9
- package/dist/cli/commands/runtime-commands.js +14 -7
- package/dist/cli/commands/sc-commands.d.ts +1 -1
- package/dist/cli/commands/sc-commands.js +39 -6
- package/dist/cli/commands/scan-commands.js +36 -13
- package/dist/cli/commands/security-audit-commands.d.ts +1 -1
- package/dist/cli/commands/security-audit-commands.js +12 -7
- package/dist/cli/commands/sediment-commands.d.ts +2 -2
- package/dist/cli/commands/sediment-commands.js +146 -139
- package/dist/cli/commands/session-24h-mode.js +15 -2
- package/dist/cli/commands/session-checkpoint-command.js +1 -1
- package/dist/cli/commands/session-migrate-skill-name.js +1 -1
- package/dist/cli/commands/shadcn-commands.d.ts +1 -1
- package/dist/cli/commands/shadcn-commands.js +3 -1
- package/dist/cli/commands/share-commands.js +38 -39
- package/dist/cli/commands/skill-conformance-commands.d.ts +1 -1
- package/dist/cli/commands/skill-conformance-commands.js +1 -1
- package/dist/cli/commands/skill-loop-engineering-readiness-commands.js +16 -17
- package/dist/cli/commands/skill-visibility.js +2 -2
- package/dist/cli/commands/slice-commands.d.ts +1 -1
- package/dist/cli/commands/slice-commands.js +36 -12
- package/dist/cli/commands/slice-integrate-commands.js +6 -7
- package/dist/cli/commands/slice-review-commands-helpers.d.ts +26 -0
- package/dist/cli/commands/slice-review-commands-helpers.js +26 -0
- package/dist/cli/commands/slice-review-commands.js +16 -24
- package/dist/cli/commands/smoke-commands-add-path.d.ts +14 -0
- package/dist/cli/commands/smoke-commands-add-path.js +39 -0
- package/dist/cli/commands/smoke-commands-define.d.ts +18 -0
- package/dist/cli/commands/smoke-commands-define.js +97 -0
- package/dist/cli/commands/smoke-commands-run.d.ts +18 -0
- package/dist/cli/commands/smoke-commands-run.js +119 -0
- package/dist/cli/commands/smoke-commands.d.ts +10 -1
- package/dist/cli/commands/smoke-commands.js +17 -179
- package/dist/cli/commands/sop-commands.d.ts +1 -1
- package/dist/cli/commands/sop-commands.js +38 -10
- package/dist/cli/commands/statusline-commands.d.ts +1 -1
- package/dist/cli/commands/statusline-commands.js +21 -10
- package/dist/cli/commands/sub-agent/detached.js +3 -3
- package/dist/cli/commands/sub-agent-dispatch-guard.d.ts +1 -1
- package/dist/cli/commands/sub-agent-shared.js +1 -1
- package/dist/cli/commands/sub-agent-shutdown-commands.js +17 -9
- package/dist/cli/commands/swarm-commands.d.ts +1 -1
- package/dist/cli/commands/swarm-commands.js +13 -6
- package/dist/cli/commands/tech-commands-helpers.d.ts +37 -0
- package/dist/cli/commands/tech-commands-helpers.js +24 -0
- package/dist/cli/commands/tech-commands.d.ts +2 -29
- package/dist/cli/commands/tech-commands.js +15 -28
- package/dist/cli/commands/test-commands.js +27 -7
- package/dist/cli/commands/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 +8 -10
- package/dist/hooks/pre-tool-use-sub-agent.js +1 -6
- package/dist/reporters/bdd-reporter.js +9 -3
- package/dist/services/24h-mode/auto-engage.d.ts +19 -0
- package/dist/services/24h-mode/auto-engage.js +35 -0
- package/dist/services/24h-mode/decider.js +5 -1
- package/dist/services/24h-mode/store.js +4 -2
- package/dist/services/adapter/adapter-registry.js +20 -8
- package/dist/services/adapter/adapter.d.ts +2 -2
- package/dist/services/adapter/auto-adapter.d.ts +2 -2
- package/dist/services/adapter/auto-adapter.js +1 -1
- package/dist/services/adapter/claude-adapter.d.ts +1 -1
- package/dist/services/adapter/claude-adapter.js +8 -8
- package/dist/services/adapter/codex-adapter.d.ts +2 -2
- package/dist/services/adapter/codex-adapter.js +20 -8
- package/dist/services/adapter/copilot-adapter.d.ts +2 -2
- package/dist/services/adapter/copilot-adapter.js +20 -8
- package/dist/services/artifacts/artifact-prerequisites.js +10 -8
- package/dist/services/artifacts/artifact-service.js +3 -1
- package/dist/services/artifacts/artifact-template-bodies.d.ts +12 -0
- package/dist/services/artifacts/artifact-template-bodies.js +165 -0
- package/dist/services/artifacts/artifact-templates.js +26 -168
- package/dist/services/artifacts/request-artifact-service.js +14 -7
- package/dist/services/artifacts/request-artifact-state-helpers.d.ts +3 -2
- package/dist/services/artifacts/request-artifact-state-helpers.js +3 -5
- package/dist/services/artifacts/workspace-artifact-helpers.d.ts +28 -0
- package/dist/services/artifacts/workspace-artifact-helpers.js +54 -0
- package/dist/services/artifacts/workspace-service.d.ts +3 -22
- package/dist/services/artifacts/workspace-service.js +10 -60
- package/dist/services/audit/artifact-writer.js +21 -21
- package/dist/services/audit/audit-goal-service.js +2 -2
- package/dist/services/audit/backing-detector.js +7 -4
- package/dist/services/audit/classifier.js +3 -3
- package/dist/services/audit/decision-writer.js +13 -9
- package/dist/services/audit/enforcers/active-skill-resolver.js +15 -7
- package/dist/services/audit/enforcers/design-draft-confirm.js +4 -4
- package/dist/services/audit/enforcers/lint-audit-regression.js +10 -5
- package/dist/services/audit/enforcers/lint-bee-runtime-contract.js +16 -8
- package/dist/services/audit/enforcers/lint-catalog-governance.js +8 -4
- package/dist/services/audit/enforcers/lint-output-style.js +4 -2
- package/dist/services/audit/enforcers/lint-peaks-code-runtime.js +8 -3
- package/dist/services/audit/enforcers/lint-peaks-skill-runtime.js +8 -3
- package/dist/services/audit/enforcers/lint-peaks-ui-sc-txt-runtime.js +20 -20
- package/dist/services/audit/enforcers/lint-prd-artifact-handoff.js +5 -5
- package/dist/services/audit/enforcers/lint-prd-source-snapshot.d.ts +1 -1
- package/dist/services/audit/enforcers/lint-prd-source-snapshot.js +5 -5
- package/dist/services/audit/enforcers/lint-qa-gateguard-and-runtime.js +10 -10
- package/dist/services/audit/enforcers/lint-rd-handoff-coverage.js +10 -8
- package/dist/services/audit/enforcers/lint-reference-shape.js +50 -18
- package/dist/services/audit/enforcers/lint-skill-presence-mandatory.js +5 -5
- package/dist/services/audit/enforcers/lint-style.js +44 -11
- package/dist/services/audit/enforcers/lint-workflow-shape.js +4 -2
- package/dist/services/audit/enforcers/login-gate.js +2 -6
- package/dist/services/audit/enforcers/mock-placement.js +2 -2
- package/dist/services/audit/enforcers/no-root-pollution.js +38 -9
- package/dist/services/audit/enforcers/pre-rd-scan.js +1 -1
- package/dist/services/audit/enforcers/prototype-fidelity.js +1 -1
- package/dist/services/audit/enforcers/resume-detection.js +5 -4
- package/dist/services/audit/prose-ratio-calculator.js +1 -1
- package/dist/services/audit/red-line-catalog-p2-a-bee-runtime.d.ts +39 -0
- package/dist/services/audit/red-line-catalog-p2-a-bee-runtime.js +205 -0
- package/dist/services/audit/red-line-catalog-p2-a-lint-style.d.ts +52 -0
- package/dist/services/audit/red-line-catalog-p2-a-lint-style.js +205 -0
- package/dist/services/audit/red-line-catalog-p2-a.js +3 -374
- package/dist/services/audit/red-line-catalog-p2-b.js +26 -26
- package/dist/services/audit/red-line-catalog.js +26 -38
- package/dist/services/audit/red-lines-service.js +64 -49
- package/dist/services/audit/scanners/openspec-scanner.js +2 -2
- package/dist/services/audit/scanners/rules-tree-scanner.js +2 -2
- package/dist/services/audit/scanners/skills-tree-scanner.js +2 -2
- package/dist/services/audit/static-service.js +3 -3
- package/dist/services/audit-independent/index.d.ts +2 -2
- package/dist/services/audit-independent/index.js +2 -2
- package/dist/services/audit-independent/perf-audit-service.js +19 -8
- package/dist/services/audit-independent/security-audit-service.js +31 -16
- package/dist/services/autonomous-swarm/autonomous-swarm-service.js +75 -46
- package/dist/services/best-practice/output-formatter.js +7 -1
- package/dist/services/capability-audit-service/cross-check.js +11 -5
- package/dist/services/capability-audit-service/runner.js +15 -7
- package/dist/services/capability-baseline/store.js +16 -4
- package/dist/services/capability-baseline/types.js +15 -3
- package/dist/services/capability-baseline/validator.js +43 -7
- package/dist/services/capability-guard-runner/contracts/J02.js +36 -6
- package/dist/services/capability-guard-runner/contracts/J03.js +20 -11
- package/dist/services/capability-guard-runner/contracts/J04.js +24 -15
- package/dist/services/capability-guard-runner/contracts/J05.js +26 -10
- package/dist/services/capability-guard-runner/contracts/J07.js +8 -2
- package/dist/services/capability-guard-runner/contracts/J08.js +22 -5
- package/dist/services/capability-guard-runner/contracts/J10.js +6 -2
- package/dist/services/capability-guard-runner/contracts/J11.d.ts +5 -0
- package/dist/services/capability-guard-runner/contracts/J11.js +14 -2
- package/dist/services/capability-guard-runner/contracts/J12.js +12 -3
- package/dist/services/capability-guard-runner/diff.js +1 -5
- package/dist/services/changeset/changeset-check-service.js +1 -3
- package/dist/services/classify/classify-service.js +20 -8
- package/dist/services/classify/classify-types.js +22 -9
- package/dist/services/code/auto-compact-lifecycle.js +62 -39
- package/dist/services/code/auto-compact-modes.js +2 -2
- package/dist/services/code/auto-compact-orchestrator.js +14 -9
- package/dist/services/code/batch-heartbeat-poller.d.ts +10 -0
- package/dist/services/code/batch-heartbeat-poller.js +17 -1
- package/dist/services/code/compact-event-settle-types.d.ts +80 -0
- package/dist/services/code/compact-event-settle-types.js +20 -0
- package/dist/services/code/compact-event-settle.d.ts +3 -68
- package/dist/services/code/compact-event-settle.js +14 -10
- package/dist/services/code/dag-orchestrator.js +32 -26
- package/dist/services/code/job-shape-decision.js +3 -1
- package/dist/services/code/mode-gate-types.d.ts +57 -0
- package/dist/services/code/mode-gate-types.js +66 -0
- package/dist/services/code/mode-gate.d.ts +4 -58
- package/dist/services/code/mode-gate.js +25 -69
- 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/user-touchpoint-classifier.js +0 -7
- package/dist/services/code-review/ecc-bridge.d.ts +6 -6
- package/dist/services/code-review/ecc-bridge.js +23 -23
- package/dist/services/codegraph/codegraph-autorefresh.js +56 -39
- package/dist/services/codegraph/codegraph-config-repair-writer.js +4 -1
- package/dist/services/codegraph/codegraph-exclude-integrity.js +4 -1
- package/dist/services/codegraph/codegraph-exclude-repair.js +1 -2
- package/dist/services/codegraph/codegraph-index-integrity.js +1 -1
- package/dist/services/codegraph/codegraph-preflight-service.d.ts +3 -26
- package/dist/services/codegraph/codegraph-preflight-service.js +16 -37
- package/dist/services/codegraph/codegraph-preflight-structure.d.ts +32 -0
- package/dist/services/codegraph/codegraph-preflight-structure.js +33 -0
- package/dist/services/codegraph/codegraph-process-runner.js +12 -1
- package/dist/services/codegraph/codegraph-service.js +9 -1
- package/dist/services/comments/citation-rules.d.ts +154 -0
- package/dist/services/comments/citation-rules.js +241 -0
- package/dist/services/comments/comment-audit.d.ts +57 -0
- package/dist/services/comments/comment-audit.js +100 -0
- package/dist/services/comments/comment-citations.d.ts +60 -0
- package/dist/services/comments/comment-citations.js +186 -0
- package/dist/services/comments/comment-hygiene.d.ts +79 -0
- package/dist/services/comments/comment-hygiene.js +133 -0
- package/dist/services/comments/comment-prune.d.ts +88 -0
- package/dist/services/comments/comment-prune.js +148 -0
- package/dist/services/comments/prune-apply.d.ts +60 -0
- package/dist/services/comments/prune-apply.js +150 -0
- package/dist/services/comments/repo-path-probe.d.ts +43 -0
- package/dist/services/comments/repo-path-probe.js +78 -0
- package/dist/services/compact/request-transition-hook.js +2 -1
- package/dist/services/compact/suggest-service.d.ts +3 -61
- package/dist/services/compact/suggest-service.js +9 -12
- package/dist/services/compact/suggest-types.d.ts +76 -0
- package/dist/services/compact/suggest-types.js +10 -0
- package/dist/services/compact-history/compact-history-service.js +2 -2
- package/dist/services/compact-statusline/compact-lifecycle-store.d.ts +2 -32
- package/dist/services/compact-statusline/compact-lifecycle-store.js +7 -12
- package/dist/services/compact-statusline/compact-lifecycle-types.d.ts +32 -0
- package/dist/services/compact-statusline/compact-lifecycle-types.js +8 -0
- package/dist/services/compact-statusline/compact-statusline-cell-table.d.ts +42 -0
- package/dist/services/compact-statusline/compact-statusline-cell-table.js +63 -0
- package/dist/services/compact-statusline/compact-statusline-service.d.ts +4 -21
- package/dist/services/compact-statusline/compact-statusline-service.js +9 -101
- package/dist/services/compact-statusline/compact-statusline-state.d.ts +4 -0
- package/dist/services/compact-statusline/compact-statusline-state.js +50 -0
- package/dist/services/config/config-migration.js +2 -2
- package/dist/services/config/config-restore.js +1 -1
- package/dist/services/config/config-rollback.js +1 -1
- package/dist/services/config/config-safety.js +28 -10
- package/dist/services/config/config-service.js +114 -31
- package/dist/services/config/model-routing.js +5 -2
- package/dist/services/config/proxy-service.js +6 -1
- package/dist/services/config/workspace-state-service.js +17 -5
- package/dist/services/context/auto-compact-dispatcher-input.d.ts +38 -0
- package/dist/services/context/auto-compact-dispatcher-input.js +9 -0
- package/dist/services/context/auto-compact-dispatcher.d.ts +2 -30
- package/dist/services/context/auto-compact-reader-input.d.ts +30 -0
- package/dist/services/context/auto-compact-reader-input.js +8 -0
- package/dist/services/context/auto-compact-reader.d.ts +2 -24
- package/dist/services/context/auto-compact-reader.js +4 -1
- package/dist/services/context/auto-compact-thresholds.d.ts +54 -0
- package/dist/services/context/auto-compact-thresholds.js +19 -0
- package/dist/services/context/auto-compact-types.d.ts +2 -46
- package/dist/services/context/auto-compact-types.js +1 -11
- package/dist/services/context/build-dispatch-system-prompt.js +2 -2
- package/dist/services/context/collector.js +8 -10
- package/dist/services/context/context-audit-hint.js +7 -5
- package/dist/services/context/context-audit-keys.d.ts +15 -0
- package/dist/services/context/context-audit-keys.js +77 -0
- package/dist/services/context/context-audit-limits.d.ts +20 -0
- package/dist/services/context/context-audit-limits.js +31 -0
- package/dist/services/context/context-audit-scan.d.ts +19 -0
- package/dist/services/context/context-audit-scan.js +246 -0
- package/dist/services/context/context-audit-types.d.ts +65 -0
- package/dist/services/context/context-audit-types.js +10 -0
- package/dist/services/context/context-audit.d.ts +13 -59
- package/dist/services/context/context-audit.js +38 -254
- package/dist/services/context/context-builder.js +4 -4
- package/dist/services/context/context-schema.d.ts +1 -1
- package/dist/services/context/context-schema.js +13 -13
- package/dist/services/context/doc-retriever.js +2 -2
- package/dist/services/context/harness-context-witness.js +43 -24
- package/dist/services/context/harness-window-config.js +27 -7
- package/dist/services/context/ide-detect.js +2 -1
- package/dist/services/context/index.d.ts +1 -1
- package/dist/services/context/memory-index-reader.js +3 -9
- package/dist/services/context/memory-preflight-config.js +3 -5
- package/dist/services/context/memory-preflight-service.d.ts +2 -20
- package/dist/services/context/memory-preflight-service.js +37 -68
- package/dist/services/context/memory-preflight-support.d.ts +48 -0
- package/dist/services/context/memory-preflight-support.js +56 -0
- package/dist/services/context/post-compact-reinjection.js +3 -3
- package/dist/services/context/renderer.js +7 -3
- package/dist/services/context/spillover-store.js +3 -1
- package/dist/services/context/summary-view.js +1 -1
- package/dist/services/context/threshold.js +2 -2
- package/dist/services/context/tokenizer.js +3 -3
- package/dist/services/crystallization/crystallization-brief-schema.d.ts +80 -0
- package/dist/services/crystallization/crystallization-brief-schema.js +159 -0
- package/dist/services/crystallization/crystallization-service.d.ts +7 -7
- package/dist/services/crystallization/crystallization-service.js +56 -55
- package/dist/services/crystallization/crystallization-store.d.ts +2 -2
- package/dist/services/crystallization/crystallization-store.js +37 -20
- package/dist/services/crystallization/crystallization-types.d.ts +4 -56
- package/dist/services/crystallization/crystallization-types.js +31 -184
- package/dist/services/crystallization/evidence-brief-builder.d.ts +3 -3
- package/dist/services/crystallization/evidence-brief-builder.js +32 -38
- package/dist/services/crystallization/index.d.ts +4 -4
- package/dist/services/crystallization/index.js +4 -4
- package/dist/services/dashboard/project-dashboard-service.js +7 -1
- package/dist/services/dispatch/await-batch-helpers.d.ts +55 -0
- package/dist/services/dispatch/await-batch-helpers.js +206 -0
- package/dist/services/dispatch/await-batch.d.ts +50 -7
- package/dist/services/dispatch/await-batch.js +97 -194
- package/dist/services/dispatch/batch-counter.js +2 -1
- package/dist/services/dispatch/conflict-replay.js +2 -2
- package/dist/services/dispatch/contract-store.js +5 -2
- package/dist/services/dispatch/dispatch-record-input-types.d.ts +81 -0
- package/dist/services/dispatch/dispatch-record-input-types.js +1 -0
- package/dist/services/dispatch/dispatch-record-types.d.ts +6 -73
- package/dist/services/dispatch/dispatch-record-upgrade-fields.d.ts +72 -0
- package/dist/services/dispatch/dispatch-record-upgrade-fields.js +242 -0
- package/dist/services/dispatch/dispatch-record-upgrade-guards.d.ts +15 -0
- package/dist/services/dispatch/dispatch-record-upgrade-guards.js +55 -0
- package/dist/services/dispatch/dispatch-record-upgrade.d.ts +2 -4
- package/dist/services/dispatch/dispatch-record-upgrade.js +21 -213
- package/dist/services/dispatch/dispatch-record-writer.js +54 -26
- package/dist/services/dispatch/dispatch-sub-agent.js +7 -2
- package/dist/services/dispatch/e2e-fixtures.js +1 -1
- package/dist/services/dispatch/isolation-lease.js +39 -17
- package/dist/services/dispatch/merge-back-runner.js +51 -11
- package/dist/services/dispatch/service-shutdown.js +4 -1
- package/dist/services/dispatch/slice-dag-types.d.ts +116 -0
- package/dist/services/dispatch/slice-dag-types.js +41 -0
- package/dist/services/dispatch/slice-dag.d.ts +3 -109
- package/dist/services/dispatch/slice-dag.js +13 -36
- package/dist/services/dispatch/sub-agent-batch-await.d.ts +47 -0
- package/dist/services/dispatch/sub-agent-batch-await.js +73 -0
- package/dist/services/dispatch/sub-agent-dispatcher-types.d.ts +122 -0
- package/dist/services/dispatch/sub-agent-dispatcher-types.js +12 -0
- package/dist/services/dispatch/sub-agent-dispatcher.d.ts +3 -145
- package/dist/services/dispatch/sub-agent-dispatcher.js +14 -70
- package/dist/services/dispatch/test-tool-detection.js +12 -1
- package/dist/services/doc/doc-generator.js +19 -4
- package/dist/services/doctor/doctor-service/checks/check-id-schema.js +16 -8
- package/dist/services/doctor/doctor-service/checks/codegraph-capability.d.ts +7 -2
- package/dist/services/doctor/doctor-service/checks/codegraph-capability.js +26 -8
- package/dist/services/doctor/doctor-service/checks/codegraph-exclude-integrity.js +16 -8
- package/dist/services/doctor/doctor-service/checks/codegraph-index-integrity.js +16 -8
- package/dist/services/doctor/doctor-service/checks/dist-source-version.js +18 -9
- package/dist/services/doctor/doctor-service/checks/ecc-hooks-schema-drift.js +20 -10
- package/dist/services/doctor/doctor-service/checks/gateguard-conflict.js +18 -9
- package/dist/services/doctor/doctor-service/checks/l3-memory-health.js +25 -11
- package/dist/services/doctor/doctor-service/checks/l3-orphan-sessions.js +12 -6
- package/dist/services/doctor/doctor-service/checks/multi-binary-drift.d.ts +7 -16
- package/dist/services/doctor/doctor-service/checks/multi-binary-drift.js +50 -70
- package/dist/services/doctor/doctor-service/checks/schema-validity.js +5 -1
- package/dist/services/doctor/doctor-service/checks/skill-presence.js +4 -2
- package/dist/services/doctor/doctor-service/checks/statusline-install.js +8 -4
- package/dist/services/doctor/doctor-service/checks/statusline-runtime.js +8 -4
- package/dist/services/doctor/doctor-service/checks/user-config.js +4 -2
- package/dist/services/doctor/doctor-service/checks/workspace-init.js +8 -4
- package/dist/services/doctor/doctor-service/checks/workspace-layout.js +19 -11
- package/dist/services/doctor/doctor-service/index.js +4 -2
- package/dist/services/doctor/doctor-service/multi-binary-drift-helpers.d.ts +40 -0
- package/dist/services/doctor/doctor-service/multi-binary-drift-helpers.js +49 -0
- package/dist/services/doctor/doctor-service/plugin-registry.js +1 -1
- package/dist/services/doctor/doctor-service/probe-types.d.ts +210 -0
- package/dist/services/doctor/doctor-service/probe-types.js +14 -0
- package/dist/services/doctor/doctor-service/types.d.ts +7 -197
- package/dist/services/doctor/index.d.ts +1 -1
- package/dist/services/doctor/index.js +1 -1
- package/dist/services/env/shell-probe.js +8 -2
- package/dist/services/evidence/evidence-body-builders.d.ts +23 -0
- package/dist/services/evidence/evidence-body-builders.js +197 -0
- package/dist/services/evidence/evidence-generator.js +6 -187
- package/dist/services/evolution/evolution-constraints.d.ts +43 -0
- package/dist/services/evolution/evolution-constraints.js +54 -0
- package/dist/services/evolution/evolution-evaluation-schema.d.ts +43 -0
- package/dist/services/evolution/evolution-evaluation-schema.js +43 -0
- package/dist/services/evolution/evolution-service.d.ts +6 -6
- package/dist/services/evolution/evolution-service.js +58 -58
- package/dist/services/evolution/evolution-store.d.ts +2 -2
- package/dist/services/evolution/evolution-store.js +37 -51
- package/dist/services/evolution/evolution-types.d.ts +2 -22
- package/dist/services/evolution/evolution-types.js +41 -101
- package/dist/services/evolution/independent-evaluator-runner.d.ts +3 -3
- package/dist/services/evolution/independent-evaluator-runner.js +20 -22
- package/dist/services/evolution/regression-skeptic-runner.d.ts +2 -2
- package/dist/services/evolution/regression-skeptic-runner.js +18 -18
- package/dist/services/feedback/feedback-promotion-service.js +48 -12
- package/dist/services/feedback/promotion-artifact-evidence.d.ts +2 -16
- package/dist/services/feedback/promotion-artifact-evidence.js +6 -83
- package/dist/services/feedback/promotion-artifact-json-evidence.d.ts +29 -0
- package/dist/services/feedback/promotion-artifact-json-evidence.js +39 -0
- package/dist/services/feedback/promotion-source-comments.d.ts +47 -0
- package/dist/services/feedback/promotion-source-comments.js +61 -0
- package/dist/services/final-review/final-review-contract.d.ts +26 -0
- package/dist/services/final-review/final-review-contract.js +14 -0
- package/dist/services/final-review/final-review-delivery.d.ts +63 -0
- package/dist/services/final-review/final-review-delivery.js +124 -0
- package/dist/services/final-review/final-review-evidence-budget.d.ts +125 -0
- package/dist/services/final-review/final-review-evidence-budget.js +218 -0
- package/dist/services/final-review/final-review-evidence-collect.d.ts +4 -0
- package/dist/services/final-review/final-review-evidence-collect.js +230 -0
- package/dist/services/final-review/final-review-evidence-sources.d.ts +138 -0
- package/dist/services/final-review/final-review-evidence-sources.js +139 -0
- package/dist/services/final-review/final-review-fifth-dim.d.ts +8 -0
- package/dist/services/final-review/final-review-fifth-dim.js +20 -0
- package/dist/services/final-review/final-review-gates.d.ts +119 -0
- package/dist/services/final-review/final-review-gates.js +214 -0
- package/dist/services/final-review/final-review-output-budget.d.ts +88 -0
- package/dist/services/final-review/final-review-output-budget.js +161 -0
- package/dist/services/final-review/final-review-prompt.d.ts +35 -0
- package/dist/services/final-review/final-review-prompt.js +112 -0
- package/dist/services/final-review/final-review-reviewer.d.ts +57 -0
- package/dist/services/final-review/final-review-reviewer.js +95 -0
- package/dist/services/final-review/final-review-runner.d.ts +3 -0
- package/dist/services/final-review/final-review-runner.js +158 -0
- package/dist/services/final-review/final-review-service.d.ts +119 -373
- package/dist/services/final-review/final-review-service.js +48 -1380
- package/dist/services/final-review/final-review-verdicts.d.ts +60 -0
- package/dist/services/final-review/final-review-verdicts.js +91 -0
- package/dist/services/final-review/index.d.ts +3 -3
- package/dist/services/final-review/index.js +2 -2
- package/dist/services/final-review/pre-post-diff.js +32 -29
- package/dist/services/fixture/fixture-capture-service.js +14 -6
- package/dist/services/fresh-context/trigger-scan.js +13 -2
- package/dist/services/fuzzy-matching/fuzzy-match-service.js +1 -1
- package/dist/services/fuzzy-matching/fzf-pick-service.js +6 -1
- package/dist/services/hooks/pre-tool-code-gate.js +2 -2
- package/dist/services/hooks/presence-marker-detector.js +12 -2
- package/dist/services/hooks/worktree-authorization-gate.js +21 -7
- package/dist/services/ide/adapters/claude-code-adapter.js +30 -17
- package/dist/services/ide/adapters/codex-adapter.js +3 -5
- package/dist/services/ide/adapters/cursor-adapter.js +3 -5
- package/dist/services/ide/adapters/hermes-adapter.js +2 -4
- package/dist/services/ide/adapters/openclaw-adapter.js +2 -4
- package/dist/services/ide/adapters/qoder-adapter.js +2 -4
- package/dist/services/ide/adapters/tongyi-lingma-adapter.js +1 -1
- package/dist/services/ide/adapters/trae-adapter.js +3 -5
- package/dist/services/ide/adapters/zcode-adapter.js +8 -7
- package/dist/services/ide/current-model-detector.js +2 -1
- package/dist/services/ide/ide-compact-types.d.ts +153 -0
- package/dist/services/ide/ide-compact-types.js +1 -0
- package/dist/services/ide/ide-registry.js +1 -1
- package/dist/services/ide/ide-types.d.ts +7 -145
- package/dist/services/ide/resource-profile.js +1 -1
- package/dist/services/ide/shared/atomic-json.js +2 -1
- package/dist/services/impact/impact-scan-service.js +12 -5
- package/dist/services/job/job-commit-verification.d.ts +73 -0
- package/dist/services/job/job-commit-verification.js +72 -0
- package/dist/services/job/job-orchestrator.d.ts +42 -0
- package/dist/services/job/job-orchestrator.js +110 -10
- package/dist/services/job/job-progress-store.d.ts +75 -5
- package/dist/services/job/job-progress-store.js +83 -6
- package/dist/services/job/job-rotation.d.ts +1 -1
- package/dist/services/job/job-rotation.js +5 -1
- package/dist/services/job/job-state-store.js +2 -2
- package/dist/services/job/job-types.js +49 -20
- package/dist/services/job/subagent-job-wrapper.d.ts +1 -1
- package/dist/services/job/subagent-job-wrapper.js +5 -1
- package/dist/services/job-snapshot/snapshot.js +2 -2
- package/dist/services/karpathy-cost/karpathy-cost-check-service.js +23 -13
- package/dist/services/legacy/legacy-detector.js +51 -5
- package/dist/services/lint/detect-eslint.js +10 -4
- package/dist/services/lint/detect-ocr-18.js +11 -3
- package/dist/services/lint/eslint-runner-support.d.ts +22 -0
- package/dist/services/lint/eslint-runner-support.js +185 -0
- package/dist/services/lint/eslint-runner-types.d.ts +69 -0
- package/dist/services/lint/eslint-runner-types.js +11 -0
- package/dist/services/lint/eslint-runner.d.ts +4 -56
- package/dist/services/lint/eslint-runner.js +24 -178
- package/dist/services/lint/npx-resolver.js +1 -3
- package/dist/services/lint/ocr-18-acquire.js +15 -4
- package/dist/services/lint/ocr-multilang-adapter.js +4 -5
- package/dist/services/llm/anthropic-runner.js +4 -1
- package/dist/services/log/log-commands-service.js +2 -6
- package/dist/services/log/logger.js +15 -12
- package/dist/services/log/retention.d.ts +0 -16
- package/dist/services/log/retention.js +2 -18
- 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 +19 -7
- package/dist/services/memory/project-memory-service/store/atomic-write.js +144 -38
- package/dist/services/memory/project-memory-service/store/paths.js +2 -1
- package/dist/services/memory/project-memory-service/types.d.ts +3 -31
- package/dist/services/memory/project-memory-service/types.js +1 -76
- package/dist/services/migrate-skill-name/migrate.js +1 -1
- package/dist/services/migrate-skill-name/schema.js +1 -1
- package/dist/services/mode/mode-enforcement.js +4 -2
- package/dist/services/mode/mode-status-service.d.ts +27 -9
- package/dist/services/mode/mode-status-service.js +64 -12
- package/dist/services/observability/aggregation-helpers.d.ts +22 -0
- package/dist/services/observability/aggregation-helpers.js +65 -0
- package/dist/services/observability/aggregation-types.d.ts +66 -0
- package/dist/services/observability/aggregation-types.js +34 -0
- package/dist/services/observability/aggregation.d.ts +5 -53
- package/dist/services/observability/aggregation.js +17 -80
- package/dist/services/observability/jsonl-store.js +2 -1
- package/dist/services/observability/observability-schema.d.ts +71 -0
- package/dist/services/observability/observability-schema.js +64 -0
- package/dist/services/observability/observability-service.d.ts +3 -56
- package/dist/services/observability/observability-service.js +9 -49
- package/dist/services/openspec/coverage-evidence-reader.js +18 -11
- package/dist/services/openspec/openspec-archive-service.js +31 -24
- package/dist/services/openspec/openspec-init-service.js +8 -2
- package/dist/services/openspec/openspec-propose-from-doctor-service.js +1 -1
- package/dist/services/openspec/openspec-scan-service.js +4 -1
- package/dist/services/openspec/openspec-validate-service.js +26 -5
- package/dist/services/perf/perf-baseline-service.js +2 -6
- package/dist/services/polyrepo/polyrepo-dispatcher.js +2 -1
- package/dist/services/polyrepo/polyrepo-scanner.js +4 -1
- package/dist/services/prd/handoff-frontmatter-shape.d.ts +42 -0
- package/dist/services/prd/handoff-frontmatter-shape.js +67 -0
- package/dist/services/prd/handoff-frontmatter.js +62 -1
- package/dist/services/prd/handoff-gate-evidence.js +14 -10
- 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 +12 -38
- package/dist/services/prd/handoff-service.js +25 -147
- package/dist/services/prd/handoff-types.d.ts +33 -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.js +1 -4
- package/dist/services/prd/project-scan-sediment.js +1 -4
- package/dist/services/preferences/preferences-service.js +6 -8
- package/dist/services/preferences/preferences-types.js +4 -4
- package/dist/services/qa/bdd-test-style-contract.d.ts +41 -0
- package/dist/services/qa/bdd-test-style-contract.js +37 -0
- package/dist/services/qa/bdd-test-style-verifier.d.ts +2 -24
- package/dist/services/qa/bdd-test-style-verifier.js +5 -31
- package/dist/services/qa/browser-event-logger.js +2 -1
- package/dist/services/qa/qa-business-review-state.js +20 -5
- package/dist/services/qa/screenshot-archive-service.js +1 -3
- package/dist/services/rd/ast-gate.js +2 -2
- package/dist/services/rd/impl.js +1 -1
- package/dist/services/rd/rd-service.js +117 -43
- package/dist/services/rd/reviewer-dispatch-policy.js +4 -7
- package/dist/services/rd/standards-diagnostic.js +4 -1
- package/dist/services/rd/strategy.js +10 -3
- package/dist/services/rd/tactical-stage.js +2 -2
- package/dist/services/rd/types.js +9 -7
- package/dist/services/rd-swarm/rd-swarm-service.d.ts +2 -45
- package/dist/services/rd-swarm/rd-swarm-service.js +140 -21
- package/dist/services/rd-swarm/rd-swarm-types.d.ts +54 -0
- package/dist/services/rd-swarm/rd-swarm-types.js +10 -0
- package/dist/services/recommendations/capability-map-service.js +10 -2
- package/dist/services/recommendations/capability-seed-items.js +81 -14
- package/dist/services/recommendations/capability-seed-mappings.js +420 -48
- package/dist/services/recommendations/capability-seed-sources-mcp-server.d.ts +9 -0
- package/dist/services/recommendations/capability-seed-sources-mcp-server.js +233 -0
- package/dist/services/recommendations/capability-seed-sources.js +127 -32
- package/dist/services/recommendations/installed-capability-detector.d.ts +5 -5
- package/dist/services/recommendations/installed-capability-detector.js +11 -10
- 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 +74 -0
- package/dist/services/scan/archetype-detection.js +315 -0
- package/dist/services/scan/archetype-service.js +58 -133
- 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/scan-types.d.ts +9 -0
- 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/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/generated-artifacts-stamp.d.ts +2 -2
- package/dist/services/workspace/generated-artifacts-stamp.js +2 -2
- 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 +12 -4
- package/dist/services/workspace/workspace-state-service.js +1 -1
- package/dist/services/worktree/git-worktree-parser.js +13 -3
- package/dist/services/worktree/host-worktree-reconciler.js +8 -4
- package/dist/services/worktree/long-path-cleanup.js +23 -6
- package/dist/services/worktree/worktree-gc-guard.js +3 -1
- package/dist/services/worktree/worktree-lease-types.d.ts +53 -0
- package/dist/services/worktree/worktree-lease-types.js +10 -0
- package/dist/services/worktree/worktree-lease.d.ts +2 -44
- package/dist/shared/array-guards.d.ts +30 -0
- package/dist/shared/array-guards.js +32 -0
- package/dist/shared/format-md-compact-internals.d.ts +26 -0
- package/dist/shared/format-md-compact-internals.js +125 -0
- package/dist/shared/format-md-compact.js +1 -117
- package/dist/shared/fs-utils.js +2 -1
- package/dist/shared/incrementing-number.js +3 -3
- package/dist/shared/json-parse.d.ts +71 -0
- package/dist/shared/json-parse.js +32 -0
- package/dist/shared/json-schema-mini.js +3 -1
- package/dist/shared/path-safety.js +3 -1
- package/dist/shared/path-utils.d.ts +20 -0
- package/dist/shared/path-utils.js +26 -0
- package/dist/shared/planner-response.js +3 -3
- package/dist/shared/stale-policy.js +1 -3
- package/dist/skills/peaks-maker/index.js +11 -11
- package/package.json +31 -8
- package/scripts/clean-dist.mjs +1 -2
- package/scripts/copy-templates.mjs +2 -4
- package/scripts/install-skills.mjs +286 -283
- package/scripts/sync-version.mjs +25 -8
- package/scripts/watch.mjs +8 -2
- package/skills/bee/peaks-qa/references/reading-handoff-frontmatter.md +3 -1
- package/skills/bee/peaks-rd/references/parallel-review-fanout.md +1 -1
- package/skills/bee/peaks-rd/references/rd-fanout-contracts.md +3 -2
- package/skills/bee/peaks-rd/references/writing-handoff-frontmatter.md +29 -7
- package/skills/peaks-code/SKILL.md +1 -1
- package/skills/peaks-code/references/frontend-only-mode.md +2 -2
- package/skills/peaks-code/references/startup-sequence.md +0 -4
- package/dist/cli/commands/upgrade-commands.d.ts +0 -25
- package/dist/cli/commands/upgrade-commands.js +0 -154
- package/dist/services/upgrade/1x-detector-service.d.ts +0 -7
- package/dist/services/upgrade/1x-detector-service.js +0 -94
- package/dist/services/upgrade/gitignore-migrate-service.d.ts +0 -56
- package/dist/services/upgrade/gitignore-migrate-service.js +0 -170
- package/dist/services/upgrade/upgrade-service.d.ts +0 -81
- package/dist/services/upgrade/upgrade-service.js +0 -405
- package/skills/peaks-code/references/step-0-55-1x-detection.md +0 -83
|
@@ -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
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ProjectMemoryKind } from './project-memory-service/types.js';
|
|
2
|
+
export { defaultIdeMemoryDir, encodeIdeProjectDir, renderNormalizedMemory } from './memory-ingest-support.js';
|
|
2
3
|
export interface MemoryIngestOptions {
|
|
3
4
|
projectRoot: string;
|
|
4
5
|
/** Override the IDE-side source dir (defaults to `~/.claude/projects/<encoded>/memory`). */
|
|
@@ -50,28 +51,6 @@ export interface MemoryIngestReport {
|
|
|
50
51
|
writtenFiles: string[];
|
|
51
52
|
warnings: string[];
|
|
52
53
|
}
|
|
53
|
-
/**
|
|
54
|
-
* Claude Code encodes a project cwd into its `~/.claude/projects/<name>/`
|
|
55
|
-
* directory by replacing every non-alphanumeric character with `-`
|
|
56
|
-
* (`D:\peaks-loop` → `D--peaks-loop`). Separator-agnostic, so the same
|
|
57
|
-
* encoding holds for POSIX paths.
|
|
58
|
-
*/
|
|
59
|
-
export declare function encodeIdeProjectDir(projectRoot: string): string;
|
|
60
|
-
/** Default IDE-side memory dir for a project: `~/.claude/projects/<encoded>/memory`. */
|
|
61
|
-
export declare function defaultIdeMemoryDir(projectRoot: string, homeDir?: string): string;
|
|
62
|
-
/**
|
|
63
|
-
* Rewrite a source file's frontmatter to the peaks contract: `name` pinned to
|
|
64
|
-
* the destination filename stem, and `metadata.type` set to the resolved
|
|
65
|
-
* kind. Non-contract keys (e.g. `originSessionId`, `modified`, `node_type`)
|
|
66
|
-
* are preserved verbatim so provenance survives the import; `type` / `kind`
|
|
67
|
-
* are consumed by the normalization and not duplicated.
|
|
68
|
-
*/
|
|
69
|
-
export declare function renderNormalizedMemory(input: {
|
|
70
|
-
stem: string;
|
|
71
|
-
kind: ProjectMemoryKind;
|
|
72
|
-
frontmatter: string;
|
|
73
|
-
body: string;
|
|
74
|
-
}): string;
|
|
75
54
|
/**
|
|
76
55
|
* Import IDE-side memories into `.peaks/memory/`. Always returns the full
|
|
77
56
|
* envelope; `apply` only controls whether files are actually written.
|
|
@@ -25,86 +25,20 @@
|
|
|
25
25
|
// no type is invented silently.
|
|
26
26
|
// ---------------------------------------------------------------------------
|
|
27
27
|
import { existsSync, mkdirSync, readFileSync } from 'node:fs';
|
|
28
|
-
import { homedir } from 'node:os';
|
|
29
28
|
import { basename, join } from 'node:path';
|
|
30
29
|
import { isInsidePath, resolveInputPath, stablePath, stableRealPath } from '../../shared/path-utils.js';
|
|
31
30
|
import { parseMemoryFrontmatter } from './project-memory-service/parsers/frontmatter.js';
|
|
32
|
-
import { summarizeMemoryBody } from './project-memory-service/parsers/markdown-pure.js';
|
|
33
31
|
import { assertSafeProjectMemoryDir, normalizeRoot } from './project-memory-service/store/paths.js';
|
|
34
32
|
import { assertSafeMemoryFileContent, writeNewFile } from './project-memory-service/store/atomic-write.js';
|
|
35
33
|
import { listMarkdownFiles } from './project-memory-service/index/search.js';
|
|
34
|
+
import { defaultIdeMemoryDir, renderNormalizedMemory } from './memory-ingest-support.js';
|
|
35
|
+
// The IDE-source-dir encoding and the frontmatter-normalisation helpers live
|
|
36
|
+
// in `./memory-ingest-support.ts`. Re-exported here so `memory-commands.ts`
|
|
37
|
+
// and the ingest test keep resolving them from `memory-ingest-service.js`
|
|
38
|
+
// unchanged.
|
|
39
|
+
export { defaultIdeMemoryDir, encodeIdeProjectDir, renderNormalizedMemory } from './memory-ingest-support.js';
|
|
36
40
|
/** `MEMORY.md` is the IDE's own generated index, not a memory source. */
|
|
37
41
|
const IDE_INDEX_FILENAME = 'MEMORY.md';
|
|
38
|
-
const RESERVED_TOP_LEVEL_KEYS = new Set(['name', 'description', 'metadata', 'type', 'kind']);
|
|
39
|
-
const RESERVED_METADATA_KEYS = new Set(['type', 'kind', 'description']);
|
|
40
|
-
/**
|
|
41
|
-
* Claude Code encodes a project cwd into its `~/.claude/projects/<name>/`
|
|
42
|
-
* directory by replacing every non-alphanumeric character with `-`
|
|
43
|
-
* (`D:\peaks-loop` → `D--peaks-loop`). Separator-agnostic, so the same
|
|
44
|
-
* encoding holds for POSIX paths.
|
|
45
|
-
*/
|
|
46
|
-
export function encodeIdeProjectDir(projectRoot) {
|
|
47
|
-
return projectRoot.replace(/[^A-Za-z0-9]/g, '-');
|
|
48
|
-
}
|
|
49
|
-
/** Default IDE-side memory dir for a project: `~/.claude/projects/<encoded>/memory`. */
|
|
50
|
-
export function defaultIdeMemoryDir(projectRoot, homeDir) {
|
|
51
|
-
return join(homeDir ?? homedir(), '.claude', 'projects', encodeIdeProjectDir(projectRoot), 'memory');
|
|
52
|
-
}
|
|
53
|
-
function parseFrontmatterDoc(frontmatter) {
|
|
54
|
-
const top = [];
|
|
55
|
-
const metadata = [];
|
|
56
|
-
let inMetadata = false;
|
|
57
|
-
for (const rawLine of frontmatter.split('\n')) {
|
|
58
|
-
if (rawLine.trim() === '')
|
|
59
|
-
continue;
|
|
60
|
-
const indented = /^\s/.test(rawLine);
|
|
61
|
-
const line = rawLine.trim();
|
|
62
|
-
const separator = line.indexOf(':');
|
|
63
|
-
if (separator < 0)
|
|
64
|
-
continue;
|
|
65
|
-
const key = line.slice(0, separator).trim();
|
|
66
|
-
const value = line.slice(separator + 1).trim();
|
|
67
|
-
if (indented) {
|
|
68
|
-
if (inMetadata)
|
|
69
|
-
metadata.push([key, value]);
|
|
70
|
-
continue;
|
|
71
|
-
}
|
|
72
|
-
inMetadata = key === 'metadata';
|
|
73
|
-
if (!inMetadata)
|
|
74
|
-
top.push([key, value]);
|
|
75
|
-
}
|
|
76
|
-
return { top, metadata };
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Rewrite a source file's frontmatter to the peaks contract: `name` pinned to
|
|
80
|
-
* the destination filename stem, and `metadata.type` set to the resolved
|
|
81
|
-
* kind. Non-contract keys (e.g. `originSessionId`, `modified`, `node_type`)
|
|
82
|
-
* are preserved verbatim so provenance survives the import; `type` / `kind`
|
|
83
|
-
* are consumed by the normalization and not duplicated.
|
|
84
|
-
*/
|
|
85
|
-
export function renderNormalizedMemory(input) {
|
|
86
|
-
const doc = parseFrontmatterDoc(input.frontmatter);
|
|
87
|
-
const topMap = new Map(doc.top);
|
|
88
|
-
const metaMap = new Map(doc.metadata);
|
|
89
|
-
const description = topMap.get('description')
|
|
90
|
-
?? metaMap.get('description')
|
|
91
|
-
?? summarizeMemoryBody(input.body);
|
|
92
|
-
const lines = ['---', `name: ${input.stem}`, `description: ${description}`];
|
|
93
|
-
for (const [key, value] of doc.top) {
|
|
94
|
-
if (RESERVED_TOP_LEVEL_KEYS.has(key))
|
|
95
|
-
continue;
|
|
96
|
-
lines.push(`${key}: ${value}`);
|
|
97
|
-
}
|
|
98
|
-
lines.push('metadata:');
|
|
99
|
-
lines.push(` type: ${input.kind}`);
|
|
100
|
-
for (const [key, value] of doc.metadata) {
|
|
101
|
-
if (RESERVED_METADATA_KEYS.has(key))
|
|
102
|
-
continue;
|
|
103
|
-
lines.push(` ${key}: ${value}`);
|
|
104
|
-
}
|
|
105
|
-
lines.push('---', '', input.body, '');
|
|
106
|
-
return lines.join('\n');
|
|
107
|
-
}
|
|
108
42
|
function emptyReport(overrides) {
|
|
109
43
|
return {
|
|
110
44
|
apply: false,
|
|
@@ -177,7 +111,12 @@ export function executeMemoryIngest(options) {
|
|
|
177
111
|
});
|
|
178
112
|
continue;
|
|
179
113
|
}
|
|
180
|
-
const normalized = renderNormalizedMemory({
|
|
114
|
+
const normalized = renderNormalizedMemory({
|
|
115
|
+
stem,
|
|
116
|
+
kind,
|
|
117
|
+
frontmatter: parsed.frontmatter,
|
|
118
|
+
body: parsed.body
|
|
119
|
+
});
|
|
181
120
|
// Never import secrets into the peaks store. Fail-soft: report, skip.
|
|
182
121
|
try {
|
|
183
122
|
assertSafeMemoryFileContent(normalized);
|
|
@@ -194,14 +133,24 @@ export function executeMemoryIngest(options) {
|
|
|
194
133
|
existing = readFileSync(targetPath, 'utf8');
|
|
195
134
|
}
|
|
196
135
|
catch {
|
|
197
|
-
report.conflicts.push({
|
|
136
|
+
report.conflicts.push({
|
|
137
|
+
name: stem,
|
|
138
|
+
sourcePath,
|
|
139
|
+
targetPath,
|
|
140
|
+
reason: 'destination exists but could not be read'
|
|
141
|
+
});
|
|
198
142
|
continue;
|
|
199
143
|
}
|
|
200
144
|
if (existing === normalized) {
|
|
201
145
|
report.skippedIdentical.push({ name: stem, sourcePath, targetPath });
|
|
202
146
|
}
|
|
203
147
|
else {
|
|
204
|
-
report.conflicts.push({
|
|
148
|
+
report.conflicts.push({
|
|
149
|
+
name: stem,
|
|
150
|
+
sourcePath,
|
|
151
|
+
targetPath,
|
|
152
|
+
reason: 'destination exists with different content; both copies left untouched'
|
|
153
|
+
});
|
|
205
154
|
}
|
|
206
155
|
continue;
|
|
207
156
|
}
|
|
@@ -214,7 +163,11 @@ export function executeMemoryIngest(options) {
|
|
|
214
163
|
// ~/.claude/**" structural rather than a convention.
|
|
215
164
|
const stableTargetPath = stablePath(resolveInputPath(targetPath));
|
|
216
165
|
if (stableMemoryDir === null || !isInsidePath(stableTargetPath, stableMemoryDir)) {
|
|
217
|
-
report.refused.push({
|
|
166
|
+
report.refused.push({
|
|
167
|
+
name: stem,
|
|
168
|
+
sourcePath,
|
|
169
|
+
reason: 'refused: target path escapes the project memory directory'
|
|
170
|
+
});
|
|
218
171
|
continue;
|
|
219
172
|
}
|
|
220
173
|
writeNewFile(targetPath, normalized);
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ProjectMemoryKind } from './project-memory-service/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Claude Code encodes a project cwd into its `~/.claude/projects/<name>/`
|
|
4
|
+
* directory by replacing every non-alphanumeric character with `-`
|
|
5
|
+
* (`D:\peaks-loop` → `D--peaks-loop`). Separator-agnostic, so the same
|
|
6
|
+
* encoding holds for POSIX paths.
|
|
7
|
+
*/
|
|
8
|
+
export declare function encodeIdeProjectDir(projectRoot: string): string;
|
|
9
|
+
/** Default IDE-side memory dir for a project: `~/.claude/projects/<encoded>/memory`. */
|
|
10
|
+
export declare function defaultIdeMemoryDir(projectRoot: string, homeDir?: string): string;
|
|
11
|
+
/**
|
|
12
|
+
* Rewrite a source file's frontmatter to the peaks contract: `name` pinned to
|
|
13
|
+
* the destination filename stem, and `metadata.type` set to the resolved
|
|
14
|
+
* kind. Non-contract keys (e.g. `originSessionId`, `modified`, `node_type`)
|
|
15
|
+
* are preserved verbatim so provenance survives the import; `type` / `kind`
|
|
16
|
+
* are consumed by the normalization and not duplicated.
|
|
17
|
+
*/
|
|
18
|
+
export declare function renderNormalizedMemory(input: {
|
|
19
|
+
stem: string;
|
|
20
|
+
kind: ProjectMemoryKind;
|
|
21
|
+
frontmatter: string;
|
|
22
|
+
body: string;
|
|
23
|
+
}): string;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// `peaks memory ingest` — support surface.
|
|
3
|
+
//
|
|
4
|
+
// Split out of `./memory-ingest-service.ts` by the `b1-filesplit-campaign`
|
|
5
|
+
// (wave 3, leaf `b1w3-c-memory`): the IDE-side source-dir encoding and the
|
|
6
|
+
// frontmatter-normalisation helpers. `./memory-ingest-service.ts` imports
|
|
7
|
+
// `defaultIdeMemoryDir` / `renderNormalizedMemory` for its orchestrator and
|
|
8
|
+
// re-exports the three public helpers, so `memory-commands.ts` and the ingest
|
|
9
|
+
// test keep importing them from `memory-ingest-service.js` unchanged.
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
import { homedir } from 'node:os';
|
|
12
|
+
import { join } from 'node:path';
|
|
13
|
+
import { summarizeMemoryBody } from './project-memory-service/parsers/markdown-pure.js';
|
|
14
|
+
const RESERVED_TOP_LEVEL_KEYS = new Set(['name', 'description', 'metadata', 'type', 'kind']);
|
|
15
|
+
const RESERVED_METADATA_KEYS = new Set(['type', 'kind', 'description']);
|
|
16
|
+
/**
|
|
17
|
+
* Claude Code encodes a project cwd into its `~/.claude/projects/<name>/`
|
|
18
|
+
* directory by replacing every non-alphanumeric character with `-`
|
|
19
|
+
* (`D:\peaks-loop` → `D--peaks-loop`). Separator-agnostic, so the same
|
|
20
|
+
* encoding holds for POSIX paths.
|
|
21
|
+
*/
|
|
22
|
+
export function encodeIdeProjectDir(projectRoot) {
|
|
23
|
+
return projectRoot.replace(/[^A-Za-z0-9]/g, '-');
|
|
24
|
+
}
|
|
25
|
+
/** Default IDE-side memory dir for a project: `~/.claude/projects/<encoded>/memory`. */
|
|
26
|
+
export function defaultIdeMemoryDir(projectRoot, homeDir) {
|
|
27
|
+
return join(homeDir ?? homedir(), '.claude', 'projects', encodeIdeProjectDir(projectRoot), 'memory');
|
|
28
|
+
}
|
|
29
|
+
function parseFrontmatterDoc(frontmatter) {
|
|
30
|
+
const top = [];
|
|
31
|
+
const metadata = [];
|
|
32
|
+
let inMetadata = false;
|
|
33
|
+
for (const rawLine of frontmatter.split('\n')) {
|
|
34
|
+
if (rawLine.trim() === '')
|
|
35
|
+
continue;
|
|
36
|
+
const indented = /^\s/.test(rawLine);
|
|
37
|
+
const line = rawLine.trim();
|
|
38
|
+
const separator = line.indexOf(':');
|
|
39
|
+
if (separator < 0)
|
|
40
|
+
continue;
|
|
41
|
+
const key = line.slice(0, separator).trim();
|
|
42
|
+
const value = line.slice(separator + 1).trim();
|
|
43
|
+
if (indented) {
|
|
44
|
+
if (inMetadata)
|
|
45
|
+
metadata.push([key, value]);
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
inMetadata = key === 'metadata';
|
|
49
|
+
if (!inMetadata)
|
|
50
|
+
top.push([key, value]);
|
|
51
|
+
}
|
|
52
|
+
return { top, metadata };
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Rewrite a source file's frontmatter to the peaks contract: `name` pinned to
|
|
56
|
+
* the destination filename stem, and `metadata.type` set to the resolved
|
|
57
|
+
* kind. Non-contract keys (e.g. `originSessionId`, `modified`, `node_type`)
|
|
58
|
+
* are preserved verbatim so provenance survives the import; `type` / `kind`
|
|
59
|
+
* are consumed by the normalization and not duplicated.
|
|
60
|
+
*/
|
|
61
|
+
export function renderNormalizedMemory(input) {
|
|
62
|
+
const doc = parseFrontmatterDoc(input.frontmatter);
|
|
63
|
+
const topMap = new Map(doc.top);
|
|
64
|
+
const metaMap = new Map(doc.metadata);
|
|
65
|
+
const description = topMap.get('description') ?? metaMap.get('description') ?? summarizeMemoryBody(input.body);
|
|
66
|
+
const lines = ['---', `name: ${input.stem}`, `description: ${description}`];
|
|
67
|
+
for (const [key, value] of doc.top) {
|
|
68
|
+
if (RESERVED_TOP_LEVEL_KEYS.has(key))
|
|
69
|
+
continue;
|
|
70
|
+
lines.push(`${key}: ${value}`);
|
|
71
|
+
}
|
|
72
|
+
lines.push('metadata:');
|
|
73
|
+
lines.push(` type: ${input.kind}`);
|
|
74
|
+
for (const [key, value] of doc.metadata) {
|
|
75
|
+
if (RESERVED_METADATA_KEYS.has(key))
|
|
76
|
+
continue;
|
|
77
|
+
lines.push(` ${key}: ${value}`);
|
|
78
|
+
}
|
|
79
|
+
lines.push('---', '', input.body, '');
|
|
80
|
+
return lines.join('\n');
|
|
81
|
+
}
|
|
@@ -51,7 +51,11 @@ export const MEMORY_ROTATION_ARCHIVED_DIRNAME = 'archived';
|
|
|
51
51
|
/** Default reference-grep roots, relative to the project root. */
|
|
52
52
|
export const MEMORY_ROTATION_REFERENCE_ROOTS = ['src', 'skills'];
|
|
53
53
|
/** Tier A — operational contracts. Never selected for rotation. */
|
|
54
|
-
const TIER_A_KINDS = new Set([
|
|
54
|
+
const TIER_A_KINDS = new Set([
|
|
55
|
+
'rule',
|
|
56
|
+
'convention',
|
|
57
|
+
'project-rule'
|
|
58
|
+
]);
|
|
55
59
|
/** Tier B — descriptive governance. Never selected for rotation. */
|
|
56
60
|
const TIER_B_KINDS = new Set([
|
|
57
61
|
'decision',
|
|
@@ -65,10 +69,26 @@ const TIER_B_KINDS = new Set([
|
|
|
65
69
|
const EXPLICIT_TIERS = new Set(['A', 'B', 'C', 'D']);
|
|
66
70
|
/** Files we are willing to read during the reference grep. */
|
|
67
71
|
const REFERENCE_SCAN_EXTENSIONS = new Set([
|
|
68
|
-
'.ts',
|
|
72
|
+
'.ts',
|
|
73
|
+
'.tsx',
|
|
74
|
+
'.js',
|
|
75
|
+
'.jsx',
|
|
76
|
+
'.mjs',
|
|
77
|
+
'.cjs',
|
|
78
|
+
'.md',
|
|
79
|
+
'.json',
|
|
80
|
+
'.yaml',
|
|
81
|
+
'.yml',
|
|
82
|
+
'.txt'
|
|
69
83
|
]);
|
|
70
84
|
const REFERENCE_SCAN_SKIP_DIRS = new Set([
|
|
71
|
-
'node_modules',
|
|
85
|
+
'node_modules',
|
|
86
|
+
'.git',
|
|
87
|
+
'dist',
|
|
88
|
+
'build',
|
|
89
|
+
'coverage',
|
|
90
|
+
'.next',
|
|
91
|
+
'.turbo'
|
|
72
92
|
]);
|
|
73
93
|
/** Bound the reference grep so a pathological tree cannot hang the command. */
|
|
74
94
|
const REFERENCE_SCAN_MAX_FILES = 20_000;
|
|
@@ -213,8 +233,8 @@ export function executeMemoryRotate(options) {
|
|
|
213
233
|
const memoryDir = assertSafeProjectMemoryDir(projectRoot);
|
|
214
234
|
const archivedDir = join(memoryDir, MEMORY_ROTATION_ARCHIVED_DIRNAME);
|
|
215
235
|
const now = options.now ?? new Date();
|
|
216
|
-
const referenceRoots = options.referenceRoots
|
|
217
|
-
|
|
236
|
+
const referenceRoots = options.referenceRoots ??
|
|
237
|
+
MEMORY_ROTATION_REFERENCE_ROOTS.map((root) => join(projectRoot, root));
|
|
218
238
|
const report = {
|
|
219
239
|
apply,
|
|
220
240
|
projectRoot,
|
|
@@ -270,7 +290,12 @@ export function executeMemoryRotate(options) {
|
|
|
270
290
|
// (the interesting case); unpinned A/B files are simply not candidates.
|
|
271
291
|
if (tier === 'A' || tier === 'B') {
|
|
272
292
|
if (pinned) {
|
|
273
|
-
report.excluded.push({
|
|
293
|
+
report.excluded.push({
|
|
294
|
+
name: parsed.name ?? stem,
|
|
295
|
+
filePath,
|
|
296
|
+
tier,
|
|
297
|
+
reason: 'pinned in MEMORY.md index'
|
|
298
|
+
});
|
|
274
299
|
}
|
|
275
300
|
continue;
|
|
276
301
|
}
|
|
@@ -295,12 +320,20 @@ export function executeMemoryRotate(options) {
|
|
|
295
320
|
continue; // within the retention window — not a candidate yet
|
|
296
321
|
}
|
|
297
322
|
if (pinned) {
|
|
298
|
-
report.excluded.push({
|
|
323
|
+
report.excluded.push({
|
|
324
|
+
name: parsed.name ?? stem,
|
|
325
|
+
filePath,
|
|
326
|
+
tier,
|
|
327
|
+
reason: 'pinned in MEMORY.md index'
|
|
328
|
+
});
|
|
299
329
|
continue;
|
|
300
330
|
}
|
|
301
331
|
const hits = findReferenceHits(stem, referenceRoots);
|
|
302
332
|
if (hits.length > 0) {
|
|
303
|
-
const preview = hits
|
|
333
|
+
const preview = hits
|
|
334
|
+
.slice(0, 2)
|
|
335
|
+
.map((hit) => relative(projectRoot, hit).replaceAll('\\', '/'))
|
|
336
|
+
.join(', ');
|
|
304
337
|
report.excluded.push({
|
|
305
338
|
name: parsed.name ?? stem,
|
|
306
339
|
filePath,
|
|
@@ -36,13 +36,13 @@ export function loadMemoryIndex(projectRoot) {
|
|
|
36
36
|
const index = parsed;
|
|
37
37
|
const hot = index.hot ?? {};
|
|
38
38
|
const flatFromHot = Object.values(hot).flat();
|
|
39
|
-
const flatFromCold =
|
|
39
|
+
const flatFromCold = index.cold ?? [];
|
|
40
40
|
const entries = [...flatFromHot, ...flatFromCold];
|
|
41
41
|
return {
|
|
42
42
|
indexPath,
|
|
43
43
|
version: index.version ?? 1,
|
|
44
44
|
updatedAt: index.updatedAt ?? '',
|
|
45
|
-
entries
|
|
45
|
+
entries
|
|
46
46
|
};
|
|
47
47
|
}
|
|
48
48
|
/**
|
|
@@ -65,7 +65,11 @@ export function searchMemory(input) {
|
|
|
65
65
|
}
|
|
66
66
|
// Per spec: searchable text is name + " " + description.
|
|
67
67
|
// The keyFn is invoked once per item per call.
|
|
68
|
-
const matches = fuzzyMatchWithKey(input.query, candidates, {
|
|
68
|
+
const matches = fuzzyMatchWithKey(input.query, candidates, {
|
|
69
|
+
keyFn: (e) => `${e.name} ${e.description}`,
|
|
70
|
+
limit,
|
|
71
|
+
caseSensitive: false
|
|
72
|
+
});
|
|
69
73
|
return matches.map((m) => {
|
|
70
74
|
const entry = m.item;
|
|
71
75
|
return {
|
|
@@ -74,7 +78,7 @@ export function searchMemory(input) {
|
|
|
74
78
|
description: entry.description,
|
|
75
79
|
sourcePath: entry.sourcePath,
|
|
76
80
|
score: m.score,
|
|
77
|
-
positions: m.positions
|
|
81
|
+
positions: m.positions
|
|
78
82
|
};
|
|
79
83
|
});
|
|
80
84
|
}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { parseJson } from '../../shared/json-parse.js';
|
|
3
5
|
import { listSessionMetas } from '../session/session-manager.js';
|
|
4
6
|
import { getSessionDir } from '../session/getSessionDir.js';
|
|
5
7
|
import { bootstrapProjectScan } from '../prd/project-scan-bootstrap-service.js';
|
|
@@ -11,15 +13,29 @@ const CONTEXT_HEADER = `# Peaks Project Context
|
|
|
11
13
|
> Last updated: `;
|
|
12
14
|
const MANAGED_BLOCK_START = '<!-- peaks-managed:session-history-start -->';
|
|
13
15
|
const MANAGED_BLOCK_END = '<!-- peaks-managed:session-history-end -->';
|
|
16
|
+
/**
|
|
17
|
+
* The one field `projectName` reads out of a `package.json` on disk.
|
|
18
|
+
*
|
|
19
|
+
* `looseObject` on purpose: a package.json carries far more than this reader
|
|
20
|
+
* consumes, and validation is not licence to reject the rest of the file.
|
|
21
|
+
* `name` is optional, which is a measured fact — a package.json with no `name`
|
|
22
|
+
* is exactly what the folder-name fallback in `projectName` exists for.
|
|
23
|
+
*/
|
|
24
|
+
const packageNameFileSchema = z.looseObject({ name: z.string().optional() });
|
|
14
25
|
function projectName(projectRoot) {
|
|
15
26
|
const pkgPath = join(projectRoot, 'package.json');
|
|
16
27
|
if (!existsSync(pkgPath))
|
|
17
28
|
return projectRoot.split(/[\\/]/).pop() ?? 'unknown';
|
|
18
29
|
try {
|
|
19
|
-
|
|
30
|
+
// Only `name` is consumed. Naming it here is what stops the read from
|
|
31
|
+
// being an `any` read: the folder name fallback below is reached for a
|
|
32
|
+
// package.json that is malformed OR has no `name`, which is already the
|
|
33
|
+
// behaviour this `try`/`catch` pair encodes.
|
|
34
|
+
const pkg = parseJson(readFileSync(pkgPath, 'utf8'), packageNameFileSchema);
|
|
20
35
|
return pkg.name ?? projectRoot.split(/[\\/]/).pop() ?? 'unknown';
|
|
21
36
|
}
|
|
22
|
-
catch {
|
|
37
|
+
catch {
|
|
38
|
+
// TODO(g2): legacy silent catch — grace: 1 minor release (v2.14.0)
|
|
23
39
|
return projectRoot.split(/[\\/]/).pop() ?? 'unknown';
|
|
24
40
|
}
|
|
25
41
|
}
|
|
@@ -56,14 +72,18 @@ function extractOneLineSummary(sessionRoot) {
|
|
|
56
72
|
const lines = content.split(/\r?\n/);
|
|
57
73
|
for (const line of lines) {
|
|
58
74
|
const trimmed = line.trim();
|
|
59
|
-
if (!trimmed ||
|
|
75
|
+
if (!trimmed ||
|
|
76
|
+
trimmed.startsWith('#') ||
|
|
77
|
+
trimmed.startsWith('-') ||
|
|
78
|
+
trimmed.startsWith('`'))
|
|
60
79
|
continue;
|
|
61
80
|
if (trimmed.length > 10 && trimmed.length < 200)
|
|
62
81
|
return trimmed;
|
|
63
82
|
break;
|
|
64
83
|
}
|
|
65
84
|
}
|
|
66
|
-
catch {
|
|
85
|
+
catch {
|
|
86
|
+
// TODO(g2): legacy silent catch — grace: 1 minor release (v2.14.0)
|
|
67
87
|
// skip unreadable
|
|
68
88
|
}
|
|
69
89
|
}
|
|
@@ -152,7 +172,8 @@ export function readProjectContext(projectRoot) {
|
|
|
152
172
|
try {
|
|
153
173
|
return readFileSync(contextPath, 'utf8');
|
|
154
174
|
}
|
|
155
|
-
catch {
|
|
175
|
+
catch {
|
|
176
|
+
// TODO(g2): legacy silent catch — grace: 1 minor release (v2.14.0)
|
|
156
177
|
return null;
|
|
157
178
|
}
|
|
158
179
|
}
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export
|
|
3
|
-
export declare function executeProjectMemoryExtract(options: ExtractPlanOptions): ProjectMemoryExtractResult;
|
|
4
|
-
export declare function createProjectMemoryBackupPlan(options: BackupPlanOptions): ProjectMemoryBackupPlan;
|
|
5
|
-
export declare function executeProjectMemoryBackup(options: BackupPlanOptions): ProjectMemoryBackupResult;
|
|
6
|
-
export declare function summarizeProjectMemoryExtractResult(result: ProjectMemoryExtractResult): ProjectMemoryExtractSummary;
|
|
7
|
-
export declare function summarizeProjectMemoryBackupResult(result: ProjectMemoryBackupResult): ProjectMemoryBackupSummary;
|
|
1
|
+
import type { ExtractSessionMemoriesOptions, ExtractSessionMemoriesResult } from '../types.js';
|
|
2
|
+
export { createProjectMemoryBackupPlan, createProjectMemoryExtractPlan, executeProjectMemoryBackup, executeProjectMemoryExtract, summarizeProjectMemoryBackupResult, summarizeProjectMemoryExtractResult } from './project-memory-plan-exec.js';
|
|
8
3
|
export declare function extractSessionMemories(options: ExtractSessionMemoriesOptions): ExtractSessionMemoriesResult;
|