ClaudeCode.Types (ClaudeCode v0.1.0)

View Source

Type definitions for the ClaudeCode SDK.

These types match the official Claude SDK schema for messages returned from the CLI with --output-format stream-json.

Summary

Types

mcp_server()

@type mcp_server() :: %{name: String.t(), status: String.t()}

message()

@type message() :: %{
  id: String.t(),
  type: :message,
  role: role(),
  content: [ClaudeCode.Content.t()],
  model: model(),
  stop_reason: stop_reason(),
  stop_sequence: String.t() | nil,
  usage: usage()
}

message_content()

@type message_content() :: String.t() | [ClaudeCode.Content.t()]

message_param()

@type message_param() :: %{content: message_content(), role: role()}

model()

@type model() :: String.t()

permission_mode()

@type permission_mode() :: :default | :accept_edits | :bypass_permissions | :plan

result_subtype()

@type result_subtype() :: :success | :error_max_turns | :error_during_execution

role()

@type role() :: :user | :assistant

server_tool_usage()

@type server_tool_usage() :: %{web_search_requests: non_neg_integer()}

session_id()

@type session_id() :: String.t()

stop_reason()

@type stop_reason() :: :end_turn | :max_tokens | :stop_sequence | :tool_use | nil

usage()

@type usage() :: %{
  input_tokens: non_neg_integer(),
  output_tokens: non_neg_integer(),
  cache_creation_input_tokens: non_neg_integer() | nil,
  cache_read_input_tokens: non_neg_integer() | nil,
  server_tool_use: server_tool_usage() | nil
}