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,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* User and Audit Log Operations for DatabaseService
|
|
3
|
+
*
|
|
4
|
+
* Provides CRUD operations for users and audit_log tables.
|
|
5
|
+
* Users represent identity for multi-user collaboration.
|
|
6
|
+
* Audit log tracks user actions for compliance and accountability.
|
|
7
|
+
*
|
|
8
|
+
* CRITICAL: NEVER use console.log() - stdout is reserved for JSON-RPC protocol.
|
|
9
|
+
*
|
|
10
|
+
* @module database/user-operations
|
|
11
|
+
*/
|
|
12
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
13
|
+
// USER CRUD
|
|
14
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
15
|
+
/**
|
|
16
|
+
* Create a new user.
|
|
17
|
+
* ID is auto-generated by SQLite (lower(hex(randomblob(16)))).
|
|
18
|
+
*
|
|
19
|
+
* @returns The created user record
|
|
20
|
+
* @throws Error if external_id already exists (UNIQUE constraint)
|
|
21
|
+
*/
|
|
22
|
+
export function createUser(db, params) {
|
|
23
|
+
const now = new Date().toISOString();
|
|
24
|
+
try {
|
|
25
|
+
const stmt = db.prepare(`
|
|
26
|
+
INSERT INTO users (display_name, external_id, email, role, metadata_json, last_active_at)
|
|
27
|
+
VALUES (?, ?, ?, ?, ?, ?)
|
|
28
|
+
`);
|
|
29
|
+
const result = stmt.run(params.display_name, params.external_id ?? null, params.email ?? null, params.role ?? 'viewer', params.metadata_json ?? '{}', now);
|
|
30
|
+
// Retrieve the just-inserted user by rowid (safe under concurrent inserts)
|
|
31
|
+
const user = db
|
|
32
|
+
.prepare('SELECT * FROM users WHERE rowid = ?')
|
|
33
|
+
.get(result.lastInsertRowid);
|
|
34
|
+
if (!user) {
|
|
35
|
+
throw new Error('Failed to retrieve created user');
|
|
36
|
+
}
|
|
37
|
+
return user;
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
if (error instanceof Error && error.message.includes('UNIQUE constraint failed')) {
|
|
41
|
+
throw new Error(`User with external_id "${params.external_id}" already exists`);
|
|
42
|
+
}
|
|
43
|
+
throw error;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Get a user by internal ID
|
|
48
|
+
*/
|
|
49
|
+
export function getUser(db, userId) {
|
|
50
|
+
const row = db.prepare('SELECT * FROM users WHERE id = ?').get(userId);
|
|
51
|
+
return row ?? null;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Get a user by external ID
|
|
55
|
+
*/
|
|
56
|
+
export function getUserByExternalId(db, externalId) {
|
|
57
|
+
const row = db
|
|
58
|
+
.prepare('SELECT * FROM users WHERE external_id = ?')
|
|
59
|
+
.get(externalId);
|
|
60
|
+
return row ?? null;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Update the last_active_at timestamp for a user
|
|
64
|
+
*/
|
|
65
|
+
export function updateUserActivity(db, userId) {
|
|
66
|
+
const now = new Date().toISOString();
|
|
67
|
+
db.prepare('UPDATE users SET last_active_at = ? WHERE id = ?').run(now, userId);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* List users with optional filters
|
|
71
|
+
*/
|
|
72
|
+
export function listUsers(db, options) {
|
|
73
|
+
const conditions = [];
|
|
74
|
+
const params = [];
|
|
75
|
+
if (options?.role) {
|
|
76
|
+
conditions.push('role = ?');
|
|
77
|
+
params.push(options.role);
|
|
78
|
+
}
|
|
79
|
+
const whereClause = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : '';
|
|
80
|
+
const limit = options?.limit ?? 100;
|
|
81
|
+
const offset = options?.offset ?? 0;
|
|
82
|
+
params.push(limit, offset);
|
|
83
|
+
return db
|
|
84
|
+
.prepare(`SELECT * FROM users ${whereClause} ORDER BY created_at DESC LIMIT ? OFFSET ?`)
|
|
85
|
+
.all(...params);
|
|
86
|
+
}
|
|
87
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
88
|
+
// AUDIT LOG
|
|
89
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
90
|
+
/**
|
|
91
|
+
* Insert an entry into the audit log
|
|
92
|
+
*/
|
|
93
|
+
export function insertAuditLog(db, params) {
|
|
94
|
+
const result = db
|
|
95
|
+
.prepare(`INSERT INTO audit_log (user_id, session_id, action, entity_type, entity_id, details_json, ip_address)
|
|
96
|
+
VALUES (?, ?, ?, ?, ?, ?, ?)`)
|
|
97
|
+
.run(params.user_id, params.session_id, params.action, params.entity_type ?? null, params.entity_id ?? null, params.details_json ?? '{}', params.ip_address ?? null);
|
|
98
|
+
return Number(result.lastInsertRowid);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Query audit log with filters
|
|
102
|
+
*
|
|
103
|
+
* @returns Array of matching audit log entries, ordered by created_at DESC
|
|
104
|
+
*/
|
|
105
|
+
export function queryAuditLog(db, filters) {
|
|
106
|
+
const conditions = [];
|
|
107
|
+
const params = [];
|
|
108
|
+
if (filters.user_id) {
|
|
109
|
+
conditions.push('a.user_id = ?');
|
|
110
|
+
params.push(filters.user_id);
|
|
111
|
+
}
|
|
112
|
+
if (filters.action) {
|
|
113
|
+
conditions.push('a.action = ?');
|
|
114
|
+
params.push(filters.action);
|
|
115
|
+
}
|
|
116
|
+
if (filters.entity_type) {
|
|
117
|
+
conditions.push('a.entity_type = ?');
|
|
118
|
+
params.push(filters.entity_type);
|
|
119
|
+
}
|
|
120
|
+
if (filters.entity_id) {
|
|
121
|
+
conditions.push('a.entity_id = ?');
|
|
122
|
+
params.push(filters.entity_id);
|
|
123
|
+
}
|
|
124
|
+
if (filters.date_from) {
|
|
125
|
+
conditions.push('a.created_at >= ?');
|
|
126
|
+
params.push(filters.date_from);
|
|
127
|
+
}
|
|
128
|
+
if (filters.date_to) {
|
|
129
|
+
conditions.push('a.created_at <= ?');
|
|
130
|
+
params.push(filters.date_to);
|
|
131
|
+
}
|
|
132
|
+
const whereClause = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : '';
|
|
133
|
+
// Get total count
|
|
134
|
+
const countRow = db
|
|
135
|
+
.prepare(`SELECT COUNT(*) as cnt FROM audit_log a ${whereClause}`)
|
|
136
|
+
.get(...params);
|
|
137
|
+
const total = countRow.cnt;
|
|
138
|
+
// Get paginated results with user display_name joined
|
|
139
|
+
const limit = filters.limit ?? 50;
|
|
140
|
+
const offset = filters.offset ?? 0;
|
|
141
|
+
const entries = db
|
|
142
|
+
.prepare(`SELECT a.*, u.display_name as user_display_name
|
|
143
|
+
FROM audit_log a
|
|
144
|
+
LEFT JOIN users u ON a.user_id = u.id
|
|
145
|
+
${whereClause}
|
|
146
|
+
ORDER BY a.created_at DESC
|
|
147
|
+
LIMIT ? OFFSET ?`)
|
|
148
|
+
.all(...params, limit, offset);
|
|
149
|
+
return { entries, total };
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=user-operations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-operations.js","sourceRoot":"","sources":["../../../../src/services/storage/database/user-operations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workflow State Database Operations
|
|
3
|
+
*
|
|
4
|
+
* Provides operations for the workflow state machine that tracks document
|
|
5
|
+
* lifecycle states. Enforces valid state transitions to prevent invalid
|
|
6
|
+
* workflow progression.
|
|
7
|
+
*
|
|
8
|
+
* State machine:
|
|
9
|
+
* '' -> draft -> submitted -> in_review -> approved -> executed -> archived
|
|
10
|
+
* \-> changes_requested -> submitted
|
|
11
|
+
* \-> rejected -> archived
|
|
12
|
+
* approved -> expired (auto, past due_date)
|
|
13
|
+
*
|
|
14
|
+
* CRITICAL: NEVER use console.log() - stdout is reserved for JSON-RPC protocol.
|
|
15
|
+
*
|
|
16
|
+
* @module database/workflow-operations
|
|
17
|
+
*/
|
|
18
|
+
import type Database from 'better-sqlite3';
|
|
19
|
+
export interface WorkflowStateRow {
|
|
20
|
+
id: string;
|
|
21
|
+
document_id: string;
|
|
22
|
+
state: string;
|
|
23
|
+
assigned_to: string | null;
|
|
24
|
+
assigned_by: string | null;
|
|
25
|
+
reason: string | null;
|
|
26
|
+
due_date: string | null;
|
|
27
|
+
completed_at: string | null;
|
|
28
|
+
created_at: string;
|
|
29
|
+
metadata_json: string | null;
|
|
30
|
+
}
|
|
31
|
+
export interface CreateWorkflowStateParams {
|
|
32
|
+
document_id: string;
|
|
33
|
+
state: string;
|
|
34
|
+
assigned_to?: string | null;
|
|
35
|
+
assigned_by?: string | null;
|
|
36
|
+
reason?: string | null;
|
|
37
|
+
due_date?: string | null;
|
|
38
|
+
metadata?: Record<string, unknown> | null;
|
|
39
|
+
}
|
|
40
|
+
export interface WorkflowQueueFilters {
|
|
41
|
+
assigned_to?: string;
|
|
42
|
+
state?: string;
|
|
43
|
+
due_before?: string;
|
|
44
|
+
limit?: number;
|
|
45
|
+
offset?: number;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Map of current state -> allowed next states.
|
|
49
|
+
* Empty string key represents "no existing state" (initial transition).
|
|
50
|
+
*/
|
|
51
|
+
export declare const VALID_TRANSITIONS: Record<string, string[]>;
|
|
52
|
+
/**
|
|
53
|
+
* Get the most recent workflow state for a document.
|
|
54
|
+
*
|
|
55
|
+
* @param conn - Database connection
|
|
56
|
+
* @param documentId - Document ID
|
|
57
|
+
* @returns Latest workflow state row or null if no workflow history
|
|
58
|
+
*/
|
|
59
|
+
export declare function getLatestWorkflowState(conn: Database.Database, documentId: string): WorkflowStateRow | null;
|
|
60
|
+
/**
|
|
61
|
+
* Create a new workflow state for a document.
|
|
62
|
+
*
|
|
63
|
+
* Enforces valid state transitions. If the document has no prior workflow
|
|
64
|
+
* state, only 'draft' is allowed. Otherwise the new state must be in the
|
|
65
|
+
* VALID_TRANSITIONS map for the current state.
|
|
66
|
+
*
|
|
67
|
+
* @param conn - Database connection
|
|
68
|
+
* @param params - Workflow state creation parameters
|
|
69
|
+
* @returns The created workflow state row
|
|
70
|
+
* @throws Error if document not found or transition is invalid
|
|
71
|
+
*/
|
|
72
|
+
export declare function createWorkflowState(conn: Database.Database, params: CreateWorkflowStateParams): WorkflowStateRow;
|
|
73
|
+
/**
|
|
74
|
+
* List documents pending review with optional filters.
|
|
75
|
+
*
|
|
76
|
+
* Finds the latest workflow state per document and filters by the given
|
|
77
|
+
* criteria. Useful for building reviewer queues.
|
|
78
|
+
*
|
|
79
|
+
* @param conn - Database connection
|
|
80
|
+
* @param filters - Optional query filters
|
|
81
|
+
* @returns Paginated workflow states and total count
|
|
82
|
+
*/
|
|
83
|
+
export declare function listWorkflowQueue(conn: Database.Database, filters: WorkflowQueueFilters): {
|
|
84
|
+
items: WorkflowStateRow[];
|
|
85
|
+
total: number;
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* Get the full workflow history for a document.
|
|
89
|
+
*
|
|
90
|
+
* Returns all workflow state rows ordered by creation time (oldest first),
|
|
91
|
+
* showing the complete state progression.
|
|
92
|
+
*
|
|
93
|
+
* @param conn - Database connection
|
|
94
|
+
* @param documentId - Document ID
|
|
95
|
+
* @returns Array of workflow state rows
|
|
96
|
+
*/
|
|
97
|
+
export declare function getWorkflowHistory(conn: Database.Database, documentId: string): WorkflowStateRow[];
|
|
98
|
+
//# sourceMappingURL=workflow-operations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-operations.d.ts","sourceRoot":"","sources":["../../../../src/services/storage/database/workflow-operations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAO3C,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC3C;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAMD;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAStD,CAAC;AAMF;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,QAAQ,CAAC,QAAQ,EACvB,UAAU,EAAE,MAAM,GACjB,gBAAgB,GAAG,IAAI,CAIzB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,QAAQ,CAAC,QAAQ,EACvB,MAAM,EAAE,yBAAyB,GAChC,gBAAgB,CA0ClB;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,QAAQ,CAAC,QAAQ,EACvB,OAAO,EAAE,oBAAoB,GAC5B;IAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAsD9C;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,QAAQ,CAAC,QAAQ,EACvB,UAAU,EAAE,MAAM,GACjB,gBAAgB,EAAE,CAIpB"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workflow State Database Operations
|
|
3
|
+
*
|
|
4
|
+
* Provides operations for the workflow state machine that tracks document
|
|
5
|
+
* lifecycle states. Enforces valid state transitions to prevent invalid
|
|
6
|
+
* workflow progression.
|
|
7
|
+
*
|
|
8
|
+
* State machine:
|
|
9
|
+
* '' -> draft -> submitted -> in_review -> approved -> executed -> archived
|
|
10
|
+
* \-> changes_requested -> submitted
|
|
11
|
+
* \-> rejected -> archived
|
|
12
|
+
* approved -> expired (auto, past due_date)
|
|
13
|
+
*
|
|
14
|
+
* CRITICAL: NEVER use console.log() - stdout is reserved for JSON-RPC protocol.
|
|
15
|
+
*
|
|
16
|
+
* @module database/workflow-operations
|
|
17
|
+
*/
|
|
18
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
19
|
+
// =============================================================================
|
|
20
|
+
// VALID STATE TRANSITIONS
|
|
21
|
+
// =============================================================================
|
|
22
|
+
/**
|
|
23
|
+
* Map of current state -> allowed next states.
|
|
24
|
+
* Empty string key represents "no existing state" (initial transition).
|
|
25
|
+
*/
|
|
26
|
+
export const VALID_TRANSITIONS = {
|
|
27
|
+
'': ['draft'],
|
|
28
|
+
'draft': ['submitted'],
|
|
29
|
+
'submitted': ['in_review'],
|
|
30
|
+
'in_review': ['approved', 'rejected', 'changes_requested'],
|
|
31
|
+
'changes_requested': ['submitted'],
|
|
32
|
+
'approved': ['executed', 'expired', 'archived'],
|
|
33
|
+
'rejected': ['archived'],
|
|
34
|
+
'executed': ['archived'],
|
|
35
|
+
};
|
|
36
|
+
// =============================================================================
|
|
37
|
+
// WORKFLOW STATE OPERATIONS
|
|
38
|
+
// =============================================================================
|
|
39
|
+
/**
|
|
40
|
+
* Get the most recent workflow state for a document.
|
|
41
|
+
*
|
|
42
|
+
* @param conn - Database connection
|
|
43
|
+
* @param documentId - Document ID
|
|
44
|
+
* @returns Latest workflow state row or null if no workflow history
|
|
45
|
+
*/
|
|
46
|
+
export function getLatestWorkflowState(conn, documentId) {
|
|
47
|
+
return conn.prepare('SELECT * FROM workflow_states WHERE document_id = ? ORDER BY created_at DESC, rowid DESC LIMIT 1').get(documentId) ?? null;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Create a new workflow state for a document.
|
|
51
|
+
*
|
|
52
|
+
* Enforces valid state transitions. If the document has no prior workflow
|
|
53
|
+
* state, only 'draft' is allowed. Otherwise the new state must be in the
|
|
54
|
+
* VALID_TRANSITIONS map for the current state.
|
|
55
|
+
*
|
|
56
|
+
* @param conn - Database connection
|
|
57
|
+
* @param params - Workflow state creation parameters
|
|
58
|
+
* @returns The created workflow state row
|
|
59
|
+
* @throws Error if document not found or transition is invalid
|
|
60
|
+
*/
|
|
61
|
+
export function createWorkflowState(conn, params) {
|
|
62
|
+
// Validate document exists
|
|
63
|
+
const doc = conn.prepare('SELECT id FROM documents WHERE id = ?').get(params.document_id);
|
|
64
|
+
if (!doc) {
|
|
65
|
+
throw new Error(`Document not found: ${params.document_id}`);
|
|
66
|
+
}
|
|
67
|
+
// Get current state to validate transition
|
|
68
|
+
const current = getLatestWorkflowState(conn, params.document_id);
|
|
69
|
+
const currentState = current?.state ?? '';
|
|
70
|
+
const allowed = VALID_TRANSITIONS[currentState];
|
|
71
|
+
if (!allowed || !allowed.includes(params.state)) {
|
|
72
|
+
const currentDisplay = currentState || '(none)';
|
|
73
|
+
const allowedDisplay = allowed ? allowed.join(', ') : '(none)';
|
|
74
|
+
throw new Error(`Invalid workflow transition: cannot move from "${currentDisplay}" to "${params.state}". ` +
|
|
75
|
+
`Allowed transitions from "${currentDisplay}": [${allowedDisplay}]`);
|
|
76
|
+
}
|
|
77
|
+
const id = uuidv4();
|
|
78
|
+
const now = new Date().toISOString();
|
|
79
|
+
const metadataJson = params.metadata ? JSON.stringify(params.metadata) : null;
|
|
80
|
+
conn.prepare(`
|
|
81
|
+
INSERT INTO workflow_states (id, document_id, state, assigned_to, assigned_by, reason, due_date, completed_at, created_at, metadata_json)
|
|
82
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
83
|
+
`).run(id, params.document_id, params.state, params.assigned_to ?? null, params.assigned_by ?? null, params.reason ?? null, params.due_date ?? null, null, // completed_at set when reaching terminal states
|
|
84
|
+
now, metadataJson);
|
|
85
|
+
return conn.prepare('SELECT * FROM workflow_states WHERE id = ?').get(id);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* List documents pending review with optional filters.
|
|
89
|
+
*
|
|
90
|
+
* Finds the latest workflow state per document and filters by the given
|
|
91
|
+
* criteria. Useful for building reviewer queues.
|
|
92
|
+
*
|
|
93
|
+
* @param conn - Database connection
|
|
94
|
+
* @param filters - Optional query filters
|
|
95
|
+
* @returns Paginated workflow states and total count
|
|
96
|
+
*/
|
|
97
|
+
export function listWorkflowQueue(conn, filters) {
|
|
98
|
+
// Use a CTE to get the latest state per document
|
|
99
|
+
const conditions = [];
|
|
100
|
+
const params = [];
|
|
101
|
+
if (filters.state) {
|
|
102
|
+
conditions.push('ws.state = ?');
|
|
103
|
+
params.push(filters.state);
|
|
104
|
+
}
|
|
105
|
+
if (filters.assigned_to) {
|
|
106
|
+
conditions.push('ws.assigned_to = ?');
|
|
107
|
+
params.push(filters.assigned_to);
|
|
108
|
+
}
|
|
109
|
+
if (filters.due_before) {
|
|
110
|
+
conditions.push('ws.due_date IS NOT NULL AND ws.due_date <= ?');
|
|
111
|
+
params.push(filters.due_before);
|
|
112
|
+
}
|
|
113
|
+
const whereClause = conditions.length > 0
|
|
114
|
+
? `WHERE ${conditions.join(' AND ')}`
|
|
115
|
+
: '';
|
|
116
|
+
const limit = Math.min(filters.limit ?? 50, 200);
|
|
117
|
+
const offset = filters.offset ?? 0;
|
|
118
|
+
// Get latest state per document using MAX(rowid) which is strictly monotonic
|
|
119
|
+
// (avoids duplicates when multiple states share the same created_at timestamp)
|
|
120
|
+
const countSql = `
|
|
121
|
+
SELECT COUNT(*) as c FROM (
|
|
122
|
+
SELECT ws.* FROM workflow_states ws
|
|
123
|
+
INNER JOIN (
|
|
124
|
+
SELECT MAX(rowid) as max_rowid
|
|
125
|
+
FROM workflow_states GROUP BY document_id
|
|
126
|
+
) latest ON ws.rowid = latest.max_rowid
|
|
127
|
+
${whereClause}
|
|
128
|
+
)
|
|
129
|
+
`;
|
|
130
|
+
const totalRow = conn.prepare(countSql).get(...params);
|
|
131
|
+
const dataSql = `
|
|
132
|
+
SELECT ws.* FROM workflow_states ws
|
|
133
|
+
INNER JOIN (
|
|
134
|
+
SELECT MAX(rowid) as max_rowid
|
|
135
|
+
FROM workflow_states GROUP BY document_id
|
|
136
|
+
) latest ON ws.rowid = latest.max_rowid
|
|
137
|
+
${whereClause}
|
|
138
|
+
ORDER BY ws.due_date ASC NULLS LAST, ws.created_at DESC
|
|
139
|
+
LIMIT ? OFFSET ?
|
|
140
|
+
`;
|
|
141
|
+
const items = conn.prepare(dataSql).all(...params, limit, offset);
|
|
142
|
+
return { items, total: totalRow.c };
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Get the full workflow history for a document.
|
|
146
|
+
*
|
|
147
|
+
* Returns all workflow state rows ordered by creation time (oldest first),
|
|
148
|
+
* showing the complete state progression.
|
|
149
|
+
*
|
|
150
|
+
* @param conn - Database connection
|
|
151
|
+
* @param documentId - Document ID
|
|
152
|
+
* @returns Array of workflow state rows
|
|
153
|
+
*/
|
|
154
|
+
export function getWorkflowHistory(conn, documentId) {
|
|
155
|
+
return conn.prepare('SELECT * FROM workflow_states WHERE document_id = ? ORDER BY created_at ASC').all(documentId);
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=workflow-operations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-operations.js","sourceRoot":"","sources":["../../../../src/services/storage/database/workflow-operations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DatabaseService for OCR Provenance MCP System
|
|
3
|
+
*
|
|
4
|
+
* This file serves as a facade for backwards compatibility.
|
|
5
|
+
* All implementations have been modularized into src/services/storage/database/
|
|
6
|
+
*
|
|
7
|
+
* Provides all database operations for documents, OCR results, chunks,
|
|
8
|
+
* embeddings, and provenance records.
|
|
9
|
+
*
|
|
10
|
+
* Security: All SQL uses parameterized queries via db.prepare() (SEC-006)
|
|
11
|
+
* Performance: WAL mode, proper indexes, foreign key constraints
|
|
12
|
+
* Permissions: Database files created with mode 0o600 (SEC-003)
|
|
13
|
+
*/
|
|
14
|
+
export type { DatabaseInfo, DatabaseStats, ListDocumentsOptions } from './database/index.js';
|
|
15
|
+
export { DatabaseErrorCode, DatabaseError, MigrationError, DatabaseService, } from './database/index.js';
|
|
16
|
+
//# sourceMappingURL=database.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../../src/services/storage/database.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC7F,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,eAAe,GAChB,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DatabaseService for OCR Provenance MCP System
|
|
3
|
+
*
|
|
4
|
+
* This file serves as a facade for backwards compatibility.
|
|
5
|
+
* All implementations have been modularized into src/services/storage/database/
|
|
6
|
+
*
|
|
7
|
+
* Provides all database operations for documents, OCR results, chunks,
|
|
8
|
+
* embeddings, and provenance records.
|
|
9
|
+
*
|
|
10
|
+
* Security: All SQL uses parameterized queries via db.prepare() (SEC-006)
|
|
11
|
+
* Performance: WAL mode, proper indexes, foreign key constraints
|
|
12
|
+
* Permissions: Database files created with mode 0o600 (SEC-003)
|
|
13
|
+
*/
|
|
14
|
+
export { DatabaseErrorCode, DatabaseError, MigrationError, DatabaseService, } from './database/index.js';
|
|
15
|
+
//# sourceMappingURL=database.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../../src/services/storage/database.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,eAAe,GAChB,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Storage Service Module
|
|
3
|
+
*
|
|
4
|
+
* Provides database initialization, migrations, and storage operations
|
|
5
|
+
* for the OCR Provenance MCP System.
|
|
6
|
+
*/
|
|
7
|
+
export { initializeDatabase, checkSchemaVersion, migrateToLatest, getCurrentSchemaVersion, verifySchema, MigrationError, } from './migrations.js';
|
|
8
|
+
export { DatabaseService, DatabaseError, DatabaseErrorCode, type DatabaseInfo, type DatabaseStats, type ListDocumentsOptions, } from './database.js';
|
|
9
|
+
export { VectorService, VectorError, type VectorSearchResult, type VectorSearchOptions, } from './vector.js';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/storage/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,uBAAuB,EACvB,YAAY,EACZ,cAAc,GACf,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,oBAAoB,GAC1B,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,aAAa,EACb,WAAW,EACX,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,GACzB,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Storage Service Module
|
|
3
|
+
*
|
|
4
|
+
* Provides database initialization, migrations, and storage operations
|
|
5
|
+
* for the OCR Provenance MCP System.
|
|
6
|
+
*/
|
|
7
|
+
export { initializeDatabase, checkSchemaVersion, migrateToLatest, getCurrentSchemaVersion, verifySchema, MigrationError, } from './migrations.js';
|
|
8
|
+
export { DatabaseService, DatabaseError, DatabaseErrorCode, } from './database.js';
|
|
9
|
+
export { VectorService, VectorError, } from './vector.js';
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/storage/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,uBAAuB,EACvB,YAAY,EACZ,cAAc,GACf,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,eAAe,EACf,aAAa,EACb,iBAAiB,GAIlB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,aAAa,EACb,WAAW,GAGZ,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database Schema Migrations for OCR Provenance MCP System
|
|
3
|
+
*
|
|
4
|
+
* This module handles SQLite schema initialization and migrations.
|
|
5
|
+
* Uses better-sqlite3 with sqlite-vec extension for vector storage.
|
|
6
|
+
*
|
|
7
|
+
* Security: All SQL uses parameterized queries via db.prepare()
|
|
8
|
+
* Performance: WAL mode, proper indexes, foreign key constraints
|
|
9
|
+
*
|
|
10
|
+
* @module migrations
|
|
11
|
+
*/
|
|
12
|
+
export { MigrationError } from './types.js';
|
|
13
|
+
export { initializeDatabase, migrateToLatest, checkSchemaVersion, getCurrentSchemaVersion, } from './operations.js';
|
|
14
|
+
export { configurePragmas } from './schema-helpers.js';
|
|
15
|
+
export { verifySchema } from './verification.js';
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/services/storage/migrations/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAG5C,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database Schema Migrations for OCR Provenance MCP System
|
|
3
|
+
*
|
|
4
|
+
* This module handles SQLite schema initialization and migrations.
|
|
5
|
+
* Uses better-sqlite3 with sqlite-vec extension for vector storage.
|
|
6
|
+
*
|
|
7
|
+
* Security: All SQL uses parameterized queries via db.prepare()
|
|
8
|
+
* Performance: WAL mode, proper indexes, foreign key constraints
|
|
9
|
+
*
|
|
10
|
+
* @module migrations
|
|
11
|
+
*/
|
|
12
|
+
// Re-export types
|
|
13
|
+
export { MigrationError } from './types.js';
|
|
14
|
+
// Re-export main operations
|
|
15
|
+
export { initializeDatabase, migrateToLatest, checkSchemaVersion, getCurrentSchemaVersion, } from './operations.js';
|
|
16
|
+
// Re-export schema helpers needed by static-operations
|
|
17
|
+
export { configurePragmas } from './schema-helpers.js';
|
|
18
|
+
// Re-export verification
|
|
19
|
+
export { verifySchema } from './verification.js';
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/services/storage/migrations/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,kBAAkB;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,4BAA4B;AAC5B,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,iBAAiB,CAAC;AAEzB,uDAAuD;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,yBAAyB;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database Migration Operations
|
|
3
|
+
*
|
|
4
|
+
* Contains the main migration functions: initializeDatabase, migrateToLatest,
|
|
5
|
+
* checkSchemaVersion, and getCurrentSchemaVersion.
|
|
6
|
+
*
|
|
7
|
+
* @module migrations/operations
|
|
8
|
+
*/
|
|
9
|
+
import type Database from 'better-sqlite3';
|
|
10
|
+
/**
|
|
11
|
+
* Check the current schema version of the database
|
|
12
|
+
* @param db - Database instance
|
|
13
|
+
* @returns Current schema version, or 0 if not initialized
|
|
14
|
+
*/
|
|
15
|
+
export declare function checkSchemaVersion(db: Database.Database): number;
|
|
16
|
+
/**
|
|
17
|
+
* Get the current schema version constant
|
|
18
|
+
* @returns The current schema version number
|
|
19
|
+
*/
|
|
20
|
+
export declare function getCurrentSchemaVersion(): number;
|
|
21
|
+
/**
|
|
22
|
+
* Initialize the database with all tables, indexes, and configuration
|
|
23
|
+
*
|
|
24
|
+
* This function is idempotent - safe to call multiple times.
|
|
25
|
+
* Creates tables only if they don't exist.
|
|
26
|
+
*
|
|
27
|
+
* @param db - Database instance from better-sqlite3
|
|
28
|
+
* @throws MigrationError if any operation fails
|
|
29
|
+
*/
|
|
30
|
+
export declare function initializeDatabase(db: Database.Database): void;
|
|
31
|
+
/**
|
|
32
|
+
* Migrate database to the latest schema version
|
|
33
|
+
*
|
|
34
|
+
* Checks current version and applies any necessary migrations.
|
|
35
|
+
*
|
|
36
|
+
* @param db - Database instance from better-sqlite3
|
|
37
|
+
* @throws MigrationError if migration fails
|
|
38
|
+
*/
|
|
39
|
+
export declare function migrateToLatest(db: Database.Database): void;
|
|
40
|
+
//# sourceMappingURL=operations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../../../src/services/storage/migrations/operations.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAsP3C;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAwBhE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAgC9D;AAizBD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAsM3D"}
|