snow-flow 2.10.0 → 3.0.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.
Files changed (64) hide show
  1. package/.mcp.json +13 -141
  2. package/.mcp.json.template +11 -25
  3. package/README.md +18 -0
  4. package/claude-flow +81 -0
  5. package/claude-flow.bat +18 -0
  6. package/claude-flow.config.json +20 -0
  7. package/claude-flow.ps1 +24 -0
  8. package/dist/agents/index.d.ts +3 -10
  9. package/dist/agents/index.js +10 -50
  10. package/dist/agents/queen-agent.d.ts +0 -2
  11. package/dist/agents/queen-agent.js +25 -42
  12. package/dist/cli.js +1 -1
  13. package/dist/mcp/servicenow-automation-mcp.js +10 -10
  14. package/dist/mcp/servicenow-deployment-mcp.js +1050 -169
  15. package/dist/mcp/servicenow-development-assistant-mcp.js +13 -65
  16. package/dist/mcp/servicenow-integration-mcp.js +10 -10
  17. package/dist/mcp/servicenow-machine-learning-mcp.js +15 -15
  18. package/dist/mcp/servicenow-operations-mcp.js +23 -23
  19. package/dist/mcp/servicenow-platform-development-mcp.js +9 -9
  20. package/dist/mcp/servicenow-reporting-analytics-mcp.js +11 -11
  21. package/dist/mcp/servicenow-security-compliance-mcp.js +11 -11
  22. package/dist/mcp/servicenow-update-set-mcp.js +9 -9
  23. package/dist/mcp/shared/reliable-memory-manager.d.ts +78 -0
  24. package/dist/mcp/shared/reliable-memory-manager.js +268 -0
  25. package/dist/mcp/snow-flow-mcp.js +341 -87
  26. package/dist/queen/agent-factory.d.ts +4 -2
  27. package/dist/queen/agent-factory.js +72 -25
  28. package/dist/services/tensorflow-ml-service.d.ts +105 -0
  29. package/dist/services/tensorflow-ml-service.js +456 -0
  30. package/dist/services/widget-deployment-service.d.ts +107 -0
  31. package/dist/services/widget-deployment-service.js +332 -0
  32. package/dist/utils/file-storage-fallback.d.ts +62 -0
  33. package/dist/utils/file-storage-fallback.js +289 -0
  34. package/dist/utils/mcp-server-manager.js +4 -7
  35. package/dist/utils/mcp-singleton-enforcer.d.ts +7 -1
  36. package/dist/utils/mcp-singleton-enforcer.js +28 -4
  37. package/dist/utils/mcp-timeout-fix.d.ts +10 -1
  38. package/dist/utils/mcp-timeout-fix.js +80 -6
  39. package/memory/agents/README.md +31 -0
  40. package/memory/claude-flow-data.json +1 -1
  41. package/memory/sessions/README.md +1 -1
  42. package/package.json +4 -2
  43. package/src/agents/README.md +192 -0
  44. package/src/health/README.md +161 -0
  45. package/src/memory/README.md +240 -0
  46. package/src/queen/README.md +403 -0
  47. package/src/schemas/deployment.schema.json +58 -0
  48. package/src/schemas/flow.schema.json +79 -0
  49. package/src/schemas/widget.schema.json +72 -0
  50. package/src/templates/base/application.template.json +45 -0
  51. package/src/templates/base/business_rule.template.json +33 -0
  52. package/src/templates/base/script_include.template.json +18 -0
  53. package/src/templates/base/table.template.json +64 -0
  54. package/src/templates/base/widget.template.json +25 -0
  55. package/src/templates/patterns/composite.incident-management.template.json +140 -0
  56. package/src/templates/patterns/widget.dashboard.template.json +238 -0
  57. package/src/templates/patterns/widget.datatable.template.json +292 -0
  58. package/dist/mcp/servicenow-graph-memory-mcp.js +0 -728
  59. package/servicenow/widgets/openai_incident_classifier/client_controller.js +0 -284
  60. package/servicenow/widgets/openai_incident_classifier/server_script.js +0 -314
  61. package/servicenow/widgets/openai_incident_classifier/style.css +0 -354
  62. package/servicenow/widgets/openai_incident_classifier/template.html +0 -167
  63. package/servicenow/widgets/openai_incident_classifier/widget.json +0 -86
  64. package/test-ml-improvements.sh +0 -76
