diff --git a/src/settings/versions/index.ts b/src/settings/versions/index.ts index 7c5687e..7e92679 100644 --- a/src/settings/versions/index.ts +++ b/src/settings/versions/index.ts @@ -1,5 +1,5 @@ export type { FewShotExample } from "./shared"; -export { DEFAULT_AUTOCOMPLETE_SETTINGS as DEFAULT_SETTINGS, settingsSchema, pluginDataSchema } from "./v1/v1"; +export { DEFAULT_SETTINGS as DEFAULT_SETTINGS, settingsSchema, pluginDataSchema } from "./v1/v1"; export type { Settings, Trigger, PluginData } from "./v1/v1"; export { MAX_DELAY, MAX_FREQUENCY_PENALTY, diff --git a/src/settings/versions/migration.ts b/src/settings/versions/migration.ts index 9d61ecb..0fe95b2 100644 --- a/src/settings/versions/migration.ts +++ b/src/settings/versions/migration.ts @@ -9,7 +9,7 @@ import { settingsSchema as settingsSchemaV0 } from "./v0/v0"; import { - DEFAULT_AUTOCOMPLETE_SETTINGS as DEFAULT_SETTINGS_V1, + DEFAULT_SETTINGS as DEFAULT_SETTINGS_V1, Settings as SettingsV1, settingsSchema as settingsSchemaV1 } from "./v1/v1"; diff --git a/src/settings/versions/v1/v1.ts b/src/settings/versions/v1/v1.ts index 25cbe93..2fc29dd 100644 --- a/src/settings/versions/v1/v1.ts +++ b/src/settings/versions/v1/v1.ts @@ -95,7 +95,7 @@ export const pluginDataSchema = z.object({ }).strict(); -export const DEFAULT_AUTOCOMPLETE_SETTINGS = { +export const DEFAULT_SETTINGS = { // version: "1", // General settings diff --git a/src/types/settings.test.ts b/src/types/settings.test.ts index 9bbec26..7faeb1e 100644 --- a/src/types/settings.test.ts +++ b/src/types/settings.test.ts @@ -1,7 +1,7 @@ import { DEFAULT_MODELS } from '../constants' -import { DEFAULT_AUTOCOMPLETE_SETTINGS } from '../settings/versions/v1/v1' +import { DEFAULT_SETTINGS } from '../settings/versions/v1/v1' -import { SETTINGS_SCHEMA_VERSION, parseInfioSettings } from './settings' +import { parseInfioSettings } from './settings' describe('parseSmartCopilotSettings', () => { it('should return default values for empty input', () => { @@ -15,7 +15,25 @@ describe('parseSmartCopilotSettings', () => { geminiApiKey: '', groqApiKey: '', deepseekApiKey: '', - chatModelId: 'deepseek-chat', + chatModelId: '', + chatModelProvider: 'OpenRouter', + applyModelId: '', + applyModelProvider: 'OpenRouter', + embeddingModelId: '', + embeddingModelProvider: 'Google', + defaultProvider: 'OpenRouter', + alibabaQwenProvider: { + name: 'AlibabaQwen', + apiKey: '', + baseUrl: '', + useCustomUrl: false, + }, + anthropicProvider: { + name: 'Anthropic', + apiKey: '', + baseUrl: '', + useCustomUrl: false, + }, ollamaChatModel: { baseUrl: '', model: '', @@ -25,7 +43,6 @@ describe('parseSmartCopilotSettings', () => { apiKey: '', model: '', }, - applyModelId: 'deepseek-chat', ollamaApplyModel: { baseUrl: '', model: '', @@ -35,7 +52,6 @@ describe('parseSmartCopilotSettings', () => { apiKey: '', model: '', }, - embeddingModelId: 'text-embedding-004', ollamaEmbeddingModel: { baseUrl: '', model: '', @@ -55,7 +71,7 @@ describe('parseSmartCopilotSettings', () => { azureOAIApiSettings: '', openAIApiSettings: '', ollamaApiSettings: '', - triggers: DEFAULT_AUTOCOMPLETE_SETTINGS.triggers, + triggers: DEFAULT_SETTINGS.triggers, delay: 500, modelOptions: { temperature: 1, @@ -64,8 +80,8 @@ describe('parseSmartCopilotSettings', () => { presence_penalty: 0, max_tokens: 800, }, - systemMessage: DEFAULT_AUTOCOMPLETE_SETTINGS.systemMessage, - fewShotExamples: DEFAULT_AUTOCOMPLETE_SETTINGS.fewShotExamples, + systemMessage: DEFAULT_SETTINGS.systemMessage, + fewShotExamples: DEFAULT_SETTINGS.fewShotExamples, userMessageTemplate: '{{prefix}}{{suffix}}', chainOfThoughRemovalRegex: '(.|\\n)*ANSWER:', dontIncludeDataviews: true, @@ -77,6 +93,60 @@ describe('parseSmartCopilotSettings', () => { ignoredTags: '', cacheSuggestions: true, debugMode: false, + deepseekProvider: { + name: 'DeepSeek', + apiKey: '', + baseUrl: '', + useCustomUrl: false, + }, + googleProvider: { + name: 'Google', + apiKey: '', + baseUrl: '', + useCustomUrl: false, + }, + groqProvider: { + name: 'Groq', + apiKey: '', + baseUrl: '', + useCustomUrl: false, + }, + infioProvider: { + name: 'Infio', + apiKey: '', + baseUrl: '', + useCustomUrl: false, + }, + ollamaProvider: { + name: 'Ollama', + apiKey: '', + baseUrl: '', + useCustomUrl: false, + }, + openaiProvider: { + name: 'OpenAI', + apiKey: '', + baseUrl: '', + useCustomUrl: false, + }, + openaicompatibleProvider: { + name: 'OpenAICompatible', + apiKey: '', + baseUrl: '', + useCustomUrl: true, + }, + openrouterProvider: { + name: 'OpenRouter', + apiKey: '', + baseUrl: '', + useCustomUrl: false, + }, + siliconflowProvider: { + name: 'SiliconFlow', + apiKey: '', + baseUrl: '', + useCustomUrl: false, + }, }) }) }) @@ -110,7 +180,25 @@ describe('settings migration', () => { geminiApiKey: '', groqApiKey: '', deepseekApiKey: '', - chatModelId: 'deepseek-chat', + chatModelId: '', + chatModelProvider: 'OpenRouter', + applyModelId: '', + applyModelProvider: 'OpenRouter', + embeddingModelId: '', + embeddingModelProvider: 'Google', + defaultProvider: 'OpenRouter', + alibabaQwenProvider: { + name: 'AlibabaQwen', + apiKey: '', + baseUrl: '', + useCustomUrl: false, + }, + anthropicProvider: { + name: 'Anthropic', + apiKey: '', + baseUrl: '', + useCustomUrl: false, + }, ollamaChatModel: { baseUrl: '', model: '', @@ -120,7 +208,6 @@ describe('settings migration', () => { apiKey: '', model: '', }, - applyModelId: 'deepseek-chat', ollamaApplyModel: { baseUrl: '', model: '', @@ -130,7 +217,6 @@ describe('settings migration', () => { apiKey: '', model: '', }, - embeddingModelId: 'text-embedding-004', ollamaEmbeddingModel: { baseUrl: '', model: '', @@ -150,7 +236,7 @@ describe('settings migration', () => { azureOAIApiSettings: '', openAIApiSettings: '', ollamaApiSettings: '', - triggers: DEFAULT_AUTOCOMPLETE_SETTINGS.triggers, + triggers: DEFAULT_SETTINGS.triggers, delay: 500, modelOptions: { temperature: 1, @@ -159,8 +245,8 @@ describe('settings migration', () => { presence_penalty: 0, max_tokens: 800, }, - systemMessage: DEFAULT_AUTOCOMPLETE_SETTINGS.systemMessage, - fewShotExamples: DEFAULT_AUTOCOMPLETE_SETTINGS.fewShotExamples, + systemMessage: DEFAULT_SETTINGS.systemMessage, + fewShotExamples: DEFAULT_SETTINGS.fewShotExamples, userMessageTemplate: '{{prefix}}{{suffix}}', chainOfThoughRemovalRegex: '(.|\\n)*ANSWER:', dontIncludeDataviews: true, @@ -172,6 +258,60 @@ describe('settings migration', () => { ignoredTags: '', cacheSuggestions: true, debugMode: false, + deepseekProvider: { + name: 'DeepSeek', + apiKey: '', + baseUrl: '', + useCustomUrl: false, + }, + googleProvider: { + name: 'Google', + apiKey: '', + baseUrl: '', + useCustomUrl: false, + }, + groqProvider: { + name: 'Groq', + apiKey: '', + baseUrl: '', + useCustomUrl: false, + }, + infioProvider: { + name: 'Infio', + apiKey: '', + baseUrl: '', + useCustomUrl: false, + }, + ollamaProvider: { + name: 'Ollama', + apiKey: '', + baseUrl: '', + useCustomUrl: false, + }, + openaiProvider: { + name: 'OpenAI', + apiKey: '', + baseUrl: '', + useCustomUrl: false, + }, + openaicompatibleProvider: { + name: 'OpenAICompatible', + apiKey: '', + baseUrl: '', + useCustomUrl: true, + }, + openrouterProvider: { + name: 'OpenRouter', + apiKey: '', + baseUrl: '', + useCustomUrl: false, + }, + siliconflowProvider: { + name: 'SiliconFlow', + apiKey: '', + baseUrl: '', + useCustomUrl: false, + }, }) }) }) diff --git a/src/types/settings.ts b/src/types/settings.ts index b0957ef..3abbbb7 100644 --- a/src/types/settings.ts +++ b/src/types/settings.ts @@ -9,11 +9,11 @@ import { fewShotExampleSchema, modelOptionsSchema } from '../settings/versions/shared'; -import { DEFAULT_AUTOCOMPLETE_SETTINGS } from "../settings/versions/v1/v1"; +import { DEFAULT_SETTINGS } from "../settings/versions/v1/v1"; import { ApiProvider } from '../types/llm/model'; import { isRegexValid, isValidIgnorePattern } from '../utils/auto-complete'; -export const SETTINGS_SCHEMA_VERSION = 0.1 +export const SETTINGS_SCHEMA_VERSION = 0.4 const InfioProviderSchema = z.object({ name: z.literal('Infio'), @@ -328,29 +328,11 @@ type Migration = { const MIGRATIONS: Migration[] = [ { - fromVersion: 0, - toVersion: 1, + fromVersion: 0.1, + toVersion: 0.4, migrate: (data) => { const newData = { ...data } - if ( - 'ollamaBaseUrl' in newData && - typeof newData.ollamaBaseUrl === 'string' - ) { - newData.ollamaChatModel = { - baseUrl: newData.ollamaBaseUrl, - model: '', - } - newData.ollamaApplyModel = { - baseUrl: newData.ollamaBaseUrl, - model: '', - } - newData.ollamaEmbeddingModel = { - baseUrl: newData.ollamaBaseUrl, - model: '', - } - delete newData.ollamaBaseUrl - } - + newData.version = SETTINGS_SCHEMA_VERSION return newData }, }, @@ -383,7 +365,6 @@ export function parseInfioSettings(data: unknown): InfioSettings { const migratedData = migrateSettings(data as Record) return InfioSettingsSchema.parse(migratedData) } catch (error) { - // console.warn('Invalid settings provided, using defaults:', error) - return InfioSettingsSchema.parse({ ...DEFAULT_AUTOCOMPLETE_SETTINGS }) + return InfioSettingsSchema.parse({ ...DEFAULT_SETTINGS }) } }