@juspay/neurolink 9.31.2 → 9.32.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (571) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/auth/AuthProviderFactory.d.ts +71 -0
  3. package/dist/auth/AuthProviderFactory.js +111 -0
  4. package/dist/auth/AuthProviderRegistry.d.ts +33 -0
  5. package/dist/auth/AuthProviderRegistry.js +190 -0
  6. package/dist/auth/RequestContext.d.ts +23 -0
  7. package/dist/auth/RequestContext.js +78 -0
  8. package/dist/auth/anthropicOAuth.js +1 -1
  9. package/dist/auth/authContext.d.ts +198 -0
  10. package/dist/auth/authContext.js +314 -0
  11. package/dist/auth/errors.d.ts +63 -0
  12. package/dist/auth/errors.js +39 -0
  13. package/dist/auth/index.d.ts +20 -8
  14. package/dist/auth/index.js +35 -7
  15. package/dist/auth/middleware/AuthMiddleware.d.ts +181 -0
  16. package/dist/auth/middleware/AuthMiddleware.js +519 -0
  17. package/dist/auth/middleware/rateLimitByUser.d.ts +282 -0
  18. package/dist/auth/middleware/rateLimitByUser.js +554 -0
  19. package/dist/auth/providers/BaseAuthProvider.d.ts +259 -0
  20. package/dist/auth/providers/BaseAuthProvider.js +723 -0
  21. package/dist/auth/providers/CognitoProvider.d.ts +61 -0
  22. package/dist/auth/providers/CognitoProvider.js +304 -0
  23. package/dist/auth/providers/KeycloakProvider.d.ts +61 -0
  24. package/dist/auth/providers/KeycloakProvider.js +393 -0
  25. package/dist/auth/providers/auth0.d.ts +59 -0
  26. package/dist/auth/providers/auth0.js +274 -0
  27. package/dist/auth/providers/betterAuth.d.ts +51 -0
  28. package/dist/auth/providers/betterAuth.js +182 -0
  29. package/dist/auth/providers/clerk.d.ts +65 -0
  30. package/dist/auth/providers/clerk.js +317 -0
  31. package/dist/auth/providers/custom.d.ts +64 -0
  32. package/dist/auth/providers/custom.js +112 -0
  33. package/dist/auth/providers/firebase.d.ts +63 -0
  34. package/dist/auth/providers/firebase.js +226 -0
  35. package/dist/auth/providers/jwt.d.ts +68 -0
  36. package/dist/auth/providers/jwt.js +212 -0
  37. package/dist/auth/providers/oauth2.d.ts +73 -0
  38. package/dist/auth/providers/oauth2.js +303 -0
  39. package/dist/auth/providers/supabase.d.ts +63 -0
  40. package/dist/auth/providers/supabase.js +259 -0
  41. package/dist/auth/providers/workos.d.ts +61 -0
  42. package/dist/auth/providers/workos.js +284 -0
  43. package/dist/auth/serverBridge.d.ts +14 -0
  44. package/dist/auth/serverBridge.js +25 -0
  45. package/dist/auth/sessionManager.d.ts +142 -0
  46. package/dist/auth/sessionManager.js +437 -0
  47. package/dist/cli/commands/authProviders.d.ts +43 -0
  48. package/dist/cli/commands/authProviders.js +399 -0
  49. package/dist/cli/commands/proxy.js +18 -5
  50. package/dist/cli/factories/authCommandFactory.d.ts +23 -5
  51. package/dist/cli/factories/authCommandFactory.js +108 -5
  52. package/dist/cli/parser.js +1 -1
  53. package/dist/client/aiSdkAdapter.js +1 -1
  54. package/dist/client/index.js +138 -477
  55. package/dist/core/factory.js +0 -1
  56. package/dist/core/infrastructure/baseRegistry.d.ts +3 -1
  57. package/dist/core/infrastructure/baseRegistry.js +5 -1
  58. package/dist/core/redisConversationMemoryManager.js +1 -1
  59. package/dist/features/ppt/slideGenerator.js +0 -1
  60. package/dist/features/ppt/utils.js +0 -1
  61. package/dist/index.d.ts +1 -0
  62. package/dist/index.js +25 -0
  63. package/dist/lib/auth/AuthProviderFactory.d.ts +71 -0
  64. package/dist/lib/auth/AuthProviderFactory.js +112 -0
  65. package/dist/lib/auth/AuthProviderRegistry.d.ts +33 -0
  66. package/dist/lib/auth/AuthProviderRegistry.js +191 -0
  67. package/dist/lib/auth/RequestContext.d.ts +23 -0
  68. package/dist/lib/auth/RequestContext.js +79 -0
  69. package/dist/lib/auth/authContext.d.ts +198 -0
  70. package/dist/lib/auth/authContext.js +315 -0
  71. package/dist/lib/auth/errors.d.ts +63 -0
  72. package/dist/lib/auth/errors.js +40 -0
  73. package/dist/lib/auth/index.d.ts +20 -8
  74. package/dist/lib/auth/index.js +35 -7
  75. package/dist/lib/auth/middleware/AuthMiddleware.d.ts +181 -0
  76. package/dist/lib/auth/middleware/AuthMiddleware.js +520 -0
  77. package/dist/lib/auth/middleware/rateLimitByUser.d.ts +282 -0
  78. package/dist/lib/auth/middleware/rateLimitByUser.js +555 -0
  79. package/dist/lib/auth/providers/BaseAuthProvider.d.ts +259 -0
  80. package/dist/lib/auth/providers/BaseAuthProvider.js +724 -0
  81. package/dist/lib/auth/providers/CognitoProvider.d.ts +61 -0
  82. package/dist/lib/auth/providers/CognitoProvider.js +305 -0
  83. package/dist/lib/auth/providers/KeycloakProvider.d.ts +61 -0
  84. package/dist/lib/auth/providers/KeycloakProvider.js +394 -0
  85. package/dist/lib/auth/providers/auth0.d.ts +59 -0
  86. package/dist/lib/auth/providers/auth0.js +275 -0
  87. package/dist/lib/auth/providers/betterAuth.d.ts +51 -0
  88. package/dist/lib/auth/providers/betterAuth.js +183 -0
  89. package/dist/lib/auth/providers/clerk.d.ts +65 -0
  90. package/dist/lib/auth/providers/clerk.js +318 -0
  91. package/dist/lib/auth/providers/custom.d.ts +64 -0
  92. package/dist/lib/auth/providers/custom.js +113 -0
  93. package/dist/lib/auth/providers/firebase.d.ts +63 -0
  94. package/dist/lib/auth/providers/firebase.js +227 -0
  95. package/dist/lib/auth/providers/jwt.d.ts +68 -0
  96. package/dist/lib/auth/providers/jwt.js +213 -0
  97. package/dist/lib/auth/providers/oauth2.d.ts +73 -0
  98. package/dist/lib/auth/providers/oauth2.js +304 -0
  99. package/dist/lib/auth/providers/supabase.d.ts +63 -0
  100. package/dist/lib/auth/providers/supabase.js +260 -0
  101. package/dist/lib/auth/providers/workos.d.ts +61 -0
  102. package/dist/lib/auth/providers/workos.js +285 -0
  103. package/dist/lib/auth/serverBridge.d.ts +14 -0
  104. package/dist/lib/auth/serverBridge.js +26 -0
  105. package/dist/lib/auth/sessionManager.d.ts +142 -0
  106. package/dist/lib/auth/sessionManager.js +438 -0
  107. package/dist/lib/core/infrastructure/baseRegistry.d.ts +3 -1
  108. package/dist/lib/core/infrastructure/baseRegistry.js +5 -1
  109. package/dist/lib/index.d.ts +1 -0
  110. package/dist/lib/index.js +25 -0
  111. package/dist/lib/mcp/toolRegistry.js +11 -1
  112. package/dist/lib/neurolink.d.ts +42 -1
  113. package/dist/lib/neurolink.js +218 -0
  114. package/dist/lib/rag/ChunkerRegistry.js +2 -2
  115. package/dist/lib/rag/metadata/MetadataExtractorRegistry.js +2 -2
  116. package/dist/lib/rag/reranker/RerankerRegistry.js +2 -2
  117. package/dist/lib/server/routes/agentRoutes.js +20 -2
  118. package/dist/lib/server/routes/claudeProxyRoutes.js +45 -9
  119. package/dist/lib/types/authTypes.d.ts +937 -1
  120. package/dist/lib/types/authTypes.js +2 -1
  121. package/dist/lib/types/configTypes.d.ts +46 -0
  122. package/dist/lib/types/generateTypes.d.ts +6 -0
  123. package/dist/lib/types/index.d.ts +1 -0
  124. package/dist/lib/types/streamTypes.d.ts +6 -0
  125. package/dist/mcp/elicitationProtocol.js +1 -1
  126. package/dist/mcp/servers/agent/directToolsServer.js +0 -1
  127. package/dist/mcp/toolRegistry.js +11 -1
  128. package/dist/neurolink.d.ts +42 -1
  129. package/dist/neurolink.js +218 -0
  130. package/dist/providers/azureOpenai.js +1 -1
  131. package/dist/providers/huggingFace.js +0 -1
  132. package/dist/providers/openaiCompatible.js +0 -1
  133. package/dist/rag/ChunkerRegistry.js +2 -2
  134. package/dist/rag/metadata/MetadataExtractorRegistry.js +2 -2
  135. package/dist/rag/reranker/RerankerRegistry.js +2 -2
  136. package/dist/sdk/toolRegistration.js +0 -1
  137. package/dist/server/openapi/generator.js +1 -1
  138. package/dist/server/routes/agentRoutes.js +20 -2
  139. package/dist/server/routes/claudeProxyRoutes.js +45 -9
  140. package/dist/types/authTypes.d.ts +937 -1
  141. package/dist/types/authTypes.js +2 -1
  142. package/dist/types/configTypes.d.ts +46 -0
  143. package/dist/types/configTypes.js +0 -5
  144. package/dist/types/generateTypes.d.ts +6 -0
  145. package/dist/types/index.d.ts +1 -0
  146. package/dist/types/modelTypes.js +0 -1
  147. package/dist/types/streamTypes.d.ts +6 -0
  148. package/dist/types/tools.js +0 -1
  149. package/dist/types/typeAliases.js +0 -1
  150. package/dist/types/utilities.js +1 -1
  151. package/dist/types/workflowTypes.js +0 -1
  152. package/dist/utils/providerRetry.js +0 -1
  153. package/dist/utils/providerUtils.js +0 -1
  154. package/package.json +3 -2
  155. package/dist/client/adapters/providerImageAdapter.js +0 -588
  156. package/dist/client/adapters/tts/googleTTSHandler.js +0 -344
  157. package/dist/client/adapters/video/directorPipeline.js +0 -516
  158. package/dist/client/adapters/video/ffmpegAdapter.js +0 -206
  159. package/dist/client/adapters/video/frameExtractor.js +0 -143
  160. package/dist/client/adapters/video/vertexVideoHandler.js +0 -763
  161. package/dist/client/adapters/video/videoAnalyzer.js +0 -238
  162. package/dist/client/adapters/video/videoMerger.js +0 -171
  163. package/dist/client/agent/directTools.js +0 -840
  164. package/dist/client/auth/anthropicOAuth.js +0 -974
  165. package/dist/client/auth/tokenStore.js +0 -799
  166. package/dist/client/client/aiSdkAdapter.js +0 -487
  167. package/dist/client/client/auth.js +0 -473
  168. package/dist/client/client/errors.js +0 -552
  169. package/dist/client/client/httpClient.js +0 -837
  170. package/dist/client/client/index.js +0 -172
  171. package/dist/client/client/interceptors.js +0 -601
  172. package/dist/client/client/sseClient.js +0 -545
  173. package/dist/client/client/streamingClient.js +0 -917
  174. package/dist/client/client/wsClient.js +0 -369
  175. package/dist/client/config/configManager.js +0 -303
  176. package/dist/client/config/conversationMemory.js +0 -86
  177. package/dist/client/config/taskClassificationConfig.js +0 -148
  178. package/dist/client/constants/contextWindows.js +0 -295
  179. package/dist/client/constants/enums.js +0 -853
  180. package/dist/client/constants/index.js +0 -207
  181. package/dist/client/constants/performance.js +0 -389
  182. package/dist/client/constants/retry.js +0 -266
  183. package/dist/client/constants/timeouts.js +0 -182
  184. package/dist/client/constants/tokens.js +0 -380
  185. package/dist/client/constants/videoErrors.js +0 -46
  186. package/dist/client/context/budgetChecker.js +0 -98
  187. package/dist/client/context/contextCompactor.js +0 -205
  188. package/dist/client/context/emergencyTruncation.js +0 -88
  189. package/dist/client/context/errorDetection.js +0 -171
  190. package/dist/client/context/errors.js +0 -21
  191. package/dist/client/context/fileTokenBudget.js +0 -127
  192. package/dist/client/context/prompts/summarizationPrompt.js +0 -117
  193. package/dist/client/context/stages/fileReadDeduplicator.js +0 -66
  194. package/dist/client/context/stages/slidingWindowTruncator.js +0 -190
  195. package/dist/client/context/stages/structuredSummarizer.js +0 -99
  196. package/dist/client/context/stages/toolOutputPruner.js +0 -52
  197. package/dist/client/context/summarizationEngine.js +0 -136
  198. package/dist/client/context/toolOutputLimits.js +0 -78
  199. package/dist/client/context/toolPairRepair.js +0 -66
  200. package/dist/client/core/analytics.js +0 -88
  201. package/dist/client/core/baseProvider.js +0 -1385
  202. package/dist/client/core/constants.js +0 -140
  203. package/dist/client/core/conversationMemoryFactory.js +0 -141
  204. package/dist/client/core/conversationMemoryInitializer.js +0 -128
  205. package/dist/client/core/conversationMemoryManager.js +0 -344
  206. package/dist/client/core/dynamicModels.js +0 -358
  207. package/dist/client/core/evaluation.js +0 -309
  208. package/dist/client/core/evaluationProviders.js +0 -248
  209. package/dist/client/core/factory.js +0 -412
  210. package/dist/client/core/infrastructure/baseError.js +0 -22
  211. package/dist/client/core/infrastructure/baseFactory.js +0 -54
  212. package/dist/client/core/infrastructure/baseRegistry.js +0 -49
  213. package/dist/client/core/infrastructure/index.js +0 -5
  214. package/dist/client/core/infrastructure/retry.js +0 -20
  215. package/dist/client/core/infrastructure/typedEventEmitter.js +0 -23
  216. package/dist/client/core/modelConfiguration.js +0 -851
  217. package/dist/client/core/modules/GenerationHandler.js +0 -588
  218. package/dist/client/core/modules/MessageBuilder.js +0 -273
  219. package/dist/client/core/modules/StreamHandler.js +0 -185
  220. package/dist/client/core/modules/TelemetryHandler.js +0 -203
  221. package/dist/client/core/modules/ToolsManager.js +0 -499
  222. package/dist/client/core/modules/Utilities.js +0 -331
  223. package/dist/client/core/redisConversationMemoryManager.js +0 -1435
  224. package/dist/client/core/streamAnalytics.js +0 -131
  225. package/dist/client/evaluation/contextBuilder.js +0 -134
  226. package/dist/client/evaluation/index.js +0 -61
  227. package/dist/client/evaluation/prompts.js +0 -73
  228. package/dist/client/evaluation/ragasEvaluator.js +0 -110
  229. package/dist/client/evaluation/retryManager.js +0 -78
  230. package/dist/client/evaluation/scoring.js +0 -61
  231. package/dist/client/factories/providerFactory.js +0 -166
  232. package/dist/client/factories/providerRegistry.js +0 -166
  233. package/dist/client/features/ppt/constants.js +0 -896
  234. package/dist/client/features/ppt/contentPlanner.js +0 -529
  235. package/dist/client/features/ppt/presentationOrchestrator.js +0 -236
  236. package/dist/client/features/ppt/slideGenerator.js +0 -532
  237. package/dist/client/features/ppt/slideRenderers.js +0 -2383
  238. package/dist/client/features/ppt/slideTypeInference.js +0 -405
  239. package/dist/client/features/ppt/types.js +0 -13
  240. package/dist/client/features/ppt/utils.js +0 -443
  241. package/dist/client/files/fileReferenceRegistry.js +0 -1543
  242. package/dist/client/files/fileTools.js +0 -450
  243. package/dist/client/files/streamingReader.js +0 -321
  244. package/dist/client/files/types.js +0 -23
  245. package/dist/client/hitl/hitlErrors.js +0 -54
  246. package/dist/client/hitl/hitlManager.js +0 -460
  247. package/dist/client/mcp/agentExposure.js +0 -356
  248. package/dist/client/mcp/auth/index.js +0 -11
  249. package/dist/client/mcp/auth/oauthClientProvider.js +0 -325
  250. package/dist/client/mcp/auth/tokenStorage.js +0 -134
  251. package/dist/client/mcp/batching/index.js +0 -10
  252. package/dist/client/mcp/batching/requestBatcher.js +0 -441
  253. package/dist/client/mcp/caching/index.js +0 -10
  254. package/dist/client/mcp/caching/toolCache.js +0 -433
  255. package/dist/client/mcp/elicitation/elicitationManager.js +0 -376
  256. package/dist/client/mcp/elicitation/index.js +0 -11
  257. package/dist/client/mcp/elicitation/types.js +0 -10
  258. package/dist/client/mcp/elicitationProtocol.js +0 -375
  259. package/dist/client/mcp/enhancedToolDiscovery.js +0 -481
  260. package/dist/client/mcp/externalServerManager.js +0 -1478
  261. package/dist/client/mcp/factory.js +0 -161
  262. package/dist/client/mcp/flexibleToolValidator.js +0 -161
  263. package/dist/client/mcp/httpRateLimiter.js +0 -391
  264. package/dist/client/mcp/httpRetryHandler.js +0 -178
  265. package/dist/client/mcp/index.js +0 -74
  266. package/dist/client/mcp/mcpCircuitBreaker.js +0 -427
  267. package/dist/client/mcp/mcpClientFactory.js +0 -708
  268. package/dist/client/mcp/mcpRegistryClient.js +0 -488
  269. package/dist/client/mcp/mcpServerBase.js +0 -373
  270. package/dist/client/mcp/multiServerManager.js +0 -579
  271. package/dist/client/mcp/registry.js +0 -158
  272. package/dist/client/mcp/routing/index.js +0 -10
  273. package/dist/client/mcp/routing/toolRouter.js +0 -416
  274. package/dist/client/mcp/serverCapabilities.js +0 -502
  275. package/dist/client/mcp/servers/agent/directToolsServer.js +0 -150
  276. package/dist/client/mcp/toolAnnotations.js +0 -239
  277. package/dist/client/mcp/toolConverter.js +0 -258
  278. package/dist/client/mcp/toolDiscoveryService.js +0 -798
  279. package/dist/client/mcp/toolIntegration.js +0 -334
  280. package/dist/client/mcp/toolRegistry.js +0 -719
  281. package/dist/client/memory/hippocampusInitializer.js +0 -19
  282. package/dist/client/memory/memoryRetrievalTools.js +0 -166
  283. package/dist/client/middleware/builtin/analytics.js +0 -132
  284. package/dist/client/middleware/builtin/autoEvaluation.js +0 -203
  285. package/dist/client/middleware/builtin/guardrails.js +0 -109
  286. package/dist/client/middleware/builtin/lifecycle.js +0 -168
  287. package/dist/client/middleware/factory.js +0 -327
  288. package/dist/client/middleware/registry.js +0 -295
  289. package/dist/client/middleware/utils/guardrailsUtils.js +0 -396
  290. package/dist/client/models/anthropicModels.js +0 -527
  291. package/dist/client/neurolink.js +0 -8015
  292. package/dist/client/observability/exporterRegistry.js +0 -413
  293. package/dist/client/observability/exporters/arizeExporter.js +0 -138
  294. package/dist/client/observability/exporters/baseExporter.js +0 -190
  295. package/dist/client/observability/exporters/braintrustExporter.js +0 -154
  296. package/dist/client/observability/exporters/datadogExporter.js +0 -196
  297. package/dist/client/observability/exporters/laminarExporter.js +0 -302
  298. package/dist/client/observability/exporters/langfuseExporter.js +0 -209
  299. package/dist/client/observability/exporters/langsmithExporter.js +0 -143
  300. package/dist/client/observability/exporters/otelExporter.js +0 -164
  301. package/dist/client/observability/exporters/posthogExporter.js +0 -287
  302. package/dist/client/observability/exporters/sentryExporter.js +0 -165
  303. package/dist/client/observability/index.js +0 -31
  304. package/dist/client/observability/metricsAggregator.js +0 -556
  305. package/dist/client/observability/otelBridge.js +0 -131
  306. package/dist/client/observability/retryPolicy.js +0 -383
  307. package/dist/client/observability/sampling/samplers.js +0 -216
  308. package/dist/client/observability/spanProcessor.js +0 -303
  309. package/dist/client/observability/tokenTracker.js +0 -413
  310. package/dist/client/observability/types/exporterTypes.js +0 -5
  311. package/dist/client/observability/types/index.js +0 -4
  312. package/dist/client/observability/types/spanTypes.js +0 -92
  313. package/dist/client/observability/utils/safeMetadata.js +0 -25
  314. package/dist/client/observability/utils/spanSerializer.js +0 -292
  315. package/dist/client/processors/archive/ArchiveProcessor.js +0 -1308
  316. package/dist/client/processors/base/BaseFileProcessor.js +0 -614
  317. package/dist/client/processors/base/types.js +0 -82
  318. package/dist/client/processors/config/fileTypes.js +0 -520
  319. package/dist/client/processors/config/index.js +0 -92
  320. package/dist/client/processors/config/languageMap.js +0 -410
  321. package/dist/client/processors/config/mimeTypes.js +0 -363
  322. package/dist/client/processors/config/sizeLimits.js +0 -258
  323. package/dist/client/processors/document/ExcelProcessor.js +0 -590
  324. package/dist/client/processors/document/OpenDocumentProcessor.js +0 -212
  325. package/dist/client/processors/document/PptxProcessor.js +0 -157
  326. package/dist/client/processors/document/RtfProcessor.js +0 -361
  327. package/dist/client/processors/document/WordProcessor.js +0 -353
  328. package/dist/client/processors/errors/FileErrorCode.js +0 -255
  329. package/dist/client/processors/errors/errorHelpers.js +0 -386
  330. package/dist/client/processors/errors/errorSerializer.js +0 -507
  331. package/dist/client/processors/errors/index.js +0 -49
  332. package/dist/client/processors/markup/SvgProcessor.js +0 -240
  333. package/dist/client/processors/media/AudioProcessor.js +0 -707
  334. package/dist/client/processors/media/VideoProcessor.js +0 -1045
  335. package/dist/client/providers/amazonBedrock.js +0 -1512
  336. package/dist/client/providers/amazonSagemaker.js +0 -162
  337. package/dist/client/providers/anthropic.js +0 -831
  338. package/dist/client/providers/azureOpenai.js +0 -143
  339. package/dist/client/providers/googleAiStudio.js +0 -1200
  340. package/dist/client/providers/googleNativeGemini3.js +0 -543
  341. package/dist/client/providers/googleVertex.js +0 -2936
  342. package/dist/client/providers/huggingFace.js +0 -315
  343. package/dist/client/providers/litellm.js +0 -488
  344. package/dist/client/providers/mistral.js +0 -157
  345. package/dist/client/providers/ollama.js +0 -1579
  346. package/dist/client/providers/openAI.js +0 -627
  347. package/dist/client/providers/openRouter.js +0 -543
  348. package/dist/client/providers/openaiCompatible.js +0 -290
  349. package/dist/client/providers/providerTypeUtils.js +0 -46
  350. package/dist/client/providers/sagemaker/adaptive-semaphore.js +0 -215
  351. package/dist/client/providers/sagemaker/client.js +0 -472
  352. package/dist/client/providers/sagemaker/config.js +0 -317
  353. package/dist/client/providers/sagemaker/detection.js +0 -606
  354. package/dist/client/providers/sagemaker/error-constants.js +0 -227
  355. package/dist/client/providers/sagemaker/errors.js +0 -299
  356. package/dist/client/providers/sagemaker/language-model.js +0 -775
  357. package/dist/client/providers/sagemaker/parsers.js +0 -634
  358. package/dist/client/providers/sagemaker/streaming.js +0 -331
  359. package/dist/client/providers/sagemaker/structured-parser.js +0 -625
  360. package/dist/client/proxy/accountQuota.js +0 -162
  361. package/dist/client/proxy/claudeFormat.js +0 -595
  362. package/dist/client/proxy/modelRouter.js +0 -29
  363. package/dist/client/proxy/oauthFetch.js +0 -367
  364. package/dist/client/proxy/proxyFetch.js +0 -586
  365. package/dist/client/proxy/requestLogger.js +0 -207
  366. package/dist/client/proxy/tokenRefresh.js +0 -124
  367. package/dist/client/proxy/usageStats.js +0 -74
  368. package/dist/client/proxy/utils/noProxyUtils.js +0 -149
  369. package/dist/client/rag/ChunkerFactory.js +0 -320
  370. package/dist/client/rag/ChunkerRegistry.js +0 -421
  371. package/dist/client/rag/chunkers/BaseChunker.js +0 -143
  372. package/dist/client/rag/chunkers/CharacterChunker.js +0 -28
  373. package/dist/client/rag/chunkers/HTMLChunker.js +0 -38
  374. package/dist/client/rag/chunkers/JSONChunker.js +0 -68
  375. package/dist/client/rag/chunkers/LaTeXChunker.js +0 -63
  376. package/dist/client/rag/chunkers/MarkdownChunker.js +0 -306
  377. package/dist/client/rag/chunkers/RecursiveChunker.js +0 -139
  378. package/dist/client/rag/chunkers/SemanticMarkdownChunker.js +0 -138
  379. package/dist/client/rag/chunkers/SentenceChunker.js +0 -66
  380. package/dist/client/rag/chunkers/TokenChunker.js +0 -61
  381. package/dist/client/rag/chunkers/index.js +0 -15
  382. package/dist/client/rag/chunking/characterChunker.js +0 -142
  383. package/dist/client/rag/chunking/chunkerRegistry.js +0 -194
  384. package/dist/client/rag/chunking/htmlChunker.js +0 -247
  385. package/dist/client/rag/chunking/index.js +0 -17
  386. package/dist/client/rag/chunking/jsonChunker.js +0 -281
  387. package/dist/client/rag/chunking/latexChunker.js +0 -251
  388. package/dist/client/rag/chunking/markdownChunker.js +0 -373
  389. package/dist/client/rag/chunking/recursiveChunker.js +0 -148
  390. package/dist/client/rag/chunking/semanticChunker.js +0 -306
  391. package/dist/client/rag/chunking/sentenceChunker.js +0 -230
  392. package/dist/client/rag/chunking/tokenChunker.js +0 -183
  393. package/dist/client/rag/document/MDocument.js +0 -392
  394. package/dist/client/rag/document/index.js +0 -5
  395. package/dist/client/rag/document/loaders.js +0 -500
  396. package/dist/client/rag/errors/RAGError.js +0 -274
  397. package/dist/client/rag/errors/index.js +0 -6
  398. package/dist/client/rag/graphRag/graphRAG.js +0 -401
  399. package/dist/client/rag/graphRag/index.js +0 -4
  400. package/dist/client/rag/index.js +0 -141
  401. package/dist/client/rag/metadata/MetadataExtractorFactory.js +0 -418
  402. package/dist/client/rag/metadata/MetadataExtractorRegistry.js +0 -362
  403. package/dist/client/rag/metadata/index.js +0 -9
  404. package/dist/client/rag/metadata/metadataExtractor.js +0 -280
  405. package/dist/client/rag/pipeline/RAGPipeline.js +0 -436
  406. package/dist/client/rag/pipeline/contextAssembly.js +0 -341
  407. package/dist/client/rag/pipeline/index.js +0 -5
  408. package/dist/client/rag/ragIntegration.js +0 -321
  409. package/dist/client/rag/reranker/RerankerFactory.js +0 -430
  410. package/dist/client/rag/reranker/RerankerRegistry.js +0 -402
  411. package/dist/client/rag/reranker/index.js +0 -9
  412. package/dist/client/rag/reranker/reranker.js +0 -277
  413. package/dist/client/rag/resilience/CircuitBreaker.js +0 -431
  414. package/dist/client/rag/resilience/RetryHandler.js +0 -304
  415. package/dist/client/rag/resilience/index.js +0 -7
  416. package/dist/client/rag/retrieval/hybridSearch.js +0 -335
  417. package/dist/client/rag/retrieval/index.js +0 -5
  418. package/dist/client/rag/retrieval/vectorQueryTool.js +0 -307
  419. package/dist/client/rag/types.js +0 -8
  420. package/dist/client/sdk/toolRegistration.js +0 -377
  421. package/dist/client/server/abstract/baseServerAdapter.js +0 -575
  422. package/dist/client/server/adapters/expressAdapter.js +0 -486
  423. package/dist/client/server/adapters/fastifyAdapter.js +0 -472
  424. package/dist/client/server/adapters/honoAdapter.js +0 -632
  425. package/dist/client/server/adapters/koaAdapter.js +0 -510
  426. package/dist/client/server/errors.js +0 -486
  427. package/dist/client/server/factory/serverAdapterFactory.js +0 -160
  428. package/dist/client/server/index.js +0 -108
  429. package/dist/client/server/middleware/abortSignal.js +0 -111
  430. package/dist/client/server/middleware/auth.js +0 -388
  431. package/dist/client/server/middleware/cache.js +0 -359
  432. package/dist/client/server/middleware/common.js +0 -281
  433. package/dist/client/server/middleware/deprecation.js +0 -190
  434. package/dist/client/server/middleware/mcpBodyAttachment.js +0 -63
  435. package/dist/client/server/middleware/rateLimit.js +0 -227
  436. package/dist/client/server/middleware/validation.js +0 -388
  437. package/dist/client/server/openapi/generator.js +0 -398
  438. package/dist/client/server/openapi/index.js +0 -36
  439. package/dist/client/server/openapi/schemas.js +0 -695
  440. package/dist/client/server/openapi/templates.js +0 -374
  441. package/dist/client/server/routes/agentRoutes.js +0 -171
  442. package/dist/client/server/routes/claudeProxyRoutes.js +0 -1600
  443. package/dist/client/server/routes/healthRoutes.js +0 -187
  444. package/dist/client/server/routes/index.js +0 -57
  445. package/dist/client/server/routes/mcpRoutes.js +0 -342
  446. package/dist/client/server/routes/memoryRoutes.js +0 -350
  447. package/dist/client/server/routes/openApiRoutes.js +0 -126
  448. package/dist/client/server/routes/toolRoutes.js +0 -199
  449. package/dist/client/server/streaming/dataStream.js +0 -486
  450. package/dist/client/server/streaming/index.js +0 -11
  451. package/dist/client/server/types.js +0 -67
  452. package/dist/client/server/utils/redaction.js +0 -334
  453. package/dist/client/server/utils/validation.js +0 -243
  454. package/dist/client/server/websocket/WebSocketHandler.js +0 -383
  455. package/dist/client/server/websocket/index.js +0 -4
  456. package/dist/client/services/server/ai/observability/instrumentation.js +0 -808
  457. package/dist/client/telemetry/attributes.js +0 -100
  458. package/dist/client/telemetry/index.js +0 -26
  459. package/dist/client/telemetry/telemetryService.js +0 -308
  460. package/dist/client/telemetry/tracers.js +0 -17
  461. package/dist/client/telemetry/withSpan.js +0 -34
  462. package/dist/client/types/actionTypes.js +0 -6
  463. package/dist/client/types/analytics.js +0 -5
  464. package/dist/client/types/authTypes.js +0 -8
  465. package/dist/client/types/circuitBreakerErrors.js +0 -34
  466. package/dist/client/types/cli.js +0 -21
  467. package/dist/client/types/clientTypes.js +0 -10
  468. package/dist/client/types/common.js +0 -51
  469. package/dist/client/types/configTypes.js +0 -49
  470. package/dist/client/types/content.js +0 -19
  471. package/dist/client/types/contextTypes.js +0 -400
  472. package/dist/client/types/conversation.js +0 -47
  473. package/dist/client/types/conversationMemoryInterface.js +0 -6
  474. package/dist/client/types/domainTypes.js +0 -5
  475. package/dist/client/types/errors.js +0 -167
  476. package/dist/client/types/evaluation.js +0 -5
  477. package/dist/client/types/evaluationProviders.js +0 -5
  478. package/dist/client/types/evaluationTypes.js +0 -1
  479. package/dist/client/types/externalMcp.js +0 -6
  480. package/dist/client/types/fileReferenceTypes.js +0 -8
  481. package/dist/client/types/fileTypes.js +0 -4
  482. package/dist/client/types/generateTypes.js +0 -1
  483. package/dist/client/types/guardrails.js +0 -1
  484. package/dist/client/types/hitlTypes.js +0 -8
  485. package/dist/client/types/index.js +0 -57
  486. package/dist/client/types/mcpTypes.js +0 -5
  487. package/dist/client/types/middlewareTypes.js +0 -1
  488. package/dist/client/types/modelTypes.js +0 -30
  489. package/dist/client/types/multimodal.js +0 -135
  490. package/dist/client/types/observability.js +0 -6
  491. package/dist/client/types/pptTypes.js +0 -82
  492. package/dist/client/types/providers.js +0 -111
  493. package/dist/client/types/proxyTypes.js +0 -16
  494. package/dist/client/types/ragTypes.js +0 -7
  495. package/dist/client/types/sdkTypes.js +0 -8
  496. package/dist/client/types/serviceTypes.js +0 -5
  497. package/dist/client/types/streamTypes.js +0 -1
  498. package/dist/client/types/subscriptionTypes.js +0 -9
  499. package/dist/client/types/taskClassificationTypes.js +0 -5
  500. package/dist/client/types/tools.js +0 -24
  501. package/dist/client/types/ttsTypes.js +0 -57
  502. package/dist/client/types/typeAliases.js +0 -48
  503. package/dist/client/types/utilities.js +0 -4
  504. package/dist/client/types/workflowTypes.js +0 -30
  505. package/dist/client/utils/async/withTimeout.js +0 -98
  506. package/dist/client/utils/asyncMutex.js +0 -60
  507. package/dist/client/utils/conversationMemory.js +0 -431
  508. package/dist/client/utils/csvProcessor.js +0 -846
  509. package/dist/client/utils/errorHandling.js +0 -936
  510. package/dist/client/utils/evaluationUtils.js +0 -131
  511. package/dist/client/utils/factoryProcessing.js +0 -589
  512. package/dist/client/utils/fileDetector.js +0 -2161
  513. package/dist/client/utils/imageCache.js +0 -376
  514. package/dist/client/utils/imageProcessor.js +0 -704
  515. package/dist/client/utils/logger.js +0 -491
  516. package/dist/client/utils/mcpDefaults.js +0 -134
  517. package/dist/client/utils/messageBuilder.js +0 -1653
  518. package/dist/client/utils/modelAliasResolver.js +0 -54
  519. package/dist/client/utils/modelDetection.js +0 -80
  520. package/dist/client/utils/modelRouter.js +0 -292
  521. package/dist/client/utils/multimodalOptionsBuilder.js +0 -65
  522. package/dist/client/utils/observabilityHelpers.js +0 -47
  523. package/dist/client/utils/parameterValidation.js +0 -966
  524. package/dist/client/utils/pdfProcessor.js +0 -410
  525. package/dist/client/utils/performance.js +0 -222
  526. package/dist/client/utils/pricing.js +0 -340
  527. package/dist/client/utils/promptRedaction.js +0 -62
  528. package/dist/client/utils/providerConfig.js +0 -1009
  529. package/dist/client/utils/providerHealth.js +0 -1237
  530. package/dist/client/utils/providerRetry.js +0 -112
  531. package/dist/client/utils/providerUtils.js +0 -434
  532. package/dist/client/utils/rateLimiter.js +0 -200
  533. package/dist/client/utils/redis.js +0 -368
  534. package/dist/client/utils/retryHandler.js +0 -269
  535. package/dist/client/utils/retryability.js +0 -22
  536. package/dist/client/utils/sanitizers/svg.js +0 -481
  537. package/dist/client/utils/schemaConversion.js +0 -255
  538. package/dist/client/utils/taskClassificationUtils.js +0 -149
  539. package/dist/client/utils/taskClassifier.js +0 -94
  540. package/dist/client/utils/thinkingConfig.js +0 -104
  541. package/dist/client/utils/timeout.js +0 -359
  542. package/dist/client/utils/tokenEstimation.js +0 -142
  543. package/dist/client/utils/tokenLimits.js +0 -125
  544. package/dist/client/utils/tokenUtils.js +0 -239
  545. package/dist/client/utils/toolUtils.js +0 -75
  546. package/dist/client/utils/transformationUtils.js +0 -554
  547. package/dist/client/utils/ttsProcessor.js +0 -286
  548. package/dist/client/utils/typeUtils.js +0 -97
  549. package/dist/client/utils/videoAnalysisProcessor.js +0 -67
  550. package/dist/client/workflow/config.js +0 -398
  551. package/dist/client/workflow/core/ensembleExecutor.js +0 -407
  552. package/dist/client/workflow/core/judgeScorer.js +0 -544
  553. package/dist/client/workflow/core/responseConditioner.js +0 -225
  554. package/dist/client/workflow/core/types/conditionerTypes.js +0 -7
  555. package/dist/client/workflow/core/types/ensembleTypes.js +0 -7
  556. package/dist/client/workflow/core/types/index.js +0 -7
  557. package/dist/client/workflow/core/types/judgeTypes.js +0 -7
  558. package/dist/client/workflow/core/types/layerTypes.js +0 -7
  559. package/dist/client/workflow/core/types/registryTypes.js +0 -7
  560. package/dist/client/workflow/core/workflowRegistry.js +0 -304
  561. package/dist/client/workflow/core/workflowRunner.js +0 -586
  562. package/dist/client/workflow/index.js +0 -50
  563. package/dist/client/workflow/types.js +0 -9
  564. package/dist/client/workflow/utils/types/index.js +0 -7
  565. package/dist/client/workflow/utils/workflowMetrics.js +0 -311
  566. package/dist/client/workflow/utils/workflowValidation.js +0 -420
  567. package/dist/client/workflow/workflows/adaptiveWorkflow.js +0 -366
  568. package/dist/client/workflow/workflows/consensusWorkflow.js +0 -192
  569. package/dist/client/workflow/workflows/fallbackWorkflow.js +0 -225
  570. package/dist/client/workflow/workflows/multiJudgeWorkflow.js +0 -351
  571. /package/dist/client/{client/reactHooks.js → reactHooks.js} +0 -0
