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":"document-operations.js","sourceRoot":"","sources":["../../../../src/services/storage/database/document-operations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Embedding operations for DatabaseService
|
|
3
|
+
*
|
|
4
|
+
* Handles all CRUD operations for embeddings including batch inserts.
|
|
5
|
+
* Note: Vector data is stored separately in vec_embeddings by VectorService.
|
|
6
|
+
*/
|
|
7
|
+
import Database from 'better-sqlite3';
|
|
8
|
+
import { Embedding } from '../../../models/embedding.js';
|
|
9
|
+
/**
|
|
10
|
+
* Insert an embedding (vector stored separately in vec_embeddings by VectorService)
|
|
11
|
+
*
|
|
12
|
+
* @param db - Database connection
|
|
13
|
+
* @param embedding - Embedding data (created_at will be generated, vector excluded)
|
|
14
|
+
* @param updateMetadataCounts - Callback to update metadata counts
|
|
15
|
+
* @returns string - The embedding ID
|
|
16
|
+
*/
|
|
17
|
+
export declare function insertEmbedding(db: Database.Database, embedding: Omit<Embedding, 'created_at' | 'vector'>, updateMetadataCounts: () => void): string;
|
|
18
|
+
/**
|
|
19
|
+
* Insert multiple embeddings in a batch transaction
|
|
20
|
+
*
|
|
21
|
+
* @param db - Database connection
|
|
22
|
+
* @param embeddings - Array of embedding data
|
|
23
|
+
* @param updateMetadataCounts - Callback to update metadata counts
|
|
24
|
+
* @param transaction - Transaction wrapper function
|
|
25
|
+
* @returns string[] - Array of embedding IDs
|
|
26
|
+
*/
|
|
27
|
+
export declare function insertEmbeddings(db: Database.Database, embeddings: Omit<Embedding, 'created_at' | 'vector'>[], updateMetadataCounts: () => void, transaction: <T>(fn: () => T) => T): string[];
|
|
28
|
+
/**
|
|
29
|
+
* Get an embedding by ID (without vector)
|
|
30
|
+
*
|
|
31
|
+
* @param db - Database connection
|
|
32
|
+
* @param id - Embedding ID
|
|
33
|
+
* @returns Omit<Embedding, 'vector'> | null - The embedding or null if not found
|
|
34
|
+
*/
|
|
35
|
+
export declare function getEmbedding(db: Database.Database, id: string): Omit<Embedding, 'vector'> | null;
|
|
36
|
+
/**
|
|
37
|
+
* Get embedding by chunk ID (without vector)
|
|
38
|
+
*
|
|
39
|
+
* @param db - Database connection
|
|
40
|
+
* @param chunkId - Chunk ID
|
|
41
|
+
* @returns Omit<Embedding, 'vector'> | null - The embedding or null if not found
|
|
42
|
+
*/
|
|
43
|
+
export declare function getEmbeddingByChunkId(db: Database.Database, chunkId: string): Omit<Embedding, 'vector'> | null;
|
|
44
|
+
/**
|
|
45
|
+
* Get embedding by extraction ID (without vector)
|
|
46
|
+
*
|
|
47
|
+
* @param db - Database connection
|
|
48
|
+
* @param extractionId - Extraction ID
|
|
49
|
+
* @returns Omit<Embedding, 'vector'> | null
|
|
50
|
+
*/
|
|
51
|
+
export declare function getEmbeddingByExtractionId(db: Database.Database, extractionId: string): Omit<Embedding, 'vector'> | null;
|
|
52
|
+
/**
|
|
53
|
+
* Get all embeddings for a document (without vectors)
|
|
54
|
+
*
|
|
55
|
+
* @param db - Database connection
|
|
56
|
+
* @param documentId - Document ID
|
|
57
|
+
* @returns Omit<Embedding, 'vector'>[] - Array of embeddings
|
|
58
|
+
*/
|
|
59
|
+
export declare function getEmbeddingsByDocumentId(db: Database.Database, documentId: string, options?: {
|
|
60
|
+
limit?: number;
|
|
61
|
+
offset?: number;
|
|
62
|
+
}): Omit<Embedding, 'vector'>[];
|
|
63
|
+
/**
|
|
64
|
+
* Filter options for getEmbeddingsFiltered
|
|
65
|
+
*/
|
|
66
|
+
export interface EmbeddingFilterOptions {
|
|
67
|
+
document_id?: string;
|
|
68
|
+
source_type?: 'chunk' | 'image' | 'extraction';
|
|
69
|
+
model_name?: string;
|
|
70
|
+
limit?: number;
|
|
71
|
+
offset?: number;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Get embeddings with dynamic filtering by document, source type, model.
|
|
75
|
+
* Does NOT select the vector column (it's huge binary data in vec_embeddings).
|
|
76
|
+
*
|
|
77
|
+
* @param db - Database connection
|
|
78
|
+
* @param filters - Filter options
|
|
79
|
+
* @returns Array of embeddings (without vector) and total count
|
|
80
|
+
*/
|
|
81
|
+
export declare function getEmbeddingsFiltered(db: Database.Database, filters: EmbeddingFilterOptions): {
|
|
82
|
+
embeddings: Array<Omit<Embedding, 'vector'>>;
|
|
83
|
+
total: number;
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* Embedding statistics result
|
|
87
|
+
*/
|
|
88
|
+
export interface EmbeddingStatsResult {
|
|
89
|
+
total_embeddings: number;
|
|
90
|
+
by_source_type: Record<string, {
|
|
91
|
+
count: number;
|
|
92
|
+
avg_duration_ms: number;
|
|
93
|
+
}>;
|
|
94
|
+
by_device: Record<string, number>;
|
|
95
|
+
unembedded_chunks: number;
|
|
96
|
+
unembedded_images: number;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Get embedding statistics with optional document-level scoping.
|
|
100
|
+
*
|
|
101
|
+
* @param db - Database connection
|
|
102
|
+
* @param documentId - Optional document ID to scope stats
|
|
103
|
+
* @returns EmbeddingStatsResult
|
|
104
|
+
*/
|
|
105
|
+
export declare function getEmbeddingStats(db: Database.Database, documentId?: string): EmbeddingStatsResult;
|
|
106
|
+
/**
|
|
107
|
+
* Delete all embeddings for a specific chunk
|
|
108
|
+
*
|
|
109
|
+
* @param db - Database connection
|
|
110
|
+
* @param chunkId - Chunk ID
|
|
111
|
+
* @returns number of embeddings deleted
|
|
112
|
+
*/
|
|
113
|
+
export declare function deleteEmbeddingsByChunkId(db: Database.Database, chunkId: string): number;
|
|
114
|
+
/**
|
|
115
|
+
* Delete all embeddings for a specific image
|
|
116
|
+
*
|
|
117
|
+
* @param db - Database connection
|
|
118
|
+
* @param imageId - Image ID
|
|
119
|
+
* @returns number of embeddings deleted
|
|
120
|
+
*/
|
|
121
|
+
export declare function deleteEmbeddingsByImageId(db: Database.Database, imageId: string): number;
|
|
122
|
+
/**
|
|
123
|
+
* Delete all embeddings for a document
|
|
124
|
+
*
|
|
125
|
+
* @param db - Database connection
|
|
126
|
+
* @param documentId - Document ID
|
|
127
|
+
* @returns number of embeddings deleted
|
|
128
|
+
*/
|
|
129
|
+
export declare function deleteEmbeddingsByDocumentId(db: Database.Database, documentId: string): number;
|
|
130
|
+
//# sourceMappingURL=embedding-operations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embedding-operations.d.ts","sourceRoot":"","sources":["../../../../src/services/storage/database/embedding-operations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Embedding operations for DatabaseService
|
|
3
|
+
*
|
|
4
|
+
* Handles all CRUD operations for embeddings including batch inserts.
|
|
5
|
+
* Note: Vector data is stored separately in vec_embeddings by VectorService.
|
|
6
|
+
*/
|
|
7
|
+
import { runWithForeignKeyCheck } from './helpers.js';
|
|
8
|
+
import { rowToEmbedding } from './converters.js';
|
|
9
|
+
/**
|
|
10
|
+
* Insert an embedding (vector stored separately in vec_embeddings by VectorService)
|
|
11
|
+
*
|
|
12
|
+
* @param db - Database connection
|
|
13
|
+
* @param embedding - Embedding data (created_at will be generated, vector excluded)
|
|
14
|
+
* @param updateMetadataCounts - Callback to update metadata counts
|
|
15
|
+
* @returns string - The embedding ID
|
|
16
|
+
*/
|
|
17
|
+
export function insertEmbedding(db, embedding, updateMetadataCounts) {
|
|
18
|
+
const created_at = new Date().toISOString();
|
|
19
|
+
const stmt = db.prepare(`
|
|
20
|
+
INSERT INTO embeddings (
|
|
21
|
+
id, chunk_id, image_id, extraction_id, document_id, original_text, original_text_length,
|
|
22
|
+
source_file_path, source_file_name, source_file_hash,
|
|
23
|
+
page_number, page_range, character_start, character_end,
|
|
24
|
+
chunk_index, total_chunks, model_name, model_version,
|
|
25
|
+
task_type, inference_mode, gpu_device, provenance_id,
|
|
26
|
+
content_hash, created_at, generation_duration_ms
|
|
27
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
28
|
+
`);
|
|
29
|
+
runWithForeignKeyCheck(stmt, [
|
|
30
|
+
embedding.id,
|
|
31
|
+
embedding.chunk_id,
|
|
32
|
+
embedding.image_id,
|
|
33
|
+
embedding.extraction_id,
|
|
34
|
+
embedding.document_id,
|
|
35
|
+
embedding.original_text,
|
|
36
|
+
embedding.original_text_length,
|
|
37
|
+
embedding.source_file_path,
|
|
38
|
+
embedding.source_file_name,
|
|
39
|
+
embedding.source_file_hash,
|
|
40
|
+
embedding.page_number,
|
|
41
|
+
embedding.page_range,
|
|
42
|
+
embedding.character_start,
|
|
43
|
+
embedding.character_end,
|
|
44
|
+
embedding.chunk_index,
|
|
45
|
+
embedding.total_chunks,
|
|
46
|
+
embedding.model_name,
|
|
47
|
+
embedding.model_version,
|
|
48
|
+
embedding.task_type,
|
|
49
|
+
embedding.inference_mode,
|
|
50
|
+
embedding.gpu_device,
|
|
51
|
+
embedding.provenance_id,
|
|
52
|
+
embedding.content_hash,
|
|
53
|
+
created_at,
|
|
54
|
+
embedding.generation_duration_ms,
|
|
55
|
+
], 'inserting embedding: chunk_id/image_id/extraction_id, document_id, or provenance_id does not exist');
|
|
56
|
+
updateMetadataCounts();
|
|
57
|
+
return embedding.id;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Insert multiple embeddings in a batch transaction
|
|
61
|
+
*
|
|
62
|
+
* @param db - Database connection
|
|
63
|
+
* @param embeddings - Array of embedding data
|
|
64
|
+
* @param updateMetadataCounts - Callback to update metadata counts
|
|
65
|
+
* @param transaction - Transaction wrapper function
|
|
66
|
+
* @returns string[] - Array of embedding IDs
|
|
67
|
+
*/
|
|
68
|
+
export function insertEmbeddings(db, embeddings, updateMetadataCounts, transaction) {
|
|
69
|
+
if (embeddings.length === 0) {
|
|
70
|
+
return [];
|
|
71
|
+
}
|
|
72
|
+
return transaction(() => {
|
|
73
|
+
const created_at = new Date().toISOString();
|
|
74
|
+
const ids = [];
|
|
75
|
+
const stmt = db.prepare(`
|
|
76
|
+
INSERT INTO embeddings (
|
|
77
|
+
id, chunk_id, image_id, extraction_id, document_id, original_text, original_text_length,
|
|
78
|
+
source_file_path, source_file_name, source_file_hash,
|
|
79
|
+
page_number, page_range, character_start, character_end,
|
|
80
|
+
chunk_index, total_chunks, model_name, model_version,
|
|
81
|
+
task_type, inference_mode, gpu_device, provenance_id,
|
|
82
|
+
content_hash, created_at, generation_duration_ms
|
|
83
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
84
|
+
`);
|
|
85
|
+
for (const embedding of embeddings) {
|
|
86
|
+
runWithForeignKeyCheck(stmt, [
|
|
87
|
+
embedding.id,
|
|
88
|
+
embedding.chunk_id,
|
|
89
|
+
embedding.image_id,
|
|
90
|
+
embedding.extraction_id,
|
|
91
|
+
embedding.document_id,
|
|
92
|
+
embedding.original_text,
|
|
93
|
+
embedding.original_text_length,
|
|
94
|
+
embedding.source_file_path,
|
|
95
|
+
embedding.source_file_name,
|
|
96
|
+
embedding.source_file_hash,
|
|
97
|
+
embedding.page_number,
|
|
98
|
+
embedding.page_range,
|
|
99
|
+
embedding.character_start,
|
|
100
|
+
embedding.character_end,
|
|
101
|
+
embedding.chunk_index,
|
|
102
|
+
embedding.total_chunks,
|
|
103
|
+
embedding.model_name,
|
|
104
|
+
embedding.model_version,
|
|
105
|
+
embedding.task_type,
|
|
106
|
+
embedding.inference_mode,
|
|
107
|
+
embedding.gpu_device,
|
|
108
|
+
embedding.provenance_id,
|
|
109
|
+
embedding.content_hash,
|
|
110
|
+
created_at,
|
|
111
|
+
embedding.generation_duration_ms,
|
|
112
|
+
], `inserting embedding "${embedding.id}"`);
|
|
113
|
+
ids.push(embedding.id);
|
|
114
|
+
}
|
|
115
|
+
updateMetadataCounts();
|
|
116
|
+
return ids;
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Get an embedding by ID (without vector)
|
|
121
|
+
*
|
|
122
|
+
* @param db - Database connection
|
|
123
|
+
* @param id - Embedding ID
|
|
124
|
+
* @returns Omit<Embedding, 'vector'> | null - The embedding or null if not found
|
|
125
|
+
*/
|
|
126
|
+
export function getEmbedding(db, id) {
|
|
127
|
+
const stmt = db.prepare('SELECT * FROM embeddings WHERE id = ?');
|
|
128
|
+
const row = stmt.get(id);
|
|
129
|
+
return row ? rowToEmbedding(row) : null;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Get embedding by chunk ID (without vector)
|
|
133
|
+
*
|
|
134
|
+
* @param db - Database connection
|
|
135
|
+
* @param chunkId - Chunk ID
|
|
136
|
+
* @returns Omit<Embedding, 'vector'> | null - The embedding or null if not found
|
|
137
|
+
*/
|
|
138
|
+
export function getEmbeddingByChunkId(db, chunkId) {
|
|
139
|
+
const stmt = db.prepare('SELECT * FROM embeddings WHERE chunk_id = ?');
|
|
140
|
+
const row = stmt.get(chunkId);
|
|
141
|
+
return row ? rowToEmbedding(row) : null;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Get embedding by extraction ID (without vector)
|
|
145
|
+
*
|
|
146
|
+
* @param db - Database connection
|
|
147
|
+
* @param extractionId - Extraction ID
|
|
148
|
+
* @returns Omit<Embedding, 'vector'> | null
|
|
149
|
+
*/
|
|
150
|
+
export function getEmbeddingByExtractionId(db, extractionId) {
|
|
151
|
+
const stmt = db.prepare('SELECT * FROM embeddings WHERE extraction_id = ?');
|
|
152
|
+
const row = stmt.get(extractionId);
|
|
153
|
+
return row ? rowToEmbedding(row) : null;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Get all embeddings for a document (without vectors)
|
|
157
|
+
*
|
|
158
|
+
* @param db - Database connection
|
|
159
|
+
* @param documentId - Document ID
|
|
160
|
+
* @returns Omit<Embedding, 'vector'>[] - Array of embeddings
|
|
161
|
+
*/
|
|
162
|
+
export function getEmbeddingsByDocumentId(db, documentId, options) {
|
|
163
|
+
let sql = 'SELECT * FROM embeddings WHERE document_id = ? ORDER BY chunk_index';
|
|
164
|
+
const params = [documentId];
|
|
165
|
+
const limit = options?.limit ?? 10000;
|
|
166
|
+
sql += ' LIMIT ?';
|
|
167
|
+
params.push(limit);
|
|
168
|
+
if (options?.offset !== undefined) {
|
|
169
|
+
sql += ' OFFSET ?';
|
|
170
|
+
params.push(options.offset);
|
|
171
|
+
}
|
|
172
|
+
const stmt = db.prepare(sql);
|
|
173
|
+
const rows = stmt.all(...params);
|
|
174
|
+
return rows.map(rowToEmbedding);
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Get embeddings with dynamic filtering by document, source type, model.
|
|
178
|
+
* Does NOT select the vector column (it's huge binary data in vec_embeddings).
|
|
179
|
+
*
|
|
180
|
+
* @param db - Database connection
|
|
181
|
+
* @param filters - Filter options
|
|
182
|
+
* @returns Array of embeddings (without vector) and total count
|
|
183
|
+
*/
|
|
184
|
+
export function getEmbeddingsFiltered(db, filters) {
|
|
185
|
+
const conditions = [];
|
|
186
|
+
const params = [];
|
|
187
|
+
if (filters.document_id) {
|
|
188
|
+
conditions.push('e.document_id = ?');
|
|
189
|
+
params.push(filters.document_id);
|
|
190
|
+
}
|
|
191
|
+
if (filters.source_type === 'chunk') {
|
|
192
|
+
conditions.push('e.chunk_id IS NOT NULL AND e.image_id IS NULL AND e.extraction_id IS NULL');
|
|
193
|
+
}
|
|
194
|
+
else if (filters.source_type === 'image') {
|
|
195
|
+
conditions.push('e.image_id IS NOT NULL');
|
|
196
|
+
}
|
|
197
|
+
else if (filters.source_type === 'extraction') {
|
|
198
|
+
conditions.push('e.extraction_id IS NOT NULL');
|
|
199
|
+
}
|
|
200
|
+
if (filters.model_name) {
|
|
201
|
+
conditions.push('e.model_name = ?');
|
|
202
|
+
params.push(filters.model_name);
|
|
203
|
+
}
|
|
204
|
+
const whereClause = conditions.length > 0
|
|
205
|
+
? 'WHERE ' + conditions.join(' AND ')
|
|
206
|
+
: '';
|
|
207
|
+
// Get total count
|
|
208
|
+
const countRow = db.prepare(`SELECT COUNT(*) as total FROM embeddings e ${whereClause}`).get(...params);
|
|
209
|
+
const limit = filters.limit ?? 50;
|
|
210
|
+
const offset = filters.offset ?? 0;
|
|
211
|
+
const rows = db.prepare(`SELECT e.* FROM embeddings e ${whereClause} ORDER BY e.created_at DESC LIMIT ? OFFSET ?`).all(...params, limit, offset);
|
|
212
|
+
return {
|
|
213
|
+
embeddings: rows.map(rowToEmbedding),
|
|
214
|
+
total: countRow.total,
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Get embedding statistics with optional document-level scoping.
|
|
219
|
+
*
|
|
220
|
+
* @param db - Database connection
|
|
221
|
+
* @param documentId - Optional document ID to scope stats
|
|
222
|
+
* @returns EmbeddingStatsResult
|
|
223
|
+
*/
|
|
224
|
+
export function getEmbeddingStats(db, documentId) {
|
|
225
|
+
const docFilter = documentId ? ' WHERE document_id = ?' : '';
|
|
226
|
+
const docParams = documentId ? [documentId] : [];
|
|
227
|
+
// Total embeddings
|
|
228
|
+
const totalRow = db.prepare(`SELECT COUNT(*) as total FROM embeddings${docFilter}`).get(...docParams);
|
|
229
|
+
// By source type
|
|
230
|
+
const sourceTypeRows = db.prepare(`
|
|
231
|
+
SELECT
|
|
232
|
+
CASE
|
|
233
|
+
WHEN chunk_id IS NOT NULL AND image_id IS NULL AND extraction_id IS NULL THEN 'chunk'
|
|
234
|
+
WHEN image_id IS NOT NULL THEN 'image'
|
|
235
|
+
WHEN extraction_id IS NOT NULL THEN 'extraction'
|
|
236
|
+
ELSE 'unknown'
|
|
237
|
+
END as source_type,
|
|
238
|
+
COUNT(*) as count,
|
|
239
|
+
COALESCE(AVG(generation_duration_ms), 0) as avg_duration_ms
|
|
240
|
+
FROM embeddings${docFilter}
|
|
241
|
+
GROUP BY source_type
|
|
242
|
+
`).all(...docParams);
|
|
243
|
+
const by_source_type = {};
|
|
244
|
+
for (const row of sourceTypeRows) {
|
|
245
|
+
by_source_type[row.source_type] = {
|
|
246
|
+
count: row.count,
|
|
247
|
+
avg_duration_ms: Math.round(row.avg_duration_ms),
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
// By device (from provenance processor field)
|
|
251
|
+
const deviceRows = db.prepare(`
|
|
252
|
+
SELECT
|
|
253
|
+
COALESCE(e.gpu_device, 'unknown') as device,
|
|
254
|
+
COUNT(*) as count
|
|
255
|
+
FROM embeddings e${docFilter}
|
|
256
|
+
GROUP BY device
|
|
257
|
+
`).all(...docParams);
|
|
258
|
+
const by_device = {};
|
|
259
|
+
for (const row of deviceRows) {
|
|
260
|
+
by_device[row.device] = row.count;
|
|
261
|
+
}
|
|
262
|
+
// Unembedded chunks: chunks with embedding_status != 'complete'
|
|
263
|
+
const unembeddedChunksRow = db.prepare(`
|
|
264
|
+
SELECT COUNT(*) as count FROM chunks
|
|
265
|
+
WHERE embedding_status != 'complete'${documentId ? ' AND document_id = ?' : ''}
|
|
266
|
+
`).get(...docParams);
|
|
267
|
+
// Unembedded images: images with vlm_status='complete' but no VLM embedding
|
|
268
|
+
const unembeddedImagesRow = db.prepare(`
|
|
269
|
+
SELECT COUNT(*) as count FROM images i
|
|
270
|
+
WHERE i.vlm_status = 'complete'
|
|
271
|
+
AND i.vlm_embedding_id IS NULL
|
|
272
|
+
${documentId ? 'AND i.document_id = ?' : ''}
|
|
273
|
+
`).get(...docParams);
|
|
274
|
+
return {
|
|
275
|
+
total_embeddings: totalRow.total,
|
|
276
|
+
by_source_type,
|
|
277
|
+
by_device,
|
|
278
|
+
unembedded_chunks: unembeddedChunksRow.count,
|
|
279
|
+
unembedded_images: unembeddedImagesRow.count,
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Delete all embeddings for a specific chunk
|
|
284
|
+
*
|
|
285
|
+
* @param db - Database connection
|
|
286
|
+
* @param chunkId - Chunk ID
|
|
287
|
+
* @returns number of embeddings deleted
|
|
288
|
+
*/
|
|
289
|
+
export function deleteEmbeddingsByChunkId(db, chunkId) {
|
|
290
|
+
const result = db.prepare('DELETE FROM embeddings WHERE chunk_id = ?').run(chunkId);
|
|
291
|
+
return result.changes;
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Delete all embeddings for a specific image
|
|
295
|
+
*
|
|
296
|
+
* @param db - Database connection
|
|
297
|
+
* @param imageId - Image ID
|
|
298
|
+
* @returns number of embeddings deleted
|
|
299
|
+
*/
|
|
300
|
+
export function deleteEmbeddingsByImageId(db, imageId) {
|
|
301
|
+
const result = db.prepare('DELETE FROM embeddings WHERE image_id = ?').run(imageId);
|
|
302
|
+
return result.changes;
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Delete all embeddings for a document
|
|
306
|
+
*
|
|
307
|
+
* @param db - Database connection
|
|
308
|
+
* @param documentId - Document ID
|
|
309
|
+
* @returns number of embeddings deleted
|
|
310
|
+
*/
|
|
311
|
+
export function deleteEmbeddingsByDocumentId(db, documentId) {
|
|
312
|
+
const result = db.prepare('DELETE FROM embeddings WHERE document_id = ?').run(documentId);
|
|
313
|
+
return result.changes;
|
|
314
|
+
}
|
|
315
|
+
//# sourceMappingURL=embedding-operations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embedding-operations.js","sourceRoot":"","sources":["../../../../src/services/storage/database/embedding-operations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extraction operations for DatabaseService
|
|
3
|
+
*
|
|
4
|
+
* Handles all CRUD operations for structured extractions
|
|
5
|
+
* from page_schema processing.
|
|
6
|
+
*/
|
|
7
|
+
import Database from 'better-sqlite3';
|
|
8
|
+
import { Extraction } from '../../../models/extraction.js';
|
|
9
|
+
/**
|
|
10
|
+
* Insert an extraction record
|
|
11
|
+
*
|
|
12
|
+
* @param db - Database connection
|
|
13
|
+
* @param extraction - Extraction data
|
|
14
|
+
* @param updateMetadataCounts - Callback to update metadata counts
|
|
15
|
+
* @returns string - The extraction ID
|
|
16
|
+
*/
|
|
17
|
+
export declare function insertExtraction(db: Database.Database, extraction: Extraction, updateMetadataCounts: () => void): string;
|
|
18
|
+
/**
|
|
19
|
+
* Get all extractions for a document
|
|
20
|
+
*
|
|
21
|
+
* @param db - Database connection
|
|
22
|
+
* @param documentId - Document ID
|
|
23
|
+
* @returns Extraction[] - Array of extractions ordered by created_at DESC
|
|
24
|
+
*/
|
|
25
|
+
export declare function getExtractionsByDocument(db: Database.Database, documentId: string): Extraction[];
|
|
26
|
+
/**
|
|
27
|
+
* Get a single extraction by ID
|
|
28
|
+
*
|
|
29
|
+
* @param db - Database connection
|
|
30
|
+
* @param id - Extraction ID
|
|
31
|
+
* @returns Extraction or null if not found
|
|
32
|
+
*/
|
|
33
|
+
export declare function getExtraction(db: Database.Database, id: string): Extraction | null;
|
|
34
|
+
/**
|
|
35
|
+
* Search extractions by text matching within extraction_json content.
|
|
36
|
+
* Uses LIKE for simple text matching (no FTS5 for extractions).
|
|
37
|
+
*
|
|
38
|
+
* @param db - Database connection
|
|
39
|
+
* @param query - Search query string
|
|
40
|
+
* @param filters - Optional filters (document_filter, limit)
|
|
41
|
+
* @returns Extraction[] - Matching extractions ordered by created_at DESC
|
|
42
|
+
*/
|
|
43
|
+
export declare function searchExtractions(db: Database.Database, query: string, filters?: {
|
|
44
|
+
document_filter?: string[];
|
|
45
|
+
limit?: number;
|
|
46
|
+
}): Extraction[];
|
|
47
|
+
//# sourceMappingURL=extraction-operations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extraction-operations.d.ts","sourceRoot":"","sources":["../../../../src/services/storage/database/extraction-operations.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,UAAU,EAAE,UAAU,EACtB,oBAAoB,EAAE,MAAM,IAAI,GAC/B,MAAM,CAuBR;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,GAAG,UAAU,EAAE,CAIhG;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAKlF;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;IAAE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACvD,UAAU,EAAE,CAmBd"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extraction operations for DatabaseService
|
|
3
|
+
*
|
|
4
|
+
* Handles all CRUD operations for structured extractions
|
|
5
|
+
* from page_schema processing.
|
|
6
|
+
*/
|
|
7
|
+
import { runWithForeignKeyCheck } from './helpers.js';
|
|
8
|
+
/**
|
|
9
|
+
* Insert an extraction record
|
|
10
|
+
*
|
|
11
|
+
* @param db - Database connection
|
|
12
|
+
* @param extraction - Extraction data
|
|
13
|
+
* @param updateMetadataCounts - Callback to update metadata counts
|
|
14
|
+
* @returns string - The extraction ID
|
|
15
|
+
*/
|
|
16
|
+
export function insertExtraction(db, extraction, updateMetadataCounts) {
|
|
17
|
+
const stmt = db.prepare(`
|
|
18
|
+
INSERT INTO extractions (id, document_id, ocr_result_id, schema_json, extraction_json, content_hash, provenance_id, created_at)
|
|
19
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
|
20
|
+
`);
|
|
21
|
+
runWithForeignKeyCheck(stmt, [
|
|
22
|
+
extraction.id,
|
|
23
|
+
extraction.document_id,
|
|
24
|
+
extraction.ocr_result_id,
|
|
25
|
+
extraction.schema_json,
|
|
26
|
+
extraction.extraction_json,
|
|
27
|
+
extraction.content_hash,
|
|
28
|
+
extraction.provenance_id,
|
|
29
|
+
extraction.created_at,
|
|
30
|
+
], `inserting extraction: FK violation for document_id="${extraction.document_id}"`);
|
|
31
|
+
updateMetadataCounts();
|
|
32
|
+
return extraction.id;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Get all extractions for a document
|
|
36
|
+
*
|
|
37
|
+
* @param db - Database connection
|
|
38
|
+
* @param documentId - Document ID
|
|
39
|
+
* @returns Extraction[] - Array of extractions ordered by created_at DESC
|
|
40
|
+
*/
|
|
41
|
+
export function getExtractionsByDocument(db, documentId) {
|
|
42
|
+
return db
|
|
43
|
+
.prepare('SELECT * FROM extractions WHERE document_id = ? ORDER BY created_at DESC LIMIT 1000')
|
|
44
|
+
.all(documentId);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Get a single extraction by ID
|
|
48
|
+
*
|
|
49
|
+
* @param db - Database connection
|
|
50
|
+
* @param id - Extraction ID
|
|
51
|
+
* @returns Extraction or null if not found
|
|
52
|
+
*/
|
|
53
|
+
export function getExtraction(db, id) {
|
|
54
|
+
const row = db
|
|
55
|
+
.prepare('SELECT * FROM extractions WHERE id = ?')
|
|
56
|
+
.get(id);
|
|
57
|
+
return row ?? null;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Search extractions by text matching within extraction_json content.
|
|
61
|
+
* Uses LIKE for simple text matching (no FTS5 for extractions).
|
|
62
|
+
*
|
|
63
|
+
* @param db - Database connection
|
|
64
|
+
* @param query - Search query string
|
|
65
|
+
* @param filters - Optional filters (document_filter, limit)
|
|
66
|
+
* @returns Extraction[] - Matching extractions ordered by created_at DESC
|
|
67
|
+
*/
|
|
68
|
+
export function searchExtractions(db, query, filters) {
|
|
69
|
+
const limit = filters?.limit ?? 10;
|
|
70
|
+
const conditions = ['extraction_json LIKE ? ESCAPE \'\\\''];
|
|
71
|
+
// Escape special LIKE characters in the query
|
|
72
|
+
const escapedQuery = query.replace(/[%_\\]/g, (ch) => `\\${ch}`);
|
|
73
|
+
const params = [`%${escapedQuery}%`];
|
|
74
|
+
if (filters?.document_filter && filters.document_filter.length > 0) {
|
|
75
|
+
const placeholders = filters.document_filter.map(() => '?').join(', ');
|
|
76
|
+
conditions.push(`document_id IN (${placeholders})`);
|
|
77
|
+
params.push(...filters.document_filter);
|
|
78
|
+
}
|
|
79
|
+
const whereClause = conditions.join(' AND ');
|
|
80
|
+
params.push(limit);
|
|
81
|
+
return db
|
|
82
|
+
.prepare(`SELECT * FROM extractions WHERE ${whereClause} ORDER BY created_at DESC LIMIT ?`)
|
|
83
|
+
.all(...params);
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=extraction-operations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extraction-operations.js","sourceRoot":"","sources":["../../../../src/services/storage/database/extraction-operations.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEtD;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAC9B,EAAqB,EACrB,UAAsB,EACtB,oBAAgC;IAEhC,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;;;GAGvB,CAAC,CAAC;IAEH,sBAAsB,CACpB,IAAI,EACJ;QACE,UAAU,CAAC,EAAE;QACb,UAAU,CAAC,WAAW;QACtB,UAAU,CAAC,aAAa;QACxB,UAAU,CAAC,WAAW;QACtB,UAAU,CAAC,eAAe;QAC1B,UAAU,CAAC,YAAY;QACvB,UAAU,CAAC,aAAa;QACxB,UAAU,CAAC,UAAU;KACtB,EACD,uDAAuD,UAAU,CAAC,WAAW,GAAG,CACjF,CAAC;IAEF,oBAAoB,EAAE,CAAC;IACvB,OAAO,UAAU,CAAC,EAAE,CAAC;AACvB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CAAC,EAAqB,EAAE,UAAkB;IAChF,OAAO,EAAE;SACN,OAAO,CAAC,qFAAqF,CAAC;SAC9F,GAAG,CAAC,UAAU,CAAiB,CAAC;AACrC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,EAAqB,EAAE,EAAU;IAC7D,MAAM,GAAG,GAAG,EAAE;SACX,OAAO,CAAC,wCAAwC,CAAC;SACjD,GAAG,CAAC,EAAE,CAA2B,CAAC;IACrC,OAAO,GAAG,IAAI,IAAI,CAAC;AACrB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAC/B,EAAqB,EACrB,KAAa,EACb,OAAwD;IAExD,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;IACnC,MAAM,UAAU,GAAa,CAAC,sCAAsC,CAAC,CAAC;IACtE,8CAA8C;IAC9C,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACjE,MAAM,MAAM,GAAc,CAAC,IAAI,YAAY,GAAG,CAAC,CAAC;IAEhD,IAAI,OAAO,EAAE,eAAe,IAAI,OAAO,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnE,MAAM,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvE,UAAU,CAAC,IAAI,CAAC,mBAAmB,YAAY,GAAG,CAAC,CAAC;QACpD,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAEnB,OAAO,EAAE;SACN,OAAO,CAAC,mCAAmC,WAAW,mCAAmC,CAAC;SAC1F,GAAG,CAAC,GAAG,MAAM,CAAiB,CAAC;AACpC,CAAC"}
|