diff --git a/src/services/ghost/GhostServiceManager.ts b/src/services/ghost/GhostServiceManager.ts index 3e856624652..527f12c40c1 100644 --- a/src/services/ghost/GhostServiceManager.ts +++ b/src/services/ghost/GhostServiceManager.ts @@ -6,7 +6,7 @@ import { GhostStatusBar } from "./GhostStatusBar" import { GhostCodeActionProvider } from "./GhostCodeActionProvider" import { GhostInlineCompletionProvider } from "./classic-auto-complete/GhostInlineCompletionProvider" import { GhostContextProvider } from "./classic-auto-complete/GhostContextProvider" -//import { NewAutocompleteProvider } from "./new-auto-complete/NewAutocompleteProvider" +import { NewAutocompleteProvider } from "./new-auto-complete/NewAutocompleteProvider" import { GhostServiceSettings, TelemetryEventName } from "@roo-code/types" import { ContextProxy } from "../../core/config/ContextProxy" import { TelemetryService } from "@roo-code/telemetry" @@ -31,7 +31,7 @@ export class GhostServiceManager { // VSCode Providers public readonly codeActionProvider: GhostCodeActionProvider public readonly inlineCompletionProvider: GhostInlineCompletionProvider - //private newAutocompleteProvider: NewAutocompleteProvider | null = null + private newAutocompleteProvider: NewAutocompleteProvider | null = null private inlineCompletionProviderDisposable: vscode.Disposable | null = null private ignoreController?: Promise @@ -88,36 +88,32 @@ export class GhostServiceManager { private async updateInlineCompletionProviderRegistration() { const shouldBeRegistered = this.settings?.enableAutoTrigger ?? false - const useNewAutocomplete = false // this.settings?.useNewAutocomplete ?? false // First, dispose any existing registration if (this.inlineCompletionProviderDisposable) { this.inlineCompletionProviderDisposable.dispose() this.inlineCompletionProviderDisposable = null } + if (this.newAutocompleteProvider && (!shouldBeRegistered || !this.settings?.useNewAutocomplete)) { + // Dispose new autocomplete provider if registration is disabled + this.newAutocompleteProvider.dispose() + this.newAutocompleteProvider = null + } - // Dispose new autocomplete provider if switching away from it - //if (!useNewAutocomplete && this.newAutocompleteProvider) { - // this.newAutocompleteProvider.dispose() - // this.newAutocompleteProvider = null - //} - - if (shouldBeRegistered) { - if (useNewAutocomplete) { - // Initialize new autocomplete provider if not already created - //if (!this.newAutocompleteProvider) { - // this.newAutocompleteProvider = new NewAutocompleteProvider(this.context, this.cline) - // await this.newAutocompleteProvider.load() - //} - // New autocomplete provider registers itself internally - } else { - // Register classic provider - this.inlineCompletionProviderDisposable = vscode.languages.registerInlineCompletionItemProvider( - "*", - this.inlineCompletionProvider, - ) - this.context.subscriptions.push(this.inlineCompletionProviderDisposable) - } + if (!shouldBeRegistered) return + + if (this.settings?.useNewAutocomplete) { + // Initialize new autocomplete provider if not already created, otherwise reload + this.newAutocompleteProvider ??= new NewAutocompleteProvider(this.context, this.cline) + await this.newAutocompleteProvider.load() + // New autocomplete provider registers itself internally + } else { + // Register classic provider + this.inlineCompletionProviderDisposable = vscode.languages.registerInlineCompletionItemProvider( + "*", + this.inlineCompletionProvider, + ) + this.context.subscriptions.push(this.inlineCompletionProviderDisposable) } } @@ -176,9 +172,7 @@ export class GhostServiceManager { } // Check if using new autocomplete - const useNewAutocomplete = this.settings?.useNewAutocomplete ?? false - - if (useNewAutocomplete) { + if (this.settings?.useNewAutocomplete) { // New autocomplete doesn't support manual code suggestion yet // Just return for now return @@ -334,10 +328,10 @@ export class GhostServiceManager { // Dispose inline completion provider resources this.inlineCompletionProvider.dispose() // Dispose new autocomplete provider if it exists - //if (this.newAutocompleteProvider) { - // this.newAutocompleteProvider.dispose() - // this.newAutocompleteProvider = null - //} + if (this.newAutocompleteProvider) { + this.newAutocompleteProvider.dispose() + this.newAutocompleteProvider = null + } this.disposeIgnoreController() diff --git a/src/services/ghost/new-auto-complete/NewAutocompleteModel.ts b/src/services/ghost/new-auto-complete/NewAutocompleteModel.ts index c6b80a1a1e2..e212f75555c 100644 --- a/src/services/ghost/new-auto-complete/NewAutocompleteModel.ts +++ b/src/services/ghost/new-auto-complete/NewAutocompleteModel.ts @@ -49,6 +49,7 @@ export class NewAutocompleteModel { if (!(await checkKilocodeBalance(profile.kilocodeToken, profile.kilocodeOrganizationId))) continue } + this.profile = profile this.apiHandler = buildApiHandler({ ...profile, [modelIdKeysByProvider[provider]]: model }) if (this.apiHandler instanceof OpenRouterHandler) { diff --git a/src/services/ghost/new-auto-complete/NewAutocompleteProvider.ts b/src/services/ghost/new-auto-complete/NewAutocompleteProvider.ts index a0021cdb803..8d535b66c25 100644 --- a/src/services/ghost/new-auto-complete/NewAutocompleteProvider.ts +++ b/src/services/ghost/new-auto-complete/NewAutocompleteProvider.ts @@ -10,19 +10,16 @@ import { ContinueCompletionProvider } from "../../continuedev/core/vscode-test-h export class NewAutocompleteProvider { private completionProviderDisposable: vscode.Disposable | null = null - private model: NewAutocompleteModel - private providerSettingsManager: ProviderSettingsManager + private readonly model: NewAutocompleteModel + private readonly providerSettingsManager: ProviderSettingsManager private settings: GhostServiceSettings | null = null constructor( private context: vscode.ExtensionContext, private cline: ClineProvider, ) { - // Register Internal Components this.providerSettingsManager = new ProviderSettingsManager(context) this.model = new NewAutocompleteModel() - - void this.load() } private async saveSettings() {