@@ -246,6 +246,10 @@ export class NeuroLink {
246
246
  conversationMemoryConfig;
247
247
  // Add orchestration property
248
248
  enableOrchestration;
249
+ // Authentication provider for secure access control
250
+ authProvider;
251
+ pendingAuthConfig;
252
+ authInitPromise;
249
253
  // HITL (Human-in-the-Loop) support
250
254
  hitlManager;
251
255
  // Accumulated cost in USD across all generate() calls on this instance
@@ -451,6 +455,10 @@ export class NeuroLink {
451
455
  this.initializeLangfuse(constructorId, constructorStartTime, constructorHrTimeStart);
452
456
  this.initializeMetricsListeners();
453
457
  this.logConstructorComplete(constructorId, constructorStartTime, constructorHrTimeStart);
458
+ // Store auth config for lazy initialization
459
+ if (config?.auth) {
460
+ this.pendingAuthConfig = config.auth;
461
+ }
454
462
  }
455
463
  /**
456
464
  * Initialize provider registry with security settings
@@ -2225,6 +2233,61 @@ Current user's request: ${currentInput}`;
2225
2233
  },
2226
2234
  };
2227
2235
  }
2236
+ // Handle per-call auth token validation
2237
+ if (options.auth?.token) {
2238
+ const { AuthError } = await import("./auth/errors.js");
2239
+ await this.ensureAuthProvider();
2240
+ if (!this.authProvider) {
2241
+ throw AuthError.create("PROVIDER_ERROR", "No auth provider configured. Set auth in constructor or via setAuthProvider() before using auth: { token }.");
2242
+ }
2243
+ let authResult;
2244
+ try {
2245
+ authResult = await withTimeout(this.authProvider.authenticateToken(options.auth.token), 5000, AuthError.create("PROVIDER_ERROR", "Auth token validation timed out after 5000ms"));
2246
+ }
2247
+ catch (err) {
2248
+ // Rethrow auth errors as-is; wrap anything else
2249
+ if (err instanceof Error &&
2250
+ "feature" in err &&
2251
+ err.feature === "Auth") {
2252
+ throw err;
2253
+ }
2254
+ throw AuthError.create("PROVIDER_ERROR", `Auth token validation failed: ${err instanceof Error ? err.message : String(err)}`);
2255
+ }
2256
+ if (!authResult.valid) {
2257
+ throw AuthError.create("INVALID_TOKEN", authResult.error || "Token validation failed");
2258
+ }
2259
+ // Fail closed: token valid but no user identity is a provider bug
2260
+ if (!authResult.user) {
2261
+ throw AuthError.create("INVALID_TOKEN", "Token validated but no user identity returned");
2262
+ }
2263
+ if (!authResult.user.id) {
2264
+ throw AuthError.create("INVALID_TOKEN", "Token validated but user identity missing required 'id' field");
2265
+ }
2266
+ // Merge validated user into context
2267
+ options.context = {
2268
+ ...(options.context || {}),
2269
+ userId: authResult.user.id,
2270
+ userEmail: authResult.user.email,
2271
+ userRoles: authResult.user.roles,
2272
+ };
2273
+ }
2274
+ // Handle pre-validated requestContext
2275
+ if (options.requestContext) {
2276
+ // When auth token was validated, token-derived identity fields
2277
+ // MUST take precedence over requestContext to prevent privilege escalation.
2278
+ const tokenDerivedFields = options.auth?.token && this.authProvider
2279
+ ? {
2280
+ userId: options.context?.userId,
2281
+ userEmail: options.context?.userEmail,
2282
+ userRoles: options.context?.userRoles,
2283
+ }
2284
+ : {};
2285
+ options.context = {
2286
+ ...(options.context || {}),
2287
+ ...options.requestContext,
2288
+ ...tokenDerivedFields,
2289
+ };
2290
+ }
2228
2291
  // Check if workflow is requested
2229
2292
  if (options.workflow || options.workflowConfig) {
2230
2293
  return await this.generateWithWorkflow(options);
@@ -3997,6 +4060,61 @@ Current user's request: ${currentInput}`;
3997
4060
  },
3998
4061
  });
3999
4062
  }
4063
+ // Handle per-call auth token validation
4064
+ if (options.auth?.token) {
4065
+ const { AuthError } = await import("./auth/errors.js");
4066
+ await this.ensureAuthProvider();
4067
+ if (!this.authProvider) {
4068
+ throw AuthError.create("PROVIDER_ERROR", "No auth provider configured. Set auth in constructor or via setAuthProvider() before using auth: { token }.");
4069
+ }
4070
+ let authResult;
4071
+ try {
4072
+ authResult = await withTimeout(this.authProvider.authenticateToken(options.auth.token), 5000, AuthError.create("PROVIDER_ERROR", "Auth token validation timed out after 5000ms"));
4073
+ }
4074
+ catch (err) {
4075
+ // Rethrow auth errors as-is; wrap anything else
4076
+ if (err instanceof Error &&
4077
+ "feature" in err &&
4078
+ err.feature === "Auth") {
4079
+ throw err;
4080
+ }
4081
+ throw AuthError.create("PROVIDER_ERROR", `Auth token validation failed: ${err instanceof Error ? err.message : String(err)}`);
4082
+ }
4083
+ if (!authResult.valid) {
4084
+ throw AuthError.create("INVALID_TOKEN", authResult.error || "Token validation failed");
4085
+ }
4086
+ // Fail closed: token valid but no user identity is a provider bug
4087
+ if (!authResult.user) {
4088
+ throw AuthError.create("INVALID_TOKEN", "Token validated but no user identity returned");
4089
+ }
4090
+ if (!authResult.user.id) {
4091
+ throw AuthError.create("INVALID_TOKEN", "Token validated but user identity missing required 'id' field");
4092
+ }
4093
+ // Merge validated user into context
4094
+ options.context = {
4095
+ ...(options.context || {}),
4096
+ userId: authResult.user.id,
4097
+ userEmail: authResult.user.email,
4098
+ userRoles: authResult.user.roles,
4099
+ };
4100
+ }
4101
+ // Handle pre-validated requestContext
4102
+ if (options.requestContext) {
4103
+ // When auth token was validated, token-derived identity fields
4104
+ // MUST take precedence over requestContext to prevent privilege escalation.
4105
+ const tokenDerivedFields = options.auth?.token && this.authProvider
4106
+ ? {
4107
+ userId: options.context?.userId,
4108
+ userEmail: options.context?.userEmail,
4109
+ userRoles: options.context?.userRoles,
4110
+ }
4111
+ : {};
4112
+ options.context = {
4113
+ ...(options.context || {}),
4114
+ ...options.requestContext,
4115
+ ...tokenDerivedFields,
4116
+ };
4117
+ }
4000
4118
  this.emitStreamStartEvents(options, startTime);
4001
4119
  // Auto-inject lifecycle middleware when callbacks are provided
4002
4120
  // (must happen before workflow early return so that path gets middleware too)
@@ -8001,6 +8119,106 @@ Current user's request: ${currentInput}`;
8001
8119
  });
8002
8120
  return budgetResult.shouldCompact;
8003
8121
  }
8122
+ // ============================================================================
8123
+ // Authentication Methods
8124
+ // ============================================================================
8125
+ /**
8126
+ * Set the authentication provider for the NeuroLink instance
8127
+ *
8128
+ * @param config - Auth provider or configuration to create one
8129
+ */
8130
+ async setAuthProvider(config) {
8131
+ // Clear any pending lazy-init promise so it does not race with this call.
8132
+ this.authInitPromise = undefined;
8133
+ // Duck-type check: direct MastraAuthProvider instance
8134
+ if ("authenticateToken" in config &&
8135
+ typeof config.authenticateToken === "function") {
8136
+ this.authProvider = config;
8137
+ logger.info(`Auth provider set: ${this.authProvider.type}`);
8138
+ }
8139
+ else if ("provider" in config) {
8140
+ this.authProvider = config.provider;
8141
+ logger.info(`Auth provider set: ${this.authProvider.type}`);
8142
+ }
8143
+ else {
8144
+ const typedConfig = config;
8145
+ const { AuthProviderFactory } = await import("./auth/AuthProviderFactory.js");
8146
+ this.authProvider = await AuthProviderFactory.createProvider(typedConfig.type, typedConfig.config);
8147
+ logger.info(`Auth provider created and set: ${typedConfig.type}`);
8148
+ }
8149
+ if (this.authProvider) {
8150
+ this.emitter.emit("auth:provider:set", {
8151
+ type: this.authProvider.type,
8152
+ timestamp: Date.now(),
8153
+ });
8154
+ }
8155
+ }
8156
+ /**
8157
+ * Get the currently configured authentication provider
8158
+ */
8159
+ getAuthProvider() {
8160
+ return this.authProvider;
8161
+ }
8162
+ /**
8163
+ * Lazily initialize the auth provider from pendingAuthConfig.
8164
+ * Called on first use (generate/stream with auth token) to avoid
8165
+ * async work in the synchronous constructor.
8166
+ */
8167
+ async ensureAuthProvider() {
8168
+ if (this.authProvider || !this.pendingAuthConfig) {
8169
+ return;
8170
+ }
8171
+ this.authInitPromise ??= (async () => {
8172
+ try {
8173
+ await this.setAuthProvider(this.pendingAuthConfig);
8174
+ this.pendingAuthConfig = undefined;
8175
+ }
8176
+ catch (err) {
8177
+ this.authInitPromise = undefined;
8178
+ throw err;
8179
+ }
8180
+ })();
8181
+ await this.authInitPromise;
8182
+ }
8183
+ /**
8184
+ * Set the current authentication context for request handling.
8185
+ *
8186
+ * Delegates to the global AuthContextHolder so that auth state is NOT
8187
+ * stored as an instance field (which would leak between concurrent requests
8188
+ * sharing the same NeuroLink singleton). Prefer `runWithAuthContext()` from
8189
+ * `authContext.ts` for proper request-scoped context via AsyncLocalStorage.
8190
+ *
8191
+ * @param context - The authenticated user context
8192
+ */
8193
+ async setAuthContext(context) {
8194
+ const { globalAuthContext } = await import("./auth/authContext.js");
8195
+ globalAuthContext.set(context);
8196
+ logger.debug("Auth context set", {
8197
+ userId: context.user.id,
8198
+ provider: context.provider,
8199
+ sessionId: context.session?.id,
8200
+ });
8201
+ }
8202
+ /**
8203
+ * Get the current authentication context.
8204
+ *
8205
+ * Checks AsyncLocalStorage first, then falls back to the global holder.
8206
+ */
8207
+ async getAuthContext() {
8208
+ const { getAuthContext: getCtx } = await import("./auth/authContext.js");
8209
+ return getCtx();
8210
+ }
8211
+ /**
8212
+ * Clear the current authentication context
8213
+ */
8214
+ async clearAuthContext() {
8215
+ const { globalAuthContext } = await import("./auth/authContext.js");
8216
+ const userId = globalAuthContext.get()?.user.id;
8217
+ globalAuthContext.clear();
8218
+ if (userId) {
8219
+ logger.debug(`Auth context cleared for user: ${userId}`);
8220
+ }
8221
+ }
8004
8222
  /**
8005
8223
  * Get the external server manager instance
8006
8224
  * Used internally by server adapters for external MCP server management
@@ -280,8 +280,8 @@ export class ChunkerRegistry extends BaseRegistry {
280
280
  * Register a chunker with aliases
281
281
  */
282
282
  registerChunker(strategy, factory, metadata) {
283
- this.register(strategy, factory, metadata);
284
- // Register aliases
283
+ this.register(strategy, factory, metadata.aliases ?? [], { metadata });
284
+ // Register aliases in local alias map for strategy resolution
285
285
  if (metadata.aliases) {
286
286
  for (const alias of metadata.aliases) {
287
287
  this.aliasMap.set(alias.toLowerCase(), strategy);
@@ -212,8 +212,8 @@ export class MetadataExtractorRegistry extends BaseRegistry {
212
212
  * Register an extractor with aliases
213
213
  */
214
214
  registerExtractor(type, factory, metadata) {
215
- this.register(type, factory, metadata);
216
- // Register aliases
215
+ this.register(type, factory, metadata.aliases, { metadata });
216
+ // Register aliases in local alias map for type resolution
217
217
  for (const alias of metadata.aliases) {
218
218
  this.aliasMap.set(alias.toLowerCase(), type);
219
219
  logger.debug(`[MetadataExtractorRegistry] Registered alias '${alias}' -> '${type}'`);
@@ -237,8 +237,8 @@ export class RerankerRegistry extends BaseRegistry {
237
237
  * Register a reranker with aliases
238
238
  */
239
239
  registerReranker(type, factory, metadata) {
240
- this.register(type, factory, metadata);
241
- // Register aliases
240
+ this.register(type, factory, metadata.aliases, { metadata });
241
+ // Register aliases in local alias map for type resolution
242
242
  for (const alias of metadata.aliases) {
243
243
  this.aliasMap.set(alias.toLowerCase(), type);
244
244
  logger.debug(`[RerankerRegistry] Registered alias '${alias}' -> '${type}'`);
@@ -36,8 +36,15 @@ export function createAgentRoutes(basePath = "/api") {
36
36
  // Note: tools should be passed as Record<string, Tool> in generate options
37
37
  // If request.tools is an array of tool names, we skip them
38
38
  context: {
39
- sessionId: request.sessionId,
40
- userId: request.userId,
39
+ // When an authenticated user context exists (set by auth middleware),
40
+ // always use its IDs to prevent caller-supplied impersonation.
41
+ sessionId: ctx.user
42
+ ? ctx.session?.id
43
+ : (ctx.session?.id ?? request.sessionId),
44
+ userId: ctx.user ? ctx.user.id : request.userId,
45
+ userEmail: ctx.user?.email,
46
+ userRoles: ctx.user?.roles,
47
+ requestId: ctx.requestId,
41
48
  },
42
49
  });
43
50
  // Map tool calls from SDK format to API format
@@ -78,6 +85,17 @@ export function createAgentRoutes(basePath = "/api") {
78
85
  systemPrompt: request.systemPrompt,
79
86
  temperature: request.temperature,
80
87
  maxTokens: request.maxTokens,
88
+ context: {
89
+ // When an authenticated user context exists (set by auth middleware),
90
+ // always use its IDs to prevent caller-supplied impersonation.
91
+ sessionId: ctx.user
92
+ ? ctx.session?.id
93
+ : (ctx.session?.id ?? request.sessionId),
94
+ userId: ctx.user ? ctx.user.id : request.userId,
95
+ userEmail: ctx.user?.email,
96
+ userRoles: ctx.user?.roles,
97
+ requestId: ctx.requestId,
98
+ },
81
99
  });
82
100
  // Create redactor (no-op if redaction is not enabled)
83
101
  const redactor = createStreamRedactor(ctx.redaction);
@@ -51,15 +51,18 @@ function redactSensitiveHeaders(headers) {
51
51
  /** Fill-first: index of the current primary account. Only advances when
52
52
  * the current account hits a 429 or auth failure that puts it on cooldown. */
53
53
  let primaryAccountIndex = 0;
54
+ /** Track account count so we can reset primaryAccountIndex when it changes. */
55
+ let lastKnownAccountCount = 0;
54
56
  const MAX_AUTH_RETRIES = 5;
55
57
  const MAX_CONSECUTIVE_REFRESH_FAILURES = 15;
56
58
  /** Decision 8: Cooldowns only for 401 and 429. */
57
59
  const AUTH_COOLDOWN_MS = 5 * 60 * 1000; // 5 minutes for 401
58
60
  const RATE_LIMIT_BACKOFF_BASE_MS = 1000; // 1 second base for 429
59
61
  const RATE_LIMIT_BACKOFF_CAP_MS = 10 * 60 * 1000; // 10 minute cap for 429
60
- /** Timeout for upstream requests to Anthropic. Generous to allow long-running
61
- * streaming responses to start, but prevents infinite hangs. */
62
- const UPSTREAM_FETCH_TIMEOUT_MS = 5 * 60 * 1000; // 5 minutes
62
+ /** Timeout for upstream requests to Anthropic. Must be generous enough
63
+ * to cover the full lifecycle of streaming responses, including extended
64
+ * thinking from Opus models (which can exceed 5 minutes for large contexts). */
65
+ const UPSTREAM_FETCH_TIMEOUT_MS = 15 * 60 * 1000; // 15 minutes
63
66
  const accountRuntimeState = new Map();
64
67
  /** Track whether we've run the one-time startup prune. */
65
68
  let startupPruneDone = false;
@@ -329,6 +332,15 @@ export function createClaudeProxyRoutes(modelRouter, basePath = "", accountStrat
329
332
  // - round-robin: rotate the starting index on every request
330
333
  // so traffic is spread evenly across accounts.
331
334
  const orderedAccounts = [...enabledAccounts];
335
+ // Reset round-robin index when account list size changes
336
+ // (e.g. a new account was authenticated while the proxy was running).
337
+ // Only applies to round-robin; fill-first uses primaryAccountIndex
338
+ // as a sticky primary and should not be disrupted.
339
+ if (accountStrategy === "round-robin" &&
340
+ orderedAccounts.length !== lastKnownAccountCount) {
341
+ primaryAccountIndex = 0;
342
+ lastKnownAccountCount = orderedAccounts.length;
343
+ }
332
344
  if (orderedAccounts.length > 1) {
333
345
  if (accountStrategy === "round-robin") {
334
346
  // Advance the index on every request for even distribution
@@ -559,11 +571,19 @@ export function createClaudeProxyRoutes(modelRouter, basePath = "", accountStrat
559
571
  // eslint-disable-next-line max-depth
560
572
  if (body.stream && retryResp.body) {
561
573
  const retryReader = retryResp.body.getReader();
574
+ let retryStreamClosed = false;
562
575
  const retryStream = new ReadableStream({
563
576
  async pull(controller) {
577
+ if (retryStreamClosed) {
578
+ return;
579
+ }
564
580
  try {
565
581
  const { done, value } = await retryReader.read();
582
+ if (retryStreamClosed) {
583
+ return;
584
+ }
566
585
  if (done) {
586
+ retryStreamClosed = true;
567
587
  controller.close();
568
588
  return;
569
589
  }
@@ -582,12 +602,16 @@ export function createClaudeProxyRoutes(modelRouter, basePath = "", accountStrat
582
602
  errorMessage: errMsg,
583
603
  durationMs: Date.now() - fetchStartMs,
584
604
  });
585
- const errorEvent = `event: error\ndata: ${JSON.stringify({ type: "error", error: { type: "api_error", message: `Upstream stream interrupted: ${errMsg}` } })}\n\n`;
586
- controller.enqueue(new TextEncoder().encode(errorEvent));
587
- controller.close();
605
+ if (!retryStreamClosed) {
606
+ retryStreamClosed = true;
607
+ const errorEvent = `event: error\ndata: ${JSON.stringify({ type: "error", error: { type: "api_error", message: `Upstream stream interrupted: ${errMsg}` } })}\n\n`;
608
+ controller.enqueue(new TextEncoder().encode(errorEvent));
609
+ controller.close();
610
+ }
588
611
  }
589
612
  },
590
613
  cancel() {
614
+ retryStreamClosed = true;
591
615
  retryReader.cancel();
592
616
  },
593
617
  });
@@ -866,14 +890,22 @@ export function createClaudeProxyRoutes(modelRouter, basePath = "", accountStrat
866
890
  continue;
867
891
  }
868
892
  // Stream is valid — create a new ReadableStream with first chunk prepended.
893
+ let mainStreamClosed = false;
869
894
  const remainingStream = new ReadableStream({
870
895
  start(controller) {
871
896
  controller.enqueue(firstChunk.value);
872
897
  },
873
898
  async pull(controller) {
899
+ if (mainStreamClosed) {
900
+ return;
901
+ }
874
902
  try {
875
903
  const { done, value } = await reader.read();
904
+ if (mainStreamClosed) {
905
+ return;
906
+ }
876
907
  if (done) {
908
+ mainStreamClosed = true;
877
909
  controller.close();
878
910
  return;
879
911
  }
@@ -894,12 +926,16 @@ export function createClaudeProxyRoutes(modelRouter, basePath = "", accountStrat
894
926
  });
895
927
  // Send SSE error event so the client gets a meaningful error
896
928
  // instead of a raw connection drop
897
- const errorEvent = `event: error\ndata: ${JSON.stringify({ type: "error", error: { type: "api_error", message: `Upstream stream interrupted: ${errMsg}` } })}\n\n`;
898
- controller.enqueue(new TextEncoder().encode(errorEvent));
899
- controller.close();
929
+ if (!mainStreamClosed) {
930
+ mainStreamClosed = true;
931
+ const errorEvent = `event: error\ndata: ${JSON.stringify({ type: "error", error: { type: "api_error", message: `Upstream stream interrupted: ${errMsg}` } })}\n\n`;
932
+ controller.enqueue(new TextEncoder().encode(errorEvent));
933
+ controller.close();
934
+ }
900
935
  }
901
936
  },
902
937
  cancel() {
938
+ mainStreamClosed = true;
903
939
  reader.cancel();
904
940
  },
905
941
  });