Skip to content

Commit 51add93

Browse files
authored
Command to report notebook nes issue (#687)
1 parent 16e218b commit 51add93

File tree

6 files changed

+40
-9
lines changed

6 files changed

+40
-9
lines changed

package.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1912,6 +1912,12 @@
19121912
"title": "%github.copilot.command.inlineEdit.clearCache%",
19131913
"category": "Developer"
19141914
},
1915+
{
1916+
"command": "github.copilot.debug.inlineEdit.reportNotebookNESIssue",
1917+
"title": "%github.copilot.command.inlineEdit.reportNotebookNESIssue%",
1918+
"enablement": "config.github.copilot.chat.advanced.notebook.alternativeNESFormat.enabled",
1919+
"category": "GitHub Copilot Developer"
1920+
},
19151921
{
19161922
"command": "github.copilot.debug.generateSTest",
19171923
"title": "%github.copilot.command.generateSTest%",

package.nls.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,7 @@
182182
"github.copilot.chat.attachSelection": "Add Selection to Chat",
183183
"github.copilot.command.collectDiagnostics": "GitHub Copilot Chat Diagnostics",
184184
"github.copilot.command.inlineEdit.clearCache": "GitHub Copilot Chat Clear Next Edit Cache",
185+
"github.copilot.command.inlineEdit.reportNotebookNESIssue": "Report Notebook Next Edit Issue",
185186
"github.copilot.command.showNotebookLog": "Show Chat Log Notebook",
186187
"github.copilot.resetAutomaticCommandExecutionPrompt": "Reset Automatic Command Execution Prompt",
187188
"github.copilot.command.generateSTest": "Generate STest From Last Chat Request",

src/extension/inlineEdits/vscode-node/components/inlineEditDebugComponent.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import { XtabProvider } from '../../../xtab/node/xtabProvider';
1717
import { defaultNextEditProviderId } from '../../node/createNextEditProvider';
1818
import { DebugRecorder } from '../../node/debugRecorder';
1919

20-
const reportFeedbackCommandId = 'github.copilot.debug.inlineEdit.reportFeedback';
20+
export const reportFeedbackCommandId = 'github.copilot.debug.inlineEdit.reportFeedback';
2121
const pickProviderId = 'github.copilot.debug.inlineEdit.pickProvider';
2222

2323
export type InlineCompletionCommand = { command: Command; icon: ThemeIcon };
@@ -73,7 +73,9 @@ export class InlineEditDebugComponent extends Disposable {
7373

7474
{
7575
const uiRepro = await extractInlineEditRepro();
76-
data.appendSection('UI Repro', ['```', uiRepro, '```']);
76+
if (uiRepro) {
77+
data.appendSection('UI Repro', ['```', uiRepro, '```']);
78+
}
7779
}
7880
}
7981

@@ -208,8 +210,8 @@ export function filterLogForSensitiveFiles(log: LogEntry[]): LogEntry[] {
208210

209211
async function extractInlineEditRepro() {
210212
const commandId = 'editor.action.inlineSuggest.dev.extractRepro';
211-
const result: { reproCase: string } = await commands.executeCommand(commandId);
212-
return result.reproCase;
213+
const result: { reproCase: string } | undefined = await commands.executeCommand(commandId);
214+
return result?.reproCase;
213215
}
214216

215217
class SimpleMarkdownBuilder {

src/extension/inlineEdits/vscode-node/inlineCompletionProvider.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
*--------------------------------------------------------------------------------------------*/
55

6-
import { CancellationToken, Command, InlineCompletionContext, InlineCompletionDisplayLocation, InlineCompletionDisplayLocationKind, InlineCompletionEndOfLifeReason, InlineCompletionEndOfLifeReasonKind, InlineCompletionItem, InlineCompletionItemProvider, InlineCompletionList, InlineCompletionsDisposeReason, InlineCompletionsDisposeReasonKind, Position, Range, TextDocument, TextDocumentShowOptions, l10n, Event as vscodeEvent } from 'vscode';
6+
import { CancellationToken, Command, InlineCompletionContext, InlineCompletionDisplayLocation, InlineCompletionDisplayLocationKind, InlineCompletionEndOfLifeReason, InlineCompletionEndOfLifeReasonKind, InlineCompletionItem, InlineCompletionItemProvider, InlineCompletionList, InlineCompletionsDisposeReason, InlineCompletionsDisposeReasonKind, Position, Range, TextDocument, TextDocumentShowOptions, l10n, Event as vscodeEvent, workspace } from 'vscode';
77
import { ConfigKey, IConfigurationService } from '../../../platform/configuration/common/configurationService';
88
import { IDiffService } from '../../../platform/diff/common/diffService';
99
import { stringEditFromDiff } from '../../../platform/editing/common/edit';
@@ -36,6 +36,7 @@ import { isInlineSuggestion } from './isInlineSuggestion';
3636
import { InlineEditLogger } from './parts/inlineEditLogger';
3737
import { toExternalRange } from './utils/translations';
3838
import { IVSCodeObservableDocument } from './parts/vscodeWorkspace';
39+
import { findNotebook, isNotebookCell } from '../../../util/common/notebooks';
3940

4041
const learnMoreAction: Command = {
4142
title: l10n.t('Learn More'),
@@ -155,7 +156,8 @@ export class InlineCompletionProviderImpl implements InlineCompletionItemProvide
155156
return undefined;
156157
}
157158

158-
const logContext = new InlineEditRequestLogContext(doc.id.uri, document.version, context);
159+
const documentVersion = (isNotebookCell(document.uri) ? findNotebook(document.uri, workspace.notebookDocuments)?.version : undefined) || document.version;
160+
const logContext = new InlineEditRequestLogContext(doc.id.uri, documentVersion, context);
159161
logContext.recordingBookmark = this.model.debugRecorder.createBookmark();
160162

161163
const telemetryBuilder = new NextEditProviderTelemetryBuilder(this._gitExtensionService, this._notebookService, this.model.nextEditProvider.ID, doc, this.model.debugRecorder, logContext.recordingBookmark);

src/extension/inlineEdits/vscode-node/inlineEditProviderFeature.ts

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import { IInstantiationService } from '../../../util/vs/platform/instantiation/c
2121
import { IExtensionContribution } from '../../common/contributions';
2222
import { CompletionsProvider } from '../../completions/vscode-node/completionsProvider';
2323
import { TelemetrySender } from '../node/nextEditProviderTelemetry';
24-
import { InlineEditDebugComponent } from './components/inlineEditDebugComponent';
24+
import { InlineEditDebugComponent, reportFeedbackCommandId } from './components/inlineEditDebugComponent';
2525
import { LogContextRecorder } from './components/logContextRecorder';
2626
import { DiagnosticsNextEditProvider } from './features/diagnosticsInlineEditProvider';
2727
import { InlineCompletionProviderImpl } from './inlineCompletionProvider';
@@ -30,6 +30,8 @@ import { InlineEditLogger } from './parts/inlineEditLogger';
3030
import { LastEditTimeTracker } from './parts/lastEditTimeTracker';
3131
import { VSCodeWorkspace } from './parts/vscodeWorkspace';
3232
import { makeSettable } from './utils/observablesUtils';
33+
import { isNotebookCell } from '../../../util/common/notebooks';
34+
import { InlineEditRequestLogContext } from '../../../platform/inlineEdits/common/inlineEditLogContext';
3335

3436
const TRIGGER_INLINE_EDIT_ON_ACTIVE_EDITOR_CHANGE = false; // otherwise, eg, NES would trigger just when going through search results
3537

@@ -72,7 +74,7 @@ export class InlineEditProviderFeature extends Disposable implements IExtensionC
7274
@IEnvService private readonly _envService: IEnvService,
7375
@ILogService private readonly _logService: ILogService,
7476
@IInstantiationService private readonly _instantiationService: IInstantiationService,
75-
@IVSCodeExtensionContext private readonly _extensionContext: IVSCodeExtensionContext
77+
@IVSCodeExtensionContext private readonly _extensionContext: IVSCodeExtensionContext,
7678
) {
7779
super();
7880

@@ -153,6 +155,23 @@ export class InlineEditProviderFeature extends Disposable implements IExtensionC
153155
reader.store.add(commands.registerCommand(clearCacheCommandId, () => {
154156
model.nextEditProvider.clearCache();
155157
}));
158+
159+
reader.store.add(commands.registerCommand(reportNotebookNESIssueCommandId, () => {
160+
const activeNotebook = window.activeNotebookEditor;
161+
const document = window.activeTextEditor?.document;
162+
if (!activeNotebook || !document || !isNotebookCell(document.uri)) {
163+
return;
164+
}
165+
const doc = model.workspace.getDocumentByTextDocument(document);
166+
const selection = activeNotebook.selection;
167+
if (!selection || !doc) {
168+
return;
169+
}
170+
171+
const logContext = new InlineEditRequestLogContext(doc.id.uri, document.version, undefined);
172+
logContext.recordingBookmark = model.debugRecorder.createBookmark();
173+
void commands.executeCommand(reportFeedbackCommandId, { logContext });
174+
}));
156175
}));
157176

