@juspay/neurolink 9.54.6 → 9.54.8

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 (408) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/action/actionInputs.d.ts +1 -1
  3. package/dist/adapters/video/directorPipeline.js +6 -0
  4. package/dist/adapters/video/vertexVideoHandler.js +6 -0
  5. package/dist/agent/directTools.d.ts +3 -23
  6. package/dist/auth/AuthProviderFactory.d.ts +1 -3
  7. package/dist/auth/anthropicOAuth.d.ts +4 -7
  8. package/dist/auth/anthropicOAuth.js +23 -0
  9. package/dist/auth/errors.d.ts +1 -1
  10. package/dist/auth/index.d.ts +11 -0
  11. package/dist/auth/index.js +14 -0
  12. package/dist/auth/middleware/AuthMiddleware.d.ts +5 -60
  13. package/dist/auth/middleware/AuthMiddleware.js +3 -0
  14. package/dist/auth/middleware/rateLimitByUser.d.ts +4 -93
  15. package/dist/auth/middleware/rateLimitByUser.js +4 -0
  16. package/dist/auth/providers/BaseAuthProvider.d.ts +1 -1
  17. package/dist/auth/providers/CognitoProvider.js +3 -0
  18. package/dist/auth/providers/KeycloakProvider.js +3 -0
  19. package/dist/auth/providers/auth0.d.ts +1 -1
  20. package/dist/auth/sessionManager.d.ts +2 -0
  21. package/dist/auth/sessionManager.js +53 -11
  22. package/dist/auth/tokenStore.d.ts +2 -0
  23. package/dist/auth/tokenStore.js +45 -4
  24. package/dist/autoresearch/tools.d.ts +1 -16
  25. package/dist/browser/neurolink.min.js +358 -358
  26. package/dist/cli/commands/config.d.ts +3 -123
  27. package/dist/cli/commands/config.js +4 -2
  28. package/dist/cli/commands/evaluate.d.ts +1 -19
  29. package/dist/cli/commands/proxy.d.ts +1 -1
  30. package/dist/cli/commands/proxy.js +3 -0
  31. package/dist/cli/commands/rag.js +3 -0
  32. package/dist/cli/commands/setup-anthropic.d.ts +2 -6
  33. package/dist/cli/commands/setup-anthropic.js +1 -1
  34. package/dist/cli/commands/setup-azure.d.ts +2 -6
  35. package/dist/cli/commands/setup-azure.js +1 -1
  36. package/dist/cli/commands/setup-bedrock.d.ts +2 -6
  37. package/dist/cli/commands/setup-bedrock.js +1 -1
  38. package/dist/cli/commands/setup-gcp.d.ts +2 -6
  39. package/dist/cli/commands/setup-google-ai.d.ts +2 -6
  40. package/dist/cli/commands/setup-google-ai.js +1 -1
  41. package/dist/cli/commands/setup-huggingface.d.ts +1 -5
  42. package/dist/cli/commands/setup-mistral.d.ts +1 -5
  43. package/dist/cli/commands/setup-openai.d.ts +2 -6
  44. package/dist/cli/commands/setup-openai.js +1 -1
  45. package/dist/cli/commands/setup.d.ts +1 -8
  46. package/dist/cli/commands/task.js +1 -0
  47. package/dist/cli/commands/voiceServer.d.ts +1 -4
  48. package/dist/cli/loop/session.js +31 -10
  49. package/dist/cli/utils/interactiveSetup.d.ts +2 -15
  50. package/dist/cli/utils/videoFileUtils.d.ts +1 -15
  51. package/dist/client/aiSdkAdapter.d.ts +1 -1
  52. package/dist/client/aiSdkAdapter.js +1 -0
  53. package/dist/client/httpClient.d.ts +1 -0
  54. package/dist/client/httpClient.js +13 -0
  55. package/dist/client/sseClient.d.ts +1 -0
  56. package/dist/client/sseClient.js +29 -0
  57. package/dist/client/streamingClient.d.ts +2 -0
  58. package/dist/client/streamingClient.js +19 -0
  59. package/dist/client/wsClient.d.ts +6 -0
  60. package/dist/client/wsClient.js +90 -10
  61. package/dist/context/budgetChecker.js +3 -1
  62. package/dist/context/contextCompactor.js +163 -143
  63. package/dist/context/fileSummarizationService.d.ts +1 -9
  64. package/dist/context/summarizationEngine.js +29 -16
  65. package/dist/core/baseProvider.js +124 -153
  66. package/dist/core/infrastructure/baseRegistry.d.ts +1 -7
  67. package/dist/core/modules/GenerationHandler.d.ts +3 -2
  68. package/dist/core/modules/GenerationHandler.js +9 -1
  69. package/dist/core/modules/StreamHandler.js +9 -0
  70. package/dist/core/modules/ToolsManager.js +18 -2
  71. package/dist/evaluation/BatchEvaluator.d.ts +1 -97
  72. package/dist/evaluation/EvaluationAggregator.d.ts +1 -118
  73. package/dist/evaluation/EvaluatorFactory.d.ts +1 -13
  74. package/dist/evaluation/EvaluatorRegistry.d.ts +1 -50
  75. package/dist/evaluation/errors/EvaluationError.d.ts +2 -27
  76. package/dist/evaluation/hooks/langfuseAdapter.d.ts +1 -39
  77. package/dist/evaluation/hooks/observabilityHooks.d.ts +3 -55
  78. package/dist/evaluation/hooks/observabilityHooks.js +3 -0
  79. package/dist/evaluation/pipeline/strategies/batchStrategy.d.ts +7 -61
  80. package/dist/evaluation/pipeline/strategies/batchStrategy.js +7 -7
  81. package/dist/evaluation/ragasEvaluator.js +54 -37
  82. package/dist/evaluation/reporting/metricsCollector.d.ts +1 -60
  83. package/dist/evaluation/reporting/reportGenerator.d.ts +1 -17
  84. package/dist/evaluation/scorers/rule/contentSimilarityScorer.d.ts +1 -29
  85. package/dist/evaluation/scorers/rule/formatScorer.d.ts +1 -42
  86. package/dist/evaluation/scorers/rule/keywordCoverageScorer.d.ts +1 -19
  87. package/dist/evaluation/scorers/rule/lengthScorer.d.ts +1 -33
  88. package/dist/factories/providerFactory.d.ts +1 -16
  89. package/dist/factories/providerFactory.js +2 -0
  90. package/dist/image-gen/ImageGenService.d.ts +3 -0
  91. package/dist/image-gen/ImageGenService.js +3 -0
  92. package/dist/lib/action/actionInputs.d.ts +1 -1
  93. package/dist/lib/adapters/video/directorPipeline.js +6 -0
  94. package/dist/lib/adapters/video/vertexVideoHandler.js +6 -0
  95. package/dist/lib/agent/directTools.d.ts +3 -23
  96. package/dist/lib/auth/AuthProviderFactory.d.ts +1 -3
  97. package/dist/lib/auth/anthropicOAuth.d.ts +4 -7
  98. package/dist/lib/auth/anthropicOAuth.js +23 -0
  99. package/dist/lib/auth/errors.d.ts +1 -1
  100. package/dist/lib/auth/index.d.ts +11 -0
  101. package/dist/lib/auth/index.js +14 -0
  102. package/dist/lib/auth/middleware/AuthMiddleware.d.ts +5 -60
  103. package/dist/lib/auth/middleware/AuthMiddleware.js +3 -0
  104. package/dist/lib/auth/middleware/rateLimitByUser.d.ts +4 -93
  105. package/dist/lib/auth/middleware/rateLimitByUser.js +4 -0
  106. package/dist/lib/auth/providers/BaseAuthProvider.d.ts +1 -1
  107. package/dist/lib/auth/providers/CognitoProvider.js +3 -0
  108. package/dist/lib/auth/providers/KeycloakProvider.js +3 -0
  109. package/dist/lib/auth/providers/auth0.d.ts +1 -1
  110. package/dist/lib/auth/sessionManager.d.ts +2 -0
  111. package/dist/lib/auth/sessionManager.js +53 -11
  112. package/dist/lib/auth/tokenStore.d.ts +2 -0
  113. package/dist/lib/auth/tokenStore.js +45 -4
  114. package/dist/lib/autoresearch/tools.d.ts +1 -16
  115. package/dist/lib/client/aiSdkAdapter.d.ts +1 -1
  116. package/dist/lib/client/aiSdkAdapter.js +1 -0
  117. package/dist/lib/client/httpClient.d.ts +1 -0
  118. package/dist/lib/client/httpClient.js +13 -0
  119. package/dist/lib/client/sseClient.d.ts +1 -0
  120. package/dist/lib/client/sseClient.js +29 -0
  121. package/dist/lib/client/streamingClient.d.ts +2 -0
  122. package/dist/lib/client/streamingClient.js +19 -0
  123. package/dist/lib/client/wsClient.d.ts +6 -0
  124. package/dist/lib/client/wsClient.js +90 -10
  125. package/dist/lib/context/budgetChecker.js +3 -1
  126. package/dist/lib/context/contextCompactor.js +163 -143
  127. package/dist/lib/context/fileSummarizationService.d.ts +1 -9
  128. package/dist/lib/context/summarizationEngine.js +29 -16
  129. package/dist/lib/core/baseProvider.js +124 -153
  130. package/dist/lib/core/infrastructure/baseRegistry.d.ts +1 -7
  131. package/dist/lib/core/modules/GenerationHandler.d.ts +3 -2
  132. package/dist/lib/core/modules/GenerationHandler.js +9 -1
  133. package/dist/lib/core/modules/StreamHandler.js +9 -0
  134. package/dist/lib/core/modules/ToolsManager.js +18 -2
  135. package/dist/lib/evaluation/BatchEvaluator.d.ts +1 -97
  136. package/dist/lib/evaluation/EvaluationAggregator.d.ts +1 -118
  137. package/dist/lib/evaluation/EvaluatorFactory.d.ts +1 -13
  138. package/dist/lib/evaluation/EvaluatorRegistry.d.ts +1 -50
  139. package/dist/lib/evaluation/errors/EvaluationError.d.ts +2 -27
  140. package/dist/lib/evaluation/hooks/langfuseAdapter.d.ts +1 -39
  141. package/dist/lib/evaluation/hooks/observabilityHooks.d.ts +3 -55
  142. package/dist/lib/evaluation/hooks/observabilityHooks.js +3 -0
  143. package/dist/lib/evaluation/pipeline/strategies/batchStrategy.d.ts +7 -61
  144. package/dist/lib/evaluation/pipeline/strategies/batchStrategy.js +7 -7
  145. package/dist/lib/evaluation/ragasEvaluator.js +54 -37
  146. package/dist/lib/evaluation/reporting/metricsCollector.d.ts +1 -60
  147. package/dist/lib/evaluation/reporting/reportGenerator.d.ts +1 -17
  148. package/dist/lib/evaluation/scorers/rule/contentSimilarityScorer.d.ts +1 -29
  149. package/dist/lib/evaluation/scorers/rule/formatScorer.d.ts +1 -42
  150. package/dist/lib/evaluation/scorers/rule/keywordCoverageScorer.d.ts +1 -19
  151. package/dist/lib/evaluation/scorers/rule/lengthScorer.d.ts +1 -33
  152. package/dist/lib/factories/providerFactory.d.ts +1 -16
  153. package/dist/lib/factories/providerFactory.js +2 -0
  154. package/dist/lib/image-gen/ImageGenService.d.ts +3 -0
  155. package/dist/lib/image-gen/ImageGenService.js +3 -0
  156. package/dist/lib/mcp/batching/requestBatcher.js +99 -73
  157. package/dist/lib/mcp/httpRateLimiter.js +3 -1
  158. package/dist/lib/mcp/httpRetryHandler.js +3 -1
  159. package/dist/lib/mcp/mcpClientFactory.js +3 -1
  160. package/dist/lib/mcp/multiServerManager.d.ts +1 -14
  161. package/dist/lib/mcp/servers/aiProviders/aiAnalysisTools.js +5 -1
  162. package/dist/lib/mcp/servers/aiProviders/aiWorkflowTools.js +1 -0
  163. package/dist/lib/mcp/toolDiscoveryService.js +70 -57
  164. package/dist/lib/mcp/toolRegistry.js +11 -1
  165. package/dist/lib/memory/memoryRetrievalTools.js +182 -141
  166. package/dist/lib/neurolink.js +236 -40
  167. package/dist/lib/observability/exporterRegistry.d.ts +3 -21
  168. package/dist/lib/observability/exporters/sentryExporter.js +1 -0
  169. package/dist/lib/observability/metricsAggregator.d.ts +1 -31
  170. package/dist/lib/observability/tokenTracker.d.ts +7 -16
  171. package/dist/lib/observability/tokenTracker.js +6 -4
  172. package/dist/lib/observability/utils/spanSerializer.d.ts +5 -1
  173. package/dist/lib/observability/utils/spanSerializer.js +24 -4
  174. package/dist/lib/processors/base/BaseFileProcessor.js +66 -53
  175. package/dist/lib/processors/document/ExcelProcessor.d.ts +1 -1
  176. package/dist/lib/processors/errors/errorHelpers.d.ts +1 -31
  177. package/dist/lib/processors/errors/errorSerializer.d.ts +1 -45
  178. package/dist/lib/processors/registry/ProcessorRegistry.js +17 -6
  179. package/dist/lib/providers/amazonBedrock.js +189 -15
  180. package/dist/lib/providers/amazonSagemaker.js +25 -11
  181. package/dist/lib/providers/anthropic.js +13 -0
  182. package/dist/lib/providers/azureOpenai.js +2 -0
  183. package/dist/lib/providers/googleAiStudio.js +96 -26
  184. package/dist/lib/providers/googleVertex.js +66 -27
  185. package/dist/lib/providers/huggingFace.js +2 -0
  186. package/dist/lib/providers/litellm.js +2 -0
  187. package/dist/lib/providers/mistral.js +2 -0
  188. package/dist/lib/providers/ollama.js +84 -5
  189. package/dist/lib/providers/openAI.d.ts +2 -0
  190. package/dist/lib/providers/openAI.js +17 -6
  191. package/dist/lib/providers/openRouter.js +2 -0
  192. package/dist/lib/providers/openaiCompatible.js +2 -0
  193. package/dist/lib/providers/sagemaker/detection.d.ts +1 -33
  194. package/dist/lib/providers/sagemaker/diagnostics.d.ts +1 -25
  195. package/dist/lib/providers/sagemaker/language-model.d.ts +1 -1
  196. package/dist/lib/proxy/proxyConfig.js +4 -0
  197. package/dist/lib/proxy/proxyEnv.d.ts +1 -17
  198. package/dist/lib/proxy/proxyTracer.d.ts +1 -36
  199. package/dist/lib/proxy/proxyTracer.js +9 -0
  200. package/dist/lib/proxy/quietDetector.d.ts +1 -7
  201. package/dist/lib/proxy/rawStreamCapture.d.ts +1 -10
  202. package/dist/lib/proxy/requestLogger.d.ts +1 -21
  203. package/dist/lib/proxy/sseInterceptor.d.ts +1 -66
  204. package/dist/lib/proxy/sseInterceptor.js +6 -0
  205. package/dist/lib/proxy/updateChecker.d.ts +1 -6
  206. package/dist/lib/proxy/updateState.d.ts +1 -12
  207. package/dist/lib/rag/chunkers/BaseChunker.js +36 -22
  208. package/dist/lib/rag/chunking/jsonChunker.d.ts +1 -1
  209. package/dist/lib/rag/errors/RAGError.d.ts +1 -2
  210. package/dist/lib/rag/ragIntegration.js +45 -32
  211. package/dist/lib/rag/reranker/reranker.js +151 -122
  212. package/dist/lib/rag/retrieval/vectorQueryTool.js +79 -65
  213. package/dist/lib/sdk/toolRegistration.d.ts +10 -44
  214. package/dist/lib/sdk/toolRegistration.js +1 -1
  215. package/dist/lib/server/middleware/abortSignal.d.ts +1 -11
  216. package/dist/lib/server/middleware/auth.d.ts +1 -21
  217. package/dist/lib/server/middleware/auth.js +12 -0
  218. package/dist/lib/server/middleware/common.js +48 -32
  219. package/dist/lib/server/middleware/deprecation.d.ts +1 -20
  220. package/dist/lib/server/middleware/rateLimit.d.ts +1 -75
  221. package/dist/lib/server/middleware/validation.d.ts +3 -81
  222. package/dist/lib/server/middleware/validation.js +3 -0
  223. package/dist/lib/server/openapi/generator.d.ts +1 -47
  224. package/dist/lib/server/routes/agentRoutes.js +112 -57
  225. package/dist/lib/server/routes/claudeProxyRoutes.d.ts +1 -6
  226. package/dist/lib/server/routes/claudeProxyRoutes.js +127 -13
  227. package/dist/lib/server/routes/healthRoutes.js +58 -12
  228. package/dist/lib/server/routes/index.d.ts +1 -26
  229. package/dist/lib/server/routes/mcpRoutes.js +40 -7
  230. package/dist/lib/server/routes/memoryRoutes.js +22 -7
  231. package/dist/lib/server/routes/openApiRoutes.js +30 -6
  232. package/dist/lib/server/routes/toolRoutes.js +140 -68
  233. package/dist/lib/server/streaming/dataStream.d.ts +1 -35
  234. package/dist/lib/server/streaming/dataStream.js +15 -0
  235. package/dist/lib/services/server/ai/observability/instrumentation.js +114 -14
  236. package/dist/lib/session/globalSessionState.d.ts +1 -10
  237. package/dist/lib/tasks/tools/taskTools.d.ts +2 -2
  238. package/dist/lib/telemetry/traceContext.d.ts +9 -0
  239. package/dist/lib/telemetry/traceContext.js +19 -0
  240. package/dist/lib/telemetry/tracers.d.ts +2 -0
  241. package/dist/lib/telemetry/tracers.js +2 -0
  242. package/dist/lib/types/action.d.ts +2 -0
  243. package/dist/lib/types/artifact.d.ts +7 -0
  244. package/dist/lib/types/auth.d.ts +125 -18
  245. package/dist/lib/types/autoresearch.d.ts +12 -0
  246. package/dist/lib/types/cli.d.ts +415 -0
  247. package/dist/lib/types/client.d.ts +34 -0
  248. package/dist/lib/types/common.d.ts +12 -41
  249. package/dist/lib/types/context.d.ts +5 -0
  250. package/dist/lib/types/evaluation.d.ts +332 -1
  251. package/dist/lib/types/file.d.ts +4 -0
  252. package/dist/lib/types/mcp.d.ts +102 -2
  253. package/dist/lib/types/middleware.d.ts +116 -0
  254. package/dist/lib/types/multimodal.d.ts +65 -0
  255. package/dist/lib/types/observability.d.ts +81 -0
  256. package/dist/lib/types/processor.d.ts +47 -0
  257. package/dist/lib/types/providers.d.ts +120 -16
  258. package/dist/lib/types/proxy.d.ts +321 -1
  259. package/dist/lib/types/rag.d.ts +22 -0
  260. package/dist/lib/types/scorer.d.ts +141 -0
  261. package/dist/lib/types/server.d.ts +99 -0
  262. package/dist/lib/types/span.d.ts +2 -1
  263. package/dist/lib/types/span.js +1 -0
  264. package/dist/lib/types/tools.d.ts +44 -0
  265. package/dist/lib/types/tts.d.ts +6 -0
  266. package/dist/lib/types/utilities.d.ts +22 -0
  267. package/dist/lib/types/workflow.d.ts +18 -0
  268. package/dist/lib/utils/async/retry.d.ts +2 -8
  269. package/dist/lib/utils/async/retry.js +9 -9
  270. package/dist/lib/utils/imageCompressor.d.ts +1 -21
  271. package/dist/lib/utils/imageCompressor.js +5 -1
  272. package/dist/lib/utils/messageBuilder.d.ts +1 -1
  273. package/dist/lib/utils/redis.d.ts +1 -4
  274. package/dist/lib/utils/toolEndEmitter.d.ts +25 -0
  275. package/dist/lib/utils/toolEndEmitter.js +65 -0
  276. package/dist/lib/workflow/config.d.ts +7 -32
  277. package/dist/lib/workflow/core/ensembleExecutor.js +28 -0
  278. package/dist/lib/workflow/core/judgeScorer.js +23 -0
  279. package/dist/lib/workflow/core/responseConditioner.js +17 -0
  280. package/dist/lib/workflow/core/workflowRunner.d.ts +1 -19
  281. package/dist/lib/workflow/core/workflowRunner.js +202 -147
  282. package/dist/mcp/batching/requestBatcher.js +99 -73
  283. package/dist/mcp/httpRateLimiter.js +3 -1
  284. package/dist/mcp/httpRetryHandler.js +3 -1
  285. package/dist/mcp/mcpClientFactory.js +3 -1
  286. package/dist/mcp/multiServerManager.d.ts +1 -14
  287. package/dist/mcp/servers/aiProviders/aiAnalysisTools.js +5 -1
  288. package/dist/mcp/servers/aiProviders/aiWorkflowTools.js +1 -0
  289. package/dist/mcp/toolDiscoveryService.js +70 -57
  290. package/dist/mcp/toolRegistry.js +11 -1
  291. package/dist/memory/memoryRetrievalTools.js +182 -141
  292. package/dist/neurolink.js +236 -40
  293. package/dist/observability/exporterRegistry.d.ts +3 -21
  294. package/dist/observability/exporters/sentryExporter.js +1 -0
  295. package/dist/observability/metricsAggregator.d.ts +1 -31
  296. package/dist/observability/tokenTracker.d.ts +7 -16
  297. package/dist/observability/tokenTracker.js +6 -4
  298. package/dist/observability/utils/spanSerializer.d.ts +5 -1
  299. package/dist/observability/utils/spanSerializer.js +24 -4
  300. package/dist/processors/base/BaseFileProcessor.js +66 -53
  301. package/dist/processors/document/ExcelProcessor.d.ts +1 -1
  302. package/dist/processors/errors/errorHelpers.d.ts +1 -31
  303. package/dist/processors/errors/errorSerializer.d.ts +1 -45
  304. package/dist/processors/registry/ProcessorRegistry.js +17 -6
  305. package/dist/providers/amazonBedrock.js +189 -15
  306. package/dist/providers/amazonSagemaker.js +25 -11
  307. package/dist/providers/anthropic.js +13 -0
  308. package/dist/providers/azureOpenai.js +2 -0
  309. package/dist/providers/googleAiStudio.js +96 -26
  310. package/dist/providers/googleVertex.js +66 -27
  311. package/dist/providers/huggingFace.js +2 -0
  312. package/dist/providers/litellm.js +2 -0
  313. package/dist/providers/mistral.js +2 -0
  314. package/dist/providers/ollama.js +84 -5
  315. package/dist/providers/openAI.d.ts +2 -0
  316. package/dist/providers/openAI.js +17 -6
  317. package/dist/providers/openRouter.js +2 -0
  318. package/dist/providers/openaiCompatible.js +2 -0
  319. package/dist/providers/sagemaker/detection.d.ts +1 -33
  320. package/dist/providers/sagemaker/diagnostics.d.ts +1 -25
  321. package/dist/providers/sagemaker/language-model.d.ts +1 -1
  322. package/dist/proxy/proxyConfig.js +4 -0
  323. package/dist/proxy/proxyEnv.d.ts +1 -17
  324. package/dist/proxy/proxyTracer.d.ts +1 -36
  325. package/dist/proxy/proxyTracer.js +9 -0
  326. package/dist/proxy/quietDetector.d.ts +1 -7
  327. package/dist/proxy/rawStreamCapture.d.ts +1 -10
  328. package/dist/proxy/requestLogger.d.ts +1 -21
  329. package/dist/proxy/sseInterceptor.d.ts +1 -66
  330. package/dist/proxy/sseInterceptor.js +6 -0
  331. package/dist/proxy/updateChecker.d.ts +1 -6
  332. package/dist/proxy/updateState.d.ts +1 -12
  333. package/dist/rag/chunkers/BaseChunker.js +36 -22
  334. package/dist/rag/chunking/jsonChunker.d.ts +1 -1
  335. package/dist/rag/errors/RAGError.d.ts +1 -2
  336. package/dist/rag/ragIntegration.js +45 -32
  337. package/dist/rag/reranker/reranker.js +151 -122
  338. package/dist/rag/retrieval/vectorQueryTool.js +79 -65
  339. package/dist/sdk/toolRegistration.d.ts +10 -44
  340. package/dist/sdk/toolRegistration.js +1 -1
  341. package/dist/server/middleware/abortSignal.d.ts +1 -11
  342. package/dist/server/middleware/auth.d.ts +1 -21
  343. package/dist/server/middleware/auth.js +12 -0
  344. package/dist/server/middleware/common.js +48 -32
  345. package/dist/server/middleware/deprecation.d.ts +1 -20
  346. package/dist/server/middleware/rateLimit.d.ts +1 -75
  347. package/dist/server/middleware/validation.d.ts +3 -81
  348. package/dist/server/middleware/validation.js +3 -0
  349. package/dist/server/openapi/generator.d.ts +1 -47
  350. package/dist/server/routes/agentRoutes.js +112 -57
  351. package/dist/server/routes/claudeProxyRoutes.d.ts +1 -6
  352. package/dist/server/routes/claudeProxyRoutes.js +127 -13
  353. package/dist/server/routes/healthRoutes.js +58 -12
  354. package/dist/server/routes/index.d.ts +1 -26
  355. package/dist/server/routes/mcpRoutes.js +40 -7
  356. package/dist/server/routes/memoryRoutes.js +22 -7
  357. package/dist/server/routes/openApiRoutes.js +30 -6
  358. package/dist/server/routes/toolRoutes.js +140 -68
  359. package/dist/server/streaming/dataStream.d.ts +1 -35
  360. package/dist/server/streaming/dataStream.js +15 -0
  361. package/dist/services/server/ai/observability/instrumentation.js +114 -14
  362. package/dist/session/globalSessionState.d.ts +1 -10
  363. package/dist/tasks/tools/taskTools.d.ts +2 -2
  364. package/dist/telemetry/traceContext.d.ts +9 -0
  365. package/dist/telemetry/traceContext.js +18 -0
  366. package/dist/telemetry/tracers.d.ts +2 -0
  367. package/dist/telemetry/tracers.js +2 -0
  368. package/dist/types/action.d.ts +2 -0
  369. package/dist/types/artifact.d.ts +7 -0
  370. package/dist/types/auth.d.ts +125 -18
  371. package/dist/types/autoresearch.d.ts +12 -0
  372. package/dist/types/cli.d.ts +415 -0
  373. package/dist/types/client.d.ts +34 -0
  374. package/dist/types/common.d.ts +12 -41
  375. package/dist/types/context.d.ts +5 -0
  376. package/dist/types/evaluation.d.ts +332 -1
  377. package/dist/types/file.d.ts +4 -0
  378. package/dist/types/mcp.d.ts +102 -2
  379. package/dist/types/middleware.d.ts +116 -0
  380. package/dist/types/multimodal.d.ts +65 -0
  381. package/dist/types/observability.d.ts +81 -0
  382. package/dist/types/processor.d.ts +47 -0
  383. package/dist/types/providers.d.ts +120 -16
  384. package/dist/types/proxy.d.ts +321 -1
  385. package/dist/types/rag.d.ts +22 -0
  386. package/dist/types/scorer.d.ts +141 -0
  387. package/dist/types/server.d.ts +99 -0
  388. package/dist/types/span.d.ts +2 -1
  389. package/dist/types/span.js +1 -0
  390. package/dist/types/tools.d.ts +44 -0
  391. package/dist/types/tts.d.ts +6 -0
  392. package/dist/types/utilities.d.ts +22 -0
  393. package/dist/types/workflow.d.ts +18 -0
  394. package/dist/utils/async/retry.d.ts +2 -8
  395. package/dist/utils/async/retry.js +9 -9
  396. package/dist/utils/imageCompressor.d.ts +1 -21
  397. package/dist/utils/imageCompressor.js +5 -1
  398. package/dist/utils/messageBuilder.d.ts +1 -1
  399. package/dist/utils/redis.d.ts +1 -4
  400. package/dist/utils/toolEndEmitter.d.ts +25 -0
  401. package/dist/utils/toolEndEmitter.js +64 -0
  402. package/dist/workflow/config.d.ts +4 -29
  403. package/dist/workflow/core/ensembleExecutor.js +28 -0
  404. package/dist/workflow/core/judgeScorer.js +23 -0
  405. package/dist/workflow/core/responseConditioner.js +17 -0
  406. package/dist/workflow/core/workflowRunner.d.ts +1 -19
  407. package/dist/workflow/core/workflowRunner.js +202 -147
  408. package/package.json +2 -8
