generateDispatchCases function

String generateDispatchCases(
  1. List<Map<String, dynamic>> codeModeTools
)

Generates the _dispatchCodeModeToolCall method.

Implementation

String generateDispatchCases(List<Map<String, dynamic>> codeModeTools) {
  final cases = codeModeTools
      .map((t) {
        final name = t['name'] as String;
        return "      case '$name': result = await _$name(request); break;";
      })
      .join('\n');

  return '''
  dynamic _dispatchCodeModeToolCall(String toolName, Map<String, dynamic> args) async {
    final request = CallToolRequest(name: toolName, arguments: args);
    CallToolResult result;
    switch (toolName) {
      case 'search': result = await _search(request); break;
$cases
      default:
        throw StateError('Unknown tool: \$toolName');
    }

    final textContent = result.content.whereType<TextContent>().firstOrNull;
    if (textContent != null) {
      final text = textContent.text;
      try {
        return jsonDecode(text);
      } catch (_) {
        return text;
      }
    }
    return result.content.map((c) => c.toString()).join('\\n');
  }''';
}