DatabaseMessageExtraAudioFile,
DatabaseMessageExtraImageFile,
DatabaseMessageExtraTextFile,
- DatabaseMessageExtraPdfFile
+ DatabaseMessageExtraPdfFile,
+ DatabaseMessageExtraLegacyContext
} from '$lib/types/database';
import type {
DatabaseMessageExtraImageFile,
DatabaseMessageExtraTextFile,
DatabaseMessageExtraPdfFile,
+ DatabaseMessageExtraLegacyContext,
SettingsConfigValue,
SettingsFieldConfig,
SettingsConfigType,
attachmentIndex: index,
textContent: attachment.content
});
+ } else if (attachment.type === 'context') {
+ // Legacy format from old webui - treat as text file
+ items.push({
+ id: `attachment-${index}`,
+ name: attachment.name,
+ type: 'text',
+ isImage: false,
+ attachment,
+ attachmentIndex: index,
+ textContent: attachment.content
+ });
} else if (attachment.type === 'audioFile') {
items.push({
id: `attachment-${index}`,
});
}
+ // Handle legacy 'context' type from old webui (pasted content)
+ const legacyContextFiles = message.extra.filter(
+ (extra: DatabaseMessageExtra): extra is DatabaseMessageExtraLegacyContext =>
+ extra.type === 'context'
+ );
+
+ for (const legacyContextFile of legacyContextFiles) {
+ contentParts.push({
+ type: 'text',
+ text: `\n\n--- File: ${legacyContextFile.name} ---\n${legacyContextFile.content}`
+ });
+ }
+
const audioFiles = message.extra.filter(
(extra: DatabaseMessageExtra): extra is DatabaseMessageExtraAudioFile =>
extra.type === 'audioFile'
processedAsImages: boolean; // Whether PDF was processed as images
}
+/**
+ * Legacy format from old webui - pasted content was stored as "context" type
+ * @deprecated Use DatabaseMessageExtraTextFile instead
+ */
+export interface DatabaseMessageExtraLegacyContext {
+ type: 'context';
+ name: string;
+ content: string;
+}
+
export type DatabaseMessageExtra =
| DatabaseMessageExtraImageFile
| DatabaseMessageExtraTextFile
| DatabaseMessageExtraAudioFile
- | DatabaseMessageExtraPdfFile;
+ | DatabaseMessageExtraPdfFile
+ | DatabaseMessageExtraLegacyContext;
export interface DatabaseMessage {
id: string;