@neuralis/brain-core 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (383) hide show
  1. package/README.md +26 -35
  2. package/app/cards/DiffView.tsx +9 -7
  3. package/app/cards/README.md +1 -1
  4. package/app/cards/diffLine.tsx +2 -4
  5. package/app/filesystem/README.md +1 -1
  6. package/app/filesystem/api/index.ts +14 -5
  7. package/app/filesystem/domain/types.ts +24 -5
  8. package/app/filesystem/store/filesystemStore.ts +20 -1
  9. package/app/filesystem/store/listSlice.ts +2 -0
  10. package/app/filesystem/store/searchSlice.ts +24 -1
  11. package/app/filesystem/ui/FileTreeSearch.tsx +29 -2
  12. package/app/filesystem/ui/PendingChangesPanel.tsx +74 -17
  13. package/app/filesystem/ui/PendingReviewDialog.tsx +45 -20
  14. package/app/filesystem/ui/README.md +8 -7
  15. package/app/filesystem/ui/ReembedDialog.tsx +20 -9
  16. package/app/filesystem/ui/SourceDeleteConfirm.tsx +1 -1
  17. package/app/filesystem/ui/SourcesPanel.tsx +110 -17
  18. package/app/filesystem/ui/VectorHealthPanel.tsx +14 -0
  19. package/app/filesystem/ui/pendingChangesModel.ts +9 -5
  20. package/dist/app/chunks/{astro-LRAFGXNX.js → astro-B2J4AS2D.js} +1 -1
  21. package/dist/app/chunks/bash-KY6SAQTH.js +1 -0
  22. package/dist/app/chunks/c-OBOPYVZ7.js +1 -0
  23. package/dist/app/chunks/{chunk-5H7ZCOD3.js → chunk-2X3GNKJ3.js} +1 -1
  24. package/dist/app/chunks/{chunk-XIFGTNRM.js → chunk-JPJIVRFI.js} +1 -1
  25. package/dist/app/chunks/{chunk-RH3QY5LF.js → chunk-LEFIFWND.js} +1 -1
  26. package/dist/app/chunks/{chunk-G4RZ3UNX.js → chunk-N6RXX3PH.js} +1 -1
  27. package/dist/app/chunks/{chunk-QXXJ73P5.js → chunk-PZAW4HPB.js} +1 -1
  28. package/dist/app/chunks/{chunk-3QLE7Y4L.js → chunk-ZBYWWTO6.js} +1 -1
  29. package/dist/app/chunks/cpp-TVWVOTEQ.js +1 -0
  30. package/dist/app/chunks/css-MANZBYA4.js +1 -0
  31. package/dist/app/chunks/{elixir-M36XROA6.js → elixir-S725Z7EH.js} +1 -1
  32. package/dist/app/chunks/{elm-7BG6QAIK.js → elm-5WUUSTNB.js} +1 -1
  33. package/dist/app/chunks/graphql-UGOPR3WU.js +1 -0
  34. package/dist/app/chunks/html-F6FWTBSG.js +1 -0
  35. package/dist/app/chunks/java-ANIVV5H5.js +1 -0
  36. package/dist/app/chunks/javascript-IH374YWG.js +1 -0
  37. package/dist/app/chunks/json-WGGVVXSB.js +1 -0
  38. package/dist/app/chunks/jsx-OTXJQD32.js +1 -0
  39. package/dist/app/chunks/{latex-ZWK7SXB6.js → latex-QCZNITGN.js} +1 -1
  40. package/dist/app/chunks/lua-4CRZ64PU.js +1 -0
  41. package/dist/app/chunks/{nginx-2L6VRV3A.js → nginx-V4CYS7WR.js} +1 -1
  42. package/dist/app/chunks/{perl-PBUAXXK6.js → perl-BHTX7F5B.js} +1 -1
  43. package/dist/app/chunks/{php-QJX57PA6.js → php-AYGJ5WYZ.js} +1 -1
  44. package/dist/app/chunks/r-4YFCFA4B.js +1 -0
  45. package/dist/app/chunks/{ruby-RLOWMVPO.js → ruby-42NMJWAL.js} +1 -1
  46. package/dist/app/chunks/{scss-B5CAI3HR.js → scss-XD7VU2CU.js} +1 -1
  47. package/dist/app/chunks/sql-B55MH6JJ.js +1 -0
  48. package/dist/app/chunks/{svelte-GT3D4C44.js → svelte-WR3QPIJU.js} +1 -1
  49. package/dist/app/chunks/tsx-S73GAE2L.js +1 -0
  50. package/dist/app/chunks/typescript-NEWOAB5Z.js +1 -0
  51. package/dist/app/chunks/{vue-JOW62MHD.js → vue-CCDS4VZK.js} +1 -1
  52. package/dist/app/chunks/xml-UXKAGLDR.js +1 -0
  53. package/dist/app/chunks/yaml-UMWKDTK7.js +1 -0
  54. package/dist/app/host.js +40 -40
  55. package/dist/scripts/embeddingLockV3.d.ts +30 -0
  56. package/dist/scripts/embeddingLockV3.d.ts.map +1 -0
  57. package/dist/scripts/embeddingLockV3.js +100 -0
  58. package/dist/scripts/embeddingLockV3.js.map +1 -0
  59. package/dist/scripts/vectorProofV1.d.ts +90 -0
  60. package/dist/scripts/vectorProofV1.d.ts.map +1 -0
  61. package/dist/scripts/vectorProofV1.js +220 -0
  62. package/dist/scripts/vectorProofV1.js.map +1 -0
  63. package/dist/src/config/env.d.ts +21 -0
  64. package/dist/src/config/env.d.ts.map +1 -1
  65. package/dist/src/config/env.js +55 -0
  66. package/dist/src/config/env.js.map +1 -1
  67. package/dist/src/connectors/AppSourceConfigStore.d.ts +12 -2
  68. package/dist/src/connectors/AppSourceConfigStore.d.ts.map +1 -1
  69. package/dist/src/connectors/AppSourceConfigStore.js +48 -40
  70. package/dist/src/connectors/AppSourceConfigStore.js.map +1 -1
  71. package/dist/src/connectors/LocalDiskConnector.d.ts +11 -14
  72. package/dist/src/connectors/LocalDiskConnector.d.ts.map +1 -1
  73. package/dist/src/connectors/LocalDiskConnector.js +87 -107
  74. package/dist/src/connectors/LocalDiskConnector.js.map +1 -1
  75. package/dist/src/connectors/sourceConfigMutation.d.ts +11 -1
  76. package/dist/src/connectors/sourceConfigMutation.d.ts.map +1 -1
  77. package/dist/src/connectors/sourceConfigMutation.js +36 -3
  78. package/dist/src/connectors/sourceConfigMutation.js.map +1 -1
  79. package/dist/src/domain/chunker.js +8 -3
  80. package/dist/src/domain/chunker.js.map +1 -1
  81. package/dist/src/domain/healthTypes.d.ts +11 -0
  82. package/dist/src/domain/healthTypes.d.ts.map +1 -1
  83. package/dist/src/domain/mime.d.ts +1 -0
  84. package/dist/src/domain/mime.d.ts.map +1 -1
  85. package/dist/src/domain/mime.js +48 -0
  86. package/dist/src/domain/mime.js.map +1 -1
  87. package/dist/src/domain/pendingChange.d.ts +7 -0
  88. package/dist/src/domain/pendingChange.d.ts.map +1 -1
  89. package/dist/src/domain/pendingChange.js +11 -0
  90. package/dist/src/domain/pendingChange.js.map +1 -1
  91. package/dist/src/domain/sourceConfig.d.ts +7 -14
  92. package/dist/src/domain/sourceConfig.d.ts.map +1 -1
  93. package/dist/src/domain/sourceConfig.js +1 -13
  94. package/dist/src/domain/sourceConfig.js.map +1 -1
  95. package/dist/src/domain/sourcePackages.d.ts +11 -2
  96. package/dist/src/domain/sourcePackages.d.ts.map +1 -1
  97. package/dist/src/domain/syncTrigger.d.ts +2 -3
  98. package/dist/src/domain/syncTrigger.d.ts.map +1 -1
  99. package/dist/src/domain/syncTrigger.js +2 -3
  100. package/dist/src/domain/syncTrigger.js.map +1 -1
  101. package/dist/src/domain/syncTypes.d.ts +21 -4
  102. package/dist/src/domain/syncTypes.d.ts.map +1 -1
  103. package/dist/src/domain/syncTypes.js.map +1 -1
  104. package/dist/src/domain/text.d.ts +3 -0
  105. package/dist/src/domain/text.d.ts.map +1 -1
  106. package/dist/src/domain/text.js +5 -0
  107. package/dist/src/domain/text.js.map +1 -1
  108. package/dist/src/domain/types.d.ts +9 -0
  109. package/dist/src/domain/types.d.ts.map +1 -1
  110. package/dist/src/embeddings/clients/GeminiEmbedder.d.ts.map +1 -1
  111. package/dist/src/embeddings/clients/GeminiEmbedder.js +11 -5
  112. package/dist/src/embeddings/clients/GeminiEmbedder.js.map +1 -1
  113. package/dist/src/embeddings/clients/OllamaEmbedder.d.ts.map +1 -1
  114. package/dist/src/embeddings/clients/OllamaEmbedder.js +13 -6
  115. package/dist/src/embeddings/clients/OllamaEmbedder.js.map +1 -1
  116. package/dist/src/embeddings/clients/OpenAIEmbedder.d.ts.map +1 -1
  117. package/dist/src/embeddings/clients/OpenAIEmbedder.js +12 -9
  118. package/dist/src/embeddings/clients/OpenAIEmbedder.js.map +1 -1
  119. package/dist/src/embeddings/clients/QwenEmbedder.d.ts.map +1 -1
  120. package/dist/src/embeddings/clients/QwenEmbedder.js +12 -5
  121. package/dist/src/embeddings/clients/QwenEmbedder.js.map +1 -1
  122. package/dist/src/embeddings/clients/VoyageEmbedder.d.ts.map +1 -1
  123. package/dist/src/embeddings/clients/VoyageEmbedder.js +12 -5
  124. package/dist/src/embeddings/clients/VoyageEmbedder.js.map +1 -1
  125. package/dist/src/embeddings/factory.d.ts +2 -0
  126. package/dist/src/embeddings/factory.d.ts.map +1 -1
  127. package/dist/src/embeddings/factory.js +23 -3
  128. package/dist/src/embeddings/factory.js.map +1 -1
  129. package/dist/src/embeddings/lock.d.ts +22 -11
  130. package/dist/src/embeddings/lock.d.ts.map +1 -1
  131. package/dist/src/embeddings/lock.js +47 -29
  132. package/dist/src/embeddings/lock.js.map +1 -1
  133. package/dist/src/embeddings/retry.d.ts +5 -0
  134. package/dist/src/embeddings/retry.d.ts.map +1 -1
  135. package/dist/src/embeddings/retry.js +35 -0
  136. package/dist/src/embeddings/retry.js.map +1 -1
  137. package/dist/src/events/pending.d.ts +56 -0
  138. package/dist/src/events/pending.d.ts.map +1 -0
  139. package/dist/src/events/pending.js +108 -0
  140. package/dist/src/events/pending.js.map +1 -0
  141. package/dist/src/events/source.d.ts +60 -14
  142. package/dist/src/events/source.d.ts.map +1 -1
  143. package/dist/src/events/source.js +149 -31
  144. package/dist/src/events/source.js.map +1 -1
  145. package/dist/src/events/vector.d.ts +33 -0
  146. package/dist/src/events/vector.d.ts.map +1 -0
  147. package/dist/src/events/vector.js +57 -0
  148. package/dist/src/events/vector.js.map +1 -0
  149. package/dist/src/git/GitRunner.d.ts.map +1 -1
  150. package/dist/src/git/GitRunner.js +11 -8
  151. package/dist/src/git/GitRunner.js.map +1 -1
  152. package/dist/src/git/sourceGitControl.d.ts.map +1 -1
  153. package/dist/src/git/sourceGitControl.js +2 -1
  154. package/dist/src/git/sourceGitControl.js.map +1 -1
  155. package/dist/src/index.d.ts +5 -4
  156. package/dist/src/index.d.ts.map +1 -1
  157. package/dist/src/index.js +4 -3
  158. package/dist/src/index.js.map +1 -1
  159. package/dist/src/lifecycle.d.ts +20 -4
  160. package/dist/src/lifecycle.d.ts.map +1 -1
  161. package/dist/src/lifecycle.js +5 -1
  162. package/dist/src/lifecycle.js.map +1 -1
  163. package/dist/src/routes/health.js +6 -1
  164. package/dist/src/routes/health.js.map +1 -1
  165. package/dist/src/routes/pending.d.ts.map +1 -1
  166. package/dist/src/routes/pending.js +2 -1
  167. package/dist/src/routes/pending.js.map +1 -1
  168. package/dist/src/routes/sources.d.ts.map +1 -1
  169. package/dist/src/routes/sources.js +60 -11
  170. package/dist/src/routes/sources.js.map +1 -1
  171. package/dist/src/services/BridgeService.d.ts +2 -2
  172. package/dist/src/services/BridgeService.d.ts.map +1 -1
  173. package/dist/src/services/BridgeService.js +11 -2
  174. package/dist/src/services/BridgeService.js.map +1 -1
  175. package/dist/src/services/FilesystemService.d.ts +3 -1
  176. package/dist/src/services/FilesystemService.d.ts.map +1 -1
  177. package/dist/src/services/FilesystemService.js +3 -1
  178. package/dist/src/services/FilesystemService.js.map +1 -1
  179. package/dist/src/services/FilesystemUiService.js +1 -1
  180. package/dist/src/services/FilesystemUiService.js.map +1 -1
  181. package/dist/src/services/SyncScheduler.d.ts.map +1 -1
  182. package/dist/src/services/SyncScheduler.js +0 -14
  183. package/dist/src/services/SyncScheduler.js.map +1 -1
  184. package/dist/src/services/VectorHealthService.d.ts.map +1 -1
  185. package/dist/src/services/VectorHealthService.js +2 -46
  186. package/dist/src/services/VectorHealthService.js.map +1 -1
  187. package/dist/src/services/baselineRepair.d.ts +2 -2
  188. package/dist/src/services/baselineRepair.js +2 -2
  189. package/dist/src/services/declaredSources.d.ts +8 -1
  190. package/dist/src/services/declaredSources.d.ts.map +1 -1
  191. package/dist/src/services/declaredSources.js +19 -19
  192. package/dist/src/services/declaredSources.js.map +1 -1
  193. package/dist/src/store/dataFormats.d.ts +14 -3
  194. package/dist/src/store/dataFormats.d.ts.map +1 -1
  195. package/dist/src/store/dataFormats.js +15 -5
  196. package/dist/src/store/dataFormats.js.map +1 -1
  197. package/dist/src/sync/DeltaSyncRunner.d.ts.map +1 -1
  198. package/dist/src/sync/DeltaSyncRunner.js +78 -243
  199. package/dist/src/sync/DeltaSyncRunner.js.map +1 -1
  200. package/dist/src/sync/SyncJobQueue.d.ts +33 -4
  201. package/dist/src/sync/SyncJobQueue.d.ts.map +1 -1
  202. package/dist/src/sync/SyncJobQueue.js +179 -19
  203. package/dist/src/sync/SyncJobQueue.js.map +1 -1
  204. package/dist/src/sync/moveDetector.d.ts +2 -1
  205. package/dist/src/sync/moveDetector.d.ts.map +1 -1
  206. package/dist/src/sync/moveDetector.js +2 -1
  207. package/dist/src/sync/moveDetector.js.map +1 -1
  208. package/dist/src/tools/fs_search.d.ts.map +1 -1
  209. package/dist/src/tools/fs_search.js +8 -0
  210. package/dist/src/tools/fs_search.js.map +1 -1
  211. package/dist/src/tools/fs_write.js +3 -1
  212. package/dist/src/tools/fs_write.js.map +1 -1
  213. package/dist/src/usecases/chunkUpsert.d.ts +4 -0
  214. package/dist/src/usecases/chunkUpsert.d.ts.map +1 -1
  215. package/dist/src/usecases/chunkUpsert.js +103 -60
  216. package/dist/src/usecases/chunkUpsert.js.map +1 -1
  217. package/dist/src/usecases/embeddingBacklog.d.ts +31 -0
  218. package/dist/src/usecases/embeddingBacklog.d.ts.map +1 -0
  219. package/dist/src/usecases/embeddingBacklog.js +244 -0
  220. package/dist/src/usecases/embeddingBacklog.js.map +1 -0
  221. package/dist/src/usecases/listSourcePackages.js +17 -1
  222. package/dist/src/usecases/listSourcePackages.js.map +1 -1
  223. package/dist/src/usecases/mediaLane.d.ts +11 -4
  224. package/dist/src/usecases/mediaLane.d.ts.map +1 -1
  225. package/dist/src/usecases/mediaLane.js +67 -30
  226. package/dist/src/usecases/mediaLane.js.map +1 -1
  227. package/dist/src/usecases/pendingReview.d.ts.map +1 -1
  228. package/dist/src/usecases/pendingReview.js +24 -7
  229. package/dist/src/usecases/pendingReview.js.map +1 -1
  230. package/dist/src/usecases/purgeExcludedPoints.d.ts +2 -0
  231. package/dist/src/usecases/purgeExcludedPoints.d.ts.map +1 -1
  232. package/dist/src/usecases/purgeExcludedPoints.js +3 -2
  233. package/dist/src/usecases/purgeExcludedPoints.js.map +1 -1
  234. package/dist/src/usecases/readFiles.d.ts.map +1 -1
  235. package/dist/src/usecases/readFiles.js +33 -6
  236. package/dist/src/usecases/readFiles.js.map +1 -1
  237. package/dist/src/usecases/reconcileSourcePackageRoots.d.ts +31 -0
  238. package/dist/src/usecases/reconcileSourcePackageRoots.d.ts.map +1 -0
  239. package/dist/src/usecases/reconcileSourcePackageRoots.js +114 -0
  240. package/dist/src/usecases/reconcileSourcePackageRoots.js.map +1 -0
  241. package/dist/src/usecases/searchFiles.d.ts.map +1 -1
  242. package/dist/src/usecases/searchFiles.js +62 -64
  243. package/dist/src/usecases/searchFiles.js.map +1 -1
  244. package/dist/src/usecases/syncIndexedFile.d.ts +42 -0
  245. package/dist/src/usecases/syncIndexedFile.d.ts.map +1 -0
  246. package/dist/src/usecases/syncIndexedFile.js +242 -0
  247. package/dist/src/usecases/syncIndexedFile.js.map +1 -0
  248. package/dist/src/usecases/syncPointWrites.d.ts +5 -0
  249. package/dist/src/usecases/syncPointWrites.d.ts.map +1 -1
  250. package/dist/src/usecases/syncPointWrites.js +32 -5
  251. package/dist/src/usecases/syncPointWrites.js.map +1 -1
  252. package/dist/src/usecases/uploadBinary.d.ts.map +1 -1
  253. package/dist/src/usecases/uploadBinary.js +36 -49
  254. package/dist/src/usecases/uploadBinary.js.map +1 -1
  255. package/dist/src/usecases/vector/endpointGuard.js +2 -1
  256. package/dist/src/usecases/vector/endpointGuard.js.map +1 -1
  257. package/dist/src/usecases/vector/estimate.d.ts +7 -4
  258. package/dist/src/usecases/vector/estimate.d.ts.map +1 -1
  259. package/dist/src/usecases/vector/estimate.js +8 -5
  260. package/dist/src/usecases/vector/estimate.js.map +1 -1
  261. package/dist/src/usecases/vector/rebuildGeneration.d.ts +29 -5
  262. package/dist/src/usecases/vector/rebuildGeneration.d.ts.map +1 -1
  263. package/dist/src/usecases/vector/rebuildGeneration.js +224 -82
  264. package/dist/src/usecases/vector/rebuildGeneration.js.map +1 -1
  265. package/dist/src/usecases/vectorMaintenance.d.ts +46 -4
  266. package/dist/src/usecases/vectorMaintenance.d.ts.map +1 -1
  267. package/dist/src/usecases/vectorMaintenance.js +190 -11
  268. package/dist/src/usecases/vectorMaintenance.js.map +1 -1
  269. package/dist/src/usecases/write/commit.d.ts +6 -8
  270. package/dist/src/usecases/write/commit.d.ts.map +1 -1
  271. package/dist/src/usecases/write/commit.js +96 -112
  272. package/dist/src/usecases/write/commit.js.map +1 -1
  273. package/dist/src/usecases/write/content.js +1 -2
  274. package/dist/src/usecases/write/content.js.map +1 -1
  275. package/dist/src/usecases/write/ports.d.ts +1 -0
  276. package/dist/src/usecases/write/ports.d.ts.map +1 -1
  277. package/dist/src/vector/FilesystemVectorIndex.d.ts +34 -3
  278. package/dist/src/vector/FilesystemVectorIndex.d.ts.map +1 -1
  279. package/dist/src/vector/FilesystemVectorIndex.js +254 -20
  280. package/dist/src/vector/FilesystemVectorIndex.js.map +1 -1
  281. package/dist/src/vector/InMemoryVectorIndex.d.ts +9 -2
  282. package/dist/src/vector/InMemoryVectorIndex.d.ts.map +1 -1
  283. package/dist/src/vector/InMemoryVectorIndex.js +25 -6
  284. package/dist/src/vector/InMemoryVectorIndex.js.map +1 -1
  285. package/dist/src/vector/QdrantVectorIndex.d.ts +35 -9
  286. package/dist/src/vector/QdrantVectorIndex.d.ts.map +1 -1
  287. package/dist/src/vector/QdrantVectorIndex.js +209 -90
  288. package/dist/src/vector/QdrantVectorIndex.js.map +1 -1
  289. package/dist/src/vector/qdrantFilter.d.ts +3 -1
  290. package/dist/src/vector/qdrantFilter.d.ts.map +1 -1
  291. package/dist/src/vector/qdrantFilter.js +2 -0
  292. package/dist/src/vector/qdrantFilter.js.map +1 -1
  293. package/dist/src/vector/types.d.ts +81 -0
  294. package/dist/src/vector/types.d.ts.map +1 -1
  295. package/dist/src/vector/types.js +2 -0
  296. package/dist/src/vector/types.js.map +1 -1
  297. package/dist/src/wiring.d.ts +6 -0
  298. package/dist/src/wiring.d.ts.map +1 -1
  299. package/dist/src/wiring.js +62 -3
  300. package/dist/src/wiring.js.map +1 -1
  301. package/dist/tools/fs_search.json +2 -2
  302. package/docs/drive-overview.md +2 -2
  303. package/instructions/brain-model.md +1 -1
  304. package/package.json +999 -10
  305. package/rules/brain-rules.md +1 -1
  306. package/skills/connect-business-data/SKILL.md +6 -4
  307. package/skills/create-package/SKILL.md +14 -12
  308. package/skills/create-package/references/config-and-credentials.md +3 -3
  309. package/skills/create-package/references/connectors-and-uri-policies.md +5 -3
  310. package/skills/create-package/references/manifest-and-discovery.md +4 -3
  311. package/skills/create-package/references/runtime-and-build.md +9 -9
  312. package/skills/create-package/references/skills-and-context.md +3 -3
  313. package/skills/create-package/references/surfaces-and-design.md +2 -1
  314. package/skills/create-package/references/team-and-workflows.md +2 -2
  315. package/skills/create-package/references/test-and-ship.md +15 -15
  316. package/skills/create-package/references/tools-and-schemas.md +1 -1
  317. package/skills/create-package/scripts/check-package.sh +3 -3
  318. package/skills/create-package/scripts/verify-loaded.sh +16 -16
  319. package/skills/manage-files/SKILL.md +2 -2
  320. package/skills/manage-sources/SKILL.md +16 -15
  321. package/skills/manage-sources/scripts/reembed.sh +9 -3
  322. package/skills/sync/SKILL.md +4 -4
  323. package/tools/fs_search.json +2 -2
  324. package/dist/app/chunks/bash-M45GHPBQ.js +0 -1
  325. package/dist/app/chunks/c-X3REOAWD.js +0 -1
  326. package/dist/app/chunks/cpp-VOWI743W.js +0 -1
  327. package/dist/app/chunks/css-2ZVPHE25.js +0 -1
  328. package/dist/app/chunks/graphql-7V2NP54C.js +0 -1
  329. package/dist/app/chunks/html-UF3LFLNA.js +0 -1
  330. package/dist/app/chunks/java-PNTAU4L3.js +0 -1
  331. package/dist/app/chunks/javascript-4JJTQGEL.js +0 -1
  332. package/dist/app/chunks/json-VLQ6D3JH.js +0 -1
  333. package/dist/app/chunks/jsx-KQKSLAAH.js +0 -1
  334. package/dist/app/chunks/lua-UFPYUJ2O.js +0 -1
  335. package/dist/app/chunks/r-QEZB45SR.js +0 -1
  336. package/dist/app/chunks/sql-DTZHNUZP.js +0 -1
  337. package/dist/app/chunks/tsx-WPR2WRZD.js +0 -1
  338. package/dist/app/chunks/typescript-LWO362OA.js +0 -1
  339. package/dist/app/chunks/xml-A5H72RTS.js +0 -1
  340. package/dist/app/chunks/yaml-MXHSIJCI.js +0 -1
  341. package/dist/src/services/purgePendingNodes.d.ts +0 -32
  342. package/dist/src/services/purgePendingNodes.d.ts.map +0 -1
  343. package/dist/src/services/purgePendingNodes.js +0 -61
  344. package/dist/src/services/purgePendingNodes.js.map +0 -1
  345. /package/dist/app/chunks/{chunk-737Y24HS.js → chunk-3JASFUPF.js} +0 -0
  346. /package/dist/app/chunks/{chunk-DKD2L57N.js → chunk-6EYLOQ4F.js} +0 -0
  347. /package/dist/app/chunks/{chunk-KYH5EHHY.js → chunk-7YRZ5LOQ.js} +0 -0
  348. /package/dist/app/chunks/{chunk-6TC3DVWV.js → chunk-C7LU4RID.js} +0 -0
  349. /package/dist/app/chunks/{chunk-TY33BMKR.js → chunk-CD52YDZP.js} +0 -0
  350. /package/dist/app/chunks/{chunk-OLEIKJ3X.js → chunk-DCJKTCJ5.js} +0 -0
  351. /package/dist/app/chunks/{chunk-QLBZ4JR2.js → chunk-EXIU2KBV.js} +0 -0
  352. /package/dist/app/chunks/{chunk-SFUNBBEA.js → chunk-FDP4LO4P.js} +0 -0
  353. /package/dist/app/chunks/{chunk-BGRVFATT.js → chunk-HNETUS7U.js} +0 -0
  354. /package/dist/app/chunks/{chunk-4QNMHAIR.js → chunk-LBFZJEDR.js} +0 -0
  355. /package/dist/app/chunks/{chunk-TRRUHDPN.js → chunk-ULRXL5VM.js} +0 -0
  356. /package/dist/app/chunks/{chunk-S6B4WWIF.js → chunk-XJK47SMJ.js} +0 -0
  357. /package/dist/app/chunks/{chunk-DZ5C5FKI.js → chunk-YYAAIAU2.js} +0 -0
  358. /package/dist/app/chunks/{clojure-OC6KPSJO.js → clojure-4QCN4GHG.js} +0 -0
  359. /package/dist/app/chunks/{core-KGE7TQJ3.js → core-ZHTX3P2Q.js} +0 -0
  360. /package/dist/app/chunks/{csharp-E7VIFITL.js → csharp-HQWR4N52.js} +0 -0
  361. /package/dist/app/chunks/{dark-plus-BOSCZXE4.js → dark-plus-GYPKKZES.js} +0 -0
  362. /package/dist/app/chunks/{dart-6Y3X27SZ.js → dart-FO4TTVO2.js} +0 -0
  363. /package/dist/app/chunks/{diff-TR2NPA64.js → diff-SHANV4YC.js} +0 -0
  364. /package/dist/app/chunks/{dist-T32U2VVR.js → dist-WSDF34DM.js} +0 -0
  365. /package/dist/app/chunks/{docker-N33HOW54.js → docker-VX55HTDS.js} +0 -0
  366. /package/dist/app/chunks/{go-6DGG5UTP.js → go-5UCPEC6S.js} +0 -0
  367. /package/dist/app/chunks/{haskell-KK36PMMM.js → haskell-25PJ3OSG.js} +0 -0
  368. /package/dist/app/chunks/{ini-VHVQ5TPB.js → ini-BJIVD5MK.js} +0 -0
  369. /package/dist/app/chunks/{kotlin-44WS3JHE.js → kotlin-MNR6XOEQ.js} +0 -0
  370. /package/dist/app/chunks/{less-5WZ3KLAK.js → less-KA5JURX6.js} +0 -0
  371. /package/dist/app/chunks/{light-plus-HGGBC43G.js → light-plus-QXH2UUWZ.js} +0 -0
  372. /package/dist/app/chunks/{make-X7RXMVW7.js → make-LPD5KOCO.js} +0 -0
  373. /package/dist/app/chunks/{markdown-46IKUAIB.js → markdown-LMWF6MQR.js} +0 -0
  374. /package/dist/app/chunks/{mdx-DGLHDAO7.js → mdx-WPMNN5BS.js} +0 -0
  375. /package/dist/app/chunks/{nix-Q6FYQZLX.js → nix-QGWLUUMZ.js} +0 -0
  376. /package/dist/app/chunks/{powershell-L4KJJ6DK.js → powershell-7GSBBEFF.js} +0 -0
  377. /package/dist/app/chunks/{prisma-IKS4LVH2.js → prisma-FPMPQISO.js} +0 -0
  378. /package/dist/app/chunks/{proto-AYCDOTJO.js → proto-7KDX5Z2U.js} +0 -0
  379. /package/dist/app/chunks/{python-KXMCSAFQ.js → python-CFG4FTQW.js} +0 -0
  380. /package/dist/app/chunks/{rust-J3BC3P6V.js → rust-X7A37WU3.js} +0 -0
  381. /package/dist/app/chunks/{scala-AYIIHBJK.js → scala-OYHJSUG2.js} +0 -0
  382. /package/dist/app/chunks/{swift-QPHHCQD3.js → swift-PE7VNYW5.js} +0 -0
  383. /package/dist/app/chunks/{toml-UV7JK7K7.js → toml-ETQRDILP.js} +0 -0
