Skip to content

@makaio/ai-adapters-claude-agent-sdk

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,
role: 'lead',
initialMessage: 'Build a todo app',
model: 'sonnet',
});

The adapter follows a three-layer architecture:

ClaudeCodeAdapter extends AIAdapter
-> creates via agentFactory
ClaudeCodeAgent extends AIAgent
-> creates via connectorFactory
ClaudeSdkConnector extends AIAgentConnector
LayerClassResponsibility
AdapterClaudeCodeAdapterLifecycle, agent factory, model listing
AgentClaudeCodeAgentEvent wiring, tool approval routing, usage tracking
ConnectorClaudeSdkConnectorSDK query lifecycle, session management, message handling
  1. ClaudeSdkConnector emits SDK events to scoped bus (adapter:claude-code.*)
  2. ClaudeCodeAgent processes and routes to global bus (agent.*)
  3. Downstream consumers subscribe to normalized agent.* subjects

The adapter registers adapter:claude-code namespace with typed subjects:

SubjectDescription
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
ExportDescription
ClaudeCodeAdapterMain adapter class
ClaudeCodeAgentAgent layer for event routing
ClaudeSdkConnectorSDK connector layer
ExportDescription
createClaudeAdapterFactory that creates and initializes adapter
createTestConfigConformance test configuration
registerToolApprovalHandlerSet up tool approval routing
requestToolApprovalRequest approval for a tool call
ExportDescription
ClaudeCodeConnectorNamespaceFull namespace definition
ClaudeCodeConnectorSubjectsSubject definitions for typed subscriptions
ClaudeCodeAdapterNameAdapter identifier constant
ExportDescription
ClaudeCodeAdapterConfigAdapter configuration options
ClaudeAgentConfigAgent configuration
ClaudeCodeProviderConfigProvider-specific settings
ClaudeCodeConnectorBusTyped scoped bus
ClaudePermissionResultTool approval permission result
ToolApprovalContextTool approval context type
ExportDescription
ClaudeConnectorTurnTurn state machine
ClaudeTurnStateTurn state type
UserMessageQueueInternal connector queue from adapter core
ExportDescription
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.

NameFriendly NameReasoning Levels
sonnetSonnet 4.5none, low, medium, high, extra-high
haikuHaiku 4.5none, low, medium, high, extra-high
opusOpus 4.6none, 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
src/
├── 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
├── namespace/
│ └── index.ts # Namespace + subjects
├── types/
│ └── index.ts # Internal types
├── utils/ # Helper functions
└── __tests__/ # Unit tests + fixtures

Part of the Makaio AI Framework