Faisal Amir 2a0601f75a
feat: remote engine management (#4364)
* feat: remote engine management

* chore: fix linter issue

* chore: remove unused imports

* fix: populate engines, models and legacy settings (#4403)

* fix: populate engines, models and legacy settings

* chore: legacy logics update configured remote engine

* fix: check exist path before reading

* fix: engines and models persist - race condition

* chore: update issue state

* test: update test cases

* chore: bring back Cortex extension settings

* chore: setup button gear / plus based apikey

* chore: fix remote engine from welcome screen

* chore: resolve linter issue

* chore: support request headers template

* chore: update engines using header_template instead of api_key_template

* chore: update models on changes

* fix: anthropic response template

* chore: fix welcome screen and debounce update value input

* chore: update engines list on changes

* chore: update engines list on change

* chore: update desc form add modal remote engines

* chore: bump cortex version to latest RC

* chore: fix linter

* fix: transform payload of Anthropic and OpenAI

* fix: typo

* fix: openrouter model id for auto routing

* chore: remove remote engine URL setting

* chore: add cohere engine and model support

* fix: should not clean on app launch - models list display issue

* fix: local engine check logic

* chore: bump app version to latest release 0.5.13

* test: fix failed tests

---------

Co-authored-by: Louis <louis@jan.ai>
2025-01-14 17:29:56 +07:00

67 lines
2.0 KiB
TypeScript

import { InferenceEngine } from '@janhq/core'
import { useAtomValue } from 'jotai'
import Advanced from '@/screens/Settings/Advanced'
import AppearanceOptions from '@/screens/Settings/Appearance'
import ExtensionCatalog from '@/screens/Settings/CoreExtensions'
import Engines from '@/screens/Settings/Engines'
import LocalEngineSettings from '@/screens/Settings/Engines/LocalEngineSettings'
import RemoteEngineSettings from '@/screens/Settings/Engines/RemoteEngineSettings'
import ExtensionSetting from '@/screens/Settings/ExtensionSetting'
import Hotkeys from '@/screens/Settings/Hotkeys'
import MyModels from '@/screens/Settings/MyModels'
import Privacy from '@/screens/Settings/Privacy'
import { isLocalEngine } from '@/utils/modelEngine'
import { installedEnginesAtom } from '@/helpers/atoms/Engines.atom'
import { selectedSettingAtom } from '@/helpers/atoms/Setting.atom'
const SettingDetail = () => {
const selectedSetting = useAtomValue(selectedSettingAtom)
const engines = useAtomValue(installedEnginesAtom)
switch (selectedSetting) {
case 'Engines':
return <Engines />
case 'Extensions':
return <ExtensionCatalog />
case 'Preferences':
return <AppearanceOptions />
case 'Keyboard Shortcuts':
return <Hotkeys />
case 'Privacy':
return <Privacy />
case 'Advanced Settings':
return <Advanced />
case 'My Models':
return <MyModels />
default:
if (
!selectedSetting.includes('@janhq') &&
isLocalEngine(engines, selectedSetting as InferenceEngine)
) {
return (
<LocalEngineSettings engine={selectedSetting as InferenceEngine} />
)
} else if (
!selectedSetting.includes('@janhq') &&
!isLocalEngine(engines, selectedSetting as InferenceEngine)
) {
return (
<RemoteEngineSettings engine={selectedSetting as InferenceEngine} />
)
}
return <ExtensionSetting />
}
}
export default SettingDetail