Tool Result
class ToolResult(val toolCallId: String, val toolName: String, val outputJson: JsonElement, val output: ToolResultOutput = ToolResultOutputs.toolResultOutputFromJson(outputJson), val modelOutput: ToolResultOutput = output, val isError: Boolean = with(ToolResultOutputs) { modelOutput.isToolResultError() }, val preliminary: Boolean = false, val providerMetadata: ProviderMetadata = ProviderMetadata.None) : StreamEvent(source)
Tool execution emitted a result. By default this is the final result — appended to the model's message log + dispatched to UI converters.
Tools whose executor is a kotlinx.coroutines.flow.Flow (built via StreamingTool { ... }) can emit intermediate progress snapshots before the final value; those land as ToolResult(preliminary = true). Preliminary results show in the UI (state stays OutputAvailable, preliminary flag set) but do NOT go to the model — the model only sees the final value once the Flow completes.
Constructors
Link copied to clipboard
constructor(toolCallId: String, toolName: String, outputJson: JsonElement, output: ToolResultOutput = ToolResultOutputs.toolResultOutputFromJson(outputJson), modelOutput: ToolResultOutput = output, isError: Boolean = with(ToolResultOutputs) { modelOutput.isToolResultError() }, preliminary: Boolean = false, providerMetadata: ProviderMetadata = ProviderMetadata.None)