Refactorización de mirroring de sesión saliente (Issue #1520)
Estado
- En progreso.
- Core + enrutamiento de canal de plugin actualizado para mirroring saliente.
- El gateway send ahora deriva la sesión destino cuando sessionKey se omite.
Contexto
Los envíos salientes se reflejaban en la sesión del agente actual (clave de sesión de la herramienta) en lugar de en la sesión del canal destino. El enrutamiento entrante usa claves de sesión canal/peer, por lo que las respuestas salientes terminaban en la sesión incorrecta y los destinos de primer contacto a menudo carecían de entradas de sesión.
Objetivos
- Reflejar mensajes salientes en la clave de sesión del canal destino.
- Crear entradas de sesión en el saliente cuando falten.
- Mantener el alcance de thread/topic alineado con las claves de sesión entrantes.
- Cubrir canales core más extensiones incluidas.
Resumen de implementación
- Nuevo helper de enrutamiento de sesión saliente:
src/infra/outbound/outbound-session.ts runMessageAction(send) deriva la sessionKey destino y la pasa aexecuteSendActionpara mirroring.message-toolya no hace mirror directamente; solo resuelve agentId desde la clave de sesión actual.- La ruta de envío del plugin hace mirror vía
appendAssistantMessageToSessionTranscriptusando la sessionKey derivada. - El gateway send deriva una clave de sesión destino cuando no se proporciona ninguna (agente por defecto), y asegura una entrada de sesión.
Extensiones cubiertas
- Matrix, MS Teams, Mattermost, BlueBubbles, Nextcloud Talk, Zalo, Zalo Personal, Nostr, Tlon.
Archivos tocados
src/infra/outbound/outbound-session.tssrc/infra/outbound/outbound-send-service.tssrc/infra/outbound/message-action-runner.tssrc/agents/tools/message-tool.tssrc/gateway/server-methods/send.ts- Tests en:
src/infra/outbound/outbound.test.ts,src/agents/tools/message-tool.test.ts,src/gateway/server-methods/send.test.ts