feat(router,cli): replyTo override + CLI admin-transport flows
- InboundEvent gains an optional replyTo; router stamps the row's address
fields from it when set, so replies can route to a different channel than
the one the inbound came in on.
- ChannelSetup adds onInboundEvent for admin-transport adapters that build
the full event themselves.
- CLI wire format accepts {text, to, reply_to}. Routed messages go through
onInboundEvent and do not evict an active chat client.
- init-first-agent hands the DM welcome to the running service via
data/cli.sock — synchronous wake, no sweep wait. Fails loudly if the
service is down; no silent fallback.
- Split the CLI scratch-agent bootstrap into scripts/init-cli-agent.ts;
init-first-agent is DM-only.
Agents cannot set replyTo: it lives only on the inbound/router seam and is
consumed once when writing messages_in.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -86,6 +86,15 @@ async function main(): Promise<void> {
|
||||
log.error('Failed to route inbound message', { channelType: adapter.channelType, err });
|
||||
});
|
||||
},
|
||||
onInboundEvent(event) {
|
||||
routeInbound(event).catch((err) => {
|
||||
log.error('Failed to route inbound event', {
|
||||
sourceAdapter: adapter.channelType,
|
||||
targetChannelType: event.channelType,
|
||||
err,
|
||||
});
|
||||
});
|
||||
},
|
||||
onMetadata(platformId, name, isGroup) {
|
||||
log.info('Channel metadata discovered', {
|
||||
channelType: adapter.channelType,
|
||||
|
||||
Reference in New Issue
Block a user