Packages
claude_code
0.36.3
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/message/tool_use_summary_message.ex
defmodule ClaudeCode.Message.ToolUseSummaryMessage do
@moduledoc """
Represents a tool use summary message from the Claude CLI.
Emitted as a summary of tool usage in a conversation, providing a
human-readable description of what one or more tools did.
## Fields
- `:summary` - Human-readable summary of the tool usage
- `:preceding_tool_use_ids` - List of tool use IDs this summary covers
- `:uuid` - Message UUID
- `:session_id` - Session identifier
## JSON Format
```json
{
"type": "tool_use_summary",
"summary": "Read 3 files and edited 1 file",
"preceding_tool_use_ids": ["toolu_abc", "toolu_def"],
"uuid": "...",
"session_id": "..."
}
```
"""
use ClaudeCode.JSONEncoder
@enforce_keys [:type, :summary, :session_id]
defstruct [
:type,
:summary,
:uuid,
:session_id,
preceding_tool_use_ids: []
]
@type t :: %__MODULE__{
type: :tool_use_summary,
summary: String.t(),
preceding_tool_use_ids: [String.t()],
uuid: String.t() | nil,
session_id: String.t()
}
@doc """
Creates a new ToolUseSummaryMessage from JSON data.
## Examples
iex> ToolUseSummaryMessage.new(%{
...> "type" => "tool_use_summary",
...> "summary" => "Read 3 files",
...> "session_id" => "session-1"
...> })
{:ok, %ToolUseSummaryMessage{type: :tool_use_summary, ...}}
iex> ToolUseSummaryMessage.new(%{"type" => "assistant"})
{:error, :invalid_message_type}
"""
@spec new(map()) :: {:ok, t()} | {:error, atom()}
def new(%{"type" => "tool_use_summary", "summary" => summary, "session_id" => session_id} = json) do
{:ok,
%__MODULE__{
type: :tool_use_summary,
summary: summary,
preceding_tool_use_ids: json["preceding_tool_use_ids"] || [],
uuid: json["uuid"],
session_id: session_id
}}
end
def new(%{"type" => "tool_use_summary"}), do: {:error, :missing_required_fields}
def new(_), do: {:error, :invalid_message_type}
end