pushBlockEndEvent function
void
pushBlockEndEvent(
- AssistantMessageEventStream eventStream,
- List<
StreamingBlock> blocks, - StreamingBlock block,
- AssistantMessage snapshot(),
Pushes the end event for block (text, thinking, or tool call) at its
position in blocks.
Shared by the adapters: pi fires text_end / thinking_end /
toolcall_end identically across providers.
Implementation
void pushBlockEndEvent(
AssistantMessageEventStream eventStream,
List<StreamingBlock> blocks,
StreamingBlock block,
AssistantMessage Function() snapshot,
) {
final index = blocks.indexOf(block);
if (index == -1) {
return;
}
switch (block) {
case TextStreamingBlock():
eventStream.push(
TextEndEvent(
contentIndex: index,
content: block.text.toString(),
partial: snapshot(),
),
);
case ThinkingStreamingBlock():
eventStream.push(
ThinkingEndEvent(
contentIndex: index,
content: block.thinking.toString(),
partial: snapshot(),
),
);
case ToolCallStreamingBlock():
block.finish();
final partial = snapshot();
eventStream.push(
ToolCallEndEvent(
contentIndex: index,
toolCall: partial.content[index] as ToolCall,
partial: partial,
),
);
}
}