@@ -1,3 +1,4 @@
1
+ import type { SourceConfigPort } from '../connectors/types.js';
1
2
  /**
2
3
  * The ONE filesystem-specialised write boundary in front of a vector backend.
3
4
  *
@@ -52,18 +53,48 @@
52
53
  import type { FilesystemNode } from '../domain/types.js';
53
54
  import type { WriteMonitor } from '../usecases/writeMonitor.js';
54
55
  import type { DiscoveryInvalidation } from './discoveryInvalidation.js';
55
- import type { QueryPrefetch, VectorFilter, VectorIndexPort, VectorPoint, VectorReadProjection, VectorSearchHit } from './types.js';
56
+ import type { QueryPrefetch, VectorBackend, VectorFilter, VectorIndexPort, VectorPoint, VectorReadProjection, VectorSearchHit } from './types.js';
56
57
  export declare class FilesystemVectorIndex implements VectorIndexPort<FilesystemNode> {
57
58
  #private;
58
59
  /** The wrapped backend — read by the wiring-identity test, never by product code. */
59
- get backend(): VectorIndexPort<FilesystemNode>;
60
+ get backend(): VectorBackend<FilesystemNode>;
60
61
  /** The discovery generation registry, if one was wired. Read by the wiring test. */
61
62
  get discovery(): DiscoveryInvalidation | undefined;
