ocr-provenance-mcp 1.0.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.

Potentially problematic release.


This version of ocr-provenance-mcp might be problematic. Click here for more details.

Files changed (578) hide show
  1. package/.env.example +55 -0
  2. package/LICENSE +78 -0
  3. package/README.md +1154 -0
  4. package/dist/bin-http.d.ts +24 -0
  5. package/dist/bin-http.d.ts.map +1 -0
  6. package/dist/bin-http.js +275 -0
  7. package/dist/bin-http.js.map +1 -0
  8. package/dist/bin-setup.d.ts +11 -0
  9. package/dist/bin-setup.d.ts.map +1 -0
  10. package/dist/bin-setup.js +610 -0
  11. package/dist/bin-setup.js.map +1 -0
  12. package/dist/bin.d.ts +16 -0
  13. package/dist/bin.d.ts.map +1 -0
  14. package/dist/bin.js +16 -0
  15. package/dist/bin.js.map +1 -0
  16. package/dist/index.d.ts +13 -0
  17. package/dist/index.d.ts.map +1 -0
  18. package/dist/index.js +90 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/models/chunk.d.ts +136 -0
  21. package/dist/models/chunk.d.ts.map +1 -0
  22. package/dist/models/chunk.js +27 -0
  23. package/dist/models/chunk.js.map +1 -0
  24. package/dist/models/cluster.d.ts +79 -0
  25. package/dist/models/cluster.d.ts.map +1 -0
  26. package/dist/models/cluster.js +10 -0
  27. package/dist/models/cluster.js.map +1 -0
  28. package/dist/models/comparison.d.ts +62 -0
  29. package/dist/models/comparison.d.ts.map +1 -0
  30. package/dist/models/comparison.js +8 -0
  31. package/dist/models/comparison.js.map +1 -0
  32. package/dist/models/document.d.ts +104 -0
  33. package/dist/models/document.d.ts.map +1 -0
  34. package/dist/models/document.js +15 -0
  35. package/dist/models/document.js.map +1 -0
  36. package/dist/models/embedding.d.ts +87 -0
  37. package/dist/models/embedding.d.ts.map +1 -0
  38. package/dist/models/embedding.js +23 -0
  39. package/dist/models/embedding.js.map +1 -0
  40. package/dist/models/extraction.d.ts +15 -0
  41. package/dist/models/extraction.d.ts.map +1 -0
  42. package/dist/models/extraction.js +2 -0
  43. package/dist/models/extraction.js.map +1 -0
  44. package/dist/models/form-fill.d.ts +23 -0
  45. package/dist/models/form-fill.d.ts.map +1 -0
  46. package/dist/models/form-fill.js +2 -0
  47. package/dist/models/form-fill.js.map +1 -0
  48. package/dist/models/image.d.ts +177 -0
  49. package/dist/models/image.d.ts.map +1 -0
  50. package/dist/models/image.js +8 -0
  51. package/dist/models/image.js.map +1 -0
  52. package/dist/models/index.d.ts +14 -0
  53. package/dist/models/index.d.ts.map +1 -0
  54. package/dist/models/index.js +22 -0
  55. package/dist/models/index.js.map +1 -0
  56. package/dist/models/provenance.d.ts +174 -0
  57. package/dist/models/provenance.d.ts.map +1 -0
  58. package/dist/models/provenance.js +53 -0
  59. package/dist/models/provenance.js.map +1 -0
  60. package/dist/models/uploaded-file.d.ts +20 -0
  61. package/dist/models/uploaded-file.d.ts.map +1 -0
  62. package/dist/models/uploaded-file.js +2 -0
  63. package/dist/models/uploaded-file.js.map +1 -0
  64. package/dist/server/errors.d.ts +93 -0
  65. package/dist/server/errors.d.ts.map +1 -0
  66. package/dist/server/errors.js +256 -0
  67. package/dist/server/errors.js.map +1 -0
  68. package/dist/server/events.d.ts +36 -0
  69. package/dist/server/events.d.ts.map +1 -0
  70. package/dist/server/events.js +48 -0
  71. package/dist/server/events.js.map +1 -0
  72. package/dist/server/permissions.d.ts +26 -0
  73. package/dist/server/permissions.d.ts.map +1 -0
  74. package/dist/server/permissions.js +194 -0
  75. package/dist/server/permissions.js.map +1 -0
  76. package/dist/server/register-tools.d.ts +25 -0
  77. package/dist/server/register-tools.d.ts.map +1 -0
  78. package/dist/server/register-tools.js +102 -0
  79. package/dist/server/register-tools.js.map +1 -0
  80. package/dist/server/startup.d.ts +16 -0
  81. package/dist/server/startup.d.ts.map +1 -0
  82. package/dist/server/startup.js +37 -0
  83. package/dist/server/startup.js.map +1 -0
  84. package/dist/server/state.d.ts +166 -0
  85. package/dist/server/state.d.ts.map +1 -0
  86. package/dist/server/state.js +424 -0
  87. package/dist/server/state.js.map +1 -0
  88. package/dist/server/transports/http-transport.d.ts +37 -0
  89. package/dist/server/transports/http-transport.d.ts.map +1 -0
  90. package/dist/server/transports/http-transport.js +204 -0
  91. package/dist/server/transports/http-transport.js.map +1 -0
  92. package/dist/server/transports/index.d.ts +9 -0
  93. package/dist/server/transports/index.d.ts.map +1 -0
  94. package/dist/server/transports/index.js +9 -0
  95. package/dist/server/transports/index.js.map +1 -0
  96. package/dist/server/transports/session-manager.d.ts +40 -0
  97. package/dist/server/transports/session-manager.d.ts.map +1 -0
  98. package/dist/server/transports/session-manager.js +74 -0
  99. package/dist/server/transports/session-manager.js.map +1 -0
  100. package/dist/server/types.d.ts +82 -0
  101. package/dist/server/types.d.ts.map +1 -0
  102. package/dist/server/types.js +14 -0
  103. package/dist/server/types.js.map +1 -0
  104. package/dist/services/audit.d.ts +26 -0
  105. package/dist/services/audit.d.ts.map +1 -0
  106. package/dist/services/audit.js +43 -0
  107. package/dist/services/audit.js.map +1 -0
  108. package/dist/services/chunking/chunk-deduplicator.d.ts +33 -0
  109. package/dist/services/chunking/chunk-deduplicator.d.ts.map +1 -0
  110. package/dist/services/chunking/chunk-deduplicator.js +46 -0
  111. package/dist/services/chunking/chunk-deduplicator.js.map +1 -0
  112. package/dist/services/chunking/chunk-merger.d.ts +26 -0
  113. package/dist/services/chunking/chunk-merger.d.ts.map +1 -0
  114. package/dist/services/chunking/chunk-merger.js +94 -0
  115. package/dist/services/chunking/chunk-merger.js.map +1 -0
  116. package/dist/services/chunking/chunker.d.ts +62 -0
  117. package/dist/services/chunking/chunker.d.ts.map +1 -0
  118. package/dist/services/chunking/chunker.js +566 -0
  119. package/dist/services/chunking/chunker.js.map +1 -0
  120. package/dist/services/chunking/heading-normalizer.d.ts +33 -0
  121. package/dist/services/chunking/heading-normalizer.d.ts.map +1 -0
  122. package/dist/services/chunking/heading-normalizer.js +101 -0
  123. package/dist/services/chunking/heading-normalizer.js.map +1 -0
  124. package/dist/services/chunking/json-block-analyzer.d.ts +163 -0
  125. package/dist/services/chunking/json-block-analyzer.d.ts.map +1 -0
  126. package/dist/services/chunking/json-block-analyzer.js +1033 -0
  127. package/dist/services/chunking/json-block-analyzer.js.map +1 -0
  128. package/dist/services/chunking/markdown-parser.d.ts +75 -0
  129. package/dist/services/chunking/markdown-parser.d.ts.map +1 -0
  130. package/dist/services/chunking/markdown-parser.js +428 -0
  131. package/dist/services/chunking/markdown-parser.js.map +1 -0
  132. package/dist/services/chunking/text-normalizer.d.ts +20 -0
  133. package/dist/services/chunking/text-normalizer.d.ts.map +1 -0
  134. package/dist/services/chunking/text-normalizer.js +36 -0
  135. package/dist/services/chunking/text-normalizer.js.map +1 -0
  136. package/dist/services/clm/contract-schemas.d.ts +36 -0
  137. package/dist/services/clm/contract-schemas.d.ts.map +1 -0
  138. package/dist/services/clm/contract-schemas.js +92 -0
  139. package/dist/services/clm/contract-schemas.js.map +1 -0
  140. package/dist/services/clm/summarization.d.ts +46 -0
  141. package/dist/services/clm/summarization.d.ts.map +1 -0
  142. package/dist/services/clm/summarization.js +61 -0
  143. package/dist/services/clm/summarization.js.map +1 -0
  144. package/dist/services/clustering/clustering-service.d.ts +58 -0
  145. package/dist/services/clustering/clustering-service.d.ts.map +1 -0
  146. package/dist/services/clustering/clustering-service.js +467 -0
  147. package/dist/services/clustering/clustering-service.js.map +1 -0
  148. package/dist/services/comparison/diff-service.d.ts +41 -0
  149. package/dist/services/comparison/diff-service.d.ts.map +1 -0
  150. package/dist/services/comparison/diff-service.js +120 -0
  151. package/dist/services/comparison/diff-service.js.map +1 -0
  152. package/dist/services/embedding/embedder.d.ts +55 -0
  153. package/dist/services/embedding/embedder.d.ts.map +1 -0
  154. package/dist/services/embedding/embedder.js +202 -0
  155. package/dist/services/embedding/embedder.js.map +1 -0
  156. package/dist/services/embedding/nomic.d.ts +67 -0
  157. package/dist/services/embedding/nomic.d.ts.map +1 -0
  158. package/dist/services/embedding/nomic.js +280 -0
  159. package/dist/services/embedding/nomic.js.map +1 -0
  160. package/dist/services/gemini/circuit-breaker.d.ts +106 -0
  161. package/dist/services/gemini/circuit-breaker.d.ts.map +1 -0
  162. package/dist/services/gemini/circuit-breaker.js +237 -0
  163. package/dist/services/gemini/circuit-breaker.js.map +1 -0
  164. package/dist/services/gemini/client.d.ts +173 -0
  165. package/dist/services/gemini/client.d.ts.map +1 -0
  166. package/dist/services/gemini/client.js +483 -0
  167. package/dist/services/gemini/client.js.map +1 -0
  168. package/dist/services/gemini/config.d.ts +116 -0
  169. package/dist/services/gemini/config.d.ts.map +1 -0
  170. package/dist/services/gemini/config.js +118 -0
  171. package/dist/services/gemini/config.js.map +1 -0
  172. package/dist/services/gemini/index.d.ts +9 -0
  173. package/dist/services/gemini/index.d.ts.map +1 -0
  174. package/dist/services/gemini/index.js +13 -0
  175. package/dist/services/gemini/index.js.map +1 -0
  176. package/dist/services/gemini/rate-limiter.d.ts +62 -0
  177. package/dist/services/gemini/rate-limiter.d.ts.map +1 -0
  178. package/dist/services/gemini/rate-limiter.js +120 -0
  179. package/dist/services/gemini/rate-limiter.js.map +1 -0
  180. package/dist/services/images/extractor.d.ts +88 -0
  181. package/dist/services/images/extractor.d.ts.map +1 -0
  182. package/dist/services/images/extractor.js +340 -0
  183. package/dist/services/images/extractor.js.map +1 -0
  184. package/dist/services/images/optimizer.d.ts +130 -0
  185. package/dist/services/images/optimizer.d.ts.map +1 -0
  186. package/dist/services/images/optimizer.js +228 -0
  187. package/dist/services/images/optimizer.js.map +1 -0
  188. package/dist/services/ocr/datalab.d.ts +64 -0
  189. package/dist/services/ocr/datalab.d.ts.map +1 -0
  190. package/dist/services/ocr/datalab.js +425 -0
  191. package/dist/services/ocr/datalab.js.map +1 -0
  192. package/dist/services/ocr/errors.d.ts +38 -0
  193. package/dist/services/ocr/errors.d.ts.map +1 -0
  194. package/dist/services/ocr/errors.js +83 -0
  195. package/dist/services/ocr/errors.js.map +1 -0
  196. package/dist/services/ocr/file-manager.d.ts +76 -0
  197. package/dist/services/ocr/file-manager.d.ts.map +1 -0
  198. package/dist/services/ocr/file-manager.js +238 -0
  199. package/dist/services/ocr/file-manager.js.map +1 -0
  200. package/dist/services/ocr/form-fill.d.ts +48 -0
  201. package/dist/services/ocr/form-fill.d.ts.map +1 -0
  202. package/dist/services/ocr/form-fill.js +213 -0
  203. package/dist/services/ocr/form-fill.js.map +1 -0
  204. package/dist/services/ocr/processor.d.ts +95 -0
  205. package/dist/services/ocr/processor.d.ts.map +1 -0
  206. package/dist/services/ocr/processor.js +259 -0
  207. package/dist/services/ocr/processor.js.map +1 -0
  208. package/dist/services/provenance/agent-metadata.d.ts +82 -0
  209. package/dist/services/provenance/agent-metadata.d.ts.map +1 -0
  210. package/dist/services/provenance/agent-metadata.js +106 -0
  211. package/dist/services/provenance/agent-metadata.js.map +1 -0
  212. package/dist/services/provenance/chain-hash.d.ts +57 -0
  213. package/dist/services/provenance/chain-hash.d.ts.map +1 -0
  214. package/dist/services/provenance/chain-hash.js +131 -0
  215. package/dist/services/provenance/chain-hash.js.map +1 -0
  216. package/dist/services/provenance/exporter.d.ts +202 -0
  217. package/dist/services/provenance/exporter.d.ts.map +1 -0
  218. package/dist/services/provenance/exporter.js +457 -0
  219. package/dist/services/provenance/exporter.js.map +1 -0
  220. package/dist/services/provenance/index.d.ts +15 -0
  221. package/dist/services/provenance/index.d.ts.map +1 -0
  222. package/dist/services/provenance/index.js +17 -0
  223. package/dist/services/provenance/index.js.map +1 -0
  224. package/dist/services/provenance/tracker.d.ts +138 -0
  225. package/dist/services/provenance/tracker.d.ts.map +1 -0
  226. package/dist/services/provenance/tracker.js +293 -0
  227. package/dist/services/provenance/tracker.js.map +1 -0
  228. package/dist/services/provenance/verifier.d.ts +153 -0
  229. package/dist/services/provenance/verifier.d.ts.map +1 -0
  230. package/dist/services/provenance/verifier.js +536 -0
  231. package/dist/services/provenance/verifier.js.map +1 -0
  232. package/dist/services/python-pool.d.ts +70 -0
  233. package/dist/services/python-pool.d.ts.map +1 -0
  234. package/dist/services/python-pool.js +265 -0
  235. package/dist/services/python-pool.js.map +1 -0
  236. package/dist/services/search/bm25.d.ts +180 -0
  237. package/dist/services/search/bm25.d.ts.map +1 -0
  238. package/dist/services/search/bm25.js +656 -0
  239. package/dist/services/search/bm25.js.map +1 -0
  240. package/dist/services/search/fusion.d.ts +103 -0
  241. package/dist/services/search/fusion.d.ts.map +1 -0
  242. package/dist/services/search/fusion.js +122 -0
  243. package/dist/services/search/fusion.js.map +1 -0
  244. package/dist/services/search/local-reranker.d.ts +30 -0
  245. package/dist/services/search/local-reranker.d.ts.map +1 -0
  246. package/dist/services/search/local-reranker.js +123 -0
  247. package/dist/services/search/local-reranker.js.map +1 -0
  248. package/dist/services/search/quality.d.ts +11 -0
  249. package/dist/services/search/quality.d.ts.map +1 -0
  250. package/dist/services/search/quality.js +17 -0
  251. package/dist/services/search/quality.js.map +1 -0
  252. package/dist/services/search/query-classifier.d.ts +34 -0
  253. package/dist/services/search/query-classifier.d.ts.map +1 -0
  254. package/dist/services/search/query-classifier.js +114 -0
  255. package/dist/services/search/query-classifier.js.map +1 -0
  256. package/dist/services/search/query-expander.d.ts +73 -0
  257. package/dist/services/search/query-expander.d.ts.map +1 -0
  258. package/dist/services/search/query-expander.js +281 -0
  259. package/dist/services/search/query-expander.js.map +1 -0
  260. package/dist/services/search/reranker.d.ts +44 -0
  261. package/dist/services/search/reranker.d.ts.map +1 -0
  262. package/dist/services/search/reranker.js +101 -0
  263. package/dist/services/search/reranker.js.map +1 -0
  264. package/dist/services/storage/database/annotation-operations.d.ts +113 -0
  265. package/dist/services/storage/database/annotation-operations.d.ts.map +1 -0
  266. package/dist/services/storage/database/annotation-operations.js +177 -0
  267. package/dist/services/storage/database/annotation-operations.js.map +1 -0
  268. package/dist/services/storage/database/approval-operations.d.ts +132 -0
  269. package/dist/services/storage/database/approval-operations.d.ts.map +1 -0
  270. package/dist/services/storage/database/approval-operations.js +206 -0
  271. package/dist/services/storage/database/approval-operations.js.map +1 -0
  272. package/dist/services/storage/database/chunk-operations.d.ts +132 -0
  273. package/dist/services/storage/database/chunk-operations.d.ts.map +1 -0
  274. package/dist/services/storage/database/chunk-operations.js +306 -0
  275. package/dist/services/storage/database/chunk-operations.js.map +1 -0
  276. package/dist/services/storage/database/cluster-operations.d.ts +97 -0
  277. package/dist/services/storage/database/cluster-operations.d.ts.map +1 -0
  278. package/dist/services/storage/database/cluster-operations.js +258 -0
  279. package/dist/services/storage/database/cluster-operations.js.map +1 -0
  280. package/dist/services/storage/database/comparison-operations.d.ts +41 -0
  281. package/dist/services/storage/database/comparison-operations.d.ts.map +1 -0
  282. package/dist/services/storage/database/comparison-operations.js +65 -0
  283. package/dist/services/storage/database/comparison-operations.js.map +1 -0
  284. package/dist/services/storage/database/converters.d.ts +36 -0
  285. package/dist/services/storage/database/converters.d.ts.map +1 -0
  286. package/dist/services/storage/database/converters.js +244 -0
  287. package/dist/services/storage/database/converters.js.map +1 -0
  288. package/dist/services/storage/database/document-operations.d.ts +145 -0
  289. package/dist/services/storage/database/document-operations.d.ts.map +1 -0
  290. package/dist/services/storage/database/document-operations.js +498 -0
  291. package/dist/services/storage/database/document-operations.js.map +1 -0
  292. package/dist/services/storage/database/embedding-operations.d.ts +130 -0
  293. package/dist/services/storage/database/embedding-operations.d.ts.map +1 -0
  294. package/dist/services/storage/database/embedding-operations.js +315 -0
  295. package/dist/services/storage/database/embedding-operations.js.map +1 -0
  296. package/dist/services/storage/database/extraction-operations.d.ts +47 -0
  297. package/dist/services/storage/database/extraction-operations.d.ts.map +1 -0
  298. package/dist/services/storage/database/extraction-operations.js +85 -0
  299. package/dist/services/storage/database/extraction-operations.js.map +1 -0
  300. package/dist/services/storage/database/form-fill-operations.d.ts +58 -0
  301. package/dist/services/storage/database/form-fill-operations.d.ts.map +1 -0
  302. package/dist/services/storage/database/form-fill-operations.js +116 -0
  303. package/dist/services/storage/database/form-fill-operations.js.map +1 -0
  304. package/dist/services/storage/database/helpers.d.ts +29 -0
  305. package/dist/services/storage/database/helpers.d.ts.map +1 -0
  306. package/dist/services/storage/database/helpers.js +55 -0
  307. package/dist/services/storage/database/helpers.js.map +1 -0
  308. package/dist/services/storage/database/image-operations.d.ts +202 -0
  309. package/dist/services/storage/database/image-operations.d.ts.map +1 -0
  310. package/dist/services/storage/database/image-operations.js +484 -0
  311. package/dist/services/storage/database/image-operations.js.map +1 -0
  312. package/dist/services/storage/database/index.d.ts +13 -0
  313. package/dist/services/storage/database/index.d.ts.map +1 -0
  314. package/dist/services/storage/database/index.js +16 -0
  315. package/dist/services/storage/database/index.js.map +1 -0
  316. package/dist/services/storage/database/lock-operations.d.ts +59 -0
  317. package/dist/services/storage/database/lock-operations.d.ts.map +1 -0
  318. package/dist/services/storage/database/lock-operations.js +89 -0
  319. package/dist/services/storage/database/lock-operations.js.map +1 -0
  320. package/dist/services/storage/database/obligation-operations.d.ts +88 -0
  321. package/dist/services/storage/database/obligation-operations.d.ts.map +1 -0
  322. package/dist/services/storage/database/obligation-operations.js +206 -0
  323. package/dist/services/storage/database/obligation-operations.js.map +1 -0
  324. package/dist/services/storage/database/ocr-operations.d.ts +33 -0
  325. package/dist/services/storage/database/ocr-operations.d.ts.map +1 -0
  326. package/dist/services/storage/database/ocr-operations.js +70 -0
  327. package/dist/services/storage/database/ocr-operations.js.map +1 -0
  328. package/dist/services/storage/database/playbook-operations.d.ts +72 -0
  329. package/dist/services/storage/database/playbook-operations.d.ts.map +1 -0
  330. package/dist/services/storage/database/playbook-operations.js +247 -0
  331. package/dist/services/storage/database/playbook-operations.js.map +1 -0
  332. package/dist/services/storage/database/provenance-operations.d.ts +112 -0
  333. package/dist/services/storage/database/provenance-operations.d.ts.map +1 -0
  334. package/dist/services/storage/database/provenance-operations.js +251 -0
  335. package/dist/services/storage/database/provenance-operations.js.map +1 -0
  336. package/dist/services/storage/database/service.d.ts +142 -0
  337. package/dist/services/storage/database/service.d.ts.map +1 -0
  338. package/dist/services/storage/database/service.js +310 -0
  339. package/dist/services/storage/database/service.js.map +1 -0
  340. package/dist/services/storage/database/static-operations.d.ts +30 -0
  341. package/dist/services/storage/database/static-operations.d.ts.map +1 -0
  342. package/dist/services/storage/database/static-operations.js +218 -0
  343. package/dist/services/storage/database/static-operations.js.map +1 -0
  344. package/dist/services/storage/database/stats-operations.d.ts +101 -0
  345. package/dist/services/storage/database/stats-operations.d.ts.map +1 -0
  346. package/dist/services/storage/database/stats-operations.js +394 -0
  347. package/dist/services/storage/database/stats-operations.js.map +1 -0
  348. package/dist/services/storage/database/tag-operations.d.ts +76 -0
  349. package/dist/services/storage/database/tag-operations.d.ts.map +1 -0
  350. package/dist/services/storage/database/tag-operations.js +178 -0
  351. package/dist/services/storage/database/tag-operations.js.map +1 -0
  352. package/dist/services/storage/database/types.d.ts +286 -0
  353. package/dist/services/storage/database/types.d.ts.map +1 -0
  354. package/dist/services/storage/database/types.js +39 -0
  355. package/dist/services/storage/database/types.js.map +1 -0
  356. package/dist/services/storage/database/upload-operations.d.ts +71 -0
  357. package/dist/services/storage/database/upload-operations.d.ts.map +1 -0
  358. package/dist/services/storage/database/upload-operations.js +124 -0
  359. package/dist/services/storage/database/upload-operations.js.map +1 -0
  360. package/dist/services/storage/database/user-operations.d.ts +102 -0
  361. package/dist/services/storage/database/user-operations.d.ts.map +1 -0
  362. package/dist/services/storage/database/user-operations.js +151 -0
  363. package/dist/services/storage/database/user-operations.js.map +1 -0
  364. package/dist/services/storage/database/workflow-operations.d.ts +98 -0
  365. package/dist/services/storage/database/workflow-operations.d.ts.map +1 -0
  366. package/dist/services/storage/database/workflow-operations.js +157 -0
  367. package/dist/services/storage/database/workflow-operations.js.map +1 -0
  368. package/dist/services/storage/database.d.ts +16 -0
  369. package/dist/services/storage/database.d.ts.map +1 -0
  370. package/dist/services/storage/database.js +15 -0
  371. package/dist/services/storage/database.js.map +1 -0
  372. package/dist/services/storage/index.d.ts +10 -0
  373. package/dist/services/storage/index.d.ts.map +1 -0
  374. package/dist/services/storage/index.js +10 -0
  375. package/dist/services/storage/index.js.map +1 -0
  376. package/dist/services/storage/migrations/index.d.ts +16 -0
  377. package/dist/services/storage/migrations/index.d.ts.map +1 -0
  378. package/dist/services/storage/migrations/index.js +20 -0
  379. package/dist/services/storage/migrations/index.js.map +1 -0
  380. package/dist/services/storage/migrations/operations.d.ts +40 -0
  381. package/dist/services/storage/migrations/operations.d.ts.map +1 -0
  382. package/dist/services/storage/migrations/operations.js +2910 -0
  383. package/dist/services/storage/migrations/operations.js.map +1 -0
  384. package/dist/services/storage/migrations/schema-definitions.d.ts +306 -0
  385. package/dist/services/storage/migrations/schema-definitions.d.ts.map +1 -0
  386. package/dist/services/storage/migrations/schema-definitions.js +1006 -0
  387. package/dist/services/storage/migrations/schema-definitions.js.map +1 -0
  388. package/dist/services/storage/migrations/schema-helpers.d.ts +50 -0
  389. package/dist/services/storage/migrations/schema-helpers.d.ts.map +1 -0
  390. package/dist/services/storage/migrations/schema-helpers.js +176 -0
  391. package/dist/services/storage/migrations/schema-helpers.js.map +1 -0
  392. package/dist/services/storage/migrations/types.d.ts +15 -0
  393. package/dist/services/storage/migrations/types.d.ts.map +1 -0
  394. package/dist/services/storage/migrations/types.js +21 -0
  395. package/dist/services/storage/migrations/types.js.map +1 -0
  396. package/dist/services/storage/migrations/verification.d.ts +20 -0
  397. package/dist/services/storage/migrations/verification.d.ts.map +1 -0
  398. package/dist/services/storage/migrations/verification.js +78 -0
  399. package/dist/services/storage/migrations/verification.js.map +1 -0
  400. package/dist/services/storage/migrations.d.ts +16 -0
  401. package/dist/services/storage/migrations.d.ts.map +1 -0
  402. package/dist/services/storage/migrations.js +17 -0
  403. package/dist/services/storage/migrations.js.map +1 -0
  404. package/dist/services/storage/types.d.ts +12 -0
  405. package/dist/services/storage/types.d.ts.map +1 -0
  406. package/dist/services/storage/types.js +5 -0
  407. package/dist/services/storage/types.js.map +1 -0
  408. package/dist/services/storage/vector.d.ts +208 -0
  409. package/dist/services/storage/vector.d.ts.map +1 -0
  410. package/dist/services/storage/vector.js +526 -0
  411. package/dist/services/storage/vector.js.map +1 -0
  412. package/dist/services/vlm/pipeline.d.ts +194 -0
  413. package/dist/services/vlm/pipeline.d.ts.map +1 -0
  414. package/dist/services/vlm/pipeline.js +800 -0
  415. package/dist/services/vlm/pipeline.js.map +1 -0
  416. package/dist/services/vlm/prompts.d.ts +171 -0
  417. package/dist/services/vlm/prompts.d.ts.map +1 -0
  418. package/dist/services/vlm/prompts.js +229 -0
  419. package/dist/services/vlm/prompts.js.map +1 -0
  420. package/dist/services/vlm/service.d.ts +174 -0
  421. package/dist/services/vlm/service.d.ts.map +1 -0
  422. package/dist/services/vlm/service.js +256 -0
  423. package/dist/services/vlm/service.js.map +1 -0
  424. package/dist/services/webhook-delivery.d.ts +4 -0
  425. package/dist/services/webhook-delivery.d.ts.map +1 -0
  426. package/dist/services/webhook-delivery.js +140 -0
  427. package/dist/services/webhook-delivery.js.map +1 -0
  428. package/dist/tools/chunks.d.ts +19 -0
  429. package/dist/tools/chunks.d.ts.map +1 -0
  430. package/dist/tools/chunks.js +392 -0
  431. package/dist/tools/chunks.js.map +1 -0
  432. package/dist/tools/clm.d.ts +16 -0
  433. package/dist/tools/clm.d.ts.map +1 -0
  434. package/dist/tools/clm.js +668 -0
  435. package/dist/tools/clm.js.map +1 -0
  436. package/dist/tools/clustering.d.ts +13 -0
  437. package/dist/tools/clustering.d.ts.map +1 -0
  438. package/dist/tools/clustering.js +498 -0
  439. package/dist/tools/clustering.js.map +1 -0
  440. package/dist/tools/collaboration.d.ts +15 -0
  441. package/dist/tools/collaboration.d.ts.map +1 -0
  442. package/dist/tools/collaboration.js +516 -0
  443. package/dist/tools/collaboration.js.map +1 -0
  444. package/dist/tools/comparison.d.ts +13 -0
  445. package/dist/tools/comparison.d.ts.map +1 -0
  446. package/dist/tools/comparison.js +735 -0
  447. package/dist/tools/comparison.js.map +1 -0
  448. package/dist/tools/compliance.d.ts +15 -0
  449. package/dist/tools/compliance.d.ts.map +1 -0
  450. package/dist/tools/compliance.js +640 -0
  451. package/dist/tools/compliance.js.map +1 -0
  452. package/dist/tools/config.d.ts +19 -0
  453. package/dist/tools/config.d.ts.map +1 -0
  454. package/dist/tools/config.js +213 -0
  455. package/dist/tools/config.js.map +1 -0
  456. package/dist/tools/database.d.ts +62 -0
  457. package/dist/tools/database.d.ts.map +1 -0
  458. package/dist/tools/database.js +288 -0
  459. package/dist/tools/database.js.map +1 -0
  460. package/dist/tools/documents.d.ts +61 -0
  461. package/dist/tools/documents.d.ts.map +1 -0
  462. package/dist/tools/documents.js +1624 -0
  463. package/dist/tools/documents.js.map +1 -0
  464. package/dist/tools/embeddings.d.ts +14 -0
  465. package/dist/tools/embeddings.d.ts.map +1 -0
  466. package/dist/tools/embeddings.js +626 -0
  467. package/dist/tools/embeddings.js.map +1 -0
  468. package/dist/tools/evaluation.d.ts +25 -0
  469. package/dist/tools/evaluation.d.ts.map +1 -0
  470. package/dist/tools/evaluation.js +523 -0
  471. package/dist/tools/evaluation.js.map +1 -0
  472. package/dist/tools/events.d.ts +16 -0
  473. package/dist/tools/events.d.ts.map +1 -0
  474. package/dist/tools/events.js +493 -0
  475. package/dist/tools/events.js.map +1 -0
  476. package/dist/tools/extraction-structured.d.ts +13 -0
  477. package/dist/tools/extraction-structured.d.ts.map +1 -0
  478. package/dist/tools/extraction-structured.js +390 -0
  479. package/dist/tools/extraction-structured.js.map +1 -0
  480. package/dist/tools/extraction.d.ts +24 -0
  481. package/dist/tools/extraction.d.ts.map +1 -0
  482. package/dist/tools/extraction.js +424 -0
  483. package/dist/tools/extraction.js.map +1 -0
  484. package/dist/tools/file-management.d.ts +14 -0
  485. package/dist/tools/file-management.d.ts.map +1 -0
  486. package/dist/tools/file-management.js +523 -0
  487. package/dist/tools/file-management.js.map +1 -0
  488. package/dist/tools/form-fill.d.ts +13 -0
  489. package/dist/tools/form-fill.d.ts.map +1 -0
  490. package/dist/tools/form-fill.js +250 -0
  491. package/dist/tools/form-fill.js.map +1 -0
  492. package/dist/tools/health.d.ts +19 -0
  493. package/dist/tools/health.d.ts.map +1 -0
  494. package/dist/tools/health.js +229 -0
  495. package/dist/tools/health.js.map +1 -0
  496. package/dist/tools/images.d.ts +54 -0
  497. package/dist/tools/images.d.ts.map +1 -0
  498. package/dist/tools/images.js +787 -0
  499. package/dist/tools/images.js.map +1 -0
  500. package/dist/tools/ingestion.d.ts +94 -0
  501. package/dist/tools/ingestion.d.ts.map +1 -0
  502. package/dist/tools/ingestion.js +1659 -0
  503. package/dist/tools/ingestion.js.map +1 -0
  504. package/dist/tools/intelligence.d.ts +18 -0
  505. package/dist/tools/intelligence.d.ts.map +1 -0
  506. package/dist/tools/intelligence.js +1039 -0
  507. package/dist/tools/intelligence.js.map +1 -0
  508. package/dist/tools/provenance.d.ts +51 -0
  509. package/dist/tools/provenance.d.ts.map +1 -0
  510. package/dist/tools/provenance.js +691 -0
  511. package/dist/tools/provenance.js.map +1 -0
  512. package/dist/tools/reports.d.ts +41 -0
  513. package/dist/tools/reports.d.ts.map +1 -0
  514. package/dist/tools/reports.js +1394 -0
  515. package/dist/tools/reports.js.map +1 -0
  516. package/dist/tools/search.d.ts +35 -0
  517. package/dist/tools/search.d.ts.map +1 -0
  518. package/dist/tools/search.js +2528 -0
  519. package/dist/tools/search.js.map +1 -0
  520. package/dist/tools/shared.d.ts +52 -0
  521. package/dist/tools/shared.d.ts.map +1 -0
  522. package/dist/tools/shared.js +54 -0
  523. package/dist/tools/shared.js.map +1 -0
  524. package/dist/tools/tags.d.ts +15 -0
  525. package/dist/tools/tags.d.ts.map +1 -0
  526. package/dist/tools/tags.js +287 -0
  527. package/dist/tools/tags.js.map +1 -0
  528. package/dist/tools/timeline.d.ts +15 -0
  529. package/dist/tools/timeline.d.ts.map +1 -0
  530. package/dist/tools/timeline.js +14 -0
  531. package/dist/tools/timeline.js.map +1 -0
  532. package/dist/tools/users.d.ts +14 -0
  533. package/dist/tools/users.d.ts.map +1 -0
  534. package/dist/tools/users.js +257 -0
  535. package/dist/tools/users.js.map +1 -0
  536. package/dist/tools/vlm.d.ts +40 -0
  537. package/dist/tools/vlm.d.ts.map +1 -0
  538. package/dist/tools/vlm.js +475 -0
  539. package/dist/tools/vlm.js.map +1 -0
  540. package/dist/tools/workflow.d.ts +16 -0
  541. package/dist/tools/workflow.d.ts.map +1 -0
  542. package/dist/tools/workflow.js +495 -0
  543. package/dist/tools/workflow.js.map +1 -0
  544. package/dist/utils/backoff.d.ts +53 -0
  545. package/dist/utils/backoff.d.ts.map +1 -0
  546. package/dist/utils/backoff.js +78 -0
  547. package/dist/utils/backoff.js.map +1 -0
  548. package/dist/utils/config-persistence.d.ts +33 -0
  549. package/dist/utils/config-persistence.d.ts.map +1 -0
  550. package/dist/utils/config-persistence.js +61 -0
  551. package/dist/utils/config-persistence.js.map +1 -0
  552. package/dist/utils/hash.d.ts +65 -0
  553. package/dist/utils/hash.d.ts.map +1 -0
  554. package/dist/utils/hash.js +146 -0
  555. package/dist/utils/hash.js.map +1 -0
  556. package/dist/utils/math.d.ts +21 -0
  557. package/dist/utils/math.d.ts.map +1 -0
  558. package/dist/utils/math.js +39 -0
  559. package/dist/utils/math.js.map +1 -0
  560. package/dist/utils/validation.d.ts +697 -0
  561. package/dist/utils/validation.d.ts.map +1 -0
  562. package/dist/utils/validation.js +529 -0
  563. package/dist/utils/validation.js.map +1 -0
  564. package/package.json +96 -0
  565. package/python/.gitkeep +0 -0
  566. package/python/__init__.py +104 -0
  567. package/python/clustering_worker.py +440 -0
  568. package/python/docx_image_extractor.py +524 -0
  569. package/python/embedding_worker.py +552 -0
  570. package/python/file_manager_worker.py +564 -0
  571. package/python/form_fill_worker.py +399 -0
  572. package/python/gpu_utils.py +582 -0
  573. package/python/image_extractor.py +317 -0
  574. package/python/image_optimizer.py +444 -0
  575. package/python/ocr_worker.py +712 -0
  576. package/python/pyproject.toml +76 -0
  577. package/python/requirements.txt +51 -0
  578. package/python/reranker_worker.py +87 -0