@@ -246,6 +246,12 @@ export class ApiKeyStore {
246
246
  return this.keys.size;
247
247
  }
248
248
  }
249
+ // ============================================
250
+ // Bearer Token Authentication
251
+ // ============================================
252
+ /**
253
+ * Options for bearer auth middleware
254
+ */
249
255
  /**
250
256
  * Create bearer token authentication middleware
251
257
  *
@@ -292,6 +298,12 @@ export function createBearerAuthMiddleware(validate, options = {}) {
292
298
  },
293
299
  };
294
300
  }
301
+ // ============================================
302
+ // API Key Authentication
303
+ // ============================================
304
+ /**
305
+ * Options for API key auth middleware
306
+ */
295
307
  /**
296
308
  * Create API key authentication middleware
297
309
  *
@@ -3,6 +3,8 @@
3
3
  * Utility middleware for common server operations
4
4
  */
5
5
  import { getMetricsAggregator, SpanSerializer, SpanStatus, SpanType, } from "../../observability/index.js";
6
+ import { SpanStatusCode } from "@opentelemetry/api";
7
+ import { tracers } from "../../telemetry/tracers.js";
6
8
  import { logger } from "../../utils/logger.js";
7
9
  /**
8
10
  * Create request timing middleware
@@ -18,38 +20,52 @@ export function createTimingMiddleware() {
18
20
  name: "timing",
19
21
  order: 0, // Run first
20
22
  handler: async (ctx, next) => {
21
- const startTime = Date.now();
22
- const startHrTime = process.hrtime.bigint();
23
- // Store start time in metadata
24
- ctx.metadata.requestStartTime = startTime;
25
- const span = SpanSerializer.createSpan(SpanType.SERVER_REQUEST, "server.middleware.timing", {
26
- "server.operation": "middleware",
27
- "server.middleware": "timing",
28
- });
29
- try {
30
- const result = await next();
31
- // Calculate duration
32
- const endHrTime = process.hrtime.bigint();
33
- const durationNs = Number(endHrTime - startHrTime);
34
- const durationMs = durationNs / 1_000_000;
35
- // Add timing headers to responseHeaders (adapters read from here)
36
- ctx.responseHeaders = ctx.responseHeaders || {};
37
- ctx.responseHeaders["X-Response-Time"] = `${durationMs.toFixed(2)}ms`;
38
- ctx.responseHeaders["Server-Timing"] =
39
- `total;dur=${durationMs.toFixed(2)}`;
40
- span.durationMs = Date.now() - startTime;
41
- const endedSpan = SpanSerializer.endSpan(span, SpanStatus.OK);
42
- getMetricsAggregator().recordSpan(endedSpan);
43
- return result;
44
- }
45
- catch (error) {
46
- span.durationMs = Date.now() - startTime;
47
- const endedSpan = SpanSerializer.endSpan(span, SpanStatus.ERROR);
48
- endedSpan.statusMessage =
49
- error instanceof Error ? error.message : String(error);
50
- getMetricsAggregator().recordSpan(endedSpan);
51
- throw error;
52
- }
23
+ return tracers.middleware.startActiveSpan("neurolink.middleware.timing", async (otelSpan) => {
24
+ try {
25
+ const startTime = Date.now();
26
+ const startHrTime = process.hrtime.bigint();
27
+ // Store start time in metadata
28
+ ctx.metadata.requestStartTime = startTime;
29
+ const span = SpanSerializer.createSpan(SpanType.SERVER_REQUEST, "server.middleware.timing", {
30
+ "server.operation": "middleware",
31
+ "server.middleware": "timing",
32
+ });
33
+ try {
34
+ const result = await next();
35
+ // Calculate duration
36
+ const endHrTime = process.hrtime.bigint();
37
+ const durationNs = Number(endHrTime - startHrTime);
38
+ const durationMs = durationNs / 1_000_000;
39
+ // Add timing headers to responseHeaders (adapters read from here)
40
+ ctx.responseHeaders = ctx.responseHeaders || {};
41
+ ctx.responseHeaders["X-Response-Time"] =
42
+ `${durationMs.toFixed(2)}ms`;
43
+ ctx.responseHeaders["Server-Timing"] =
44
+ `total;dur=${durationMs.toFixed(2)}`;
45
+ span.durationMs = Date.now() - startTime;
46
+ const endedSpan = SpanSerializer.endSpan(span, SpanStatus.OK);
47
+ getMetricsAggregator().recordSpan(endedSpan);
48
+ return result;
49
+ }
50
+ catch (error) {
51
+ // Propagate error to OTel span so traces show ERROR status
52
+ otelSpan.recordException(error instanceof Error ? error : new Error(String(error)));
53
+ otelSpan.setStatus({
54
+ code: SpanStatusCode.ERROR,
55
+ message: error instanceof Error ? error.message : String(error),
56
+ });
57
+ span.durationMs = Date.now() - startTime;
58
+ const endedSpan = SpanSerializer.endSpan(span, SpanStatus.ERROR);
59
+ endedSpan.statusMessage =
60
+ error instanceof Error ? error.message : String(error);
61
+ getMetricsAggregator().recordSpan(endedSpan);
62
+ throw error;
63
+ }
64
+ }
65
+ finally {
66
+ otelSpan.end();
67
+ }
68
+ }); // end startActiveSpan
53
69
  },
54
70
  };
55
71
  }
@@ -4,25 +4,7 @@
4
4
  *
5
5
  * @see https://datatracker.ietf.org/doc/html/rfc8594 - The 'Deprecation' HTTP Header Field
6
6
  */