158177
constructorTracer.returns();
@@ -164,3 +183,4 @@ export const learnMoreCommandId = 'github.copilot.debug.inlineEdit.learnMore';
164183
export const learnMoreLink = 'https://aka.ms/vscode-nes';
165184

166185
const clearCacheCommandId = 'github.copilot.debug.inlineEdit.clearCache';
186+
const reportNotebookNESIssueCommandId = 'github.copilot.debug.inlineEdit.reportNotebookNESIssue';

src/platform/configuration/common/configurationService.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -616,7 +616,7 @@ export namespace ConfigKey {
616616
/** Enable filtering variables by cell document symbols */
617617
export const NotebookVariableFilteringEnabled = defineSetting('chat.advanced.notebook.variableFilteringEnabled', false, INTERNAL);
618618
export const NotebookAlternativeDocumentFormat = defineExpSetting<AlternativeNotebookFormat>('chat.advanced.notebook.alternativeFormat', AlternativeNotebookFormat.xml, INTERNAL);
619-
export const UseAlternativeNESNotebookFormat = defineExpSetting<boolean>('chat.advanced.notebook.alternativeNESFormat', false, INTERNAL);
619+
export const UseAlternativeNESNotebookFormat = defineExpSetting<boolean>('chat.advanced.notebook.alternativeNESFormat.enabled', false, INTERNAL);
620620
export const TerminalToDebuggerPatterns = defineSetting<string[]>('chat.advanced.debugTerminalCommandPatterns', [], INTERNAL);
621621
export const InlineEditsIgnoreCompletionsDisablement = defineValidatedSetting<boolean>('chat.advanced.inlineEdits.ignoreCompletionsDisablement', vBoolean(), false, INTERNAL_RESTRICTED);
622622
export const InlineEditsAsyncCompletions = defineExpSetting<boolean>('chat.advanced.inlineEdits.asyncCompletions', true, INTERNAL_RESTRICTED);

0 commit comments

Comments
 (0)