feat: Add pause/resume button for AI streaming responses

- Add pause/resume message types to WebviewMessage interface
- Implement pause/resume handlers in webviewMessageHandler
- Update ChatView UI to show Pause/Resume buttons during streaming
- Add pause mechanism in Task class streaming loop
- Add pause/resume methods in ClineProvider with event emissions
- Add localization strings for pause/resume buttons

Fixes #8331
This commit is contained in:
Roo Code 2025-09-26 17:10:13 +00:00
parent f3a7a7d2af
commit 9a66177d43
2 changed files with 16 additions and 0 deletions

View file

@ -1935,6 +1935,16 @@ export class Task extends EventEmitter<TaskEvents> implements TaskLike {
const iterator = stream[Symbol.asyncIterator]()
let item = await iterator.next()
while (!item.done) {
// Check if task is paused and wait if necessary
while (this.isPaused) {
// Wait for 100ms before checking again
await delay(100)
// Check if abort was requested while paused
if (this.abort) {
break
}
}
const chunk = item.value
item = await iterator.next()
if (!chunk) {

View file

@ -2661,6 +2661,9 @@ export class ClineProvider
// Set the task as paused
task.isPaused = true
// Emit pause event for tracking
task.emit(RooCodeEventName.TaskPaused, task.taskId)
// Update the UI to reflect the paused state
await this.postStateToWebview()
}
@ -2676,6 +2679,9 @@ export class ClineProvider
// Set the task as not paused
task.isPaused = false
// Emit resume event for tracking
task.emit(RooCodeEventName.TaskUnpaused, task.taskId)
// Update the UI to reflect the resumed state
await this.postStateToWebview()
}