1d165bc6e3
Expand Goose v1.49 smoke coverage (memory chat, portal resume, page e2e, multiturn provider), add canary memory policy lock, refresh baselines, and ignore one-off evidence artifacts. Document headroom-based context runtime fusion plan; include auth, scheduled-task, and wechat intent fixes on branch. Co-authored-by: Cursor <cursoragent@cursor.com>
33 lines
1.1 KiB
JavaScript
33 lines
1.1 KiB
JavaScript
import crypto from 'node:crypto';
|
|
|
|
/**
|
|
* Goosed requires user_message.metadata.userVisible/agentVisible and created on /reply.
|
|
*/
|
|
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;
|
|
const created = Number(userMessage.created ?? 0) || Math.floor(Date.now() / 1000);
|
|
return {
|
|
...userMessage,
|
|
id: userMessage.id ?? crypto.randomUUID(),
|
|
role: userMessage.role ?? 'user',
|
|
created,
|
|
metadata,
|
|
};
|
|
}
|
|
|
|
export function ensureGooseConversationMetadata(conversation) {
|
|
if (!Array.isArray(conversation)) return [];
|
|
return conversation.map((message) => ensureGooseUserMessageMetadata({
|
|
...message,
|
|
role: message?.role ?? 'user',
|
|
}));
|
|
}
|