Per-batch state for an active ToolBatchStarted. Tracks how many
children have completed so the UI can emit the final · N/M ok
summary on ToolBatchCompleted.
One entry in message_queue. Replaces the prior String-only
representation so queued messages can carry their pasted images +
markers — otherwise queueing a message during streaming silently
drops attachments.
Plan vs Build execution mode. Plan is read-only exploration (no file
writes, no shell commands); Build is full execution with all tools.
Toggled by the Tab key (when the input buffer is empty) or the
/plan and /build slash commands.