fix(collab-web): surface terminal auto_retry_end failures

(cherry picked from commit 6a6c4014158d9636ed0e030837633ad313c1aa5a)
This commit is contained in:
robomp-bot
2026-07-29 17:33:52 +09:00
committed by can1357
parent 44907cef75
commit a54b11f4c3
3 changed files with 18 additions and 0 deletions
+4
View File
@@ -2,6 +2,10 @@
## [Unreleased]
### Fixed
- Fixed the agent appearing to stop silently with no message: terminal `auto_retry_end` failures now surface as an error notice instead of being discarded.
## [17.1.0] - 2026-07-24
### Fixed
+3
View File
@@ -454,6 +454,9 @@ export class GuestClient {
case "auto_retry_start":
this.#pushNotice("info", `retry ${event.attempt}/${event.maxAttempts}: ${event.errorMessage}`);
break;
case "auto_retry_end":
if (!event.success) this.#pushNotice("error", event.finalError ?? "retry failed");
break;
case "auto_compaction_start":
this.#pushNotice("info", `compacting context (${event.reason})`);
break;
+11
View File
@@ -234,6 +234,17 @@ describe("GuestClient frame apply", () => {
expect(notices[0]).toMatchObject({ level: "error", message: "boom" });
});
it("auto_retry_end failure surfaces an error notice", () => {
const client = liveClient();
client.applyFrameForTest({
t: "event",
event: { type: "auto_retry_end", success: false, attempt: 3, finalError: "x" },
});
const notices = client.getSnapshot().notices;
expect(notices).toHaveLength(1);
expect(notices[0]).toMatchObject({ level: "error", message: "x" });
});
it("a pre-welcome error (hello rejection, e.g. protocol mismatch) ends the session with the host's reason", () => {
const client = new GuestClient(LINK, "tester");
client.applyFrameForTest({