62
63
  /** The per-uri write monitor, if one was wired. Read by the health route's usecase. */
63
64
  get writeMonitor(): WriteMonitor | undefined;
64
- constructor(inner: VectorIndexPort<FilesystemNode>, discovery?: DiscoveryInvalidation, monitor?: WriteMonitor);
65
+ constructor(inner: VectorBackend<FilesystemNode> | FilesystemVectorIndex, discovery?: DiscoveryInvalidation, monitor?: WriteMonitor);
65
66
  ensureAgentCollection(agentId: string): Promise<void>;
66
67
  upsert(point: VectorPoint<FilesystemNode>): Promise<void>;
68
+ writeEpoch(): number;
69
+ exclusive<T>(run: () => Promise<T>): Promise<T>;
70
+ writePayload(point: Pick<VectorPoint<FilesystemNode>, 'id' | 'payload'>): Promise<void>;
71
+ /** Bind after project infra adopts the shared backend; all app stores share one coordinator. */
72
+ bindSourceConfigs(store: SourceConfigPort): void;
73
+ writePayloadBatch(points: Array<Pick<VectorPoint<FilesystemNode>, 'id' | 'payload'>>): Promise<void>;
74
+ conditionalUpsert(params: {
75
+ id: string;
76
+ vector: number[];
77
+ expected: Record<string, string | number | boolean | undefined>;
78
+ patch: Partial<FilesystemNode>;
79
+ authorize?: (current: FilesystemNode) => Promise<boolean>;
80
+ epoch?: number;
81
+ }): Promise<boolean>;
82
+ conditionalUpsertBatch(points: Array<{
83
+ id: string;
84
+ vector: number[];
85
+ expected: Record<string, string | number | boolean | undefined>;
86
+ patch: Partial<FilesystemNode>;
87
+ authorize?: (current: FilesystemNode) => Promise<boolean>;
88
+ epoch?: number;
89
+ }>): Promise<boolean[]>;
90
+ conditionalProof(params: {
91
+ id: string;
92
+ expected: Record<string, string | number | boolean | undefined>;
93
+ patch: Partial<FilesystemNode>;
94
+ activeGeneration: number;
95
+ authorize?: (current: FilesystemNode) => Promise<boolean>;
96
+ epoch?: number;
97
+ }): Promise<boolean>;
67
98
  retainPayload(point: Pick<VectorPoint<FilesystemNode>, 'id' | 'payload'>): Promise<void>;
