//! The tool error taxonomy (ADR-0004).
use Error;
/// How a tool call failed, split into exactly two recovery paths (ADR-0004).
///
/// **Default everything to [`ToolError::Respond`].** Bad arguments, an unknown
/// tool, a not-found path, a failed command, a timeout — all are *soft*: they
/// become a `tool_result { is_error: true }` the model reads and retries from.
/// [`ToolError::Fatal`] is reserved for the rare case where the transcript itself
/// is unrecoverable; it aborts the turn with a non-zero exit.