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 Event | Normalized Event | Notes |
|---|---|---|
| message_start | run_started | Signals execution has begun |
| text_delta | message_streamed | Each token-level delta streams out |
| tool_use_start | tool_call_started | Tool invocation begins |
| message_delta | token_usage_updated | Final usage stats and stop reason |
| message_stop | message_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 viaclaude loginsession or theANTHROPIC_API_KEYenvironment 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
Returns a specification to start this module under a supervisor.
See Supervisor.
@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 viaclaude loginor env var).:permission_mode- Optional. Normalized permission mode (seeAgentSessionManager.PermissionMode).:sdk_module- Optional. Mock SDK module for testing.:sdk_pid- Optional. Mock SDK process for testing.:name- Optional. GenServer name for registration.
@spec stop(GenServer.server()) :: :ok
Stops the adapter.