68
99
  retrieve(id: string, projection?: VectorReadProjection): Promise<VectorPoint<FilesystemNode> | null>;
69
100
  scroll(params: {
@@ -1 +1 @@
1
- {"version":3,"file":"FilesystemVectorIndex.d.ts","sourceRoot":"","sources":["../../../src/vector/FilesystemVectorIndex.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FilesystemVectorIndex.d.ts","sourceRoot":"","sources":["../../../src/vector/FilesystemVectorIndex.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,19 @@
1
- import { searchableFilter } from '../usecases/vector/indexEligibility.js';
1
+ import { searchableFilter, indexEligibilityReader } from '../usecases/vector/indexEligibility.js';
2
2
  import { stampEnrichment } from '../sync/categoryInference.js';
3
+ import { nodeEmbeddingInputHash } from '../usecases/syncPointWrites.js';
3
4
  import { embedModelMarker, embeddingMarkerOf } from '../embeddings/models.js';
4
5
  import { peekActiveLock } from '../embeddings/lock.js';
5
6
  import { getGenerationMirror } from '../usecases/vector/rebuildGeneration.js';
7
+ /** The dense proof a payload replacement carries forward from the stored point. */
8
+ const PROOF_FIELDS = ['embed_model', 'embedding_status', 'embedding_input_hash', 'embedding_generation', 'embedding_updated_at'];
9
+ /** What a late dense/proof commit re-reads: eligibility, the final authority and the proof — never the text. */
10
+ const COMMIT_FIELDS = ['id', 'projectId', 'userId', 'agentId', 'uri', 'filename', 'folder_ancestors', 'category', 'status',
11
+ 'recovery_only', 'modality', 'page', 'parent_id', 'content_hash', 'updatedAt', ...PROOF_FIELDS];
6
12
  export class FilesystemVectorIndex {
7
13
  #inner;
14
+ #coordinator;
15
+ #eligibility;
16
+ #sourceMutations;
8
17
  #discovery;
9
18
  #monitor;
10
19
  /** The wrapped backend — read by the wiring-identity test, never by product code. */
@@ -28,6 +37,8 @@ export class FilesystemVectorIndex {
28
37
  // shared port never silently drops its invalidation or its counts.
29
38
  const nested = inner instanceof FilesystemVectorIndex;
30
39
  this.#inner = nested ? inner.backend : inner;
40
+ this.#coordinator = writeCoordinators.get(this.#inner) ?? new WriteCoordinator();
41
+ writeCoordinators.set(this.#inner, this.#coordinator);
31
42
  this.#discovery = discovery ?? (nested ? inner.discovery : undefined);
32
43
  this.#monitor = monitor ?? (nested ? inner.writeMonitor : undefined);
33
44
  // The OPTIONAL members are mirrored only when the backend has them:
@@ -38,7 +49,7 @@ export class FilesystemVectorIndex {
38
49
  if (backend.upsertBatch) {
39
50
  this.upsertBatch = async (points) => {
40
51
  let stamped = [];
41
- return this.#mirrored(async () => {
52
+ return this.#coordinator.lease(false, () => this.#coordinator.points(points.map(point => point.id), () => this.#mirrored(async () => {
42
53
  stamped = points.map(stampPoint);
43
54
  this.#monitor?.record(stamped.map((p) => p.payload));
44
55
  await this.#observed(stamped.map((p) => p.payload), async () => {
@@ -54,7 +65,7 @@ export class FilesystemVectorIndex {
54
65
  for (const point of stamped)
55
66
  if (!point.vector && point.payload.recovery_only)
56
67
  mirror.afterRetention(point);
57
- });
68
+ }, points.map(point => point.id))));
58
69
  };
59
70
  }
60
71
  if (backend.query) {
@@ -66,20 +77,22 @@ export class FilesystemVectorIndex {
66
77
  if (backend.facet) {
67
78
  this.facet = (params) => backend.facet(params);
68
79
  }
69
- // Collection-level operator work writes no payload (index params, config, a
70
- // sparse vector computed from the content already stored), so it passes
71
- // through without a stamp or an invalidation.
80
+ // Collection work shares the exclusive epoch. Dense clear changes only
81
+ // proof status; index/tuning/sparse work does not change file content.
72
82
  if (backend.maintenance) {
73
83
  const maintenance = backend.maintenance;
74
84
  this.maintenance = {
75
85
  generations: maintenance.generations,
86
+ // Dense clear takes the exclusive epoch PER PAGE: writes run between pages,
87
+ // and a late result embedded before a page was cleared is refused by its epoch.
88
+ ...(maintenance.clearDense ? { clearDense: (params) => this.exclusive(() => maintenance.clearDense(params)) } : {}),
76
89
  report: params => maintenance.report({ filter: searchableFilter(params?.filter ?? {}) }),
77
90
  readOptimizations: params => maintenance.readOptimizations(params),
78
- migratePayloadIndexes: () => maintenance.migratePayloadIndexes(),
79
- applyTuning: tuning => maintenance.applyTuning(tuning),
80
- applyQuantization: mode => maintenance.applyQuantization(mode),
81
- enableTextRanking: () => maintenance.enableTextRanking(),
82
- backfillTextRanking: params => maintenance.backfillTextRanking({ ...params, filter: searchableFilter(params.filter ?? {}) }),
91
+ migratePayloadIndexes: () => this.exclusive(() => maintenance.migratePayloadIndexes()),
92
+ applyTuning: tuning => this.exclusive(() => maintenance.applyTuning(tuning)),
93
+ applyQuantization: mode => this.exclusive(() => maintenance.applyQuantization(mode)),
94
+ enableTextRanking: () => this.exclusive(() => maintenance.enableTextRanking()),
95
+ backfillTextRanking: params => this.exclusive(() => maintenance.backfillTextRanking({ ...params, filter: searchableFilter(params.filter ?? {}) })),
83
96
  };
84
97
  }
85
98
  }
@@ -98,7 +111,7 @@ export class FilesystemVectorIndex {
98
111
  /**
99
112
  * The mirror seam: with no rebuild running this is the write itself; during
100
113
  * one, the write runs inside the swap gate and its shadow copy is queued
101
- * once it returned (a failed active write mirrors nothing).
114
+ * once it returned; partial failures queue bounded reconciliation debt.
102
115
  *
103
116
  * BOTH halves run inside the gate. The `embed_model` stamp and the retired-
104
117
  * generation refusal happen in `write` (the callers build their stamp there),
@@ -107,12 +120,18 @@ export class FilesystemVectorIndex {
107
120
  * shadow enqueue happens before the gate's in-flight count drops, so the
108
121
  * swap's drain cannot run between an active write and its mirror item.
109
122
  */
110
- async #mirrored(write, mirror) {
123
+ async #mirrored(write, mirror, ids = []) {
111
124
  const active = getGenerationMirror();
112
125
  if (!active)
113
126
  return write();
114
127
  await active.primary(async () => {
115
- await write();
128
+ try {
129
+ await write();
130
+ }
131
+ catch (error) {
132
+ active.afterUncertainWrite(ids);
133
+ throw error;
134
+ }
116
135
  mirror(active);
117
136
  });
118
137
  }
@@ -123,17 +142,132 @@ export class FilesystemVectorIndex {
123
142
  if (!point.vector && point.payload.recovery_only)
124
143
  return this.retainPayload(point);
125
144
  let stamped = point;
126
- return this.#mirrored(async () => {
145
+ return this.#coordinator.lease(false, () => this.#coordinator.points([point.id], () => this.#mirrored(async () => {
127
146
  stamped = stampPoint(point);
128
147
  this.#monitor?.record([stamped.payload]);
129
148
  await this.#observed([stamped.payload], () => this.#inner.upsert(stamped));
130
- }, (mirror) => mirror.afterUpsert([stamped]));
149
+ }, (mirror) => mirror.afterUpsert([stamped]), [point.id])));
150
+ }
151
+ writeEpoch() { return this.#coordinator.epoch; }
152
+ exclusive(run) {
153
+ return this.#coordinator.lease(true, run);
154
+ }
155
+ async writePayload(point) {
156
+ if (point.payload.recovery_only)
157
+ return this.retainPayload(point);
158
+ await this.#writePayloads([point]);
159
+ }
160
+ /** ONE backend read (the proof rides the backend's own pre-write read) + the write itself. */
161
+ async #writePayloads(points) {
162
+ const ids = points.map(point => point.id);
163
+ const written = new Map();
164
+ await this.#coordinator.lease(false, () => this.#coordinator.points(ids, () => this.#mirrored(async () => {
165
+ const enriched = points.map(point => stampPoint(point));
166
+ this.#monitor?.record(enriched.map(point => point.payload));
167
+ await this.#observed(enriched.map(point => point.payload), () => this.#inner.writePayloads(enriched, {
168
+ readFields: PROOF_FIELDS,
169
+ derive: (point, stored) => {
170
+ const stamped = stampPayloadPoint(point, stored);
171
+ written.set(stamped.id, stamped);
172
+ return stamped.payload;
173
+ },
174
+ }));
175
+ }, mirror => mirror.afterUpsert([...written.values()]), ids)));
176
+ }
177
+ /** Bind after project infra adopts the shared backend; all app stores share one coordinator. */
178
+ bindSourceConfigs(store) {
179
+ if (!store.mutations)
180
+ throw new Error('SOURCE_CONFIG_COORDINATOR_REQUIRED');
181
+ if (this.#sourceMutations && this.#sourceMutations !== store.mutations)
182
+ throw new Error('FILESYSTEM_SOURCE_CONFIG_COORDINATOR_CHANGED');
183
+ if (this.#sourceMutations)
184
+ return;
185
+ this.#sourceMutations = store.mutations;
186
+ this.#eligibility = indexEligibilityReader(store);
187
+ }
188
+ async writePayloadBatch(points) {
189
+ if (!points.length)
190
+ return;
191
+ if (new Set(points.map(point => point.id)).size !== points.length)
192
+ throw new Error('DUPLICATE_PAYLOAD_BATCH_ID');
193
+ const ordinary = points.filter(point => !point.payload.recovery_only);
194
+ if (ordinary.length)
195
+ await this.#writePayloads(ordinary);
196
+ for (const point of points)
197
+ if (point.payload.recovery_only)
198
+ await this.retainPayload(point);
199
+ }
200
+ async conditionalUpsert(params) {
201
+ return (await this.conditionalUpsertBatch([params]))[0];
202
+ }
203
+ async conditionalUpsertBatch(points) {
204
+ return this.#conditionalWrites(points.map(point => ({ ...point, kind: 'dense' })));
205
+ }
206
+ async conditionalProof(params) {
207
+ if (params.patch.embedding_status !== 'missing' && params.patch.embedding_status !== 'stale')
208
+ throw new Error('INVALID_DEBT_PROOF_PATCH');
209
+ return (await this.#conditionalWrites([{ ...params, kind: 'proof' }]))[0];
210
+ }
211
+ async #conditionalWrites(points) {
212
+ if (!points.length)
213
+ return [];
214
+ if (new Set(points.map(point => point.id)).size !== points.length)
215
+ throw new Error('DUPLICATE_DENSE_BATCH_ID');
216
+ const proofFields = new Set(['embedding_status', 'embedding_input_hash', 'embedding_generation', 'embedding_updated_at', 'embed_model']);
217
+ if (points.some(point => Object.keys(point.patch).some(field => !proofFields.has(field))))
218
+ throw new Error('INVALID_EMBEDDING_PROOF_PATCH');
219
+ const written = points.map(() => false);
220
+ const committed = [];
221
+ await this.#coordinator.lease(false, () => this.#coordinator.points(points.map(point => point.id), () => this.#mirrored(() => {
222
+ const commit = async () => {
223
+ // A running rebuild mirrors the WHOLE point into its shadow; otherwise
224
+ // the commit reads only what it judges and writes only vector + proof.
225
+ const mirroring = getGenerationMirror() !== null;
226
+ const stored = await this.#inner.scroll({ filter: { mustMatchAny: [{ field: 'id', values: points.map(point => point.id) }] }, limit: points.length,
227
+ ...(mirroring ? {} : { payloadFields: [...new Set([...COMMIT_FIELDS, ...points.flatMap(point => Object.keys(point.expected))])] }) });
228
+ const currentById = new Map(stored.points.map(point => [point.id, point.payload]));
229
+ const lock = peekActiveLock();
230
+ const patches = [];
231
+ const positions = [];
232
+ for (const [index, point] of points.entries()) {
233
+ if (point.epoch !== this.writeEpoch())
234
+ continue;
235
+ const current = currentById.get(point.id);
236
+ if (!current || current.recovery_only || current.status === 'deleted')
237
+ continue;
238
+ if (lock?.mode !== 'dense' || (point.kind === 'dense' ? point.patch.embedding_generation : point.activeGeneration) !== lock.generation)
239
+ continue;
240
+ if (this.#eligibility && (await this.#eligibility(current)).eligibility !== 'eligible')
241
+ continue;
242
+ if (point.authorize && !(await point.authorize(current)))
243
+ continue;
244
+ const payload = current;
245
+ if (Object.entries(point.expected).some(([field, expected]) => payload[field] !== expected))
246
+ continue;
247
+ const stamped = stampPoint({ id: point.id, ...(point.kind === 'dense' ? { vector: point.vector } : {}), payload: { ...current, ...point.patch } });
248
+ committed.push(stamped);
249
+ patches.push({ id: point.id, ...(point.kind === 'dense' ? { vector: point.vector } : {}),
250
+ patch: { ...point.patch, ...(stamped.payload.embed_model ? { embed_model: stamped.payload.embed_model } : {}) } });
251
+ positions.push(index);
252
+ }
253
+ if (!committed.length)
254
+ return;
255
+ this.#monitor?.record(committed.map(point => point.payload));
256
+ await this.#observed(committed.map(point => point.payload), () => this.#inner.patchPoints(patches));
257
+ for (const index of positions)
258
+ written[index] = true;
259
+ };
260
+ return this.#sourceMutations ? this.#sourceMutations.exclusive(commit) : commit();
261
+ }, mirror => { if (committed.length)
262
+ mirror.afterUpsert(committed); }, points.map(point => point.id))));
263
+ return written;
131
264
  }
