Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 26 additions & 32 deletions src/services/ghost/GhostServiceManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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<RooIgnoreController>
Expand Down Expand Up @@ -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)
}
}

Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ export class NewAutocompleteModel {
if (!(await checkKilocodeBalance(profile.kilocodeToken, profile.kilocodeOrganizationId))) continue
}

this.profile = profile
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sure? the code around here seems to sometimes use this and sometimes not; it also sometimes uses this.apihandler and sometimes this.profile.apiHandler

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not entirely, but it seems to work? Don't really care as much now that I'm confident this is just a PoC and not a keeper...

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I checked, and this is the only setter, and it is read, so possible the whole field can be avoided somehow, but we won't bother figuring it out. Looks like it's necessary.

this.apiHandler = buildApiHandler({ ...profile, [modelIdKeysByProvider[provider]]: model })

if (this.apiHandler instanceof OpenRouterHandler) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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() {
Expand Down