deerflow2/frontend/src/core/threads/submit-files.ts

47 lines
1.1 KiB
TypeScript

import type { FileInMessage } from "../messages/utils";
import type { UploadedFileInfo } from "../uploads/api";
export type MentionReference = {
filename: string;
path?: string;
size?: number;
ref_kind: "mention";
ref_source: "artifact" | "upload";
stale?: boolean;
};
export function buildFilesForSubmit(
uploadedFileInfo: UploadedFileInfo[],
references: MentionReference[] = [],
) {
const uploadedFiles: FileInMessage[] = uploadedFileInfo.map((info) => ({
filename: info.filename,
size: info.size,
path: info.virtual_path,
status: "uploaded" as const,
}));
const referenceFiles: FileInMessage[] = [];
let staleCount = 0;
for (const reference of references) {
if (reference.stale) {
staleCount += 1;
continue;
}
referenceFiles.push({
filename: reference.filename,
size: reference.size ?? 0,
path: reference.path,
status: "uploaded" as const,
ref_kind: "mention",
ref_source: reference.ref_source,
});
}
return {
files: [...uploadedFiles, ...referenceFiles],
staleCount,
};
}