























@@ -211,12 +211,21 @@ async function deliverTelegramDirectMessageCompletion(params: {
211211internalEvents?: AgentInternalEvent[];
212212isActive?: boolean;
213213queueEmbeddedPiMessageWithOutcome?: QueueEmbeddedPiMessageWithOutcome;
214+requesterSessionKey?: string;
215+sourceTool?: string;
216+origin?: {
217+channel: "telegram";
218+to: string;
219+accountId?: string;
220+threadId?: string | number;
221+};
214222}) {
215-const origin = {
223+const origin = params.origin ?? {
216224channel: "telegram",
217225to: "123456789",
218226accountId: "bot-1",
219227};
228+const requesterSessionKey = params.requesterSessionKey ?? "agent:main:telegram:123456789";
220229__testing.setDepsForTest({
221230callGateway: params.callGateway,
222231getRequesterSessionActivity: () => ({
@@ -230,8 +239,8 @@ async function deliverTelegramDirectMessageCompletion(params: {
230239});
231240232241return deliverSubagentAnnouncement({
233-requesterSessionKey: "agent:main:telegram:123456789",
234-targetRequesterSessionKey: "agent:main:telegram:123456789",
242+ requesterSessionKey,
243+targetRequesterSessionKey: requesterSessionKey,
235244triggerMessage: "child done",
236245steerMessage: "child done",
237246requesterOrigin: origin,
@@ -243,6 +252,7 @@ async function deliverTelegramDirectMessageCompletion(params: {
243252bestEffortDeliver: true,
244253directIdempotencyKey: "announce-telegram-dm-fallback",
245254internalEvents: params.internalEvents,
255+sourceTool: params.sourceTool,
246256});
247257}
248258@@ -1603,6 +1613,56 @@ describe("deliverSubagentAnnouncement completion delivery", () => {
16031613expect(sendMessage).not.toHaveBeenCalled();
16041614});
160516151616+it("stringifies Telegram topic ids for generated video completion handoff", async () => {
1617+const callGateway = createGatewayMock({
1618+payloads: [],
1619+didSendViaMessagingTool: true,
1620+messagingToolSentMediaUrls: ["/tmp/generated-corgi.mp4"],
1621+});
1622+const sendMessage = createSendMessageMock();
1623+const result = await deliverTelegramDirectMessageCompletion({
1624+ callGateway,
1625+ sendMessage,
1626+requesterSessionKey: "agent:main:telegram:group:-1003970070733:topic:1",
1627+origin: {
1628+channel: "telegram",
1629+to: "telegram:-1003970070733",
1630+accountId: "bot-1",
1631+threadId: 1,
1632+},
1633+sourceTool: "video_generate",
1634+internalEvents: [
1635+{
1636+type: "task_completion",
1637+source: "video_generation",
1638+childSessionKey: "video_generate:task-123",
1639+childSessionId: "task-123",
1640+announceType: "video generation task",
1641+taskLabel: "anime corgi skateboard",
1642+status: "ok",
1643+statusLabel: "completed successfully",
1644+result: "Generated 1 video.\nMEDIA:/tmp/generated-corgi.mp4",
1645+mediaUrls: ["/tmp/generated-corgi.mp4"],
1646+replyInstruction: "Deliver the generated video through the message tool.",
1647+},
1648+],
1649+});
1650+1651+expectRecordFields(result, {
1652+delivered: true,
1653+path: "direct",
1654+});
1655+expectGatewayAgentParams(callGateway, {
1656+deliver: false,
1657+channel: "telegram",
1658+accountId: "bot-1",
1659+to: "telegram:-1003970070733",
1660+threadId: "1",
1661+sourceReplyDeliveryMode: "message_tool_only",
1662+});
1663+expect(sendMessage).not.toHaveBeenCalled();
1664+});
1665+16061666it("requires generated image completion DMs to use the message tool", async () => {
16071667const callGateway = createGatewayMock({
16081668result: {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。