@claude-flow/cli 3.0.0-alpha.6 → 3.0.0-alpha.8

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 (99) hide show
  1. package/.agentic-flow/intelligence.json +4 -4
  2. package/.claude-flow/agents/store.json +16 -0
  3. package/.claude-flow/daemon-state.json +123 -0
  4. package/.claude-flow/hive-mind/state.json +51 -0
  5. package/.claude-flow/metrics/codebase-map.json +11 -0
  6. package/.claude-flow/metrics/consolidation.json +6 -0
  7. package/.claude-flow/metrics/performance.json +12 -84
  8. package/.claude-flow/metrics/security-audit.json +10 -0
  9. package/.claude-flow/metrics/task-metrics.json +3 -3
  10. package/.claude-flow/metrics/test-gaps.json +6 -0
  11. package/agents/architect.yaml +1 -1
  12. package/agents/coder.yaml +1 -1
  13. package/agents/reviewer.yaml +1 -1
  14. package/agents/security-architect.yaml +1 -1
  15. package/agents/tester.yaml +1 -1
  16. package/dist/src/commands/agent.d.ts.map +1 -1
  17. package/dist/src/commands/agent.js +42 -26
  18. package/dist/src/commands/agent.js.map +1 -1
  19. package/dist/src/commands/daemon.d.ts +8 -0
  20. package/dist/src/commands/daemon.d.ts.map +1 -0
  21. package/dist/src/commands/daemon.js +351 -0
  22. package/dist/src/commands/daemon.js.map +1 -0
  23. package/dist/src/commands/hive-mind.d.ts.map +1 -1
  24. package/dist/src/commands/hive-mind.js +252 -35
  25. package/dist/src/commands/hive-mind.js.map +1 -1
  26. package/dist/src/commands/index.d.ts +1 -0
  27. package/dist/src/commands/index.d.ts.map +1 -1
  28. package/dist/src/commands/index.js +4 -1
  29. package/dist/src/commands/index.js.map +1 -1
  30. package/dist/src/commands/start.js +2 -2
  31. package/dist/src/commands/start.js.map +1 -1
  32. package/dist/src/index.d.ts.map +1 -1
  33. package/dist/src/index.js +5 -2
  34. package/dist/src/index.js.map +1 -1
  35. package/dist/src/init/settings-generator.d.ts.map +1 -1
  36. package/dist/src/init/settings-generator.js +22 -12
  37. package/dist/src/init/settings-generator.js.map +1 -1
  38. package/dist/src/mcp-client.d.ts.map +1 -1
  39. package/dist/src/mcp-client.js +13 -1
  40. package/dist/src/mcp-client.js.map +1 -1
  41. package/dist/src/mcp-tools/agent-tools.d.ts +1 -1
  42. package/dist/src/mcp-tools/agent-tools.d.ts.map +1 -1
  43. package/dist/src/mcp-tools/agent-tools.js +350 -14
  44. package/dist/src/mcp-tools/agent-tools.js.map +1 -1
  45. package/dist/src/mcp-tools/config-tools.d.ts +1 -1
  46. package/dist/src/mcp-tools/config-tools.d.ts.map +1 -1
  47. package/dist/src/mcp-tools/config-tools.js +262 -15
  48. package/dist/src/mcp-tools/config-tools.js.map +1 -1
  49. package/dist/src/mcp-tools/hive-mind-tools.d.ts +8 -0
  50. package/dist/src/mcp-tools/hive-mind-tools.d.ts.map +1 -0
  51. package/dist/src/mcp-tools/hive-mind-tools.js +447 -0
  52. package/dist/src/mcp-tools/hive-mind-tools.js.map +1 -0
  53. package/dist/src/mcp-tools/hooks-tools.d.ts.map +1 -1
  54. package/dist/src/mcp-tools/hooks-tools.js +46 -7
  55. package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
  56. package/dist/src/mcp-tools/index.d.ts +2 -0
  57. package/dist/src/mcp-tools/index.d.ts.map +1 -1
  58. package/dist/src/mcp-tools/index.js +2 -0
  59. package/dist/src/mcp-tools/index.js.map +1 -1
  60. package/dist/src/mcp-tools/session-tools.d.ts +1 -1
  61. package/dist/src/mcp-tools/session-tools.d.ts.map +1 -1
  62. package/dist/src/mcp-tools/session-tools.js +237 -22
  63. package/dist/src/mcp-tools/session-tools.js.map +1 -1
  64. package/dist/src/mcp-tools/task-tools.d.ts +1 -1
  65. package/dist/src/mcp-tools/task-tools.d.ts.map +1 -1
  66. package/dist/src/mcp-tools/task-tools.js +219 -17
  67. package/dist/src/mcp-tools/task-tools.js.map +1 -1
  68. package/dist/src/mcp-tools/workflow-tools.d.ts +8 -0
  69. package/dist/src/mcp-tools/workflow-tools.d.ts.map +1 -0
  70. package/dist/src/mcp-tools/workflow-tools.js +481 -0
  71. package/dist/src/mcp-tools/workflow-tools.js.map +1 -0
  72. package/dist/src/services/index.d.ts +7 -0
  73. package/dist/src/services/index.d.ts.map +1 -0
  74. package/dist/src/services/index.js +6 -0
  75. package/dist/src/services/index.js.map +1 -0
  76. package/dist/src/services/worker-daemon.d.ts +153 -0
  77. package/dist/src/services/worker-daemon.d.ts.map +1 -0
  78. package/dist/src/services/worker-daemon.js +567 -0
  79. package/dist/src/services/worker-daemon.js.map +1 -0
  80. package/dist/tsconfig.tsbuildinfo +1 -1
  81. package/package.json +1 -1
  82. package/src/commands/agent.ts +42 -28
  83. package/src/commands/daemon.ts +395 -0
  84. package/src/commands/hive-mind.ts +229 -63
  85. package/src/commands/index.ts +4 -1
  86. package/src/commands/start.ts +2 -2
  87. package/src/index.ts +5 -2
  88. package/src/init/settings-generator.ts +22 -12
  89. package/src/mcp-client.ts +13 -1
  90. package/src/mcp-tools/agent-tools.ts +388 -14
  91. package/src/mcp-tools/config-tools.ts +297 -15
  92. package/src/mcp-tools/hive-mind-tools.ts +521 -0
  93. package/src/mcp-tools/hooks-tools.ts +46 -7
  94. package/src/mcp-tools/index.ts +2 -0
  95. package/src/mcp-tools/session-tools.ts +280 -23
  96. package/src/mcp-tools/task-tools.ts +265 -20
  97. package/src/mcp-tools/workflow-tools.ts +573 -0
  98. package/src/services/index.ts +15 -0
  99. package/src/services/worker-daemon.ts +726 -0