7
- import type { MiddlewareDefinition, RouteDefinition } from "../../types/index.js";
8
- /**
9
- * Deprecation middleware configuration
10
- */
11
- type DeprecationConfig = {
12
- /**
13
- * Array of route definitions to check for deprecation
14
- * Routes with `deprecated.enabled: true` will have deprecation headers added
15
- */
16
- routes: RouteDefinition[];
17
- /**
18
- * Custom header name for deprecation notice (default: "X-Deprecation-Notice")
19
- */
20
- noticeHeader?: string;
21
- /**
22
- * Whether to include Link header for alternative routes (default: true)
23
- */
24
- includeLink?: boolean;
25
- };
7
+ import type { DeprecationConfig, MiddlewareDefinition } from "../../types/index.js";
26
8
  /**
27
9
  * Create deprecation middleware
28
10
  *
@@ -56,4 +38,3 @@ type DeprecationConfig = {
56
38
  * ```
57
39
  */
58
40
  export declare function createDeprecationMiddleware(config: DeprecationConfig): MiddlewareDefinition;
59
- export {};
@@ -2,64 +2,7 @@
2
2
  * Rate Limiting Middleware
3
3
  * Provides configurable rate limiting for server adapters
4
4
  */
5
- import type { MiddlewareDefinition, ServerContext } from "../../types/index.js";
6
- /**
7
- * Rate limit middleware configuration
8
- */
9
- type RateLimitMiddlewareConfig = {
10
- /** Maximum requests per window */
11
- maxRequests: number;
12
- /** Time window in milliseconds */
13
- windowMs: number;
14
- /** Custom error message */
15
- message?: string;
16
- /** Skip rate limiting for certain paths */
17
- skipPaths?: string[];
18
- /**
19
- * Custom key generator for identifying clients
20
- * Default: IP address
21
- */
22
- keyGenerator?: (ctx: ServerContext) => string;
23
- /**
24
- * Custom response handler for rate limit exceeded
25
- */
26
- onRateLimitExceeded?: (ctx: ServerContext, retryAfter: number) => unknown;
27
- /**
28
- * Custom rate limit store
29
- * Default: in-memory store
30
- */
31
- store?: RateLimitStore;
32
- };
33
- /**
34
- * Rate limit entry
35
- */
36
- type RateLimitEntry = {
37
- count: number;
38
- resetAt: number;
39
- };
40
- /**
41
- * Rate limit store interface
42
- * Implement this for custom storage (Redis, etc.)
43
- */
44
- type RateLimitStore = {
45
- /**
46
- * Get the current entry for a key
47
- */
48
- get(key: string): Promise<RateLimitEntry | undefined>;
49
- /**
50
- * Set an entry for a key
51
- */
52
- set(key: string, entry: RateLimitEntry): Promise<void>;
53
- /**
54
- * Increment the counter for a key
55
- * Returns the current count and reset time
56
- */
57
- increment(key: string, windowMs: number): Promise<RateLimitEntry>;
58
- /**
59
- * Reset the counter for a key
60
- */
61
- reset(key: string): Promise<void>;
62
- };
5
+ import type { FixedWindowRateLimitConfig, MiddlewareDefinition, RateLimitEntry, RateLimitMiddlewareConfig, RateLimitStore } from "../../types/index.js";
63
6
  /**
64
7
  * In-memory rate limit store
65
8
  */
