AgentEvent:
| { type: "step"; n: number }
| { type: "text"; delta: string }
| { type: "tool"; phase: "start" | "end"; name: string; ok?: boolean }
| { type: "client_tool"; name: string; args: Record<string, unknown> }
| { type: "done"; reason: "stop" | "max-steps" }
| { type: "error"; message: string }