Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/extensions/copilot/src/extension/conversation/vscode-node/feedbackContribution.ts
13399 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
import * as vscode from 'vscode';
6
import { IAuthenticationService } from '../../../platform/authentication/common/authentication';
7
import { LogMemory } from '../../../platform/log/common/logService';
8
import { Disposable } from '../../../util/vs/base/common/lifecycle';
9
import { EXTENSION_ID } from '../../common/constants';
10
11
export class FeedbackCommandContribution extends Disposable {
12
constructor(
13
@IAuthenticationService private readonly authenticationService: IAuthenticationService
14
) {
15
super();
16
17
this._register(vscode.commands.registerCommand('github.copilot.report', async (title: string = '') => {
18
const token = this.authenticationService.copilotToken;
19
const isTeamMember = token?.isVscodeTeamMember;
20
const output: string[] = isTeamMember ? [`<details><summary>Prompt Details</summary>`] : [`<details><summary>Logs</summary>`];
21
appendPromptDetailsSection(output, LogMemory.getLogs().join('\n'), LogMemory.getRequestIds().join('\n'));
22
await vscode.commands.executeCommand('workbench.action.openIssueReporter', {
23
issueTitle: title,
24
extensionId: EXTENSION_ID,
25
uri: vscode.Uri.parse('https://github.com/microsoft/vscode'),
26
data: output.join('\n'),
27
privateUri: isTeamMember ? vscode.Uri.parse('https://github.com/microsoft/vscode-internalbacklog') : undefined,
28
});
29
}));
30
}
31
}
32
33
function appendPromptDetailsSection(output: string[], logs: string, requestIds: string): void {
34
output.push(
35
`<pre>`,
36
logs,
37
`</pre>`,
38
`</details>`,
39
`<details><summary>Request IDs</summary>`,
40
`<pre>`,
41
requestIds,
42
`</pre>`,
43
`</details>`,
44
);
45
}
46
47