@@ -113,23 +56,6 @@ export declare function createSlidingWindowRateLimitMiddleware(config: RateLimit
113
56
  * Alias for InMemoryRateLimitStore for compatibility
114
57
  */
115
58
  export { InMemoryRateLimitStore as MemoryRateLimitStore };
116
- /**
117
- * Fixed window rate limit configuration (for standalone signature)
118
- */
119
- type FixedWindowRateLimitConfig = {
120
- /** Maximum requests per window */
121
- maxRequests: number;
122
- /** Time window in milliseconds */
123
- windowMs: number;
124
- /** Custom error message */
125
- message?: string;
126
- /** Skip rate limiting for certain paths */
127
- skipPaths?: string[];
128
- /** Custom key generator */
129
- keyGenerator?: (ctx: ServerContext) => string;
130
- /** Custom rate limit exceeded handler */
131
- onRateLimitExceeded?: (ctx: ServerContext, retryAfter: number) => unknown;
132
- };
133
59
  /**
134
60
  * Create fixed window rate limit middleware
135
61
  *
@@ -2,69 +2,7 @@
2
2
  * Request Validation Middleware
3
3
  * Provides schema-based request validation for server adapters
4
4
  */
5
- import type { MiddlewareDefinition, ServerContext } from "../../types/index.js";
6
- import { ValidationError as ServerValidationError } from "../errors.js";
7
- /**
8
- * Validation configuration
9
- */
10
- type ValidationConfig = {
11
- /** Schema for validating request body */
12
- bodySchema?: ValidationSchema;
13
- /** Schema for validating query parameters */
14
- querySchema?: ValidationSchema;
15
- /** Schema for validating path parameters */
16
- paramsSchema?: ValidationSchema;
17
- /** Schema for validating headers */
18
- headersSchema?: ValidationSchema;
19
- /**
20
- * Custom validation function
21
- * Throw ValidationError for invalid requests
22
- */
23
- customValidator?: (ctx: ServerContext) => Promise<void>;
24
- /** Skip validation for certain paths */
25
- skipPaths?: string[];
26
- /** Custom error formatter */
27
- errorFormatter?: (errors: ServerValidationError[]) => unknown;
28
- };
29
- /**
30
- * Simple validation schema
31
- * Can be extended with JSON Schema or Zod integration
32
- */
33
- type ValidationSchema = {
34
- /** Required fields */
35
- required?: string[];
36
- /** Field type definitions */
37
- properties?: Record<string, PropertySchema>;
38
- /** Allow additional properties */
39
- additionalProperties?: boolean;
40
- };
41
- /**
42
- * Property schema definition
43
- */
44
- type PropertySchema = {
45
- /** Property type */
46
- type: "string" | "number" | "boolean" | "object" | "array";
47
- /** Minimum value (for numbers) or length (for strings/arrays) */
48
- minimum?: number;
49
- /** Maximum value (for numbers) or length (for strings/arrays) */
50
- maximum?: number;
51
- /** Minimum length for strings (alias for minimum) */
52
- minLength?: number;
53
- /** Maximum length for strings (alias for maximum) */
54
- maxLength?: number;
55
- /** Minimum items for arrays */
56
- minItems?: number;
57
- /** Maximum items for arrays */
58
- maxItems?: number;
59
- /** Pattern for string validation (regex) */
60
- pattern?: string;
61
- /** Enum of allowed values */
62
- enum?: unknown[];
63
- /** Default value */
64
- default?: unknown;
65
- /** Custom validation function */
66
- validate?: (value: unknown) => boolean | string;
67
- };
5
+ import type { ExtendedValidationSchema, MiddlewareDefinition, MiddlewareRequestSchema, PropertySchema, ValidationConfig } from "../../types/index.js";
68
6
  /**
69
7
  * Re-export ValidationError from errors for convenience
70
8
  */
@@ -105,7 +43,7 @@ export declare function createFieldValidator(fieldName: string, rules: PropertyS
105
43
  * });
