ClaudeCodeSDK.Session (claude_code_sdk v0.2.2)
View SourceHelper functions for working with Claude sessions.
Provides utilities to extract session metadata from message lists.
Summary
Functions
Calculates total cost from messages.
Counts conversation turns (assistant messages).
Extracts the model used from messages.
Extracts the session ID from a list of messages.
Gets a summary of the conversation.
Functions
@spec calculate_cost([ClaudeCodeSDK.Message.t()]) :: float()
Calculates total cost from messages.
Examples
messages = ClaudeCodeSDK.query("Analyze code") |> Enum.to_list()
cost = ClaudeCodeSDK.Session.calculate_cost(messages)
# => 0.025
@spec count_turns([ClaudeCodeSDK.Message.t()]) :: non_neg_integer()
Counts conversation turns (assistant messages).
Examples
messages = ClaudeCodeSDK.query("Multi-step task") |> Enum.to_list()
turns = ClaudeCodeSDK.Session.count_turns(messages)
# => 5
@spec extract_model([ClaudeCodeSDK.Message.t()]) :: String.t() | nil
Extracts the model used from messages.
Examples
messages = ClaudeCodeSDK.query("Hello") |> Enum.to_list()
model = ClaudeCodeSDK.Session.extract_model(messages)
# => "claude-sonnet-4-5-20250929"
@spec extract_session_id([ClaudeCodeSDK.Message.t()]) :: String.t() | nil
Extracts the session ID from a list of messages.
Examples
messages = ClaudeCodeSDK.query("Hello") |> Enum.to_list()
session_id = ClaudeCodeSDK.Session.extract_session_id(messages)
# => "550e8400-e29b-41d4-a716-446655440000"
@spec get_summary([ClaudeCodeSDK.Message.t()]) :: String.t()
Gets a summary of the conversation.
Returns first assistant message (truncated to 200 chars).
Examples
messages = ClaudeCodeSDK.query("Build feature") |> Enum.to_list()
summary = ClaudeCodeSDK.Session.get_summary(messages)
# => "I'll help you build that feature. First, let me..."