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,151 @@
1
+ /**
2
+ * User and Audit Log Operations for DatabaseService
3
+ *
4
+ * Provides CRUD operations for users and audit_log tables.
5
+ * Users represent identity for multi-user collaboration.
6
+ * Audit log tracks user actions for compliance and accountability.
7
+ *
8
+ * CRITICAL: NEVER use console.log() - stdout is reserved for JSON-RPC protocol.
9
+ *
10
+ * @module database/user-operations
11
+ */
12
+ // ═══════════════════════════════════════════════════════════════════════════════
13
+ // USER CRUD
14
+ // ═══════════════════════════════════════════════════════════════════════════════
15
+ /**
16
+ * Create a new user.
17
+ * ID is auto-generated by SQLite (lower(hex(randomblob(16)))).
18
+ *
19
+ * @returns The created user record
20
+ * @throws Error if external_id already exists (UNIQUE constraint)
21
+ */
22
+ export function createUser(db, params) {
23
+ const now = new Date().toISOString();
24
+ try {
25
+ const stmt = db.prepare(`
26
+ INSERT INTO users (display_name, external_id, email, role, metadata_json, last_active_at)
27
+ VALUES (?, ?, ?, ?, ?, ?)
28
+ `);
29
+ const result = stmt.run(params.display_name, params.external_id ?? null, params.email ?? null, params.role ?? 'viewer', params.metadata_json ?? '{}', now);
30
+ // Retrieve the just-inserted user by rowid (safe under concurrent inserts)
31
+ const user = db
32
+ .prepare('SELECT * FROM users WHERE rowid = ?')
33
+ .get(result.lastInsertRowid);
34
+ if (!user) {
35
+ throw new Error('Failed to retrieve created user');
36
+ }
37
+ return user;
38
+ }
39
+ catch (error) {
40
+ if (error instanceof Error && error.message.includes('UNIQUE constraint failed')) {
41
+ throw new Error(`User with external_id "${params.external_id}" already exists`);
42
+ }
43
+ throw error;
44
+ }
45
+ }
46
+ /**
47
+ * Get a user by internal ID
48
+ */
49
+ export function getUser(db, userId) {
50
+ const row = db.prepare('SELECT * FROM users WHERE id = ?').get(userId);
51
+ return row ?? null;
52
+ }
53
+ /**
54
+ * Get a user by external ID
55
+ */
56
+ export function getUserByExternalId(db, externalId) {
57
+ const row = db
58
+ .prepare('SELECT * FROM users WHERE external_id = ?')
59
+ .get(externalId);
60
+ return row ?? null;
61
+ }
62
+ /**
63
+ * Update the last_active_at timestamp for a user
64
+ */
65
+ export function updateUserActivity(db, userId) {
66
+ const now = new Date().toISOString();
67
+ db.prepare('UPDATE users SET last_active_at = ? WHERE id = ?').run(now, userId);
68
+ }
69
+ /**
70
+ * List users with optional filters
71
+ */
72
+ export function listUsers(db, options) {
73
+ const conditions = [];
74
+ const params = [];
75
+ if (options?.role) {
76
+ conditions.push('role = ?');
77
+ params.push(options.role);
78
+ }
79
+ const whereClause = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : '';
80
+ const limit = options?.limit ?? 100;
81
+ const offset = options?.offset ?? 0;
82
+ params.push(limit, offset);
83
+ return db
84
+ .prepare(`SELECT * FROM users ${whereClause} ORDER BY created_at DESC LIMIT ? OFFSET ?`)
85
+ .all(...params);
86
+ }
87
+ // ═══════════════════════════════════════════════════════════════════════════════
88
+ // AUDIT LOG
89
+ // ═══════════════════════════════════════════════════════════════════════════════
90
+ /**
91
+ * Insert an entry into the audit log
92
+ */
93
+ export function insertAuditLog(db, params) {
94
+ const result = db
95
+ .prepare(`INSERT INTO audit_log (user_id, session_id, action, entity_type, entity_id, details_json, ip_address)
96
+ VALUES (?, ?, ?, ?, ?, ?, ?)`)
97
+ .run(params.user_id, params.session_id, params.action, params.entity_type ?? null, params.entity_id ?? null, params.details_json ?? '{}', params.ip_address ?? null);
98
+ return Number(result.lastInsertRowid);
99
+ }
100
+ /**
101
+ * Query audit log with filters
102
+ *
103
+ * @returns Array of matching audit log entries, ordered by created_at DESC
104
+ */
105
+ export function queryAuditLog(db, filters) {
106
+ const conditions = [];
107
+ const params = [];
108
+ if (filters.user_id) {
109
+ conditions.push('a.user_id = ?');
110
+ params.push(filters.user_id);
111
+ }
112
+ if (filters.action) {
113
+ conditions.push('a.action = ?');
114
+ params.push(filters.action);
115
+ }
116
+ if (filters.entity_type) {
117
+ conditions.push('a.entity_type = ?');
118
+ params.push(filters.entity_type);
119
+ }
120
+ if (filters.entity_id) {
121
+ conditions.push('a.entity_id = ?');
122
+ params.push(filters.entity_id);
123
+ }
124
+ if (filters.date_from) {
125
+ conditions.push('a.created_at >= ?');
126
+ params.push(filters.date_from);
127
+ }
128
+ if (filters.date_to) {
129
+ conditions.push('a.created_at <= ?');
130
+ params.push(filters.date_to);
131
+ }
132
+ const whereClause = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : '';
133
+ // Get total count
134
+ const countRow = db
135
+ .prepare(`SELECT COUNT(*) as cnt FROM audit_log a ${whereClause}`)
136
+ .get(...params);
137
+ const total = countRow.cnt;
138
+ // Get paginated results with user display_name joined
139
+ const limit = filters.limit ?? 50;
140
+ const offset = filters.offset ?? 0;
141
+ const entries = db
142
+ .prepare(`SELECT a.*, u.display_name as user_display_name
143
+ FROM audit_log a
144
+ LEFT JOIN users u ON a.user_id = u.id
145
+ ${whereClause}
146
+ ORDER BY a.created_at DESC
147
+ LIMIT ? OFFSET ?`)
148
+ .all(...params, limit, offset);
149
+ return { entries, total };
150
+ }
151
+ //# sourceMappingURL=user-operations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-operations.js","sourceRoot":"","sources":["../../../../src/services/storage/database/user-operations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAkEH,kFAAkF;AAClF,YAAY;AACZ,kFAAkF;AAElF;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,EAAqB,EAAE,MAAwB;IACxE,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAErC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;;;KAGvB,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CACrB,MAAM,CAAC,YAAY,EACnB,MAAM,CAAC,WAAW,IAAI,IAAI,EAC1B,MAAM,CAAC,KAAK,IAAI,IAAI,EACpB,MAAM,CAAC,IAAI,IAAI,QAAQ,EACvB,MAAM,CAAC,aAAa,IAAI,IAAI,EAC5B,GAAG,CACJ,CAAC;QAEF,2EAA2E;QAC3E,MAAM,IAAI,GAAG,EAAE;aACZ,OAAO,CAAC,qCAAqC,CAAC;aAC9C,GAAG,CAAC,MAAM,CAAC,eAAe,CAAqB,CAAC;QAEnD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACrD,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAC,EAAE,CAAC;YACjF,MAAM,IAAI,KAAK,CACb,0BAA0B,MAAM,CAAC,WAAW,kBAAkB,CAC/D,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,EAAqB,EAAE,MAAc;IAC3D,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAqB,CAAC;IAC3F,OAAO,GAAG,IAAI,IAAI,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAAqB,EAAE,UAAkB;IAC3E,MAAM,GAAG,GAAG,EAAE;SACX,OAAO,CAAC,2CAA2C,CAAC;SACpD,GAAG,CAAC,UAAU,CAAqB,CAAC;IACvC,OAAO,GAAG,IAAI,IAAI,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,EAAqB,EAAE,MAAc;IACtE,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,EAAE,CAAC,OAAO,CAAC,kDAAkD,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AAClF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,EAAqB,EAAE,OAA0B;IACzE,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,MAAM,GAAwB,EAAE,CAAC;IAEvC,IAAI,OAAO,EAAE,IAAI,EAAE,CAAC;QAClB,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACrF,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,GAAG,CAAC;IACpC,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,CAAC,CAAC;IAEpC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAE3B,OAAO,EAAE;SACN,OAAO,CAAC,uBAAuB,WAAW,4CAA4C,CAAC;SACvF,GAAG,CAAC,GAAG,MAAM,CAAW,CAAC;AAC9B,CAAC;AAED,kFAAkF;AAClF,YAAY;AACZ,kFAAkF;AAElF;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,EAAqB,EAAE,MAA4B;IAChF,MAAM,MAAM,GAAG,EAAE;SACd,OAAO,CACN;oCAC8B,CAC/B;SACA,GAAG,CACF,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,WAAW,IAAI,IAAI,EAC1B,MAAM,CAAC,SAAS,IAAI,IAAI,EACxB,MAAM,CAAC,YAAY,IAAI,IAAI,EAC3B,MAAM,CAAC,UAAU,IAAI,IAAI,CAC1B,CAAC;IAEJ,OAAO,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AACxC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAC3B,EAAqB,EACrB,OAA6B;IAE7B,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,MAAM,GAAwB,EAAE,CAAC;IAEvC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAErF,kBAAkB;IAClB,MAAM,QAAQ,GAAG,EAAE;SAChB,OAAO,CAAC,2CAA2C,WAAW,EAAE,CAAC;SACjE,GAAG,CAAC,GAAG,MAAM,CAAoB,CAAC;IAErC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC;IAE3B,sDAAsD;IACtD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;IAEnC,MAAM,OAAO,GAAG,EAAE;SACf,OAAO,CACN;;;SAGG,WAAW;;wBAEI,CACnB;SACA,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,CAA6D,CAAC;IAE7F,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Workflow State Database Operations
3
+ *
4
+ * Provides operations for the workflow state machine that tracks document
5
+ * lifecycle states. Enforces valid state transitions to prevent invalid
6
+ * workflow progression.
7
+ *
8
+ * State machine:
9
+ * '' -> draft -> submitted -> in_review -> approved -> executed -> archived
10
+ * \-> changes_requested -> submitted
11
+ * \-> rejected -> archived
12
+ * approved -> expired (auto, past due_date)
13
+ *
14
+ * CRITICAL: NEVER use console.log() - stdout is reserved for JSON-RPC protocol.
15
+ *
16
+ * @module database/workflow-operations
17
+ */
18
+ import type Database from 'better-sqlite3';
19
+ export interface WorkflowStateRow {
20
+ id: string;
21
+ document_id: string;
22
+ state: string;
23
+ assigned_to: string | null;
24
+ assigned_by: string | null;
25
+ reason: string | null;
26
+ due_date: string | null;
27
+ completed_at: string | null;
28
+ created_at: string;
29
+ metadata_json: string | null;
30
+ }
31
+ export interface CreateWorkflowStateParams {
32
+ document_id: string;
33
+ state: string;
34
+ assigned_to?: string | null;
35
+ assigned_by?: string | null;
36
+ reason?: string | null;
37
+ due_date?: string | null;
38
+ metadata?: Record<string, unknown> | null;
39
+ }
40
+ export interface WorkflowQueueFilters {
41
+ assigned_to?: string;
42
+ state?: string;
43
+ due_before?: string;
44
+ limit?: number;
45
+ offset?: number;
46
+ }
47
+ /**
48
+ * Map of current state -> allowed next states.
49
+ * Empty string key represents "no existing state" (initial transition).
50
+ */
51
+ export declare const VALID_TRANSITIONS: Record<string, string[]>;
52
+ /**
53
+ * Get the most recent workflow state for a document.
54
+ *
55
+ * @param conn - Database connection
56
+ * @param documentId - Document ID
57
+ * @returns Latest workflow state row or null if no workflow history
58
+ */
59
+ export declare function getLatestWorkflowState(conn: Database.Database, documentId: string): WorkflowStateRow | null;
60
+ /**
61
+ * Create a new workflow state for a document.
62
+ *
63
+ * Enforces valid state transitions. If the document has no prior workflow
64
+ * state, only 'draft' is allowed. Otherwise the new state must be in the
65
+ * VALID_TRANSITIONS map for the current state.
66
+ *
67
+ * @param conn - Database connection
68
+ * @param params - Workflow state creation parameters
69
+ * @returns The created workflow state row
70
+ * @throws Error if document not found or transition is invalid
71
+ */
72
+ export declare function createWorkflowState(conn: Database.Database, params: CreateWorkflowStateParams): WorkflowStateRow;
73
+ /**
74
+ * List documents pending review with optional filters.
75
+ *
76
+ * Finds the latest workflow state per document and filters by the given
77
+ * criteria. Useful for building reviewer queues.
78
+ *
79
+ * @param conn - Database connection
80
+ * @param filters - Optional query filters
81
+ * @returns Paginated workflow states and total count
82
+ */
83
+ export declare function listWorkflowQueue(conn: Database.Database, filters: WorkflowQueueFilters): {
84
+ items: WorkflowStateRow[];
85
+ total: number;
86
+ };
87
+ /**
88
+ * Get the full workflow history for a document.
89
+ *
90
+ * Returns all workflow state rows ordered by creation time (oldest first),
91
+ * showing the complete state progression.
92
+ *
93
+ * @param conn - Database connection
94
+ * @param documentId - Document ID
95
+ * @returns Array of workflow state rows
96
+ */
97
+ export declare function getWorkflowHistory(conn: Database.Database, documentId: string): WorkflowStateRow[];
98
+ //# sourceMappingURL=workflow-operations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-operations.d.ts","sourceRoot":"","sources":["../../../../src/services/storage/database/workflow-operations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAO3C,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC3C;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAMD;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAStD,CAAC;AAMF;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,QAAQ,CAAC,QAAQ,EACvB,UAAU,EAAE,MAAM,GACjB,gBAAgB,GAAG,IAAI,CAIzB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,QAAQ,CAAC,QAAQ,EACvB,MAAM,EAAE,yBAAyB,GAChC,gBAAgB,CA0ClB;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,QAAQ,CAAC,QAAQ,EACvB,OAAO,EAAE,oBAAoB,GAC5B;IAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAsD9C;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,QAAQ,CAAC,QAAQ,EACvB,UAAU,EAAE,MAAM,GACjB,gBAAgB,EAAE,CAIpB"}
@@ -0,0 +1,157 @@
1
+ /**
2
+ * Workflow State Database Operations
3
+ *
4
+ * Provides operations for the workflow state machine that tracks document
5
+ * lifecycle states. Enforces valid state transitions to prevent invalid
6
+ * workflow progression.
7
+ *
8
+ * State machine:
9
+ * '' -> draft -> submitted -> in_review -> approved -> executed -> archived
10
+ * \-> changes_requested -> submitted
11
+ * \-> rejected -> archived
12
+ * approved -> expired (auto, past due_date)
13
+ *
14
+ * CRITICAL: NEVER use console.log() - stdout is reserved for JSON-RPC protocol.
15
+ *
16
+ * @module database/workflow-operations
17
+ */
18
+ import { v4 as uuidv4 } from 'uuid';
19
+ // =============================================================================
20
+ // VALID STATE TRANSITIONS
21
+ // =============================================================================
22
+ /**
23
+ * Map of current state -> allowed next states.
24
+ * Empty string key represents "no existing state" (initial transition).
25
+ */
26
+ export const VALID_TRANSITIONS = {
27
+ '': ['draft'],
28
+ 'draft': ['submitted'],
29
+ 'submitted': ['in_review'],
30
+ 'in_review': ['approved', 'rejected', 'changes_requested'],
31
+ 'changes_requested': ['submitted'],
32
+ 'approved': ['executed', 'expired', 'archived'],
33
+ 'rejected': ['archived'],
34
+ 'executed': ['archived'],
35
+ };
36
+ // =============================================================================
37
+ // WORKFLOW STATE OPERATIONS
38
+ // =============================================================================
39
+ /**
40
+ * Get the most recent workflow state for a document.
41
+ *
42
+ * @param conn - Database connection
43
+ * @param documentId - Document ID
44
+ * @returns Latest workflow state row or null if no workflow history
45
+ */
46
+ export function getLatestWorkflowState(conn, documentId) {
47
+ return conn.prepare('SELECT * FROM workflow_states WHERE document_id = ? ORDER BY created_at DESC, rowid DESC LIMIT 1').get(documentId) ?? null;
48
+ }
49
+ /**
50
+ * Create a new workflow state for a document.
51
+ *
52
+ * Enforces valid state transitions. If the document has no prior workflow
53
+ * state, only 'draft' is allowed. Otherwise the new state must be in the
54
+ * VALID_TRANSITIONS map for the current state.
55
+ *
56
+ * @param conn - Database connection
57
+ * @param params - Workflow state creation parameters
58
+ * @returns The created workflow state row
59
+ * @throws Error if document not found or transition is invalid
60
+ */
61
+ export function createWorkflowState(conn, params) {
62
+ // Validate document exists
63
+ const doc = conn.prepare('SELECT id FROM documents WHERE id = ?').get(params.document_id);
64
+ if (!doc) {
65
+ throw new Error(`Document not found: ${params.document_id}`);
66
+ }
67
+ // Get current state to validate transition
68
+ const current = getLatestWorkflowState(conn, params.document_id);
69
+ const currentState = current?.state ?? '';
70
+ const allowed = VALID_TRANSITIONS[currentState];
71
+ if (!allowed || !allowed.includes(params.state)) {
72
+ const currentDisplay = currentState || '(none)';
73
+ const allowedDisplay = allowed ? allowed.join(', ') : '(none)';
74
+ throw new Error(`Invalid workflow transition: cannot move from "${currentDisplay}" to "${params.state}". ` +
75
+ `Allowed transitions from "${currentDisplay}": [${allowedDisplay}]`);
76
+ }
77
+ const id = uuidv4();
78
+ const now = new Date().toISOString();
79
+ const metadataJson = params.metadata ? JSON.stringify(params.metadata) : null;
80
+ conn.prepare(`
81
+ INSERT INTO workflow_states (id, document_id, state, assigned_to, assigned_by, reason, due_date, completed_at, created_at, metadata_json)
82
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
83
+ `).run(id, params.document_id, params.state, params.assigned_to ?? null, params.assigned_by ?? null, params.reason ?? null, params.due_date ?? null, null, // completed_at set when reaching terminal states
84
+ now, metadataJson);
85
+ return conn.prepare('SELECT * FROM workflow_states WHERE id = ?').get(id);
86
+ }
87
+ /**
88
+ * List documents pending review with optional filters.
89
+ *
90
+ * Finds the latest workflow state per document and filters by the given
91
+ * criteria. Useful for building reviewer queues.
92
+ *
93
+ * @param conn - Database connection
94
+ * @param filters - Optional query filters
95
+ * @returns Paginated workflow states and total count
96
+ */
97
+ export function listWorkflowQueue(conn, filters) {
98
+ // Use a CTE to get the latest state per document
99
+ const conditions = [];
100
+ const params = [];
101
+ if (filters.state) {
102
+ conditions.push('ws.state = ?');
103
+ params.push(filters.state);
104
+ }
105
+ if (filters.assigned_to) {
106
+ conditions.push('ws.assigned_to = ?');
107
+ params.push(filters.assigned_to);
108
+ }
109
+ if (filters.due_before) {
110
+ conditions.push('ws.due_date IS NOT NULL AND ws.due_date <= ?');
111
+ params.push(filters.due_before);
112
+ }
113
+ const whereClause = conditions.length > 0
114
+ ? `WHERE ${conditions.join(' AND ')}`
115
+ : '';
116
+ const limit = Math.min(filters.limit ?? 50, 200);
117
+ const offset = filters.offset ?? 0;
118
+ // Get latest state per document using MAX(rowid) which is strictly monotonic
119
+ // (avoids duplicates when multiple states share the same created_at timestamp)
120
+ const countSql = `
121
+ SELECT COUNT(*) as c FROM (
122
+ SELECT ws.* FROM workflow_states ws
123
+ INNER JOIN (
124
+ SELECT MAX(rowid) as max_rowid
125
+ FROM workflow_states GROUP BY document_id
126
+ ) latest ON ws.rowid = latest.max_rowid
127
+ ${whereClause}
128
+ )
129
+ `;
130
+ const totalRow = conn.prepare(countSql).get(...params);
131
+ const dataSql = `
132
+ SELECT ws.* FROM workflow_states ws
133
+ INNER JOIN (
134
+ SELECT MAX(rowid) as max_rowid
135
+ FROM workflow_states GROUP BY document_id
136
+ ) latest ON ws.rowid = latest.max_rowid
137
+ ${whereClause}
138
+ ORDER BY ws.due_date ASC NULLS LAST, ws.created_at DESC
139
+ LIMIT ? OFFSET ?
140
+ `;
141
+ const items = conn.prepare(dataSql).all(...params, limit, offset);
142
+ return { items, total: totalRow.c };
143
+ }
144
+ /**
145
+ * Get the full workflow history for a document.
146
+ *
147
+ * Returns all workflow state rows ordered by creation time (oldest first),
148
+ * showing the complete state progression.
149
+ *
150
+ * @param conn - Database connection
151
+ * @param documentId - Document ID
152
+ * @returns Array of workflow state rows
153
+ */
154
+ export function getWorkflowHistory(conn, documentId) {
155
+ return conn.prepare('SELECT * FROM workflow_states WHERE document_id = ? ORDER BY created_at ASC').all(documentId);
156
+ }
157
+ //# sourceMappingURL=workflow-operations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-operations.js","sourceRoot":"","sources":["../../../../src/services/storage/database/workflow-operations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAqCpC,gFAAgF;AAChF,0BAA0B;AAC1B,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAA6B;IACzD,EAAE,EAAE,CAAC,OAAO,CAAC;IACb,OAAO,EAAE,CAAC,WAAW,CAAC;IACtB,WAAW,EAAE,CAAC,WAAW,CAAC;IAC1B,WAAW,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,mBAAmB,CAAC;IAC1D,mBAAmB,EAAE,CAAC,WAAW,CAAC;IAClC,UAAU,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC;IAC/C,UAAU,EAAE,CAAC,UAAU,CAAC;IACxB,UAAU,EAAE,CAAC,UAAU,CAAC;CACzB,CAAC;AAEF,gFAAgF;AAChF,4BAA4B;AAC5B,gFAAgF;AAEhF;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAAuB,EACvB,UAAkB;IAElB,OAAQ,IAAI,CAAC,OAAO,CAClB,kGAAkG,CACnG,CAAC,GAAG,CAAC,UAAU,CAAsB,IAAI,IAAI,CAAC;AACjD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,mBAAmB,CACjC,IAAuB,EACvB,MAAiC;IAEjC,2BAA2B;IAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC1F,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,uBAAuB,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,2CAA2C;IAC3C,MAAM,OAAO,GAAG,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IACjE,MAAM,YAAY,GAAG,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;IAE1C,MAAM,OAAO,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAChD,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAChD,MAAM,cAAc,GAAG,YAAY,IAAI,QAAQ,CAAC;QAChD,MAAM,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC/D,MAAM,IAAI,KAAK,CACb,kDAAkD,cAAc,SAAS,MAAM,CAAC,KAAK,KAAK;YAC1F,6BAA6B,cAAc,OAAO,cAAc,GAAG,CACpE,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;IACpB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE9E,IAAI,CAAC,OAAO,CAAC;;;GAGZ,CAAC,CAAC,GAAG,CACJ,EAAE,EACF,MAAM,CAAC,WAAW,EAClB,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,WAAW,IAAI,IAAI,EAC1B,MAAM,CAAC,WAAW,IAAI,IAAI,EAC1B,MAAM,CAAC,MAAM,IAAI,IAAI,EACrB,MAAM,CAAC,QAAQ,IAAI,IAAI,EACvB,IAAI,EAAE,iDAAiD;IACvD,GAAG,EACH,YAAY,CACb,CAAC;IAEF,OAAO,IAAI,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC,GAAG,CAAC,EAAE,CAAqB,CAAC;AAChG,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAuB,EACvB,OAA6B;IAE7B,iDAAiD;IACjD,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,MAAM,GAAc,EAAE,CAAC;IAE7B,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IACD,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,UAAU,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;QAChE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC;QACvC,CAAC,CAAC,SAAS,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;QACrC,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;IAEnC,6EAA6E;IAC7E,+EAA+E;IAC/E,MAAM,QAAQ,GAAG;;;;;;;QAOX,WAAW;;GAEhB,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAkB,CAAC;IAExE,MAAM,OAAO,GAAG;;;;;;MAMZ,WAAW;;;GAGd,CAAC;IAEF,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,CAAuB,CAAC;IAExF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC;AACtC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAAuB,EACvB,UAAkB;IAElB,OAAO,IAAI,CAAC,OAAO,CACjB,6EAA6E,CAC9E,CAAC,GAAG,CAAC,UAAU,CAAuB,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * DatabaseService for OCR Provenance MCP System
3
+ *
4
+ * This file serves as a facade for backwards compatibility.
5
+ * All implementations have been modularized into src/services/storage/database/
6
+ *
7
+ * Provides all database operations for documents, OCR results, chunks,
8
+ * embeddings, and provenance records.
9
+ *
10
+ * Security: All SQL uses parameterized queries via db.prepare() (SEC-006)
11
+ * Performance: WAL mode, proper indexes, foreign key constraints
12
+ * Permissions: Database files created with mode 0o600 (SEC-003)
13
+ */
14
+ export type { DatabaseInfo, DatabaseStats, ListDocumentsOptions } from './database/index.js';
15
+ export { DatabaseErrorCode, DatabaseError, MigrationError, DatabaseService, } from './database/index.js';
16
+ //# sourceMappingURL=database.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../../src/services/storage/database.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC7F,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,eAAe,GAChB,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * DatabaseService for OCR Provenance MCP System
3
+ *
4
+ * This file serves as a facade for backwards compatibility.
5
+ * All implementations have been modularized into src/services/storage/database/
6
+ *
7
+ * Provides all database operations for documents, OCR results, chunks,
8
+ * embeddings, and provenance records.
9
+ *
10
+ * Security: All SQL uses parameterized queries via db.prepare() (SEC-006)
11
+ * Performance: WAL mode, proper indexes, foreign key constraints
12
+ * Permissions: Database files created with mode 0o600 (SEC-003)
13
+ */
14
+ export { DatabaseErrorCode, DatabaseError, MigrationError, DatabaseService, } from './database/index.js';
15
+ //# sourceMappingURL=database.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../../../src/services/storage/database.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,eAAe,GAChB,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Storage Service Module
3
+ *
4
+ * Provides database initialization, migrations, and storage operations
5
+ * for the OCR Provenance MCP System.
6
+ */
7
+ export { initializeDatabase, checkSchemaVersion, migrateToLatest, getCurrentSchemaVersion, verifySchema, MigrationError, } from './migrations.js';
8
+ export { DatabaseService, DatabaseError, DatabaseErrorCode, type DatabaseInfo, type DatabaseStats, type ListDocumentsOptions, } from './database.js';
9
+ export { VectorService, VectorError, type VectorSearchResult, type VectorSearchOptions, } from './vector.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/storage/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,uBAAuB,EACvB,YAAY,EACZ,cAAc,GACf,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,oBAAoB,GAC1B,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,aAAa,EACb,WAAW,EACX,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,GACzB,MAAM,aAAa,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Storage Service Module
3
+ *
4
+ * Provides database initialization, migrations, and storage operations
5
+ * for the OCR Provenance MCP System.
6
+ */
7
+ export { initializeDatabase, checkSchemaVersion, migrateToLatest, getCurrentSchemaVersion, verifySchema, MigrationError, } from './migrations.js';
8
+ export { DatabaseService, DatabaseError, DatabaseErrorCode, } from './database.js';
9
+ export { VectorService, VectorError, } from './vector.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/storage/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,uBAAuB,EACvB,YAAY,EACZ,cAAc,GACf,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,eAAe,EACf,aAAa,EACb,iBAAiB,GAIlB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,aAAa,EACb,WAAW,GAGZ,MAAM,aAAa,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Database Schema Migrations for OCR Provenance MCP System
3
+ *
4
+ * This module handles SQLite schema initialization and migrations.
5
+ * Uses better-sqlite3 with sqlite-vec extension for vector storage.
6
+ *
7
+ * Security: All SQL uses parameterized queries via db.prepare()
8
+ * Performance: WAL mode, proper indexes, foreign key constraints
9
+ *
10
+ * @module migrations
11
+ */
12
+ export { MigrationError } from './types.js';
13
+ export { initializeDatabase, migrateToLatest, checkSchemaVersion, getCurrentSchemaVersion, } from './operations.js';
14
+ export { configurePragmas } from './schema-helpers.js';
15
+ export { verifySchema } from './verification.js';
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/services/storage/migrations/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAG5C,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Database Schema Migrations for OCR Provenance MCP System
3
+ *
4
+ * This module handles SQLite schema initialization and migrations.
5
+ * Uses better-sqlite3 with sqlite-vec extension for vector storage.
6
+ *
7
+ * Security: All SQL uses parameterized queries via db.prepare()
8
+ * Performance: WAL mode, proper indexes, foreign key constraints
9
+ *
10
+ * @module migrations
11
+ */
12
+ // Re-export types
13
+ export { MigrationError } from './types.js';
14
+ // Re-export main operations
15
+ export { initializeDatabase, migrateToLatest, checkSchemaVersion, getCurrentSchemaVersion, } from './operations.js';
16
+ // Re-export schema helpers needed by static-operations
17
+ export { configurePragmas } from './schema-helpers.js';
18
+ // Re-export verification
19
+ export { verifySchema } from './verification.js';
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/services/storage/migrations/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,kBAAkB;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,4BAA4B;AAC5B,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,iBAAiB,CAAC;AAEzB,uDAAuD;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,yBAAyB;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Database Migration Operations
3
+ *
4
+ * Contains the main migration functions: initializeDatabase, migrateToLatest,
5
+ * checkSchemaVersion, and getCurrentSchemaVersion.
6
+ *
7
+ * @module migrations/operations
8
+ */
9
+ import type Database from 'better-sqlite3';
10
+ /**
11
+ * Check the current schema version of the database
12
+ * @param db - Database instance
13
+ * @returns Current schema version, or 0 if not initialized
14
+ */
15
+ export declare function checkSchemaVersion(db: Database.Database): number;
16
+ /**
17
+ * Get the current schema version constant
18
+ * @returns The current schema version number
19
+ */
20
+ export declare function getCurrentSchemaVersion(): number;
21
+ /**
22
+ * Initialize the database with all tables, indexes, and configuration
23
+ *
24
+ * This function is idempotent - safe to call multiple times.
25
+ * Creates tables only if they don't exist.
26
+ *
27
+ * @param db - Database instance from better-sqlite3
28
+ * @throws MigrationError if any operation fails
29
+ */
30
+ export declare function initializeDatabase(db: Database.Database): void;
31
+ /**
32
+ * Migrate database to the latest schema version
33
+ *
34
+ * Checks current version and applies any necessary migrations.
35
+ *
36
+ * @param db - Database instance from better-sqlite3
37
+ * @throws MigrationError if migration fails
38
+ */
39
+ export declare function migrateToLatest(db: Database.Database): void;
40
+ //# sourceMappingURL=operations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../../../src/services/storage/migrations/operations.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAsP3C;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAwBhE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAgC9D;AAizBD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAsM3D"}