Client Package
The @dexwox-labs/a2a-client
package provides client libraries for connecting to and interacting with A2A servers.
Overview
The client package includes three main client classes:
- AgentClient - For agent discovery and management
- MessageClient - For sending and receiving messages
- TaskClient - For task management and monitoring
Installation
npm install @dexwox-labs/a2a-client
# or
npm install @dexwox-labs/a2a-node # includes all packages
Quick Start
import { AgentClient, MessageClient, TaskClient } from '@dexwox-labs/a2a-client';
// Create clients
const agentClient = new AgentClient({ baseUrl: 'https://api.example.com' });
const messageClient = new MessageClient({ baseUrl: 'https://api.example.com' });
const taskClient = new TaskClient({ baseUrl: 'https://api.example.com' });
// Discover agents
const agents = await agentClient.resolveAgents();
// Send a message
const messageId = await messageClient.sendMessage([
{ type: 'text', content: 'Hello!' }
], agents[0].id);
// Create a task
const task = await taskClient.createTask({
name: 'process-data',
input: { data: 'example' }
});
Classes
AgentClient
AgentClient - Main class for agent discovery and management.
Key methods:
resolveAgents()
- Discover available agentsgetAgentCard(agentId)
- Get specific agent information
MessageClient
MessageClient - Handle message sending and streaming.
Key methods:
sendMessage(parts, agentId)
- Send messages to agentsstreamMessages(conversationId)
- Stream real-time messages
TaskClient
TaskClient - Manage task lifecycle and monitoring.
Key methods:
createTask(taskData)
- Create new tasksgetTask(taskId)
- Get task statuscancelTask(taskId)
- Cancel running tasks
Interfaces
MessageClientOptions
MessageClientOptions - Configuration options for MessageClient.
StreamOptions
StreamOptions - Options for message streaming.
Error Handling
All client methods can throw A2A-specific errors:
import { A2AError, TaskNotFoundError } from '@dexwox-labs/a2a-core';
try {
const task = await taskClient.getTask('invalid-id');
} catch (error) {
if (error instanceof TaskNotFoundError) {
console.log('Task not found');
} else if (error instanceof A2AError) {
console.log('A2A Error:', error.code, error.message);
}
}
Configuration
All clients accept common configuration options:
const clientConfig = {
baseUrl: 'https://api.example.com',
timeout: 30000,
retries: 3,
headers: {
'Authorization': 'Bearer token',
'User-Agent': 'MyApp/1.0.0'
}
};
const agentClient = new AgentClient(clientConfig);
const messageClient = new MessageClient(clientConfig);
const taskClient = new TaskClient(clientConfig);
Next Steps
- Client Guide - Comprehensive client usage guide
- Examples - Real-world client examples
- Protocol Specification - Understanding the A2A protocol