fix: handle platform ID prefix mismatch in router, not register

Move prefix handling from register.ts to router.ts. Users register with
raw platform IDs (what they naturally have), adapters send prefixed IDs
(their internal format). Router now tries stripping the channel type
prefix when the exact lookup fails, matching either format.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
gavrielc
2026-04-09 13:39:40 +03:00
parent 6941e37366
commit 9f5c37fc4c
2 changed files with 8 additions and 7 deletions
-7
View File
@@ -118,13 +118,6 @@ export async function run(args: string[]): Promise<void> {
process.exit(4);
}
// Chat SDK adapters prefix platform IDs with the channel type (e.g. "telegram:123",
// "discord:guild:channel"). Auto-prefix if the user provided a raw ID so the router
// matches the adapter's format.
if (parsed.platformId && !parsed.platformId.startsWith(`${parsed.channel}:`)) {
parsed.platformId = `${parsed.channel}:${parsed.platformId}`;
}
log.info('Registering channel', parsed);
// Init v2 central DB
+8
View File
@@ -34,7 +34,15 @@ export interface InboundEvent {
*/
export async function routeInbound(event: InboundEvent): Promise<void> {
// 1. Resolve messaging group
// Adapters send prefixed platform IDs (e.g. "telegram:123") but users may
// register with raw IDs ("123"). Try exact match first, then stripped prefix.
let mg = getMessagingGroupByPlatform(event.channelType, event.platformId);
if (!mg) {
const prefix = `${event.channelType}:`;
if (event.platformId.startsWith(prefix)) {
mg = getMessagingGroupByPlatform(event.channelType, event.platformId.slice(prefix.length));
}
}
if (!mg) {
// Auto-create messaging group (adapter already decided to forward this)