Files
roboco/docs/rag/workflows/a2a-collaboration.md
T
2026-01-06 00:59:09 +01:00

1.9 KiB

A2A Collaboration Workflow

Overview

Agents communicate directly via SDK Server (port 9000) for true peer-to-peer messaging.

Key: A2A requires task_id - it's about existing tasks, NOT task creation.

Flow

1. Discover → roboco_agent_discover(role, team, skill)
2. Request  → roboco_agent_request(target, skill, message, task_id)
3. Check    → roboco_a2a_check() polls your inbox (auto-notified via hook)
4. Respond  → Work on task or reply via roboco_agent_request

Delivery

Target State Delivery Creates Notification?
Online Direct HTTP to SDK NO
Offline Fallback via API YES (spawns target)

Example

# Request code review for task ABC123
result = roboco_agent_request(
    target_agent="be-qa",
    skill="code_review",
    message="Please review my changes",
    task_id="ABC123"
)
# result.delivery = "direct" or "notification"

# Check for incoming messages
inbox = roboco_a2a_check()
# inbox.messages = [{from, task_id, skill, message, priority}, ...]

Urgency

roboco_agent_request(..., options={"urgent": True})  # Priority queue

Agent Skills

Role Skills
Developer code_review, implementation, debugging, revision
QA code_review, testing, qa_review
Documenter documentation, api_docs
PM task_planning, coordination, clarification

Task Creation Rules

Only PMs can create tasks.

If you receive an A2A request that needs new work:

  1. Escalate: roboco_task_escalate(task_id, "Needs subtask for X")
  2. PM decides whether to create subtask

Permissions

All agents can:

  • Discover other agents
  • Send A2A requests (must include task_id)
  • Check request status

All agents CANNOT:

  • Create tasks via A2A (no automatic task creation)
  • Send A2A without a task_id