106
44
  * ```
107
45
  */
108
- export declare function createBodyValidationMiddleware(schema: ValidationSchema): MiddlewareDefinition;
46
+ export declare function createBodyValidationMiddleware(schema: MiddlewareRequestSchema): MiddlewareDefinition;
109
47
  /**
110
48
  * Create query-only validation middleware
111
49
  *
@@ -119,28 +57,12 @@ export declare function createBodyValidationMiddleware(schema: ValidationSchema)
119
57
  * });
120
58
  * ```
121
59
  */
122
- export declare function createQueryValidationMiddleware(schema: ValidationSchema): MiddlewareDefinition;
60
+ export declare function createQueryValidationMiddleware(schema: MiddlewareRequestSchema): MiddlewareDefinition;
123
61
  /**
124
62
  * Create a combined validation middleware with full config support
125
63
  * Alias for createRequestValidationMiddleware for compatibility
126
64
  */
127
65
  export declare const createValidationMiddleware: typeof createRequestValidationMiddleware;
128
- /**
129
- * Extended property schema for common schemas
130
- */
131
- type ExtendedPropertySchema = PropertySchema & {
132
- format?: string;
133
- };
134
- /**
135
- * Extended validation schema for common schemas
136
- */
137
- type ExtendedValidationSchema = {
138
- type?: string;
139
- format?: string;
140
- required?: string[];
141
- properties?: Record<string, ExtendedPropertySchema>;
142
- additionalProperties?: boolean;
143
- };
144
66
  /**
145
67
  * Common validation schemas for reuse
146
68
  */
