@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,255 +0,0 @@
|
|
|
1
|
-
import { zodToJsonSchema } from "zod-to-json-schema";
|
|
2
|
-
import { jsonSchemaToZod } from "json-schema-to-zod";
|
|
3
|
-
import { z } from "zod";
|
|
4
|
-
import { logger } from "./logger.js";
|
|
5
|
-
/**
|
|
6
|
-
* Inline a JSON Schema by recursively resolving all $ref references.
|
|
7
|
-
* zodToJsonSchema with 'name' option produces schemas with $ref pointing to definitions.
|
|
8
|
-
* Some SDKs (like @google/genai) expect flat schemas without $ref.
|
|
9
|
-
*
|
|
10
|
-
* This function handles:
|
|
11
|
-
* - Top-level $ref resolution
|
|
12
|
-
* - Nested $ref within properties, items, additionalProperties
|
|
13
|
-
* - $ref within allOf, anyOf, oneOf arrays
|
|
14
|
-
* - Circular reference detection to prevent infinite loops
|
|
15
|
-
*/
|
|
16
|
-
export function inlineJsonSchema(schema, definitions, visited = new Set()) {
|
|
17
|
-
// Use definitions from schema if not provided
|
|
18
|
-
const defs = definitions ||
|
|
19
|
-
schema.definitions;
|
|
20
|
-
// Handle $ref at current level
|
|
21
|
-
if (typeof schema.$ref === "string" &&
|
|
22
|
-
schema.$ref.startsWith("#/definitions/")) {
|
|
23
|
-
const defName = schema.$ref.replace("#/definitions/", "");
|
|
24
|
-
// Prevent circular reference infinite loops
|
|
25
|
-
if (visited.has(defName)) {
|
|
26
|
-
logger.debug(`[SCHEMA-INLINE] Circular reference detected for: ${defName}`);
|
|
27
|
-
// Return a simple object placeholder for circular refs
|
|
28
|
-
return { type: "object" };
|
|
29
|
-
}
|
|
30
|
-
if (defs && defs[defName]) {
|
|
31
|
-
visited.add(defName);
|
|
32
|
-
// Recursively inline the resolved definition
|
|
33
|
-
const resolved = inlineJsonSchema({ ...defs[defName] }, defs, visited);
|
|
34
|
-
visited.delete(defName);
|
|
35
|
-
return resolved;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
// Create result without $ref and definitions
|
|
39
|
-
const result = {};
|
|
40
|
-
for (const [key, value] of Object.entries(schema)) {
|
|
41
|
-
// Skip $ref and definitions keys
|
|
42
|
-
if (key === "$ref" || key === "definitions") {
|
|
43
|
-
continue;
|
|
44
|
-
}
|
|
45
|
-
// Recursively process nested schemas
|
|
46
|
-
if (key === "properties" && value && typeof value === "object") {
|
|
47
|
-
const properties = {};
|
|
48
|
-
for (const [propName, propSchema] of Object.entries(value)) {
|
|
49
|
-
if (propSchema && typeof propSchema === "object") {
|
|
50
|
-
properties[propName] = inlineJsonSchema(propSchema, defs, visited);
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
properties[propName] = propSchema;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
result[key] = properties;
|
|
57
|
-
}
|
|
58
|
-
else if (key === "items" && value && typeof value === "object") {
|
|
59
|
-
// Handle array items schema
|
|
60
|
-
if (Array.isArray(value)) {
|
|
61
|
-
result[key] = value.map((item) => item && typeof item === "object"
|
|
62
|
-
? inlineJsonSchema(item, defs, visited)
|
|
63
|
-
: item);
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
result[key] = inlineJsonSchema(value, defs, visited);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
else if (key === "additionalProperties" &&
|
|
70
|
-
value &&
|
|
71
|
-
typeof value === "object") {
|
|
72
|
-
result[key] = inlineJsonSchema(value, defs, visited);
|
|
73
|
-
}
|
|
74
|
-
else if ((key === "allOf" || key === "anyOf" || key === "oneOf") &&
|
|
75
|
-
Array.isArray(value)) {
|
|
76
|
-
// Handle composition schemas
|
|
77
|
-
result[key] = value.map((item) => item && typeof item === "object"
|
|
78
|
-
? inlineJsonSchema(item, defs, visited)
|
|
79
|
-
: item);
|
|
80
|
-
}
|
|
81
|
-
else if (key === "not" && value && typeof value === "object") {
|
|
82
|
-
result[key] = inlineJsonSchema(value, defs, visited);
|
|
83
|
-
}
|
|
84
|
-
else if ((key === "if" || key === "then" || key === "else") &&
|
|
85
|
-
value &&
|
|
86
|
-
typeof value === "object") {
|
|
87
|
-
result[key] = inlineJsonSchema(value, defs, visited);
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
result[key] = value;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
return result;
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Convert Zod schema to JSON Schema format for provider APIs.
|
|
97
|
-
*
|
|
98
|
-
* Handles three input types:
|
|
99
|
-
* 1. Zod schemas (have `_def.typeName`) — converted via zod-to-json-schema
|
|
100
|
-
* 2. AI SDK `jsonSchema()` wrappers (have `.jsonSchema` property) — extracted directly
|
|
101
|
-
* 3. Plain JSON Schema objects (have `type`/`properties` but no `_def`) — returned as-is
|
|
102
|
-
*/
|
|
103
|
-
export function convertZodToJsonSchema(zodSchema) {
|
|
104
|
-
const schema = zodSchema;
|
|
105
|
-
if (!schema || typeof schema !== "object") {
|
|
106
|
-
return { type: "object", properties: {} };
|
|
107
|
-
}
|
|
108
|
-
// AI SDK jsonSchema() wrapper — extract the inner JSON Schema directly
|
|
109
|
-
if ("jsonSchema" in schema &&
|
|
110
|
-
schema.jsonSchema !== null &&
|
|
111
|
-
typeof schema.jsonSchema === "object") {
|
|
112
|
-
const extracted = schema.jsonSchema;
|
|
113
|
-
return ensureTypeField(extracted);
|
|
114
|
-
}
|
|
115
|
-
// Plain JSON Schema object (from external MCP tools) — no Zod internals
|
|
116
|
-
if (!isZodSchema(schema)) {
|
|
117
|
-
return ensureTypeField(schema);
|
|
118
|
-
}
|
|
119
|
-
// Actual Zod schema — convert via zod-to-json-schema
|
|
120
|
-
try {
|
|
121
|
-
// Zod 4→3 boundary: zodToJsonSchema types reference Zod 3's ZodSchema via zod/v3.
|
|
122
|
-
// Runtime compatible — cast through unknown at this third-party boundary only.
|
|
123
|
-
const zodV3Schema = zodSchema;
|
|
124
|
-
const jsonSchema = zodToJsonSchema(zodV3Schema, {
|
|
125
|
-
name: "ToolParameters",
|
|
126
|
-
target: "jsonSchema7",
|
|
127
|
-
errorMessages: true,
|
|
128
|
-
});
|
|
129
|
-
// zodToJsonSchema with 'name' produces { $ref: "#/definitions/ToolParameters", definitions: {...} }
|
|
130
|
-
// Inline the $ref to produce a flat schema before passing to ensureTypeField
|
|
131
|
-
const inlined = inlineJsonSchema(jsonSchema);
|
|
132
|
-
return ensureTypeField(inlined);
|
|
133
|
-
}
|
|
134
|
-
catch (error) {
|
|
135
|
-
logger.warn("Failed to convert Zod schema to JSON Schema", {
|
|
136
|
-
error: error instanceof Error ? error.message : String(error),
|
|
137
|
-
});
|
|
138
|
-
return { type: "object", properties: {} };
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* Ensure a JSON Schema object has a `type` field (required by Vertex/Gemini).
|
|
143
|
-
*/
|
|
144
|
-
function ensureTypeField(schema) {
|
|
145
|
-
if (!schema.type) {
|
|
146
|
-
// Schemas using composition keywords (anyOf/oneOf/allOf) deliberately omit type
|
|
147
|
-
if (schema.anyOf || schema.oneOf || schema.allOf) {
|
|
148
|
-
return schema;
|
|
149
|
-
}
|
|
150
|
-
const hadProperties = !!schema.properties;
|
|
151
|
-
const result = {
|
|
152
|
-
...schema,
|
|
153
|
-
type: "object",
|
|
154
|
-
};
|
|
155
|
-
if (!result.properties) {
|
|
156
|
-
result.properties = {};
|
|
157
|
-
}
|
|
158
|
-
logger.debug("[SCHEMA-TYPE-FIX] Added missing type field to JSON Schema", {
|
|
159
|
-
fixedType: "object",
|
|
160
|
-
addedProperties: !hadProperties,
|
|
161
|
-
});
|
|
162
|
-
return result;
|
|
163
|
-
}
|
|
164
|
-
return schema;
|
|
165
|
-
}
|
|
166
|
-
/**
|
|
167
|
-
* Check if a value is a Zod schema
|
|
168
|
-
*/
|
|
169
|
-
export function isZodSchema(value) {
|
|
170
|
-
return !!(value &&
|
|
171
|
-
typeof value === "object" &&
|
|
172
|
-
"_def" in value &&
|
|
173
|
-
typeof value.parse === "function");
|
|
174
|
-
}
|
|
175
|
-
/**
|
|
176
|
-
* Convert JSON Schema to Zod schema format using official json-schema-to-zod library
|
|
177
|
-
* This ensures complete preservation of all schema structure and validation rules
|
|
178
|
-
*/
|
|
179
|
-
export function convertJsonSchemaToZod(jsonSchema) {
|
|
180
|
-
const startTime = Date.now();
|
|
181
|
-
try {
|
|
182
|
-
// Handle empty or invalid schemas
|
|
183
|
-
if (!jsonSchema || typeof jsonSchema !== "object") {
|
|
184
|
-
logger.debug("🔍 [SCHEMA-CONVERSION] Invalid or empty JSON schema, using fallback");
|
|
185
|
-
return z.object({}).passthrough();
|
|
186
|
-
}
|
|
187
|
-
// Log detailed input schema for debugging
|
|
188
|
-
logger.debug("🔍 [SCHEMA-CONVERSION] ===== STARTING OFFICIAL LIBRARY CONVERSION =====");
|
|
189
|
-
logger.debug("🔍 [SCHEMA-CONVERSION] Input JSON Schema:", {
|
|
190
|
-
type: jsonSchema.type,
|
|
191
|
-
hasProperties: !!jsonSchema.properties,
|
|
192
|
-
propertiesCount: jsonSchema.properties
|
|
193
|
-
? Object.keys(jsonSchema.properties).length
|
|
194
|
-
: 0,
|
|
195
|
-
requiredCount: Array.isArray(jsonSchema.required)
|
|
196
|
-
? jsonSchema.required.length
|
|
197
|
-
: 0,
|
|
198
|
-
required: jsonSchema.required,
|
|
199
|
-
sampleProperties: jsonSchema.properties
|
|
200
|
-
? Object.keys(jsonSchema.properties).slice(0, 5)
|
|
201
|
-
: [],
|
|
202
|
-
});
|
|
203
|
-
// Use official library to convert JSON Schema to Zod code
|
|
204
|
-
const zodCodeResult = jsonSchemaToZod(jsonSchema, {
|
|
205
|
-
module: "esm",
|
|
206
|
-
name: "schema",
|
|
207
|
-
});
|
|
208
|
-
logger.debug("🔍 [SCHEMA-CONVERSION] Generated Zod code:", {
|
|
209
|
-
codeLength: zodCodeResult.length,
|
|
210
|
-
codePreview: zodCodeResult.substring(0, 200) + "...",
|
|
211
|
-
});
|
|
212
|
-
// Extract the actual Zod schema expression from the generated code
|
|
213
|
-
// Generated code looks like: "import { z } from "zod"\n\nexport const schema = z.object({...})\n"
|
|
214
|
-
const schemaMatch = zodCodeResult.match(/export const schema = (z\..+?)(?:\n|$)/s);
|
|
215
|
-
if (!schemaMatch) {
|
|
216
|
-
throw new Error("Could not extract Zod schema from generated code");
|
|
217
|
-
}
|
|
218
|
-
const schemaExpression = schemaMatch[1].trim();
|
|
219
|
-
logger.debug("🔍 [SCHEMA-CONVERSION] Extracted schema expression:", {
|
|
220
|
-
expression: schemaExpression.substring(0, 300) + "...",
|
|
221
|
-
});
|
|
222
|
-
// Use Function constructor instead of eval for better scope control
|
|
223
|
-
const createZodSchema = new Function("z", `return ${schemaExpression}`);
|
|
224
|
-
const zodSchema = createZodSchema(z);
|
|
225
|
-
const conversionTime = Date.now() - startTime;
|
|
226
|
-
logger.debug("🔍 [SCHEMA-CONVERSION] ===== CONVERSION SUCCESSFUL =====", {
|
|
227
|
-
inputType: jsonSchema.type,
|
|
228
|
-
propertiesCount: jsonSchema.properties
|
|
229
|
-
? Object.keys(jsonSchema.properties).length
|
|
230
|
-
: 0,
|
|
231
|
-
requiredCount: Array.isArray(jsonSchema.required)
|
|
232
|
-
? jsonSchema.required.length
|
|
233
|
-
: 0,
|
|
234
|
-
conversionSuccess: true,
|
|
235
|
-
conversionTimeMs: conversionTime,
|
|
236
|
-
libraryUsed: "json-schema-to-zod-official",
|
|
237
|
-
zodSchemaType: zodSchema?.constructor?.name || "unknown",
|
|
238
|
-
});
|
|
239
|
-
return zodSchema;
|
|
240
|
-
}
|
|
241
|
-
catch (error) {
|
|
242
|
-
const conversionTime = Date.now() - startTime;
|
|
243
|
-
logger.warn("🚨 [SCHEMA-CONVERSION] Official library conversion failed, using passthrough fallback", {
|
|
244
|
-
error: error instanceof Error ? error.message : String(error),
|
|
245
|
-
errorType: error instanceof Error ? error.constructor.name : typeof error,
|
|
246
|
-
inputSchemaType: jsonSchema?.type,
|
|
247
|
-
inputSchemaKeys: jsonSchema && typeof jsonSchema === "object"
|
|
248
|
-
? Object.keys(jsonSchema)
|
|
249
|
-
: [],
|
|
250
|
-
conversionTimeMs: conversionTime,
|
|
251
|
-
libraryUsed: "json-schema-to-zod-official-FAILED",
|
|
252
|
-
});
|
|
253
|
-
return z.object({}).passthrough();
|
|
254
|
-
}
|
|
255
|
-
}
|
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Task Classification Utility Functions
|
|
3
|
-
* Helper functions for analyzing prompts and calculating scores
|
|
4
|
-
*/
|
|
5
|
-
import { FAST_PATTERNS, REASONING_PATTERNS, FAST_KEYWORDS, REASONING_KEYWORDS, SCORING_WEIGHTS, CLASSIFICATION_THRESHOLDS, DOMAIN_PATTERNS, } from "../config/taskClassificationConfig.js";
|
|
6
|
-
/**
|
|
7
|
-
* Analyze prompt length and apply scoring bonuses
|
|
8
|
-
*/
|
|
9
|
-
export function analyzeLengthFactors(prompt, reasons) {
|
|
10
|
-
let fastScore = 0;
|
|
11
|
-
let reasoningScore = 0;
|
|
12
|
-
if (prompt.length < CLASSIFICATION_THRESHOLDS.SHORT_PROMPT_LENGTH) {
|
|
13
|
-
fastScore += SCORING_WEIGHTS.SHORT_PROMPT_BONUS;
|
|
14
|
-
reasons.push("short prompt");
|
|
15
|
-
}
|
|
16
|
-
else if (prompt.length > CLASSIFICATION_THRESHOLDS.LONG_PROMPT_LENGTH) {
|
|
17
|
-
reasoningScore += SCORING_WEIGHTS.LONG_PROMPT_BONUS;
|
|
18
|
-
reasons.push("detailed prompt");
|
|
19
|
-
}
|
|
20
|
-
return { fastScore, reasoningScore };
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Check prompt against fast task patterns
|
|
24
|
-
*/
|
|
25
|
-
export function checkFastPatterns(normalizedPrompt, reasons) {
|
|
26
|
-
for (const pattern of FAST_PATTERNS) {
|
|
27
|
-
if (pattern.test(normalizedPrompt)) {
|
|
28
|
-
reasons.push("fast pattern match");
|
|
29
|
-
return SCORING_WEIGHTS.PATTERN_MATCH_SCORE;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
return 0;
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Check prompt against reasoning task patterns
|
|
36
|
-
*/
|
|
37
|
-
export function checkReasoningPatterns(normalizedPrompt, reasons) {
|
|
38
|
-
for (const pattern of REASONING_PATTERNS) {
|
|
39
|
-
if (pattern.test(normalizedPrompt)) {
|
|
40
|
-
reasons.push("reasoning pattern match");
|
|
41
|
-
return SCORING_WEIGHTS.PATTERN_MATCH_SCORE;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
return 0;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Analyze keyword matches in the prompt
|
|
48
|
-
*/
|
|
49
|
-
export function analyzeKeywords(normalizedPrompt, reasons) {
|
|
50
|
-
const fastKeywordMatches = FAST_KEYWORDS.filter((keyword) => normalizedPrompt.includes(keyword)).length;
|
|
51
|
-
const reasoningKeywordMatches = REASONING_KEYWORDS.filter((keyword) => normalizedPrompt.includes(keyword)).length;
|
|
52
|
-
const fastScore = fastKeywordMatches * SCORING_WEIGHTS.KEYWORD_MATCH_SCORE;
|
|
53
|
-
const reasoningScore = reasoningKeywordMatches * SCORING_WEIGHTS.KEYWORD_MATCH_SCORE;
|
|
54
|
-
if (fastKeywordMatches > 0) {
|
|
55
|
-
reasons.push(`${fastKeywordMatches} fast keywords`);
|
|
56
|
-
}
|
|
57
|
-
if (reasoningKeywordMatches > 0) {
|
|
58
|
-
reasons.push(`${reasoningKeywordMatches} reasoning keywords`);
|
|
59
|
-
}
|
|
60
|
-
return { fastScore, reasoningScore };
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Analyze question complexity
|
|
64
|
-
*/
|
|
65
|
-
export function analyzeQuestionComplexity(prompt, reasons) {
|
|
66
|
-
const questionMarks = (prompt.match(/\?/g) || []).length;
|
|
67
|
-
if (questionMarks > 1) {
|
|
68
|
-
reasons.push("multiple questions");
|
|
69
|
-
return SCORING_WEIGHTS.MULTIPLE_QUESTIONS_BONUS;
|
|
70
|
-
}
|
|
71
|
-
return 0;
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Analyze prompt structure and punctuation
|
|
75
|
-
*/
|
|
76
|
-
export function analyzePromptStructure(prompt, reasons) {
|
|
77
|
-
const sentences = prompt.split(/[.!?]+/).filter((s) => s.trim().length > 0);
|
|
78
|
-
if (sentences.length > 3) {
|
|
79
|
-
reasons.push("multi-sentence structure");
|
|
80
|
-
return SCORING_WEIGHTS.MULTI_SENTENCE_BONUS;
|
|
81
|
-
}
|
|
82
|
-
return 0;
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Analyze domain-specific indicators
|
|
86
|
-
*/
|
|
87
|
-
export function analyzeDomainIndicators(normalizedPrompt, prompt, reasons) {
|
|
88
|
-
let fastScore = 0;
|
|
89
|
-
let reasoningScore = 0;
|
|
90
|
-
// Check for technical domain
|
|
91
|
-
if (DOMAIN_PATTERNS.TECHNICAL.test(normalizedPrompt)) {
|
|
92
|
-
reasoningScore += SCORING_WEIGHTS.TECHNICAL_DOMAIN_BONUS;
|
|
93
|
-
reasons.push("technical domain");
|
|
94
|
-
}
|
|
95
|
-
// Check for simple definition requests
|
|
96
|
-
if (DOMAIN_PATTERNS.SIMPLE_DEFINITION.test(normalizedPrompt) &&
|
|
97
|
-
prompt.length < CLASSIFICATION_THRESHOLDS.SIMPLE_DEFINITION_LENGTH) {
|
|
98
|
-
fastScore += SCORING_WEIGHTS.SIMPLE_DEFINITION_BONUS;
|
|
99
|
-
reasons.push("simple definition request");
|
|
100
|
-
}
|
|
101
|
-
return { fastScore, reasoningScore };
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Calculate final confidence score
|
|
105
|
-
*/
|
|
106
|
-
export function calculateConfidence(fastScore, reasoningScore) {
|
|
107
|
-
const totalScore = fastScore + reasoningScore;
|
|
108
|
-
if (totalScore === 0) {
|
|
109
|
-
return CLASSIFICATION_THRESHOLDS.DEFAULT_CONFIDENCE;
|
|
110
|
-
}
|
|
111
|
-
const rawConfidence = Math.max(fastScore, reasoningScore) / totalScore;
|
|
112
|
-
return Math.max(CLASSIFICATION_THRESHOLDS.MIN_CONFIDENCE, Math.min(CLASSIFICATION_THRESHOLDS.MAX_CONFIDENCE, rawConfidence));
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Determine task type based on scores
|
|
116
|
-
*/
|
|
117
|
-
export function determineTaskType(fastScore, reasoningScore) {
|
|
118
|
-
return fastScore >= reasoningScore ? "fast" : "reasoning";
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Comprehensive prompt analysis
|
|
122
|
-
* Runs all analysis functions and returns combined scores
|
|
123
|
-
*/
|
|
124
|
-
export function analyzePrompt(prompt) {
|
|
125
|
-
const normalizedPrompt = prompt.toLowerCase().trim();
|
|
126
|
-
const reasons = [];
|
|
127
|
-
let fastScore = 0;
|
|
128
|
-
let reasoningScore = 0;
|
|
129
|
-
// 1. Length analysis
|
|
130
|
-
const lengthScores = analyzeLengthFactors(prompt, reasons);
|
|
131
|
-
fastScore += lengthScores.fastScore;
|
|
132
|
-
reasoningScore += lengthScores.reasoningScore;
|
|
133
|
-
// 2. Pattern matching
|
|
134
|
-
fastScore += checkFastPatterns(normalizedPrompt, reasons);
|
|
135
|
-
reasoningScore += checkReasoningPatterns(normalizedPrompt, reasons);
|
|
136
|
-
// 3. Keyword analysis
|
|
137
|
-
const keywordScores = analyzeKeywords(normalizedPrompt, reasons);
|
|
138
|
-
fastScore += keywordScores.fastScore;
|
|
139
|
-
reasoningScore += keywordScores.reasoningScore;
|
|
140
|
-
// 4. Question complexity
|
|
141
|
-
reasoningScore += analyzeQuestionComplexity(prompt, reasons);
|
|
142
|
-
// 5. Structure analysis
|
|
143
|
-
reasoningScore += analyzePromptStructure(prompt, reasons);
|
|
144
|
-
// 6. Domain analysis
|
|
145
|
-
const domainScores = analyzeDomainIndicators(normalizedPrompt, prompt, reasons);
|
|
146
|
-
fastScore += domainScores.fastScore;
|
|
147
|
-
reasoningScore += domainScores.reasoningScore;
|
|
148
|
-
return { fastScore, reasoningScore, reasons };
|
|
149
|
-
}
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Binary Task Classifier for NeuroLink Orchestration
|
|
3
|
-
* Classifies tasks as either 'fast' (quick responses) or 'reasoning' (complex analysis)
|
|
4
|
-
*/
|
|
5
|
-
import { logger } from "./logger.js";
|
|
6
|
-
import { CLASSIFICATION_THRESHOLDS } from "../config/taskClassificationConfig.js";
|
|
7
|
-
import { analyzePrompt, calculateConfidence, determineTaskType, } from "./taskClassificationUtils.js";
|
|
8
|
-
import { redactForClassification } from "./promptRedaction.js";
|
|
9
|
-
/**
|
|
10
|
-
* Binary Task Classifier
|
|
11
|
-
* Determines if a task requires fast response or deeper reasoning
|
|
12
|
-
*/
|
|
13
|
-
export class BinaryTaskClassifier {
|
|
14
|
-
/**
|
|
15
|
-
* Classify a prompt as either fast or reasoning task
|
|
16
|
-
*/
|
|
17
|
-
static classify(prompt) {
|
|
18
|
-
const startTime = Date.now();
|
|
19
|
-
// Analyze the prompt using utility functions
|
|
20
|
-
const scores = analyzePrompt(prompt);
|
|
21
|
-
const { fastScore, reasoningScore, reasons } = scores;
|
|
22
|
-
// Determine final classification
|
|
23
|
-
const totalScore = fastScore + reasoningScore;
|
|
24
|
-
let type;
|
|
25
|
-
let confidence;
|
|
26
|
-
if (totalScore === 0) {
|
|
27
|
-
// Default to fast for ambiguous cases
|
|
28
|
-
type = "fast";
|
|
29
|
-
confidence = CLASSIFICATION_THRESHOLDS.DEFAULT_CONFIDENCE;
|
|
30
|
-
reasons.push("default fallback");
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
type = determineTaskType(fastScore, reasoningScore);
|
|
34
|
-
confidence = calculateConfidence(fastScore, reasoningScore);
|
|
35
|
-
}
|
|
36
|
-
const classification = {
|
|
37
|
-
type,
|
|
38
|
-
confidence,
|
|
39
|
-
reasoning: reasons.join(", "),
|
|
40
|
-
};
|
|
41
|
-
const classificationTime = Date.now() - startTime;
|
|
42
|
-
logger.debug("Task classified", {
|
|
43
|
-
prompt: redactForClassification(prompt),
|
|
44
|
-
classification: type,
|
|
45
|
-
confidence: confidence.toFixed(2),
|
|
46
|
-
fastScore,
|
|
47
|
-
reasoningScore,
|
|
48
|
-
reasons: reasons.join(", "),
|
|
49
|
-
classificationTime: `${classificationTime}ms`,
|
|
50
|
-
});
|
|
51
|
-
return classification;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Get classification statistics for multiple prompts
|
|
55
|
-
*/
|
|
56
|
-
static getClassificationStats(prompts) {
|
|
57
|
-
// Guard against empty array to prevent divide-by-zero
|
|
58
|
-
if (prompts.length === 0) {
|
|
59
|
-
const stats = {
|
|
60
|
-
total: 0,
|
|
61
|
-
fast: 0,
|
|
62
|
-
reasoning: 0,
|
|
63
|
-
averageConfidence: 0,
|
|
64
|
-
};
|
|
65
|
-
logger.debug("Classification stats", stats);
|
|
66
|
-
return stats;
|
|
67
|
-
}
|
|
68
|
-
const classifications = prompts.map((prompt) => this.classify(prompt));
|
|
69
|
-
const stats = {
|
|
70
|
-
total: classifications.length,
|
|
71
|
-
fast: classifications.filter((c) => c.type === "fast").length,
|
|
72
|
-
reasoning: classifications.filter((c) => c.type === "reasoning").length,
|
|
73
|
-
averageConfidence: classifications.reduce((sum, c) => sum + c.confidence, 0) /
|
|
74
|
-
classifications.length,
|
|
75
|
-
};
|
|
76
|
-
logger.debug("Classification stats", stats);
|
|
77
|
-
return stats;
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Validate classification accuracy (for testing/tuning)
|
|
81
|
-
*/
|
|
82
|
-
static validateClassification(prompt, expectedType) {
|
|
83
|
-
const classification = this.classify(prompt);
|
|
84
|
-
const correct = classification.type === expectedType;
|
|
85
|
-
logger.debug("Classification validation", {
|
|
86
|
-
prompt: redactForClassification(prompt),
|
|
87
|
-
expected: expectedType,
|
|
88
|
-
actual: classification.type,
|
|
89
|
-
correct,
|
|
90
|
-
confidence: classification.confidence,
|
|
91
|
-
});
|
|
92
|
-
return { correct, classification };
|
|
93
|
-
}
|
|
94
|
-
}
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ThinkingConfig utility functions for constructing thinking configuration objects.
|
|
3
|
-
*
|
|
4
|
-
* This module provides helper functions to create thinkingConfig objects consistently
|
|
5
|
-
* across the codebase, reducing duplication in CLI and providers.
|
|
6
|
-
*/
|
|
7
|
-
/**
|
|
8
|
-
* Default token budget for thinking operations
|
|
9
|
-
*/
|
|
10
|
-
export const DEFAULT_THINKING_BUDGET_TOKENS = 10000;
|
|
11
|
-
/**
|
|
12
|
-
* Default thinking level for Gemini 3 models
|
|
13
|
-
*/
|
|
14
|
-
export const DEFAULT_THINKING_LEVEL = "high";
|
|
15
|
-
/**
|
|
16
|
-
* Creates a thinkingConfig object from CLI-style options.
|
|
17
|
-
*
|
|
18
|
-
* This helper consolidates the pattern used in CLI command handlers
|
|
19
|
-
* to convert simple CLI flags into the full thinkingConfig structure.
|
|
20
|
-
*
|
|
21
|
-
* @param options - CLI-style options with thinking, thinkingBudget, thinkingLevel
|
|
22
|
-
* @returns ThinkingConfig object or undefined if thinking is not enabled
|
|
23
|
-
*
|
|
24
|
-
* @example
|
|
25
|
-
* ```typescript
|
|
26
|
-
* // From CLI options
|
|
27
|
-
* const config = createThinkingConfig({
|
|
28
|
-
* thinking: true,
|
|
29
|
-
* thinkingBudget: 15000,
|
|
30
|
-
* thinkingLevel: "high"
|
|
31
|
-
* });
|
|
32
|
-
* // Returns: { enabled: true, budgetTokens: 15000, thinkingLevel: "high" }
|
|
33
|
-
* ```
|
|
34
|
-
*/
|
|
35
|
-
export function createThinkingConfig(options) {
|
|
36
|
-
// Only create config if thinking is explicitly enabled or thinkingLevel is set
|
|
37
|
-
if (!options.thinking && !options.thinkingLevel) {
|
|
38
|
-
return undefined;
|
|
39
|
-
}
|
|
40
|
-
return {
|
|
41
|
-
enabled: true,
|
|
42
|
-
budgetTokens: options.thinkingBudget ?? DEFAULT_THINKING_BUDGET_TOKENS,
|
|
43
|
-
thinkingLevel: options.thinkingLevel,
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Creates a thinkingConfig from record-style options (useful for CLI handlers).
|
|
48
|
-
*
|
|
49
|
-
* This handles the type casting that's commonly needed when working with
|
|
50
|
-
* CLI argument records.
|
|
51
|
-
*
|
|
52
|
-
* @param options - Record-style options from CLI argv
|
|
53
|
-
* @returns ThinkingConfig object or undefined if thinking is not enabled
|
|
54
|
-
*
|
|
55
|
-
* @example
|
|
56
|
-
* ```typescript
|
|
57
|
-
* const config = createThinkingConfigFromRecord(argv as Record<string, unknown>);
|
|
58
|
-
* ```
|
|
59
|
-
*/
|
|
60
|
-
export function createThinkingConfigFromRecord(options) {
|
|
61
|
-
const thinking = options.thinking;
|
|
62
|
-
const thinkingLevel = options.thinkingLevel;
|
|
63
|
-
const thinkingBudget = options.thinkingBudget;
|
|
64
|
-
return createThinkingConfig({
|
|
65
|
-
thinking,
|
|
66
|
-
thinkingLevel,
|
|
67
|
-
thinkingBudget,
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Creates thinkingConfig for native Gemini SDK (not AI SDK).
|
|
72
|
-
*
|
|
73
|
-
* This is used for direct calls to the Gemini SDK where the config
|
|
74
|
-
* structure is different from the AI SDK providerOptions.
|
|
75
|
-
*
|
|
76
|
-
* @param config - The thinkingConfig from options
|
|
77
|
-
* @returns NativeThinkingConfig object or undefined
|
|
78
|
-
*
|
|
79
|
-
* @example
|
|
80
|
-
* ```typescript
|
|
81
|
-
* const nativeConfig = createNativeThinkingConfig(options.thinkingConfig);
|
|
82
|
-
* if (nativeConfig) {
|
|
83
|
-
* sdkConfig.thinkingConfig = nativeConfig;
|
|
84
|
-
* }
|
|
85
|
-
* ```
|
|
86
|
-
*/
|
|
87
|
-
export function createNativeThinkingConfig(config) {
|
|
88
|
-
if (!config?.enabled && !config?.thinkingLevel) {
|
|
89
|
-
return undefined;
|
|
90
|
-
}
|
|
91
|
-
return {
|
|
92
|
-
includeThoughts: true,
|
|
93
|
-
thinkingLevel: config.thinkingLevel ?? DEFAULT_THINKING_LEVEL,
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Checks if thinkingConfig should be applied based on options.
|
|
98
|
-
*
|
|
99
|
-
* @param config - The thinkingConfig from options
|
|
100
|
-
* @returns true if thinking should be enabled
|
|
101
|
-
*/
|
|
102
|
-
export function shouldEnableThinking(config) {
|
|
103
|
-
return Boolean(config?.enabled || config?.thinkingLevel);
|
|
104
|
-
}
|