@cleocode/core 2026.8.1 → 2026.8.3

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.
Files changed (323) hide show
  1. package/dist/bootstrap.d.ts.map +1 -1
  2. package/dist/bootstrap.js +57 -27
  3. package/dist/bootstrap.js.map +1 -1
  4. package/dist/check/pr-gate.d.ts.map +1 -1
  5. package/dist/check/pr-gate.js +9 -0
  6. package/dist/check/pr-gate.js.map +1 -1
  7. package/dist/db/index.d.ts +13 -0
  8. package/dist/db/index.d.ts.map +1 -1
  9. package/dist/db/index.js +13 -0
  10. package/dist/db/index.js.map +1 -1
  11. package/dist/docs/display-alias.js +1 -1
  12. package/dist/docs/display-alias.js.map +1 -1
  13. package/dist/docs/export-document.js +499 -380
  14. package/dist/docs/export-document.js.map +3 -3
  15. package/dist/docs/numbering.js +1 -1
  16. package/dist/docs/numbering.js.map +1 -1
  17. package/dist/docs/supersede.js +1 -1
  18. package/dist/docs/supersede.js.map +1 -1
  19. package/dist/hooks/registry.d.ts +2 -2
  20. package/dist/hooks/registry.d.ts.map +1 -1
  21. package/dist/hooks/registry.js +5 -0
  22. package/dist/hooks/registry.js.map +1 -1
  23. package/dist/hooks/types.d.ts +59 -0
  24. package/dist/hooks/types.d.ts.map +1 -1
  25. package/dist/init/scaffold-workflows.d.ts +12 -0
  26. package/dist/init/scaffold-workflows.d.ts.map +1 -1
  27. package/dist/init/scaffold-workflows.js +16 -0
  28. package/dist/init/scaffold-workflows.js.map +1 -1
  29. package/dist/init/upgrade-workflows.d.ts.map +1 -1
  30. package/dist/init/upgrade-workflows.js +16 -0
  31. package/dist/init/upgrade-workflows.js.map +1 -1
  32. package/dist/init.d.ts.map +1 -1
  33. package/dist/init.js +16 -1
  34. package/dist/init.js.map +1 -1
  35. package/dist/injection.d.ts.map +1 -1
  36. package/dist/injection.js +44 -3
  37. package/dist/injection.js.map +1 -1
  38. package/dist/internal.d.ts +1 -0
  39. package/dist/internal.d.ts.map +1 -1
  40. package/dist/internal.js +2 -0
  41. package/dist/internal.js.map +1 -1
  42. package/dist/lifecycle/index.js +1 -1
  43. package/dist/lifecycle/index.js.map +1 -1
  44. package/dist/llm/credentials.d.ts +16 -1
  45. package/dist/llm/credentials.d.ts.map +1 -1
  46. package/dist/llm/credentials.js.map +1 -1
  47. package/dist/llm/cross-provider-selector.d.ts +25 -0
  48. package/dist/llm/cross-provider-selector.d.ts.map +1 -1
  49. package/dist/llm/cross-provider-selector.js +76 -3
  50. package/dist/llm/cross-provider-selector.js.map +1 -1
  51. package/dist/llm/local-inference-probe.d.ts +101 -0
  52. package/dist/llm/local-inference-probe.d.ts.map +1 -0
  53. package/dist/llm/local-inference-probe.js +174 -0
  54. package/dist/llm/local-inference-probe.js.map +1 -0
  55. package/dist/llm/plugin-facade.js +429 -115
  56. package/dist/llm/plugin-facade.js.map +3 -3
  57. package/dist/llm/role-executor.d.ts.map +1 -1
  58. package/dist/llm/role-executor.js +95 -9
  59. package/dist/llm/role-executor.js.map +1 -1
  60. package/dist/llm/role-resolver.d.ts +10 -0
  61. package/dist/llm/role-resolver.d.ts.map +1 -1
  62. package/dist/llm/role-resolver.js +92 -1
  63. package/dist/llm/role-resolver.js.map +1 -1
  64. package/dist/llm/system-resolver.d.ts.map +1 -1
  65. package/dist/llm/system-resolver.js +2 -0
  66. package/dist/llm/system-resolver.js.map +1 -1
  67. package/dist/memory/brain-backfill.js +3 -3
  68. package/dist/memory/brain-backfill.js.map +1 -1
  69. package/dist/memory/brain-consolidator.js +2 -2
  70. package/dist/memory/brain-consolidator.js.map +1 -1
  71. package/dist/memory/brain-doctor.js +1 -1
  72. package/dist/memory/brain-doctor.js.map +1 -1
  73. package/dist/memory/brain-health-dashboard.js +1 -1
  74. package/dist/memory/brain-health-dashboard.js.map +1 -1
  75. package/dist/memory/brain-lifecycle.js +10 -10
  76. package/dist/memory/brain-lifecycle.js.map +1 -1
  77. package/dist/memory/brain-maintenance.js +1 -1
  78. package/dist/memory/brain-maintenance.js.map +1 -1
  79. package/dist/memory/brain-page-nodes.js +4 -4
  80. package/dist/memory/brain-page-nodes.js.map +1 -1
  81. package/dist/memory/brain-reasoning.js +1 -1
  82. package/dist/memory/brain-reasoning.js.map +1 -1
  83. package/dist/memory/brain-search.d.ts +109 -0
  84. package/dist/memory/brain-search.d.ts.map +1 -1
  85. package/dist/memory/brain-search.js +150 -38
  86. package/dist/memory/brain-search.js.map +1 -1
  87. package/dist/memory/brain-similarity.js +1 -1
  88. package/dist/memory/brain-similarity.js.map +1 -1
  89. package/dist/memory/brain-stdp.js +6 -6
  90. package/dist/memory/brain-stdp.js.map +1 -1
  91. package/dist/memory/brain-stub-prune.d.ts +109 -0
  92. package/dist/memory/brain-stub-prune.d.ts.map +1 -0
  93. package/dist/memory/brain-stub-prune.js +155 -0
  94. package/dist/memory/brain-stub-prune.js.map +1 -0
  95. package/dist/memory/brain-sweep-executor.js +1 -1
  96. package/dist/memory/brain-sweep-executor.js.map +1 -1
  97. package/dist/memory/brain-writer-handlers.js +2 -2
  98. package/dist/memory/brain-writer-handlers.js.map +1 -1
  99. package/dist/memory/claude-mem-migration.d.ts.map +1 -1
  100. package/dist/memory/claude-mem-migration.js +2 -2
  101. package/dist/memory/claude-mem-migration.js.map +1 -1
  102. package/dist/memory/engine-compat.d.ts.map +1 -1
  103. package/dist/memory/engine-compat.js +65 -7
  104. package/dist/memory/engine-compat.js.map +1 -1
  105. package/dist/memory/extraction-gate.js +3 -3
  106. package/dist/memory/extraction-gate.js.map +1 -1
  107. package/dist/memory/graph-memory-bridge.js +9 -9
  108. package/dist/memory/graph-memory-bridge.js.map +1 -1
  109. package/dist/memory/graph-queries.js +4 -4
  110. package/dist/memory/graph-queries.js.map +1 -1
  111. package/dist/memory/llm-extraction.js +1 -1
  112. package/dist/memory/llm-extraction.js.map +1 -1
  113. package/dist/memory/memory-bridge.js +1 -1
  114. package/dist/memory/memory-bridge.js.map +1 -1
  115. package/dist/memory/nexus-plasticity.js +1 -1
  116. package/dist/memory/nexus-plasticity.js.map +1 -1
  117. package/dist/memory/observer-reflector.js +1 -1
  118. package/dist/memory/observer-reflector.js.map +1 -1
  119. package/dist/memory/pipeline-manifest-sqlite.d.ts.map +1 -1
  120. package/dist/memory/pipeline-manifest-sqlite.js +13 -3
  121. package/dist/memory/pipeline-manifest-sqlite.js.map +1 -1
  122. package/dist/memory/quality-feedback.js +4 -4
  123. package/dist/memory/quality-feedback.js.map +1 -1
  124. package/dist/memory/retrieval/increment-citation-counts.js +1 -1
  125. package/dist/memory/retrieval/increment-citation-counts.js.map +1 -1
  126. package/dist/memory/retrieval/log-retrieval.js +1 -1
  127. package/dist/memory/retrieval/log-retrieval.js.map +1 -1
  128. package/dist/memory/retrieval/observe.js +1 -1
  129. package/dist/memory/retrieval/observe.js.map +1 -1
  130. package/dist/memory/retrieval/search.js +1 -1
  131. package/dist/memory/retrieval/search.js.map +1 -1
  132. package/dist/memory/retrieval/timeline.js +1 -1
  133. package/dist/memory/retrieval/timeline.js.map +1 -1
  134. package/dist/memory/sleep-consolidation.js +4 -4
  135. package/dist/memory/sleep-consolidation.js.map +1 -1
  136. package/dist/memory/temporal-supersession.js +5 -5
  137. package/dist/memory/temporal-supersession.js.map +1 -1
  138. package/dist/memory/transcript-extractor.js +1 -1
  139. package/dist/memory/transcript-extractor.js.map +1 -1
  140. package/dist/memory/transcript-ingestor.js +1 -1
  141. package/dist/memory/transcript-ingestor.js.map +1 -1
  142. package/dist/memory/transcript-scanner.js +1 -1
  143. package/dist/memory/transcript-scanner.js.map +1 -1
  144. package/dist/nexus/analyze-orchestrator.d.ts.map +1 -1
  145. package/dist/nexus/analyze-orchestrator.js +28 -0
  146. package/dist/nexus/analyze-orchestrator.js.map +1 -1
  147. package/dist/nexus/context.d.ts.map +1 -1
  148. package/dist/nexus/context.js +3 -3
  149. package/dist/nexus/context.js.map +1 -1
  150. package/dist/nexus/impact.d.ts.map +1 -1
  151. package/dist/nexus/impact.js +3 -3
  152. package/dist/nexus/impact.js.map +1 -1
  153. package/dist/nexus/living-brain.js +7 -7
  154. package/dist/nexus/living-brain.js.map +1 -1
  155. package/dist/nexus/symbol-miss.d.ts +132 -0
  156. package/dist/nexus/symbol-miss.d.ts.map +1 -0
  157. package/dist/nexus/symbol-miss.js +168 -0
  158. package/dist/nexus/symbol-miss.js.map +1 -0
  159. package/dist/nexus/tasks-bridge.js +4 -4
  160. package/dist/nexus/tasks-bridge.js.map +1 -1
  161. package/dist/orchestrate/spawn-ops.d.ts +21 -1
  162. package/dist/orchestrate/spawn-ops.d.ts.map +1 -1
  163. package/dist/orchestrate/spawn-ops.js +39 -2
  164. package/dist/orchestrate/spawn-ops.js.map +1 -1
  165. package/dist/orchestrate/worker-verify.d.ts.map +1 -1
  166. package/dist/orchestrate/worker-verify.js +22 -0
  167. package/dist/orchestrate/worker-verify.js.map +1 -1
  168. package/dist/release/changesets-aggregator.d.ts.map +1 -1
  169. package/dist/release/changesets-aggregator.js +15 -1
  170. package/dist/release/changesets-aggregator.js.map +1 -1
  171. package/dist/release/open.d.ts +29 -2
  172. package/dist/release/open.d.ts.map +1 -1
  173. package/dist/release/open.js +48 -11
  174. package/dist/release/open.js.map +1 -1
  175. package/dist/release/reconcile.d.ts.map +1 -1
  176. package/dist/release/reconcile.js +5 -1
  177. package/dist/release/reconcile.js.map +1 -1
  178. package/dist/resources/governor.d.ts +12 -2
  179. package/dist/resources/governor.d.ts.map +1 -1
  180. package/dist/resources/governor.js +12 -3
  181. package/dist/resources/governor.js.map +1 -1
  182. package/dist/sagas/migrate-containment.d.ts.map +1 -1
  183. package/dist/sagas/migrate-containment.js +4 -2
  184. package/dist/sagas/migrate-containment.js.map +1 -1
  185. package/dist/scaffold/ensure-dirs.d.ts.map +1 -1
  186. package/dist/scaffold/ensure-dirs.js +15 -3
  187. package/dist/scaffold/ensure-dirs.js.map +1 -1
  188. package/dist/scaffold/project-detection.d.ts.map +1 -1
  189. package/dist/scaffold/project-detection.js +2 -1
  190. package/dist/scaffold/project-detection.js.map +1 -1
  191. package/dist/selfimprove/draft-pr.d.ts +14 -1
  192. package/dist/selfimprove/draft-pr.d.ts.map +1 -1
  193. package/dist/selfimprove/draft-pr.js.map +1 -1
  194. package/dist/selfimprove/fix-gen.d.ts +0 -21
  195. package/dist/selfimprove/fix-gen.d.ts.map +1 -1
  196. package/dist/selfimprove/fix-gen.js +509 -173
  197. package/dist/selfimprove/fix-gen.js.map +3 -3
  198. package/dist/selfimprove/run-loop.d.ts.map +1 -1
  199. package/dist/selfimprove/run-loop.js +50 -19
  200. package/dist/selfimprove/run-loop.js.map +1 -1
  201. package/dist/selfimprove/scenarios/dhq-replay-find/golden.json +114 -4
  202. package/dist/selfimprove/scenarios/dhq-replay-find/scenario.json +3 -3
  203. package/dist/sentient/dream-cycle.d.ts +20 -19
  204. package/dist/sentient/dream-cycle.d.ts.map +1 -1
  205. package/dist/sentient/dream-cycle.js +323 -12
  206. package/dist/sentient/dream-cycle.js.map +1 -1
  207. package/dist/sentient/dream-watermark.d.ts +134 -0
  208. package/dist/sentient/dream-watermark.d.ts.map +1 -0
  209. package/dist/sentient/dream-watermark.js +156 -0
  210. package/dist/sentient/dream-watermark.js.map +1 -0
  211. package/dist/sentient/hygiene-scan.js +1 -1
  212. package/dist/sentient/hygiene-scan.js.map +1 -1
  213. package/dist/sentient/propose-tick.js +3 -3
  214. package/dist/sentient/propose-tick.js.map +1 -1
  215. package/dist/sentient/stage-drift-tick.js +1 -1
  216. package/dist/sentient/stage-drift-tick.js.map +1 -1
  217. package/dist/sentient/state.d.ts +17 -0
  218. package/dist/sentient/state.d.ts.map +1 -1
  219. package/dist/sentient/state.js +22 -3
  220. package/dist/sentient/state.js.map +1 -1
  221. package/dist/sentient/tick.d.ts.map +1 -1
  222. package/dist/sentient/tick.js +79 -2
  223. package/dist/sentient/tick.js.map +1 -1
  224. package/dist/sequence/index.js +1 -1
  225. package/dist/sequence/index.js.map +1 -1
  226. package/dist/sessions/index.d.ts.map +1 -1
  227. package/dist/sessions/index.js +5 -1
  228. package/dist/sessions/index.js.map +1 -1
  229. package/dist/sessions/snapshot.d.ts.map +1 -1
  230. package/dist/sessions/snapshot.js +6 -3
  231. package/dist/sessions/snapshot.js.map +1 -1
  232. package/dist/store/agent-registry-store.d.ts.map +1 -1
  233. package/dist/store/agent-registry-store.js +71 -28
  234. package/dist/store/agent-registry-store.js.map +1 -1
  235. package/dist/store/attachment-store.js +3 -3
  236. package/dist/store/attachment-store.js.map +1 -1
  237. package/dist/store/checkpoint-git-dir.d.ts +95 -0
  238. package/dist/store/checkpoint-git-dir.d.ts.map +1 -0
  239. package/dist/store/checkpoint-git-dir.js +111 -0
  240. package/dist/store/checkpoint-git-dir.js.map +1 -0
  241. package/dist/store/conduit-sqlite.d.ts +21 -1
  242. package/dist/store/conduit-sqlite.d.ts.map +1 -1
  243. package/dist/store/conduit-sqlite.js +42 -56
  244. package/dist/store/conduit-sqlite.js.map +1 -1
  245. package/dist/store/dual-scope-db.d.ts +39 -0
  246. package/dist/store/dual-scope-db.d.ts.map +1 -1
  247. package/dist/store/dual-scope-db.js +26 -8
  248. package/dist/store/dual-scope-db.js.map +1 -1
  249. package/dist/store/git-checkpoint.d.ts.map +1 -1
  250. package/dist/store/git-checkpoint.js +6 -5
  251. package/dist/store/git-checkpoint.js.map +1 -1
  252. package/dist/store/memory-sqlite.d.ts +57 -3
  253. package/dist/store/memory-sqlite.d.ts.map +1 -1
  254. package/dist/store/memory-sqlite.js +70 -89
  255. package/dist/store/memory-sqlite.js.map +1 -1
  256. package/dist/store/nexus-sqlite.d.ts +42 -0
  257. package/dist/store/nexus-sqlite.d.ts.map +1 -1
  258. package/dist/store/nexus-sqlite.js +79 -115
  259. package/dist/store/nexus-sqlite.js.map +1 -1
  260. package/dist/store/ports/domain-binding.d.ts +233 -0
  261. package/dist/store/ports/domain-binding.d.ts.map +1 -0
  262. package/dist/store/ports/domain-binding.js +500 -0
  263. package/dist/store/ports/domain-binding.js.map +1 -0
  264. package/dist/store/ports/fk-integrity.d.ts +155 -0
  265. package/dist/store/ports/fk-integrity.d.ts.map +1 -0
  266. package/dist/store/ports/fk-integrity.js +182 -0
  267. package/dist/store/ports/fk-integrity.js.map +1 -0
  268. package/dist/store/role-accessors-impl.js +2 -2
  269. package/dist/store/role-accessors-impl.js.map +1 -1
  270. package/dist/store/skills-db.d.ts +19 -0
  271. package/dist/store/skills-db.d.ts.map +1 -1
  272. package/dist/store/skills-db.js +80 -72
  273. package/dist/store/skills-db.js.map +1 -1
  274. package/dist/store/sqlite-backup.js +2 -2
  275. package/dist/store/sqlite-backup.js.map +1 -1
  276. package/dist/store/sqlite-data-accessor.js +1 -1
  277. package/dist/store/sqlite-data-accessor.js.map +1 -1
  278. package/dist/store/sqlite.d.ts +72 -10
  279. package/dist/store/sqlite.d.ts.map +1 -1
  280. package/dist/store/sqlite.js +173 -160
  281. package/dist/store/sqlite.js.map +1 -1
  282. package/dist/store/tasks-sqlite.js +2 -2
  283. package/dist/store/tasks-sqlite.js.map +1 -1
  284. package/dist/system/health.d.ts +0 -4
  285. package/dist/system/health.d.ts.map +1 -1
  286. package/dist/system/health.js +60 -3
  287. package/dist/system/health.js.map +1 -1
  288. package/dist/tasks/add.d.ts.map +1 -1
  289. package/dist/tasks/add.js +40 -4
  290. package/dist/tasks/add.js.map +1 -1
  291. package/dist/tasks/collection.d.ts +51 -0
  292. package/dist/tasks/collection.d.ts.map +1 -0
  293. package/dist/tasks/collection.js +81 -0
  294. package/dist/tasks/collection.js.map +1 -0
  295. package/dist/tasks/complete.d.ts.map +1 -1
  296. package/dist/tasks/complete.js +8 -3
  297. package/dist/tasks/complete.js.map +1 -1
  298. package/dist/tasks/evidence.d.ts.map +1 -1
  299. package/dist/tasks/evidence.js +17 -0
  300. package/dist/tasks/evidence.js.map +1 -1
  301. package/dist/tasks/find.d.ts +50 -0
  302. package/dist/tasks/find.d.ts.map +1 -1
  303. package/dist/tasks/find.js +63 -2
  304. package/dist/tasks/find.js.map +1 -1
  305. package/dist/tasks/tool-resolver.d.ts +1 -1
  306. package/dist/tasks/tool-resolver.d.ts.map +1 -1
  307. package/dist/tasks/tool-resolver.js +83 -0
  308. package/dist/tasks/tool-resolver.js.map +1 -1
  309. package/dist/tasks/tool-semaphore.d.ts +82 -12
  310. package/dist/tasks/tool-semaphore.d.ts.map +1 -1
  311. package/dist/tasks/tool-semaphore.js +79 -17
  312. package/dist/tasks/tool-semaphore.js.map +1 -1
  313. package/dist/upgrade.js +2 -2
  314. package/dist/upgrade.js.map +1 -1
  315. package/dist/validation/doctor/checks.d.ts +23 -1
  316. package/dist/validation/doctor/checks.d.ts.map +1 -1
  317. package/dist/validation/doctor/checks.js +79 -19
  318. package/dist/validation/doctor/checks.js.map +1 -1
  319. package/dist/worktree/list.js +1 -1
  320. package/dist/worktree/list.js.map +1 -1
  321. package/package.json +23 -13
  322. package/templates/CLEO-INJECTION.md +40 -25
  323. package/templates/workflows/release-prepare.yml.tmpl +73 -16
