buildApiMessages method

List<Map<String, dynamic>> buildApiMessages(
  1. List<ChatMessage> messages
)

Build API messages array from ChatMessage list

Note: System prompt should be added by the calling module if needed, not here to avoid duplication.

Implementation

List<Map<String, dynamic>> buildApiMessages(List<ChatMessage> messages) {
  final apiMessages = <Map<String, dynamic>>[];

  // Convert messages to OpenAI format
  for (final message in messages) {
    if (message.messageType is ToolResultMessage) {
      // Handle tool results as separate messages
      final toolResults = (message.messageType as ToolResultMessage).results;
      for (final result in toolResults) {
        apiMessages.add({
          'role': 'tool',
          'tool_call_id': result.id,
          'content': result.function.arguments.isNotEmpty
              ? result.function.arguments
              : message.content,
        });
      }
    } else {
      apiMessages.add(convertMessage(message));
    }
  }

  return apiMessages;
}