@juspay/neurolink 9.42.0 → 9.42.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 (84) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/dist/auth/anthropicOAuth.js +12 -0
  3. package/dist/browser/neurolink.min.js +337 -336
  4. package/dist/cli/commands/mcp.d.ts +6 -0
  5. package/dist/cli/commands/mcp.js +188 -184
  6. package/dist/cli/commands/proxy.js +537 -518
  7. package/dist/core/baseProvider.d.ts +6 -1
  8. package/dist/core/baseProvider.js +208 -230
  9. package/dist/core/factory.d.ts +3 -0
  10. package/dist/core/factory.js +138 -188
  11. package/dist/evaluation/pipeline/evaluationPipeline.js +5 -2
  12. package/dist/evaluation/scorers/scorerRegistry.d.ts +3 -0
  13. package/dist/evaluation/scorers/scorerRegistry.js +353 -282
  14. package/dist/lib/auth/anthropicOAuth.js +12 -0
  15. package/dist/lib/core/baseProvider.d.ts +6 -1
  16. package/dist/lib/core/baseProvider.js +208 -230
  17. package/dist/lib/core/factory.d.ts +3 -0
  18. package/dist/lib/core/factory.js +138 -188
  19. package/dist/lib/evaluation/pipeline/evaluationPipeline.js +5 -2
  20. package/dist/lib/evaluation/scorers/scorerRegistry.d.ts +3 -0
  21. package/dist/lib/evaluation/scorers/scorerRegistry.js +353 -282
  22. package/dist/lib/mcp/toolRegistry.d.ts +2 -0
  23. package/dist/lib/mcp/toolRegistry.js +32 -31
  24. package/dist/lib/neurolink.d.ts +38 -0
  25. package/dist/lib/neurolink.js +1858 -1689
  26. package/dist/lib/providers/googleAiStudio.js +0 -5
  27. package/dist/lib/providers/googleVertex.d.ts +10 -0
  28. package/dist/lib/providers/googleVertex.js +436 -444
  29. package/dist/lib/providers/litellm.d.ts +1 -0
  30. package/dist/lib/providers/litellm.js +73 -64
  31. package/dist/lib/providers/ollama.js +17 -4
  32. package/dist/lib/providers/openAI.d.ts +2 -0
  33. package/dist/lib/providers/openAI.js +139 -140
  34. package/dist/lib/proxy/claudeFormat.js +12 -4
  35. package/dist/lib/proxy/oauthFetch.js +298 -318
  36. package/dist/lib/proxy/proxyConfig.js +3 -1
  37. package/dist/lib/proxy/proxyFetch.js +250 -222
  38. package/dist/lib/proxy/requestLogger.js +132 -45
  39. package/dist/lib/proxy/sseInterceptor.js +36 -11
  40. package/dist/lib/server/routes/claudeProxyRoutes.d.ts +10 -1
  41. package/dist/lib/server/routes/claudeProxyRoutes.js +2726 -2272
  42. package/dist/lib/services/server/ai/observability/instrumentation.js +194 -218
  43. package/dist/lib/tasks/backends/bullmqBackend.js +24 -18
  44. package/dist/lib/tasks/store/redisTaskStore.js +23 -16
  45. package/dist/lib/tasks/taskManager.d.ts +2 -0
  46. package/dist/lib/tasks/taskManager.js +100 -5
  47. package/dist/lib/telemetry/telemetryService.js +9 -5
  48. package/dist/lib/types/proxyTypes.d.ts +124 -1
  49. package/dist/lib/utils/providerHealth.d.ts +1 -0
  50. package/dist/lib/utils/providerHealth.js +46 -31
  51. package/dist/lib/utils/providerUtils.js +11 -22
  52. package/dist/mcp/toolRegistry.d.ts +2 -0
  53. package/dist/mcp/toolRegistry.js +32 -31
  54. package/dist/neurolink.d.ts +38 -0
  55. package/dist/neurolink.js +1858 -1689
  56. package/dist/providers/googleAiStudio.js +0 -5
  57. package/dist/providers/googleVertex.d.ts +10 -0
  58. package/dist/providers/googleVertex.js +436 -444
  59. package/dist/providers/litellm.d.ts +1 -0
  60. package/dist/providers/litellm.js +73 -64
  61. package/dist/providers/ollama.js +17 -4
  62. package/dist/providers/openAI.d.ts +2 -0
  63. package/dist/providers/openAI.js +139 -140
  64. package/dist/proxy/claudeFormat.js +12 -4
  65. package/dist/proxy/oauthFetch.js +298 -318
  66. package/dist/proxy/proxyConfig.js +3 -1
  67. package/dist/proxy/proxyFetch.js +250 -222
  68. package/dist/proxy/requestLogger.js +132 -45
  69. package/dist/proxy/sseInterceptor.js +36 -11
  70. package/dist/server/routes/claudeProxyRoutes.d.ts +10 -1
  71. package/dist/server/routes/claudeProxyRoutes.js +2726 -2272
  72. package/dist/services/server/ai/observability/instrumentation.js +194 -218
  73. package/dist/tasks/backends/bullmqBackend.js +24 -18
  74. package/dist/tasks/store/redisTaskStore.js +23 -16
  75. package/dist/tasks/taskManager.d.ts +2 -0
  76. package/dist/tasks/taskManager.js +100 -5
  77. package/dist/telemetry/telemetryService.js +9 -5
  78. package/dist/types/proxyTypes.d.ts +124 -1
  79. package/dist/utils/providerHealth.d.ts +1 -0
  80. package/dist/utils/providerHealth.js +46 -31
  81. package/dist/utils/providerUtils.js +12 -22
  82. package/package.json +3 -2
  83. package/scripts/observability/check-proxy-telemetry.mjs +1 -1
  84. package/scripts/observability/manage-local-openobserve.sh +36 -5
