From 40431afb9055f264cb020b54ff9f5dcb9f2148ef Mon Sep 17 00:00:00 2001 From: Philipp Spiess Date: Thu, 25 May 2023 14:18:11 +0200 Subject: [PATCH 1/2] Cody completions: Log multi-line completion requests and results --- client/cody/src/completions/index.ts | 16 ++++++++++++---- client/cody/src/main.ts | 2 +- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/client/cody/src/completions/index.ts b/client/cody/src/completions/index.ts index e7b48fd766cb..d8a4e269e07d 100644 --- a/client/cody/src/completions/index.ts +++ b/client/cody/src/completions/index.ts @@ -161,6 +161,8 @@ export class CodyCompletionItemProvider implements vscode.InlineCompletionItemPr return [] } + let multilineMode: null | 'block' = null + // TODO(philipp-spiess): Add a better detection for start-of-block and don't require C like // languages. const multilineEnabledLanguage = @@ -173,6 +175,7 @@ export class CodyCompletionItemProvider implements vscode.InlineCompletionItemPr prefix.trim().at(prefix.trim().length - 1) === '{' ) { timeout = 500 + multilineMode = 'block' completers.push( new EndOfLineCompletionProvider( this.completionsClient, @@ -183,7 +186,7 @@ export class CodyCompletionItemProvider implements vscode.InlineCompletionItemPr suffix, '', 3, - 'block' // multiline + multilineMode ) ) } else if (precedingLine.trim() === '') { @@ -241,7 +244,12 @@ export class CodyCompletionItemProvider implements vscode.InlineCompletionItemPr return [] } - logEvent('CodyVSCodeExtension:completion:started', LOG_INLINE, LOG_INLINE) + const logParams = { + type: 'inline', + multilineMode, + } + + logEvent('CodyVSCodeExtension:completion:started', logParams, logParams) const start = Date.now() const results = rankCompletions( @@ -249,8 +257,8 @@ export class CodyCompletionItemProvider implements vscode.InlineCompletionItemPr ) if (hasVisibleCompletions(results)) { - const params = { ...LOG_INLINE, latency: Date.now() - start, timeout } - logEvent('CodyVSCodeExtension:completion:suggested', params, params) + const logParamsWithTimings = { ...logParams, latency: Date.now() - start, timeout } + logEvent('CodyVSCodeExtension:completion:suggested', logParamsWithTimings, logParamsWithTimings) inlineCompletionsCache.add(results) return results.map(toInlineCompletionItem) } diff --git a/client/cody/src/main.ts b/client/cody/src/main.ts index 5249684fb41e..84254614eda1 100644 --- a/client/cody/src/main.ts +++ b/client/cody/src/main.ts @@ -224,7 +224,7 @@ const register = async ( vscode.commands.registerCommand('cody.experimental.suggest', async () => { await completionsProvider.fetchAndShowCompletions() }), - vscode.commands.registerCommand('cody.completions.inline.accepted', () => { + vscode.commands.registerCommand('cody.completions.inline.accepted', asdf => { const params = { type: 'inline' } logEvent('CodyVSCodeExtension:completion:accepted', params, params) }), From e3279ad53795c7fcc85e93a1abfb08d589ba2d9a Mon Sep 17 00:00:00 2001 From: Philipp Spiess Date: Thu, 25 May 2023 16:35:52 +0200 Subject: [PATCH 2/2] Fixes --- client/cody/src/completions/index.ts | 1 - client/cody/src/main.ts | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/client/cody/src/completions/index.ts b/client/cody/src/completions/index.ts index 0a1c57e2462f..fdb83d2d3c00 100644 --- a/client/cody/src/completions/index.ts +++ b/client/cody/src/completions/index.ts @@ -13,7 +13,6 @@ import { CompletionsDocumentProvider } from './docprovider' import { History } from './history' import { CompletionProvider, InlineCompletionProvider, ManualCompletionProvider } from './provider' -const LOG_INLINE = { type: 'inline' } const LOG_MANUAL = { type: 'manual' } function lastNLines(text: string, n: number): string { diff --git a/client/cody/src/main.ts b/client/cody/src/main.ts index 6bd9cfbe9cdf..825039cba7dc 100644 --- a/client/cody/src/main.ts +++ b/client/cody/src/main.ts @@ -224,7 +224,7 @@ const register = async ( vscode.commands.registerCommand('cody.manual-completions', async () => { await completionsProvider.fetchAndShowManualCompletions() }), - vscode.commands.registerCommand('cody.completions.inline.accepted', asdf => { + vscode.commands.registerCommand('cody.completions.inline.accepted', () => { const params = { type: 'inline' } logEvent('CodyVSCodeExtension:completion:accepted', params, params) }),