Commit df8a180
authored
🤖 feat: allow unlimited bash_output timeout with queued message interruption (#1053)
## Summary
Allow `bash_output` to wait for any amount of time (removing the
previous 15-second limit), while ensuring the chat stays responsive by
detecting when users queue new messages.
## Changes
### 1. Remove timeout limit
- Removed `.max(15)` constraint from the schema
- Updated description to guide agents: "Only use long timeouts (>15s)
when no other useful work can be done in parallel"
### 2. Add abort signal support
- `getOutput()` accepts optional `abortSignal` parameter
- Returns `status: "interrupted"` when stream is cancelled
### 3. Add queued message detection
- Added `setMessageQueued()` / `hasQueuedMessage()` to
`BackgroundProcessManager`
- `queueMessage()` sets the flag; `sendQueuedMessages()` /
`clearQueue()` clears it
- `getOutput()` checks for queued messages in polling loop and returns
early
### Flow when user sends message during `bash_output` wait:
1. `queueMessage()` → `setMessageQueued(workspaceId, true)`
2. `bash_output`'s `getOutput()` polling loop detects
`hasQueuedMessage() = true`
3. Returns `{ status: "interrupted", output: "(waiting interrupted)" }`
4. `tool-call-end` fires → `sendQueuedMessages()` processes queued
message
### 4. UI update
- `ProcessStatusBadge` now supports "interrupted" status with warning
color
## Testing
- Added test for abort signal interruption
- Added test for queued message interruption
- All 14 `bash_output` tests pass
---
_Generated with `mux`_1 parent cb1683e commit df8a180
File tree
7 files changed
+166
-13
lines changed- src
- common
- types
- utils/tools
- node/services
- tools
7 files changed
+166
-13
lines changedLines changed: 5 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
215 | 215 | | |
216 | 216 | | |
217 | 217 | | |
218 | | - | |
| 218 | + | |
219 | 219 | | |
220 | 220 | | |
221 | | - | |
| 221 | + | |
222 | 222 | | |
223 | 223 | | |
224 | 224 | | |
| |||
233 | 233 | | |
234 | 234 | | |
235 | 235 | | |
236 | | - | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
237 | 239 | | |
238 | 240 | | |
239 | 241 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
235 | 235 | | |
236 | 236 | | |
237 | 237 | | |
238 | | - | |
| 238 | + | |
239 | 239 | | |
240 | 240 | | |
241 | 241 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
257 | 257 | | |
258 | 258 | | |
259 | 259 | | |
260 | | - | |
261 | 260 | | |
262 | | - | |
| 261 | + | |
263 | 262 | | |
264 | 263 | | |
265 | | - | |
| 264 | + | |
266 | 265 | | |
267 | 266 | | |
268 | 267 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
659 | 659 | | |
660 | 660 | | |
661 | 661 | | |
| 662 | + | |
| 663 | + | |
662 | 664 | | |
663 | 665 | | |
664 | 666 | | |
665 | 667 | | |
666 | 668 | | |
667 | 669 | | |
| 670 | + | |
668 | 671 | | |
669 | 672 | | |
670 | 673 | | |
| |||
703 | 706 | | |
704 | 707 | | |
705 | 708 | | |
| 709 | + | |
| 710 | + | |
| 711 | + | |
706 | 712 | | |
707 | 713 | | |
708 | 714 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
99 | 99 | | |
100 | 100 | | |
101 | 101 | | |
| 102 | + | |
| 103 | + | |
102 | 104 | | |
103 | 105 | | |
104 | 106 | | |
105 | 107 | | |
106 | 108 | | |
107 | 109 | | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
108 | 129 | | |
109 | 130 | | |
110 | 131 | | |
| |||
409 | 430 | | |
410 | 431 | | |
411 | 432 | | |
412 | | - | |
| 433 | + | |
| 434 | + | |
| 435 | + | |
413 | 436 | | |
414 | 437 | | |
415 | 438 | | |
416 | 439 | | |
417 | | - | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
418 | 443 | | |
419 | 444 | | |
420 | 445 | | |
421 | | - | |
| 446 | + | |
422 | 447 | | |
423 | 448 | | |
424 | 449 | | |
425 | 450 | | |
426 | 451 | | |
427 | 452 | | |
428 | | - | |
| 453 | + | |
429 | 454 | | |
430 | 455 | | |
431 | 456 | | |
| |||
470 | 495 | | |
471 | 496 | | |
472 | 497 | | |
| 498 | + | |
473 | 499 | | |
474 | 500 | | |
475 | 501 | | |
476 | 502 | | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
| 508 | + | |
| 509 | + | |
| 510 | + | |
| 511 | + | |
| 512 | + | |
477 | 513 | | |
478 | 514 | | |
479 | 515 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
481 | 481 | | |
482 | 482 | | |
483 | 483 | | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
| 508 | + | |
| 509 | + | |
| 510 | + | |
| 511 | + | |
| 512 | + | |
| 513 | + | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
| 518 | + | |
| 519 | + | |
| 520 | + | |
| 521 | + | |
| 522 | + | |
| 523 | + | |
| 524 | + | |
| 525 | + | |
| 526 | + | |
| 527 | + | |
| 528 | + | |
| 529 | + | |
| 530 | + | |
| 531 | + | |
| 532 | + | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
| 537 | + | |
| 538 | + | |
| 539 | + | |
| 540 | + | |
| 541 | + | |
| 542 | + | |
| 543 | + | |
| 544 | + | |
| 545 | + | |
| 546 | + | |
| 547 | + | |
| 548 | + | |
| 549 | + | |
| 550 | + | |
| 551 | + | |
| 552 | + | |
| 553 | + | |
| 554 | + | |
| 555 | + | |
| 556 | + | |
| 557 | + | |
| 558 | + | |
| 559 | + | |
| 560 | + | |
| 561 | + | |
| 562 | + | |
| 563 | + | |
| 564 | + | |
| 565 | + | |
| 566 | + | |
| 567 | + | |
| 568 | + | |
| 569 | + | |
| 570 | + | |
| 571 | + | |
| 572 | + | |
| 573 | + | |
| 574 | + | |
| 575 | + | |
| 576 | + | |
| 577 | + | |
| 578 | + | |
| 579 | + | |
| 580 | + | |
| 581 | + | |
| 582 | + | |
| 583 | + | |
484 | 584 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
14 | | - | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
15 | 18 | | |
16 | 19 | | |
17 | 20 | | |
| |||
36 | 39 | | |
37 | 40 | | |
38 | 41 | | |
39 | | - | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
40 | 50 | | |
41 | 51 | | |
42 | 52 | | |
0 commit comments