snow-flow 2.8.7 ā 2.8.9
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/dist/cli.js +35 -5
- package/dist/health/system-health.js +1 -1
- package/dist/mcp/servicenow-deployment-mcp.js +18 -5
- package/dist/mcp/start-all-mcp-servers.d.ts +6 -1
- package/dist/mcp/start-all-mcp-servers.js +59 -78
- package/dist/utils/mcp-server-manager.d.ts +19 -4
- package/dist/utils/mcp-server-manager.js +28 -6
- package/package.json +3 -1
package/dist/cli.js
CHANGED
|
@@ -417,6 +417,36 @@ async function executeClaudeCode(prompt) {
|
|
|
417
417
|
// Check for MCP config
|
|
418
418
|
const mcpConfigPath = (0, path_1.join)(process.cwd(), '.mcp.json');
|
|
419
419
|
const hasMcpConfig = (0, fs_2.existsSync)(mcpConfigPath);
|
|
420
|
+
// Auto-start MCP servers if they're not running
|
|
421
|
+
if (hasMcpConfig) {
|
|
422
|
+
cliLogger.info('š§ Checking MCP server status...');
|
|
423
|
+
try {
|
|
424
|
+
const { MCPServerManager } = await Promise.resolve().then(() => __importStar(require('./utils/mcp-server-manager.js')));
|
|
425
|
+
const manager = new MCPServerManager();
|
|
426
|
+
await manager.initialize();
|
|
427
|
+
const systemStatus = manager.getSystemStatus();
|
|
428
|
+
if (systemStatus.running === 0) {
|
|
429
|
+
cliLogger.info('š Starting MCP servers automatically for swarm operation...');
|
|
430
|
+
await manager.startAllServers();
|
|
431
|
+
const newStatus = manager.getSystemStatus();
|
|
432
|
+
cliLogger.info(`ā
Started ${newStatus.running}/${newStatus.total} MCP servers`);
|
|
433
|
+
}
|
|
434
|
+
else if (systemStatus.running < systemStatus.total) {
|
|
435
|
+
cliLogger.info(`ā ļø Only ${systemStatus.running}/${systemStatus.total} MCP servers running`);
|
|
436
|
+
cliLogger.info('š Starting remaining servers...');
|
|
437
|
+
await manager.startAllServers();
|
|
438
|
+
const newStatus = manager.getSystemStatus();
|
|
439
|
+
cliLogger.info(`ā
All ${newStatus.running}/${newStatus.total} MCP servers running`);
|
|
440
|
+
}
|
|
441
|
+
else {
|
|
442
|
+
cliLogger.info(`ā
All ${systemStatus.running} MCP servers already running`);
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
catch (error) {
|
|
446
|
+
cliLogger.warn('ā ļø Could not auto-start MCP servers:', error instanceof Error ? error.message : error);
|
|
447
|
+
cliLogger.info('š” You may need to run "npm run mcp:start" manually');
|
|
448
|
+
}
|
|
449
|
+
}
|
|
420
450
|
// Launch Claude Code with MCP config and skip permissions to avoid raw mode issues
|
|
421
451
|
const claudeArgs = hasMcpConfig
|
|
422
452
|
? ['--mcp-config', '.mcp.json', '.', '--dangerously-skip-permissions']
|
|
@@ -2365,7 +2395,7 @@ program
|
|
|
2365
2395
|
await manager.initialize();
|
|
2366
2396
|
console.log('š” Starting all ServiceNow MCP servers...');
|
|
2367
2397
|
await manager.startAllServers();
|
|
2368
|
-
const status = manager.
|
|
2398
|
+
const status = manager.getServerList();
|
|
2369
2399
|
const running = status.filter((s) => s.status === 'running').length;
|
|
2370
2400
|
const total = status.length;
|
|
2371
2401
|
console.log(chalk_1.default.green(`ā
Started ${running}/${total} MCP servers successfully!`));
|
|
@@ -4058,7 +4088,7 @@ async function handleMCPStart(manager, options) {
|
|
|
4058
4088
|
else {
|
|
4059
4089
|
console.log('š” Starting all configured MCP servers...');
|
|
4060
4090
|
await manager.startAllServers();
|
|
4061
|
-
const status = manager.
|
|
4091
|
+
const status = manager.getServerList();
|
|
4062
4092
|
const running = status.filter((s) => s.status === 'running').length;
|
|
4063
4093
|
const total = status.length;
|
|
4064
4094
|
console.log(`\nā
Started ${running}/${total} MCP servers`);
|
|
@@ -4110,12 +4140,12 @@ async function handleMCPRestart(manager, options) {
|
|
|
4110
4140
|
await manager.stopAllServers();
|
|
4111
4141
|
await manager.startAllServers();
|
|
4112
4142
|
const running = manager.getRunningServersCount();
|
|
4113
|
-
const total = manager.
|
|
4143
|
+
const total = manager.getServerList().length;
|
|
4114
4144
|
console.log(`ā
Restarted ${running}/${total} MCP servers`);
|
|
4115
4145
|
}
|
|
4116
4146
|
}
|
|
4117
4147
|
async function handleMCPStatus(manager, options) {
|
|
4118
|
-
const servers = manager.
|
|
4148
|
+
const servers = manager.getServerList();
|
|
4119
4149
|
console.log('\nš MCP Server Status');
|
|
4120
4150
|
console.log('ā'.repeat(80));
|
|
4121
4151
|
if (servers.length === 0) {
|
|
@@ -4184,7 +4214,7 @@ async function handleMCPLogs(manager, options) {
|
|
|
4184
4214
|
}
|
|
4185
4215
|
}
|
|
4186
4216
|
async function handleMCPList(manager, options) {
|
|
4187
|
-
const servers = manager.
|
|
4217
|
+
const servers = manager.getServerList();
|
|
4188
4218
|
console.log('\nš Configured MCP Servers');
|
|
4189
4219
|
console.log('ā'.repeat(80));
|
|
4190
4220
|
if (servers.length === 0) {
|
|
@@ -254,7 +254,7 @@ class SystemHealth extends events_1.EventEmitter {
|
|
|
254
254
|
async checkMCP() {
|
|
255
255
|
const startTime = Date.now();
|
|
256
256
|
try {
|
|
257
|
-
const serverStatuses = this.mcpManager.
|
|
257
|
+
const serverStatuses = this.mcpManager.getServerList();
|
|
258
258
|
const totalServers = serverStatuses.length;
|
|
259
259
|
const healthyServers = serverStatuses.filter(s => s.status === 'running').length;
|
|
260
260
|
const unhealthyServers = serverStatuses.filter(s => s.status === 'error').length;
|
|
@@ -643,9 +643,15 @@ class ServiceNowDeploymentMCP {
|
|
|
643
643
|
has_preview: true,
|
|
644
644
|
category: args.category || 'custom',
|
|
645
645
|
});
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
646
|
+
// ONLY set success if the operation actually succeeded
|
|
647
|
+
if (result?.success) {
|
|
648
|
+
deploymentMethod = 'direct_api';
|
|
649
|
+
deploymentSuccess = true;
|
|
650
|
+
this.logger.info('ā
Direct deployment successful');
|
|
651
|
+
}
|
|
652
|
+
else {
|
|
653
|
+
throw new Error(`Widget creation failed: ${result?.error || 'Unknown error'}`);
|
|
654
|
+
}
|
|
649
655
|
}
|
|
650
656
|
catch (error) {
|
|
651
657
|
directError = error;
|
|
@@ -706,8 +712,15 @@ class ServiceNowDeploymentMCP {
|
|
|
706
712
|
roles: '',
|
|
707
713
|
servicenow: false
|
|
708
714
|
});
|
|
709
|
-
|
|
710
|
-
|
|
715
|
+
// ONLY set success if the operation actually succeeded
|
|
716
|
+
if (result?.success) {
|
|
717
|
+
deploymentMethod = 'table_record';
|
|
718
|
+
deploymentSuccess = true;
|
|
719
|
+
this.logger.info('ā
Fallback deployment successful');
|
|
720
|
+
}
|
|
721
|
+
else {
|
|
722
|
+
throw new Error(`Table record creation failed: ${result?.error || 'Unknown error'}`);
|
|
723
|
+
}
|
|
711
724
|
// createRecord should already return a ServiceNowAPIResponse structure
|
|
712
725
|
// No need to wrap it again
|
|
713
726
|
}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* ā ļø DEPRECATED: Legacy MCP Server Starter
|
|
4
|
+
*
|
|
5
|
+
* This script is DEPRECATED and will be removed in v3.0.0
|
|
6
|
+
* Use MCPServerManager instead for proper server management.
|
|
7
|
+
*
|
|
8
|
+
* Migration: Use scripts/start-mcp-proper.js or MCPServerManager directly
|
|
4
9
|
*/
|
|
5
10
|
export {};
|
|
6
11
|
//# sourceMappingURL=start-all-mcp-servers.d.ts.map
|
|
@@ -1,93 +1,74 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
"use strict";
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* ā ļø DEPRECATED: Legacy MCP Server Starter
|
|
5
|
+
*
|
|
6
|
+
* This script is DEPRECATED and will be removed in v3.0.0
|
|
7
|
+
* Use MCPServerManager instead for proper server management.
|
|
8
|
+
*
|
|
9
|
+
* Migration: Use scripts/start-mcp-proper.js or MCPServerManager directly
|
|
5
10
|
*/
|
|
11
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
12
|
+
if (k2 === undefined) k2 = k;
|
|
13
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
14
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
15
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
16
|
+
}
|
|
17
|
+
Object.defineProperty(o, k2, desc);
|
|
18
|
+
}) : (function(o, m, k, k2) {
|
|
19
|
+
if (k2 === undefined) k2 = k;
|
|
20
|
+
o[k2] = m[k];
|
|
21
|
+
}));
|
|
22
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
23
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
24
|
+
}) : function(o, v) {
|
|
25
|
+
o["default"] = v;
|
|
26
|
+
});
|
|
27
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
28
|
+
var ownKeys = function(o) {
|
|
29
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
30
|
+
var ar = [];
|
|
31
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
32
|
+
return ar;
|
|
33
|
+
};
|
|
34
|
+
return ownKeys(o);
|
|
35
|
+
};
|
|
36
|
+
return function (mod) {
|
|
37
|
+
if (mod && mod.__esModule) return mod;
|
|
38
|
+
var result = {};
|
|
39
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
40
|
+
__setModuleDefault(result, mod);
|
|
41
|
+
return result;
|
|
42
|
+
};
|
|
43
|
+
})();
|
|
6
44
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
const child_process_1 = require("child_process");
|
|
8
45
|
const logger_js_1 = require("../utils/logger.js");
|
|
9
|
-
const
|
|
10
|
-
const logger = new logger_js_1.Logger('MCPServerLauncher');
|
|
46
|
+
const logger = new logger_js_1.Logger('DeprecatedMCPLauncher');
|
|
11
47
|
async function startAllServers() {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
48
|
+
logger.warn('ā ļø DEPRECATED: This start-all-mcp-servers.ts script is deprecated!');
|
|
49
|
+
logger.warn(' Please use MCPServerManager or scripts/start-mcp-proper.js instead');
|
|
50
|
+
logger.warn(' This provides proper process management and singleton protection');
|
|
51
|
+
console.log('\nš Redirecting to proper MCPServerManager...\n');
|
|
52
|
+
try {
|
|
53
|
+
// Redirect to proper approach
|
|
54
|
+
const { MCPServerManager } = await Promise.resolve().then(() => __importStar(require('../utils/mcp-server-manager.js')));
|
|
55
|
+
const manager = new MCPServerManager();
|
|
56
|
+
await manager.initialize();
|
|
57
|
+
await manager.startAllServers();
|
|
58
|
+
logger.info('ā
Servers started using proper MCPServerManager');
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
logger.error('ā Failed to start servers:', error.message);
|
|
62
|
+
logger.info('š” Consider migrating to: scripts/start-mcp-proper.js');
|
|
16
63
|
process.exit(1);
|
|
17
64
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
name: 'ServiceNow MCP Server',
|
|
22
|
-
script: 'dist/mcp/servicenow-mcp-server.js'
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
name: 'ServiceNow Deployment MCP',
|
|
26
|
-
script: 'dist/mcp/servicenow-deployment-mcp.js'
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
name: 'ServiceNow Intelligent MCP',
|
|
30
|
-
script: 'dist/mcp/servicenow-intelligent-mcp.js'
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
name: 'ServiceNow Update Set MCP',
|
|
34
|
-
script: 'dist/mcp/servicenow-update-set-mcp.js'
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
name: 'ServiceNow Advanced Features MCP',
|
|
38
|
-
script: 'dist/mcp/advanced/servicenow-advanced-features-mcp.js'
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
name: 'ServiceNow Operations MCP',
|
|
42
|
-
script: 'dist/mcp/servicenow-operations-mcp.js'
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
name: 'ServiceNow Reporting Analytics MCP',
|
|
46
|
-
script: 'dist/mcp/servicenow-reporting-analytics-mcp.js'
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
name: 'ServiceNow Security Compliance MCP',
|
|
50
|
-
script: 'dist/mcp/servicenow-security-compliance-mcp.js'
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
name: 'ServiceNow Platform Development MCP',
|
|
54
|
-
script: 'dist/mcp/servicenow-platform-development-mcp.js'
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
name: 'ServiceNow Automation MCP',
|
|
58
|
-
script: 'dist/mcp/servicenow-automation-mcp.js'
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
name: 'ServiceNow Integration MCP',
|
|
62
|
-
script: 'dist/mcp/servicenow-integration-mcp.js'
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
name: 'Snow-Flow MCP',
|
|
66
|
-
script: 'dist/mcp/snow-flow-mcp.js'
|
|
67
|
-
}
|
|
68
|
-
];
|
|
69
|
-
const processes = servers.map(server => {
|
|
70
|
-
logger.info(`Starting ${server.name}...`);
|
|
71
|
-
const proc = (0, child_process_1.spawn)('node', [server.script], {
|
|
72
|
-
stdio: 'inherit',
|
|
73
|
-
env: { ...process.env }
|
|
74
|
-
});
|
|
75
|
-
proc.on('error', (error) => {
|
|
76
|
-
logger.error(`Failed to start ${server.name}:`, error);
|
|
77
|
-
});
|
|
78
|
-
proc.on('exit', (code) => {
|
|
79
|
-
logger.info(`${server.name} exited with code ${code}`);
|
|
80
|
-
});
|
|
81
|
-
return proc;
|
|
82
|
-
});
|
|
83
|
-
// Handle graceful shutdown
|
|
65
|
+
// If we get here, MCPServerManager started successfully
|
|
66
|
+
logger.info('š Migration successful! Using proper MCPServerManager now.');
|
|
67
|
+
// Keep process alive to monitor servers (handled by MCPServerManager)
|
|
84
68
|
process.on('SIGINT', () => {
|
|
85
|
-
logger.info('Shutting down
|
|
86
|
-
processes.forEach(proc => proc.kill());
|
|
69
|
+
logger.info('š Shutting down...');
|
|
87
70
|
process.exit(0);
|
|
88
71
|
});
|
|
89
|
-
logger.info('All MCP servers started successfully!');
|
|
90
|
-
logger.info('Press Ctrl+C to stop all servers');
|
|
91
72
|
}
|
|
92
73
|
startAllServers().catch(error => {
|
|
93
74
|
logger.error('Failed to start MCP servers:', error);
|
|
@@ -59,10 +59,6 @@ export declare class MCPServerManager extends EventEmitter {
|
|
|
59
59
|
* Stop all running MCP servers
|
|
60
60
|
*/
|
|
61
61
|
stopAllServers(): Promise<void>;
|
|
62
|
-
/**
|
|
63
|
-
* Get status of all servers
|
|
64
|
-
*/
|
|
65
|
-
getServerStatus(): MCPServer[];
|
|
66
62
|
/**
|
|
67
63
|
* Get status of a specific server
|
|
68
64
|
*/
|
|
@@ -83,6 +79,25 @@ export declare class MCPServerManager extends EventEmitter {
|
|
|
83
79
|
* Remove a server configuration
|
|
84
80
|
*/
|
|
85
81
|
removeServer(name: string): Promise<void>;
|
|
82
|
+
/**
|
|
83
|
+
* Get list of all servers (for monitoring/status display)
|
|
84
|
+
*/
|
|
85
|
+
getServerList(): MCPServer[];
|
|
86
|
+
/**
|
|
87
|
+
* Get server status by name
|
|
88
|
+
*/
|
|
89
|
+
getServerStatus(name: string): MCPServer | undefined;
|
|
90
|
+
/**
|
|
91
|
+
* Get overall system status
|
|
92
|
+
*/
|
|
93
|
+
getSystemStatus(): {
|
|
94
|
+
total: number;
|
|
95
|
+
running: number;
|
|
96
|
+
stopped: number;
|
|
97
|
+
starting: number;
|
|
98
|
+
error: number;
|
|
99
|
+
health: string;
|
|
100
|
+
};
|
|
86
101
|
/**
|
|
87
102
|
* Cleanup - stop all servers and clean up resources
|
|
88
103
|
*/
|
|
@@ -304,12 +304,6 @@ class MCPServerManager extends events_1.EventEmitter {
|
|
|
304
304
|
}));
|
|
305
305
|
await Promise.all(promises);
|
|
306
306
|
}
|
|
307
|
-
/**
|
|
308
|
-
* Get status of all servers
|
|
309
|
-
*/
|
|
310
|
-
getServerStatus() {
|
|
311
|
-
return Array.from(this.servers.values());
|
|
312
|
-
}
|
|
313
307
|
/**
|
|
314
308
|
* Get status of a specific server
|
|
315
309
|
*/
|
|
@@ -367,6 +361,34 @@ class MCPServerManager extends events_1.EventEmitter {
|
|
|
367
361
|
}));
|
|
368
362
|
await this.saveConfiguration(configs);
|
|
369
363
|
}
|
|
364
|
+
/**
|
|
365
|
+
* Get list of all servers (for monitoring/status display)
|
|
366
|
+
*/
|
|
367
|
+
getServerList() {
|
|
368
|
+
return Array.from(this.servers.values());
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Get server status by name
|
|
372
|
+
*/
|
|
373
|
+
getServerStatus(name) {
|
|
374
|
+
return this.servers.get(name);
|
|
375
|
+
}
|
|
376
|
+
/**
|
|
377
|
+
* Get overall system status
|
|
378
|
+
*/
|
|
379
|
+
getSystemStatus() {
|
|
380
|
+
const servers = this.getServerList();
|
|
381
|
+
const running = servers.filter(s => s.status === 'running').length;
|
|
382
|
+
const total = servers.length;
|
|
383
|
+
return {
|
|
384
|
+
total,
|
|
385
|
+
running,
|
|
386
|
+
stopped: servers.filter(s => s.status === 'stopped').length,
|
|
387
|
+
starting: servers.filter(s => s.status === 'starting').length,
|
|
388
|
+
error: servers.filter(s => s.status === 'error').length,
|
|
389
|
+
health: running === total ? 'healthy' : running > 0 ? 'partial' : 'down'
|
|
390
|
+
};
|
|
391
|
+
}
|
|
370
392
|
/**
|
|
371
393
|
* Cleanup - stop all servers and clean up resources
|
|
372
394
|
*/
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "snow-flow",
|
|
3
|
-
"version": "2.8.
|
|
3
|
+
"version": "2.8.9",
|
|
4
4
|
"description": "Snow-Flow: ServiceNow Advanced Intelligence Platform - 100+ real MCP tools with AI-powered swarm orchestration and neural networks. Dynamic task categorization using AI. Machine learning for incident classification, change risk prediction, and anomaly detection. Zero Mock Data, 100% Real API Integration.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "commonjs",
|
|
@@ -23,6 +23,8 @@
|
|
|
23
23
|
"reset-mcp:restart": "node scripts/reset-mcp-servers.js --restart",
|
|
24
24
|
"cleanup-mcp": "node scripts/cleanup-mcp-servers.js",
|
|
25
25
|
"mcp:clean": "node scripts/cleanup-mcp-servers.js && npm run build",
|
|
26
|
+
"mcp:start": "node scripts/start-mcp-proper.js",
|
|
27
|
+
"mcp:start-proper": "node scripts/start-mcp-proper.js",
|
|
26
28
|
"postbuild-disabled": "npm run setup-mcp",
|
|
27
29
|
"postinstall": "node scripts/postinstall.js",
|
|
28
30
|
"version": "node scripts/update-version.js && npm run build && git add src/version.ts",
|