From 131deb52ffcc3a1e36d4afd4b93241e23673e7bf Mon Sep 17 00:00:00 2001 From: marius-kilocode Date: Tue, 1 Sep 2026 12:35:57 +0200 Subject: [PATCH] refactor(vscode): share autocomplete FIM model selection --- .../autocomplete/AutocompleteServiceManager.ts | 14 +++----------- .../chat-autocomplete/ChatTextAreaAutocomplete.ts | 9 ++------- .../kilo-vscode/src/services/autocomplete/fim.ts | 8 +++++++- 3 files changed, 12 insertions(+), 19 deletions(-) diff --git a/packages/kilo-vscode/src/services/autocomplete/AutocompleteServiceManager.ts b/packages/kilo-vscode/src/services/autocomplete/AutocompleteServiceManager.ts index d7d5082816fc..1f5338fde651 100644 --- a/packages/kilo-vscode/src/services/autocomplete/AutocompleteServiceManager.ts +++ b/packages/kilo-vscode/src/services/autocomplete/AutocompleteServiceManager.ts @@ -11,12 +11,8 @@ import { disposeLog } from "./next-edit/log" import { NextEditSuggestionManager } from "./next-edit/NextEditSuggestionManager" import { toAllowedMercuryRecentSnippets } from "./next-edit/recentSnippetsAdapter" import type { KiloConnectionService } from "../cli-backend" -import { hasValidCredentials } from "./fim" -import { - DEFAULT_AUTOCOMPLETE_MODEL, - getAutocompleteModel, - getAutocompleteModelById, -} from "../../shared/autocomplete-models" +import { hasValidCredentials, fimModel as notebookModel } from "./fim" +import { DEFAULT_AUTOCOMPLETE_MODEL, getAutocompleteModel } from "../../shared/autocomplete-models" const CONFIG_SECTION = "kilo-code.new.autocomplete" @@ -24,11 +20,7 @@ export function selector(kind: "classic" | "next-edit"): vscode.DocumentSelector return kind === "classic" ? [{ scheme: "file" }, { scheme: "vscode-notebook-cell" }] : [{ scheme: "file" }] } -export function notebookModel(provider?: string, model?: string) { - const info = getAutocompleteModel(provider, model) - if (info.kind !== "edit") return info - return getAutocompleteModelById(info.fimModelID) -} +export { notebookModel } export interface AutocompleteServiceSettings { enableAutoTrigger?: boolean diff --git a/packages/kilo-vscode/src/services/autocomplete/chat-autocomplete/ChatTextAreaAutocomplete.ts b/packages/kilo-vscode/src/services/autocomplete/chat-autocomplete/ChatTextAreaAutocomplete.ts index 369906ea4a1a..3b48ce605ae0 100644 --- a/packages/kilo-vscode/src/services/autocomplete/chat-autocomplete/ChatTextAreaAutocomplete.ts +++ b/packages/kilo-vscode/src/services/autocomplete/chat-autocomplete/ChatTextAreaAutocomplete.ts @@ -6,8 +6,7 @@ import { postprocessAutocompleteSuggestion } from "../classic-auto-complete/usel import { VisibleCodeTracker } from "../context/VisibleCodeTracker" import { FileIgnoreController } from "../shims/FileIgnoreController" import type { KiloConnectionService } from "../../cli-backend" -import { generateFim, hasValidCredentials } from "../fim" -import { getAutocompleteModel, getAutocompleteModelById } from "../../../shared/autocomplete-models" +import { generateFim, hasValidCredentials, fimModel as getChatAutocompleteModel } from "../fim" import { finalizeChatSuggestion, buildChatPrefix } from "./chat-autocomplete-utils" interface ChatCompletionRequestMessage { @@ -20,11 +19,7 @@ interface ChatCompletionResponseSender { postMessage(message: { type: "chatCompletionResult"; text: string; requestId: string }): void } -export function getChatAutocompleteModel(provider?: string, model?: string) { - const info = getAutocompleteModel(provider, model) - if (info.kind !== "edit") return info - return getAutocompleteModelById(info.fimModelID) -} +export { getChatAutocompleteModel } /** * Chat textarea autocomplete with cached per-request objects. diff --git a/packages/kilo-vscode/src/services/autocomplete/fim.ts b/packages/kilo-vscode/src/services/autocomplete/fim.ts index d45ecd65b9dd..68c98e2dc398 100644 --- a/packages/kilo-vscode/src/services/autocomplete/fim.ts +++ b/packages/kilo-vscode/src/services/autocomplete/fim.ts @@ -1,9 +1,15 @@ import { ResponseMetaData } from "./types" import type { KiloConnectionService } from "../cli-backend" -import { getAutocompleteModelById } from "../../shared/autocomplete-models" +import { getAutocompleteModel, getAutocompleteModelById } from "../../shared/autocomplete-models" const FIM_MAX_TOKENS = 256 +export function fimModel(provider?: string, model?: string) { + const info = getAutocompleteModel(provider, model) + if (info.kind !== "edit") return info + return getAutocompleteModelById(info.fimModelID) +} + /** * Generate a FIM (Fill-in-the-Middle) completion via the CLI backend. * Uses the SDK's kilo.fim() SSE endpoint which handles auth and streaming.