diff --git a/extensions/telegram/src/channel.ts b/extensions/telegram/src/channel.ts index c3c30531b02f..b3d411f5b4a1 100644 --- a/extensions/telegram/src/channel.ts +++ b/extensions/telegram/src/channel.ts @@ -76,6 +76,7 @@ import { resolveTelegramReactionLevel } from "./reaction-level.js"; import { resolveTelegramStartupProbeTimeoutMs } from "./request-timeouts.js"; import { getTelegramRuntime } from "./runtime.js"; import { telegramSecurityAdapter } from "./security.js"; +import { loadTelegramSendModule } from "./send-runtime.js"; import { resolveTelegramSessionConversation, resolveTelegramSessionTarget, @@ -92,7 +93,6 @@ import { withTelegramStartupProbeSlot } from "./startup-probe-limiter.js"; import { detectTelegramLegacyStateMigrations } from "./state-migrations.js"; import { collectTelegramStatusIssues } from "./status-issues.js"; import { parseTelegramTarget } from "./targets.js"; -import { loadTelegramSendModule } from "./send-runtime.js"; import { createTelegramThreadBindingManager, setTelegramThreadBindingIdleTimeoutBySessionKey, @@ -833,6 +833,7 @@ export const telegramPlugin = createChatChannelPlugin({ targetResolver: { looksLikeId: looksLikeTelegramTargetId, hint: "", + reservedLiterals: ["current", "self", "this", "me"], }, }, resolver: { diff --git a/extensions/telegram/src/session-route.test.ts b/extensions/telegram/src/session-route.test.ts index eeb39b6613bf..e366449d23de 100644 --- a/extensions/telegram/src/session-route.test.ts +++ b/extensions/telegram/src/session-route.test.ts @@ -3,6 +3,15 @@ import { describe, expect, it } from "vitest"; import { telegramPlugin } from "./channel.js"; describe("telegram session route", () => { + it("declares reserved session literals as non-destination targets", () => { + expect(telegramPlugin.messaging?.targetResolver?.reservedLiterals).toEqual([ + "current", + "self", + "this", + "me", + ]); + }); + it("scopes direct topic session suffixes by chat id", async () => { const route = await telegramPlugin.messaging?.resolveOutboundSessionRoute?.({ cfg: {}, diff --git a/src/channels/plugins/contracts/test-helpers/surface-contract-suite.ts b/src/channels/plugins/contracts/test-helpers/surface-contract-suite.ts index 212b0e311751..ff4df8d95a34 100644 --- a/src/channels/plugins/contracts/test-helpers/surface-contract-suite.ts +++ b/src/channels/plugins/contracts/test-helpers/surface-contract-suite.ts @@ -92,6 +92,14 @@ export function expectChannelSurfaceContract(params: { expect(typeof messaging.targetResolver.hint).toBe("string"); expect(messaging.targetResolver.hint.trim()).not.toBe(""); } + if (messaging.targetResolver.reservedLiterals !== undefined) { + expect(Array.isArray(messaging.targetResolver.reservedLiterals)).toBe(true); + expect( + messaging.targetResolver.reservedLiterals.every( + (value) => typeof value === "string" && value.trim(), + ), + ).toBe(true); + } if (messaging.targetResolver.resolveTarget) { expect(typeof messaging.targetResolver.resolveTarget).toBe("function"); }