From f309affafedddf754fa4ae422de45fab1da513bf Mon Sep 17 00:00:00 2001 From: meganrogge Date: Tue, 13 Jun 2023 10:45:51 -0500 Subject: [PATCH 01/17] work on looping cue --- .../standalone/browser/standaloneServices.ts | 3 +++ .../audioCues/browser/audioCueService.ts | 20 ++++++++++++++++++- .../contrib/chat/browser/chatWidget.ts | 4 ++++ 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/vs/editor/standalone/browser/standaloneServices.ts b/src/vs/editor/standalone/browser/standaloneServices.ts index 63ade6f2143..04be9018f8b 100644 --- a/src/vs/editor/standalone/browser/standaloneServices.ts +++ b/src/vs/editor/standalone/browser/standaloneServices.ts @@ -1055,6 +1055,9 @@ class StandaloneAudioService implements IAudioCueService { async playSound(cue: Sound, allowManyInParallel?: boolean | undefined): Promise { } + playAudioCueLoop(cue: AudioCue): IDisposable { + return toDisposable(() => { }); + } } export interface IEditorOverrideServices { diff --git a/src/vs/platform/audioCues/browser/audioCueService.ts b/src/vs/platform/audioCues/browser/audioCueService.ts index 90a707db13a..e9486c80517 100644 --- a/src/vs/platform/audioCues/browser/audioCueService.ts +++ b/src/vs/platform/audioCues/browser/audioCueService.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { Disposable } from 'vs/base/common/lifecycle'; +import { Disposable, IDisposable, toDisposable } from 'vs/base/common/lifecycle'; import { FileAccess } from 'vs/base/common/network'; import { IAccessibilityService } from 'vs/platform/accessibility/common/accessibility'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; @@ -22,6 +22,7 @@ export interface IAudioCueService { onEnabledChanged(cue: AudioCue): Event; playSound(cue: Sound, allowManyInParallel?: boolean): Promise; + playAudioCueLoop(cue: AudioCue): IDisposable; } export class AudioCueService extends Disposable implements IAudioCueService { @@ -87,6 +88,23 @@ export class AudioCueService extends Disposable implements IAudioCueService { } } + public playAudioCueLoop(cue: AudioCue): IDisposable { + let playing = true; + const playSound = () => { + if (playing) { + this.playSound(cue.sound, true).finally(() => { + if (playing) { + playSound(); + } + }); + } + }; + playSound(); + return toDisposable(() => { + playing = false; + }); + } + private readonly obsoleteAudioCuesEnabled = observableFromEvent( Event.filter(this.configurationService.onDidChangeConfiguration, (e) => e.affectsConfiguration('audioCues.enabled') diff --git a/src/vs/workbench/contrib/chat/browser/chatWidget.ts b/src/vs/workbench/contrib/chat/browser/chatWidget.ts index 0956e550ac8..73f36ae572f 100644 --- a/src/vs/workbench/contrib/chat/browser/chatWidget.ts +++ b/src/vs/workbench/contrib/chat/browser/chatWidget.ts @@ -16,6 +16,7 @@ import 'vs/css!./media/chat'; import { ICodeEditor } from 'vs/editor/browser/editorBrowser'; import { localize } from 'vs/nls'; import { MenuId } from 'vs/platform/actions/common/actions'; +import { AudioCue, IAudioCueService } from 'vs/platform/audioCues/browser/audioCueService'; import { IContextKey, IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { IContextMenuService } from 'vs/platform/contextview/browser/contextView'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; @@ -115,6 +116,7 @@ export class ChatWidget extends Disposable implements IChatWidget { @IChatService private readonly chatService: IChatService, @IChatWidgetService chatWidgetService: IChatWidgetService, @IContextMenuService private readonly contextMenuService: IContextMenuService, + @IAudioCueService private readonly audioCueService: IAudioCueService ) { super(); CONTEXT_IN_CHAT_SESSION.bindTo(contextKeyService).set(true); @@ -390,8 +392,10 @@ export class ChatWidget extends Disposable implements IChatWidget { } const input = query ?? editorValue; + const cue = this.audioCueService.playAudioCueLoop(AudioCue.break); const result = await this.chatService.sendRequest(this.viewModel.sessionId, input); if (result) { + cue.dispose(); this.inputPart.acceptInput(query); result.responseCompletePromise.then(() => { const responses = this.viewModel?.getItems().filter(isResponseVM); From 26415018352370814d97ebf41253ae07637d7af9 Mon Sep 17 00:00:00 2001 From: meganrogge Date: Tue, 13 Jun 2023 11:20:09 -0500 Subject: [PATCH 02/17] use sounds --- .../audioCues/browser/audioCueService.ts | 14 ++++++++++++++ .../audioCues/browser/media/chatRequestSent.mp3 | Bin 0 -> 36352 bytes .../browser/media/chatResponsePending.mp3 | Bin 0 -> 36352 bytes .../audioCues/browser/audioCues.contribution.ts | 8 ++++++++ .../contrib/chat/browser/chatWidget.ts | 6 +++--- 5 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 src/vs/platform/audioCues/browser/media/chatRequestSent.mp3 create mode 100644 src/vs/platform/audioCues/browser/media/chatResponsePending.mp3 diff --git a/src/vs/platform/audioCues/browser/audioCueService.ts b/src/vs/platform/audioCues/browser/audioCueService.ts index e9486c80517..32d0cf2678b 100644 --- a/src/vs/platform/audioCues/browser/audioCueService.ts +++ b/src/vs/platform/audioCues/browser/audioCueService.ts @@ -208,6 +208,8 @@ export class Sound { public static readonly diffLineInserted = Sound.register({ fileName: 'diffLineInserted.mp3' }); public static readonly diffLineDeleted = Sound.register({ fileName: 'diffLineDeleted.mp3' }); public static readonly diffLineModified = Sound.register({ fileName: 'diffLineModified.mp3' }); + public static readonly chatRequestSent = Sound.register({ fileName: 'chatRequestSent.mp3' }); + public static readonly chatResponsePending = Sound.register({ fileName: 'chatResponsePending.mp3' }); private constructor(public readonly fileName: string) { } } @@ -327,6 +329,18 @@ export class AudioCue { settingsKey: 'audioCues.diffLineModified' }); + public static readonly chatRequestSent = AudioCue.register({ + name: localize('audioCues.chatRequestSent', 'Chat Request Sent'), + sound: Sound.chatRequestSent, + settingsKey: 'audioCues.chatRequestSent' + }); + + public static readonly chatResponsePending = AudioCue.register({ + name: localize('audioCues.chatResponsePending', 'Chat Response Pending'), + sound: Sound.chatResponsePending, + settingsKey: 'audioCues.chatResponsePending' + }); + private constructor( public readonly sound: Sound, public readonly name: string, diff --git a/src/vs/platform/audioCues/browser/media/chatRequestSent.mp3 b/src/vs/platform/audioCues/browser/media/chatRequestSent.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..ac0791ef6bbfe62b102fbbdf71dbf27a0bc92a08 GIT binary patch literal 36352 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 R{$l3*;^!~su%FD_{{c8q7=-`; literal 0 HcmV?d00001 diff --git a/src/vs/workbench/contrib/audioCues/browser/audioCues.contribution.ts b/src/vs/workbench/contrib/audioCues/browser/audioCues.contribution.ts index 61153542d54..a43adc7c7f8 100644 --- a/src/vs/workbench/contrib/audioCues/browser/audioCues.contribution.ts +++ b/src/vs/workbench/contrib/audioCues/browser/audioCues.contribution.ts @@ -117,6 +117,14 @@ Registry.as(ConfigurationExtensions.Configuration).regis 'description': localize('audioCues.notebookCellFailed', "Plays a sound when a notebook cell execution fails."), ...audioCueFeatureBase, }, + 'audioCues.chatRequestSent': { + 'description': localize('audioCues.chatRequestSent', "Plays a sound when a chat request is made."), + ...audioCueFeatureBase + }, + 'audioCues.chatResponsePending': { + 'description': localize('audioCues.chatResponsePending', "Plays a sound on loop while the response is pending."), + ...audioCueFeatureBase + } } }); diff --git a/src/vs/workbench/contrib/chat/browser/chatWidget.ts b/src/vs/workbench/contrib/chat/browser/chatWidget.ts index 73f36ae572f..f13005eb58f 100644 --- a/src/vs/workbench/contrib/chat/browser/chatWidget.ts +++ b/src/vs/workbench/contrib/chat/browser/chatWidget.ts @@ -390,18 +390,18 @@ export class ChatWidget extends Disposable implements IChatWidget { this.instantiationService.invokeFunction(clearChatSession, this); return; } - + await this.audioCueService.playAudioCue(AudioCue.chatRequestSent); const input = query ?? editorValue; - const cue = this.audioCueService.playAudioCueLoop(AudioCue.break); const result = await this.chatService.sendRequest(this.viewModel.sessionId, input); + const cue = this.audioCueService.playAudioCueLoop(AudioCue.chatResponsePending); if (result) { - cue.dispose(); this.inputPart.acceptInput(query); result.responseCompletePromise.then(() => { const responses = this.viewModel?.getItems().filter(isResponseVM); const lastResponse = responses?.[responses.length - 1]; if (lastResponse) { const errorDetails = lastResponse.errorDetails ? ` ${lastResponse.errorDetails.message}` : ''; + cue.dispose(); alert(lastResponse.response.value + errorDetails); } }); From 660a3228b2a9d86f2a96ee5ba6b2ef48d8f6aafb Mon Sep 17 00:00:00 2001 From: meganrogge Date: Wed, 14 Jun 2023 13:29:55 -0500 Subject: [PATCH 03/17] rm and append dom node --- .../contrib/chat/browser/chatInputPart.ts | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/chatInputPart.ts b/src/vs/workbench/contrib/chat/browser/chatInputPart.ts index d4ac5f52d13..cb3b9934fa3 100644 --- a/src/vs/workbench/contrib/chat/browser/chatInputPart.ts +++ b/src/vs/workbench/contrib/chat/browser/chatInputPart.ts @@ -59,6 +59,8 @@ export class ChatInputPart extends Disposable implements IHistoryNavigationWidge private followupsDisposables = this._register(new DisposableStore()); private _inputEditor!: CodeEditorWidget; + private _inputEditorElement!: HTMLElement; + public get inputEditor() { return this._inputEditor; } @@ -148,8 +150,14 @@ export class ChatInputPart extends Disposable implements IHistoryNavigationWidge this.history.add(editorValue); } - this._inputEditor.focus(); + const domNode = this._inputEditor.getDomNode(); + if (!domNode) { + return; + } + this._inputEditorElement.removeChild(domNode); this._inputEditor.setValue(''); + this._inputEditorElement.appendChild(domNode); + this._inputEditor.focus(); } render(container: HTMLElement, initialValue: string, widget: IChatWidget) { @@ -181,8 +189,8 @@ export class ChatInputPart extends Disposable implements IHistoryNavigationWidge options.suggest = { showIcons: false }; options.scrollbar = { ...(options.scrollbar ?? {}), vertical: 'hidden' }; - const inputEditorElement = dom.append(inputContainer, $('.interactive-input-editor')); - this._inputEditor = this._register(scopedInstantiationService.createInstance(CodeEditorWidget, inputEditorElement, options, getSimpleCodeEditorWidgetOptions())); + this._inputEditorElement = dom.append(inputContainer, $('.interactive-input-editor')); + this._inputEditor = this._register(scopedInstantiationService.createInstance(CodeEditorWidget, this._inputEditorElement, options, getSimpleCodeEditorWidgetOptions())); this._register(this._inputEditor.onDidChangeModelContent(() => { const currentHeight = Math.min(this._inputEditor.getContentHeight(), INPUT_EDITOR_MAX_HEIGHT); From 9cd42d9369376def607192e3a280e82b489b1ca6 Mon Sep 17 00:00:00 2001 From: meganrogge Date: Wed, 14 Jun 2023 14:54:35 -0500 Subject: [PATCH 04/17] add another cue --- .../audioCues/browser/audioCueService.ts | 7 +++++++ .../browser/media/chatResponseReceived.mp3 | Bin 0 -> 36352 bytes .../audioCues/browser/audioCues.contribution.ts | 4 ++++ .../contrib/chat/browser/chatWidget.ts | 10 ++++++---- 4 files changed, 17 insertions(+), 4 deletions(-) create mode 100644 src/vs/platform/audioCues/browser/media/chatResponseReceived.mp3 diff --git a/src/vs/platform/audioCues/browser/audioCueService.ts b/src/vs/platform/audioCues/browser/audioCueService.ts index 32d0cf2678b..fd7c40f9439 100644 --- a/src/vs/platform/audioCues/browser/audioCueService.ts +++ b/src/vs/platform/audioCues/browser/audioCueService.ts @@ -210,6 +210,7 @@ export class Sound { public static readonly diffLineModified = Sound.register({ fileName: 'diffLineModified.mp3' }); public static readonly chatRequestSent = Sound.register({ fileName: 'chatRequestSent.mp3' }); public static readonly chatResponsePending = Sound.register({ fileName: 'chatResponsePending.mp3' }); + public static readonly chatResponseReceived = Sound.register({ fileName: 'chatResponseReceived.mp3' }); private constructor(public readonly fileName: string) { } } @@ -341,6 +342,12 @@ export class AudioCue { settingsKey: 'audioCues.chatResponsePending' }); + public static readonly chatResponseReceived = AudioCue.register({ + name: localize('audioCues.chatResponseReceived', 'Chat Response Received'), + sound: Sound.chatResponseReceived, + settingsKey: 'audioCues.chatResponseReceived' + }); + private constructor( public readonly sound: Sound, public readonly name: string, diff --git a/src/vs/platform/audioCues/browser/media/chatResponseReceived.mp3 b/src/vs/platform/audioCues/browser/media/chatResponseReceived.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..c3ee2a511cecec3ae122e9744b21cb95ec7de0b5 GIT binary patch literal 36352 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.Configuration).regis 'audioCues.chatResponsePending': { 'description': localize('audioCues.chatResponsePending', "Plays a sound on loop while the response is pending."), ...audioCueFeatureBase + }, + 'audioCues.chatResponseReceived': { + 'description': localize('audioCues.chatResponseReceived', "Plays a sound on loop while the response has been received."), + ...audioCueFeatureBase } } }); diff --git a/src/vs/workbench/contrib/chat/browser/chatWidget.ts b/src/vs/workbench/contrib/chat/browser/chatWidget.ts index f13005eb58f..494739a0e60 100644 --- a/src/vs/workbench/contrib/chat/browser/chatWidget.ts +++ b/src/vs/workbench/contrib/chat/browser/chatWidget.ts @@ -390,18 +390,20 @@ export class ChatWidget extends Disposable implements IChatWidget { this.instantiationService.invokeFunction(clearChatSession, this); return; } - await this.audioCueService.playAudioCue(AudioCue.chatRequestSent); + await this.audioCueService.playAudioCue(AudioCue.chatRequestSent, true); const input = query ?? editorValue; - const result = await this.chatService.sendRequest(this.viewModel.sessionId, input); const cue = this.audioCueService.playAudioCueLoop(AudioCue.chatResponsePending); + const result = await this.chatService.sendRequest(this.viewModel.sessionId, input); + const audioCueService = this.audioCueService; if (result) { this.inputPart.acceptInput(query); - result.responseCompletePromise.then(() => { + result.responseCompletePromise.then(async () => { + cue.dispose(); + audioCueService.playAudioCue(AudioCue.chatResponseReceived, true); const responses = this.viewModel?.getItems().filter(isResponseVM); const lastResponse = responses?.[responses.length - 1]; if (lastResponse) { const errorDetails = lastResponse.errorDetails ? ` ${lastResponse.errorDetails.message}` : ''; - cue.dispose(); alert(lastResponse.response.value + errorDetails); } }); From 4908243d91a70bd409fa612370fa6e586108c4fb Mon Sep 17 00:00:00 2001 From: meganrogge Date: Wed, 14 Jun 2023 15:59:42 -0500 Subject: [PATCH 05/17] use random index --- .../standalone/browser/standaloneServices.ts | 4 +- .../audioCues/browser/audioCueService.ts | 57 ++++++++++++++++-- ...sePending.mp3 => chatResponsePending1.mp3} | Bin .../browser/media/chatResponsePending2.mp3 | Bin 0 -> 36352 bytes .../browser/media/chatResponsePending3.mp3 | Bin 0 -> 36352 bytes .../browser/media/chatResponsePending4.mp3 | Bin 0 -> 36352 bytes .../browser/media/chatResponsePending5.mp3 | Bin 0 -> 36352 bytes .../browser/media/chatResponseReceived.mp3 | Bin 36352 -> 0 bytes .../contrib/chat/browser/chatWidget.ts | 11 ++-- 9 files changed, 59 insertions(+), 13 deletions(-) rename src/vs/platform/audioCues/browser/media/{chatResponsePending.mp3 => chatResponsePending1.mp3} (100%) create mode 100644 src/vs/platform/audioCues/browser/media/chatResponsePending2.mp3 create mode 100644 src/vs/platform/audioCues/browser/media/chatResponsePending3.mp3 create mode 100644 src/vs/platform/audioCues/browser/media/chatResponsePending4.mp3 create mode 100644 src/vs/platform/audioCues/browser/media/chatResponsePending5.mp3 delete mode 100644 src/vs/platform/audioCues/browser/media/chatResponseReceived.mp3 diff --git a/src/vs/editor/standalone/browser/standaloneServices.ts b/src/vs/editor/standalone/browser/standaloneServices.ts index 04be9018f8b..62bde1b0551 100644 --- a/src/vs/editor/standalone/browser/standaloneServices.ts +++ b/src/vs/editor/standalone/browser/standaloneServices.ts @@ -87,7 +87,7 @@ import { IQuickInputService } from 'vs/platform/quickinput/common/quickInput'; import { IStorageService, InMemoryStorageService } from 'vs/platform/storage/common/storage'; import { DefaultConfiguration } from 'vs/platform/configuration/common/configurations'; import { WorkspaceEdit } from 'vs/editor/common/languages'; -import { AudioCue, IAudioCueService, Sound } from 'vs/platform/audioCues/browser/audioCueService'; +import { AudioCue, AudioCueGroupId, IAudioCueService, Sound } from 'vs/platform/audioCues/browser/audioCueService'; import { LogService } from 'vs/platform/log/common/logService'; import { getEditorFeatures } from 'vs/editor/common/editorFeatures'; import { onUnexpectedError } from 'vs/base/common/errors'; @@ -1058,6 +1058,8 @@ class StandaloneAudioService implements IAudioCueService { playAudioCueLoop(cue: AudioCue): IDisposable { return toDisposable(() => { }); } + playRandomAudioCue(groupId: AudioCueGroupId, allowManyInParallel?: boolean | undefined, loop?: boolean): void | IDisposable { + } } export interface IEditorOverrideServices { diff --git a/src/vs/platform/audioCues/browser/audioCueService.ts b/src/vs/platform/audioCues/browser/audioCueService.ts index fd7c40f9439..ac3e9a0d237 100644 --- a/src/vs/platform/audioCues/browser/audioCueService.ts +++ b/src/vs/platform/audioCues/browser/audioCueService.ts @@ -12,6 +12,10 @@ import { Event } from 'vs/base/common/event'; import { localize } from 'vs/nls'; import { observableFromEvent, derived } from 'vs/base/common/observable'; +export const enum AudioCueGroupId { + chatResponsePending = 'chatResponsePending' +} + export const IAudioCueService = createDecorator('audioCue'); export interface IAudioCueService { @@ -23,6 +27,7 @@ export interface IAudioCueService { playSound(cue: Sound, allowManyInParallel?: boolean): Promise; playAudioCueLoop(cue: AudioCue): IDisposable; + playRandomAudioCue(groupId: AudioCueGroupId, loop?: boolean): IDisposable | void; } export class AudioCueService extends Disposable implements IAudioCueService { @@ -52,6 +57,16 @@ export class AudioCueService extends Disposable implements IAudioCueService { await Promise.all(Array.from(sounds).map(sound => this.playSound(sound, true))); } + public playRandomAudioCue(groupId: AudioCueGroupId, loop?: boolean): void | IDisposable { + const cues = AudioCue.allAudioCues.filter(cue => cue.groupId === groupId); + const index = Math.floor(Math.random() * cues.length); + if (loop) { + return this.playAudioCueLoop(cues[index]); + } else { + this.playAudioCue(cues[index]); + } + } + private getVolumeInPercent(): number { const volume = this.configurationService.getValue('audioCues.volume'); if (typeof volume !== 'number') { @@ -209,7 +224,11 @@ export class Sound { public static readonly diffLineDeleted = Sound.register({ fileName: 'diffLineDeleted.mp3' }); public static readonly diffLineModified = Sound.register({ fileName: 'diffLineModified.mp3' }); public static readonly chatRequestSent = Sound.register({ fileName: 'chatRequestSent.mp3' }); - public static readonly chatResponsePending = Sound.register({ fileName: 'chatResponsePending.mp3' }); + public static readonly chatResponsePending1 = Sound.register({ fileName: 'chatResponsePending1.mp3' }); + public static readonly chatResponsePending2 = Sound.register({ fileName: 'chatResponsePending2.mp3' }); + public static readonly chatResponsePending3 = Sound.register({ fileName: 'chatResponsePending3.mp3' }); + public static readonly chatResponsePending4 = Sound.register({ fileName: 'chatResponsePending4.mp3' }); + public static readonly chatResponsePending5 = Sound.register({ fileName: 'chatResponsePending5.mp3' }); public static readonly chatResponseReceived = Sound.register({ fileName: 'chatResponseReceived.mp3' }); private constructor(public readonly fileName: string) { } @@ -217,13 +236,13 @@ export class Sound { export class AudioCue { private static _audioCues = new Set(); - private static register(options: { name: string; sound: Sound; settingsKey: string; + groupId?: AudioCueGroupId; }): AudioCue { - const audioCue = new AudioCue(options.sound, options.name, options.settingsKey); + const audioCue = new AudioCue(options.sound, options.name, options.settingsKey, options.groupId); AudioCue._audioCues.add(audioCue); return audioCue; } @@ -336,10 +355,35 @@ export class AudioCue { settingsKey: 'audioCues.chatRequestSent' }); - public static readonly chatResponsePending = AudioCue.register({ + public static readonly chatResponsePending = { name: localize('audioCues.chatResponsePending', 'Chat Response Pending'), - sound: Sound.chatResponsePending, - settingsKey: 'audioCues.chatResponsePending' + settingsKey: 'audioCues.chatResponsePending', + groupId: AudioCueGroupId.chatResponsePending + }; + + public static readonly chatResponsePending1 = AudioCue.register({ + sound: Sound.chatResponsePending1, + ...this.chatResponsePending + }); + + public static readonly chatResponsePending2 = AudioCue.register({ + sound: Sound.chatResponsePending2, + ...this.chatResponsePending + }); + + public static readonly chatResponsePending3 = AudioCue.register({ + sound: Sound.chatResponsePending3, + ...this.chatResponsePending + }); + + public static readonly chatResponsePending4 = AudioCue.register({ + sound: Sound.chatResponsePending4, + ...this.chatResponsePending + }); + + public static readonly chatResponsePending5 = AudioCue.register({ + sound: Sound.chatResponsePending5, + ...this.chatResponsePending }); public static readonly chatResponseReceived = AudioCue.register({ @@ -352,5 +396,6 @@ export class AudioCue { public readonly sound: Sound, public readonly name: string, public readonly settingsKey: string, + public readonly groupId?: string ) { } } diff --git a/src/vs/platform/audioCues/browser/media/chatResponsePending.mp3 b/src/vs/platform/audioCues/browser/media/chatResponsePending1.mp3 similarity index 100% rename from src/vs/platform/audioCues/browser/media/chatResponsePending.mp3 rename to src/vs/platform/audioCues/browser/media/chatResponsePending1.mp3 diff --git a/src/vs/platform/audioCues/browser/media/chatResponsePending2.mp3 b/src/vs/platform/audioCues/browser/media/chatResponsePending2.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..c082927ecc14393110f66749196465a664f0a4ae GIT binary patch literal 36352 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 LNK5lGquu`jHvE@2 literal 0 HcmV?d00001 diff --git a/src/vs/platform/audioCues/browser/media/chatResponsePending3.mp3 b/src/vs/platform/audioCues/browser/media/chatResponsePending3.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..99b75cda978bbc0e6b663c8462898460439fe2ce GIT binary patch literal 36352 zcmeFYc{o)6|37@r%oy8XtPNSlzU$bR#8|Rdgd*G6wONwVW@c>JvJ)YsEJ>7XZD#Bw z6iHDOk}a~7{rqO$pU?MqU*G$$`|taDpNq@6&Ww4!&f`2@kLNm;rs@cQeu!Oiu(t;Q zUce^E|Fk#W_CgTe39kyNXsGCz96JI40f29y|7nM?z@x{G9|7>tKZh~&|2k1qRsYWw zHC46$zGS5HzfaUm&CLF}qGqD4`M+O+AR`^%A8V2SW6l1Et?~a@gZ^txP4&MgI!6Cv z|3AwyQ`P)`F8uS+S|E*VzBJ69y*#9{(cnF9QD}@Gk=YBJeK)|03`&0{I14jT_5>l7g;ehkrZ3vv1|?UQV0iWPU&rR!t1$ju2wMDT zw2(d^7p$bgqTxyiZu;5z0H(hMhIes4_&DVnDTfD=4(|g|gbDG(AG%un_#D3Rc3nHh zbLn=t0Fp$jVIF9?gc)t+a_Q^A+j6q8au!Mv6(o1=U$uhADXcB0leC8=DGVXYTuy+;zMHGgesG?xI9u96sO3 zOZI&IDE$YJ=6T1$ouCf9Kj!Y*Vf-f0iUltrq!g#;YX?f2Zr|i3$i$w$s(I9#Z}RGl z$kB9z{I!v$%RW0lavNJ{Dw?8q{`RK1I;EvO?B}Q$vU$?2{aT$XV!L$rtN-QLV;?^3 zzSh1Ep7V%T#3hSEc;TCsw?C)NP8P!O#;IDzA$FT9xBpoxOvSe8xlUrebiLFkb5&CZ zSXgh6QLTs5(0-C^LQ2Ljl(B5yP}p7OG%1xUq^!^9Sx8~;?e3ZhcpqYOc%svvG_|HEWkJKs(Dqkq6g6IOlq7h(%{+8mv; z>9+s&h26Q26qq1joM}|mMm}}%ywf0j>Ax41l{{=G-FjG478zZaZagJ*%QSxY`eo%e-Wa`5+u7JFy_sfg z#VbF~y`R0l_`FXZehkBVbwk~$Yl(Y5b;GPASo6Yck_#<*;|nedGUX{Z(^;arPKRM< z?tKvb51GET1p%ODoOrGgw8)g=h?%rY&kgp+-*%AV07JyBu==a-a+5Eqet4^EEvCyn zm`^%dr#-&YsjDbzX7IG0Hwh)fdnue+{@r@uly})8{Uf*dJv&3Y(zhzdE)MT)e%7O3 z`oBkxT#{gZtCCJ9xZnDD{(o_?;Z!#T?b^4wncWXf|TySVHU zbU#Q}HC5XsIA&VCIvtS8>tN?>@kx>NpJhDg#n=_Os%l;QBH(P3A<@yV>A<7kU_oX9 zjYLWwt>wbCx;AE6DhopyJvlGLYi(pjFl1W;eMng%;7Ojzrx``u8C_nHFOGRaBA@J* zmImKkDDkdakmAvE@GXz7-<~23!N2!4mqSj1gUnu1oGiS^<#=EmSl@oFExejRtaW7OCGvMAObDGH+Xm9(yUsJa&jL$?O{I%0cGs9GT1C5$3mJA{_+v%Y-OKLbBXg%A zIj*QP-`b)3%-*c2U0Mz?1WBw|n&+w-9rHaXyzaQV* z|8@WpDv;Y(y5jNA65z%Dz^|X8T7ocSh#6E5#R@^E0efb$w6-K)E1n7}B5OhNX*A+n zT%#h6GtxGgPtN%sURIAY4UaR8(fcITQ>!60c)$Jk?U6VJfAD1FWz{w$oj*4calzMQ z1G!>6v0S!`v_F;K!3Fuo?P?OouRn7mcj20MPh(xb@tn`-S&J|WymuFpo~?}S^y8=` z(HB;}Ao{pAdw{3{&ai&JS!Y5uO5r9gBxesDFZjRb}{#mOTadfAnKdd1tdu6a_#W z2z5ki2lNXa`JM|g5eFnOM>XoOMf-X1rAiUO;`oJLJRmE6i`_{whMY`jb4yTlE?Mg4 zTfLca`m>6yLExP)b?K7@O!+G6~IPijD@;kv&ya;5G!c^g)v@?od1>8rnx-f;h>KAzQ*bXbJFz_{nS# zjzB>GHbjpoh-eF>X3b(*eFjXYbB#~dP$=I@H19;IG`xCJ|5qvE_KofA>3uKYH}&%H zfE5qEVBm-=) z$pAU*GN^E?A3V#rdk~lePCy`8Fb7wxn!`limrG8RGDV>md@a>1@G3q1H87GH-~?1Be|NA!?a%f^9hA~rL;^ijvOC3kv43$c?*w{V1fd4)N)u3 z#77cXBl;JQEbp6ga~SDLqR9zawLbasCVdNC5uI!`?mzmj8BTWo%5%s%Sohh1p3PTc z&4=KG)-`Ub&l`0s=I+Pm*|MLbVcG!a^9(d`XjJBDh0L2s<1Xz;vC~#bpFw zn2_Eezyl>tUDjlk_kQQ(zt1Q=O2iudqz&5~kY;yCRbDNvPPRJW zT;CyLvFiONSo)u3Q&BF1sTwNJTFS-G2@8K_@|g zo6I5-4ai3?n@}hVS^}L|cUnxGk(HkBX69Uqy=k?vOFp~$r;Wm;uP?4vbsvMjlq@Zd zeT0?&?nRXkSETuo<9uDuFFNGN&Ec4b$Kk&)-IFZsk#Y%JDyzesO=W} zDW$x$;ufETS&o9YZ%+A`q%A~{-yVOnmAF$D!-Ye?Jm691z*bVFp>eJZ-eZ_wo1NZo z)E}sH@@@vS0oLA3r3e)9vb|G2_$ieaiBCaAJt0G24p&TWaybWuz{0{liN_HQq|Fcn z6bnbHLF+FnzB*j*9Q#B63Kk`6`HXt=q&?MYIMRpoXr_5@;SXtXuXfk>>-FkPLqf@S zRX5=J*EK>A`+?vC(OH{xCbXZ`?bzK?`jy{LO+9WgZO4+j1D?lb15 z*Tvo4+I!6=xm(Y7-Gbn~(xEFW#82nWwTk9A3k6{Kr4aYjXWHXkcBaYPdM_=IS}2 zkJ7=ev9n|9h#W6Uu?hCPtwUz>64eKi) zc}SD@e}6vY-AD4zef87c_kPT1XVRR>tD$Qv<01+w{-*kx)lCZdRVm_@wg*HVxg)QC zS}i?vgUE5YW(o7Wn-qAv!J59J^~&7(ifK03r%y6lEYlP;0Xh z$ko0muuO$4b6DDgq57rgMhM-wmNS1bLVmJEt~}zLLPpow-dNm`VfB^s=IImf6@yLY z8T<(bP`^$dMsA)BcANWTa!EFjr{X*x*K`%lS#J8sXa4ZduV0z%oN%!n|HIvMjInX( zZnxQf^Elko>>RT!G+VsaCs>q&>y8#;2WwZjr04g@D=!jCpA`lb*{P z^T1MT=vs5be9Gd|hc$t3`vy$5*tWx9MrKFH{x=sr*aTzS)tj5HY4Dq$hr%hTx+j@_ zb7Ebo0-z7|7f?h!$DZ061=Q#uZRO~EATxJhE%+s<5^C4(XWcrQ6Db|f zV~(dOEkzdEd~HO5Yr)MKV;l0p?r>nfDs@~eu{jGW zQ6I5k#JJ*SpxOsiM;ak>w zeda`Md?@FGkj@@Ov0_FJ!xlyyc4|LMccXodSnyH>zM z4ZK>VFg(t%P^OqUcW|8yLB@Zeo_rm0vkw45DReIUQI$2p<)4M%T_=Mu?jxpm3ir)w=Wfnuy!cNV~sR2CIb_eAJ+jymSZXHwp@N@XljHPAe?f=_5q7RPpw0ke2g75 z+;HJpSgo|^1!=XC7fZr2q051;aPgC%JO63`YUI z7`q=?SQ%fTw}gZnE*!@8V;}AIZZ-tbcS;a^aF~=Q`cC@A>!-)crXoTfLRuiNi0x@L z0uYK^MyY-_nZN@q0Lp?po?sdm{3SshT*g55EE`?L(N41W<2mKg!$LzB-rV+&yQcj4 z)$>oQFQ29yd>65|>!CneE>_{Yv7fv?zDaZG=M*?(PEd z8<0daC1Z$^WLu(iOr|N1pcBB+=nB*#8Tyk-MwPpnGWg><*Nvsue|VM8b28$eczG#? z{w#CWOE~eJP|j_Q%O2#a;i1g>8im}tN0ky8US?A}>|&+O+PY%V2X}e~Ctte!_r^#7Qhr<1q&EM@-h;ap8cUD0z`kQq6{`7#n^~v)2CFC z0)Ptf_EVM?*||s8YW;@Cid*h)O#ZmN_@S{Ri(~ye(CYPvQ39kNe;0PLKLOBV(+#!I zQaSb0hZUe;1gIrVegTOQZVLf89gx0z1t-~uz{nz$vIaE+Xry%`hr)qKKF)ZrJJrq= zz31O29muJ&%6lA8!{)zGqs47>r~I8s^M~8l+}HbU;TJow%lX3Ql|Ap@&$V5+3=Cpl zbNaQDO+xbx!P5^}%}=-V!{$}b;lX(lY+bRj+Z{XBn$*VWIpq92iiuB05-r{ng~`-! z1&f4uRf(U1@%%)BFop?>HU&Q8bf^e%1vOJNNFlJc)TzIZ>-Li1)^Nq&?giyvw}k|k z*WarsVSlmmVvW?valzv}c)lEx&PA7gEDhl5w~aV)-;kca zjMH__Jgffc*T==*UVoBA)u^|sF>Ou~Y7ARhGTB!>9!a%=jmRka@B11KGMR>RoZyv+ zS|FMMM~UNL`4~fg%E+iT7n3M@{2as9RYXz_g;?*xJN}{>?q>Aa)uSsp`P+mS%puq z%D`B1=CYPLdp1cZ2<}w73*X!vFLc$1BVW8V^`B3#b{en_h@Or0W8%P%nYW> zjX9Dk5J?8faRenufDjvScp~)o5oSS@xG5efwSXb3>fC0(C!-Ku^fQuM?xBI%rdjKa z7wK=6emi?eET&!H&u-0qDsG)?P~2RZi02ckNi7_9hWF~{=`LgIc~&=bZ`>iVh?|+Z zDgTh)2{6NPAikyO83`I92XOe_w|pbiXDBL}1Q(mAO{L_p>L* z=U!J8`rv%dxz>UGgw3i?kluX%T6Y9Ivr?ijqJ=-WX@BKb3F)8DE;IYnBeILeu%wRK z6b5kEP@i!33K2bTDcK7op=lWSYd#pL8{_Ag54O&QhwEJxEv8bEGAq)EbFgTMGzEm0HD`eKB$@a6qIORYJ!1is z^F1RD@j7&750_joZr9J4np8Psyqx9|4u z*=zC)5eIl>%qmuVCwP9aOP z)rS!l)ZzU3vM>$Ek%KT~ARf70~Os-uzyA*4`N11vWZbkyVEbaa^AtGYdNB|fP6D;AT}tkI(E1Og9E zf{e4>*P2}Z{9&AqQt$DWEIH(H4t=Rixy2;P%L$ZlqtE1~D|96uIwjTj#3#*!f6rOE zr$M&KB7Lvnq5TiUsO_am+u5COCdn!NVf2SWFK59g?-=6OSIc&?{4fEZW3`&i(Fe&3 zXjIoBzwe(r(M$vUG9U}q1g{W>7={!8ArKIYvtabj0(oN2voZWvN2OQ$Y{he@G)F;oJ4y|r1;kh>L|86`?T27#Rye* z`0dy6*{aC8&Pct!x7Daw>NLB zW0HMFY89{3*7H2c*p?)5%qj<)G}QIR2>kO+B+RddQs%#s$MifJ*J{JP&Ofq&Z#6wpP&k{ zA%`G0K<~6%7e5k5O!1DJ10=cKj#E8r+H`^kJTV-={uW{lnJ34#zr&sYTtx-?Z zS|(%nmIr)2;#d9izm;cAi;{=eCf&zr_8(rnej@7#a2&RgjK(FqJ;tiaTJrC^rI}@T z?e(rDsoAYm zA? zjCST>>nydi_rGX49)8u?Ab6{B;)ccgg>bVoEp_@!bTZM8h6dGn(zLJW>)MqLfz)?? zkmzk07yQp3oH|5wOG2d?B1Z;|B=Yznx-e)U&e)8>pZjDcvWF3JJ2Cj;S*KJwe|W#p z`9sg&?Bpp+=>WThiGme=;!^X3h_yLkQsmY&fEuM2Iz ziMqYhI(dh!A+Ww#=RjSv%xdE$ixXUX<8JUU?Y2n{+maL0&~hXS>F22AbW`Bza9=j5 z+2iEy)>a-oxH@)O>#+L5=3oJO*uIs-xS1`gB$|v;H&pRHJYgWgRqIe+0_lJQ0DCk5 zk^wy~o~Os#%_$D8smyq99zF@;D^8<0X6P2HglDqZVRfUSH#S*Ep5k{t9TIIeswFmRV-OpTOm&#@&(Eu1v-@k z$TAR5ix;FxHdkRiiva*tut+tuAo=S9ECrMdQ>Y^=Mh_*xT%nb%?U$tKq^DV`lR%Mfb2 zKvKE`H=l$nwnUD=i^FF-M}4{HUrb%`zrBUJEq~}JT``JSXyF<*uC5wgaXL1f)UH8R z&m73l}CSQ=4(G5AveFuA(YqP7x)Pb+l2qx-Kc&(mmz{tTCYkNG7Zo&!u^ zBtMZw(eh*#6qXFg1-P*){Qd!&SUX%|dDO0uq%BS*7PV1_m1YUCU+tC8WoYETy=#6@ zTP*0yVo3H(@&}_+Pg;LmDeS4Ww9$93p$c2y1CHH!&Pp#?2+^ef0|K-8QKH=AejHUr>%R)>RC_Q`ZYrveSA2%T>&}`3-lj_3{coEa2 zI6X_4v1G{_Zz5|eS^lps@Sr@nD!U%xS?d-d?Mfz^UEBYtMdh6Xd8P8Q?PbmJ=DQw! zq$IPQT3_}R1KS48-?)qdTH2xCoiMyc&zj-Au`-2Yigv&5P$98a2~{~)oT^gPO9)T9 ztRaougapZjXyB&=@QjLJcB1(LI6V05H^fSCg=`4?5&(pih|bco(^NxRF4RB@EW|?!4 zc^2RE&5qm9#mHvW%^^j#cZgTe86#0>w?7>cC*UAHvN^;7Z~{O*8iS5_%8PrC9MmYDV!@nE-)JrE9DMqvEvu*Mk(ffzeEazJ(`z2T$KgoPemIM?xAc37 zJNhk<`y|e6>nA_$7`kO^AHD8G--mQ}mv=nkWl`>6#Z@Zgh89!Je>ShmZO#g5P@ZXC z$*O}?$yA7g8U`T&Q;5l^5ppJj03eX#hrsiqkrw+W3Ct|R+y}6or_Y9XXFGK@-ISHI zS$Asl{{Gmi!+ub^r1s964~8VYTkeWmf#ZAYmd&eGUv6w1a%9gpL01v$t0C(WS9bhf zHmCQ|^Lx8)M;OWc`liZfq+?1KlPlmDF>8?krYBz{}yPS`%Wf zEN=}BtIY`3PqY7I&tJY-ZQuBIo%D~9^}jQQ9@DJ#RymHut3pgsws&YmryPdOImc?_*yV}&o?#Do_JZMCr9CrL*w)w-g;QGw8!!1O}5Q_t1;CB_|%VC;K)=Tz86XG;bHbe5T!sK&&hjMHvuXEWn&D!&Oc=)D9pKhmt{g@ zXk+2BSWnChLG7D++i4Z=3`3~tOp~1UrunGfcf<}bs=xyCCk1m4HN#u~pp-l0@%Fpd zS2KDHY9gRIayv(Du~h>if(JE9!9`|-f)o=}!&?fnXc-%wS6+WlF8oD zsR~Lnb~@+7~5Aq;&$~0mGmNsg95yxfIT z6t41JGNkWav1_Egal@6nV}of{`W}Z8qiA)r8Hn6DPNRlH@E&8RU^iliw$@|tiITH;x|1j$Ozm+S;Sz9yDHNWy{c?8+88A z^+!>;7~IlqBp~booKOi`7(ft!uTg*xI)kYOSbuCRw``h~d8wub>mCZC%RDs2uDwH# zx#>xdK5<)Z=nvI}EA&6EsKcMp{qWkW@!{7m(!v|B#Z+gpeR0)DeyN*3OK%L2;6-?D zKH~JS%eyJ#uPHk3e{kBON?qdF&{qk9X52cQXqJcS9jrQtHo^sFL@bdFyo*zi;{*5| zARekRq)Ee_F?AJi<#ksQe6m8V$?j1|P7=19DhyiC>;b_ioC1Ta@-j{5g0l&1YDd18 zEUWpPN|JJwyj;}qJn?1dCR}l7eB&cbjHScz5uWq7meJTarYu};5w`r^{9FHw2mFEV zsQ*JGJ(u^>rV+PwGyk*qaT>JxoFe7>xlEK-Ibsu+aN-ulIXr+O4n@|^VI%T!QeJz? z05UGOaZ~~jPJN1sKp$NRh?kETa>r@x=ebe7vc`{;uD{pwWc5R3y&ow>b7_nHgW=>M zINaw3oE5rvr&G#9Ch>B)szQmXd9#4gw@NJEdf^=G(M(^!+@Bxki;mMnQ-h2%8jomd zTt3v17$52s_m~fZKWPBU@>C0>ewbM4M4oUunO?Q%4n#uRv)CEbv{Q;(kC|KsxAg5KoM(tQ{Ami`Y{ z>MXN6A#b(iZvT;UncEEURYX@hL>Fm$2aeihVGrKtZ9Cv zym-sIv-&=^$~IEEpWgfY$5E8^df1s%)_iflr{)3ITuVn4H@dm13>mo-;dRBkFq4mRo0byGM3C z=xV(Fx@_j;`*Y>5#>-*d0{9brv;^1?4rLWb4|1R+ev^f4K1hUMxNZ4b$qtY-6+lE1 ziQmW&3&4~o!A<#v=Bv>mJ4rdJvL!F;4=`gQi>_N+e>cu07__fHiFqoz`QG)HNt0#M ziv^eOziiKT9Jxs;bC-(IR@n4lY%BUk4>bFnad}R=-vVbeDTm9xJ|jqy62LM1*DV0` zh!H=Z4Zi$v#5UqgAa8uY9@iWP?RlkV{H%News6Br53ls94faCSVPg`Xd0iWQ}3gkI<`MU#7p5hxiXk%h=31bFGm0VkVS zOL>iW(#4+(=HlhsmyxMYzkl&|c%&H5D`|S$MS7~!`Mh&VgZ@^^ia}yawIH+Jh0>7y zjBJ@6{`{TW$yzDB^t*mk5wb=Q)#g7ZsP!X1LuZUbG-IMOAZ79s9uP|v0Pa)ykUF%} zKyi(=4H`fo5Rn%UMl38ER-88KW(2SIz-exp3j2GTLuwUhjG5~l0gL0iCdVG#)^6gN z3T~hF>pA?YTScibrZzEBwxk6G^X!GeyKeOGD+o5P?%j0W+x3aKt+S5%$|>Kz-{P)4 z%az2ROgYW--7#1|;1jbEVwer@IQ57)kqQZOJtZ=6Zs-(c8J7xpiUL0Yan3e7p|+Yr z*8(onhoRy&zstAYn0>nOlqTJ;P2=0iG2#C2vQ(1lv1hk7Ldz|fx*040Bl%BUY+I_reL zdY(SN>H=`Rt!fcd^q|r8hou#D4w%+BWkNlYh+-L|L5L_;A9>FMrkLBH54V7+Tl)7b z#VnHvDW{3;7gb=mzsOBO*Z^MRyveZL5)9X}C0SA&haq1EtS8RPMMoY8gpGq3zb z(mB#rq&o&!Ih|O9XQkA$i{G3eKZ&eIk!zS`5ODw*AX8~FaRkI^GsFf^Otgt7BYp4p zC8?RI^N=|-dL_QNJEiC*Fhv(|+W*yc>#NwCg?B%V8m>0)jcCGunwm4mujlo~JT3+d zZ=o7a)B>fGoLA<}|7lJ#BGJS-rMU(Dr*?;kkQmBW4Of<-DsdQuOaY1(B}NlsC-CwE zHPi%vPl1^dg$D3sfS(r<1y~^>0eNJ4%8c8dr@_^{@nbpLi|Qj+3@1Eo6)fJ1{;HNA zQ*hipzX@OBDy5gZNQo!m&9KEizH2G*5oLST>)LS1$LY&y z9%Vh9?xgaa20B9Jv@hVZUSloc{*%lXTQWhYL)mPK_5+y0FsG3vfHX1>@99WaP$;CR zo7@W+krUXgm3@u-QWeZ<#c$ZK0!oBoSv=EL5`Bt!=YW!*`yA=-1$c*)G2ZnNZU``+ z|E>@B9c#SR)#^rZKBvac@wjNBs+`Yyj!^_6(bewn6xZEDvpuZ&)fqlEQmH;kZwbX5 z;t(cDis*DJaQQEWYeFsw2>~}5{K+SyVo$yP$A2aI50DfBxeLy0F#MN#rI-<&KV)Z! zjXH&7;v4|gtIFuP10bo1T+x}4c*`2z`>^lQ7$(NqKkAE{{;G%TY!m;vg>{b8W zq46tCd}Yo2<13Q|Z?FF{T;sczuACV2(r6=j-*Z>|u@H?J($em+T@QNuz`Clb?_?e4 z3G>CLDLpwF-%4=zF%f@#`ij}x{;jc(lk^?< z=&<1RLxDscVvvpooj13WOkQLwWsYW zq=7h~@hggnp7(7+?9^aLlyCq|8L{Ph&aW8?EF(fu4#1yt3T%DCNx532A6Hw{J#i!6 zp+|jQf6krHG53EMQTS@!(Z4dHthqU)7LLe+x6PZRJG{P%>on?J48NiDy}y8wFYmgK zFAk4&W^J!L{kj)XGEQGdIkkuRXE(QFQMV5J2z47N)lsGQjJg0oR3_l1Fufe6!JVTc zYBvBrBPswWqABIq2|!%#ZP>bER+&|AJ+p15V~fMr${V>CJVw59IV2PoM3DAklgFo} z;LXw!c=bAb=hk0NlB3Zd{ce6|IF=yI#{*=M%*GTjgeOT-rJ??gWmh)lX0P#5j z>uX;8({BbjMEpm8$S4CB0|tK*6gsJl_?gw|550fUBCPDr$lt$Ho}IzO1`tCjEX}o_Z^q9SiqWFiQmx1%tzllC$3q z=S-aU^=^{9@-E@i*-HkGUNAu0Xf&G*ak$lf^B@d2!_}4W((u@utOgTj=kxn#NOaKP zwVXq=let`SWx3@vksSRZM;vT^2q#MvjHC$Cvt~5J9%&6Cb8@Vfscrxt^&$NfRI|-k zB=eO%tiM&#bu2(*hjoNnff}aKo{6G!`K7HHDb;C|phVQC=) zkKeK2goB@)#CEA@oYxPg8qp5@+=5aBft#Gl+{*+YV~sf=Ie^*kToUyt08pzD?bbXa zahLcE)F~3k>k?{<=S1s!yKBn4S41XNuN^wSKC`D024@z+BB}7oI6UBf&byc0RY;7> zcyyMQ7DUMZEWmg)yYy1jruop<0w(_F-Rhu&%%BJ@c2Mk`o;{kupCmHMn&57m4IWEAB7-o~e90YE7yS`lu-A9aW&5J5o8My;=FoWpcR9 z^DAzd7}|{TO6G6+Cq^5DmlnI4PRzDXZx&epg4Y*e%S5M}!n`6zBTiC?gype&pFzAS zkqsFM>=)j@Y@5FQLyFsv--yXZ7if#cDHP{vvQd%7)}?WK2Tc{8E|=$3-J}H!iXADh z57j<*qjWRu!`&%iSFLZ?Ke1fiXyd&av;WLEOwR$~UBkZf)~loX)thI?P=qn07K|}f z&oo9u=O`f>jYxJ#70`u{RAWepECL~n@H{Lp%>c;`Jjh1_fd@~difSaW4>Fy-z^*Nnl=nt#y`mlJCEU_I`-zQ%J*{M`EAfO+|guh zJo6NlOy4w2fE9>A6j8^)MJ?11&PD?9aa6Gk`M?Abyn>k6mO>_^i$9DH)e>1p z3|B$-=Mp{3RoOoNOWIQ=N4yX(bCjR2^&&rtGOyFeo*60eZd2YF>ymfk4x8I@@7fpO z-LHjPHk{ZojPgGJBo^#y5@0LzR)3k61W+0LxlKkLKcOGBX&;=-)|nb{K9JkdX_;&K zNXr3bcaY8>ej6qN9|j^P0 zH_t$-!x-}Oo%XS%-OmT%hX>&F*ChDh_=g_t_Pdg7;YTLoLYvVh`LY+P=)M+S+l5Ji zM|!en+ip0%rti63!>Y_cc*yG+pZS5t>)~VSvHJMfu-tSr1)?c203>{)MYFNc1j{?}Az)A_Agv>xbL*_J|A+$vQ z5wiV7;KHMZ58fK&c@{0DoGuZhke_+1Fkoi&L9J^;uNka;A~z_dvC+QeB%1xwx1XUg zTqhX&o&FdXyRXv8bR%S`dE~7}!*=t^5WLm94|r%}yRK`KP}FLJsX2rxcwg7cQ6vZ! z$>q=|+F2+K%)n8XYjq)BmRfCR@C1!#CoL2zAncT{nfwa4H0?VyNG`DiOr+w=w zmqSfQlhB8pBo)^i0^b{S48BE-Bnjy5C?aCZ)q)PtS3y7iPKlf>i+?Lkw}}QH zeZHSf5}>!EKp&tL(BLedNTCuCCBMlUpem&Zj8>vB$zX@HpC~#Z?+am5eVBX(T+L!a zSlDKyGk#8SJHP+zd^Y#ipSLcids8o6bmGXYt z=gl`&Z2ifP*{+4Ks7HRK?;l3la&$C%&ZV07`RHlYlR_naiC1;6>}%!4AJO>~xyniu zmSgq87qcbGN8^AP0(d+T*&Xwf^9098I6{aWTgnG;6P@m7aj&=t?o(t1&;0N$+2om1 z7Jajr*6#n-!xR?&9(obsdR=`mfm+S{wuH3BxZ{SsFD|C@-xoFL^(J_iw6~QcJW!kz z-4>SAnOX!G-MQocO%MkV)o_R+&YNH`5ly+TA#l~o41<_JVK|Do^H>5qrQKCEMoWX%};|xKbh5!DU9?TwFG?RXQq51{J;gfx%Q$ zppA+_VriEF9Tk8rIEw5KX;Y8+8Z|Ki90vPb?cWlDj0CcIG{lskga@Etx~%Y-UXh!J z=yKBJUf~n8GU|WqcY~b#L>(<9P!-jvwH`#zzXoB_;^Moez?kQ~p7DV}iiKb9`LsEH z{Stn%%eLb{Q&0P$$p){muUn$py9Qtm#dn{Uq9gQG>r2q>!K~PE(tU;tQ_)`X;s!!=L z;-Az+e_ML~&hs|lC&Pa+SBg+JD;kX(T7WP}7jV7o#L82`{UFoW{cyKDRyO$Rs-t`F zql9a>C!0wHv1;Q3?}m2!B3@f!kFR$O3XntL#$yH%{`Grw#C*lk~m>Y5j=) z-Dk>u)7C0s(xJDSRE~w+(Wa!GYoD#_se8Eu->1H3S)*DXLA4IB-KU-fmb;<_1E{_L zp2`AX!%^a?r_3TH9a+P1Xm3O+IvnGTyuu>9pU}xeZX`>gPYdPVDs~MOx6X5&T?<+5 zyLQhVkfZZ+>7+WhL#Z1;J-{mWkA-Ye24bE!O% z1#}4U5yImPRS8H#h@YUYaSeG5MK2R#03}o8hy$7&>`pK9iq&9QJJ1$vp%Me^D4}x) zyM+F5zAl$CeA{NfQKLjCkinGl4Ho zwdEWELdfOV95%8l%Y#^Ko|pdw(G$9fj>B1?@kfxBlD#w>Q-Sn=MO%#ECC&XZJr{D< zp5D|;5WHQ-hbz= za{9^DyGXA;i-4OVjkAIFIZOaLho34*?^JVQBku|8`k>^geQ{~&#_QZ2SGWU?=VuvI zW(f5jyL-hx+cF|xJ*RN$DrR|q8`JhWIyh``JZP(#KEl6Pb$VuGP5H~heFeh%Dv50P zSD454-tUiL+vl8*cd+6t%!Kb@J9KeIvB&{M8AIFdSj0~@A{CWHkJ)X&B8S6~m(2bw zQxyRmH3wn9Ba}MJ5-cBWdKWm0C^{mM5Fb)>eaz(+zogaAsZoD7{ik)k-GSF~MO{PV z;{wnIGDoxHKu*3JV)U=Fz+1b9LE6Ks9@(FsV-7xlqX!SpU46y6SmF;?5TRqnYN|l$ zh8j=H|7q_$qng^bJ-$N{dI?ofzzA|gno*E|ihxvUQlxhgMWt7%3DOm$V?a7WC?aqG zBOnA25J6C>8oGi~qYA_J7X#8*|OM_F8)zp`?TH zl7B&8qkzU76ugm{8cR(FX>8I4=*$Olu+l(9uoYxZifuwZG*{&H@nNnPQgjIYwwc08 z?XIwOG5pct1?}gan^j|=SDaS`FpriqnO|Uul1=GC;J(^9@EGRy2RUUbb2>Gk6TXe)Aq z91im`Lqa3bd~>)D*pH&zEW4{Y`}~+2$%cUQS7^s;6nOuXIoNEPMR~rNuf$?^{~|KLJOVr6%D?IkeRFi^Om`%%-Ey~PGAK?w zVeMD!Wvz5n@ne~<>uENQzYGbbGPhX`SagfzF3RX3&PG9wVX*)Xpn^o;V2YgBY-L-1 zSVi+M7e#(_R~JBFQht^gU+{!+`Ng2T2Uh^TyVkUBif!zQ>4P6Tl6RA{al{|N!{%T+ z19k*t@=OQXIjkaXU^9a|eY5IL{~+DjF{hbSJ<=Canid3pyfg3UTl3dfn{dK0k=-ke zjU0?Hg$ptaRKaOtQaz8NIouswyH}|`8wy~}L>+WY&ilIG?&B<3eCGFcdKEmw@uiEv zKock%a8qxX+R>p*hfCs@!ItwoAM$kB9LKW)A>x%;>oJ$g$|38WLv^yE?1Vp#1GE5XmN=Sz6|sRZ4gvAU`*jGmkfj zoEl7G{yZyAB=>a^34}X-#IkMu$k7PhYIKdVXU*m8L2I3OtCZUd#r<-V+79z9xR40F zXNn=b@Nm}f_vpvN$O&v5FAfrnY=q;W)G{(bI1Ba003e$6-js>PL_N(UX9COu5Muas z895dCt|Ggd>wEBuyV%yI)DSLVTY6v%lPu?oj(Vp(!x3`#AvoR4NfR(5#@cl=tNEp8 zyS>FX+HuV~8YR9W?19BCxyktW8u=Iz71tM`7G6c}V_dq8s8`T0I(A{wmCz7oWbe6a zr~jg{(MCZbEo9bvh`16pZ>q1@m3Rq;A4r~=<66hLejbgwJ(bLi*TTqopfx4uylyS$ zt#1(h?S37JKDrH+IrW?f(&4W^K%SXV;mN^9UHl?mZGBCAF>lkvAn?TYDZRvL?ZFCa z<}YHlS%u-|c}SZlK*1-WpEe2*0R$}+FhTGtQJdN;zmB?(qLg_%7G-zZ? z-&=*BCzKI8Xfz_9=QW(~ldrV5_FxyWj!Z9n*JE=h#@f%hjQC;nel?rrOS<{_+B*J_j2L6R+ z>8Cmsmi)CBJYg*(g4H zaNhr{7+q0{HmCfFK?h&|Mw! zu}&e@%i-^Z$U!Na7`C~|m!nxuOwu4#y1dI76ek$!kHwi@${b)oYZ9Un z{2ESAhe}loz39bKimtqb&)&_c)e?YNv^89OyA>AD`285umDkEmC`K4k!eRnT$HgI( zX90tiy!q-}aXG1?pfGiwrFI0K>hidk9=&a2Wm*1YZ?RZf&(EUekAp^$H6coC9p#a=;U=%zz0;ykgu*&n zab2>Z(alxTF`q6wG`28-YrKYZVOR-f#;@jD=T83O7rM+@{P^J^6qa-3l%JA2BkAS4QCyMnO zT2Q~qH?1-ZD0yG15sNyt%MTF?qer1Ze#V30KbQPfv{+0UMp>?34t~is)HKhDqG1=M zb~$6tzzzdgrIcBqkoSCel@y!fNc}r1qxAhQc8f{Lt|P^@M@2UVjPtG2E6FRJiFw{% zj^MB8WWZ{jtb!AWb^aI?XO0cV>!Tr2Trxgqw;=v$BO+84L#=rFd=|~->#9YTPuu+P zw}5|ba4>rCfjjkM84Rdw?wp-Qx+>7r!`FqtMZSm8U(*239|=yyq*A>2YCYK}5%VS! zGoM_%QFFH6vf59av~9V(qJ%f6;!zLM_g6F6ZZ*L}A<(fl0~$!!s4^_)qm{vjK3^2`V>!_& zArEH1R~M8KO^AkDBm;yBZ+tKNxH6;eeQ6_h zruXWjnTv;h2#xNncTbsTZLU;%dRtm=+HVk#71+CHu*oO|=rt^?Sq)0}Fnr1A3ss6@p;iie zO5=o3m6*(rcLvV}Vo0*Q^3w=FpNJDeKC#){rs7)i(Uf77dOpfx zb2%7Gd!%WecYMuo%z4#XW20|Y%fxLPER;2GRF&YJqz=iL`N^>zdVu}cLjG_4HR=dW z9{g(gX*pUY0E>}yWlMwrCs?rpgk)YdQ6tMH(T^Q|ObZtw*s`x}ojqfvn4rz~E=8R( z$zJ)=B*`{#mxpUf__@tA$;!57(zG8rpTkLS1m-Dc9KQGfDGENZ=>hD7o?4bG?AnL; zEfrNLpi}>*N{vHuKp%FA6rCX%a7i269^vHXY`EfIBjPu6LM8RjQUc#4!&aW&pAEpF zBer)OjI9l6QbI8zD>Ir4S>|zH`m#gTQq6LoC>9kt2bWxegxUso<5};GUz@+)ie)l; zBpgU9ImbTH!e{b{U+L;(=4$)wvj9)yYM%`GvQeVGS1`hXL`sXf zE-;9!T^f84@|~HzxFPL9PyX17v5K5|Rj>Y(Cqp0Wll()orSx{p8^%VLnLN_GSPln9 zYv1|PD!~&0oEBB*&TMCTC=gfb-6&|p%jh+Tzs7GvMKc=Ran$#!l%D7qtCr?+(?-;V zTP#|%LvSkh1UiJUAQI`rcyS0|NHFJTRnoPTboLuG>k0bdkbu;^7QyOHs^;T*cFo^r zyi1eR4jC@JR?B~czp5z8)+_3Dc4Wl~SU4SRAGeesJoWQ{9V#^#PIKhUp_3JD%oC-D zJTiF{dvnF+AN6ieosG=4guJzsIj!9<)}$^nTz?9fzlGTAWU zM9R*svSmgVAF~D0fd3S!Av!!m{k62}TeWv1Rr$_yMLc4Kf%%&m2~&0YRUQIz1JlXz zNwM8Abzc|kFbQE^GiwY$BE+mS3-{`f7o3wVs#p_O_E@Skg7`D$u)n;iOy#WWea9*Ia?V-$~>6F^zOaXv@HlQ%YU1VO)YH&2G!V%wf#-O~a!3`;% zv6Ya+dpADnf!z3y=*^`mL4>r1M1(3{prLDGkXAA9QLvhwT{y7alZOd*v-#R71O?PmDfg)Me3uj&MKU%;tj(E-DgZPHc}3-_3KuK&9T>v!pAIA zQ}PJ*54w!6{;ZZJ2`uypomavXJqdFWSRFbGkMMu%K3*AAP&7aNdYx%?$h5dWdk!`c ztgvzEuQwMfU+w3gNnLb^{ox-zH@%k}^DMLi97mZLZz*1*f7}$08&^>}(GOQ2^^~H& zmmis_aZ|ra=!V8iOSHD{_l>&V(yV@t(p2;YdBmT+`W=4c!3OqkqXz)cDuuU?j&m0V z-4jd{KOQ=T=u45-HH7O_6glJ$Ggk{(@%{SJuOG_yG;J=(Z>4CRrS(t{W}Dt*EfDj4 zcB^cjy!o=!)vmXI5fJdOuDSL!_cBcq90CUvzX6$Ng%tD!-^S;XoN_#miPZBih?IXA zDagghl5Vka-SL3Wv)7HZHV?mTp} zP7)%Mr~ldB|9_{U(tGoLRrH(DZ9}yVv z$QwgI&RE_`pqxqo|He*M|K}hrN>zNYbp0=WkbC?r9p2?ffg!{kNUq=f@Bm=`q3jWgVO(06+#;Kf z#=>f@C{VW81E_AFA09XX3n1d4$bu#C5CISgfcyXe0!#7yWM{FvxyXNN8PVz6KHB^0 z!i57EBT6=DpP%D!u>L_HpyPY>fXCkRh=Cp=hJC)0N5$?#P9E*8b6gGG#QOXt4)S+&(}2(B1h9 zfMNIYPv{;$Ou>&Sou7{R636EnrDw0(k2onD!1z$QN&Eb8?bXjvfa`bvu0{2`{$Zv3 z`WYX{@jWir%Ce(yK1J`hc1rj7!P2+S56|BG1=+8EuzUQl?ec@AXoHJ7{bq{^Cp)+5 zl22%JP_)zoDQ=%1#Nsh}^4_D$Z(K(X$xrfs7Dk8@105 z8xYs`}MOH_2_Qj zMGxNp0w1$L$%Do}@l^HEscwv{2APs|9#n1n{BT3S*H!NJ?_m9m1OOAT{(%9sj97}V ze-5XImmDk2gB4;AYJ@1;u6=%(_V}SvkY0i*0N^S2QE&|!paX^)k(3=6gGXe8N1B{u zSITztfmQcE`3J0@kAd~iZv707-Tplkprr!WpAnR8x({W`JMilE`GJA`I}$V&%e4g7 q&EWXme*u)=fBhEw-;e*82ln{^H}YYBYuL*_|K;aD7LfmE7ybwN9l!Yi literal 0 HcmV?d00001 diff --git a/src/vs/platform/audioCues/browser/media/chatResponsePending4.mp3 b/src/vs/platform/audioCues/browser/media/chatResponsePending4.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..f1ab44a26169fc2aba4a644c0c2bf0c65e7024ba GIT binary patch literal 36352 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 DUj~3< literal 0 HcmV?d00001 diff --git a/src/vs/platform/audioCues/browser/media/chatResponsePending5.mp3 b/src/vs/platform/audioCues/browser/media/chatResponsePending5.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..134edeb93af312ce98c260d0c63163d1492a96ff GIT binary patch literal 36352 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 literal 0 HcmV?d00001 diff --git a/src/vs/platform/audioCues/browser/media/chatResponseReceived.mp3 b/src/vs/platform/audioCues/browser/media/chatResponseReceived.mp3 deleted file mode 100644 index c3ee2a511cecec3ae122e9744b21cb95ec7de0b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36352 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 { - cue.dispose(); - audioCueService.playAudioCue(AudioCue.chatResponseReceived, true); + cue?.dispose(); + this.audioCueService.playAudioCue(AudioCue.chatResponseReceived, true); const responses = this.viewModel?.getItems().filter(isResponseVM); const lastResponse = responses?.[responses.length - 1]; if (lastResponse) { From e086148b0e3a5be4f7bd014d9b92be00c5eb2fcf Mon Sep 17 00:00:00 2001 From: meganrogge Date: Thu, 15 Jun 2023 11:35:20 -0500 Subject: [PATCH 06/17] fix --- .../standalone/browser/standaloneServices.ts | 2 +- .../audioCues/browser/audioCueService.ts | 70 +++++++++--------- ...sePending1.mp3 => chatResponsePending.mp3} | Bin .../browser/media/chatResponseReceived1.mp3 | Bin 0 -> 36352 bytes ...Pending2.mp3 => chatResponseReceived2.mp3} | Bin ...Pending3.mp3 => chatResponseReceived3.mp3} | Bin ...Pending4.mp3 => chatResponseReceived4.mp3} | Bin ...Pending5.mp3 => chatResponseReceived5.mp3} | Bin .../contrib/chat/browser/chatWidget.ts | 4 +- 9 files changed, 36 insertions(+), 40 deletions(-) rename src/vs/platform/audioCues/browser/media/{chatResponsePending1.mp3 => chatResponsePending.mp3} (100%) create mode 100644 src/vs/platform/audioCues/browser/media/chatResponseReceived1.mp3 rename src/vs/platform/audioCues/browser/media/{chatResponsePending2.mp3 => chatResponseReceived2.mp3} (100%) rename src/vs/platform/audioCues/browser/media/{chatResponsePending3.mp3 => chatResponseReceived3.mp3} (100%) rename src/vs/platform/audioCues/browser/media/{chatResponsePending4.mp3 => chatResponseReceived4.mp3} (100%) rename src/vs/platform/audioCues/browser/media/{chatResponsePending5.mp3 => chatResponseReceived5.mp3} (100%) diff --git a/src/vs/editor/standalone/browser/standaloneServices.ts b/src/vs/editor/standalone/browser/standaloneServices.ts index 62bde1b0551..dcf5d9a30f5 100644 --- a/src/vs/editor/standalone/browser/standaloneServices.ts +++ b/src/vs/editor/standalone/browser/standaloneServices.ts @@ -1058,7 +1058,7 @@ class StandaloneAudioService implements IAudioCueService { playAudioCueLoop(cue: AudioCue): IDisposable { return toDisposable(() => { }); } - playRandomAudioCue(groupId: AudioCueGroupId, allowManyInParallel?: boolean | undefined, loop?: boolean): void | IDisposable { + playRandomAudioCue(groupId: AudioCueGroupId, allowManyInParallel?: boolean | undefined): void | IDisposable { } } diff --git a/src/vs/platform/audioCues/browser/audioCueService.ts b/src/vs/platform/audioCues/browser/audioCueService.ts index ac3e9a0d237..4708559dd35 100644 --- a/src/vs/platform/audioCues/browser/audioCueService.ts +++ b/src/vs/platform/audioCues/browser/audioCueService.ts @@ -13,7 +13,7 @@ import { localize } from 'vs/nls'; import { observableFromEvent, derived } from 'vs/base/common/observable'; export const enum AudioCueGroupId { - chatResponsePending = 'chatResponsePending' + chatResponseReceived = 'chatResponseReceived' } export const IAudioCueService = createDecorator('audioCue'); @@ -27,7 +27,7 @@ export interface IAudioCueService { playSound(cue: Sound, allowManyInParallel?: boolean): Promise; playAudioCueLoop(cue: AudioCue): IDisposable; - playRandomAudioCue(groupId: AudioCueGroupId, loop?: boolean): IDisposable | void; + playRandomAudioCue(groupId: AudioCueGroupId, allowManyInParallel?: boolean): IDisposable | void; } export class AudioCueService extends Disposable implements IAudioCueService { @@ -57,14 +57,10 @@ export class AudioCueService extends Disposable implements IAudioCueService { await Promise.all(Array.from(sounds).map(sound => this.playSound(sound, true))); } - public playRandomAudioCue(groupId: AudioCueGroupId, loop?: boolean): void | IDisposable { + public playRandomAudioCue(groupId: AudioCueGroupId, allowManyInParallel?: boolean): void | IDisposable { const cues = AudioCue.allAudioCues.filter(cue => cue.groupId === groupId); const index = Math.floor(Math.random() * cues.length); - if (loop) { - return this.playAudioCueLoop(cues[index]); - } else { - this.playAudioCue(cues[index]); - } + this.playAudioCue(cues[index], allowManyInParallel); } private getVolumeInPercent(): number { @@ -224,12 +220,12 @@ export class Sound { public static readonly diffLineDeleted = Sound.register({ fileName: 'diffLineDeleted.mp3' }); public static readonly diffLineModified = Sound.register({ fileName: 'diffLineModified.mp3' }); public static readonly chatRequestSent = Sound.register({ fileName: 'chatRequestSent.mp3' }); - public static readonly chatResponsePending1 = Sound.register({ fileName: 'chatResponsePending1.mp3' }); - public static readonly chatResponsePending2 = Sound.register({ fileName: 'chatResponsePending2.mp3' }); - public static readonly chatResponsePending3 = Sound.register({ fileName: 'chatResponsePending3.mp3' }); - public static readonly chatResponsePending4 = Sound.register({ fileName: 'chatResponsePending4.mp3' }); - public static readonly chatResponsePending5 = Sound.register({ fileName: 'chatResponsePending5.mp3' }); - public static readonly chatResponseReceived = Sound.register({ fileName: 'chatResponseReceived.mp3' }); + public static readonly chatResponsePending = Sound.register({ fileName: 'chatResponsePending.mp3' }); + public static readonly chatResponseReceived1 = Sound.register({ fileName: 'chatResponseReceived1.mp3' }); + public static readonly chatResponseReceived2 = Sound.register({ fileName: 'chatResponseReceived2.mp3' }); + public static readonly chatResponseReceived3 = Sound.register({ fileName: 'chatResponseReceived3.mp3' }); + public static readonly chatResponseReceived4 = Sound.register({ fileName: 'chatResponseReceived4.mp3' }); + public static readonly chatResponseReceived5 = Sound.register({ fileName: 'chatResponseReceived5.mp3' }); private constructor(public readonly fileName: string) { } } @@ -355,41 +351,41 @@ export class AudioCue { settingsKey: 'audioCues.chatRequestSent' }); - public static readonly chatResponsePending = { - name: localize('audioCues.chatResponsePending', 'Chat Response Pending'), - settingsKey: 'audioCues.chatResponsePending', - groupId: AudioCueGroupId.chatResponsePending + public static readonly chatResponseReceived = { + name: localize('audioCues.chatResponseReceived', 'Chat Response Received'), + settingsKey: 'audioCues.chatResponseReceived', + groupId: AudioCueGroupId.chatResponseReceived }; - public static readonly chatResponsePending1 = AudioCue.register({ - sound: Sound.chatResponsePending1, - ...this.chatResponsePending + public static readonly chatResponseReceived1 = AudioCue.register({ + sound: Sound.chatResponseReceived1, + ...this.chatResponseReceived }); - public static readonly chatResponsePending2 = AudioCue.register({ - sound: Sound.chatResponsePending2, - ...this.chatResponsePending + public static readonly chatResponseReceived2 = AudioCue.register({ + sound: Sound.chatResponseReceived2, + ...this.chatResponseReceived }); - public static readonly chatResponsePending3 = AudioCue.register({ - sound: Sound.chatResponsePending3, - ...this.chatResponsePending + public static readonly chatResponseReceived3 = AudioCue.register({ + sound: Sound.chatResponseReceived3, + ...this.chatResponseReceived }); - public static readonly chatResponsePending4 = AudioCue.register({ - sound: Sound.chatResponsePending4, - ...this.chatResponsePending + public static readonly chatResponseReceived4 = AudioCue.register({ + sound: Sound.chatResponseReceived4, + ...this.chatResponseReceived }); - public static readonly chatResponsePending5 = AudioCue.register({ - sound: Sound.chatResponsePending5, - ...this.chatResponsePending + public static readonly chatResponseReceived5 = AudioCue.register({ + sound: Sound.chatResponseReceived5, + ...this.chatResponseReceived }); - public static readonly chatResponseReceived = AudioCue.register({ - name: localize('audioCues.chatResponseReceived', 'Chat Response Received'), - sound: Sound.chatResponseReceived, - settingsKey: 'audioCues.chatResponseReceived' + public static readonly chatResponsePending = AudioCue.register({ + name: localize('audioCues.chatResponsePending', 'Chat Response Pending'), + sound: Sound.chatResponsePending, + settingsKey: 'audioCues.chatResponsePending' }); private constructor( diff --git a/src/vs/platform/audioCues/browser/media/chatResponsePending1.mp3 b/src/vs/platform/audioCues/browser/media/chatResponsePending.mp3 similarity index 100% rename from src/vs/platform/audioCues/browser/media/chatResponsePending1.mp3 rename to src/vs/platform/audioCues/browser/media/chatResponsePending.mp3 diff --git a/src/vs/platform/audioCues/browser/media/chatResponseReceived1.mp3 b/src/vs/platform/audioCues/browser/media/chatResponseReceived1.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..670fdef74ee6d7ce31103a6785feebbde99f4b67 GIT binary patch literal 36352 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 R{$l3*;^!~su%FD_{{c8q7=-`; literal 0 HcmV?d00001 diff --git a/src/vs/platform/audioCues/browser/media/chatResponsePending2.mp3 b/src/vs/platform/audioCues/browser/media/chatResponseReceived2.mp3 similarity index 100% rename from src/vs/platform/audioCues/browser/media/chatResponsePending2.mp3 rename to src/vs/platform/audioCues/browser/media/chatResponseReceived2.mp3 diff --git a/src/vs/platform/audioCues/browser/media/chatResponsePending3.mp3 b/src/vs/platform/audioCues/browser/media/chatResponseReceived3.mp3 similarity index 100% rename from src/vs/platform/audioCues/browser/media/chatResponsePending3.mp3 rename to src/vs/platform/audioCues/browser/media/chatResponseReceived3.mp3 diff --git a/src/vs/platform/audioCues/browser/media/chatResponsePending4.mp3 b/src/vs/platform/audioCues/browser/media/chatResponseReceived4.mp3 similarity index 100% rename from src/vs/platform/audioCues/browser/media/chatResponsePending4.mp3 rename to src/vs/platform/audioCues/browser/media/chatResponseReceived4.mp3 diff --git a/src/vs/platform/audioCues/browser/media/chatResponsePending5.mp3 b/src/vs/platform/audioCues/browser/media/chatResponseReceived5.mp3 similarity index 100% rename from src/vs/platform/audioCues/browser/media/chatResponsePending5.mp3 rename to src/vs/platform/audioCues/browser/media/chatResponseReceived5.mp3 diff --git a/src/vs/workbench/contrib/chat/browser/chatWidget.ts b/src/vs/workbench/contrib/chat/browser/chatWidget.ts index cb75be46473..b9fa3d3d42c 100644 --- a/src/vs/workbench/contrib/chat/browser/chatWidget.ts +++ b/src/vs/workbench/contrib/chat/browser/chatWidget.ts @@ -392,13 +392,13 @@ export class ChatWidget extends Disposable implements IChatWidget { } this.audioCueService.playAudioCue(AudioCue.chatRequestSent, true); const input = query ?? editorValue; - const cue = this.audioCueService.playRandomAudioCue(AudioCueGroupId.chatResponsePending, true); + const cue = this.audioCueService.playAudioCueLoop(AudioCue.chatResponsePending); const result = await this.chatService.sendRequest(this.viewModel.sessionId, input); if (result) { this.inputPart.acceptInput(query); result.responseCompletePromise.then(async () => { cue?.dispose(); - this.audioCueService.playAudioCue(AudioCue.chatResponseReceived, true); + this.audioCueService.playRandomAudioCue(AudioCueGroupId.chatResponseReceived); const responses = this.viewModel?.getItems().filter(isResponseVM); const lastResponse = responses?.[responses.length - 1]; if (lastResponse) { From f27587102931eee7239d717cc6cbae6dd8fe0414 Mon Sep 17 00:00:00 2001 From: meganrogge Date: Thu, 15 Jun 2023 11:59:11 -0500 Subject: [PATCH 07/17] cleanup --- src/vs/editor/standalone/browser/standaloneServices.ts | 2 +- src/vs/platform/audioCues/browser/audioCueService.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/vs/editor/standalone/browser/standaloneServices.ts b/src/vs/editor/standalone/browser/standaloneServices.ts index dcf5d9a30f5..2f12a812631 100644 --- a/src/vs/editor/standalone/browser/standaloneServices.ts +++ b/src/vs/editor/standalone/browser/standaloneServices.ts @@ -1058,7 +1058,7 @@ class StandaloneAudioService implements IAudioCueService { playAudioCueLoop(cue: AudioCue): IDisposable { return toDisposable(() => { }); } - playRandomAudioCue(groupId: AudioCueGroupId, allowManyInParallel?: boolean | undefined): void | IDisposable { + playRandomAudioCue(groupId: AudioCueGroupId, allowManyInParallel?: boolean | undefined): void { } } diff --git a/src/vs/platform/audioCues/browser/audioCueService.ts b/src/vs/platform/audioCues/browser/audioCueService.ts index 4708559dd35..489e6e7a49f 100644 --- a/src/vs/platform/audioCues/browser/audioCueService.ts +++ b/src/vs/platform/audioCues/browser/audioCueService.ts @@ -27,7 +27,7 @@ export interface IAudioCueService { playSound(cue: Sound, allowManyInParallel?: boolean): Promise; playAudioCueLoop(cue: AudioCue): IDisposable; - playRandomAudioCue(groupId: AudioCueGroupId, allowManyInParallel?: boolean): IDisposable | void; + playRandomAudioCue(groupId: AudioCueGroupId, allowManyInParallel?: boolean): void; } export class AudioCueService extends Disposable implements IAudioCueService { @@ -57,7 +57,7 @@ export class AudioCueService extends Disposable implements IAudioCueService { await Promise.all(Array.from(sounds).map(sound => this.playSound(sound, true))); } - public playRandomAudioCue(groupId: AudioCueGroupId, allowManyInParallel?: boolean): void | IDisposable { + public playRandomAudioCue(groupId: AudioCueGroupId, allowManyInParallel?: boolean): void { const cues = AudioCue.allAudioCues.filter(cue => cue.groupId === groupId); const index = Math.floor(Math.random() * cues.length); this.playAudioCue(cues[index], allowManyInParallel); From 86a64afe95bc55a70908369f5c7e1f5302f2d0de Mon Sep 17 00:00:00 2001 From: meganrogge Date: Thu, 15 Jun 2023 12:46:08 -0500 Subject: [PATCH 08/17] fix issue --- src/vs/platform/audioCues/browser/audioCueService.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/platform/audioCues/browser/audioCueService.ts b/src/vs/platform/audioCues/browser/audioCueService.ts index 489e6e7a49f..4abd131759f 100644 --- a/src/vs/platform/audioCues/browser/audioCueService.ts +++ b/src/vs/platform/audioCues/browser/audioCueService.ts @@ -103,7 +103,7 @@ export class AudioCueService extends Disposable implements IAudioCueService { let playing = true; const playSound = () => { if (playing) { - this.playSound(cue.sound, true).finally(() => { + this.playAudioCue(cue, true).finally(() => { if (playing) { playSound(); } From b9e10175b9f19e27c2bdc47784edb8000bba715e Mon Sep 17 00:00:00 2001 From: meganrogge Date: Thu, 15 Jun 2023 13:54:01 -0500 Subject: [PATCH 09/17] set to off by default --- .../contrib/audioCues/browser/audioCues.contribution.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/contrib/audioCues/browser/audioCues.contribution.ts b/src/vs/workbench/contrib/audioCues/browser/audioCues.contribution.ts index 90a844680e0..0b767b35e90 100644 --- a/src/vs/workbench/contrib/audioCues/browser/audioCues.contribution.ts +++ b/src/vs/workbench/contrib/audioCues/browser/audioCues.contribution.ts @@ -119,15 +119,18 @@ Registry.as(ConfigurationExtensions.Configuration).regis }, 'audioCues.chatRequestSent': { 'description': localize('audioCues.chatRequestSent', "Plays a sound when a chat request is made."), - ...audioCueFeatureBase + ...audioCueFeatureBase, + default: 'off' }, 'audioCues.chatResponsePending': { 'description': localize('audioCues.chatResponsePending', "Plays a sound on loop while the response is pending."), - ...audioCueFeatureBase + ...audioCueFeatureBase, + default: 'off' }, 'audioCues.chatResponseReceived': { 'description': localize('audioCues.chatResponseReceived', "Plays a sound on loop while the response has been received."), - ...audioCueFeatureBase + ...audioCueFeatureBase, + default: 'off' } } }); From 4066bbfb05f22c92f470a8e13b5a67f60db6c72a Mon Sep 17 00:00:00 2001 From: Megan Rogge Date: Thu, 15 Jun 2023 13:57:17 -0500 Subject: [PATCH 10/17] Update src/vs/editor/standalone/browser/standaloneServices.ts --- src/vs/editor/standalone/browser/standaloneServices.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/editor/standalone/browser/standaloneServices.ts b/src/vs/editor/standalone/browser/standaloneServices.ts index 2f12a812631..cc2ede5219c 100644 --- a/src/vs/editor/standalone/browser/standaloneServices.ts +++ b/src/vs/editor/standalone/browser/standaloneServices.ts @@ -1058,7 +1058,7 @@ class StandaloneAudioService implements IAudioCueService { playAudioCueLoop(cue: AudioCue): IDisposable { return toDisposable(() => { }); } - playRandomAudioCue(groupId: AudioCueGroupId, allowManyInParallel?: boolean | undefined): void { + playRandomAudioCue(groupId: AudioCueGroupId, allowManyInParallel?: boolean): void { } } From e0d2df090c746aa9e47fae49ec93f1290b8d8773 Mon Sep 17 00:00:00 2001 From: meganrogge Date: Thu, 15 Jun 2023 14:46:58 -0500 Subject: [PATCH 11/17] loop every 7 seconds --- .../platform/audioCues/browser/audioCueService.ts | 15 +++++++++------ .../workbench/contrib/chat/browser/chatWidget.ts | 4 ++-- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/vs/platform/audioCues/browser/audioCueService.ts b/src/vs/platform/audioCues/browser/audioCueService.ts index 4abd131759f..5097b521851 100644 --- a/src/vs/platform/audioCues/browser/audioCueService.ts +++ b/src/vs/platform/audioCues/browser/audioCueService.ts @@ -26,7 +26,7 @@ export interface IAudioCueService { onEnabledChanged(cue: AudioCue): Event; playSound(cue: Sound, allowManyInParallel?: boolean): Promise; - playAudioCueLoop(cue: AudioCue): IDisposable; + playAudioCueLoop(cue: AudioCue, milliseconds: number): IDisposable; playRandomAudioCue(groupId: AudioCueGroupId, allowManyInParallel?: boolean): void; } @@ -75,10 +75,11 @@ export class AudioCueService extends Disposable implements IAudioCueService { private readonly playingSounds = new Set(); public async playSound(sound: Sound, allowManyInParallel = false): Promise { + console.log(sound.fileName, allowManyInParallel); if (!allowManyInParallel && this.playingSounds.has(sound)) { return; } - + console.log('playing', sound.fileName); this.playingSounds.add(sound); const url = FileAccess.asBrowserUri(`vs/platform/audioCues/browser/media/${sound.fileName}`).toString(true); @@ -99,14 +100,16 @@ export class AudioCueService extends Disposable implements IAudioCueService { } } - public playAudioCueLoop(cue: AudioCue): IDisposable { + public playAudioCueLoop(cue: AudioCue, milliseconds: number): IDisposable { let playing = true; const playSound = () => { if (playing) { this.playAudioCue(cue, true).finally(() => { - if (playing) { - playSound(); - } + setTimeout(() => { + if (playing) { + playSound(); + } + }, milliseconds); }); } }; diff --git a/src/vs/workbench/contrib/chat/browser/chatWidget.ts b/src/vs/workbench/contrib/chat/browser/chatWidget.ts index b9fa3d3d42c..0fd3d311dc7 100644 --- a/src/vs/workbench/contrib/chat/browser/chatWidget.ts +++ b/src/vs/workbench/contrib/chat/browser/chatWidget.ts @@ -392,13 +392,13 @@ export class ChatWidget extends Disposable implements IChatWidget { } this.audioCueService.playAudioCue(AudioCue.chatRequestSent, true); const input = query ?? editorValue; - const cue = this.audioCueService.playAudioCueLoop(AudioCue.chatResponsePending); + const cue = this.audioCueService.playAudioCueLoop(AudioCue.chatResponsePending, 7000); const result = await this.chatService.sendRequest(this.viewModel.sessionId, input); if (result) { this.inputPart.acceptInput(query); result.responseCompletePromise.then(async () => { cue?.dispose(); - this.audioCueService.playRandomAudioCue(AudioCueGroupId.chatResponseReceived); + this.audioCueService.playRandomAudioCue(AudioCueGroupId.chatResponseReceived, true); const responses = this.viewModel?.getItems().filter(isResponseVM); const lastResponse = responses?.[responses.length - 1]; if (lastResponse) { From 9ea91c7e41c943c7290ee1262837ce721801c69b Mon Sep 17 00:00:00 2001 From: meganrogge Date: Thu, 15 Jun 2023 14:47:39 -0500 Subject: [PATCH 12/17] rm logs --- src/vs/platform/audioCues/browser/audioCueService.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/vs/platform/audioCues/browser/audioCueService.ts b/src/vs/platform/audioCues/browser/audioCueService.ts index 5097b521851..de3cf85a2ca 100644 --- a/src/vs/platform/audioCues/browser/audioCueService.ts +++ b/src/vs/platform/audioCues/browser/audioCueService.ts @@ -75,11 +75,9 @@ export class AudioCueService extends Disposable implements IAudioCueService { private readonly playingSounds = new Set(); public async playSound(sound: Sound, allowManyInParallel = false): Promise { - console.log(sound.fileName, allowManyInParallel); if (!allowManyInParallel && this.playingSounds.has(sound)) { return; } - console.log('playing', sound.fileName); this.playingSounds.add(sound); const url = FileAccess.asBrowserUri(`vs/platform/audioCues/browser/media/${sound.fileName}`).toString(true); From 5fe42187d64854529a7bfaebab52463c2f028486 Mon Sep 17 00:00:00 2001 From: meganrogge Date: Thu, 15 Jun 2023 14:52:17 -0500 Subject: [PATCH 13/17] cleanup --- src/vs/platform/audioCues/browser/audioCueService.ts | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/vs/platform/audioCues/browser/audioCueService.ts b/src/vs/platform/audioCues/browser/audioCueService.ts index de3cf85a2ca..1d4df23804c 100644 --- a/src/vs/platform/audioCues/browser/audioCueService.ts +++ b/src/vs/platform/audioCues/browser/audioCueService.ts @@ -12,10 +12,6 @@ import { Event } from 'vs/base/common/event'; import { localize } from 'vs/nls'; import { observableFromEvent, derived } from 'vs/base/common/observable'; -export const enum AudioCueGroupId { - chatResponseReceived = 'chatResponseReceived' -} - export const IAudioCueService = createDecorator('audioCue'); export interface IAudioCueService { @@ -112,9 +108,7 @@ export class AudioCueService extends Disposable implements IAudioCueService { } }; playSound(); - return toDisposable(() => { - playing = false; - }); + return toDisposable(() => playing = false); } private readonly obsoleteAudioCuesEnabled = observableFromEvent( @@ -231,6 +225,10 @@ export class Sound { private constructor(public readonly fileName: string) { } } +export const enum AudioCueGroupId { + chatResponseReceived = 'chatResponseReceived' +} + export class AudioCue { private static _audioCues = new Set(); private static register(options: { From e94b3ef2c33b1af3d20bc2b42f581752be67e06d Mon Sep 17 00:00:00 2001 From: meganrogge Date: Thu, 15 Jun 2023 15:06:43 -0500 Subject: [PATCH 14/17] polish --- src/vs/workbench/contrib/chat/browser/chatWidget.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/chatWidget.ts b/src/vs/workbench/contrib/chat/browser/chatWidget.ts index 0fd3d311dc7..4c14d0237c1 100644 --- a/src/vs/workbench/contrib/chat/browser/chatWidget.ts +++ b/src/vs/workbench/contrib/chat/browser/chatWidget.ts @@ -53,6 +53,8 @@ export interface IChatWidgetStyles { resultEditorBackground: string; } +const CHAT_RESPONSE_PENDING_AUDIO_CUE_LOOP_MS = 7000; + export class ChatWidget extends Disposable implements IChatWidget { public static readonly CONTRIBS: { new(...args: [IChatWidget, ...any]): any }[] = []; @@ -391,13 +393,14 @@ export class ChatWidget extends Disposable implements IChatWidget { return; } this.audioCueService.playAudioCue(AudioCue.chatRequestSent, true); + const responsePendingAudioCue = this.audioCueService.playAudioCueLoop(AudioCue.chatResponsePending, CHAT_RESPONSE_PENDING_AUDIO_CUE_LOOP_MS); const input = query ?? editorValue; - const cue = this.audioCueService.playAudioCueLoop(AudioCue.chatResponsePending, 7000); const result = await this.chatService.sendRequest(this.viewModel.sessionId, input); + if (result) { this.inputPart.acceptInput(query); result.responseCompletePromise.then(async () => { - cue?.dispose(); + responsePendingAudioCue?.dispose(); this.audioCueService.playRandomAudioCue(AudioCueGroupId.chatResponseReceived, true); const responses = this.viewModel?.getItems().filter(isResponseVM); const lastResponse = responses?.[responses.length - 1]; From a54a2c5e4b7ef332720fb51c69e91b2b55e7374d Mon Sep 17 00:00:00 2001 From: meganrogge Date: Thu, 15 Jun 2023 15:18:06 -0500 Subject: [PATCH 15/17] add chatAccessibilityService --- .../contrib/chat/browser/chatWidget.ts | 40 ++++++++++++++----- 1 file changed, 29 insertions(+), 11 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/chatWidget.ts b/src/vs/workbench/contrib/chat/browser/chatWidget.ts index 4c14d0237c1..86228410308 100644 --- a/src/vs/workbench/contrib/chat/browser/chatWidget.ts +++ b/src/vs/workbench/contrib/chat/browser/chatWidget.ts @@ -53,8 +53,6 @@ export interface IChatWidgetStyles { resultEditorBackground: string; } -const CHAT_RESPONSE_PENDING_AUDIO_CUE_LOOP_MS = 7000; - export class ChatWidget extends Disposable implements IChatWidget { public static readonly CONTRIBS: { new(...args: [IChatWidget, ...any]): any }[] = []; @@ -110,6 +108,8 @@ export class ChatWidget extends Disposable implements IChatWidget { private lastSlashCommands: ISlashCommand[] | undefined; private slashCommandsPromise: Promise | undefined; + private _chatAccessibilityService: ChatAccessibilityService; + constructor( readonly viewContext: IChatWidgetViewContext, private readonly styles: IChatWidgetStyles, @@ -118,13 +118,14 @@ export class ChatWidget extends Disposable implements IChatWidget { @IChatService private readonly chatService: IChatService, @IChatWidgetService chatWidgetService: IChatWidgetService, @IContextMenuService private readonly contextMenuService: IContextMenuService, - @IAudioCueService private readonly audioCueService: IAudioCueService + @IAudioCueService audioCueService: IAudioCueService ) { 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); } get providerId(): string { @@ -392,22 +393,17 @@ export class ChatWidget extends Disposable implements IChatWidget { this.instantiationService.invokeFunction(clearChatSession, this); return; } - this.audioCueService.playAudioCue(AudioCue.chatRequestSent, true); - const responsePendingAudioCue = this.audioCueService.playAudioCueLoop(AudioCue.chatResponsePending, CHAT_RESPONSE_PENDING_AUDIO_CUE_LOOP_MS); + this._chatAccessibilityService.acceptRequest(); const input = query ?? editorValue; const result = await this.chatService.sendRequest(this.viewModel.sessionId, input); if (result) { this.inputPart.acceptInput(query); result.responseCompletePromise.then(async () => { - responsePendingAudioCue?.dispose(); - this.audioCueService.playRandomAudioCue(AudioCueGroupId.chatResponseReceived, true); + const responses = this.viewModel?.getItems().filter(isResponseVM); const lastResponse = responses?.[responses.length - 1]; - if (lastResponse) { - const errorDetails = lastResponse.errorDetails ? ` ${lastResponse.errorDetails.message}` : ''; - alert(lastResponse.response.value + errorDetails); - } + this._chatAccessibilityService.acceptResponse(lastResponse); }); } } @@ -513,3 +509,25 @@ export class ChatWidgetService implements IChatWidgetService { ); } } + +const CHAT_RESPONSE_PENDING_AUDIO_CUE_LOOP_MS = 7000; +class ChatAccessibilityService extends Disposable { + private _responsePendingAudioCue: IDisposable | undefined; + constructor(@IAudioCueService private readonly _audioCueService: IAudioCueService) { + super(); + } + acceptRequest(): void { + this._audioCueService.playAudioCue(AudioCue.chatRequestSent, true); + this._responsePendingAudioCue = this._audioCueService.playAudioCueLoop(AudioCue.chatResponsePending, CHAT_RESPONSE_PENDING_AUDIO_CUE_LOOP_MS); + } + acceptResponse(response?: IChatResponseViewModel): void { + this._responsePendingAudioCue?.dispose(); + if (!response) { + return; + } + this._audioCueService.playRandomAudioCue(AudioCueGroupId.chatResponseReceived, true); + const errorDetails = response.errorDetails ? ` ${response.errorDetails.message}` : ''; + alert(response.response.value + errorDetails); + } +} + From 0f3fa7bbaf3c01d0ba51d80d967efc695ee5df1d Mon Sep 17 00:00:00 2001 From: meganrogge Date: Thu, 15 Jun 2023 15:18:54 -0500 Subject: [PATCH 16/17] register chat accessibility service --- src/vs/workbench/contrib/chat/browser/chatWidget.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/vs/workbench/contrib/chat/browser/chatWidget.ts b/src/vs/workbench/contrib/chat/browser/chatWidget.ts index 86228410308..1c0670eb6b2 100644 --- a/src/vs/workbench/contrib/chat/browser/chatWidget.ts +++ b/src/vs/workbench/contrib/chat/browser/chatWidget.ts @@ -126,6 +126,7 @@ export class ChatWidget extends Disposable implements IChatWidget { this._register((chatWidgetService as ChatWidgetService).register(this)); this._chatAccessibilityService = new ChatAccessibilityService(audioCueService); + this._register(this._chatAccessibilityService); } get providerId(): string { From eae6a3607837efd99d57230de9e1338dfbf34e82 Mon Sep 17 00:00:00 2001 From: meganrogge Date: Thu, 15 Jun 2023 15:25:33 -0500 Subject: [PATCH 17/17] ChatAccessibilityService --- .../contrib/chat/browser/chat.contribution.ts | 5 +++-- src/vs/workbench/contrib/chat/browser/chat.ts | 8 ++++++++ .../contrib/chat/browser/chatWidget.ts | 17 +++++++++-------- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/chat.contribution.ts b/src/vs/workbench/contrib/chat/browser/chat.contribution.ts index d8130d27601..af94c2c5c24 100644 --- a/src/vs/workbench/contrib/chat/browser/chat.contribution.ts +++ b/src/vs/workbench/contrib/chat/browser/chat.contribution.ts @@ -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); diff --git a/src/vs/workbench/contrib/chat/browser/chat.ts b/src/vs/workbench/contrib/chat/browser/chat.ts index ba977100111..9d8047338f8 100644 --- a/src/vs/workbench/contrib/chat/browser/chat.ts +++ b/src/vs/workbench/contrib/chat/browser/chat.ts @@ -11,6 +11,7 @@ import { URI } from 'vs/base/common/uri'; import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; export const IChatWidgetService = createDecorator('chatWidgetService'); +export const IChatAccessibilityService = createDecorator('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; diff --git a/src/vs/workbench/contrib/chat/browser/chatWidget.ts b/src/vs/workbench/contrib/chat/browser/chatWidget.ts index 1c0670eb6b2..7f756c4bb63 100644 --- a/src/vs/workbench/contrib/chat/browser/chatWidget.ts +++ b/src/vs/workbench/contrib/chat/browser/chatWidget.ts @@ -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 | 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); }