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

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 +3 -3
  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 +126 -0
  77. package/dist/src/services/worker-daemon.d.ts.map +1 -0
  78. package/dist/src/services/worker-daemon.js +464 -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 +594 -0
@@ -0,0 +1,481 @@
1
+ /**
2
+ * Workflow MCP Tools for CLI
3
+ *
4
+ * Tool definitions for workflow automation and orchestration.
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 WORKFLOW_DIR = 'workflows';
11
+ const WORKFLOW_FILE = 'store.json';
12
+ function getWorkflowDir() {
13
+ return join(process.cwd(), STORAGE_DIR, WORKFLOW_DIR);
14
+ }
15
+ function getWorkflowPath() {
16
+ return join(getWorkflowDir(), WORKFLOW_FILE);
17
+ }
18
+ function ensureWorkflowDir() {
19
+ const dir = getWorkflowDir();
20
+ if (!existsSync(dir)) {
21
+ mkdirSync(dir, { recursive: true });
22
+ }
23
+ }
24
+ function loadWorkflowStore() {
25
+ try {
26
+ const path = getWorkflowPath();
27
+ if (existsSync(path)) {
28
+ const data = readFileSync(path, 'utf-8');
29
+ return JSON.parse(data);
30
+ }
31
+ }
32
+ catch {
33
+ // Return default store on error
34
+ }
35
+ return { workflows: {}, templates: {}, version: '3.0.0' };
36
+ }
37
+ function saveWorkflowStore(store) {
38
+ ensureWorkflowDir();
39
+ writeFileSync(getWorkflowPath(), JSON.stringify(store, null, 2), 'utf-8');
40
+ }
41
+ export const workflowTools = [
42
+ {
43
+ name: 'workflow/create',
44
+ description: 'Create a new workflow',
45
+ category: 'workflow',
46
+ inputSchema: {
47
+ type: 'object',
48
+ properties: {
49
+ name: { type: 'string', description: 'Workflow name' },
50
+ description: { type: 'string', description: 'Workflow description' },
51
+ steps: {
52
+ type: 'array',
53
+ description: 'Workflow steps',
54
+ items: {
55
+ type: 'object',
56
+ properties: {
57
+ name: { type: 'string' },
58
+ type: { type: 'string', enum: ['task', 'condition', 'parallel', 'loop', 'wait'] },
59
+ config: { type: 'object' },
60
+ },
61
+ },
62
+ },
63
+ variables: { type: 'object', description: 'Initial variables' },
64
+ },
65
+ required: ['name'],
66
+ },
67
+ handler: async (input) => {
68
+ const store = loadWorkflowStore();
69
+ const workflowId = `workflow-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
70
+ const steps = (input.steps || []).map((s, i) => ({
71
+ stepId: `step-${i + 1}`,
72
+ name: s.name || `Step ${i + 1}`,
73
+ type: s.type || 'task',
74
+ config: s.config || {},
75
+ status: 'pending',
76
+ }));
77
+ const workflow = {
78
+ workflowId,
79
+ name: input.name,
80
+ description: input.description,
81
+ steps,
82
+ status: steps.length > 0 ? 'ready' : 'draft',
83
+ currentStep: 0,
84
+ variables: input.variables || {},
85
+ createdAt: new Date().toISOString(),
86
+ };
87
+ store.workflows[workflowId] = workflow;
88
+ saveWorkflowStore(store);
89
+ return {
90
+ workflowId,
91
+ name: workflow.name,
92
+ status: workflow.status,
93
+ stepCount: steps.length,
94
+ createdAt: workflow.createdAt,
95
+ };
96
+ },
97
+ },
98
+ {
99
+ name: 'workflow/execute',
100
+ description: 'Execute a workflow',
101
+ category: 'workflow',
102
+ inputSchema: {
103
+ type: 'object',
104
+ properties: {
105
+ workflowId: { type: 'string', description: 'Workflow ID to execute' },
106
+ variables: { type: 'object', description: 'Runtime variables to inject' },
107
+ startFromStep: { type: 'number', description: 'Step to start from (0-indexed)' },
108
+ },
109
+ required: ['workflowId'],
110
+ },
111
+ handler: async (input) => {
112
+ const store = loadWorkflowStore();
113
+ const workflowId = input.workflowId;
114
+ const workflow = store.workflows[workflowId];
115
+ if (!workflow) {
116
+ return { workflowId, error: 'Workflow not found' };
117
+ }
118
+ if (workflow.status === 'running') {
119
+ return { workflowId, error: 'Workflow already running' };
120
+ }
121
+ // Inject runtime variables
122
+ if (input.variables) {
123
+ workflow.variables = { ...workflow.variables, ...input.variables };
124
+ }
125
+ workflow.status = 'running';
126
+ workflow.startedAt = new Date().toISOString();
127
+ workflow.currentStep = input.startFromStep || 0;
128
+ // Execute steps (in real implementation, this would be async/event-driven)
129
+ const results = [];
130
+ for (let i = workflow.currentStep; i < workflow.steps.length; i++) {
131
+ const step = workflow.steps[i];
132
+ step.status = 'running';
133
+ step.startedAt = new Date().toISOString();
134
+ // For now, mark as completed (real implementation would execute actual tasks)
135
+ step.status = 'completed';
136
+ step.completedAt = new Date().toISOString();
137
+ step.result = { executed: true, stepType: step.type };
138
+ results.push({ stepId: step.stepId, status: step.status });
139
+ workflow.currentStep = i + 1;
140
+ }
141
+ workflow.status = 'completed';
142
+ workflow.completedAt = new Date().toISOString();
143
+ saveWorkflowStore(store);
144
+ return {
145
+ workflowId,
146
+ status: workflow.status,
147
+ stepsExecuted: results.length,
148
+ results,
149
+ startedAt: workflow.startedAt,
150
+ completedAt: workflow.completedAt,
151
+ duration: new Date(workflow.completedAt).getTime() - new Date(workflow.startedAt).getTime(),
152
+ };
153
+ },
154
+ },
155
+ {
156
+ name: 'workflow/status',
157
+ description: 'Get workflow status',
158
+ category: 'workflow',
159
+ inputSchema: {
160
+ type: 'object',
161
+ properties: {
162
+ workflowId: { type: 'string', description: 'Workflow ID' },
163
+ verbose: { type: 'boolean', description: 'Include step details' },
164
+ },
165
+ required: ['workflowId'],
166
+ },
167
+ handler: async (input) => {
168
+ const store = loadWorkflowStore();
169
+ const workflowId = input.workflowId;
170
+ const workflow = store.workflows[workflowId];
171
+ if (!workflow) {
172
+ return { workflowId, error: 'Workflow not found' };
173
+ }
174
+ const completedSteps = workflow.steps.filter(s => s.status === 'completed').length;
175
+ const progress = workflow.steps.length > 0 ? (completedSteps / workflow.steps.length) * 100 : 0;
176
+ const status = {
177
+ workflowId: workflow.workflowId,
178
+ name: workflow.name,
179
+ status: workflow.status,
180
+ progress,
181
+ currentStep: workflow.currentStep,
182
+ totalSteps: workflow.steps.length,
183
+ completedSteps,
184
+ createdAt: workflow.createdAt,
185
+ startedAt: workflow.startedAt,
186
+ completedAt: workflow.completedAt,
187
+ };
188
+ if (input.verbose) {
189
+ return {
190
+ ...status,
191
+ description: workflow.description,
192
+ variables: workflow.variables,
193
+ steps: workflow.steps.map(s => ({
194
+ stepId: s.stepId,
195
+ name: s.name,
196
+ type: s.type,
197
+ status: s.status,
198
+ startedAt: s.startedAt,
199
+ completedAt: s.completedAt,
200
+ })),
201
+ error: workflow.error,
202
+ };
203
+ }
204
+ return status;
205
+ },
206
+ },
207
+ {
208
+ name: 'workflow/list',
209
+ description: 'List all workflows',
210
+ category: 'workflow',
211
+ inputSchema: {
212
+ type: 'object',
213
+ properties: {
214
+ status: { type: 'string', description: 'Filter by status' },
215
+ limit: { type: 'number', description: 'Max workflows to return' },
216
+ },
217
+ },
218
+ handler: async (input) => {
219
+ const store = loadWorkflowStore();
220
+ let workflows = Object.values(store.workflows);
221
+ // Apply filters
222
+ if (input.status) {
223
+ workflows = workflows.filter(w => w.status === input.status);
224
+ }
225
+ // Sort by creation date (newest first)
226
+ workflows.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());
227
+ // Apply limit
228
+ const limit = input.limit || 20;
229
+ workflows = workflows.slice(0, limit);
230
+ return {
231
+ workflows: workflows.map(w => ({
232
+ workflowId: w.workflowId,
233
+ name: w.name,
234
+ status: w.status,
235
+ stepCount: w.steps.length,
236
+ createdAt: w.createdAt,
237
+ completedAt: w.completedAt,
238
+ })),
239
+ total: workflows.length,
240
+ filters: { status: input.status },
241
+ };
242
+ },
243
+ },
244
+ {
245
+ name: 'workflow/pause',
246
+ description: 'Pause a running workflow',
247
+ category: 'workflow',
248
+ inputSchema: {
249
+ type: 'object',
250
+ properties: {
251
+ workflowId: { type: 'string', description: 'Workflow ID' },
252
+ },
253
+ required: ['workflowId'],
254
+ },
255
+ handler: async (input) => {
256
+ const store = loadWorkflowStore();
257
+ const workflowId = input.workflowId;
258
+ const workflow = store.workflows[workflowId];
259
+ if (!workflow) {
260
+ return { workflowId, error: 'Workflow not found' };
261
+ }
262
+ if (workflow.status !== 'running') {
263
+ return { workflowId, error: 'Workflow not running' };
264
+ }
265
+ workflow.status = 'paused';
266
+ saveWorkflowStore(store);
267
+ return {
268
+ workflowId,
269
+ status: workflow.status,
270
+ pausedAt: new Date().toISOString(),
271
+ currentStep: workflow.currentStep,
272
+ };
273
+ },
274
+ },
275
+ {
276
+ name: 'workflow/resume',
277
+ description: 'Resume a paused workflow',
278
+ category: 'workflow',
279
+ inputSchema: {
280
+ type: 'object',
281
+ properties: {
282
+ workflowId: { type: 'string', description: 'Workflow ID' },
283
+ },
284
+ required: ['workflowId'],
285
+ },
286
+ handler: async (input) => {
287
+ const store = loadWorkflowStore();
288
+ const workflowId = input.workflowId;
289
+ const workflow = store.workflows[workflowId];
290
+ if (!workflow) {
291
+ return { workflowId, error: 'Workflow not found' };
292
+ }
293
+ if (workflow.status !== 'paused') {
294
+ return { workflowId, error: 'Workflow not paused' };
295
+ }
296
+ workflow.status = 'running';
297
+ saveWorkflowStore(store);
298
+ // Continue execution from current step
299
+ const results = [];
300
+ for (let i = workflow.currentStep; i < workflow.steps.length; i++) {
301
+ const step = workflow.steps[i];
302
+ step.status = 'running';
303
+ step.startedAt = new Date().toISOString();
304
+ step.status = 'completed';
305
+ step.completedAt = new Date().toISOString();
306
+ step.result = { executed: true };
307
+ results.push({ stepId: step.stepId, status: step.status });
308
+ workflow.currentStep = i + 1;
309
+ }
310
+ workflow.status = 'completed';
311
+ workflow.completedAt = new Date().toISOString();
312
+ saveWorkflowStore(store);
313
+ return {
314
+ workflowId,
315
+ status: workflow.status,
316
+ resumed: true,
317
+ stepsExecuted: results.length,
318
+ completedAt: workflow.completedAt,
319
+ };
320
+ },
321
+ },
322
+ {
323
+ name: 'workflow/cancel',
324
+ description: 'Cancel a workflow',
325
+ category: 'workflow',
326
+ inputSchema: {
327
+ type: 'object',
328
+ properties: {
329
+ workflowId: { type: 'string', description: 'Workflow ID' },
330
+ reason: { type: 'string', description: 'Cancellation reason' },
331
+ },
332
+ required: ['workflowId'],
333
+ },
334
+ handler: async (input) => {
335
+ const store = loadWorkflowStore();
336
+ const workflowId = input.workflowId;
337
+ const workflow = store.workflows[workflowId];
338
+ if (!workflow) {
339
+ return { workflowId, error: 'Workflow not found' };
340
+ }
341
+ if (workflow.status === 'completed' || workflow.status === 'failed') {
342
+ return { workflowId, error: 'Workflow already finished' };
343
+ }
344
+ workflow.status = 'failed';
345
+ workflow.error = input.reason || 'Cancelled by user';
346
+ workflow.completedAt = new Date().toISOString();
347
+ // Mark remaining steps as skipped
348
+ for (let i = workflow.currentStep; i < workflow.steps.length; i++) {
349
+ workflow.steps[i].status = 'skipped';
350
+ }
351
+ saveWorkflowStore(store);
352
+ return {
353
+ workflowId,
354
+ status: workflow.status,
355
+ cancelledAt: workflow.completedAt,
356
+ reason: workflow.error,
357
+ skippedSteps: workflow.steps.length - workflow.currentStep,
358
+ };
359
+ },
360
+ },
361
+ {
362
+ name: 'workflow/delete',
363
+ description: 'Delete a workflow',
364
+ category: 'workflow',
365
+ inputSchema: {
366
+ type: 'object',
367
+ properties: {
368
+ workflowId: { type: 'string', description: 'Workflow ID' },
369
+ },
370
+ required: ['workflowId'],
371
+ },
372
+ handler: async (input) => {
373
+ const store = loadWorkflowStore();
374
+ const workflowId = input.workflowId;
375
+ if (!store.workflows[workflowId]) {
376
+ return { workflowId, error: 'Workflow not found' };
377
+ }
378
+ const workflow = store.workflows[workflowId];
379
+ if (workflow.status === 'running') {
380
+ return { workflowId, error: 'Cannot delete running workflow' };
381
+ }
382
+ delete store.workflows[workflowId];
383
+ saveWorkflowStore(store);
384
+ return {
385
+ workflowId,
386
+ deleted: true,
387
+ deletedAt: new Date().toISOString(),
388
+ };
389
+ },
390
+ },
391
+ {
392
+ name: 'workflow/template',
393
+ description: 'Save workflow as template or create from template',
394
+ category: 'workflow',
395
+ inputSchema: {
396
+ type: 'object',
397
+ properties: {
398
+ action: { type: 'string', enum: ['save', 'create', 'list'], description: 'Template action' },
399
+ workflowId: { type: 'string', description: 'Workflow ID (for save)' },
400
+ templateId: { type: 'string', description: 'Template ID (for create)' },
401
+ templateName: { type: 'string', description: 'Template name (for save)' },
402
+ newName: { type: 'string', description: 'New workflow name (for create)' },
403
+ },
404
+ required: ['action'],
405
+ },
406
+ handler: async (input) => {
407
+ const store = loadWorkflowStore();
408
+ const action = input.action;
409
+ if (action === 'save') {
410
+ const workflow = store.workflows[input.workflowId];
411
+ if (!workflow) {
412
+ return { action, error: 'Workflow not found' };
413
+ }
414
+ const templateId = `template-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
415
+ const template = {
416
+ ...workflow,
417
+ workflowId: templateId,
418
+ name: input.templateName || `${workflow.name} Template`,
419
+ status: 'draft',
420
+ currentStep: 0,
421
+ createdAt: new Date().toISOString(),
422
+ startedAt: undefined,
423
+ completedAt: undefined,
424
+ };
425
+ // Reset step statuses
426
+ template.steps = template.steps.map(s => ({
427
+ ...s,
428
+ status: 'pending',
429
+ result: undefined,
430
+ startedAt: undefined,
431
+ completedAt: undefined,
432
+ }));
433
+ store.templates[templateId] = template;
434
+ saveWorkflowStore(store);
435
+ return {
436
+ action,
437
+ templateId,
438
+ name: template.name,
439
+ savedAt: new Date().toISOString(),
440
+ };
441
+ }
442
+ if (action === 'create') {
443
+ const template = store.templates[input.templateId];
444
+ if (!template) {
445
+ return { action, error: 'Template not found' };
446
+ }
447
+ const workflowId = `workflow-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
448
+ const workflow = {
449
+ ...template,
450
+ workflowId,
451
+ name: input.newName || template.name.replace(' Template', ''),
452
+ status: 'ready',
453
+ createdAt: new Date().toISOString(),
454
+ };
455
+ store.workflows[workflowId] = workflow;
456
+ saveWorkflowStore(store);
457
+ return {
458
+ action,
459
+ workflowId,
460
+ name: workflow.name,
461
+ fromTemplate: input.templateId,
462
+ createdAt: workflow.createdAt,
463
+ };
464
+ }
465
+ if (action === 'list') {
466
+ return {
467
+ action,
468
+ templates: Object.values(store.templates).map(t => ({
469
+ templateId: t.workflowId,
470
+ name: t.name,
471
+ stepCount: t.steps.length,
472
+ createdAt: t.createdAt,
473
+ })),
474
+ total: Object.keys(store.templates).length,
475
+ };
476
+ }
477
+ return { action, error: 'Unknown action' };
478
+ },
479
+ },
480
+ ];
481
+ //# sourceMappingURL=workflow-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-tools.js","sourceRoot":"","sources":["../../../src/mcp-tools/workflow-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * V3 CLI Services Index
3
+ * Central registry for all background services
4
+ */
5
+ export { WorkerDaemon, getDaemon, startDaemon, stopDaemon, type WorkerType, } from './worker-daemon.js';
6
+ export type { default as WorkerDaemonType } from './worker-daemon.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,YAAY,EACZ,SAAS,EACT,WAAW,EACX,UAAU,EACV,KAAK,UAAU,GAChB,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * V3 CLI Services Index
3
+ * Central registry for all background services
4
+ */
5
+ export { WorkerDaemon, getDaemon, startDaemon, stopDaemon, } from './worker-daemon.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,YAAY,EACZ,SAAS,EACT,WAAW,EACX,UAAU,GAEX,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Worker Daemon Service
3
+ * Node.js-based background worker system that auto-runs like shell daemons
4
+ *
5
+ * Workers:
6
+ * - map: Codebase mapping (5 min interval)
7
+ * - audit: Security analysis (10 min interval)
8
+ * - optimize: Performance optimization (15 min interval)
9
+ * - consolidate: Memory consolidation (30 min interval)
10
+ * - testgaps: Test coverage analysis (20 min interval)
11
+ */
12
+ import { EventEmitter } from 'events';
13
+ export type WorkerType = 'ultralearn' | 'optimize' | 'consolidate' | 'predict' | 'audit' | 'map' | 'preload' | 'deepdive' | 'document' | 'refactor' | 'benchmark' | 'testgaps';
14
+ interface WorkerConfig {
15
+ type: WorkerType;
16
+ intervalMs: number;
17
+ priority: 'low' | 'normal' | 'high' | 'critical';
18
+ description: string;
19
+ enabled: boolean;
20
+ }
21
+ interface WorkerState {
22
+ lastRun?: Date;
23
+ nextRun?: Date;
24
+ runCount: number;
25
+ successCount: number;
26
+ failureCount: number;
27
+ averageDurationMs: number;
28
+ isRunning: boolean;
29
+ }
30
+ interface WorkerResult {
31
+ workerId: string;
32
+ type: WorkerType;
33
+ success: boolean;
34
+ durationMs: number;
35
+ output?: unknown;
36
+ error?: string;
37
+ timestamp: Date;
38
+ }
39
+ interface DaemonStatus {
40
+ running: boolean;
41
+ pid: number;
42
+ startedAt?: Date;
43
+ workers: Map<WorkerType, WorkerState>;
44
+ config: DaemonConfig;
45
+ }
46
+ interface DaemonConfig {
47
+ autoStart: boolean;
48
+ logDir: string;
49
+ stateFile: string;
50
+ maxConcurrent: number;
51
+ workers: WorkerConfig[];
52
+ }
53
+ /**
54
+ * Worker Daemon - Manages background workers with Node.js
55
+ */
56
+ export declare class WorkerDaemon extends EventEmitter {
57
+ private config;
58
+ private workers;
59
+ private timers;
60
+ private running;
61
+ private startedAt?;
62
+ private projectRoot;
63
+ constructor(projectRoot: string, config?: Partial<DaemonConfig>);
64
+ private initializeWorkerStates;
65
+ /**
66
+ * Start the daemon and all enabled workers
67
+ */
68
+ start(): Promise<void>;
69
+ /**
70
+ * Stop the daemon and all workers
71
+ */
72
+ stop(): Promise<void>;
73
+ /**
74
+ * Get daemon status
75
+ */
76
+ getStatus(): DaemonStatus;
77
+ /**
78
+ * Schedule a worker to run at intervals
79
+ */
80
+ private scheduleWorker;
81
+ /**
82
+ * Execute a worker
83
+ */
84
+ private executeWorker;
85
+ /**
86
+ * Run the actual worker logic
87
+ */
88
+ private runWorkerLogic;
89
+ private runMapWorker;
90
+ private runAuditWorker;
91
+ private runOptimizeWorker;
92
+ private runConsolidateWorker;
93
+ private runTestGapsWorker;
94
+ private runPredictWorker;
95
+ private runDocumentWorker;
96
+ /**
97
+ * Manually trigger a worker
98
+ */
99
+ triggerWorker(type: WorkerType): Promise<WorkerResult>;
100
+ /**
101
+ * Enable/disable a worker
102
+ */
103
+ setWorkerEnabled(type: WorkerType, enabled: boolean): void;
104
+ /**
105
+ * Save daemon state to file
106
+ */
107
+ private saveState;
108
+ /**
109
+ * Log message
110
+ */
111
+ private log;
112
+ }
113
+ /**
114
+ * Get or create daemon instance
115
+ */
116
+ export declare function getDaemon(projectRoot?: string): WorkerDaemon;
117
+ /**
118
+ * Start daemon (for use in session-start hook)
119
+ */
120
+ export declare function startDaemon(projectRoot: string): Promise<WorkerDaemon>;
121
+ /**
122
+ * Stop daemon
123
+ */
124
+ export declare function stopDaemon(): Promise<void>;
125
+ export default WorkerDaemon;
126
+ //# sourceMappingURL=worker-daemon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-daemon.d.ts","sourceRoot":"","sources":["../../../src/services/worker-daemon.ts"],"names":[],"mappings":"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"}