jan/web/services/appService.ts
Faisal Amir daa7c0ca21
feat: better hardware setting (#4471)
* feat: better hardware setting

* chore: update layout

* feat: better hardware setting

* chore: fix title section

* chore: added hardware engine management

* chore: integrate gpus and enable set gpu activate

* chore: update calculate ram and vram

* chore: update calulate vram and ram used

* fix: set active gpus

* chore: fix progress bar spacing

* chore: always update cache vram gpu

* chore: update cpu usage percentage

* chore: fix type usage cpu

* chore: update ram cpus usage getsystemmonitor from new api harware engine management system

* test: update test case data using hardware management extension

* chore: resolve conflict lock json

* chore: cleanup app services

* chore: update type OperationSystemInfo

* chore: update app service

* chore: show list gpus on system monitor

* chore: remove monitoring extension

* chore: update test case app service

* chore: remove unused hooks useGpusSetting

* chore: remove monitor from shource index

* chore: fix test core

* chore: update gpu and cpu info on engine management ext

* chore: fix app service test

* chore: update test appService include cpu info

* chore: filter gpus show or hide on system monitor based activated gpu

* chore: remove unused run_mode

* chore: remove tensort

* chore: update check gpu run_mode

* chore: handle undefined gpus

* chore: cleanup PR

* chore: cleanup process node error

* chore: fix type
2025-02-03 22:01:08 +07:00

62 lines
1.5 KiB
TypeScript

import {
ExtensionTypeEnum,
HardwareManagementExtension,
SupportedPlatform,
SystemInformation,
GpuSetting,
GpuSettingInfo,
} from '@janhq/core'
import { getDefaultStore } from 'jotai'
import { toaster } from '@/containers/Toast'
import { extensionManager } from '@/extension'
import { LocalEngineDefaultVariantAtom } from '@/helpers/atoms/App.atom'
export const appService = {
systemInformation: async (): Promise<SystemInformation | undefined> => {
const selectedVariants = getDefaultStore().get(
LocalEngineDefaultVariantAtom
)
const hardwareExtension =
extensionManager?.get<HardwareManagementExtension>(
ExtensionTypeEnum.Hardware
)
if (!hardwareExtension) {
console.warn('Hardware extension not found')
return undefined
}
const hardwareInfo = await hardwareExtension?.getHardware()
const gpuSettingInfo: GpuSetting | undefined = {
gpus: hardwareInfo.gpus as GpuSettingInfo[],
vulkan: isMac ? false : selectedVariants.includes('vulkan'),
cpu: hardwareInfo.cpu,
}
const updateOsInfo = {
platform: PLATFORM as SupportedPlatform,
arch: hardwareInfo.cpu.arch,
freeMem: hardwareInfo.ram.available,
totalMem: hardwareInfo.ram.total,
}
return {
gpuSetting: gpuSettingInfo,
osInfo: updateOsInfo,
}
},
showToast: (title: string, description: string) => {
toaster({
title,
description: description,
})
},
}