@@ -9,6 +9,7 @@ import { shouldDisableBuiltinTools } from "../utils/toolUtils.js";
9
9
  import { directAgentTools } from "../agent/directTools.js";
10
10
  import { detectCategory, createMCPServerInfo } from "../utils/mcpDefaults.js";
11
11
  import { FlexibleToolValidator } from "./flexibleToolValidator.js";
12
+ import { ErrorFactory } from "../utils/errorHandling.js";
12
13
  import { HITLUserRejectedError, HITLTimeoutError } from "../hitl/hitlErrors.js";
13
14
  import { withSpan, tracers, ATTR } from "../telemetry/index.js";
14
15
  import { getAuthContext } from "../auth/authContext.js";
@@ -263,22 +264,7 @@ export class MCPToolRegistry extends MCPRegistry {
263
264
  hasContext: context !== undefined,
264
265
  sessionId: context?.sessionId,
265
266
  });
266
- // Try to find the tool by fully-qualified name first
267
- let tool = this.tools.get(toolName);
268
- registryLogger.info(`🔍 [TOOL_LOOKUP] Direct lookup result for '${toolName}':`, !!tool);
269
- // If not found, search for tool by name across all entries (for backward compatibility)
270
- let toolId = toolName;
271
- if (!tool) {
272
- const matches = Array.from(this.tools.entries()).filter(([, toolInfo]) => toolInfo.name === toolName);
273
- if (matches.length > 1) {
274
- throw new Error(`Ambiguous tool name '${toolName}'. Use fully-qualified name 'serverId.${toolName}'.`);
275
- }
276
- if (matches.length === 1) {
277
- const [candidateToolId, toolInfo] = matches[0];
278
- tool = toolInfo;
279
- toolId = candidateToolId;
280
- }
281
- }
267
+ const { tool, toolId } = this.resolveToolExecutionTarget(toolName);
282
268
  if (!tool) {
283
269
  throw new Error(`Tool '${toolName}' not found in registry`);
284
270
  }
