diff --git a/packages/agent/CHANGELOG.md b/packages/agent/CHANGELOG.md index 04ad9fb1dd..abe731f4f0 100644 --- a/packages/agent/CHANGELOG.md +++ b/packages/agent/CHANGELOG.md @@ -2,6 +2,10 @@ ## [Unreleased] +### Fixed + +- Removed unnecessary `as any` casts when accessing `errorMessage` on `AssistantMessage` in `Agent` turn-end handling — the field is already on the type. + ## [16.1.16] - 2026-06-23 ### Added diff --git a/packages/agent/src/agent.ts b/packages/agent/src/agent.ts index b5be52d785..ee23c84017 100644 --- a/packages/agent/src/agent.ts +++ b/packages/agent/src/agent.ts @@ -1202,8 +1202,8 @@ export class Agent { break; case "turn_end": - if (event.message.role === "assistant" && (event.message as any).errorMessage) { - this.#state.error = (event.message as any).errorMessage; + if (event.message.role === "assistant" && event.message.errorMessage) { + this.#state.error = event.message.errorMessage; } break; diff --git a/packages/ai/CHANGELOG.md b/packages/ai/CHANGELOG.md index 34c31852ea..29610c19e6 100644 --- a/packages/ai/CHANGELOG.md +++ b/packages/ai/CHANGELOG.md @@ -2,6 +2,10 @@ ## [Unreleased] +### Changed + +- Removed redundant `undefined as any` casts in `EventStream.end()` and `endWaiting()`. The waiter type is now explicitly `IteratorResult` (instead of the default `IteratorResult`), so the `undefined` value is type-checked without relying on the implicit `any` for `TReturn`. + ## [16.1.16] - 2026-06-23 ### Fixed diff --git a/packages/ai/src/utils/event-stream.ts b/packages/ai/src/utils/event-stream.ts index f4819d98f4..7184b96999 100644 --- a/packages/ai/src/utils/event-stream.ts +++ b/packages/ai/src/utils/event-stream.ts @@ -3,7 +3,7 @@ import type { AssistantMessage, AssistantMessageEvent } from "../types"; // Generic event stream class for async iteration export class EventStream implements AsyncIterable { queue: T[] = []; - waiting: Array<{ resolve: (value: IteratorResult) => void; reject: (err: unknown) => void }> = []; + waiting: Array<{ resolve: (value: IteratorResult) => void; reject: (err: unknown) => void }> = []; done = false; /** True once finalResultPromise has been resolved or rejected. */ resultSettled = false; @@ -68,14 +68,14 @@ export class EventStream implements AsyncIterable { // Notify all waiting consumers that we're done while (this.waiting.length > 0) { const waiter = this.waiting.shift()!; - waiter.resolve({ value: undefined as any, done: true }); + waiter.resolve({ value: undefined, done: true }); } } endWaiting(): void { while (this.waiting.length > 0) { const waiter = this.waiting.shift()!; - waiter.resolve({ value: undefined as any, done: true }); + waiter.resolve({ value: undefined, done: true }); } } @@ -101,7 +101,7 @@ export class EventStream implements AsyncIterable { } else if (this.done) { return; } else { - const result = await new Promise>((resolve, reject) => + const result = await new Promise>((resolve, reject) => this.waiting.push({ resolve, reject }), ); if (result.done) return;