@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,402 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Reranker Registry
|
|
3
|
-
*
|
|
4
|
-
* Centralized registry for all reranker implementations with metadata
|
|
5
|
-
* and discovery capabilities. Follows the BaseRegistry pattern.
|
|
6
|
-
*/
|
|
7
|
-
import { BaseRegistry } from "../../core/infrastructure/index.js";
|
|
8
|
-
import { logger } from "../../utils/logger.js";
|
|
9
|
-
import { RAGErrorCodes, RerankerError } from "../errors/RAGError.js";
|
|
10
|
-
/**
|
|
11
|
-
* Default reranker metadata entries
|
|
12
|
-
*/
|
|
13
|
-
const DEFAULT_RERANKER_METADATA = {
|
|
14
|
-
llm: {
|
|
15
|
-
description: "LLM-powered semantic reranking with multi-factor scoring",
|
|
16
|
-
defaultConfig: {
|
|
17
|
-
topK: 3,
|
|
18
|
-
weights: { semantic: 0.4, vector: 0.4, position: 0.2 },
|
|
19
|
-
},
|
|
20
|
-
supportedOptions: ["model", "provider", "topK", "weights"],
|
|
21
|
-
useCases: [
|
|
22
|
-
"High-quality semantic reranking",
|
|
23
|
-
"Complex query understanding",
|
|
24
|
-
"Context-aware scoring",
|
|
25
|
-
],
|
|
26
|
-
aliases: ["semantic", "ai", "model-based"],
|
|
27
|
-
requiresModel: true,
|
|
28
|
-
requiresExternalAPI: false,
|
|
29
|
-
},
|
|
30
|
-
"cross-encoder": {
|
|
31
|
-
description: "Cross-encoder model for query-document relevance scoring",
|
|
32
|
-
defaultConfig: {
|
|
33
|
-
topK: 3,
|
|
34
|
-
model: "ms-marco-MiniLM-L-6-v2",
|
|
35
|
-
},
|
|
36
|
-
supportedOptions: ["model", "topK"],
|
|
37
|
-
useCases: [
|
|
38
|
-
"High-precision reranking",
|
|
39
|
-
"Search result refinement",
|
|
40
|
-
"Academic/research applications",
|
|
41
|
-
],
|
|
42
|
-
aliases: ["cross", "encoder", "bi-encoder"],
|
|
43
|
-
requiresModel: true,
|
|
44
|
-
requiresExternalAPI: false,
|
|
45
|
-
},
|
|
46
|
-
cohere: {
|
|
47
|
-
description: "Cohere Rerank API for production-grade relevance scoring",
|
|
48
|
-
defaultConfig: {
|
|
49
|
-
topK: 3,
|
|
50
|
-
model: "rerank-v3.5",
|
|
51
|
-
},
|
|
52
|
-
supportedOptions: ["model", "topK", "apiKey"],
|
|
53
|
-
useCases: [
|
|
54
|
-
"Production search systems",
|
|
55
|
-
"Enterprise applications",
|
|
56
|
-
"High-volume reranking",
|
|
57
|
-
],
|
|
58
|
-
aliases: ["cohere-rerank", "cohere-api"],
|
|
59
|
-
requiresModel: false,
|
|
60
|
-
requiresExternalAPI: true,
|
|
61
|
-
},
|
|
62
|
-
simple: {
|
|
63
|
-
description: "Position and vector score-based reranking (no LLM required)",
|
|
64
|
-
defaultConfig: {
|
|
65
|
-
topK: 3,
|
|
66
|
-
weights: { vector: 0.8, position: 0.2 },
|
|
67
|
-
},
|
|
68
|
-
supportedOptions: ["topK", "weights"],
|
|
69
|
-
useCases: [
|
|
70
|
-
"Fast reranking",
|
|
71
|
-
"Low-latency requirements",
|
|
72
|
-
"When LLM is unavailable",
|
|
73
|
-
],
|
|
74
|
-
aliases: ["fast", "basic", "position-based"],
|
|
75
|
-
requiresModel: false,
|
|
76
|
-
requiresExternalAPI: false,
|
|
77
|
-
},
|
|
78
|
-
batch: {
|
|
79
|
-
description: "Batch LLM reranking for efficient multi-document scoring",
|
|
80
|
-
defaultConfig: {
|
|
81
|
-
topK: 3,
|
|
82
|
-
weights: { semantic: 0.4, vector: 0.4, position: 0.2 },
|
|
83
|
-
},
|
|
84
|
-
supportedOptions: ["model", "provider", "topK", "weights"],
|
|
85
|
-
useCases: [
|
|
86
|
-
"Large result sets",
|
|
87
|
-
"Cost-efficient LLM usage",
|
|
88
|
-
"Batch processing pipelines",
|
|
89
|
-
],
|
|
90
|
-
aliases: ["batch-llm", "efficient", "bulk"],
|
|
91
|
-
requiresModel: true,
|
|
92
|
-
requiresExternalAPI: false,
|
|
93
|
-
},
|
|
94
|
-
};
|
|
95
|
-
/**
|
|
96
|
-
* Reranker Registry
|
|
97
|
-
*
|
|
98
|
-
* Manages registration and discovery of all reranker implementations.
|
|
99
|
-
* Extends BaseRegistry for consistent lifecycle management.
|
|
100
|
-
*/
|
|
101
|
-
export class RerankerRegistry extends BaseRegistry {
|
|
102
|
-
static instance = null;
|
|
103
|
-
aliasMap = new Map();
|
|
104
|
-
constructor() {
|
|
105
|
-
super();
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Get singleton instance
|
|
109
|
-
*/
|
|
110
|
-
static getInstance() {
|
|
111
|
-
if (!RerankerRegistry.instance) {
|
|
112
|
-
RerankerRegistry.instance = new RerankerRegistry();
|
|
113
|
-
}
|
|
114
|
-
return RerankerRegistry.instance;
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Reset singleton (for testing)
|
|
118
|
-
*/
|
|
119
|
-
static resetInstance() {
|
|
120
|
-
if (RerankerRegistry.instance) {
|
|
121
|
-
RerankerRegistry.instance.clear();
|
|
122
|
-
RerankerRegistry.instance = null;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Register all built-in rerankers
|
|
127
|
-
*/
|
|
128
|
-
async registerAll() {
|
|
129
|
-
// Import reranker functions
|
|
130
|
-
const rerankerModule = await import("./reranker.js");
|
|
131
|
-
// Register LLM reranker
|
|
132
|
-
this.registerReranker("llm", async () => this.createLLMRerankerInstance(rerankerModule.rerank), DEFAULT_RERANKER_METADATA.llm);
|
|
133
|
-
// Register cross-encoder reranker
|
|
134
|
-
this.registerReranker("cross-encoder", async () => this.createCrossEncoderInstance(rerankerModule.CrossEncoderReranker), DEFAULT_RERANKER_METADATA["cross-encoder"]);
|
|
135
|
-
// Register Cohere reranker
|
|
136
|
-
this.registerReranker("cohere", async () => this.createCohereInstance(rerankerModule.CohereRelevanceScorer), DEFAULT_RERANKER_METADATA.cohere);
|
|
137
|
-
// Register simple reranker
|
|
138
|
-
this.registerReranker("simple", async () => this.createSimpleRerankerInstance(rerankerModule.simpleRerank), DEFAULT_RERANKER_METADATA.simple);
|
|
139
|
-
// Register batch reranker
|
|
140
|
-
this.registerReranker("batch", async () => this.createBatchRerankerInstance(rerankerModule.batchRerank), DEFAULT_RERANKER_METADATA.batch);
|
|
141
|
-
logger.debug(`[RerankerRegistry] Registered ${this.items.size} reranker types`);
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Create LLM reranker instance wrapper
|
|
145
|
-
*/
|
|
146
|
-
createLLMRerankerInstance(_rerankFn) {
|
|
147
|
-
return {
|
|
148
|
-
type: "llm",
|
|
149
|
-
async rerank() {
|
|
150
|
-
throw new RerankerError("LLM reranker requires model provider. Use RerankerFactory.createReranker() instead.", {
|
|
151
|
-
rerankerType: "llm",
|
|
152
|
-
});
|
|
153
|
-
},
|
|
154
|
-
};
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Create cross-encoder instance wrapper
|
|
158
|
-
*/
|
|
159
|
-
createCrossEncoderInstance(CrossEncoderClass) {
|
|
160
|
-
const encoder = new CrossEncoderClass();
|
|
161
|
-
return {
|
|
162
|
-
type: "cross-encoder",
|
|
163
|
-
async rerank(results, query, options) {
|
|
164
|
-
const documents = results.map((r) => r.text || r.metadata?.text || "");
|
|
165
|
-
const scores = await encoder.rerank(query, documents);
|
|
166
|
-
const topK = options?.topK ?? 3;
|
|
167
|
-
return scores
|
|
168
|
-
.map((s) => ({
|
|
169
|
-
result: results[s.index],
|
|
170
|
-
score: s.score,
|
|
171
|
-
details: {
|
|
172
|
-
semantic: s.score,
|
|
173
|
-
vector: results[s.index].score ?? 0,
|
|
174
|
-
position: 1 - s.index / results.length,
|
|
175
|
-
},
|
|
176
|
-
}))
|
|
177
|
-
.sort((a, b) => b.score - a.score)
|
|
178
|
-
.slice(0, topK);
|
|
179
|
-
},
|
|
180
|
-
};
|
|
181
|
-
}
|
|
182
|
-
/**
|
|
183
|
-
* Create Cohere instance wrapper
|
|
184
|
-
*/
|
|
185
|
-
createCohereInstance(CohereClass) {
|
|
186
|
-
const scorer = new CohereClass();
|
|
187
|
-
return {
|
|
188
|
-
type: "cohere",
|
|
189
|
-
async rerank(results, query, options) {
|
|
190
|
-
const documents = results.map((r) => r.text || r.metadata?.text || "");
|
|
191
|
-
const scores = await scorer.score(query, documents);
|
|
192
|
-
const topK = options?.topK ?? 3;
|
|
193
|
-
return scores
|
|
194
|
-
.map((s) => ({
|
|
195
|
-
result: results[s.index],
|
|
196
|
-
score: s.score,
|
|
197
|
-
details: {
|
|
198
|
-
semantic: s.score,
|
|
199
|
-
vector: results[s.index].score ?? 0,
|
|
200
|
-
position: 1 - s.index / results.length,
|
|
201
|
-
},
|
|
202
|
-
}))
|
|
203
|
-
.sort((a, b) => b.score - a.score)
|
|
204
|
-
.slice(0, topK);
|
|
205
|
-
},
|
|
206
|
-
};
|
|
207
|
-
}
|
|
208
|
-
/**
|
|
209
|
-
* Create simple reranker instance wrapper
|
|
210
|
-
*/
|
|
211
|
-
createSimpleRerankerInstance(simpleRerankFn) {
|
|
212
|
-
return {
|
|
213
|
-
type: "simple",
|
|
214
|
-
async rerank(results, _query, options) {
|
|
215
|
-
return simpleRerankFn(results, {
|
|
216
|
-
topK: options?.topK,
|
|
217
|
-
vectorWeight: options?.weights?.vector,
|
|
218
|
-
positionWeight: options?.weights?.position,
|
|
219
|
-
});
|
|
220
|
-
},
|
|
221
|
-
};
|
|
222
|
-
}
|
|
223
|
-
/**
|
|
224
|
-
* Create batch reranker instance wrapper
|
|
225
|
-
*/
|
|
226
|
-
createBatchRerankerInstance(_batchRerankFn) {
|
|
227
|
-
return {
|
|
228
|
-
type: "batch",
|
|
229
|
-
async rerank() {
|
|
230
|
-
throw new RerankerError("Batch reranker requires model provider. Use RerankerFactory.createReranker() instead.", {
|
|
231
|
-
rerankerType: "batch",
|
|
232
|
-
});
|
|
233
|
-
},
|
|
234
|
-
};
|
|
235
|
-
}
|
|
236
|
-
/**
|
|
237
|
-
* Register a reranker with aliases
|
|
238
|
-
*/
|
|
239
|
-
registerReranker(type, factory, metadata) {
|
|
240
|
-
this.register(type, factory, metadata.aliases, { metadata });
|
|
241
|
-
// Register aliases in local alias map for type resolution
|
|
242
|
-
for (const alias of metadata.aliases) {
|
|
243
|
-
this.aliasMap.set(alias.toLowerCase(), type);
|
|
244
|
-
logger.debug(`[RerankerRegistry] Registered alias '${alias}' -> '${type}'`);
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
/**
|
|
248
|
-
* Resolve type from alias
|
|
249
|
-
*/
|
|
250
|
-
resolveType(nameOrAlias) {
|
|
251
|
-
const lower = nameOrAlias.toLowerCase();
|
|
252
|
-
// Check if it's a direct type
|
|
253
|
-
if (this.items.has(lower)) {
|
|
254
|
-
return lower;
|
|
255
|
-
}
|
|
256
|
-
// Check aliases
|
|
257
|
-
const resolved = this.aliasMap.get(lower);
|
|
258
|
-
if (resolved) {
|
|
259
|
-
return resolved;
|
|
260
|
-
}
|
|
261
|
-
throw new RerankerError(`Unknown reranker type: '${nameOrAlias}'. Available types: ${this.list()
|
|
262
|
-
.map((item) => item.id)
|
|
263
|
-
.join(", ")}`, {
|
|
264
|
-
code: RAGErrorCodes.RERANKER_NOT_FOUND,
|
|
265
|
-
rerankerType: nameOrAlias,
|
|
266
|
-
details: {
|
|
267
|
-
requestedType: nameOrAlias,
|
|
268
|
-
availableTypes: this.list().map((item) => item.id),
|
|
269
|
-
},
|
|
270
|
-
});
|
|
271
|
-
}
|
|
272
|
-
/**
|
|
273
|
-
* Get a reranker by type or alias
|
|
274
|
-
*/
|
|
275
|
-
async getReranker(typeOrAlias) {
|
|
276
|
-
await this.ensureInitialized();
|
|
277
|
-
const type = this.resolveType(typeOrAlias);
|
|
278
|
-
const reranker = await this.get(type);
|
|
279
|
-
if (!reranker) {
|
|
280
|
-
throw new RerankerError(`Reranker not found: ${type}`, {
|
|
281
|
-
code: RAGErrorCodes.RERANKER_NOT_FOUND,
|
|
282
|
-
rerankerType: type,
|
|
283
|
-
details: { type },
|
|
284
|
-
});
|
|
285
|
-
}
|
|
286
|
-
return reranker;
|
|
287
|
-
}
|
|
288
|
-
/**
|
|
289
|
-
* Get list of available reranker types
|
|
290
|
-
*/
|
|
291
|
-
async getAvailableRerankers() {
|
|
292
|
-
await this.ensureInitialized();
|
|
293
|
-
return this.list().map((item) => item.id);
|
|
294
|
-
}
|
|
295
|
-
/**
|
|
296
|
-
* Get metadata for a specific reranker
|
|
297
|
-
*/
|
|
298
|
-
getRerankerMetadata(typeOrAlias) {
|
|
299
|
-
const type = this.resolveType(typeOrAlias);
|
|
300
|
-
const entry = this.list().find((item) => item.id === type);
|
|
301
|
-
return entry?.metadata;
|
|
302
|
-
}
|
|
303
|
-
/**
|
|
304
|
-
* Get all aliases for a type
|
|
305
|
-
*/
|
|
306
|
-
getAliasesForType(type) {
|
|
307
|
-
const metadata = DEFAULT_RERANKER_METADATA[type];
|
|
308
|
-
return metadata?.aliases ?? [];
|
|
309
|
-
}
|
|
310
|
-
/**
|
|
311
|
-
* Get all registered aliases
|
|
312
|
-
*/
|
|
313
|
-
getAllAliases() {
|
|
314
|
-
return new Map(this.aliasMap);
|
|
315
|
-
}
|
|
316
|
-
/**
|
|
317
|
-
* Check if a type or alias exists
|
|
318
|
-
*/
|
|
319
|
-
hasReranker(typeOrAlias) {
|
|
320
|
-
try {
|
|
321
|
-
this.resolveType(typeOrAlias);
|
|
322
|
-
return true;
|
|
323
|
-
}
|
|
324
|
-
catch {
|
|
325
|
-
return false;
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
|
-
/**
|
|
329
|
-
* Get rerankers by use case
|
|
330
|
-
*/
|
|
331
|
-
getRerankersByUseCase(useCase) {
|
|
332
|
-
const matches = [];
|
|
333
|
-
const useCaseLower = useCase.toLowerCase();
|
|
334
|
-
for (const [type, metadata] of Object.entries(DEFAULT_RERANKER_METADATA)) {
|
|
335
|
-
const hasMatchingUseCase = metadata.useCases.some((uc) => uc.toLowerCase().includes(useCaseLower));
|
|
336
|
-
if (hasMatchingUseCase) {
|
|
337
|
-
matches.push(type);
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
return matches;
|
|
341
|
-
}
|
|
342
|
-
/**
|
|
343
|
-
* Get default configuration for a reranker
|
|
344
|
-
*/
|
|
345
|
-
getDefaultConfig(typeOrAlias) {
|
|
346
|
-
const metadata = this.getRerankerMetadata(typeOrAlias);
|
|
347
|
-
return metadata?.defaultConfig;
|
|
348
|
-
}
|
|
349
|
-
/**
|
|
350
|
-
* Get rerankers that don't require external APIs
|
|
351
|
-
*/
|
|
352
|
-
getLocalRerankers() {
|
|
353
|
-
const matches = [];
|
|
354
|
-
for (const [type, metadata] of Object.entries(DEFAULT_RERANKER_METADATA)) {
|
|
355
|
-
if (!metadata.requiresExternalAPI) {
|
|
356
|
-
matches.push(type);
|
|
357
|
-
}
|
|
358
|
-
}
|
|
359
|
-
return matches;
|
|
360
|
-
}
|
|
361
|
-
/**
|
|
362
|
-
* Get rerankers that don't require AI models
|
|
363
|
-
*/
|
|
364
|
-
getModelFreeRerankers() {
|
|
365
|
-
const matches = [];
|
|
366
|
-
for (const [type, metadata] of Object.entries(DEFAULT_RERANKER_METADATA)) {
|
|
367
|
-
if (!metadata.requiresModel) {
|
|
368
|
-
matches.push(type);
|
|
369
|
-
}
|
|
370
|
-
}
|
|
371
|
-
return matches;
|
|
372
|
-
}
|
|
373
|
-
/**
|
|
374
|
-
* Clear the registry (also clears aliases)
|
|
375
|
-
*/
|
|
376
|
-
clear() {
|
|
377
|
-
super.clear();
|
|
378
|
-
this.aliasMap.clear();
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
/**
|
|
382
|
-
* Global reranker registry singleton
|
|
383
|
-
*/
|
|
384
|
-
export const rerankerRegistry = RerankerRegistry.getInstance();
|
|
385
|
-
/**
|
|
386
|
-
* Convenience function to get available rerankers
|
|
387
|
-
*/
|
|
388
|
-
export async function getAvailableRerankers() {
|
|
389
|
-
return rerankerRegistry.getAvailableRerankers();
|
|
390
|
-
}
|
|
391
|
-
/**
|
|
392
|
-
* Convenience function to get reranker by type
|
|
393
|
-
*/
|
|
394
|
-
export async function getReranker(typeOrAlias) {
|
|
395
|
-
return rerankerRegistry.getReranker(typeOrAlias);
|
|
396
|
-
}
|
|
397
|
-
/**
|
|
398
|
-
* Convenience function to get reranker metadata
|
|
399
|
-
*/
|
|
400
|
-
export function getRegisteredRerankerMetadata(typeOrAlias) {
|
|
401
|
-
return rerankerRegistry.getRerankerMetadata(typeOrAlias);
|
|
402
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Reranker Module Exports
|
|
3
|
-
*/
|
|
4
|
-
// Factory pattern exports
|
|
5
|
-
export { createReranker, getAvailableRerankerTypes, getRerankerDefaultConfig, getRerankerMetadata, RerankerFactory, rerankerFactory, } from "./RerankerFactory.js";
|
|
6
|
-
// Registry pattern exports
|
|
7
|
-
export { getAvailableRerankers, getRegisteredRerankerMetadata, getReranker, RerankerRegistry, rerankerRegistry, } from "./RerankerRegistry.js";
|
|
8
|
-
// Core reranker functions
|
|
9
|
-
export { batchRerank, CohereRelevanceScorer, CrossEncoderReranker, rerank, simpleRerank, } from "./reranker.js";
|
|
@@ -1,277 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Reranker Implementation
|
|
3
|
-
*
|
|
4
|
-
* Multi-factor scoring system for reranking retrieval results.
|
|
5
|
-
* Combines semantic relevance (LLM-based), vector similarity, and position.
|
|
6
|
-
*/
|
|
7
|
-
import { logger } from "../../utils/logger.js";
|
|
8
|
-
/**
|
|
9
|
-
* Default scoring weights
|
|
10
|
-
*/
|
|
11
|
-
const DEFAULT_WEIGHTS = {
|
|
12
|
-
semantic: 0.4,
|
|
13
|
-
vector: 0.4,
|
|
14
|
-
position: 0.2,
|
|
15
|
-
};
|
|
16
|
-
/**
|
|
17
|
-
* Rerank vector search results using multi-factor scoring
|
|
18
|
-
*
|
|
19
|
-
* Combines three scoring factors:
|
|
20
|
-
* 1. Semantic score: LLM-based relevance assessment
|
|
21
|
-
* 2. Vector score: Original similarity score from vector search
|
|
22
|
-
* 3. Position score: Inverse of original ranking position
|
|
23
|
-
*
|
|
24
|
-
* @param results - Vector search results to rerank
|
|
25
|
-
* @param query - Original search query
|
|
26
|
-
* @param model - Language model for semantic scoring
|
|
27
|
-
* @param options - Reranking options
|
|
28
|
-
* @returns Reranked results with detailed scores
|
|
29
|
-
*/
|
|
30
|
-
export async function rerank(results, query, model, options) {
|
|
31
|
-
const { queryEmbedding: _queryEmbedding, topK = 3, weights = DEFAULT_WEIGHTS, } = options || {};
|
|
32
|
-
if (results.length === 0) {
|
|
33
|
-
return [];
|
|
34
|
-
}
|
|
35
|
-
// Validate weights sum to 1.0
|
|
36
|
-
const totalWeight = (weights.semantic || DEFAULT_WEIGHTS.semantic) +
|
|
37
|
-
(weights.vector || DEFAULT_WEIGHTS.vector) +
|
|
38
|
-
(weights.position || DEFAULT_WEIGHTS.position);
|
|
39
|
-
if (Math.abs(totalWeight - 1.0) > 0.01) {
|
|
40
|
-
logger.warn("[Reranker] Weights do not sum to 1.0, normalizing", {
|
|
41
|
-
original: weights,
|
|
42
|
-
total: totalWeight,
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
const normalizedWeights = {
|
|
46
|
-
semantic: (weights.semantic || DEFAULT_WEIGHTS.semantic) / totalWeight,
|
|
47
|
-
vector: (weights.vector || DEFAULT_WEIGHTS.vector) / totalWeight,
|
|
48
|
-
position: (weights.position || DEFAULT_WEIGHTS.position) / totalWeight,
|
|
49
|
-
};
|
|
50
|
-
const rerankedResults = [];
|
|
51
|
-
// Process results in parallel batches for efficiency
|
|
52
|
-
const batchSize = 5;
|
|
53
|
-
for (let i = 0; i < results.length; i += batchSize) {
|
|
54
|
-
const batch = results.slice(i, i + batchSize);
|
|
55
|
-
const batchPromises = batch.map(async (result, batchIndex) => {
|
|
56
|
-
const globalIndex = i + batchIndex;
|
|
57
|
-
// Calculate vector score (use existing score or 0)
|
|
58
|
-
const vectorScore = result.score ?? 0;
|
|
59
|
-
// Calculate position score (inverse of position)
|
|
60
|
-
const positionScore = 1 - globalIndex / results.length;
|
|
61
|
-
// Calculate semantic score using LLM
|
|
62
|
-
const semanticResult = await calculateSemanticScore(query, result.text || result.metadata?.text || "", model);
|
|
63
|
-
// Combine scores
|
|
64
|
-
const combinedScore = normalizedWeights.semantic * semanticResult.score +
|
|
65
|
-
normalizedWeights.vector * vectorScore +
|
|
66
|
-
normalizedWeights.position * positionScore;
|
|
67
|
-
return {
|
|
68
|
-
result,
|
|
69
|
-
score: combinedScore,
|
|
70
|
-
details: {
|
|
71
|
-
semantic: semanticResult.score,
|
|
72
|
-
vector: vectorScore,
|
|
73
|
-
position: positionScore,
|
|
74
|
-
queryAnalysis: semanticResult.analysis,
|
|
75
|
-
},
|
|
76
|
-
};
|
|
77
|
-
});
|
|
78
|
-
const batchResults = await Promise.all(batchPromises);
|
|
79
|
-
rerankedResults.push(...batchResults);
|
|
80
|
-
}
|
|
81
|
-
// Sort by combined score descending
|
|
82
|
-
rerankedResults.sort((a, b) => b.score - a.score);
|
|
83
|
-
// Return top K results
|
|
84
|
-
return rerankedResults.slice(0, topK);
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Calculate semantic relevance score using LLM
|
|
88
|
-
*
|
|
89
|
-
* @param query - Search query
|
|
90
|
-
* @param text - Document text to score
|
|
91
|
-
* @param model - Language model for scoring
|
|
92
|
-
* @returns Score between 0 and 1 with optional analysis
|
|
93
|
-
*/
|
|
94
|
-
async function calculateSemanticScore(query, text, model) {
|
|
95
|
-
const prompt = `Rate the relevance of the following text to the query on a scale of 0 to 1.
|
|
96
|
-
|
|
97
|
-
Query: ${query}
|
|
98
|
-
|
|
99
|
-
Text: ${text.slice(0, 1000)}
|
|
100
|
-
|
|
101
|
-
Respond with only a number between 0 and 1, where:
|
|
102
|
-
- 0 means completely irrelevant
|
|
103
|
-
- 0.5 means somewhat relevant
|
|
104
|
-
- 1 means highly relevant
|
|
105
|
-
|
|
106
|
-
Score:`;
|
|
107
|
-
try {
|
|
108
|
-
const result = await model.generate({
|
|
109
|
-
prompt,
|
|
110
|
-
maxTokens: 10,
|
|
111
|
-
temperature: 0,
|
|
112
|
-
});
|
|
113
|
-
const scoreText = result?.content?.trim() || "0";
|
|
114
|
-
const score = parseFloat(scoreText);
|
|
115
|
-
if (isNaN(score) || score < 0 || score > 1) {
|
|
116
|
-
return { score: 0.5 };
|
|
117
|
-
}
|
|
118
|
-
return { score };
|
|
119
|
-
}
|
|
120
|
-
catch (error) {
|
|
121
|
-
logger.warn("[Reranker] Semantic scoring failed, using default", {
|
|
122
|
-
error: error instanceof Error ? error.message : String(error),
|
|
123
|
-
});
|
|
124
|
-
return { score: 0.5 };
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* Batch rerank with optimized LLM calls
|
|
129
|
-
* Scores multiple documents in a single prompt for efficiency
|
|
130
|
-
*
|
|
131
|
-
* @param results - Results to rerank
|
|
132
|
-
* @param query - Search query
|
|
133
|
-
* @param model - Language model
|
|
134
|
-
* @param options - Reranking options
|
|
135
|
-
* @returns Reranked results
|
|
136
|
-
*/
|
|
137
|
-
export async function batchRerank(results, query, model, options) {
|
|
138
|
-
const { topK = 3, weights = DEFAULT_WEIGHTS } = options || {};
|
|
139
|
-
if (results.length === 0) {
|
|
140
|
-
return [];
|
|
141
|
-
}
|
|
142
|
-
// Normalize weights
|
|
143
|
-
const totalWeight = (weights.semantic || DEFAULT_WEIGHTS.semantic) +
|
|
144
|
-
(weights.vector || DEFAULT_WEIGHTS.vector) +
|
|
145
|
-
(weights.position || DEFAULT_WEIGHTS.position);
|
|
146
|
-
const normalizedWeights = {
|
|
147
|
-
semantic: (weights.semantic || DEFAULT_WEIGHTS.semantic) / totalWeight,
|
|
148
|
-
vector: (weights.vector || DEFAULT_WEIGHTS.vector) / totalWeight,
|
|
149
|
-
position: (weights.position || DEFAULT_WEIGHTS.position) / totalWeight,
|
|
150
|
-
};
|
|
151
|
-
// Build batch scoring prompt
|
|
152
|
-
const documentsText = results
|
|
153
|
-
.map((r, i) => `[${i + 1}] ${(r.text || r.metadata?.text || "").slice(0, 300)}`)
|
|
154
|
-
.join("\n\n");
|
|
155
|
-
const prompt = `Rate the relevance of each document to the query on a scale of 0 to 1.
|
|
156
|
-
|
|
157
|
-
Query: ${query}
|
|
158
|
-
|
|
159
|
-
Documents:
|
|
160
|
-
${documentsText}
|
|
161
|
-
|
|
162
|
-
For each document, provide a score between 0 and 1.
|
|
163
|
-
Respond with only the scores, one per line, in order:`;
|
|
164
|
-
try {
|
|
165
|
-
const result = await model.generate({
|
|
166
|
-
prompt,
|
|
167
|
-
maxTokens: 50,
|
|
168
|
-
temperature: 0,
|
|
169
|
-
});
|
|
170
|
-
// Parse scores from response
|
|
171
|
-
const scoreLines = (result?.content || "")
|
|
172
|
-
.trim()
|
|
173
|
-
.split("\n")
|
|
174
|
-
.map((line) => line.trim())
|
|
175
|
-
.filter((line) => line.length > 0);
|
|
176
|
-
const semanticScores = [];
|
|
177
|
-
for (let i = 0; i < results.length; i++) {
|
|
178
|
-
const scoreLine = scoreLines[i];
|
|
179
|
-
if (scoreLine) {
|
|
180
|
-
const score = parseFloat(scoreLine.match(/[\d.]+/)?.[0] || "0.5");
|
|
181
|
-
semanticScores.push(isNaN(score) || score < 0 || score > 1 ? 0.5 : score);
|
|
182
|
-
}
|
|
183
|
-
else {
|
|
184
|
-
semanticScores.push(0.5);
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
// Calculate combined scores
|
|
188
|
-
const rerankedResults = results.map((result, i) => {
|
|
189
|
-
const vectorScore = result.score ?? 0;
|
|
190
|
-
const positionScore = 1 - i / results.length;
|
|
191
|
-
const semanticScore = semanticScores[i] ?? 0.5;
|
|
192
|
-
const combinedScore = normalizedWeights.semantic * semanticScore +
|
|
193
|
-
normalizedWeights.vector * vectorScore +
|
|
194
|
-
normalizedWeights.position * positionScore;
|
|
195
|
-
return {
|
|
196
|
-
result,
|
|
197
|
-
score: combinedScore,
|
|
198
|
-
details: {
|
|
199
|
-
semantic: semanticScore,
|
|
200
|
-
vector: vectorScore,
|
|
201
|
-
position: positionScore,
|
|
202
|
-
},
|
|
203
|
-
};
|
|
204
|
-
});
|
|
205
|
-
// Sort and return top K
|
|
206
|
-
rerankedResults.sort((a, b) => b.score - a.score);
|
|
207
|
-
return rerankedResults.slice(0, topK);
|
|
208
|
-
}
|
|
209
|
-
catch (error) {
|
|
210
|
-
logger.warn("[Reranker] Batch scoring failed, using individual scoring", {
|
|
211
|
-
error: error instanceof Error ? error.message : String(error),
|
|
212
|
-
});
|
|
213
|
-
// Fall back to individual scoring
|
|
214
|
-
return rerank(results, query, model, options);
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
/**
|
|
218
|
-
* Simple position-based reranker (no LLM required)
|
|
219
|
-
* Uses only vector score and position
|
|
220
|
-
*
|
|
221
|
-
* @param results - Results to rerank
|
|
222
|
-
* @param options - Reranking options
|
|
223
|
-
* @returns Reranked results
|
|
224
|
-
*/
|
|
225
|
-
export function simpleRerank(results, options) {
|
|
226
|
-
const { topK = 3, vectorWeight = 0.8, positionWeight = 0.2 } = options || {};
|
|
227
|
-
const totalWeight = vectorWeight + positionWeight;
|
|
228
|
-
const normalizedVectorWeight = vectorWeight / totalWeight;
|
|
229
|
-
const normalizedPositionWeight = positionWeight / totalWeight;
|
|
230
|
-
const rerankedResults = results.map((result, i) => {
|
|
231
|
-
const vectorScore = result.score ?? 0;
|
|
232
|
-
const positionScore = 1 - i / results.length;
|
|
233
|
-
const combinedScore = normalizedVectorWeight * vectorScore +
|
|
234
|
-
normalizedPositionWeight * positionScore;
|
|
235
|
-
return {
|
|
236
|
-
result,
|
|
237
|
-
score: combinedScore,
|
|
238
|
-
details: {
|
|
239
|
-
semantic: 0,
|
|
240
|
-
vector: vectorScore,
|
|
241
|
-
position: positionScore,
|
|
242
|
-
},
|
|
243
|
-
};
|
|
244
|
-
});
|
|
245
|
-
rerankedResults.sort((a, b) => b.score - a.score);
|
|
246
|
-
return rerankedResults.slice(0, topK);
|
|
247
|
-
}
|
|
248
|
-
/**
|
|
249
|
-
* Cohere-style relevance scorer interface
|
|
250
|
-
* Placeholder for integration with Cohere's rerank API
|
|
251
|
-
*/
|
|
252
|
-
export class CohereRelevanceScorer {
|
|
253
|
-
modelName;
|
|
254
|
-
constructor(modelName = "rerank-v3.5") {
|
|
255
|
-
this.modelName = modelName;
|
|
256
|
-
}
|
|
257
|
-
async score(_query, _documents) {
|
|
258
|
-
// Placeholder - would use Cohere's rerank API
|
|
259
|
-
throw new Error("CohereRelevanceScorer requires Cohere API integration. " +
|
|
260
|
-
"Install @cohere-ai/cohere and provide API key.");
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
/**
|
|
264
|
-
* Cross-encoder style reranker interface
|
|
265
|
-
* Placeholder for integration with cross-encoder models
|
|
266
|
-
*/
|
|
267
|
-
export class CrossEncoderReranker {
|
|
268
|
-
modelName;
|
|
269
|
-
constructor(modelName = "ms-marco-MiniLM-L-6-v2") {
|
|
270
|
-
this.modelName = modelName;
|
|
271
|
-
}
|
|
272
|
-
async rerank(_query, _documents) {
|
|
273
|
-
// Placeholder - would use cross-encoder model
|
|
274
|
-
throw new Error("CrossEncoderReranker requires a cross-encoder model. " +
|
|
275
|
-
"Consider using the LLM-based rerank function instead.");
|
|
276
|
-
}
|
|
277
|
-
}
|