Skip to content

Commit 324d1a2

Browse files
authored
Fade out interactive session responses that were filtered out (microsoft#178073)
* Fade out interactive session responses that were filtered out * Fix import
1 parent 6742eff commit 324d1a2

File tree

7 files changed

+23
-15
lines changed

7 files changed

+23
-15
lines changed

src/vs/workbench/api/common/extHost.protocol.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,7 @@ import { SaveReason } from 'vs/workbench/common/editor';
5151
import { IRevealOptions, ITreeItem, IViewBadge } from 'vs/workbench/common/views';
5252
import { CallHierarchyItem } from 'vs/workbench/contrib/callHierarchy/common/callHierarchy';
5353
import { DebugConfigurationProviderTriggerKind, IAdapterDescriptor, IConfig, IDebugSessionReplMode } from 'vs/workbench/contrib/debug/common/debug';
54-
import { IInteractiveResponseErrorDetails } from 'vs/workbench/contrib/interactiveSession/common/interactiveSessionModel';
55-
import { IInteractiveProgress, IInteractiveSessionDynamicRequest, IInteractiveSessionFollowup, IInteractiveSessionReplyFollowup, IInteractiveSessionUserActionEvent, IInteractiveSlashCommand } from 'vs/workbench/contrib/interactiveSession/common/interactiveSessionService';
54+
import { IInteractiveProgress, IInteractiveResponseErrorDetails, IInteractiveSessionDynamicRequest, IInteractiveSessionFollowup, IInteractiveSessionReplyFollowup, IInteractiveSessionUserActionEvent, IInteractiveSlashCommand } from 'vs/workbench/contrib/interactiveSession/common/interactiveSessionService';
5655
import * as notebookCommon from 'vs/workbench/contrib/notebook/common/notebookCommon';
5756
import { CellExecutionUpdateType } from 'vs/workbench/contrib/notebook/common/notebookExecutionService';
5857
import { ICellExecutionComplete, ICellExecutionStateUpdate } from 'vs/workbench/contrib/notebook/common/notebookExecutionStateService';

src/vs/workbench/contrib/interactiveSession/browser/interactiveSessionListRenderer.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,7 @@ export class InteractiveListItemRenderer extends Disposable implements ITreeRend
195195
templateData.rowContainer.classList.toggle('interactive-request', isRequestVM(element));
196196
templateData.rowContainer.classList.toggle('interactive-response', isResponseVM(element));
197197
templateData.rowContainer.classList.toggle('interactive-welcome', isWelcomeVM(element));
198+
templateData.rowContainer.classList.toggle('filtered-response', !!(isResponseVM(element) && element.errorDetails?.responseIsFiltered));
198199
templateData.username.textContent = element.username;
199200

200201
if (element.avatarIconUri) {
@@ -230,15 +231,16 @@ export class InteractiveListItemRenderer extends Disposable implements ITreeRend
230231
runProgressiveRender(true);
231232
timer.cancelAndSet(runProgressiveRender, 50);
232233
} else if (isResponseVM(element)) {
233-
this.basicRenderElement(element.response.value, element, index, templateData, element.isCanceled);
234+
this.basicRenderElement(element.response.value, element, index, templateData);
234235
} else if (isRequestVM(element)) {
235236
this.basicRenderElement(element.messageText, element, index, templateData);
236237
} else {
237238
this.renderWelcomeMessage(element, templateData);
238239
}
239240
}
240241

