Files
EJClaw/runners/agent-runner/src/ipc-message.ts
2026-05-02 19:50:32 +09:00

49 lines
1.2 KiB
TypeScript

import {
normalizeAgentOutput,
type RunnerOutputAttachment,
} from 'ejclaw-runners-shared';
export interface SendMessageIpcPayloadInput {
chatJid: string;
text: string;
sender?: string;
senderRole?: string;
runId?: string;
groupFolder: string;
timestamp?: string;
}
export interface SendMessageIpcPayload {
type: 'message';
chatJid: string;
text: string;
sender?: string;
senderRole?: string;
runId?: string;
groupFolder: string;
timestamp: string;
attachments?: RunnerOutputAttachment[];
}
export function buildSendMessageIpcPayload(
input: SendMessageIpcPayloadInput,
): SendMessageIpcPayload {
const normalized = normalizeAgentOutput(input.text);
const output =
normalized.output?.visibility === 'public' ? normalized.output : null;
const text = output?.text ?? normalized.result ?? '';
const attachments = output?.attachments ?? [];
return {
type: 'message',
chatJid: input.chatJid,
text,
sender: input.sender || undefined,
senderRole: input.senderRole || undefined,
runId: input.runId || undefined,
groupFolder: input.groupFolder,
timestamp: input.timestamp || new Date().toISOString(),
...(attachments.length > 0 ? { attachments } : {}),
};
}