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 @@
|
|
|
1
|
+
{"version":3,"file":"provenance.js","sourceRoot":"","sources":["../../src/models/provenance.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,MAAM,CAAN,IAAY,cA8BX;AA9BD,WAAY,cAAc;IACxB,qCAAqC;IACrC,uCAAqB,CAAA;IAErB,+CAA+C;IAC/C,2CAAyB,CAAA;IAEzB,0CAA0C;IAC1C,iCAAe,CAAA;IAEf,iEAAiE;IACjE,iCAAe,CAAA;IAEf,wDAAwD;IACxD,qDAAmC,CAAA;IAEnC,0EAA0E;IAC1E,2CAAyB,CAAA;IAEzB,uDAAuD;IACvD,yCAAuB,CAAA;IAEvB,oEAAoE;IACpE,2CAAyB,CAAA;IAEzB,8DAA8D;IAC9D,2CAAyB,CAAA;IAEzB,yFAAyF;IACzF,yCAAuB,CAAA;AACzB,CAAC,EA9BW,cAAc,KAAd,cAAc,QA8BzB;AAED;;;;GAIG;AACH,gEAAgE;AAChE,yFAAyF;AACzF,MAAM,CAAC,MAAM,sBAAsB,GAAmC;IACpE,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC5B,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;IAC9B,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;IACzB,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,EAAY,wCAAwC;IAC7E,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,cAAc;IACnD,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC,EAAO,wCAAwC;IAC7E,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC,EAAQ,+DAA+D;IACpG,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC,EAAS,wCAAwC;IAC/E,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC,EAAS,wCAAwC;IAC/E,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC,CAAQ,wEAAwE;CAC9G,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UploadedFile interface for Datalab cloud file uploads
|
|
3
|
+
* Provenance depth: 0 (root level, parallel to DOCUMENT)
|
|
4
|
+
*/
|
|
5
|
+
export interface UploadedFile {
|
|
6
|
+
id: string;
|
|
7
|
+
local_path: string;
|
|
8
|
+
file_name: string;
|
|
9
|
+
file_hash: string;
|
|
10
|
+
file_size: number;
|
|
11
|
+
content_type: string;
|
|
12
|
+
datalab_file_id: string | null;
|
|
13
|
+
datalab_reference: string | null;
|
|
14
|
+
upload_status: 'pending' | 'uploading' | 'confirming' | 'complete' | 'failed';
|
|
15
|
+
error_message: string | null;
|
|
16
|
+
created_at: string;
|
|
17
|
+
completed_at: string | null;
|
|
18
|
+
provenance_id: string;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=uploaded-file.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uploaded-file.d.ts","sourceRoot":"","sources":["../../src/models/uploaded-file.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,aAAa,EAAE,SAAS,GAAG,WAAW,GAAG,YAAY,GAAG,UAAU,GAAG,QAAQ,CAAC;IAC9E,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;CACvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uploaded-file.js","sourceRoot":"","sources":["../../src/models/uploaded-file.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Server Error Handling
|
|
3
|
+
*
|
|
4
|
+
* FAIL FAST: All errors throw immediately with descriptive context.
|
|
5
|
+
* NO graceful degradation, NO fallbacks.
|
|
6
|
+
*
|
|
7
|
+
* @module server/errors
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Error categories for MCP tool errors
|
|
11
|
+
* Each category maps to specific failure modes for debugging
|
|
12
|
+
*/
|
|
13
|
+
export type ErrorCategory = 'VALIDATION_ERROR' | 'DATABASE_NOT_FOUND' | 'DATABASE_NOT_SELECTED' | 'DATABASE_ALREADY_EXISTS' | 'DOCUMENT_NOT_FOUND' | 'PROVENANCE_NOT_FOUND' | 'PROVENANCE_CHAIN_BROKEN' | 'INTEGRITY_VERIFICATION_FAILED' | 'OCR_API_ERROR' | 'OCR_RATE_LIMIT' | 'OCR_TIMEOUT' | 'GPU_NOT_AVAILABLE' | 'EMBEDDING_FAILED' | 'VLM_API_ERROR' | 'VLM_RATE_LIMIT' | 'IMAGE_EXTRACTION_FAILED' | 'FORM_FILL_API_ERROR' | 'CLUSTERING_ERROR' | 'GPU_OUT_OF_MEMORY' | 'EMBEDDING_MODEL_ERROR' | 'PATH_NOT_FOUND' | 'PATH_NOT_DIRECTORY' | 'PERMISSION_DENIED' | 'INTERNAL_ERROR';
|
|
14
|
+
/**
|
|
15
|
+
* MCPError - Structured error class for all MCP tool failures
|
|
16
|
+
*
|
|
17
|
+
* FAIL FAST: Thrown immediately when any error condition is detected.
|
|
18
|
+
* Provides category, message, and optional details for debugging.
|
|
19
|
+
*/
|
|
20
|
+
export declare class MCPError extends Error {
|
|
21
|
+
readonly category: ErrorCategory;
|
|
22
|
+
readonly details?: Record<string, unknown>;
|
|
23
|
+
constructor(category: ErrorCategory, message: string, details?: Record<string, unknown>);
|
|
24
|
+
/**
|
|
25
|
+
* Create error from unknown caught value
|
|
26
|
+
* FAIL FAST: Always produces a typed error
|
|
27
|
+
*/
|
|
28
|
+
static fromUnknown(error: unknown, defaultCategory?: ErrorCategory): MCPError;
|
|
29
|
+
/**
|
|
30
|
+
* Convert to JSON for logging/serialization
|
|
31
|
+
*/
|
|
32
|
+
toJSON(): Record<string, unknown>;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Recovery hint for AI agents to self-correct after errors.
|
|
36
|
+
* Every ErrorCategory maps to a suggested tool and human-readable hint.
|
|
37
|
+
*/
|
|
38
|
+
export interface RecoveryHint {
|
|
39
|
+
tool: string;
|
|
40
|
+
hint: string;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Get recovery hint for an error category.
|
|
44
|
+
* Exported for testing and direct use.
|
|
45
|
+
*/
|
|
46
|
+
export declare function getRecoveryHint(category: ErrorCategory): RecoveryHint;
|
|
47
|
+
/**
|
|
48
|
+
* Format MCPError for tool response
|
|
49
|
+
* ALWAYS includes category, message, recovery hint, and optional details.
|
|
50
|
+
* The recovery field tells AI agents which tool to call next and how to fix the issue.
|
|
51
|
+
*/
|
|
52
|
+
export declare function formatErrorResponse(error: MCPError): {
|
|
53
|
+
success: false;
|
|
54
|
+
error: {
|
|
55
|
+
category: ErrorCategory;
|
|
56
|
+
message: string;
|
|
57
|
+
recovery: RecoveryHint;
|
|
58
|
+
details?: Record<string, unknown>;
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Create validation error
|
|
63
|
+
*/
|
|
64
|
+
export declare function validationError(message: string, details?: Record<string, unknown>): MCPError;
|
|
65
|
+
/**
|
|
66
|
+
* Create database not selected error
|
|
67
|
+
*/
|
|
68
|
+
export declare function databaseNotSelectedError(): MCPError;
|
|
69
|
+
/**
|
|
70
|
+
* Create database not found error
|
|
71
|
+
*/
|
|
72
|
+
export declare function databaseNotFoundError(name: string, storagePath?: string): MCPError;
|
|
73
|
+
/**
|
|
74
|
+
* Create database already exists error
|
|
75
|
+
*/
|
|
76
|
+
export declare function databaseAlreadyExistsError(name: string): MCPError;
|
|
77
|
+
/**
|
|
78
|
+
* Create document not found error
|
|
79
|
+
*/
|
|
80
|
+
export declare function documentNotFoundError(documentId: string): MCPError;
|
|
81
|
+
/**
|
|
82
|
+
* Create provenance not found error
|
|
83
|
+
*/
|
|
84
|
+
export declare function provenanceNotFoundError(itemId: string): MCPError;
|
|
85
|
+
/**
|
|
86
|
+
* Create path not found error
|
|
87
|
+
*/
|
|
88
|
+
export declare function pathNotFoundError(path: string): MCPError;
|
|
89
|
+
/**
|
|
90
|
+
* Create path not directory error
|
|
91
|
+
*/
|
|
92
|
+
export declare function pathNotDirectoryError(path: string): MCPError;
|
|
93
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/server/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH;;;GAGG;AACH,MAAM,MAAM,aAAa,GAErB,kBAAkB,GAGlB,oBAAoB,GACpB,uBAAuB,GACvB,yBAAyB,GAGzB,oBAAoB,GAGpB,sBAAsB,GACtB,yBAAyB,GACzB,+BAA+B,GAG/B,eAAe,GACf,gBAAgB,GAChB,aAAa,GAGb,mBAAmB,GACnB,kBAAkB,GAGlB,eAAe,GACf,gBAAgB,GAGhB,yBAAyB,GAGzB,qBAAqB,GAGrB,kBAAkB,GAGlB,mBAAmB,GACnB,uBAAuB,GAGvB,gBAAgB,GAChB,oBAAoB,GACpB,mBAAmB,GAGnB,gBAAgB,CAAC;AAkFrB;;;;;GAKG;AACH,qBAAa,QAAS,SAAQ,KAAK;IACjC,SAAgB,QAAQ,EAAE,aAAa,CAAC;IACxC,SAAgB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAEtC,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAYvF;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,eAAe,GAAE,aAAgC,GAAG,QAAQ;IA6B/F;;OAEG;IACH,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CASlC;AAMD;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAiCD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,aAAa,GAAG,YAAY,CAErE;AAMD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,QAAQ,GAAG;IACpD,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,EAAE;QACL,QAAQ,EAAE,aAAa,CAAC;QACxB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,YAAY,CAAC;QACvB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,CAAC;CACH,CAUA;AAMD;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,QAAQ,CAE5F;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,QAAQ,CAEnD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,QAAQ,CAKlF;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAIjE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,CAIlE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAIhE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAIxD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAI5D"}
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Server Error Handling
|
|
3
|
+
*
|
|
4
|
+
* FAIL FAST: All errors throw immediately with descriptive context.
|
|
5
|
+
* NO graceful degradation, NO fallbacks.
|
|
6
|
+
*
|
|
7
|
+
* @module server/errors
|
|
8
|
+
*/
|
|
9
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
10
|
+
// ERROR NAME TO CATEGORY MAPPING
|
|
11
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
12
|
+
/**
|
|
13
|
+
* Valid ErrorCategory values for runtime checking (OCRError has its own category field)
|
|
14
|
+
*/
|
|
15
|
+
const VALID_CATEGORIES = new Set([
|
|
16
|
+
'VALIDATION_ERROR', 'DATABASE_NOT_FOUND', 'DATABASE_NOT_SELECTED',
|
|
17
|
+
'DATABASE_ALREADY_EXISTS', 'DOCUMENT_NOT_FOUND', 'PROVENANCE_NOT_FOUND',
|
|
18
|
+
'PROVENANCE_CHAIN_BROKEN', 'INTEGRITY_VERIFICATION_FAILED',
|
|
19
|
+
'OCR_API_ERROR', 'OCR_RATE_LIMIT', 'OCR_TIMEOUT',
|
|
20
|
+
'GPU_NOT_AVAILABLE', 'GPU_OUT_OF_MEMORY', 'EMBEDDING_FAILED', 'EMBEDDING_MODEL_ERROR',
|
|
21
|
+
'VLM_API_ERROR', 'VLM_RATE_LIMIT',
|
|
22
|
+
'IMAGE_EXTRACTION_FAILED', 'FORM_FILL_API_ERROR', 'CLUSTERING_ERROR',
|
|
23
|
+
'PATH_NOT_FOUND', 'PATH_NOT_DIRECTORY', 'PERMISSION_DENIED',
|
|
24
|
+
'INTERNAL_ERROR',
|
|
25
|
+
]);
|
|
26
|
+
/**
|
|
27
|
+
* Check if a string is a valid ErrorCategory
|
|
28
|
+
*/
|
|
29
|
+
function isValidCategory(value) {
|
|
30
|
+
return VALID_CATEGORIES.has(value);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Map custom error class names to MCPError categories.
|
|
34
|
+
* CS-ERR-001: Every custom error gets its appropriate category so clients
|
|
35
|
+
* can programmatically distinguish rate limits from GPU failures from DB locks.
|
|
36
|
+
*
|
|
37
|
+
* OCRError and its subclasses are handled specially in fromUnknown() because
|
|
38
|
+
* they carry their own .category field with more specific information
|
|
39
|
+
* (e.g., OCR_RATE_LIMIT, OCR_TIMEOUT, FORM_FILL_API_ERROR).
|
|
40
|
+
*/
|
|
41
|
+
const ERROR_NAME_TO_CATEGORY = {
|
|
42
|
+
// Validation
|
|
43
|
+
ValidationError: 'VALIDATION_ERROR',
|
|
44
|
+
// Database / Storage
|
|
45
|
+
DatabaseError: 'DATABASE_NOT_FOUND',
|
|
46
|
+
VectorError: 'INTERNAL_ERROR',
|
|
47
|
+
MigrationError: 'INTERNAL_ERROR',
|
|
48
|
+
// OCR (default category; subclasses use their own .category field)
|
|
49
|
+
OCRError: 'OCR_API_ERROR',
|
|
50
|
+
OCRAPIError: 'OCR_API_ERROR',
|
|
51
|
+
OCRRateLimitError: 'OCR_RATE_LIMIT',
|
|
52
|
+
OCRTimeoutError: 'OCR_TIMEOUT',
|
|
53
|
+
OCRFileError: 'OCR_API_ERROR',
|
|
54
|
+
OCRAuthenticationError: 'OCR_API_ERROR',
|
|
55
|
+
// Embedding / GPU
|
|
56
|
+
EmbeddingError: 'EMBEDDING_FAILED',
|
|
57
|
+
// Provenance
|
|
58
|
+
ProvenanceError: 'PROVENANCE_CHAIN_BROKEN',
|
|
59
|
+
VerifierError: 'INTEGRITY_VERIFICATION_FAILED',
|
|
60
|
+
ExporterError: 'INTERNAL_ERROR',
|
|
61
|
+
// Gemini / VLM
|
|
62
|
+
CircuitBreakerOpenError: 'VLM_API_ERROR',
|
|
63
|
+
// Clustering
|
|
64
|
+
ClusteringError: 'CLUSTERING_ERROR',
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* OCR error class names that carry their own `.category` field.
|
|
68
|
+
* Used in fromUnknown() to prefer the error's category over the default mapping.
|
|
69
|
+
*/
|
|
70
|
+
const OCR_ERROR_NAMES = new Set([
|
|
71
|
+
'OCRError', 'OCRAPIError', 'OCRRateLimitError',
|
|
72
|
+
'OCRTimeoutError', 'OCRFileError', 'OCRAuthenticationError',
|
|
73
|
+
]);
|
|
74
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
75
|
+
// MCP ERROR CLASS
|
|
76
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
77
|
+
/**
|
|
78
|
+
* MCPError - Structured error class for all MCP tool failures
|
|
79
|
+
*
|
|
80
|
+
* FAIL FAST: Thrown immediately when any error condition is detected.
|
|
81
|
+
* Provides category, message, and optional details for debugging.
|
|
82
|
+
*/
|
|
83
|
+
export class MCPError extends Error {
|
|
84
|
+
category;
|
|
85
|
+
details;
|
|
86
|
+
constructor(category, message, details) {
|
|
87
|
+
super(message);
|
|
88
|
+
this.name = 'MCPError';
|
|
89
|
+
this.category = category;
|
|
90
|
+
this.details = details;
|
|
91
|
+
// Preserve stack trace in V8 environments
|
|
92
|
+
if (Error.captureStackTrace) {
|
|
93
|
+
Error.captureStackTrace(this, MCPError);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Create error from unknown caught value
|
|
98
|
+
* FAIL FAST: Always produces a typed error
|
|
99
|
+
*/
|
|
100
|
+
static fromUnknown(error, defaultCategory = 'INTERNAL_ERROR') {
|
|
101
|
+
if (error instanceof MCPError) {
|
|
102
|
+
return error;
|
|
103
|
+
}
|
|
104
|
+
if (error instanceof Error) {
|
|
105
|
+
// Map custom error class names to their appropriate MCPError categories.
|
|
106
|
+
// CS-ERR-001: Every custom error class maps to a specific category so
|
|
107
|
+
// clients can programmatically distinguish failure modes.
|
|
108
|
+
const category = ERROR_NAME_TO_CATEGORY[error.name] ?? defaultCategory;
|
|
109
|
+
// For OCRError subclasses, preserve the more specific category from the error itself
|
|
110
|
+
const ocrCategory = error.category;
|
|
111
|
+
const resolvedCategory = OCR_ERROR_NAMES.has(error.name) && ocrCategory && isValidCategory(ocrCategory)
|
|
112
|
+
? ocrCategory
|
|
113
|
+
: category;
|
|
114
|
+
return new MCPError(resolvedCategory, error.message, {
|
|
115
|
+
originalName: error.name,
|
|
116
|
+
stack: error.stack,
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
return new MCPError(defaultCategory, String(error), {
|
|
120
|
+
originalValue: error,
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Convert to JSON for logging/serialization
|
|
125
|
+
*/
|
|
126
|
+
toJSON() {
|
|
127
|
+
return {
|
|
128
|
+
name: this.name,
|
|
129
|
+
category: this.category,
|
|
130
|
+
message: this.message,
|
|
131
|
+
details: this.details,
|
|
132
|
+
stack: this.stack,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Recovery hints for every error category.
|
|
138
|
+
* Agents use these to determine the next action after a failure.
|
|
139
|
+
*/
|
|
140
|
+
const RECOVERY_HINTS = {
|
|
141
|
+
VALIDATION_ERROR: { tool: 'ocr_guide', hint: 'Check parameter types and required fields' },
|
|
142
|
+
DATABASE_NOT_FOUND: { tool: 'ocr_db_list', hint: 'Use ocr_db_list to see available databases' },
|
|
143
|
+
DATABASE_NOT_SELECTED: { tool: 'ocr_db_select', hint: 'Use ocr_db_list to find database names, then ocr_db_select' },
|
|
144
|
+
DATABASE_ALREADY_EXISTS: { tool: 'ocr_db_list', hint: 'Choose a unique database name' },
|
|
145
|
+
DOCUMENT_NOT_FOUND: { tool: 'ocr_document_list', hint: 'Use ocr_document_list to browse available documents' },
|
|
146
|
+
PROVENANCE_NOT_FOUND: { tool: 'ocr_provenance_get', hint: 'Verify the item_id exists using ocr_document_get first' },
|
|
147
|
+
PROVENANCE_CHAIN_BROKEN: { tool: 'ocr_provenance_verify', hint: 'Re-ingest the document to rebuild provenance chain' },
|
|
148
|
+
INTEGRITY_VERIFICATION_FAILED: { tool: 'ocr_provenance_verify', hint: 'Compare content_hash against stored hash; re-ingest if tampered' },
|
|
149
|
+
OCR_API_ERROR: { tool: 'ocr_health_check', hint: 'Check DATALAB_API_KEY env var and Datalab API status' },
|
|
150
|
+
OCR_RATE_LIMIT: { tool: 'ocr_process_pending', hint: 'Wait and retry with lower max_concurrent' },
|
|
151
|
+
OCR_TIMEOUT: { tool: 'ocr_process_pending', hint: 'Retry with smaller documents or fewer pages' },
|
|
152
|
+
GPU_NOT_AVAILABLE: { tool: 'ocr_health_check', hint: 'Check CUDA/MPS availability; system will fall back to CPU' },
|
|
153
|
+
GPU_OUT_OF_MEMORY: { tool: 'ocr_config_set', hint: 'Reduce embedding_batch_size via ocr_config_set' },
|
|
154
|
+
EMBEDDING_FAILED: { tool: 'ocr_health_check', hint: 'Check Python embedding worker and GPU memory' },
|
|
155
|
+
EMBEDDING_MODEL_ERROR: { tool: 'ocr_health_check', hint: 'Verify nomic-embed-text model is downloaded' },
|
|
156
|
+
VLM_API_ERROR: { tool: 'ocr_vlm_status', hint: 'Check GEMINI_API_KEY and circuit breaker state' },
|
|
157
|
+
VLM_RATE_LIMIT: { tool: 'ocr_vlm_status', hint: 'Wait for rate limit reset; check rate_limiter.reset_in_ms' },
|
|
158
|
+
IMAGE_EXTRACTION_FAILED: { tool: 'ocr_health_check', hint: 'Check PyMuPDF/Pillow installation' },
|
|
159
|
+
FORM_FILL_API_ERROR: { tool: 'ocr_health_check', hint: 'Check DATALAB_API_KEY and form fill endpoint' },
|
|
160
|
+
CLUSTERING_ERROR: { tool: 'ocr_health_check', hint: 'Check Python clustering worker (scikit-learn)' },
|
|
161
|
+
PATH_NOT_FOUND: { tool: 'ocr_guide', hint: 'Verify the file path exists on the filesystem' },
|
|
162
|
+
PATH_NOT_DIRECTORY: { tool: 'ocr_guide', hint: 'Provide a directory path, not a file path' },
|
|
163
|
+
PERMISSION_DENIED: { tool: 'ocr_guide', hint: 'Check filesystem permissions on the target path' },
|
|
164
|
+
INTERNAL_ERROR: { tool: 'ocr_health_check', hint: 'Run ocr_health_check for diagnostics' },
|
|
165
|
+
};
|
|
166
|
+
/**
|
|
167
|
+
* Get recovery hint for an error category.
|
|
168
|
+
* Exported for testing and direct use.
|
|
169
|
+
*/
|
|
170
|
+
export function getRecoveryHint(category) {
|
|
171
|
+
return RECOVERY_HINTS[category];
|
|
172
|
+
}
|
|
173
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
174
|
+
// ERROR RESPONSE FORMATTING
|
|
175
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
176
|
+
/**
|
|
177
|
+
* Format MCPError for tool response
|
|
178
|
+
* ALWAYS includes category, message, recovery hint, and optional details.
|
|
179
|
+
* The recovery field tells AI agents which tool to call next and how to fix the issue.
|
|
180
|
+
*/
|
|
181
|
+
export function formatErrorResponse(error) {
|
|
182
|
+
return {
|
|
183
|
+
success: false,
|
|
184
|
+
error: {
|
|
185
|
+
category: error.category,
|
|
186
|
+
message: error.message,
|
|
187
|
+
recovery: RECOVERY_HINTS[error.category],
|
|
188
|
+
details: error.details,
|
|
189
|
+
},
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
193
|
+
// ERROR FACTORY FUNCTIONS
|
|
194
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
195
|
+
/**
|
|
196
|
+
* Create validation error
|
|
197
|
+
*/
|
|
198
|
+
export function validationError(message, details) {
|
|
199
|
+
return new MCPError('VALIDATION_ERROR', message, details);
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Create database not selected error
|
|
203
|
+
*/
|
|
204
|
+
export function databaseNotSelectedError() {
|
|
205
|
+
return new MCPError('DATABASE_NOT_SELECTED', 'No database selected. Use ocr_db_list to see available databases, then ocr_db_select to choose one.');
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Create database not found error
|
|
209
|
+
*/
|
|
210
|
+
export function databaseNotFoundError(name, storagePath) {
|
|
211
|
+
return new MCPError('DATABASE_NOT_FOUND', `Database "${name}" not found`, {
|
|
212
|
+
databaseName: name,
|
|
213
|
+
storagePath,
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Create database already exists error
|
|
218
|
+
*/
|
|
219
|
+
export function databaseAlreadyExistsError(name) {
|
|
220
|
+
return new MCPError('DATABASE_ALREADY_EXISTS', `Database "${name}" already exists`, {
|
|
221
|
+
databaseName: name,
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Create document not found error
|
|
226
|
+
*/
|
|
227
|
+
export function documentNotFoundError(documentId) {
|
|
228
|
+
return new MCPError('DOCUMENT_NOT_FOUND', `Document not found: ${documentId}. Use ocr_document_list to browse available documents.`, {
|
|
229
|
+
documentId,
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Create provenance not found error
|
|
234
|
+
*/
|
|
235
|
+
export function provenanceNotFoundError(itemId) {
|
|
236
|
+
return new MCPError('PROVENANCE_NOT_FOUND', `Provenance for "${itemId}" not found`, {
|
|
237
|
+
itemId,
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Create path not found error
|
|
242
|
+
*/
|
|
243
|
+
export function pathNotFoundError(path) {
|
|
244
|
+
return new MCPError('PATH_NOT_FOUND', `Path does not exist: ${path}`, {
|
|
245
|
+
path,
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Create path not directory error
|
|
250
|
+
*/
|
|
251
|
+
export function pathNotDirectoryError(path) {
|
|
252
|
+
return new MCPError('PATH_NOT_DIRECTORY', `Path is not a directory: ${path}`, {
|
|
253
|
+
path,
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/server/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internal Event Bus
|
|
3
|
+
*
|
|
4
|
+
* Typed event emitter for internal system events.
|
|
5
|
+
* Listeners can trigger webhooks, audit log entries, or internal actions.
|
|
6
|
+
*
|
|
7
|
+
* CRITICAL: NEVER use console.log() - stdout is JSON-RPC protocol.
|
|
8
|
+
*
|
|
9
|
+
* @module server/events
|
|
10
|
+
*/
|
|
11
|
+
import { EventEmitter } from 'events';
|
|
12
|
+
/** Event types emitted by the system */
|
|
13
|
+
export type SystemEventType = 'document.ingested' | 'document.processed' | 'document.deleted' | 'workflow.state_changed' | 'annotation.created' | 'annotation.resolved' | 'search.alert_triggered' | 'obligation.overdue' | 'webhook.triggered' | 'user.created';
|
|
14
|
+
/** All valid event type values for runtime validation */
|
|
15
|
+
export declare const VALID_EVENT_TYPES: readonly SystemEventType[];
|
|
16
|
+
export interface SystemEvent {
|
|
17
|
+
type: SystemEventType;
|
|
18
|
+
timestamp: string;
|
|
19
|
+
entityType?: string;
|
|
20
|
+
entityId?: string;
|
|
21
|
+
userId?: string;
|
|
22
|
+
sessionId?: string;
|
|
23
|
+
data: Record<string, unknown>;
|
|
24
|
+
}
|
|
25
|
+
declare class EventBus extends EventEmitter {
|
|
26
|
+
/** Emit a typed system event */
|
|
27
|
+
emitEvent(event: SystemEvent): void;
|
|
28
|
+
/** Subscribe to a specific event type */
|
|
29
|
+
onEvent(type: SystemEventType | '*', handler: (event: SystemEvent) => void): void;
|
|
30
|
+
/** Subscribe once */
|
|
31
|
+
onceEvent(type: SystemEventType, handler: (event: SystemEvent) => void): void;
|
|
32
|
+
}
|
|
33
|
+
/** Singleton event bus */
|
|
34
|
+
export declare const eventBus: EventBus;
|
|
35
|
+
export {};
|
|
36
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/server/events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAMtC,wCAAwC;AACxC,MAAM,MAAM,eAAe,GACvB,mBAAmB,GACnB,oBAAoB,GACpB,kBAAkB,GAClB,wBAAwB,GACxB,oBAAoB,GACpB,qBAAqB,GACrB,wBAAwB,GACxB,oBAAoB,GACpB,mBAAmB,GACnB,cAAc,CAAC;AAEnB,yDAAyD;AACzD,eAAO,MAAM,iBAAiB,EAAE,SAAS,eAAe,EAW9C,CAAC;AAEX,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,eAAe,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAMD,cAAM,QAAS,SAAQ,YAAY;IACjC,gCAAgC;IAChC,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAMnC,yCAAyC;IACzC,OAAO,CAAC,IAAI,EAAE,eAAe,GAAG,GAAG,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI;IAIjF,qBAAqB;IACrB,SAAS,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI;CAG9E;AAED,0BAA0B;AAC1B,eAAO,MAAM,QAAQ,UAAiB,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internal Event Bus
|
|
3
|
+
*
|
|
4
|
+
* Typed event emitter for internal system events.
|
|
5
|
+
* Listeners can trigger webhooks, audit log entries, or internal actions.
|
|
6
|
+
*
|
|
7
|
+
* CRITICAL: NEVER use console.log() - stdout is JSON-RPC protocol.
|
|
8
|
+
*
|
|
9
|
+
* @module server/events
|
|
10
|
+
*/
|
|
11
|
+
import { EventEmitter } from 'events';
|
|
12
|
+
/** All valid event type values for runtime validation */
|
|
13
|
+
export const VALID_EVENT_TYPES = [
|
|
14
|
+
'document.ingested',
|
|
15
|
+
'document.processed',
|
|
16
|
+
'document.deleted',
|
|
17
|
+
'workflow.state_changed',
|
|
18
|
+
'annotation.created',
|
|
19
|
+
'annotation.resolved',
|
|
20
|
+
'search.alert_triggered',
|
|
21
|
+
'obligation.overdue',
|
|
22
|
+
'webhook.triggered',
|
|
23
|
+
'user.created',
|
|
24
|
+
];
|
|
25
|
+
// =============================================================================
|
|
26
|
+
// EVENT BUS
|
|
27
|
+
// =============================================================================
|
|
28
|
+
class EventBus extends EventEmitter {
|
|
29
|
+
/** Emit a typed system event */
|
|
30
|
+
emitEvent(event) {
|
|
31
|
+
console.error(`[EventBus] ${event.type}: ${event.entityType ?? ''}/${event.entityId ?? ''}`);
|
|
32
|
+
this.emit(event.type, event);
|
|
33
|
+
this.emit('*', event); // Wildcard listener for all events
|
|
34
|
+
}
|
|
35
|
+
/** Subscribe to a specific event type */
|
|
36
|
+
onEvent(type, handler) {
|
|
37
|
+
this.on(type, handler);
|
|
38
|
+
}
|
|
39
|
+
/** Subscribe once */
|
|
40
|
+
onceEvent(type, handler) {
|
|
41
|
+
this.once(type, handler);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/** Singleton event bus */
|
|
45
|
+
export const eventBus = new EventBus();
|
|
46
|
+
// Set higher listener limit since many tools may subscribe
|
|
47
|
+
eventBus.setMaxListeners(100);
|
|
48
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/server/events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAmBtC,yDAAyD;AACzD,MAAM,CAAC,MAAM,iBAAiB,GAA+B;IAC3D,mBAAmB;IACnB,oBAAoB;IACpB,kBAAkB;IAClB,wBAAwB;IACxB,oBAAoB;IACpB,qBAAqB;IACrB,wBAAwB;IACxB,oBAAoB;IACpB,mBAAmB;IACnB,cAAc;CACN,CAAC;AAYX,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF,MAAM,QAAS,SAAQ,YAAY;IACjC,gCAAgC;IAChC,SAAS,CAAC,KAAkB;QAC1B,OAAO,CAAC,KAAK,CAAC,cAAc,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,UAAU,IAAI,EAAE,IAAI,KAAK,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC,CAAC;QAC7F,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,mCAAmC;IAC5D,CAAC;IAED,yCAAyC;IACzC,OAAO,CAAC,IAA2B,EAAE,OAAqC;QACxE,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACzB,CAAC;IAED,qBAAqB;IACrB,SAAS,CAAC,IAAqB,EAAE,OAAqC;QACpE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3B,CAAC;CACF;AAED,0BAA0B;AAC1B,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;AAEvC,2DAA2D;AAC3D,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool-Level Permission System
|
|
3
|
+
*
|
|
4
|
+
* 6 permission scopes, 4 roles.
|
|
5
|
+
* Each tool declares a required scope.
|
|
6
|
+
* Permission check runs before handler execution.
|
|
7
|
+
*
|
|
8
|
+
* FAIL FAST: Unauthorized access throws immediately.
|
|
9
|
+
*
|
|
10
|
+
* CRITICAL: NEVER use console.log() - stdout is reserved for JSON-RPC protocol.
|
|
11
|
+
*
|
|
12
|
+
* @module server/permissions
|
|
13
|
+
*/
|
|
14
|
+
export type PermissionScope = 'ocr:read' | 'ocr:write' | 'ocr:review' | 'ocr:configure' | 'ocr:delete' | 'ocr:admin';
|
|
15
|
+
export type UserRole = 'viewer' | 'reviewer' | 'editor' | 'admin';
|
|
16
|
+
/** Check if a role has a specific permission scope */
|
|
17
|
+
export declare function hasPermission(role: UserRole, scope: PermissionScope): boolean;
|
|
18
|
+
/** Get all scopes for a role */
|
|
19
|
+
export declare function getScopesForRole(role: UserRole): PermissionScope[];
|
|
20
|
+
/** Validate that a role string is valid */
|
|
21
|
+
export declare function isValidRole(role: string): role is UserRole;
|
|
22
|
+
/** Tool name to required scope mapping */
|
|
23
|
+
export declare const TOOL_SCOPES: Record<string, PermissionScope>;
|
|
24
|
+
/** Check permission - returns true if allowed, false if denied. Admin always passes. */
|
|
25
|
+
export declare function checkToolPermission(toolName: string, userRole: UserRole | null): boolean;
|
|
26
|
+
//# sourceMappingURL=permissions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/server/permissions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,MAAM,MAAM,eAAe,GACvB,UAAU,GACV,WAAW,GACX,YAAY,GACZ,eAAe,GACf,YAAY,GACZ,WAAW,CAAC;AAEhB,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;AAyBlE,sDAAsD;AACtD,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,GAAG,OAAO,CAE7E;AAED,gCAAgC;AAChC,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,eAAe,EAAE,CAElE;AAED,2CAA2C;AAC3C,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,QAAQ,CAE1D;AAMD,0CAA0C;AAC1C,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAsIvD,CAAC;AAMF,wFAAwF;AACxF,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,GAAG,OAAO,CASxF"}
|