@@ -69,6 +69,96 @@ export declare function rebuildFts5Index(nativeDb: DatabaseSync): void;
69
69
  * @task T5130
70
70
  */
71
71
  export declare function searchBrain(projectRoot: string, query: string, options?: BrainSearchOptions): Promise<BrainMemorySearchResult>;
72
+ /**
73
+ * Escape special FTS5 characters in query string.
74
+ *
75
+ * Wraps each meaningful token in double quotes and joins with OR so that
76
+ * partial matches are returned even when some tokens are not indexable
77
+ * (e.g. task prefixes like "EPIC:", em-dashes "—", or short stop-words).
78
+ *
79
+ * Strategy:
80
+ * 1. Split on whitespace.
81
+ * 2. Keep only tokens that contain at least one word character (\w), which
82
+ * ensures punctuation-only tokens (em dashes, colons standalone, etc.)
83
+ * are dropped before they zero-out the entire result set.
84
+ * 3. Deduplicate case-insensitively.
85
+ * 4. Join with OR so the query broadens rather than requiring ALL tokens.
86
+ *
87
+ * Using AND (implicit FTS5 join) caused empty results whenever a task title
88
+ * contained non-word tokens such as em dashes ("—") or trailing colons
89
+ * ("EPIC:"), because FTS5's default tokenizer cannot index them and the
90
+ * AND semantics then guaranteed zero matches for the whole query. (T553 bug fix)
91
+ */
92
+ export declare function escapeFts5Query(query: string): string;
93
+ /**
94
+ * The two MATCH expressions used by the conjunctive-first retrieval strategy.
95
+ *
96
+ * @task T12073
97
+ */
98
+ export interface Fts5QueryPair {
99
+ /** All terms required — high precision, may return nothing. */
100
+ readonly and: string;
101
+ /** Any term matches — high recall, used only as a fallback. */
102
+ readonly or: string;
103
+ /** Number of usable terms extracted from the query. */
104
+ readonly termCount: number;
105
+ }
106
+ /**
107
+ * Build the AND and OR MATCH expressions for a natural-language query.
108
+ *
109
+ * ## Why both, and why prefixes (T12073)
110
+ *
111
+ * The previous builder emitted `"tok1" OR "tok2"` — quoted terms joined by OR.
112
+ * Measured against the live 6,985-observation corpus, that has two failure
113
+ * modes that together make recall useless for anything but an exact rare token:
114
+ *
115
+ * **Quoted terms are exact, so morphological variants are invisible.** A search
116
+ * for `orphan` matched 113 documents; `orphan*` matched 189. Seventy-six
117
+ * documents saying "orphaned" or "orphans" could not be found by searching for
118
+ * "orphan". SQLite FTS5 has no stemmer on the `unicode61` tokenizer, so a
119
+ * prefix wildcard is the available substitute — and it is a good one, because
120
+ * it costs nothing on a prefix-indexed b-tree.
121
+ *
122
+ * **Pure OR plus BM25 ranks by term rarity, not by term coverage.** A short
123
+ * document matching ONE query term outranks a long one matching ALL of them,
124
+ * because BM25 normalises for length. On this corpus that is catastrophic:
125
+ * 30% of observations are sub-60-character auto-capture stubs, so the
126
+ * shortest, emptiest records win. Searching `nexus_symbols_fts orphan` under
127
+ * the old builder returned *"Consolidated: change observations (5 entries)"*
128
+ * as the top hit — a record with no content at all — while the conjunctive
129
+ * form returns only documents about orphans in nexus.
130
+ *
131
+ * So: require all terms first, and fall back to ANY only when the conjunction
132
+ * finds nothing. That preserves the recall the OR form was introduced for
133
+ * (T553: non-word tokens like em dashes zeroing out an implicit-AND query)
134
+ * without letting it dominate the common case.
135
+ *
136
+ * @param query - the raw user query.
137
+ * @returns AND/OR MATCH expressions and the usable term count.
138
+ *
139
+ * @example
140
+ * ```ts
141
+ * const q = buildFts5Queries('nexus_symbols_fts orphan');
142
+ * // q.and === 'nexus_symbols_fts* AND orphan*'
143
+ * // q.or === 'nexus_symbols_fts* OR orphan*'
144
+ * ```
145
+ *
146
+ * @task T553
147
+ * @task T12073
148
+ */
149
+ export declare function buildFts5Queries(query: string): Fts5QueryPair;
150
+ /**
151
+ * Run an FTS5-backed query conjunctively, falling back to disjunctive.
152
+ *
153
+ * Single-term queries skip the fallback entirely (AND and OR are identical).
154
+ *
155
+ * @param run - executes one MATCH expression and returns its rows.
156
+ * @param queries - the pair from {@link buildFts5Queries}.
157
+ * @returns conjunctive rows when non-empty, else disjunctive rows.
158
+ *
159
+ * @task T12073
160
+ */
161
+ export declare function matchConjunctiveFirst<T>(run: (matchExpr: string) => T[], queries: Fts5QueryPair): T[];
72
162
  /**
73
163
  * Reset the cached FTS5 availability flag.
74
164
  * Used in tests to force re-detection.
@@ -89,6 +179,25 @@ export interface RrfHit {
89
179
  title: string;
90
180
  text: string;
91
181
  }
182
+ /**
183
+ * Round-robin interleave several independently-ranked lists.
184
+ *
185
+ * Takes rank 1 from every list, then rank 2 from every list, and so on, so a
186
+ * downstream consumer that scores by array position does not systematically
187
+ * favour whichever list happened to be concatenated first.
188
+ *
189
+ * @param lists - per-source lists, each already ordered best-first.
190
+ * @returns a single list preserving each source's internal order.
191
+ *
192
+ * @example
193
+ * ```ts
194
+ * interleaveRanked([['a1', 'a2'], ['b1'], ['c1', 'c2', 'c3']]);
195
+ * // ['a1', 'b1', 'c1', 'a2', 'c2', 'c3']
196
+ * ```
197
+ *
198
+ * @task T12073
199
+ */
200
+ export declare function interleaveRanked<T>(lists: ReadonlyArray<readonly T[]>): T[];
92
201
  /** Fused result produced by reciprocalRankFusion. */
