diff --git a/src/renderer/src/databases/index.ts b/src/renderer/src/databases/index.ts index 8d54c84090..3fc1ae955c 100644 --- a/src/renderer/src/databases/index.ts +++ b/src/renderer/src/databases/index.ts @@ -1,6 +1,8 @@ import { FileType, KnowledgeItem, Topic, TranslateHistory } from '@renderer/types' import { Dexie, type EntityTable } from 'dexie' +import { upgradeToV5 } from './upgrades' + // Database declaration (move this to its own module also) export const db = new Dexie('CherryStudio') as Dexie & { files: EntityTable @@ -35,4 +37,14 @@ db.version(4).stores({ translate_history: '&id, sourceText, targetText, sourceLanguage, targetLanguage, createdAt' }) +db.version(5) + .stores({ + files: 'id, name, origin_name, path, size, ext, type, created_at, count', + topics: '&id, messages', + settings: '&id, value', + knowledge_notes: '&id, baseId, type, content, created_at, updated_at', + translate_history: '&id, sourceText, targetText, sourceLanguage, targetLanguage, createdAt' + }) + .upgrade((tx) => upgradeToV5(tx)) + export default db diff --git a/src/renderer/src/databases/upgrades.ts b/src/renderer/src/databases/upgrades.ts new file mode 100644 index 0000000000..e6607d5fc4 --- /dev/null +++ b/src/renderer/src/databases/upgrades.ts @@ -0,0 +1,30 @@ +import { Transaction } from 'dexie' + +export async function upgradeToV5(tx: Transaction): Promise { + const topics = await tx.table('topics').toArray() + + for (const topic of topics) { + let hasChanges = false + + for (const message of topic.messages) { + if (message?.metadata?.tavily) { + hasChanges = true + const tavily = message.metadata.tavily + delete message.metadata.tavily + message.metadata.webSearch = { + query: tavily.query, + results: + tavily.results?.map((i) => ({ + title: i.title, + url: i.url, + content: i.content + })) || [] + } + } + } + + if (hasChanges) { + await tx.table('topics').put(topic) + } + } +} diff --git a/src/renderer/src/providers/OpenAIProvider.ts b/src/renderer/src/providers/OpenAIProvider.ts index e365923df5..c57ff5a205 100644 --- a/src/renderer/src/providers/OpenAIProvider.ts +++ b/src/renderer/src/providers/OpenAIProvider.ts @@ -415,6 +415,7 @@ export default class OpenAIProvider extends BaseProvider { }) } } + const stream = await this.sdk.chat.completions // @ts-ignore key is not typed .create( diff --git a/src/renderer/src/store/index.ts b/src/renderer/src/store/index.ts index 6dad2693c2..98bbf6a4d0 100644 --- a/src/renderer/src/store/index.ts +++ b/src/renderer/src/store/index.ts @@ -34,7 +34,7 @@ const persistedReducer = persistReducer( { key: 'cherry-studio', storage, - version: 76, + version: 77, blacklist: ['runtime'], migrate }, diff --git a/src/renderer/src/store/migrate.ts b/src/renderer/src/store/migrate.ts index acbf6046bd..49a854bb3c 100644 --- a/src/renderer/src/store/migrate.ts +++ b/src/renderer/src/store/migrate.ts @@ -1230,6 +1230,7 @@ const migrateConfig = { delete p.enabled }) } + return state } } diff --git a/src/renderer/src/types/index.ts b/src/renderer/src/types/index.ts index 7b39fd4698..d2319d8a77 100644 --- a/src/renderer/src/types/index.ts +++ b/src/renderer/src/types/index.ts @@ -299,6 +299,7 @@ export type WebSearchResponse = { query?: string results: WebSearchResult[] } + export type WebSearchResult = { title: string content: string