generateDispatchCases function
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');
}''';
}