@@ -0,0 +1,526 @@
1
+ /**
2
+ * VectorService - sqlite-vec vector storage and similarity search
3
+ *
4
+ * Handles vector CRUD operations on vec_embeddings virtual table.
5
+ * Search results are self-contained per CP-002 (original text always included).
6
+ *
7
+ * Uses vec_distance_cosine() for all similarity calculations to ensure
8
+ * consistent cosine similarity scoring regardless of underlying index configuration.
9
+ *
10
+ * @module services/storage/vector
11
+ */
12
+ import { createRequire } from 'module';
13
+ import { computeQualityMultiplier } from '../search/quality.js';
14
+ const require = createRequire(import.meta.url);
15
+ // ═══════════════════════════════════════════════════════════════════════════════
16
+ // ERROR HANDLING
17
+ // ═══════════════════════════════════════════════════════════════════════════════
18
+ /**
19
+ * Error codes for vector operations
20
+ */
21
+ var VectorErrorCode;
22
+ (function (VectorErrorCode) {
23
+ VectorErrorCode["INVALID_VECTOR_DIMENSIONS"] = "INVALID_VECTOR_DIMENSIONS";
24
+ VectorErrorCode["EMBEDDING_NOT_FOUND"] = "EMBEDDING_NOT_FOUND";
25
+ VectorErrorCode["VEC_EXTENSION_NOT_LOADED"] = "VEC_EXTENSION_NOT_LOADED";
26
+ VectorErrorCode["STORE_FAILED"] = "STORE_FAILED";
27
+ VectorErrorCode["SEARCH_FAILED"] = "SEARCH_FAILED";
28
+ VectorErrorCode["DELETE_FAILED"] = "DELETE_FAILED";
29
+ })(VectorErrorCode || (VectorErrorCode = {}));
30
+ /**
31
+ * Custom error class for vector operations
32
+ * Includes error code and optional details for debugging
33
+ */
34
+ export class VectorError extends Error {
35
+ code;
36
+ details;
37
+ constructor(message, code, details) {
38
+ super(message);
39
+ this.code = code;
40
+ this.details = details;
41
+ this.name = 'VectorError';
42
+ }
43
+ }
44
+ // ═══════════════════════════════════════════════════════════════════════════════
45
+ // VECTOR SERVICE
46
+ // ═══════════════════════════════════════════════════════════════════════════════
47
+ /**
48
+ * VectorService - handles vector storage and similarity search
49
+ *
50
+ * Wraps sqlite-vec operations for 768-dimensional vectors.
51
+ * All search results are self-contained with original text per CP-002.
52
+ */
53
+ export class VectorService {
54
+ db;
55
+ vecLoaded = false;
56
+ /**
57
+ * Create a new VectorService
58
+ *
59
+ * @param db - Better-sqlite3 database connection with schema already initialized
60
+ * @throws VectorError if sqlite-vec extension cannot be loaded
61
+ */
62
+ constructor(db) {
63
+ this.db = db;
64
+ this.ensureVecExtension();
65
+ }
66
+ /**
67
+ * Ensure sqlite-vec extension is loaded
68
+ * FAIL FAST if not available - no workarounds
69
+ */
70
+ ensureVecExtension() {
71
+ if (this.vecLoaded)
72
+ return;
73
+ try {
74
+ const sqliteVec = require('sqlite-vec');
75
+ sqliteVec.load(this.db);
76
+ this.vecLoaded = true;
77
+ }
78
+ catch (error) {
79
+ throw new VectorError('sqlite-vec extension failed to load. Install: npm install sqlite-vec', VectorErrorCode.VEC_EXTENSION_NOT_LOADED, { error: String(error) });
80
+ }
81
+ }
82
+ // ═══════════════════════════════════════════════════════════════════════════
83
+ // STORE OPERATIONS
84
+ // ═══════════════════════════════════════════════════════════════════════════
85
+ /**
86
+ * Store a vector in vec_embeddings
87
+ *
88
+ * PREREQUISITE: Embedding record must already exist in embeddings table
89
+ * (inserted via DatabaseService.insertEmbedding)
90
+ *
91
+ * @param embeddingId - Must match an existing embeddings.id
92
+ * @param vector - 768-dimensional Float32Array
93
+ * @throws VectorError if dimensions != 768 or embedding doesn't exist
94
+ */
95
+ storeVector(embeddingId, vector) {
96
+ // Validate dimensions - FAIL FAST
97
+ if (vector.length !== 768) {
98
+ throw new VectorError(`Vector must be 768 dimensions, got ${vector.length}`, VectorErrorCode.INVALID_VECTOR_DIMENSIONS, { embeddingId, actualDimensions: vector.length, expectedDimensions: 768 });
99
+ }
100
+ // Verify embedding exists - FAIL FAST, no silent failures
101
+ const exists = this.db.prepare('SELECT 1 FROM embeddings WHERE id = ?').get(embeddingId);
102
+ if (!exists) {
103
+ throw new VectorError(`Embedding ${embeddingId} not found. Insert into embeddings table first.`, VectorErrorCode.EMBEDDING_NOT_FOUND, { embeddingId });
104
+ }
105
+ try {
106
+ const stmt = this.db.prepare(`
107
+ INSERT INTO vec_embeddings (embedding_id, vector)
108
+ VALUES (?, ?)
109
+ `);
110
+ stmt.run(embeddingId, Buffer.from(vector.buffer));
111
+ }
112
+ catch (error) {
113
+ throw new VectorError(`Failed to store vector for ${embeddingId}`, VectorErrorCode.STORE_FAILED, { embeddingId, error: String(error) });
114
+ }
115
+ }
116
+ /**
117
+ * Store multiple vectors in a single transaction
118
+ *
119
+ * @param items - Array of {embeddingId, vector} pairs
120
+ * @returns Count of vectors stored
121
+ * @throws VectorError on any failure (transaction rolls back)
122
+ */
123
+ batchStoreVectors(items) {
124
+ if (items.length === 0)
125
+ return 0;
126
+ // Validate ALL vectors first - FAIL FAST before any writes
127
+ for (const { embeddingId, vector } of items) {
128
+ if (vector.length !== 768) {
129
+ throw new VectorError(`Vector for ${embeddingId} must be 768 dimensions, got ${vector.length}`, VectorErrorCode.INVALID_VECTOR_DIMENSIONS, { embeddingId, actualDimensions: vector.length });
130
+ }
131
+ }
132
+ const stmt = this.db.prepare(`
133
+ INSERT INTO vec_embeddings (embedding_id, vector)
134
+ VALUES (?, ?)
135
+ `);
136
+ const insertAll = this.db.transaction((batch) => {
137
+ let count = 0;
138
+ for (const { embeddingId, vector } of batch) {
139
+ stmt.run(embeddingId, Buffer.from(vector.buffer));
140
+ count++;
141
+ }
142
+ return count;
143
+ });
144
+ try {
145
+ return insertAll(items);
146
+ }
147
+ catch (error) {
148
+ throw new VectorError('Batch vector store failed', VectorErrorCode.STORE_FAILED, {
149
+ count: items.length,
150
+ error: String(error),
151
+ });
152
+ }
153
+ }
154
+ // ═══════════════════════════════════════════════════════════════════════════
155
+ // SEARCH OPERATIONS
156
+ // ═══════════════════════════════════════════════════════════════════════════
157
+ /**
158
+ * Search for similar vectors using cosine distance
159
+ *
160
+ * CRITICAL: Results ALWAYS include original_text per CP-002.
161
+ * No follow-up queries needed - results are self-contained.
162
+ *
163
+ * Uses vec_distance_cosine() for consistent cosine similarity.
164
+ *
165
+ * @param queryVector - 768-dim query vector
166
+ * @param options - Search options (limit, threshold, filters)
167
+ * @returns Array of VectorSearchResult with original text and source info
168
+ */
169
+ searchSimilar(queryVector, options = {}) {
170
+ // Validate query vector - FAIL FAST
171
+ if (queryVector.length !== 768) {
172
+ throw new VectorError(`Query vector must be 768 dimensions, got ${queryVector.length}`, VectorErrorCode.INVALID_VECTOR_DIMENSIONS, { actualDimensions: queryVector.length });
173
+ }
174
+ const limit = Math.min(Math.max(1, options.limit ?? 10), 100);
175
+ const threshold = Math.max(0, Math.min(1, options.threshold ?? 0.0));
176
+ // Cosine distance = 1 - cosine_similarity
177
+ // similarity=1.0 -> distance=0.0 (identical)
178
+ // similarity=0.7 -> distance=0.3
179
+ // similarity=0.0 -> distance=1.0 (perpendicular)
180
+ const maxDistance = 1 - threshold;
181
+ // Convert Float32Array to Buffer for sqlite-vec
182
+ const queryBuffer = Buffer.from(queryVector.buffer);
183
+ if (options.documentFilter?.length) {
184
+ return this.searchWithFilter(queryBuffer, options.documentFilter, maxDistance, limit, options);
185
+ }
186
+ return this.searchAll(queryBuffer, maxDistance, limit, options);
187
+ }
188
+ /**
189
+ * Build chunk filter SQL fragment for vector search.
190
+ * Translates chunk filter conditions from 'c.' alias to 'ch.' alias used in vector queries.
191
+ */
192
+ buildChunkFilterSQL(options) {
193
+ let sql = '';
194
+ const params = [];
195
+ if (options.chunkFilter?.conditions.length) {
196
+ for (const condition of options.chunkFilter.conditions) {
197
+ // Replace c. with ch. since vector.ts uses 'ch' alias for chunks table
198
+ const translated = condition.replace(/\bc\./g, 'ch.');
199
+ // Wrap each condition to permit VLM/extraction results through.
200
+ // VLM results have e.chunk_id IS NULL so all ch.* columns are NULL,
201
+ // which would cause any chunk filter to exclude them. The post-query
202
+ // pageRangeFilter in mapAndFilterResults handles VLM page filtering.
203
+ sql += ` AND (${translated} OR e.chunk_id IS NULL)`;
204
+ }
205
+ params.push(...options.chunkFilter.params);
206
+ }
207
+ // Page range filter for VLM/extraction results (which use e.page_number, not ch.page_number)
208
+ // is applied post-query in mapAndFilterResults, since VLM and chunk results are mixed
209
+ // and chunk results are already filtered by the chunkFilter SQL conditions above.
210
+ return { sql, params };
211
+ }
212
+ /**
213
+ * Search with document filter
214
+ */
215
+ searchWithFilter(queryBuffer, documentFilter, maxDistance, limit, options = {}) {
216
+ const placeholders = documentFilter.map(() => '?').join(', ');
217
+ const chunkFilterSQL = this.buildChunkFilterSQL(options);
218
+ let sql = `
219
+ SELECT
220
+ e.id as embedding_id,
221
+ e.chunk_id,
222
+ e.image_id,
223
+ e.extraction_id,
224
+ e.document_id,
225
+ e.original_text,
226
+ e.original_text_length,
227
+ e.source_file_path,
228
+ e.source_file_name,
229
+ e.source_file_hash,
230
+ e.page_number,
231
+ e.page_range,
232
+ e.character_start,
233
+ e.character_end,
234
+ e.chunk_index,
235
+ e.total_chunks,
236
+ e.model_name,
237
+ e.model_version,
238
+ e.provenance_id,
239
+ e.content_hash,
240
+ ch.heading_context,
241
+ ch.section_path,
242
+ ch.content_types,
243
+ ch.is_atomic,
244
+ ch.page_range AS chunk_page_range,
245
+ ch.heading_level,
246
+ doc.doc_title,
247
+ doc.doc_author,
248
+ doc.doc_subject,
249
+ ch.overlap_previous,
250
+ ch.overlap_next,
251
+ ch.chunking_strategy,
252
+ ch.embedding_status,
253
+ doc.page_count AS doc_page_count,
254
+ (SELECT o.datalab_mode FROM ocr_results o WHERE o.document_id = e.document_id ORDER BY o.processing_completed_at DESC LIMIT 1) AS datalab_mode,
255
+ (SELECT o.parse_quality_score FROM ocr_results o WHERE o.document_id = e.document_id ORDER BY o.processing_completed_at DESC LIMIT 1) AS ocr_quality_score,
256
+ vec_distance_cosine(v.vector, ?) as distance
257
+ FROM vec_embeddings v
258
+ JOIN embeddings e ON e.id = v.embedding_id
259
+ LEFT JOIN chunks ch ON e.chunk_id = ch.id
260
+ LEFT JOIN documents doc ON e.document_id = doc.id
261
+ WHERE e.document_id IN (${placeholders})
262
+ `;
263
+ // Build params array: queryBuffer for vec_distance_cosine, then document IDs
264
+ const params = [queryBuffer];
265
+ for (const docId of documentFilter) {
266
+ params.push(docId);
267
+ }
268
+ // Add chunk filter conditions
269
+ sql += chunkFilterSQL.sql;
270
+ params.push(...chunkFilterSQL.params);
271
+ sql += `
272
+ ORDER BY distance ASC
273
+ LIMIT ?
274
+ `;
275
+ params.push(limit * 3);
276
+ try {
277
+ const stmt = this.db.prepare(sql);
278
+ const rows = stmt.all(...params);
279
+ return this.mapAndFilterResults(rows, maxDistance, limit, options);
280
+ }
281
+ catch (error) {
282
+ throw new VectorError('Vector search failed', VectorErrorCode.SEARCH_FAILED, {
283
+ error: String(error),
284
+ hasFilter: true,
285
+ });
286
+ }
287
+ }
288
+ /**
289
+ * Search all vectors without filter
290
+ */
291
+ searchAll(queryBuffer, maxDistance, limit, options = {}) {
292
+ try {
293
+ const chunkFilterSQL = this.buildChunkFilterSQL(options);
294
+ let sql = `
295
+ SELECT
296
+ e.id as embedding_id,
297
+ e.chunk_id,
298
+ e.image_id,
299
+ e.extraction_id,
300
+ e.document_id,
301
+ e.original_text,
302
+ e.original_text_length,
303
+ e.source_file_path,
304
+ e.source_file_name,
305
+ e.source_file_hash,
306
+ e.page_number,
307
+ e.page_range,
308
+ e.character_start,
309
+ e.character_end,
310
+ e.chunk_index,
311
+ e.total_chunks,
312
+ e.model_name,
313
+ e.model_version,
314
+ e.provenance_id,
315
+ e.content_hash,
316
+ ch.heading_context,
317
+ ch.section_path,
318
+ ch.content_types,
319
+ ch.is_atomic,
320
+ ch.page_range AS chunk_page_range,
321
+ ch.heading_level,
322
+ doc.doc_title,
323
+ doc.doc_author,
324
+ doc.doc_subject,
325
+ ch.overlap_previous,
326
+ ch.overlap_next,
327
+ ch.chunking_strategy,
328
+ ch.embedding_status,
329
+ doc.page_count AS doc_page_count,
330
+ (SELECT o.datalab_mode FROM ocr_results o WHERE o.document_id = e.document_id ORDER BY o.processing_completed_at DESC LIMIT 1) AS datalab_mode,
331
+ (SELECT o.parse_quality_score FROM ocr_results o WHERE o.document_id = e.document_id ORDER BY o.processing_completed_at DESC LIMIT 1) AS ocr_quality_score,
332
+ vec_distance_cosine(v.vector, ?) as distance
333
+ FROM vec_embeddings v
334
+ JOIN embeddings e ON e.id = v.embedding_id
335
+ LEFT JOIN chunks ch ON e.chunk_id = ch.id
336
+ LEFT JOIN documents doc ON e.document_id = doc.id
337
+ `;
338
+ const params = [queryBuffer];
339
+ // Add chunk filter conditions (need WHERE clause if any)
340
+ if (chunkFilterSQL.sql) {
341
+ sql += ` WHERE 1=1 ${chunkFilterSQL.sql}`;
342
+ params.push(...chunkFilterSQL.params);
343
+ }
344
+ sql += `
345
+ ORDER BY distance ASC
346
+ LIMIT ?
347
+ `;
348
+ params.push(limit * 3);
349
+ const rows = this.db.prepare(sql).all(...params);
350
+ return this.mapAndFilterResults(rows, maxDistance, limit, options);
351
+ }
352
+ catch (error) {
353
+ throw new VectorError('Vector search failed', VectorErrorCode.SEARCH_FAILED, {
354
+ error: String(error),
355
+ hasFilter: false,
356
+ });
357
+ }
358
+ }
359
+ /**
360
+ * Determine result type from row identity fields.
361
+ */
362
+ static getResultType(row) {
363
+ if (row.chunk_id !== null)
364
+ return 'chunk';
365
+ if (row.extraction_id !== null)
366
+ return 'extraction';
367
+ return 'vlm';
368
+ }
369
+ /**
370
+ * Map database rows to VectorSearchResult and filter by threshold.
371
+ * Applies quality-weighted scoring to all results.
372
+ */
373
+ mapAndFilterResults(rows, maxDistance, limit, options = {}) {
374
+ let results = rows
375
+ .filter((row) => row.distance <= maxDistance)
376
+ .map((row) => ({
377
+ embedding_id: row.embedding_id,
378
+ chunk_id: row.chunk_id,
379
+ image_id: row.image_id,
380
+ extraction_id: row.extraction_id,
381
+ document_id: row.document_id,
382
+ result_type: VectorService.getResultType(row),
383
+ similarity_score: 1 - row.distance, // Convert distance to similarity
384
+ distance: row.distance,
385
+ original_text: row.original_text,
386
+ original_text_length: row.original_text_length,
387
+ source_file_path: row.source_file_path,
388
+ source_file_name: row.source_file_name,
389
+ source_file_hash: row.source_file_hash,
390
+ page_number: row.page_number,
391
+ page_range: row.page_range,
392
+ character_start: row.character_start,
393
+ character_end: row.character_end,
394
+ chunk_index: row.chunk_index,
395
+ total_chunks: row.total_chunks,
396
+ model_name: row.model_name,
397
+ model_version: row.model_version,
398
+ provenance_id: row.provenance_id,
399
+ content_hash: row.content_hash,
400
+ heading_context: row.heading_context ?? null,
401
+ section_path: row.section_path ?? null,
402
+ content_types: row.content_types ?? null,
403
+ is_atomic: !!row.is_atomic,
404
+ chunk_page_range: row.chunk_page_range ?? null,
405
+ heading_level: row.heading_level ?? null,
406
+ ocr_quality_score: row.ocr_quality_score ?? null,
407
+ doc_title: row.doc_title ?? null,
408
+ doc_author: row.doc_author ?? null,
409
+ doc_subject: row.doc_subject ?? null,
410
+ overlap_previous: row.overlap_previous ?? 0,
411
+ overlap_next: row.overlap_next ?? 0,
412
+ chunking_strategy: row.chunking_strategy ?? null,
413
+ embedding_status: row.embedding_status ?? 'pending',
414
+ doc_page_count: row.doc_page_count ?? null,
415
+ datalab_mode: row.datalab_mode ?? null,
416
+ }));
417
+ // Apply pageRangeFilter to VLM/extraction results (chunk results already filtered by SQL)
418
+ if (options.pageRangeFilter) {
419
+ const { min_page, max_page } = options.pageRangeFilter;
420
+ results = results.filter((r) => {
421
+ // Chunk results already filtered by chunkFilter SQL conditions
422
+ if (r.chunk_id !== null)
423
+ return true;
424
+ // VLM/extraction results: filter by page_number
425
+ if (r.page_number === null)
426
+ return false; // No page info = exclude when filtering by page
427
+ if (min_page !== undefined && r.page_number < min_page)
428
+ return false;
429
+ if (max_page !== undefined && r.page_number > max_page)
430
+ return false;
431
+ return true;
432
+ });
433
+ }
434
+ // Apply quality-weighted scoring BEFORE limit slice so high-quality results
435
+ // beyond the initial limit can be promoted into the final result set
436
+ for (const r of results) {
437
+ r.similarity_score *= computeQualityMultiplier(r.ocr_quality_score);
438
+ }
439
+ // Re-sort by quality-adjusted similarity score
440
+ results.sort((a, b) => b.similarity_score - a.similarity_score);
441
+ // Apply limit after quality reranking
442
+ results = results.slice(0, limit);
443
+ return results;
444
+ }
445
+ // ═══════════════════════════════════════════════════════════════════════════
446
+ // DELETE OPERATIONS
447
+ // ═══════════════════════════════════════════════════════════════════════════
448
+ /**
449
+ * Delete a vector from vec_embeddings
450
+ *
451
+ * @param embeddingId - The embedding ID
452
+ * @returns true if deleted, false if not found
453
+ */
454
+ deleteVector(embeddingId) {
455
+ try {
456
+ const result = this.db
457
+ .prepare('DELETE FROM vec_embeddings WHERE embedding_id = ?')
458
+ .run(embeddingId);
459
+ return result.changes > 0;
460
+ }
461
+ catch (error) {
462
+ throw new VectorError(`Failed to delete vector ${embeddingId}`, VectorErrorCode.DELETE_FAILED, { embeddingId, error: String(error) });
463
+ }
464
+ }
465
+ /**
466
+ * Delete all vectors for a document
467
+ *
468
+ * @param documentId - The document ID
469
+ * @returns Count of vectors deleted
470
+ */
471
+ deleteVectorsByDocumentId(documentId) {
472
+ try {
473
+ // Get embedding IDs for this document
474
+ const embeddingIds = this.db
475
+ .prepare('SELECT id FROM embeddings WHERE document_id = ?')
476
+ .all(documentId);
477
+ if (embeddingIds.length === 0)
478
+ return 0;
479
+ const stmt = this.db.prepare('DELETE FROM vec_embeddings WHERE embedding_id = ?');
480
+ const deleteAll = this.db.transaction((ids) => {
481
+ let count = 0;
482
+ for (const id of ids) {
483
+ const result = stmt.run(id);
484
+ count += result.changes;
485
+ }
486
+ return count;
487
+ });
488
+ return deleteAll(embeddingIds.map((e) => e.id));
489
+ }
490
+ catch (error) {
491
+ throw new VectorError(`Failed to delete vectors for document ${documentId}`, VectorErrorCode.DELETE_FAILED, { documentId, error: String(error) });
492
+ }
493
+ }
494
+ // ═══════════════════════════════════════════════════════════════════════════
495
+ // UTILITY METHODS
496
+ // ═══════════════════════════════════════════════════════════════════════════
497
+ /**
498
+ * Get count of vectors stored
499
+ */
500
+ getVectorCount() {
501
+ const result = this.db.prepare('SELECT COUNT(*) as count FROM vec_embeddings').get();
502
+ return result.count;
503
+ }
504
+ /**
505
+ * Check if vector exists
506
+ */
507
+ vectorExists(embeddingId) {
508
+ const result = this.db
509
+ .prepare('SELECT 1 FROM vec_embeddings WHERE embedding_id = ?')
510
+ .get(embeddingId);
511
+ return !!result;
512
+ }
513
+ /**
514
+ * Get raw vector by embedding ID
515
+ * @returns Float32Array or null if not found
516
+ */
517
+ getVector(embeddingId) {
518
+ const result = this.db
519
+ .prepare('SELECT vector FROM vec_embeddings WHERE embedding_id = ?')
520
+ .get(embeddingId);
521
+ if (!result)
522
+ return null;
523
+ return new Float32Array(result.vector.buffer, result.vector.byteOffset, result.vector.byteLength / 4);
524
+ }
525
+ }
526
+ //# sourceMappingURL=vector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vector.js","sourceRoot":"","sources":["../../../src/services/storage/vector.ts"],"names":[],"mappings":"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"}