Provider-capability map shape.
Each provider declares what it can do so ExAthena.Loop can choose the right
tool-call protocol and fall back gracefully when a provider lies about its
capabilities. Callers read the same map through ExAthena.capabilities/1 to
feature-detect optional capabilities (embeddings, model listing, resume)
before depending on them.
All keys are optional; missing keys are treated as false / nil.
Summary
Types
@type t() :: %{ optional(:native_tool_calls) => boolean(), optional(:self_contained_tools) => boolean(), optional(:streaming) => boolean(), optional(:embeddings) => boolean(), optional(:model_listing) => boolean(), optional(:json_mode) => boolean(), optional(:structured_output) => boolean(), optional(:max_tokens) => pos_integer(), optional(:supports_resume) => boolean(), optional(:supports_system_prompt) => boolean(), optional(:supports_temperature) => boolean(), optional(:compact_tool_schemas) => boolean() }