jan/electron/preload.ts
marknguyen1302 a36b3fee24
fix: move Jan folder (#3160)
* chore: upgrade marked-katex-extension (#3049)

* fix: handle long word without space to avoid right panel disappears (#3048)

* add time weighted retrieval (#2908)

* add time weighted retrieval

* add missing configuration for timeWeightedVectorStore

* resolving conflict

* add missing configuration for timeWeightedVectorStore

* resolving conflict

* fix linting issues

* fix build failed due to requirement for useTimeWeightedRetriever in AssistantTool

* update web packages complying the new structure

---------

Co-authored-by: thu <thu@treehouse.finance>

* fix: model dropdown search by configured model (#3047)

* bump version (#3082) (#3083)

Co-authored-by: Hoang Ha <64120343+hahuyhoang411@users.noreply.github.com>

* Update cortex cpp nightly to version 0.4.18 (#3072)

* Update cortex cpp nightly to version 0.4.17

* update linux downloadnitro

* c‌ortex 0.4.18

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Van Pham <64197333+Van-QA@users.noreply.github.com>

* chore: update download.ts (#3088)

infomation -> information

* chore: cortex version update (#3098)

* fix: handle words without space (#3101)

* fix: handle long thread title without space (#3107)

* fix: handle long thread title without space, and make searchbar autofocus inside model dropdown

* feat: enable right click to show setting on thread items (#3108)

* chore: Bump-cortex-0.4.17 (#3111)

* Update cortex cpp nightly to version 0.4.18 (#3114)

* Update cortex cpp nightly to version 0.4.18

* cortex 0.4.19

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Van Pham <64197333+Van-QA@users.noreply.github.com>

* Chore: Add stop token for Gemma 2b (#3125)

* add stop token

* Bump version

* fix: set specific version for terminate (#3126)

Signed-off-by: James <namnh0122@gmail.com>

* feat: add claude 3.5 sonnet (#3129)

Signed-off-by: James <namnh0122@gmail.com>

* feat: add options config spell check for chat input (#3131)

* fixed grammar nits (#3132)

* Update cortex cpp nightly to version 0.4.20

* fix: toggle button for expand log section on modal troubleshoot (#3130)

* fix: add tooltip messages toolbar (#3138)

* fix: handle error message when apikey is not setup (#3149)

* fix: title thread not updated on input edit title (#3148)

* merge dev

* fix move jan folder

* Update electron/preload.ts

* refactor

* Update electron/preload.ts

* fix wrong param

* use correct method

* chore: fix lint

---------

Signed-off-by: James <namnh0122@gmail.com>
Co-authored-by: Faisal Amir <urmauur@gmail.com>
Co-authored-by: Nathan <thu.nhuanh99@gmail.com>
Co-authored-by: thu <thu@treehouse.finance>
Co-authored-by: Van Pham <64197333+Van-QA@users.noreply.github.com>
Co-authored-by: Hoang Ha <64120343+hahuyhoang411@users.noreply.github.com>
Co-authored-by: jan-service-account <136811300+jan-service-account@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Ikko Eltociear Ashimine <eltociear@gmail.com>
Co-authored-by: NamH <NamNh0122@gmail.com>
Co-authored-by: Saurabh <saurabhrai1717@gmail.com>
Co-authored-by: Louis <louis@jan.ai>
2024-07-15 13:36:52 +07:00

60 lines
2.0 KiB
TypeScript

/**
* Exposes a set of APIs to the renderer process via the contextBridge object.
* @module preload
*/
import { APIEvents, APIRoutes, AppConfiguration, getAppConfigurations, updateAppConfiguration } from '@janhq/core/node'
import { contextBridge, ipcRenderer } from 'electron'
import { readdirSync } from 'fs'
const interfaces: { [key: string]: (...args: any[]) => any } = {}
// Loop over each route in APIRoutes
APIRoutes.forEach((method) => {
// For each method, create a function on the interfaces object
// This function invokes the method on the ipcRenderer with any provided arguments
interfaces[method] = (...args: any[]) => ipcRenderer.invoke(method, ...args)
})
// Loop over each method in APIEvents
APIEvents.forEach((method) => {
// For each method, create a function on the interfaces object
// This function sets up an event listener on the ipcRenderer for the method
// The handler for the event is provided as an argument to the function
interfaces[method] = (handler: any) => ipcRenderer.on(method, handler)
})
interfaces['changeDataFolder'] = async path => {
const appConfiguration: AppConfiguration = await ipcRenderer.invoke('getAppConfigurations')
const currentJanDataFolder = appConfiguration.data_folder
appConfiguration.data_folder = path
const reflect = require('@alumna/reflect')
const { err } = await reflect({
src: currentJanDataFolder,
dest: path,
recursive: true,
delete: false,
overwrite: true,
errorOnExist: false,
})
if (err) {
console.error(err)
throw err
}
await ipcRenderer.invoke('updateAppConfiguration', appConfiguration)
}
interfaces['isDirectoryEmpty'] = async path => {
const dirChildren = await readdirSync(path)
return dirChildren.filter((x) => x !== '.DS_Store').length === 0
}
// Expose the 'interfaces' object in the main world under the name 'electronAPI'
// This allows the renderer process to access these methods directly
contextBridge.exposeInMainWorld('electronAPI', {
...interfaces,
})