getCompletedResults method
Get completed results that haven't been yielded yet.
Implementation
List<MessageUpdate> getCompletedResults() {
if (_discarded) return [];
final results = <MessageUpdate>[];
for (final tool in _tools) {
// Yield pending progress
while (tool.pendingProgress.isNotEmpty) {
results.add(
MessageUpdate(
message: tool.pendingProgress.removeAt(0),
newContext: _toolUseContext,
),
);
}
if (tool.status == ToolStatus.yielded) continue;
if (tool.status == ToolStatus.completed && tool.results != null) {
tool.status = ToolStatus.yielded;
for (final message in tool.results!) {
results.add(
MessageUpdate(message: message, newContext: _toolUseContext),
);
}
_markToolUseAsComplete(_toolUseContext, tool.id);
} else if (tool.status == ToolStatus.executing &&
!tool.isConcurrencySafe) {
break;
}
}
return results;
}