Outbound-Session-Mirroring-Refactor (Issue #1520)
Status
- In Arbeit.
- Core + Plugin-Channel-Routing fuer Outbound-Mirroring aktualisiert.
- Gateway-Send leitet jetzt Ziel-Session ab wenn sessionKey fehlt.
Kontext
Ausgehende Sends wurden in die aktuelle Agent-Session (Tool-Session-Key) gespiegelt statt in die Zielkanal-Session. Eingehendes Routing nutzt Channel/Peer-Session-Keys, sodass ausgehende Antworten in der falschen Session landeten und Erstkontakt-Ziele oft keine Session-Eintraege hatten.
Ziele
- Ausgehende Nachrichten in den Zielkanal-Session-Key spiegeln.
- Session-Eintraege bei Outbound erstellen wenn fehlend.
- Thread/Topic-Scoping an eingehende Session-Keys angleichen.
- Core-Channels plus gebundelte Extensions abdecken.
Implementierungszusammenfassung
- Neuer Outbound-Session-Routing-Helper:
src/infra/outbound/outbound-session.ts resolveOutboundSessionRoutebaut Ziel-sessionKey mittelsbuildAgentSessionKey(dmScope + identityLinks).ensureOutboundSessionEntryschreibt minimalenMsgContextviarecordSessionMetaFromInbound.runMessageAction(send) leitet Ziel-sessionKey ab und uebergibt ihn anexecuteSendActionzum Spiegeln.message-toolspiegelt nicht mehr direkt; es loest nur agentId aus dem aktuellen Session-Key auf.- Gateway-Send leitet Ziel-Session-Key ab wenn keiner angegeben und stellt Session-Eintrag sicher.
Thread/Topic-Behandlung
- Slack: replyTo/threadId ->
resolveThreadSessionKeys(Suffix). - Discord: threadId/replyTo ->
resolveThreadSessionKeysmituseSuffix=false. - Telegram: Topic-IDs mappen auf
chatId:topic:<id>viabuildTelegramGroupPeerId.
Abgedeckte Extensions
Matrix, MS Teams, Mattermost, BlueBubbles, Nextcloud Talk, Zalo, Zalo Personal, Nostr, Tlon.
Tests hinzugefuegt/aktualisiert
src/infra/outbound/outbound.test.tssrc/agents/tools/message-tool.test.tssrc/gateway/server-methods/send.test.ts