@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
@@ -41,9 +41,23 @@
41
41
  */
42
42
  import type { DatabaseSync } from 'node:sqlite';
43
43
  import type { NodeSQLiteDatabase } from 'drizzle-orm/node-sqlite';
44
+ import { type ProjectStore } from './dual-scope-db.js';
45
+ import { type DomainBinding } from './ports/domain-binding.js';
44
46
  import * as brainSchema from './schema/memory-schema.js';
45
47
  /** Schema version for newly created brain databases. Single source of truth. */
46
48
  export declare const BRAIN_SCHEMA_VERSION = "1.0.0";
49
+ /**
50
+ * The brain domain's bound value: its Drizzle handle plus the per-database
51
+ * `sqlite-vec` availability flag.
52
+ *
53
+ * @task T12038 (E6-L14)
54
+ */
55
+ export interface BrainDomainHandle {
56
+ /** Drizzle instance typed against the legacy brain schema. */
57
+ readonly drizzle: NodeSQLiteDatabase;
58
+ /** Whether the `sqlite-vec` extension loaded for THIS database. */
59
+ readonly vecLoaded: boolean;
60
+ }
47
61
  /**
48
62
  * Get the path to the brain-domain SQLite database file.
49
63
  *
@@ -66,9 +80,21 @@ export declare function getBrainDbPath(cwd?: string): string;
66
80
  */
67
81
  export declare function resolveBrainMigrationsFolder(): string;
68
82
  /**
69
- * Check whether the sqlite-vec extension is loaded for the current brain.db.
83
+ * Check whether the `sqlite-vec` extension is loaded for a project's brain
84
+ * database.
85
+ *
86
+ * ## E6-L14 (T12038) — now per-database
87
+ *
88
+ * This used to read a single process-wide boolean, so a project whose vec
89
+ * extension failed to load could report `true` because a DIFFERENT project
90
+ * had loaded it. The flag is now per-binding.
91
+ *
92
+ * Returns `false` when the brain domain is not bound for `cwd` yet — callers
93
+ * must `await getBrainDb(cwd)` / {@link bindBrainDomain} first.
94
+ *
95
+ * @param cwd - Project working directory. Defaults to the ambient project.
70
96
  */
71
- export declare function isBrainVecLoaded(): boolean;
97
+ export declare function isBrainVecLoaded(cwd?: string): boolean;
72
98
  /**
73
99
  * Initialize the project-scope BRAIN domain SQLite database (lazy, singleton).
74
100
  *
@@ -96,6 +122,34 @@ export declare function isBrainVecLoaded(): boolean;
96
122
  * complete (migrations are async).
97
123
  */
98
124
  export declare function getBrainDb(cwd?: string): Promise<NodeSQLiteDatabase>;
125
+ /**
126
+ * Bind the legacy brain schema to the {@link ProjectStore} for `cwd` and
127
+ * return the full binding (store + native handle + {@link BrainDomainHandle}).
128
+ *
129
+ * ## E6-L14 cutover (T12038)
130
+ *
131
+ * The ProjectStore-bound typed port that replaces this module's singleton
132
+ * quintet (`_db` / `_nativeDb` / `_dbPath` / `_initPromise` / `_vecLoaded`).
133
+ *
134
+ * The brain domain shares ONE `DatabaseSync` with the tasks domain (both are
135
+ * tables inside the same consolidated `cleo.db`). Under the old design that
136
+ * sharing was implicit and fragile: the tasks side could close the connection
137
+ * while the brain singleton still referenced it, and `observeBrain`'s
138
+ * cross-domain write-guard swallowed the resulting `database is not open` as
139
+ * "session absent" — silently nulling `sourceSessionId` (T12019/T12020).
140
+ * Binding both domains to the SAME store instance makes the sharing explicit:
141
+ * an eviction invalidates both bindings at once, by identity.
142
+ *
143
+ * Prefer this over {@link getBrainDb} when you also need the native handle,
144
+ * the per-database vec flag, or an explicit store for a cross-domain
145
+ * transaction with the tasks domain.
146
+ *
147
+ * @param cwd - Project working directory.
148
+ * @returns The live brain-domain binding.
149
+ *
150
+ * @task T12038 (E6-L14)
151
+ */
152
+ export declare function bindBrainDomain(cwd?: string): Promise<DomainBinding<BrainDomainHandle, ProjectStore>>;
99
153
  /**
100
154
  * Close the brain-domain database connection and release resources.
101
155
  *
@@ -127,7 +181,7 @@ export declare function resetBrainDbState(): void;
127
181
  * Useful for direct PRAGMA calls or raw SQL operations.
128
182
  * Returns null if the database hasn't been initialized.
129
183
  */
