@juspay/neurolink 7.8.0 → 7.10.0
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.
- package/CHANGELOG.md +22 -5
- package/README.md +22 -7
- package/dist/agent/directTools.d.ts +23 -843
- package/dist/agent/directTools.js +1 -3
- package/dist/cli/commands/mcp.js +66 -27
- package/dist/cli/commands/ollama.js +7 -3
- package/dist/cli/commands/sagemaker.js +145 -144
- package/dist/cli/factories/commandFactory.js +10 -6
- package/dist/core/dynamicModels.js +6 -0
- package/dist/core/types.d.ts +15 -4
- package/dist/core/types.js +23 -3
- package/dist/factories/providerFactory.js +10 -1
- package/dist/factories/providerRegistry.js +1 -1
- package/dist/lib/agent/directTools.d.ts +23 -843
- package/dist/lib/agent/directTools.js +1 -3
- package/dist/lib/core/dynamicModels.js +6 -0
- package/dist/lib/core/types.d.ts +15 -4
- package/dist/lib/core/types.js +23 -3
- package/dist/lib/factories/providerFactory.js +10 -1
- package/dist/lib/factories/providerRegistry.js +1 -1
- package/dist/lib/neurolink.d.ts +15 -0
- package/dist/lib/neurolink.js +73 -1
- package/dist/lib/providers/googleVertex.d.ts +4 -0
- package/dist/lib/providers/googleVertex.js +44 -3
- package/dist/lib/providers/sagemaker/client.js +2 -2
- package/dist/lib/sdk/toolRegistration.d.ts +1 -1
- package/dist/lib/sdk/toolRegistration.js +13 -5
- package/dist/lib/utils/providerHealth.js +20 -5
- package/dist/mcp/servers/agent/directToolsServer.js +0 -1
- package/dist/mcp/servers/aiProviders/aiCoreServer.js +0 -1
- package/dist/models/modelResolver.js +0 -1
- package/dist/neurolink.d.ts +15 -0
- package/dist/neurolink.js +73 -1
- package/dist/providers/amazonBedrock.js +2 -2
- package/dist/providers/anthropic.js +2 -2
- package/dist/providers/anthropicBaseProvider.js +2 -2
- package/dist/providers/googleAiStudio.js +2 -3
- package/dist/providers/googleVertex.d.ts +4 -0
- package/dist/providers/googleVertex.js +44 -3
- package/dist/providers/litellm.js +4 -4
- package/dist/providers/ollama.js +1 -2
- package/dist/providers/openAI.js +2 -2
- package/dist/providers/openaiCompatible.js +1 -2
- package/dist/providers/sagemaker/client.js +2 -2
- package/dist/providers/sagemaker/errors.js +1 -1
- package/dist/providers/sagemaker/language-model.js +1 -1
- package/dist/sdk/toolRegistration.d.ts +1 -1
- package/dist/sdk/toolRegistration.js +13 -6
- package/dist/telemetry/telemetryService.js +0 -2
- package/dist/types/tools.js +0 -1
- package/dist/utils/providerHealth.js +20 -5
- package/package.json +43 -5
|
@@ -325,9 +325,7 @@ export const directAgentTools = {
|
|
|
325
325
|
},
|
|
326
326
|
}),
|
|
327
327
|
};
|
|
328
|
-
|
|
329
|
-
* Get a subset of tools for specific use cases
|
|
330
|
-
*/
|
|
328
|
+
// eslint-disable-next-line no-redeclare
|
|
331
329
|
export function getToolsForCategory(category = "all") {
|
|
332
330
|
switch (category) {
|
|
333
331
|
case "basic":
|
package/dist/cli/commands/mcp.js
CHANGED
|
@@ -80,6 +80,46 @@ const POPULAR_MCP_SERVERS = {
|
|
|
80
80
|
description: "Bitbucket repository management and development workflows",
|
|
81
81
|
},
|
|
82
82
|
};
|
|
83
|
+
/**
|
|
84
|
+
* Type guard to check if an object conforms to MCPStatusResponse interface
|
|
85
|
+
*/
|
|
86
|
+
function isMCPStatusResponse(obj) {
|
|
87
|
+
if (!obj || typeof obj !== "object") {
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
const record = obj;
|
|
91
|
+
// Check if autoDiscoveredServers is either undefined or an array
|
|
92
|
+
if (record.autoDiscoveredServers !== undefined) {
|
|
93
|
+
if (!Array.isArray(record.autoDiscoveredServers)) {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
// Check each server object in the array
|
|
97
|
+
for (const server of record.autoDiscoveredServers) {
|
|
98
|
+
if (!server || typeof server !== "object") {
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
const serverRecord = server;
|
|
102
|
+
// Optional properties should be correct type if present
|
|
103
|
+
if (serverRecord.name !== undefined &&
|
|
104
|
+
typeof serverRecord.name !== "string") {
|
|
105
|
+
return false;
|
|
106
|
+
}
|
|
107
|
+
if (serverRecord.id !== undefined &&
|
|
108
|
+
typeof serverRecord.id !== "string") {
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
if (serverRecord.status !== undefined &&
|
|
112
|
+
typeof serverRecord.status !== "string") {
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
if (serverRecord.source !== undefined &&
|
|
116
|
+
typeof serverRecord.source !== "string") {
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return true;
|
|
122
|
+
}
|
|
83
123
|
/**
|
|
84
124
|
* Convert SDK MCPStatus to CLI format with server list
|
|
85
125
|
*/
|
|
@@ -98,19 +138,18 @@ sdk) {
|
|
|
98
138
|
});
|
|
99
139
|
});
|
|
100
140
|
// Add auto-discovered servers
|
|
101
|
-
|
|
102
|
-
|
|
141
|
+
// Cache the type guard result to avoid repeated validation
|
|
142
|
+
const isValidStatusResponse = isMCPStatusResponse(status);
|
|
143
|
+
if (isValidStatusResponse && status.autoDiscoveredServers) {
|
|
103
144
|
status.autoDiscoveredServers.forEach((server) => {
|
|
104
145
|
servers.push({
|
|
105
|
-
name: server.name || server.id,
|
|
146
|
+
name: server.name || server.id || "Unknown",
|
|
106
147
|
connected: server.status === "connected",
|
|
107
148
|
description: server.source
|
|
108
149
|
? `Auto-discovered from ${server.source}`
|
|
109
150
|
: `Auto-discovered server`,
|
|
110
151
|
tools: [],
|
|
111
|
-
error: server.status === "failed"
|
|
112
|
-
? "Connection failed"
|
|
113
|
-
: undefined,
|
|
152
|
+
error: server.status === "failed" ? "Connection failed" : undefined,
|
|
114
153
|
});
|
|
115
154
|
});
|
|
116
155
|
}
|
|
@@ -397,8 +436,8 @@ export class MCPCommandFactory {
|
|
|
397
436
|
}
|
|
398
437
|
}
|
|
399
438
|
}
|
|
400
|
-
catch (
|
|
401
|
-
logger.error(chalk.red(`❌ List command failed: ${
|
|
439
|
+
catch (_error) {
|
|
440
|
+
logger.error(chalk.red(`❌ List command failed: ${_error.message}`));
|
|
402
441
|
process.exit(1);
|
|
403
442
|
}
|
|
404
443
|
}
|
|
@@ -427,7 +466,7 @@ export class MCPCommandFactory {
|
|
|
427
466
|
const parsedEnv = JSON.parse(argv.env);
|
|
428
467
|
env = { ...env, ...parsedEnv };
|
|
429
468
|
}
|
|
430
|
-
catch (
|
|
469
|
+
catch (_error) {
|
|
431
470
|
if (spinner) {
|
|
432
471
|
spinner.fail();
|
|
433
472
|
}
|
|
@@ -503,8 +542,8 @@ export class MCPCommandFactory {
|
|
|
503
542
|
logger.always(chalk.yellow("⚠️ Could not test connection"));
|
|
504
543
|
}
|
|
505
544
|
}
|
|
506
|
-
catch (
|
|
507
|
-
logger.error(chalk.red(`❌ Install command failed: ${
|
|
545
|
+
catch (_error) {
|
|
546
|
+
logger.error(chalk.red(`❌ Install command failed: ${_error.message}`));
|
|
508
547
|
process.exit(1);
|
|
509
548
|
}
|
|
510
549
|
}
|
|
@@ -524,7 +563,7 @@ export class MCPCommandFactory {
|
|
|
524
563
|
try {
|
|
525
564
|
env = JSON.parse(argv.env);
|
|
526
565
|
}
|
|
527
|
-
catch (
|
|
566
|
+
catch (_error) {
|
|
528
567
|
if (spinner) {
|
|
529
568
|
spinner.fail();
|
|
530
569
|
}
|
|
@@ -574,8 +613,8 @@ export class MCPCommandFactory {
|
|
|
574
613
|
}
|
|
575
614
|
logger.always(`Transport: ${config.transport}`);
|
|
576
615
|
}
|
|
577
|
-
catch (
|
|
578
|
-
logger.error(chalk.red(`❌ Add command failed: ${
|
|
616
|
+
catch (_error) {
|
|
617
|
+
logger.error(chalk.red(`❌ Add command failed: ${_error.message}`));
|
|
579
618
|
process.exit(1);
|
|
580
619
|
}
|
|
581
620
|
}
|
|
@@ -641,8 +680,8 @@ export class MCPCommandFactory {
|
|
|
641
680
|
logger.always(chalk.yellow(`⚠️ ${connected}/${total} servers connected`));
|
|
642
681
|
}
|
|
643
682
|
}
|
|
644
|
-
catch (
|
|
645
|
-
logger.error(chalk.red(`❌ Test command failed: ${
|
|
683
|
+
catch (_error) {
|
|
684
|
+
logger.error(chalk.red(`❌ Test command failed: ${_error.message}`));
|
|
646
685
|
process.exit(1);
|
|
647
686
|
}
|
|
648
687
|
}
|
|
@@ -662,7 +701,7 @@ export class MCPCommandFactory {
|
|
|
662
701
|
try {
|
|
663
702
|
params = JSON.parse(argv.params);
|
|
664
703
|
}
|
|
665
|
-
catch (
|
|
704
|
+
catch (_error) {
|
|
666
705
|
if (spinner) {
|
|
667
706
|
spinner.fail();
|
|
668
707
|
}
|
|
@@ -764,8 +803,8 @@ export class MCPCommandFactory {
|
|
|
764
803
|
process.exit(1);
|
|
765
804
|
}
|
|
766
805
|
}
|
|
767
|
-
catch (
|
|
768
|
-
logger.error(chalk.red(`❌ Exec command failed: ${
|
|
806
|
+
catch (_error) {
|
|
807
|
+
logger.error(chalk.red(`❌ Exec command failed: ${_error.message}`));
|
|
769
808
|
process.exit(1);
|
|
770
809
|
}
|
|
771
810
|
}
|
|
@@ -816,8 +855,8 @@ export class MCPCommandFactory {
|
|
|
816
855
|
process.exit(1);
|
|
817
856
|
}
|
|
818
857
|
}
|
|
819
|
-
catch (
|
|
820
|
-
logger.error(chalk.red(`❌ Remove command failed: ${
|
|
858
|
+
catch (_error) {
|
|
859
|
+
logger.error(chalk.red(`❌ Remove command failed: ${_error.message}`));
|
|
821
860
|
process.exit(1);
|
|
822
861
|
}
|
|
823
862
|
}
|
|
@@ -883,14 +922,14 @@ export class MCPCommandFactory {
|
|
|
883
922
|
});
|
|
884
923
|
logger.always(chalk.green(`✅ Installed ${server.name}`));
|
|
885
924
|
}
|
|
886
|
-
catch (
|
|
887
|
-
logger.always(chalk.red(`❌ Failed to install ${server.name}: ${
|
|
925
|
+
catch (_error) {
|
|
926
|
+
logger.always(chalk.red(`❌ Failed to install ${server.name}: ${_error.message}`));
|
|
888
927
|
}
|
|
889
928
|
}
|
|
890
929
|
}
|
|
891
930
|
}
|
|
892
|
-
catch (
|
|
893
|
-
logger.error(chalk.red(`❌ Discover command failed: ${
|
|
931
|
+
catch (_error) {
|
|
932
|
+
logger.error(chalk.red(`❌ Discover command failed: ${_error.message}`));
|
|
894
933
|
process.exit(1);
|
|
895
934
|
}
|
|
896
935
|
}
|
|
@@ -928,7 +967,7 @@ export class MCPCommandFactory {
|
|
|
928
967
|
}
|
|
929
968
|
}
|
|
930
969
|
}
|
|
931
|
-
catch (
|
|
970
|
+
catch (_error) {
|
|
932
971
|
// Ignore errors in discovery
|
|
933
972
|
}
|
|
934
973
|
return servers;
|
|
@@ -968,7 +1007,7 @@ export class MCPCommandFactory {
|
|
|
968
1007
|
}
|
|
969
1008
|
}
|
|
970
1009
|
}
|
|
971
|
-
catch (
|
|
1010
|
+
catch (_error) {
|
|
972
1011
|
// Ignore errors in discovery
|
|
973
1012
|
}
|
|
974
1013
|
return servers;
|
|
@@ -107,12 +107,15 @@ async function statusHandler() {
|
|
|
107
107
|
logger.always(chalk.green(`\n${data.models.length} models available`));
|
|
108
108
|
}
|
|
109
109
|
}
|
|
110
|
-
catch {
|
|
111
|
-
// Curl might not be available, that's ok
|
|
110
|
+
catch (error) {
|
|
111
|
+
// Curl might not be available, that's ok. Error is ignored.
|
|
112
|
+
logger.debug &&
|
|
113
|
+
logger.debug("Optional curl command failed in statusHandler:", error);
|
|
112
114
|
}
|
|
113
115
|
}
|
|
114
116
|
catch (error) {
|
|
115
117
|
spinner.fail("Ollama service is not running");
|
|
118
|
+
logger.debug && logger.debug("Ollama status check failed:", error);
|
|
116
119
|
logger.always(chalk.yellow("\nStart Ollama with: ollama serve"));
|
|
117
120
|
logger.always(chalk.blue("Or restart the Ollama app if using the desktop version"));
|
|
118
121
|
process.exit(1);
|
|
@@ -200,9 +203,10 @@ async function stopHandler() {
|
|
|
200
203
|
}
|
|
201
204
|
spinner.succeed("Ollama service stopped");
|
|
202
205
|
}
|
|
203
|
-
catch (
|
|
206
|
+
catch (err) {
|
|
204
207
|
spinner.fail("Failed to stop Ollama service");
|
|
205
208
|
logger.error(chalk.red("It may not be running or requires manual stop"));
|
|
209
|
+
logger.error(chalk.red(`Error details: ${err}`));
|
|
206
210
|
}
|
|
207
211
|
}
|
|
208
212
|
async function setupHandler() {
|