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,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Annotation Database Operations
|
|
3
|
+
*
|
|
4
|
+
* CRUD operations for document annotations with threading support.
|
|
5
|
+
* Annotations can be attached to documents or specific chunks, with
|
|
6
|
+
* optional page numbers and threaded replies via parent_id.
|
|
7
|
+
*
|
|
8
|
+
* CRITICAL: NEVER use console.log() - stdout is reserved for JSON-RPC protocol.
|
|
9
|
+
*
|
|
10
|
+
* @module database/annotation-operations
|
|
11
|
+
*/
|
|
12
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
13
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
14
|
+
// ANNOTATION CRUD
|
|
15
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
16
|
+
/**
|
|
17
|
+
* Create a new annotation on a document or chunk.
|
|
18
|
+
*
|
|
19
|
+
* @param conn - Database connection
|
|
20
|
+
* @param params - Annotation creation parameters
|
|
21
|
+
* @returns The created annotation row
|
|
22
|
+
* @throws Error if document, chunk, or parent annotation not found
|
|
23
|
+
*/
|
|
24
|
+
export function createAnnotation(conn, params) {
|
|
25
|
+
const id = uuidv4();
|
|
26
|
+
const now = new Date().toISOString();
|
|
27
|
+
// Validate document exists
|
|
28
|
+
const doc = conn.prepare('SELECT id FROM documents WHERE id = ?').get(params.document_id);
|
|
29
|
+
if (!doc) {
|
|
30
|
+
throw new Error(`Document not found: ${params.document_id}`);
|
|
31
|
+
}
|
|
32
|
+
// Validate chunk exists if provided
|
|
33
|
+
if (params.chunk_id) {
|
|
34
|
+
const chunk = conn.prepare('SELECT id FROM chunks WHERE id = ?').get(params.chunk_id);
|
|
35
|
+
if (!chunk) {
|
|
36
|
+
throw new Error(`Chunk not found: ${params.chunk_id}`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
// Validate parent exists if provided (for threaded replies)
|
|
40
|
+
if (params.parent_id) {
|
|
41
|
+
const parent = conn.prepare('SELECT id FROM annotations WHERE id = ?').get(params.parent_id);
|
|
42
|
+
if (!parent) {
|
|
43
|
+
throw new Error(`Parent annotation not found: ${params.parent_id}`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
conn.prepare(`
|
|
47
|
+
INSERT INTO annotations (id, document_id, user_id, chunk_id, page_number, annotation_type, content, status, parent_id, created_at, updated_at)
|
|
48
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, 'open', ?, ?, ?)
|
|
49
|
+
`).run(id, params.document_id, params.user_id ?? null, params.chunk_id ?? null, params.page_number ?? null, params.annotation_type, params.content, params.parent_id ?? null, now, now);
|
|
50
|
+
return conn.prepare('SELECT * FROM annotations WHERE id = ?').get(id);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Get an annotation by ID.
|
|
54
|
+
*
|
|
55
|
+
* @param conn - Database connection
|
|
56
|
+
* @param id - Annotation ID
|
|
57
|
+
* @returns The annotation row or null if not found
|
|
58
|
+
*/
|
|
59
|
+
export function getAnnotation(conn, id) {
|
|
60
|
+
return conn.prepare('SELECT * FROM annotations WHERE id = ?').get(id) ?? null;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Get an annotation with its threaded replies.
|
|
64
|
+
*
|
|
65
|
+
* @param conn - Database connection
|
|
66
|
+
* @param id - Annotation ID
|
|
67
|
+
* @returns The annotation and its replies, or null if not found
|
|
68
|
+
*/
|
|
69
|
+
export function getAnnotationWithThread(conn, id) {
|
|
70
|
+
const annotation = getAnnotation(conn, id);
|
|
71
|
+
if (!annotation)
|
|
72
|
+
return null;
|
|
73
|
+
const replies = conn.prepare('SELECT * FROM annotations WHERE parent_id = ? ORDER BY created_at ASC').all(id);
|
|
74
|
+
return { annotation, replies };
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* List annotations for a document with optional filters.
|
|
78
|
+
*
|
|
79
|
+
* @param conn - Database connection
|
|
80
|
+
* @param opts - Filter and pagination options
|
|
81
|
+
* @returns Paginated annotations and total count
|
|
82
|
+
*/
|
|
83
|
+
export function listAnnotations(conn, opts) {
|
|
84
|
+
const conditions = ['document_id = ?'];
|
|
85
|
+
const params = [opts.document_id];
|
|
86
|
+
if (opts.annotation_type) {
|
|
87
|
+
conditions.push('annotation_type = ?');
|
|
88
|
+
params.push(opts.annotation_type);
|
|
89
|
+
}
|
|
90
|
+
if (opts.status) {
|
|
91
|
+
conditions.push('status = ?');
|
|
92
|
+
params.push(opts.status);
|
|
93
|
+
}
|
|
94
|
+
if (opts.user_id) {
|
|
95
|
+
conditions.push('user_id = ?');
|
|
96
|
+
params.push(opts.user_id);
|
|
97
|
+
}
|
|
98
|
+
if (opts.page_number !== undefined) {
|
|
99
|
+
conditions.push('page_number = ?');
|
|
100
|
+
params.push(opts.page_number);
|
|
101
|
+
}
|
|
102
|
+
const where = conditions.join(' AND ');
|
|
103
|
+
const totalRow = conn.prepare(`SELECT COUNT(*) as c FROM annotations WHERE ${where}`).get(...params);
|
|
104
|
+
const limit = Math.min(opts.limit ?? 50, 200);
|
|
105
|
+
const offset = opts.offset ?? 0;
|
|
106
|
+
const annotations = conn.prepare(`SELECT * FROM annotations WHERE ${where} ORDER BY created_at DESC LIMIT ? OFFSET ?`).all(...params, limit, offset);
|
|
107
|
+
return { annotations, total: totalRow.c };
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Update an annotation's content and/or status.
|
|
111
|
+
*
|
|
112
|
+
* @param conn - Database connection
|
|
113
|
+
* @param id - Annotation ID
|
|
114
|
+
* @param updates - Fields to update (content and/or status)
|
|
115
|
+
* @returns The updated annotation row
|
|
116
|
+
* @throws Error if annotation not found
|
|
117
|
+
*/
|
|
118
|
+
export function updateAnnotation(conn, id, updates) {
|
|
119
|
+
const annotation = getAnnotation(conn, id);
|
|
120
|
+
if (!annotation) {
|
|
121
|
+
throw new Error(`Annotation not found: ${id}`);
|
|
122
|
+
}
|
|
123
|
+
const sets = ['updated_at = ?'];
|
|
124
|
+
const params = [new Date().toISOString()];
|
|
125
|
+
if (updates.content !== undefined) {
|
|
126
|
+
sets.push('content = ?');
|
|
127
|
+
params.push(updates.content);
|
|
128
|
+
}
|
|
129
|
+
if (updates.status !== undefined) {
|
|
130
|
+
sets.push('status = ?');
|
|
131
|
+
params.push(updates.status);
|
|
132
|
+
}
|
|
133
|
+
params.push(id);
|
|
134
|
+
conn.prepare(`UPDATE annotations SET ${sets.join(', ')} WHERE id = ?`).run(...params);
|
|
135
|
+
return conn.prepare('SELECT * FROM annotations WHERE id = ?').get(id);
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Delete an annotation by ID.
|
|
139
|
+
* Child annotations (replies) are cascade-deleted by the FK constraint.
|
|
140
|
+
*
|
|
141
|
+
* @param conn - Database connection
|
|
142
|
+
* @param id - Annotation ID
|
|
143
|
+
* @throws Error if annotation not found
|
|
144
|
+
*/
|
|
145
|
+
export function deleteAnnotation(conn, id) {
|
|
146
|
+
const annotation = getAnnotation(conn, id);
|
|
147
|
+
if (!annotation) {
|
|
148
|
+
throw new Error(`Annotation not found: ${id}`);
|
|
149
|
+
}
|
|
150
|
+
conn.prepare('DELETE FROM annotations WHERE id = ?').run(id);
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Get annotation summary statistics for a document.
|
|
154
|
+
*
|
|
155
|
+
* @param conn - Database connection
|
|
156
|
+
* @param documentId - Document ID
|
|
157
|
+
* @returns Summary with counts by type, status, and totals
|
|
158
|
+
*/
|
|
159
|
+
export function getAnnotationSummary(conn, documentId) {
|
|
160
|
+
const byType = conn.prepare(`
|
|
161
|
+
SELECT annotation_type, status, COUNT(*) as count
|
|
162
|
+
FROM annotations WHERE document_id = ?
|
|
163
|
+
GROUP BY annotation_type, status
|
|
164
|
+
`).all(documentId);
|
|
165
|
+
const totalOpen = conn.prepare(`SELECT COUNT(*) as c FROM annotations WHERE document_id = ? AND status = 'open'`).get(documentId);
|
|
166
|
+
const totalResolved = conn.prepare(`SELECT COUNT(*) as c FROM annotations WHERE document_id = ? AND status = 'resolved'`).get(documentId);
|
|
167
|
+
const totalDismissed = conn.prepare(`SELECT COUNT(*) as c FROM annotations WHERE document_id = ? AND status = 'dismissed'`).get(documentId);
|
|
168
|
+
return {
|
|
169
|
+
document_id: documentId,
|
|
170
|
+
total_open: totalOpen.c,
|
|
171
|
+
total_resolved: totalResolved.c,
|
|
172
|
+
total_dismissed: totalDismissed.c,
|
|
173
|
+
total: totalOpen.c + totalResolved.c + totalDismissed.c,
|
|
174
|
+
by_type_and_status: byType,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=annotation-operations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"annotation-operations.js","sourceRoot":"","sources":["../../../../src/services/storage/database/annotation-operations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Approval Chain Database Operations
|
|
3
|
+
*
|
|
4
|
+
* Provides operations for creating reusable approval chains and tracking
|
|
5
|
+
* per-document approval progress through multi-step review processes.
|
|
6
|
+
*
|
|
7
|
+
* An approval chain defines a sequence of steps (roles) that must approve
|
|
8
|
+
* a document. When applied to a document, individual approval_steps rows
|
|
9
|
+
* are created. Steps are processed in order - the next step becomes active
|
|
10
|
+
* only when the previous step is approved.
|
|
11
|
+
*
|
|
12
|
+
* CRITICAL: NEVER use console.log() - stdout is reserved for JSON-RPC protocol.
|
|
13
|
+
*
|
|
14
|
+
* @module database/approval-operations
|
|
15
|
+
*/
|
|
16
|
+
import type Database from 'better-sqlite3';
|
|
17
|
+
export interface ApprovalChainRow {
|
|
18
|
+
id: string;
|
|
19
|
+
name: string;
|
|
20
|
+
description: string | null;
|
|
21
|
+
steps_json: string;
|
|
22
|
+
created_at: string;
|
|
23
|
+
created_by: string | null;
|
|
24
|
+
}
|
|
25
|
+
export interface ApprovalStepRow {
|
|
26
|
+
id: string;
|
|
27
|
+
document_id: string;
|
|
28
|
+
chain_id: string;
|
|
29
|
+
step_order: number;
|
|
30
|
+
required_role: string;
|
|
31
|
+
status: string;
|
|
32
|
+
decided_by: string | null;
|
|
33
|
+
decided_at: string | null;
|
|
34
|
+
reason: string | null;
|
|
35
|
+
}
|
|
36
|
+
export interface ApprovalChainStep {
|
|
37
|
+
role: string;
|
|
38
|
+
required_approvals?: number;
|
|
39
|
+
auto_advance?: boolean;
|
|
40
|
+
}
|
|
41
|
+
export interface CreateApprovalChainParams {
|
|
42
|
+
name: string;
|
|
43
|
+
description?: string | null;
|
|
44
|
+
steps: ApprovalChainStep[];
|
|
45
|
+
created_by?: string | null;
|
|
46
|
+
}
|
|
47
|
+
export interface ApprovalProgress {
|
|
48
|
+
chain_id: string;
|
|
49
|
+
chain_name: string;
|
|
50
|
+
document_id: string;
|
|
51
|
+
steps: ApprovalStepRow[];
|
|
52
|
+
total_steps: number;
|
|
53
|
+
completed_steps: number;
|
|
54
|
+
current_step: ApprovalStepRow | null;
|
|
55
|
+
is_complete: boolean;
|
|
56
|
+
is_rejected: boolean;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Create a reusable approval chain with ordered steps.
|
|
60
|
+
*
|
|
61
|
+
* @param conn - Database connection
|
|
62
|
+
* @param params - Chain creation parameters
|
|
63
|
+
* @returns The created approval chain row
|
|
64
|
+
* @throws Error if name is empty or no steps provided
|
|
65
|
+
*/
|
|
66
|
+
export declare function createApprovalChain(conn: Database.Database, params: CreateApprovalChainParams): ApprovalChainRow;
|
|
67
|
+
/**
|
|
68
|
+
* Get an approval chain by ID.
|
|
69
|
+
*
|
|
70
|
+
* @param conn - Database connection
|
|
71
|
+
* @param chainId - Approval chain ID
|
|
72
|
+
* @returns The approval chain row or null
|
|
73
|
+
*/
|
|
74
|
+
export declare function getApprovalChain(conn: Database.Database, chainId: string): ApprovalChainRow | null;
|
|
75
|
+
/**
|
|
76
|
+
* List all approval chains.
|
|
77
|
+
*
|
|
78
|
+
* @param conn - Database connection
|
|
79
|
+
* @returns Array of approval chain rows
|
|
80
|
+
*/
|
|
81
|
+
export declare function listApprovalChains(conn: Database.Database): ApprovalChainRow[];
|
|
82
|
+
/**
|
|
83
|
+
* Apply an approval chain to a document, creating approval_steps rows.
|
|
84
|
+
*
|
|
85
|
+
* Creates one approval_steps row per step in the chain, all starting
|
|
86
|
+
* with 'pending' status. Steps are ordered by step_order.
|
|
87
|
+
*
|
|
88
|
+
* @param conn - Database connection
|
|
89
|
+
* @param documentId - Document ID to apply the chain to
|
|
90
|
+
* @param chainId - Approval chain ID to apply
|
|
91
|
+
* @returns Array of created approval step rows
|
|
92
|
+
* @throws Error if document or chain not found, or chain already applied
|
|
93
|
+
*/
|
|
94
|
+
export declare function applyApprovalChain(conn: Database.Database, documentId: string, chainId: string): ApprovalStepRow[];
|
|
95
|
+
/**
|
|
96
|
+
* Get the current (first pending) approval step for a document+chain.
|
|
97
|
+
*
|
|
98
|
+
* @param conn - Database connection
|
|
99
|
+
* @param documentId - Document ID
|
|
100
|
+
* @param chainId - Approval chain ID
|
|
101
|
+
* @returns The first pending step, or null if all steps are decided
|
|
102
|
+
*/
|
|
103
|
+
export declare function getCurrentApprovalStep(conn: Database.Database, documentId: string, chainId: string): ApprovalStepRow | null;
|
|
104
|
+
/**
|
|
105
|
+
* Decide on an approval step (approve or reject).
|
|
106
|
+
*
|
|
107
|
+
* On approval: marks the step as 'approved' and returns it.
|
|
108
|
+
* On rejection: marks the step as 'rejected' and skips all subsequent
|
|
109
|
+
* pending steps (sets them to 'skipped').
|
|
110
|
+
*
|
|
111
|
+
* @param conn - Database connection
|
|
112
|
+
* @param stepId - Approval step ID to decide on
|
|
113
|
+
* @param decision - 'approved' or 'rejected'
|
|
114
|
+
* @param userId - User ID making the decision
|
|
115
|
+
* @param reason - Optional reason (required for rejection)
|
|
116
|
+
* @returns The updated approval step row
|
|
117
|
+
* @throws Error if step not found, not pending, or not the current step
|
|
118
|
+
*/
|
|
119
|
+
export declare function decideApprovalStep(conn: Database.Database, stepId: string, decision: 'approved' | 'rejected', userId: string, reason?: string | null): ApprovalStepRow;
|
|
120
|
+
/**
|
|
121
|
+
* Get approval progress for a document and chain.
|
|
122
|
+
*
|
|
123
|
+
* Returns all steps with summary counts and the current pending step.
|
|
124
|
+
*
|
|
125
|
+
* @param conn - Database connection
|
|
126
|
+
* @param documentId - Document ID
|
|
127
|
+
* @param chainId - Approval chain ID
|
|
128
|
+
* @returns Approval progress with steps and summary
|
|
129
|
+
* @throws Error if chain not found or not applied to document
|
|
130
|
+
*/
|
|
131
|
+
export declare function getApprovalProgress(conn: Database.Database, documentId: string, chainId: string): ApprovalProgress;
|
|
132
|
+
//# sourceMappingURL=approval-operations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approval-operations.d.ts","sourceRoot":"","sources":["../../../../src/services/storage/database/approval-operations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Approval Chain Database Operations
|
|
3
|
+
*
|
|
4
|
+
* Provides operations for creating reusable approval chains and tracking
|
|
5
|
+
* per-document approval progress through multi-step review processes.
|
|
6
|
+
*
|
|
7
|
+
* An approval chain defines a sequence of steps (roles) that must approve
|
|
8
|
+
* a document. When applied to a document, individual approval_steps rows
|
|
9
|
+
* are created. Steps are processed in order - the next step becomes active
|
|
10
|
+
* only when the previous step is approved.
|
|
11
|
+
*
|
|
12
|
+
* CRITICAL: NEVER use console.log() - stdout is reserved for JSON-RPC protocol.
|
|
13
|
+
*
|
|
14
|
+
* @module database/approval-operations
|
|
15
|
+
*/
|
|
16
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
17
|
+
// =============================================================================
|
|
18
|
+
// APPROVAL CHAIN OPERATIONS
|
|
19
|
+
// =============================================================================
|
|
20
|
+
/**
|
|
21
|
+
* Create a reusable approval chain with ordered steps.
|
|
22
|
+
*
|
|
23
|
+
* @param conn - Database connection
|
|
24
|
+
* @param params - Chain creation parameters
|
|
25
|
+
* @returns The created approval chain row
|
|
26
|
+
* @throws Error if name is empty or no steps provided
|
|
27
|
+
*/
|
|
28
|
+
export function createApprovalChain(conn, params) {
|
|
29
|
+
if (!params.steps || params.steps.length === 0) {
|
|
30
|
+
throw new Error('Approval chain must have at least one step');
|
|
31
|
+
}
|
|
32
|
+
const id = uuidv4();
|
|
33
|
+
const now = new Date().toISOString();
|
|
34
|
+
const stepsJson = JSON.stringify(params.steps);
|
|
35
|
+
conn.prepare(`
|
|
36
|
+
INSERT INTO approval_chains (id, name, description, steps_json, created_at, created_by)
|
|
37
|
+
VALUES (?, ?, ?, ?, ?, ?)
|
|
38
|
+
`).run(id, params.name, params.description ?? null, stepsJson, now, params.created_by ?? null);
|
|
39
|
+
return conn.prepare('SELECT * FROM approval_chains WHERE id = ?').get(id);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Get an approval chain by ID.
|
|
43
|
+
*
|
|
44
|
+
* @param conn - Database connection
|
|
45
|
+
* @param chainId - Approval chain ID
|
|
46
|
+
* @returns The approval chain row or null
|
|
47
|
+
*/
|
|
48
|
+
export function getApprovalChain(conn, chainId) {
|
|
49
|
+
return conn.prepare('SELECT * FROM approval_chains WHERE id = ?').get(chainId) ?? null;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* List all approval chains.
|
|
53
|
+
*
|
|
54
|
+
* @param conn - Database connection
|
|
55
|
+
* @returns Array of approval chain rows
|
|
56
|
+
*/
|
|
57
|
+
export function listApprovalChains(conn) {
|
|
58
|
+
return conn.prepare('SELECT * FROM approval_chains ORDER BY created_at DESC').all();
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Apply an approval chain to a document, creating approval_steps rows.
|
|
62
|
+
*
|
|
63
|
+
* Creates one approval_steps row per step in the chain, all starting
|
|
64
|
+
* with 'pending' status. Steps are ordered by step_order.
|
|
65
|
+
*
|
|
66
|
+
* @param conn - Database connection
|
|
67
|
+
* @param documentId - Document ID to apply the chain to
|
|
68
|
+
* @param chainId - Approval chain ID to apply
|
|
69
|
+
* @returns Array of created approval step rows
|
|
70
|
+
* @throws Error if document or chain not found, or chain already applied
|
|
71
|
+
*/
|
|
72
|
+
export function applyApprovalChain(conn, documentId, chainId) {
|
|
73
|
+
// Validate document exists
|
|
74
|
+
const doc = conn.prepare('SELECT id FROM documents WHERE id = ?').get(documentId);
|
|
75
|
+
if (!doc) {
|
|
76
|
+
throw new Error(`Document not found: ${documentId}`);
|
|
77
|
+
}
|
|
78
|
+
// Validate chain exists
|
|
79
|
+
const chain = getApprovalChain(conn, chainId);
|
|
80
|
+
if (!chain) {
|
|
81
|
+
throw new Error(`Approval chain not found: ${chainId}`);
|
|
82
|
+
}
|
|
83
|
+
// Check if chain is already applied to this document
|
|
84
|
+
const existing = conn.prepare('SELECT id FROM approval_steps WHERE document_id = ? AND chain_id = ? LIMIT 1').get(documentId, chainId);
|
|
85
|
+
if (existing) {
|
|
86
|
+
throw new Error(`Approval chain "${chain.name}" is already applied to document ${documentId}`);
|
|
87
|
+
}
|
|
88
|
+
const steps = JSON.parse(chain.steps_json);
|
|
89
|
+
const createdSteps = [];
|
|
90
|
+
const insertStmt = conn.prepare(`
|
|
91
|
+
INSERT INTO approval_steps (id, document_id, chain_id, step_order, required_role, status, decided_by, decided_at, reason)
|
|
92
|
+
VALUES (?, ?, ?, ?, ?, 'pending', NULL, NULL, NULL)
|
|
93
|
+
`);
|
|
94
|
+
const getStmt = conn.prepare('SELECT * FROM approval_steps WHERE id = ?');
|
|
95
|
+
for (let i = 0; i < steps.length; i++) {
|
|
96
|
+
const stepId = uuidv4();
|
|
97
|
+
insertStmt.run(stepId, documentId, chainId, i + 1, steps[i].role);
|
|
98
|
+
createdSteps.push(getStmt.get(stepId));
|
|
99
|
+
}
|
|
100
|
+
return createdSteps;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Get the current (first pending) approval step for a document+chain.
|
|
104
|
+
*
|
|
105
|
+
* @param conn - Database connection
|
|
106
|
+
* @param documentId - Document ID
|
|
107
|
+
* @param chainId - Approval chain ID
|
|
108
|
+
* @returns The first pending step, or null if all steps are decided
|
|
109
|
+
*/
|
|
110
|
+
export function getCurrentApprovalStep(conn, documentId, chainId) {
|
|
111
|
+
return conn.prepare(`
|
|
112
|
+
SELECT * FROM approval_steps
|
|
113
|
+
WHERE document_id = ? AND chain_id = ? AND status = 'pending'
|
|
114
|
+
ORDER BY step_order ASC
|
|
115
|
+
LIMIT 1
|
|
116
|
+
`).get(documentId, chainId) ?? null;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Decide on an approval step (approve or reject).
|
|
120
|
+
*
|
|
121
|
+
* On approval: marks the step as 'approved' and returns it.
|
|
122
|
+
* On rejection: marks the step as 'rejected' and skips all subsequent
|
|
123
|
+
* pending steps (sets them to 'skipped').
|
|
124
|
+
*
|
|
125
|
+
* @param conn - Database connection
|
|
126
|
+
* @param stepId - Approval step ID to decide on
|
|
127
|
+
* @param decision - 'approved' or 'rejected'
|
|
128
|
+
* @param userId - User ID making the decision
|
|
129
|
+
* @param reason - Optional reason (required for rejection)
|
|
130
|
+
* @returns The updated approval step row
|
|
131
|
+
* @throws Error if step not found, not pending, or not the current step
|
|
132
|
+
*/
|
|
133
|
+
export function decideApprovalStep(conn, stepId, decision, userId, reason) {
|
|
134
|
+
const step = conn.prepare('SELECT * FROM approval_steps WHERE id = ?').get(stepId);
|
|
135
|
+
if (!step) {
|
|
136
|
+
throw new Error(`Approval step not found: ${stepId}`);
|
|
137
|
+
}
|
|
138
|
+
if (step.status !== 'pending') {
|
|
139
|
+
throw new Error(`Approval step ${stepId} is already "${step.status}" and cannot be decided`);
|
|
140
|
+
}
|
|
141
|
+
// Ensure this is the current step (lowest pending step_order for this doc+chain)
|
|
142
|
+
const currentStep = getCurrentApprovalStep(conn, step.document_id, step.chain_id);
|
|
143
|
+
if (!currentStep || currentStep.id !== stepId) {
|
|
144
|
+
throw new Error(`Step ${stepId} (order ${step.step_order}) is not the current step. ` +
|
|
145
|
+
`Steps must be decided in order.`);
|
|
146
|
+
}
|
|
147
|
+
if (decision === 'rejected' && !reason) {
|
|
148
|
+
throw new Error('Reason is required when rejecting an approval step');
|
|
149
|
+
}
|
|
150
|
+
const now = new Date().toISOString();
|
|
151
|
+
// Update the step
|
|
152
|
+
conn.prepare(`
|
|
153
|
+
UPDATE approval_steps SET status = ?, decided_by = ?, decided_at = ?, reason = ?
|
|
154
|
+
WHERE id = ?
|
|
155
|
+
`).run(decision, userId, now, reason ?? null, stepId);
|
|
156
|
+
// On rejection, skip all subsequent pending steps
|
|
157
|
+
if (decision === 'rejected') {
|
|
158
|
+
conn.prepare(`
|
|
159
|
+
UPDATE approval_steps
|
|
160
|
+
SET status = 'skipped', decided_at = ?, reason = 'Skipped due to rejection at step ' || ?
|
|
161
|
+
WHERE document_id = ? AND chain_id = ? AND step_order > ? AND status = 'pending'
|
|
162
|
+
`).run(now, step.step_order, step.document_id, step.chain_id, step.step_order);
|
|
163
|
+
}
|
|
164
|
+
return conn.prepare('SELECT * FROM approval_steps WHERE id = ?').get(stepId);
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Get approval progress for a document and chain.
|
|
168
|
+
*
|
|
169
|
+
* Returns all steps with summary counts and the current pending step.
|
|
170
|
+
*
|
|
171
|
+
* @param conn - Database connection
|
|
172
|
+
* @param documentId - Document ID
|
|
173
|
+
* @param chainId - Approval chain ID
|
|
174
|
+
* @returns Approval progress with steps and summary
|
|
175
|
+
* @throws Error if chain not found or not applied to document
|
|
176
|
+
*/
|
|
177
|
+
export function getApprovalProgress(conn, documentId, chainId) {
|
|
178
|
+
const chain = getApprovalChain(conn, chainId);
|
|
179
|
+
if (!chain) {
|
|
180
|
+
throw new Error(`Approval chain not found: ${chainId}`);
|
|
181
|
+
}
|
|
182
|
+
const steps = conn.prepare(`
|
|
183
|
+
SELECT * FROM approval_steps
|
|
184
|
+
WHERE document_id = ? AND chain_id = ?
|
|
185
|
+
ORDER BY step_order ASC
|
|
186
|
+
`).all(documentId, chainId);
|
|
187
|
+
if (steps.length === 0) {
|
|
188
|
+
throw new Error(`Approval chain "${chain.name}" has not been applied to document ${documentId}`);
|
|
189
|
+
}
|
|
190
|
+
const completedSteps = steps.filter((s) => s.status === 'approved' || s.status === 'rejected' || s.status === 'skipped').length;
|
|
191
|
+
const currentStep = steps.find((s) => s.status === 'pending') ?? null;
|
|
192
|
+
const isRejected = steps.some((s) => s.status === 'rejected');
|
|
193
|
+
const isComplete = currentStep === null;
|
|
194
|
+
return {
|
|
195
|
+
chain_id: chainId,
|
|
196
|
+
chain_name: chain.name,
|
|
197
|
+
document_id: documentId,
|
|
198
|
+
steps,
|
|
199
|
+
total_steps: steps.length,
|
|
200
|
+
completed_steps: completedSteps,
|
|
201
|
+
current_step: currentStep,
|
|
202
|
+
is_complete: isComplete,
|
|
203
|
+
is_rejected: isRejected,
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
//# sourceMappingURL=approval-operations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approval-operations.js","sourceRoot":"","sources":["../../../../src/services/storage/database/approval-operations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chunk operations for DatabaseService
|
|
3
|
+
*
|
|
4
|
+
* Handles all CRUD operations for text chunks including
|
|
5
|
+
* batch inserts, embedding status updates, filtered queries,
|
|
6
|
+
* and neighbor lookups.
|
|
7
|
+
*/
|
|
8
|
+
import Database from 'better-sqlite3';
|
|
9
|
+
import { Chunk } from '../../../models/chunk.js';
|
|
10
|
+
/**
|
|
11
|
+
* Filter options for getChunksFiltered
|
|
12
|
+
*/
|
|
13
|
+
export interface ChunkFilterOptions {
|
|
14
|
+
section_path_filter?: string;
|
|
15
|
+
heading_filter?: string;
|
|
16
|
+
content_type_filter?: string[];
|
|
17
|
+
min_quality_score?: number;
|
|
18
|
+
embedding_status?: 'pending' | 'complete' | 'failed';
|
|
19
|
+
is_atomic?: boolean;
|
|
20
|
+
page_range?: {
|
|
21
|
+
min_page?: number;
|
|
22
|
+
max_page?: number;
|
|
23
|
+
};
|
|
24
|
+
limit?: number;
|
|
25
|
+
offset?: number;
|
|
26
|
+
include_text?: boolean;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Insert a chunk
|
|
30
|
+
*
|
|
31
|
+
* @param db - Database connection
|
|
32
|
+
* @param chunk - Chunk data (created_at, embedding_status, embedded_at will be generated)
|
|
33
|
+
* @param updateMetadataCounts - Callback to update metadata counts
|
|
34
|
+
* @returns string - The chunk ID
|
|
35
|
+
*/
|
|
36
|
+
export declare function insertChunk(db: Database.Database, chunk: Omit<Chunk, 'created_at' | 'embedding_status' | 'embedded_at'>, updateMetadataCounts: () => void): string;
|
|
37
|
+
/**
|
|
38
|
+
* Insert multiple chunks in a batch transaction
|
|
39
|
+
*
|
|
40
|
+
* @param db - Database connection
|
|
41
|
+
* @param chunks - Array of chunk data
|
|
42
|
+
* @param updateMetadataCounts - Callback to update metadata counts
|
|
43
|
+
* @param transaction - Transaction wrapper function
|
|
44
|
+
* @returns string[] - Array of chunk IDs
|
|
45
|
+
*/
|
|
46
|
+
export declare function insertChunks(db: Database.Database, chunks: Omit<Chunk, 'created_at' | 'embedding_status' | 'embedded_at'>[], updateMetadataCounts: () => void, transaction: <T>(fn: () => T) => T): string[];
|
|
47
|
+
/**
|
|
48
|
+
* Get a chunk by ID
|
|
49
|
+
*
|
|
50
|
+
* @param db - Database connection
|
|
51
|
+
* @param id - Chunk ID
|
|
52
|
+
* @returns Chunk | null - The chunk or null if not found
|
|
53
|
+
*/
|
|
54
|
+
export declare function getChunk(db: Database.Database, id: string): Chunk | null;
|
|
55
|
+
/**
|
|
56
|
+
* Check if a document has any chunks (M-9: avoids loading all chunk rows)
|
|
57
|
+
*
|
|
58
|
+
* @param db - Database connection
|
|
59
|
+
* @param documentId - Document ID
|
|
60
|
+
* @returns boolean - true if document has at least one chunk
|
|
61
|
+
*/
|
|
62
|
+
export declare function hasChunksByDocumentId(db: Database.Database, documentId: string): boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Get all chunks for a document
|
|
65
|
+
*
|
|
66
|
+
* @param db - Database connection
|
|
67
|
+
* @param documentId - Document ID
|
|
68
|
+
* @returns Chunk[] - Array of chunks ordered by chunk_index
|
|
69
|
+
*/
|
|
70
|
+
export declare function getChunksByDocumentId(db: Database.Database, documentId: string, options?: {
|
|
71
|
+
limit?: number;
|
|
72
|
+
offset?: number;
|
|
73
|
+
}): Chunk[];
|
|
74
|
+
/**
|
|
75
|
+
* Get all chunks for an OCR result
|
|
76
|
+
*
|
|
77
|
+
* @param db - Database connection
|
|
78
|
+
* @param ocrResultId - OCR result ID
|
|
79
|
+
* @returns Chunk[] - Array of chunks ordered by chunk_index
|
|
80
|
+
*/
|
|
81
|
+
export declare function getChunksByOCRResultId(db: Database.Database, ocrResultId: string, options?: {
|
|
82
|
+
limit?: number;
|
|
83
|
+
offset?: number;
|
|
84
|
+
}): Chunk[];
|
|
85
|
+
/**
|
|
86
|
+
* Get chunks pending embedding generation
|
|
87
|
+
*
|
|
88
|
+
* @param db - Database connection
|
|
89
|
+
* @param limit - Optional maximum number of chunks to return
|
|
90
|
+
* @returns Chunk[] - Array of pending chunks
|
|
91
|
+
*/
|
|
92
|
+
export declare function getPendingEmbeddingChunks(db: Database.Database, limit?: number): Chunk[];
|
|
93
|
+
/**
|
|
94
|
+
* Update chunk embedding status
|
|
95
|
+
*
|
|
96
|
+
* @param db - Database connection
|
|
97
|
+
* @param id - Chunk ID
|
|
98
|
+
* @param status - New embedding status
|
|
99
|
+
* @param embeddedAt - Optional ISO 8601 timestamp when embedded
|
|
100
|
+
* @param updateMetadataModified - Callback to update metadata modified timestamp
|
|
101
|
+
*/
|
|
102
|
+
export declare function updateChunkEmbeddingStatus(db: Database.Database, id: string, status: 'pending' | 'complete' | 'failed', embeddedAt: string | undefined, updateMetadataModified: () => void): void;
|
|
103
|
+
/**
|
|
104
|
+
* Get chunks for a document with dynamic filtering.
|
|
105
|
+
*
|
|
106
|
+
* Builds a parameterized WHERE clause from the provided filters.
|
|
107
|
+
* For content_type_filter, uses LIKE matching against the JSON-encoded
|
|
108
|
+
* content_types column (e.g., content_types LIKE '%table%').
|
|
109
|
+
*
|
|
110
|
+
* @param db - Database connection
|
|
111
|
+
* @param documentId - Document ID to filter by
|
|
112
|
+
* @param filters - Filter options
|
|
113
|
+
* @returns Object with chunks array and total count
|
|
114
|
+
*/
|
|
115
|
+
export declare function getChunksFiltered(db: Database.Database, documentId: string, filters: ChunkFilterOptions): {
|
|
116
|
+
chunks: Chunk[];
|
|
117
|
+
total: number;
|
|
118
|
+
};
|
|
119
|
+
/**
|
|
120
|
+
* Get neighboring chunks around a given chunk index for context building.
|
|
121
|
+
*
|
|
122
|
+
* Returns chunks with chunk_index in range [chunkIndex - count, chunkIndex + count],
|
|
123
|
+
* ordered by chunk_index.
|
|
124
|
+
*
|
|
125
|
+
* @param db - Database connection
|
|
126
|
+
* @param documentId - Document ID
|
|
127
|
+
* @param chunkIndex - Center chunk index
|
|
128
|
+
* @param count - Number of neighbors on each side
|
|
129
|
+
* @returns Chunk[] - Array of neighboring chunks (including center)
|
|
130
|
+
*/
|
|
131
|
+
export declare function getChunkNeighbors(db: Database.Database, documentId: string, chunkIndex: number, count: number): Chunk[];
|
|
132
|
+
//# sourceMappingURL=chunk-operations.d.ts.map
|