130
- export declare function getBrainNativeDb(): DatabaseSync | null;
184
+ export declare function getBrainNativeDb(cwd?: string): DatabaseSync | null;
131
185
  export type { NodeSQLiteDatabase };
132
186
  /**
133
187
  * Re-export brain schema for external use.
@@ -1 +1 @@
1
- {"version":3,"file":"memory-sqlite.d.ts","sourceRoot":"","sources":["../../src/store/memory-sqlite.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAKhD,OAAO,KAAK,EAAwB,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAgBxF,OAAO,KAAK,WAAW,MAAM,2BAA2B,CAAC;AA8BzD,gFAAgF;AAChF,eAAO,MAAM,oBAAoB,UAAU,CAAC;AAW5C;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,IAAI,MAAM,CAErD;AAqOD;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C;AA0BD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAmH1E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAQnC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAMxC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,YAAY,GAAG,IAAI,CAEtD;AAED,YAAY,EAAE,kBAAkB,EAAE,CAAC;AACnC;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"memory-sqlite.d.ts","sourceRoot":"","sources":["../../src/store/memory-sqlite.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAKhD,OAAO,KAAK,EAAwB,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAOxF,OAAO,EAAE,KAAK,YAAY,EAA0B,MAAM,oBAAoB,CAAC;AAU/E,OAAO,EAGL,KAAK,aAAa,EAGnB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,WAAW,MAAM,2BAA2B,CAAC;AA8BzD,gFAAgF;AAChF,eAAO,MAAM,oBAAoB,UAAU,CAAC;AAU5C;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,8DAA8D;IAC9D,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,mEAAmE;IACnE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,IAAI,MAAM,CAErD;AA6OD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAEtD;AA0BD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAE1E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,eAAe,CACnC,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,aAAa,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC,CAqDzD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAInC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAElE;AAED,YAAY,EAAE,kBAAkB,EAAE,CAAC;AACnC;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,CAAC"}
@@ -46,8 +46,11 @@ import { createRequire } from 'node:module';
46
46
  // native handle and re-wrap it with the legacy brain-schema drizzle instance so
47
47
  // existing callers (brainSchema.* queries) compile and run without change.
48
48
  import { getLogger } from '../logger.js';
49
- import { openDualScopeDb, resolveDualScopeDbPath } from './dual-scope-db.js';
49
+ import { resolveDualScopeDbPath } from './dual-scope-db.js';
50
50
  import { createSafetyBackup, migrateWithRetry, reconcileBrainMigrationsForConsolidatedDb, reconcileJournal, tableExists, } from './migration-manager.js';
51
+ // T12038: the brain domain no longer owns a singleton — the path-keyed binding
52
+ // registry does. This module contributes only its schema reconciliation.
53
+ import { bindProjectDomain, boundProjectNative, peekProjectDomain, releaseDomainBindings, } from './ports/domain-binding.js';
51
54
  import { resolveCorePackageMigrationsFolder } from './resolve-migrations-folder.js';
52
55
  import * as brainSchema from './schema/memory-schema.js';
53
56
  const _require = createRequire(import.meta.url);
@@ -77,14 +80,6 @@ function _getDrizzle() {
77
80
  }
78
81
  /** Schema version for newly created brain databases. Single source of truth. */
79
82
  export const BRAIN_SCHEMA_VERSION = '1.0.0';
80
- /** Singleton state for lazy initialization. */
81
- let _db = null;
82
- let _nativeDb = null;
83
- let _dbPath = null;
84
- /** Guard against concurrent initialization (async migration). */
85
- let _initPromise = null;
86
- /** Whether sqlite-vec extension loaded successfully. */
87
- let _vecLoaded = false;
88
83
  /**
89
84
  * Get the path to the brain-domain SQLite database file.
90
85
  *
@@ -207,7 +202,7 @@ function brainTablesAreConsolidatedShape(nativeDb) {
207
202
  * @internal
208
203
  * @task T11522
209
204
  */