132
265
  async retainPayload(point) {
133
- await this.#mirrored(async () => {
266
+ point = { ...point, payload: { ...point.payload, embedding_status: 'missing' } };
267
+ await this.#coordinator.lease(false, () => this.#coordinator.points([point.id], () => this.#mirrored(async () => {
134
268
  this.#monitor?.record([point.payload]);
135
269
  await this.#observed([point.payload], () => this.#inner.retainPayload(point));
136
- }, mirror => mirror.afterRetention(point));
270
+ }, mirror => mirror.afterRetention(point), [point.id])));
137
271
  }
138
272
  retrieve(id, projection) {
139
273
  return this.#inner.retrieve(id, projection);
@@ -156,7 +290,17 @@ export class FilesystemVectorIndex {
156
290
  const token = this.#discovery.beginDelete(filter);
157
291
  removed = await this.#inner.deleteByFilter(filter).finally(() => this.#discovery?.complete(token));
158
292
  };
159
- await this.#mirrored(run, (mirror) => mirror.afterDelete(filter));
293
+ // Drains the collection but keeps the epoch: a late commit for a deleted
294
+ // point already fails its re-read, and an unrelated in-flight one stays valid.
295
+ await this.#coordinator.lease(true, () => this.#mirrored(async () => {
296
+ try {
297
+ await run();
298
+ }
299
+ catch (error) {
300
+ getGenerationMirror()?.afterUncertainDelete(filter);
301
+ throw error;
302
+ }
303
+ }, (mirror) => mirror.afterDelete(filter)), false);
160
304
  return removed;
