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,106 @@
1
+ /**
2
+ * Circuit Breaker Pattern for Gemini API
3
+ * Based on gemini-flash-3-dev-guide.md:
4
+ * - threshold: 5 failures
5
+ * - recovery_ms: 60000 (60 seconds)
6
+ *
7
+ * Only server-side errors (HTTP 429, 500, 502, 503, network errors) trip the
8
+ * circuit breaker. Client-side errors (validation, file-not-found,
9
+ * context-length-exceeded, JSON parse) do NOT trip it.
10
+ */
11
+ declare enum CircuitState {
12
+ CLOSED = "CLOSED",// Normal operation
13
+ OPEN = "OPEN",// Failing, reject requests
14
+ HALF_OPEN = "HALF_OPEN"
15
+ }
16
+ /**
17
+ * Determine whether an error represents a server-side / transient failure
18
+ * that should trip the circuit breaker.
19
+ *
20
+ * Server errors: HTTP 429 (rate limit), 500, 502, 503, and network errors
21
+ * like ECONNRESET, ETIMEDOUT, ENOTFOUND, socket hang up, fetch failed.
22
+ *
23
+ * Client errors that should NOT trip: ValidationError, file-not-found,
24
+ * context-length-exceeded, JSON parse errors, unsupported format, etc.
25
+ */
26
+ export declare function isServerError(error: unknown): boolean;
27
+ export interface CircuitBreakerConfig {
28
+ failureThreshold: number;
29
+ recoveryTimeMs: number;
30
+ halfOpenSuccessThreshold: number;
31
+ }
32
+ export interface CircuitBreakerStatus {
33
+ state: CircuitState;
34
+ failureCount: number;
35
+ lastFailureTime: number | null;
36
+ timeToRecovery: number | null;
37
+ }
38
+ export declare class CircuitBreaker {
39
+ private state;
40
+ private failureCount;
41
+ private successCount;
42
+ private lastFailureTime;
43
+ private readonly config;
44
+ /** Tracks consecutive circuit trips for exponential recovery backoff */
45
+ private consecutiveTrips;
46
+ constructor(config?: Partial<CircuitBreakerConfig>);
47
+ /**
48
+ * Get current recovery time with exponential backoff on consecutive trips.
49
+ *
50
+ * Each consecutive trip doubles the recovery time:
51
+ * Trip 1: 60s, Trip 2: 120s, Trip 3: 240s, Trip 4: 480s, Trip 5+: 960s (cap)
52
+ *
53
+ * @returns Recovery time in milliseconds
54
+ */
55
+ getRecoveryTimeMs(): number;
56
+ /**
57
+ * Execute a function with circuit breaker protection
58
+ */
59
+ execute<T>(fn: () => Promise<T>): Promise<T>;
60
+ /**
61
+ * Check if the circuit should transition from OPEN to HALF_OPEN
62
+ */
63
+ private checkRecovery;
64
+ /**
65
+ * Record a successful request
66
+ */
67
+ private recordSuccess;
68
+ /**
69
+ * Record a failed request
70
+ */
71
+ private recordFailure;
72
+ /**
73
+ * Get time remaining until recovery attempt.
74
+ * Uses dynamic recovery time based on consecutive trips.
75
+ */
76
+ private getTimeToRecovery;
77
+ /**
78
+ * Check if the circuit is currently open
79
+ */
80
+ isOpen(): boolean;
81
+ /**
82
+ * Get current circuit breaker status
83
+ */
84
+ getStatus(): CircuitBreakerStatus;
85
+ /**
86
+ * Get the current state
87
+ */
88
+ getState(): CircuitState;
89
+ /**
90
+ * Manually reset the circuit breaker
91
+ */
92
+ reset(): void;
93
+ /**
94
+ * Force the circuit open (for testing or manual intervention)
95
+ */
96
+ forceOpen(): void;
97
+ }
98
+ /**
99
+ * Error thrown when circuit breaker is open
100
+ */
101
+ export declare class CircuitBreakerOpenError extends Error {
102
+ readonly timeToRecovery: number;
103
+ constructor(message: string, timeToRecovery: number);
104
+ }
105
+ export {};
106
+ //# sourceMappingURL=circuit-breaker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"circuit-breaker.d.ts","sourceRoot":"","sources":["../../../src/services/gemini/circuit-breaker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,aAAK,YAAY;IACf,MAAM,WAAW,CAAE,mBAAmB;IACtC,IAAI,SAAS,CAAE,2BAA2B;IAC1C,SAAS,cAAc;CACxB;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAiCrD;AAED,MAAM,WAAW,oBAAoB;IACnC,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,wBAAwB,EAAE,MAAM,CAAC;CAClC;AAQD,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,YAAY,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAAqC;IAClD,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;IAC9C,wEAAwE;IACxE,OAAO,CAAC,gBAAgB,CAAa;gBAEzB,MAAM,GAAE,OAAO,CAAC,oBAAoB,CAAM;IAItD;;;;;;;OAOG;IACH,iBAAiB,IAAI,MAAM;IAO3B;;OAEG;IACG,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAiClD;;OAEG;IACH,OAAO,CAAC,aAAa;IAYrB;;OAEG;IACH,OAAO,CAAC,aAAa;IAqBrB;;OAEG;IACH,OAAO,CAAC,aAAa;IAuBrB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAMzB;;OAEG;IACH,MAAM,IAAI,OAAO;IAKjB;;OAEG;IACH,SAAS,IAAI,oBAAoB;IAUjC;;OAEG;IACH,QAAQ,IAAI,YAAY;IAKxB;;OAEG;IACH,KAAK,IAAI,IAAI;IASb;;OAEG;IACH,SAAS,IAAI,IAAI;CAKlB;AAED;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;gBAEpB,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;CAKpD"}
@@ -0,0 +1,237 @@
1
+ /**
2
+ * Circuit Breaker Pattern for Gemini API
3
+ * Based on gemini-flash-3-dev-guide.md:
4
+ * - threshold: 5 failures
5
+ * - recovery_ms: 60000 (60 seconds)
6
+ *
7
+ * Only server-side errors (HTTP 429, 500, 502, 503, network errors) trip the
8
+ * circuit breaker. Client-side errors (validation, file-not-found,
9
+ * context-length-exceeded, JSON parse) do NOT trip it.
10
+ */
11
+ var CircuitState;
12
+ (function (CircuitState) {
13
+ CircuitState["CLOSED"] = "CLOSED";
14
+ CircuitState["OPEN"] = "OPEN";
15
+ CircuitState["HALF_OPEN"] = "HALF_OPEN";
16
+ })(CircuitState || (CircuitState = {}));
17
+ /**
18
+ * Determine whether an error represents a server-side / transient failure
19
+ * that should trip the circuit breaker.
20
+ *
21
+ * Server errors: HTTP 429 (rate limit), 500, 502, 503, and network errors
22
+ * like ECONNRESET, ETIMEDOUT, ENOTFOUND, socket hang up, fetch failed.
23
+ *
24
+ * Client errors that should NOT trip: ValidationError, file-not-found,
25
+ * context-length-exceeded, JSON parse errors, unsupported format, etc.
26
+ */
27
+ export function isServerError(error) {
28
+ if (!(error instanceof Error)) {
29
+ return false;
30
+ }
31
+ const msg = error.message || '';
32
+ const cause = error?.cause;
33
+ const causeMsg = cause instanceof Error ? cause.message || '' : '';
34
+ const causeCode = cause?.code || '';
35
+ const combined = `${msg} ${causeMsg} ${causeCode}`;
36
+ // HTTP status codes indicating server-side issues
37
+ if (/\b(429|500|502|503)\b/.test(combined)) {
38
+ return true;
39
+ }
40
+ // Rate limit messages
41
+ if (/rate.?limit/i.test(combined)) {
42
+ return true;
43
+ }
44
+ // Network-level errors
45
+ if (/ECONNRESET|ETIMEDOUT|ENOTFOUND|ECONNREFUSED|socket hang up|fetch failed/i.test(combined)) {
46
+ return true;
47
+ }
48
+ // Server overloaded / unavailable messages from Gemini
49
+ if (/server.?(error|overloaded|unavailable)|service.?unavailable|internal.?server/i.test(combined)) {
50
+ return true;
51
+ }
52
+ // Everything else is a client-side error
53
+ return false;
54
+ }
55
+ const DEFAULT_CONFIG = {
56
+ failureThreshold: 5, // From guide
57
+ recoveryTimeMs: 60000, // From guide: 60 seconds
58
+ halfOpenSuccessThreshold: 3, // Successes needed to close
59
+ };
60
+ export class CircuitBreaker {
61
+ state = CircuitState.CLOSED;
62
+ failureCount = 0;
63
+ successCount = 0;
64
+ lastFailureTime = null;
65
+ config;
66
+ /** Tracks consecutive circuit trips for exponential recovery backoff */
67
+ consecutiveTrips = 0;
68
+ constructor(config = {}) {
69
+ this.config = { ...DEFAULT_CONFIG, ...config };
70
+ }
71
+ /**
72
+ * Get current recovery time with exponential backoff on consecutive trips.
73
+ *
74
+ * Each consecutive trip doubles the recovery time:
75
+ * Trip 1: 60s, Trip 2: 120s, Trip 3: 240s, Trip 4: 480s, Trip 5+: 960s (cap)
76
+ *
77
+ * @returns Recovery time in milliseconds
78
+ */
79
+ getRecoveryTimeMs() {
80
+ const baseRecovery = this.config.recoveryTimeMs;
81
+ const tripExponent = Math.max(0, this.consecutiveTrips - 1);
82
+ const multiplier = Math.pow(2, Math.min(tripExponent, 4)); // Max 16x = 960s
83
+ return Math.min(baseRecovery * multiplier, 960000); // Cap at 16 minutes
84
+ }
85
+ /**
86
+ * Execute a function with circuit breaker protection
87
+ */
88
+ async execute(fn) {
89
+ // Check if circuit should transition from OPEN to HALF_OPEN
90
+ this.checkRecovery();
91
+ // Reject if circuit is open
92
+ if (this.state === CircuitState.OPEN) {
93
+ const timeToRecovery = this.getTimeToRecovery();
94
+ throw new CircuitBreakerOpenError(`Circuit breaker is OPEN. Try again in ${Math.ceil(timeToRecovery / 1000)}s`, timeToRecovery);
95
+ }
96
+ try {
97
+ const result = await fn();
98
+ this.recordSuccess();
99
+ return result;
100
+ }
101
+ catch (error) {
102
+ // Only trip the circuit breaker on server-side / transient errors.
103
+ // Client-side errors (validation, file-not-found, context-length,
104
+ // JSON parse) are not the server's fault and should not affect
105
+ // circuit breaker state.
106
+ if (isServerError(error)) {
107
+ this.recordFailure();
108
+ }
109
+ else {
110
+ console.error(`[CircuitBreaker] Client-side error (not counted): ${error instanceof Error ? error.message : String(error)}`);
111
+ }
112
+ throw error;
113
+ }
114
+ }
115
+ /**
116
+ * Check if the circuit should transition from OPEN to HALF_OPEN
117
+ */
118
+ checkRecovery() {
119
+ if (this.state === CircuitState.OPEN && this.lastFailureTime !== null) {
120
+ const elapsed = Date.now() - this.lastFailureTime;
121
+ const recoveryTime = this.getRecoveryTimeMs();
122
+ if (elapsed >= recoveryTime) {
123
+ console.error(`[CircuitBreaker] Transitioning from OPEN to HALF_OPEN (recovery: ${recoveryTime}ms, trip #${this.consecutiveTrips})`);
124
+ this.state = CircuitState.HALF_OPEN;
125
+ this.successCount = 0;
126
+ }
127
+ }
128
+ }
129
+ /**
130
+ * Record a successful request
131
+ */
132
+ recordSuccess() {
133
+ if (this.state === CircuitState.HALF_OPEN) {
134
+ this.successCount++;
135
+ console.error(`[CircuitBreaker] Success in HALF_OPEN (${this.successCount}/${this.config.halfOpenSuccessThreshold})`);
136
+ if (this.successCount >= this.config.halfOpenSuccessThreshold) {
137
+ console.error('[CircuitBreaker] Recovery confirmed, transitioning to CLOSED');
138
+ this.state = CircuitState.CLOSED;
139
+ this.failureCount = 0;
140
+ this.successCount = 0;
141
+ this.lastFailureTime = null;
142
+ this.consecutiveTrips = 0; // Reset consecutive trips on successful recovery
143
+ }
144
+ }
145
+ else if (this.state === CircuitState.CLOSED) {
146
+ // Reset failure count on success
147
+ this.failureCount = 0;
148
+ }
149
+ }
150
+ /**
151
+ * Record a failed request
152
+ */
153
+ recordFailure() {
154
+ this.failureCount++;
155
+ this.lastFailureTime = Date.now();
156
+ console.error(`[CircuitBreaker] Failure recorded (${this.failureCount}/${this.config.failureThreshold})`);
157
+ if (this.state === CircuitState.HALF_OPEN) {
158
+ // Any failure in HALF_OPEN immediately opens the circuit
159
+ this.consecutiveTrips++;
160
+ console.error(`[CircuitBreaker] Failure in HALF_OPEN, transitioning to OPEN (consecutive trip #${this.consecutiveTrips}, recovery: ${this.getRecoveryTimeMs()}ms)`);
161
+ this.state = CircuitState.OPEN;
162
+ this.successCount = 0;
163
+ }
164
+ else if (this.failureCount >= this.config.failureThreshold) {
165
+ this.consecutiveTrips++;
166
+ console.error(`[CircuitBreaker] Threshold reached (${this.failureCount}), transitioning to OPEN (consecutive trip #${this.consecutiveTrips}, recovery: ${this.getRecoveryTimeMs()}ms)`);
167
+ this.state = CircuitState.OPEN;
168
+ }
169
+ }
170
+ /**
171
+ * Get time remaining until recovery attempt.
172
+ * Uses dynamic recovery time based on consecutive trips.
173
+ */
174
+ getTimeToRecovery() {
175
+ if (this.lastFailureTime === null)
176
+ return 0;
177
+ const elapsed = Date.now() - this.lastFailureTime;
178
+ return Math.max(0, this.getRecoveryTimeMs() - elapsed);
179
+ }
180
+ /**
181
+ * Check if the circuit is currently open
182
+ */
183
+ isOpen() {
184
+ this.checkRecovery();
185
+ return this.state === CircuitState.OPEN;
186
+ }
187
+ /**
188
+ * Get current circuit breaker status
189
+ */
190
+ getStatus() {
191
+ this.checkRecovery();
192
+ return {
193
+ state: this.state,
194
+ failureCount: this.failureCount,
195
+ lastFailureTime: this.lastFailureTime,
196
+ timeToRecovery: this.state === CircuitState.OPEN ? this.getTimeToRecovery() : null,
197
+ };
198
+ }
199
+ /**
200
+ * Get the current state
201
+ */
202
+ getState() {
203
+ this.checkRecovery();
204
+ return this.state;
205
+ }
206
+ /**
207
+ * Manually reset the circuit breaker
208
+ */
209
+ reset() {
210
+ this.state = CircuitState.CLOSED;
211
+ this.failureCount = 0;
212
+ this.successCount = 0;
213
+ this.lastFailureTime = null;
214
+ this.consecutiveTrips = 0;
215
+ console.error('[CircuitBreaker] Manually reset to CLOSED');
216
+ }
217
+ /**
218
+ * Force the circuit open (for testing or manual intervention)
219
+ */
220
+ forceOpen() {
221
+ this.state = CircuitState.OPEN;
222
+ this.lastFailureTime = Date.now();
223
+ console.error('[CircuitBreaker] Manually forced OPEN');
224
+ }
225
+ }
226
+ /**
227
+ * Error thrown when circuit breaker is open
228
+ */
229
+ export class CircuitBreakerOpenError extends Error {
230
+ timeToRecovery;
231
+ constructor(message, timeToRecovery) {
232
+ super(message);
233
+ this.name = 'CircuitBreakerOpenError';
234
+ this.timeToRecovery = timeToRecovery;
235
+ }
236
+ }
237
+ //# sourceMappingURL=circuit-breaker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../../../src/services/gemini/circuit-breaker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,173 @@
1
+ /**
2
+ * Gemini API Client
3
+ * Implements the client patterns from gemini-flash-3-dev-guide.md
4
+ *
5
+ * Modes:
6
+ * - fast(): <2s target, temperature 0.0, JSON output
7
+ * - thinking(): 3-8s target, extended reasoning with thinkingLevel
8
+ * - multimodal(): 5-15s target, image/PDF analysis
9
+ */
10
+ import { type GeminiConfig, type ThinkingLevel, type AllowedMimeType, type MediaResolution } from './config.js';
11
+ import { CircuitBreakerOpenError } from './circuit-breaker.js';
12
+ export { CircuitBreakerOpenError };
13
+ /**
14
+ * Get a shared GeminiClient singleton.
15
+ * Use this instead of `new GeminiClient()` for default config.
16
+ * Rate limiter and circuit breaker state persist across calls.
17
+ */
18
+ export declare function getSharedClient(): GeminiClient;
19
+ /** Reset all shared state (for testing) */
20
+ export declare function resetSharedClient(): void;
21
+ /**
22
+ * Token usage from a Gemini response
23
+ */
24
+ export interface TokenUsage {
25
+ inputTokens: number;
26
+ outputTokens: number;
27
+ cachedTokens: number;
28
+ thinkingTokens: number;
29
+ totalTokens: number;
30
+ }
31
+ /**
32
+ * Response from Gemini API
33
+ */
34
+ export interface GeminiResponse {
35
+ text: string;
36
+ usage: TokenUsage;
37
+ model: string;
38
+ processingTimeMs: number;
39
+ }
40
+ /**
41
+ * File reference for multimodal requests
42
+ */
43
+ export interface FileRef {
44
+ mimeType: AllowedMimeType;
45
+ data: string;
46
+ sizeBytes: number;
47
+ }
48
+ /**
49
+ * Gemini Client with rate limiting and circuit breaker
50
+ */
51
+ export declare class GeminiClient {
52
+ private readonly client;
53
+ private readonly config;
54
+ private readonly rateLimiter;
55
+ private readonly circuitBreaker;
56
+ private readonly _contextCache;
57
+ constructor(configOverrides?: Partial<GeminiConfig>);
58
+ /**
59
+ * Fast mode: <2s target, temperature 0.0, JSON output
60
+ * Use for quick analysis tasks
61
+ *
62
+ * @param prompt - Text prompt
63
+ * @param schema - Optional JSON response schema
64
+ * @param options - Optional overrides (e.g. maxOutputTokens for large structured extraction)
65
+ */
66
+ fast(prompt: string, schema?: object, options?: {
67
+ maxOutputTokens?: number;
68
+ requestTimeout?: number;
69
+ }): Promise<GeminiResponse>;
70
+ /**
71
+ * Thinking mode: 3-8s target, extended reasoning
72
+ * Uses Gemini 3's thinkingLevel (HIGH or MINIMAL)
73
+ */
74
+ thinking(prompt: string, level?: ThinkingLevel): Promise<GeminiResponse>;
75
+ /**
76
+ * Multimodal mode: analyze image with prompt
77
+ * 5-15s target, supports images and PDFs
78
+ */
79
+ analyzeImage(prompt: string, file: FileRef, options?: {
80
+ schema?: object;
81
+ mediaResolution?: MediaResolution;
82
+ thinkingConfig?: {
83
+ thinkingLevel: ThinkingLevel;
84
+ };
85
+ }): Promise<GeminiResponse>;
86
+ /**
87
+ * Analyze a PDF document
88
+ */
89
+ analyzePDF(prompt: string, file: FileRef, schema?: object): Promise<GeminiResponse>;
90
+ /**
91
+ * Core generation method with retry logic
92
+ */
93
+ private generate;
94
+ /**
95
+ * Execute request with exponential backoff retry
96
+ */
97
+ private executeWithRetry;
98
+ /**
99
+ * Build generation config from options
100
+ */
101
+ private buildGenerationConfig;
102
+ /**
103
+ * Estimate tokens for a request
104
+ */
105
+ private estimateRequestTokens;
106
+ /**
107
+ * Create FileRef from a file path
108
+ */
109
+ static fileRefFromPath(filePath: string): FileRef;
110
+ /**
111
+ * Create FileRef from a buffer
112
+ */
113
+ static fileRefFromBuffer(buffer: Buffer, mimeType: AllowedMimeType): FileRef;
114
+ /**
115
+ * Create cached content for document context.
116
+ * Used when processing multiple images from the same document -
117
+ * cache the OCR text context once, then reference it for each image.
118
+ *
119
+ * @param contextText - Document OCR text to cache
120
+ * @param ttlSeconds - Cache TTL in seconds (default: 3600 = 1 hour)
121
+ * @returns Cache identifier for use with generateWithCache()
122
+ */
123
+ createCachedContent(contextText: string, ttlSeconds?: number): Promise<string>;
124
+ /**
125
+ * Remove all expired entries from the context cache.
126
+ * Called as periodic cleanup when createCachedContent is invoked.
127
+ */
128
+ private cleanExpiredCacheEntries;
129
+ /**
130
+ * Generate content using cached context + new image.
131
+ * Prepends cached text context to the image analysis prompt.
132
+ */
133
+ generateWithCache(cacheId: string, prompt: string, file: FileRef, options?: {
134
+ schema?: object;
135
+ mediaResolution?: MediaResolution;
136
+ }): Promise<GeminiResponse>;
137
+ /**
138
+ * Delete a cached context
139
+ */
140
+ deleteCachedContent(cacheId: string): boolean;
141
+ /**
142
+ * Process multiple image analysis requests efficiently.
143
+ * Handles rate limiting and provides progress tracking.
144
+ * NOT true async batch API (Gemini async batch requires server-side setup) -
145
+ * this is sequential with optimal rate limiting.
146
+ */
147
+ batchAnalyzeImages(requests: Array<{
148
+ prompt: string;
149
+ file: FileRef;
150
+ options?: {
151
+ schema?: object;
152
+ mediaResolution?: MediaResolution;
153
+ };
154
+ }>, onProgress?: (completed: number, total: number) => void): Promise<Array<{
155
+ index: number;
156
+ result?: GeminiResponse;
157
+ error?: string;
158
+ }>>;
159
+ /**
160
+ * Get client status (rate limiter + circuit breaker)
161
+ */
162
+ getStatus(): {
163
+ model: string;
164
+ rateLimiter: import("./rate-limiter.js").RateLimiterStatus;
165
+ circuitBreaker: import("./circuit-breaker.js").CircuitBreakerStatus;
166
+ };
167
+ /**
168
+ * Reset rate limiter and circuit breaker (for testing)
169
+ */
170
+ reset(): void;
171
+ private sleep;
172
+ }
173
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/services/gemini/client.ts"],"names":[],"mappings":"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"}