snow-flow 8.39.0 → 8.39.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 (43) hide show
  1. package/README.md +9 -9
  2. package/dist/cli/enterprise.js +1 -1
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +41 -37
  5. package/dist/cli.js.map +1 -1
  6. package/dist/mcp/base-mcp-server.d.ts +3 -0
  7. package/dist/mcp/base-mcp-server.d.ts.map +1 -1
  8. package/dist/mcp/base-mcp-server.js +48 -21
  9. package/dist/mcp/base-mcp-server.js.map +1 -1
  10. package/dist/mcp/servicenow-deployment-mcp.js +1 -1
  11. package/dist/mcp/snow-flow-mcp.js +48 -31
  12. package/dist/mcp/snow-flow-mcp.js.map +1 -1
  13. package/dist/monitoring/performance-tracker.d.ts +1 -1
  14. package/dist/monitoring/performance-tracker.d.ts.map +1 -1
  15. package/dist/monitoring/performance-tracker.js +44 -9
  16. package/dist/monitoring/performance-tracker.js.map +1 -1
  17. package/dist/snow-flow-system.d.ts +14 -3
  18. package/dist/snow-flow-system.d.ts.map +1 -1
  19. package/dist/snow-flow-system.js +66 -22
  20. package/dist/snow-flow-system.js.map +1 -1
  21. package/dist/templates/readme-template.d.ts +1 -1
  22. package/dist/templates/readme-template.js +13 -13
  23. package/dist/types/snow-flow.types.d.ts +1 -0
  24. package/dist/types/snow-flow.types.d.ts.map +1 -1
  25. package/dist/utils/mcp-on-demand-manager.d.ts.map +1 -1
  26. package/dist/utils/mcp-on-demand-manager.js +18 -5
  27. package/dist/utils/mcp-on-demand-manager.js.map +1 -1
  28. package/dist/utils/mcp-persistent-guard.d.ts +4 -0
  29. package/dist/utils/mcp-persistent-guard.d.ts.map +1 -1
  30. package/dist/utils/mcp-persistent-guard.js +26 -2
  31. package/dist/utils/mcp-persistent-guard.js.map +1 -1
  32. package/dist/utils/mcp-process-manager.d.ts.map +1 -1
  33. package/dist/utils/mcp-process-manager.js +5 -0
  34. package/dist/utils/mcp-process-manager.js.map +1 -1
  35. package/dist/utils/memory-safe-collections.d.ts +119 -0
  36. package/dist/utils/memory-safe-collections.d.ts.map +1 -0
  37. package/dist/utils/memory-safe-collections.js +212 -0
  38. package/dist/utils/memory-safe-collections.js.map +1 -0
  39. package/dist/utils/timer-registry.d.ts +138 -0
  40. package/dist/utils/timer-registry.d.ts.map +1 -0
  41. package/dist/utils/timer-registry.js +289 -0
  42. package/dist/utils/timer-registry.js.map +1 -0
  43. package/package.json +1 -1