161
305
  }
162
306
  upsertBatch;
@@ -182,7 +326,7 @@ export class EmbeddingGenerationChangedError extends Error {
182
326
  /** The marker of the active generation, when this process knows it. */
183
327
  function activeMarker() {
184
328
  const lock = peekActiveLock();
185
- return lock ? embedModelMarker(lock.modelId, lock.dimension, lock.embedRecipe) : undefined;
329
+ return lock?.mode === 'dense' ? embedModelMarker(lock.modelId, lock.dimension, lock.embedRecipe) : undefined;
186
330
  }
187
331
  /**
188
332
  * Stamp one point's payload. The envelope (`id`, `vector`) is passed through
@@ -210,4 +354,94 @@ function stampPoint(point) {
210
354
  return point;
211
355
  return { ...point, payload };
212
356
  }
357
+ /** One coordinator is shared by every wrapper adopting the same backend. */
358
+ class WriteCoordinator {
359
+ epoch = 0;
360
+ #readers = 0;
361
+ #writer = false;
362
+ #leases = [];
363
+ #points = new Map();
364
+ /** `invalidate`: an exclusive lease that also retires every epoch captured before it (maintenance). */
365
+ lease(exclusive, run, invalidate = exclusive) {
366
+ return new Promise((resolve, reject) => {
367
+ this.#leases.push({ exclusive, start: () => {
368
+ if (exclusive) {
369
+ this.#writer = true;
370
+ if (invalidate)
371
+ this.epoch += 1;
372
+ }
373
+ else
374
+ this.#readers += 1;
375
+ const release = () => {
376
+ if (exclusive)
377
+ this.#writer = false;
378
+ else
379
+ this.#readers -= 1;
380
+ this.#pump();
381
+ };
382
+ void Promise.resolve().then(run).then(value => { release(); resolve(value); }, error => { release(); reject(error); });
383
+ } });
384
+ this.#pump();
385
+ });
386
+ }
387
+ #pump() {
388
+ if (this.#writer)
389
+ return;
390
+ while (this.#leases.length) {
391
+ const next = this.#leases[0];
392
+ if (next.exclusive && this.#readers)
393
+ return;
394
+ this.#leases.shift();
395
+ next.start();
396
+ if (next.exclusive)
397
+ return;
398
+ }
399
+ }
400
+ async points(ids, run) {
401
+ const releases = [];
402
+ try {
403
+ for (const id of [...new Set(ids)].sort()) {
404
+ const previous = this.#points.get(id) ?? Promise.resolve();
405
+ let release;
406
+ const current = new Promise(resolve => { release = resolve; });
407
+ this.#points.set(id, current);
408
+ await previous;
409
+ releases.push(() => {
410
+ if (this.#points.get(id) === current)
411
+ this.#points.delete(id);
412
+ release();
413
+ });
414
+ }
415
+ return await run();
416
+ }
417
+ finally {
418
+ for (const release of releases.reverse())
419
+ release();
420
+ }
421
+ }
422
+ }
423
+ const writeCoordinators = new WeakMap();
424
+ /**
425
+ * Carry only the STORED dense proof across a full payload replacement. A payload
426
+ * write keeps or DEMOTES the status — never promotes: `missing`/`stale` stay,
427
+ * `current` turns `stale` when the input no longer matches the active proof.
428
+ * Only a dense vector write certifies `current`.
429
+ */
430
+ function stampPayloadPoint(point, previous) {
431
+ const proof = previous ? {
432
+ embed_model: previous.embed_model, embedding_status: previous.embedding_status,
433
+ embedding_input_hash: previous.embedding_input_hash, embedding_generation: previous.embedding_generation,
434
+ embedding_updated_at: previous.embedding_updated_at,
435
+ } : { embedding_status: 'missing' };
436
+ const lock = peekActiveLock();
437
+ const marker = activeMarker();
438
+ const input = nodeEmbeddingInputHash(point.payload);
439
+ if (proof.embedding_status === 'current' && !(marker !== undefined && proof.embedding_input_hash === input
440
+ && lock?.mode === 'dense' && proof.embedding_generation === lock.generation && proof.embed_model === marker)) {
441
+ proof.embedding_status = 'stale';
442
+ }
443
+ if (point.payload.recovery_only)
444
+ proof.embedding_status = 'missing';
445
+ return { ...point, payload: { ...point.payload, ...proof } };
446
+ }
213
447
  //# sourceMappingURL=FilesystemVectorIndex.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FilesystemVectorIndex.js","sourceRoot":"","sources":["../../../src/vector/FilesystemVectorIndex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAqD1E,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAY9E,MAAM,OAAO,qBAAqB;IACvB,MAAM,CAAkC;IACxC,UAAU,CAAoC;IAC9C,QAAQ,CAA2B;IAE5C,qFAAqF;IACrF,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,oFAAoF;IACpF,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,uFAAuF;IACvF,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,YACE,KAAsC,EACtC,SAAiC,EACjC,OAAsB;QAEtB,0EAA0E;QAC1E,4EAA4E;QAC5E,0EAA0E;QAC1E,2EAA2E;QAC3E,wEAAwE;QACxE,mEAAmE;QACnE,MAAM,MAAM,GAAG,KAAK,YAAY,qBAAqB,CAAC;QACtD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;QAC7C,IAAI,CAAC,UAAU,GAAG,SAAS,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACtE,IAAI,CAAC,QAAQ,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAErE,oEAAoE;QACpE,sEAAsE;QACtE,kEAAkE;QAClE,6DAA6D;QAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;QAC5B,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,IAAI,CAAC,WAAW,GAAG,KAAK,EAAE,MAAM,EAAE,EAAE;gBAClC,IAAI,OAAO,GAAuC,EAAE,CAAC;gBACrD,OAAO,IAAI,CAAC,SAAS,CACnB,KAAK,IAAI,EAAE;oBACT,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;oBACjC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;oBACrD,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,IAAI,EAAE;wBAC7D,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;wBACvF,IAAI,QAAQ,CAAC,MAAM;4BAAE,MAAM,OAAO,CAAC,WAAY,CAAC,QAAQ,CAAC,CAAC;wBAC1D,KAAK,MAAM,KAAK,IAAI,OAAO;4BAAE,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa;gCAAE,MAAM,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;oBACpH,CAAC,CAAC,CAAC;gBACL,CAAC,EACD,CAAC,MAAM,EAAE,EAAE;oBACT,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;oBAC1F,KAAK,MAAM,KAAK,IAAI,OAAO;wBAAE,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa;4BAAE,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;gBAC9G,CAAC,CACF,CAAC;YACJ,CAAC,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,IAAI,CAAC,KAAK,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,KAAM,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAC3M,CAAC;QACD,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YAC1B,IAAI,CAAC,aAAa,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,aAAc,CAAC,MAAM,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,IAAI,CAAC,KAAK,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,KAAM,CAAC,MAAM,CAAC,CAAC;QAClD,CAAC;QACD,4EAA4E;QAC5E,wEAAwE;QACxE,8CAA8C;QAC9C,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;YACxC,IAAI,CAAC,WAAW,GAAG;gBACjB,WAAW,EAAE,WAAW,CAAC,WAAW;gBACpC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,gBAAgB,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;gBACxF,iBAAiB,EAAE,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,iBAAiB,CAAC,MAAM,CAAC;gBAClE,qBAAqB,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,qBAAqB,EAAE;gBAChE,WAAW,EAAE,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC;gBACtD,iBAAiB,EAAE,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC;gBAC9D,iBAAiB,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,iBAAiB,EAAE;gBACxD,mBAAmB,EAAE,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,mBAAmB,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;aAC7H,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,SAAS,CAAI,QAAuC,EAAE,GAAqB;QACzE,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO,GAAG,EAAE,CAAC;QACnC,MAAM,KAAK,GAAwB,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACxE,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,SAAS,CAAC,KAA0B,EAAE,MAAwE;QAClH,MAAM,MAAM,GAAG,mBAAmB,EAAE,CAAC;QACrC,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,EAAE,CAAC;QAC5B,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;YAC9B,MAAM,KAAK,EAAE,CAAC;YACd,MAAM,CAAC,MAAM,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,qBAAqB,CAAC,OAAe;QACnC,OAAO,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAkC;QAC7C,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa;YAAE,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACnF,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,OAAO,IAAI,CAAC,SAAS,CACnB,KAAK,IAAI,EAAE;YACT,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;YAC5B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;YACzC,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7E,CAAC,EACD,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAC1C,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,KAA0D;QAC5E,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;YAC9B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YACvC,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QAChF,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,QAAQ,CAAC,EAAU,EAAE,UAAiC;QACpD,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,MAKN;QACC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,CAAC,MAKN;QACC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACpF,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,MAAoB;QACvC,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,MAAM,GAAG,GAAG,KAAK,IAAmB,EAAE;YACpC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACrB,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;gBACnD,OAAO;YACT,CAAC;YACD,sEAAsE;YACtE,qCAAqC;YACrC,MAAM,KAAK,GAAwB,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACvE,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QACrG,CAAC,CAAC;QACF,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QAClE,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,WAAW,CAAiE;IAE5E,KAAK,CAMiD;IAEtD,aAAa,CAA6C;IAE1D,KAAK,CAA4C;IAEjD,WAAW,CAAkD;CAC9D;AAED,qEAAqE;AACrE,MAAM,OAAO,+BAAgC,SAAQ,KAAK;IAEnC,OAAO;IAAmB,UAAU;IAAmB,MAAM;IADzE,IAAI,GAAG,8BAAuC,CAAC;IACxD,YAAqB,OAAe,EAAW,UAAkB,EAAW,MAAc;QACxF,KAAK,CAAC,gCAAgC,OAAO,gCAAgC,UAAU,wBAAwB,MAAM,6BAA6B,CAAC,CAAC;uBADjI,OAAO;0BAAmB,UAAU;sBAAmB,MAAM;QAEhF,IAAI,CAAC,IAAI,GAAG,iCAAiC,CAAC;IAChD,CAAC;CACF;AAED,uEAAuE;AACvE,SAAS,YAAY;IACnB,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;IAC9B,OAAO,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7F,CAAC;AAED;;;;;GAKG;AACH,SAAS,UAAU,CAAC,KAAkC;IACpD,IAAI,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7C,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,GAAG,OAAO,CAAC;YAAC,OAAO,GAAG,UAAU,CAAC;QAAC,CAAC;QAC/G,MAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAC9B,IAAI,UAAU,IAAI,MAAM,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;YAClD,MAAM,IAAI,+BAA+B,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAC1E,CAAC;QACD,MAAM,MAAM,GAAG,UAAU,IAAI,MAAM,CAAC;QACpC,IAAI,MAAM,IAAI,OAAO,CAAC,WAAW,KAAK,MAAM;YAAE,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;IAC9F,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"FilesystemVectorIndex.js","sourceRoot":"","sources":["../../../src/vector/FilesystemVectorIndex.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,18 @@
1
- import type { VectorFacetHit, VectorFilter, VectorIndexPort, VectorPoint, VectorReadProjection, VectorSearchHit } from './types.js';
1
+ import type { PayloadDerivation, VectorBackend, VectorFacetHit, VectorFilter, VectorPoint, VectorReadProjection, VectorSearchHit } from './types.js';
2
2
  export declare class InMemoryVectorIndex<TPayload extends {
3
3
  id: string;
4
- }> implements VectorIndexPort<TPayload> {
4
+ }> implements VectorBackend<TPayload> {
5
5
  #private;
6
6
  ensureAgentCollection(_agentId: string): Promise<void>;
7
7
  upsert(point: VectorPoint<TPayload>): Promise<void>;
8
8
  retainPayload(point: Pick<VectorPoint<TPayload>, 'id' | 'payload'>): Promise<void>;
9
+ writePayload(point: Pick<VectorPoint<TPayload>, 'id' | 'payload'>): Promise<void>;
10
+ writePayloads(points: Array<Pick<VectorPoint<TPayload>, 'id' | 'payload'>>, derivation: PayloadDerivation<TPayload>): Promise<void>;
11
+ patchPoints(points: Array<{
12
+ id: string;
13
+ vector?: number[];
14
+ patch: Partial<TPayload>;
15
+ }>): Promise<void>;
9
16
  retrieve(id: string, projection?: VectorReadProjection): Promise<VectorPoint<TPayload> | null>;
10
17
  scroll(params: {
11
18
  filter: VectorFilter;
@@ -1 +1 @@
1
- {"version":3,"file":"InMemoryVectorIndex.d.ts","sourceRoot":"","sources":["../../../src/vector/InMemoryVectorIndex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAyHpI,qBAAa,mBAAmB,CAAC,QAAQ,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAE,YAAW,eAAe,CAAC,QAAQ,CAAC;;IAG9F,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAG;IAEzD,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CASxD;IAEK,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAEvF;IAEK,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAWnG;IAEK,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,YAAY,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CA0B/K;IAEK,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAMzD;IAED;;;;;OAKG;IACG,KAAK,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,YAAY,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,cAAc,EAAE,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC,CAejI;IAEK,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAS1D;IAEK,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,YAAY,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAWnJ;CACF"}
1
+ {"version":3,"file":"InMemoryVectorIndex.d.ts","sourceRoot":"","sources":["../../../src/vector/InMemoryVectorIndex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AA0HrJ,qBAAa,mBAAmB,CAAC,QAAQ,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAE,YAAW,aAAa,CAAC,QAAQ,CAAC;;IAG5F,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAG;IAEzD,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CASxD;IAEK,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAEvF;IAEK,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAEtF;IAEK,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,iBAAiB,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAKxI;IAEK,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAM3G;IAEK,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAWnG;IAEK,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,YAAY,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CA0B/K;IAEK,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAMzD;IAED;;;;;OAKG;IACG,KAAK,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,YAAY,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,cAAc,EAAE,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC,CAejI;IAEK,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAS1D;IAEK,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,YAAY,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAWnJ;CACF"}
@@ -29,7 +29,9 @@ function textTokens(value) {
29
29
  const tokens = value.toLowerCase().split(/[^\p{L}\p{N}]+/u);
30
30
  return new Set(tokens.filter((t) => t.length > 0));
31
31
  }
32
- function matchesFilter(payload, filter) {
32
+ function matchesFilter(payload, filter, vector) {
33
+ if ((filter.mustHasVector ?? []).some(name => name !== '' || !vector?.length))
34
+ return false;
33
35
  const must = filter.must ?? [];
34
36
  for (const clause of must) {
35
37
  const value = getFieldValue(payload, clause.field);
@@ -150,6 +152,23 @@ export class InMemoryVectorIndex {
150
152
  async retainPayload(point) {
151
153
  this.#points.set(point.id, { id: point.id, payload: { ...point.payload, id: point.id } });
152
154
  }
155
+ async writePayload(point) {
156
+ await this.upsert(point);
157
+ }
158
+ async writePayloads(points, derivation) {
159
+ for (const point of points) {
160
+ const stored = this.#points.get(point.id);
161
+ await this.upsert({ id: point.id, payload: derivation.derive(point, stored ? projectPayload(stored.payload, derivation.readFields) : undefined) });
162
+ }
163
+ }
164
+ async patchPoints(points) {
165
+ for (const point of points) {
166
+ const stored = this.#points.get(point.id);
167
+ if (!stored)
168
+ throw new Error(`VECTOR_MISSING_FOR_UPSERT:${point.id}`);
169
+ this.#points.set(point.id, { id: point.id, vector: point.vector ?? stored.vector, payload: { ...stored.payload, ...point.patch, id: point.id } });
170
+ }
171
+ }
153
172
  async retrieve(id, projection) {
154
173
  const point = this.#points.get(id);
155
174
  if (!point)
@@ -174,7 +193,7 @@ export class InMemoryVectorIndex {
174
193
  const p = this.#points.get(ids[i]);
175
194
  if (!p)
176
195
  continue;
177
- if (!matchesFilter(p.payload, params.filter))
196
+ if (!matchesFilter(p.payload, params.filter, p.vector))
178
197
  continue;
179
198
  // The `vector` is kept as-is; Qdrant's scroll always sends
180
199
  // `with_vector:false`, so a caller must not rely on it being present from
@@ -193,7 +212,7 @@ export class InMemoryVectorIndex {
193
212
  async countByFilter(filter) {
194
213
  let n = 0;
195
214
  for (const p of this.#points.values()) {
196
- if (matchesFilter(p.payload, filter))
215
+ if (matchesFilter(p.payload, filter, p.vector))
197
216
  n++;
198
217
  }
199
218
  return n;
@@ -207,7 +226,7 @@ export class InMemoryVectorIndex {
207
226
  async facet(params) {
208
227
  const counts = new Map();
209
228
  for (const p of this.#points.values()) {
210
- if (!matchesFilter(p.payload, params.filter))
229
+ if (!matchesFilter(p.payload, params.filter, p.vector))
211
230
  continue;
212
231
  const raw = getFieldValue(p.payload, params.key);
213
232
  const values = Array.isArray(raw) ? new Set(raw) : [raw];
@@ -225,7 +244,7 @@ export class InMemoryVectorIndex {
225
244
  async deleteByFilter(filter) {
226
245
  let deleted = 0;
227
246
  for (const [id, p] of this.#points) {
228
- if (matchesFilter(p.payload, filter)) {
247
+ if (matchesFilter(p.payload, filter, p.vector)) {
229
248
  this.#points.delete(id);
230
249
  deleted++;
231
250
  }
@@ -236,7 +255,7 @@ export class InMemoryVectorIndex {
236
255
  const query = normalize(params.vector);
237
256
  const hits = [];
238
257
  for (const p of this.#points.values()) {
239
- if (!matchesFilter(p.payload, params.filter))
258
+ if (!matchesFilter(p.payload, params.filter, p.vector))
240
259
  continue;
241
260
  const v = p.vector ? normalize(p.vector) : [];
242
261
  const score = v.length ? dot(query, v) : 0;