executeClientToolCall method

Future<Content> executeClientToolCall(
  1. AgentClientToolCallRequested request
)

Implementation

Future<Content> executeClientToolCall(AgentClientToolCallRequested request) async {
  for (final toolkit in _clientToolkits.values) {
    final hasTool = toolkit.tools.any((tool) => tool.name == request.tool);
    if (!hasTool) {
      continue;
    }
    try {
      final output = await toolkit.execute(
        const ToolContext(),
        request.tool,
        ToolContentInput(JsonContent(json: Map<String, dynamic>.from(request.arguments))),
      );
      if (output is ToolContentOutput) {
        return output.content;
      }
      return ErrorContent(text: "Client toolkit '${request.tool}' returned a streaming response, which is not supported.");
    } catch (error) {
      return ErrorContent(text: "Client toolkit '${request.tool}' failed: $error");
    }
  }
  return ErrorContent(text: "Client toolkit '${request.tool}' is not registered.");
}