@@ -287,6 +287,9 @@ export function createQueryValidationMiddleware(schema) {
287
287
  * Alias for createRequestValidationMiddleware for compatibility
288
288
  */
289
289
  export const createValidationMiddleware = createRequestValidationMiddleware;
290
+ // ============================================
291
+ // Common Schemas
292
+ // ============================================
290
293
  /**
291
294
  * Common validation schemas for reuse
292
295
  */
@@ -2,52 +2,7 @@
2
2
  * OpenAPI 3.1 Specification Generator
3
3
  * Generates OpenAPI documentation from NeuroLink server routes
4
4
  */
5
- import type { JsonObject, RouteDefinition, ServerAdapterConfig } from "../../types/index.js";
6
- /**
7
- * OpenAPI generator configuration
8
- */
9
- type OpenAPIGeneratorConfig = {
10
- /** API info override */
11
- info?: {
12
- title?: string;
13
- version?: string;
14
- description?: string;
15
- };
16
- /** Server configuration */
17
- servers?: Array<{
18
- url: string;
19
- description?: string;
20
- }>;
21
- /** Include security schemes */
22
- includeSecurity?: boolean;
23
- /** Base path for all routes */
24
- basePath?: string;
25
- /** Additional tags */
26
- additionalTags?: Array<{
27
- name: string;
28
- description: string;
29
- }>;
30
- /** Custom schemas to add */
31
- customSchemas?: Record<string, JsonObject>;
32
- /** Routes to document in the OpenAPI spec */
33
- routes?: RouteDefinition[];
34
- };
35
- /**
36
- * Generated OpenAPI specification
37
- */
38
- type OpenAPISpec = {
39
- openapi: "3.1.0";
40
- info: JsonObject;
41
- servers: JsonObject[];
42
- tags: JsonObject[];
43
- paths: Record<string, JsonObject>;
44
- components: {
45
- schemas: Record<string, JsonObject>;
46
- securitySchemes?: Record<string, JsonObject>;
47
- parameters?: Record<string, JsonObject>;
48
- };
49
- security?: JsonObject[];
50
- };
5
+ import type { OpenAPIGeneratorConfig, OpenAPISpec, RouteDefinition, ServerAdapterConfig } from "../../types/index.js";
51
6
  /**
52
7
  * OpenAPI specification generator
53
8
  * Generates OpenAPI 3.1 compliant documentation from route definitions
@@ -104,4 +59,3 @@ export declare function generateOpenAPISpec(routes: RouteDefinition[], config?:
104
59
  * Generate OpenAPI spec from server adapter configuration
105
60
  */
106
61
  export declare function generateOpenAPIFromConfig(serverConfig: ServerAdapterConfig, routes?: RouteDefinition[]): OpenAPISpec;
107
- export {};
@@ -2,7 +2,10 @@
2
2
  * Agent Routes
3
3
  * Endpoints for agent execution and streaming
4
4
  */
5
+ import { SpanStatusCode } from "@opentelemetry/api";
5
6
  import { ProviderFactory } from "../../factories/providerFactory.js";
7
+ import { withSpan } from "../../telemetry/withSpan.js";
8
+ import { tracers } from "../../telemetry/tracers.js";
6
9
  import { createStreamRedactor } from "../utils/redaction.js";
7
10
  import { AgentExecuteRequestSchema, createErrorResponse as createError, EmbedManyRequestSchema, EmbedRequestSchema, validateRequest, } from "../utils/validation.js";
8
11
  /**
@@ -22,43 +25,53 @@ export function createAgentRoutes(basePath = "/api") {
22
25
  return validation.error;
23
26
  }
24
27
  const request = validation.data;
25
- // Normalize input
26
- const input = typeof request.input === "string"
27
- ? { text: request.input }
28
- : request.input;
29
- const result = await ctx.neurolink.generate({
30
- input,
31
- provider: request.provider,
32
- model: request.model,
33
- systemPrompt: request.systemPrompt,
34
- temperature: request.temperature,
35
- maxTokens: request.maxTokens,
36
- // Note: tools should be passed as Record<string, Tool> in generate options
37
- // If request.tools is an array of tool names, we skip them
38
- context: {
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,
28
+ return withSpan({
29
+ name: "neurolink.http.execute",
30
+ tracer: tracers.http,
31
+ attributes: {
32
+ "http.route": "/api/agent/execute",
33
+ "ai.provider": request.provider || "default",
34
+ "ai.model": request.model || "default",
48
35
  },
49
- });
50
- // Map tool calls from SDK format to API format
51
- const toolCalls = result.toolCalls?.map((tc) => ({
52
- name: tc.toolName,
53
- arguments: tc.args,
54
- }));
55
- return {
56
- content: result.content || "",
57
- provider: result.provider || request.provider || "unknown",
58
- model: result.model || request.model || "unknown",
59
- usage: result.usage,
60
- toolCalls,
61
- };
36
+ }, async () => {
37
+ // Normalize input
38
+ const input = typeof request.input === "string"
39
+ ? { text: request.input }
40
+ : request.input;
41
+ const result = await ctx.neurolink.generate({
42
+ input,
43
+ provider: request.provider,
44
+ model: request.model,
45
+ systemPrompt: request.systemPrompt,
46
+ temperature: request.temperature,
47
+ maxTokens: request.maxTokens,
48
+ // Note: tools should be passed as Record<string, Tool> in generate options
49
+ // If request.tools is an array of tool names, we skip them
50
+ context: {
51
+ // When an authenticated user context exists (set by auth middleware),
52
+ // always use its IDs to prevent caller-supplied impersonation.
53
+ sessionId: ctx.user
54
+ ? ctx.session?.id
55
+ : (ctx.session?.id ?? request.sessionId),
56
+ userId: ctx.user ? ctx.user.id : request.userId,
57
+ userEmail: ctx.user?.email,
58
+ userRoles: ctx.user?.roles,
59
+ requestId: ctx.requestId,
60
+ },
61
+ });
62
+ // Map tool calls from SDK format to API format
63
+ const toolCalls = result.toolCalls?.map((tc) => ({
64
+ name: tc.toolName,
65
+ arguments: tc.args,
66
+ }));
67
+ return {
68
+ content: result.content || "",
69
+ provider: result.provider || request.provider || "unknown",
70
+ model: result.model || request.model || "unknown",
71
+ usage: result.usage,
72
+ toolCalls,
73
+ };
74
+ }); // end withSpan
62
75
  },
63
76
  description: "Execute agent with prompt",
64
77
  tags: ["agent"],
@@ -99,11 +112,32 @@ export function createAgentRoutes(basePath = "/api") {
99
112
  });
100
113
  // Create redactor (no-op if redaction is not enabled)
101
114
  const redactor = createStreamRedactor(ctx.redaction);
102
- // Wrap stream to apply redaction to each chunk
115
+ // Wrap stream with a span that stays open for the full consumption
116
+ // lifetime, not just the generator creation.
103
117
  async function* redactedStream() {
104
- for await (const chunk of result.stream) {
105
- // Apply redaction to chunk (returns unchanged if redaction disabled)
106
- yield redactor(chunk);
118
+ const streamSpan = tracers.http.startSpan("neurolink.http.stream", {
119
+ attributes: {
120
+ "http.route": "/api/agent/stream",
121
+ "ai.provider": request.provider || "default",
122
+ "ai.model": request.model || "default",
123
+ },
124
+ });
125
+ try {
126
+ for await (const chunk of result.stream) {
127
+ yield redactor(chunk);
128
+ }
129
+ streamSpan.setStatus({ code: SpanStatusCode.OK });
130
+ }
131
+ catch (err) {
132
+ streamSpan.recordException(err instanceof Error ? err : new Error(String(err)));
133
+ streamSpan.setStatus({
134
+ code: SpanStatusCode.ERROR,
135
+ message: err instanceof Error ? err.message : String(err),
136
+ });
137
+ throw err;
138
+ }
139
+ finally {
140
+ streamSpan.end();
107
141
  }
108
142
  }
109
143
  return redactedStream();
@@ -136,14 +170,24 @@ export function createAgentRoutes(basePath = "/api") {
136
170
  const request = validation.data;
137
171
  try {
138
172
  const providerName = request.provider || "openai";
139
- const provider = await ProviderFactory.createProvider(providerName, request.model);
140
- const embedding = await provider.embed(request.text, request.model);
141
- return {
142
- embedding,
143
- provider: providerName,
144
- model: request.model || "default",
145
- dimension: embedding.length,
146
- };
173
+ return await withSpan({
174
+ name: "neurolink.http.embed",
175
+ tracer: tracers.http,
176
+ attributes: {
177
+ "http.route": "/api/agent/embed",
178
+ "ai.provider": providerName,
179
+ "ai.model": request.model || "default",
180
+ },
181
+ }, async () => {
182
+ const provider = await ProviderFactory.createProvider(providerName, request.model);
183
+ const embedding = await provider.embed(request.text, request.model);
184
+ return {
185
+ embedding,
186
+ provider: providerName,
187
+ model: request.model || "default",
188
+ dimension: embedding.length,
189
+ };
190
+ });
147
191
  }
148
192
  catch (error) {
149
193
  return createError("EXECUTION_FAILED", error instanceof Error
@@ -165,15 +209,26 @@ export function createAgentRoutes(basePath = "/api") {
165
209
  const request = validation.data;
166
210
  try {
167
211
  const providerName = request.provider || "openai";
168
- const provider = await ProviderFactory.createProvider(providerName, request.model);
169
- const embeddings = await provider.embedMany(request.texts, request.model);
170
- return {
171
- embeddings,
172
- provider: providerName,
173
- model: request.model || "default",
174
- count: embeddings.length,
175
- dimension: embeddings[0]?.length ?? 0,
176
- };
212
+ return await withSpan({
213
+ name: "neurolink.http.embedMany",
214
+ tracer: tracers.http,
215
+ attributes: {
216
+ "http.route": "/api/agent/embed-many",
217
+ "ai.provider": providerName,
218
+ "ai.model": request.model || "default",
219
+ "ai.embed.count": request.texts.length,
220
+ },
221
+ }, async () => {
222
+ const provider = await ProviderFactory.createProvider(providerName, request.model);
223
+ const embeddings = await provider.embedMany(request.texts, request.model);
224
+ return {
225
+ embeddings,
226
+ provider: providerName,
227
+ model: request.model || "default",
228
+ count: embeddings.length,
229
+ dimension: embeddings[0]?.length ?? 0,
230
+ };
231
+ });
177
232
  }
178
233
  catch (error) {
179
234
  return createError("EXECUTION_FAILED", error instanceof Error
@@ -10,7 +10,7 @@
10
10
  * Without a router, models are passed through to the Anthropic provider.
11
11
  */
12
12
  import type { ModelRouter } from "../../proxy/modelRouter.js";
13
- import type { ParsedClaudeRequest, RouteGroup } from "../../types/index.js";
13
+ import type { ParsedClaudeError, ParsedClaudeRequest, RouteGroup } from "../../types/index.js";
14
14
  /**
15
15
  * Create Claude-compatible proxy routes.
16
16
  *
@@ -23,10 +23,6 @@ import type { ParsedClaudeRequest, RouteGroup } from "../../types/index.js";
23
23
  */
24
24
  export declare function createClaudeProxyRoutes(modelRouter?: ModelRouter, basePath?: string, accountStrategy?: "round-robin" | "fill-first", passthroughMode?: boolean): RouteGroup;
25
25
  export declare function getTransientSameAccountRetryDelayMs(retryNumber: number): number;
26
- type ParsedClaudeError = {
27
- errorType?: string;
28
- message?: string;
29
- };
30
26
  /**
31
27
  * Parse a Claude error payload when available.
32
28
  */
@@ -46,4 +42,3 @@ export declare function buildProxyFallbackOptions(parsed: ParsedClaudeRequest, o
46
42
  * carry transient HTML responses (e.g. 520 pages) inside `error.message`.
47
43
  */
48
44
  export declare function isTransientHttpFailure(status: number, errBody: string): boolean;
49
- export {};