210
- function establishLegacyBrainSchema(nativeDb, db) {
205
+ function establishLegacyBrainSchema(nativeDb, db, dbPath) {
211
206
  const log = getLogger('brain-schema');
212
207
  if (brainTablesAreConsolidatedShape(nativeDb)) {
213
208
  // Drop the consolidated (exodus-target) brain tables so the legacy
@@ -268,8 +263,12 @@ function establishLegacyBrainSchema(nativeDb, db) {
268
263
  // pre-created, so run the full `drizzle-brain` migrate via the generic
269
264
  // reconcile (its Scenario-2 orphan-delete is safe here — a standalone brain.db
270
265
  // journal contains only brain hashes).
271
- if (tableExists(nativeDb, 'brain_decisions') && _dbPath) {
272
- createSafetyBackup(_dbPath);
266
+ // `dbPath` is passed explicitly (T12038) — it used to be read from the
267
+ // module-global `_dbPath`, which was still `null` on the first open because
268
+ // it was assigned AFTER this reconcile ran, so the safety backup never fired
269
+ // on the very path that needed it.
270
+ if (tableExists(nativeDb, 'brain_decisions')) {
271
+ createSafetyBackup(dbPath);
273
272
  }
274
273
  reconcileJournal(nativeDb, migrationsFolder, 'brain_decisions', 'brain');
275
274
  migrateWithRetry(db, migrationsFolder, nativeDb, 'brain_decisions', 'brain');
@@ -313,10 +312,22 @@ function initializeBrainVec(nativeDb) {
313
312
  .run();
314
313
  }
315
314
  /**
316
- * Check whether the sqlite-vec extension is loaded for the current brain.db.
315
+ * Check whether the `sqlite-vec` extension is loaded for a project's brain
316
+ * database.
317
+ *
318
+ * ## E6-L14 (T12038) — now per-database
319
+ *
320
+ * This used to read a single process-wide boolean, so a project whose vec
321
+ * extension failed to load could report `true` because a DIFFERENT project
322
+ * had loaded it. The flag is now per-binding.
323
+ *
324
+ * Returns `false` when the brain domain is not bound for `cwd` yet — callers
325
+ * must `await getBrainDb(cwd)` / {@link bindBrainDomain} first.
326
+ *
327
+ * @param cwd - Project working directory. Defaults to the ambient project.
317
328
  */
318
- export function isBrainVecLoaded() {
319
- return _vecLoaded;
329
+ export function isBrainVecLoaded(cwd) {
330
+ return peekProjectDomain('brain', cwd)?.db.vecLoaded ?? false;
320
331
  }
321
332
  /**
322
333
  * Initialize the default embedding provider when brain.embedding.enabled is true.
@@ -369,61 +380,47 @@ async function initEmbeddingProvider(cwd) {
369
380
  * complete (migrations are async).
370
381
  */
371
382
  export async function getBrainDb(cwd) {
372
- const requestedPath = getBrainDbPath(cwd);
383
+ return (await bindBrainDomain(cwd)).db.drizzle;
384
+ }
385
+ /**
386
+ * Bind the legacy brain schema to the {@link ProjectStore} for `cwd` and
387
+ * return the full binding (store + native handle + {@link BrainDomainHandle}).
388
+ *
389
+ * ## E6-L14 cutover (T12038)
390
+ *
391
+ * The ProjectStore-bound typed port that replaces this module's singleton
392
+ * quintet (`_db` / `_nativeDb` / `_dbPath` / `_initPromise` / `_vecLoaded`).
393
+ *
394
+ * The brain domain shares ONE `DatabaseSync` with the tasks domain (both are
395
+ * tables inside the same consolidated `cleo.db`). Under the old design that
396
+ * sharing was implicit and fragile: the tasks side could close the connection
397
+ * while the brain singleton still referenced it, and `observeBrain`'s
398
+ * cross-domain write-guard swallowed the resulting `database is not open` as
399
+ * "session absent" — silently nulling `sourceSessionId` (T12019/T12020).
400
+ * Binding both domains to the SAME store instance makes the sharing explicit:
401
+ * an eviction invalidates both bindings at once, by identity.
402
+ *
403
+ * Prefer this over {@link getBrainDb} when you also need the native handle,
404
+ * the per-database vec flag, or an explicit store for a cross-domain
405
+ * transaction with the tasks domain.
406
+ *
407
+ * @param cwd - Project working directory.
408
+ * @returns The live brain-domain binding.
409
+ *
410
+ * @task T12038 (E6-L14)
411
+ */
412
+ export async function bindBrainDomain(cwd) {
373
413
  // T1906: guard against prod-DB writes in test mode.
374
414
  const { assertTestEnv } = await import('./data-accessor.js');
375
- assertTestEnv(requestedPath);
376
- // If singleton exists but points to different path, reset it.
377
- if (_db && _dbPath !== requestedPath) {
378
- resetBrainDbState();
379
- }
380
- // Liveness guard (T11522): the brain domain shares the consolidated cleo.db
381
- // handle with the tasks domain. The tasks side may have closed + re-opened the
382
- // shared `DatabaseSync` (e.g. its `resetDbState()` / auto-recovery path) while
383
- // our brain singleton still references the now-closed handle. Detect a stale
384
- // (closed) handle and drop the singleton so we re-derive from the live
385
- // openDualScopeDb cache below.
386
- if (_db && (_nativeDb === null || !_nativeDb.isOpen)) {
387
- resetBrainDbState();
388
- }
389
- if (_db)
390
- return _db;
391
- // If already initializing, wait for the in-flight init.
392
- if (_initPromise)
393
- return _initPromise;
394
- _initPromise = (async () => {
395
- // ── Dual-scope chokepoint delegation (T11522 · E6-L2) ─────────────────
396
- // openDualScopeDb applies the pragma SSoT, creates the directory, runs the
397
- // consolidated cleo-project migrations (which create the `brain_*` tables),
398
- // and manages the singleton cache. We extract its native handle so we can
399
- // re-wrap it with the legacy brain-schema for caller compatibility.
400
- let nativeDb = null;
401
- for (let attempt = 0; attempt < 2; attempt += 1) {
402
- const dualHandle = await openDualScopeDb('project', cwd);
403
- // Extract the underlying DatabaseSync. Drizzle exposes it via `$client`.
404
- nativeDb = dualHandle.db.$client ?? null;
405
- if (!nativeDb) {
406
- throw new Error('E6-L2: openDualScopeDb returned a handle without $client — ' +
407
- 'cannot extract DatabaseSync for legacy brain-schema wrapping.');
408
- }
409
- // A shared handle can be closed after the dual-scope cache checks it but
410
- // before this await resumes. Re-open once; the cache then evicts the dead
411
- // entry and returns the current live handle.
412
- if (nativeDb.isOpen)
413
- break;
414
- }
415
- if (!nativeDb?.isOpen) {
416
- throw new Error('E6-L2: openDualScopeDb repeatedly returned a closed DatabaseSync handle.');
417
- }
418
- _nativeDb = nativeDb;
419
- _dbPath = requestedPath;
415
+ assertTestEnv(getBrainDbPath(cwd));
416
+ return bindProjectDomain('brain', cwd, (nativeDb, store) => {
420
417
  // Load the sqlite-vec extension for vector similarity search (T5157). The
421
418
  // dual-scope handle is opened with `allowExtension: true`, so loading is
422
419
  // permitted. Non-fatal if unavailable — vec0 tables simply won't be created.
423
- _vecLoaded = loadBrainVecExtension(nativeDb);
420
+ const vecLoaded = loadBrainVecExtension(nativeDb);
424
421
  // Wrap the native handle with the legacy brain-schema drizzle instance so
425
422
  // existing callers (brainSchema.* queries) continue to work unchanged.
426
- const db = _getDrizzle()({ client: nativeDb });
423
+ const drizzle = _getDrizzle()({ client: nativeDb });
427
424
  // Reconcile the LEGACY brain-domain schema inside the consolidated cleo.db.
428
425
  // Since T11647 the consolidated `cleo.db` migration already creates every
429
426
  // `brain_*` table in the LEGACY RUNTIME shape (epoch-ms integer timestamps,
@@ -435,35 +432,27 @@ export async function getBrainDb(cwd) {
435
432
  // `drizzle-brain` migrate. The pre-T11647 DROP+recreate path is retained as
436
433
  // a defensive fallback for any DB still carrying the old consolidated shape.
437
434
  // (T11522 · T11647)
438
- establishLegacyBrainSchema(nativeDb, db);
435
+ establishLegacyBrainSchema(nativeDb, drizzle, store.dbPath);
439
436
  // Create the vec0 virtual table for embeddings if the extension is loaded
440
437
  // (T5157). Must run after migrations so the schema is consistent.
441
- if (_vecLoaded) {
438
+ if (vecLoaded) {
442
439
  initializeBrainVec(nativeDb);
443
440
  }
444
441
  // Seed schema version for new databases (no-op if already set).
445
442
  nativeDb
446
443
  .prepare(`INSERT OR IGNORE INTO brain_schema_meta (key, value) VALUES ('schemaVersion', '${BRAIN_SCHEMA_VERSION}')`)
447
444
  .run();
448
- // Set singleton only after migrations complete.
449
- _db = db;
450
445
  // Wire the default embedding provider when vec is loaded and embedding is
451
446
  // enabled. Best-effort, async, never blocks DB access. (T539)
452
- if (_vecLoaded) {
447
+ if (vecLoaded) {
453
448
  setImmediate(() => {
454
449
  initEmbeddingProvider(cwd).catch(() => {
455
450
  // Non-fatal — embedding will be unavailable until next startup.
456
451
  });
457
452
  });
458
453
  }
459
- return db;
460
- })();
461
- try {
462
- return await _initPromise;
463
- }
464
- finally {
465
- _initPromise = null;
466
- }
454
+ return { drizzle, vecLoaded };
455
+ });
467
456
  }
468
457
  /**
469
458
  * Close the brain-domain database connection and release resources.
@@ -479,13 +468,9 @@ export async function getBrainDb(cwd) {
479
468
  * coordinated reset (`closeAllDatabases` → `closeDb` → `_resetDualScopeDbCache`).
480
469
  */
481
470
  export function closeBrainDb() {
482
- // Drop only the brain singleton references. Do NOT close `_nativeDb` — it is
471
+ // Drop only the brain-domain binding. Do NOT close the connection — it is
483
472
  // the shared dual-scope handle, possibly still in use by the tasks domain.
484
- _nativeDb = null;
485
- _db = null;
486
- _dbPath = null;
487
- _initPromise = null;
488
- _vecLoaded = false;
473
+ releaseDomainBindings({ scope: 'project', domain: 'brain' });
489
474
  }
490
475
  /**
491
476
  * Reset brain-domain singleton state without saving.
@@ -499,19 +484,15 @@ export function closeBrainDb() {
499
484
  * shared with the tasks domain). Mirrors {@link closeBrainDb}.
500
485
  */
501
486
  export function resetBrainDbState() {
502
- _nativeDb = null;
503
- _db = null;
504
- _dbPath = null;
505
- _initPromise = null;
506
- _vecLoaded = false;
487
+ releaseDomainBindings({ scope: 'project', domain: 'brain' });
507
488
  }
508
489
  /**
509
490
  * Get the underlying node:sqlite DatabaseSync instance for brain.db.
510
491
  * Useful for direct PRAGMA calls or raw SQL operations.
511
492
  * Returns null if the database hasn't been initialized.
512
493
  */
513
- export function getBrainNativeDb() {
514
- return _nativeDb;
494
+ export function getBrainNativeDb(cwd) {
495
+ return boundProjectNative('brain', cwd);
515
496
  }
516
497
  /**
517
498
  * Re-export brain schema for external use.
@@ -1 +1 @@
1
- {"version":3,"file":"memory-sqlite.js","sourceRoot":"","sources":["../../src/store/memory-sqlite.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory-sqlite.js","sourceRoot":"","sources":["../../src/store/memory-sqlite.ts"],"names":[],"mappings":"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"}
@@ -69,9 +69,29 @@
69
69
  */
70
70
  import type { DatabaseSync } from 'node:sqlite';
71
71
  import type { NodeSQLiteDatabase } from 'drizzle-orm/node-sqlite';
72
+ import { type ProjectStore } from './dual-scope-db.js';
73
+ import { type DomainBinding } from './ports/domain-binding.js';
72
74
  import * as nexusSchema from './schema/nexus-schema.js';
73
75
  /** Schema version for newly created nexus databases. Single source of truth. */
74
76
  export declare const NEXUS_SCHEMA_VERSION = "1.0.0";
77
+ /**
78
+ * The nexus domain's bound value: its Drizzle handle plus the GLOBAL registry
79
+ * path its ATTACH targets.
80
+ *
81
+ * The registry home (`getCleoHome()`) can change between calls. Carrying it in
82
+ * the binding lets {@link bindNexusDomain} detect the change and re-establish —
83
+ * which re-runs the GLOBAL consolidated migration before re-attaching, where a
84
+ * bare re-attach would bind an unmigrated file (→ "no such table:
85
+ * nexus_project_registry"). ADR-090 · T11648.
86
+ *
87
+ * @task T12039 (E6-L15)
88
+ */
89
+ export interface NexusDomainHandle {
90
+ /** Drizzle instance typed against the nexus schema. */
91
+ readonly drizzle: NodeSQLiteDatabase;
92
+ /** Absolute path of the GLOBAL `cleo.db` currently ATTACHed. */
93
+ readonly registryPath: string;
94
+ }
75
95
  /**
76
96
  * Returns the nexus GRAPH DB path — the consolidated PROJECT `cleo.db`
77
97
  * (`<projectRoot>/.cleo/cleo.db`), where the four code-graph tables
@@ -193,6 +213,28 @@ export declare function _resetNestedNexusWarningGate(): void;
193
213
  * @task T11648 (ADR-090 runtime read half — project-scope graph + global attach)
194
214
  */
195
215
  export declare function getNexusDb(): Promise<NodeSQLiteDatabase>;
216
+ /**
217
+ * Bind the nexus schema to the {@link ProjectStore} holding the code graph,
218
+ * with the GLOBAL `cleo.db` ATTACHed for registry/identity reads.
219
+ *
220
+ * ## E6-L15 cutover (T12039)
221
+ *
222
+ * Replaces this module's singleton quintet (`_nexusDb` / `_nexusNativeDb` /
223
+ * `_nexusDbPath` / `_nexusRegistryPath` / `_nexusInitPromise`). Path keying,
224
+ * single-flight, and handle liveness move to the binding registry; this
225
+ * function keeps only what is genuinely nexus-specific — the two-scope open
226
+ * order and the registry ATTACH.
227
+ *
228
+ * The GLOBAL registry path is captured in the bound value rather than a
229
+ * separate module-global, so a `CLEO_HOME` change invalidates exactly this
230
+ * binding (and re-runs the global migration before re-attaching) instead of
231
+ * resetting a process-wide singleton that other projects also depended on.
232
+ *
233
+ * @returns The live nexus-domain binding.
234
+ *
235
+ * @task T12039 (E6-L15)
236
+ */
237
+ export declare function bindNexusDomain(): Promise<DomainBinding<NexusDomainHandle, ProjectStore>>;
196
238
  /**
197
239
  * Close the nexus-domain database connection and release resources.
198
240
  *
@@ -1 +1 @@
1
- {"version":3,"file":"nexus-sqlite.d.ts","sourceRoot":"","sources":["../../src/store/nexus-sqlite.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoEG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAelE,OAAO,KAAK,WAAW,MAAM,0BAA0B,CAAC;AAMxD,gFAAgF;AAChF,eAAO,MAAM,oBAAoB,UAAU,CAAC;AAmC5C;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAe/C;AAuDD;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,IAAI,MAAM,CAErD;AAuBD;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,IAAI,MAAM,CAEnD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,0BAA0B,IAAI,OAAO,CA8BpD;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,IAAI,IAAI,CAEnD;AAsVD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,kBAAkB,CAAC,CA2H9D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAQnC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAMxC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,YAAY,GAAG,IAAI,CAEtD;AAED,YAAY,EAAE,kBAAkB,EAAE,CAAC;AACnC;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"nexus-sqlite.d.ts","sourceRoot":"","sources":["../../src/store/nexus-sqlite.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoEG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AASlE,OAAO,EAAmB,KAAK,YAAY,EAA0B,MAAM,oBAAoB,CAAC;AAKhG,OAAO,EAGL,KAAK,aAAa,EAGnB,MAAM,2BAA2B,CAAC;AAKnC,OAAO,KAAK,WAAW,MAAM,0BAA0B,CAAC;AAMxD,gFAAgF;AAChF,eAAO,MAAM,oBAAoB,UAAU,CAAC;AAU5C;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,iBAAiB;IAChC,uDAAuD;IACvD,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,gEAAgE;IAChE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAoBD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAe/C;AAuDD;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,IAAI,MAAM,CAErD;AAuBD;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,IAAI,MAAM,CAEnD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,0BAA0B,IAAI,OAAO,CA8BpD;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,IAAI,IAAI,CAEnD;AAwVD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAE9D;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,aAAa,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC,CA4E/F;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAInC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,YAAY,GAAG,IAAI,CAEtD;AAED,YAAY,EAAE,kBAAkB,EAAE,CAAC;AACnC;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,CAAC"}