Typed SessionFileSystem error. Implementors may return this (wrapped in
anyhow::Error) so classify_fs_error resolves the class without string
matching. Each variant carries the human-facing message so the file tools
can keep surfacing the same text to the agent.
Semantic classification of an LLM provider error, assigned by the driver
at the provider boundary where the HTTP status and response body are still
available. Downstream consumers prefer this over re-parsing error strings;
LlmErrorKind::Other falls back to string classification
(classify_runtime_error_message) so untyped errors keep working.