fix(collab-web): surface terminal auto_retry_end failures
(cherry picked from commit 6a6c4014158d9636ed0e030837633ad313c1aa5a)
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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({
|
||||
|
||||
Reference in New Issue
Block a user