Merge pull request #3983 from janhq/fix/maintain-model-settings-allow-modelyml-editing
fix: migrate model settings and parameters but still allow model.yml editing
This commit is contained in:
commit
1643b9dd86
@ -123,10 +123,10 @@ export class CortexAPI implements ICortexAPI {
|
||||
* @param model
|
||||
* @returns
|
||||
*/
|
||||
updateModel(model: object): Promise<void> {
|
||||
updateModel(model: Partial<Model>): Promise<void> {
|
||||
return this.queue.add(() =>
|
||||
ky
|
||||
.patch(`${API_URL}/v1/models/${model}`, { json: { model } })
|
||||
.patch(`${API_URL}/v1/models/${model.id}`, { json: { ...model } })
|
||||
.json()
|
||||
.then()
|
||||
)
|
||||
|
||||
@ -193,7 +193,13 @@ export default class JanModelExtension extends ModelExtension {
|
||||
]) // Copied models
|
||||
: model.sources[0].url, // Symlink models,
|
||||
model.name
|
||||
)
|
||||
).then((e) => {
|
||||
this.updateModel({
|
||||
id: model.id,
|
||||
...model.settings,
|
||||
...model.parameters,
|
||||
} as Partial<Model>)
|
||||
})
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@ -2,7 +2,17 @@ import { PropsWithChildren, useCallback, useEffect } from 'react'
|
||||
|
||||
import React from 'react'
|
||||
|
||||
import { DownloadEvent, events, DownloadState, ModelEvent } from '@janhq/core'
|
||||
import {
|
||||
DownloadEvent,
|
||||
events,
|
||||
DownloadState,
|
||||
ModelEvent,
|
||||
ExtensionTypeEnum,
|
||||
ModelExtension,
|
||||
ModelManager,
|
||||
Model,
|
||||
} from '@janhq/core'
|
||||
|
||||
import { useSetAtom } from 'jotai'
|
||||
|
||||
import { setDownloadStateAtom } from '@/hooks/useDownloadState'
|
||||
@ -18,6 +28,7 @@ import EventHandler from './EventHandler'
|
||||
import ModelImportListener from './ModelImportListener'
|
||||
import QuickAskListener from './QuickAskListener'
|
||||
|
||||
import { extensionManager } from '@/extension'
|
||||
import {
|
||||
InstallingExtensionState,
|
||||
removeInstallingExtensionAtom,
|
||||
@ -83,12 +94,24 @@ const EventListenerWrapper = ({ children }: PropsWithChildren) => {
|
||||
)
|
||||
|
||||
const onFileDownloadSuccess = useCallback(
|
||||
(state: DownloadState) => {
|
||||
async (state: DownloadState) => {
|
||||
console.debug('onFileDownloadSuccess', state)
|
||||
if (state.downloadType !== 'extension') {
|
||||
// Update model metadata accordingly
|
||||
const model = ModelManager.instance().models.get(state.modelId)
|
||||
if (model) {
|
||||
await extensionManager
|
||||
.get<ModelExtension>(ExtensionTypeEnum.Model)
|
||||
?.updateModel({
|
||||
id: model.id,
|
||||
...model.settings,
|
||||
...model.parameters,
|
||||
} as Partial<Model>)
|
||||
.catch((e) => console.debug(e))
|
||||
}
|
||||
state.downloadState = 'end'
|
||||
setDownloadState(state)
|
||||
if (state.percent !== 0) removeDownloadingModel(state.modelId)
|
||||
removeDownloadingModel(state.modelId)
|
||||
}
|
||||
events.emit(ModelEvent.OnModelsUpdate, {})
|
||||
},
|
||||
|
||||
@ -35,10 +35,6 @@ const useModels = () => {
|
||||
const localModels = (await getModels()).map((e) => ({
|
||||
...e,
|
||||
name: ModelManager.instance().models.get(e.id)?.name ?? e.id,
|
||||
settings:
|
||||
ModelManager.instance().models.get(e.id)?.settings ?? e.settings,
|
||||
parameters:
|
||||
ModelManager.instance().models.get(e.id)?.parameters ?? e.parameters,
|
||||
metadata:
|
||||
ModelManager.instance().models.get(e.id)?.metadata ?? e.metadata,
|
||||
}))
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user