49 lines
1.2 KiB
TypeScript
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 } : {}),
|
|
};
|
|
}
|