Attempts to repair a failed tool call. This implements a multi-layer repair strategy inspired by Opencode's experimental_repairToolCall:
Try to fix tool name case issues (e.g., "GetWeather" -> "get_weather")
If repair fails, route to an "invalid" tool for graceful handling
repair_tool_call(tool_call, tools, error_message = NULL)A repaired tool call list, or an "invalid" tool call if unrepairable.
A list with name, arguments, and optionally id.
A list of available Tool objects.
Optional error message from the failed call.