93
202
  export interface RrfResult {
94
203
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"brain-search.d.ts","sourceRoot":"","sources":["../../src/memory/brain-search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"brain-search.d.ts","sourceRoot":"","sources":["../../src/memory/brain-search.ts"],"names":[],"mappings":"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"}
@@ -195,7 +195,7 @@ export async function searchBrain(projectRoot, query, options) {
195
195
  // Ensure brain.db is initialized
196
196
  const { getBrainDb, getBrainNativeDb } = await import('../store/memory-sqlite.js');
197
197
  await getBrainDb(projectRoot);
198
- const nativeDb = getBrainNativeDb();
198
+ const nativeDb = getBrainNativeDb(projectRoot);
199
199
  if (!nativeDb) {
200
200
  return { decisions: [], patterns: [], learnings: [], observations: [] };
201
201
  }
@@ -251,12 +251,14 @@ function searchWithFts5(nativeDb, query, tables, limit, peerId, includeGlobal =
251
251
  learnings: [],
252
252
  observations: [],
253
253
  };
254
- // Escape FTS5 special characters for safety
255
- const safeQuery = escapeFts5Query(query);
254
+ // T12073: conjunctive-first. `fts5Queries.and` requires every term (high
255
+ // precision); the OR form is used only when AND matches nothing, preserving
256
+ // the recall the disjunctive builder was introduced for (T553).
257
+ const fts5Queries = buildFts5Queries(query);
256
258
  if (tables.includes('decisions')) {
257
259
  const { clause, params } = buildPeerClause('d', peerId, includeGlobal);
258
260
  try {
259
- const rows = typedAll(nativeDb.prepare(`
261
+ const stmt = nativeDb.prepare(`
260
262
  SELECT d.*
261
263
  FROM brain_decisions_fts fts
262
264
  JOIN brain_decisions d ON d.rowid = fts.rowid
@@ -265,7 +267,8 @@ function searchWithFts5(nativeDb, query, tables, limit, peerId, includeGlobal =
265
267
  ${clause}
266
268
  ORDER BY bm25(brain_decisions_fts)
267
269
  LIMIT ?
268
- `), safeQuery, QUALITY_SCORE_THRESHOLD, ...params, limit);
270
+ `);
271
+ const rows = matchConjunctiveFirst((matchExpr) => typedAll(stmt, matchExpr, QUALITY_SCORE_THRESHOLD, ...params, limit), fts5Queries);
269
272
  result.decisions = rows;
270
273
  }
271
274
  catch {
@@ -276,7 +279,7 @@ function searchWithFts5(nativeDb, query, tables, limit, peerId, includeGlobal =
276
279
  if (tables.includes('patterns')) {
277
280
  const { clause, params } = buildPeerClause('p', peerId, includeGlobal);
278
281
  try {
279
- const rows = typedAll(nativeDb.prepare(`
282
+ const stmt = nativeDb.prepare(`
280
283
  SELECT p.*
281
284
  FROM brain_patterns_fts fts
282
285
  JOIN brain_patterns p ON p.rowid = fts.rowid
@@ -285,7 +288,8 @@ function searchWithFts5(nativeDb, query, tables, limit, peerId, includeGlobal =
285
288
  ${clause}
286
289
  ORDER BY bm25(brain_patterns_fts)
287
290
  LIMIT ?
288
- `), safeQuery, QUALITY_SCORE_THRESHOLD, ...params, limit);
291
+ `);
292
+ const rows = matchConjunctiveFirst((matchExpr) => typedAll(stmt, matchExpr, QUALITY_SCORE_THRESHOLD, ...params, limit), fts5Queries);
289
293
  result.patterns = rows;
290
294
  }
291
295
  catch {
@@ -295,7 +299,7 @@ function searchWithFts5(nativeDb, query, tables, limit, peerId, includeGlobal =
295
299
  if (tables.includes('learnings')) {
296
300
  const { clause, params } = buildPeerClause('l', peerId, includeGlobal);
297
301
  try {
298
- const rows = typedAll(nativeDb.prepare(`
302
+ const stmt = nativeDb.prepare(`
299
303
  SELECT l.*
300
304
  FROM brain_learnings_fts fts
301
305
  JOIN brain_learnings l ON l.rowid = fts.rowid
@@ -304,7 +308,8 @@ function searchWithFts5(nativeDb, query, tables, limit, peerId, includeGlobal =
304
308
  ${clause}
305
309
  ORDER BY bm25(brain_learnings_fts)
306
310
  LIMIT ?
307
- `), safeQuery, QUALITY_SCORE_THRESHOLD, ...params, limit);
311
+ `);
312
+ const rows = matchConjunctiveFirst((matchExpr) => typedAll(stmt, matchExpr, QUALITY_SCORE_THRESHOLD, ...params, limit), fts5Queries);
308
313
  result.learnings = rows;
309
314
  }
310
315
  catch {
@@ -314,7 +319,7 @@ function searchWithFts5(nativeDb, query, tables, limit, peerId, includeGlobal =
314
319
  if (tables.includes('observations')) {
315
320
  const { clause, params } = buildPeerClause('o', peerId, includeGlobal);
316
321
  try {
317
- const rows = typedAll(nativeDb.prepare(`
322
+ const stmt = nativeDb.prepare(`
318
323
  SELECT o.*
319
324
  FROM brain_observations_fts fts
320
325
  JOIN brain_observations o ON o.rowid = fts.rowid
@@ -323,7 +328,8 @@ function searchWithFts5(nativeDb, query, tables, limit, peerId, includeGlobal =
323
328
  ${clause}
324
329
  ORDER BY bm25(brain_observations_fts)
325
330
  LIMIT ?
326
- `), safeQuery, QUALITY_SCORE_THRESHOLD, ...params, limit);
331
+ `);
332
+ const rows = matchConjunctiveFirst((matchExpr) => typedAll(stmt, matchExpr, QUALITY_SCORE_THRESHOLD, ...params, limit), fts5Queries);
327
333
  result.observations = rows;
328
334
  }
329
335
  catch {
@@ -424,14 +430,56 @@ function likeSearchObservations(nativeDb, query, limit, peerId, includeGlobal =
424
430
  * ("EPIC:"), because FTS5's default tokenizer cannot index them and the
425
431
  * AND semantics then guaranteed zero matches for the whole query. (T553 bug fix)
426
432
  */
427
- function escapeFts5Query(query) {
433
+ export function escapeFts5Query(query) {
434
+ return buildFts5Queries(query).or;
435
+ }
436
+ /**
437
+ * Build the AND and OR MATCH expressions for a natural-language query.
438
+ *
439
+ * ## Why both, and why prefixes (T12073)
440
+ *
441
+ * The previous builder emitted `"tok1" OR "tok2"` — quoted terms joined by OR.
442
+ * Measured against the live 6,985-observation corpus, that has two failure
443
+ * modes that together make recall useless for anything but an exact rare token:
444
+ *
445
+ * **Quoted terms are exact, so morphological variants are invisible.** A search
446
+ * for `orphan` matched 113 documents; `orphan*` matched 189. Seventy-six
447
+ * documents saying "orphaned" or "orphans" could not be found by searching for
448
+ * "orphan". SQLite FTS5 has no stemmer on the `unicode61` tokenizer, so a
449
+ * prefix wildcard is the available substitute — and it is a good one, because
450
+ * it costs nothing on a prefix-indexed b-tree.
451
+ *
452
+ * **Pure OR plus BM25 ranks by term rarity, not by term coverage.** A short
453
+ * document matching ONE query term outranks a long one matching ALL of them,
454
+ * because BM25 normalises for length. On this corpus that is catastrophic:
455
+ * 30% of observations are sub-60-character auto-capture stubs, so the
456
+ * shortest, emptiest records win. Searching `nexus_symbols_fts orphan` under
457
+ * the old builder returned *"Consolidated: change observations (5 entries)"*
458
+ * as the top hit — a record with no content at all — while the conjunctive
459
+ * form returns only documents about orphans in nexus.
460
+ *
461
+ * So: require all terms first, and fall back to ANY only when the conjunction
462
+ * finds nothing. That preserves the recall the OR form was introduced for
463
+ * (T553: non-word tokens like em dashes zeroing out an implicit-AND query)
464
+ * without letting it dominate the common case.
465
+ *
466
+ * @param query - the raw user query.
467
+ * @returns AND/OR MATCH expressions and the usable term count.
468
+ *
469
+ * @example
470
+ * ```ts
471
+ * const q = buildFts5Queries('nexus_symbols_fts orphan');
472
+ * // q.and === 'nexus_symbols_fts* AND orphan*'
473
+ * // q.or === 'nexus_symbols_fts* OR orphan*'
474
+ * ```
475
+ *
476
+ * @task T553
477
+ * @task T12073
478
+ */
479
+ export function buildFts5Queries(query) {
428
480
  const rawTokens = query.trim().split(/\s+/).filter(Boolean);
429
- if (rawTokens.length === 0)
430
- return '""';
431
- // Keep tokens that have at least one alphanumeric character and are not
432
- // pure stop-words (length ≥ 2 after stripping leading/trailing punctuation).
433
481
  const seen = new Set();
434
- const tokens = [];
482
+ const terms = [];
435
483
  for (const t of rawTokens) {
436
484
  // Strip leading/trailing non-word characters (e.g. "EPIC:" → "EPIC", "—" → "")
437
485
  const stripped = t.replace(/^\W+|\W+$/g, '');
@@ -443,12 +491,31 @@ function escapeFts5Query(query) {
443
491
  if (seen.has(lower))
444
492
  continue; // deduplicate
445
493
  seen.add(lower);
446
- tokens.push(`"${stripped.replace(/"/g, '""')}"`);
494
+ // Quote to neutralise FTS5 syntax characters, then append the prefix
495
+ // operator OUTSIDE the quotes — `"foo"*` is the documented way to combine
496
+ // a quoted string with a prefix match.
497
+ terms.push(`"${stripped.replace(/"/g, '""')}"*`);
447
498
  }
448
- if (tokens.length === 0)
449
- return '""';
450
- // OR semantics: any matching token returns the row, ranked by BM25 relevance.
451
- return tokens.join(' OR ');
499
+ if (terms.length === 0)
500
+ return { and: '""', or: '""', termCount: 0 };
501
+ return { and: terms.join(' AND '), or: terms.join(' OR '), termCount: terms.length };
502
+ }
503
+ /**
504
+ * Run an FTS5-backed query conjunctively, falling back to disjunctive.
505
+ *
506
+ * Single-term queries skip the fallback entirely (AND and OR are identical).
507
+ *
508
+ * @param run - executes one MATCH expression and returns its rows.
509
+ * @param queries - the pair from {@link buildFts5Queries}.
510
+ * @returns conjunctive rows when non-empty, else disjunctive rows.
511
+ *
512
+ * @task T12073
513
+ */
514
+ export function matchConjunctiveFirst(run, queries) {
515
+ const conjunctive = run(queries.and);
516
+ if (conjunctive.length > 0 || queries.termCount < 2)
517
+ return conjunctive;
518
+ return run(queries.or);
452
519
  }
453
520
  /**
454
521
  * Reset the cached FTS5 availability flag.
@@ -469,6 +536,36 @@ export function resetFts5Cache() {
469
536
  * standard value from Cormack, Clarke & Buettcher (SIGIR 2009).
470
537
  */
471
538
  export const RRF_K = 60;
539
+ /**
540
+ * Round-robin interleave several independently-ranked lists.
541
+ *
542
+ * Takes rank 1 from every list, then rank 2 from every list, and so on, so a
543
+ * downstream consumer that scores by array position does not systematically
544
+ * favour whichever list happened to be concatenated first.
545
+ *
546
+ * @param lists - per-source lists, each already ordered best-first.
547
+ * @returns a single list preserving each source's internal order.
548
+ *
549
+ * @example
550
+ * ```ts
551
+ * interleaveRanked([['a1', 'a2'], ['b1'], ['c1', 'c2', 'c3']]);
552
+ * // ['a1', 'b1', 'c1', 'a2', 'c2', 'c3']
553
+ * ```
554
+ *
555
+ * @task T12073
556
+ */
557
+ export function interleaveRanked(lists) {
558
+ const out = [];
559
+ const longest = lists.reduce((max, l) => Math.max(max, l.length), 0);
560
+ for (let i = 0; i < longest; i++) {
561
+ for (const list of lists) {
562
+ const item = list[i];
563
+ if (item !== undefined)
564
+ out.push(item);
565
+ }
566
+ }
567
+ return out;
568
+ }
472
569
  /**
473
570
  * Fuse ranked lists from multiple retrieval sources using Reciprocal Rank Fusion.
474
571
  *
@@ -601,34 +698,49 @@ export async function hybridSearch(query, projectRoot, options) {
601
698
  const vecResults = allResults[1];
602
699
  const codeResults = (includeCode ? (allResults[2] ?? []) : []);
603
700
  // --- 2. Project FTS results into ranked RrfHit list ---
604
- const ftsHits = [];
605
- for (const d of ftsResults.decisions) {
606
- ftsHits.push({
701
+ //
702
+ // T12073: INTERLEAVE the four tables instead of concatenating them.
703
+ //
704
+ // RRF scores a hit by its POSITION in this array. Concatenating
705
+ // decisions → patterns → learnings → observations therefore encoded a fixed
706
+ // precedence that has nothing to do with relevance: every decision outranked
707
+ // every observation, always. With 128 decisions and 6,985 observations, the
708
+ // largest and most recent store was structurally the least reachable —
709
+ // `cleo memory find "caamp marker"` returned unrelated learnings while the
710
+ // ONE observation matching both terms (verified by direct MATCH) never
711
+ // placed.
712
+ //
713
+ // Each table is already BM25-ordered internally. Round-robin interleaving
714
+ // preserves that intra-table ordering while removing the inter-table bias,
715
+ // and avoids comparing BM25 scores across separate indexes — which is not
716
+ // meaningful, since each has its own corpus statistics.
717
+ const ftsRanked = [
718
+ ftsResults.decisions.map((d) => ({
607
719
  id: d.id,
608
720
  type: 'decision',
609
721
  title: d.decision,
610
722
  text: `${d.decision} — ${d.rationale}`,
611
- });
612
- }
613
- for (const p of ftsResults.patterns) {
614
- ftsHits.push({
723
+ })),
724
+ ftsResults.patterns.map((p) => ({
615
725
  id: p.id,
616
726
  type: 'pattern',
617
727
  title: p.pattern,
618
728
  text: `${p.pattern} — ${p.context}`,
619
- });
620
- }
621
- for (const l of ftsResults.learnings) {
622
- ftsHits.push({
729
+ })),
730
+ ftsResults.learnings.map((l) => ({
623
731
  id: l.id,
624
732
  type: 'learning',
625
733
  title: l.insight,
626
734
  text: `${l.insight} (source: ${l.source})`,
627
- });
628
- }
629
- for (const o of ftsResults.observations) {
630
- ftsHits.push({ id: o.id, type: 'observation', title: o.title, text: o.narrative ?? o.title });
631
- }
735
+ })),
736
+ ftsResults.observations.map((o) => ({
737
+ id: o.id,
738
+ type: 'observation',
739
+ title: o.title,
740
+ text: o.narrative ?? o.title,
741
+ })),
742
+ ];
743
+ const ftsHits = interleaveRanked(ftsRanked);
632
744
  // --- 3. Project vector results into ranked RrfHit list (ascending distance = descending quality) ---
633
745
  const vecHits = vecResults.map((r) => ({
634
746
  id: r.id,
@@ -1 +1 @@
1
- {"version":3,"file":"brain-search.js","sourceRoot":"","sources":["../../src/memory/brain-search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"brain-search.js","sourceRoot":"","sources":["../../src/memory/brain-search.ts"],"names":[],"mappings":"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"}
@@ -55,7 +55,7 @@ export async function searchSimilar(query, projectRoot, limit) {
55
55
  // Ensure brain.db is initialized
56
56
  const { getBrainDb, getBrainNativeDb, isBrainVecLoaded } = await import('../store/memory-sqlite.js');
57
57
  await getBrainDb(projectRoot);
58
- const nativeDb = getBrainNativeDb();
58
+ const nativeDb = getBrainNativeDb(projectRoot);
59
59
  if (!nativeDb)
60
60
  return [];
61
61
  // Require sqlite-vec for KNN queries
@@ -1 +1 @@
1
- {"version":3,"file":"brain-similarity.js","sourceRoot":"","sources":["../../src/memory/brain-similarity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"brain-similarity.js","sourceRoot":"","sources":["../../src/memory/brain-similarity.ts"],"names":[],"mappings":"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"}
@@ -376,7 +376,7 @@ function hasMinimumRetrievalsSinceLastPlasticity(nativeDb, minCount = 2, session
376
376
  export async function shouldRunPlasticity(projectRoot, sessionId = null, minRetrievalsForPlasticity = 2) {
377
377
  const { getBrainDb, getBrainNativeDb } = await import('../store/memory-sqlite.js');
378
378
  await getBrainDb(projectRoot);
379
- const nativeDb = getBrainNativeDb();
379
+ const nativeDb = getBrainNativeDb(projectRoot);
380
380
  if (!nativeDb)
381
381
  return true; // Err on the side of running
382
382
  const hasMinimum = hasMinimumRetrievalsSinceLastPlasticity(nativeDb, minRetrievalsForPlasticity, sessionId);
@@ -513,7 +513,7 @@ async function applyStdpPlasticityImpl(projectRoot, options) {
513
513
  }
514
514
  const { getBrainDb, getBrainNativeDb } = await import('../store/memory-sqlite.js');
515
515
  await getBrainDb(projectRoot);
516
- const nativeDb = getBrainNativeDb();
516
+ const nativeDb = getBrainNativeDb(projectRoot);
517
517
  const result = {
518
518
  ltpEvents: 0,
519
519
  ltdEvents: 0,
@@ -901,7 +901,7 @@ async function applyStdpPlasticityImpl(projectRoot, options) {
901
901
  export async function getPlasticityStats(projectRoot, limit = 20) {
902
902
  const { getBrainDb, getBrainNativeDb } = await import('../store/memory-sqlite.js');
903
903
  await getBrainDb(projectRoot);
904
- const nativeDb = getBrainNativeDb();
904
+ const nativeDb = getBrainNativeDb(projectRoot);
905
905
  const empty = {
906
906
  totalEvents: 0,
907
907
  ltpCount: 0,
@@ -1098,7 +1098,7 @@ export async function backfillRewardSignals(projectRoot, sessionId, lookbackDays
1098
1098
  try {
1099
1099
  const { getBrainDb, getBrainNativeDb } = await import('../store/memory-sqlite.js');
1100
1100
  await getBrainDb(projectRoot);
1101
- const nativeDb = getBrainNativeDb();
1101
+ const nativeDb = getBrainNativeDb(projectRoot);
1102
1102
  if (!nativeDb)
1103
1103
  return result;
1104
1104
  // Guard: retrieval log must exist
@@ -1208,7 +1208,7 @@ export async function applyHomeostaticDecay(projectRoot, options) {
1208
1208
  const result = { edgesDecayed: 0, edgesPruned: 0 };
1209
1209
  const { getBrainDb, getBrainNativeDb } = await import('../store/memory-sqlite.js');
1210
1210
  await getBrainDb(projectRoot);
1211
- const nativeDb = getBrainNativeDb();
1211
+ const nativeDb = getBrainNativeDb(projectRoot);
1212
1212
  if (!nativeDb)
1213
1213
  return result;
1214
1214
  // Guard: brain_page_edges must exist
@@ -1368,7 +1368,7 @@ export async function pruneStaleHistory(projectRoot, options) {
1368
1368
  const weightHistoryRowCap = options?.weightHistoryRowCap ?? MAX_WEIGHT_HISTORY_ROW_CAP;
1369
1369
  const { getBrainDb, getBrainNativeDb } = await import('../store/memory-sqlite.js');
1370
1370
  await getBrainDb(projectRoot);
1371
- const nativeDb = getBrainNativeDb();
1371
+ const nativeDb = getBrainNativeDb(projectRoot);
1372
1372
  if (!nativeDb)
1373
1373
  return result;
1374
1374
  // ── Compute cutoff timestamp ──────────────────────────────────────────────