Packages
claude_code
0.34.0
0.36.5
0.36.4
0.36.3
0.36.2
0.36.1
0.36.0
0.35.0
0.34.0
0.33.1
0.32.2
0.32.0
0.31.0
0.30.0
0.29.0
0.28.0
0.27.0
0.26.0
0.25.0
0.24.0
0.23.0
0.22.0
0.21.0
0.20.0
0.19.0
0.18.0
0.17.0
0.16.0
0.15.0
0.14.0
0.13.3
0.13.2
0.13.1
0.13.0
0.12.0
0.11.0
0.10.0
0.9.0
0.8.1
0.8.0
0.7.0
0.6.0
0.5.0
0.4.0
0.3.0
0.2.0
0.1.0
Claude Agent SDK for Elixir – Build AI agents with Claude Code
Current section
Files
Jump to
Current section
Files
lib/claude_code/model/info.ex
defmodule ClaudeCode.Model.Info do
@moduledoc """
Information about an available model.
Returned as part of the initialization response from the CLI.
## Fields
* `:value` - Model identifier to use in API calls
* `:display_name` - Human-readable display name
* `:description` - Description of the model's capabilities
* `:supports_effort` - Whether this model supports effort levels
* `:supported_effort_levels` - Available effort levels (e.g., `[:low, :medium, :high]`)
* `:supports_adaptive_thinking` - Whether this model supports adaptive thinking
* `:supports_fast_mode` - Whether this model supports fast mode
* `:supports_auto_mode` - Whether this model supports auto mode (optional)
"""
use ClaudeCode.JSONEncoder
alias ClaudeCode.Model.Effort
defstruct [
:value,
:display_name,
:description,
supports_effort: false,
supported_effort_levels: [],
supports_adaptive_thinking: false,
supports_fast_mode: false,
supports_auto_mode: false
]
@type t :: %__MODULE__{
value: String.t(),
display_name: String.t(),
description: String.t(),
supports_effort: boolean(),
supported_effort_levels: [Effort.t()],
supports_adaptive_thinking: boolean(),
supports_fast_mode: boolean(),
supports_auto_mode: boolean()
}
@doc """
Creates a Model.Info from a JSON map.
## Examples
iex> ClaudeCode.Model.Info.new(%{"value" => "claude-sonnet-4-6", "displayName" => "Claude Sonnet 4.6", "description" => "Fast model"})
%ClaudeCode.Model.Info{value: "claude-sonnet-4-6", display_name: "Claude Sonnet 4.6", description: "Fast model", supports_effort: false, supported_effort_levels: [], supports_adaptive_thinking: false, supports_fast_mode: false}
"""
@spec new(map()) :: t()
def new(data) when is_map(data) do
%__MODULE__{
value: data["value"],
display_name: data["display_name"],
description: data["description"],
supports_effort: data["supports_effort"] || false,
supported_effort_levels: parse_effort_levels(data["supported_effort_levels"]),
supports_adaptive_thinking: data["supports_adaptive_thinking"] || false,
supports_fast_mode: data["supports_fast_mode"] || false,
supports_auto_mode: data["supports_auto_mode"] || false
}
end
defp parse_effort_levels(nil), do: []
defp parse_effort_levels(list) when is_list(list), do: Enum.map(list, &Effort.parse/1)
end