
























@@ -27,6 +27,7 @@ import type { OutboundSessionContext } from "../../infra/outbound/session-contex
2727import { type RuntimeEnv, writeRuntimeJson } from "../../runtime.js";
2828import { isInternalMessageChannel } from "../../utils/message-channel.js";
2929import { isNestedAgentLane } from "../lanes.js";
30+import type { MessagingToolSend } from "../pi-embedded-messaging.types.js";
3031import type { EmbeddedPiRunMeta } from "../pi-embedded-runner/types.js";
3132import type { AgentCommandOpts, AgentCommandResultMetaOverrides } from "./types.js";
3233@@ -67,6 +68,10 @@ export type AgentCommandDeliveryStatus = {
6768export type AgentCommandDeliveryResult = {
6869payloads: ReturnType<typeof projectOutboundPayloadPlanForJson>;
6970meta: EmbeddedPiRunMeta & AgentCommandResultMetaOverrides;
71+didSendViaMessagingTool?: boolean;
72+messagingToolSentTexts?: string[];
73+messagingToolSentMediaUrls?: string[];
74+messagingToolSentTargets?: MessagingToolSend[];
7075deliverySucceeded?: boolean;
7176deliveryStatus?: AgentCommandDeliveryStatus;
7277};
@@ -159,6 +164,45 @@ function mergeResultMetaOverrides(
159164};
160165}
161166167+function hasNonEmptyString(value: unknown): value is string {
168+return typeof value === "string" && value.trim().length > 0;
169+}
170+171+function hasNonEmptyStringArray(value: unknown): value is string[] {
172+return Array.isArray(value) && value.some(hasNonEmptyString);
173+}
174+175+function hasNonEmptyArray<T>(value: T[] | undefined): value is T[] {
176+return Array.isArray(value) && value.length > 0;
177+}
178+179+function buildDeliveryResult(params: {
180+payloads: AgentCommandDeliveryResult["payloads"];
181+meta: AgentCommandDeliveryResult["meta"];
182+result: RunResult;
183+deliverySucceeded?: boolean;
184+deliveryStatus?: AgentCommandDeliveryStatus;
185+}): AgentCommandDeliveryResult {
186+return {
187+payloads: params.payloads,
188+meta: params.meta,
189+ ...(params.result.didSendViaMessagingTool === true ? { didSendViaMessagingTool: true } : {}),
190+ ...(hasNonEmptyStringArray(params.result.messagingToolSentTexts)
191+ ? { messagingToolSentTexts: params.result.messagingToolSentTexts }
192+ : {}),
193+ ...(hasNonEmptyStringArray(params.result.messagingToolSentMediaUrls)
194+ ? { messagingToolSentMediaUrls: params.result.messagingToolSentMediaUrls }
195+ : {}),
196+ ...(hasNonEmptyArray(params.result.messagingToolSentTargets)
197+ ? { messagingToolSentTargets: params.result.messagingToolSentTargets }
198+ : {}),
199+ ...(params.deliverySucceeded !== undefined
200+ ? { deliverySucceeded: params.deliverySucceeded }
201+ : {}),
202+ ...(params.deliveryStatus ? { deliveryStatus: params.deliveryStatus } : {}),
203+};
204+}
205+162206function serializeDeliveryPayloadOutcomes(
163207outcomes: DurableSendResult["payloadOutcomes"],
164208): AgentCommandDeliveryPayloadOutcome[] | undefined {
@@ -611,12 +655,13 @@ export async function deliverAgentCommandResult(
611655deliveryStatus = deliver ? (deliveryStatus ?? noVisiblePayloadStatus()) : undefined;
612656const deliverySucceeded = deliveryStatus?.succeeded === true ? true : undefined;
613657emitJsonEnvelope(deliveryStatus);
614-return {
658+return buildDeliveryResult({
615659payloads: normalizedPayloads,
616660meta: resultMeta,
617- ...(deliverySucceeded !== undefined ? { deliverySucceeded } : {}),
618- ...(deliveryStatus ? { deliveryStatus } : {}),
619-};
661+ result,
662+ deliverySucceeded,
663+ deliveryStatus,
664+});
620665}
621666622667let deliverySucceeded = false;
@@ -639,7 +684,7 @@ export async function deliverAgentCommandResult(
639684logPayload(payload);
640685}
641686emitJsonEnvelope();
642-return { payloads: normalizedPayloads, meta: resultMeta };
687+return buildDeliveryResult({ payloads: normalizedPayloads, meta: resultMeta, result });
643688}
644689if (deliver && deliveryChannel && !isInternalMessageChannel(deliveryChannel)) {
645690if (deliveryTarget && !deliveryStatus) {
@@ -682,5 +727,11 @@ export async function deliverAgentCommandResult(
682727}
683728684729emitJsonEnvelope(deliveryStatus);
685-return { payloads: normalizedPayloads, meta: resultMeta, deliverySucceeded, deliveryStatus };
730+return buildDeliveryResult({
731+payloads: normalizedPayloads,
732+meta: resultMeta,
733+ result,
734+ deliverySucceeded,
735+ deliveryStatus,
736+});
686737}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。