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