@@ -0,0 +1,138 @@
1
+ /**
2
+ * Timer Registry - Centralized timer management for snow-flow
3
+ * Ensures all intervals/timeouts are properly tracked and cleaned up
4
+ *
5
+ * This module provides automatic cleanup ONLY during graceful shutdown.
6
+ * Timers are NOT cleaned up aggressively during normal operation.
7
+ *
8
+ * @module timer-registry
9
+ */
10
+ /**
11
+ * Shutdown handler function type
12
+ */
13
+ type ShutdownHandler = () => Promise<void> | void;
14
+ /**
15
+ * TimerRegistry - Singleton class for centralized timer management
16
+ *
17
+ * Features:
18
+ * - Automatic cleanup on process exit
19
+ * - Named timers for easy management
20
+ * - Shutdown handlers for graceful cleanup
21
+ * - Statistics and monitoring
22
+ */
23
+ export declare class TimerRegistry {
24
+ private static instance;
25
+ private intervals;
26
+ private timeouts;
27
+ private shutdownHandlers;
28
+ private logger;
29
+ private isShuttingDown;
30
+ private shutdownHandlersRegistered;
31
+ private constructor();
32
+ /**
33
+ * Get the singleton instance
34
+ */
35
+ static getInstance(): TimerRegistry;
36
+ /**
37
+ * Register global shutdown handlers (only once)
38
+ */
39
+ private registerGlobalShutdownHandlers;
40
+ /**
41
+ * Register a named interval
42
+ *
43
+ * @param id Unique identifier for the interval
44
+ * @param callback Function to execute
45
+ * @param ms Interval in milliseconds
46
+ * @param unref If true, don't keep the process alive for this timer (default: true)
47
+ * @returns The NodeJS.Timeout object
48
+ */
49
+ registerInterval(id: string, callback: () => void | Promise<void>, ms: number, unref?: boolean): NodeJS.Timeout;
50
+ /**
51
+ * Register a named timeout
52
+ *
53
+ * @param id Unique identifier for the timeout
54
+ * @param callback Function to execute
55
+ * @param ms Delay in milliseconds
56
+ * @returns The NodeJS.Timeout object
57
+ */
58
+ registerTimeout(id: string, callback: () => void | Promise<void>, ms: number): NodeJS.Timeout;
59
+ /**
60
+ * Clear a named interval
61
+ * @param id The interval identifier
62
+ */
63
+ clearInterval(id: string): void;
64
+ /**
65
+ * Clear a named timeout
66
+ * @param id The timeout identifier
67
+ */
68
+ clearTimeout(id: string): void;
69
+ /**
70
+ * Check if an interval exists
71
+ * @param id The interval identifier
72
+ */
73
+ hasInterval(id: string): boolean;
74
+ /**
75
+ * Check if a timeout exists
76
+ * @param id The timeout identifier
77
+ */
78
+ hasTimeout(id: string): boolean;
79
+ /**
80
+ * Register a shutdown handler
81
+ * Called during cleanup() in reverse order of registration
82
+ *
83
+ * @param handler Async function to call during shutdown
84
+ */
85
+ registerShutdownHandler(handler: ShutdownHandler): void;
86
+ /**
87
+ * Remove a shutdown handler
88
+ * @param handler The handler to remove
89
+ */
90
+ removeShutdownHandler(handler: ShutdownHandler): void;
91
+ /**
92
+ * Cleanup all timers and run shutdown handlers
93
+ */
94
+ cleanup(): Promise<void>;
95
+ /**
96
+ * Get statistics about registered timers
97
+ */
98
+ getStats(): {
99
+ intervals: number;
100
+ timeouts: number;
101
+ shutdownHandlers: number;
102
+ intervalIds: string[];
103
+ timeoutIds: string[];
104
+ };
105
+ /**
106
+ * Get detailed information about all timers
107
+ */
108
+ getDetailedStats(): {
109
+ intervals: Array<{
110
+ id: string;
111
+ ageMs: number;
112
+ callback: string;
113
+ }>;
114
+ timeouts: Array<{
115
+ id: string;
116
+ ageMs: number;
117
+ callback: string;
118
+ }>;
119
+ shutdownHandlerCount: number;
120
+ };
121
+ /**
122
+ * Clear all timers by prefix
123
+ * Useful for cleaning up all timers from a specific component
124
+ *
125
+ * @param prefix The prefix to match (e.g., 'mcp-' clears 'mcp-auth', 'mcp-metrics', etc.)
126
+ */
127
+ clearByPrefix(prefix: string): {
128
+ intervals: number;
129
+ timeouts: number;
130
+ };
131
+ }
132
+ /**
133
+ * Singleton instance of TimerRegistry
134
+ * Use this for all timer management in snow-flow
135
+ */
136
+ export declare const timerRegistry: TimerRegistry;
137
+ export {};
138
+ //# sourceMappingURL=timer-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timer-registry.d.ts","sourceRoot":"","sources":["../../src/utils/timer-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH;;GAEG;AACH,KAAK,eAAe,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAalD;;;;;;;;GAQG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgB;IACvC,OAAO,CAAC,SAAS,CAAqC;IACtD,OAAO,CAAC,QAAQ,CAAqC;IACrD,OAAO,CAAC,gBAAgB,CAAyB;IACjD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,0BAA0B,CAAS;IAE3C,OAAO;IAKP;;OAEG;IACH,MAAM,CAAC,WAAW,IAAI,aAAa;IAOnC;;OAEG;IACH,OAAO,CAAC,8BAA8B;IAmBtC;;;;;;;;OAQG;IACH,gBAAgB,CACd,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EACpC,EAAE,EAAE,MAAM,EACV,KAAK,UAAO,GACX,MAAM,CAAC,OAAO;IA6BjB;;;;;;;OAOG;IACH,eAAe,CACb,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EACpC,EAAE,EAAE,MAAM,GACT,MAAM,CAAC,OAAO;IA6BjB;;;OAGG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAS/B;;;OAGG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAS9B;;;OAGG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIhC;;;OAGG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAI/B;;;;;OAKG;IACH,uBAAuB,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAKvD;;;OAGG;IACH,qBAAqB,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAQrD;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAiC9B;;OAEG;IACH,QAAQ,IAAI;QACV,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,UAAU,EAAE,MAAM,EAAE,CAAC;KACtB;IAUD;;OAEG;IACH,gBAAgB,IAAI;QAClB,SAAS,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAClE,QAAQ,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACjE,oBAAoB,EAAE,MAAM,CAAC;KAC9B;IAkBD;;;;;OAKG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;CAmCvE;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,eAA8B,CAAC"}
@@ -0,0 +1,289 @@
1
+ "use strict";
2
+ /**
3
+ * Timer Registry - Centralized timer management for snow-flow
4
+ * Ensures all intervals/timeouts are properly tracked and cleaned up
5
+ *
6
+ * This module provides automatic cleanup ONLY during graceful shutdown.
7
+ * Timers are NOT cleaned up aggressively during normal operation.
8
+ *
9
+ * @module timer-registry
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.timerRegistry = exports.TimerRegistry = void 0;
13
+ const logger_js_1 = require("./logger.js");
14
+ /**
15
+ * TimerRegistry - Singleton class for centralized timer management
16
+ *
17
+ * Features:
18
+ * - Automatic cleanup on process exit
19
+ * - Named timers for easy management
20
+ * - Shutdown handlers for graceful cleanup
21
+ * - Statistics and monitoring
22
+ */
23
+ class TimerRegistry {
24
+ constructor() {
25
+ this.intervals = new Map();
26
+ this.timeouts = new Map();
27
+ this.shutdownHandlers = [];
28
+ this.isShuttingDown = false;
29
+ this.shutdownHandlersRegistered = false;
30
+ this.logger = new logger_js_1.Logger('TimerRegistry');
31
+ this.registerGlobalShutdownHandlers();
32
+ }
33
+ /**
34
+ * Get the singleton instance
35
+ */
36
+ static getInstance() {
37
+ if (!TimerRegistry.instance) {
38
+ TimerRegistry.instance = new TimerRegistry();
39
+ }
40
+ return TimerRegistry.instance;
41
+ }
42
+ /**
43
+ * Register global shutdown handlers (only once)
44
+ */
45
+ registerGlobalShutdownHandlers() {
46
+ if (this.shutdownHandlersRegistered)
47
+ return;
48
+ const shutdownHandler = async (signal) => {
49
+ if (this.isShuttingDown)
50
+ return;
51
+ this.isShuttingDown = true;
52
+ this.logger.info(`Received ${signal}, cleaning up timers...`);
53
+ await this.cleanup();
54
+ };
55
+ // Use once() to avoid listener accumulation
56
+ process.once('beforeExit', () => shutdownHandler('beforeExit'));
57
+ process.once('SIGTERM', () => shutdownHandler('SIGTERM'));
58
+ process.once('SIGINT', () => shutdownHandler('SIGINT'));
59
+ this.shutdownHandlersRegistered = true;
60
+ }
61
+ /**
62
+ * Register a named interval
63
+ *
64
+ * @param id Unique identifier for the interval
65
+ * @param callback Function to execute
66
+ * @param ms Interval in milliseconds
67
+ * @param unref If true, don't keep the process alive for this timer (default: true)
68
+ * @returns The NodeJS.Timeout object
69
+ */
70
+ registerInterval(id, callback, ms, unref = true) {
71
+ // Clear existing interval with same id
72
+ this.clearInterval(id);
73
+ const wrappedCallback = async () => {
74
+ try {
75
+ await callback();
76
+ }
77
+ catch (error) {
78
+ this.logger.error(`Interval ${id} error:`, error);
79
+ }
80
+ };
81
+ const timer = setInterval(wrappedCallback, ms);
82
+ if (unref)
83
+ timer.unref();
84
+ const info = {
85
+ id,
86
+ type: 'interval',
87
+ timer,
88
+ createdAt: Date.now(),
89
+ callback: callback.name || 'anonymous'
90
+ };
91
+ this.intervals.set(id, info);
92
+ this.logger.debug(`Registered interval: ${id} (${ms}ms)`);
93
+ return timer;
94
+ }
95
+ /**
96
+ * Register a named timeout
97
+ *
98
+ * @param id Unique identifier for the timeout
99
+ * @param callback Function to execute
100
+ * @param ms Delay in milliseconds
101
+ * @returns The NodeJS.Timeout object
102
+ */
103
+ registerTimeout(id, callback, ms) {
104
+ // Clear existing timeout with same id
105
+ this.clearTimeout(id);
106
+ const wrappedCallback = async () => {
107
+ this.timeouts.delete(id);
108
+ try {
109
+ await callback();
110
+ }
111
+ catch (error) {
112
+ this.logger.error(`Timeout ${id} error:`, error);
113
+ }
114
+ };
115
+ const timer = setTimeout(wrappedCallback, ms);
116
+ const info = {
117
+ id,
118
+ type: 'timeout',
119
+ timer,
120
+ createdAt: Date.now(),
121
+ callback: callback.name || 'anonymous'
122
+ };
123
+ this.timeouts.set(id, info);
124
+ this.logger.debug(`Registered timeout: ${id} (${ms}ms)`);
125
+ return timer;
126
+ }
127
+ /**
128
+ * Clear a named interval
129
+ * @param id The interval identifier
130
+ */
131
+ clearInterval(id) {
132
+ const info = this.intervals.get(id);
133
+ if (info) {
134
+ clearInterval(info.timer);
135
+ this.intervals.delete(id);
136
+ this.logger.debug(`Cleared interval: ${id}`);
137
+ }
138
+ }
139
+ /**
140
+ * Clear a named timeout
141
+ * @param id The timeout identifier
142
+ */
143
+ clearTimeout(id) {
144
+ const info = this.timeouts.get(id);
145
+ if (info) {
146
+ clearTimeout(info.timer);
147
+ this.timeouts.delete(id);
148
+ this.logger.debug(`Cleared timeout: ${id}`);
149
+ }
150
+ }
151
+ /**
152
+ * Check if an interval exists
153
+ * @param id The interval identifier
154
+ */
155
+ hasInterval(id) {
156
+ return this.intervals.has(id);
157
+ }
158
+ /**
159
+ * Check if a timeout exists
160
+ * @param id The timeout identifier
161
+ */
162
+ hasTimeout(id) {
163
+ return this.timeouts.has(id);
164
+ }
165
+ /**
166
+ * Register a shutdown handler
167
+ * Called during cleanup() in reverse order of registration
168
+ *
169
+ * @param handler Async function to call during shutdown
170
+ */
171
+ registerShutdownHandler(handler) {
172
+ this.shutdownHandlers.push(handler);
173
+ this.logger.debug(`Registered shutdown handler (total: ${this.shutdownHandlers.length})`);
174
+ }
175
+ /**
176
+ * Remove a shutdown handler
177
+ * @param handler The handler to remove
178
+ */
179
+ removeShutdownHandler(handler) {
180
+ const idx = this.shutdownHandlers.indexOf(handler);
181
+ if (idx > -1) {
182
+ this.shutdownHandlers.splice(idx, 1);
183
+ this.logger.debug(`Removed shutdown handler (total: ${this.shutdownHandlers.length})`);
184
+ }
185
+ }
186
+ /**
187
+ * Cleanup all timers and run shutdown handlers
188
+ */
189
+ async cleanup() {
190
+ this.logger.info('Starting cleanup...');
191
+ // Clear all intervals
192
+ const intervalCount = this.intervals.size;
193
+ this.intervals.forEach((info) => {
194
+ clearInterval(info.timer);
195
+ });
196
+ this.intervals.clear();
197
+ // Clear all timeouts
198
+ const timeoutCount = this.timeouts.size;
199
+ this.timeouts.forEach((info) => {
200
+ clearTimeout(info.timer);
201
+ });
202
+ this.timeouts.clear();
203
+ // Run shutdown handlers in reverse order (LIFO)
204
+ const handlerCount = this.shutdownHandlers.length;
205
+ const handlers = [...this.shutdownHandlers].reverse();
206
+ this.shutdownHandlers = [];
207
+ for (const handler of handlers) {
208
+ try {
209
+ await handler();
210
+ }
211
+ catch (error) {
212
+ this.logger.error('Shutdown handler error:', error);
213
+ }
214
+ }
215
+ this.logger.info(`Cleanup complete: ${intervalCount} intervals, ${timeoutCount} timeouts, ${handlerCount} handlers`);
216
+ }
217
+ /**
218
+ * Get statistics about registered timers
219
+ */
220
+ getStats() {
221
+ return {
222
+ intervals: this.intervals.size,
223
+ timeouts: this.timeouts.size,
224
+ shutdownHandlers: this.shutdownHandlers.length,
225
+ intervalIds: Array.from(this.intervals.keys()),
226
+ timeoutIds: Array.from(this.timeouts.keys())
227
+ };
228
+ }
229
+ /**
230
+ * Get detailed information about all timers
231
+ */
232
+ getDetailedStats() {
233
+ const now = Date.now();
234
+ return {
235
+ intervals: Array.from(this.intervals.values()).map(info => ({
236
+ id: info.id,
237
+ ageMs: now - info.createdAt,
238
+ callback: info.callback
239
+ })),
240
+ timeouts: Array.from(this.timeouts.values()).map(info => ({
241
+ id: info.id,
242
+ ageMs: now - info.createdAt,
243
+ callback: info.callback
244
+ })),
245
+ shutdownHandlerCount: this.shutdownHandlers.length
246
+ };
247
+ }
248
+ /**
249
+ * Clear all timers by prefix
250
+ * Useful for cleaning up all timers from a specific component
251
+ *
252
+ * @param prefix The prefix to match (e.g., 'mcp-' clears 'mcp-auth', 'mcp-metrics', etc.)
253
+ */
254
+ clearByPrefix(prefix) {
255
+ let intervalCount = 0;
256
+ let timeoutCount = 0;
257
+ // Collect keys to clear (can't modify while iterating)
258
+ const intervalsToClear = [];
259
+ const timeoutsToClear = [];
260
+ this.intervals.forEach((_, id) => {
261
+ if (id.startsWith(prefix)) {
262
+ intervalsToClear.push(id);
263
+ }
264
+ });
265
+ this.timeouts.forEach((_, id) => {
266
+ if (id.startsWith(prefix)) {
267
+ timeoutsToClear.push(id);
268
+ }
269
+ });
270
+ // Clear collected timers
271
+ intervalsToClear.forEach(id => {
272
+ this.clearInterval(id);
273
+ intervalCount++;
274
+ });
275
+ timeoutsToClear.forEach(id => {
276
+ this.clearTimeout(id);
277
+ timeoutCount++;
278
+ });
279
+ this.logger.debug(`Cleared by prefix '${prefix}': ${intervalCount} intervals, ${timeoutCount} timeouts`);
280
+ return { intervals: intervalCount, timeouts: timeoutCount };
281
+ }
282
+ }
283
+ exports.TimerRegistry = TimerRegistry;
284
+ /**
285
+ * Singleton instance of TimerRegistry
286
+ * Use this for all timer management in snow-flow
287
+ */
288
+ exports.timerRegistry = TimerRegistry.getInstance();
289
+ //# sourceMappingURL=timer-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timer-registry.js","sourceRoot":"","sources":["../../src/utils/timer-registry.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "snow-flow",
3
- "version": "8.39.0",
3
+ "version": "8.39.2",
4
4
  "description": "ServiceNow development with SnowCode - 75+ LLM providers (Claude, GPT, Gemini, Llama, Mistral, DeepSeek, Groq, Ollama) • 395 Optimized Tools • 2 MCP Servers • Multi-agent orchestration • Use ANY AI coding assistant (ML tools moved to Enterprise)",
5
5
  "main": "dist/index.js",
6
6
  "type": "commonjs",