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,19 @@
1
+ /**
2
+ * Configuration Management MCP Tools
3
+ *
4
+ * NEW tools created for Task 22.
5
+ * Tools: ocr_config_get, ocr_config_set
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/config
11
+ */
12
+ import { type ToolResponse, type ToolDefinition } from './shared.js';
13
+ export declare function handleConfigGet(params: Record<string, unknown>): Promise<ToolResponse>;
14
+ export declare function handleConfigSet(params: Record<string, unknown>): Promise<ToolResponse>;
15
+ /**
16
+ * Config tools collection for MCP server registration
17
+ */
18
+ export declare const configTools: Record<string, ToolDefinition>;
19
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/tools/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAQH,OAAO,EAA+B,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAwGlG,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAgD5F;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAsC5F;AASD;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAgBtD,CAAC"}
@@ -0,0 +1,213 @@
1
+ /**
2
+ * Configuration Management MCP Tools
3
+ *
4
+ * NEW tools created for Task 22.
5
+ * Tools: ocr_config_get, ocr_config_set
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/config
11
+ */
12
+ import { z } from 'zod';
13
+ import { state, getConfig, updateConfig, hasDatabase, requireDatabase } from '../server/state.js';
14
+ import { persistConfigValue } from '../utils/config-persistence.js';
15
+ import { successResult } from '../server/types.js';
16
+ import { validateInput, ConfigGetInput, ConfigSetInput, ConfigKey } from '../utils/validation.js';
17
+ import { validationError } from '../server/errors.js';
18
+ import { formatResponse, handleError } from './shared.js';
19
+ // ═══════════════════════════════════════════════════════════════════════════════
20
+ // CONSTANTS
21
+ // ═══════════════════════════════════════════════════════════════════════════════
22
+ /** Map config keys to their state property names */
23
+ const CONFIG_KEY_MAP = {
24
+ datalab_default_mode: 'defaultOCRMode',
25
+ datalab_max_concurrent: 'maxConcurrent',
26
+ embedding_batch_size: 'embeddingBatchSize',
27
+ embedding_device: 'embeddingDevice',
28
+ chunk_size: 'chunkSize',
29
+ chunk_overlap_percent: 'chunkOverlapPercent',
30
+ max_chunk_size: 'maxChunkSize',
31
+ auto_cluster_enabled: 'autoClusterEnabled',
32
+ auto_cluster_threshold: 'autoClusterThreshold',
33
+ auto_cluster_algorithm: 'autoClusterAlgorithm',
34
+ };
35
+ function getConfigValue(key) {
36
+ const config = getConfig();
37
+ const mappedKey = CONFIG_KEY_MAP[key];
38
+ if (mappedKey && mappedKey in config) {
39
+ return config[mappedKey];
40
+ }
41
+ throw validationError(`Unknown configuration key: ${key}`, { key });
42
+ }
43
+ /** Validation rules per config key */
44
+ const CONFIG_VALIDATORS = {
45
+ datalab_default_mode: (v) => {
46
+ if (typeof v !== 'string' || !['fast', 'balanced', 'accurate'].includes(v))
47
+ throw validationError('datalab_default_mode must be "fast", "balanced", or "accurate"', {
48
+ value: v,
49
+ });
50
+ },
51
+ datalab_max_concurrent: (v) => {
52
+ if (typeof v !== 'number' || v < 1 || v > 10)
53
+ throw validationError('datalab_max_concurrent must be a number between 1 and 10', {
54
+ value: v,
55
+ });
56
+ },
57
+ embedding_batch_size: (v) => {
58
+ if (typeof v !== 'number' || v < 1 || v > 1024)
59
+ throw validationError('embedding_batch_size must be a number between 1 and 1024', {
60
+ value: v,
61
+ });
62
+ },
63
+ embedding_device: (v) => {
64
+ if (typeof v !== 'string')
65
+ throw validationError('embedding_device must be a string', { value: v });
66
+ },
67
+ chunk_size: (v) => {
68
+ if (typeof v !== 'number' || v < 100 || v > 10000)
69
+ throw validationError('chunk_size must be a number between 100 and 10000', { value: v });
70
+ },
71
+ chunk_overlap_percent: (v) => {
72
+ if (typeof v !== 'number' || v < 0 || v > 50)
73
+ throw validationError('chunk_overlap_percent must be a number between 0 and 50', {
74
+ value: v,
75
+ });
76
+ },
77
+ max_chunk_size: (v) => {
78
+ if (typeof v !== 'number' || v < 1000 || v > 50000)
79
+ throw validationError('max_chunk_size must be a number between 1000 and 50000', {
80
+ value: v,
81
+ });
82
+ },
83
+ auto_cluster_enabled: (v) => {
84
+ if (typeof v !== 'boolean')
85
+ throw validationError('auto_cluster_enabled must be a boolean', { value: v });
86
+ },
87
+ auto_cluster_threshold: (v) => {
88
+ if (typeof v !== 'number' || v < 2 || v > 10000)
89
+ throw validationError('auto_cluster_threshold must be a number between 2 and 10000', {
90
+ value: v,
91
+ });
92
+ },
93
+ auto_cluster_algorithm: (v) => {
94
+ if (typeof v !== 'string' || !['hdbscan', 'agglomerative', 'kmeans'].includes(v))
95
+ throw validationError('auto_cluster_algorithm must be "hdbscan", "agglomerative", or "kmeans"', {
96
+ value: v,
97
+ });
98
+ },
99
+ };
100
+ function setConfigValue(key, value) {
101
+ const mappedKey = CONFIG_KEY_MAP[key];
102
+ if (!mappedKey) {
103
+ throw validationError(`Unknown configuration key: ${key}`, { key });
104
+ }
105
+ const validator = CONFIG_VALIDATORS[key];
106
+ if (validator)
107
+ validator(value);
108
+ updateConfig({ [mappedKey]: value });
109
+ }
110
+ // ═══════════════════════════════════════════════════════════════════════════════
111
+ // CONFIG TOOL HANDLERS
112
+ // ═══════════════════════════════════════════════════════════════════════════════
113
+ export async function handleConfigGet(params) {
114
+ try {
115
+ const input = validateInput(ConfigGetInput, params);
116
+ const config = getConfig();
117
+ const configNextSteps = [
118
+ { tool: 'ocr_config_set', description: 'Change a configuration setting' },
119
+ { tool: 'ocr_db_stats', description: 'Check database statistics' },
120
+ ];
121
+ // Return specific key if requested
122
+ if (input.key) {
123
+ const value = getConfigValue(input.key);
124
+ return formatResponse(successResult({ key: input.key, value, next_steps: configNextSteps }));
125
+ }
126
+ // Return full configuration
127
+ return formatResponse(successResult({
128
+ // Mutable configuration values
129
+ datalab_default_mode: config.defaultOCRMode,
130
+ datalab_max_concurrent: config.maxConcurrent,
131
+ embedding_batch_size: config.embeddingBatchSize,
132
+ storage_path: config.defaultStoragePath,
133
+ current_database: state.currentDatabaseName,
134
+ // Immutable values (informational only)
135
+ embedding_model: 'nomic-embed-text-v1.5',
136
+ embedding_dimensions: 768,
137
+ hash_algorithm: 'sha256',
138
+ // Mutable config values from state
139
+ embedding_device: config.embeddingDevice,
140
+ chunk_size: config.chunkSize,
141
+ chunk_overlap_percent: config.chunkOverlapPercent,
142
+ max_chunk_size: config.maxChunkSize,
143
+ // Auto-clustering config
144
+ auto_cluster_enabled: config.autoClusterEnabled ?? false,
145
+ auto_cluster_threshold: config.autoClusterThreshold ?? 10,
146
+ auto_cluster_algorithm: config.autoClusterAlgorithm ?? 'hdbscan',
147
+ next_steps: configNextSteps,
148
+ }));
149
+ }
150
+ catch (error) {
151
+ return handleError(error);
152
+ }
153
+ }
154
+ export async function handleConfigSet(params) {
155
+ try {
156
+ const input = validateInput(ConfigSetInput, params);
157
+ // Apply the configuration change in memory
158
+ setConfigValue(input.key, input.value);
159
+ // Persist to database if one is selected
160
+ let persisted = false;
161
+ if (hasDatabase()) {
162
+ try {
163
+ const { db } = requireDatabase();
164
+ const conn = db.getConnection();
165
+ persistConfigValue(conn, input.key, input.value);
166
+ persisted = true;
167
+ }
168
+ catch (persistErr) {
169
+ console.error(`[config] Failed to persist config to database: ${persistErr instanceof Error ? persistErr.message : String(persistErr)}`);
170
+ }
171
+ }
172
+ return formatResponse(successResult({
173
+ key: input.key,
174
+ value: input.value,
175
+ updated: true,
176
+ persisted,
177
+ next_steps: [
178
+ { tool: 'ocr_config_get', description: 'Verify the updated configuration' },
179
+ { tool: 'ocr_process_pending', description: 'Process documents with new settings' },
180
+ { tool: 'ocr_db_stats', description: 'Check database overview and statistics' },
181
+ ],
182
+ }));
183
+ }
184
+ catch (error) {
185
+ return handleError(error);
186
+ }
187
+ }
188
+ // Config persistence functions are in src/utils/config-persistence.ts
189
+ // to avoid circular dependency between tools/config.ts and server/state.ts
190
+ // ═══════════════════════════════════════════════════════════════════════════════
191
+ // TOOL DEFINITIONS FOR MCP REGISTRATION
192
+ // ═══════════════════════════════════════════════════════════════════════════════
193
+ /**
194
+ * Config tools collection for MCP server registration
195
+ */
196
+ export const configTools = {
197
+ ocr_config_get: {
198
+ description: '[STATUS] Use to view current system configuration (OCR mode, chunk size, embedding settings, auto-clustering). Returns all or one specific key.',
199
+ inputSchema: {
200
+ key: ConfigKey.optional().describe('Specific config key to retrieve'),
201
+ },
202
+ handler: handleConfigGet,
203
+ },
204
+ ocr_config_set: {
205
+ description: '[SETUP] Use to change a system configuration setting (OCR mode, chunk size, concurrency, auto-clustering). Returns updated value.',
206
+ inputSchema: {
207
+ key: ConfigKey.describe('Configuration key to update'),
208
+ value: z.union([z.string(), z.number(), z.boolean()]).describe('New value'),
209
+ },
210
+ handler: handleConfigSet,
211
+ },
212
+ };
213
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/tools/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAClG,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAqB,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAClG,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,WAAW,EAA0C,MAAM,aAAa,CAAC;AAElG,kFAAkF;AAClF,YAAY;AACZ,kFAAkF;AAElF,oDAAoD;AACpD,MAAM,cAAc,GAA2B;IAC7C,oBAAoB,EAAE,gBAAgB;IACtC,sBAAsB,EAAE,eAAe;IACvC,oBAAoB,EAAE,oBAAoB;IAC1C,gBAAgB,EAAE,iBAAiB;IACnC,UAAU,EAAE,WAAW;IACvB,qBAAqB,EAAE,qBAAqB;IAC5C,cAAc,EAAE,cAAc;IAC9B,oBAAoB,EAAE,oBAAoB;IAC1C,sBAAsB,EAAE,sBAAsB;IAC9C,sBAAsB,EAAE,sBAAsB;CAC/C,CAAC;AAEF,SAAS,cAAc,CAAC,GAA8B;IACpD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IAEtC,IAAI,SAAS,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;QACrC,OAAO,MAAM,CAAC,SAAgC,CAAC,CAAC;IAClD,CAAC;IACD,MAAM,eAAe,CAAC,8BAA8B,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;AACtE,CAAC;AAED,sCAAsC;AACtC,MAAM,iBAAiB,GAA6C;IAClE,oBAAoB,EAAE,CAAC,CAAC,EAAE,EAAE;QAC1B,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YACxE,MAAM,eAAe,CAAC,gEAAgE,EAAE;gBACtF,KAAK,EAAE,CAAC;aACT,CAAC,CAAC;IACP,CAAC;IACD,sBAAsB,EAAE,CAAC,CAAC,EAAE,EAAE;QAC5B,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE;YAC1C,MAAM,eAAe,CAAC,0DAA0D,EAAE;gBAChF,KAAK,EAAE,CAAC;aACT,CAAC,CAAC;IACP,CAAC;IACD,oBAAoB,EAAE,CAAC,CAAC,EAAE,EAAE;QAC1B,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI;YAC5C,MAAM,eAAe,CAAC,0DAA0D,EAAE;gBAChF,KAAK,EAAE,CAAC;aACT,CAAC,CAAC;IACP,CAAC;IACD,gBAAgB,EAAE,CAAC,CAAC,EAAE,EAAE;QACtB,IAAI,OAAO,CAAC,KAAK,QAAQ;YACvB,MAAM,eAAe,CAAC,mCAAmC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE;QAChB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,KAAK;YAC/C,MAAM,eAAe,CAAC,mDAAmD,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAC7F,CAAC;IACD,qBAAqB,EAAE,CAAC,CAAC,EAAE,EAAE;QAC3B,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE;YAC1C,MAAM,eAAe,CAAC,yDAAyD,EAAE;gBAC/E,KAAK,EAAE,CAAC;aACT,CAAC,CAAC;IACP,CAAC;IACD,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE;QACpB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,KAAK;YAChD,MAAM,eAAe,CAAC,wDAAwD,EAAE;gBAC9E,KAAK,EAAE,CAAC;aACT,CAAC,CAAC;IACP,CAAC;IACD,oBAAoB,EAAE,CAAC,CAAC,EAAE,EAAE;QAC1B,IAAI,OAAO,CAAC,KAAK,SAAS;YACxB,MAAM,eAAe,CAAC,wCAAwC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAClF,CAAC;IACD,sBAAsB,EAAE,CAAC,CAAC,EAAE,EAAE;QAC5B,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK;YAC7C,MAAM,eAAe,CAAC,6DAA6D,EAAE;gBACnF,KAAK,EAAE,CAAC;aACT,CAAC,CAAC;IACP,CAAC;IACD,sBAAsB,EAAE,CAAC,CAAC,EAAE,EAAE;QAC5B,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,SAAS,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC9E,MAAM,eAAe,CAAC,wEAAwE,EAAE;gBAC9F,KAAK,EAAE,CAAC;aACT,CAAC,CAAC;IACP,CAAC;CACF,CAAC;AAEF,SAAS,cAAc,CAAC,GAA8B,EAAE,KAAgC;IACtF,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,eAAe,CAAC,8BAA8B,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,SAAS,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,SAAS;QAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IAEhC,YAAY,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,EAA2B,CAAC,CAAC;AAChE,CAAC;AAED,kFAAkF;AAClF,uBAAuB;AACvB,kFAAkF;AAElF,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAA+B;IACnE,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,aAAa,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAE3B,MAAM,eAAe,GAAG;YACtB,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,gCAAgC,EAAE;YACzE,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,2BAA2B,EAAE;SACnE,CAAC;QAEF,mCAAmC;QACnC,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxC,OAAO,cAAc,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;QAC/F,CAAC;QAED,4BAA4B;QAC5B,OAAO,cAAc,CACnB,aAAa,CAAC;YACZ,+BAA+B;YAC/B,oBAAoB,EAAE,MAAM,CAAC,cAAc;YAC3C,sBAAsB,EAAE,MAAM,CAAC,aAAa;YAC5C,oBAAoB,EAAE,MAAM,CAAC,kBAAkB;YAC/C,YAAY,EAAE,MAAM,CAAC,kBAAkB;YACvC,gBAAgB,EAAE,KAAK,CAAC,mBAAmB;YAE3C,wCAAwC;YACxC,eAAe,EAAE,uBAAuB;YACxC,oBAAoB,EAAE,GAAG;YACzB,cAAc,EAAE,QAAQ;YAExB,mCAAmC;YACnC,gBAAgB,EAAE,MAAM,CAAC,eAAe;YACxC,UAAU,EAAE,MAAM,CAAC,SAAS;YAC5B,qBAAqB,EAAE,MAAM,CAAC,mBAAmB;YACjD,cAAc,EAAE,MAAM,CAAC,YAAY;YAEnC,yBAAyB;YACzB,oBAAoB,EAAE,MAAM,CAAC,kBAAkB,IAAI,KAAK;YACxD,sBAAsB,EAAE,MAAM,CAAC,oBAAoB,IAAI,EAAE;YACzD,sBAAsB,EAAE,MAAM,CAAC,oBAAoB,IAAI,SAAS;YAEhE,UAAU,EAAE,eAAe;SAC5B,CAAC,CACH,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAA+B;IACnE,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,aAAa,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QAEpD,2CAA2C;QAC3C,cAAc,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAEvC,yCAAyC;QACzC,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,WAAW,EAAE,EAAE,CAAC;YAClB,IAAI,CAAC;gBACH,MAAM,EAAE,EAAE,EAAE,GAAG,eAAe,EAAE,CAAC;gBACjC,MAAM,IAAI,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC;gBAChC,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;gBACjD,SAAS,GAAG,IAAI,CAAC;YACnB,CAAC;YAAC,OAAO,UAAU,EAAE,CAAC;gBACpB,OAAO,CAAC,KAAK,CACX,kDAAkD,UAAU,YAAY,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAC1H,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,cAAc,CACnB,aAAa,CAAC;YACZ,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,OAAO,EAAE,IAAI;YACb,SAAS;YACT,UAAU,EAAE;gBACV,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,kCAAkC,EAAE;gBAC3E,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,qCAAqC,EAAE;gBACnF,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,wCAAwC,EAAE;aAChF;SACF,CAAC,CACH,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,sEAAsE;AACtE,2EAA2E;AAE3E,kFAAkF;AAClF,wCAAwC;AACxC,kFAAkF;AAElF;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAmC;IACzD,cAAc,EAAE;QACd,WAAW,EAAE,iJAAiJ;QAC9J,WAAW,EAAE;YACX,GAAG,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;SACtE;QACD,OAAO,EAAE,eAAe;KACzB;IACD,cAAc,EAAE;QACd,WAAW,EAAE,mIAAmI;QAChJ,WAAW,EAAE;YACX,GAAG,EAAE,SAAS,CAAC,QAAQ,CAAC,6BAA6B,CAAC;YACtD,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;SAC5E;QACD,OAAO,EAAE,eAAe;KACzB;CACF,CAAC"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Database Management MCP Tools
3
+ *
4
+ * Extracted from src/index.ts Task 19.
5
+ * Tools: ocr_db_create, ocr_db_list, ocr_db_select, ocr_db_stats, ocr_db_delete
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/database
11
+ */
12
+ import { type ToolDefinition } from './shared.js';
13
+ /**
14
+ * Handle ocr_db_create - Create a new database
15
+ */
16
+ export declare function handleDatabaseCreate(params: Record<string, unknown>): Promise<{
17
+ content: Array<{
18
+ type: 'text';
19
+ text: string;
20
+ }>;
21
+ }>;
22
+ /**
23
+ * Handle ocr_db_list - List all databases
24
+ */
25
+ export declare function handleDatabaseList(params: Record<string, unknown>): Promise<{
26
+ content: Array<{
27
+ type: 'text';
28
+ text: string;
29
+ }>;
30
+ }>;
31
+ /**
32
+ * Handle ocr_db_select - Select active database
33
+ */
34
+ export declare function handleDatabaseSelect(params: Record<string, unknown>): Promise<{
35
+ content: Array<{
36
+ type: 'text';
37
+ text: string;
38
+ }>;
39
+ }>;
40
+ /**
41
+ * Handle ocr_db_stats - Get database statistics
42
+ */
43
+ export declare function handleDatabaseStats(params: Record<string, unknown>): Promise<{
44
+ content: Array<{
45
+ type: 'text';
46
+ text: string;
47
+ }>;
48
+ }>;
49
+ /**
50
+ * Handle ocr_db_delete - Delete a database
51
+ */
52
+ export declare function handleDatabaseDelete(params: Record<string, unknown>): Promise<{
53
+ content: Array<{
54
+ type: 'text';
55
+ text: string;
56
+ }>;
57
+ }>;
58
+ /**
59
+ * Database tools collection for MCP server registration
60
+ */
61
+ export declare const databaseTools: Record<string, ToolDefinition>;
62
+ //# sourceMappingURL=database.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/tools/database.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAsBH,OAAO,EAA+B,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAM/E;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAqB7D;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAgD7D;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CA6B7D;AAmFD;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CA+B7D;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAiB7D;AAMD;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAgDxD,CAAC"}
@@ -0,0 +1,288 @@
1
+ /**
2
+ * Database Management MCP Tools
3
+ *
4
+ * Extracted from src/index.ts Task 19.
5
+ * Tools: ocr_db_create, ocr_db_list, ocr_db_select, ocr_db_stats, ocr_db_delete
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/database
11
+ */
12
+ import { z } from 'zod';
13
+ import { DatabaseService } from '../services/storage/database/index.js';
14
+ import { VectorService } from '../services/storage/vector.js';
15
+ import { state, requireDatabase, selectDatabase, createDatabase, deleteDatabase, getDefaultStoragePath, } from '../server/state.js';
16
+ import { successResult } from '../server/types.js';
17
+ import { validateInput, DatabaseCreateInput, DatabaseListInput, DatabaseSelectInput, DatabaseStatsInput, DatabaseDeleteInput, } from '../utils/validation.js';
18
+ import { formatResponse, handleError } from './shared.js';
19
+ // ═══════════════════════════════════════════════════════════════════════════════
20
+ // DATABASE TOOL HANDLERS
21
+ // ═══════════════════════════════════════════════════════════════════════════════
22
+ /**
23
+ * Handle ocr_db_create - Create a new database
24
+ */
25
+ export async function handleDatabaseCreate(params) {
26
+ try {
27
+ const input = validateInput(DatabaseCreateInput, params);
28
+ const db = createDatabase(input.name, input.description, input.storage_path);
29
+ const path = db.getPath();
30
+ return formatResponse(successResult({
31
+ name: input.name,
32
+ path,
33
+ created: true,
34
+ description: input.description,
35
+ next_steps: [
36
+ { tool: 'ocr_db_select', description: 'Select this database to start using it' },
37
+ { tool: 'ocr_ingest_files', description: 'Ingest files into the new database' },
38
+ ],
39
+ }));
40
+ }
41
+ catch (error) {
42
+ return handleError(error);
43
+ }
44
+ }
45
+ /**
46
+ * Handle ocr_db_list - List all databases
47
+ */
48
+ export async function handleDatabaseList(params) {
49
+ try {
50
+ const input = validateInput(DatabaseListInput, params);
51
+ const storagePath = getDefaultStoragePath();
52
+ const databases = DatabaseService.list(storagePath);
53
+ const items = databases.map((dbInfo) => {
54
+ const item = {
55
+ name: dbInfo.name,
56
+ path: dbInfo.path,
57
+ size_bytes: dbInfo.size_bytes,
58
+ created_at: dbInfo.created_at,
59
+ modified_at: dbInfo.last_modified_at,
60
+ };
61
+ if (input.include_stats) {
62
+ let statsDb = null;
63
+ try {
64
+ statsDb = DatabaseService.open(dbInfo.name, storagePath);
65
+ const stats = statsDb.getStats();
66
+ item.document_count = stats.total_documents;
67
+ item.chunk_count = stats.total_chunks;
68
+ item.embedding_count = stats.total_embeddings;
69
+ }
70
+ catch (err) {
71
+ item.stats_error = err instanceof Error ? err.message : String(err);
72
+ }
73
+ finally {
74
+ statsDb?.close();
75
+ }
76
+ }
77
+ return item;
78
+ });
79
+ return formatResponse(successResult({
80
+ databases: items,
81
+ total: items.length,
82
+ storage_path: storagePath,
83
+ next_steps: [
84
+ { tool: 'ocr_db_select', description: 'Select a database to work with' },
85
+ { tool: 'ocr_db_create', description: 'Create a new database' },
86
+ { tool: 'ocr_search_cross_db', description: 'Search across all databases' },
87
+ ],
88
+ }));
89
+ }
90
+ catch (error) {
91
+ return handleError(error);
92
+ }
93
+ }
94
+ /**
95
+ * Handle ocr_db_select - Select active database
96
+ */
97
+ export async function handleDatabaseSelect(params) {
98
+ try {
99
+ const input = validateInput(DatabaseSelectInput, params);
100
+ selectDatabase(input.database_name);
101
+ const { db, vector } = requireDatabase();
102
+ const stats = db.getStats();
103
+ return formatResponse(successResult({
104
+ name: input.database_name,
105
+ path: db.getPath(),
106
+ selected: true,
107
+ stats: {
108
+ document_count: stats.total_documents,
109
+ chunk_count: stats.total_chunks,
110
+ embedding_count: stats.total_embeddings,
111
+ vector_count: vector.getVectorCount(),
112
+ },
113
+ next_steps: [
114
+ { tool: 'ocr_document_list', description: 'Browse documents in this database' },
115
+ { tool: 'ocr_search', description: 'Search for content across all documents' },
116
+ { tool: 'ocr_db_stats', description: 'Get detailed statistics for this database' },
117
+ ],
118
+ }));
119
+ }
120
+ catch (error) {
121
+ return handleError(error);
122
+ }
123
+ }
124
+ /**
125
+ * Build stats response from database and vector services
126
+ */
127
+ function buildStatsResponse(db, vector) {
128
+ const stats = db.getStats();
129
+ const conn = db.getConnection();
130
+ // Additional overview queries
131
+ const fileTypeDist = conn.prepare("SELECT file_type, COUNT(*) as count FROM documents GROUP BY file_type ORDER BY count DESC").all();
132
+ const dateRange = conn.prepare("SELECT MIN(created_at) as earliest, MAX(created_at) as latest FROM documents").get();
133
+ const statusDist = conn.prepare("SELECT status, COUNT(*) as count FROM documents GROUP BY status").all();
134
+ const qualityStats = conn.prepare(`SELECT AVG(parse_quality_score) as avg_quality,
135
+ MIN(parse_quality_score) as min_quality,
136
+ MAX(parse_quality_score) as max_quality
137
+ FROM ocr_results WHERE parse_quality_score IS NOT NULL`).get();
138
+ const clusterSummary = conn.prepare(`SELECT c.id, c.label, c.document_count, c.classification_tag
139
+ FROM clusters c ORDER BY c.document_count DESC LIMIT 5`).all();
140
+ const recentDocs = conn.prepare("SELECT file_name, file_type, status, page_count, created_at FROM documents ORDER BY created_at DESC LIMIT 5").all();
141
+ const totalChunks = conn.prepare("SELECT COUNT(*) as count FROM chunks").get();
142
+ const totalEmbeddings = conn.prepare("SELECT COUNT(*) as count FROM embeddings").get();
143
+ const totalImages = conn.prepare("SELECT COUNT(*) as count FROM images").get();
144
+ const ftsStatus = conn.prepare("SELECT COUNT(*) as count FROM fts_index_metadata").get();
145
+ return {
146
+ name: db.getName(),
147
+ path: db.getPath(),
148
+ size_bytes: stats.storage_size_bytes,
149
+ document_count: stats.total_documents,
150
+ chunk_count: stats.total_chunks,
151
+ embedding_count: stats.total_embeddings,
152
+ image_count: stats.total_images,
153
+ provenance_count: stats.total_provenance,
154
+ ocr_result_count: stats.total_ocr_results,
155
+ pending_documents: stats.documents_by_status.pending,
156
+ processing_documents: stats.documents_by_status.processing,
157
+ complete_documents: stats.documents_by_status.complete,
158
+ failed_documents: stats.documents_by_status.failed,
159
+ extraction_count: stats.total_extractions,
160
+ form_fill_count: stats.total_form_fills,
161
+ comparison_count: stats.total_comparisons,
162
+ cluster_count: stats.total_clusters,
163
+ vector_count: vector.getVectorCount(),
164
+ ocr_quality: stats.ocr_quality,
165
+ costs: stats.costs,
166
+ overview: {
167
+ total_documents: stats.total_documents,
168
+ total_chunks: totalChunks.count,
169
+ total_embeddings: totalEmbeddings.count,
170
+ total_images: totalImages.count,
171
+ file_type_distribution: fileTypeDist,
172
+ document_date_range: dateRange ?? null,
173
+ status_distribution: statusDist,
174
+ quality_stats: qualityStats ?? null,
175
+ top_clusters: clusterSummary,
176
+ recent_documents: recentDocs,
177
+ fts_indexed: ftsStatus.count > 0,
178
+ },
179
+ };
180
+ }
181
+ /**
182
+ * Handle ocr_db_stats - Get database statistics
183
+ */
184
+ export async function handleDatabaseStats(params) {
185
+ try {
186
+ const input = validateInput(DatabaseStatsInput, params);
187
+ const statsNextSteps = [
188
+ { tool: 'ocr_document_list', description: 'Browse documents in this database' },
189
+ { tool: 'ocr_search', description: 'Search for content across documents' },
190
+ { tool: 'ocr_report_overview', description: 'Get quality and corpus analytics' },
191
+ { tool: 'ocr_benchmark_compare', description: 'Benchmark search modes against each other' },
192
+ ];
193
+ // If database_name is provided, temporarily open that database
194
+ if (input.database_name && input.database_name !== state.currentDatabaseName) {
195
+ const storagePath = getDefaultStoragePath();
196
+ const db = DatabaseService.open(input.database_name, storagePath);
197
+ try {
198
+ const vector = new VectorService(db.getConnection());
199
+ const result = buildStatsResponse(db, vector);
200
+ return formatResponse(successResult({ ...result, next_steps: statsNextSteps }));
201
+ }
202
+ finally {
203
+ db.close();
204
+ }
205
+ }
206
+ // Use current database
207
+ const { db, vector } = requireDatabase();
208
+ const result = buildStatsResponse(db, vector);
209
+ return formatResponse(successResult({ ...result, next_steps: statsNextSteps }));
210
+ }
211
+ catch (error) {
212
+ return handleError(error);
213
+ }
214
+ }
215
+ /**
216
+ * Handle ocr_db_delete - Delete a database
217
+ */
218
+ export async function handleDatabaseDelete(params) {
219
+ try {
220
+ const input = validateInput(DatabaseDeleteInput, params);
221
+ deleteDatabase(input.database_name);
222
+ return formatResponse(successResult({
223
+ name: input.database_name,
224
+ deleted: true,
225
+ next_steps: [
226
+ { tool: 'ocr_db_list', description: 'List remaining databases' },
227
+ ],
228
+ }));
229
+ }
230
+ catch (error) {
231
+ return handleError(error);
232
+ }
233
+ }
234
+ // ═══════════════════════════════════════════════════════════════════════════════
235
+ // TOOL DEFINITIONS FOR MCP REGISTRATION
236
+ // ═══════════════════════════════════════════════════════════════════════════════
237
+ /**
238
+ * Database tools collection for MCP server registration
239
+ */
240
+ export const databaseTools = {
241
+ ocr_db_create: {
242
+ description: '[SETUP] Use to create a new database before ingesting documents. Returns database name and path. Follow with ocr_db_select, then ocr_ingest_files or ocr_ingest_directory.',
243
+ inputSchema: {
244
+ name: z
245
+ .string()
246
+ .min(1)
247
+ .max(64)
248
+ .regex(/^[a-zA-Z0-9_-]+$/)
249
+ .describe('Database name (alphanumeric, underscore, hyphen only)'),
250
+ description: z.string().max(500).optional().describe('Optional description for the database'),
251
+ storage_path: z.string().optional().describe('Optional storage path override'),
252
+ },
253
+ handler: handleDatabaseCreate,
254
+ },
255
+ ocr_db_list: {
256
+ description: '[ESSENTIAL] Use first to discover available databases. Returns names, sizes, and document counts. Follow with ocr_db_select to choose one.',
257
+ inputSchema: {
258
+ include_stats: z.boolean().default(false).describe('Include document/chunk/embedding counts'),
259
+ },
260
+ handler: handleDatabaseList,
261
+ },
262
+ ocr_db_select: {
263
+ description: '[ESSENTIAL] Use to switch active database. All subsequent tools operate on the selected database. Returns basic stats. Prerequisite for most tools.',
264
+ inputSchema: {
265
+ database_name: z.string().min(1).describe('Name of the database to select'),
266
+ },
267
+ handler: handleDatabaseSelect,
268
+ },
269
+ ocr_db_stats: {
270
+ description: '[ESSENTIAL] Use to check database size, document counts, quality stats, and recent activity. Returns comprehensive overview including file types, clusters, and costs.',
271
+ inputSchema: {
272
+ database_name: z
273
+ .string()
274
+ .optional()
275
+ .describe('Database name (uses current if not specified)'),
276
+ },
277
+ handler: handleDatabaseStats,
278
+ },
279
+ ocr_db_delete: {
280
+ description: '[DESTRUCTIVE] Use to permanently delete a database and all its data. Returns confirmation. Requires confirm=true.',
281
+ inputSchema: {
282
+ database_name: z.string().min(1).describe('Name of the database to delete'),
283
+ confirm: z.literal(true).describe('Must be true to confirm deletion'),
284
+ },
285
+ handler: handleDatabaseDelete,
286
+ },
287
+ };
288
+ //# sourceMappingURL=database.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/tools/database.ts"],"names":[],"mappings":"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"}