update, use json database replace pglite, for sync

This commit is contained in:
duanfuxiang
2025-04-24 16:08:44 +08:00
parent 10970a8803
commit 96b9fcef3b
20 changed files with 863 additions and 229 deletions

View File

@@ -0,0 +1,63 @@
import { App } from 'obsidian'
import { ChatMessage, SerializedChatMessage } from '../../types/chat'
import { Mentionable } from '../../types/mentionable'
import {
deserializeMentionable,
serializeMentionable,
} from '../../utils/mentionable'
export const serializeChatMessage = (message: ChatMessage): SerializedChatMessage => {
switch (message.role) {
case 'user':
return {
role: 'user',
applyStatus: message.applyStatus,
content: message.content,
promptContent: message.promptContent,
id: message.id,
mentionables: message.mentionables.map(serializeMentionable),
similaritySearchResults: message.similaritySearchResults,
}
case 'assistant':
return {
role: 'assistant',
applyStatus: message.applyStatus,
content: message.content,
reasoningContent: message.reasoningContent,
id: message.id,
metadata: message.metadata,
}
}
}
export const deserializeChatMessage = (
message: SerializedChatMessage,
app: App,
): ChatMessage => {
switch (message.role) {
case 'user': {
return {
role: 'user',
applyStatus: message.applyStatus,
content: message.content,
promptContent: message.promptContent,
id: message.id,
mentionables: message.mentionables
.map((m) => deserializeMentionable(m, app))
.filter((m): m is Mentionable => m !== null),
similaritySearchResults: message.similaritySearchResults,
}
}
case 'assistant':
return {
role: 'assistant',
applyStatus: message.applyStatus,
content: message.content,
reasoningContent: message.reasoningContent,
id: message.id,
metadata: message.metadata,
}
}
}