@juspay/neurolink 9.32.0 → 9.32.1
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/CHANGELOG.md +6 -0
- package/dist/auth/anthropicOAuth.js +1 -1
- package/dist/cli/commands/proxy.js +18 -5
- package/dist/client/aiSdkAdapter.js +1 -1
- package/dist/client/index.js +137 -501
- package/dist/core/factory.js +0 -1
- package/dist/core/redisConversationMemoryManager.js +1 -1
- package/dist/features/ppt/slideGenerator.js +0 -1
- package/dist/features/ppt/utils.js +0 -1
- package/dist/lib/server/routes/claudeProxyRoutes.js +45 -9
- package/dist/mcp/elicitationProtocol.js +1 -1
- package/dist/mcp/servers/agent/directToolsServer.js +0 -1
- package/dist/providers/azureOpenai.js +1 -1
- package/dist/providers/huggingFace.js +0 -1
- package/dist/providers/openaiCompatible.js +0 -1
- package/dist/sdk/toolRegistration.js +0 -1
- package/dist/server/openapi/generator.js +1 -1
- package/dist/server/routes/claudeProxyRoutes.js +45 -9
- package/dist/types/configTypes.js +0 -5
- package/dist/types/modelTypes.js +0 -1
- package/dist/types/tools.js +0 -1
- package/dist/types/typeAliases.js +0 -1
- package/dist/types/utilities.js +1 -1
- package/dist/types/workflowTypes.js +0 -1
- package/dist/utils/providerRetry.js +0 -1
- package/dist/utils/providerUtils.js +0 -1
- package/package.json +2 -2
- package/dist/client/adapters/providerImageAdapter.js +0 -588
- package/dist/client/adapters/tts/googleTTSHandler.js +0 -344
- package/dist/client/adapters/video/directorPipeline.js +0 -516
- package/dist/client/adapters/video/ffmpegAdapter.js +0 -206
- package/dist/client/adapters/video/frameExtractor.js +0 -143
- package/dist/client/adapters/video/vertexVideoHandler.js +0 -763
- package/dist/client/adapters/video/videoAnalyzer.js +0 -238
- package/dist/client/adapters/video/videoMerger.js +0 -171
- package/dist/client/agent/directTools.js +0 -840
- package/dist/client/auth/AuthProviderFactory.js +0 -111
- package/dist/client/auth/AuthProviderRegistry.js +0 -190
- package/dist/client/auth/RequestContext.js +0 -78
- package/dist/client/auth/accountPool.js +0 -178
- package/dist/client/auth/anthropicOAuth.js +0 -974
- package/dist/client/auth/authContext.js +0 -314
- package/dist/client/auth/errors.js +0 -39
- package/dist/client/auth/index.js +0 -61
- package/dist/client/auth/middleware/AuthMiddleware.js +0 -519
- package/dist/client/auth/middleware/rateLimitByUser.js +0 -554
- package/dist/client/auth/providers/BaseAuthProvider.js +0 -723
- package/dist/client/auth/providers/CognitoProvider.js +0 -304
- package/dist/client/auth/providers/KeycloakProvider.js +0 -393
- package/dist/client/auth/providers/auth0.js +0 -274
- package/dist/client/auth/providers/betterAuth.js +0 -182
- package/dist/client/auth/providers/clerk.js +0 -317
- package/dist/client/auth/providers/custom.js +0 -112
- package/dist/client/auth/providers/firebase.js +0 -226
- package/dist/client/auth/providers/jwt.js +0 -212
- package/dist/client/auth/providers/oauth2.js +0 -303
- package/dist/client/auth/providers/supabase.js +0 -259
- package/dist/client/auth/providers/workos.js +0 -284
- package/dist/client/auth/serverBridge.js +0 -25
- package/dist/client/auth/sessionManager.js +0 -437
- package/dist/client/auth/tokenStore.js +0 -799
- package/dist/client/client/aiSdkAdapter.js +0 -487
- package/dist/client/client/auth.js +0 -473
- package/dist/client/client/errors.js +0 -552
- package/dist/client/client/httpClient.js +0 -837
- package/dist/client/client/index.js +0 -172
- package/dist/client/client/interceptors.js +0 -601
- package/dist/client/client/sseClient.js +0 -545
- package/dist/client/client/streamingClient.js +0 -917
- package/dist/client/client/wsClient.js +0 -369
- package/dist/client/config/configManager.js +0 -303
- package/dist/client/config/conversationMemory.js +0 -86
- package/dist/client/config/taskClassificationConfig.js +0 -148
- package/dist/client/constants/contextWindows.js +0 -295
- package/dist/client/constants/enums.js +0 -853
- package/dist/client/constants/index.js +0 -207
- package/dist/client/constants/performance.js +0 -389
- package/dist/client/constants/retry.js +0 -266
- package/dist/client/constants/timeouts.js +0 -182
- package/dist/client/constants/tokens.js +0 -380
- package/dist/client/constants/videoErrors.js +0 -46
- package/dist/client/context/budgetChecker.js +0 -98
- package/dist/client/context/contextCompactor.js +0 -205
- package/dist/client/context/emergencyTruncation.js +0 -88
- package/dist/client/context/errorDetection.js +0 -171
- package/dist/client/context/errors.js +0 -21
- package/dist/client/context/fileTokenBudget.js +0 -127
- package/dist/client/context/prompts/summarizationPrompt.js +0 -117
- package/dist/client/context/stages/fileReadDeduplicator.js +0 -66
- package/dist/client/context/stages/slidingWindowTruncator.js +0 -190
- package/dist/client/context/stages/structuredSummarizer.js +0 -99
- package/dist/client/context/stages/toolOutputPruner.js +0 -52
- package/dist/client/context/summarizationEngine.js +0 -136
- package/dist/client/context/toolOutputLimits.js +0 -78
- package/dist/client/context/toolPairRepair.js +0 -66
- package/dist/client/core/analytics.js +0 -88
- package/dist/client/core/baseProvider.js +0 -1385
- package/dist/client/core/constants.js +0 -140
- package/dist/client/core/conversationMemoryFactory.js +0 -141
- package/dist/client/core/conversationMemoryInitializer.js +0 -128
- package/dist/client/core/conversationMemoryManager.js +0 -344
- package/dist/client/core/dynamicModels.js +0 -358
- package/dist/client/core/evaluation.js +0 -309
- package/dist/client/core/evaluationProviders.js +0 -248
- package/dist/client/core/factory.js +0 -412
- package/dist/client/core/infrastructure/baseError.js +0 -22
- package/dist/client/core/infrastructure/baseFactory.js +0 -54
- package/dist/client/core/infrastructure/baseRegistry.js +0 -53
- package/dist/client/core/infrastructure/index.js +0 -5
- package/dist/client/core/infrastructure/retry.js +0 -20
- package/dist/client/core/infrastructure/typedEventEmitter.js +0 -23
- package/dist/client/core/modelConfiguration.js +0 -851
- package/dist/client/core/modules/GenerationHandler.js +0 -588
- package/dist/client/core/modules/MessageBuilder.js +0 -273
- package/dist/client/core/modules/StreamHandler.js +0 -185
- package/dist/client/core/modules/TelemetryHandler.js +0 -203
- package/dist/client/core/modules/ToolsManager.js +0 -499
- package/dist/client/core/modules/Utilities.js +0 -331
- package/dist/client/core/redisConversationMemoryManager.js +0 -1435
- package/dist/client/core/streamAnalytics.js +0 -131
- package/dist/client/evaluation/contextBuilder.js +0 -134
- package/dist/client/evaluation/index.js +0 -61
- package/dist/client/evaluation/prompts.js +0 -73
- package/dist/client/evaluation/ragasEvaluator.js +0 -110
- package/dist/client/evaluation/retryManager.js +0 -78
- package/dist/client/evaluation/scoring.js +0 -61
- package/dist/client/factories/providerFactory.js +0 -166
- package/dist/client/factories/providerRegistry.js +0 -166
- package/dist/client/features/ppt/constants.js +0 -896
- package/dist/client/features/ppt/contentPlanner.js +0 -529
- package/dist/client/features/ppt/presentationOrchestrator.js +0 -236
- package/dist/client/features/ppt/slideGenerator.js +0 -532
- package/dist/client/features/ppt/slideRenderers.js +0 -2383
- package/dist/client/features/ppt/slideTypeInference.js +0 -405
- package/dist/client/features/ppt/types.js +0 -13
- package/dist/client/features/ppt/utils.js +0 -443
- package/dist/client/files/fileReferenceRegistry.js +0 -1543
- package/dist/client/files/fileTools.js +0 -450
- package/dist/client/files/streamingReader.js +0 -321
- package/dist/client/files/types.js +0 -23
- package/dist/client/hitl/hitlErrors.js +0 -54
- package/dist/client/hitl/hitlManager.js +0 -460
- package/dist/client/mcp/agentExposure.js +0 -356
- package/dist/client/mcp/auth/index.js +0 -11
- package/dist/client/mcp/auth/oauthClientProvider.js +0 -325
- package/dist/client/mcp/auth/tokenStorage.js +0 -134
- package/dist/client/mcp/batching/index.js +0 -10
- package/dist/client/mcp/batching/requestBatcher.js +0 -441
- package/dist/client/mcp/caching/index.js +0 -10
- package/dist/client/mcp/caching/toolCache.js +0 -433
- package/dist/client/mcp/elicitation/elicitationManager.js +0 -376
- package/dist/client/mcp/elicitation/index.js +0 -11
- package/dist/client/mcp/elicitation/types.js +0 -10
- package/dist/client/mcp/elicitationProtocol.js +0 -375
- package/dist/client/mcp/enhancedToolDiscovery.js +0 -481
- package/dist/client/mcp/externalServerManager.js +0 -1478
- package/dist/client/mcp/factory.js +0 -161
- package/dist/client/mcp/flexibleToolValidator.js +0 -161
- package/dist/client/mcp/httpRateLimiter.js +0 -391
- package/dist/client/mcp/httpRetryHandler.js +0 -178
- package/dist/client/mcp/index.js +0 -74
- package/dist/client/mcp/mcpCircuitBreaker.js +0 -427
- package/dist/client/mcp/mcpClientFactory.js +0 -708
- package/dist/client/mcp/mcpRegistryClient.js +0 -488
- package/dist/client/mcp/mcpServerBase.js +0 -373
- package/dist/client/mcp/multiServerManager.js +0 -579
- package/dist/client/mcp/registry.js +0 -158
- package/dist/client/mcp/routing/index.js +0 -10
- package/dist/client/mcp/routing/toolRouter.js +0 -416
- package/dist/client/mcp/serverCapabilities.js +0 -502
- package/dist/client/mcp/servers/agent/directToolsServer.js +0 -150
- package/dist/client/mcp/toolAnnotations.js +0 -239
- package/dist/client/mcp/toolConverter.js +0 -258
- package/dist/client/mcp/toolDiscoveryService.js +0 -798
- package/dist/client/mcp/toolIntegration.js +0 -334
- package/dist/client/mcp/toolRegistry.js +0 -729
- package/dist/client/memory/hippocampusInitializer.js +0 -19
- package/dist/client/memory/memoryRetrievalTools.js +0 -166
- package/dist/client/middleware/builtin/analytics.js +0 -132
- package/dist/client/middleware/builtin/autoEvaluation.js +0 -203
- package/dist/client/middleware/builtin/guardrails.js +0 -109
- package/dist/client/middleware/builtin/lifecycle.js +0 -168
- package/dist/client/middleware/factory.js +0 -327
- package/dist/client/middleware/registry.js +0 -295
- package/dist/client/middleware/utils/guardrailsUtils.js +0 -396
- package/dist/client/models/anthropicModels.js +0 -527
- package/dist/client/neurolink.js +0 -8233
- package/dist/client/observability/exporterRegistry.js +0 -413
- package/dist/client/observability/exporters/arizeExporter.js +0 -138
- package/dist/client/observability/exporters/baseExporter.js +0 -190
- package/dist/client/observability/exporters/braintrustExporter.js +0 -154
- package/dist/client/observability/exporters/datadogExporter.js +0 -196
- package/dist/client/observability/exporters/laminarExporter.js +0 -302
- package/dist/client/observability/exporters/langfuseExporter.js +0 -209
- package/dist/client/observability/exporters/langsmithExporter.js +0 -143
- package/dist/client/observability/exporters/otelExporter.js +0 -164
- package/dist/client/observability/exporters/posthogExporter.js +0 -287
- package/dist/client/observability/exporters/sentryExporter.js +0 -165
- package/dist/client/observability/index.js +0 -31
- package/dist/client/observability/metricsAggregator.js +0 -556
- package/dist/client/observability/otelBridge.js +0 -131
- package/dist/client/observability/retryPolicy.js +0 -383
- package/dist/client/observability/sampling/samplers.js +0 -216
- package/dist/client/observability/spanProcessor.js +0 -303
- package/dist/client/observability/tokenTracker.js +0 -413
- package/dist/client/observability/types/exporterTypes.js +0 -5
- package/dist/client/observability/types/index.js +0 -4
- package/dist/client/observability/types/spanTypes.js +0 -92
- package/dist/client/observability/utils/safeMetadata.js +0 -25
- package/dist/client/observability/utils/spanSerializer.js +0 -292
- package/dist/client/processors/archive/ArchiveProcessor.js +0 -1308
- package/dist/client/processors/base/BaseFileProcessor.js +0 -614
- package/dist/client/processors/base/types.js +0 -82
- package/dist/client/processors/config/fileTypes.js +0 -520
- package/dist/client/processors/config/index.js +0 -92
- package/dist/client/processors/config/languageMap.js +0 -410
- package/dist/client/processors/config/mimeTypes.js +0 -363
- package/dist/client/processors/config/sizeLimits.js +0 -258
- package/dist/client/processors/document/ExcelProcessor.js +0 -590
- package/dist/client/processors/document/OpenDocumentProcessor.js +0 -212
- package/dist/client/processors/document/PptxProcessor.js +0 -157
- package/dist/client/processors/document/RtfProcessor.js +0 -361
- package/dist/client/processors/document/WordProcessor.js +0 -353
- package/dist/client/processors/errors/FileErrorCode.js +0 -255
- package/dist/client/processors/errors/errorHelpers.js +0 -386
- package/dist/client/processors/errors/errorSerializer.js +0 -507
- package/dist/client/processors/errors/index.js +0 -49
- package/dist/client/processors/markup/SvgProcessor.js +0 -240
- package/dist/client/processors/media/AudioProcessor.js +0 -707
- package/dist/client/processors/media/VideoProcessor.js +0 -1045
- package/dist/client/providers/amazonBedrock.js +0 -1512
- package/dist/client/providers/amazonSagemaker.js +0 -162
- package/dist/client/providers/anthropic.js +0 -831
- package/dist/client/providers/azureOpenai.js +0 -143
- package/dist/client/providers/googleAiStudio.js +0 -1200
- package/dist/client/providers/googleNativeGemini3.js +0 -543
- package/dist/client/providers/googleVertex.js +0 -2936
- package/dist/client/providers/huggingFace.js +0 -315
- package/dist/client/providers/litellm.js +0 -488
- package/dist/client/providers/mistral.js +0 -157
- package/dist/client/providers/ollama.js +0 -1579
- package/dist/client/providers/openAI.js +0 -627
- package/dist/client/providers/openRouter.js +0 -543
- package/dist/client/providers/openaiCompatible.js +0 -290
- package/dist/client/providers/providerTypeUtils.js +0 -46
- package/dist/client/providers/sagemaker/adaptive-semaphore.js +0 -215
- package/dist/client/providers/sagemaker/client.js +0 -472
- package/dist/client/providers/sagemaker/config.js +0 -317
- package/dist/client/providers/sagemaker/detection.js +0 -606
- package/dist/client/providers/sagemaker/error-constants.js +0 -227
- package/dist/client/providers/sagemaker/errors.js +0 -299
- package/dist/client/providers/sagemaker/language-model.js +0 -775
- package/dist/client/providers/sagemaker/parsers.js +0 -634
- package/dist/client/providers/sagemaker/streaming.js +0 -331
- package/dist/client/providers/sagemaker/structured-parser.js +0 -625
- package/dist/client/proxy/accountQuota.js +0 -162
- package/dist/client/proxy/claudeFormat.js +0 -595
- package/dist/client/proxy/modelRouter.js +0 -29
- package/dist/client/proxy/oauthFetch.js +0 -367
- package/dist/client/proxy/proxyFetch.js +0 -586
- package/dist/client/proxy/requestLogger.js +0 -207
- package/dist/client/proxy/tokenRefresh.js +0 -124
- package/dist/client/proxy/usageStats.js +0 -74
- package/dist/client/proxy/utils/noProxyUtils.js +0 -149
- package/dist/client/rag/ChunkerFactory.js +0 -320
- package/dist/client/rag/ChunkerRegistry.js +0 -421
- package/dist/client/rag/chunkers/BaseChunker.js +0 -143
- package/dist/client/rag/chunkers/CharacterChunker.js +0 -28
- package/dist/client/rag/chunkers/HTMLChunker.js +0 -38
- package/dist/client/rag/chunkers/JSONChunker.js +0 -68
- package/dist/client/rag/chunkers/LaTeXChunker.js +0 -63
- package/dist/client/rag/chunkers/MarkdownChunker.js +0 -306
- package/dist/client/rag/chunkers/RecursiveChunker.js +0 -139
- package/dist/client/rag/chunkers/SemanticMarkdownChunker.js +0 -138
- package/dist/client/rag/chunkers/SentenceChunker.js +0 -66
- package/dist/client/rag/chunkers/TokenChunker.js +0 -61
- package/dist/client/rag/chunkers/index.js +0 -15
- package/dist/client/rag/chunking/characterChunker.js +0 -142
- package/dist/client/rag/chunking/chunkerRegistry.js +0 -194
- package/dist/client/rag/chunking/htmlChunker.js +0 -247
- package/dist/client/rag/chunking/index.js +0 -17
- package/dist/client/rag/chunking/jsonChunker.js +0 -281
- package/dist/client/rag/chunking/latexChunker.js +0 -251
- package/dist/client/rag/chunking/markdownChunker.js +0 -373
- package/dist/client/rag/chunking/recursiveChunker.js +0 -148
- package/dist/client/rag/chunking/semanticChunker.js +0 -306
- package/dist/client/rag/chunking/sentenceChunker.js +0 -230
- package/dist/client/rag/chunking/tokenChunker.js +0 -183
- package/dist/client/rag/document/MDocument.js +0 -392
- package/dist/client/rag/document/index.js +0 -5
- package/dist/client/rag/document/loaders.js +0 -500
- package/dist/client/rag/errors/RAGError.js +0 -274
- package/dist/client/rag/errors/index.js +0 -6
- package/dist/client/rag/graphRag/graphRAG.js +0 -401
- package/dist/client/rag/graphRag/index.js +0 -4
- package/dist/client/rag/index.js +0 -141
- package/dist/client/rag/metadata/MetadataExtractorFactory.js +0 -418
- package/dist/client/rag/metadata/MetadataExtractorRegistry.js +0 -362
- package/dist/client/rag/metadata/index.js +0 -9
- package/dist/client/rag/metadata/metadataExtractor.js +0 -280
- package/dist/client/rag/pipeline/RAGPipeline.js +0 -436
- package/dist/client/rag/pipeline/contextAssembly.js +0 -341
- package/dist/client/rag/pipeline/index.js +0 -5
- package/dist/client/rag/ragIntegration.js +0 -321
- package/dist/client/rag/reranker/RerankerFactory.js +0 -430
- package/dist/client/rag/reranker/RerankerRegistry.js +0 -402
- package/dist/client/rag/reranker/index.js +0 -9
- package/dist/client/rag/reranker/reranker.js +0 -277
- package/dist/client/rag/resilience/CircuitBreaker.js +0 -431
- package/dist/client/rag/resilience/RetryHandler.js +0 -304
- package/dist/client/rag/resilience/index.js +0 -7
- package/dist/client/rag/retrieval/hybridSearch.js +0 -335
- package/dist/client/rag/retrieval/index.js +0 -5
- package/dist/client/rag/retrieval/vectorQueryTool.js +0 -307
- package/dist/client/rag/types.js +0 -8
- package/dist/client/sdk/toolRegistration.js +0 -377
- package/dist/client/server/abstract/baseServerAdapter.js +0 -575
- package/dist/client/server/adapters/expressAdapter.js +0 -486
- package/dist/client/server/adapters/fastifyAdapter.js +0 -472
- package/dist/client/server/adapters/honoAdapter.js +0 -632
- package/dist/client/server/adapters/koaAdapter.js +0 -510
- package/dist/client/server/errors.js +0 -486
- package/dist/client/server/factory/serverAdapterFactory.js +0 -160
- package/dist/client/server/index.js +0 -108
- package/dist/client/server/middleware/abortSignal.js +0 -111
- package/dist/client/server/middleware/auth.js +0 -388
- package/dist/client/server/middleware/cache.js +0 -359
- package/dist/client/server/middleware/common.js +0 -281
- package/dist/client/server/middleware/deprecation.js +0 -190
- package/dist/client/server/middleware/mcpBodyAttachment.js +0 -63
- package/dist/client/server/middleware/rateLimit.js +0 -227
- package/dist/client/server/middleware/validation.js +0 -388
- package/dist/client/server/openapi/generator.js +0 -398
- package/dist/client/server/openapi/index.js +0 -36
- package/dist/client/server/openapi/schemas.js +0 -695
- package/dist/client/server/openapi/templates.js +0 -374
- package/dist/client/server/routes/agentRoutes.js +0 -189
- package/dist/client/server/routes/claudeProxyRoutes.js +0 -1600
- package/dist/client/server/routes/healthRoutes.js +0 -187
- package/dist/client/server/routes/index.js +0 -57
- package/dist/client/server/routes/mcpRoutes.js +0 -342
- package/dist/client/server/routes/memoryRoutes.js +0 -350
- package/dist/client/server/routes/openApiRoutes.js +0 -126
- package/dist/client/server/routes/toolRoutes.js +0 -199
- package/dist/client/server/streaming/dataStream.js +0 -486
- package/dist/client/server/streaming/index.js +0 -11
- package/dist/client/server/types.js +0 -67
- package/dist/client/server/utils/redaction.js +0 -334
- package/dist/client/server/utils/validation.js +0 -243
- package/dist/client/server/websocket/WebSocketHandler.js +0 -383
- package/dist/client/server/websocket/index.js +0 -4
- package/dist/client/services/server/ai/observability/instrumentation.js +0 -808
- package/dist/client/telemetry/attributes.js +0 -100
- package/dist/client/telemetry/index.js +0 -26
- package/dist/client/telemetry/telemetryService.js +0 -308
- package/dist/client/telemetry/tracers.js +0 -17
- package/dist/client/telemetry/withSpan.js +0 -34
- package/dist/client/types/actionTypes.js +0 -6
- package/dist/client/types/analytics.js +0 -5
- package/dist/client/types/authTypes.js +0 -9
- package/dist/client/types/circuitBreakerErrors.js +0 -34
- package/dist/client/types/cli.js +0 -21
- package/dist/client/types/clientTypes.js +0 -10
- package/dist/client/types/common.js +0 -51
- package/dist/client/types/configTypes.js +0 -49
- package/dist/client/types/content.js +0 -19
- package/dist/client/types/contextTypes.js +0 -400
- package/dist/client/types/conversation.js +0 -47
- package/dist/client/types/conversationMemoryInterface.js +0 -6
- package/dist/client/types/domainTypes.js +0 -5
- package/dist/client/types/errors.js +0 -167
- package/dist/client/types/evaluation.js +0 -5
- package/dist/client/types/evaluationProviders.js +0 -5
- package/dist/client/types/evaluationTypes.js +0 -1
- package/dist/client/types/externalMcp.js +0 -6
- package/dist/client/types/fileReferenceTypes.js +0 -8
- package/dist/client/types/fileTypes.js +0 -4
- package/dist/client/types/generateTypes.js +0 -1
- package/dist/client/types/guardrails.js +0 -1
- package/dist/client/types/hitlTypes.js +0 -8
- package/dist/client/types/index.js +0 -57
- package/dist/client/types/mcpTypes.js +0 -5
- package/dist/client/types/middlewareTypes.js +0 -1
- package/dist/client/types/modelTypes.js +0 -30
- package/dist/client/types/multimodal.js +0 -135
- package/dist/client/types/observability.js +0 -6
- package/dist/client/types/pptTypes.js +0 -82
- package/dist/client/types/providers.js +0 -111
- package/dist/client/types/proxyTypes.js +0 -16
- package/dist/client/types/ragTypes.js +0 -7
- package/dist/client/types/sdkTypes.js +0 -8
- package/dist/client/types/serviceTypes.js +0 -5
- package/dist/client/types/streamTypes.js +0 -1
- package/dist/client/types/subscriptionTypes.js +0 -9
- package/dist/client/types/taskClassificationTypes.js +0 -5
- package/dist/client/types/tools.js +0 -24
- package/dist/client/types/ttsTypes.js +0 -57
- package/dist/client/types/typeAliases.js +0 -48
- package/dist/client/types/utilities.js +0 -4
- package/dist/client/types/workflowTypes.js +0 -30
- package/dist/client/utils/async/withTimeout.js +0 -98
- package/dist/client/utils/asyncMutex.js +0 -60
- package/dist/client/utils/conversationMemory.js +0 -431
- package/dist/client/utils/csvProcessor.js +0 -846
- package/dist/client/utils/errorHandling.js +0 -936
- package/dist/client/utils/evaluationUtils.js +0 -131
- package/dist/client/utils/factoryProcessing.js +0 -589
- package/dist/client/utils/fileDetector.js +0 -2161
- package/dist/client/utils/imageCache.js +0 -376
- package/dist/client/utils/imageProcessor.js +0 -704
- package/dist/client/utils/logger.js +0 -491
- package/dist/client/utils/mcpDefaults.js +0 -134
- package/dist/client/utils/messageBuilder.js +0 -1653
- package/dist/client/utils/modelAliasResolver.js +0 -54
- package/dist/client/utils/modelDetection.js +0 -80
- package/dist/client/utils/modelRouter.js +0 -292
- package/dist/client/utils/multimodalOptionsBuilder.js +0 -65
- package/dist/client/utils/observabilityHelpers.js +0 -47
- package/dist/client/utils/parameterValidation.js +0 -966
- package/dist/client/utils/pdfProcessor.js +0 -410
- package/dist/client/utils/performance.js +0 -222
- package/dist/client/utils/pricing.js +0 -340
- package/dist/client/utils/promptRedaction.js +0 -62
- package/dist/client/utils/providerConfig.js +0 -1009
- package/dist/client/utils/providerHealth.js +0 -1237
- package/dist/client/utils/providerRetry.js +0 -112
- package/dist/client/utils/providerUtils.js +0 -434
- package/dist/client/utils/rateLimiter.js +0 -200
- package/dist/client/utils/redis.js +0 -368
- package/dist/client/utils/retryHandler.js +0 -269
- package/dist/client/utils/retryability.js +0 -22
- package/dist/client/utils/sanitizers/svg.js +0 -481
- package/dist/client/utils/schemaConversion.js +0 -255
- package/dist/client/utils/taskClassificationUtils.js +0 -149
- package/dist/client/utils/taskClassifier.js +0 -94
- package/dist/client/utils/thinkingConfig.js +0 -104
- package/dist/client/utils/timeout.js +0 -359
- package/dist/client/utils/tokenEstimation.js +0 -142
- package/dist/client/utils/tokenLimits.js +0 -125
- package/dist/client/utils/tokenUtils.js +0 -239
- package/dist/client/utils/toolUtils.js +0 -75
- package/dist/client/utils/transformationUtils.js +0 -554
- package/dist/client/utils/ttsProcessor.js +0 -286
- package/dist/client/utils/typeUtils.js +0 -97
- package/dist/client/utils/videoAnalysisProcessor.js +0 -67
- package/dist/client/workflow/config.js +0 -398
- package/dist/client/workflow/core/ensembleExecutor.js +0 -407
- package/dist/client/workflow/core/judgeScorer.js +0 -544
- package/dist/client/workflow/core/responseConditioner.js +0 -225
- package/dist/client/workflow/core/types/conditionerTypes.js +0 -7
- package/dist/client/workflow/core/types/ensembleTypes.js +0 -7
- package/dist/client/workflow/core/types/index.js +0 -7
- package/dist/client/workflow/core/types/judgeTypes.js +0 -7
- package/dist/client/workflow/core/types/layerTypes.js +0 -7
- package/dist/client/workflow/core/types/registryTypes.js +0 -7
- package/dist/client/workflow/core/workflowRegistry.js +0 -304
- package/dist/client/workflow/core/workflowRunner.js +0 -586
- package/dist/client/workflow/index.js +0 -50
- package/dist/client/workflow/types.js +0 -9
- package/dist/client/workflow/utils/types/index.js +0 -7
- package/dist/client/workflow/utils/workflowMetrics.js +0 -311
- package/dist/client/workflow/utils/workflowValidation.js +0 -420
- package/dist/client/workflow/workflows/adaptiveWorkflow.js +0 -366
- package/dist/client/workflow/workflows/consensusWorkflow.js +0 -192
- package/dist/client/workflow/workflows/fallbackWorkflow.js +0 -225
- package/dist/client/workflow/workflows/multiJudgeWorkflow.js +0 -351
- /package/dist/client/{client/reactHooks.js → reactHooks.js} +0 -0
|
@@ -1,437 +0,0 @@
|
|
|
1
|
-
// src/lib/auth/sessionManager.ts
|
|
2
|
-
import { logger } from "../utils/logger.js";
|
|
3
|
-
/** Mask an identifier for safe logging: show first 4 chars + "***" */
|
|
4
|
-
function maskId(id) {
|
|
5
|
-
if (id.length <= 4) {
|
|
6
|
-
return "***";
|
|
7
|
-
}
|
|
8
|
-
return `${id.slice(0, 4)}***`;
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* In-memory session storage
|
|
12
|
-
*
|
|
13
|
-
* Simple session storage using Map. Suitable for single-instance deployments
|
|
14
|
-
* or development. Sessions are lost on restart.
|
|
15
|
-
*/
|
|
16
|
-
export class MemorySessionStorage {
|
|
17
|
-
sessions = new Map();
|
|
18
|
-
userSessions = new Map();
|
|
19
|
-
async get(sessionId) {
|
|
20
|
-
const session = this.sessions.get(sessionId);
|
|
21
|
-
if (!session) {
|
|
22
|
-
return null;
|
|
23
|
-
}
|
|
24
|
-
// Check expiration
|
|
25
|
-
if (session.expiresAt && new Date() > session.expiresAt) {
|
|
26
|
-
await this.delete(sessionId);
|
|
27
|
-
return null;
|
|
28
|
-
}
|
|
29
|
-
return session;
|
|
30
|
-
}
|
|
31
|
-
async set(session) {
|
|
32
|
-
this.sessions.set(session.id, session);
|
|
33
|
-
// Track user's sessions
|
|
34
|
-
if (!this.userSessions.has(session.user.id)) {
|
|
35
|
-
this.userSessions.set(session.user.id, new Set());
|
|
36
|
-
}
|
|
37
|
-
this.userSessions.get(session.user.id).add(session.id);
|
|
38
|
-
}
|
|
39
|
-
async delete(sessionId) {
|
|
40
|
-
const session = this.sessions.get(sessionId);
|
|
41
|
-
if (session) {
|
|
42
|
-
const userSessionSet = this.userSessions.get(session.user.id);
|
|
43
|
-
if (userSessionSet) {
|
|
44
|
-
userSessionSet.delete(sessionId);
|
|
45
|
-
if (userSessionSet.size === 0) {
|
|
46
|
-
this.userSessions.delete(session.user.id);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
this.sessions.delete(sessionId);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
async getUserSessions(userId) {
|
|
53
|
-
const sessionIds = this.userSessions.get(userId);
|
|
54
|
-
if (!sessionIds) {
|
|
55
|
-
return [];
|
|
56
|
-
}
|
|
57
|
-
const sessions = [];
|
|
58
|
-
for (const sessionId of sessionIds) {
|
|
59
|
-
const session = await this.get(sessionId);
|
|
60
|
-
if (session) {
|
|
61
|
-
sessions.push(session);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
return sessions;
|
|
65
|
-
}
|
|
66
|
-
async deleteUserSessions(userId) {
|
|
67
|
-
const sessionIds = this.userSessions.get(userId);
|
|
68
|
-
if (sessionIds) {
|
|
69
|
-
for (const sessionId of sessionIds) {
|
|
70
|
-
this.sessions.delete(sessionId);
|
|
71
|
-
}
|
|
72
|
-
this.userSessions.delete(userId);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
async clear() {
|
|
76
|
-
this.sessions.clear();
|
|
77
|
-
this.userSessions.clear();
|
|
78
|
-
}
|
|
79
|
-
async isHealthy() {
|
|
80
|
-
return true;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Redis session storage
|
|
85
|
-
*
|
|
86
|
-
* Distributed session storage using Redis. Suitable for multi-instance
|
|
87
|
-
* deployments. Requires ioredis or similar Redis client.
|
|
88
|
-
*
|
|
89
|
-
* Note: Redis client must be provided or configured via environment.
|
|
90
|
-
*/
|
|
91
|
-
export class RedisSessionStorage {
|
|
92
|
-
prefix;
|
|
93
|
-
ttl;
|
|
94
|
-
redisUrl;
|
|
95
|
-
client = null;
|
|
96
|
-
initPromise = null;
|
|
97
|
-
constructor(config) {
|
|
98
|
-
this.redisUrl = config.url;
|
|
99
|
-
this.prefix = config.prefix || "neurolink:sessions:";
|
|
100
|
-
this.ttl = config.ttl || 3600;
|
|
101
|
-
}
|
|
102
|
-
async getClient() {
|
|
103
|
-
if (this.client) {
|
|
104
|
-
return this.client;
|
|
105
|
-
}
|
|
106
|
-
if (!this.initPromise) {
|
|
107
|
-
this.initPromise = this.createClient();
|
|
108
|
-
}
|
|
109
|
-
return this.initPromise;
|
|
110
|
-
}
|
|
111
|
-
async createClient() {
|
|
112
|
-
try {
|
|
113
|
-
// Use variable indirection to prevent TypeScript from resolving the module at compile time
|
|
114
|
-
const moduleName = "ioredis";
|
|
115
|
-
const ioredis = await import(/* @vite-ignore */ moduleName);
|
|
116
|
-
const Redis = ioredis.default || ioredis.Redis;
|
|
117
|
-
this.client = new Redis(this.redisUrl);
|
|
118
|
-
return this.client;
|
|
119
|
-
}
|
|
120
|
-
catch {
|
|
121
|
-
this.initPromise = null;
|
|
122
|
-
logger.error('Redis client (ioredis) not available. Install ioredis package and ensure Redis is reachable when using storage: "redis".');
|
|
123
|
-
throw new Error("Redis client not available");
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
sessionKey(sessionId) {
|
|
127
|
-
return `${this.prefix}${sessionId}`;
|
|
128
|
-
}
|
|
129
|
-
userSessionsKey(userId) {
|
|
130
|
-
return `${this.prefix}user:${userId}`;
|
|
131
|
-
}
|
|
132
|
-
async get(sessionId) {
|
|
133
|
-
try {
|
|
134
|
-
const client = await this.getClient();
|
|
135
|
-
const data = await client.get(this.sessionKey(sessionId));
|
|
136
|
-
if (!data) {
|
|
137
|
-
return null;
|
|
138
|
-
}
|
|
139
|
-
const session = JSON.parse(data);
|
|
140
|
-
// Parse dates
|
|
141
|
-
session.createdAt = new Date(session.createdAt);
|
|
142
|
-
if (session.expiresAt !== null && session.expiresAt !== undefined) {
|
|
143
|
-
session.expiresAt = new Date(session.expiresAt);
|
|
144
|
-
}
|
|
145
|
-
// Check expiration
|
|
146
|
-
if (new Date() > session.expiresAt) {
|
|
147
|
-
await this.delete(sessionId);
|
|
148
|
-
return null;
|
|
149
|
-
}
|
|
150
|
-
return session;
|
|
151
|
-
}
|
|
152
|
-
catch (error) {
|
|
153
|
-
logger.error("Redis session get error:", error);
|
|
154
|
-
return null;
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
async set(session) {
|
|
158
|
-
try {
|
|
159
|
-
const client = await this.getClient();
|
|
160
|
-
// Calculate TTL from session expiration
|
|
161
|
-
const ttlSeconds = session.expiresAt
|
|
162
|
-
? Math.max(1, Math.floor((session.expiresAt.getTime() - Date.now()) / 1000))
|
|
163
|
-
: this.ttl;
|
|
164
|
-
// Store session
|
|
165
|
-
await client.setex(this.sessionKey(session.id), ttlSeconds, JSON.stringify(session));
|
|
166
|
-
// Track user's sessions
|
|
167
|
-
await client.sadd(this.userSessionsKey(session.user.id), session.id);
|
|
168
|
-
await client.expire(this.userSessionsKey(session.user.id), this.ttl);
|
|
169
|
-
}
|
|
170
|
-
catch (error) {
|
|
171
|
-
logger.error("Redis session set error:", error);
|
|
172
|
-
throw error;
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
async delete(sessionId) {
|
|
176
|
-
try {
|
|
177
|
-
const client = await this.getClient();
|
|
178
|
-
// Read the raw session data directly instead of calling this.get(),
|
|
179
|
-
// which checks expiration and calls this.delete() — causing infinite
|
|
180
|
-
// recursion for expired sessions.
|
|
181
|
-
const data = await client.get(this.sessionKey(sessionId));
|
|
182
|
-
if (data) {
|
|
183
|
-
try {
|
|
184
|
-
const session = JSON.parse(data);
|
|
185
|
-
await client.srem(this.userSessionsKey(session.user.id), sessionId);
|
|
186
|
-
}
|
|
187
|
-
catch {
|
|
188
|
-
// If parsing fails, we still delete the key below
|
|
189
|
-
logger.warn(`Failed to parse session data for cleanup: ${maskId(sessionId)}`);
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
await client.del(this.sessionKey(sessionId));
|
|
193
|
-
}
|
|
194
|
-
catch (error) {
|
|
195
|
-
logger.error("Redis session delete error:", error);
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
async getUserSessions(userId) {
|
|
199
|
-
try {
|
|
200
|
-
const client = await this.getClient();
|
|
201
|
-
const sessionIds = await client.smembers(this.userSessionsKey(userId));
|
|
202
|
-
const sessions = [];
|
|
203
|
-
for (const sessionId of sessionIds) {
|
|
204
|
-
const session = await this.get(sessionId);
|
|
205
|
-
if (session) {
|
|
206
|
-
sessions.push(session);
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
return sessions;
|
|
210
|
-
}
|
|
211
|
-
catch (error) {
|
|
212
|
-
logger.error("Redis getUserSessions error:", error);
|
|
213
|
-
return [];
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
async deleteUserSessions(userId) {
|
|
217
|
-
try {
|
|
218
|
-
const client = await this.getClient();
|
|
219
|
-
const sessionIds = await client.smembers(this.userSessionsKey(userId));
|
|
220
|
-
for (const sessionId of sessionIds) {
|
|
221
|
-
await client.del(this.sessionKey(sessionId));
|
|
222
|
-
}
|
|
223
|
-
await client.del(this.userSessionsKey(userId));
|
|
224
|
-
}
|
|
225
|
-
catch (error) {
|
|
226
|
-
logger.error("Redis deleteUserSessions error:", error);
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
async clear() {
|
|
230
|
-
try {
|
|
231
|
-
const client = await this.getClient();
|
|
232
|
-
// Use SCAN instead of KEYS to avoid blocking Redis in production
|
|
233
|
-
let cursor = "0";
|
|
234
|
-
do {
|
|
235
|
-
const [nextCursor, keys] = await client.scan(cursor, "MATCH", `${this.prefix}*`, "COUNT", "100");
|
|
236
|
-
cursor = nextCursor;
|
|
237
|
-
if (keys.length > 0) {
|
|
238
|
-
await client.del(...keys);
|
|
239
|
-
}
|
|
240
|
-
} while (cursor !== "0");
|
|
241
|
-
}
|
|
242
|
-
catch (error) {
|
|
243
|
-
logger.error("Redis clear error:", error);
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
async isHealthy() {
|
|
247
|
-
try {
|
|
248
|
-
const client = await this.getClient();
|
|
249
|
-
const pong = await client.ping();
|
|
250
|
-
return pong === "PONG";
|
|
251
|
-
}
|
|
252
|
-
catch {
|
|
253
|
-
return false;
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
async disconnect() {
|
|
257
|
-
if (this.client) {
|
|
258
|
-
await this.client.quit();
|
|
259
|
-
this.client = null;
|
|
260
|
-
this.initPromise = null;
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
/**
|
|
265
|
-
* Session Manager
|
|
266
|
-
*
|
|
267
|
-
* High-level session management that handles session lifecycle,
|
|
268
|
-
* automatic refresh, and storage abstraction.
|
|
269
|
-
*/
|
|
270
|
-
export class SessionManager {
|
|
271
|
-
storage;
|
|
272
|
-
config;
|
|
273
|
-
constructor(config = {}) {
|
|
274
|
-
this.config = {
|
|
275
|
-
...config,
|
|
276
|
-
duration: config.duration || 3600,
|
|
277
|
-
autoRefresh: config.autoRefresh ?? true,
|
|
278
|
-
refreshThreshold: config.refreshThreshold || 300,
|
|
279
|
-
storage: config.storage || "memory",
|
|
280
|
-
};
|
|
281
|
-
// Initialize storage based on config
|
|
282
|
-
this.storage = this.createStorage();
|
|
283
|
-
}
|
|
284
|
-
createStorage() {
|
|
285
|
-
switch (this.config.storage) {
|
|
286
|
-
case "redis":
|
|
287
|
-
if (!this.config.redis?.url) {
|
|
288
|
-
logger.warn("Redis URL not provided, falling back to memory storage");
|
|
289
|
-
return new MemorySessionStorage();
|
|
290
|
-
}
|
|
291
|
-
return new RedisSessionStorage({
|
|
292
|
-
url: this.config.redis.url,
|
|
293
|
-
prefix: this.config.redis.prefix,
|
|
294
|
-
ttl: this.config.redis.ttl || this.config.duration,
|
|
295
|
-
});
|
|
296
|
-
case "memory":
|
|
297
|
-
default:
|
|
298
|
-
return new MemorySessionStorage();
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
/**
|
|
302
|
-
* Create a new session
|
|
303
|
-
*/
|
|
304
|
-
async createSession(user, metadata) {
|
|
305
|
-
const sessionId = crypto.randomUUID();
|
|
306
|
-
const now = new Date();
|
|
307
|
-
const duration = this.config.duration || 3600;
|
|
308
|
-
const session = {
|
|
309
|
-
id: sessionId,
|
|
310
|
-
user,
|
|
311
|
-
createdAt: now,
|
|
312
|
-
expiresAt: new Date(now.getTime() + duration * 1000),
|
|
313
|
-
isValid: true,
|
|
314
|
-
ipAddress: metadata?.ipAddress,
|
|
315
|
-
userAgent: metadata?.userAgent,
|
|
316
|
-
deviceId: metadata?.deviceId,
|
|
317
|
-
};
|
|
318
|
-
await this.storage.set(session);
|
|
319
|
-
logger.debug(`Session created: ${maskId(sessionId)} for user: ${maskId(user.id)}`);
|
|
320
|
-
return session;
|
|
321
|
-
}
|
|
322
|
-
/**
|
|
323
|
-
* Get a session by ID
|
|
324
|
-
*
|
|
325
|
-
* Optionally auto-refreshes if close to expiration.
|
|
326
|
-
*/
|
|
327
|
-
async getSession(sessionId, autoRefresh = this.config.autoRefresh) {
|
|
328
|
-
const session = await this.storage.get(sessionId);
|
|
329
|
-
if (!session) {
|
|
330
|
-
return null;
|
|
331
|
-
}
|
|
332
|
-
// Auto-refresh if close to expiration
|
|
333
|
-
if (autoRefresh && this.shouldRefresh(session)) {
|
|
334
|
-
return this.refreshSession(sessionId);
|
|
335
|
-
}
|
|
336
|
-
return session;
|
|
337
|
-
}
|
|
338
|
-
/**
|
|
339
|
-
* Check if session should be refreshed
|
|
340
|
-
*/
|
|
341
|
-
shouldRefresh(session) {
|
|
342
|
-
if (!session.expiresAt) {
|
|
343
|
-
return false;
|
|
344
|
-
}
|
|
345
|
-
const threshold = this.config.refreshThreshold || 300;
|
|
346
|
-
const timeUntilExpiry = (session.expiresAt.getTime() - Date.now()) / 1000;
|
|
347
|
-
return timeUntilExpiry < threshold;
|
|
348
|
-
}
|
|
349
|
-
/**
|
|
350
|
-
* Refresh a session
|
|
351
|
-
*/
|
|
352
|
-
async refreshSession(sessionId) {
|
|
353
|
-
const session = await this.storage.get(sessionId);
|
|
354
|
-
if (!session) {
|
|
355
|
-
return null;
|
|
356
|
-
}
|
|
357
|
-
const duration = this.config.duration || 3600;
|
|
358
|
-
session.expiresAt = new Date(Date.now() + duration * 1000);
|
|
359
|
-
await this.storage.set(session);
|
|
360
|
-
logger.debug(`Session refreshed: ${maskId(sessionId)}`);
|
|
361
|
-
return session;
|
|
362
|
-
}
|
|
363
|
-
/**
|
|
364
|
-
* Destroy a session
|
|
365
|
-
*/
|
|
366
|
-
async destroySession(sessionId) {
|
|
367
|
-
await this.storage.delete(sessionId);
|
|
368
|
-
logger.debug(`Session destroyed: ${maskId(sessionId)}`);
|
|
369
|
-
}
|
|
370
|
-
/**
|
|
371
|
-
* Get all sessions for a user
|
|
372
|
-
*/
|
|
373
|
-
async getUserSessions(userId) {
|
|
374
|
-
return this.storage.getUserSessions(userId);
|
|
375
|
-
}
|
|
376
|
-
/**
|
|
377
|
-
* Destroy all sessions for a user (global logout)
|
|
378
|
-
*/
|
|
379
|
-
async destroyAllUserSessions(userId) {
|
|
380
|
-
await this.storage.deleteUserSessions(userId);
|
|
381
|
-
logger.debug(`All sessions destroyed for user: ${maskId(userId)}`);
|
|
382
|
-
}
|
|
383
|
-
/**
|
|
384
|
-
* Validate a session is still active
|
|
385
|
-
*/
|
|
386
|
-
async validateSession(sessionId) {
|
|
387
|
-
const session = await this.storage.get(sessionId);
|
|
388
|
-
return session !== null && session.isValid;
|
|
389
|
-
}
|
|
390
|
-
/**
|
|
391
|
-
* Update session metadata
|
|
392
|
-
*/
|
|
393
|
-
async updateSessionMetadata(sessionId, metadata) {
|
|
394
|
-
const session = await this.storage.get(sessionId);
|
|
395
|
-
if (!session) {
|
|
396
|
-
return null;
|
|
397
|
-
}
|
|
398
|
-
session.metadata = {
|
|
399
|
-
...session.metadata,
|
|
400
|
-
...metadata,
|
|
401
|
-
};
|
|
402
|
-
await this.storage.set(session);
|
|
403
|
-
return session;
|
|
404
|
-
}
|
|
405
|
-
/**
|
|
406
|
-
* Health check
|
|
407
|
-
*/
|
|
408
|
-
async isHealthy() {
|
|
409
|
-
return this.storage.isHealthy();
|
|
410
|
-
}
|
|
411
|
-
/**
|
|
412
|
-
* Clear all sessions (for testing/cleanup)
|
|
413
|
-
*/
|
|
414
|
-
async clear() {
|
|
415
|
-
await this.storage.clear();
|
|
416
|
-
}
|
|
417
|
-
}
|
|
418
|
-
/**
|
|
419
|
-
* Create session storage based on configuration
|
|
420
|
-
*/
|
|
421
|
-
export function createSessionStorage(config) {
|
|
422
|
-
switch (config.storage) {
|
|
423
|
-
case "redis":
|
|
424
|
-
if (!config.redis?.url) {
|
|
425
|
-
logger.warn("Redis URL not provided, falling back to memory storage");
|
|
426
|
-
return new MemorySessionStorage();
|
|
427
|
-
}
|
|
428
|
-
return new RedisSessionStorage({
|
|
429
|
-
url: config.redis.url,
|
|
430
|
-
prefix: config.redis.prefix,
|
|
431
|
-
ttl: config.redis.ttl || config.duration,
|
|
432
|
-
});
|
|
433
|
-
case "memory":
|
|
434
|
-
default:
|
|
435
|
-
return new MemorySessionStorage();
|
|
436
|
-
}
|
|
437
|
-
}
|