mirror of
https://github.com/microsoft/vscode.git
synced 2026-05-27 10:48:28 +01:00
ChatAccessibilityService
This commit is contained in:
@@ -22,11 +22,11 @@ import { registerChatExecuteActions } from 'vs/workbench/contrib/chat/browser/ac
|
||||
import { registerChatQuickQuestionActions } from 'vs/workbench/contrib/chat/browser/actions/chatQuickInputActions';
|
||||
import { registerChatTitleActions } from 'vs/workbench/contrib/chat/browser/actions/chatTitleActions';
|
||||
import { registerChatExportActions } from 'vs/workbench/contrib/chat/browser/actions/chatImportExport';
|
||||
import { IChatWidgetService } from 'vs/workbench/contrib/chat/browser/chat';
|
||||
import { IChatAccessibilityService, IChatWidgetService } from 'vs/workbench/contrib/chat/browser/chat';
|
||||
import { ChatContributionService } from 'vs/workbench/contrib/chat/browser/chatContributionServiceImpl';
|
||||
import { ChatEditor, IChatEditorOptions } from 'vs/workbench/contrib/chat/browser/chatEditor';
|
||||
import { ChatEditorInput, ChatEditorInputSerializer } from 'vs/workbench/contrib/chat/browser/chatEditorInput';
|
||||
import { ChatWidgetService } from 'vs/workbench/contrib/chat/browser/chatWidget';
|
||||
import { ChatAccessibilityService, ChatWidgetService } from 'vs/workbench/contrib/chat/browser/chatWidget';
|
||||
import 'vs/workbench/contrib/chat/browser/contrib/chatInputEditorContrib';
|
||||
import { IChatContributionService } from 'vs/workbench/contrib/chat/common/chatContributionService';
|
||||
import { IChatService } from 'vs/workbench/contrib/chat/common/chatService';
|
||||
@@ -136,5 +136,6 @@ registerClearActions();
|
||||
registerSingleton(IChatService, ChatService, InstantiationType.Delayed);
|
||||
registerSingleton(IChatContributionService, ChatContributionService, InstantiationType.Delayed);
|
||||
registerSingleton(IChatWidgetService, ChatWidgetService, InstantiationType.Delayed);
|
||||
registerSingleton(IChatAccessibilityService, ChatAccessibilityService, InstantiationType.Delayed);
|
||||
registerSingleton(IChatWidgetHistoryService, ChatWidgetHistoryService, InstantiationType.Delayed);
|
||||
|
||||
|
||||
@@ -11,6 +11,7 @@ import { URI } from 'vs/base/common/uri';
|
||||
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
|
||||
|
||||
export const IChatWidgetService = createDecorator<IChatWidgetService>('chatWidgetService');
|
||||
export const IChatAccessibilityService = createDecorator<IChatAccessibilityService>('chatAccessibilityService');
|
||||
|
||||
export interface IChatWidgetService {
|
||||
|
||||
@@ -29,6 +30,13 @@ export interface IChatWidgetService {
|
||||
getWidgetByInputUri(uri: URI): IChatWidget | undefined;
|
||||
}
|
||||
|
||||
|
||||
export interface IChatAccessibilityService {
|
||||
readonly _serviceBrand: undefined;
|
||||
acceptRequest(): void;
|
||||
acceptResponse(response?: IChatResponseViewModel): void;
|
||||
}
|
||||
|
||||
export interface IChatCodeBlockInfo {
|
||||
codeBlockIndex: number;
|
||||
element: IChatResponseViewModel;
|
||||
|
||||
@@ -24,7 +24,7 @@ import { ServiceCollection } from 'vs/platform/instantiation/common/serviceColle
|
||||
import { WorkbenchObjectTree } from 'vs/platform/list/browser/listService';
|
||||
import { IViewsService } from 'vs/workbench/common/views';
|
||||
import { clearChatSession } from 'vs/workbench/contrib/chat/browser/actions/chatClear';
|
||||
import { ChatTreeItem, IChatCodeBlockInfo, IChatWidget, IChatWidgetService, IChatWidgetViewContext } from 'vs/workbench/contrib/chat/browser/chat';
|
||||
import { ChatTreeItem, IChatAccessibilityService, IChatCodeBlockInfo, IChatWidget, IChatWidgetService, IChatWidgetViewContext } from 'vs/workbench/contrib/chat/browser/chat';
|
||||
import { ChatInputPart } from 'vs/workbench/contrib/chat/browser/chatInputPart';
|
||||
import { ChatAccessibilityProvider, ChatListDelegate, ChatListItemRenderer, IChatRendererDelegate } from 'vs/workbench/contrib/chat/browser/chatListRenderer';
|
||||
import { ChatEditorOptions } from 'vs/workbench/contrib/chat/browser/chatOptions';
|
||||
@@ -108,8 +108,6 @@ export class ChatWidget extends Disposable implements IChatWidget {
|
||||
private lastSlashCommands: ISlashCommand[] | undefined;
|
||||
private slashCommandsPromise: Promise<ISlashCommand[] | undefined> | undefined;
|
||||
|
||||
private _chatAccessibilityService: ChatAccessibilityService;
|
||||
|
||||
constructor(
|
||||
readonly viewContext: IChatWidgetViewContext,
|
||||
private readonly styles: IChatWidgetStyles,
|
||||
@@ -118,15 +116,13 @@ export class ChatWidget extends Disposable implements IChatWidget {
|
||||
@IChatService private readonly chatService: IChatService,
|
||||
@IChatWidgetService chatWidgetService: IChatWidgetService,
|
||||
@IContextMenuService private readonly contextMenuService: IContextMenuService,
|
||||
@IAudioCueService audioCueService: IAudioCueService
|
||||
@IChatAccessibilityService private readonly _chatAccessibilityService: IChatAccessibilityService
|
||||
) {
|
||||
super();
|
||||
CONTEXT_IN_CHAT_SESSION.bindTo(contextKeyService).set(true);
|
||||
this.requestInProgress = CONTEXT_CHAT_REQUEST_IN_PROGRESS.bindTo(contextKeyService);
|
||||
|
||||
this._register((chatWidgetService as ChatWidgetService).register(this));
|
||||
this._chatAccessibilityService = new ChatAccessibilityService(audioCueService);
|
||||
this._register(this._chatAccessibilityService);
|
||||
}
|
||||
|
||||
get providerId(): string {
|
||||
@@ -511,9 +507,14 @@ export class ChatWidgetService implements IChatWidgetService {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
const CHAT_RESPONSE_PENDING_AUDIO_CUE_LOOP_MS = 7000;
|
||||
class ChatAccessibilityService extends Disposable {
|
||||
export class ChatAccessibilityService extends Disposable implements IChatAccessibilityService {
|
||||
|
||||
declare readonly _serviceBrand: undefined;
|
||||
|
||||
private _responsePendingAudioCue: IDisposable | undefined;
|
||||
|
||||
constructor(@IAudioCueService private readonly _audioCueService: IAudioCueService) {
|
||||
super();
|
||||
}
|
||||
@@ -523,10 +524,10 @@ class ChatAccessibilityService extends Disposable {
|
||||
}
|
||||
acceptResponse(response?: IChatResponseViewModel): void {
|
||||
this._responsePendingAudioCue?.dispose();
|
||||
this._audioCueService.playRandomAudioCue(AudioCueGroupId.chatResponseReceived, true);
|
||||
if (!response) {
|
||||
return;
|
||||
}
|
||||
this._audioCueService.playRandomAudioCue(AudioCueGroupId.chatResponseReceived, true);
|
||||
const errorDetails = response.errorDetails ? ` ${response.errorDetails.message}` : '';
|
||||
alert(response.response.value + errorDetails);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user