21a7725a09
Three-piece architecture so subagents inherit async.enabled and bash.autoBackground.enabled instead of having both force-disabled: - Owner-routed delivery: AsyncJobManager gains registerDeliverySink / waitForOwnerJobs; every AgentSession registers a sink for its own agent id, so background job results inject into the owning agent's run. Owned deliveries with no live sink dead-letter (result retained on the job row) instead of misrouting into the first top-level session. - Quiescence barrier: a subagent's final yield with owner jobs still running/undelivered is a scheduling pause, not completion. The run driver notifies the model once (hub wait/cancel), settles owner work, and folds results in as async-result follow-ups; teardown cancels and awaits surviving jobs before isolation worktree capture/cleanup. - Steering soft channel: queued steering no longer hard-aborts non-interruptible tools; it aborts interruptible waits and raises a cooperative ToolCallContext.steeringSignal. The mid-batch watch runs for every batch, and auto-backgroundable bash backgrounds itself on steer so incoming messages inject promptly with no work lost.