validateToolCall static method

bool validateToolCall(
  1. ToolCall toolCall,
  2. Tool toolDefinition
)

Validate a tool call against its tool definition

toolCall - The tool call to validate toolDefinition - The tool definition to validate against

Returns true if valid, throws ToolValidationError if invalid

Implementation

static bool validateToolCall(ToolCall toolCall, Tool toolDefinition) {
  // Check if tool names match
  if (toolCall.function.name != toolDefinition.function.name) {
    throw ToolValidationError(
      'Tool name mismatch: expected ${toolDefinition.function.name}, got ${toolCall.function.name}',
      toolName: toolDefinition.function.name,
    );
  }

  // Parse and validate arguments
  Map<String, dynamic> arguments;
  try {
    arguments =
        jsonDecode(toolCall.function.arguments) as Map<String, dynamic>;
  } catch (e) {
    throw ToolValidationError(
      'Invalid JSON in tool arguments: $e',
      toolName: toolCall.function.name,
    );
  }

  // Validate parameters
  final validationErrors = validateParameters(
    arguments,
    toolDefinition.function.parameters,
  );

  if (validationErrors.isNotEmpty) {
    throw ToolValidationError(
      'Parameter validation failed: ${validationErrors.join(', ')}',
      toolName: toolCall.function.name,
    );
  }

  return true;
}