70 lines
2.0 KiB
TypeScript
70 lines
2.0 KiB
TypeScript
import { localStorageKey } from '@/constants/localStorage'
|
|
import type { ModelInfo } from '@janhq/core'
|
|
|
|
export const getLastUsedModel = (): {
|
|
provider: string
|
|
model: string
|
|
} | null => {
|
|
try {
|
|
const stored = localStorage.getItem(localStorageKey.lastUsedModel)
|
|
return stored ? JSON.parse(stored) : null
|
|
} catch (error) {
|
|
console.debug('Failed to get last used model from localStorage:', error)
|
|
return null
|
|
}
|
|
}
|
|
|
|
// Helper function to determine which model to start
|
|
export const getModelToStart = (params: {
|
|
selectedModel?: ModelInfo | null
|
|
selectedProvider?: string | null
|
|
getProviderByName: (name: string) => ModelProvider | undefined
|
|
}): { model: string; provider: ModelProvider } | null => {
|
|
const { selectedModel, selectedProvider, getProviderByName } = params
|
|
|
|
// Use last used model if available
|
|
const lastUsedModel = getLastUsedModel()
|
|
if (lastUsedModel) {
|
|
const provider = getProviderByName(lastUsedModel.provider)
|
|
if (provider && provider.models.some((m) => m.id === lastUsedModel.model)) {
|
|
return { model: lastUsedModel.model, provider }
|
|
} else {
|
|
// Last used model not found under provider, fallback to first llamacpp model
|
|
const llamacppProvider = getProviderByName('llamacpp')
|
|
if (
|
|
llamacppProvider &&
|
|
llamacppProvider.models &&
|
|
llamacppProvider.models.length > 0
|
|
) {
|
|
return {
|
|
model: llamacppProvider.models[0].id,
|
|
provider: llamacppProvider,
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Use selected model if available
|
|
if (selectedModel && selectedProvider) {
|
|
const provider = getProviderByName(selectedProvider)
|
|
if (provider) {
|
|
return { model: selectedModel.id, provider }
|
|
}
|
|
}
|
|
|
|
// Use first model from llamacpp provider
|
|
const llamacppProvider = getProviderByName('llamacpp')
|
|
if (
|
|
llamacppProvider &&
|
|
llamacppProvider.models &&
|
|
llamacppProvider.models.length > 0
|
|
) {
|
|
return {
|
|
model: llamacppProvider.models[0].id,
|
|
provider: llamacppProvider,
|
|
}
|
|
}
|
|
|
|
return null
|
|
}
|