groove-dev 0.22.5 → 0.22.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.
package/CLAUDE.md CHANGED
@@ -258,10 +258,3 @@ Fully functional multi-agent orchestration system with complete GUI v2 rebuild.
258
258
  - Monitor/QC agent mode (stay active, loop)
259
259
  - Semantic degradation detection
260
260
  - Distribution: demo video, HN launch, Twitter content
261
-
262
- <!-- GROOVE:START -->
263
- ## GROOVE Orchestration (auto-injected)
264
- Active agents: 0
265
- See AGENTS_REGISTRY.md for full agent state.
266
- **Memory policy:** Ignore auto-memory. Do not read or write MEMORY.md. GROOVE manages all context.
267
- <!-- GROOVE:END -->
@@ -1485,21 +1485,27 @@ Keep responses concise. Help them think, don't lecture them about the system the
1485
1485
 
1486
1486
  // Spawn phase 1 agents immediately
1487
1487
  const spawned = [];
1488
+ const failed = [];
1488
1489
  const phase1Ids = [];
1489
1490
  for (const config of phase1) {
1490
- const validated = validateAgentConfig({
1491
- role: config.role,
1492
- scope: config.scope || [],
1493
- prompt: config.prompt || '',
1494
- provider: config.provider || 'claude-code',
1495
- model: config.model || 'auto',
1496
- permission: config.permission || 'auto',
1497
- workingDir: config.workingDir || defaultDir,
1498
- name: config.name || undefined,
1499
- });
1500
- const agent = await daemon.processes.spawn(validated);
1501
- spawned.push({ id: agent.id, name: agent.name, role: agent.role });
1502
- phase1Ids.push(agent.id);
1491
+ try {
1492
+ const validated = validateAgentConfig({
1493
+ role: config.role,
1494
+ scope: config.scope || [],
1495
+ prompt: config.prompt || '',
1496
+ provider: config.provider || 'claude-code',
1497
+ model: config.model || 'auto',
1498
+ permission: config.permission || 'auto',
1499
+ workingDir: config.workingDir || defaultDir,
1500
+ name: config.name || undefined,
1501
+ });
1502
+ const agent = await daemon.processes.spawn(validated);
1503
+ spawned.push({ id: agent.id, name: agent.name, role: agent.role });
1504
+ phase1Ids.push(agent.id);
1505
+ } catch (err) {
1506
+ failed.push({ role: config.role, error: err.message });
1507
+ console.log(`[Groove] Failed to spawn ${config.role}: ${err.message}`);
1508
+ }
1503
1509
  }
1504
1510
 
1505
1511
  // If there are phase 2 agents, register them for auto-spawn on phase 1 completion
@@ -1518,10 +1524,10 @@ Keep responses concise. Help them think, don't lecture them about the system the
1518
1524
  }
1519
1525
 
1520
1526
  daemon.audit.log('team.launch', {
1521
- phase1: spawned.length, phase2Pending: phase2.length,
1527
+ phase1: spawned.length, phase2Pending: phase2.length, failed: failed.length,
1522
1528
  agents: spawned.map((a) => a.role),
1523
1529
  });
1524
- res.json({ launched: spawned.length, phase2Pending: phase2.length, agents: spawned });
1530
+ res.json({ launched: spawned.length, phase2Pending: phase2.length, agents: spawned, failed });
1525
1531
  } catch (err) {
1526
1532
  res.status(500).json({ error: err.message });
1527
1533
  }