@juspay/neurolink 9.31.2 → 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 +12 -0
- package/dist/auth/AuthProviderFactory.d.ts +71 -0
- package/dist/auth/AuthProviderFactory.js +111 -0
- package/dist/auth/AuthProviderRegistry.d.ts +33 -0
- package/dist/auth/AuthProviderRegistry.js +190 -0
- package/dist/auth/RequestContext.d.ts +23 -0
- package/dist/auth/RequestContext.js +78 -0
- package/dist/auth/anthropicOAuth.js +1 -1
- package/dist/auth/authContext.d.ts +198 -0
- package/dist/auth/authContext.js +314 -0
- package/dist/auth/errors.d.ts +63 -0
- package/dist/auth/errors.js +39 -0
- package/dist/auth/index.d.ts +20 -8
- package/dist/auth/index.js +35 -7
- package/dist/auth/middleware/AuthMiddleware.d.ts +181 -0
- package/dist/auth/middleware/AuthMiddleware.js +519 -0
- package/dist/auth/middleware/rateLimitByUser.d.ts +282 -0
- package/dist/auth/middleware/rateLimitByUser.js +554 -0
- package/dist/auth/providers/BaseAuthProvider.d.ts +259 -0
- package/dist/auth/providers/BaseAuthProvider.js +723 -0
- package/dist/auth/providers/CognitoProvider.d.ts +61 -0
- package/dist/auth/providers/CognitoProvider.js +304 -0
- package/dist/auth/providers/KeycloakProvider.d.ts +61 -0
- package/dist/auth/providers/KeycloakProvider.js +393 -0
- package/dist/auth/providers/auth0.d.ts +59 -0
- package/dist/auth/providers/auth0.js +274 -0
- package/dist/auth/providers/betterAuth.d.ts +51 -0
- package/dist/auth/providers/betterAuth.js +182 -0
- package/dist/auth/providers/clerk.d.ts +65 -0
- package/dist/auth/providers/clerk.js +317 -0
- package/dist/auth/providers/custom.d.ts +64 -0
- package/dist/auth/providers/custom.js +112 -0
- package/dist/auth/providers/firebase.d.ts +63 -0
- package/dist/auth/providers/firebase.js +226 -0
- package/dist/auth/providers/jwt.d.ts +68 -0
- package/dist/auth/providers/jwt.js +212 -0
- package/dist/auth/providers/oauth2.d.ts +73 -0
- package/dist/auth/providers/oauth2.js +303 -0
- package/dist/auth/providers/supabase.d.ts +63 -0
- package/dist/auth/providers/supabase.js +259 -0
- package/dist/auth/providers/workos.d.ts +61 -0
- package/dist/auth/providers/workos.js +284 -0
- package/dist/auth/serverBridge.d.ts +14 -0
- package/dist/auth/serverBridge.js +25 -0
- package/dist/auth/sessionManager.d.ts +142 -0
- package/dist/auth/sessionManager.js +437 -0
- package/dist/cli/commands/authProviders.d.ts +43 -0
- package/dist/cli/commands/authProviders.js +399 -0
- package/dist/cli/commands/proxy.js +18 -5
- package/dist/cli/factories/authCommandFactory.d.ts +23 -5
- package/dist/cli/factories/authCommandFactory.js +108 -5
- package/dist/cli/parser.js +1 -1
- package/dist/client/aiSdkAdapter.js +1 -1
- package/dist/client/index.js +138 -477
- package/dist/core/factory.js +0 -1
- package/dist/core/infrastructure/baseRegistry.d.ts +3 -1
- package/dist/core/infrastructure/baseRegistry.js +5 -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/index.d.ts +1 -0
- package/dist/index.js +25 -0
- package/dist/lib/auth/AuthProviderFactory.d.ts +71 -0
- package/dist/lib/auth/AuthProviderFactory.js +112 -0
- package/dist/lib/auth/AuthProviderRegistry.d.ts +33 -0
- package/dist/lib/auth/AuthProviderRegistry.js +191 -0
- package/dist/lib/auth/RequestContext.d.ts +23 -0
- package/dist/lib/auth/RequestContext.js +79 -0
- package/dist/lib/auth/authContext.d.ts +198 -0
- package/dist/lib/auth/authContext.js +315 -0
- package/dist/lib/auth/errors.d.ts +63 -0
- package/dist/lib/auth/errors.js +40 -0
- package/dist/lib/auth/index.d.ts +20 -8
- package/dist/lib/auth/index.js +35 -7
- package/dist/lib/auth/middleware/AuthMiddleware.d.ts +181 -0
- package/dist/lib/auth/middleware/AuthMiddleware.js +520 -0
- package/dist/lib/auth/middleware/rateLimitByUser.d.ts +282 -0
- package/dist/lib/auth/middleware/rateLimitByUser.js +555 -0
- package/dist/lib/auth/providers/BaseAuthProvider.d.ts +259 -0
- package/dist/lib/auth/providers/BaseAuthProvider.js +724 -0
- package/dist/lib/auth/providers/CognitoProvider.d.ts +61 -0
- package/dist/lib/auth/providers/CognitoProvider.js +305 -0
- package/dist/lib/auth/providers/KeycloakProvider.d.ts +61 -0
- package/dist/lib/auth/providers/KeycloakProvider.js +394 -0
- package/dist/lib/auth/providers/auth0.d.ts +59 -0
- package/dist/lib/auth/providers/auth0.js +275 -0
- package/dist/lib/auth/providers/betterAuth.d.ts +51 -0
- package/dist/lib/auth/providers/betterAuth.js +183 -0
- package/dist/lib/auth/providers/clerk.d.ts +65 -0
- package/dist/lib/auth/providers/clerk.js +318 -0
- package/dist/lib/auth/providers/custom.d.ts +64 -0
- package/dist/lib/auth/providers/custom.js +113 -0
- package/dist/lib/auth/providers/firebase.d.ts +63 -0
- package/dist/lib/auth/providers/firebase.js +227 -0
- package/dist/lib/auth/providers/jwt.d.ts +68 -0
- package/dist/lib/auth/providers/jwt.js +213 -0
- package/dist/lib/auth/providers/oauth2.d.ts +73 -0
- package/dist/lib/auth/providers/oauth2.js +304 -0
- package/dist/lib/auth/providers/supabase.d.ts +63 -0
- package/dist/lib/auth/providers/supabase.js +260 -0
- package/dist/lib/auth/providers/workos.d.ts +61 -0
- package/dist/lib/auth/providers/workos.js +285 -0
- package/dist/lib/auth/serverBridge.d.ts +14 -0
- package/dist/lib/auth/serverBridge.js +26 -0
- package/dist/lib/auth/sessionManager.d.ts +142 -0
- package/dist/lib/auth/sessionManager.js +438 -0
- package/dist/lib/core/infrastructure/baseRegistry.d.ts +3 -1
- package/dist/lib/core/infrastructure/baseRegistry.js +5 -1
- package/dist/lib/index.d.ts +1 -0
- package/dist/lib/index.js +25 -0
- package/dist/lib/mcp/toolRegistry.js +11 -1
- package/dist/lib/neurolink.d.ts +42 -1
- package/dist/lib/neurolink.js +218 -0
- package/dist/lib/rag/ChunkerRegistry.js +2 -2
- package/dist/lib/rag/metadata/MetadataExtractorRegistry.js +2 -2
- package/dist/lib/rag/reranker/RerankerRegistry.js +2 -2
- package/dist/lib/server/routes/agentRoutes.js +20 -2
- package/dist/lib/server/routes/claudeProxyRoutes.js +45 -9
- package/dist/lib/types/authTypes.d.ts +937 -1
- package/dist/lib/types/authTypes.js +2 -1
- package/dist/lib/types/configTypes.d.ts +46 -0
- package/dist/lib/types/generateTypes.d.ts +6 -0
- package/dist/lib/types/index.d.ts +1 -0
- package/dist/lib/types/streamTypes.d.ts +6 -0
- package/dist/mcp/elicitationProtocol.js +1 -1
- package/dist/mcp/servers/agent/directToolsServer.js +0 -1
- package/dist/mcp/toolRegistry.js +11 -1
- package/dist/neurolink.d.ts +42 -1
- package/dist/neurolink.js +218 -0
- package/dist/providers/azureOpenai.js +1 -1
- package/dist/providers/huggingFace.js +0 -1
- package/dist/providers/openaiCompatible.js +0 -1
- package/dist/rag/ChunkerRegistry.js +2 -2
- package/dist/rag/metadata/MetadataExtractorRegistry.js +2 -2
- package/dist/rag/reranker/RerankerRegistry.js +2 -2
- package/dist/sdk/toolRegistration.js +0 -1
- package/dist/server/openapi/generator.js +1 -1
- package/dist/server/routes/agentRoutes.js +20 -2
- package/dist/server/routes/claudeProxyRoutes.js +45 -9
- package/dist/types/authTypes.d.ts +937 -1
- package/dist/types/authTypes.js +2 -1
- package/dist/types/configTypes.d.ts +46 -0
- package/dist/types/configTypes.js +0 -5
- package/dist/types/generateTypes.d.ts +6 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/modelTypes.js +0 -1
- package/dist/types/streamTypes.d.ts +6 -0
- 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 +3 -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/anthropicOAuth.js +0 -974
- 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 -49
- 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 -719
- 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 -8015
- 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 -171
- 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 -8
- 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,362 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Metadata Extractor Registry
|
|
3
|
-
*
|
|
4
|
-
* Centralized registry for all metadata extractor 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 { MetadataExtractionError, RAGErrorCodes } from "../errors/RAGError.js";
|
|
10
|
-
/**
|
|
11
|
-
* Default metadata extractor metadata entries
|
|
12
|
-
*/
|
|
13
|
-
const DEFAULT_EXTRACTOR_METADATA = {
|
|
14
|
-
llm: {
|
|
15
|
-
description: "Full LLM-powered metadata extraction supporting all extraction types",
|
|
16
|
-
defaultConfig: {
|
|
17
|
-
provider: "openai",
|
|
18
|
-
modelName: "gpt-4o-mini",
|
|
19
|
-
temperature: 0.3,
|
|
20
|
-
},
|
|
21
|
-
supportedOptions: [
|
|
22
|
-
"provider",
|
|
23
|
-
"modelName",
|
|
24
|
-
"promptTemplate",
|
|
25
|
-
"maxTokens",
|
|
26
|
-
"temperature",
|
|
27
|
-
],
|
|
28
|
-
useCases: [
|
|
29
|
-
"Comprehensive metadata extraction",
|
|
30
|
-
"Multi-type extraction in single pass",
|
|
31
|
-
"Custom schema extraction",
|
|
32
|
-
],
|
|
33
|
-
aliases: ["full", "comprehensive", "all"],
|
|
34
|
-
requiresModel: true,
|
|
35
|
-
extractionTypes: ["title", "summary", "keywords", "questions", "custom"],
|
|
36
|
-
},
|
|
37
|
-
title: {
|
|
38
|
-
description: "Extracts concise, descriptive titles from document content",
|
|
39
|
-
defaultConfig: {
|
|
40
|
-
provider: "openai",
|
|
41
|
-
modelName: "gpt-4o-mini",
|
|
42
|
-
maxTokens: 100,
|
|
43
|
-
},
|
|
44
|
-
supportedOptions: ["provider", "modelName", "promptTemplate", "maxTokens"],
|
|
45
|
-
useCases: [
|
|
46
|
-
"Document indexing",
|
|
47
|
-
"Content organization",
|
|
48
|
-
"Navigation systems",
|
|
49
|
-
],
|
|
50
|
-
aliases: ["header", "heading"],
|
|
51
|
-
requiresModel: true,
|
|
52
|
-
extractionTypes: ["title"],
|
|
53
|
-
},
|
|
54
|
-
summary: {
|
|
55
|
-
description: "Generates concise summaries of document chunks",
|
|
56
|
-
defaultConfig: {
|
|
57
|
-
provider: "openai",
|
|
58
|
-
modelName: "gpt-4o-mini",
|
|
59
|
-
maxTokens: 200,
|
|
60
|
-
},
|
|
61
|
-
supportedOptions: [
|
|
62
|
-
"provider",
|
|
63
|
-
"modelName",
|
|
64
|
-
"promptTemplate",
|
|
65
|
-
"maxTokens",
|
|
66
|
-
"maxWords",
|
|
67
|
-
],
|
|
68
|
-
useCases: [
|
|
69
|
-
"Document previews",
|
|
70
|
-
"Search result snippets",
|
|
71
|
-
"Content condensation",
|
|
72
|
-
],
|
|
73
|
-
aliases: ["summarize", "abstract"],
|
|
74
|
-
requiresModel: true,
|
|
75
|
-
extractionTypes: ["summary"],
|
|
76
|
-
},
|
|
77
|
-
keywords: {
|
|
78
|
-
description: "Extracts key terms and phrases from content",
|
|
79
|
-
defaultConfig: {
|
|
80
|
-
provider: "openai",
|
|
81
|
-
modelName: "gpt-4o-mini",
|
|
82
|
-
maxTokens: 100,
|
|
83
|
-
},
|
|
84
|
-
supportedOptions: [
|
|
85
|
-
"provider",
|
|
86
|
-
"modelName",
|
|
87
|
-
"promptTemplate",
|
|
88
|
-
"maxKeywords",
|
|
89
|
-
],
|
|
90
|
-
useCases: ["Tag generation", "Topic modeling", "Search optimization"],
|
|
91
|
-
aliases: ["tags", "terms", "keyphrase"],
|
|
92
|
-
requiresModel: true,
|
|
93
|
-
extractionTypes: ["keywords"],
|
|
94
|
-
},
|
|
95
|
-
questions: {
|
|
96
|
-
description: "Generates Q&A pairs from content for training or FAQs",
|
|
97
|
-
defaultConfig: {
|
|
98
|
-
provider: "openai",
|
|
99
|
-
modelName: "gpt-4o-mini",
|
|
100
|
-
maxTokens: 500,
|
|
101
|
-
},
|
|
102
|
-
supportedOptions: [
|
|
103
|
-
"provider",
|
|
104
|
-
"modelName",
|
|
105
|
-
"promptTemplate",
|
|
106
|
-
"numQuestions",
|
|
107
|
-
"includeAnswers",
|
|
108
|
-
],
|
|
109
|
-
useCases: [
|
|
110
|
-
"FAQ generation",
|
|
111
|
-
"Training data creation",
|
|
112
|
-
"Knowledge base building",
|
|
113
|
-
],
|
|
114
|
-
aliases: ["qa", "faq", "questions-answers"],
|
|
115
|
-
requiresModel: true,
|
|
116
|
-
extractionTypes: ["questions"],
|
|
117
|
-
},
|
|
118
|
-
custom: {
|
|
119
|
-
description: "Extracts structured data according to custom schema",
|
|
120
|
-
defaultConfig: {
|
|
121
|
-
provider: "openai",
|
|
122
|
-
modelName: "gpt-4o-mini",
|
|
123
|
-
maxTokens: 500,
|
|
124
|
-
},
|
|
125
|
-
supportedOptions: [
|
|
126
|
-
"provider",
|
|
127
|
-
"modelName",
|
|
128
|
-
"promptTemplate",
|
|
129
|
-
"schema",
|
|
130
|
-
"description",
|
|
131
|
-
],
|
|
132
|
-
useCases: [
|
|
133
|
-
"Structured data extraction",
|
|
134
|
-
"Entity extraction",
|
|
135
|
-
"Custom field extraction",
|
|
136
|
-
],
|
|
137
|
-
aliases: ["schema", "structured", "entity"],
|
|
138
|
-
requiresModel: true,
|
|
139
|
-
extractionTypes: ["custom"],
|
|
140
|
-
},
|
|
141
|
-
composite: {
|
|
142
|
-
description: "Combines multiple extraction types in a single pass",
|
|
143
|
-
defaultConfig: {
|
|
144
|
-
provider: "openai",
|
|
145
|
-
modelName: "gpt-4o-mini",
|
|
146
|
-
},
|
|
147
|
-
supportedOptions: ["provider", "modelName", "extractors"],
|
|
148
|
-
useCases: [
|
|
149
|
-
"Multi-field extraction",
|
|
150
|
-
"Complete document processing",
|
|
151
|
-
"Pipeline integration",
|
|
152
|
-
],
|
|
153
|
-
aliases: ["multi", "combined", "batch"],
|
|
154
|
-
requiresModel: true,
|
|
155
|
-
extractionTypes: ["title", "summary", "keywords", "questions", "custom"],
|
|
156
|
-
},
|
|
157
|
-
};
|
|
158
|
-
/**
|
|
159
|
-
* Metadata Extractor Registry
|
|
160
|
-
*
|
|
161
|
-
* Manages registration and discovery of all metadata extractor implementations.
|
|
162
|
-
* Extends BaseRegistry for consistent lifecycle management.
|
|
163
|
-
*/
|
|
164
|
-
export class MetadataExtractorRegistry extends BaseRegistry {
|
|
165
|
-
static instance = null;
|
|
166
|
-
aliasMap = new Map();
|
|
167
|
-
constructor() {
|
|
168
|
-
super();
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* Get singleton instance
|
|
172
|
-
*/
|
|
173
|
-
static getInstance() {
|
|
174
|
-
if (!MetadataExtractorRegistry.instance) {
|
|
175
|
-
MetadataExtractorRegistry.instance = new MetadataExtractorRegistry();
|
|
176
|
-
}
|
|
177
|
-
return MetadataExtractorRegistry.instance;
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* Reset singleton (for testing)
|
|
181
|
-
*/
|
|
182
|
-
static resetInstance() {
|
|
183
|
-
if (MetadataExtractorRegistry.instance) {
|
|
184
|
-
MetadataExtractorRegistry.instance.clear();
|
|
185
|
-
MetadataExtractorRegistry.instance = null;
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
/**
|
|
189
|
-
* Register all built-in extractors
|
|
190
|
-
*/
|
|
191
|
-
async registerAll() {
|
|
192
|
-
const { LLMMetadataExtractor } = await import("./metadataExtractor.js");
|
|
193
|
-
// Register all extractor types
|
|
194
|
-
for (const [type, metadata] of Object.entries(DEFAULT_EXTRACTOR_METADATA)) {
|
|
195
|
-
this.registerExtractor(type, async () => this.createExtractorInstance(LLMMetadataExtractor, type), metadata);
|
|
196
|
-
}
|
|
197
|
-
logger.debug(`[MetadataExtractorRegistry] Registered ${this.items.size} extractor types`);
|
|
198
|
-
}
|
|
199
|
-
/**
|
|
200
|
-
* Create extractor instance wrapper
|
|
201
|
-
*/
|
|
202
|
-
createExtractorInstance(ExtractorClass, type) {
|
|
203
|
-
const extractor = new ExtractorClass();
|
|
204
|
-
return {
|
|
205
|
-
type,
|
|
206
|
-
async extract(chunks, params) {
|
|
207
|
-
return extractor.extract(chunks, params ?? {});
|
|
208
|
-
},
|
|
209
|
-
};
|
|
210
|
-
}
|
|
211
|
-
/**
|
|
212
|
-
* Register an extractor with aliases
|
|
213
|
-
*/
|
|
214
|
-
registerExtractor(type, factory, metadata) {
|
|
215
|
-
this.register(type, factory, metadata);
|
|
216
|
-
// Register aliases
|
|
217
|
-
for (const alias of metadata.aliases) {
|
|
218
|
-
this.aliasMap.set(alias.toLowerCase(), type);
|
|
219
|
-
logger.debug(`[MetadataExtractorRegistry] Registered alias '${alias}' -> '${type}'`);
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
/**
|
|
223
|
-
* Resolve type from alias
|
|
224
|
-
*/
|
|
225
|
-
resolveType(nameOrAlias) {
|
|
226
|
-
const lower = nameOrAlias.toLowerCase();
|
|
227
|
-
// Check if it's a direct type
|
|
228
|
-
if (this.items.has(lower)) {
|
|
229
|
-
return lower;
|
|
230
|
-
}
|
|
231
|
-
// Check aliases
|
|
232
|
-
const resolved = this.aliasMap.get(lower);
|
|
233
|
-
if (resolved) {
|
|
234
|
-
return resolved;
|
|
235
|
-
}
|
|
236
|
-
throw new MetadataExtractionError(`Unknown metadata extractor type: '${nameOrAlias}'. Available types: ${this.getAvailableExtractors().join(", ")}`, {
|
|
237
|
-
code: RAGErrorCodes.METADATA_EXTRACTOR_NOT_FOUND,
|
|
238
|
-
extractorType: nameOrAlias,
|
|
239
|
-
details: {
|
|
240
|
-
requestedType: nameOrAlias,
|
|
241
|
-
availableTypes: this.getAvailableExtractors(),
|
|
242
|
-
},
|
|
243
|
-
});
|
|
244
|
-
}
|
|
245
|
-
/**
|
|
246
|
-
* Get an extractor by type or alias
|
|
247
|
-
*/
|
|
248
|
-
async getExtractor(typeOrAlias) {
|
|
249
|
-
await this.ensureInitialized();
|
|
250
|
-
const type = this.resolveType(typeOrAlias);
|
|
251
|
-
const extractor = await this.get(type);
|
|
252
|
-
if (!extractor) {
|
|
253
|
-
throw new MetadataExtractionError(`Metadata extractor not found: ${type}`, {
|
|
254
|
-
code: RAGErrorCodes.METADATA_EXTRACTOR_NOT_FOUND,
|
|
255
|
-
extractorType: type,
|
|
256
|
-
details: { type },
|
|
257
|
-
});
|
|
258
|
-
}
|
|
259
|
-
return extractor;
|
|
260
|
-
}
|
|
261
|
-
/**
|
|
262
|
-
* Get list of available extractor types
|
|
263
|
-
*/
|
|
264
|
-
getAvailableExtractors() {
|
|
265
|
-
return this.list().map((item) => item.id);
|
|
266
|
-
}
|
|
267
|
-
/**
|
|
268
|
-
* Get metadata for a specific extractor
|
|
269
|
-
*/
|
|
270
|
-
getExtractorMetadata(typeOrAlias) {
|
|
271
|
-
const type = this.resolveType(typeOrAlias);
|
|
272
|
-
const entry = this.list().find((item) => item.id === type);
|
|
273
|
-
return entry?.metadata;
|
|
274
|
-
}
|
|
275
|
-
/**
|
|
276
|
-
* Get all aliases for a type
|
|
277
|
-
*/
|
|
278
|
-
getAliasesForType(type) {
|
|
279
|
-
const metadata = DEFAULT_EXTRACTOR_METADATA[type];
|
|
280
|
-
return metadata?.aliases ?? [];
|
|
281
|
-
}
|
|
282
|
-
/**
|
|
283
|
-
* Get all registered aliases
|
|
284
|
-
*/
|
|
285
|
-
getAllAliases() {
|
|
286
|
-
return new Map(this.aliasMap);
|
|
287
|
-
}
|
|
288
|
-
/**
|
|
289
|
-
* Check if a type or alias exists
|
|
290
|
-
*/
|
|
291
|
-
hasExtractor(typeOrAlias) {
|
|
292
|
-
try {
|
|
293
|
-
this.resolveType(typeOrAlias);
|
|
294
|
-
return true;
|
|
295
|
-
}
|
|
296
|
-
catch {
|
|
297
|
-
return false;
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
/**
|
|
301
|
-
* Get extractors by use case
|
|
302
|
-
*/
|
|
303
|
-
getExtractorsByUseCase(useCase) {
|
|
304
|
-
const matches = [];
|
|
305
|
-
const useCaseLower = useCase.toLowerCase();
|
|
306
|
-
for (const [type, metadata] of Object.entries(DEFAULT_EXTRACTOR_METADATA)) {
|
|
307
|
-
const hasMatchingUseCase = metadata.useCases.some((uc) => uc.toLowerCase().includes(useCaseLower));
|
|
308
|
-
if (hasMatchingUseCase) {
|
|
309
|
-
matches.push(type);
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
return matches;
|
|
313
|
-
}
|
|
314
|
-
/**
|
|
315
|
-
* Get extractors that can produce a specific extraction type
|
|
316
|
-
*/
|
|
317
|
-
getExtractorsByExtractionType(extractionType) {
|
|
318
|
-
const matches = [];
|
|
319
|
-
for (const [type, metadata] of Object.entries(DEFAULT_EXTRACTOR_METADATA)) {
|
|
320
|
-
if (metadata.extractionTypes.includes(extractionType)) {
|
|
321
|
-
matches.push(type);
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
return matches;
|
|
325
|
-
}
|
|
326
|
-
/**
|
|
327
|
-
* Get default configuration for an extractor
|
|
328
|
-
*/
|
|
329
|
-
getDefaultConfig(typeOrAlias) {
|
|
330
|
-
const metadata = this.getExtractorMetadata(typeOrAlias);
|
|
331
|
-
return metadata?.defaultConfig;
|
|
332
|
-
}
|
|
333
|
-
/**
|
|
334
|
-
* Clear the registry (also clears aliases)
|
|
335
|
-
*/
|
|
336
|
-
clear() {
|
|
337
|
-
super.clear();
|
|
338
|
-
this.aliasMap.clear();
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
/**
|
|
342
|
-
* Global metadata extractor registry singleton
|
|
343
|
-
*/
|
|
344
|
-
export const metadataExtractorRegistry = MetadataExtractorRegistry.getInstance();
|
|
345
|
-
/**
|
|
346
|
-
* Convenience function to get available extractors
|
|
347
|
-
*/
|
|
348
|
-
export function getAvailableExtractors() {
|
|
349
|
-
return metadataExtractorRegistry.getAvailableExtractors();
|
|
350
|
-
}
|
|
351
|
-
/**
|
|
352
|
-
* Convenience function to get extractor by type
|
|
353
|
-
*/
|
|
354
|
-
export async function getExtractor(typeOrAlias) {
|
|
355
|
-
return metadataExtractorRegistry.getExtractor(typeOrAlias);
|
|
356
|
-
}
|
|
357
|
-
/**
|
|
358
|
-
* Convenience function to get extractor metadata
|
|
359
|
-
*/
|
|
360
|
-
export function getRegisteredExtractorMetadata(typeOrAlias) {
|
|
361
|
-
return metadataExtractorRegistry.getExtractorMetadata(typeOrAlias);
|
|
362
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Metadata Extraction Module Exports
|
|
3
|
-
*/
|
|
4
|
-
// Factory pattern exports
|
|
5
|
-
export { createMetadataExtractor, getAvailableExtractorTypes, getExtractorDefaultConfig, getExtractorMetadata, MetadataExtractorFactory, metadataExtractorFactory, } from "./MetadataExtractorFactory.js";
|
|
6
|
-
// Registry pattern exports
|
|
7
|
-
export { getAvailableExtractors, getExtractor, getRegisteredExtractorMetadata, MetadataExtractorRegistry, metadataExtractorRegistry, } from "./MetadataExtractorRegistry.js";
|
|
8
|
-
// Core metadata extractor
|
|
9
|
-
export { extractMetadata, LLMMetadataExtractor } from "./metadataExtractor.js";
|
|
@@ -1,280 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* LLM-powered Metadata Extractor
|
|
3
|
-
*
|
|
4
|
-
* Extracts structured metadata from document chunks using language models.
|
|
5
|
-
* Supports title, summary, keywords, Q&A pairs, and custom schema extraction.
|
|
6
|
-
*/
|
|
7
|
-
import { ProviderFactory } from "../../factories/providerFactory.js";
|
|
8
|
-
import { logger } from "../../utils/logger.js";
|
|
9
|
-
/**
|
|
10
|
-
* Default prompts for metadata extraction
|
|
11
|
-
*/
|
|
12
|
-
const DEFAULT_PROMPTS = {
|
|
13
|
-
title: `Extract a concise, descriptive title for the following content.
|
|
14
|
-
Return only the title, nothing else.
|
|
15
|
-
|
|
16
|
-
Content:
|
|
17
|
-
{context}
|
|
18
|
-
|
|
19
|
-
Title:`,
|
|
20
|
-
summary: `Summarize the following content in {maxWords} words or less.
|
|
21
|
-
Focus on the key points and main ideas.
|
|
22
|
-
|
|
23
|
-
Content:
|
|
24
|
-
{context}
|
|
25
|
-
|
|
26
|
-
Summary:`,
|
|
27
|
-
keywords: `Extract the {maxKeywords} most important keywords or key phrases from the following content.
|
|
28
|
-
Return them as a comma-separated list.
|
|
29
|
-
|
|
30
|
-
Content:
|
|
31
|
-
{context}
|
|
32
|
-
|
|
33
|
-
Keywords:`,
|
|
34
|
-
questions: `Generate {numQuestions} questions that can be answered using the following content.
|
|
35
|
-
{answerInstruction}
|
|
36
|
-
|
|
37
|
-
Content:
|
|
38
|
-
{context}
|
|
39
|
-
|
|
40
|
-
Questions:`,
|
|
41
|
-
};
|
|
42
|
-
/**
|
|
43
|
-
* LLM-powered metadata extractor
|
|
44
|
-
* Extracts title, summary, keywords, Q&A pairs, and custom schema data
|
|
45
|
-
*/
|
|
46
|
-
export class LLMMetadataExtractor {
|
|
47
|
-
provider;
|
|
48
|
-
modelName;
|
|
49
|
-
constructor(options) {
|
|
50
|
-
this.provider = options?.provider || "openai";
|
|
51
|
-
this.modelName = options?.modelName || "gpt-4o-mini";
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Extract metadata from chunks based on configuration
|
|
55
|
-
* @param chunks - Array of chunks to extract metadata from
|
|
56
|
-
* @param params - Extraction parameters
|
|
57
|
-
* @returns Array of extraction results, one per chunk
|
|
58
|
-
*/
|
|
59
|
-
async extract(chunks, params) {
|
|
60
|
-
const results = [];
|
|
61
|
-
// Group chunks by documentId for title extraction
|
|
62
|
-
const chunksByDocument = this.groupByDocument(chunks);
|
|
63
|
-
// Cache titles by document to avoid re-extraction
|
|
64
|
-
const titleCache = new Map();
|
|
65
|
-
for (const chunk of chunks) {
|
|
66
|
-
const result = {};
|
|
67
|
-
try {
|
|
68
|
-
// Extract title (shared across chunks with same documentId)
|
|
69
|
-
if (params.title) {
|
|
70
|
-
const docId = chunk.metadata.documentId;
|
|
71
|
-
if (!titleCache.has(docId)) {
|
|
72
|
-
const titleConfig = typeof params.title === "boolean" ? {} : params.title;
|
|
73
|
-
const title = await this.extractTitle(chunksByDocument.get(docId) || [chunk], titleConfig);
|
|
74
|
-
titleCache.set(docId, title);
|
|
75
|
-
}
|
|
76
|
-
result.title = titleCache.get(docId);
|
|
77
|
-
}
|
|
78
|
-
// Extract summary
|
|
79
|
-
if (params.summary) {
|
|
80
|
-
const summaryConfig = typeof params.summary === "boolean" ? {} : params.summary;
|
|
81
|
-
result.summary = await this.extractSummary(chunk, summaryConfig);
|
|
82
|
-
}
|
|
83
|
-
// Extract keywords
|
|
84
|
-
if (params.keywords) {
|
|
85
|
-
const keywordConfig = typeof params.keywords === "boolean" ? {} : params.keywords;
|
|
86
|
-
result.keywords = await this.extractKeywords(chunk, keywordConfig);
|
|
87
|
-
}
|
|
88
|
-
// Generate Q&A pairs
|
|
89
|
-
if (params.questions) {
|
|
90
|
-
const questionConfig = typeof params.questions === "boolean" ? {} : params.questions;
|
|
91
|
-
result.questions = await this.extractQuestions(chunk, questionConfig);
|
|
92
|
-
}
|
|
93
|
-
// Custom schema extraction
|
|
94
|
-
if (params.custom) {
|
|
95
|
-
result.custom = await this.extractCustom(chunk, params.custom);
|
|
96
|
-
}
|
|
97
|
-
results.push(result);
|
|
98
|
-
}
|
|
99
|
-
catch (error) {
|
|
100
|
-
logger.error("[MetadataExtractor] Extraction failed for chunk", {
|
|
101
|
-
chunkId: chunk.id,
|
|
102
|
-
error: error instanceof Error ? error.message : String(error),
|
|
103
|
-
});
|
|
104
|
-
results.push(result);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
return results;
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* Group chunks by document ID
|
|
111
|
-
*/
|
|
112
|
-
groupByDocument(chunks) {
|
|
113
|
-
const groups = new Map();
|
|
114
|
-
for (const chunk of chunks) {
|
|
115
|
-
const docId = chunk.metadata.documentId;
|
|
116
|
-
const group = groups.get(docId);
|
|
117
|
-
if (group) {
|
|
118
|
-
group.push(chunk);
|
|
119
|
-
}
|
|
120
|
-
else {
|
|
121
|
-
groups.set(docId, [chunk]);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
return groups;
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Extract title from document chunks
|
|
128
|
-
*/
|
|
129
|
-
async extractTitle(chunks, config) {
|
|
130
|
-
const { nodes = 3, promptTemplate = DEFAULT_PROMPTS.title } = config;
|
|
131
|
-
// Use first N chunks for title extraction
|
|
132
|
-
const relevantChunks = chunks.slice(0, nodes);
|
|
133
|
-
const context = relevantChunks.map((c) => c.text).join("\n\n");
|
|
134
|
-
const prompt = promptTemplate.replace("{context}", context);
|
|
135
|
-
const response = await this.callLLM(prompt, config);
|
|
136
|
-
return response.trim();
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* Extract summary from a chunk
|
|
140
|
-
*/
|
|
141
|
-
async extractSummary(chunk, config) {
|
|
142
|
-
const { maxWords = 100, promptTemplate = DEFAULT_PROMPTS.summary } = config;
|
|
143
|
-
const prompt = promptTemplate
|
|
144
|
-
.replace("{context}", chunk.text)
|
|
145
|
-
.replace("{maxWords}", String(maxWords));
|
|
146
|
-
const response = await this.callLLM(prompt, config);
|
|
147
|
-
return response.trim();
|
|
148
|
-
}
|
|
149
|
-
/**
|
|
150
|
-
* Extract keywords from a chunk
|
|
151
|
-
*/
|
|
152
|
-
async extractKeywords(chunk, config) {
|
|
153
|
-
const { maxKeywords = 10, promptTemplate = DEFAULT_PROMPTS.keywords } = config;
|
|
154
|
-
const prompt = promptTemplate
|
|
155
|
-
.replace("{context}", chunk.text)
|
|
156
|
-
.replace("{maxKeywords}", String(maxKeywords));
|
|
157
|
-
const response = await this.callLLM(prompt, config);
|
|
158
|
-
// Parse comma-separated keywords
|
|
159
|
-
return response
|
|
160
|
-
.split(",")
|
|
161
|
-
.map((k) => k.trim())
|
|
162
|
-
.filter((k) => k.length > 0)
|
|
163
|
-
.slice(0, maxKeywords);
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* Extract Q&A pairs from a chunk
|
|
167
|
-
*/
|
|
168
|
-
async extractQuestions(chunk, config) {
|
|
169
|
-
const { numQuestions = 3, includeAnswers = true, promptTemplate = DEFAULT_PROMPTS.questions, } = config;
|
|
170
|
-
const answerInstruction = includeAnswers
|
|
171
|
-
? "For each question, also provide a brief answer based on the content."
|
|
172
|
-
: "Return only the questions.";
|
|
173
|
-
const prompt = promptTemplate
|
|
174
|
-
.replace("{context}", chunk.text)
|
|
175
|
-
.replace("{numQuestions}", String(numQuestions))
|
|
176
|
-
.replace("{answerInstruction}", answerInstruction);
|
|
177
|
-
const response = await this.callLLM(prompt, config);
|
|
178
|
-
// Parse Q&A pairs from response
|
|
179
|
-
return this.parseQAPairs(response, includeAnswers);
|
|
180
|
-
}
|
|
181
|
-
/**
|
|
182
|
-
* Extract custom schema data from a chunk
|
|
183
|
-
*/
|
|
184
|
-
async extractCustom(chunk, config) {
|
|
185
|
-
const { description, promptTemplate } = config;
|
|
186
|
-
// Build extraction prompt
|
|
187
|
-
const prompt = promptTemplate ||
|
|
188
|
-
`Extract the following information from the content:
|
|
189
|
-
${description || "Extract structured data according to the schema."}
|
|
190
|
-
|
|
191
|
-
Content:
|
|
192
|
-
${chunk.text}
|
|
193
|
-
|
|
194
|
-
Return the extracted data as JSON.`;
|
|
195
|
-
const response = await this.callLLM(prompt, config);
|
|
196
|
-
try {
|
|
197
|
-
// Try to parse as JSON
|
|
198
|
-
const jsonMatch = response.match(/\{[\s\S]*\}/);
|
|
199
|
-
if (jsonMatch) {
|
|
200
|
-
return JSON.parse(jsonMatch[0]);
|
|
201
|
-
}
|
|
202
|
-
return JSON.parse(response);
|
|
203
|
-
}
|
|
204
|
-
catch {
|
|
205
|
-
logger.warn("[MetadataExtractor] Failed to parse custom extraction as JSON");
|
|
206
|
-
return { raw: response };
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
/**
|
|
210
|
-
* Parse Q&A pairs from LLM response
|
|
211
|
-
*/
|
|
212
|
-
parseQAPairs(response, includeAnswers) {
|
|
213
|
-
const pairs = [];
|
|
214
|
-
// Try to parse numbered questions
|
|
215
|
-
const lines = response.split("\n").filter((l) => l.trim());
|
|
216
|
-
let currentQuestion = null;
|
|
217
|
-
let currentAnswer = null;
|
|
218
|
-
for (const line of lines) {
|
|
219
|
-
const trimmed = line.trim();
|
|
220
|
-
// Check if line is a question (starts with number or Q:)
|
|
221
|
-
if (/^\d+[.):]\s*/.test(trimmed) || /^Q[.:]?\s*/i.test(trimmed)) {
|
|
222
|
-
// Save previous Q&A pair
|
|
223
|
-
if (currentQuestion) {
|
|
224
|
-
pairs.push({
|
|
225
|
-
question: currentQuestion,
|
|
226
|
-
...(includeAnswers && currentAnswer
|
|
227
|
-
? { answer: currentAnswer }
|
|
228
|
-
: {}),
|
|
229
|
-
});
|
|
230
|
-
}
|
|
231
|
-
currentQuestion = trimmed
|
|
232
|
-
.replace(/^\d+[.):]\s*/, "")
|
|
233
|
-
.replace(/^Q[.:]?\s*/i, "");
|
|
234
|
-
currentAnswer = null;
|
|
235
|
-
}
|
|
236
|
-
else if (/^A[.:]?\s*/i.test(trimmed) && currentQuestion) {
|
|
237
|
-
currentAnswer = trimmed.replace(/^A[.:]?\s*/i, "");
|
|
238
|
-
}
|
|
239
|
-
else if (currentQuestion && !currentAnswer) {
|
|
240
|
-
// Continuation of question
|
|
241
|
-
currentQuestion += " " + trimmed;
|
|
242
|
-
}
|
|
243
|
-
else if (currentAnswer) {
|
|
244
|
-
// Continuation of answer
|
|
245
|
-
currentAnswer += " " + trimmed;
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
// Don't forget the last pair
|
|
249
|
-
if (currentQuestion) {
|
|
250
|
-
pairs.push({
|
|
251
|
-
question: currentQuestion,
|
|
252
|
-
...(includeAnswers && currentAnswer ? { answer: currentAnswer } : {}),
|
|
253
|
-
});
|
|
254
|
-
}
|
|
255
|
-
return pairs;
|
|
256
|
-
}
|
|
257
|
-
/**
|
|
258
|
-
* Call the LLM with a prompt
|
|
259
|
-
*/
|
|
260
|
-
async callLLM(prompt, config) {
|
|
261
|
-
const provider = await ProviderFactory.createProvider(config.provider || this.provider, config.modelName || this.modelName);
|
|
262
|
-
const result = await provider.generate({
|
|
263
|
-
prompt,
|
|
264
|
-
maxTokens: config.maxTokens || 500,
|
|
265
|
-
temperature: config.temperature || 0.3,
|
|
266
|
-
});
|
|
267
|
-
return result?.content || "";
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
/**
|
|
271
|
-
* Convenience function to extract metadata from chunks
|
|
272
|
-
* @param chunks - Chunks to process
|
|
273
|
-
* @param params - Extraction parameters
|
|
274
|
-
* @param options - Extractor options
|
|
275
|
-
* @returns Extraction results
|
|
276
|
-
*/
|
|
277
|
-
export async function extractMetadata(chunks, params, options) {
|
|
278
|
-
const extractor = new LLMMetadataExtractor(options);
|
|
279
|
-
return extractor.extract(chunks, params);
|
|
280
|
-
}
|