ClaudeCode.Message.SystemMessage.TaskNotification (ClaudeCode v0.36.3)
View SourceRepresents a task notification system message from the Claude CLI.
Emitted when a background task reaches a terminal state (completed, failed, or stopped). Contains the task output summary and final usage statistics.
Fields
:type- Always:system:subtype- Always:task_notification:task_id- Unique identifier for the task:tool_use_id- Associated tool use block ID (optional):status- Terminal status atom (:completed,:failed, or:stopped):output_file- Path to the task output file:summary- Human-readable summary of the task result:usage- Final token and tool usage stats (optional map withtotal_tokens,tool_uses,duration_ms):uuid- Message UUID:session_id- Session identifier
JSON Format
{
"type": "system",
"subtype": "task_notification",
"task_id": "task_abc123",
"tool_use_id": "toolu_abc123",
"status": "completed",
"output_file": "/tmp/task_abc123_output.json",
"summary": "Analysis complete: found 3 issues",
"usage": {
"total_tokens": 5000,
"tool_uses": 12,
"duration_ms": 15000
},
"uuid": "...",
"session_id": "..."
}
Summary
Functions
Creates a new TaskNotification from JSON data.
Type guard to check if a value is a TaskNotification.
Types
@type t() :: %ClaudeCode.Message.SystemMessage.TaskNotification{ output_file: String.t() | nil, session_id: String.t(), status: :completed | :failed | :stopped, subtype: :task_notification, summary: String.t() | nil, task_id: String.t(), tool_use_id: String.t() | nil, type: :system, usage: map() | nil, uuid: String.t() | nil }
Functions
Creates a new TaskNotification from JSON data.
The "status" string is parsed to an atom (:completed, :failed, or :stopped).
Examples
iex> TaskNotification.new(%{
...> "type" => "system",
...> "subtype" => "task_notification",
...> "task_id" => "task_abc",
...> "status" => "completed",
...> "output_file" => "/tmp/output.json",
...> "summary" => "Done",
...> "session_id" => "session-1"
...> })
{:ok, %TaskNotification{type: :system, subtype: :task_notification, status: :completed, ...}}
iex> TaskNotification.new(%{"type" => "assistant"})
{:error, :invalid_message_type}
Type guard to check if a value is a TaskNotification.