@juspay/neurolink 7.14.0 → 7.14.2

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 (111) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/agent/directTools.d.ts +3 -3
  3. package/dist/agent/directTools.js +1 -1
  4. package/dist/cli/commands/mcp.js +67 -207
  5. package/dist/cli/factories/commandFactory.js +7 -1
  6. package/dist/cli/utils/interactiveSetup.js +1 -1
  7. package/dist/core/baseProvider.d.ts +6 -40
  8. package/dist/core/baseProvider.js +102 -75
  9. package/dist/core/dynamicModels.d.ts +14 -14
  10. package/dist/core/dynamicModels.js +1 -1
  11. package/dist/core/evaluation.js +1 -1
  12. package/dist/core/factory.js +1 -12
  13. package/dist/index.d.ts +23 -4
  14. package/dist/index.js +22 -1
  15. package/dist/lib/agent/directTools.js +1 -1
  16. package/dist/lib/core/baseProvider.d.ts +6 -40
  17. package/dist/lib/core/baseProvider.js +102 -75
  18. package/dist/lib/core/dynamicModels.js +1 -1
  19. package/dist/lib/core/evaluation.js +1 -1
  20. package/dist/lib/core/factory.js +1 -12
  21. package/dist/lib/index.d.ts +23 -4
  22. package/dist/lib/index.js +22 -1
  23. package/dist/lib/mcp/externalServerManager.d.ts +46 -13
  24. package/dist/lib/mcp/externalServerManager.js +393 -32
  25. package/dist/lib/mcp/mcpClientFactory.d.ts +5 -4
  26. package/dist/lib/mcp/mcpClientFactory.js +8 -3
  27. package/dist/lib/mcp/toolDiscoveryService.d.ts +1 -0
  28. package/dist/lib/mcp/toolDiscoveryService.js +76 -8
  29. package/dist/lib/mcp/toolRegistry.d.ts +15 -11
  30. package/dist/lib/mcp/toolRegistry.js +118 -55
  31. package/dist/lib/models/modelResolver.js +1 -1
  32. package/dist/lib/neurolink.d.ts +32 -31
  33. package/dist/lib/neurolink.js +173 -210
  34. package/dist/lib/providers/googleVertex.d.ts +6 -0
  35. package/dist/lib/providers/googleVertex.js +11 -0
  36. package/dist/lib/providers/huggingFace.js +1 -1
  37. package/dist/lib/providers/mistral.js +3 -3
  38. package/dist/lib/providers/ollama.js +1 -1
  39. package/dist/lib/providers/openAI.d.ts +3 -2
  40. package/dist/lib/providers/openAI.js +2 -2
  41. package/dist/lib/providers/openaiCompatible.d.ts +1 -1
  42. package/dist/lib/providers/openaiCompatible.js +2 -2
  43. package/dist/lib/providers/sagemaker/config.js +1 -1
  44. package/dist/lib/sdk/toolRegistration.d.ts +4 -13
  45. package/dist/lib/sdk/toolRegistration.js +19 -66
  46. package/dist/lib/types/cli.d.ts +0 -1
  47. package/dist/lib/types/cli.js +0 -1
  48. package/dist/lib/types/common.d.ts +1 -2
  49. package/dist/lib/types/common.js +0 -1
  50. package/dist/lib/types/contextTypes.d.ts +1 -1
  51. package/dist/lib/types/contextTypes.js +3 -3
  52. package/dist/lib/types/externalMcp.d.ts +6 -0
  53. package/dist/lib/types/externalMcp.js +1 -0
  54. package/dist/lib/types/index.d.ts +2 -3
  55. package/dist/lib/types/index.js +0 -1
  56. package/dist/lib/types/mcpTypes.d.ts +53 -99
  57. package/dist/lib/types/providers.d.ts +0 -1
  58. package/dist/lib/types/providers.js +0 -1
  59. package/dist/lib/types/tools.d.ts +2 -2
  60. package/dist/lib/types/tools.js +2 -2
  61. package/dist/lib/utils/factoryProcessing.js +1 -1
  62. package/dist/lib/utils/mcpDefaults.d.ts +54 -0
  63. package/dist/lib/utils/mcpDefaults.js +125 -0
  64. package/dist/lib/utils/providerConfig.d.ts +1 -1
  65. package/dist/lib/utils/providerConfig.js +2 -2
  66. package/dist/lib/utils/providerHealth.js +6 -6
  67. package/dist/mcp/externalServerManager.d.ts +46 -13
  68. package/dist/mcp/externalServerManager.js +393 -32
  69. package/dist/mcp/mcpClientFactory.d.ts +5 -4
  70. package/dist/mcp/mcpClientFactory.js +8 -3
  71. package/dist/mcp/toolDiscoveryService.d.ts +1 -0
  72. package/dist/mcp/toolDiscoveryService.js +76 -8
  73. package/dist/mcp/toolRegistry.d.ts +15 -11
  74. package/dist/mcp/toolRegistry.js +118 -55
  75. package/dist/models/modelResolver.js +1 -1
  76. package/dist/neurolink.d.ts +32 -31
  77. package/dist/neurolink.js +173 -210
  78. package/dist/providers/googleVertex.d.ts +6 -0
  79. package/dist/providers/googleVertex.js +11 -0
  80. package/dist/providers/huggingFace.js +1 -1
  81. package/dist/providers/mistral.js +3 -3
  82. package/dist/providers/ollama.js +1 -1
  83. package/dist/providers/openAI.d.ts +3 -2
  84. package/dist/providers/openAI.js +2 -2
  85. package/dist/providers/openaiCompatible.d.ts +1 -1
  86. package/dist/providers/openaiCompatible.js +2 -2
  87. package/dist/providers/sagemaker/config.js +1 -1
  88. package/dist/sdk/toolRegistration.d.ts +4 -13
  89. package/dist/sdk/toolRegistration.js +19 -66
  90. package/dist/types/cli.d.ts +0 -1
  91. package/dist/types/cli.js +0 -1
  92. package/dist/types/common.d.ts +1 -2
  93. package/dist/types/common.js +0 -1
  94. package/dist/types/contextTypes.d.ts +1 -1
  95. package/dist/types/contextTypes.js +3 -3
  96. package/dist/types/externalMcp.d.ts +6 -0
  97. package/dist/types/externalMcp.js +1 -0
  98. package/dist/types/index.d.ts +2 -3
  99. package/dist/types/index.js +0 -1
  100. package/dist/types/mcpTypes.d.ts +53 -99
  101. package/dist/types/providers.d.ts +0 -1
  102. package/dist/types/providers.js +0 -1
  103. package/dist/types/tools.d.ts +2 -2
  104. package/dist/types/tools.js +2 -2
  105. package/dist/utils/factoryProcessing.js +1 -1
  106. package/dist/utils/mcpDefaults.d.ts +54 -0
  107. package/dist/utils/mcpDefaults.js +125 -0
  108. package/dist/utils/providerConfig.d.ts +1 -1
  109. package/dist/utils/providerConfig.js +2 -2
  110. package/dist/utils/providerHealth.js +6 -6
  111. package/package.json +1 -1
