diff --git a/src/vs/workbench/contrib/void/browser/quickEditActions.ts b/src/vs/workbench/contrib/void/browser/quickEditActions.ts index 4159a7fd..63deba31 100644 --- a/src/vs/workbench/contrib/void/browser/quickEditActions.ts +++ b/src/vs/workbench/contrib/void/browser/quickEditActions.ts @@ -13,7 +13,7 @@ import { roundRangeToLines } from './sidebarActions.js'; import { VOID_CTRL_K_ACTION_ID } from './actionIDs.js'; import { localize2 } from '../../../../nls.js'; import { IMetricsService } from '../common/metricsService.js'; - +import { ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js'; export type QuickEditPropsType = { diffareaid: number, @@ -42,7 +42,7 @@ registerAction2(class extends Action2 { keybinding: { primary: KeyMod.CtrlCmd | KeyCode.KeyK, weight: KeybindingWeight.VoidExtension, - when: 'editorFocus && !terminalFocus', + when: ContextKeyExpr.deserialize('editorFocus && !terminalFocus'), } }); } diff --git a/src/vs/workbench/contrib/void/common/modelCapabilities.ts b/src/vs/workbench/contrib/void/common/modelCapabilities.ts index 1e56a0d5..0b44d5aa 100644 --- a/src/vs/workbench/contrib/void/common/modelCapabilities.ts +++ b/src/vs/workbench/contrib/void/common/modelCapabilities.ts @@ -111,6 +111,7 @@ export const defaultModelsOfProvider = { 'anthropic/claude-3.5-sonnet', 'deepseek/deepseek-r1', 'deepseek/deepseek-r1-zero:free', + 'mistralai/devstral-small:free' // 'openrouter/quasar-alpha', // 'google/gemini-2.5-pro-preview-03-25', // 'mistralai/codestral-2501', @@ -128,6 +129,7 @@ export const defaultModelsOfProvider = { ], mistral: [ // https://docs.mistral.ai/getting-started/models/models_overview/ 'codestral-latest', + 'devstral-small-latest', 'mistral-large-latest', 'mistral-medium-latest', 'ministral-3b-latest', @@ -263,6 +265,12 @@ const openSourceModelOptions_assumingOAICompat = { reasoningCapabilities: false, contextWindow: 32_000, reservedOutputTokenSpace: 4_096, }, + 'devstral': { + supportsFIM: false, + supportsSystemMessage: 'system-role', + reasoningCapabilities: false, + contextWindow: 131_000, reservedOutputTokenSpace: 8_192, + }, 'openhands-lm-32b': { // https://www.all-hands.dev/blog/introducing-openhands-lm-32b----a-strong-open-coding-agent-model supportsFIM: false, supportsSystemMessage: 'system-role', @@ -418,6 +426,7 @@ const extensiveModelOptionsFallback: VoidStaticProviderInfo['modelOptionsFallbac if (lower.includes('qwq')) { return toFallback(openSourceModelOptions_assumingOAICompat, 'qwq') } if (lower.includes('phi4')) return toFallback(openSourceModelOptions_assumingOAICompat, 'phi4') if (lower.includes('codestral')) return toFallback(openSourceModelOptions_assumingOAICompat, 'codestral') + if (lower.includes('devstral')) return toFallback(openSourceModelOptions_assumingOAICompat, 'devstral') if (lower.includes('gemma')) return toFallback(openSourceModelOptions_assumingOAICompat, 'gemma') @@ -924,6 +933,17 @@ const mistralModelOptions = { // https://mistral.ai/products/la-plateforme#prici supportsSystemMessage: 'system-role', reasoningCapabilities: false, }, + + 'devstral-small-latest': { //https://openrouter.ai/mistralai/devstral-small:free + contextWindow: 131_000, + reservedOutputTokenSpace: 8_192, + cost: { input: 0, output: 0 }, + supportsFIM: false, + downloadable: { sizeGb: 14 }, //https://ollama.com/library/devstral + supportsSystemMessage: 'system-role', + reasoningCapabilities: false, + }, + 'ministral-8b-latest': { // ollama 'mistral' contextWindow: 131_000, reservedOutputTokenSpace: 4_096, @@ -1099,10 +1119,19 @@ const ollamaModelOptions = { supportsSystemMessage: 'system-role', reasoningCapabilities: { supportsReasoning: true, canIOReasoning: false, canTurnOffReasoning: false, openSourceThinkTags: ['', ''] }, }, + 'devstral:latest': { + contextWindow: 131_000, + reservedOutputTokenSpace: 8_192, + cost: { input: 0, output: 0 }, + downloadable: { sizeGb: 14 }, + supportsFIM: false, + supportsSystemMessage: 'system-role', + reasoningCapabilities: false, + }, } as const satisfies Record -export const ollamaRecommendedModels = ['qwen2.5-coder:1.5b', 'llama3.1', 'qwq', 'deepseek-r1'] as const satisfies (keyof typeof ollamaModelOptions)[] +export const ollamaRecommendedModels = ['qwen2.5-coder:1.5b', 'llama3.1', 'qwq', 'deepseek-r1', 'devstral:latest'] as const satisfies (keyof typeof ollamaModelOptions)[] const vLLMSettings: VoidStaticProviderInfo = { @@ -1257,6 +1286,14 @@ const openRouterModelOptions_assumingOpenAICompat = { downloadable: false, reasoningCapabilities: false, }, + 'mistralai/devstral-small:free': { + ...openSourceModelOptions_assumingOAICompat.devstral, + contextWindow: 130_000, + reservedOutputTokenSpace: null, + cost: { input: 0, output: 0 }, + downloadable: false, + reasoningCapabilities: false, + }, 'qwen/qwen-2.5-coder-32b-instruct': { ...openSourceModelOptions_assumingOAICompat['qwen2.5coder'], contextWindow: 33_000,