AgentSessionManager.Adapters.ClaudeAdapter (AgentSessionManager v0.8.0)

Copy Markdown View Source

Provider adapter for Claude (Anthropic) AI models.

This adapter implements the ProviderAdapter behaviour and provides:

  • Streaming message execution with real-time event emission
  • Tool use support with proper event mapping
  • Interrupt/cancel capability
  • Accurate capability advertisement

Event Mapping

Claude Streaming API events are mapped to normalized events as follows:

Streaming EventNormalized EventNotes
message_startrun_startedSignals execution has begun
text_deltamessage_streamedEach token-level delta streams out
tool_use_starttool_call_startedTool invocation begins
message_deltatoken_usage_updatedFinal usage stats and stop reason
message_stopmessage_received,Emits full message then completion
run_completed

Usage

{:ok, adapter} = ClaudeAdapter.start_link(api_key: "sk-ant-api03-...")
{:ok, capabilities} = ClaudeAdapter.capabilities(adapter)

{:ok, session} = Session.new(%{agent_id: "my-agent"})
{:ok, run} = Run.new(%{session_id: session.id, input: %{messages: [...]}})

{:ok, result} = ClaudeAdapter.execute(adapter, run, session,
  event_callback: fn event -> IO.inspect(event) end
)

Configuration

Optional:

  • :model - Model to use (default: "claude-haiku-4-5-20251001")
  • :api_key - Anthropic API key (optional; the SDK authenticates via claude login session or the ANTHROPIC_API_KEY environment variable)
  • :sdk_module - SDK module for testing (default: real SDK)
  • :sdk_pid - SDK process for testing

Summary

Functions

Returns a specification to start this module under a supervisor.

Starts the Claude adapter.

Stops the adapter.

Functions

child_spec(init_arg)

Returns a specification to start this module under a supervisor.

See Supervisor.

start_link(opts)

@spec start_link(keyword()) :: GenServer.on_start()

Starts the Claude adapter.

Options

  • :model - Optional. The model to use (default: claude-haiku-4-5-20251001)
  • :api_key - Optional. Anthropic API key (SDK authenticates via claude login or env var).
  • :permission_mode - Optional. Normalized permission mode (see AgentSessionManager.PermissionMode).
  • :sdk_module - Optional. Mock SDK module for testing.
  • :sdk_pid - Optional. Mock SDK process for testing.
  • :name - Optional. GenServer name for registration.

stop(server)

@spec stop(GenServer.server()) :: :ok

Stops the adapter.