55
66import { Codicon } from '../../../../../base/common/codicons.js' ;
77import { KeyCode , KeyMod } from '../../../../../base/common/keyCodes.js' ;
8+ import { isEqual } from '../../../../../base/common/resources.js' ;
89import { ServicesAccessor } from '../../../../../editor/browser/editorExtensions.js' ;
910import { localize , localize2 } from '../../../../../nls.js' ;
1011import { IAccessibilityService } from '../../../../../platform/accessibility/common/accessibility.js' ;
@@ -20,6 +21,7 @@ import { IChatEditingSession } from '../../common/editing/chatEditingService.js'
2021import { IChatService } from '../../common/chatService/chatService.js' ;
2122import { ChatAgentLocation , ChatModeKind } from '../../common/constants.js' ;
2223import { ChatViewId , IChatWidgetService } from '../chat.js' ;
24+ import { IVoiceSessionController } from '../voiceClient/voiceSessionController.js' ;
2325import { ChatViewPane } from '../widgetHosts/viewPane/chatViewPane.js' ;
2426import { EditingSessionAction , EditingSessionActionContext , getEditingSessionContext } from '../chatEditing/chatEditingActions.js' ;
2527import { ACTION_ID_NEW_CHAT , ACTION_ID_NEW_EDIT_SESSION , CHAT_CATEGORY , clearChatSessionPreservingType , handleCurrentEditingSession } from './chatActions.js' ;
@@ -334,6 +336,9 @@ async function runNewChatAction(
334336 return ;
335337 }
336338
339+ const voiceSessionController = accessor . get ( IVoiceSessionController ) ;
340+ const voiceTarget = voiceSessionController . targetSession . get ( ) ;
341+ const currentSession = widget . viewModel ?. sessionResource ;
337342 const dialogService = accessor . get ( IDialogService ) ;
338343
339344 const model = widget . viewModel ?. model ;
@@ -346,6 +351,13 @@ async function runNewChatAction(
346351 // Create a new session, preserving the session type (or using the specified one)
347352 await instantiationService . invokeFunction ( clearChatSessionPreservingType , widget , sessionType ) ;
348353
354+ const newSession = widget . viewModel ?. sessionResource ;
355+ if ( ( voiceSessionController . isConnected . get ( ) || voiceSessionController . isConnecting . get ( ) )
356+ && ( ! voiceTarget || ( ! ! currentSession && isEqual ( voiceTarget , currentSession ) ) )
357+ && newSession ) {
358+ voiceSessionController . setTargetSession ( newSession ) ;
359+ }
360+
349361 widget . attachmentModel . clear ( true ) ;
350362 widget . focusInput ( ) ;
351363
0 commit comments