streamCallTool method
POST /tools/{toolId}/streamCall
Implementation
Future<void> streamCallTool(
String toolId,
FunctionCall functionCall, {
required void Function(String event, Map<String, dynamic> data) onEvent,
void Function(Object error, StackTrace stackTrace)? onError,
}) async {
try {
Stream<String> sseStream = await toolSse.request(
'/${toolId}/streamCall',
requestBody: functionCall.toJson(),
);
sseStream.listen(
(data) => SseClient.parse(data, onEvent),
onError: (error, stackTrace) {
onError?.call(_normalizeError(error), stackTrace);
},
cancelOnError: true,
);
} catch (error, stackTrace) {
final normalized = _normalizeError(error);
if (onError != null) {
onError(normalized, stackTrace);
return;
}
if (identical(normalized, error)) rethrow;
Error.throwWithStackTrace(normalized, stackTrace);
}
}