2026-07-05 12:04:31 +08:00
|
|
|
import crypto from 'node:crypto';
|
|
|
|
|
|
2026-07-05 11:58:17 +08:00
|
|
|
/**
|
2026-07-05 12:04:31 +08:00
|
|
|
* Goosed requires user_message.metadata.userVisible/agentVisible and created on /reply.
|
2026-07-05 11:58:17 +08:00
|
|
|
*/
|
|
|
|
|
export function ensureGooseUserMessageMetadata(userMessage) {
|
|
|
|
|
if (!userMessage || typeof userMessage !== 'object' || Array.isArray(userMessage)) {
|
|
|
|
|
return userMessage;
|
|
|
|
|
}
|
|
|
|
|
const metadata =
|
|
|
|
|
userMessage.metadata && typeof userMessage.metadata === 'object' && !Array.isArray(userMessage.metadata)
|
|
|
|
|
? { ...userMessage.metadata }
|
|
|
|
|
: {};
|
|
|
|
|
if (metadata.userVisible == null) metadata.userVisible = true;
|
|
|
|
|
if (metadata.agentVisible == null) metadata.agentVisible = true;
|
2026-07-05 12:04:31 +08:00
|
|
|
const created = Number(userMessage.created ?? 0) || Math.floor(Date.now() / 1000);
|
2026-07-05 11:58:17 +08:00
|
|
|
return {
|
|
|
|
|
...userMessage,
|
2026-07-05 12:04:31 +08:00
|
|
|
id: userMessage.id ?? crypto.randomUUID(),
|
|
|
|
|
role: userMessage.role ?? 'user',
|
|
|
|
|
created,
|
2026-07-05 11:58:17 +08:00
|
|
|
metadata,
|
|
|
|
|
};
|
|
|
|
|
}
|