@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,473 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Authentication Utilities for NeuroLink Client SDK
|
|
3
|
-
*
|
|
4
|
-
* Provides authentication configuration, token management, and OAuth2 support
|
|
5
|
-
* for securing API requests to NeuroLink servers.
|
|
6
|
-
*
|
|
7
|
-
* @module @neurolink/client/auth
|
|
8
|
-
*/
|
|
9
|
-
// =============================================================================
|
|
10
|
-
// OAuth2 Token Manager
|
|
11
|
-
// =============================================================================
|
|
12
|
-
/**
|
|
13
|
-
* OAuth2 Token Manager for client credentials flow
|
|
14
|
-
*
|
|
15
|
-
* Handles token acquisition, caching, and automatic refresh for OAuth2
|
|
16
|
-
* client credentials authentication.
|
|
17
|
-
*
|
|
18
|
-
* @example Basic usage
|
|
19
|
-
* ```typescript
|
|
20
|
-
* const tokenManager = new OAuth2TokenManager({
|
|
21
|
-
* tokenUrl: 'https://auth.example.com/oauth/token',
|
|
22
|
-
* clientId: 'your-client-id',
|
|
23
|
-
* clientSecret: 'your-client-secret',
|
|
24
|
-
* scope: 'api:read api:write',
|
|
25
|
-
* });
|
|
26
|
-
*
|
|
27
|
-
* // Get token (automatically refreshes if needed)
|
|
28
|
-
* const token = await tokenManager.getToken();
|
|
29
|
-
*
|
|
30
|
-
* // Use with client
|
|
31
|
-
* const client = createClient({
|
|
32
|
-
* baseUrl: 'https://api.example.com',
|
|
33
|
-
* });
|
|
34
|
-
* client.use(createDynamicAuthInterceptor(() => tokenManager.getToken()));
|
|
35
|
-
* ```
|
|
36
|
-
*/
|
|
37
|
-
export class OAuth2TokenManager {
|
|
38
|
-
config;
|
|
39
|
-
token = null;
|
|
40
|
-
tokenExpiry = null;
|
|
41
|
-
refreshPromise = null;
|
|
42
|
-
refreshBufferMs;
|
|
43
|
-
constructor(config, options) {
|
|
44
|
-
this.config = config;
|
|
45
|
-
this.refreshBufferMs = options?.refreshBufferMs ?? 60000;
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Get a valid access token
|
|
49
|
-
*
|
|
50
|
-
* Returns cached token if still valid, otherwise fetches a new one.
|
|
51
|
-
* Handles concurrent requests by deduplicating token refresh calls.
|
|
52
|
-
*/
|
|
53
|
-
async getToken() {
|
|
54
|
-
// Check if token is still valid
|
|
55
|
-
if (this.token &&
|
|
56
|
-
this.tokenExpiry &&
|
|
57
|
-
Date.now() < this.tokenExpiry - this.refreshBufferMs) {
|
|
58
|
-
return this.token;
|
|
59
|
-
}
|
|
60
|
-
// Deduplicate concurrent refresh requests
|
|
61
|
-
if (this.refreshPromise) {
|
|
62
|
-
return this.refreshPromise;
|
|
63
|
-
}
|
|
64
|
-
// Fetch new token
|
|
65
|
-
this.refreshPromise = this.fetchToken();
|
|
66
|
-
try {
|
|
67
|
-
return await this.refreshPromise;
|
|
68
|
-
}
|
|
69
|
-
finally {
|
|
70
|
-
this.refreshPromise = null;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Invalidate the cached token
|
|
75
|
-
*
|
|
76
|
-
* Call this when the token is rejected by the server to force a refresh.
|
|
77
|
-
*/
|
|
78
|
-
invalidate() {
|
|
79
|
-
this.token = null;
|
|
80
|
-
this.tokenExpiry = null;
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Check if the cached token is valid
|
|
84
|
-
*/
|
|
85
|
-
isValid() {
|
|
86
|
-
return !!(this.token &&
|
|
87
|
-
this.tokenExpiry &&
|
|
88
|
-
Date.now() < this.tokenExpiry - this.refreshBufferMs);
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Get the token expiry time in milliseconds
|
|
92
|
-
*/
|
|
93
|
-
getExpiryTime() {
|
|
94
|
-
return this.tokenExpiry;
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Fetch a new token from the OAuth2 server
|
|
98
|
-
*/
|
|
99
|
-
async fetchToken() {
|
|
100
|
-
const params = new URLSearchParams({
|
|
101
|
-
grant_type: "client_credentials",
|
|
102
|
-
client_id: this.config.clientId,
|
|
103
|
-
client_secret: this.config.clientSecret,
|
|
104
|
-
});
|
|
105
|
-
if (this.config.scope) {
|
|
106
|
-
params.set("scope", this.config.scope);
|
|
107
|
-
}
|
|
108
|
-
if (this.config.audience) {
|
|
109
|
-
params.set("audience", this.config.audience);
|
|
110
|
-
}
|
|
111
|
-
const response = await fetch(this.config.tokenUrl, {
|
|
112
|
-
method: "POST",
|
|
113
|
-
headers: {
|
|
114
|
-
"Content-Type": "application/x-www-form-urlencoded",
|
|
115
|
-
Accept: "application/json",
|
|
116
|
-
},
|
|
117
|
-
body: params.toString(),
|
|
118
|
-
});
|
|
119
|
-
if (!response.ok) {
|
|
120
|
-
const errorText = await response.text().catch(() => "Unknown error");
|
|
121
|
-
throw new OAuth2Error(`OAuth2 token request failed: ${response.status}`, response.status, errorText);
|
|
122
|
-
}
|
|
123
|
-
const data = (await response.json());
|
|
124
|
-
this.token =
|
|
125
|
-
data.accessToken ||
|
|
126
|
-
data.access_token ||
|
|
127
|
-
"";
|
|
128
|
-
const expiresIn = data.expiresIn ||
|
|
129
|
-
data.expires_in ||
|
|
130
|
-
3600;
|
|
131
|
-
this.tokenExpiry = Date.now() + expiresIn * 1000;
|
|
132
|
-
if (!this.token) {
|
|
133
|
-
throw new OAuth2Error("OAuth2 response missing access token", 200, JSON.stringify(data));
|
|
134
|
-
}
|
|
135
|
-
return this.token;
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
// =============================================================================
|
|
139
|
-
// JWT Token Manager
|
|
140
|
-
// =============================================================================
|
|
141
|
-
/**
|
|
142
|
-
* JWT Token Manager with automatic refresh
|
|
143
|
-
*
|
|
144
|
-
* Manages JWT tokens with automatic refresh using a provided refresh function.
|
|
145
|
-
*
|
|
146
|
-
* @example
|
|
147
|
-
* ```typescript
|
|
148
|
-
* const tokenManager = new JWTTokenManager({
|
|
149
|
-
* token: 'initial-jwt-token',
|
|
150
|
-
* expiresAt: Date.now() + 3600000,
|
|
151
|
-
* refreshFn: async () => {
|
|
152
|
-
* const response = await fetch('/api/auth/refresh', {
|
|
153
|
-
* method: 'POST',
|
|
154
|
-
* credentials: 'include',
|
|
155
|
-
* });
|
|
156
|
-
* const data = await response.json();
|
|
157
|
-
* return { accessToken: data.token, expiresIn: data.expiresIn };
|
|
158
|
-
* },
|
|
159
|
-
* });
|
|
160
|
-
* ```
|
|
161
|
-
*/
|
|
162
|
-
export class JWTTokenManager {
|
|
163
|
-
config;
|
|
164
|
-
token;
|
|
165
|
-
tokenExpiry;
|
|
166
|
-
refreshPromise = null;
|
|
167
|
-
refreshBufferMs;
|
|
168
|
-
constructor(config) {
|
|
169
|
-
this.config = config;
|
|
170
|
-
this.token = config.token;
|
|
171
|
-
this.tokenExpiry = config.expiresAt;
|
|
172
|
-
this.refreshBufferMs = config.refreshBufferMs ?? 60000;
|
|
173
|
-
}
|
|
174
|
-
/**
|
|
175
|
-
* Get a valid access token
|
|
176
|
-
*/
|
|
177
|
-
async getToken() {
|
|
178
|
-
if (Date.now() < this.tokenExpiry - this.refreshBufferMs) {
|
|
179
|
-
return this.token;
|
|
180
|
-
}
|
|
181
|
-
if (this.refreshPromise) {
|
|
182
|
-
return this.refreshPromise;
|
|
183
|
-
}
|
|
184
|
-
this.refreshPromise = this.refreshToken();
|
|
185
|
-
try {
|
|
186
|
-
return await this.refreshPromise;
|
|
187
|
-
}
|
|
188
|
-
finally {
|
|
189
|
-
this.refreshPromise = null;
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
/**
|
|
193
|
-
* Force token refresh
|
|
194
|
-
*/
|
|
195
|
-
async forceRefresh() {
|
|
196
|
-
this.refreshPromise = this.refreshToken();
|
|
197
|
-
try {
|
|
198
|
-
return await this.refreshPromise;
|
|
199
|
-
}
|
|
200
|
-
finally {
|
|
201
|
-
this.refreshPromise = null;
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
/**
|
|
205
|
-
* Update token manually
|
|
206
|
-
*/
|
|
207
|
-
setToken(token, expiresAt) {
|
|
208
|
-
this.token = token;
|
|
209
|
-
this.tokenExpiry = expiresAt;
|
|
210
|
-
}
|
|
211
|
-
/**
|
|
212
|
-
* Check if token is valid
|
|
213
|
-
*/
|
|
214
|
-
isValid() {
|
|
215
|
-
return Date.now() < this.tokenExpiry - this.refreshBufferMs;
|
|
216
|
-
}
|
|
217
|
-
async refreshToken() {
|
|
218
|
-
const result = await this.config.refreshFn();
|
|
219
|
-
this.token = result.accessToken;
|
|
220
|
-
this.tokenExpiry = Date.now() + result.expiresIn * 1000;
|
|
221
|
-
return this.token;
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
// =============================================================================
|
|
225
|
-
// Authentication Middleware
|
|
226
|
-
// =============================================================================
|
|
227
|
-
/**
|
|
228
|
-
* Create an API key authentication middleware
|
|
229
|
-
*
|
|
230
|
-
* @example
|
|
231
|
-
* ```typescript
|
|
232
|
-
* const client = createClient({ baseUrl: 'https://api.example.com' });
|
|
233
|
-
* client.use(createApiKeyMiddleware('your-api-key'));
|
|
234
|
-
* ```
|
|
235
|
-
*/
|
|
236
|
-
export function createApiKeyMiddleware(apiKey, headerName = "X-API-Key") {
|
|
237
|
-
return async (request, next) => {
|
|
238
|
-
request.headers[headerName] = apiKey;
|
|
239
|
-
return next();
|
|
240
|
-
};
|
|
241
|
-
}
|
|
242
|
-
/**
|
|
243
|
-
* Create a Bearer token authentication middleware
|
|
244
|
-
*
|
|
245
|
-
* @example
|
|
246
|
-
* ```typescript
|
|
247
|
-
* const client = createClient({ baseUrl: 'https://api.example.com' });
|
|
248
|
-
* client.use(createBearerTokenMiddleware('your-jwt-token'));
|
|
249
|
-
* ```
|
|
250
|
-
*/
|
|
251
|
-
export function createBearerTokenMiddleware(token) {
|
|
252
|
-
return async (request, next) => {
|
|
253
|
-
request.headers["Authorization"] = `Bearer ${token}`;
|
|
254
|
-
return next();
|
|
255
|
-
};
|
|
256
|
-
}
|
|
257
|
-
/**
|
|
258
|
-
* Create a dynamic authentication middleware with token manager
|
|
259
|
-
*
|
|
260
|
-
* @example With OAuth2TokenManager
|
|
261
|
-
* ```typescript
|
|
262
|
-
* const tokenManager = new OAuth2TokenManager({
|
|
263
|
-
* tokenUrl: 'https://auth.example.com/oauth/token',
|
|
264
|
-
* clientId: 'client-id',
|
|
265
|
-
* clientSecret: 'client-secret',
|
|
266
|
-
* });
|
|
267
|
-
*
|
|
268
|
-
* const client = createClient({ baseUrl: 'https://api.example.com' });
|
|
269
|
-
* client.use(createTokenManagerMiddleware(tokenManager));
|
|
270
|
-
* ```
|
|
271
|
-
*/
|
|
272
|
-
export function createTokenManagerMiddleware(tokenManager) {
|
|
273
|
-
return async (request, next) => {
|
|
274
|
-
const token = await tokenManager.getToken();
|
|
275
|
-
request.headers["Authorization"] = `Bearer ${token}`;
|
|
276
|
-
return next();
|
|
277
|
-
};
|
|
278
|
-
}
|
|
279
|
-
/**
|
|
280
|
-
* Create an authentication middleware with retry on 401
|
|
281
|
-
*
|
|
282
|
-
* Automatically refreshes token and retries request when receiving 401.
|
|
283
|
-
*
|
|
284
|
-
* @example
|
|
285
|
-
* ```typescript
|
|
286
|
-
* const tokenManager = new OAuth2TokenManager({...});
|
|
287
|
-
*
|
|
288
|
-
* const client = createClient({ baseUrl: 'https://api.example.com' });
|
|
289
|
-
* client.use(createAuthWithRetryMiddleware(tokenManager));
|
|
290
|
-
* ```
|
|
291
|
-
*/
|
|
292
|
-
export function createAuthWithRetryMiddleware(tokenManager, maxRetries = 1) {
|
|
293
|
-
return async (request, next) => {
|
|
294
|
-
let retries = 0;
|
|
295
|
-
while (true) {
|
|
296
|
-
const token = await tokenManager.getToken();
|
|
297
|
-
request.headers["Authorization"] = `Bearer ${token}`;
|
|
298
|
-
const response = await next();
|
|
299
|
-
if (response.status === 401 && retries < maxRetries) {
|
|
300
|
-
tokenManager.invalidate();
|
|
301
|
-
retries++;
|
|
302
|
-
// Fetch a fresh token and update the request headers for the retry
|
|
303
|
-
const freshToken = await tokenManager.getToken();
|
|
304
|
-
request.headers["Authorization"] = `Bearer ${freshToken}`;
|
|
305
|
-
continue;
|
|
306
|
-
}
|
|
307
|
-
return response;
|
|
308
|
-
}
|
|
309
|
-
};
|
|
310
|
-
}
|
|
311
|
-
/**
|
|
312
|
-
* Create a multi-auth middleware that supports multiple authentication methods
|
|
313
|
-
*
|
|
314
|
-
* @example
|
|
315
|
-
* ```typescript
|
|
316
|
-
* const client = createClient({ baseUrl: 'https://api.example.com' });
|
|
317
|
-
* client.use(createMultiAuthMiddleware({
|
|
318
|
-
* apiKey: process.env.API_KEY,
|
|
319
|
-
* token: sessionToken,
|
|
320
|
-
* }));
|
|
321
|
-
* ```
|
|
322
|
-
*/
|
|
323
|
-
export function createMultiAuthMiddleware(config) {
|
|
324
|
-
return async (request, next) => {
|
|
325
|
-
// Add API key if provided
|
|
326
|
-
if (config.apiKey) {
|
|
327
|
-
const headerName = config.apiKeyHeaderName ?? "X-API-Key";
|
|
328
|
-
request.headers[headerName] = config.apiKey;
|
|
329
|
-
}
|
|
330
|
-
// Add bearer token if provided
|
|
331
|
-
if (config.token) {
|
|
332
|
-
const headerName = config.headerName ?? "Authorization";
|
|
333
|
-
request.headers[headerName] = `Bearer ${config.token}`;
|
|
334
|
-
}
|
|
335
|
-
// Handle dynamic token refresh
|
|
336
|
-
if (config.refreshToken && config.tokenExpiresAt) {
|
|
337
|
-
const bufferMs = config.refreshBufferMs ?? 60000;
|
|
338
|
-
if (Date.now() > config.tokenExpiresAt - bufferMs) {
|
|
339
|
-
const newToken = await config.refreshToken();
|
|
340
|
-
// Persist the refreshed token back to config so subsequent requests use it
|
|
341
|
-
config.token = newToken;
|
|
342
|
-
config.tokenExpiresAt = Date.now() + bufferMs * 2;
|
|
343
|
-
const headerName = config.headerName ?? "Authorization";
|
|
344
|
-
request.headers[headerName] = `Bearer ${newToken}`;
|
|
345
|
-
}
|
|
346
|
-
}
|
|
347
|
-
return next();
|
|
348
|
-
};
|
|
349
|
-
}
|
|
350
|
-
// =============================================================================
|
|
351
|
-
// Error Classes
|
|
352
|
-
// =============================================================================
|
|
353
|
-
/**
|
|
354
|
-
* Error thrown during OAuth2 operations
|
|
355
|
-
*/
|
|
356
|
-
export class OAuth2Error extends Error {
|
|
357
|
-
status;
|
|
358
|
-
responseBody;
|
|
359
|
-
constructor(message, status, responseBody) {
|
|
360
|
-
super(message);
|
|
361
|
-
this.name = "OAuth2Error";
|
|
362
|
-
this.status = status;
|
|
363
|
-
this.responseBody = responseBody;
|
|
364
|
-
}
|
|
365
|
-
}
|
|
366
|
-
/**
|
|
367
|
-
* Error thrown when authentication fails
|
|
368
|
-
*/
|
|
369
|
-
export class OAuth2AuthenticationError extends Error {
|
|
370
|
-
code;
|
|
371
|
-
status;
|
|
372
|
-
constructor(message, code = "AUTH_ERROR", status = 401) {
|
|
373
|
-
super(message);
|
|
374
|
-
this.name = "OAuth2AuthenticationError";
|
|
375
|
-
this.code = code;
|
|
376
|
-
this.status = status;
|
|
377
|
-
}
|
|
378
|
-
}
|
|
379
|
-
/**
|
|
380
|
-
* Error thrown when token refresh fails
|
|
381
|
-
*/
|
|
382
|
-
export class TokenRefreshError extends Error {
|
|
383
|
-
cause;
|
|
384
|
-
constructor(message, cause) {
|
|
385
|
-
super(message);
|
|
386
|
-
this.name = "TokenRefreshError";
|
|
387
|
-
this.cause = cause;
|
|
388
|
-
}
|
|
389
|
-
}
|
|
390
|
-
// =============================================================================
|
|
391
|
-
// Utility Functions
|
|
392
|
-
// =============================================================================
|
|
393
|
-
/**
|
|
394
|
-
* Decode a JWT token payload without verification
|
|
395
|
-
*
|
|
396
|
-
* @example
|
|
397
|
-
* ```typescript
|
|
398
|
-
* const payload = decodeJWTPayload(token);
|
|
399
|
-
* console.log('Token expires at:', new Date(payload.exp * 1000));
|
|
400
|
-
* ```
|
|
401
|
-
*/
|
|
402
|
-
export function decodeJWTPayload(token) {
|
|
403
|
-
try {
|
|
404
|
-
const parts = token.split(".");
|
|
405
|
-
if (parts.length !== 3) {
|
|
406
|
-
throw new Error("Invalid JWT format");
|
|
407
|
-
}
|
|
408
|
-
const payload = parts[1];
|
|
409
|
-
const decoded = atob(payload.replace(/-/g, "+").replace(/_/g, "/"));
|
|
410
|
-
return JSON.parse(decoded);
|
|
411
|
-
}
|
|
412
|
-
catch {
|
|
413
|
-
throw new Error("Failed to decode JWT token");
|
|
414
|
-
}
|
|
415
|
-
}
|
|
416
|
-
/**
|
|
417
|
-
* Check if a JWT token is expired
|
|
418
|
-
*
|
|
419
|
-
* @example
|
|
420
|
-
* ```typescript
|
|
421
|
-
* if (isJWTExpired(token)) {
|
|
422
|
-
* // Refresh the token
|
|
423
|
-
* }
|
|
424
|
-
* ```
|
|
425
|
-
*/
|
|
426
|
-
export function isJWTExpired(token, bufferMs = 0) {
|
|
427
|
-
try {
|
|
428
|
-
const payload = decodeJWTPayload(token);
|
|
429
|
-
const exp = payload.exp;
|
|
430
|
-
if (!exp) {
|
|
431
|
-
return true;
|
|
432
|
-
}
|
|
433
|
-
return Date.now() > exp * 1000 - bufferMs;
|
|
434
|
-
}
|
|
435
|
-
catch {
|
|
436
|
-
return true;
|
|
437
|
-
}
|
|
438
|
-
}
|
|
439
|
-
/**
|
|
440
|
-
* Extract expiry time from a JWT token
|
|
441
|
-
*
|
|
442
|
-
* @returns Expiry time in milliseconds, or null if not available
|
|
443
|
-
*/
|
|
444
|
-
export function getJWTExpiry(token) {
|
|
445
|
-
try {
|
|
446
|
-
const payload = decodeJWTPayload(token);
|
|
447
|
-
const exp = payload.exp;
|
|
448
|
-
return exp ? exp * 1000 : null;
|
|
449
|
-
}
|
|
450
|
-
catch {
|
|
451
|
-
return null;
|
|
452
|
-
}
|
|
453
|
-
}
|
|
454
|
-
/**
|
|
455
|
-
* Create an API key from environment variable with validation
|
|
456
|
-
*
|
|
457
|
-
* @example
|
|
458
|
-
* ```typescript
|
|
459
|
-
* const apiKey = getApiKeyFromEnv('NEUROLINK_API_KEY');
|
|
460
|
-
* const client = createClient({
|
|
461
|
-
* baseUrl: 'https://api.example.com',
|
|
462
|
-
* apiKey,
|
|
463
|
-
* });
|
|
464
|
-
* ```
|
|
465
|
-
*/
|
|
466
|
-
export function getApiKeyFromEnv(envVar, options) {
|
|
467
|
-
const value = typeof process !== "undefined" ? process.env[envVar] : undefined;
|
|
468
|
-
if (!value && options?.required) {
|
|
469
|
-
throw new Error(`Required environment variable ${envVar} is not set`);
|
|
470
|
-
}
|
|
471
|
-
return value;
|
|
472
|
-
}
|
|
473
|
-
// Types are already exported at their definition sites above
|