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 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.getServerStatus();
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.getServerStatus();
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.getServerStatus().length;
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.getServerStatus();
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.getServerStatus();
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.getServerStatus();
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
- deploymentMethod = 'direct_api';
647
- deploymentSuccess = true;
648
- this.logger.info('āœ… Direct deployment successful');
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
- deploymentMethod = 'table_record';
710
- deploymentSuccess = true;
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
- * Start all ServiceNow MCP servers (WITH SINGLETON PROTECTION)
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
- * Start all ServiceNow MCP servers (WITH SINGLETON PROTECTION)
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 mcp_singleton_lock_js_1 = require("../utils/mcp-singleton-lock.js");
10
- const logger = new logger_js_1.Logger('MCPServerLauncher');
46
+ const logger = new logger_js_1.Logger('DeprecatedMCPLauncher');
11
47
  async function startAllServers() {
12
- // šŸ”’ SINGLETON CHECK - Prevent duplicate instances
13
- const singletonLock = (0, mcp_singleton_lock_js_1.getMCPSingletonLock)();
14
- if (!singletonLock.acquire()) {
15
- logger.error('āŒ MCP servers already running. Exiting.');
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
- logger.info('āœ… Starting all ServiceNow MCP servers (singleton protected)...');
19
- const servers = [
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 all MCP servers...');
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.7",
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",