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,89 @@
1
+ /**
2
+ * Document Lock Operations
3
+ *
4
+ * Provides database operations for document-level locking to prevent
5
+ * concurrent edits. Supports exclusive and shared lock types with
6
+ * automatic expiry via TTL.
7
+ *
8
+ * CRITICAL: NEVER use console.log() - stdout is reserved for JSON-RPC protocol.
9
+ *
10
+ * @module database/lock-operations
11
+ */
12
+ // ═══════════════════════════════════════════════════════════════════════════════
13
+ // LOCK OPERATIONS
14
+ // ═══════════════════════════════════════════════════════════════════════════════
15
+ /**
16
+ * Acquire a lock on a document.
17
+ *
18
+ * Exclusive locks prevent any other lock. Shared locks allow other shared
19
+ * locks but block exclusive locks. Expired locks are cleaned up first.
20
+ *
21
+ * @param conn - Database connection
22
+ * @param params - Lock parameters
23
+ * @returns The acquired lock row
24
+ * @throws Error if document not found or lock conflict
25
+ */
26
+ export function acquireLock(conn, params) {
27
+ // Validate document exists
28
+ const doc = conn.prepare('SELECT id FROM documents WHERE id = ?').get(params.document_id);
29
+ if (!doc) {
30
+ throw new Error(`Document not found: ${params.document_id}`);
31
+ }
32
+ // Clean expired locks first
33
+ conn.prepare(`DELETE FROM document_locks WHERE expires_at < datetime('now')`).run();
34
+ // Check for existing lock
35
+ const existing = conn.prepare('SELECT * FROM document_locks WHERE document_id = ?').get(params.document_id);
36
+ if (existing) {
37
+ // Same user can re-acquire their own lock
38
+ if (existing.user_id === params.user_id) {
39
+ // Update existing lock
40
+ const ttlMinutes = params.ttl_minutes ?? 30;
41
+ conn.prepare(`
42
+ UPDATE document_locks
43
+ SET session_id = ?, lock_type = ?, reason = ?, acquired_at = datetime('now'), expires_at = datetime('now', '+' || ? || ' minutes')
44
+ WHERE document_id = ?
45
+ `).run(params.session_id, params.lock_type, params.reason ?? null, ttlMinutes, params.document_id);
46
+ return conn.prepare('SELECT * FROM document_locks WHERE document_id = ?').get(params.document_id);
47
+ }
48
+ if (existing.lock_type === 'exclusive') {
49
+ throw new Error(`Document ${params.document_id} is exclusively locked by user ${existing.user_id} until ${existing.expires_at}`);
50
+ }
51
+ if (params.lock_type === 'exclusive') {
52
+ throw new Error(`Cannot acquire exclusive lock: document ${params.document_id} has a shared lock by user ${existing.user_id}`);
53
+ }
54
+ }
55
+ const ttlMinutes = params.ttl_minutes ?? 30;
56
+ conn.prepare(`
57
+ INSERT OR REPLACE INTO document_locks (document_id, user_id, session_id, lock_type, reason, acquired_at, expires_at)
58
+ VALUES (?, ?, ?, ?, ?, datetime('now'), datetime('now', '+' || ? || ' minutes'))
59
+ `).run(params.document_id, params.user_id, params.session_id, params.lock_type, params.reason ?? null, ttlMinutes);
60
+ return conn.prepare('SELECT * FROM document_locks WHERE document_id = ?').get(params.document_id);
61
+ }
62
+ /**
63
+ * Release a lock on a document.
64
+ *
65
+ * @param conn - Database connection
66
+ * @param documentId - Document ID
67
+ * @throws Error if no lock found
68
+ */
69
+ export function releaseLock(conn, documentId) {
70
+ const existing = conn.prepare('SELECT * FROM document_locks WHERE document_id = ?').get(documentId);
71
+ if (!existing) {
72
+ throw new Error(`No lock found for document: ${documentId}`);
73
+ }
74
+ conn.prepare('DELETE FROM document_locks WHERE document_id = ?').run(documentId);
75
+ }
76
+ /**
77
+ * Get the current lock status for a document.
78
+ * Cleans up expired locks before checking.
79
+ *
80
+ * @param conn - Database connection
81
+ * @param documentId - Document ID
82
+ * @returns Lock row or null if no active lock
83
+ */
84
+ export function getLockStatus(conn, documentId) {
85
+ // Clean expired locks first
86
+ conn.prepare(`DELETE FROM document_locks WHERE expires_at < datetime('now')`).run();
87
+ return conn.prepare('SELECT * FROM document_locks WHERE document_id = ?').get(documentId) ?? null;
88
+ }
89
+ //# sourceMappingURL=lock-operations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lock-operations.js","sourceRoot":"","sources":["../../../../src/services/storage/database/lock-operations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Obligation Operations for DatabaseService
3
+ *
4
+ * Provides CRUD and query operations for the obligations table.
5
+ * Obligations track contract deadlines, deliverables, and compliance items.
6
+ *
7
+ * @module database/obligation-operations
8
+ */
9
+ import type Database from 'better-sqlite3';
10
+ export interface Obligation {
11
+ id: string;
12
+ document_id: string;
13
+ extraction_id: string | null;
14
+ obligation_type: string;
15
+ description: string;
16
+ responsible_party: string | null;
17
+ due_date: string | null;
18
+ recurring: string | null;
19
+ status: string;
20
+ source_chunk_id: string | null;
21
+ source_page: number | null;
22
+ confidence: number;
23
+ created_at: string;
24
+ metadata_json: string;
25
+ }
26
+ export declare const OBLIGATION_TYPES: readonly ["payment", "delivery", "notification", "renewal", "termination", "compliance", "reporting", "approval", "other"];
27
+ export declare const OBLIGATION_STATUSES: readonly ["active", "fulfilled", "overdue", "waived", "expired"];
28
+ export type ObligationType = (typeof OBLIGATION_TYPES)[number];
29
+ export type ObligationStatus = (typeof OBLIGATION_STATUSES)[number];
30
+ export interface CreateObligationParams {
31
+ document_id: string;
32
+ extraction_id?: string | null;
33
+ obligation_type: ObligationType;
34
+ description: string;
35
+ responsible_party?: string | null;
36
+ due_date?: string | null;
37
+ recurring?: string | null;
38
+ status?: ObligationStatus;
39
+ source_chunk_id?: string | null;
40
+ source_page?: number | null;
41
+ confidence?: number;
42
+ metadata_json?: string;
43
+ }
44
+ export interface ListObligationsFilters {
45
+ document_id?: string;
46
+ obligation_type?: ObligationType;
47
+ status?: ObligationStatus;
48
+ due_before?: string;
49
+ due_after?: string;
50
+ responsible_party?: string;
51
+ limit?: number;
52
+ offset?: number;
53
+ }
54
+ export interface CalendarOptions {
55
+ months_ahead?: number;
56
+ status?: ObligationStatus;
57
+ document_id?: string;
58
+ }
59
+ export interface CalendarMonth {
60
+ month: string;
61
+ obligations: Obligation[];
62
+ }
63
+ /**
64
+ * Create a new obligation
65
+ */
66
+ export declare function createObligation(db: Database.Database, params: CreateObligationParams): Obligation;
67
+ /**
68
+ * List obligations with optional filters
69
+ */
70
+ export declare function listObligations(db: Database.Database, filters: ListObligationsFilters): {
71
+ obligations: Obligation[];
72
+ total: number;
73
+ };
74
+ /**
75
+ * Update obligation status
76
+ * @throws Error if obligation not found
77
+ */
78
+ export declare function updateObligationStatus(db: Database.Database, id: string, status: ObligationStatus, reason?: string): Obligation;
79
+ /**
80
+ * Get obligations grouped by month for calendar view
81
+ */
82
+ export declare function getObligationCalendar(db: Database.Database, options: CalendarOptions): CalendarMonth[];
83
+ /**
84
+ * Mark active obligations with past due dates as overdue
85
+ * @returns Number of obligations marked overdue
86
+ */
87
+ export declare function markOverdueObligations(db: Database.Database): number;
88
+ //# sourceMappingURL=obligation-operations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"obligation-operations.d.ts","sourceRoot":"","sources":["../../../../src/services/storage/database/obligation-operations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,206 @@
1
+ /**
2
+ * Obligation Operations for DatabaseService
3
+ *
4
+ * Provides CRUD and query operations for the obligations table.
5
+ * Obligations track contract deadlines, deliverables, and compliance items.
6
+ *
7
+ * @module database/obligation-operations
8
+ */
9
+ import { v4 as uuidv4 } from 'uuid';
10
+ export const OBLIGATION_TYPES = [
11
+ 'payment', 'delivery', 'notification', 'renewal',
12
+ 'termination', 'compliance', 'reporting', 'approval', 'other',
13
+ ];
14
+ export const OBLIGATION_STATUSES = [
15
+ 'active', 'fulfilled', 'overdue', 'waived', 'expired',
16
+ ];
17
+ // =============================================================================
18
+ // CREATE
19
+ // =============================================================================
20
+ /**
21
+ * Create a new obligation
22
+ */
23
+ export function createObligation(db, params) {
24
+ const id = uuidv4();
25
+ const now = new Date().toISOString();
26
+ db.prepare(`
27
+ INSERT INTO obligations (id, document_id, extraction_id, obligation_type, description,
28
+ responsible_party, due_date, recurring, status, source_chunk_id, source_page,
29
+ confidence, created_at, metadata_json)
30
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
31
+ `).run(id, params.document_id, params.extraction_id ?? null, params.obligation_type, params.description, params.responsible_party ?? null, params.due_date ?? null, params.recurring ?? null, params.status ?? 'active', params.source_chunk_id ?? null, params.source_page ?? null, params.confidence ?? 1.0, now, params.metadata_json ?? '{}');
32
+ return {
33
+ id,
34
+ document_id: params.document_id,
35
+ extraction_id: params.extraction_id ?? null,
36
+ obligation_type: params.obligation_type,
37
+ description: params.description,
38
+ responsible_party: params.responsible_party ?? null,
39
+ due_date: params.due_date ?? null,
40
+ recurring: params.recurring ?? null,
41
+ status: params.status ?? 'active',
42
+ source_chunk_id: params.source_chunk_id ?? null,
43
+ source_page: params.source_page ?? null,
44
+ confidence: params.confidence ?? 1.0,
45
+ created_at: now,
46
+ metadata_json: params.metadata_json ?? '{}',
47
+ };
48
+ }
49
+ // =============================================================================
50
+ // LIST WITH FILTERS
51
+ // =============================================================================
52
+ /**
53
+ * List obligations with optional filters
54
+ */
55
+ export function listObligations(db, filters) {
56
+ const conditions = [];
57
+ const queryParams = [];
58
+ if (filters.document_id) {
59
+ conditions.push('o.document_id = ?');
60
+ queryParams.push(filters.document_id);
61
+ }
62
+ if (filters.obligation_type) {
63
+ conditions.push('o.obligation_type = ?');
64
+ queryParams.push(filters.obligation_type);
65
+ }
66
+ if (filters.status) {
67
+ conditions.push('o.status = ?');
68
+ queryParams.push(filters.status);
69
+ }
70
+ if (filters.due_before) {
71
+ conditions.push('o.due_date IS NOT NULL AND o.due_date <= ?');
72
+ queryParams.push(filters.due_before);
73
+ }
74
+ if (filters.due_after) {
75
+ conditions.push('o.due_date IS NOT NULL AND o.due_date >= ?');
76
+ queryParams.push(filters.due_after);
77
+ }
78
+ if (filters.responsible_party) {
79
+ conditions.push('o.responsible_party = ?');
80
+ queryParams.push(filters.responsible_party);
81
+ }
82
+ const whereClause = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : '';
83
+ const countRow = db.prepare(`SELECT COUNT(*) as cnt FROM obligations o ${whereClause}`).get(...queryParams);
84
+ const limit = filters.limit ?? 50;
85
+ const offset = filters.offset ?? 0;
86
+ const obligations = db.prepare(`
87
+ SELECT o.* FROM obligations o
88
+ ${whereClause}
89
+ ORDER BY o.due_date ASC NULLS LAST, o.created_at DESC
90
+ LIMIT ? OFFSET ?
91
+ `).all(...queryParams, limit, offset);
92
+ return { obligations, total: countRow.cnt };
93
+ }
94
+ // =============================================================================
95
+ // UPDATE STATUS
96
+ // =============================================================================
97
+ /**
98
+ * Update obligation status
99
+ * @throws Error if obligation not found
100
+ */
101
+ export function updateObligationStatus(db, id, status, reason) {
102
+ const existing = db.prepare('SELECT * FROM obligations WHERE id = ?').get(id);
103
+ if (!existing) {
104
+ throw new Error(`Obligation not found: ${id}`);
105
+ }
106
+ // Update metadata with status change reason if provided
107
+ let metadata = {};
108
+ try {
109
+ metadata = JSON.parse(existing.metadata_json || '{}');
110
+ }
111
+ catch {
112
+ metadata = {};
113
+ }
114
+ if (reason) {
115
+ const statusHistory = metadata.status_history ?? [];
116
+ statusHistory.push({
117
+ from: existing.status,
118
+ to: status,
119
+ reason,
120
+ changed_at: new Date().toISOString(),
121
+ });
122
+ metadata.status_history = statusHistory;
123
+ }
124
+ db.prepare(`
125
+ UPDATE obligations SET status = ?, metadata_json = ? WHERE id = ?
126
+ `).run(status, JSON.stringify(metadata), id);
127
+ return {
128
+ ...existing,
129
+ status,
130
+ metadata_json: JSON.stringify(metadata),
131
+ };
132
+ }
133
+ // =============================================================================
134
+ // CALENDAR VIEW
135
+ // =============================================================================
136
+ /**
137
+ * Get obligations grouped by month for calendar view
138
+ */
139
+ export function getObligationCalendar(db, options) {
140
+ const monthsAhead = options.months_ahead ?? 3;
141
+ const now = new Date();
142
+ const endDate = new Date(now);
143
+ endDate.setMonth(endDate.getMonth() + monthsAhead);
144
+ const conditions = [
145
+ 'o.due_date IS NOT NULL',
146
+ 'o.due_date >= ?',
147
+ 'o.due_date <= ?',
148
+ ];
149
+ const queryParams = [
150
+ now.toISOString(),
151
+ endDate.toISOString(),
152
+ ];
153
+ if (options.status) {
154
+ conditions.push('o.status = ?');
155
+ queryParams.push(options.status);
156
+ }
157
+ if (options.document_id) {
158
+ conditions.push('o.document_id = ?');
159
+ queryParams.push(options.document_id);
160
+ }
161
+ const whereClause = `WHERE ${conditions.join(' AND ')}`;
162
+ const obligations = db.prepare(`
163
+ SELECT o.* FROM obligations o
164
+ ${whereClause}
165
+ ORDER BY o.due_date ASC
166
+ `).all(...queryParams);
167
+ // Group by month
168
+ const monthMap = new Map();
169
+ for (const ob of obligations) {
170
+ if (!ob.due_date)
171
+ continue;
172
+ const month = ob.due_date.substring(0, 7); // YYYY-MM
173
+ const existing = monthMap.get(month);
174
+ if (existing) {
175
+ existing.push(ob);
176
+ }
177
+ else {
178
+ monthMap.set(month, [ob]);
179
+ }
180
+ }
181
+ // Convert to sorted array
182
+ const result = [];
183
+ for (const [month, obs] of monthMap.entries()) {
184
+ result.push({ month, obligations: obs });
185
+ }
186
+ result.sort((a, b) => a.month.localeCompare(b.month));
187
+ return result;
188
+ }
189
+ // =============================================================================
190
+ // MARK OVERDUE
191
+ // =============================================================================
192
+ /**
193
+ * Mark active obligations with past due dates as overdue
194
+ * @returns Number of obligations marked overdue
195
+ */
196
+ export function markOverdueObligations(db) {
197
+ const result = db.prepare(`
198
+ UPDATE obligations
199
+ SET status = 'overdue'
200
+ WHERE due_date < datetime('now')
201
+ AND status = 'active'
202
+ AND due_date IS NOT NULL
203
+ `).run();
204
+ return result.changes;
205
+ }
206
+ //# sourceMappingURL=obligation-operations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"obligation-operations.js","sourceRoot":"","sources":["../../../../src/services/storage/database/obligation-operations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * OCR Result operations for DatabaseService
3
+ *
4
+ * Handles all CRUD operations for OCR results.
5
+ */
6
+ import Database from 'better-sqlite3';
7
+ import { OCRResult } from '../../../models/document.js';
8
+ /**
9
+ * Insert an OCR result
10
+ *
11
+ * @param db - Database connection
12
+ * @param result - OCR result data
13
+ * @param updateMetadataCounts - Callback to update metadata counts
14
+ * @returns string - The OCR result ID
15
+ */
16
+ export declare function insertOCRResult(db: Database.Database, result: OCRResult, updateMetadataCounts: () => void): string;
17
+ /**
18
+ * Get an OCR result by ID
19
+ *
20
+ * @param db - Database connection
21
+ * @param id - OCR result ID
22
+ * @returns OCRResult | null - The OCR result or null if not found
23
+ */
24
+ export declare function getOCRResult(db: Database.Database, id: string): OCRResult | null;
25
+ /**
26
+ * Get OCR result by document ID
27
+ *
28
+ * @param db - Database connection
29
+ * @param documentId - Document ID
30
+ * @returns OCRResult | null - The OCR result or null if not found
31
+ */
32
+ export declare function getOCRResultByDocumentId(db: Database.Database, documentId: string): OCRResult | null;
33
+ //# sourceMappingURL=ocr-operations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ocr-operations.d.ts","sourceRoot":"","sources":["../../../../src/services/storage/database/ocr-operations.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAKxD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,MAAM,EAAE,SAAS,EACjB,oBAAoB,EAAE,MAAM,IAAI,GAC/B,MAAM,CAmCR;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAIhF;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,UAAU,EAAE,MAAM,GACjB,SAAS,GAAG,IAAI,CAIlB"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * OCR Result operations for DatabaseService
3
+ *
4
+ * Handles all CRUD operations for OCR results.
5
+ */
6
+ import { runWithForeignKeyCheck } from './helpers.js';
7
+ import { rowToOCRResult } from './converters.js';
8
+ /**
9
+ * Insert an OCR result
10
+ *
11
+ * @param db - Database connection
12
+ * @param result - OCR result data
13
+ * @param updateMetadataCounts - Callback to update metadata counts
14
+ * @returns string - The OCR result ID
15
+ */
16
+ export function insertOCRResult(db, result, updateMetadataCounts) {
17
+ const stmt = db.prepare(`
18
+ INSERT INTO ocr_results (
19
+ id, provenance_id, document_id, extracted_text, text_length,
20
+ datalab_request_id, datalab_mode, parse_quality_score, page_count,
21
+ cost_cents, content_hash, processing_started_at, processing_completed_at,
22
+ processing_duration_ms, json_blocks, extras_json
23
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
24
+ `);
25
+ runWithForeignKeyCheck(stmt, [
26
+ result.id,
27
+ result.provenance_id,
28
+ result.document_id,
29
+ result.extracted_text,
30
+ result.text_length,
31
+ result.datalab_request_id,
32
+ result.datalab_mode,
33
+ result.parse_quality_score,
34
+ result.page_count,
35
+ result.cost_cents,
36
+ result.content_hash,
37
+ result.processing_started_at,
38
+ result.processing_completed_at,
39
+ result.processing_duration_ms,
40
+ result.json_blocks ?? null,
41
+ result.extras_json ?? null,
42
+ ], `inserting OCR result: document_id "${result.document_id}" or provenance_id "${result.provenance_id}" does not exist`);
43
+ updateMetadataCounts();
44
+ return result.id;
45
+ }
46
+ /**
47
+ * Get an OCR result by ID
48
+ *
49
+ * @param db - Database connection
50
+ * @param id - OCR result ID
51
+ * @returns OCRResult | null - The OCR result or null if not found
52
+ */
53
+ export function getOCRResult(db, id) {
54
+ const stmt = db.prepare('SELECT * FROM ocr_results WHERE id = ?');
55
+ const row = stmt.get(id);
56
+ return row ? rowToOCRResult(row) : null;
57
+ }
58
+ /**
59
+ * Get OCR result by document ID
60
+ *
61
+ * @param db - Database connection
62
+ * @param documentId - Document ID
63
+ * @returns OCRResult | null - The OCR result or null if not found
64
+ */
65
+ export function getOCRResultByDocumentId(db, documentId) {
66
+ const stmt = db.prepare('SELECT * FROM ocr_results WHERE document_id = ?');
67
+ const row = stmt.get(documentId);
68
+ return row ? rowToOCRResult(row) : null;
69
+ }
70
+ //# sourceMappingURL=ocr-operations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ocr-operations.js","sourceRoot":"","sources":["../../../../src/services/storage/database/ocr-operations.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAC7B,EAAqB,EACrB,MAAiB,EACjB,oBAAgC;IAEhC,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;;GAOvB,CAAC,CAAC;IAEH,sBAAsB,CACpB,IAAI,EACJ;QACE,MAAM,CAAC,EAAE;QACT,MAAM,CAAC,aAAa;QACpB,MAAM,CAAC,WAAW;QAClB,MAAM,CAAC,cAAc;QACrB,MAAM,CAAC,WAAW;QAClB,MAAM,CAAC,kBAAkB;QACzB,MAAM,CAAC,YAAY;QACnB,MAAM,CAAC,mBAAmB;QAC1B,MAAM,CAAC,UAAU;QACjB,MAAM,CAAC,UAAU;QACjB,MAAM,CAAC,YAAY;QACnB,MAAM,CAAC,qBAAqB;QAC5B,MAAM,CAAC,uBAAuB;QAC9B,MAAM,CAAC,sBAAsB;QAC7B,MAAM,CAAC,WAAW,IAAI,IAAI;QAC1B,MAAM,CAAC,WAAW,IAAI,IAAI;KAC3B,EACD,sCAAsC,MAAM,CAAC,WAAW,uBAAuB,MAAM,CAAC,aAAa,kBAAkB,CACtH,CAAC;IAEF,oBAAoB,EAAE,CAAC;IACvB,OAAO,MAAM,CAAC,EAAE,CAAC;AACnB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,EAAqB,EAAE,EAAU;IAC5D,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC;IAClE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAA6B,CAAC;IACrD,OAAO,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CACtC,EAAqB,EACrB,UAAkB;IAElB,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,iDAAiD,CAAC,CAAC;IAC3E,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAA6B,CAAC;IAC7D,OAAO,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Playbook Operations for DatabaseService
3
+ *
4
+ * Provides CRUD operations for the playbooks table and clause comparison.
5
+ * Playbooks define preferred contract terms for deviation detection.
6
+ *
7
+ * @module database/playbook-operations
8
+ */
9
+ import type Database from 'better-sqlite3';
10
+ import type { ContractClause } from '../../clm/contract-schemas.js';
11
+ export type { ContractClause };
12
+ export interface Playbook {
13
+ id: string;
14
+ name: string;
15
+ description: string | null;
16
+ clauses_json: string;
17
+ created_at: string;
18
+ updated_at: string;
19
+ created_by: string | null;
20
+ }
21
+ export interface PlaybookWithClauses extends Omit<Playbook, 'clauses_json'> {
22
+ clauses: ContractClause[];
23
+ }
24
+ export interface ClauseComparisonResult {
25
+ clause_name: string;
26
+ severity: 'critical' | 'major' | 'minor';
27
+ status: 'match' | 'alternative_match' | 'deviation' | 'missing';
28
+ preferred_text: string;
29
+ matched_text: string | null;
30
+ matched_chunk_id: string | null;
31
+ matched_page: number | null;
32
+ details: string;
33
+ }
34
+ export interface PlaybookComparisonResult {
35
+ playbook_id: string;
36
+ playbook_name: string;
37
+ document_id: string;
38
+ total_clauses: number;
39
+ matches: number;
40
+ alternative_matches: number;
41
+ deviations: number;
42
+ missing: number;
43
+ compliance_score: number;
44
+ clause_results: ClauseComparisonResult[];
45
+ }
46
+ /**
47
+ * Create a new playbook with clauses
48
+ */
49
+ export declare function createPlaybook(db: Database.Database, params: {
50
+ name: string;
51
+ description?: string | null;
52
+ clauses: ContractClause[];
53
+ created_by?: string | null;
54
+ }): PlaybookWithClauses;
55
+ /**
56
+ * Get a playbook by ID
57
+ * @throws Error if not found
58
+ */
59
+ export declare function getPlaybook(db: Database.Database, id: string): PlaybookWithClauses;
60
+ /**
61
+ * List all playbooks
62
+ */
63
+ export declare function listPlaybooks(db: Database.Database): PlaybookWithClauses[];
64
+ /**
65
+ * Compare document text against a playbook's clauses.
66
+ *
67
+ * For each clause in the playbook, searches the document's chunks for matching
68
+ * content using simple text matching (case-insensitive indexOf). Returns
69
+ * deviations where neither preferred text nor alternatives are found.
70
+ */
71
+ export declare function compareWithPlaybook(db: Database.Database, documentId: string, playbookId: string): PlaybookComparisonResult;
72
+ //# sourceMappingURL=playbook-operations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playbook-operations.d.ts","sourceRoot":"","sources":["../../../../src/services/storage/database/playbook-operations.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAEpE,YAAY,EAAE,cAAc,EAAE,CAAC;AAE/B,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;IACzE,OAAO,EAAE,cAAc,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,UAAU,GAAG,OAAO,GAAG,OAAO,CAAC;IACzC,MAAM,EAAE,OAAO,GAAG,mBAAmB,GAAG,WAAW,GAAG,SAAS,CAAC;IAChE,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,sBAAsB,EAAE,CAAC;CAC1C;AAMD;;GAEG;AACH,wBAAgB,cAAc,CAC5B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,MAAM,EAAE;IACN,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,GACA,mBAAmB,CA2BrB;AAMD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,mBAAmB,CAsBlF;AAMD;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,mBAAmB,EAAE,CAsB1E;AAMD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,wBAAwB,CA8D1B"}