ChatToolCallRendererRegistry.fromToolkits constructor

ChatToolCallRendererRegistry.fromToolkits(
  1. Iterable<Toolkit> toolkits, {
  2. String? namespace,
  3. Map<ChatToolCallRendererKey, ChatToolCallRenderer> renderers = const <ChatToolCallRendererKey, ChatToolCallRenderer>{},
})

Implementation

factory ChatToolCallRendererRegistry.fromToolkits(
  Iterable<Toolkit> toolkits, {
  String? namespace,
  Map<ChatToolCallRendererKey, ChatToolCallRenderer> renderers = const <ChatToolCallRendererKey, ChatToolCallRenderer>{},
}) {
  final normalizedNamespace = namespace?.trim();
  final registrations = <ChatToolCallRendererKey, ChatToolCallRenderer>{};
  for (final toolkit in toolkits) {
    for (final tool in toolkit.tools) {
      if (tool is! WidgetTool) {
        continue;
      }
      final widgetTool = tool as WidgetTool;
      registrations[ChatToolCallRendererKey(
        namespace: normalizedNamespace == null || normalizedNamespace.isEmpty ? null : normalizedNamespace,
        toolkit: toolkit.name,
        tool: tool.name,
      )] = _WidgetToolCallRenderer(
        widgetTool.render,
      );
    }
  }
  registrations.addAll(renderers);
  return ChatToolCallRendererRegistry(renderers: registrations);
}