* chore: add react developer tools to electron * feat: add small convert modal * feat: separate modals and add hugging face extension * feat: fully implement hugging face converter * fix: forgot to uncomment this... * fix: typo * feat: try hf-to-gguf script first and then use convert.py HF-to-GGUF has support for some unusual models maybe using convert.py first would be better but we can change the usage order later * fix: pre-install directory changed * fix: sometimes exit code is undefined * chore: download additional files for qwen * fix: event handling changed * chore: add one more necessary package * feat: download gguf-py from llama.cpp * fix: cannot interpret wildcards on GNU tar Co-authored-by: hiento09 <136591877+hiento09@users.noreply.github.com> --------- Co-authored-by: hiento09 <136591877+hiento09@users.noreply.github.com>
45 lines
1.2 KiB
TypeScript
45 lines
1.2 KiB
TypeScript
import { HuggingFaceRepoData } from '@janhq/core'
|
|
import { atom } from 'jotai'
|
|
|
|
export const repoIDAtom = atom<string | null>(null)
|
|
export const loadingAtom = atom<boolean>(false)
|
|
export const fetchErrorAtom = atom<Error | null>(null)
|
|
export const conversionStatusAtom = atom<
|
|
| 'downloading'
|
|
| 'converting'
|
|
| 'quantizing'
|
|
| 'done'
|
|
| 'stopping'
|
|
| 'generating'
|
|
| null
|
|
>(null)
|
|
export const conversionErrorAtom = atom<Error | null>(null)
|
|
const _repoDataAtom = atom<HuggingFaceRepoData | null>(null)
|
|
const _unsupportedAtom = atom<boolean>(false)
|
|
|
|
export const resetAtom = atom(null, (_get, set) => {
|
|
set(repoIDAtom, null)
|
|
set(loadingAtom, false)
|
|
set(fetchErrorAtom, null)
|
|
set(conversionStatusAtom, null)
|
|
set(conversionErrorAtom, null)
|
|
set(_repoDataAtom, null)
|
|
set(_unsupportedAtom, false)
|
|
})
|
|
|
|
export const repoDataAtom = atom(
|
|
(get) => get(_repoDataAtom),
|
|
(_get, set, repoData: HuggingFaceRepoData) => {
|
|
set(_repoDataAtom, repoData)
|
|
if (
|
|
!repoData.tags.includes('transformers') ||
|
|
(!repoData.tags.includes('pytorch') &&
|
|
!repoData.tags.includes('safetensors'))
|
|
) {
|
|
set(_unsupportedAtom, true)
|
|
}
|
|
}
|
|
)
|
|
|
|
export const unsupportedAtom = atom((get) => get(_unsupportedAtom))
|