@claude-flow/cli 3.0.0-alpha.24 β†’ 3.0.0-alpha.26

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.
@@ -0,0 +1,567 @@
1
+ /**
2
+ * V3 Issues Command
3
+ *
4
+ * Implements ADR-016: Collaborative Issue Claims for Human-Agent Workflows
5
+ *
6
+ * Commands:
7
+ * - issues list List all claims
8
+ * - issues claim Claim an issue
9
+ * - issues release Release a claim
10
+ * - issues handoff Request handoff
11
+ * - issues status Update claim status
12
+ * - issues stealable List stealable issues
13
+ * - issues steal Steal an issue
14
+ * - issues load View agent load
15
+ * - issues rebalance Rebalance swarm
16
+ * - issues board Visual board view
17
+ */
18
+ import { output } from '../output.js';
19
+ import { createClaimService } from '../services/claim-service.js';
20
+ // ============================================================================
21
+ // Subcommands
22
+ // ============================================================================
23
+ const listCommand = {
24
+ name: 'list',
25
+ aliases: ['ls'],
26
+ description: 'List all issue claims',
27
+ options: [
28
+ {
29
+ name: 'status',
30
+ short: 's',
31
+ description: 'Filter by status',
32
+ type: 'string',
33
+ choices: ['active', 'paused', 'blocked', 'stealable', 'completed', 'handoff-pending', 'review-requested'],
34
+ },
35
+ {
36
+ name: 'mine',
37
+ short: 'm',
38
+ description: 'Show only my claims',
39
+ type: 'boolean',
40
+ default: false,
41
+ },
42
+ ],
43
+ action: async (ctx) => {
44
+ const service = createClaimService(ctx.cwd);
45
+ await service.initialize();
46
+ const status = ctx.flags.status;
47
+ const claims = status
48
+ ? await service.getByStatus(status)
49
+ : await service.getAllClaims();
50
+ if (claims.length === 0) {
51
+ output.printInfo('No claims found');
52
+ return { success: true, data: { claims: [] } };
53
+ }
54
+ output.writeln();
55
+ output.writeln(output.bold('Issue Claims (ADR-016)'));
56
+ output.writeln();
57
+ const rows = claims.map(c => ({
58
+ issue: c.issueId,
59
+ claimant: c.claimant.type === 'human'
60
+ ? `πŸ‘€ ${c.claimant.name}`
61
+ : `πŸ€– ${c.claimant.agentType}`,
62
+ status: formatStatus(c.status),
63
+ progress: `${c.progress}%`,
64
+ since: formatDuration(Date.now() - c.claimedAt.getTime()),
65
+ }));
66
+ output.printTable({
67
+ columns: [
68
+ { key: 'issue', header: 'Issue', width: 12 },
69
+ { key: 'claimant', header: 'Claimant', width: 18 },
70
+ { key: 'status', header: 'Status', width: 20 },
71
+ { key: 'progress', header: 'Progress', width: 10 },
72
+ { key: 'since', header: 'Since', width: 10 },
73
+ ],
74
+ data: rows,
75
+ });
76
+ if (ctx.flags.format === 'json') {
77
+ output.printJson(claims);
78
+ }
79
+ return { success: true, data: { claims } };
80
+ },
81
+ };
82
+ const claimCommand = {
83
+ name: 'claim',
84
+ description: 'Claim an issue',
85
+ options: [
86
+ {
87
+ name: 'issue',
88
+ short: 'i',
89
+ description: 'Issue ID to claim',
90
+ type: 'string',
91
+ },
92
+ {
93
+ name: 'agent',
94
+ short: 'a',
95
+ description: 'Claim as agent (format: type:id)',
96
+ type: 'string',
97
+ },
98
+ {
99
+ name: 'user',
100
+ short: 'u',
101
+ description: 'Claim as user (format: id:name)',
102
+ type: 'string',
103
+ },
104
+ ],
105
+ action: async (ctx) => {
106
+ const issueId = (ctx.flags.issue || ctx.args[0]);
107
+ const agentStr = ctx.flags.agent;
108
+ const userStr = ctx.flags.user;
109
+ if (!issueId) {
110
+ output.printError('Issue ID is required');
111
+ return { success: false, exitCode: 1 };
112
+ }
113
+ if (!agentStr && !userStr) {
114
+ output.printError('Must specify --agent or --user');
115
+ return { success: false, exitCode: 1 };
116
+ }
117
+ const claimant = agentStr
118
+ ? {
119
+ type: 'agent',
120
+ agentType: agentStr.split(':')[0],
121
+ agentId: agentStr.split(':')[1] || `${agentStr.split(':')[0]}-1`,
122
+ }
123
+ : {
124
+ type: 'human',
125
+ userId: userStr.split(':')[0],
126
+ name: userStr.split(':')[1] || userStr.split(':')[0],
127
+ };
128
+ const service = createClaimService(ctx.cwd);
129
+ await service.initialize();
130
+ const result = await service.claim(issueId, claimant);
131
+ if (result.success) {
132
+ output.printSuccess(`Claimed issue ${issueId}`);
133
+ return { success: true, data: result.claim };
134
+ }
135
+ else {
136
+ output.printError(result.error || 'Failed to claim issue');
137
+ return { success: false, exitCode: 1 };
138
+ }
139
+ },
140
+ };
141
+ const releaseCommand = {
142
+ name: 'release',
143
+ description: 'Release a claim',
144
+ options: [
145
+ {
146
+ name: 'issue',
147
+ short: 'i',
148
+ description: 'Issue ID to release',
149
+ type: 'string',
150
+ },
151
+ {
152
+ name: 'agent',
153
+ short: 'a',
154
+ description: 'Release as agent',
155
+ type: 'string',
156
+ },
157
+ {
158
+ name: 'user',
159
+ short: 'u',
160
+ description: 'Release as user',
161
+ type: 'string',
162
+ },
163
+ ],
164
+ action: async (ctx) => {
165
+ const issueId = (ctx.flags.issue || ctx.args[0]);
166
+ const agentStr = ctx.flags.agent;
167
+ const userStr = ctx.flags.user;
168
+ if (!issueId) {
169
+ output.printError('Issue ID is required');
170
+ return { success: false, exitCode: 1 };
171
+ }
172
+ if (!agentStr && !userStr) {
173
+ output.printError('Must specify --agent or --user');
174
+ return { success: false, exitCode: 1 };
175
+ }
176
+ const claimant = agentStr
177
+ ? {
178
+ type: 'agent',
179
+ agentType: agentStr.split(':')[0],
180
+ agentId: agentStr.split(':')[1] || `${agentStr.split(':')[0]}-1`,
181
+ }
182
+ : {
183
+ type: 'human',
184
+ userId: userStr.split(':')[0],
185
+ name: userStr.split(':')[1] || userStr.split(':')[0],
186
+ };
187
+ const service = createClaimService(ctx.cwd);
188
+ await service.initialize();
189
+ try {
190
+ await service.release(issueId, claimant);
191
+ output.printSuccess(`Released claim on issue ${issueId}`);
192
+ return { success: true };
193
+ }
194
+ catch (error) {
195
+ output.printError(error instanceof Error ? error.message : String(error));
196
+ return { success: false, exitCode: 1 };
197
+ }
198
+ },
199
+ };
200
+ const handoffCommand = {
201
+ name: 'handoff',
202
+ description: 'Request handoff to another agent/user',
203
+ options: [
204
+ { name: 'issue', short: 'i', type: 'string', description: 'Issue ID' },
205
+ { name: 'to', description: 'Target (agent:type:id or user:id:name)', type: 'string' },
206
+ { name: 'from', description: 'Current owner', type: 'string' },
207
+ { name: 'reason', short: 'r', type: 'string', description: 'Handoff reason', default: 'Handoff requested' },
208
+ ],
209
+ action: async (ctx) => {
210
+ const issueId = (ctx.flags.issue || ctx.args[0]);
211
+ const toStr = ctx.flags.to;
212
+ const fromStr = ctx.flags.from;
213
+ const reason = ctx.flags.reason;
214
+ if (!issueId || !toStr) {
215
+ output.printError('Issue ID and --to are required');
216
+ return { success: false, exitCode: 1 };
217
+ }
218
+ const to = parseClaimant(toStr);
219
+ if (!to) {
220
+ output.printError('Invalid --to format. Use agent:type:id or user:id:name');
221
+ return { success: false, exitCode: 1 };
222
+ }
223
+ const service = createClaimService(ctx.cwd);
224
+ await service.initialize();
225
+ // Get current claim to find "from"
226
+ const claim = await service.getIssueStatus(issueId);
227
+ if (!claim) {
228
+ output.printError(`Issue ${issueId} is not claimed`);
229
+ return { success: false, exitCode: 1 };
230
+ }
231
+ const from = fromStr ? parseClaimant(fromStr) : claim.claimant;
232
+ if (!from) {
233
+ output.printError('Could not determine current owner');
234
+ return { success: false, exitCode: 1 };
235
+ }
236
+ try {
237
+ await service.requestHandoff(issueId, from, to, reason);
238
+ output.printSuccess(`Handoff requested for issue ${issueId}`);
239
+ return { success: true };
240
+ }
241
+ catch (error) {
242
+ output.printError(error instanceof Error ? error.message : String(error));
243
+ return { success: false, exitCode: 1 };
244
+ }
245
+ },
246
+ };
247
+ const statusCommand = {
248
+ name: 'status',
249
+ description: 'Update claim status',
250
+ options: [
251
+ { name: 'issue', short: 'i', type: 'string', description: 'Issue ID' },
252
+ { name: 'set', short: 's', type: 'string', description: 'New status', choices: ['active', 'paused', 'blocked', 'completed'] },
253
+ { name: 'progress', short: 'p', type: 'number', description: 'Progress (0-100)' },
254
+ { name: 'note', short: 'n', type: 'string', description: 'Status note' },
255
+ ],
256
+ action: async (ctx) => {
257
+ const issueId = (ctx.flags.issue || ctx.args[0]);
258
+ if (!issueId) {
259
+ output.printError('Issue ID is required');
260
+ return { success: false, exitCode: 1 };
261
+ }
262
+ const service = createClaimService(ctx.cwd);
263
+ await service.initialize();
264
+ const newStatus = ctx.flags.set;
265
+ const progress = ctx.flags.progress;
266
+ const note = ctx.flags.note;
267
+ try {
268
+ if (newStatus) {
269
+ await service.updateStatus(issueId, newStatus, note);
270
+ output.printSuccess(`Updated status to ${newStatus}`);
271
+ }
272
+ if (progress !== undefined) {
273
+ await service.updateProgress(issueId, progress);
274
+ output.printSuccess(`Updated progress to ${progress}%`);
275
+ }
276
+ const claim = await service.getIssueStatus(issueId);
277
+ if (claim) {
278
+ output.writeln();
279
+ output.printBox([
280
+ `Issue: ${claim.issueId}`,
281
+ `Status: ${formatStatus(claim.status)}`,
282
+ `Progress: ${claim.progress}%`,
283
+ `Claimant: ${formatClaimant(claim.claimant)}`,
284
+ ].join('\n'), 'Claim Status');
285
+ }
286
+ return { success: true, data: claim };
287
+ }
288
+ catch (error) {
289
+ output.printError(error instanceof Error ? error.message : String(error));
290
+ return { success: false, exitCode: 1 };
291
+ }
292
+ },
293
+ };
294
+ const stealableCommand = {
295
+ name: 'stealable',
296
+ description: 'List stealable issues',
297
+ options: [
298
+ { name: 'type', short: 't', type: 'string', description: 'Filter by agent type' },
299
+ ],
300
+ action: async (ctx) => {
301
+ const agentType = ctx.flags.type;
302
+ const service = createClaimService(ctx.cwd);
303
+ await service.initialize();
304
+ const stealable = await service.getStealable(agentType);
305
+ if (stealable.length === 0) {
306
+ output.printInfo('No stealable issues found');
307
+ return { success: true, data: { stealable: [] } };
308
+ }
309
+ output.writeln();
310
+ output.writeln(output.bold('🎯 Stealable Issues'));
311
+ output.writeln();
312
+ for (const c of stealable) {
313
+ output.writeln(` ${output.highlight(c.issueId)}`);
314
+ output.writeln(` Owner: ${formatClaimant(c.claimant)}`);
315
+ output.writeln(` Progress: ${c.progress}%`);
316
+ if (c.context)
317
+ output.writeln(` Context: ${c.context.slice(0, 60)}...`);
318
+ output.writeln();
319
+ }
320
+ return { success: true, data: { stealable } };
321
+ },
322
+ };
323
+ const stealCommand = {
324
+ name: 'steal',
325
+ description: 'Steal a stealable issue',
326
+ options: [
327
+ { name: 'issue', short: 'i', type: 'string', description: 'Issue ID' },
328
+ { name: 'agent', short: 'a', type: 'string', description: 'Steal as agent', required: true },
329
+ ],
330
+ action: async (ctx) => {
331
+ const issueId = (ctx.flags.issue || ctx.args[0]);
332
+ const agentStr = ctx.flags.agent;
333
+ if (!issueId) {
334
+ output.printError('Issue ID is required');
335
+ return { success: false, exitCode: 1 };
336
+ }
337
+ const stealer = {
338
+ type: 'agent',
339
+ agentType: agentStr.split(':')[0],
340
+ agentId: agentStr.split(':')[1] || `${agentStr.split(':')[0]}-1`,
341
+ };
342
+ const service = createClaimService(ctx.cwd);
343
+ await service.initialize();
344
+ const result = await service.steal(issueId, stealer);
345
+ if (result.success) {
346
+ output.printSuccess(`🎯 Stole issue ${issueId}`);
347
+ if (result.previousOwner) {
348
+ output.printInfo(`Previous: ${formatClaimant(result.previousOwner)}`);
349
+ }
350
+ if (result.context) {
351
+ output.printInfo(`Progress: ${result.context.progress}%`);
352
+ }
353
+ return { success: true, data: result };
354
+ }
355
+ else {
356
+ output.printError(result.error || 'Failed to steal issue');
357
+ return { success: false, exitCode: 1 };
358
+ }
359
+ },
360
+ };
361
+ const loadCommand = {
362
+ name: 'load',
363
+ description: 'View agent load distribution',
364
+ options: [
365
+ { name: 'agent', short: 'a', type: 'string', description: 'Specific agent ID' },
366
+ ],
367
+ action: async (ctx) => {
368
+ const agentId = ctx.flags.agent;
369
+ const service = createClaimService(ctx.cwd);
370
+ await service.initialize();
371
+ if (agentId) {
372
+ const load = await service.getAgentLoad(agentId);
373
+ output.writeln();
374
+ output.writeln(output.bold(`πŸ“Š Load: ${agentId}`));
375
+ output.writeln();
376
+ output.printList([
377
+ `Claims: ${load.claimCount}/${load.maxClaims}`,
378
+ `Utilization: ${(load.utilization * 100).toFixed(0)}%`,
379
+ `Blocked: ${load.currentBlockedCount}`,
380
+ ]);
381
+ return { success: true, data: load };
382
+ }
383
+ const claims = await service.getAllClaims();
384
+ const agentLoads = new Map();
385
+ for (const claim of claims) {
386
+ if (claim.claimant.type === 'agent') {
387
+ const id = claim.claimant.agentId;
388
+ const existing = agentLoads.get(id);
389
+ agentLoads.set(id, {
390
+ count: (existing?.count || 0) + 1,
391
+ type: claim.claimant.agentType,
392
+ });
393
+ }
394
+ }
395
+ output.writeln();
396
+ output.writeln(output.bold('πŸ“Š Agent Load Distribution'));
397
+ output.writeln();
398
+ if (agentLoads.size === 0) {
399
+ output.printInfo('No agent claims found');
400
+ }
401
+ else {
402
+ for (const [id, data] of agentLoads) {
403
+ const bar = 'β–ˆ'.repeat(data.count) + 'β–‘'.repeat(Math.max(0, 5 - data.count));
404
+ output.writeln(` ${id} (${data.type}): ${bar} ${data.count}`);
405
+ }
406
+ }
407
+ return { success: true, data: Object.fromEntries(agentLoads) };
408
+ },
409
+ };
410
+ const rebalanceCommand = {
411
+ name: 'rebalance',
412
+ description: 'Rebalance work across swarm',
413
+ options: [
414
+ { name: 'dry-run', type: 'boolean', default: true, description: 'Preview only' },
415
+ { name: 'apply', type: 'boolean', default: false, description: 'Apply changes' },
416
+ ],
417
+ action: async (ctx) => {
418
+ const apply = ctx.flags.apply;
419
+ const service = createClaimService(ctx.cwd);
420
+ await service.initialize();
421
+ const result = await service.rebalance('default');
422
+ if (result.suggested.length === 0) {
423
+ output.printSuccess('βš–οΈ Swarm is balanced');
424
+ return { success: true, data: result };
425
+ }
426
+ output.writeln();
427
+ output.writeln(output.bold(apply ? 'βš–οΈ Rebalancing' : 'βš–οΈ Rebalance Preview'));
428
+ output.writeln();
429
+ for (const s of result.suggested) {
430
+ const from = s.currentOwner.type === 'agent' ? s.currentOwner.agentId : s.currentOwner.name;
431
+ const to = s.suggestedOwner.type === 'agent' ? s.suggestedOwner.agentId : s.suggestedOwner.name;
432
+ output.writeln(` ${s.issueId}: ${from} β†’ ${to}`);
433
+ }
434
+ if (!apply) {
435
+ output.writeln();
436
+ output.printInfo('Use --apply to execute');
437
+ }
438
+ return { success: true, data: result };
439
+ },
440
+ };
441
+ const boardCommand = {
442
+ name: 'board',
443
+ description: 'Visual board view of claims',
444
+ action: async (ctx) => {
445
+ const service = createClaimService(ctx.cwd);
446
+ await service.initialize();
447
+ const claims = await service.getAllClaims();
448
+ const byStatus = {
449
+ active: [],
450
+ blocked: [],
451
+ 'review-requested': [],
452
+ stealable: [],
453
+ completed: [],
454
+ };
455
+ for (const c of claims) {
456
+ const key = c.status in byStatus ? c.status : 'active';
457
+ byStatus[key].push(c);
458
+ }
459
+ output.writeln();
460
+ output.writeln(output.bold('πŸ“‹ Issue Board (ADR-016)'));
461
+ output.writeln();
462
+ const columns = ['active', 'blocked', 'review-requested', 'stealable', 'completed'];
463
+ const headers = ['πŸ”΅ Active', 'πŸ”΄ Blocked', '🟑 Review', '🟒 Stealable', 'βœ… Done'];
464
+ // Print column headers
465
+ output.writeln(headers.map(h => h.padEnd(18)).join(''));
466
+ output.writeln('─'.repeat(90));
467
+ // Find max rows
468
+ const maxRows = Math.max(...Object.values(byStatus).map(arr => arr.length), 1);
469
+ for (let i = 0; i < maxRows; i++) {
470
+ const row = columns.map(col => {
471
+ const item = byStatus[col][i];
472
+ if (!item)
473
+ return ''.padEnd(18);
474
+ const owner = item.claimant.type === 'agent' ? item.claimant.agentType.slice(0, 6) : item.claimant.name.slice(0, 6);
475
+ return `#${item.issueId} (${owner})`.padEnd(18);
476
+ });
477
+ output.writeln(row.join(''));
478
+ }
479
+ return { success: true };
480
+ },
481
+ };
482
+ // ============================================================================
483
+ // Main Command
484
+ // ============================================================================
485
+ export const issuesCommand = {
486
+ name: 'issues',
487
+ description: 'Collaborative issue claims for human-agent workflows (ADR-016)',
488
+ subcommands: [
489
+ listCommand,
490
+ claimCommand,
491
+ releaseCommand,
492
+ handoffCommand,
493
+ statusCommand,
494
+ stealableCommand,
495
+ stealCommand,
496
+ loadCommand,
497
+ rebalanceCommand,
498
+ boardCommand,
499
+ ],
500
+ examples: [
501
+ { command: 'claude-flow issues list', description: 'List all claims' },
502
+ { command: 'claude-flow issues claim 123 --agent coder:coder-1', description: 'Claim as agent' },
503
+ { command: 'claude-flow issues handoff 123 --to agent:tester:tester-1', description: 'Handoff to tester' },
504
+ { command: 'claude-flow issues stealable', description: 'List stealable' },
505
+ { command: 'claude-flow issues steal 123 --agent coder:coder-2', description: 'Steal issue' },
506
+ { command: 'claude-flow issues board', description: 'Visual board' },
507
+ ],
508
+ action: async () => {
509
+ output.writeln();
510
+ output.writeln(output.bold('πŸ“‹ Issue Claims (ADR-016)'));
511
+ output.writeln(output.dim('Collaborative human-agent issue management'));
512
+ output.writeln();
513
+ output.writeln('Commands:');
514
+ output.printList([
515
+ 'list - List all claims',
516
+ 'claim - Claim an issue',
517
+ 'release - Release a claim',
518
+ 'handoff - Request handoff',
519
+ 'status - Update status/progress',
520
+ 'stealable - List stealable issues',
521
+ 'steal - Steal an issue',
522
+ 'load - View agent load',
523
+ 'rebalance - Rebalance swarm',
524
+ 'board - Visual board view',
525
+ ]);
526
+ return { success: true };
527
+ },
528
+ };
529
+ // ============================================================================
530
+ // Helpers
531
+ // ============================================================================
532
+ function parseClaimant(str) {
533
+ const parts = str.split(':');
534
+ if (parts[0] === 'agent' && parts.length >= 2) {
535
+ return { type: 'agent', agentType: parts[1], agentId: parts[2] || `${parts[1]}-1` };
536
+ }
537
+ if (parts[0] === 'user' && parts.length >= 2) {
538
+ return { type: 'human', userId: parts[1], name: parts[2] || parts[1] };
539
+ }
540
+ return null;
541
+ }
542
+ function formatClaimant(c) {
543
+ return c.type === 'human' ? `πŸ‘€ ${c.name}` : `πŸ€– ${c.agentType}:${c.agentId}`;
544
+ }
545
+ function formatStatus(status) {
546
+ const icons = {
547
+ active: 'πŸ”΅',
548
+ paused: '⏸️',
549
+ blocked: 'πŸ”΄',
550
+ stealable: '🟒',
551
+ completed: 'βœ…',
552
+ 'handoff-pending': 'πŸ”„',
553
+ 'review-requested': '🟑',
554
+ };
555
+ return `${icons[status] || '❓'} ${status}`;
556
+ }
557
+ function formatDuration(ms) {
558
+ const minutes = Math.floor(ms / 60000);
559
+ if (minutes < 60)
560
+ return `${minutes}m`;
561
+ const hours = Math.floor(minutes / 60);
562
+ if (hours < 24)
563
+ return `${hours}h`;
564
+ return `${Math.floor(hours / 24)}d`;
565
+ }
566
+ export default issuesCommand;
567
+ //# sourceMappingURL=issues.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issues.js","sourceRoot":"","sources":["../../../src/commands/issues.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/commands/start.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAiC,MAAM,aAAa,CAAC;AAsZ1E,eAAO,MAAM,YAAY,EAAE,OA2C1B,CAAC;AAEF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/commands/start.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAiC,MAAM,aAAa,CAAC;AA2a1E,eAAO,MAAM,YAAY,EAAE,OA2C1B,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -175,9 +175,29 @@ const startAction = async (ctx) => {
175
175
  output.writeln();
176
176
  output.printInfo('Running in daemon mode. Use "claude-flow stop" to stop.');
177
177
  // Store PID for daemon management
178
- // TODO: Implement proper process forking with detached: true
179
178
  const daemonPidPath = path.join(cwd, '.claude-flow', 'daemon.pid');
180
179
  fs.writeFileSync(daemonPidPath, String(process.pid));
180
+ // Detach from parent process for true daemon behavior
181
+ if (process.platform !== 'win32') {
182
+ // Unix-like systems: create new session
183
+ try {
184
+ process.stdin.unref?.();
185
+ process.stdout.unref?.();
186
+ process.stderr.unref?.();
187
+ }
188
+ catch {
189
+ // Ignore errors if streams can't be unref'd
190
+ }
191
+ }
192
+ // Keep process alive in daemon mode
193
+ const keepAlive = setInterval(() => {
194
+ // Heartbeat - check if we should still be running
195
+ if (!fs.existsSync(daemonPidPath)) {
196
+ clearInterval(keepAlive);
197
+ process.exit(0);
198
+ }
199
+ }, 5000);
200
+ keepAlive.unref(); // Don't prevent process from exiting if no other work
181
201
  }
182
202
  const result = {
183
203
  swarmId: swarmResult.swarmId,