Canal principal
ws://localhost:3000/ws/a2a
Ese endpoint no se abre como pagina web. Lo consume JavaScript desde el monitor, Angular o un proceso externo.
Esta vista explica como el servidor A2A registra muchos agentes, asigna direcciones temporales, publica directorio y enruta mensajes directos por WebSocket.
ws://localhost:3000/ws/a2a
Ese endpoint no se abre como pagina web. Lo consume JavaScript desde el monitor, Angular o un proceso externo.
multiples agentes
El monitor trae controles para A/B, pero el servidor acepta cualquier agente con ID valido y le asigna una direccion nueva por conexion.
| Parte | Que resuelve | Comandos |
|---|---|---|
| Directory | Lista agentes disponibles y conectados con direccion temporal unica. | a2a.directory.request |
| Bridge | Permite que un agente escriba a otro por connectionId. |
a2a.message.direct |
| Decision Agent | Recomienda que agentes usar para cumplir un proyecto. | a2a.decision.advise |
Envia un comando o texto desde el monitor.
chat.send
Valida el mensaje, consulta directorio y cambia actividad.
state
Procesa segun su especialidad y puede pedir ayuda a otro agente.
directMessages
{
"type": "agent.start",
"agent": {
"id": "backend-01",
"name": "Backend 01",
"description": "Especialista en backend",
"instruction": "Solo resuelve temas de backend.",
"delayMs": 5000
}
}
{
"type": "state",
"state": {
"runtime": {},
"activity": {},
"directory": {},
"logs": [],
"directMessages": []
}
}
A2A significa Agent to Agent: un agente no trabaja aislado. Primero entiende la tarea, despues revisa su propia especialidad y, si detecta que una parte no le corresponde, consulta el directorio para encontrar otro agente que pueda ayudar.
En este demo el servidor actua como puente A2A. Los agentes no se hablan directamente por sockets separados; ambos se registran en el puente y el puente mantiene el estado comun: quien existe, quien esta conectado, que hace cada uno y que mensajes se enviaron.
La idea central: el usuario escribe a un agente, ese agente consulta el directorio, decide si necesita apoyo y el sistema registra esa colaboracion para que sea visible en chat, tabla y logs.
chat.send.description y la instruction de cada agente disponible.directoryQueries.runtime: si cada agente esta online o down.activity: si esta idle, procesando, enviando o recibiendo.directory.available: todos los agentes registrados como posibles.directory.connected: agentes online con connectionId temporal.directMessages: mensajes entre usuario, agente principal y agente auxiliar.logs: detalle tecnico de cada evento del puente.| Paso | Quien actua | Que pasa | Donde se ve |
|---|---|---|---|
| 1 | Usuario | Envia una tarea a cualquier agente conectado desde el chat directo. | Chat directo |
| 2 | Agente solicitante | Evalua su especialidad y marca actividad procesando. |
Tabla de agentes |
| 3 | Directory Agent | Lista agentes online y sus especialidades para encontrar apoyo. | Directorio y logs |
| 4 | Agente solicitante -> agente recomendado | Si otro agente encaja mejor en una parte, se envia una solicitud de apoyo por direccion A2A. | Chat directo |
| 5 | Servidor puente | Publica un nuevo state por WebSocket para todas las pantallas abiertas. |
Monitor, directorio, logs |
| 6 | Agente solicitante | Responde al usuario explicando su parte y el apoyo solicitado. | Chat directo |
| Parte | Disponible | Uso |
|---|---|---|
| Servidor A2A | /ws/a2a, estado en vivo, logs, directorio |
Puente central entre la web y los agentes. |
| Agente configurable | id, name, description, instruction, delayMs |
Agente configurable con especialidad propia. |
| Otro agente configurable | id, name, description, instruction, delayMs |
Otro agente configurable para ayudar o complementar. |
| Directory Agent | available, connected, connectionId, especialidad |
Permite saber quien existe, quien esta online y quien puede ayudar. |
| Monitor web | Registro, canal, chat directo, tabla de agentes, logs | Control visual para usuario no tecnico. |
| HTML de directorio | Conectados y disponibles en tiempo real | Consulta simple del directorio A2A. |
agent.start: registra y levanta un agente.agent.stop: detiene un agente.a2a.resource.deliver: entrega textos, JSON, URLs, archivos, elementos o recursos a un agente.a2a.processing.start: ordena iniciar procesamiento y marca al agente como procesando.a2a.processing.finish: registra resultado y cierra el procesamiento.a2a.agent.free: el agente informa al servidor que ya esta libre para recibir otra tarea.channel.connect: conecta el canal A2A.channel.disconnect: desconecta el canal.chat.send: envia texto a un agente.conversation.step: fuerza el siguiente turno.conversation.finish: termina la conversacion.logs.clear: limpia logs tecnicos.down: agente apagado.online: agente registrado en el puente.idle: esperando trabajo.procesando: analizando mensaje.enviando: enviando respuesta.recibiendo: recibiendo mensaje.desconectado: sin actividad en canal.chat.send al servidor WebSocket.procesando.state.