Parent: #355
Wrap stream consumption loops with tokio::select! on shutdown signal:
process_response_streaming() — chunk stream loop
process_response_native_tools() — tool loop iterations
After early break: flush accumulated chunks, persist partial response.
Reuse: shutdown_signal() at crates/zeph-core/src/agent/mod.rs:803