/ src / renderer / main.ts
main.ts
 1  import { createApp } from 'vue'
 2  import { createPinia } from 'pinia'
 3  import { createStatePersistence } from 'pinia-plugin-state-persistence'
 4  
 5  import App from '@/renderer/App.vue'
 6  import router from '@/renderer/router'
 7  import vuetify from '@/renderer/plugins/vuetify'
 8  import i18n from '@/renderer/plugins/i18n'
 9  import Vue3Lottie from 'vue3-lottie'
10  
11  import type { MCPAPI, DXTAPI } from '@/types/mcp'
12  import type { LlmConfig } from '@/types/llm'
13  import type { PopupConfig } from '@/types/popup'
14  import type { StartupConfig } from '@/types/startup'
15  
16  // Add API key defined in contextBridge to window object type
17  declare global {
18    // eslint-disable-next-line no-unused-vars
19    interface Window {
20      mainApi?: any
21      llmApis?: {
22        get: () => LlmConfig
23      }
24      popupApis?: {
25        get: () => PopupConfig
26      }
27      startupApis?: {
28        get: () => StartupConfig
29      }
30      mcpServers?: {
31        get: () => MCPAPI
32        refresh: () => Promise<{}>
33        update: (_name: string) => Promise<{}>
34      }
35      dxtManifest?: {
36        get: () => DXTAPI
37        refresh: () => Promise<{}>
38        update: (_name: string) => Promise<{}>
39      }
40    }
41  }
42  
43  const app = createApp(App)
44  const pinia = createPinia()
45  pinia.use(createStatePersistence())
46  
47  app.use(vuetify).use(i18n).use(router).use(pinia).use(Vue3Lottie)
48  
49  app.mount('#app')