@ninebix/nmt-system 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.
- package/LICENSE +70 -0
- package/README.md +465 -0
- package/dist/api/cli-server.d.ts +83 -0
- package/dist/api/cli-server.d.ts.map +1 -0
- package/dist/api/cli-server.js +597 -0
- package/dist/api/cli-server.js.map +1 -0
- package/dist/api/index.d.ts +6 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +6 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/middleware/index.d.ts +12 -0
- package/dist/api/middleware/index.d.ts.map +1 -0
- package/dist/api/middleware/index.js +13 -0
- package/dist/api/middleware/index.js.map +1 -0
- package/dist/api/middleware/logger.d.ts +21 -0
- package/dist/api/middleware/logger.d.ts.map +1 -0
- package/dist/api/middleware/logger.js +134 -0
- package/dist/api/middleware/logger.js.map +1 -0
- package/dist/api/middleware/rate-limit.d.ts +26 -0
- package/dist/api/middleware/rate-limit.d.ts.map +1 -0
- package/dist/api/middleware/rate-limit.js +107 -0
- package/dist/api/middleware/rate-limit.js.map +1 -0
- package/dist/api/middleware/response.d.ts +61 -0
- package/dist/api/middleware/response.d.ts.map +1 -0
- package/dist/api/middleware/response.js +86 -0
- package/dist/api/middleware/response.js.map +1 -0
- package/dist/api/middleware/validation.d.ts +43 -0
- package/dist/api/middleware/validation.d.ts.map +1 -0
- package/dist/api/middleware/validation.js +257 -0
- package/dist/api/middleware/validation.js.map +1 -0
- package/dist/api/server.d.ts +79 -0
- package/dist/api/server.d.ts.map +1 -0
- package/dist/api/server.js +2011 -0
- package/dist/api/server.js.map +1 -0
- package/dist/bin/nmt.d.ts +9 -0
- package/dist/bin/nmt.d.ts.map +1 -0
- package/dist/bin/nmt.js +1142 -0
- package/dist/bin/nmt.js.map +1 -0
- package/dist/cli/commands/attractor.d.ts +6 -0
- package/dist/cli/commands/attractor.d.ts.map +1 -0
- package/dist/cli/commands/attractor.js +167 -0
- package/dist/cli/commands/attractor.js.map +1 -0
- package/dist/cli/commands/dimension.d.ts +6 -0
- package/dist/cli/commands/dimension.d.ts.map +1 -0
- package/dist/cli/commands/dimension.js +85 -0
- package/dist/cli/commands/dimension.js.map +1 -0
- package/dist/cli/commands/index.d.ts +11 -0
- package/dist/cli/commands/index.d.ts.map +1 -0
- package/dist/cli/commands/index.js +11 -0
- package/dist/cli/commands/index.js.map +1 -0
- package/dist/cli/commands/infer.d.ts +6 -0
- package/dist/cli/commands/infer.d.ts.map +1 -0
- package/dist/cli/commands/infer.js +139 -0
- package/dist/cli/commands/infer.js.map +1 -0
- package/dist/cli/commands/learn.d.ts +6 -0
- package/dist/cli/commands/learn.d.ts.map +1 -0
- package/dist/cli/commands/learn.js +87 -0
- package/dist/cli/commands/learn.js.map +1 -0
- package/dist/cli/commands/orchestrate.d.ts +6 -0
- package/dist/cli/commands/orchestrate.d.ts.map +1 -0
- package/dist/cli/commands/orchestrate.js +279 -0
- package/dist/cli/commands/orchestrate.js.map +1 -0
- package/dist/cli/commands/prob.d.ts +6 -0
- package/dist/cli/commands/prob.d.ts.map +1 -0
- package/dist/cli/commands/prob.js +256 -0
- package/dist/cli/commands/prob.js.map +1 -0
- package/dist/cli/commands/quantum.d.ts +6 -0
- package/dist/cli/commands/quantum.d.ts.map +1 -0
- package/dist/cli/commands/quantum.js +150 -0
- package/dist/cli/commands/quantum.js.map +1 -0
- package/dist/cli/commands/sync.d.ts +65 -0
- package/dist/cli/commands/sync.d.ts.map +1 -0
- package/dist/cli/commands/sync.js +338 -0
- package/dist/cli/commands/sync.js.map +1 -0
- package/dist/cli/index.d.ts +9 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +9 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/probabilistic-commands.d.ts +39 -0
- package/dist/cli/probabilistic-commands.d.ts.map +1 -0
- package/dist/cli/probabilistic-commands.js +112 -0
- package/dist/cli/probabilistic-commands.js.map +1 -0
- package/dist/cli/types.d.ts +69 -0
- package/dist/cli/types.d.ts.map +1 -0
- package/dist/cli/types.js +5 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/cli/utils/formatters.d.ts +51 -0
- package/dist/cli/utils/formatters.d.ts.map +1 -0
- package/dist/cli/utils/formatters.js +79 -0
- package/dist/cli/utils/formatters.js.map +1 -0
- package/dist/cli/utils/helpers.d.ts +21 -0
- package/dist/cli/utils/helpers.d.ts.map +1 -0
- package/dist/cli/utils/helpers.js +51 -0
- package/dist/cli/utils/helpers.js.map +1 -0
- package/dist/cli/utils/index.d.ts +7 -0
- package/dist/cli/utils/index.d.ts.map +1 -0
- package/dist/cli/utils/index.js +13 -0
- package/dist/cli/utils/index.js.map +1 -0
- package/dist/cli/utils/validators.d.ts +162 -0
- package/dist/cli/utils/validators.d.ts.map +1 -0
- package/dist/cli/utils/validators.js +351 -0
- package/dist/cli/utils/validators.js.map +1 -0
- package/dist/core/advanced-embedding.d.ts +154 -0
- package/dist/core/advanced-embedding.d.ts.map +1 -0
- package/dist/core/advanced-embedding.js +367 -0
- package/dist/core/advanced-embedding.js.map +1 -0
- package/dist/core/attractor-model.d.ts +381 -0
- package/dist/core/attractor-model.d.ts.map +1 -0
- package/dist/core/attractor-model.js +821 -0
- package/dist/core/attractor-model.js.map +1 -0
- package/dist/core/bidirectional-inference.d.ts +143 -0
- package/dist/core/bidirectional-inference.d.ts.map +1 -0
- package/dist/core/bidirectional-inference.js +501 -0
- package/dist/core/bidirectional-inference.js.map +1 -0
- package/dist/core/chunk-engine.d.ts +78 -0
- package/dist/core/chunk-engine.d.ts.map +1 -0
- package/dist/core/chunk-engine.js +192 -0
- package/dist/core/chunk-engine.js.map +1 -0
- package/dist/core/dynamic-embedding.d.ts +327 -0
- package/dist/core/dynamic-embedding.d.ts.map +1 -0
- package/dist/core/dynamic-embedding.js +527 -0
- package/dist/core/dynamic-embedding.js.map +1 -0
- package/dist/core/embedding-similarity.d.ts +68 -0
- package/dist/core/embedding-similarity.d.ts.map +1 -0
- package/dist/core/embedding-similarity.js +291 -0
- package/dist/core/embedding-similarity.js.map +1 -0
- package/dist/core/evolution-scheduler.d.ts +101 -0
- package/dist/core/evolution-scheduler.d.ts.map +1 -0
- package/dist/core/evolution-scheduler.js +235 -0
- package/dist/core/evolution-scheduler.js.map +1 -0
- package/dist/core/hierarchical-chunker.d.ts +108 -0
- package/dist/core/hierarchical-chunker.d.ts.map +1 -0
- package/dist/core/hierarchical-chunker.js +296 -0
- package/dist/core/hierarchical-chunker.js.map +1 -0
- package/dist/core/hnsw-index.d.ts +111 -0
- package/dist/core/hnsw-index.d.ts.map +1 -0
- package/dist/core/hnsw-index.js +466 -0
- package/dist/core/hnsw-index.js.map +1 -0
- package/dist/core/index.d.ts +23 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +25 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/language-analyzers.d.ts +124 -0
- package/dist/core/language-analyzers.d.ts.map +1 -0
- package/dist/core/language-analyzers.js +365 -0
- package/dist/core/language-analyzers.js.map +1 -0
- package/dist/core/local-embedding.d.ts +109 -0
- package/dist/core/local-embedding.d.ts.map +1 -0
- package/dist/core/local-embedding.js +222 -0
- package/dist/core/local-embedding.js.map +1 -0
- package/dist/core/merkle-engine.d.ts +263 -0
- package/dist/core/merkle-engine.d.ts.map +1 -0
- package/dist/core/merkle-engine.js +528 -0
- package/dist/core/merkle-engine.js.map +1 -0
- package/dist/core/multi-layer-reasoning.d.ts +178 -0
- package/dist/core/multi-layer-reasoning.d.ts.map +1 -0
- package/dist/core/multi-layer-reasoning.js +607 -0
- package/dist/core/multi-layer-reasoning.js.map +1 -0
- package/dist/core/neuron-graph.d.ts +134 -0
- package/dist/core/neuron-graph.d.ts.map +1 -0
- package/dist/core/neuron-graph.js +436 -0
- package/dist/core/neuron-graph.js.map +1 -0
- package/dist/core/probabilistic-neuron.d.ts +251 -0
- package/dist/core/probabilistic-neuron.d.ts.map +1 -0
- package/dist/core/probabilistic-neuron.js +618 -0
- package/dist/core/probabilistic-neuron.js.map +1 -0
- package/dist/core/probabilistic-orchestrator.d.ts +408 -0
- package/dist/core/probabilistic-orchestrator.d.ts.map +1 -0
- package/dist/core/probabilistic-orchestrator.js +798 -0
- package/dist/core/probabilistic-orchestrator.js.map +1 -0
- package/dist/core/semantic-chunker.d.ts +117 -0
- package/dist/core/semantic-chunker.d.ts.map +1 -0
- package/dist/core/semantic-chunker.js +464 -0
- package/dist/core/semantic-chunker.js.map +1 -0
- package/dist/events/event-bus.d.ts +166 -0
- package/dist/events/event-bus.d.ts.map +1 -0
- package/dist/events/event-bus.js +228 -0
- package/dist/events/event-bus.js.map +1 -0
- package/dist/events/index.d.ts +7 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +7 -0
- package/dist/events/index.js.map +1 -0
- package/dist/events/progress-tracker.d.ts +150 -0
- package/dist/events/progress-tracker.d.ts.map +1 -0
- package/dist/events/progress-tracker.js +290 -0
- package/dist/events/progress-tracker.js.map +1 -0
- package/dist/extensions/clustering/community-detection.d.ts +90 -0
- package/dist/extensions/clustering/community-detection.d.ts.map +1 -0
- package/dist/extensions/clustering/community-detection.js +470 -0
- package/dist/extensions/clustering/community-detection.js.map +1 -0
- package/dist/extensions/clustering/index.d.ts +114 -0
- package/dist/extensions/clustering/index.d.ts.map +1 -0
- package/dist/extensions/clustering/index.js +468 -0
- package/dist/extensions/clustering/index.js.map +1 -0
- package/dist/extensions/clustering/topic-modeling.d.ts +86 -0
- package/dist/extensions/clustering/topic-modeling.d.ts.map +1 -0
- package/dist/extensions/clustering/topic-modeling.js +355 -0
- package/dist/extensions/clustering/topic-modeling.js.map +1 -0
- package/dist/extensions/distributed/coordinator.d.ts +114 -0
- package/dist/extensions/distributed/coordinator.d.ts.map +1 -0
- package/dist/extensions/distributed/coordinator.js +319 -0
- package/dist/extensions/distributed/coordinator.js.map +1 -0
- package/dist/extensions/distributed/index.d.ts +10 -0
- package/dist/extensions/distributed/index.d.ts.map +1 -0
- package/dist/extensions/distributed/index.js +10 -0
- package/dist/extensions/distributed/index.js.map +1 -0
- package/dist/extensions/distributed/queue.d.ts +157 -0
- package/dist/extensions/distributed/queue.d.ts.map +1 -0
- package/dist/extensions/distributed/queue.js +326 -0
- package/dist/extensions/distributed/queue.js.map +1 -0
- package/dist/extensions/distributed/scheduler.d.ts +107 -0
- package/dist/extensions/distributed/scheduler.d.ts.map +1 -0
- package/dist/extensions/distributed/scheduler.js +301 -0
- package/dist/extensions/distributed/scheduler.js.map +1 -0
- package/dist/extensions/distributed/worker.d.ts +112 -0
- package/dist/extensions/distributed/worker.d.ts.map +1 -0
- package/dist/extensions/distributed/worker.js +260 -0
- package/dist/extensions/distributed/worker.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/server.d.ts +43 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +494 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/services/adaptive-fallback.d.ts +140 -0
- package/dist/services/adaptive-fallback.d.ts.map +1 -0
- package/dist/services/adaptive-fallback.js +273 -0
- package/dist/services/adaptive-fallback.js.map +1 -0
- package/dist/services/answer-gate.d.ts +112 -0
- package/dist/services/answer-gate.d.ts.map +1 -0
- package/dist/services/answer-gate.js +299 -0
- package/dist/services/answer-gate.js.map +1 -0
- package/dist/services/auto-learning.d.ts +135 -0
- package/dist/services/auto-learning.d.ts.map +1 -0
- package/dist/services/auto-learning.js +413 -0
- package/dist/services/auto-learning.js.map +1 -0
- package/dist/services/context-compressor.d.ts +77 -0
- package/dist/services/context-compressor.d.ts.map +1 -0
- package/dist/services/context-compressor.js +234 -0
- package/dist/services/context-compressor.js.map +1 -0
- package/dist/services/efficient-rag.d.ts +140 -0
- package/dist/services/efficient-rag.d.ts.map +1 -0
- package/dist/services/efficient-rag.js +311 -0
- package/dist/services/efficient-rag.js.map +1 -0
- package/dist/services/embedding-provider.d.ts +72 -0
- package/dist/services/embedding-provider.d.ts.map +1 -0
- package/dist/services/embedding-provider.js +176 -0
- package/dist/services/embedding-provider.js.map +1 -0
- package/dist/services/file-ingestion.d.ts +72 -0
- package/dist/services/file-ingestion.d.ts.map +1 -0
- package/dist/services/file-ingestion.js +237 -0
- package/dist/services/file-ingestion.js.map +1 -0
- package/dist/services/four-stage-learning.d.ts +552 -0
- package/dist/services/four-stage-learning.d.ts.map +1 -0
- package/dist/services/four-stage-learning.js +1110 -0
- package/dist/services/four-stage-learning.js.map +1 -0
- package/dist/services/graph.d.ts +94 -0
- package/dist/services/graph.d.ts.map +1 -0
- package/dist/services/graph.js +292 -0
- package/dist/services/graph.js.map +1 -0
- package/dist/services/index.d.ts +15 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +18 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/ingestion.d.ts +98 -0
- package/dist/services/ingestion.d.ts.map +1 -0
- package/dist/services/ingestion.js +259 -0
- package/dist/services/ingestion.js.map +1 -0
- package/dist/services/learning.d.ts +67 -0
- package/dist/services/learning.d.ts.map +1 -0
- package/dist/services/learning.js +262 -0
- package/dist/services/learning.js.map +1 -0
- package/dist/services/llm-router.d.ts +143 -0
- package/dist/services/llm-router.d.ts.map +1 -0
- package/dist/services/llm-router.js +284 -0
- package/dist/services/llm-router.js.map +1 -0
- package/dist/services/llm.d.ts +86 -0
- package/dist/services/llm.d.ts.map +1 -0
- package/dist/services/llm.js +283 -0
- package/dist/services/llm.js.map +1 -0
- package/dist/services/metrics-dashboard.d.ts +262 -0
- package/dist/services/metrics-dashboard.d.ts.map +1 -0
- package/dist/services/metrics-dashboard.js +417 -0
- package/dist/services/metrics-dashboard.js.map +1 -0
- package/dist/services/neuron-lifecycle.d.ts +137 -0
- package/dist/services/neuron-lifecycle.d.ts.map +1 -0
- package/dist/services/neuron-lifecycle.js +422 -0
- package/dist/services/neuron-lifecycle.js.map +1 -0
- package/dist/services/nmt-pipeline.d.ts +219 -0
- package/dist/services/nmt-pipeline.d.ts.map +1 -0
- package/dist/services/nmt-pipeline.js +449 -0
- package/dist/services/nmt-pipeline.js.map +1 -0
- package/dist/services/query-cache.d.ts +136 -0
- package/dist/services/query-cache.d.ts.map +1 -0
- package/dist/services/query-cache.js +255 -0
- package/dist/services/query-cache.js.map +1 -0
- package/dist/services/query-normalize.d.ts +107 -0
- package/dist/services/query-normalize.d.ts.map +1 -0
- package/dist/services/query-normalize.js +366 -0
- package/dist/services/query-normalize.js.map +1 -0
- package/dist/services/query.d.ts +102 -0
- package/dist/services/query.d.ts.map +1 -0
- package/dist/services/query.js +227 -0
- package/dist/services/query.js.map +1 -0
- package/dist/services/text-embedding.d.ts +183 -0
- package/dist/services/text-embedding.d.ts.map +1 -0
- package/dist/services/text-embedding.js +633 -0
- package/dist/services/text-embedding.js.map +1 -0
- package/dist/services/verification-gate.d.ts +147 -0
- package/dist/services/verification-gate.d.ts.map +1 -0
- package/dist/services/verification-gate.js +344 -0
- package/dist/services/verification-gate.js.map +1 -0
- package/dist/services/verify.d.ts +114 -0
- package/dist/services/verify.d.ts.map +1 -0
- package/dist/services/verify.js +237 -0
- package/dist/services/verify.js.map +1 -0
- package/dist/services/web-search.d.ts +145 -0
- package/dist/services/web-search.d.ts.map +1 -0
- package/dist/services/web-search.js +534 -0
- package/dist/services/web-search.js.map +1 -0
- package/dist/src/api/cli-server.d.ts +83 -0
- package/dist/src/api/cli-server.d.ts.map +1 -0
- package/dist/src/api/cli-server.js +597 -0
- package/dist/src/api/cli-server.js.map +1 -0
- package/dist/src/api/index.d.ts +6 -0
- package/dist/src/api/index.d.ts.map +1 -0
- package/dist/src/api/index.js +6 -0
- package/dist/src/api/index.js.map +1 -0
- package/dist/src/cli/commands/attractor.d.ts +6 -0
- package/dist/src/cli/commands/attractor.d.ts.map +1 -0
- package/dist/src/cli/commands/attractor.js +167 -0
- package/dist/src/cli/commands/attractor.js.map +1 -0
- package/dist/src/cli/commands/dimension.d.ts +6 -0
- package/dist/src/cli/commands/dimension.d.ts.map +1 -0
- package/dist/src/cli/commands/dimension.js +85 -0
- package/dist/src/cli/commands/dimension.js.map +1 -0
- package/dist/src/cli/commands/index.d.ts +11 -0
- package/dist/src/cli/commands/index.d.ts.map +1 -0
- package/dist/src/cli/commands/index.js +11 -0
- package/dist/src/cli/commands/index.js.map +1 -0
- package/dist/src/cli/commands/infer.d.ts +6 -0
- package/dist/src/cli/commands/infer.d.ts.map +1 -0
- package/dist/src/cli/commands/infer.js +139 -0
- package/dist/src/cli/commands/infer.js.map +1 -0
- package/dist/src/cli/commands/learn.d.ts +6 -0
- package/dist/src/cli/commands/learn.d.ts.map +1 -0
- package/dist/src/cli/commands/learn.js +87 -0
- package/dist/src/cli/commands/learn.js.map +1 -0
- package/dist/src/cli/commands/orchestrate.d.ts +6 -0
- package/dist/src/cli/commands/orchestrate.d.ts.map +1 -0
- package/dist/src/cli/commands/orchestrate.js +279 -0
- package/dist/src/cli/commands/orchestrate.js.map +1 -0
- package/dist/src/cli/commands/prob.d.ts +6 -0
- package/dist/src/cli/commands/prob.d.ts.map +1 -0
- package/dist/src/cli/commands/prob.js +256 -0
- package/dist/src/cli/commands/prob.js.map +1 -0
- package/dist/src/cli/commands/sync.d.ts +65 -0
- package/dist/src/cli/commands/sync.d.ts.map +1 -0
- package/dist/src/cli/commands/sync.js +338 -0
- package/dist/src/cli/commands/sync.js.map +1 -0
- package/dist/src/cli/index.d.ts +9 -0
- package/dist/src/cli/index.d.ts.map +1 -0
- package/dist/src/cli/index.js +9 -0
- package/dist/src/cli/index.js.map +1 -0
- package/dist/src/cli/probabilistic-commands.d.ts +39 -0
- package/dist/src/cli/probabilistic-commands.d.ts.map +1 -0
- package/dist/src/cli/probabilistic-commands.js +112 -0
- package/dist/src/cli/probabilistic-commands.js.map +1 -0
- package/dist/src/cli/types.d.ts +69 -0
- package/dist/src/cli/types.d.ts.map +1 -0
- package/dist/src/cli/types.js +5 -0
- package/dist/src/cli/types.js.map +1 -0
- package/dist/src/cli/utils/formatters.d.ts +51 -0
- package/dist/src/cli/utils/formatters.d.ts.map +1 -0
- package/dist/src/cli/utils/formatters.js +79 -0
- package/dist/src/cli/utils/formatters.js.map +1 -0
- package/dist/src/cli/utils/helpers.d.ts +21 -0
- package/dist/src/cli/utils/helpers.d.ts.map +1 -0
- package/dist/src/cli/utils/helpers.js +51 -0
- package/dist/src/cli/utils/helpers.js.map +1 -0
- package/dist/src/cli/utils/index.d.ts +7 -0
- package/dist/src/cli/utils/index.d.ts.map +1 -0
- package/dist/src/cli/utils/index.js +13 -0
- package/dist/src/cli/utils/index.js.map +1 -0
- package/dist/src/cli/utils/validators.d.ts +162 -0
- package/dist/src/cli/utils/validators.d.ts.map +1 -0
- package/dist/src/cli/utils/validators.js +351 -0
- package/dist/src/cli/utils/validators.js.map +1 -0
- package/dist/src/core/attractor-model.d.ts +381 -0
- package/dist/src/core/attractor-model.d.ts.map +1 -0
- package/dist/src/core/attractor-model.js +821 -0
- package/dist/src/core/attractor-model.js.map +1 -0
- package/dist/src/core/bidirectional-inference.d.ts +143 -0
- package/dist/src/core/bidirectional-inference.d.ts.map +1 -0
- package/dist/src/core/bidirectional-inference.js +501 -0
- package/dist/src/core/bidirectional-inference.js.map +1 -0
- package/dist/src/core/chunk-engine.d.ts +78 -0
- package/dist/src/core/chunk-engine.d.ts.map +1 -0
- package/dist/src/core/chunk-engine.js +192 -0
- package/dist/src/core/chunk-engine.js.map +1 -0
- package/dist/src/core/dynamic-embedding.d.ts +327 -0
- package/dist/src/core/dynamic-embedding.d.ts.map +1 -0
- package/dist/src/core/dynamic-embedding.js +527 -0
- package/dist/src/core/dynamic-embedding.js.map +1 -0
- package/dist/src/core/evolution-scheduler.d.ts +101 -0
- package/dist/src/core/evolution-scheduler.d.ts.map +1 -0
- package/dist/src/core/evolution-scheduler.js +235 -0
- package/dist/src/core/evolution-scheduler.js.map +1 -0
- package/dist/src/core/hnsw-index.d.ts +111 -0
- package/dist/src/core/hnsw-index.d.ts.map +1 -0
- package/dist/src/core/hnsw-index.js +466 -0
- package/dist/src/core/hnsw-index.js.map +1 -0
- package/dist/src/core/index.d.ts +23 -0
- package/dist/src/core/index.d.ts.map +1 -0
- package/dist/src/core/index.js +25 -0
- package/dist/src/core/index.js.map +1 -0
- package/dist/src/core/merkle-engine.d.ts +263 -0
- package/dist/src/core/merkle-engine.d.ts.map +1 -0
- package/dist/src/core/merkle-engine.js +528 -0
- package/dist/src/core/merkle-engine.js.map +1 -0
- package/dist/src/core/neuron-graph.d.ts +134 -0
- package/dist/src/core/neuron-graph.d.ts.map +1 -0
- package/dist/src/core/neuron-graph.js +436 -0
- package/dist/src/core/neuron-graph.js.map +1 -0
- package/dist/src/core/probabilistic-neuron.d.ts +251 -0
- package/dist/src/core/probabilistic-neuron.d.ts.map +1 -0
- package/dist/src/core/probabilistic-neuron.js +618 -0
- package/dist/src/core/probabilistic-neuron.js.map +1 -0
- package/dist/src/core/probabilistic-orchestrator.d.ts +408 -0
- package/dist/src/core/probabilistic-orchestrator.d.ts.map +1 -0
- package/dist/src/core/probabilistic-orchestrator.js +798 -0
- package/dist/src/core/probabilistic-orchestrator.js.map +1 -0
- package/dist/src/events/event-bus.d.ts +166 -0
- package/dist/src/events/event-bus.d.ts.map +1 -0
- package/dist/src/events/event-bus.js +228 -0
- package/dist/src/events/event-bus.js.map +1 -0
- package/dist/src/events/index.d.ts +7 -0
- package/dist/src/events/index.d.ts.map +1 -0
- package/dist/src/events/index.js +7 -0
- package/dist/src/events/index.js.map +1 -0
- package/dist/src/events/progress-tracker.d.ts +150 -0
- package/dist/src/events/progress-tracker.d.ts.map +1 -0
- package/dist/src/events/progress-tracker.js +290 -0
- package/dist/src/events/progress-tracker.js.map +1 -0
- package/dist/src/extensions/clustering/index.d.ts +114 -0
- package/dist/src/extensions/clustering/index.d.ts.map +1 -0
- package/dist/src/extensions/clustering/index.js +468 -0
- package/dist/src/extensions/clustering/index.js.map +1 -0
- package/dist/src/index.d.ts +14 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +20 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/mcp/server.d.ts +43 -0
- package/dist/src/mcp/server.d.ts.map +1 -0
- package/dist/src/mcp/server.js +494 -0
- package/dist/src/mcp/server.js.map +1 -0
- package/dist/src/services/embedding-provider.d.ts +72 -0
- package/dist/src/services/embedding-provider.d.ts.map +1 -0
- package/dist/src/services/embedding-provider.js +176 -0
- package/dist/src/services/embedding-provider.js.map +1 -0
- package/dist/src/services/four-stage-learning.d.ts +552 -0
- package/dist/src/services/four-stage-learning.d.ts.map +1 -0
- package/dist/src/services/four-stage-learning.js +1110 -0
- package/dist/src/services/four-stage-learning.js.map +1 -0
- package/dist/src/services/index.d.ts +15 -0
- package/dist/src/services/index.d.ts.map +1 -0
- package/dist/src/services/index.js +18 -0
- package/dist/src/services/index.js.map +1 -0
- package/dist/src/services/ingestion.d.ts +98 -0
- package/dist/src/services/ingestion.d.ts.map +1 -0
- package/dist/src/services/ingestion.js +259 -0
- package/dist/src/services/ingestion.js.map +1 -0
- package/dist/src/services/query.d.ts +102 -0
- package/dist/src/services/query.d.ts.map +1 -0
- package/dist/src/services/query.js +227 -0
- package/dist/src/services/query.js.map +1 -0
- package/dist/src/services/text-embedding.d.ts +183 -0
- package/dist/src/services/text-embedding.d.ts.map +1 -0
- package/dist/src/services/text-embedding.js +633 -0
- package/dist/src/services/text-embedding.js.map +1 -0
- package/dist/src/services/verify.d.ts +114 -0
- package/dist/src/services/verify.d.ts.map +1 -0
- package/dist/src/services/verify.js +237 -0
- package/dist/src/services/verify.js.map +1 -0
- package/dist/src/storage/chunk-store.d.ts +107 -0
- package/dist/src/storage/chunk-store.d.ts.map +1 -0
- package/dist/src/storage/chunk-store.js +293 -0
- package/dist/src/storage/chunk-store.js.map +1 -0
- package/dist/src/storage/index-store.d.ts +126 -0
- package/dist/src/storage/index-store.d.ts.map +1 -0
- package/dist/src/storage/index-store.js +316 -0
- package/dist/src/storage/index-store.js.map +1 -0
- package/dist/src/storage/index.d.ts +45 -0
- package/dist/src/storage/index.d.ts.map +1 -0
- package/dist/src/storage/index.js +52 -0
- package/dist/src/storage/index.js.map +1 -0
- package/dist/src/storage/neuron-store.d.ts +121 -0
- package/dist/src/storage/neuron-store.d.ts.map +1 -0
- package/dist/src/storage/neuron-store.js +466 -0
- package/dist/src/storage/neuron-store.js.map +1 -0
- package/dist/src/storage/probabilistic-store.d.ts +104 -0
- package/dist/src/storage/probabilistic-store.d.ts.map +1 -0
- package/dist/src/storage/probabilistic-store.js +257 -0
- package/dist/src/storage/probabilistic-store.js.map +1 -0
- package/dist/src/sync/change-journal.d.ts +171 -0
- package/dist/src/sync/change-journal.d.ts.map +1 -0
- package/dist/src/sync/change-journal.js +362 -0
- package/dist/src/sync/change-journal.js.map +1 -0
- package/dist/src/sync/index.d.ts +8 -0
- package/dist/src/sync/index.d.ts.map +1 -0
- package/dist/src/sync/index.js +8 -0
- package/dist/src/sync/index.js.map +1 -0
- package/dist/src/sync/state-sync.d.ts +241 -0
- package/dist/src/sync/state-sync.d.ts.map +1 -0
- package/dist/src/sync/state-sync.js +396 -0
- package/dist/src/sync/state-sync.js.map +1 -0
- package/dist/src/sync/vector-clock.d.ts +144 -0
- package/dist/src/sync/vector-clock.d.ts.map +1 -0
- package/dist/src/sync/vector-clock.js +266 -0
- package/dist/src/sync/vector-clock.js.map +1 -0
- package/dist/src/types/index.d.ts +224 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/src/types/index.js +24 -0
- package/dist/src/types/index.js.map +1 -0
- package/dist/src/utils/hash.d.ts +39 -0
- package/dist/src/utils/hash.d.ts.map +1 -0
- package/dist/src/utils/hash.js +56 -0
- package/dist/src/utils/hash.js.map +1 -0
- package/dist/src/utils/index.d.ts +26 -0
- package/dist/src/utils/index.d.ts.map +1 -0
- package/dist/src/utils/index.js +50 -0
- package/dist/src/utils/index.js.map +1 -0
- package/dist/src/utils/logger.d.ts +88 -0
- package/dist/src/utils/logger.d.ts.map +1 -0
- package/dist/src/utils/logger.js +157 -0
- package/dist/src/utils/logger.js.map +1 -0
- package/dist/src/utils/metrics.d.ts +232 -0
- package/dist/src/utils/metrics.d.ts.map +1 -0
- package/dist/src/utils/metrics.js +387 -0
- package/dist/src/utils/metrics.js.map +1 -0
- package/dist/src/utils/similarity.d.ts +64 -0
- package/dist/src/utils/similarity.d.ts.map +1 -0
- package/dist/src/utils/similarity.js +151 -0
- package/dist/src/utils/similarity.js.map +1 -0
- package/dist/src/utils/uuid.d.ts +23 -0
- package/dist/src/utils/uuid.d.ts.map +1 -0
- package/dist/src/utils/uuid.js +29 -0
- package/dist/src/utils/uuid.js.map +1 -0
- package/dist/storage/chunk-store.d.ts +107 -0
- package/dist/storage/chunk-store.d.ts.map +1 -0
- package/dist/storage/chunk-store.js +293 -0
- package/dist/storage/chunk-store.js.map +1 -0
- package/dist/storage/hybrid-adapters.d.ts +111 -0
- package/dist/storage/hybrid-adapters.d.ts.map +1 -0
- package/dist/storage/hybrid-adapters.js +223 -0
- package/dist/storage/hybrid-adapters.js.map +1 -0
- package/dist/storage/hybrid-store.d.ts +125 -0
- package/dist/storage/hybrid-store.d.ts.map +1 -0
- package/dist/storage/hybrid-store.js +655 -0
- package/dist/storage/hybrid-store.js.map +1 -0
- package/dist/storage/index-store.d.ts +126 -0
- package/dist/storage/index-store.d.ts.map +1 -0
- package/dist/storage/index-store.js +316 -0
- package/dist/storage/index-store.js.map +1 -0
- package/dist/storage/index.d.ts +45 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +52 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/neuron-store.d.ts +121 -0
- package/dist/storage/neuron-store.d.ts.map +1 -0
- package/dist/storage/neuron-store.js +466 -0
- package/dist/storage/neuron-store.js.map +1 -0
- package/dist/storage/ontology-store.d.ts +132 -0
- package/dist/storage/ontology-store.d.ts.map +1 -0
- package/dist/storage/ontology-store.js +319 -0
- package/dist/storage/ontology-store.js.map +1 -0
- package/dist/storage/probabilistic-store.d.ts +104 -0
- package/dist/storage/probabilistic-store.d.ts.map +1 -0
- package/dist/storage/probabilistic-store.js +257 -0
- package/dist/storage/probabilistic-store.js.map +1 -0
- package/dist/storage/redis-adapters.d.ts +102 -0
- package/dist/storage/redis-adapters.d.ts.map +1 -0
- package/dist/storage/redis-adapters.js +205 -0
- package/dist/storage/redis-adapters.js.map +1 -0
- package/dist/storage/redis-ontology-store.d.ts +146 -0
- package/dist/storage/redis-ontology-store.d.ts.map +1 -0
- package/dist/storage/redis-ontology-store.js +384 -0
- package/dist/storage/redis-ontology-store.js.map +1 -0
- package/dist/storage/redis-store.d.ts +174 -0
- package/dist/storage/redis-store.d.ts.map +1 -0
- package/dist/storage/redis-store.js +506 -0
- package/dist/storage/redis-store.js.map +1 -0
- package/dist/sync/change-journal.d.ts +171 -0
- package/dist/sync/change-journal.d.ts.map +1 -0
- package/dist/sync/change-journal.js +362 -0
- package/dist/sync/change-journal.js.map +1 -0
- package/dist/sync/index.d.ts +8 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +8 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/sync/state-sync.d.ts +241 -0
- package/dist/sync/state-sync.d.ts.map +1 -0
- package/dist/sync/state-sync.js +396 -0
- package/dist/sync/state-sync.js.map +1 -0
- package/dist/sync/vector-clock.d.ts +144 -0
- package/dist/sync/vector-clock.d.ts.map +1 -0
- package/dist/sync/vector-clock.js +266 -0
- package/dist/sync/vector-clock.js.map +1 -0
- package/dist/types/index.d.ts +224 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +24 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/hash.d.ts +39 -0
- package/dist/utils/hash.d.ts.map +1 -0
- package/dist/utils/hash.js +56 -0
- package/dist/utils/hash.js.map +1 -0
- package/dist/utils/index.d.ts +26 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +50 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +88 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +157 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/metrics.d.ts +232 -0
- package/dist/utils/metrics.d.ts.map +1 -0
- package/dist/utils/metrics.js +387 -0
- package/dist/utils/metrics.js.map +1 -0
- package/dist/utils/similarity.d.ts +64 -0
- package/dist/utils/similarity.d.ts.map +1 -0
- package/dist/utils/similarity.js +151 -0
- package/dist/utils/similarity.js.map +1 -0
- package/dist/utils/uuid.d.ts +23 -0
- package/dist/utils/uuid.d.ts.map +1 -0
- package/dist/utils/uuid.js +29 -0
- package/dist/utils/uuid.js.map +1 -0
- package/package.json +72 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API Middleware Exports
|
|
3
|
+
*/
|
|
4
|
+
export * from './validation.js';
|
|
5
|
+
export * from './rate-limit.js';
|
|
6
|
+
export * from './logger.js';
|
|
7
|
+
export * from './response.js';
|
|
8
|
+
// Re-export defaults
|
|
9
|
+
export { default as validation } from './validation.js';
|
|
10
|
+
export { default as rateLimiters } from './rate-limit.js';
|
|
11
|
+
export { default as logger } from './logger.js';
|
|
12
|
+
export { default as response } from './response.js';
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/middleware/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAE9B,qBAAqB;AACrB,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logger Middleware
|
|
3
|
+
* Structured logging with levels and request tracking
|
|
4
|
+
*/
|
|
5
|
+
import { Request, Response, NextFunction } from 'express';
|
|
6
|
+
export declare const logger: {
|
|
7
|
+
debug: (message: string, data?: any) => void;
|
|
8
|
+
info: (message: string, data?: any) => void;
|
|
9
|
+
warn: (message: string, data?: any) => void;
|
|
10
|
+
error: (message: string, data?: any) => void;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Request logging middleware
|
|
14
|
+
*/
|
|
15
|
+
export declare function requestLogger(req: Request, res: Response, next: NextFunction): void;
|
|
16
|
+
/**
|
|
17
|
+
* Error logging middleware
|
|
18
|
+
*/
|
|
19
|
+
export declare function errorLogger(err: Error, req: Request, res: Response, next: NextFunction): void;
|
|
20
|
+
export default logger;
|
|
21
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/api/middleware/logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAyF1D,eAAO,MAAM,MAAM;qBACA,MAAM,SAAS,GAAG;oBACnB,MAAM,SAAS,GAAG;oBAClB,MAAM,SAAS,GAAG;qBACjB,MAAM,SAAS,GAAG;CACpC,CAAC;AAgBF;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,QAoC5E;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,QAYtF;AAED,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logger Middleware
|
|
3
|
+
* Structured logging with levels and request tracking
|
|
4
|
+
*/
|
|
5
|
+
// Configuration
|
|
6
|
+
const LOG_LEVEL = (process.env.LOG_LEVEL || 'info');
|
|
7
|
+
const IS_PRODUCTION = process.env.NODE_ENV === 'production';
|
|
8
|
+
const LEVEL_PRIORITY = {
|
|
9
|
+
debug: 0,
|
|
10
|
+
info: 1,
|
|
11
|
+
warn: 2,
|
|
12
|
+
error: 3,
|
|
13
|
+
};
|
|
14
|
+
function shouldLog(level) {
|
|
15
|
+
return LEVEL_PRIORITY[level] >= LEVEL_PRIORITY[LOG_LEVEL];
|
|
16
|
+
}
|
|
17
|
+
function formatLog(entry) {
|
|
18
|
+
if (IS_PRODUCTION) {
|
|
19
|
+
// JSON format for production (easier to parse)
|
|
20
|
+
return JSON.stringify(entry);
|
|
21
|
+
}
|
|
22
|
+
// Human-readable format for development
|
|
23
|
+
const { timestamp, level, message, data, requestId, method, path, statusCode, duration, ip } = entry;
|
|
24
|
+
let output = `[${timestamp}] ${level.toUpperCase().padEnd(5)} ${message}`;
|
|
25
|
+
if (method && path) {
|
|
26
|
+
output += ` | ${method} ${path}`;
|
|
27
|
+
}
|
|
28
|
+
if (statusCode) {
|
|
29
|
+
output += ` | ${statusCode}`;
|
|
30
|
+
}
|
|
31
|
+
if (duration !== undefined) {
|
|
32
|
+
output += ` | ${duration}ms`;
|
|
33
|
+
}
|
|
34
|
+
if (ip) {
|
|
35
|
+
output += ` | ${ip}`;
|
|
36
|
+
}
|
|
37
|
+
if (requestId) {
|
|
38
|
+
output += ` | req:${requestId.slice(0, 8)}`;
|
|
39
|
+
}
|
|
40
|
+
if (data && Object.keys(data).length > 0) {
|
|
41
|
+
output += ` | ${JSON.stringify(data)}`;
|
|
42
|
+
}
|
|
43
|
+
return output;
|
|
44
|
+
}
|
|
45
|
+
function log(level, message, data) {
|
|
46
|
+
if (!shouldLog(level))
|
|
47
|
+
return;
|
|
48
|
+
const entry = {
|
|
49
|
+
timestamp: new Date().toISOString(),
|
|
50
|
+
level,
|
|
51
|
+
message,
|
|
52
|
+
data,
|
|
53
|
+
};
|
|
54
|
+
const formatted = formatLog(entry);
|
|
55
|
+
switch (level) {
|
|
56
|
+
case 'error':
|
|
57
|
+
console.error(formatted);
|
|
58
|
+
break;
|
|
59
|
+
case 'warn':
|
|
60
|
+
console.warn(formatted);
|
|
61
|
+
break;
|
|
62
|
+
default:
|
|
63
|
+
console.log(formatted);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// Public logging functions
|
|
67
|
+
export const logger = {
|
|
68
|
+
debug: (message, data) => log('debug', message, data),
|
|
69
|
+
info: (message, data) => log('info', message, data),
|
|
70
|
+
warn: (message, data) => log('warn', message, data),
|
|
71
|
+
error: (message, data) => log('error', message, data),
|
|
72
|
+
};
|
|
73
|
+
// Generate simple request ID
|
|
74
|
+
function generateRequestId() {
|
|
75
|
+
return Math.random().toString(36).substring(2, 15) + Date.now().toString(36);
|
|
76
|
+
}
|
|
77
|
+
// Get client IP
|
|
78
|
+
function getClientIP(req) {
|
|
79
|
+
const forwarded = req.headers['x-forwarded-for'];
|
|
80
|
+
const ip = forwarded
|
|
81
|
+
? (Array.isArray(forwarded) ? forwarded[0] : forwarded.split(',')[0])
|
|
82
|
+
: req.socket.remoteAddress || 'unknown';
|
|
83
|
+
return ip;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Request logging middleware
|
|
87
|
+
*/
|
|
88
|
+
export function requestLogger(req, res, next) {
|
|
89
|
+
// Generate request ID
|
|
90
|
+
const requestId = generateRequestId();
|
|
91
|
+
req.requestId = requestId;
|
|
92
|
+
const startTime = Date.now();
|
|
93
|
+
const method = req.method;
|
|
94
|
+
const path = req.originalUrl || req.url;
|
|
95
|
+
const ip = getClientIP(req);
|
|
96
|
+
// Log request start (debug level)
|
|
97
|
+
if (shouldLog('debug')) {
|
|
98
|
+
logger.debug('Request started', { method, path, ip, requestId });
|
|
99
|
+
}
|
|
100
|
+
// Capture response finish
|
|
101
|
+
res.on('finish', () => {
|
|
102
|
+
const duration = Date.now() - startTime;
|
|
103
|
+
const statusCode = res.statusCode;
|
|
104
|
+
const entry = {
|
|
105
|
+
timestamp: new Date().toISOString(),
|
|
106
|
+
level: statusCode >= 500 ? 'error' : statusCode >= 400 ? 'warn' : 'info',
|
|
107
|
+
message: 'Request completed',
|
|
108
|
+
method,
|
|
109
|
+
path,
|
|
110
|
+
statusCode,
|
|
111
|
+
duration,
|
|
112
|
+
ip,
|
|
113
|
+
requestId,
|
|
114
|
+
};
|
|
115
|
+
console.log(formatLog(entry));
|
|
116
|
+
});
|
|
117
|
+
next();
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Error logging middleware
|
|
121
|
+
*/
|
|
122
|
+
export function errorLogger(err, req, res, next) {
|
|
123
|
+
const requestId = req.requestId || 'unknown';
|
|
124
|
+
logger.error('Request error', {
|
|
125
|
+
error: err.message,
|
|
126
|
+
stack: IS_PRODUCTION ? undefined : err.stack,
|
|
127
|
+
requestId,
|
|
128
|
+
method: req.method,
|
|
129
|
+
path: req.originalUrl,
|
|
130
|
+
});
|
|
131
|
+
next(err);
|
|
132
|
+
}
|
|
133
|
+
export default logger;
|
|
134
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/api/middleware/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rate Limiting Middleware
|
|
3
|
+
* Simple in-memory rate limiter (use Redis for distributed systems)
|
|
4
|
+
*/
|
|
5
|
+
import { Request, RequestHandler } from 'express';
|
|
6
|
+
interface RateLimitConfig {
|
|
7
|
+
windowMs: number;
|
|
8
|
+
maxRequests: number;
|
|
9
|
+
message?: string;
|
|
10
|
+
keyGenerator?: (req: Request) => string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Create rate limiter middleware
|
|
14
|
+
*/
|
|
15
|
+
export declare function createRateLimiter(config: RateLimitConfig): RequestHandler;
|
|
16
|
+
export declare const rateLimiters: {
|
|
17
|
+
general: RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
|
|
18
|
+
search: RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
|
|
19
|
+
ingest: RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
|
|
20
|
+
llm: RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
|
|
21
|
+
upload: RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
|
|
22
|
+
config: RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
|
|
23
|
+
strict: RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
|
|
24
|
+
};
|
|
25
|
+
export default rateLimiters;
|
|
26
|
+
//# sourceMappingURL=rate-limit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate-limit.d.ts","sourceRoot":"","sources":["../../../src/api/middleware/rate-limit.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAA0B,cAAc,EAAE,MAAM,SAAS,CAAC;AAE1E,UAAU,eAAe;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,CAAC;CACzC;AA8BD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,cAAc,CA0CzE;AAGD,eAAO,MAAM,YAAY;;;;;;;;CAiDxB,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rate Limiting Middleware
|
|
3
|
+
* Simple in-memory rate limiter (use Redis for distributed systems)
|
|
4
|
+
*/
|
|
5
|
+
// In-memory store (use Redis for production)
|
|
6
|
+
const store = new Map();
|
|
7
|
+
// Cleanup old entries periodically
|
|
8
|
+
setInterval(() => {
|
|
9
|
+
const now = Date.now();
|
|
10
|
+
const entries = Array.from(store.entries());
|
|
11
|
+
for (const [key, entry] of entries) {
|
|
12
|
+
if (entry.resetTime < now) {
|
|
13
|
+
store.delete(key);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}, 60000); // Clean every minute
|
|
17
|
+
// Default key generator (IP-based)
|
|
18
|
+
function defaultKeyGenerator(req) {
|
|
19
|
+
const forwarded = req.headers['x-forwarded-for'];
|
|
20
|
+
const ip = forwarded
|
|
21
|
+
? (Array.isArray(forwarded) ? forwarded[0] : forwarded.split(',')[0])
|
|
22
|
+
: req.socket.remoteAddress || 'unknown';
|
|
23
|
+
return `rate:${ip}`;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Create rate limiter middleware
|
|
27
|
+
*/
|
|
28
|
+
export function createRateLimiter(config) {
|
|
29
|
+
const { windowMs, maxRequests, message = 'Too many requests, please try again later.', keyGenerator = defaultKeyGenerator, } = config;
|
|
30
|
+
return (req, res, next) => {
|
|
31
|
+
const key = keyGenerator(req);
|
|
32
|
+
const now = Date.now();
|
|
33
|
+
let entry = store.get(key);
|
|
34
|
+
if (!entry || entry.resetTime < now) {
|
|
35
|
+
// Create new entry
|
|
36
|
+
entry = {
|
|
37
|
+
count: 1,
|
|
38
|
+
resetTime: now + windowMs,
|
|
39
|
+
};
|
|
40
|
+
store.set(key, entry);
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
entry.count++;
|
|
44
|
+
}
|
|
45
|
+
// Set rate limit headers
|
|
46
|
+
res.setHeader('X-RateLimit-Limit', maxRequests);
|
|
47
|
+
res.setHeader('X-RateLimit-Remaining', Math.max(0, maxRequests - entry.count));
|
|
48
|
+
res.setHeader('X-RateLimit-Reset', Math.ceil(entry.resetTime / 1000));
|
|
49
|
+
if (entry.count > maxRequests) {
|
|
50
|
+
res.setHeader('Retry-After', Math.ceil((entry.resetTime - now) / 1000));
|
|
51
|
+
res.status(429).json({
|
|
52
|
+
error: 'Rate Limit Exceeded',
|
|
53
|
+
message,
|
|
54
|
+
retryAfter: Math.ceil((entry.resetTime - now) / 1000),
|
|
55
|
+
});
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
next();
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
// Preset configurations
|
|
62
|
+
export const rateLimiters = {
|
|
63
|
+
// General API: 100 requests per minute
|
|
64
|
+
general: createRateLimiter({
|
|
65
|
+
windowMs: 60 * 1000,
|
|
66
|
+
maxRequests: 100,
|
|
67
|
+
message: 'Too many requests. Please wait a minute.',
|
|
68
|
+
}),
|
|
69
|
+
// Search: 30 requests per minute (more expensive)
|
|
70
|
+
search: createRateLimiter({
|
|
71
|
+
windowMs: 60 * 1000,
|
|
72
|
+
maxRequests: 30,
|
|
73
|
+
message: 'Too many search requests. Please slow down.',
|
|
74
|
+
}),
|
|
75
|
+
// Ingestion: 20 requests per minute
|
|
76
|
+
ingest: createRateLimiter({
|
|
77
|
+
windowMs: 60 * 1000,
|
|
78
|
+
maxRequests: 20,
|
|
79
|
+
message: 'Too many ingestion requests. Please slow down.',
|
|
80
|
+
}),
|
|
81
|
+
// LLM/RAG: 10 requests per minute (expensive API calls)
|
|
82
|
+
llm: createRateLimiter({
|
|
83
|
+
windowMs: 60 * 1000,
|
|
84
|
+
maxRequests: 10,
|
|
85
|
+
message: 'Too many LLM requests. Please wait before trying again.',
|
|
86
|
+
}),
|
|
87
|
+
// File upload: 5 requests per minute
|
|
88
|
+
upload: createRateLimiter({
|
|
89
|
+
windowMs: 60 * 1000,
|
|
90
|
+
maxRequests: 5,
|
|
91
|
+
message: 'Too many file uploads. Please wait.',
|
|
92
|
+
}),
|
|
93
|
+
// Auth/Config: 10 requests per minute
|
|
94
|
+
config: createRateLimiter({
|
|
95
|
+
windowMs: 60 * 1000,
|
|
96
|
+
maxRequests: 10,
|
|
97
|
+
message: 'Too many configuration requests.',
|
|
98
|
+
}),
|
|
99
|
+
// Strict: 5 requests per minute (for sensitive operations)
|
|
100
|
+
strict: createRateLimiter({
|
|
101
|
+
windowMs: 60 * 1000,
|
|
102
|
+
maxRequests: 5,
|
|
103
|
+
message: 'Rate limit exceeded for this operation.',
|
|
104
|
+
}),
|
|
105
|
+
};
|
|
106
|
+
export default rateLimiters;
|
|
107
|
+
//# sourceMappingURL=rate-limit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate-limit.js","sourceRoot":"","sources":["../../../src/api/middleware/rate-limit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Standardized API Response Helpers
|
|
3
|
+
*/
|
|
4
|
+
import { Response } from 'express';
|
|
5
|
+
export interface APIResponse<T = any> {
|
|
6
|
+
success: boolean;
|
|
7
|
+
data?: T;
|
|
8
|
+
error?: string;
|
|
9
|
+
message?: string;
|
|
10
|
+
meta?: {
|
|
11
|
+
total?: number;
|
|
12
|
+
page?: number;
|
|
13
|
+
limit?: number;
|
|
14
|
+
hasMore?: boolean;
|
|
15
|
+
};
|
|
16
|
+
timestamp: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Send success response
|
|
20
|
+
*/
|
|
21
|
+
export declare function sendSuccess<T>(res: Response, data: T, meta?: APIResponse['meta'], statusCode?: number): Response;
|
|
22
|
+
/**
|
|
23
|
+
* Send created response (201)
|
|
24
|
+
*/
|
|
25
|
+
export declare function sendCreated<T>(res: Response, data: T, message?: string): Response;
|
|
26
|
+
/**
|
|
27
|
+
* Send error response
|
|
28
|
+
*/
|
|
29
|
+
export declare function sendError(res: Response, message: string, statusCode?: number, details?: any): Response;
|
|
30
|
+
/**
|
|
31
|
+
* Send validation error (400)
|
|
32
|
+
*/
|
|
33
|
+
export declare function sendValidationError(res: Response, field: string, message: string): Response;
|
|
34
|
+
/**
|
|
35
|
+
* Send not found error (404)
|
|
36
|
+
*/
|
|
37
|
+
export declare function sendNotFound(res: Response, resource?: string): Response;
|
|
38
|
+
/**
|
|
39
|
+
* Send unauthorized error (401)
|
|
40
|
+
*/
|
|
41
|
+
export declare function sendUnauthorized(res: Response, message?: string): Response;
|
|
42
|
+
/**
|
|
43
|
+
* Send forbidden error (403)
|
|
44
|
+
*/
|
|
45
|
+
export declare function sendForbidden(res: Response, message?: string): Response;
|
|
46
|
+
/**
|
|
47
|
+
* Send paginated response
|
|
48
|
+
*/
|
|
49
|
+
export declare function sendPaginated<T>(res: Response, items: T[], total: number, page?: number, limit?: number): Response;
|
|
50
|
+
declare const _default: {
|
|
51
|
+
sendSuccess: typeof sendSuccess;
|
|
52
|
+
sendCreated: typeof sendCreated;
|
|
53
|
+
sendError: typeof sendError;
|
|
54
|
+
sendValidationError: typeof sendValidationError;
|
|
55
|
+
sendNotFound: typeof sendNotFound;
|
|
56
|
+
sendUnauthorized: typeof sendUnauthorized;
|
|
57
|
+
sendForbidden: typeof sendForbidden;
|
|
58
|
+
sendPaginated: typeof sendPaginated;
|
|
59
|
+
};
|
|
60
|
+
export default _default;
|
|
61
|
+
//# sourceMappingURL=response.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../../src/api/middleware/response.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,GAAG;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE;QACL,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAC3B,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,CAAC,EACP,IAAI,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,EAC1B,UAAU,SAAM,GACf,QAAQ,CAQV;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAC3B,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,CAAC,EACP,OAAO,CAAC,EAAE,MAAM,GACf,QAAQ,CAQV;AAED;;GAEG;AACH,wBAAgB,SAAS,CACvB,GAAG,EAAE,QAAQ,EACb,OAAO,EAAE,MAAM,EACf,UAAU,SAAM,EAChB,OAAO,CAAC,EAAE,GAAG,GACZ,QAAQ,CAUV;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,QAAQ,EACb,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GACd,QAAQ,CAEV;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,QAAQ,EACb,QAAQ,SAAa,GACpB,QAAQ,CAEV;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,QAAQ,EACb,OAAO,SAA4B,GAClC,QAAQ,CAEV;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,QAAQ,EACb,OAAO,SAAkB,GACxB,QAAQ,CAEV;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAC7B,GAAG,EAAE,QAAQ,EACb,KAAK,EAAE,CAAC,EAAE,EACV,KAAK,EAAE,MAAM,EACb,IAAI,SAAI,EACR,KAAK,SAAK,GACT,QAAQ,CAOV;;;;;;;;;;;AAED,wBASE"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Standardized API Response Helpers
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Send success response
|
|
6
|
+
*/
|
|
7
|
+
export function sendSuccess(res, data, meta, statusCode = 200) {
|
|
8
|
+
const response = {
|
|
9
|
+
success: true,
|
|
10
|
+
data,
|
|
11
|
+
meta,
|
|
12
|
+
timestamp: new Date().toISOString(),
|
|
13
|
+
};
|
|
14
|
+
return res.status(statusCode).json(response);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Send created response (201)
|
|
18
|
+
*/
|
|
19
|
+
export function sendCreated(res, data, message) {
|
|
20
|
+
const response = {
|
|
21
|
+
success: true,
|
|
22
|
+
data,
|
|
23
|
+
message: message || 'Resource created successfully',
|
|
24
|
+
timestamp: new Date().toISOString(),
|
|
25
|
+
};
|
|
26
|
+
return res.status(201).json(response);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Send error response
|
|
30
|
+
*/
|
|
31
|
+
export function sendError(res, message, statusCode = 500, details) {
|
|
32
|
+
const isProduction = process.env.NODE_ENV === 'production';
|
|
33
|
+
const response = {
|
|
34
|
+
success: false,
|
|
35
|
+
error: message,
|
|
36
|
+
...(details && !isProduction ? { details } : {}),
|
|
37
|
+
timestamp: new Date().toISOString(),
|
|
38
|
+
};
|
|
39
|
+
return res.status(statusCode).json(response);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Send validation error (400)
|
|
43
|
+
*/
|
|
44
|
+
export function sendValidationError(res, field, message) {
|
|
45
|
+
return sendError(res, `Validation error: ${message}`, 400, { field });
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Send not found error (404)
|
|
49
|
+
*/
|
|
50
|
+
export function sendNotFound(res, resource = 'Resource') {
|
|
51
|
+
return sendError(res, `${resource} not found`, 404);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Send unauthorized error (401)
|
|
55
|
+
*/
|
|
56
|
+
export function sendUnauthorized(res, message = 'Authentication required') {
|
|
57
|
+
return sendError(res, message, 401);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Send forbidden error (403)
|
|
61
|
+
*/
|
|
62
|
+
export function sendForbidden(res, message = 'Access denied') {
|
|
63
|
+
return sendError(res, message, 403);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Send paginated response
|
|
67
|
+
*/
|
|
68
|
+
export function sendPaginated(res, items, total, page = 1, limit = 20) {
|
|
69
|
+
return sendSuccess(res, items, {
|
|
70
|
+
total,
|
|
71
|
+
page,
|
|
72
|
+
limit,
|
|
73
|
+
hasMore: page * limit < total,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
export default {
|
|
77
|
+
sendSuccess,
|
|
78
|
+
sendCreated,
|
|
79
|
+
sendError,
|
|
80
|
+
sendValidationError,
|
|
81
|
+
sendNotFound,
|
|
82
|
+
sendUnauthorized,
|
|
83
|
+
sendForbidden,
|
|
84
|
+
sendPaginated,
|
|
85
|
+
};
|
|
86
|
+
//# sourceMappingURL=response.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response.js","sourceRoot":"","sources":["../../../src/api/middleware/response.ts"],"names":[],"mappings":"AAAA;;GAEG;AAkBH;;GAEG;AACH,MAAM,UAAU,WAAW,CACzB,GAAa,EACb,IAAO,EACP,IAA0B,EAC1B,UAAU,GAAG,GAAG;IAEhB,MAAM,QAAQ,GAAmB;QAC/B,OAAO,EAAE,IAAI;QACb,IAAI;QACJ,IAAI;QACJ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;IACF,OAAO,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CACzB,GAAa,EACb,IAAO,EACP,OAAgB;IAEhB,MAAM,QAAQ,GAAmB;QAC/B,OAAO,EAAE,IAAI;QACb,IAAI;QACJ,OAAO,EAAE,OAAO,IAAI,+BAA+B;QACnD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;IACF,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CACvB,GAAa,EACb,OAAe,EACf,UAAU,GAAG,GAAG,EAChB,OAAa;IAEb,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC;IAE3D,MAAM,QAAQ,GAAgB;QAC5B,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,OAAO;QACd,GAAG,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;IACF,OAAO,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,GAAa,EACb,KAAa,EACb,OAAe;IAEf,OAAO,SAAS,CAAC,GAAG,EAAE,qBAAqB,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AACxE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,GAAa,EACb,QAAQ,GAAG,UAAU;IAErB,OAAO,SAAS,CAAC,GAAG,EAAE,GAAG,QAAQ,YAAY,EAAE,GAAG,CAAC,CAAC;AACtD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,GAAa,EACb,OAAO,GAAG,yBAAyB;IAEnC,OAAO,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,GAAa,EACb,OAAO,GAAG,eAAe;IAEzB,OAAO,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,GAAa,EACb,KAAU,EACV,KAAa,EACb,IAAI,GAAG,CAAC,EACR,KAAK,GAAG,EAAE;IAEV,OAAO,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE;QAC7B,KAAK;QACL,IAAI;QACJ,KAAK;QACL,OAAO,EAAE,IAAI,GAAG,KAAK,GAAG,KAAK;KAC9B,CAAC,CAAC;AACL,CAAC;AAED,eAAe;IACb,WAAW;IACX,WAAW;IACX,SAAS;IACT,mBAAmB;IACnB,YAAY;IACZ,gBAAgB;IAChB,aAAa;IACb,aAAa;CACd,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Input Validation Middleware
|
|
3
|
+
* Prevents XSS, validates input sizes, sanitizes data
|
|
4
|
+
*/
|
|
5
|
+
import { RequestHandler } from 'express';
|
|
6
|
+
export declare function sanitizeString(input: string): string;
|
|
7
|
+
export declare function sanitizeForStorage(input: string): string;
|
|
8
|
+
/**
|
|
9
|
+
* Validate ingestion request body
|
|
10
|
+
*/
|
|
11
|
+
export declare const validateIngestBody: RequestHandler;
|
|
12
|
+
/**
|
|
13
|
+
* Validate search/query request body
|
|
14
|
+
*/
|
|
15
|
+
export declare const validateSearchBody: RequestHandler;
|
|
16
|
+
/**
|
|
17
|
+
* Validate batch ingest request
|
|
18
|
+
*/
|
|
19
|
+
export declare const validateBatchIngestBody: RequestHandler;
|
|
20
|
+
/**
|
|
21
|
+
* Validate UUID parameter
|
|
22
|
+
*/
|
|
23
|
+
export declare function validateUUIDParam(paramName: string): RequestHandler;
|
|
24
|
+
/**
|
|
25
|
+
* Validate synapse creation
|
|
26
|
+
*/
|
|
27
|
+
export declare const validateSynapseBody: RequestHandler;
|
|
28
|
+
/**
|
|
29
|
+
* Validate LLM configuration
|
|
30
|
+
*/
|
|
31
|
+
export declare const validateLLMConfig: RequestHandler;
|
|
32
|
+
declare const _default: {
|
|
33
|
+
validateIngestBody: RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
|
|
34
|
+
validateSearchBody: RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
|
|
35
|
+
validateBatchIngestBody: RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
|
|
36
|
+
validateUUIDParam: typeof validateUUIDParam;
|
|
37
|
+
validateSynapseBody: RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
|
|
38
|
+
validateLLMConfig: RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
|
|
39
|
+
sanitizeString: typeof sanitizeString;
|
|
40
|
+
sanitizeForStorage: typeof sanitizeForStorage;
|
|
41
|
+
};
|
|
42
|
+
export default _default;
|
|
43
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/api/middleware/validation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAmC,cAAc,EAAE,MAAM,SAAS,CAAC;AAsB1E,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAiBpD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAUxD;AAsBD;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,cAuChC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,cA8ChC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,cAmBrC,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,CAcnE;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,cA+BjC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,cAiC/B,CAAC;;;;;;;;;;;AAEF,wBASE"}
|