claude-flow-novice 1.6.2 → 1.6.4

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 (52) hide show
  1. package/.claude/settings.json +16 -5
  2. package/.claude/settings.local.json +3 -2
  3. package/.claude-flow-novice/dist/src/api/auth-service.js +84 -38
  4. package/.claude-flow-novice/dist/src/api/auth-service.js.map +1 -1
  5. package/.claude-flow-novice/dist/src/coordination/index.js +3 -0
  6. package/.claude-flow-novice/dist/src/coordination/index.js.map +1 -1
  7. package/.claude-flow-novice/dist/src/coordination/v1-transparency/interfaces/v1-transparency-system.js +12 -0
  8. package/.claude-flow-novice/dist/src/coordination/v1-transparency/interfaces/v1-transparency-system.js.map +1 -0
  9. package/.claude-flow-novice/dist/src/coordination/v1-transparency/v1-to-v2-bridge.js +433 -0
  10. package/.claude-flow-novice/dist/src/coordination/v1-transparency/v1-to-v2-bridge.js.map +1 -0
  11. package/.claude-flow-novice/dist/src/coordination/v1-transparency/v1-transparency-adapter.js +1468 -0
  12. package/.claude-flow-novice/dist/src/coordination/v1-transparency/v1-transparency-adapter.js.map +1 -0
  13. package/.claude-flow-novice/dist/src/monitoring/apm/apm-integration.js +724 -0
  14. package/.claude-flow-novice/dist/src/monitoring/apm/apm-integration.js.map +1 -0
  15. package/.claude-flow-novice/dist/src/monitoring/apm/datadog-collector.js +363 -0
  16. package/.claude-flow-novice/dist/src/monitoring/apm/datadog-collector.js.map +1 -0
  17. package/.claude-flow-novice/dist/src/monitoring/apm/index.js +97 -0
  18. package/.claude-flow-novice/dist/src/monitoring/apm/index.js.map +1 -0
  19. package/.claude-flow-novice/dist/src/monitoring/apm/newrelic-collector.js +384 -0
  20. package/.claude-flow-novice/dist/src/monitoring/apm/newrelic-collector.js.map +1 -0
  21. package/.claude-flow-novice/dist/src/monitoring/apm/performance-optimizer.js +612 -0
  22. package/.claude-flow-novice/dist/src/monitoring/apm/performance-optimizer.js.map +1 -0
  23. package/.claude-flow-novice/dist/src/monitoring/metrics-collector.js +282 -0
  24. package/.claude-flow-novice/dist/src/monitoring/metrics-collector.js.map +1 -0
  25. package/.claude-flow-novice/dist/src/providers/provider-manager.js +5 -3
  26. package/.claude-flow-novice/dist/src/providers/provider-manager.js.map +1 -1
  27. package/.claude-flow-novice/dist/src/providers/tiered-router.js +9 -17
  28. package/.claude-flow-novice/dist/src/providers/tiered-router.js.map +1 -1
  29. package/.claude-flow-novice/dist/src/web/api/apm-routes.js +355 -0
  30. package/.claude-flow-novice/dist/src/web/api/apm-routes.js.map +1 -0
  31. package/.claude-flow-novice/dist/src/web/frontend/src/utils/security.js +425 -0
  32. package/.claude-flow-novice/dist/src/web/frontend/src/utils/security.js.map +1 -0
  33. package/.claude-flow-novice/dist/src/web/security/security-middleware.js +379 -0
  34. package/.claude-flow-novice/dist/src/web/security/security-middleware.js.map +1 -0
  35. package/.claude-flow-novice/dist/src/web/websocket/apm-websocket-handler.js +441 -0
  36. package/.claude-flow-novice/dist/src/web/websocket/apm-websocket-handler.js.map +1 -0
  37. package/.claude-flow-novice/dist/src/web/websocket/websocket-manager.js +255 -1
  38. package/.claude-flow-novice/dist/src/web/websocket/websocket-manager.js.map +1 -1
  39. package/.claude-flow-novice/metrics.db +0 -0
  40. package/AGENT_PERFORMANCE_GUIDELINES.md +88 -0
  41. package/CLAUDE.md +103 -3
  42. package/config/hooks/post-edit-pipeline.js +68 -118
  43. package/config/hooks/pre-tool-memory-safety.js +209 -0
  44. package/package.json +9 -4
  45. package/scripts/cleanup-idle-sessions.sh +59 -0
  46. package/scripts/monitor-loop.sh +65 -0
  47. package/scripts/monitor-memory.sh +47 -0
  48. package/scripts/monitor.py +43 -0
  49. package/scripts/test-provider-routing.cjs +7 -9
  50. package/wiki/Provider-Routing.md +57 -69
  51. package/.claude-flow-novice/metrics.db-shm +0 -0
  52. package/.claude-flow-novice/metrics.db-wal +0 -0
