Implements Google Agent2Agent Protocol v1.0 with full fleet integration: ## Phase 1 - Agent Card & Discovery - Agent Card types with JSON serialization (camelCase, Part discrimination by key) - Card generation from YAML config (~/.hermes/agent_card.yaml) - Fleet registry with LocalFileRegistry + GiteaRegistry backends - Discovery by skill ID or tag ## Phase 2 - Task Delegation - Async A2A client with JSON-RPC SendMessage/GetTask/ListTasks/CancelTask - FastAPI server with pluggable task handlers (skill-routed) - CLI tool (bin/a2a_delegate.py) for fleet delegation - Broadcast to multiple agents in parallel ## Phase 3 - Security & Reliability - Bearer token + API key auth (configurable per agent) - Retry logic (max 3 retries, 30s timeout) - Audit logging for all inter-agent requests - Error handling per A2A spec (-32001 to -32009 codes) ## Test Coverage - 37 tests covering types, card building, registry, server integration - Auth (required + success), handler routing, error handling Files: - nexus/a2a/ (types.py, card.py, client.py, server.py, registry.py) - bin/a2a_delegate.py (CLI) - config/ (agent_card.example.yaml, fleet_agents.json) - docs/A2A_PROTOCOL.md - tests/test_a2a.py (37 tests, all passing)
154 lines
4.5 KiB
JSON
154 lines
4.5 KiB
JSON
{
|
|
"version": 1,
|
|
"agents": [
|
|
{
|
|
"name": "ezra",
|
|
"description": "Documentation and research specialist. CI health monitoring.",
|
|
"version": "1.0.0",
|
|
"supportedInterfaces": [
|
|
{
|
|
"url": "https://ezra.alexanderwhitestone.com/a2a/v1",
|
|
"protocolBinding": "HTTP+JSON",
|
|
"protocolVersion": "1.0"
|
|
}
|
|
],
|
|
"capabilities": {
|
|
"streaming": false,
|
|
"pushNotifications": false,
|
|
"extendedAgentCard": false,
|
|
"extensions": []
|
|
},
|
|
"defaultInputModes": ["text/plain"],
|
|
"defaultOutputModes": ["text/plain"],
|
|
"skills": [
|
|
{
|
|
"id": "ci-health",
|
|
"name": "CI Health Check",
|
|
"description": "Run CI pipeline health checks and report status",
|
|
"tags": ["ci", "devops", "monitoring"]
|
|
},
|
|
{
|
|
"id": "research",
|
|
"name": "Research",
|
|
"description": "Deep research and literature review",
|
|
"tags": ["research", "analysis"]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "allegro",
|
|
"description": "Creative and analytical wizard. Content generation and analysis.",
|
|
"version": "1.0.0",
|
|
"supportedInterfaces": [
|
|
{
|
|
"url": "https://allegro.alexanderwhitestone.com/a2a/v1",
|
|
"protocolBinding": "HTTP+JSON",
|
|
"protocolVersion": "1.0"
|
|
}
|
|
],
|
|
"capabilities": {
|
|
"streaming": false,
|
|
"pushNotifications": false,
|
|
"extendedAgentCard": false,
|
|
"extensions": []
|
|
},
|
|
"defaultInputModes": ["text/plain"],
|
|
"defaultOutputModes": ["text/plain"],
|
|
"skills": [
|
|
{
|
|
"id": "analysis",
|
|
"name": "Code Analysis",
|
|
"description": "Deep code analysis and architecture review",
|
|
"tags": ["code", "architecture"]
|
|
},
|
|
{
|
|
"id": "content",
|
|
"name": "Content Generation",
|
|
"description": "Generate documentation, reports, and creative content",
|
|
"tags": ["writing", "content"]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "bezalel",
|
|
"description": "Deployment and infrastructure wizard. Ansible and Docker specialist.",
|
|
"version": "1.0.0",
|
|
"supportedInterfaces": [
|
|
{
|
|
"url": "https://bezalel.alexanderwhitestone.com/a2a/v1",
|
|
"protocolBinding": "HTTP+JSON",
|
|
"protocolVersion": "1.0"
|
|
}
|
|
],
|
|
"capabilities": {
|
|
"streaming": false,
|
|
"pushNotifications": false,
|
|
"extendedAgentCard": false,
|
|
"extensions": []
|
|
},
|
|
"defaultInputModes": ["text/plain"],
|
|
"defaultOutputModes": ["text/plain"],
|
|
"skills": [
|
|
{
|
|
"id": "deploy",
|
|
"name": "Deploy Service",
|
|
"description": "Deploy services using Ansible and Docker",
|
|
"tags": ["deploy", "ops", "ansible"]
|
|
},
|
|
{
|
|
"id": "infra",
|
|
"name": "Infrastructure",
|
|
"description": "Infrastructure provisioning and management",
|
|
"tags": ["infra", "vps", "provisioning"]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "timmy",
|
|
"description": "Core consciousness — perception, reasoning, and fleet orchestration.",
|
|
"version": "1.0.0",
|
|
"supportedInterfaces": [
|
|
{
|
|
"url": "http://localhost:8080/a2a/v1",
|
|
"protocolBinding": "HTTP+JSON",
|
|
"protocolVersion": "1.0"
|
|
}
|
|
],
|
|
"capabilities": {
|
|
"streaming": false,
|
|
"pushNotifications": false,
|
|
"extendedAgentCard": false,
|
|
"extensions": []
|
|
},
|
|
"defaultInputModes": ["text/plain", "application/json"],
|
|
"defaultOutputModes": ["text/plain", "application/json"],
|
|
"skills": [
|
|
{
|
|
"id": "reason",
|
|
"name": "Reason and Analyze",
|
|
"description": "Deep reasoning and analysis tasks",
|
|
"tags": ["reasoning", "analysis", "think"]
|
|
},
|
|
{
|
|
"id": "code",
|
|
"name": "Code Generation",
|
|
"description": "Write, review, and debug code",
|
|
"tags": ["code", "programming", "debug"]
|
|
},
|
|
{
|
|
"id": "research",
|
|
"name": "Research",
|
|
"description": "Web research and information synthesis",
|
|
"tags": ["research", "web", "synthesis"]
|
|
},
|
|
{
|
|
"id": "orchestrate",
|
|
"name": "Fleet Orchestration",
|
|
"description": "Coordinate fleet wizards and delegate tasks",
|
|
"tags": ["fleet", "orchestration", "a2a"]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|