@@ -0,0 +1,125 @@
1
+ /**
2
+ * Smart Defaults for MCPServerInfo Creation
3
+ * Eliminates boilerplate manual object creation
4
+ */
5
+ /**
6
+ * Smart category detection based on context
7
+ */
8
+ export function detectCategory(context) {
9
+ // If category is already provided, validate and use it
10
+ if (context.existingCategory) {
11
+ const validCategories = [
12
+ "external",
13
+ "in-memory",
14
+ "built-in",
15
+ "user-defined",
16
+ ];
17
+ if (validCategories.includes(context.existingCategory)) {
18
+ return context.existingCategory;
19
+ }
20
+ }
21
+ // Smart detection based on context
22
+ if (context.isCustomTool) {
23
+ return "user-defined";
24
+ }
25
+ if (context.isBuiltIn) {
26
+ return "built-in";
27
+ }
28
+ if (context.isExternal) {
29
+ return "external";
30
+ }
31
+ if (context.serverId?.startsWith("custom-tool-")) {
32
+ return "user-defined";
33
+ }
34
+ if (context.serverId?.includes("external")) {
35
+ return "external";
36
+ }
37
+ if (context.serverId === "direct") {
38
+ return "built-in";
39
+ }
40
+ // Default to in-memory for most cases
41
+ return "in-memory";
42
+ }
43
+ /**
44
+ * Generate smart description based on name and category
45
+ */
46
+ function generateDescription(name, category) {
47
+ // Generate descriptions based on category for better context
48
+ switch (category) {
49
+ case "external":
50
+ return `External MCP server: ${name}`;
51
+ case "built-in":
52
+ return `Built-in tool server: ${name}`;
53
+ case "custom":
54
+ case "user-defined":
55
+ return `Custom tool server: ${name}`;
56
+ case "in-memory":
57
+ return `In-memory MCP server: ${name}`;
58
+ default:
59
+ return name;
60
+ }
61
+ }
62
+ /**
63
+ * Create MCPServerInfo with smart defaults
64
+ * Eliminates manual boilerplate object creation
65
+ */
66
+ export function createMCPServerInfo(options) {
67
+ const id = options.id || `server-${options.name}`;
68
+ const category = options.category ||
69
+ detectCategory({
70
+ isCustomTool: options.isCustomTool,
71
+ isExternal: options.isExternal,
72
+ isBuiltIn: options.isBuiltIn,
73
+ serverId: id,
74
+ });
75
+ const tools = options.tools || (options.tool ? [options.tool] : []);
76
+ return {
77
+ id,
78
+ name: options.name,
79
+ transport: options.transport || "stdio",
80
+ status: options.status || "connected",
81
+ tools,
82
+ description: options.description || generateDescription(options.name, category),
83
+ ...(options.command && { command: options.command }),
84
+ ...(options.args && { args: options.args }),
85
+ ...(options.env && { env: options.env }),
86
+ metadata: {
87
+ category: category,
88
+ toolCount: tools.length,
89
+ },
90
+ };
91
+ }
92
+ /**
93
+ * Create MCPServerInfo for custom tool registration
94
+ * Specialized version with smart defaults for registerTool usage
95
+ */
96
+ export function createCustomToolServerInfo(toolName, tool) {
97
+ return createMCPServerInfo({
98
+ id: `custom-tool-${toolName}`,
99
+ name: toolName,
100
+ tool: {
101
+ name: toolName,
102
+ description: tool.description || toolName,
103
+ inputSchema: tool.inputSchema || {},
104
+ execute: tool.execute,
105
+ },
106
+ isCustomTool: true,
107
+ });
108
+ }
109
+ /**
110
+ * Create MCPServerInfo for external servers
111
+ * Specialized version with smart defaults for external server usage
112
+ */
113
+ export function createExternalServerInfo(options) {
114
+ return createMCPServerInfo({
115
+ id: options.id,
116
+ name: options.name || options.id,
117
+ tools: options.tools || [],
118
+ transport: options.transport || "stdio",
119
+ description: options.description || options.name || options.id,
120
+ isExternal: true,
121
+ command: options.command,
122
+ args: options.args,
123
+ env: options.env,
124
+ });
125
+ }
@@ -56,7 +56,7 @@ export declare function getProviderModel(envVar: string, defaultModel: string):
56
56
  /**
57
57
  * Checks if provider credentials are available
58
58
  * @param envVars Array of environment variable names to check
59
- * @returns True if any of the credentials are available
59
+ * @returns True if one of the credentials is available
60
60
  */