241-
private basicRenderElement(markdownValue: string, element: InteractiveTreeItem, index: number, templateData: IInteractiveListItemTemplate, fillInIncompleteTokens = false) {
242+
private basicRenderElement(markdownValue: string, element: InteractiveTreeItem, index: number, templateData: IInteractiveListItemTemplate) {
243+
const fillInIncompleteTokens = isResponseVM(element) && (!element.isComplete || element.isCanceled || element.errorDetails?.responseIsFiltered);
242244
const result = this.renderMarkdown(new MarkdownString(markdownValue), element, templateData.elementDisposables, templateData, fillInIncompleteTokens);
243245
dom.clearNode(templateData.value);
244246
templateData.value.appendChild(result.element);
@@ -299,7 +301,7 @@ export class InteractiveListItemRenderer extends Disposable implements ITreeRend
299301
if (element.isCanceled) {
300302
this.traceLayout('runProgressiveRender', `canceled, index=${index}`);
301303
element.renderData = undefined;
302-
this.basicRenderElement(element.response.value, element, index, templateData, true);
304+
this.basicRenderElement(element.response.value, element, index, templateData);
303305
isFullyRendered = true;
304306
} else {
305307
// TODO- this method has the side effect of updating element.renderData
@@ -315,7 +317,7 @@ export class InteractiveListItemRenderer extends Disposable implements ITreeRend
315317
this.traceLayout('runProgressiveRender', `Rendered all available words, but model is not complete.`);
316318
}
317319
disposables.clear();
318-
this.basicRenderElement(element.response.value, element, index, templateData, !element.isComplete);
320+
this.basicRenderElement(element.response.value, element, index, templateData);
319321
} else if (toRender) {
320322
// Doing the progressive render
321323
const plusCursor = toRender.match(/```.*$/) ? toRender + `\n${InteractiveListItemRenderer.cursorCharacter}` : toRender + ` ${InteractiveListItemRenderer.cursorCharacter}`;

src/vs/workbench/contrib/interactiveSession/browser/media/interactiveSession.css

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -325,3 +325,8 @@
325325
/* Very aggressive list styles try to apply focus colors to every codicon in a list row. */
326326
color: var(--vscode-foreground) !important;
327327
}
328+
329+
.interactive-session .interactive-item-container.filtered-response .value .rendered-markdown {
330+
-webkit-mask-image: linear-gradient(rgba(0, 0, 0, 0.85), rgba(0, 0, 0, 0.05));
331+
mask-image: linear-gradient(rgba(0, 0, 0, 0.85), rgba(0, 0, 0, 0.05));
332+
}

src/vs/workbench/contrib/interactiveSession/common/interactiveSessionModel.ts

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { IMarkdownString, MarkdownString } from 'vs/base/common/htmlContent';
88
import { Disposable } from 'vs/base/common/lifecycle';
99
import { URI } from 'vs/base/common/uri';
1010
import { ILogService } from 'vs/platform/log/common/log';
11-
import { IInteractiveProgress, IInteractiveResponse, IInteractiveSession, IInteractiveSessionFollowup, IInteractiveSessionReplyFollowup, InteractiveSessionVoteDirection } from 'vs/workbench/contrib/interactiveSession/common/interactiveSessionService';
11+
import { IInteractiveProgress, IInteractiveResponse, IInteractiveResponseErrorDetails, IInteractiveSession, IInteractiveSessionFollowup, IInteractiveSessionReplyFollowup, InteractiveSessionVoteDirection } from 'vs/workbench/contrib/interactiveSession/common/interactiveSessionService';
1212

1313
export interface IInteractiveRequestModel {
1414
readonly id: string;
@@ -18,11 +18,6 @@ export interface IInteractiveRequestModel {
1818
readonly response: IInteractiveResponseModel | undefined;
1919
}
2020

21-
export interface IInteractiveResponseErrorDetails {
22-
message: string;
23-
responseIsIncomplete?: boolean;
24-
}
25-
2621
export interface IInteractiveResponseModel {
2722
readonly onDidChange: Event<void>;
2823
readonly id: string;

src/vs/workbench/contrib/interactiveSession/common/interactiveSessionService.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { IDisposable } from 'vs/base/common/lifecycle';
99
import { URI } from 'vs/base/common/uri';
1010
import { CompletionItemKind, ProviderResult } from 'vs/editor/common/languages';
1111
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
12-
import { IInteractiveResponseErrorDetails, InteractiveSessionModel } from 'vs/workbench/contrib/interactiveSession/common/interactiveSessionModel';
12+
import { InteractiveSessionModel } from 'vs/workbench/contrib/interactiveSession/common/interactiveSessionModel';
1313

1414
export interface IInteractiveSession {
1515
id: number;
@@ -26,6 +26,12 @@ export interface IInteractiveRequest {
2626
message: string | IInteractiveSessionReplyFollowup;
2727
}
2828

29+
export interface IInteractiveResponseErrorDetails {
30+
message: string;
31+
responseIsIncomplete?: boolean;
32+
responseIsFiltered?: boolean;
33+
}
34+
2935
export interface IInteractiveResponse {
3036
session: IInteractiveSession;
3137
errorDetails?: IInteractiveResponseErrorDetails;

src/vs/workbench/contrib/interactiveSession/common/interactiveSessionViewModel.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ import { Disposable } from 'vs/base/common/lifecycle';
99
import { URI } from 'vs/base/common/uri';
1010
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
1111
import { ILogService } from 'vs/platform/log/common/log';
12-
import { IInteractiveRequestModel, IInteractiveResponseErrorDetails, IInteractiveResponseModel, IInteractiveSessionModel, IInteractiveSessionWelcomeMessageModel, IInteractiveWelcomeMessageContent } from 'vs/workbench/contrib/interactiveSession/common/interactiveSessionModel';
13-
import { IInteractiveSessionReplyFollowup, IInteractiveSessionResponseCommandFollowup, IInteractiveSessionService, InteractiveSessionVoteDirection } from 'vs/workbench/contrib/interactiveSession/common/interactiveSessionService';
12+
import { IInteractiveRequestModel, IInteractiveResponseModel, IInteractiveSessionModel, IInteractiveSessionWelcomeMessageModel, IInteractiveWelcomeMessageContent } from 'vs/workbench/contrib/interactiveSession/common/interactiveSessionModel';
13+
import { IInteractiveResponseErrorDetails, IInteractiveSessionReplyFollowup, IInteractiveSessionResponseCommandFollowup, IInteractiveSessionService, InteractiveSessionVoteDirection } from 'vs/workbench/contrib/interactiveSession/common/interactiveSessionService';
1414
import { countWords } from 'vs/workbench/contrib/interactiveSession/common/interactiveSessionWordCounter';
1515

1616
export function isRequestVM(item: unknown): item is IInteractiveRequestViewModel {

src/vscode-dts/vscode.proposed.interactive.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ declare module 'vscode' {
101101
export interface InteractiveResponseErrorDetails {
102102
message: string;
103103
responseIsIncomplete?: boolean;
104+
responseIsFiltered?: boolean;
104105
}
105106

106107
export interface InteractiveResponseForProgress {

0 commit comments

Comments
 (0)