Declares model capabilities so adapters serialize correctly on the first attempt.
Every model gets a profile. Unknown models get default/0 which assumes
the weakest common denominator (no system role, XML text tool calls).
Summary
Types
@type image_response_mode() :: :native_b64 | :request_b64
@type t() :: %Arcanum.ModelProfile{ image_response_mode: image_response_mode(), max_context: pos_integer(), max_images_per_message: pos_integer(), max_outputs_per_request: pos_integer(), preserve_reasoning: boolean(), provider_routing: map() | nil, reasoning_field: atom() | nil, supported_formats: [String.t()], supported_qualities: [String.t()], supported_sizes: [String.t()], supports_image_generation: boolean(), supports_style: boolean(), supports_system_role: boolean(), supports_tools: boolean(), supports_video_generation: boolean(), supports_vision: boolean(), temperature_not_supported: boolean(), thinking_param: map() | nil, tool_call_format: tool_call_format(), uses_max_completion_tokens: boolean() }
@type tool_call_format() :: :native | :xml_text