Packages
claude_code
0.36.5
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/system_message/local_command_output.ex
defmodule ClaudeCode.Message.SystemMessage.LocalCommandOutput do
@moduledoc """
Represents a local command output message from the Claude CLI.
Emitted when the CLI produces output from a local command execution.
## Fields
- `:content` - The command output content string
- `:uuid` - Message UUID
- `:session_id` - Session identifier
## JSON Format
```json
{
"type": "system",
"subtype": "local_command_output",
"content": "command output here",
"uuid": "...",
"session_id": "..."
}
```
"""
use ClaudeCode.JSONEncoder
@enforce_keys [:type, :subtype, :session_id, :content]
defstruct [
:type,
:subtype,
:content,
:uuid,
:session_id
]
@type t :: %__MODULE__{
type: :system,
subtype: :local_command_output,
content: String.t(),
uuid: String.t() | nil,
session_id: String.t()
}
@doc """
Creates a new LocalCommandOutput from JSON data.
## Examples
iex> LocalCommandOutput.new(%{
...> "type" => "system",
...> "subtype" => "local_command_output",
...> "content" => "output text",
...> "session_id" => "session-1"
...> })
{:ok, %LocalCommandOutput{type: :system, subtype: :local_command_output, ...}}
iex> LocalCommandOutput.new(%{"type" => "assistant"})
{:error, :invalid_message_type}
"""
@spec new(map()) :: {:ok, t()} | {:error, atom()}
def new(
%{"type" => "system", "subtype" => "local_command_output", "content" => content, "session_id" => session_id} =
json
) do
{:ok,
%__MODULE__{
type: :system,
subtype: :local_command_output,
content: content,
uuid: json["uuid"],
session_id: session_id
}}
end
def new(%{"type" => "system", "subtype" => "local_command_output"}), do: {:error, :missing_required_fields}
def new(_), do: {:error, :invalid_message_type}
@doc """
Type guard to check if a value is a LocalCommandOutput.
"""
@spec local_command_output?(any()) :: boolean()
def local_command_output?(%__MODULE__{type: :system, subtype: :local_command_output}), do: true
def local_command_output?(_), do: false
end