0.1.1 • Published 5 months ago
@dexwox-labs/a2a-client v0.1.1
@dexwox-labs/a2a-client
A TypeScript client library for interacting with agents implementing the Agent-to-Agent (A2A) protocol.
This package implements the A2A protocol specification, enabling seamless agent communication. Developed by Dexwox Innovations Pvt Ltd to provide developers with a robust TypeScript implementation of the standard.
Features
- HTTP and WebSocket client implementations
- Circuit breaker pattern for resilient requests
- Error handling and retry mechanisms
- Type-safe API interactions
- Task lifecycle management
- Message streaming support
Installation
npm install @dexwox-labs/a2a-client
# or
pnpm add @dexwox-labs/a2a-client
# or use the unified package
npm install @dexwox-labs/a2a-node
Quick Start
// Import from the client package
import { AgentClient, MessageClient, TaskClient } from '@dexwox-labs/a2a-client';
// Or import from the unified package
// import { AgentClient, MessageClient, TaskClient } from '@dexwox-labs/a2a-node';
// Initialize clients
const agentClient = new AgentClient('http://localhost:3000');
const messageClient = new MessageClient('http://localhost:3000');
const taskClient = new TaskClient('http://localhost:3000');
// Example usage
const agent = await agentClient.getAgentCard();
const task = await taskClient.createTask({...});
const messages = await messageClient.getMessages();
Core Components
AgentClient
getAgentCard()
: Retrieves agent metadatagetCapabilities()
: Lists agent capabilities
MessageClient
sendMessage()
: Sends a new messagegetMessages()
: Retrieves message historystreamMessages()
: WebSocket message streaming
TaskClient
createTask()
: Starts a new taskgetTask()
: Gets task statusupdateTask()
: Updates task progresscancelTask()
: Cancels a running task
Configuration
Client Options
Parameter | Type | Description |
---|---|---|
baseUrl | string | Agent server URL |
timeout | number | Request timeout in ms |
retries | number | Number of retry attempts |
circuitBreaker | object | Circuit breaker config |
Environment Variables
A2A_API_URL
: Base URL for agent serverA2A_API_TIMEOUT
: Request timeout (default: 5000ms)
Error Handling
The client provides standardized error classes:
NetworkError
: Connection issuesTimeoutError
: Request timeoutCircuitBreakerError
: Circuit openApiError
: Server-side errors
Testing
Run tests with:
cd packages/client
pnpm test
Generate coverage report:
pnpm test -- --coverage
Examples
Basic Usage
const client = new AgentClient('http://localhost:3000', {
timeout: 10000,
retries: 3
});
try {
const agent = await client.getAgentCard();
console.log(agent);
} catch (err) {
if (err instanceof TimeoutError) {
// Handle timeout
}
}
WebSocket Streaming
const messageClient = new MessageClient('http://localhost:3000');
const unsubscribe = messageClient.streamMessages((message) => {
console.log('New message:', message);
});
// Later...
unsubscribe();
Contributing
See CONTRIBUTING.md for guidelines.