11import * as vscode from 'vscode' ;
22import { callDeepSeekApi } from './deepseekApi' ;
3+ import { getCurrentOperationController , resetCurrentOperationController } from './extension' ;
34
45class WebviewOutputChannel implements vscode . OutputChannel {
56 private _webview : vscode . Webview ;
@@ -177,7 +178,7 @@ export class ChatPanel {
177178 <div id="input-container">
178179 <textarea id="input" placeholder="Type your message here... (Ctrl+Enter to send)"></textarea>
179180 <button id="send">Send</button>
180- <button id="reset">Reset </button>
181+ <button id="new-session" style="position: absolute; top: 10px; right: 10px;">New Session </button>
181182 </div>
182183 <script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
183184 <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/highlight.min.js"></script>
@@ -246,8 +247,9 @@ export class ChatPanel {
246247 input.value = '';
247248 });
248249
249- document.getElementById('reset').addEventListener('click', () => {
250- vscode.postMessage({ command: 'reset' });
250+ document.getElementById('new-session').addEventListener('click', () => {
251+ vscode.postMessage({ command: 'newSession' });
252+ chat.innerHTML = '';
251253 });
252254
253255 input.addEventListener('keydown', (e) => {
@@ -275,7 +277,9 @@ export class ChatPanel {
275277 message . text ,
276278 'You are a helpful assistant. Always format answers with Markdown.' ,
277279 webviewOutputChannel ,
278- true
280+ true ,
281+ undefined ,
282+ getCurrentOperationController ( ) . signal
279283 ) ;
280284
281285 this . _conversation . push ( { role : 'model' , content : response || '' } ) ;
@@ -287,9 +291,9 @@ export class ChatPanel {
287291 }
288292 break ;
289293
290- case 'reset ' :
294+ case 'newSession ' :
291295 this . _conversation = [ ] ;
292- this . _panel . webview . postMessage ( { command : 'clearHistory' } ) ;
296+ resetCurrentOperationController ( ) ;
293297 break ;
294298 }
295299 }
0 commit comments