@ -30,6 +30,18 @@ export interface Config {
|
||||
webSearch: ConfigWebSearch
|
||||
}
|
||||
|
||||
function validateConfig(config: Config) {
|
||||
const ai = config.ai
|
||||
if (ai.provider !== 'ollama' && !ai.apiKey) return false
|
||||
if (typeof ai.contextSize !== 'undefined' && ai.contextSize < 0) return false
|
||||
|
||||
const ws = config.webSearch
|
||||
if (!ws.apiKey) return false
|
||||
if (typeof ws.concurrencyLimit !== 'undefined' && ws.concurrencyLimit! < 1)
|
||||
return false
|
||||
return true
|
||||
}
|
||||
|
||||
export const useConfigStore = defineStore('config', () => {
|
||||
const config = useLocalStorage<Config>('deep-research-config', {
|
||||
ai: {
|
||||
@ -47,6 +59,7 @@ export const useConfigStore = defineStore('config', () => {
|
||||
'dismiss-update-version',
|
||||
'',
|
||||
)
|
||||
const isConfigValid = computed(() => validateConfig(config.value))
|
||||
|
||||
const aiApiBase = computed(() => {
|
||||
if (config.value.ai.provider === 'openrouter') {
|
||||
@ -65,6 +78,7 @@ export const useConfigStore = defineStore('config', () => {
|
||||
|
||||
return {
|
||||
config: skipHydrate(config),
|
||||
isConfigValid,
|
||||
aiApiBase,
|
||||
showConfigManager,
|
||||
dismissUpdateVersion: skipHydrate(dismissUpdateVersion),
|
||||
|
Reference in New Issue
Block a user