





















@@ -540,14 +540,16 @@ function resolveRecallRunChannelContext(params: {
540540messageChannel?: string;
541541messageProvider?: string;
542542} {
543+const isRunnableChannelName = (channel: string) =>
544+!channel.includes(":") && !channel.includes("/");
543545const explicitChannel = normalizeOptionalString(params.channelId);
544546const explicitProvider = normalizeOptionalString(params.messageProvider);
545547// A channelId that contains ":" is a scoped conversation id (e.g. Telegram
546-// forum-topic "-100123:topic:77"), not a runnable channel name. Using it as
547-// the embedded recall run's channel causes bundled-plugin dirName validation
548-// to throw because ":" is not allowed in directory names (#76704).
548+// forum-topic "-100123:topic:77") or "/" (e.g. Google Chat "spaces/...") is
549+// not a runnable channel name. Using it as the embedded recall run's channel
550+// causes bundled-plugin dirName validation to throw (#76704, #78918).
549551const runnableExplicitChannel =
550-explicitChannel && !explicitChannel.includes(":") ? explicitChannel : undefined;
552+explicitChannel && isRunnableChannelName(explicitChannel) ? explicitChannel : undefined;
551553const trustedExplicitChannel =
552554runnableExplicitChannel && runnableExplicitChannel !== explicitProvider
553555 ? runnableExplicitChannel
@@ -599,12 +601,12 @@ function resolveRecallRunChannelContext(params: {
599601const rawStrongEntryChannel =
600602normalizeOptionalString(sessionEntry?.lastChannel) ??
601603normalizeOptionalString(sessionEntry?.channel);
602-// Channel IDs containing ":" are scoped conversation IDs (e.g. QQ c2c
603-// "c2c:10D4F7C2..."), not runnable channel names. The same guard that
604+// Channel IDs containing ":" or "/" are scoped conversation IDs, not
605+// runnable channel names. The same guard that
604606// applies to explicit channelId (#76704) must also apply to channels
605607// read from the session store (#77396).
606608const strongEntryChannel =
607-rawStrongEntryChannel && !rawStrongEntryChannel.includes(":")
609+rawStrongEntryChannel && isRunnableChannelName(rawStrongEntryChannel)
608610 ? rawStrongEntryChannel
609611 : undefined;
610612const weakEntryChannel = normalizeOptionalString(sessionEntry?.origin?.provider);
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。