@@ -0,0 +1,447 @@
1
+ /**
2
+ * Hive-Mind MCP Tools for CLI
3
+ *
4
+ * Tool definitions for collective intelligence and swarm coordination.
5
+ */
6
+ import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
7
+ import { join } from 'node:path';
8
+ // Storage paths
9
+ const STORAGE_DIR = '.claude-flow';
10
+ const HIVE_DIR = 'hive-mind';
11
+ const HIVE_FILE = 'state.json';
12
+ function getHiveDir() {
13
+ return join(process.cwd(), STORAGE_DIR, HIVE_DIR);
14
+ }
15
+ function getHivePath() {
16
+ return join(getHiveDir(), HIVE_FILE);
17
+ }
18
+ function ensureHiveDir() {
19
+ const dir = getHiveDir();
20
+ if (!existsSync(dir)) {
21
+ mkdirSync(dir, { recursive: true });
22
+ }
23
+ }
24
+ function loadHiveState() {
25
+ try {
26
+ const path = getHivePath();
27
+ if (existsSync(path)) {
28
+ const data = readFileSync(path, 'utf-8');
29
+ return JSON.parse(data);
30
+ }
31
+ }
32
+ catch {
33
+ // Return default state on error
34
+ }
35
+ return {
36
+ initialized: false,
37
+ topology: 'mesh',
38
+ workers: [],
39
+ consensus: { pending: [], history: [] },
40
+ sharedMemory: {},
41
+ createdAt: new Date().toISOString(),
42
+ updatedAt: new Date().toISOString(),
43
+ };
44
+ }
45
+ function saveHiveState(state) {
46
+ ensureHiveDir();
47
+ state.updatedAt = new Date().toISOString();
48
+ writeFileSync(getHivePath(), JSON.stringify(state, null, 2), 'utf-8');
49
+ }
50
+ export const hiveMindTools = [
51
+ {
52
+ name: 'hive-mind/init',
53
+ description: 'Initialize the hive-mind collective',
54
+ category: 'hive-mind',
55
+ inputSchema: {
56
+ type: 'object',
57
+ properties: {
58
+ topology: { type: 'string', enum: ['mesh', 'hierarchical', 'ring', 'star'], description: 'Network topology' },
59
+ queenId: { type: 'string', description: 'Initial queen agent ID' },
60
+ },
61
+ },
62
+ handler: async (input) => {
63
+ const state = loadHiveState();
64
+ const hiveId = `hive-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
65
+ const queenId = input.queenId || `queen-${Date.now()}`;
66
+ state.initialized = true;
67
+ state.topology = input.topology || 'mesh';
68
+ state.createdAt = new Date().toISOString();
69
+ state.queen = {
70
+ agentId: queenId,
71
+ electedAt: new Date().toISOString(),
72
+ term: 1,
73
+ };
74
+ saveHiveState(state);
75
+ return {
76
+ success: true,
77
+ hiveId,
78
+ topology: state.topology,
79
+ consensus: input.consensus || 'byzantine',
80
+ queenId,
81
+ status: 'initialized',
82
+ config: {
83
+ topology: state.topology,
84
+ consensus: input.consensus || 'byzantine',
85
+ maxAgents: input.maxAgents || 15,
86
+ persist: input.persist !== false,
87
+ memoryBackend: input.memoryBackend || 'hybrid',
88
+ },
89
+ createdAt: state.createdAt,
90
+ };
91
+ },
92
+ },
93
+ {
94
+ name: 'hive-mind/status',
95
+ description: 'Get hive-mind status',
96
+ category: 'hive-mind',
97
+ inputSchema: {
98
+ type: 'object',
99
+ properties: {
100
+ verbose: { type: 'boolean', description: 'Include detailed information' },
101
+ },
102
+ },
103
+ handler: async (input) => {
104
+ const state = loadHiveState();
105
+ const uptime = state.createdAt ? Date.now() - new Date(state.createdAt).getTime() : 0;
106
+ const status = {
107
+ // CLI expected fields
108
+ hiveId: `hive-${state.createdAt ? new Date(state.createdAt).getTime() : Date.now()}`,
109
+ status: state.initialized ? 'active' : 'offline',
110
+ topology: state.topology,
111
+ consensus: 'byzantine', // Default consensus type
112
+ queen: state.queen ? {
113
+ id: state.queen.agentId,
114
+ agentId: state.queen.agentId,
115
+ status: 'active',
116
+ load: 0.3 + Math.random() * 0.4, // Simulated load
117
+ tasksQueued: state.consensus.pending.length,
118
+ electedAt: state.queen.electedAt,
119
+ term: state.queen.term,
120
+ } : { id: 'N/A', status: 'offline', load: 0, tasksQueued: 0 },
121
+ workers: state.workers.map(w => ({
122
+ id: w,
123
+ type: 'worker',
124
+ status: 'idle',
125
+ currentTask: null,
126
+ tasksCompleted: 0,
127
+ })),
128
+ metrics: {
129
+ totalTasks: state.consensus.history.length + state.consensus.pending.length,
130
+ completedTasks: state.consensus.history.length,
131
+ failedTasks: 0,
132
+ avgTaskTime: 150,
133
+ consensusRounds: state.consensus.history.length,
134
+ memoryUsage: `${Object.keys(state.sharedMemory).length * 2} KB`,
135
+ },
136
+ health: {
137
+ overall: 'healthy',
138
+ queen: state.queen ? 'healthy' : 'unhealthy',
139
+ workers: state.workers.length > 0 ? 'healthy' : 'degraded',
140
+ consensus: 'healthy',
141
+ memory: 'healthy',
142
+ },
143
+ // Additional fields
144
+ id: `hive-${state.createdAt ? new Date(state.createdAt).getTime() : Date.now()}`,
145
+ initialized: state.initialized,
146
+ workerCount: state.workers.length,
147
+ pendingConsensus: state.consensus.pending.length,
148
+ sharedMemoryKeys: Object.keys(state.sharedMemory).length,
149
+ uptime,
150
+ createdAt: state.createdAt,
151
+ updatedAt: state.updatedAt,
152
+ };
153
+ if (input.verbose) {
154
+ return {
155
+ ...status,
156
+ workerDetails: state.workers,
157
+ consensusHistory: state.consensus.history.slice(-10),
158
+ sharedMemory: state.sharedMemory,
159
+ };
160
+ }
161
+ return status;
162
+ },
163
+ },
164
+ {
165
+ name: 'hive-mind/join',
166
+ description: 'Join an agent to the hive-mind',
167
+ category: 'hive-mind',
168
+ inputSchema: {
169
+ type: 'object',
170
+ properties: {
171
+ agentId: { type: 'string', description: 'Agent ID to join' },
172
+ role: { type: 'string', enum: ['worker', 'specialist', 'scout'], description: 'Agent role in hive' },
173
+ },
174
+ required: ['agentId'],
175
+ },
176
+ handler: async (input) => {
177
+ const state = loadHiveState();
178
+ const agentId = input.agentId;
179
+ if (!state.initialized) {
180
+ return { success: false, error: 'Hive-mind not initialized' };
181
+ }
182
+ if (!state.workers.includes(agentId)) {
183
+ state.workers.push(agentId);
184
+ saveHiveState(state);
185
+ }
186
+ return {
187
+ success: true,
188
+ agentId,
189
+ role: input.role || 'worker',
190
+ totalWorkers: state.workers.length,
191
+ joinedAt: new Date().toISOString(),
192
+ };
193
+ },
194
+ },
195
+ {
196
+ name: 'hive-mind/leave',
197
+ description: 'Remove an agent from the hive-mind',
198
+ category: 'hive-mind',
199
+ inputSchema: {
200
+ type: 'object',
201
+ properties: {
202
+ agentId: { type: 'string', description: 'Agent ID to remove' },
203
+ },
204
+ required: ['agentId'],
205
+ },
206
+ handler: async (input) => {
207
+ const state = loadHiveState();
208
+ const agentId = input.agentId;
209
+ const index = state.workers.indexOf(agentId);
210
+ if (index > -1) {
211
+ state.workers.splice(index, 1);
212
+ saveHiveState(state);
213
+ return {
214
+ success: true,
215
+ agentId,
216
+ leftAt: new Date().toISOString(),
217
+ remainingWorkers: state.workers.length,
218
+ };
219
+ }
220
+ return { success: false, agentId, error: 'Agent not in hive' };
221
+ },
222
+ },
223
+ {
224
+ name: 'hive-mind/consensus',
225
+ description: 'Propose or vote on consensus',
226
+ category: 'hive-mind',
227
+ inputSchema: {
228
+ type: 'object',
229
+ properties: {
230
+ action: { type: 'string', enum: ['propose', 'vote', 'status', 'list'], description: 'Consensus action' },
231
+ proposalId: { type: 'string', description: 'Proposal ID (for vote/status)' },
232
+ type: { type: 'string', description: 'Proposal type (for propose)' },
233
+ value: { description: 'Proposal value (for propose)' },
234
+ vote: { type: 'boolean', description: 'Vote (true=for, false=against)' },
235
+ voterId: { type: 'string', description: 'Voter agent ID' },
236
+ },
237
+ required: ['action'],
238
+ },
239
+ handler: async (input) => {
240
+ const state = loadHiveState();
241
+ const action = input.action;
242
+ if (action === 'propose') {
243
+ const proposalId = `proposal-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
244
+ const proposal = {
245
+ proposalId,
246
+ type: input.type || 'general',
247
+ value: input.value,
248
+ proposedBy: input.voterId || 'system',
249
+ proposedAt: new Date().toISOString(),
250
+ votes: {},
251
+ status: 'pending',
252
+ };
253
+ state.consensus.pending.push(proposal);
254
+ saveHiveState(state);
255
+ return {
256
+ action,
257
+ proposalId,
258
+ type: proposal.type,
259
+ status: 'pending',
260
+ requiredVotes: Math.ceil(state.workers.length / 2) + 1,
261
+ };
262
+ }
263
+ if (action === 'vote') {
264
+ const proposal = state.consensus.pending.find(p => p.proposalId === input.proposalId);
265
+ if (!proposal) {
266
+ return { action, error: 'Proposal not found' };
267
+ }
268
+ const voterId = input.voterId;
269
+ proposal.votes[voterId] = input.vote;
270
+ // Check if we have majority
271
+ const votesFor = Object.values(proposal.votes).filter(v => v).length;
272
+ const votesAgainst = Object.values(proposal.votes).filter(v => !v).length;
273
+ const majority = Math.ceil(state.workers.length / 2) + 1;
274
+ if (votesFor >= majority) {
275
+ proposal.status = 'approved';
276
+ state.consensus.history.push({
277
+ proposalId: proposal.proposalId,
278
+ type: proposal.type,
279
+ result: 'approved',
280
+ votes: { for: votesFor, against: votesAgainst },
281
+ decidedAt: new Date().toISOString(),
282
+ });
283
+ state.consensus.pending = state.consensus.pending.filter(p => p.proposalId !== proposal.proposalId);
284
+ }
285
+ else if (votesAgainst >= majority) {
286
+ proposal.status = 'rejected';
287
+ state.consensus.history.push({
288
+ proposalId: proposal.proposalId,
289
+ type: proposal.type,
290
+ result: 'rejected',
291
+ votes: { for: votesFor, against: votesAgainst },
292
+ decidedAt: new Date().toISOString(),
293
+ });
294
+ state.consensus.pending = state.consensus.pending.filter(p => p.proposalId !== proposal.proposalId);
295
+ }
296
+ saveHiveState(state);
297
+ return {
298
+ action,
299
+ proposalId: proposal.proposalId,
300
+ voterId,
301
+ vote: input.vote,
302
+ votesFor,
303
+ votesAgainst,
304
+ status: proposal.status,
305
+ };
306
+ }
307
+ if (action === 'status') {
308
+ const proposal = state.consensus.pending.find(p => p.proposalId === input.proposalId);
309
+ if (!proposal) {
310
+ // Check history
311
+ const historical = state.consensus.history.find(h => h.proposalId === input.proposalId);
312
+ if (historical) {
313
+ return { action, ...historical, historical: true };
314
+ }
315
+ return { action, error: 'Proposal not found' };
316
+ }
317
+ const votesFor = Object.values(proposal.votes).filter(v => v).length;
318
+ const votesAgainst = Object.values(proposal.votes).filter(v => !v).length;
319
+ return {
320
+ action,
321
+ proposalId: proposal.proposalId,
322
+ type: proposal.type,
323
+ status: proposal.status,
324
+ votesFor,
325
+ votesAgainst,
326
+ totalVotes: Object.keys(proposal.votes).length,
327
+ requiredMajority: Math.ceil(state.workers.length / 2) + 1,
328
+ };
329
+ }
330
+ if (action === 'list') {
331
+ return {
332
+ action,
333
+ pending: state.consensus.pending.map(p => ({
334
+ proposalId: p.proposalId,
335
+ type: p.type,
336
+ proposedAt: p.proposedAt,
337
+ totalVotes: Object.keys(p.votes).length,
338
+ })),
339
+ recentHistory: state.consensus.history.slice(-5),
340
+ };
341
+ }
342
+ return { action, error: 'Unknown action' };
343
+ },
344
+ },
345
+ {
346
+ name: 'hive-mind/broadcast',
347
+ description: 'Broadcast message to all workers',
348
+ category: 'hive-mind',
349
+ inputSchema: {
350
+ type: 'object',
351
+ properties: {
352
+ message: { type: 'string', description: 'Message to broadcast' },
353
+ priority: { type: 'string', enum: ['low', 'normal', 'high', 'critical'], description: 'Message priority' },
354
+ fromId: { type: 'string', description: 'Sender agent ID' },
355
+ },
356
+ required: ['message'],
357
+ },
358
+ handler: async (input) => {
359
+ const state = loadHiveState();
360
+ if (!state.initialized) {
361
+ return { success: false, error: 'Hive-mind not initialized' };
362
+ }
363
+ const messageId = `msg-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
364
+ // Store in shared memory
365
+ const messages = state.sharedMemory.broadcasts || [];
366
+ messages.push({
367
+ messageId,
368
+ message: input.message,
369
+ priority: input.priority || 'normal',
370
+ fromId: input.fromId || 'system',
371
+ timestamp: new Date().toISOString(),
372
+ });
373
+ // Keep only last 100 broadcasts
374
+ state.sharedMemory.broadcasts = messages.slice(-100);
375
+ saveHiveState(state);
376
+ return {
377
+ success: true,
378
+ messageId,
379
+ recipients: state.workers.length,
380
+ priority: input.priority || 'normal',
381
+ broadcastAt: new Date().toISOString(),
382
+ };
383
+ },
384
+ },
385
+ {
386
+ name: 'hive-mind/memory',
387
+ description: 'Access hive shared memory',
388
+ category: 'hive-mind',
389
+ inputSchema: {
390
+ type: 'object',
391
+ properties: {
392
+ action: { type: 'string', enum: ['get', 'set', 'delete', 'list'], description: 'Memory action' },
393
+ key: { type: 'string', description: 'Memory key' },
394
+ value: { description: 'Value to store (for set)' },
395
+ },
396
+ required: ['action'],
397
+ },
398
+ handler: async (input) => {
399
+ const state = loadHiveState();
400
+ const action = input.action;
401
+ const key = input.key;
402
+ if (action === 'get') {
403
+ if (!key)
404
+ return { action, error: 'Key required' };
405
+ return {
406
+ action,
407
+ key,
408
+ value: state.sharedMemory[key],
409
+ exists: key in state.sharedMemory,
410
+ };
411
+ }
412
+ if (action === 'set') {
413
+ if (!key)
414
+ return { action, error: 'Key required' };
415
+ state.sharedMemory[key] = input.value;
416
+ saveHiveState(state);
417
+ return {
418
+ action,
419
+ key,
420
+ success: true,
421
+ updatedAt: new Date().toISOString(),
422
+ };
423
+ }
424
+ if (action === 'delete') {
425
+ if (!key)
426
+ return { action, error: 'Key required' };
427
+ const existed = key in state.sharedMemory;
428
+ delete state.sharedMemory[key];
429
+ saveHiveState(state);
430
+ return {
431
+ action,
432
+ key,
433
+ deleted: existed,
434
+ };
435
+ }
436
+ if (action === 'list') {
437
+ return {
438
+ action,
439
+ keys: Object.keys(state.sharedMemory),
440
+ count: Object.keys(state.sharedMemory).length,
441
+ };
442
+ }
443
+ return { action, error: 'Unknown action' };
444
+ },
445
+ },
446
+ ];
447
+ //# sourceMappingURL=hive-mind-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hive-mind-tools.js","sourceRoot":"","sources":["../../../src/mcp-tools/hive-mind-tools.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"hooks-tools.d.ts","sourceRoot":"","sources":["../../../src/mcp-tools/hooks-tools.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AA+G1C,eAAO,MAAM,YAAY,EAAE,OAsC1B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,OAwB3B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,OAkC7B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,OAuB9B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,OA+CxB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,OAyC1B,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,OA8CvB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,OA4C1B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,OA+B3B,CAAC;AAGF,eAAO,MAAM,YAAY,EAAE,OAsD1B,CAAC;AAGF,eAAO,MAAM,aAAa,EAAE,OAsC3B,CAAC;AAGF,eAAO,MAAM,gBAAgB,EAAE,OAoE9B,CAAC;AAGF,eAAO,MAAM,aAAa,EAAE,OAiD3B,CAAC;AAGF,eAAO,MAAM,iBAAiB,EAAE,OA8B/B,CAAC;AAGF,eAAO,MAAM,eAAe,EAAE,OAiC7B,CAAC;AAGF,eAAO,MAAM,mBAAmB,EAAE,OA8BjC,CAAC;AAGF,eAAO,MAAM,WAAW,EAAE,OA4BzB,CAAC;AAGF,eAAO,MAAM,SAAS,EAAE,OAsCvB,CAAC;AAGF,eAAO,MAAM,iBAAiB,EAAE,OAiE/B,CAAC;AAGF,eAAO,MAAM,sBAAsB,EAAE,OAkBpC,CAAC;AAGF,eAAO,MAAM,oBAAoB,EAAE,OAwBlC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,OA6BjC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,OA4BhC,CAAC;AAGF,eAAO,MAAM,iBAAiB,EAAE,OA4B/B,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,OAqChC,CAAC;AAGF,eAAO,MAAM,sBAAsB,EAAE,OA0DpC,CAAC;AAGF,eAAO,MAAM,sBAAsB,EAAE,OAkCpC,CAAC;AAGF,eAAO,MAAM,0BAA0B,EAAE,OAqCxC,CAAC;AA8PF,eAAO,MAAM,eAAe,EAAE,OA8C7B,CAAC;AAGF,eAAO,MAAM,mBAAmB,EAAE,OAiGjC,CAAC;AAGF,eAAO,MAAM,iBAAiB,EAAE,OAqD/B,CAAC;AAGF,eAAO,MAAM,iBAAiB,EAAE,OAgE/B,CAAC;AAGF,eAAO,MAAM,iBAAiB,EAAE,OAuC/B,CAAC;AAGF,eAAO,MAAM,UAAU,EAAE,OAAO,EAoC/B,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"hooks-tools.d.ts","sourceRoot":"","sources":["../../../src/mcp-tools/hooks-tools.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AA+G1C,eAAO,MAAM,YAAY,EAAE,OAsC1B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,OAwB3B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,OAkC7B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,OAuB9B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,OA+CxB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,OAyC1B,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,OA8CvB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,OA4C1B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,OA+B3B,CAAC;AAGF,eAAO,MAAM,YAAY,EAAE,OAsD1B,CAAC;AAGF,eAAO,MAAM,aAAa,EAAE,OAsC3B,CAAC;AAGF,eAAO,MAAM,gBAAgB,EAAE,OAoE9B,CAAC;AAGF,eAAO,MAAM,aAAa,EAAE,OAiD3B,CAAC;AAGF,eAAO,MAAM,iBAAiB,EAAE,OAsD/B,CAAC;AAGF,eAAO,MAAM,eAAe,EAAE,OAgD7B,CAAC;AAGF,eAAO,MAAM,mBAAmB,EAAE,OA8BjC,CAAC;AAGF,eAAO,MAAM,WAAW,EAAE,OA4BzB,CAAC;AAGF,eAAO,MAAM,SAAS,EAAE,OAsCvB,CAAC;AAGF,eAAO,MAAM,iBAAiB,EAAE,OAiE/B,CAAC;AAGF,eAAO,MAAM,sBAAsB,EAAE,OAkBpC,CAAC;AAGF,eAAO,MAAM,oBAAoB,EAAE,OAwBlC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,OA6BjC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,OA4BhC,CAAC;AAGF,eAAO,MAAM,iBAAiB,EAAE,OA4B/B,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,OAqChC,CAAC;AAGF,eAAO,MAAM,sBAAsB,EAAE,OA0DpC,CAAC;AAGF,eAAO,MAAM,sBAAsB,EAAE,OAkCpC,CAAC;AAGF,eAAO,MAAM,0BAA0B,EAAE,OAqCxC,CAAC;AA8PF,eAAO,MAAM,eAAe,EAAE,OA8C7B,CAAC;AAGF,eAAO,MAAM,mBAAmB,EAAE,OAiGjC,CAAC;AAGF,eAAO,MAAM,iBAAiB,EAAE,OAqD/B,CAAC;AAGF,eAAO,MAAM,iBAAiB,EAAE,OAgE/B,CAAC;AAGF,eAAO,MAAM,iBAAiB,EAAE,OAuC/B,CAAC;AAGF,eAAO,MAAM,UAAU,EAAE,OAAO,EAoC/B,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -494,7 +494,7 @@ export const hooksPretrain = {
494
494
  const path = params.path || '.';
495
495
  const depth = params.depth || 'medium';
496
496
  const startTime = Date.now();
497
- // Simulate analysis based on depth
497
+ // Scale analysis results by depth level
498
498
  const multiplier = depth === 'deep' ? 3 : depth === 'shallow' ? 1 : 2;
499
499
  return {
500
500
  path,
@@ -627,20 +627,42 @@ export const hooksTransfer = {
627
627
  };
628
628
  },
629
629
  };
630
- // Session start hook
630
+ // Session start hook - auto-starts daemon
631
631
  export const hooksSessionStart = {
632
632
  name: 'hooks/session-start',
633
- description: 'Initialize a new session',
633
+ description: 'Initialize a new session and auto-start daemon',
634
634
  inputSchema: {
635
635
  type: 'object',
636
636
  properties: {
637
637
  sessionId: { type: 'string', description: 'Optional session ID' },
638
638
  restoreLatest: { type: 'boolean', description: 'Restore latest session state' },
639
+ startDaemon: { type: 'boolean', description: 'Auto-start worker daemon (default: true)' },
639
640
  },
640
641
  },
641
642
  handler: async (params) => {
642
643
  const sessionId = params.sessionId || `session-${Date.now()}`;
643
644
  const restoreLatest = params.restoreLatest;
645
+ const shouldStartDaemon = params.startDaemon !== false;
646
+ // Auto-start daemon if enabled
647
+ let daemonStatus = { started: false };
648
+ if (shouldStartDaemon) {
649
+ try {
650
+ // Dynamic import to avoid circular dependencies
651
+ const { startDaemon } = await import('../services/worker-daemon.js');
652
+ const daemon = await startDaemon(process.cwd());
653
+ const status = daemon.getStatus();
654
+ daemonStatus = {
655
+ started: true,
656
+ pid: status.pid,
657
+ };
658
+ }
659
+ catch (error) {
660
+ daemonStatus = {
661
+ started: false,
662
+ error: error instanceof Error ? error.message : String(error),
663
+ };
664
+ }
665
+ }
644
666
  return {
645
667
  sessionId,
646
668
  started: new Date().toISOString(),
@@ -649,7 +671,9 @@ export const hooksSessionStart = {
649
671
  intelligenceEnabled: true,
650
672
  hooksEnabled: true,
651
673
  memoryPersistence: true,
674
+ daemonEnabled: shouldStartDaemon,
652
675
  },
676
+ daemon: daemonStatus,
653
677
  previousSession: restoreLatest ? {
654
678
  id: `session-${Date.now() - 86400000}`,
655
679
  tasksRestored: 3,
@@ -658,24 +682,39 @@ export const hooksSessionStart = {
658
682
  };
659
683
  },
660
684
  };
661
- // Session end hook
685
+ // Session end hook - stops daemon
662
686
  export const hooksSessionEnd = {
663
687
  name: 'hooks/session-end',
664
- description: 'End current session and persist state',
688
+ description: 'End current session, stop daemon, and persist state',
665
689
  inputSchema: {
666
690
  type: 'object',
667
691
  properties: {
668
692
  saveState: { type: 'boolean', description: 'Save session state' },
669
693
  exportMetrics: { type: 'boolean', description: 'Export session metrics' },
694
+ stopDaemon: { type: 'boolean', description: 'Stop worker daemon (default: true)' },
670
695
  },
671
696
  },
672
697
  handler: async (params) => {
673
698
  const saveState = params.saveState !== false;
699
+ const shouldStopDaemon = params.stopDaemon !== false;
674
700
  const sessionId = `session-${Date.now() - 3600000}`; // Default session (1 hour ago)
701
+ // Stop daemon if enabled
702
+ let daemonStopped = false;
703
+ if (shouldStopDaemon) {
704
+ try {
705
+ const { stopDaemon } = await import('../services/worker-daemon.js');
706
+ await stopDaemon();
707
+ daemonStopped = true;
708
+ }
709
+ catch {
710
+ // Daemon may not be running
711
+ }
712
+ }
675
713
  return {
676
714
  sessionId,
677
715
  duration: 3600000, // 1 hour in ms
678
716
  statePath: saveState ? `.claude/sessions/${sessionId}.json` : undefined,
717
+ daemon: { stopped: daemonStopped },
679
718
  summary: {
680
719
  tasksExecuted: 12,
681
720
  tasksSucceeded: 10,
@@ -1439,7 +1478,7 @@ export const hooksWorkerDispatch = {
1439
1478
  startedAt: new Date(),
1440
1479
  };
1441
1480
  activeWorkers.set(workerId, worker);
1442
- // Simulate worker progress in background
1481
+ // Update worker progress in background
1443
1482
  if (background) {
1444
1483
  setTimeout(() => {
1445
1484
  const w = activeWorkers.get(workerId);
@@ -1575,7 +1614,7 @@ export const hooksWorkerDetect = {
1575
1614
  startedAt: new Date(),
1576
1615
  });
1577
1616
  dispatched.push(workerId);
1578
- // Simulate completion
1617
+ // Mark worker completion after processing
1579
1618
  setTimeout(() => {
1580
1619
  const w = activeWorkers.get(workerId);
1581
1620
  if (w) {