feat: refresh shared chat and server workflows
This commit is contained in:
@@ -267,6 +267,53 @@ function normalizePromptSelectedValues(value: unknown) {
|
||||
.filter((item, index, array) => array.indexOf(item) === index);
|
||||
}
|
||||
|
||||
function normalizePromptAttachment(value: unknown) {
|
||||
if (!value || typeof value !== 'object' || Array.isArray(value)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const record = value as Record<string, unknown>;
|
||||
const id = normalizeText(record.id);
|
||||
const name = normalizeText(record.name);
|
||||
const path = normalizeText(record.path);
|
||||
const publicUrl = normalizeText(record.publicUrl);
|
||||
const size = Number(record.size);
|
||||
const mimeType = normalizeText(record.mimeType);
|
||||
|
||||
if (!id || !name || !path || !publicUrl || !Number.isFinite(size) || size < 0 || !mimeType) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return {
|
||||
id,
|
||||
name,
|
||||
path,
|
||||
publicUrl,
|
||||
size,
|
||||
mimeType,
|
||||
};
|
||||
}
|
||||
|
||||
function normalizePromptAttachments(value: unknown) {
|
||||
if (!Array.isArray(value)) {
|
||||
return [];
|
||||
}
|
||||
|
||||
const seen = new Set<string>();
|
||||
|
||||
return value
|
||||
.map((item) => normalizePromptAttachment(item))
|
||||
.filter((item): item is NonNullable<PromptPart['attachments']>[number] => Boolean(item))
|
||||
.filter((item) => {
|
||||
if (seen.has(item.id)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
seen.add(item.id);
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
function normalizePromptSteps(value: unknown): PromptStep[] {
|
||||
if (!Array.isArray(value)) {
|
||||
return [];
|
||||
@@ -420,6 +467,7 @@ function buildPromptPart(rawBody: string): ChatMessagePart | null {
|
||||
resolvedBy,
|
||||
resolvedAt: normalizeText(record.resolvedAt) || null,
|
||||
resultText: normalizeText(record.resultText) || null,
|
||||
attachments: normalizePromptAttachments(record.attachments),
|
||||
options,
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user