Claude Agent SDK adapter using the three-layer architecture.
import { createClaudeAdapter, ClaudeCodeAdapter } from ' @makaio/ai-adapters-claude-agent-sdk ' ;
import { AdapterSubjects } from ' @makaio/contracts ' ;
import { MakaioBus } from ' @makaio/bus-core ' ;
// Using the factory (recommended)
const adapter = await createClaudeAdapter ();
// Or instantiate directly
const directAdapter = new ClaudeCodeAdapter ();
await directAdapter . init ();
const result = await MakaioBus . request (AdapterSubjects . startAgent , {
adapterId: adapter . adapterId ,
initialMessage: ' Build a todo app ' ,
The adapter follows a three-layer architecture:
ClaudeCodeAdapter extends AIAdapter
-> creates via agentFactory
ClaudeCodeAgent extends AIAgent
-> creates via connectorFactory
ClaudeSdkConnector extends AIAgentConnector
Layer Class Responsibility Adapter ClaudeCodeAdapterLifecycle, agent factory, model listing Agent ClaudeCodeAgentEvent wiring, tool approval routing, usage tracking Connector ClaudeSdkConnectorSDK query lifecycle, session management, message handling
ClaudeSdkConnector emits SDK events to scoped bus (adapter:claude-code.*)
ClaudeCodeAgent processes and routes to global bus (agent.*)
Downstream consumers subscribe to normalized agent.* subjects
The adapter registers adapter:claude-code namespace with typed subjects:
Subject Description sdk.eventCatch-all for raw SDK events systemSystem messages (init, compact_boundary) assistantAssistant content blocks userUser messages and tool results resultQuery completion (success/error) stream_eventStreaming deltas turn.*Turn lifecycle events can_use_toolTool approval RPC
Export Description ClaudeCodeAdapterMain adapter class ClaudeCodeAgentAgent layer for event routing ClaudeSdkConnectorSDK connector layer
Export Description createClaudeAdapterFactory that creates and initializes adapter createTestConfigConformance test configuration registerToolApprovalHandlerSet up tool approval routing requestToolApprovalRequest approval for a tool call
Export Description ClaudeCodeConnectorNamespaceFull namespace definition ClaudeCodeConnectorSubjectsSubject definitions for typed subscriptions ClaudeCodeAdapterNameAdapter identifier constant
Export Description ClaudeCodeAdapterConfigAdapter configuration options ClaudeAgentConfigAgent configuration ClaudeCodeProviderConfigProvider-specific settings ClaudeCodeConnectorBusTyped scoped bus ClaudePermissionResultTool approval permission result ToolApprovalContextTool approval context type
Export Description ClaudeConnectorTurnTurn state machine ClaudeTurnStateTurn state type UserMessageQueueInternal connector queue from adapter core
Export Description ClaudeCodeProviderConfigSchemaZod schema for provider config CONTENT_BLOCK_HANDLERSDiscriminated handlers for content blocks
Runtime registration is contributed by @makaio/ai-adapters-claude-agent-sdk/server .
That entrypoint default-exports the claudeAgentSdkPackage MakaioExtension
descriptor, whose adapters[] entry wraps the internal definition from
src/definition.ts.
Name Friendly Name Reasoning Levels sonnetSonnet 4.5 none, low, medium, high, extra-high haikuHaiku 4.5 none, low, medium, high, extra-high opusOpus 4.6 none, low, medium, high, extra-high
tools - Tool use support
vision - Image/vision input
chatInTurnMessages - Multi-turn conversation
structuredOutput - Native structured output support through the Agent SDK
systemPrompt:override - Replace/set the system prompt
├── index.ts # Package exports
├── adapter.ts # ClaudeCodeAdapter
├── agent.ts # ClaudeCodeAgent
├── connector.ts # ClaudeSdkConnector
├── session.ts # Session abstraction
├── turn.ts # Turn state machine
├── config.ts # Configuration resolution
├── constants.ts # Adapter name constant
├── definition.ts # Internal adapter definition
├── package.ts # MakaioExtension package descriptor
├── provider.ts # Provider registration
├── provider.fetcher.ts # Model fetcher
├── server.ts # Server entrypoint exporting the package descriptor
├── schemas.ts # Provider config schemas
├── mcp-integration.ts # MCP tool integration
├── account-observation.ts # Account observation
├── account-observation-requester.ts
├── on-turn-complete.ts # Post-turn hooks
│ └── index.ts # Namespace + subjects
│ └── index.ts # Internal types
├── utils/ # Helper functions
└── __tests__/ # Unit tests + fixtures
Part of the Makaio AI Framework