@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
@@ -1,344 +0,0 @@
1
- /**
2
- * Conversation Memory Manager for NeuroLink
3
- * Handles in-memory conversation storage, session management, and context injection
4
- */
5
- import { randomUUID } from "crypto";
6
- import { DEFAULT_MAX_SESSIONS, MEMORY_THRESHOLD_PERCENTAGE, MESSAGES_PER_TURN, } from "../config/conversationMemory.js";
7
- import { TokenUtils } from "../constants/tokens.js";
8
- import { SummarizationEngine } from "../context/summarizationEngine.js";
9
- import { runWithCurrentLangfuseContext } from "../services/server/ai/observability/instrumentation.js";
10
- import { tracers, withSpan } from "../telemetry/index.js";
11
- import { ConversationMemoryError } from "../types/conversation.js";
12
- import { buildContextFromPointer, getEffectiveTokenThreshold, } from "../utils/conversationMemory.js";
13
- import { logger } from "../utils/logger.js";
14
- export class ConversationMemoryManager {
15
- sessions = new Map();
16
- config;
17
- isInitialized = false;
18
- summarizationEngine = new SummarizationEngine();
19
- /**
20
- * Track sessions currently being summarized to prevent race conditions
21
- */
22
- summarizationInProgress = new Set();
23
- constructor(config) {
24
- this.config = config;
25
- }
26
- /**
27
- * Initialize the memory manager
28
- */
29
- async initialize() {
30
- if (this.isInitialized) {
31
- return;
32
- }
33
- try {
34
- this.isInitialized = true;
35
- logger.info("ConversationMemoryManager initialized", {
36
- storage: "in-memory",
37
- maxSessions: this.config.maxSessions,
38
- maxTurnsPerSession: this.config.maxTurnsPerSession,
39
- });
40
- }
41
- catch (error) {
42
- throw new ConversationMemoryError("Failed to initialize conversation memory", "CONFIG_ERROR", {
43
- error: error instanceof Error ? error.message : String(error),
44
- });
45
- }
46
- }
47
- /** Whether this memory manager can persist data (always true for in-memory within process) */
48
- get canPersist() {
49
- return true;
50
- }
51
- /** Whether Redis client is configured (always false for in-memory) */
52
- get isRedisConfigured() {
53
- return false;
54
- }
55
- /** Get health status for monitoring */
56
- getHealthStatus() {
57
- return {
58
- initialized: this.isInitialized,
59
- connected: false,
60
- };
61
- }
62
- /**
63
- * Store a conversation turn for a session
64
- * TOKEN-BASED: Validates message size and triggers summarization based on tokens
65
- */
66
- async storeConversationTurn(options) {
67
- return withSpan({
68
- name: "neurolink.memory.storeTurn",
69
- tracer: tracers.memory,
70
- attributes: {
71
- "memory.type": "in-memory",
72
- "session.id": options.sessionId,
73
- "memory.operation": "store_turn",
74
- },
75
- }, async (span) => {
76
- await this.ensureInitialized();
77
- try {
78
- // Get or create session
79
- let session = this.sessions.get(options.sessionId);
80
- if (!session) {
81
- session = this.createNewSession(options.sessionId, options.userId);
82
- this.sessions.set(options.sessionId, session);
83
- }
84
- const tokenThreshold = options.providerDetails
85
- ? getEffectiveTokenThreshold(options.providerDetails.provider, options.providerDetails.model, this.config.tokenThreshold, session.tokenThreshold)
86
- : this.config.tokenThreshold || 50000;
87
- const userMsg = await this.validateAndPrepareMessage(options.userMessage, "user", tokenThreshold);
88
- const assistantMsg = await this.validateAndPrepareMessage(options.aiResponse, "assistant", tokenThreshold);
89
- if (options.events && options.events.length > 0) {
90
- assistantMsg.events = options.events;
91
- }
92
- session.messages.push(userMsg, assistantMsg);
93
- session.lastActivity = Date.now();
94
- // Store API-reported token counts if available
95
- if (options.tokenUsage) {
96
- session.lastApiTokenCount = options.tokenUsage;
97
- }
98
- span.setAttribute("memory.message_count", session.messages.length);
99
- const shouldSummarize = options.enableSummarization !== undefined
100
- ? options.enableSummarization
101
- : this.config.enableSummarization;
102
- if (shouldSummarize) {
103
- // Only trigger summarization if not already in progress for this session
104
- if (!this.summarizationInProgress.has(options.sessionId)) {
105
- // Capture the current Langfuse ALS context before setImmediate,
106
- // which breaks automatic AsyncLocalStorage propagation and would
107
- // otherwise cause orphaned traces in Langfuse.
108
- const summarizeWithContext = runWithCurrentLangfuseContext(async () => {
109
- try {
110
- await this.checkAndSummarize(session, tokenThreshold, options.requestId);
111
- }
112
- catch (error) {
113
- logger.error("Background summarization failed", {
114
- sessionId: session.sessionId,
115
- requestId: options.requestId,
116
- error: error instanceof Error ? error.message : String(error),
117
- });
118
- }
119
- });
120
- setImmediate(summarizeWithContext);
121
- }
122
- else {
123
- logger.debug("[ConversationMemoryManager] Summarization already in progress, skipping", {
124
- sessionId: options.sessionId,
125
- });
126
- }
127
- }
128
- this.enforceSessionLimit();
129
- }
130
- catch (error) {
131
- throw new ConversationMemoryError(`Failed to store conversation turn for session ${options.sessionId}`, "STORAGE_ERROR", {
132
- sessionId: options.sessionId,
133
- error: error instanceof Error ? error.message : String(error),
134
- });
135
- }
136
- });
137
- }
138
- /**
139
- * Validate and prepare a message before adding to session
140
- * Truncates if message exceeds token limit
141
- */
142
- async validateAndPrepareMessage(content, role, threshold) {
143
- const id = randomUUID();
144
- const tokenCount = TokenUtils.estimateTokenCount(content);
145
- const maxMessageSize = Math.floor(threshold * MEMORY_THRESHOLD_PERCENTAGE);
146
- if (tokenCount > maxMessageSize) {
147
- const truncated = TokenUtils.truncateToTokenLimit(content, maxMessageSize);
148
- logger.warn("Message truncated due to token limit", {
149
- id,
150
- role,
151
- originalTokens: tokenCount,
152
- threshold,
153
- truncatedTo: maxMessageSize,
154
- });
155
- return {
156
- id,
157
- role,
158
- content: truncated,
159
- timestamp: new Date().toISOString(),
160
- metadata: {
161
- truncated: true,
162
- },
163
- };
164
- }
165
- return {
166
- id,
167
- role,
168
- content,
169
- timestamp: new Date().toISOString(),
170
- };
171
- }
172
- /**
173
- * Check if summarization is needed based on token count
174
- */
175
- async checkAndSummarize(session, threshold, requestId) {
176
- // Acquire lock - if already in progress, skip
177
- if (this.summarizationInProgress.has(session.sessionId)) {
178
- logger.debug("[ConversationMemoryManager] Summarization already in progress, skipping", {
179
- sessionId: session.sessionId,
180
- });
181
- return;
182
- }
183
- this.summarizationInProgress.add(session.sessionId);
184
- try {
185
- await this.summarizationEngine.checkAndSummarize(session, threshold, this.config, "[ConversationMemory]", requestId);
186
- }
187
- catch (error) {
188
- logger.error("Token counting or summarization failed", {
189
- sessionId: session.sessionId,
190
- error: error instanceof Error ? error.message : String(error),
191
- });
192
- }
193
- finally {
194
- // Release lock when done
195
- this.summarizationInProgress.delete(session.sessionId);
196
- }
197
- }
198
- /**
199
- * Estimate total tokens for a list of messages
200
- */
201
- estimateTokens(messages) {
202
- return messages.reduce((total, msg) => {
203
- let msgTokens = TokenUtils.estimateTokenCount(msg.content);
204
- if (msg.events && Array.isArray(msg.events) && msg.events.length > 0) {
205
- const eventsJson = JSON.stringify(msg.events);
206
- msgTokens += TokenUtils.estimateTokenCount(eventsJson);
207
- }
208
- return total + msgTokens;
209
- }, 0);
210
- }
211
- /**
212
- * Build context messages for AI prompt injection (TOKEN-BASED)
213
- * Returns messages from pointer onwards (or all if no pointer)
214
- * Now consistently async to match Redis implementation
215
- */
216
- async buildContextMessages(sessionId, _userId, _enableSummarization, requestId) {
217
- return withSpan({
218
- name: "neurolink.memory.buildContext",
219
- tracer: tracers.memory,
220
- attributes: {
221
- "memory.type": "in-memory",
222
- "session.id": sessionId,
223
- "memory.operation": "build_context",
224
- },
225
- }, async (span) => {
226
- const session = this.sessions.get(sessionId);
227
- const messages = session
228
- ? buildContextFromPointer(session, requestId)
229
- : [];
230
- span.setAttribute("memory.message_count", messages.length);
231
- return messages;
232
- });
233
- }
234
- getSession(sessionId, _userId) {
235
- return this.sessions.get(sessionId);
236
- }
237
- createSummarySystemMessage(content, summarizesFrom, summarizesTo) {
238
- return {
239
- id: `summary-${randomUUID()}`,
240
- role: "system",
241
- content: `Summary of previous conversation turns:\n\n${content}`,
242
- timestamp: new Date().toISOString(),
243
- metadata: {
244
- isSummary: true,
245
- summarizesFrom,
246
- summarizesTo,
247
- },
248
- };
249
- }
250
- async ensureInitialized() {
251
- if (!this.isInitialized) {
252
- await this.initialize();
253
- }
254
- }
255
- createNewSession(sessionId, userId) {
256
- return {
257
- sessionId,
258
- userId,
259
- messages: [],
260
- createdAt: Date.now(),
261
- lastActivity: Date.now(),
262
- };
263
- }
264
- enforceSessionLimit() {
265
- const maxSessions = this.config.maxSessions || DEFAULT_MAX_SESSIONS;
266
- if (this.sessions.size <= maxSessions) {
267
- return;
268
- }
269
- const sessions = Array.from(this.sessions.entries()).sort(([, a], [, b]) => a.lastActivity - b.lastActivity);
270
- const sessionsToRemove = sessions.slice(0, this.sessions.size - maxSessions);
271
- for (const [sessionId] of sessionsToRemove) {
272
- this.sessions.delete(sessionId);
273
- }
274
- }
275
- async getStats() {
276
- await this.ensureInitialized();
277
- const sessions = Array.from(this.sessions.values());
278
- const totalTurns = sessions.reduce((sum, session) => sum + session.messages.length / MESSAGES_PER_TURN, 0);
279
- return {
280
- totalSessions: sessions.length,
281
- totalTurns,
282
- };
283
- }
284
- async clearSession(sessionId) {
285
- return withSpan({
286
- name: "neurolink.memory.clear",
287
- tracer: tracers.memory,
288
- attributes: {
289
- "memory.type": "in-memory",
290
- "session.id": sessionId,
291
- "memory.operation": "clear_session",
292
- },
293
- }, async (span) => {
294
- const session = this.sessions.get(sessionId);
295
- if (!session) {
296
- span.setAttribute("memory.session_found", false);
297
- return false;
298
- }
299
- this.sessions.delete(sessionId);
300
- span.setAttribute("memory.session_found", true);
301
- logger.info("Session cleared", { sessionId });
302
- return true;
303
- });
304
- }
305
- async clearAllSessions() {
306
- const sessionIds = Array.from(this.sessions.keys());
307
- this.sessions.clear();
308
- logger.info("All sessions cleared", { clearedCount: sessionIds.length });
309
- }
310
- /**
311
- * Get the raw messages array for a session.
312
- * Returns the full messages list without context filtering or summarization.
313
- * Returns a deep copy to prevent external mutation of internal state.
314
- */
315
- async getSessionMessages(sessionId, _userId) {
316
- await this.ensureInitialized();
317
- const session = this.sessions.get(sessionId);
318
- return session ? session.messages.map((msg) => ({ ...msg })) : [];
319
- }
320
- /**
321
- * Replace the entire messages array for a session.
322
- * Creates the session if it does not exist.
323
- * Resets summary pointers since old pointers may reference messages that no longer exist.
324
- */
325
- async setSessionMessages(sessionId, messages, userId) {
326
- await this.ensureInitialized();
327
- let session = this.sessions.get(sessionId);
328
- if (!session) {
329
- session = this.createNewSession(sessionId, userId);
330
- this.sessions.set(sessionId, session);
331
- this.enforceSessionLimit();
332
- }
333
- session.messages = [...messages];
334
- session.summarizedUpToMessageId = undefined;
335
- session.summarizedMessage = undefined;
336
- session.lastTokenCount = undefined;
337
- session.lastCountedAt = undefined;
338
- session.lastActivity = Date.now();
339
- }
340
- /** Close/shutdown — no-op for in-memory manager (no external connections to release) */
341
- async close() {
342
- // In-memory manager has nothing to close
343
- }
344
- }
@@ -1,358 +0,0 @@
1
- import { z } from "zod";
2
- import { isAbortError } from "../utils/errorHandling.js";
3
- import { logger } from "../utils/logger.js";
4
- /**
5
- * Model configuration schema for validation
6
- */
7
- const ModelConfigSchema = z.object({
8
- id: z.string(),
9
- displayName: z.string(),
10
- capabilities: z.array(z.string()),
11
- deprecated: z.boolean(),
12
- pricing: z.object({
13
- input: z.number(),
14
- output: z.number(),
15
- }),
16
- contextWindow: z.number(),
17
- releaseDate: z.string(),
18
- });
19
- const ModelRegistrySchema = z.object({
20
- version: z.string(),
21
- lastUpdated: z.string(),
22
- models: z.record(z.string(), z.record(z.string(), ModelConfigSchema)),
23
- aliases: z.record(z.string(), z.string()).optional(),
24
- defaults: z.record(z.string(), z.string()).optional(),
25
- });
26
- /**
27
- * Dynamic Model Provider
28
- * Loads and manages model configurations from external sources
29
- */
30
- export class DynamicModelProvider {
31
- static instance;
32
- modelRegistry = null;
33
- lastFetch = 0;
34
- CACHE_DURATION = 5 * 60 * 1000; // 5 minutes
35
- constructor() { }
36
- static getInstance() {
37
- if (!this.instance) {
38
- this.instance = new DynamicModelProvider();
39
- }
40
- return this.instance;
41
- }
42
- /**
43
- * Initialize the model registry from multiple sources with timeout handling
44
- * Addresses hanging issues when localhost:3001 is not running or GitHub URLs timeout
45
- */
46
- async initialize() {
47
- const sources = [
48
- {
49
- url: process.env.MODEL_CONFIG_URL || "http://localhost:3001/api/v1/models",
50
- timeout: 3000, // 3s for localhost
51
- name: "local-server",
52
- },
53
- {
54
- url: `https://raw.githubusercontent.com/${process.env.MODEL_CONFIG_GITHUB_REPO || "juspay/neurolink"}/${process.env.MODEL_CONFIG_GITHUB_BRANCH || "release"}/config/models.json`,
55
- timeout: 5000, // 5s for GitHub
56
- name: "github-raw",
57
- },
58
- {
59
- url: "./config/models.json",
60
- timeout: 1000, // 1s for local file
61
- name: "local-file",
62
- },
63
- ];
64
- const errors = [];
65
- for (const source of sources) {
66
- try {
67
- logger.debug(`[DynamicModelProvider] Attempting to load from: ${source.url} (timeout: ${source.timeout}ms)`);
68
- const config = await this.loadFromSourceWithTimeout(source.url, source.timeout);
69
- // Validate the configuration
70
- const validatedConfig = ModelRegistrySchema.parse(config);
71
- this.modelRegistry = validatedConfig;
72
- this.lastFetch = Date.now();
73
- logger.info(`[DynamicModelProvider] Successfully loaded model registry from: ${source.name}`, {
74
- source: source.url,
75
- modelCount: this.getTotalModelCount(),
76
- providerCount: Object.keys(validatedConfig.models).length,
77
- loadTime: `<${source.timeout}ms`,
78
- });
79
- return; // Success, stop trying other sources
80
- }
81
- catch (error) {
82
- const errorMessage = error instanceof Error ? error.message : String(error);
83
- errors.push({ source: source.name, error: errorMessage });
84
- logger.warn(`[DynamicModelProvider] Failed to load from ${source.name} (${source.url}):`, {
85
- error: errorMessage,
86
- timeout: source.timeout,
87
- });
88
- continue;
89
- }
90
- }
91
- // Log all failures for debugging
92
- logger.warn(`[DynamicModelProvider] All model configuration sources failed`, { errors });
93
- throw new Error(`Failed to load model configuration from all source. Attempted: ${errors.map((e) => e.source).join(", ")}`);
94
- }
95
- /**
96
- * Load configuration from a source with timeout handling
97
- * Prevents hanging when local servers are down or network requests timeout
98
- */
99
- async loadFromSourceWithTimeout(source, timeoutMs) {
100
- if (source.startsWith("http")) {
101
- // Setup timeout and abort controller
102
- const controller = new AbortController();
103
- const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
104
- try {
105
- // Add health check for localhost before attempting full request
106
- if (source.includes("localhost") || source.includes("127.0.0.1")) {
107
- await this.healthCheckLocalhost(source, Math.min(timeoutMs, 1000));
108
- }
109
- const response = await fetch(source, {
110
- headers: {
111
- "User-Agent": "NeuroLink/1.0 (+https://github.com/juspay/neurolink)",
112
- Accept: "application/json",
113
- "Cache-Control": "no-cache",
114
- },
115
- signal: controller.signal,
116
- });
117
- clearTimeout(timeoutId);
118
- if (!response.ok) {
119
- throw new Error(`HTTP ${response.status}: ${response.statusText}`);
120
- }
121
- const data = await response.json();
122
- return data;
123
- }
124
- catch (error) {
125
- clearTimeout(timeoutId);
126
- if (isAbortError(error)) {
127
- throw new Error(`Request timeout after ${timeoutMs}ms`, {
128
- cause: error,
129
- });
130
- }
131
- throw error;
132
- }
133
- }
134
- else {
135
- // Load from local file with timeout (for very large files)
136
- return new Promise((resolve, reject) => {
137
- const timeoutId = setTimeout(() => {
138
- reject(new Error(`File read timeout after ${timeoutMs}ms`));
139
- }, timeoutMs);
140
- (async () => {
141
- try {
142
- const fs = await import("fs");
143
- const path = await import("path");
144
- const fullPath = path.resolve(source);
145
- // Check if file exists first
146
- if (!fs.existsSync(fullPath)) {
147
- throw new Error(`File not found: ${fullPath}`);
148
- }
149
- const content = fs.readFileSync(fullPath, "utf8");
150
- const data = JSON.parse(content);
151
- clearTimeout(timeoutId);
152
- resolve(data);
153
- }
154
- catch (error) {
155
- clearTimeout(timeoutId);
156
- reject(error);
157
- }
158
- })();
159
- });
160
- }
161
- }
162
- /**
163
- * Quick health check for localhost endpoints
164
- * Prevents hanging on non-responsive local servers
165
- */
166
- async healthCheckLocalhost(url, timeoutMs) {
167
- const healthUrl = url.replace(/\/api\/.*$/, "/health") || `${url}/health`;
168
- const controller = new AbortController();
169
- const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
170
- try {
171
- const response = await fetch(healthUrl, {
172
- method: "HEAD", // Lightweight request
173
- signal: controller.signal,
174
- });
175
- clearTimeout(timeoutId);
176
- // Don't throw on 404 - the main endpoint might still work
177
- if (response.status >= 500) {
178
- throw new Error(`Server error: ${response.status}`);
179
- }
180
- }
181
- catch (error) {
182
- clearTimeout(timeoutId);
183
- if (isAbortError(error)) {
184
- throw new Error(`Localhost health check timeout - server may not be running`, { cause: error });
185
- }
186
- // For connection refused, throw a more specific error
187
- if (error instanceof Error && error.message.includes("ECONNREFUSED")) {
188
- throw new Error(`Localhost server not running at ${url}`, {
189
- cause: error,
190
- });
191
- }
192
- // For other errors, let the main request handle them
193
- logger.debug(`Health check failed for ${url}, proceeding with main request`, {
194
- error: error instanceof Error ? error.message : String(error),
195
- });
196
- }
197
- }
198
- /**
199
- * Get all available models for a provider
200
- */
201
- getModelsForProvider(provider) {
202
- this.ensureInitialized();
203
- return this.modelRegistry?.models[provider] || {};
204
- }
205
- /**
206
- * Resolve a model by provider and model hint
207
- */
208
- resolveModel(provider, modelHint) {
209
- this.ensureInitialized();
210
- const providerModels = this.getModelsForProvider(provider);
211
- if (!modelHint) {
212
- // Use default model for provider
213
- const defaultModel = this.modelRegistry?.defaults?.[provider];
214
- return defaultModel ? providerModels[defaultModel] : null;
215
- }
216
- // Check for exact match
217
- if (providerModels[modelHint]) {
218
- return providerModels[modelHint];
219
- }
220
- // Check aliases
221
- const aliasTarget = this.modelRegistry?.aliases?.[modelHint];
222
- if (aliasTarget) {
223
- const [aliasProvider, aliasModel] = aliasTarget.split("/");
224
- return this.resolveModel(aliasProvider, aliasModel);
225
- }
226
- // Fuzzy matching (partial string match)
227
- const fuzzyMatch = Object.keys(providerModels).find((key) => key.toLowerCase().includes(modelHint.toLowerCase()) ||
228
- modelHint.toLowerCase().includes(key.toLowerCase()));
229
- return fuzzyMatch ? providerModels[fuzzyMatch] : null;
230
- }
231
- /**
232
- * Search models by capabilities
233
- */
234
- searchByCapability(capability, options = {}) {
235
- this.ensureInitialized();
236
- const results = [];
237
- if (!this.modelRegistry) {
238
- return results;
239
- }
240
- for (const [providerName, models] of Object.entries(this.modelRegistry.models)) {
241
- if (options.provider && providerName !== options.provider) {
242
- continue;
243
- }
244
- for (const [modelName, modelConfig] of Object.entries(models)) {
245
- if (options.excludeDeprecated && modelConfig.deprecated) {
246
- continue;
247
- }
248
- if (options.maxPrice && modelConfig.pricing.input > options.maxPrice) {
249
- continue;
250
- }
251
- if (!modelConfig.capabilities.includes(capability)) {
252
- continue;
253
- }
254
- results.push({
255
- provider: providerName,
256
- model: modelName,
257
- config: modelConfig,
258
- });
259
- }
260
- }
261
- // Sort by price (cheapest first)
262
- return results.sort((a, b) => a.config.pricing.input - b.config.pricing.input);
263
- }
264
- /**
265
- * Get the best model for a specific use case
266
- */
267
- getBestModelFor(useCase) {
268
- this.ensureInitialized();
269
- switch (useCase) {
270
- case "coding":
271
- return (this.searchByCapability("functionCalling", {
272
- excludeDeprecated: true,
273
- })[0] || null);
274
- case "analysis":
275
- return (this.searchByCapability("analysis", { excludeDeprecated: true })[0] ||
276
- null);
277
- case "vision":
278
- return (this.searchByCapability("vision", { excludeDeprecated: true })[0] ||
279
- null);
280
- case "fastest":
281
- // Return cheapest as proxy for fastest (usually correlates)
282
- return (this.getAllModels()
283
- .filter((m) => !m.config.deprecated)
284
- .sort((a, b) => a.config.pricing.input - b.config.pricing.input)[0] || null);
285
- case "cheapest":
286
- return (this.getAllModels()
287
- .filter((m) => !m.config.deprecated)
288
- .sort((a, b) => a.config.pricing.input - b.config.pricing.input)[0] || null);
289
- default:
290
- return null;
291
- }
292
- }
293
- /**
294
- * Get all models across all providers
295
- */
296
- getAllModels() {
297
- this.ensureInitialized();
298
- const results = [];
299
- if (!this.modelRegistry) {
300
- return results;
301
- }
302
- for (const [providerName, models] of Object.entries(this.modelRegistry.models)) {
303
- for (const [modelName, modelConfig] of Object.entries(models)) {
304
- results.push({
305
- provider: providerName,
306
- model: modelName,
307
- config: modelConfig,
308
- });
309
- }
310
- }
311
- return results;
312
- }
313
- /**
314
- * Get total number of models
315
- */
316
- getTotalModelCount() {
317
- if (!this.modelRegistry) {
318
- return 0;
319
- }
320
- return Object.values(this.modelRegistry.models).reduce((total, providerModels) => total + Object.keys(providerModels).length, 0);
321
- }
322
- /**
323
- * Check if cache needs refresh
324
- */
325
- needsRefresh() {
326
- return Date.now() - this.lastFetch > this.CACHE_DURATION;
327
- }
328
- /**
329
- * Force refresh the model registry
330
- */
331
- async refresh() {
332
- this.modelRegistry = null;
333
- await this.initialize();
334
- }
335
- /**
336
- * Ensure the registry is initialized
337
- */
338
- ensureInitialized() {
339
- if (!this.modelRegistry) {
340
- throw new Error("Model registry not initialized. Call initialize() first.");
341
- }
342
- }
343
- /**
344
- * Get registry metadata
345
- */
346
- getMetadata() {
347
- if (!this.modelRegistry) {
348
- return null;
349
- }
350
- return {
351
- version: this.modelRegistry.version,
352
- lastUpdated: this.modelRegistry.lastUpdated,
353
- modelCount: this.getTotalModelCount(),
354
- };
355
- }
356
- }
357
- // Export singleton instance
358
- export const dynamicModelProvider = DynamicModelProvider.getInstance();