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 })
}
}