validateToolCall static method
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;
}