@@ -0,0 +1,268 @@
1
+ "use strict";
2
+ /**
3
+ * Reliable Memory Manager
4
+ * Direct in-memory storage without database dependencies
5
+ * Solves hanging issues with better-sqlite3
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.reliableMemory = exports.ReliableMemoryManager = void 0;
42
+ const fs = __importStar(require("fs"));
43
+ const path = __importStar(require("path"));
44
+ const logger_js_1 = require("../../utils/logger.js");
45
+ class ReliableMemoryManager {
46
+ constructor() {
47
+ this.memory = new Map();
48
+ this.MAX_MEMORY_MB = 100; // 100MB max memory usage
49
+ this.persistTimer = null;
50
+ this.logger = new logger_js_1.Logger('ReliableMemoryManager');
51
+ // Persistence file for recovery
52
+ const memoryDir = path.join(process.cwd(), '.snow-flow', 'memory');
53
+ if (!fs.existsSync(memoryDir)) {
54
+ fs.mkdirSync(memoryDir, { recursive: true });
55
+ }
56
+ this.PERSIST_FILE = path.join(memoryDir, 'memory-snapshot.json');
57
+ // Load previous memory if exists
58
+ this.loadFromDisk();
59
+ // Auto-persist every 30 seconds
60
+ this.startAutoPersist();
61
+ }
62
+ static getInstance() {
63
+ if (!ReliableMemoryManager.instance) {
64
+ ReliableMemoryManager.instance = new ReliableMemoryManager();
65
+ }
66
+ return ReliableMemoryManager.instance;
67
+ }
68
+ /**
69
+ * Store value in memory with size checking
70
+ */
71
+ async store(key, value, expiresInMs) {
72
+ const serialized = JSON.stringify(value);
73
+ const sizeBytes = Buffer.byteLength(serialized);
74
+ // Check total memory usage
75
+ const currentUsage = this.getMemoryUsageBytes();
76
+ const newUsage = currentUsage + sizeBytes;
77
+ const maxBytes = this.MAX_MEMORY_MB * 1024 * 1024;
78
+ if (newUsage > maxBytes) {
79
+ // Try to free expired entries first
80
+ this.cleanupExpired();
81
+ // Check again
82
+ const afterCleanup = this.getMemoryUsageBytes() + sizeBytes;
83
+ if (afterCleanup > maxBytes) {
84
+ throw new Error(`Memory limit exceeded. Current: ${(currentUsage / 1024 / 1024).toFixed(2)}MB, ` +
85
+ `Requested: ${(sizeBytes / 1024 / 1024).toFixed(2)}MB, ` +
86
+ `Max: ${this.MAX_MEMORY_MB}MB`);
87
+ }
88
+ }
89
+ const entry = {
90
+ key,
91
+ value,
92
+ timestamp: new Date(),
93
+ sizeBytes,
94
+ expiresAt: expiresInMs ? new Date(Date.now() + expiresInMs) : undefined
95
+ };
96
+ this.memory.set(key, entry);
97
+ this.logger.debug(`Stored key '${key}' (${(sizeBytes / 1024).toFixed(2)}KB)`);
98
+ }
99
+ /**
100
+ * Retrieve value from memory
101
+ */
102
+ async retrieve(key) {
103
+ const entry = this.memory.get(key);
104
+ if (!entry) {
105
+ return null;
106
+ }
107
+ // Check if expired
108
+ if (entry.expiresAt && entry.expiresAt < new Date()) {
109
+ this.memory.delete(key);
110
+ this.logger.debug(`Key '${key}' expired and removed`);
111
+ return null;
112
+ }
113
+ return entry.value;
114
+ }
115
+ /**
116
+ * Delete a key from memory
117
+ */
118
+ async delete(key) {
119
+ const existed = this.memory.has(key);
120
+ this.memory.delete(key);
121
+ return existed;
122
+ }
123
+ /**
124
+ * List all keys with optional pattern matching
125
+ */
126
+ async list(pattern) {
127
+ this.cleanupExpired();
128
+ const keys = Array.from(this.memory.keys());
129
+ if (pattern) {
130
+ const regex = new RegExp(pattern);
131
+ return keys.filter(key => regex.test(key));
132
+ }
133
+ return keys;
134
+ }
135
+ /**
136
+ * Clear all memory
137
+ */
138
+ async clear() {
139
+ const count = this.memory.size;
140
+ this.memory.clear();
141
+ this.logger.info(`Cleared ${count} entries from memory`);
142
+ }
143
+ /**
144
+ * Get memory usage statistics
145
+ */
146
+ getStats() {
147
+ const totalSizeBytes = this.getMemoryUsageBytes();
148
+ const totalSizeMB = totalSizeBytes / 1024 / 1024;
149
+ return {
150
+ entries: this.memory.size,
151
+ totalSizeBytes,
152
+ totalSizeMB,
153
+ maxSizeMB: this.MAX_MEMORY_MB,
154
+ utilizationPercent: (totalSizeMB / this.MAX_MEMORY_MB) * 100
155
+ };
156
+ }
157
+ /**
158
+ * Get total memory usage in bytes
159
+ */
160
+ getMemoryUsageBytes() {
161
+ let total = 0;
162
+ for (const entry of this.memory.values()) {
163
+ total += entry.sizeBytes;
164
+ }
165
+ return total;
166
+ }
167
+ /**
168
+ * Clean up expired entries
169
+ */
170
+ cleanupExpired() {
171
+ const now = new Date();
172
+ let removed = 0;
173
+ for (const [key, entry] of this.memory.entries()) {
174
+ if (entry.expiresAt && entry.expiresAt < now) {
175
+ this.memory.delete(key);
176
+ removed++;
177
+ }
178
+ }
179
+ if (removed > 0) {
180
+ this.logger.debug(`Cleaned up ${removed} expired entries`);
181
+ }
182
+ }
183
+ /**
184
+ * Persist memory to disk for recovery
185
+ */
186
+ async persistToDisk() {
187
+ try {
188
+ const data = {
189
+ version: '1.0',
190
+ timestamp: new Date().toISOString(),
191
+ entries: Array.from(this.memory.entries()).map(([key, entry]) => ({
192
+ key,
193
+ value: entry.value,
194
+ timestamp: entry.timestamp,
195
+ expiresAt: entry.expiresAt,
196
+ sizeBytes: entry.sizeBytes
197
+ }))
198
+ };
199
+ await fs.promises.writeFile(this.PERSIST_FILE, JSON.stringify(data, null, 2), 'utf-8');
200
+ this.logger.debug(`Persisted ${this.memory.size} entries to disk`);
201
+ }
202
+ catch (error) {
203
+ this.logger.error('Failed to persist memory to disk:', error);
204
+ }
205
+ }
206
+ /**
207
+ * Load memory from disk
208
+ */
209
+ loadFromDisk() {
210
+ try {
211
+ if (!fs.existsSync(this.PERSIST_FILE)) {
212
+ return;
213
+ }
214
+ const data = JSON.parse(fs.readFileSync(this.PERSIST_FILE, 'utf-8'));
215
+ if (data.version !== '1.0') {
216
+ this.logger.warn('Incompatible memory snapshot version, skipping load');
217
+ return;
218
+ }
219
+ for (const entry of data.entries) {
220
+ this.memory.set(entry.key, {
221
+ key: entry.key,
222
+ value: entry.value,
223
+ timestamp: new Date(entry.timestamp),
224
+ expiresAt: entry.expiresAt ? new Date(entry.expiresAt) : undefined,
225
+ sizeBytes: entry.sizeBytes
226
+ });
227
+ }
228
+ this.cleanupExpired();
229
+ this.logger.info(`Loaded ${this.memory.size} entries from disk`);
230
+ }
231
+ catch (error) {
232
+ this.logger.error('Failed to load memory from disk:', error);
233
+ }
234
+ }
235
+ /**
236
+ * Start auto-persist timer
237
+ */
238
+ startAutoPersist() {
239
+ // Persist every 30 seconds
240
+ this.persistTimer = setInterval(() => {
241
+ this.persistToDisk().catch(error => {
242
+ this.logger.error('Auto-persist failed:', error);
243
+ });
244
+ }, 30000);
245
+ // Don't block process exit
246
+ if (this.persistTimer.unref) {
247
+ this.persistTimer.unref();
248
+ }
249
+ // Persist on exit
250
+ process.on('beforeExit', () => {
251
+ this.persistToDisk();
252
+ });
253
+ }
254
+ /**
255
+ * Stop auto-persist timer
256
+ */
257
+ destroy() {
258
+ if (this.persistTimer) {
259
+ clearInterval(this.persistTimer);
260
+ this.persistTimer = null;
261
+ }
262
+ this.persistToDisk();
263
+ }
264
+ }
265
+ exports.ReliableMemoryManager = ReliableMemoryManager;
266
+ // Export singleton instance
267
+ exports.reliableMemory = ReliableMemoryManager.getInstance();
268
+ //# sourceMappingURL=reliable-memory-manager.js.map