61
61
  export declare function hasProviderCredentials(envVars: string[]): boolean;
62
62
  /**
@@ -135,7 +135,7 @@ export function getProviderModel(envVar, defaultModel) {
135
135
  /**
136
136
  * Checks if provider credentials are available
137
137
  * @param envVars Array of environment variable names to check
138
- * @returns True if any of the credentials are available
138
+ * @returns True if one of the credentials is available
139
139
  */
140
140
  export function hasProviderCredentials(envVars) {
141
141
  return envVars.some((envVar) => !!process.env[envVar]);
@@ -286,7 +286,7 @@ export function createOpenAICompatibleConfig() {
286
286
  "1. Set OPENAI_COMPATIBLE_BASE_URL to your endpoint (e.g., https://api.openrouter.ai/api/v1)",
287
287
  "2. Get API key from your OpenAI-compatible service:",
288
288
  " • OpenRouter: https://openrouter.ai/keys",
289
- " • vLLM: Use any value for local deployments",
289
+ " • vLLM: Use a random value for local deployments",
290
290
  " • LiteLLM: Check your LiteLLM server configuration",
291
291
  "3. Set OPENAI_COMPATIBLE_API_KEY to your API key",
292
292
  "4. Optionally set OPENAI_COMPATIBLE_MODEL (will auto-discover if not set)",
@@ -487,13 +487,13 @@ export class ProviderHealthChecker {
487
487
  return provider;
488
488
  }
489
489
  }
490
- // Fallback to any healthy provider
491
- const anyHealthy = healthStatuses.find((h) => h.isHealthy);
492
- if (anyHealthy) {
493
- logger.info(`Using fallback healthy provider: ${anyHealthy.provider}`);
494
- return anyHealthy.provider;
490
+ // Fallback to first healthy provider
491
+ const firstHealthyProvider = healthStatuses.find((h) => h.isHealthy);
492
+ if (firstHealthyProvider) {
493
+ logger.info(`Using fallback healthy provider: ${firstHealthyProvider.provider}`);
494
+ return firstHealthyProvider.provider;
495
495
  }
496
- // Last resort: any configured provider
496
+ // Last resort: first configured provider
497
497
  const anyConfigured = healthStatuses.find((h) => h.isConfigured);
498
498
  if (anyConfigured) {
499
499
  logger.warn(`Using configured but potentially unhealthy provider: ${anyConfigured.provider}`);
@@ -8,25 +8,45 @@
8
8
  */
9
9
  import { EventEmitter } from "events";
10
10
  import { ToolDiscoveryService } from "./toolDiscoveryService.js";
11
- import type { ExternalMCPServerConfig, ExternalMCPServerInstance, ExternalMCPServerHealth, ExternalMCPConfigValidation, ExternalMCPOperationResult, ExternalMCPManagerConfig, ExternalMCPToolInfo } from "../types/externalMcp.js";
12
- /**
13
- * ExternalServerManager
14
- * Core class for managing external MCP servers
15
- */
11
+ import type { ExternalMCPServerInstance, ExternalMCPServerHealth, ExternalMCPConfigValidation, ExternalMCPOperationResult, ExternalMCPManagerConfig, ExternalMCPToolInfo } from "../types/externalMcp.js";
12
+ import type { MCPServerInfo } from "../types/mcpTypes.js";
13
+ import type { JsonObject } from "../types/common.js";
16
14
  export declare class ExternalServerManager extends EventEmitter {
17
15
  private servers;
18
16
  private config;
19
17
  private isShuttingDown;
20
18
  private toolDiscovery;
21
- constructor(config?: ExternalMCPManagerConfig);
19
+ private enableMainRegistryIntegration;
20
+ constructor(config?: ExternalMCPManagerConfig, options?: {
21
+ enableMainRegistryIntegration?: boolean;
22
+ });
23
+ /**
24
+ * Load MCP server configurations from .mcp-config.json file
25
+ * Automatically registers servers found in the configuration
26
+ * @param configPath Optional path to config file (defaults to .mcp-config.json in cwd)
27
+ * @returns Promise resolving to number of servers loaded
28
+ */
29
+ loadMCPConfiguration(configPath?: string): Promise<{
30
+ serversLoaded: number;
31
+ errors: string[];
32
+ }>;
22
33
  /**
23
34
  * Validate external MCP server configuration
24
35
  */
25
- validateConfig(config: ExternalMCPServerConfig): ExternalMCPConfigValidation;
36
+ validateConfig(config: MCPServerInfo): ExternalMCPConfigValidation;
37
+ /**
38
+ * Convert MCPServerInfo format (keeping for backward compatibility)
39
+ * Helper function for transitioning to zero-conversion architecture
40
+ */
41
+ private convertConfigToMCPServerInfo;
42
+ /**
43
+ * Add a new external MCP server - Backward compatibility overload
44
+ */
45
+ addServer(serverId: string, config: MCPServerInfo): Promise<ExternalMCPOperationResult<ExternalMCPServerInstance>>;
26
46
  /**
27
- * Add a new external MCP server
47
+ * Add a new external MCP server - Updated to accept MCPServerInfo
28
48
  */
29
- addServer(serverId: string, config: ExternalMCPServerConfig): Promise<ExternalMCPOperationResult<ExternalMCPServerInstance>>;
49
+ addServer(serverId: string, serverInfo: MCPServerInfo): Promise<ExternalMCPOperationResult<ExternalMCPServerInstance>>;
30
50
  /**
31
51
  * Remove an external MCP server
32
52
  */
@@ -64,13 +84,17 @@ export declare class ExternalServerManager extends EventEmitter {
64
84
  */
65
85
  private performHealthCheck;
66
86
  /**
67
- * Get server instance
87
+ * Get server instance - converted to ExternalMCPServerInstance for compatibility
68
88
  */
69
89
  getServer(serverId: string): ExternalMCPServerInstance | undefined;
70
90
  /**
71
- * Get all servers
91
+ * Get all servers - converted to ExternalMCPServerInstance for compatibility
72
92
  */
73
93
  getAllServers(): Map<string, ExternalMCPServerInstance>;
94
+ /**
95
+ * List servers as MCPServerInfo - ZERO conversion needed
96
+ */
97
+ listServers(): MCPServerInfo[];
74
98
  /**
75
99
  * Get server statuses
76
100
  */
@@ -94,12 +118,21 @@ export declare class ExternalServerManager extends EventEmitter {
94
118
  * Discover tools from a server
95
119
  */
96
120
  private discoverServerTools;
121
+ /**
122
+ * Register server tools with main tool registry for unified access
123
+ * This enables external MCP tools to be accessed via the main toolRegistry.executeTool()
124
+ */
125
+ private registerServerToolsWithMainRegistry;
126
+ /**
127
+ * Unregister server tools from main tool registry
128
+ */
129
+ private unregisterServerToolsFromMainRegistry;
97
130
  /**
98
131
  * Execute a tool on a specific server
99
132
  */
100
- executeTool(serverId: string, toolName: string, parameters: Record<string, any>, options?: {
133
+ executeTool(serverId: string, toolName: string, parameters: JsonObject, options?: {
101
134
  timeout?: number;
102
- }): Promise<any>;
135
+ }): Promise<unknown>;
103
136
  /**
104
137
  * Get all tools from all servers
105
138
  */