@@ -291,21 +277,7 @@ export class MCPToolRegistry extends MCPRegistry {
291
277
  : "mcp";
292
278
  span.setAttribute("tool.type", toolType);
293
279
  span.setAttribute(ATTR.MCP_SERVER_ID, serverId);
294
- // Try to get auth context if available
295
- let authUserId;
296
- try {
297
- const authCtx = getAuthContext();
298
- authUserId = authCtx?.user?.id;
299
- }
300
- catch {
301
- // Auth context not available — that's fine
302
- }
303
- // Create execution context if not provided
304
- const execContext = {
305
- ...context,
306
- sessionId: context?.sessionId ?? randomUUID(),
307
- userId: context?.userId ?? authUserId,
308
- };
280
+ const execContext = this.createExecutionContext(context);
309
281
  // Get the tool implementation using the resolved toolId
310
282
  const toolImpl = this.toolImplementations.get(toolId);
311
283
  registryLogger.debug(`Looking for tool '${toolName}' (toolId: '${toolId}'), found: ${!!toolImpl}, type: ${typeof toolImpl?.execute}`);
@@ -504,6 +476,35 @@ export class MCPToolRegistry extends MCPRegistry {
504
476
  registryLogger.debug(`Listed ${result.length} unique tools (${filter ? "filtered" : "unfiltered"})`);
505
477
  return result;
506
478
  }
479
+ resolveToolExecutionTarget(toolName) {
480
+ let tool = this.tools.get(toolName);
481
+ registryLogger.info(`🔍 [TOOL_LOOKUP] Direct lookup result for '${toolName}':`, !!tool);
482
+ let toolId = toolName;
483
+ if (!tool) {
484
+ const matches = Array.from(this.tools.entries()).filter(([, toolInfo]) => toolInfo.name === toolName);
485
+ if (matches.length > 1) {
486
+ throw ErrorFactory.toolExecutionFailed(toolName, new Error(`Ambiguous tool name '${toolName}'. Use fully-qualified name 'serverId.${toolName}'.`));
487
+ }
488
+ if (matches.length === 1) {
489
+ [toolId, tool] = matches[0];
490
+ }
491
+ }
492
+ return { tool, toolId };
493
+ }
494
+ createExecutionContext(context) {
495
+ let authUserId;
496
+ try {
497
+ authUserId = getAuthContext()?.user?.id;
498
+ }
499
+ catch {
500
+ // Auth context not available — that's fine
501
+ }
502
+ return {
503
+ ...context,
504
+ sessionId: context?.sessionId ?? randomUUID(),
505
+ userId: context?.userId ?? authUserId,
506
+ };
507
+ }
507
508
  /**
508
509
  * Get tool information with server details
509
510
  */
@@ -81,6 +81,12 @@ export declare class NeuroLink {
81
81
  * Extract and set Langfuse context from options with proper async scoping
82
82
  */
83
83
  private setLangfuseContextFromOptions;
84
+ private createMetricsTraceContext;
85
+ private enforceSessionBudget;
86
+ private assertInputText;
87
+ private applyAuthenticatedRequestContext;
88
+ private applyGenerateLifecycleMiddleware;
89
+ private applyStreamLifecycleMiddleware;
84
90
  private initializeMemoryConfig;
85
91
  /**
86
92
  * Lazy initialization for memory — called during generate/stream.
@@ -526,6 +532,16 @@ export declare class NeuroLink {
526
532
  * @since 1.0.0
527
533
  */
528
534
  generate(optionsOrPrompt: GenerateOptions | string): Promise<GenerateResult>;
535
+ private executeGenerateWithMetricsContext;
536
+ private executeGenerateRequest;
537
+ private prepareGenerateRequest;
538
+ private maybeHandleEarlyGenerateResult;
539
+ private runStandardGenerateRequest;
540
+ private maybeApplyGenerateOrchestration;
541
+ private prepareGenerateAugmentations;
542
+ private buildGenerateTextOptions;
543
+ private finalizeGenerateRequestResult;
544
+ private emitGenerateErrorEvent;
529
545
  /**
530
546
  * Schedule non-blocking memory storage after generate completes.
531
547
  */
@@ -560,6 +576,13 @@ export declare class NeuroLink {
560
576
  * 5. Store conversation turn for future context
561
577
  */
562
578
  private generateTextInternal;
579
+ private executeGenerateTextInternalWithSpan;
580
+ private initializeGenerateTextInternalContext;
581
+ private runGenerateTextInternalFlow;
582
+ private captureOriginalConversationMessagesForRecovery;
583
+ private finalizeGenerateTextInternalResult;
584
+ private handleGenerateTextInternalFailure;
585
+ private tryRecoverGenerateTextOverflow;
563
586
  /**
564
587
  * Log generateTextInternal start with comprehensive analysis
565
588
  */
@@ -585,6 +608,11 @@ export declare class NeuroLink {
585
608
  * Try MCP-enhanced generation (no fallback recursion)
586
609
  */
587
610
  private tryMCPGeneration;
611
+ private prepareMCPGenerationContext;
612
+ private logMCPConversationSummary;
613
+ private ensureMCPGenerationBudget;
614
+ private compactMCPConversationForBudget;
615
+ private generateWithMCPProvider;
588
616
  /**
589
617
  * Direct provider generation (no MCP, no recursion)
590
618
  */
@@ -660,6 +688,10 @@ export declare class NeuroLink {
660
688
  * @throws {Error} When conversation memory operations fail (if enabled)
661
689
  */
662
690
  stream(options: StreamOptions): Promise<StreamResult>;
691
+ private executeStreamRequest;
692
+ private validateStreamRequestOptions;
693
+ private maybeHandleWorkflowStreamRequest;
694
+ private runStandardStreamRequest;
663
695
  /**
664
696
  * Prepare stream options: initialize memory, MCP, retrieval, orchestration,
665
697
  * Ollama tool auto-disable, factory processing, and tool detection.
@@ -1061,6 +1093,12 @@ export declare class NeuroLink {
1061
1093
  [key: string]: unknown;
1062
1094
  };
1063
1095
  }): Promise<T>;
1096
+ private createToolExecutionContext;
1097
+ private executeToolWithSpan;
1098
+ private prepareToolExecutionState;
1099
+ private runPreparedToolExecution;
1100
+ private handleSuccessfulToolExecution;
1101
+ private handleFailedToolExecution;
1064
1102
  /**
1065
1103
  * Internal tool execution method with MCP enhancements wired in:
1066
1104
  * - ToolCache: check/store cached results for non-destructive tools