cae4ca3c0f
The parent agent's turn ends right after `agent_spawn` returns `status: Running`, leaving children to finish in the background with no path back into the parent's inference loop. The model has to be poked by a human before it resumes the plan. Wire a wakeup channel from `run_subagent_task` into the engine's turn loop. When the model produces no more tool calls but direct children are still running, the loop now blocks on the next completion (with cancel and steer escape hatches), drains all pending sentinels, and re-enters inference with the existing `<deepseek:subagent.done>` elements injected as user messages. This fulfils the contract already documented in `prompts/base.md` (lines 189-205): the parent is promised it'll see the sentinel when a child finishes. The async `agent_spawn` semantics from #239 are preserved — only direct children fire on the channel (gated by `spawn_depth == 1`), so grandchildren spawned recursively don't flood the parent.