Skip to content

Commit e91852b

Browse files
sergeibbbeamodio
authored andcommitted
Adds feedback buttons to the "Explain" family of AI actions
(#4449, #4475)
1 parent 19196ff commit e91852b

File tree

3 files changed

+32
-10
lines changed

3 files changed

+32
-10
lines changed

src/commands/explainBase.ts

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,37 @@ export abstract class ExplainCommandBase extends GlCommandBase {
5555
return svc;
5656
}
5757

58-
protected openDocument(result: AISummarizeResult, path: string, metadata: MarkdownContentMetadata): void {
59-
const headerContent = getMarkdownHeaderContent(metadata, this.container.telemetry.enabled);
58+
protected openDocument(
59+
result: AISummarizeResult,
60+
path: string,
61+
metadata: Omit<MarkdownContentMetadata, 'feedbackContext'>,
62+
): void {
63+
// Add feedback context to metadata
64+
const feedbackContext: AIFeedbackContext = {
65+
feature: this.constructor.name,
66+
model: {
67+
id: result.model.id,
68+
providerId: result.model.provider.id,
69+
providerName: result.model.provider.name,
70+
},
71+
usage: result.usage,
72+
outputLength: result.content?.length,
73+
};
74+
75+
const enrichedMetadata = {
76+
...metadata,
77+
feedbackContext: feedbackContext as unknown as Record<string, unknown>,
78+
};
79+
80+
const headerContent = getMarkdownHeaderContent(enrichedMetadata, this.container.telemetry.enabled);
6081
const content = `${headerContent}\n\n${result.parsed.summary}\n\n${result.parsed.body}`;
6182

62-
const documentUri = this.container.markdown.openDocument(content, path, metadata.header.title, metadata);
83+
const documentUri = this.container.markdown.openDocument(
84+
content,
85+
path,
86+
metadata.header.title,
87+
enrichedMetadata,
88+
);
6389

6490
showMarkdownPreview(documentUri);
6591
}

src/commands/generateRebase.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -537,21 +537,17 @@ function generateRebaseMarkdown(
537537
result: AIRebaseResult,
538538
title = 'Rebase Commits',
539539
telemetryEnabled: boolean,
540-
feedbackContext?: AIFeedbackContext,
540+
feedbackContext: AIFeedbackContext,
541541
): { content: string; metadata: MarkdownContentMetadata } {
542542
const metadata: MarkdownContentMetadata = {
543543
header: {
544544
title: title,
545545
aiModel: result.model.name,
546546
subtitle: 'Explanation',
547547
},
548+
feedbackContext: feedbackContext as unknown as Record<string, unknown>,
548549
};
549550

550-
// Always store feedback context if available, but only show UI when telemetry is enabled
551-
if (feedbackContext) {
552-
metadata.feedbackContext = feedbackContext as unknown as Record<string, unknown>;
553-
}
554-
555551
let markdown = '';
556552
if (result.commits.length === 0) {
557553
markdown = 'No Commits Generated';

src/documents/markdown.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ export interface MarkdownContentMetadata {
1818
name: GlCommands;
1919
args?: Record<string, unknown>;
2020
};
21-
feedbackContext?: Record<string, unknown>;
21+
feedbackContext: Record<string, unknown>;
2222
}
2323

2424
export class MarkdownContentProvider implements TextDocumentContentProvider {

0 commit comments

Comments
 (0)