@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,225 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* workflow/core/responseConditioner.ts
|
|
3
|
-
* Response conditioning and synthesis
|
|
4
|
-
*
|
|
5
|
-
* Uses judge feedback and ensemble responses to synthesize an improved final response.
|
|
6
|
-
* Combines strengths from multiple responses based on evaluation insights.
|
|
7
|
-
*/
|
|
8
|
-
import { logger } from "../../utils/logger.js";
|
|
9
|
-
import { AIProviderFactory } from "../../core/factory.js";
|
|
10
|
-
const functionTag = "ResponseConditioner";
|
|
11
|
-
// ============================================================================
|
|
12
|
-
// CONDITIONING FUNCTIONS
|
|
13
|
-
// ============================================================================
|
|
14
|
-
/**
|
|
15
|
-
* Condition response by synthesizing improved version using judge feedback
|
|
16
|
-
*
|
|
17
|
-
* @param options - Conditioning options including all responses and judge feedback
|
|
18
|
-
* @returns Conditioned result with synthesized improved content
|
|
19
|
-
*/
|
|
20
|
-
export async function conditionResponse(options) {
|
|
21
|
-
const startTime = Date.now();
|
|
22
|
-
const { content, selectedResponse, allResponses, judgeScores, config, originalPrompt, } = options;
|
|
23
|
-
logger.debug(`[${functionTag}] Conditioning response with synthesis`, {
|
|
24
|
-
originalLength: content.length,
|
|
25
|
-
provider: selectedResponse.provider,
|
|
26
|
-
model: selectedResponse.model,
|
|
27
|
-
hasConfig: !!config,
|
|
28
|
-
numResponses: allResponses?.length || 0,
|
|
29
|
-
});
|
|
30
|
-
// Check if conditioning is enabled
|
|
31
|
-
if (!config || !config.useConfidence) {
|
|
32
|
-
logger.debug(`[${functionTag}] Conditioning disabled, returning original`);
|
|
33
|
-
return {
|
|
34
|
-
content,
|
|
35
|
-
conditioningTime: Date.now() - startTime,
|
|
36
|
-
metadata: {
|
|
37
|
-
conditioningApplied: false,
|
|
38
|
-
originalLength: content.length,
|
|
39
|
-
finalLength: content.length,
|
|
40
|
-
},
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
// If synthesis model not configured, fall back to original with metadata
|
|
44
|
-
if (!config.synthesisModel) {
|
|
45
|
-
logger.debug(`[${functionTag}] No synthesis model configured, returning original with metadata`);
|
|
46
|
-
return addMetadataOnly(content, selectedResponse, judgeScores, config, startTime);
|
|
47
|
-
}
|
|
48
|
-
try {
|
|
49
|
-
// Synthesize improved response using LLM
|
|
50
|
-
const synthesizedContent = await synthesizeImprovedResponse(content, allResponses, judgeScores, originalPrompt, config);
|
|
51
|
-
const conditioningTime = Date.now() - startTime;
|
|
52
|
-
logger.debug(`[${functionTag}] Response synthesized successfully`, {
|
|
53
|
-
conditioningTime,
|
|
54
|
-
originalLength: content.length,
|
|
55
|
-
finalLength: synthesizedContent.length,
|
|
56
|
-
improvement: synthesizedContent.length - content.length,
|
|
57
|
-
});
|
|
58
|
-
return {
|
|
59
|
-
content: synthesizedContent,
|
|
60
|
-
conditioningTime,
|
|
61
|
-
metadata: {
|
|
62
|
-
conditioningApplied: true,
|
|
63
|
-
originalLength: content.length,
|
|
64
|
-
finalLength: synthesizedContent.length,
|
|
65
|
-
confidenceStatementAdded: false,
|
|
66
|
-
modelAttributionAdded: false,
|
|
67
|
-
executionTimeAdded: false,
|
|
68
|
-
synthesisApplied: true,
|
|
69
|
-
},
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
catch (error) {
|
|
73
|
-
logger.warn(`[${functionTag}] Synthesis failed, falling back to original`, {
|
|
74
|
-
error: error instanceof Error ? error.message : String(error),
|
|
75
|
-
});
|
|
76
|
-
// Fall back to original with metadata
|
|
77
|
-
return addMetadataOnly(content, selectedResponse, judgeScores, config, startTime);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Check if conditioning is enabled
|
|
82
|
-
* @param config - Conditioning configuration
|
|
83
|
-
* @returns True if conditioning should be applied
|
|
84
|
-
*/
|
|
85
|
-
export function isConditioningEnabled(config) {
|
|
86
|
-
return config?.useConfidence === true;
|
|
87
|
-
}
|
|
88
|
-
// ============================================================================
|
|
89
|
-
// SYNTHESIS FUNCTIONS
|
|
90
|
-
// ============================================================================
|
|
91
|
-
/**
|
|
92
|
-
* Synthesize improved response using judge feedback and all ensemble responses
|
|
93
|
-
*/
|
|
94
|
-
async function synthesizeImprovedResponse(bestContent, allResponses, judgeScores, originalPrompt, config) {
|
|
95
|
-
const reasoning = judgeScores?.reasoning || "No specific feedback available";
|
|
96
|
-
// Build synthesis prompt
|
|
97
|
-
const synthesisPrompt = `You are a response synthesis expert. Your task is to create an improved, higher-quality response by combining the best elements from multiple AI-generated responses.
|
|
98
|
-
|
|
99
|
-
ORIGINAL USER PROMPT:
|
|
100
|
-
${originalPrompt || "Not provided"}
|
|
101
|
-
|
|
102
|
-
JUDGE'S EVALUATION:
|
|
103
|
-
${reasoning}
|
|
104
|
-
|
|
105
|
-
AVAILABLE RESPONSES:
|
|
106
|
-
${allResponses
|
|
107
|
-
.filter((r) => r.status === "success" && r.content)
|
|
108
|
-
.map((r, i) => `
|
|
109
|
-
Response ${i + 1} (${r.provider}/${r.model}):
|
|
110
|
-
${r.content}
|
|
111
|
-
`)
|
|
112
|
-
.join("\n---\n")}
|
|
113
|
-
|
|
114
|
-
BEST RESPONSE (Selected by Judge):
|
|
115
|
-
${bestContent}
|
|
116
|
-
|
|
117
|
-
YOUR TASK:
|
|
118
|
-
Synthesize an improved final response that:
|
|
119
|
-
1. Incorporates the judge's feedback and addresses any identified weaknesses
|
|
120
|
-
2. Combines the strongest elements from all responses
|
|
121
|
-
3. Maintains accuracy and technical correctness
|
|
122
|
-
4. Improves clarity, completeness, and overall quality
|
|
123
|
-
5. Maintains the same tone and format as the original responses
|
|
124
|
-
6. Does NOT add meta-commentary, disclaimers, or explanatory notes
|
|
125
|
-
7. Provides a direct, polished answer to the user's original question
|
|
126
|
-
|
|
127
|
-
Output ONLY the synthesized response, nothing else.`;
|
|
128
|
-
logger.debug(`[${functionTag}] Calling synthesis model`, {
|
|
129
|
-
model: config?.synthesisModel?.model || "default",
|
|
130
|
-
provider: config?.synthesisModel?.provider || "default",
|
|
131
|
-
});
|
|
132
|
-
// Create provider for synthesis using AIProviderFactory
|
|
133
|
-
const synthesisProvider = config?.synthesisModel?.provider || "azure";
|
|
134
|
-
const synthesisModel = config?.synthesisModel?.model || "gpt-4o";
|
|
135
|
-
const provider = await AIProviderFactory.createProvider(synthesisProvider, synthesisModel);
|
|
136
|
-
// Generate improved response
|
|
137
|
-
const result = await provider.generate({
|
|
138
|
-
prompt: synthesisPrompt,
|
|
139
|
-
temperature: config?.synthesisModel?.temperature || 0.3,
|
|
140
|
-
maxTokens: 2000,
|
|
141
|
-
timeout: 30000,
|
|
142
|
-
});
|
|
143
|
-
if (!result || !result.content) {
|
|
144
|
-
throw new Error("Synthesis model returned empty response");
|
|
145
|
-
}
|
|
146
|
-
return result.content.trim();
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Fallback: Add metadata only (original behavior)
|
|
150
|
-
*/
|
|
151
|
-
function addMetadataOnly(content, selectedResponse, judgeScores, config, startTime) {
|
|
152
|
-
let conditionedContent = content;
|
|
153
|
-
// Add confidence statement if enabled
|
|
154
|
-
if (config.addConfidenceStatement && judgeScores) {
|
|
155
|
-
const confidenceLevel = getConfidenceLevel(judgeScores.confidenceInJudgment || 0.5, config);
|
|
156
|
-
conditionedContent = addConfidenceStatement(conditionedContent, confidenceLevel, judgeScores.confidenceInJudgment || 0.5);
|
|
157
|
-
}
|
|
158
|
-
// Add model attribution if enabled
|
|
159
|
-
if (config.addModelAttribution) {
|
|
160
|
-
conditionedContent = addModelAttribution(conditionedContent, selectedResponse.provider, selectedResponse.model, judgeScores);
|
|
161
|
-
}
|
|
162
|
-
// Add execution time if enabled
|
|
163
|
-
if (config.addExecutionTime) {
|
|
164
|
-
conditionedContent = addExecutionMetrics(conditionedContent, selectedResponse.responseTime);
|
|
165
|
-
}
|
|
166
|
-
const conditioningTime = Date.now() - startTime;
|
|
167
|
-
return {
|
|
168
|
-
content: conditionedContent,
|
|
169
|
-
conditioningTime,
|
|
170
|
-
metadata: {
|
|
171
|
-
conditioningApplied: true,
|
|
172
|
-
originalLength: content.length,
|
|
173
|
-
finalLength: conditionedContent.length,
|
|
174
|
-
confidenceStatementAdded: config.addConfidenceStatement,
|
|
175
|
-
modelAttributionAdded: config.addModelAttribution,
|
|
176
|
-
executionTimeAdded: config.addExecutionTime,
|
|
177
|
-
},
|
|
178
|
-
};
|
|
179
|
-
}
|
|
180
|
-
// ============================================================================
|
|
181
|
-
// HELPER FUNCTIONS
|
|
182
|
-
// ============================================================================
|
|
183
|
-
/**
|
|
184
|
-
* Determine confidence level from score
|
|
185
|
-
*/
|
|
186
|
-
function getConfidenceLevel(confidence, config) {
|
|
187
|
-
const thresholds = config.confidenceThresholds || {
|
|
188
|
-
high: 0.8,
|
|
189
|
-
medium: 0.5,
|
|
190
|
-
low: 0.3,
|
|
191
|
-
};
|
|
192
|
-
if (confidence >= thresholds.high) {
|
|
193
|
-
return "high";
|
|
194
|
-
}
|
|
195
|
-
if (confidence >= thresholds.medium) {
|
|
196
|
-
return "medium";
|
|
197
|
-
}
|
|
198
|
-
return "low";
|
|
199
|
-
}
|
|
200
|
-
/**
|
|
201
|
-
* Add confidence statement to response
|
|
202
|
-
*/
|
|
203
|
-
function addConfidenceStatement(content, level, score) {
|
|
204
|
-
const statements = {
|
|
205
|
-
high: `\n\n---\n**Quality Assurance:** This response achieved a high confidence score (${(score * 100).toFixed(0)}%) through multi-model evaluation. The content has been validated for accuracy and completeness.`,
|
|
206
|
-
medium: `\n\n---\n**Quality Note:** This response received a moderate confidence score (${(score * 100).toFixed(0)}%) from the evaluation system. Consider cross-referencing critical details.`,
|
|
207
|
-
low: `\n\n---\n**Advisory:** This response has a lower confidence score (${(score * 100).toFixed(0)}%). Please verify important information independently.`,
|
|
208
|
-
};
|
|
209
|
-
return content + statements[level];
|
|
210
|
-
}
|
|
211
|
-
/**
|
|
212
|
-
* Add model attribution
|
|
213
|
-
*/
|
|
214
|
-
function addModelAttribution(content, provider, model, judgeScores) {
|
|
215
|
-
const score = Object.values(judgeScores?.scores || {}).reduce((max, curr) => Math.max(max, curr), 0);
|
|
216
|
-
return (content +
|
|
217
|
-
`\n\n---\n**Source:** Generated by ${provider}/${model} | Evaluation Score: ${score}/100`);
|
|
218
|
-
}
|
|
219
|
-
/**
|
|
220
|
-
* Add execution metrics
|
|
221
|
-
*/
|
|
222
|
-
function addExecutionMetrics(content, responseTime) {
|
|
223
|
-
return (content +
|
|
224
|
-
`\n\n---\n**Performance:** Response generated in ${responseTime}ms`);
|
|
225
|
-
}
|
|
@@ -1,304 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* workflow/core/workflowRegistry.ts
|
|
3
|
-
* Registry for managing workflow configurations
|
|
4
|
-
*/
|
|
5
|
-
import { logger } from "../../utils/logger.js";
|
|
6
|
-
import { validateForRegistration } from "../utils/workflowValidation.js";
|
|
7
|
-
const functionTag = "WorkflowRegistry";
|
|
8
|
-
// ============================================================================
|
|
9
|
-
// REGISTRY STORAGE
|
|
10
|
-
// ============================================================================
|
|
11
|
-
/**
|
|
12
|
-
* In-memory workflow registry
|
|
13
|
-
* TODO: Consider persistent storage in future phases
|
|
14
|
-
*/
|
|
15
|
-
const workflowRegistry = new Map();
|
|
16
|
-
// ============================================================================
|
|
17
|
-
// REGISTRY OPERATIONS
|
|
18
|
-
// ============================================================================
|
|
19
|
-
/**
|
|
20
|
-
* Register a new workflow
|
|
21
|
-
* @param config - Workflow configuration to register
|
|
22
|
-
* @param options - Registration options
|
|
23
|
-
* @returns Registration result
|
|
24
|
-
*/
|
|
25
|
-
export function registerWorkflow(config, options = {}) {
|
|
26
|
-
const { validateBeforeRegister = true, allowOverwrite = false } = options;
|
|
27
|
-
logger.info(`[${functionTag}] Registering workflow`, {
|
|
28
|
-
workflowId: config.id,
|
|
29
|
-
name: config.name,
|
|
30
|
-
type: config.type,
|
|
31
|
-
});
|
|
32
|
-
// Validate if requested
|
|
33
|
-
if (validateBeforeRegister) {
|
|
34
|
-
const validation = validateForRegistration(config);
|
|
35
|
-
if (!validation.valid) {
|
|
36
|
-
logger.error(`[${functionTag}] Workflow validation failed`, {
|
|
37
|
-
workflowId: config.id,
|
|
38
|
-
errors: validation.errors,
|
|
39
|
-
});
|
|
40
|
-
return {
|
|
41
|
-
success: false,
|
|
42
|
-
workflowId: config.id,
|
|
43
|
-
validation,
|
|
44
|
-
error: "Workflow validation failed",
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
// Check for existing workflow
|
|
49
|
-
if (workflowRegistry.has(config.id) && !allowOverwrite) {
|
|
50
|
-
logger.warn(`[${functionTag}] Workflow already exists`, {
|
|
51
|
-
workflowId: config.id,
|
|
52
|
-
});
|
|
53
|
-
return {
|
|
54
|
-
success: false,
|
|
55
|
-
workflowId: config.id,
|
|
56
|
-
error: "Workflow already exists. Set allowOverwrite=true to replace.",
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
// Register workflow
|
|
60
|
-
const entry = {
|
|
61
|
-
config: { ...config },
|
|
62
|
-
registeredAt: new Date().toISOString(),
|
|
63
|
-
usageCount: 0,
|
|
64
|
-
};
|
|
65
|
-
workflowRegistry.set(config.id, entry);
|
|
66
|
-
logger.info(`[${functionTag}] Workflow registered successfully`, {
|
|
67
|
-
workflowId: config.id,
|
|
68
|
-
name: config.name,
|
|
69
|
-
});
|
|
70
|
-
return {
|
|
71
|
-
success: true,
|
|
72
|
-
workflowId: config.id,
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Unregister a workflow
|
|
77
|
-
* @param workflowId - ID of workflow to unregister
|
|
78
|
-
* @returns True if workflow was unregistered
|
|
79
|
-
*/
|
|
80
|
-
export function unregisterWorkflow(workflowId) {
|
|
81
|
-
const exists = workflowRegistry.has(workflowId);
|
|
82
|
-
if (exists) {
|
|
83
|
-
workflowRegistry.delete(workflowId);
|
|
84
|
-
logger.info(`[${functionTag}] Workflow unregistered`, { workflowId });
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
logger.warn(`[${functionTag}] Workflow not found for unregistration`, {
|
|
88
|
-
workflowId,
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
return exists;
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Get workflow configuration by ID
|
|
95
|
-
* @param workflowId - ID of workflow to retrieve
|
|
96
|
-
* @returns Workflow configuration or undefined
|
|
97
|
-
*/
|
|
98
|
-
export function getWorkflow(workflowId) {
|
|
99
|
-
const entry = workflowRegistry.get(workflowId);
|
|
100
|
-
if (entry) {
|
|
101
|
-
// Update last used timestamp
|
|
102
|
-
entry.lastUsed = new Date().toISOString();
|
|
103
|
-
entry.usageCount++;
|
|
104
|
-
logger.debug(`[${functionTag}] Workflow retrieved`, {
|
|
105
|
-
workflowId,
|
|
106
|
-
usageCount: entry.usageCount,
|
|
107
|
-
});
|
|
108
|
-
return entry.config;
|
|
109
|
-
}
|
|
110
|
-
logger.warn(`[${functionTag}] Workflow not found`, { workflowId });
|
|
111
|
-
return undefined;
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Check if workflow exists
|
|
115
|
-
* @param workflowId - ID of workflow to check
|
|
116
|
-
* @returns True if workflow exists
|
|
117
|
-
*/
|
|
118
|
-
export function hasWorkflow(workflowId) {
|
|
119
|
-
return workflowRegistry.has(workflowId);
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* List all registered workflows
|
|
123
|
-
* @param options - Listing options for filtering
|
|
124
|
-
* @returns Array of workflow configurations
|
|
125
|
-
*/
|
|
126
|
-
export function listWorkflows(options = {}) {
|
|
127
|
-
const { type, tags, limit, offset = 0 } = options;
|
|
128
|
-
let workflows = Array.from(workflowRegistry.values()).map((entry) => entry.config);
|
|
129
|
-
// Filter by type
|
|
130
|
-
if (type) {
|
|
131
|
-
workflows = workflows.filter((w) => w.type === type);
|
|
132
|
-
}
|
|
133
|
-
// Filter by tags
|
|
134
|
-
if (tags && tags.length > 0) {
|
|
135
|
-
workflows = workflows.filter((w) => {
|
|
136
|
-
if (!w.tags || w.tags.length === 0) {
|
|
137
|
-
return false;
|
|
138
|
-
}
|
|
139
|
-
return tags.some((tag) => w.tags?.includes(tag));
|
|
140
|
-
});
|
|
141
|
-
}
|
|
142
|
-
// Apply pagination
|
|
143
|
-
if (limit !== undefined) {
|
|
144
|
-
workflows = workflows.slice(offset, offset + limit);
|
|
145
|
-
}
|
|
146
|
-
logger.debug(`[${functionTag}] Listed workflows`, {
|
|
147
|
-
count: workflows.length,
|
|
148
|
-
type,
|
|
149
|
-
tags,
|
|
150
|
-
});
|
|
151
|
-
return workflows;
|
|
152
|
-
}
|
|
153
|
-
/**
|
|
154
|
-
* Get workflow metadata (usage stats, timestamps)
|
|
155
|
-
* @param workflowId - ID of workflow
|
|
156
|
-
* @returns Metadata or undefined
|
|
157
|
-
*/
|
|
158
|
-
export function getWorkflowMetadata(workflowId) {
|
|
159
|
-
const entry = workflowRegistry.get(workflowId);
|
|
160
|
-
if (!entry) {
|
|
161
|
-
return undefined;
|
|
162
|
-
}
|
|
163
|
-
return {
|
|
164
|
-
registeredAt: entry.registeredAt,
|
|
165
|
-
lastUsed: entry.lastUsed,
|
|
166
|
-
usageCount: entry.usageCount,
|
|
167
|
-
};
|
|
168
|
-
}
|
|
169
|
-
/**
|
|
170
|
-
* Update workflow configuration
|
|
171
|
-
* @param workflowId - ID of workflow to update
|
|
172
|
-
* @param updates - Partial workflow config with updates
|
|
173
|
-
* @param options - Update options
|
|
174
|
-
* @returns Update result
|
|
175
|
-
*/
|
|
176
|
-
export function updateWorkflow(workflowId, updates, options = {}) {
|
|
177
|
-
const existing = workflowRegistry.get(workflowId);
|
|
178
|
-
if (!existing) {
|
|
179
|
-
logger.warn(`[${functionTag}] Workflow not found for update`, {
|
|
180
|
-
workflowId,
|
|
181
|
-
});
|
|
182
|
-
return {
|
|
183
|
-
success: false,
|
|
184
|
-
workflowId,
|
|
185
|
-
error: "Workflow not found",
|
|
186
|
-
};
|
|
187
|
-
}
|
|
188
|
-
// Merge updates with existing config
|
|
189
|
-
const updatedConfig = {
|
|
190
|
-
...existing.config,
|
|
191
|
-
...updates,
|
|
192
|
-
id: workflowId, // Ensure ID doesn't change
|
|
193
|
-
updatedAt: new Date().toISOString(),
|
|
194
|
-
};
|
|
195
|
-
// Validate if requested
|
|
196
|
-
const { validateBeforeRegister = true } = options;
|
|
197
|
-
if (validateBeforeRegister) {
|
|
198
|
-
const validation = validateForRegistration(updatedConfig);
|
|
199
|
-
if (!validation.valid) {
|
|
200
|
-
logger.error(`[${functionTag}] Updated workflow validation failed`, {
|
|
201
|
-
workflowId,
|
|
202
|
-
errors: validation.errors,
|
|
203
|
-
});
|
|
204
|
-
return {
|
|
205
|
-
success: false,
|
|
206
|
-
workflowId,
|
|
207
|
-
validation,
|
|
208
|
-
error: "Updated workflow validation failed",
|
|
209
|
-
};
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
// Update registry entry
|
|
213
|
-
existing.config = updatedConfig;
|
|
214
|
-
logger.info(`[${functionTag}] Workflow updated successfully`, {
|
|
215
|
-
workflowId,
|
|
216
|
-
});
|
|
217
|
-
return {
|
|
218
|
-
success: true,
|
|
219
|
-
workflowId,
|
|
220
|
-
};
|
|
221
|
-
}
|
|
222
|
-
/**
|
|
223
|
-
* Clear all workflows from registry
|
|
224
|
-
* WARNING: This will remove all registered workflows
|
|
225
|
-
*/
|
|
226
|
-
export function clearRegistry() {
|
|
227
|
-
const count = workflowRegistry.size;
|
|
228
|
-
workflowRegistry.clear();
|
|
229
|
-
logger.info(`[${functionTag}] Registry cleared`, {
|
|
230
|
-
workflowsRemoved: count,
|
|
231
|
-
});
|
|
232
|
-
}
|
|
233
|
-
/**
|
|
234
|
-
* Get registry statistics
|
|
235
|
-
* @returns Statistics about registered workflows
|
|
236
|
-
*/
|
|
237
|
-
export function getRegistryStats() {
|
|
238
|
-
const entries = Array.from(workflowRegistry.values());
|
|
239
|
-
const byType = {};
|
|
240
|
-
let totalUsage = 0;
|
|
241
|
-
let mostUsed;
|
|
242
|
-
entries.forEach((entry) => {
|
|
243
|
-
// Count by type
|
|
244
|
-
const type = entry.config.type;
|
|
245
|
-
byType[type] = (byType[type] || 0) + 1;
|
|
246
|
-
// Sum usage
|
|
247
|
-
totalUsage += entry.usageCount;
|
|
248
|
-
// Track most used
|
|
249
|
-
if (!mostUsed || entry.usageCount > mostUsed.count) {
|
|
250
|
-
mostUsed = {
|
|
251
|
-
id: entry.config.id,
|
|
252
|
-
name: entry.config.name,
|
|
253
|
-
count: entry.usageCount,
|
|
254
|
-
};
|
|
255
|
-
}
|
|
256
|
-
});
|
|
257
|
-
return {
|
|
258
|
-
totalWorkflows: workflowRegistry.size,
|
|
259
|
-
byType,
|
|
260
|
-
totalUsage,
|
|
261
|
-
mostUsed: mostUsed && mostUsed.count > 0 ? mostUsed : undefined,
|
|
262
|
-
};
|
|
263
|
-
}
|
|
264
|
-
/**
|
|
265
|
-
* Export registry as JSON for backup/sharing
|
|
266
|
-
* @returns JSON string of all workflows
|
|
267
|
-
*/
|
|
268
|
-
export function exportRegistry() {
|
|
269
|
-
const workflows = Array.from(workflowRegistry.values()).map((entry) => entry.config);
|
|
270
|
-
return JSON.stringify(workflows, null, 2);
|
|
271
|
-
}
|
|
272
|
-
/**
|
|
273
|
-
* Import workflows from JSON
|
|
274
|
-
* @param json - JSON string of workflow configs
|
|
275
|
-
* @param options - Import options
|
|
276
|
-
* @returns Array of registration results
|
|
277
|
-
*/
|
|
278
|
-
export function importRegistry(json, options = {}) {
|
|
279
|
-
try {
|
|
280
|
-
const workflows = JSON.parse(json);
|
|
281
|
-
const results = [];
|
|
282
|
-
workflows.forEach((config) => {
|
|
283
|
-
const result = registerWorkflow(config, options);
|
|
284
|
-
results.push(result);
|
|
285
|
-
});
|
|
286
|
-
logger.info(`[${functionTag}] Registry import completed`, {
|
|
287
|
-
total: workflows.length,
|
|
288
|
-
successful: results.filter((r) => r.success).length,
|
|
289
|
-
});
|
|
290
|
-
return results;
|
|
291
|
-
}
|
|
292
|
-
catch (error) {
|
|
293
|
-
logger.error(`[${functionTag}] Registry import failed`, {
|
|
294
|
-
error: error.message,
|
|
295
|
-
});
|
|
296
|
-
return [
|
|
297
|
-
{
|
|
298
|
-
success: false,
|
|
299
|
-
workflowId: "import-error",
|
|
300
|
-
error: `Import failed: ${error.message}`,
|
|
301
|
-
},
|
|
302
|
-
];
|
|
303
|
-
}
|
|
304
|
-
}
|