genUiTool method

GenUiToolHandle genUiTool(
  1. GenUiChatTarget chat, {
  2. required ActionBlockTarget actionBlock,
  3. String loadingMessage = 'Processing...',
  4. String description = '',
})

Registers an app-level action block as a GenUI tool on a chat widget.

The target chat is resolved by name after pages and components compile, so the name must match exactly one GenUiChat(...) in the app.

Implementation

GenUiToolHandle genUiTool(
  GenUiChatTarget chat, {
  required ActionBlockTarget actionBlock,
  String loadingMessage = 'Processing...',
  String description = '',
}) {
  final chatName = chat.chatName;
  final actionBlockName = actionBlock.name;
  final duplicate = _genUiTools.any(
    (tool) =>
        tool.chatName == chatName && tool.actionBlock.name == actionBlockName,
  );
  if (duplicate) {
    throw ArgumentError(
      'GenUI tool "$actionBlockName" is already registered on "$chatName".',
    );
  }
  _genUiTools.add(
    GenUiToolDeclaration(
      chatName: chatName,
      actionBlock: actionBlock,
      loadingMessage: loadingMessage,
      description: description,
    ),
  );
  return GenUiToolHandle(
    chatName: chatName,
    actionBlockName: actionBlockName,
  );
}