@@ -1,40 +1,292 @@
1
1
  /**
2
2
  * WebSocket Manager - Real-time communication for swarm transparency
3
3
  * Integrates with Claude Flow and ruv-swarm MCP systems
4
- */ export class WebSocketManager {
4
+ */ const MESSAGE_SCHEMAS = {
5
+ 'join-swarm': {
6
+ type: 'join-swarm',
7
+ required: [
8
+ 'swarmId'
9
+ ],
10
+ validate: (data)=>{
11
+ return typeof data.swarmId === 'string' && data.swarmId.length > 0 && data.swarmId.length <= 100 && (!data.userId || typeof data.userId === 'string' && data.userId.length <= 100);
12
+ }
13
+ },
14
+ 'leave-swarm': {
15
+ type: 'leave-swarm',
16
+ required: [
17
+ 'swarmId'
18
+ ],
19
+ validate: (data)=>{
20
+ return typeof data.swarmId === 'string' && data.swarmId.length > 0 && data.swarmId.length <= 100;
21
+ }
22
+ },
23
+ 'send-intervention': {
24
+ type: 'send-intervention',
25
+ required: [
26
+ 'swarmId',
27
+ 'message',
28
+ 'action'
29
+ ],
30
+ validate: (data)=>{
31
+ return typeof data.swarmId === 'string' && data.swarmId.length > 0 && data.swarmId.length <= 100 && typeof data.message === 'string' && data.message.length > 0 && data.message.length <= 5000 && typeof data.action === 'string' && data.action.length > 0 && data.action.length <= 100 && (!data.agentId || typeof data.agentId === 'string' && data.agentId.length <= 100);
32
+ }
33
+ },
34
+ 'request-status': {
35
+ type: 'request-status',
36
+ required: [],
37
+ validate: (data)=>{
38
+ return (!data.swarmId || typeof data.swarmId === 'string' && data.swarmId.length <= 100) && (!data.agentId || typeof data.agentId === 'string' && data.agentId.length <= 100);
39
+ }
40
+ },
41
+ 'set-filter': {
42
+ type: 'set-filter',
43
+ required: [],
44
+ validate: (data)=>{
45
+ // Allow any JSON object but limit size
46
+ return JSON.stringify(data).length <= 10000;
47
+ }
48
+ },
49
+ 'claude-flow-command': {
50
+ type: 'claude-flow-command',
51
+ required: [
52
+ 'command'
53
+ ],
54
+ validate: (data)=>{
55
+ const allowedCommands = [
56
+ 'swarm_status',
57
+ 'agent_list',
58
+ 'task_orchestrate',
59
+ 'swarm_init',
60
+ 'memory_usage'
61
+ ];
62
+ return typeof data.command === 'string' && allowedCommands.includes(data.command) && (!data.swarmId || typeof data.swarmId === 'string' && data.swarmId.length <= 100);
63
+ }
64
+ },
65
+ 'ruv-swarm-command': {
66
+ type: 'ruv-swarm-command',
67
+ required: [
68
+ 'command'
69
+ ],
70
+ validate: (data)=>{
71
+ const allowedCommands = [
72
+ 'swarm_status',
73
+ 'agent_list',
74
+ 'swarm_monitor',
75
+ 'performance_report'
76
+ ];
77
+ return typeof data.command === 'string' && allowedCommands.includes(data.command) && (!data.swarmId || typeof data.swarmId === 'string' && data.swarmId.length <= 100);
78
+ }
79
+ }
80
+ };
81
+ export class WebSocketManager {
5
82
  io;
6
83
  logger;
7
84
  connections = new Map();
8
85
  swarmSubscriptions = new Map();
86
+ rateLimiting = new Map();
87
+ RATE_LIMIT_WINDOW = 60000;
88
+ RATE_LIMIT_MAX_REQUESTS = 100;
89
+ ALLOWED_ORIGINS = [
90
+ 'http://localhost:3000',
91
+ 'http://localhost:3001',
92
+ 'https://localhost:3000',
93
+ 'https://localhost:3001'
94
+ ];
9
95
  constructor(io, logger){
10
96
  this.io = io;
11
97
  this.logger = logger;
98
+ this.setupSecurityMiddleware();
12
99
  this.setupSocketHandlers();
13
100
  }
101
+ setupSecurityMiddleware() {
102
+ // Add origin validation middleware
103
+ this.io.use((socket, next)=>{
104
+ const origin = socket.handshake.headers.origin;
105
+ if (!origin) {
106
+ this.logger.warn('WebSocket connection rejected: No origin header', {
107
+ socketId: socket.id,
108
+ ip: socket.handshake.address
109
+ });
110
+ return next(new Error('Origin header required'));
111
+ }
112
+ if (!this.ALLOWED_ORIGINS.includes(origin)) {
113
+ this.logger.warn('WebSocket connection rejected: Invalid origin', {
114
+ socketId: socket.id,
115
+ origin,
116
+ ip: socket.handshake.address
117
+ });
118
+ return next(new Error('Origin not allowed'));
119
+ }
120
+ next();
121
+ });
122
+ }
123
+ validateMessage(messageType, data) {
124
+ const schema = MESSAGE_SCHEMAS[messageType];
125
+ if (!schema) {
126
+ this.logger.warn('Unknown message type', {
127
+ messageType
128
+ });
129
+ return false;
130
+ }
131
+ // Check required fields
132
+ for (const field of schema.required){
133
+ if (!(field in data)) {
134
+ this.logger.warn('Missing required field', {
135
+ messageType,
136
+ field
137
+ });
138
+ return false;
139
+ }
140
+ }
141
+ // Run custom validation
142
+ if (!schema.validate(data)) {
143
+ this.logger.warn('Message validation failed', {
144
+ messageType,
145
+ data
146
+ });
147
+ return false;
148
+ }
149
+ return true;
150
+ }
151
+ checkRateLimit(socketId) {
152
+ const now = Date.now();
153
+ const rateLimitEntry = this.rateLimiting.get(socketId);
154
+ if (!rateLimitEntry) {
155
+ this.rateLimiting.set(socketId, {
156
+ count: 1,
157
+ lastReset: now
158
+ });
159
+ return true;
160
+ }
161
+ // Reset counter if window has expired
162
+ if (now - rateLimitEntry.lastReset > this.RATE_LIMIT_WINDOW) {
163
+ this.rateLimiting.set(socketId, {
164
+ count: 1,
165
+ lastReset: now
166
+ });
167
+ return true;
168
+ }
169
+ // Check if rate limit exceeded
170
+ if (rateLimitEntry.count >= this.RATE_LIMIT_MAX_REQUESTS) {
171
+ this.logger.warn('Rate limit exceeded', {
172
+ socketId,
173
+ count: rateLimitEntry.count,
174
+ window: this.RATE_LIMIT_WINDOW
175
+ });
176
+ return false;
177
+ }
178
+ // Increment counter
179
+ rateLimitEntry.count++;
180
+ return true;
181
+ }
14
182
  setupSocketHandlers() {
15
183
  this.io.on('connection', (socket)=>{
16
184
  this.handleNewConnection(socket);
17
185
  socket.on('join-swarm', (data)=>{
186
+ if (!this.checkRateLimit(socket.id)) {
187
+ socket.emit('error', {
188
+ message: 'Rate limit exceeded'
189
+ });
190
+ return;
191
+ }
192
+ if (!this.validateMessage('join-swarm', data)) {
193
+ socket.emit('error', {
194
+ message: 'Invalid message format'
195
+ });
196
+ return;
197
+ }
18
198
  this.handleJoinSwarm(socket, data);
19
199
  });
20
200
  socket.on('leave-swarm', (data)=>{
201
+ if (!this.checkRateLimit(socket.id)) {
202
+ socket.emit('error', {
203
+ message: 'Rate limit exceeded'
204
+ });
205
+ return;
206
+ }
207
+ if (!this.validateMessage('leave-swarm', data)) {
208
+ socket.emit('error', {
209
+ message: 'Invalid message format'
210
+ });
211
+ return;
212
+ }
21
213
  this.handleLeaveSwarm(socket, data);
22
214
  });
23
215
  socket.on('send-intervention', (data)=>{
216
+ if (!this.checkRateLimit(socket.id)) {
217
+ socket.emit('error', {
218
+ message: 'Rate limit exceeded'
219
+ });
220
+ return;
221
+ }
222
+ if (!this.validateMessage('send-intervention', data)) {
223
+ socket.emit('error', {
224
+ message: 'Invalid message format'
225
+ });
226
+ return;
227
+ }
24
228
  this.handleHumanIntervention(socket, data);
25
229
  });
26
230
  socket.on('request-status', (data)=>{
231
+ if (!this.checkRateLimit(socket.id)) {
232
+ socket.emit('error', {
233
+ message: 'Rate limit exceeded'
234
+ });
235
+ return;
236
+ }
237
+ if (!this.validateMessage('request-status', data)) {
238
+ socket.emit('error', {
239
+ message: 'Invalid message format'
240
+ });
241
+ return;
242
+ }
27
243
  this.handleStatusRequest(socket, data);
28
244
  });
29
245
  socket.on('set-filter', (filterConfig)=>{
246
+ if (!this.checkRateLimit(socket.id)) {
247
+ socket.emit('error', {
248
+ message: 'Rate limit exceeded'
249
+ });
250
+ return;
251
+ }
252
+ if (!this.validateMessage('set-filter', filterConfig)) {
253
+ socket.emit('error', {
254
+ message: 'Invalid message format'
255
+ });
256
+ return;
257
+ }
30
258
  this.handleFilterUpdate(socket, filterConfig);
31
259
  });
32
260
  // Claude Flow MCP integration events
33
261
  socket.on('claude-flow-command', (data)=>{
262
+ if (!this.checkRateLimit(socket.id)) {
263
+ socket.emit('error', {
264
+ message: 'Rate limit exceeded'
265
+ });
266
+ return;
267
+ }
268
+ if (!this.validateMessage('claude-flow-command', data)) {
269
+ socket.emit('error', {
270
+ message: 'Invalid message format'
271
+ });
272
+ return;
273
+ }
34
274
  this.handleClaudeFlowCommand(socket, data);
35
275
  });
36
276
  // ruv-swarm MCP integration events
37
277
  socket.on('ruv-swarm-command', (data)=>{
278
+ if (!this.checkRateLimit(socket.id)) {
279
+ socket.emit('error', {
280
+ message: 'Rate limit exceeded'
281
+ });
282
+ return;
283
+ }
284
+ if (!this.validateMessage('ruv-swarm-command', data)) {
285
+ socket.emit('error', {
286
+ message: 'Invalid message format'
287
+ });
288
+ return;
289
+ }
38
290
  this.handleRuvSwarmCommand(socket, data);
39
291
  });
40
292
  socket.on('disconnect', ()=>{
@@ -245,6 +497,8 @@
245
497
  }
246
498
  }
247
499
  }
500
+ // Clean up rate limiting data
501
+ this.rateLimiting.delete(socket.id);
248
502
  this.connections.delete(socket.id);
249
503
  this.logger.info('WebSocket client disconnected', {
250
504
  socketId: socket.id,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/web/websocket/websocket-manager.ts"],"names":["WebSocketManager","connections","Map","swarmSubscriptions","io","logger","setupSocketHandlers","on","socket","handleNewConnection","data","handleJoinSwarm","handleLeaveSwarm","handleHumanIntervention","handleStatusRequest","filterConfig","handleFilterUpdate","handleClaudeFlowCommand","handleRuvSwarmCommand","handleDisconnection","connection","socketId","id","joinedSwarms","Set","lastActivity","Date","toISOString","set","info","clientsCount","size","emit","serverTime","supportedEvents","get","add","swarmId","userId","has","join","timestamp","subscribersCount","requestSwarmStatusFromMCP","delete","swarmSubs","leave","agentId","action","forwardInterventionToClaudeFlow","to","fromClient","error","message","originalData","requestAgentStatusFromMCP","filters","status","command","result","executeClaudeFlowMCPCommand","params","executeRuvSwarmMCPCommand","broadcastToSwarm","event","type","debug","eventType","sendToClient","sockets","getConnectionStats","activeSwarms","totalSubscriptions","Array","from","values","reduce","sum","subs","totalConnections","averageSubscriptionsPerSwarm","swarmStatus","source","ruvSwarmStatus","verbose","ruvError","claudeFlowResult","ruvSwarmResult","Promise","allSettled","filter","responses","claudeFlowData","value","ruvSwarmData","intervention","task","strategy","priority","metadata","humanIntervention","targetAgent","interventionId","taskId","mcpResponse","Error","agents","tasks","active","completed","failed","now","topology","performance","efficiency","memory","usage","capabilities","getActiveSwarms","keys","getSwarmClients"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../src/web/websocket/websocket-manager.ts"],"names":["MESSAGE_SCHEMAS","type","required","validate","data","swarmId","length","userId","message","action","agentId","JSON","stringify","allowedCommands","command","includes","WebSocketManager","connections","Map","swarmSubscriptions","rateLimiting","RATE_LIMIT_WINDOW","RATE_LIMIT_MAX_REQUESTS","ALLOWED_ORIGINS","io","logger","setupSecurityMiddleware","setupSocketHandlers","use","socket","next","origin","handshake","headers","warn","socketId","id","ip","address","Error","validateMessage","messageType","schema","field","checkRateLimit","now","Date","rateLimitEntry","get","set","count","lastReset","window","on","handleNewConnection","emit","handleJoinSwarm","handleLeaveSwarm","handleHumanIntervention","handleStatusRequest","filterConfig","handleFilterUpdate","handleClaudeFlowCommand","handleRuvSwarmCommand","handleDisconnection","connection","joinedSwarms","Set","lastActivity","toISOString","info","clientsCount","size","serverTime","supportedEvents","add","has","join","timestamp","subscribersCount","requestSwarmStatusFromMCP","delete","swarmSubs","leave","forwardInterventionToClaudeFlow","to","fromClient","error","originalData","requestAgentStatusFromMCP","filters","status","result","executeClaudeFlowMCPCommand","params","executeRuvSwarmMCPCommand","broadcastToSwarm","event","debug","eventType","sendToClient","sockets","getConnectionStats","activeSwarms","totalSubscriptions","Array","from","values","reduce","sum","subs","totalConnections","averageSubscriptionsPerSwarm","swarmStatus","source","ruvSwarmStatus","verbose","ruvError","claudeFlowResult","ruvSwarmResult","Promise","allSettled","filter","responses","claudeFlowData","value","ruvSwarmData","intervention","task","strategy","priority","metadata","humanIntervention","targetAgent","interventionId","taskId","mcpResponse","agents","tasks","active","completed","failed","topology","performance","efficiency","memory","usage","capabilities","getActiveSwarms","keys","getSwarmClients"],"mappings":"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"}
Binary file
@@ -0,0 +1,88 @@
1
+ # Agent Performance Guidelines - WSL Windows Paths
2
+
3
+ ## 🚨 CRITICAL: Avoid `find` on Windows Paths
4
+
5
+ **Problem:** Running `find` on `/mnt/c/` paths is extremely slow in WSL (2-10 seconds per command)
6
+
7
+ **Impact:**
8
+ - 3 agents running `find` concurrently = 6-30 seconds
9
+ - Memory accumulation from buffered output
10
+ - Agents stuck in "Waiting..." state
11
+
12
+ ## ✅ Use These Instead
13
+
14
+ ### ❌ DON'T USE
15
+ ```bash
16
+ find /mnt/c/Users/masha/Documents/claude-flow-novice -type f -name "*.test.*"
17
+ ```
18
+
19
+ ### ✅ USE CLAUDE CODE GLOB TOOL
20
+ ```javascript
21
+ Glob("**/*.test.*") // Fast, uses native file system
22
+ Glob("**/*.spec.*")
23
+ Glob("**/Dockerfile")
24
+ Glob("**/*.{yml,yaml}")
25
+ ```
26
+
27
+ ### ✅ OR USE `fd` (if installed)
28
+ ```bash
29
+ fd -e test.js // 10x faster than find
30
+ fd -e spec.ts
31
+ fd Dockerfile
32
+ ```
33
+
34
+ ### ✅ OR USE `git ls-files` (for tracked files)
35
+ ```bash
36
+ git ls-files '*.test.*' // Instant (uses git index)
37
+ git ls-files '*.spec.*'
38
+ ```
39
+
40
+ ## Performance Comparison
41
+
42
+ | Tool | Time | Memory | Use Case |
43
+ |------|------|--------|----------|
44
+ | `find /mnt/c/...` | 2-10s | High | ❌ Avoid on WSL |
45
+ | `Glob("**/*")` | <100ms | Low | ✅ Best for agents |
46
+ | `fd -e test.js` | 200ms | Low | ✅ Good alternative |
47
+ | `git ls-files` | <50ms | Low | ✅ For tracked files only |
48
+
49
+ ## Agent Best Practices
50
+
51
+ 1. **Use Glob tool** for file discovery (not Bash find)
52
+ 2. **Batch operations** in single message (not sequential)
53
+ 3. **Read with limits** (`Read(file, {limit: 100})`) for large files
54
+ 4. **Avoid recursive operations** when possible
55
+
56
+ ## Example: Security Audit Pattern
57
+
58
+ ### ❌ Slow (causes memory leak)
59
+ ```bash
60
+ find /mnt/c/.../claude-flow-novice -type f -name "*.test.*" -o -name "*.spec.*" | grep security
61
+ find /mnt/c/.../claude-flow-novice -type f -name "Dockerfile"
62
+ ```
63
+
64
+ ### ✅ Fast (proper approach)
65
+ ```javascript
66
+ [Single Message]:
67
+ Glob("**/*.{test,spec}.*") // Get test files
68
+ Glob("**/Dockerfile") // Get Dockerfiles
69
+ Read(files[0], {limit: 100}) // Read with limits
70
+ ```
71
+
72
+ ## Memory Leak Prevention
73
+
74
+ - **Limit to 2-3 agents** per batch (not 6+)
75
+ - **Use Glob instead of find** (100x faster)
76
+ - **Read files with limits** (not full files)
77
+ - **Kill stuck processes**: `pkill -f "find /mnt/c"`
78
+
79
+ ---
80
+
81
+ **If agents are stuck in "Waiting...":**
82
+ ```bash
83
+ # Check for stuck find processes
84
+ ps aux | grep "find /mnt/c" | grep -v grep
85
+
86
+ # Kill them
87
+ pkill -f "find /mnt/c"
88
+ ```
package/CLAUDE.md CHANGED
@@ -33,7 +33,33 @@
33
33
  - Refactoring or optimization work
34
34
  - ANY feature development (even "simple" ones)
35
35
 
36
- ## 🚨 CRITICAL: Safe Test Execution
36
+ ## 🚨 CRITICAL: Memory Leak Prevention (WSL/Windows)
37
+
38
+ **NEVER use `find` on Windows paths** - causes catastrophic memory leaks in WSL.
39
+
40
+ ### 🔴 FORBIDDEN COMMANDS (MEMORY BOMBS)
41
+ ```bash
42
+ # ❌ NEVER USE - Causes heap out of memory crash
43
+ find /mnt/c/Users/... -type f -name "*.test.*"
44
+ find /mnt/c/... -name "*.js"
45
+ find . -type f # On Windows paths via WSL
46
+ ```
47
+
48
+ **Why:** `find` on `/mnt/c/` takes 2-10 seconds per command, buffers output in memory, and causes heap exhaustion with multiple concurrent agents.
49
+
50
+ ### ✅ USE THESE INSTEAD
51
+ ```javascript
52
+ // FAST: Use Glob tool (<100ms, minimal memory)
53
+ Glob("**/*.test.*")
54
+ Glob("**/*.spec.*")
55
+ Glob("**/Dockerfile")
56
+ Glob("**/*.{yml,yaml}")
57
+
58
+ // OR: Use git ls-files for tracked files (<50ms)
59
+ git ls-files '*.test.*'
60
+ ```
61
+
62
+ ### 🚨 CRITICAL: Safe Test Execution
37
63
 
38
64
  **NEVER run tests inside agents** - causes memory leaks from orphaned processes.
39
65
 
@@ -50,14 +76,16 @@ pkill -f vitest; pkill -f "npm test"
50
76
  ```
51
77
 
52
78
  ### Forbidden:
79
+ - ❌ `find /mnt/c/...` - 2-10s per command, memory bomb on WSL
53
80
  - ❌ `Task("agent", "run npm test", "type")` - spawns orphaned process
54
81
  - ❌ Multiple agents running tests concurrently - 3x memory usage
55
82
  - ❌ Long-running test commands without timeout cleanup
56
83
 
57
84
  ### Memory Impact:
85
+ - Each `find /mnt/c/`: 2-10 seconds + 50-200MB buffered output
58
86
  - Each test run: 65MB+ heap
59
- - Concurrent runs: 65MB × agent_count
60
- - Orphaned processes persist after swarm completion
87
+ - Concurrent operations: Memory × agent_count
88
+ - Result: Heap out of memory crash (19GB+ usage)
61
89
  ### Agent Requirements by Task Complexity
62
90
 
63
91
  | Task Size | Steps | Agent Count | Example Team Composition |
@@ -153,6 +181,78 @@ node config/hooks/post-edit-pipeline.js "[FILE]" --tdd-mode --rust-strict --mini
153
181
  # Generate summaries and persist state
154
182
  npx claude-flow-novice hooks session-end --generate-summary true --persist-state true --export-metrics true
155
183
  ```
184
+
185
+ #### Resource Cleanup (CRITICAL for Memory Safety)
186
+
187
+ **MANDATORY**: All agents MUST clean up resources on termination to prevent memory leaks.
188
+
189
+ ```bash
190
+ # Resource cleanup hook (call on agent termination)
191
+ npx claude-flow-novice hooks cleanup-resources --agent-id "[AGENT_ID]"
192
+ ```
193
+
194
+ **What Gets Cleaned:**
195
+ - `clearInterval()` / `clearTimeout()` for all timers and scheduled tasks
196
+ - `removeAllListeners()` for EventEmitter instances
197
+ - `.destroy()` / `.close()` for connections, streams, sockets, file handles
198
+ - `.clear()` for Map, Set, Cache data structures
199
+ - Process signal handlers (SIGTERM, SIGINT, beforeExit)
200
+ - HTTP/WebSocket connections and keep-alive sockets
201
+ - Database connection pools and transactions
202
+ - File system watchers and subscriptions
203
+
204
+ **Implementation Pattern:**
205
+ ```typescript
206
+ // Agent class with cleanup
207
+ export class CustomAgent {
208
+ private interval?: NodeJS.Timeout;
209
+ private cache = new Map();
210
+ private eventEmitter = new EventEmitter();
211
+
212
+ public async start() {
213
+ this.interval = setInterval(() => this.tick(), 1000);
214
+ // Setup signal handlers for graceful shutdown
215
+ process.on('SIGTERM', () => this.destroy());
216
+ process.on('SIGINT', () => this.destroy());
217
+ process.on('beforeExit', () => this.destroy());
218
+ }
219
+
220
+ public destroy(): void {
221
+ // Clear timers
222
+ if (this.interval) {
223
+ clearInterval(this.interval);
224
+ this.interval = undefined;
225
+ }
226
+
227
+ // Remove event listeners
228
+ this.eventEmitter.removeAllListeners();
229
+
230
+ // Clear caches
231
+ this.cache.clear();
232
+
233
+ // Close connections (if any)
234
+ // this.connection?.close();
235
+
236
+ console.log('Agent cleanup completed');
237
+ }
238
+ }
239
+ ```
240
+
241
+ **Why This Matters:**
242
+ - ✅ **Prevents Memory Leaks**: Uncleaned intervals and listeners accumulate in memory
243
+ - ✅ **Graceful Shutdown**: Resources properly released on process termination
244
+ - ✅ **WSL Stability**: Critical for Windows/WSL environments prone to memory issues
245
+ - ✅ **Multi-Agent Safety**: With 3-20 agents, cleanup is essential for system stability
246
+
247
+ **Cleanup Checklist:**
248
+ - [ ] All `setInterval` / `setTimeout` calls have corresponding `clear*` calls
249
+ - [ ] EventEmitter classes call `removeAllListeners()` on destroy
250
+ - [ ] Database connections properly closed
251
+ - [ ] File handles and streams closed
252
+ - [ ] Process signal handlers registered (SIGTERM, SIGINT)
253
+ - [ ] `destroy()` method implemented and documented
254
+ - [ ] Cleanup tested in integration tests
255
+
156
256
  ### 🎯 Swarm Initialization (MANDATORY for ALL Multi-Agent Tasks)
157
257
 
158
258
  **CRITICAL**: You MUST initialize swarm BEFORE spawning ANY multiple agents: