diff --git a/.changeset/salty-apes-find.md b/.changeset/salty-apes-find.md deleted file mode 100644 index 86f914a0..00000000 --- a/.changeset/salty-apes-find.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -"evlog": patch ---- - -fix(hono): resolve "ReadableStream is locked" error with AI SDK streaming responses - -Using `createUIMessageStreamResponse` or `createAgentUIStreamResponse` from the Vercel AI SDK inside a Hono route would throw `ERR_INVALID_STATE: ReadableStream is locked` when running under `@hono/node-server`. - -**Root cause:** The middleware called `createObservedBody(c.res.body)` (which calls `body.getReader()`, locking the stream) and then relied on Hono's `compose` to update `c.res` with the wrapped response via the middleware return value. However, Hono skips that update when `context.finalized` is already `true` — which is always the case after a route handler returns a `Response`. This left `c.res` pointing at the original response whose body was now locked, so `@hono/node-server`'s subsequent `response.body.getReader()` call threw. - -**Fix:** Explicitly assign `c.res = await finishResponse(c.res, ...)` instead of returning the wrapped response, so `c.res` is always updated regardless of `context.finalized`. - -Closes #382 diff --git a/examples/community-adapter-skeleton/CHANGELOG.md b/examples/community-adapter-skeleton/CHANGELOG.md index ecb44758..98861ce6 100644 --- a/examples/community-adapter-skeleton/CHANGELOG.md +++ b/examples/community-adapter-skeleton/CHANGELOG.md @@ -1,5 +1,12 @@ # evlog-community-adapter-skeleton +## 5.0.2 + +### Patch Changes + +- Updated dependencies [[`6eb0957`](https://github.com/HugoRCD/evlog/commit/6eb0957d03c69fffbac2390c6e2bc84cf42fbb4b)]: + - evlog@2.19.2 + ## 5.0.1 ### Patch Changes diff --git a/examples/community-adapter-skeleton/package.json b/examples/community-adapter-skeleton/package.json index d38eb8d2..3b7f3c52 100644 --- a/examples/community-adapter-skeleton/package.json +++ b/examples/community-adapter-skeleton/package.json @@ -1,6 +1,6 @@ { "name": "evlog-community-adapter-skeleton", - "version": "5.0.1", + "version": "5.0.2", "description": "Reference skeleton for a community evlog drain adapter built on defineHttpDrain.", "private": true, "type": "module", diff --git a/examples/community-enricher-skeleton/CHANGELOG.md b/examples/community-enricher-skeleton/CHANGELOG.md index 14e53096..c6dec497 100644 --- a/examples/community-enricher-skeleton/CHANGELOG.md +++ b/examples/community-enricher-skeleton/CHANGELOG.md @@ -1,5 +1,12 @@ # evlog-community-enricher-skeleton +## 5.0.2 + +### Patch Changes + +- Updated dependencies [[`6eb0957`](https://github.com/HugoRCD/evlog/commit/6eb0957d03c69fffbac2390c6e2bc84cf42fbb4b)]: + - evlog@2.19.2 + ## 5.0.1 ### Patch Changes diff --git a/examples/community-enricher-skeleton/package.json b/examples/community-enricher-skeleton/package.json index 652f08c6..3a1f7e13 100644 --- a/examples/community-enricher-skeleton/package.json +++ b/examples/community-enricher-skeleton/package.json @@ -1,6 +1,6 @@ { "name": "evlog-community-enricher-skeleton", - "version": "5.0.1", + "version": "5.0.2", "description": "Reference skeleton for a community evlog enricher built on defineEnricher.", "private": true, "type": "module", diff --git a/examples/community-framework-skeleton/CHANGELOG.md b/examples/community-framework-skeleton/CHANGELOG.md index 38fef515..75590c61 100644 --- a/examples/community-framework-skeleton/CHANGELOG.md +++ b/examples/community-framework-skeleton/CHANGELOG.md @@ -1,5 +1,12 @@ # evlog-community-framework-skeleton +## 5.0.2 + +### Patch Changes + +- Updated dependencies [[`6eb0957`](https://github.com/HugoRCD/evlog/commit/6eb0957d03c69fffbac2390c6e2bc84cf42fbb4b)]: + - evlog@2.19.2 + ## 5.0.1 ### Patch Changes diff --git a/examples/community-framework-skeleton/package.json b/examples/community-framework-skeleton/package.json index 23436434..e01b6719 100644 --- a/examples/community-framework-skeleton/package.json +++ b/examples/community-framework-skeleton/package.json @@ -1,6 +1,6 @@ { "name": "evlog-community-framework-skeleton", - "version": "5.0.1", + "version": "5.0.2", "description": "Reference skeleton for a community evlog framework integration built on defineFrameworkIntegration.", "private": true, "type": "module", diff --git a/packages/evlog/CHANGELOG.md b/packages/evlog/CHANGELOG.md index 3ab0dc9a..d197aebd 100644 --- a/packages/evlog/CHANGELOG.md +++ b/packages/evlog/CHANGELOG.md @@ -1,5 +1,19 @@ # evlog +## 2.19.2 + +### Patch Changes + +- [#384](https://github.com/HugoRCD/evlog/pull/384) [`6eb0957`](https://github.com/HugoRCD/evlog/commit/6eb0957d03c69fffbac2390c6e2bc84cf42fbb4b) Thanks [@nadaniels](https://github.com/nadaniels)! - fix(hono): resolve "ReadableStream is locked" error with AI SDK streaming responses + + Using `createUIMessageStreamResponse` or `createAgentUIStreamResponse` from the Vercel AI SDK inside a Hono route would throw `ERR_INVALID_STATE: ReadableStream is locked` when running under `@hono/node-server`. + + **Root cause:** The middleware called `createObservedBody(c.res.body)` (which calls `body.getReader()`, locking the stream) and then relied on Hono's `compose` to update `c.res` with the wrapped response via the middleware return value. However, Hono skips that update when `context.finalized` is already `true` — which is always the case after a route handler returns a `Response`. This left `c.res` pointing at the original response whose body was now locked, so `@hono/node-server`'s subsequent `response.body.getReader()` call threw. + + **Fix:** Explicitly assign `c.res = await finishResponse(c.res, ...)` instead of returning the wrapped response, so `c.res` is always updated regardless of `context.finalized`. + + Closes [#382](https://github.com/HugoRCD/evlog/issues/382) + ## 2.19.1 ### Patch Changes diff --git a/packages/evlog/package.json b/packages/evlog/package.json index c729b65c..c28cb785 100644 --- a/packages/evlog/package.json +++ b/packages/evlog/package.json @@ -1,6 +1,6 @@ { "name": "evlog", - "version": "2.19.1", + "version": "2.19.2", "description": "Modern TypeScript logger — simple logs, wide events, structured errors. Built for scripts, libraries, jobs, edge, and HTTP. One drain pipeline everywhere.", "author": "HugoRCD ", "homepage": "https://evlog.dev",