






















@@ -7,13 +7,58 @@ import {
77resolveSessionWriteLockAcquireTimeoutMs,
88runAgentHarnessBeforeMessageWriteHook,
99type AgentMessage,
10+type EmbeddedRunAttemptParams,
1011type SessionWriteLockAcquireTimeoutConfig,
1112} from "openclaw/plugin-sdk/agent-harness-runtime";
12131314type MirroredAgentMessage = Extract<AgentMessage, { role: "user" | "assistant" | "toolResult" }>;
14151516const MIRROR_IDENTITY_META_KEY = "mirrorIdentity" as const;
161718+function normalizeOptionalString(value: string | null | undefined): string | undefined {
19+const normalized = value?.trim();
20+return normalized ? normalized : undefined;
21+}
22+23+function buildSenderLabel(params: {
24+senderId?: string;
25+senderName?: string;
26+senderUsername?: string;
27+senderE164?: string;
28+}): string | undefined {
29+const label = params.senderName ?? params.senderUsername ?? params.senderE164 ?? params.senderId;
30+if (!label) {
31+return undefined;
32+}
33+if (!params.senderId || label.includes(params.senderId)) {
34+return label;
35+}
36+return `${label} (${params.senderId})`;
37+}
38+39+export function buildCodexUserPromptMessage(params: EmbeddedRunAttemptParams): AgentMessage {
40+const senderId = normalizeOptionalString(params.senderId);
41+const senderName = normalizeOptionalString(params.senderName);
42+const senderUsername = normalizeOptionalString(params.senderUsername);
43+const senderE164 = normalizeOptionalString(params.senderE164);
44+const senderLabel = buildSenderLabel({ senderId, senderName, senderUsername, senderE164 });
45+const sourceChannel = normalizeOptionalString(
46+params.inputProvenance?.sourceChannel ?? params.messageChannel ?? params.messageProvider,
47+);
48+return {
49+role: "user",
50+content: params.prompt,
51+timestamp: Date.now(),
52+ ...(params.inputProvenance ? { provenance: params.inputProvenance } : {}),
53+ ...(sourceChannel ? { sourceChannel } : {}),
54+ ...(senderId ? { senderId } : {}),
55+ ...(senderName ? { senderName } : {}),
56+ ...(senderUsername ? { senderUsername } : {}),
57+ ...(senderE164 ? { senderE164 } : {}),
58+ ...(senderLabel ? { senderLabel } : {}),
59+} as AgentMessage;
60+}
61+1762/**
1863 * Tag a message with a stable logical identity for mirror dedupe. Callers
1964 * should use a value that is invariant for the same logical message across
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。