@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,472 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Fastify Server Adapter
|
|
3
|
-
* Server adapter implementation using Fastify framework
|
|
4
|
-
* Fastify is known for its high performance and low overhead
|
|
5
|
-
*/
|
|
6
|
-
import { logger } from "../../utils/logger.js";
|
|
7
|
-
import { AlreadyRunningError, ServerStartError, ServerStopError, wrapError, } from "../errors.js";
|
|
8
|
-
import { withTimeout } from "../../utils/errorHandling.js";
|
|
9
|
-
import { BaseServerAdapter } from "../abstract/baseServerAdapter.js";
|
|
10
|
-
import { isErrorResponse } from "../utils/validation.js";
|
|
11
|
-
/**
|
|
12
|
-
* Fastify-specific server adapter
|
|
13
|
-
* Provides high-performance HTTP server with schema validation
|
|
14
|
-
*/
|
|
15
|
-
export class FastifyServerAdapter extends BaseServerAdapter {
|
|
16
|
-
app = null;
|
|
17
|
-
frameworkInitialized = false;
|
|
18
|
-
constructor(neurolink, config = {}) {
|
|
19
|
-
super(neurolink, config);
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Initialize Fastify framework
|
|
23
|
-
* Called by base class but actual initialization happens in initializeFrameworkAsync
|
|
24
|
-
*/
|
|
25
|
-
initializeFramework() {
|
|
26
|
-
// Framework will be initialized asynchronously in initializeFrameworkAsync
|
|
27
|
-
// This is called by the base class constructor, but we need async imports
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Initialize Fastify framework with async imports
|
|
31
|
-
*/
|
|
32
|
-
async initializeFrameworkAsync() {
|
|
33
|
-
if (this.frameworkInitialized) {
|
|
34
|
-
return;
|
|
35
|
-
}
|
|
36
|
-
// Dynamic import to avoid loading if not used
|
|
37
|
-
const fastifyModule = await import("fastify");
|
|
38
|
-
const Fastify = fastifyModule.default;
|
|
39
|
-
this.app = Fastify({
|
|
40
|
-
logger: this.config.logging.enabled
|
|
41
|
-
? {
|
|
42
|
-
level: this.config.logging.level,
|
|
43
|
-
}
|
|
44
|
-
: false,
|
|
45
|
-
requestIdHeader: "x-request-id",
|
|
46
|
-
genReqId: () => this.generateRequestId(),
|
|
47
|
-
bodyLimit: this.parseBodyLimit(this.config.bodyParser.maxSize),
|
|
48
|
-
});
|
|
49
|
-
// Register CORS plugin if enabled
|
|
50
|
-
if (this.config.cors.enabled) {
|
|
51
|
-
const corsModule = await import("@fastify/cors");
|
|
52
|
-
await this.app.register(corsModule.default, {
|
|
53
|
-
origin: this.config.cors.origins,
|
|
54
|
-
methods: this.config.cors.methods,
|
|
55
|
-
allowedHeaders: this.config.cors.headers,
|
|
56
|
-
credentials: this.config.cors.credentials,
|
|
57
|
-
maxAge: this.config.cors.maxAge,
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
// Register rate limiting plugin if enabled
|
|
61
|
-
if (this.config.rateLimit.enabled) {
|
|
62
|
-
const rateLimitModule = await import("@fastify/rate-limit");
|
|
63
|
-
const windowMs = this.config.rateLimit.windowMs;
|
|
64
|
-
await this.app.register(rateLimitModule.default, {
|
|
65
|
-
max: this.config.rateLimit.maxRequests,
|
|
66
|
-
timeWindow: windowMs,
|
|
67
|
-
errorResponseBuilder: (_request, context) => ({
|
|
68
|
-
error: {
|
|
69
|
-
code: "RATE_LIMIT_EXCEEDED",
|
|
70
|
-
message: this.config.rateLimit.message,
|
|
71
|
-
},
|
|
72
|
-
metadata: {
|
|
73
|
-
retryAfter: Math.ceil(context.ttl / 1000),
|
|
74
|
-
timestamp: new Date().toISOString(),
|
|
75
|
-
},
|
|
76
|
-
}),
|
|
77
|
-
});
|
|
78
|
-
// Add hook to set Retry-After header for 429 responses
|
|
79
|
-
this.app.addHook("onSend", async (_request, reply, payload) => {
|
|
80
|
-
if (reply.statusCode === 429) {
|
|
81
|
-
const retryAfter = Math.ceil(windowMs / 1000);
|
|
82
|
-
reply.header("Retry-After", String(retryAfter));
|
|
83
|
-
}
|
|
84
|
-
return payload;
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
// Add request ID to response headers
|
|
88
|
-
this.app.addHook("onRequest", async (request, reply) => {
|
|
89
|
-
reply.header("X-Request-ID", request.id);
|
|
90
|
-
});
|
|
91
|
-
// Global error handler
|
|
92
|
-
this.app.setErrorHandler((error, request, reply) => {
|
|
93
|
-
const requestId = request.id;
|
|
94
|
-
logger.error("[FastifyAdapter] Request error", {
|
|
95
|
-
requestId,
|
|
96
|
-
error: error.message,
|
|
97
|
-
stack: error.stack,
|
|
98
|
-
});
|
|
99
|
-
this.emit("error", {
|
|
100
|
-
requestId,
|
|
101
|
-
error,
|
|
102
|
-
timestamp: new Date(),
|
|
103
|
-
});
|
|
104
|
-
// Handle different error types
|
|
105
|
-
if (error.statusCode) {
|
|
106
|
-
reply.status(error.statusCode).send({
|
|
107
|
-
error: {
|
|
108
|
-
code: `HTTP_${error.statusCode}`,
|
|
109
|
-
message: error.message,
|
|
110
|
-
},
|
|
111
|
-
metadata: {
|
|
112
|
-
requestId,
|
|
113
|
-
timestamp: new Date().toISOString(),
|
|
114
|
-
},
|
|
115
|
-
});
|
|
116
|
-
return;
|
|
117
|
-
}
|
|
118
|
-
reply.status(500).send({
|
|
119
|
-
error: {
|
|
120
|
-
code: "INTERNAL_ERROR",
|
|
121
|
-
message: "An internal error occurred",
|
|
122
|
-
},
|
|
123
|
-
metadata: {
|
|
124
|
-
requestId,
|
|
125
|
-
timestamp: new Date().toISOString(),
|
|
126
|
-
},
|
|
127
|
-
});
|
|
128
|
-
});
|
|
129
|
-
// 404 handler
|
|
130
|
-
this.app.setNotFoundHandler((request, reply) => {
|
|
131
|
-
reply.status(404).send({
|
|
132
|
-
error: {
|
|
133
|
-
code: "NOT_FOUND",
|
|
134
|
-
message: `Route ${request.method} ${request.url} not found`,
|
|
135
|
-
},
|
|
136
|
-
metadata: {
|
|
137
|
-
requestId: request.id,
|
|
138
|
-
timestamp: new Date().toISOString(),
|
|
139
|
-
},
|
|
140
|
-
});
|
|
141
|
-
});
|
|
142
|
-
this.frameworkInitialized = true;
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
* Parse body limit string to number (bytes)
|
|
146
|
-
*/
|
|
147
|
-
parseBodyLimit(limit) {
|
|
148
|
-
const match = limit.match(/^(\d+)(mb|kb|gb)?$/i);
|
|
149
|
-
if (!match) {
|
|
150
|
-
return 10 * 1024 * 1024; // Default 10MB
|
|
151
|
-
}
|
|
152
|
-
const value = parseInt(match[1], 10);
|
|
153
|
-
const unit = (match[2] || "b").toLowerCase();
|
|
154
|
-
switch (unit) {
|
|
155
|
-
case "gb":
|
|
156
|
-
return value * 1024 * 1024 * 1024;
|
|
157
|
-
case "mb":
|
|
158
|
-
return value * 1024 * 1024;
|
|
159
|
-
case "kb":
|
|
160
|
-
return value * 1024;
|
|
161
|
-
default:
|
|
162
|
-
return value;
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* Override initialize to ensure async framework setup
|
|
167
|
-
*/
|
|
168
|
-
async initialize() {
|
|
169
|
-
// Initialize Fastify asynchronously first
|
|
170
|
-
await this.initializeFrameworkAsync();
|
|
171
|
-
// Then call base class initialize
|
|
172
|
-
await super.initialize();
|
|
173
|
-
}
|
|
174
|
-
/**
|
|
175
|
-
* Register route with Fastify
|
|
176
|
-
*/
|
|
177
|
-
registerFrameworkRoute(route) {
|
|
178
|
-
if (!this.app) {
|
|
179
|
-
throw new Error("Fastify app not initialized. Call initialize() before registering routes.");
|
|
180
|
-
}
|
|
181
|
-
const method = route.method.toUpperCase();
|
|
182
|
-
// Fastify does not allow duplicate method+path registrations.
|
|
183
|
-
// Skip if route already exists (e.g., built-in health routes).
|
|
184
|
-
if (this.app.hasRoute({ method, url: route.path })) {
|
|
185
|
-
return;
|
|
186
|
-
}
|
|
187
|
-
this.app.route({
|
|
188
|
-
method,
|
|
189
|
-
url: route.path,
|
|
190
|
-
handler: async (request, reply) => {
|
|
191
|
-
const requestId = request.id;
|
|
192
|
-
const startTime = Date.now();
|
|
193
|
-
// Create server context
|
|
194
|
-
const ctx = this.createContext({
|
|
195
|
-
requestId,
|
|
196
|
-
method: request.method,
|
|
197
|
-
path: request.url.split("?")[0], // Remove query string
|
|
198
|
-
headers: request.headers,
|
|
199
|
-
query: request.query,
|
|
200
|
-
params: request.params,
|
|
201
|
-
body: request.body,
|
|
202
|
-
});
|
|
203
|
-
// Copy response headers from middleware (stored in request by middleware)
|
|
204
|
-
const reqWithHeaders = request;
|
|
205
|
-
if (reqWithHeaders.responseHeaders) {
|
|
206
|
-
ctx.responseHeaders = { ...reqWithHeaders.responseHeaders };
|
|
207
|
-
}
|
|
208
|
-
// Emit request event
|
|
209
|
-
this.emit("request", {
|
|
210
|
-
requestId,
|
|
211
|
-
method: ctx.method,
|
|
212
|
-
path: ctx.path,
|
|
213
|
-
timestamp: new Date(),
|
|
214
|
-
});
|
|
215
|
-
// Handle streaming if configured
|
|
216
|
-
if (route.streaming?.enabled) {
|
|
217
|
-
return this.handleStreamingResponse(reply, ctx, route);
|
|
218
|
-
}
|
|
219
|
-
// Execute handler
|
|
220
|
-
const result = await route.handler(ctx);
|
|
221
|
-
const duration = Date.now() - startTime;
|
|
222
|
-
// Check if result is an error response
|
|
223
|
-
if (isErrorResponse(result)) {
|
|
224
|
-
const statusCode = result.httpStatus ?? 500;
|
|
225
|
-
// Emit response event with error status
|
|
226
|
-
this.emit("response", {
|
|
227
|
-
requestId,
|
|
228
|
-
statusCode,
|
|
229
|
-
duration,
|
|
230
|
-
timestamp: new Date(),
|
|
231
|
-
});
|
|
232
|
-
// Apply response headers from middleware and handler
|
|
233
|
-
if (ctx.responseHeaders) {
|
|
234
|
-
for (const [key, value] of Object.entries(ctx.responseHeaders)) {
|
|
235
|
-
reply.header(key, value);
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
// Return error response with proper status code
|
|
239
|
-
reply.status(statusCode);
|
|
240
|
-
return {
|
|
241
|
-
error: result.error,
|
|
242
|
-
metadata: {
|
|
243
|
-
...result.metadata,
|
|
244
|
-
requestId,
|
|
245
|
-
timestamp: new Date().toISOString(),
|
|
246
|
-
duration,
|
|
247
|
-
},
|
|
248
|
-
};
|
|
249
|
-
}
|
|
250
|
-
// Emit response event
|
|
251
|
-
this.emit("response", {
|
|
252
|
-
requestId,
|
|
253
|
-
statusCode: 200,
|
|
254
|
-
duration,
|
|
255
|
-
timestamp: new Date(),
|
|
256
|
-
});
|
|
257
|
-
// Apply response headers from middleware and handler
|
|
258
|
-
if (ctx.responseHeaders) {
|
|
259
|
-
for (const [key, value] of Object.entries(ctx.responseHeaders)) {
|
|
260
|
-
reply.header(key, value);
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
// Return formatted response
|
|
264
|
-
return {
|
|
265
|
-
data: result,
|
|
266
|
-
metadata: {
|
|
267
|
-
requestId,
|
|
268
|
-
timestamp: new Date().toISOString(),
|
|
269
|
-
duration,
|
|
270
|
-
},
|
|
271
|
-
};
|
|
272
|
-
},
|
|
273
|
-
});
|
|
274
|
-
}
|
|
275
|
-
/**
|
|
276
|
-
* Handle streaming response using Server-Sent Events
|
|
277
|
-
*/
|
|
278
|
-
async handleStreamingResponse(reply, ctx, route) {
|
|
279
|
-
// Set SSE headers
|
|
280
|
-
reply.raw.writeHead(200, {
|
|
281
|
-
"Content-Type": "text/event-stream",
|
|
282
|
-
"Cache-Control": "no-cache",
|
|
283
|
-
Connection: "keep-alive",
|
|
284
|
-
"X-Accel-Buffering": "no", // Disable nginx buffering
|
|
285
|
-
});
|
|
286
|
-
try {
|
|
287
|
-
const result = await route.handler(ctx);
|
|
288
|
-
// Check if result is an async iterable
|
|
289
|
-
if (result &&
|
|
290
|
-
typeof result === "object" &&
|
|
291
|
-
Symbol.asyncIterator in result) {
|
|
292
|
-
for await (const chunk of result) {
|
|
293
|
-
reply.raw.write(`event: message\n`);
|
|
294
|
-
reply.raw.write(`data: ${JSON.stringify(chunk)}\n\n`);
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
else {
|
|
298
|
-
// Single result, send as complete event
|
|
299
|
-
reply.raw.write(`event: complete\n`);
|
|
300
|
-
reply.raw.write(`data: ${JSON.stringify(result)}\n\n`);
|
|
301
|
-
}
|
|
302
|
-
// Send done event
|
|
303
|
-
reply.raw.write(`event: done\n`);
|
|
304
|
-
reply.raw.write(`data: \n\n`);
|
|
305
|
-
reply.raw.end();
|
|
306
|
-
}
|
|
307
|
-
catch (error) {
|
|
308
|
-
reply.raw.write(`event: error\n`);
|
|
309
|
-
reply.raw.write(`data: ${JSON.stringify({
|
|
310
|
-
error: error instanceof Error ? error.message : "Stream error",
|
|
311
|
-
})}\n\n`);
|
|
312
|
-
reply.raw.end();
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
/**
|
|
316
|
-
* Register middleware with Fastify
|
|
317
|
-
*/
|
|
318
|
-
registerFrameworkMiddleware(middleware) {
|
|
319
|
-
if (!this.app) {
|
|
320
|
-
throw new Error("Fastify app not initialized. Call initialize() before registering middleware.");
|
|
321
|
-
}
|
|
322
|
-
this.app.addHook("preHandler", async (request, _reply) => {
|
|
323
|
-
// Skip excluded paths
|
|
324
|
-
if (middleware.excludePaths?.some((p) => request.url.startsWith(p))) {
|
|
325
|
-
return;
|
|
326
|
-
}
|
|
327
|
-
// Check if path matches
|
|
328
|
-
const paths = middleware.paths || ["/"];
|
|
329
|
-
const matches = paths.some((p) => request.url.startsWith(p) || p === "*");
|
|
330
|
-
if (!matches) {
|
|
331
|
-
return;
|
|
332
|
-
}
|
|
333
|
-
// Initialize response headers storage if not present
|
|
334
|
-
const reqWithHeaders = request;
|
|
335
|
-
if (!reqWithHeaders.responseHeaders) {
|
|
336
|
-
reqWithHeaders.responseHeaders = {};
|
|
337
|
-
}
|
|
338
|
-
// Create context with existing response headers from previous middleware
|
|
339
|
-
const ctx = this.createContext({
|
|
340
|
-
requestId: request.id,
|
|
341
|
-
method: request.method,
|
|
342
|
-
path: request.url.split("?")[0],
|
|
343
|
-
headers: request.headers,
|
|
344
|
-
query: request.query,
|
|
345
|
-
params: request.params,
|
|
346
|
-
body: request.body,
|
|
347
|
-
});
|
|
348
|
-
// Copy existing response headers to context
|
|
349
|
-
ctx.responseHeaders = { ...reqWithHeaders.responseHeaders };
|
|
350
|
-
// Execute middleware
|
|
351
|
-
await middleware.handler(ctx, async () => {
|
|
352
|
-
// After middleware execution, merge response headers back to request
|
|
353
|
-
if (ctx.responseHeaders) {
|
|
354
|
-
Object.assign(reqWithHeaders.responseHeaders, ctx.responseHeaders);
|
|
355
|
-
}
|
|
356
|
-
});
|
|
357
|
-
// Also merge headers after handler returns (for middleware that set headers after next())
|
|
358
|
-
if (ctx.responseHeaders) {
|
|
359
|
-
Object.assign(reqWithHeaders.responseHeaders, ctx.responseHeaders);
|
|
360
|
-
}
|
|
361
|
-
});
|
|
362
|
-
}
|
|
363
|
-
/**
|
|
364
|
-
* Start the Fastify server
|
|
365
|
-
*/
|
|
366
|
-
async start() {
|
|
367
|
-
// Validate lifecycle state
|
|
368
|
-
this.validateLifecycleState("start", ["initialized", "stopped"]);
|
|
369
|
-
if (this.isRunning) {
|
|
370
|
-
throw new AlreadyRunningError(this.config.port, this.config.host);
|
|
371
|
-
}
|
|
372
|
-
if (!this.app) {
|
|
373
|
-
throw new Error("Fastify app not initialized. Call initialize() before starting.");
|
|
374
|
-
}
|
|
375
|
-
// Capture non-null reference for use in closures below
|
|
376
|
-
const app = this.app;
|
|
377
|
-
this.lifecycleState = "starting";
|
|
378
|
-
const { port, host } = this.config;
|
|
379
|
-
const startupTimeout = this.config.timeout || 30000;
|
|
380
|
-
// Track connections via Fastify hooks (must be registered before listen)
|
|
381
|
-
app.addHook("onRequest", async (request) => {
|
|
382
|
-
const connectionId = `conn-${request.id}`;
|
|
383
|
-
this.trackConnection(connectionId, request.raw.socket, request.id);
|
|
384
|
-
});
|
|
385
|
-
app.addHook("onResponse", async (request) => {
|
|
386
|
-
const connectionId = `conn-${request.id}`;
|
|
387
|
-
this.untrackConnection(connectionId);
|
|
388
|
-
});
|
|
389
|
-
try {
|
|
390
|
-
await withTimeout(app.listen({ port, host }), startupTimeout, new ServerStartError(`Fastify server startup timed out after ${startupTimeout}ms`, undefined, port, host));
|
|
391
|
-
this.isRunning = true;
|
|
392
|
-
this.startTime = new Date();
|
|
393
|
-
this.lifecycleState = "running";
|
|
394
|
-
logger.info(`[FastifyAdapter] Server started on ${host}:${port}`);
|
|
395
|
-
this.emit("started", {
|
|
396
|
-
port,
|
|
397
|
-
host,
|
|
398
|
-
timestamp: this.startTime,
|
|
399
|
-
});
|
|
400
|
-
}
|
|
401
|
-
catch (error) {
|
|
402
|
-
this.lifecycleState = "error";
|
|
403
|
-
throw error;
|
|
404
|
-
}
|
|
405
|
-
}
|
|
406
|
-
/**
|
|
407
|
-
* Stop the Fastify server with graceful shutdown
|
|
408
|
-
*/
|
|
409
|
-
async stop() {
|
|
410
|
-
if (!this.isRunning) {
|
|
411
|
-
return; // Already stopped, return gracefully (idempotent)
|
|
412
|
-
}
|
|
413
|
-
const uptime = this.startTime ? Date.now() - this.startTime.getTime() : 0;
|
|
414
|
-
try {
|
|
415
|
-
// Use graceful shutdown from base class
|
|
416
|
-
await this.gracefulShutdown();
|
|
417
|
-
logger.info("[FastifyAdapter] Server stopped", { uptime });
|
|
418
|
-
this.emit("stopped", {
|
|
419
|
-
uptime,
|
|
420
|
-
timestamp: new Date(),
|
|
421
|
-
});
|
|
422
|
-
// Reset state for restart capability
|
|
423
|
-
this.resetServerState();
|
|
424
|
-
this.frameworkInitialized = false;
|
|
425
|
-
this.app = null;
|
|
426
|
-
}
|
|
427
|
-
catch (error) {
|
|
428
|
-
const wrappedError = wrapError(error);
|
|
429
|
-
throw new ServerStopError(wrappedError.message, wrappedError);
|
|
430
|
-
}
|
|
431
|
-
}
|
|
432
|
-
// ============================================
|
|
433
|
-
// Lifecycle Methods (Framework-Specific)
|
|
434
|
-
// ============================================
|
|
435
|
-
/**
|
|
436
|
-
* Stop accepting new connections
|
|
437
|
-
*/
|
|
438
|
-
async stopAcceptingConnections() {
|
|
439
|
-
// Fastify's close() handles this internally
|
|
440
|
-
logger.debug("[FastifyAdapter] Stopping acceptance of new connections");
|
|
441
|
-
}
|
|
442
|
-
/**
|
|
443
|
-
* Close the underlying server
|
|
444
|
-
*/
|
|
445
|
-
async closeServer() {
|
|
446
|
-
if (this.app) {
|
|
447
|
-
const closeTimeout = this.shutdownConfig.gracefulShutdownTimeoutMs;
|
|
448
|
-
await withTimeout(this.app.close(), closeTimeout, new Error(`Fastify server close timed out after ${closeTimeout}ms`));
|
|
449
|
-
}
|
|
450
|
-
}
|
|
451
|
-
/**
|
|
452
|
-
* Force close all active connections
|
|
453
|
-
*/
|
|
454
|
-
async forceCloseConnections() {
|
|
455
|
-
logger.info("[FastifyAdapter] Force closing connections", {
|
|
456
|
-
count: this.activeConnections.size,
|
|
457
|
-
});
|
|
458
|
-
// Get the underlying server and destroy all sockets
|
|
459
|
-
const server = this.app?.server;
|
|
460
|
-
if (server) {
|
|
461
|
-
// Force close by destroying the server
|
|
462
|
-
server.closeAllConnections?.();
|
|
463
|
-
}
|
|
464
|
-
this.activeConnections.clear();
|
|
465
|
-
}
|
|
466
|
-
/**
|
|
467
|
-
* Get the Fastify instance
|
|
468
|
-
*/
|
|
469
|
-
getFrameworkInstance() {
|
|
470
|
-
return this.app;
|
|
471
|
-
}
|
|
472
|
-
}
|