ClaudeCodeSDK.Session (claude_code_sdk v0.2.2)

View Source

Helper 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

calculate_cost(messages)

@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

count_turns(messages)

@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

extract_model(messages)

@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"

extract_session_id(messages)

@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"

get_summary(messages)

@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..."