mirror of
https://github.com/hellodigua/ChatLab.git
synced 2026-10-25 17:54:34 +08:00
refactor: extract Electron shell to apps/desktop/
Move Electron-specific code (main, preload, shared) and configs (electron.vite, electron-builder) into apps/desktop/ to prepare for multi-platform support (Web Browser standalone). - Create apps/desktop/ with dedicated package.json and tsconfig - Split Electron deps (electron, electron-updater, better-sqlite3, etc.) from shared frontend deps in root package.json - Declare better-sqlite3 and @node-rs/jieba in packages/node-runtime - Add stream-json to packages/parser where it belongs - Update all path aliases (@electron/* → apps/desktop/*) in tsconfig, vite configs, and relative imports in preload/main - Keep slim root tsconfig.node.json as shared base for packages - Update CI/CD release workflow for new directory layout - Fix pre-existing type errors (pi-ai Model generic, SQLLabTab LLMChatStreamChunk, filter.test.ts empty methods)
This commit is contained in:
1 parent
ba29346bfe
commit
b12c07dc32
135 files changed
+275
-222
No files matched your search
@@ -0,0 +1,81 @@
|
||||
/**
|
||||
* Electron Preload Script
|
||||
* 将主进程 API 暴露给渲染进程
|
||||
*/
|
||||
import { contextBridge } from 'electron'
|
||||
import { electronAPI } from '@electron-toolkit/preload'
|
||||
|
||||
// 从拆分的模块导入 API
|
||||
import { extendedApi } from './apis/core'
|
||||
import { chatApi, mergeApi } from './apis/chat'
|
||||
import { aiApi, llmApi, agentApi, assistantApi, skillApi } from './apis/ai'
|
||||
import { nlpApi, networkApi, cacheApi, sessionApi } from './apis/utils'
|
||||
import { apiServerApi } from './apis/api-server'
|
||||
|
||||
// 为渲染进程提供统一的类型入口,避免 type-only import 指向无导出的运行时代码。
|
||||
export type { PreprocessConfig } from './apis/ai'
|
||||
export type {
|
||||
ProviderDefinition,
|
||||
ProviderKind,
|
||||
ModelDefinition,
|
||||
ModelCapability,
|
||||
ModelStatus,
|
||||
ModelRecommendedFor,
|
||||
LLMConnectionConfig,
|
||||
LLMConnectionConfigCompat,
|
||||
ModelUsage,
|
||||
ModelSelectionState,
|
||||
} from '../main/ai/llm/model-types'
|
||||
|
||||
// Use `contextBridge` APIs to expose Electron APIs to
|
||||
// renderer only if context isolation is enabled, otherwise
|
||||
// just add to the DOM global.
|
||||
if (process.contextIsolated) {
|
||||
try {
|
||||
contextBridge.exposeInMainWorld('electron', electronAPI)
|
||||
contextBridge.exposeInMainWorld('api', extendedApi)
|
||||
contextBridge.exposeInMainWorld('chatApi', chatApi)
|
||||
contextBridge.exposeInMainWorld('mergeApi', mergeApi)
|
||||
contextBridge.exposeInMainWorld('aiApi', aiApi)
|
||||
contextBridge.exposeInMainWorld('llmApi', llmApi)
|
||||
contextBridge.exposeInMainWorld('agentApi', agentApi)
|
||||
contextBridge.exposeInMainWorld('assistantApi', assistantApi)
|
||||
contextBridge.exposeInMainWorld('skillApi', skillApi)
|
||||
contextBridge.exposeInMainWorld('cacheApi', cacheApi)
|
||||
contextBridge.exposeInMainWorld('networkApi', networkApi)
|
||||
contextBridge.exposeInMainWorld('sessionApi', sessionApi)
|
||||
contextBridge.exposeInMainWorld('nlpApi', nlpApi)
|
||||
contextBridge.exposeInMainWorld('apiServerApi', apiServerApi)
|
||||
} catch (error) {
|
||||
console.error(error)
|
||||
}
|
||||
} else {
|
||||
// @ts-ignore (define in dts)
|
||||
window.electron = electronAPI
|
||||
// @ts-ignore (define in dts)
|
||||
window.api = extendedApi
|
||||
// @ts-ignore (define in dts)
|
||||
window.chatApi = chatApi
|
||||
// @ts-ignore (define in dts)
|
||||
window.mergeApi = mergeApi
|
||||
// @ts-ignore (define in dts)
|
||||
window.aiApi = aiApi
|
||||
// @ts-ignore (define in dts)
|
||||
window.llmApi = llmApi
|
||||
// @ts-ignore (define in dts)
|
||||
window.agentApi = agentApi
|
||||
// @ts-ignore (define in dts)
|
||||
window.assistantApi = assistantApi
|
||||
// @ts-ignore (define in dts)
|
||||
window.skillApi = skillApi
|
||||
// @ts-ignore (define in dts)
|
||||
window.cacheApi = cacheApi
|
||||
// @ts-ignore (define in dts)
|
||||
window.networkApi = networkApi
|
||||
// @ts-ignore (define in dts)
|
||||
window.sessionApi = sessionApi
|
||||
// @ts-ignore (define in dts)
|
||||
window.nlpApi = nlpApi
|
||||
// @ts-ignore (define in dts)
|
||||
window.apiServerApi = apiServerApi
|
||||
}
|
||||
Reference in new issue
Block a user