* feat: Support multiple model binaries * fix: Update downloadModel with multiple binaries handler * feat: Add 3 models with multiple binaries * chore: fix model download * fix: model file lookup & model path * chore: add .prettierrc * chore: refactor docs * chore: bump model version * fix(capybara): add filename * fix(codeninja): add file name + llama model path * fix(default): add llama model path * fix(deepseek coder): add filename * fix(deepseek 33B): add filename * fix(dolphin mixtral): add filename * fix(llama2-chat): add filename * fix(llama2-70B): add filename * fix(mistral 7b): add filename + model path * fix(bakllava): correct size model * fix(llava-7b): correct size model * fix(llava-13b): correct size model * fix(mixtral-8x7b): add file name + modelpath * fix(noramaid-7b): add file name + modelpath * fix(openchat-7b): add file name + modelpath * fix(openhermes-7b): add file name + modelpath * fix(phi2-3b): add file name + modelpath * fix(phind): add file name + modelpath * fix(solarslerp): add file name + modelpath * fix(starling): add file name + modelpath * fix(stealth): add file name + modelpath * fix(tinyllama): add file name + modelpath * fix(trinity): add file name + modelpath * fix(tulu): add file name + modelpath * fix(wizardcoder): add file name + modelpath * fix(yi): add file name + modelpath * update from source -> sources Signed-off-by: James <james@jan.ai> --------- Signed-off-by: James <james@jan.ai> Co-authored-by: hiro <vuonghoainam.work@gmail.com> Co-authored-by: hahuyhoang411 <hahuyhoanghhh41@gmail.com> Co-authored-by: James <james@jan.ai>
69 lines
1.9 KiB
TypeScript
69 lines
1.9 KiB
TypeScript
import { useEffect, useState } from 'react'
|
|
|
|
import { fs, joinPath } from '@janhq/core'
|
|
import { atom, useAtom } from 'jotai'
|
|
|
|
export const isShowNotificationAtom = atom<boolean>(false)
|
|
|
|
export const useSettings = () => {
|
|
const [isGPUModeEnabled, setIsGPUModeEnabled] = useState(false) // New state for GPU mode
|
|
const [showNotification, setShowNotification] = useAtom(
|
|
isShowNotificationAtom
|
|
)
|
|
|
|
useEffect(() => {
|
|
setTimeout(() => validateSettings, 3000)
|
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
}, [])
|
|
|
|
const validateSettings = async () => {
|
|
readSettings().then((settings) => {
|
|
if (
|
|
settings &&
|
|
settings.notify &&
|
|
((settings.nvidia_driver?.exist && !settings.cuda?.exist) ||
|
|
!settings.nvidia_driver?.exist)
|
|
) {
|
|
setShowNotification(true)
|
|
}
|
|
|
|
// Check if run_mode is 'gpu' or 'cpu' and update state accordingly
|
|
setIsGPUModeEnabled(settings?.run_mode === 'gpu')
|
|
})
|
|
}
|
|
|
|
const readSettings = async () => {
|
|
if (!window?.core?.api) {
|
|
return
|
|
}
|
|
const settingsFile = await joinPath(['file://settings', 'settings.json'])
|
|
if (await fs.existsSync(settingsFile)) {
|
|
const settings = await fs.readFileSync(settingsFile, 'utf-8')
|
|
return typeof settings === 'object' ? settings : JSON.parse(settings)
|
|
}
|
|
return {}
|
|
}
|
|
const saveSettings = async ({
|
|
runMode,
|
|
notify,
|
|
}: {
|
|
runMode?: string | undefined
|
|
notify?: boolean | undefined
|
|
}) => {
|
|
const settingsFile = await joinPath(['file://settings', 'settings.json'])
|
|
const settings = await readSettings()
|
|
if (runMode != null) settings.run_mode = runMode
|
|
if (notify != null) settings.notify = notify
|
|
await fs.writeFileSync(settingsFile, JSON.stringify(settings))
|
|
}
|
|
|
|
return {
|
|
showNotification,
|
|
isGPUModeEnabled,
|
|
readSettings,
|
|
saveSettings,
|
|
setShowNotification,
|
|
validateSettings,
|
|
}
|
|
}
|