groove-dev 0.26.31 → 0.26.32

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.
@@ -1822,14 +1822,35 @@ Keep responses concise. Help them think, don't lecture them about the system the
1822
1822
  );
1823
1823
 
1824
1824
  if (existing && prompt) {
1825
- // Instruct the existing agent instead of spawning a new one
1825
+ // Reuse existing agent: kill the old process and spawn fresh with full context.
1826
+ // This ensures the agent gets intro context, project map, and design system —
1827
+ // resume() bypasses all of that and the agent spawns blind.
1826
1828
  try {
1827
- const newAgent = await daemon.processes.resume(existing.id, prompt);
1829
+ // Kill old process if running
1830
+ if (existing.status === 'running' || existing.status === 'starting') {
1831
+ try { await daemon.processes.kill(existing.id); } catch { /* already dead */ }
1832
+ }
1833
+ // Remove old entry
1834
+ daemon.registry.remove(existing.id);
1835
+ daemon.locks.release(existing.id);
1836
+
1837
+ // Spawn fresh with the same name/team but new prompt + full context
1838
+ const validated = validateAgentConfig({
1839
+ role: existing.role,
1840
+ scope: config.scope || existing.scope || [],
1841
+ prompt,
1842
+ provider: config.provider || existing.provider || undefined,
1843
+ model: config.model || existing.model || 'auto',
1844
+ permission: config.permission || existing.permission || 'auto',
1845
+ workingDir: existing.workingDir || projectWorkingDir,
1846
+ name: existing.name,
1847
+ });
1848
+ validated.teamId = defaultTeamId;
1849
+ const newAgent = await daemon.processes.spawn(validated);
1828
1850
  reused.push({ id: newAgent.id, name: newAgent.name, role: newAgent.role, reusedFrom: existing.name });
1829
1851
  phase1Ids.push(newAgent.id);
1830
1852
  daemon.audit.log('team.reuse', { oldId: existing.id, newId: newAgent.id, role: config.role });
1831
1853
  } catch (err) {
1832
- // Reuse failed — fall through to spawn
1833
1854
  failed.push({ role: config.role, error: `reuse failed: ${err.message}` });
1834
1855
  }
1835
1856
  } else {