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,250 @@
1
+ /**
2
+ * Form Fill MCP Tools
3
+ *
4
+ * Tools for filling forms using Datalab API.
5
+ *
6
+ * CRITICAL: NEVER use console.log() - stdout is reserved for JSON-RPC protocol.
7
+ * Use console.error() for all logging.
8
+ *
9
+ * @module tools/form-fill
10
+ */
11
+ import { z } from 'zod';
12
+ import { v4 as uuidv4 } from 'uuid';
13
+ import { formatResponse, handleError, fetchProvenanceChain, } from './shared.js';
14
+ import { validateInput, sanitizePath } from '../utils/validation.js';
15
+ import { requireDatabase } from '../server/state.js';
16
+ import { successResult } from '../server/types.js';
17
+ import { FormFillClient } from '../services/ocr/form-fill.js';
18
+ import { ProvenanceType } from '../models/provenance.js';
19
+ import { computeHash } from '../utils/hash.js';
20
+ /**
21
+ * Safely parse JSON from stored form fill data. Returns fallback on corrupt data
22
+ * instead of crashing the entire tool handler.
23
+ */
24
+ function safeJsonParse(json, fallback) {
25
+ if (!json)
26
+ return fallback;
27
+ try {
28
+ return JSON.parse(json);
29
+ }
30
+ catch (err) {
31
+ console.error(`[form-fill] Failed to parse stored JSON: ${err instanceof Error ? err.message : String(err)}`);
32
+ return fallback;
33
+ }
34
+ }
35
+ const FormFillInput = z.object({
36
+ file_path: z.string().min(1).describe('Path to form file (PDF or image)'),
37
+ field_data: z
38
+ .record(z.object({
39
+ value: z.string(),
40
+ description: z.string().optional(),
41
+ }))
42
+ .describe('Field names mapped to values and descriptions'),
43
+ context: z.string().optional().describe('Additional context for field matching'),
44
+ confidence_threshold: z
45
+ .number()
46
+ .min(0)
47
+ .max(1)
48
+ .default(0.5)
49
+ .describe('Confidence threshold (0-1)'),
50
+ page_range: z.string().optional().describe('Page range, 0-indexed'),
51
+ output_path: z.string().optional().describe('Path to save filled form PDF'),
52
+ });
53
+ const FormFillStatusInput = z.object({
54
+ form_fill_id: z.string().optional().describe('Specific form fill ID to retrieve'),
55
+ status_filter: z.enum(['pending', 'processing', 'complete', 'failed', 'all']).default('all'),
56
+ search_query: z
57
+ .string()
58
+ .optional()
59
+ .describe('Search form fills by field values, file path (LIKE match)'),
60
+ limit: z.number().int().min(1).max(100).default(50),
61
+ offset: z.number().int().min(0).default(0).describe('Offset for pagination'),
62
+ include_provenance: z
63
+ .boolean()
64
+ .default(false)
65
+ .describe('Include provenance chain when retrieving a specific form fill'),
66
+ });
67
+ async function handleFormFill(params) {
68
+ try {
69
+ const input = validateInput(FormFillInput, params);
70
+ const { db } = requireDatabase();
71
+ const client = new FormFillClient();
72
+ const safeFilePath = sanitizePath(input.file_path);
73
+ const result = await client.fillForm(safeFilePath, {
74
+ fieldData: input.field_data,
75
+ context: input.context,
76
+ confidenceThreshold: input.confidence_threshold,
77
+ pageRange: input.page_range,
78
+ });
79
+ // Save PDF to disk if output_path provided and we have output
80
+ if (input.output_path && result.outputBase64) {
81
+ const { writeFileSync, mkdirSync } = await import('fs');
82
+ const { dirname: dirPath } = await import('path');
83
+ const safeOutputPath = sanitizePath(input.output_path);
84
+ mkdirSync(dirPath(safeOutputPath), { recursive: true });
85
+ writeFileSync(safeOutputPath, Buffer.from(result.outputBase64, 'base64'));
86
+ console.error(`[INFO] Saved filled form to ${safeOutputPath}`);
87
+ }
88
+ // Create provenance record
89
+ const provId = uuidv4();
90
+ const now = new Date().toISOString();
91
+ const contentHash = computeHash(JSON.stringify({
92
+ fields_filled: result.fieldsFilled,
93
+ fields_not_found: result.fieldsNotFound,
94
+ }));
95
+ db.insertProvenance({
96
+ id: provId,
97
+ type: ProvenanceType.FORM_FILL,
98
+ created_at: now,
99
+ processed_at: now,
100
+ source_file_created_at: null,
101
+ source_file_modified_at: null,
102
+ source_type: 'FORM_FILL',
103
+ source_path: input.file_path,
104
+ source_id: null,
105
+ root_document_id: provId, // Self-referencing for standalone form fills
106
+ location: null,
107
+ content_hash: contentHash,
108
+ input_hash: result.sourceFileHash,
109
+ file_hash: result.sourceFileHash,
110
+ processor: 'datalab-form-fill',
111
+ processor_version: '1.0.0',
112
+ processing_params: {
113
+ field_count: Object.keys(input.field_data).length,
114
+ confidence_threshold: input.confidence_threshold,
115
+ has_context: !!input.context,
116
+ },
117
+ processing_duration_ms: result.processingDurationMs,
118
+ processing_quality_score: null,
119
+ parent_id: null,
120
+ parent_ids: JSON.stringify([]),
121
+ chain_depth: 0,
122
+ chain_path: JSON.stringify(['FORM_FILL']),
123
+ });
124
+ // Store in database
125
+ db.insertFormFill({
126
+ id: result.id,
127
+ source_file_path: result.sourceFilePath,
128
+ source_file_hash: result.sourceFileHash,
129
+ field_data_json: JSON.stringify(input.field_data),
130
+ context: input.context ?? null,
131
+ confidence_threshold: input.confidence_threshold ?? 0.5,
132
+ output_file_path: input.output_path ?? null,
133
+ output_base64: result.outputBase64,
134
+ fields_filled: JSON.stringify(result.fieldsFilled),
135
+ fields_not_found: JSON.stringify(result.fieldsNotFound),
136
+ page_count: result.pageCount,
137
+ cost_cents: result.costCents,
138
+ status: result.status,
139
+ error_message: result.error,
140
+ provenance_id: provId,
141
+ created_at: now,
142
+ });
143
+ const response = {
144
+ id: result.id,
145
+ status: result.status,
146
+ fields_filled: result.fieldsFilled,
147
+ fields_not_found: result.fieldsNotFound,
148
+ page_count: result.pageCount,
149
+ cost_cents: result.costCents,
150
+ output_saved: !!input.output_path,
151
+ provenance_id: provId,
152
+ processing_duration_ms: result.processingDurationMs,
153
+ };
154
+ return formatResponse(successResult({
155
+ ...response,
156
+ next_steps: [{ tool: 'ocr_form_fill_status', description: 'Check the form fill result' }],
157
+ }));
158
+ }
159
+ catch (error) {
160
+ return handleError(error);
161
+ }
162
+ }
163
+ async function handleFormFillStatus(params) {
164
+ try {
165
+ const input = validateInput(FormFillStatusInput, params);
166
+ const { db } = requireDatabase();
167
+ if (input.form_fill_id) {
168
+ const formFill = db.getFormFill(input.form_fill_id);
169
+ if (!formFill) {
170
+ throw new Error(`Form fill not found: ${input.form_fill_id}`);
171
+ }
172
+ const formFillResponse = {
173
+ form_fill: {
174
+ ...formFill,
175
+ // Parse JSON strings for display (safe parse handles corrupt stored data)
176
+ fields_filled: safeJsonParse(formFill.fields_filled, []),
177
+ fields_not_found: safeJsonParse(formFill.fields_not_found, []),
178
+ field_data: safeJsonParse(formFill.field_data_json, {}),
179
+ // Don't include base64 in status response
180
+ output_base64: formFill.output_base64 ? '[base64 data available]' : null,
181
+ },
182
+ };
183
+ if (input.include_provenance) {
184
+ formFillResponse.provenance_chain = fetchProvenanceChain(db, formFill.provenance_id, 'form-fill');
185
+ }
186
+ return formatResponse(successResult({
187
+ ...formFillResponse,
188
+ next_steps: [{ tool: 'ocr_form_fill', description: 'Submit another form fill operation' }, { tool: 'ocr_document_get', description: 'View the source document' }],
189
+ }));
190
+ }
191
+ // If search_query is provided, use search instead of list
192
+ if (input.search_query) {
193
+ const searchResults = db.searchFormFills(input.search_query, {
194
+ limit: input.limit,
195
+ offset: input.offset,
196
+ });
197
+ return formatResponse(successResult({
198
+ total: searchResults.length,
199
+ search_query: input.search_query,
200
+ form_fills: searchResults.map((ff) => ({
201
+ id: ff.id,
202
+ source_file_path: ff.source_file_path,
203
+ status: ff.status,
204
+ fields_filled: safeJsonParse(ff.fields_filled, []).length,
205
+ fields_not_found: safeJsonParse(ff.fields_not_found, []).length,
206
+ cost_cents: ff.cost_cents,
207
+ created_at: ff.created_at,
208
+ error_message: ff.error_message,
209
+ })),
210
+ next_steps: [{ tool: 'ocr_form_fill', description: 'Submit another form fill operation' }, { tool: 'ocr_document_get', description: 'View the source document' }],
211
+ }));
212
+ }
213
+ const statusFilter = input.status_filter === 'all' ? undefined : input.status_filter;
214
+ const formFills = db.listFormFills({
215
+ status: statusFilter,
216
+ limit: input.limit,
217
+ offset: input.offset,
218
+ });
219
+ return formatResponse(successResult({
220
+ total: formFills.length,
221
+ form_fills: formFills.map((ff) => ({
222
+ id: ff.id,
223
+ source_file_path: ff.source_file_path,
224
+ status: ff.status,
225
+ fields_filled: safeJsonParse(ff.fields_filled, []).length,
226
+ fields_not_found: safeJsonParse(ff.fields_not_found, []).length,
227
+ cost_cents: ff.cost_cents,
228
+ created_at: ff.created_at,
229
+ error_message: ff.error_message,
230
+ })),
231
+ next_steps: [{ tool: 'ocr_form_fill', description: 'Submit another form fill operation' }, { tool: 'ocr_document_get', description: 'View the source document' }],
232
+ }));
233
+ }
234
+ catch (error) {
235
+ return handleError(error);
236
+ }
237
+ }
238
+ export const formFillTools = {
239
+ ocr_form_fill: {
240
+ description: '[PROCESSING] Extract/fill key-value form fields via Datalab API. For forms, invoices, applications. Use ocr_extract_structured for page-schema extraction instead.',
241
+ inputSchema: FormFillInput.shape,
242
+ handler: handleFormFill,
243
+ },
244
+ ocr_form_fill_status: {
245
+ description: '[STATUS] Use to check status or retrieve details of past form fill operations. Returns form fill records with field data and status. Use after ocr_form_fill.',
246
+ inputSchema: FormFillStatusInput.shape,
247
+ handler: handleFormFillStatus,
248
+ },
249
+ };
250
+ //# sourceMappingURL=form-fill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-fill.js","sourceRoot":"","sources":["../../src/tools/form-fill.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Health Check MCP Tools
3
+ *
4
+ * Tools: ocr_health_check
5
+ *
6
+ * Detects data integrity gaps and optionally triggers fixes.
7
+ * Internal-only - no external API calls needed.
8
+ *
9
+ * CRITICAL: NEVER use console.log() - stdout is reserved for JSON-RPC protocol.
10
+ * Use console.error() for all logging.
11
+ *
12
+ * @module tools/health
13
+ */
14
+ import { type ToolDefinition } from './shared.js';
15
+ /**
16
+ * Health check tools collection for MCP server registration
17
+ */
18
+ export declare const healthTools: Record<string, ToolDefinition>;
19
+ //# sourceMappingURL=health.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/tools/health.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,OAAO,EAAkD,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AA4PlG;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAOtD,CAAC"}
@@ -0,0 +1,229 @@
1
+ /**
2
+ * Health Check MCP Tools
3
+ *
4
+ * Tools: ocr_health_check
5
+ *
6
+ * Detects data integrity gaps and optionally triggers fixes.
7
+ * Internal-only - no external API calls needed.
8
+ *
9
+ * CRITICAL: NEVER use console.log() - stdout is reserved for JSON-RPC protocol.
10
+ * Use console.error() for all logging.
11
+ *
12
+ * @module tools/health
13
+ */
14
+ import { z } from 'zod';
15
+ import { requireDatabase } from '../server/state.js';
16
+ import { successResult } from '../server/types.js';
17
+ import { validateInput } from '../utils/validation.js';
18
+ import { formatResponse, handleError } from './shared.js';
19
+ // ═══════════════════════════════════════════════════════════════════════════════
20
+ // INPUT SCHEMAS
21
+ // ═══════════════════════════════════════════════════════════════════════════════
22
+ const HealthCheckInput = z.object({
23
+ fix: z.boolean().default(false)
24
+ .describe('If true, trigger processing for fixable gaps (chunks without embeddings). Other gaps are reported but need manual intervention via specific tools.'),
25
+ });
26
+ // ═══════════════════════════════════════════════════════════════════════════════
27
+ // HANDLER: ocr_health_check
28
+ // ═══════════════════════════════════════════════════════════════════════════════
29
+ /**
30
+ * Handle ocr_health_check - Detect and optionally fix data integrity gaps
31
+ *
32
+ * Checks for:
33
+ * 1. Chunks without embeddings (fixable via embedding generation)
34
+ * 2. Documents without OCR results (non-pending status)
35
+ * 3. Images without VLM descriptions
36
+ * 4. Embeddings without vectors in vec_embeddings
37
+ * 5. Orphaned provenance records
38
+ */
39
+ async function handleHealthCheck(params) {
40
+ try {
41
+ const input = validateInput(HealthCheckInput, params);
42
+ const { db, vector } = requireDatabase();
43
+ const conn = db.getConnection();
44
+ const gaps = {};
45
+ const fixes = [];
46
+ const SAMPLE_LIMIT = 10;
47
+ // ──────────────────────────────────────────────────────────────
48
+ // Gap 1: Chunks without embeddings
49
+ // ──────────────────────────────────────────────────────────────
50
+ const chunksWithoutEmbeddings = conn.prepare(`SELECT c.id FROM chunks c
51
+ LEFT JOIN embeddings e ON e.chunk_id = c.id
52
+ WHERE e.id IS NULL AND c.embedding_status != 'complete'`).all();
53
+ gaps.chunks_without_embeddings = {
54
+ count: chunksWithoutEmbeddings.length,
55
+ sample_ids: chunksWithoutEmbeddings.slice(0, SAMPLE_LIMIT).map(r => r.id),
56
+ fixable: true,
57
+ fix_tool: 'ocr_process_pending',
58
+ fix_hint: 'Set fix=true to trigger embedding generation',
59
+ };
60
+ // Fix: Generate embeddings for chunks missing them
61
+ if (input.fix && chunksWithoutEmbeddings.length > 0) {
62
+ try {
63
+ const { getEmbeddingService } = await import('../services/embedding/embedder.js');
64
+ const embeddingService = getEmbeddingService();
65
+ // Get pending chunks (those with embedding_status != 'complete')
66
+ const pendingChunks = db.getPendingEmbeddingChunks(100);
67
+ if (pendingChunks.length > 0) {
68
+ // Group chunks by document for proper provenance
69
+ const chunksByDoc = new Map();
70
+ for (const chunk of pendingChunks) {
71
+ const existing = chunksByDoc.get(chunk.document_id);
72
+ if (existing) {
73
+ existing.push(chunk);
74
+ }
75
+ else {
76
+ chunksByDoc.set(chunk.document_id, [chunk]);
77
+ }
78
+ }
79
+ let totalEmbedded = 0;
80
+ for (const [docId, docChunks] of chunksByDoc.entries()) {
81
+ const doc = db.getDocument(docId);
82
+ if (!doc) {
83
+ console.error(`[HealthCheck] Document ${docId} not found, skipping ${docChunks.length} chunks`);
84
+ continue;
85
+ }
86
+ try {
87
+ const result = await embeddingService.embedDocumentChunks(db, vector, docChunks, {
88
+ documentId: doc.id,
89
+ filePath: doc.file_path,
90
+ fileName: doc.file_name,
91
+ fileHash: doc.file_hash,
92
+ documentProvenanceId: doc.provenance_id,
93
+ });
94
+ totalEmbedded += result.totalChunks;
95
+ }
96
+ catch (embedError) {
97
+ console.error(`[HealthCheck] Failed to embed chunks for ${docId}: ${String(embedError)}`);
98
+ fixes.push(`FAILED: Embedding generation for document ${docId}: ${String(embedError)}`);
99
+ }
100
+ }
101
+ if (totalEmbedded > 0) {
102
+ fixes.push(`Generated embeddings for ${totalEmbedded} chunks across ${chunksByDoc.size} documents`);
103
+ }
104
+ }
105
+ }
106
+ catch (serviceError) {
107
+ console.error(`[HealthCheck] Embedding service initialization failed: ${String(serviceError)}`);
108
+ fixes.push(`FAILED: Could not initialize embedding service: ${String(serviceError)}`);
109
+ }
110
+ }
111
+ // ──────────────────────────────────────────────────────────────
112
+ // Gap 2: Documents without OCR results (non-pending)
113
+ // ──────────────────────────────────────────────────────────────
114
+ const docsWithoutOCR = conn.prepare(`SELECT d.id FROM documents d
115
+ LEFT JOIN ocr_results o ON o.document_id = d.id
116
+ WHERE o.id IS NULL AND d.status NOT IN ('pending', 'processing')`).all();
117
+ gaps.documents_without_ocr = {
118
+ count: docsWithoutOCR.length,
119
+ sample_ids: docsWithoutOCR.slice(0, SAMPLE_LIMIT).map(r => r.id),
120
+ fixable: false,
121
+ fix_tool: 'ocr_retry_failed',
122
+ fix_hint: 'Use ocr_process_pending to process pending docs, or ocr_retry_failed for failed ones',
123
+ };
124
+ // ──────────────────────────────────────────────────────────────
125
+ // Gap 3: Images without VLM descriptions
126
+ // ──────────────────────────────────────────────────────────────
127
+ const imagesWithoutVLM = conn.prepare(`SELECT id FROM images
128
+ WHERE vlm_status IN ('pending', 'failed') OR vlm_status IS NULL`).all();
129
+ gaps.images_without_vlm = {
130
+ count: imagesWithoutVLM.length,
131
+ sample_ids: imagesWithoutVLM.slice(0, SAMPLE_LIMIT).map(r => r.id),
132
+ fixable: false,
133
+ fix_tool: 'ocr_vlm_process',
134
+ fix_hint: null,
135
+ };
136
+ // ──────────────────────────────────────────────────────────────
137
+ // Gap 4: Embeddings without vectors in vec_embeddings
138
+ // ──────────────────────────────────────────────────────────────
139
+ const embeddingsWithoutVectors = conn.prepare(`SELECT e.id FROM embeddings e
140
+ LEFT JOIN vec_embeddings v ON v.embedding_id = e.id
141
+ WHERE v.embedding_id IS NULL`).all();
142
+ gaps.embeddings_without_vectors = {
143
+ count: embeddingsWithoutVectors.length,
144
+ sample_ids: embeddingsWithoutVectors.slice(0, SAMPLE_LIMIT).map(r => r.id),
145
+ fixable: false,
146
+ fix_tool: 'ocr_embedding_rebuild',
147
+ fix_hint: 'Use include_vlm=true for VLM embeddings',
148
+ };
149
+ // ──────────────────────────────────────────────────────────────
150
+ // Gap 5: Orphaned provenance records
151
+ // Provenance records not referenced by any entity's provenance_id
152
+ // ──────────────────────────────────────────────────────────────
153
+ const orphanedProvenance = conn.prepare(`SELECT p.id FROM provenance p
154
+ WHERE p.type = 'DOCUMENT' AND p.id NOT IN (SELECT provenance_id FROM documents WHERE provenance_id IS NOT NULL)
155
+ UNION ALL
156
+ SELECT p.id FROM provenance p
157
+ WHERE p.type = 'OCR_RESULT' AND p.id NOT IN (SELECT provenance_id FROM ocr_results WHERE provenance_id IS NOT NULL)
158
+ UNION ALL
159
+ SELECT p.id FROM provenance p
160
+ WHERE p.type = 'CHUNK' AND p.id NOT IN (SELECT provenance_id FROM chunks WHERE provenance_id IS NOT NULL)
161
+ UNION ALL
162
+ SELECT p.id FROM provenance p
163
+ WHERE p.type = 'EMBEDDING' AND p.id NOT IN (SELECT provenance_id FROM embeddings WHERE provenance_id IS NOT NULL)
164
+ UNION ALL
165
+ SELECT p.id FROM provenance p
166
+ WHERE p.type = 'IMAGE' AND p.id NOT IN (SELECT provenance_id FROM images WHERE provenance_id IS NOT NULL)
167
+ LIMIT 100`).all();
168
+ gaps.orphaned_provenance = {
169
+ count: orphanedProvenance.length,
170
+ sample_ids: orphanedProvenance.slice(0, SAMPLE_LIMIT).map(r => r.id),
171
+ fixable: false,
172
+ fix_tool: null,
173
+ fix_hint: null,
174
+ };
175
+ // ──────────────────────────────────────────────────────────────
176
+ // Summary statistics
177
+ // ──────────────────────────────────────────────────────────────
178
+ const totalDocuments = conn.prepare('SELECT COUNT(*) as count FROM documents').get().count;
179
+ const totalChunks = conn.prepare('SELECT COUNT(*) as count FROM chunks').get().count;
180
+ const totalEmbeddings = conn.prepare('SELECT COUNT(*) as count FROM embeddings').get().count;
181
+ const totalImages = conn.prepare('SELECT COUNT(*) as count FROM images').get().count;
182
+ const totalGaps = Object.values(gaps).reduce((sum, g) => sum + g.count, 0);
183
+ const healthy = totalGaps === 0;
184
+ // Build dynamic next_steps based on gaps found
185
+ const nextSteps = [];
186
+ if (gaps.chunks_without_embeddings?.count > 0 || gaps.documents_without_ocr?.count > 0) {
187
+ nextSteps.push({ tool: 'ocr_process_pending', description: 'Process pending documents through the OCR pipeline' });
188
+ }
189
+ if (gaps.documents_without_ocr?.count > 0) {
190
+ nextSteps.push({ tool: 'ocr_retry_failed', description: 'Retry failed documents' });
191
+ }
192
+ if (gaps.images_without_vlm?.count > 0) {
193
+ nextSteps.push({ tool: 'ocr_vlm_process', description: 'Generate VLM descriptions for images without them' });
194
+ }
195
+ if (nextSteps.length === 0 && healthy) {
196
+ nextSteps.push({ tool: 'ocr_search', description: 'Search across all documents' });
197
+ }
198
+ return formatResponse(successResult({
199
+ healthy,
200
+ total_gaps: totalGaps,
201
+ gaps,
202
+ fixes_applied: fixes.length > 0 ? fixes : undefined,
203
+ summary: {
204
+ total_documents: totalDocuments,
205
+ total_chunks: totalChunks,
206
+ total_embeddings: totalEmbeddings,
207
+ total_images: totalImages,
208
+ },
209
+ next_steps: nextSteps,
210
+ }));
211
+ }
212
+ catch (error) {
213
+ return handleError(error);
214
+ }
215
+ }
216
+ // ═══════════════════════════════════════════════════════════════════════════════
217
+ // TOOL DEFINITIONS EXPORT
218
+ // ═══════════════════════════════════════════════════════════════════════════════
219
+ /**
220
+ * Health check tools collection for MCP server registration
221
+ */
222
+ export const healthTools = {
223
+ ocr_health_check: {
224
+ description: '[ESSENTIAL] Diagnose data integrity issues: missing embeddings, orphaned provenance, VLM gaps. Set fix=true to auto-repair.',
225
+ inputSchema: HealthCheckInput.shape,
226
+ handler: handleHealthCheck,
227
+ },
228
+ };
229
+ //# sourceMappingURL=health.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/tools/health.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Image Extraction and Management MCP Tools
3
+ *
4
+ * Tools for extracting images from PDFs and managing image records in the database.
5
+ * Uses PyMuPDF for extraction and integrates with VLM pipeline.
6
+ *
7
+ * CRITICAL: NEVER use console.log() - stdout is reserved for JSON-RPC protocol.
8
+ * Use console.error() for all logging.
9
+ *
10
+ * @module tools/images
11
+ */
12
+ import { type ToolResponse, type ToolDefinition } from './shared.js';
13
+ /**
14
+ * Handle ocr_image_list - List all images in a document
15
+ */
16
+ export declare function handleImageList(params: Record<string, unknown>): Promise<ToolResponse>;
17
+ /**
18
+ * Handle ocr_image_get - Get details of a specific image
19
+ */
20
+ export declare function handleImageGet(params: Record<string, unknown>): Promise<ToolResponse>;
21
+ /**
22
+ * Handle ocr_image_stats - Get image processing statistics
23
+ */
24
+ export declare function handleImageStats(params: Record<string, unknown>): Promise<ToolResponse>;
25
+ /**
26
+ * Handle ocr_image_delete - Delete images by image_id (single) or document_id (all for document)
27
+ *
28
+ * Must provide exactly one of image_id or document_id. Requires confirm=true.
29
+ */
30
+ export declare function handleImageDelete(params: Record<string, unknown>): Promise<ToolResponse>;
31
+ /**
32
+ * Handle ocr_image_reset_failed - Reset failed and stuck processing images to pending status
33
+ */
34
+ export declare function handleImageResetFailed(params: Record<string, unknown>): Promise<ToolResponse>;
35
+ /**
36
+ * Handle ocr_image_search - Search images by keyword filters or semantic similarity
37
+ *
38
+ * mode=keyword: SQL LIKE search on VLM descriptions and metadata filters
39
+ * mode=semantic: Vector similarity search on VLM embeddings
40
+ */
41
+ export declare function handleImageSearch(params: Record<string, unknown>): Promise<ToolResponse>;
42
+ /**
43
+ * Handle ocr_image_pending - Get images pending VLM processing
44
+ */
45
+ export declare function handleImagePending(params: Record<string, unknown>): Promise<ToolResponse>;
46
+ /**
47
+ * Handle ocr_image_reanalyze - Re-run VLM analysis on a specific image with optional custom prompt
48
+ */
49
+ export declare function handleImageReanalyze(params: Record<string, unknown>): Promise<ToolResponse>;
50
+ /**
51
+ * Image tools collection for MCP server registration
52
+ */
53
+ export declare const imageTools: Record<string, ToolDefinition>;
54
+ //# sourceMappingURL=images.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"images.d.ts","sourceRoot":"","sources":["../../src/tools/images.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAQH,OAAO,EAAqD,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AA8ExH;;GAEG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAuD5F;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAmD3F;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CA8B7F;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAwE9F;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,YAAY,CAAC,CAyBvB;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAuL9F;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CA+B/F;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAuMjG;AAMD;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAqGrD,CAAC"}