Skip to content

feat!: upgrade to eve 0.32 (ai 7.0.58) - #17

Merged
CahidArda merged 4 commits into
mainfrom
eve-0.32-upgrade
Aug 13, 2026
Merged

feat!: upgrade to eve 0.32 (ai 7.0.58)#17
CahidArda merged 4 commits into
mainfrom
eve-0.32-upgrade

Conversation

@CahidArda

Copy link
Copy Markdown
Collaborator
  • eve ^0.32.0 + ai exact-pin 7.0.58 across all packages and demos; @ai-sdk/* ranges re-resolved to the latest minors so a single ai copy remains.
  • sandbox backend: implement eve >=0.32's required SandboxBackendHandle.stop() (authored-runtime pause; rejects on provider errors, unlike best-effort shutdown()).
  • tool factories return new ResolvedToolDefinition (eve >=0.31 widened execute's return type with AsyncIterable streaming snapshots; this re-narrows it to Promise for direct callers).
  • defineCachedTool drains async-generator executors and caches the final snapshot (cached tools don't stream).
  • eve-demo: agent.send is positional in eve >=0.31 (send(value), not send({message})).
  • eve-extension dist rebuilt with eve 0.32: manifest now requires 0.32's contribution formats, so consumers need eve >=0.32.

All 69 tests pass against real Redis/Box; all example apps build.

- eve ^0.32.0 + ai exact-pin 7.0.58 across all packages and demos; @ai-sdk/*
  ranges re-resolved to the latest minors so a single ai copy remains.
- sandbox backend: implement eve >=0.32's required SandboxBackendHandle.stop()
  (authored-runtime pause; rejects on provider errors, unlike best-effort
  shutdown()).
- tool factories return new ResolvedToolDefinition (eve >=0.31 widened
  execute's return type with AsyncIterable streaming snapshots; this
  re-narrows it to Promise for direct callers).
- defineCachedTool drains async-generator executors and caches the final
  snapshot (cached tools don't stream).
- eve-demo: agent.send is positional in eve >=0.31 (send(value), not
  send({message})).
- eve-extension dist rebuilt with eve 0.32: manifest now requires 0.32's
  contribution formats, so consumers need eve >=0.32.

All 69 tests pass against real Redis/Box; all example apps build.
Drain-to-final-snapshot resolution, single-run caching of the drained
value, and the empty-generator rejection not poisoning the cache.
…d of draining

Cached tools don't stream — narrow DefineCachedToolConfig.execute
(Promise<TOutput> | NonStreaming<TOutput>) so async-generator executors
fail to compile, rather than accepting and draining them at runtime.
The NonStreaming ([Symbol.asyncIterator]?: never) intersection is
required: with a plain union TS infers TOutput as the generator itself.

Drops the finalSnapshot/isAsyncIterable runtime path, the streaming
tests (replaced by a @ts-expect-error type guard), and the
ResolvedToolDefinition export — factory returns are plain ToolDefinition
again; direct execute callers narrow the awaited union themselves.
The type-level guard doesn't reach JS callers; without a backstop,
ToolCache would serialize the generator object into Redis as the cached
result. A directly returned AsyncIterable now throws a TypeError naming
the tool. Only direct returns count as streams (matching eve's
semantics) — a promise resolving to an iterable is just a value.
@CahidArda
CahidArda merged commit b0ef882 into main Aug 13, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant