Project Files
src / embeddings / embeddingMetadata.ts
import type { GenerationMetadata } from "../types.js";
export function renderEmbeddingMetadataText(generation: GenerationMetadata, fallbackName = ""): string {
const parts: string[] = [];
const attachmentOriginalName = generation.sourceInfo?.type === "attachment"
? generation.sourceInfo.originalName.trim()
: "";
const resolvedFallbackName = attachmentOriginalName || fallbackName.trim();
if (generation.prompt?.trim()) parts.push(generation.prompt.trim());
else if (resolvedFallbackName) parts.push(resolvedFallbackName);
if (generation.negativePrompt?.trim()) parts.push(`Negative: ${generation.negativePrompt.trim()}`);
if (generation.model?.trim()) parts.push(`Model: ${generation.model.trim()}`);
const loras = (generation.loras ?? [])
.map((lora) => typeof lora === "string" ? lora : lora.model)
.filter((value): value is string => typeof value === "string" && value.trim().length > 0);
if (loras.length > 0) parts.push(`LoRAs: ${loras.join(", ")}`);
if (generation.sampler?.trim()) parts.push(`Sampler: ${generation.sampler.trim()}`);
if (generation.steps !== undefined) parts.push(`Steps: ${generation.steps}`);
if (generation.cfgScale !== undefined) parts.push(`CFG: ${generation.cfgScale}`);
if (generation.seed !== undefined) parts.push(`Seed: ${generation.seed}`);
if ((generation.width ?? 0) > 0 && (generation.height ?? 0) > 0) {
parts.push(`Size: ${generation.width}x${generation.height}`);
}
if (generation.sourceInfo?.type) parts.push(`Source: ${generation.sourceInfo.type}`);
return parts.join("\n").trim() || resolvedFallbackName;
}