Documentation menu

Concepts

Adapters

An adapter is the bridge between ARIA and the agent you're testing. It speaks the agent's protocol so the conversation runner doesn't have to.

The contract

Every adapter implements a small BaseAdapter lifecycle:

connect()      → open a session with the agent
sendMessage()  → send the customer's message
receive()      → get the agent's reply (null on timeout)
disconnect()   → close the session

receive() returns an AdapterMessage (role, content, and metadata), returns null on timeout, and throws a SessionEndedError when the agent closes the session. That’s the whole surface — everything else (scoring, transcripts, reports) is handled for you.

Built-in adapters

ProviderChannel
Amazon Connect (chat & voice / WebRTC)chat, voice
AWS Lex V2chat
Azure Direct Line / GitHub Copilot Chatchat
Azure OpenAI Agents Runtimechat
Strands / AgentCorechat
OpenAPI 3.x HTTP endpointchat
Generic HTTP / WebSocketchat, voice

Adding a new adapter

  1. Create src/adapters/my-platform.ts implementing BaseAdapter (connect → sendMessage → receive → disconnect).
  2. Return an AdapterMessage from receive(); throw SessionEndedError on close and return null on timeout.
  3. Register the provider in src/conversation/runner.ts (normalizeProvider()).
  4. Add a CLI wrapper at src/cli/run-my-platform.ts so it gets an npm run cli:* entry.

Contributions are welcome — see the contributing guide.