Tool UI
One tool call's full lifecycle in the UI. State progresses InputStreaming → InputAvailable → OutputAvailable (or Error, or ApprovalRequired when the loop is paused on user decision). Component renderers can show the same card across states ("Looking up lineup..." → "Found 12 sets" → final card).
Per v6 naming: this is the equivalent of part.type === 'tool-X' in TypeScript. We discriminate on toolName string at the render site since Kotlin lacks TypeScript's literal-type narrowing.
Constructors
Properties
Approval identity for ApprovalRequested/ApprovalResponded states — carried so a UI round-trip (convert to model messages, resume) preserves the approval's correlation key. Null outside the approval states. Mirrors v6's approval.id.
True when output is an intermediate snapshot from a streamingTool executor and a final value is still pending. False (default) for one-shot tool outputs and for the final emission from a streaming tool. UI uses this to show a "loading more" indicator on a still-incomplete card without collapsing back to InputAvailable. Mirrors v6's preliminary?: boolean on output-available.