@ -19,7 +19,7 @@
|
||||
}>()
|
||||
|
||||
const { t, locale } = useI18n()
|
||||
const { config, showConfigManager } = storeToRefs(useConfigStore())
|
||||
const { showConfigManager, isConfigValid } = storeToRefs(useConfigStore())
|
||||
const toast = useToast()
|
||||
|
||||
const reasoningContent = ref('')
|
||||
@ -41,10 +41,7 @@
|
||||
)
|
||||
|
||||
async function getFeedback() {
|
||||
const aiConfig = config.value.ai
|
||||
const webSearchConfig = config.value.webSearch
|
||||
|
||||
if (!aiConfig.model || !aiConfig.apiKey || !webSearchConfig.apiKey) {
|
||||
if (!isConfigValid.value) {
|
||||
toast.add({
|
||||
title: t('index.missingConfigTitle'),
|
||||
description: t('index.missingConfigDescription'),
|
||||
|
@ -65,9 +65,6 @@
|
||||
researchResultInjectionKey,
|
||||
} from '~/constants/injection-keys'
|
||||
|
||||
const { t } = useI18n()
|
||||
const { config } = storeToRefs(useConfigStore())
|
||||
const toast = useToast()
|
||||
const version = useRuntimeConfig().public.version
|
||||
|
||||
const configManagerRef = ref<InstanceType<typeof ConfigManager>>()
|
||||
@ -93,18 +90,6 @@
|
||||
provide(researchResultInjectionKey, researchResult)
|
||||
|
||||
async function generateFeedback() {
|
||||
const aiConfig = config.value.ai
|
||||
const webSearchConfig = config.value.webSearch
|
||||
|
||||
if (!aiConfig.model || !aiConfig.apiKey || !webSearchConfig.apiKey) {
|
||||
toast.add({
|
||||
title: t('index.missingConfigTitle'),
|
||||
description: t('index.missingConfigDescription'),
|
||||
color: 'error',
|
||||
})
|
||||
configManagerRef.value?.show()
|
||||
return
|
||||
}
|
||||
feedbackRef.value?.getFeedback()
|
||||
}
|
||||
|
||||
|
@ -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