Skip to content

fix(eve): migrate to eve 0.87 (redisMemory, UpstashSandbox) + bump ai 7.0.156 - #84

Merged
CahidArda merged 3 commits into
mainfrom
chore/bump-upstreams-2026-10-29
Oct 29, 2026
Merged

CahidArda merged 3 commits into
mainfrom
chore/bump-upstreams-2026-10-29

Conversation

@CahidArda

@CahidArda CahidArda commented Oct 29, 2026 •

Copy link
Copy Markdown
Collaborator

What this fixes

Published @upstash/agentkit-eve@0.16.1 is broken on current eve. redisMemory() makes eve build fail on eve >= 0.84 (including latest 0.87.0) with provider.recall Unknown key "compaction.completed", and UpstashSandbox (./sandbox) targets a provider contract eve has since replaced. Its eve peer (>=0.75.0) admits all of those versions. Merging this PR and then the resulting "Version Packages" PR publishes @upstash/agentkit-eve 0.17.0 with the fix (a minor changeset is included).

Changes

@upstash/agentkit-eve (minor; peer >=0.75.0 -> >=0.87.0)

  • redisMemory() registers only recall["turn.started"] (eve 0.84 removed compaction.completed). eve 0.84+ gives memory tools no turn, so turn.started stores the turn sequence in Redis (<replayCachePrefix>:sequence:<scope>:<session>) and save_memory reads it to order its record (read_session sorts on it); falls back to 0 if no recall ran.
  • UpstashSandbox on eve's connection-based provider contract: prepare populates a temp box via ctx.populate(connection) then snapshots (ctx.isEmpty -> no box); start is an idempotent upsert on eve-<sha256(session.id)[:16]> (suffixed fallback if a deleted record holds the name); resume throws SandboxSessionGoneError; onSessionEnd deletes by recorded box id or derived name and no-ops when nothing exists; connection.stop() = Box pause; setNetworkPolicy is a connection extension; a writable-stdin spawn throws.
  • Tests rewritten/extended (incl. a regression test for the sequence hand-off); READMEs and docs updated.

Pins: packages/eve + examples/eve-demo move to eve ^0.87.0 / ai 7.0.156 (no longer held). eve-demo: turn.reply, new useEveAgent shape, @vercel/connect 2.5.6 and next 16.2.9 (so packages/eve and the demo resolve one eve instance). Also from the original bump: ai 7.0.156 / @ai-sdk/react ^4.0.160 elsewhere.

Deliberately not applied: eve 0.87 for @upstash/agentkit-eve-extension (a dist built on 0.87 is refused by eve 0.85/0.86 and would force its peer to >=0.87.0 with no contract change; it already builds clean on 0.85-0.87), and TanStack AI 1.0.0 (test-only typecheck/runtime breaks; published agentkit-tanstack-ai@0.2.0 already works on it).

Verification

lint, typecheck, sync-version --check, build, example builds: pass. eve eval (mocked model) passes for eve-demo (10/10) and eve-extension-demo (4/4); TanStack demo e2e 6/6. All 42 packages/eve memory tests pass against live Redis. pnpm test shows the same 19 live-Redis failures as unmodified main (the throwaway Redis allows one search index).

Not verified: the live Upstash Box suite in sandbox.test.ts (needs UPSTASH_BOX_API_KEY) was not run, so the new UpstashSandbox lifecycle is covered by offline tests and by the eve-demo eval reaching Box.create from prepare, but not by a real box round trip. Please run it once with a key before releasing.

🤖 Generated with Claude Code

https://claude.ai/code/session_01CMK4etZKNEc4Rzig1SCPpJ

devDependency/example-only bump; no published package contents change, so no changeset.
eve 0.87.0 and TanStack AI 1.0.0 are not applied; see CLAUDE.md.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CMK4etZKNEc4Rzig1SCPpJ
Copilot AI balanced review requested due to automatic review settings October 29, 2026 09:10

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

There are no active review issues blocking the AI SDK dependency updates.

No open issues 🎉

1 file not reviewed
  • pnpm-lock.yaml: Generated file
What changed in this PR

Updates AI SDK dependencies in the adapter and selected demos while preserving the older versions required by the Eve adapter and its demo.

Changes:

  • Bumps ai to 7.0.156 in three packages and aligns the AI SDK demo’s @ai-sdk/react to ^4.0.160.
  • Refreshes lockfile resolutions without changing published runtime dependencies or peer ranges.
  • Documents compatibility constraints behind deferred Eve and TanStack AI upgrades.
File Description
pnpm-lock.yaml Updates AI SDK resolutions and related dependency snapshots.
packages/​ai-sdk/​package.json Bumps the ai development dependency to 7.0.156.
examples/​eve-extension-demo/​package.json Bumps the demo’s ai dependency to 7.0.156.
examples/​ai-sdk-demo/​package.json Updates ai and its React integration together.
CLAUDE.md Records the upstream check and deferred-upgrade constraints.

Review effort: Balanced

Upstash Box and others added 2 commits October 29, 2026 09:29
….87.0

- redisMemory() no longer registers the removed compaction.completed recall hook, which made
  `eve build` reject the slot ("provider.recall Unknown key compaction.completed"). save_memory takes
  its ordering sequence from the turn.started recall (eve's memory tools context has no `turn`).
- UpstashSandbox implements eve's connection-based provider contract: prepare via ctx.populate,
  byte-level connection, idempotent start keyed on the session id, SandboxSessionGoneError on resume,
  onSessionEnd.
- packages/eve and examples/eve-demo move to eve ^0.87.0 / ai 7.0.156 (demo: turn.reply, new
  useEveAgent shape, @vercel/connect 2.5.6, next 16.2.9 so one eve instance is resolved).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CMK4etZKNEc4Rzig1SCPpJ
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CMK4etZKNEc4Rzig1SCPpJ
Copilot AI balanced review requested due to automatic review settings October 29, 2026 09:29
@CahidArda CahidArda changed the title chore: bump ai 7.0.156 (not packages/eve), @ai-sdk/react 4.0.160 fix(eve): migrate to eve 0.87 (redisMemory, UpstashSandbox) + bump ai 7.0.156 Oct 29, 2026

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Box API failures are misclassified as missing sandboxes, risking loss of associations to intact boxes and silently skipped cleanup during temporary outages.

4 open issues
1 file not reviewed
  • pnpm-lock.yaml: Generated file

Review effort: Balanced

Comment on lines +532 to +534
const found = await liveBox(() => Box.get(boxId, connection));
if (!found.box) {
throw new SandboxSessionGoneError(
}
// Box names are account-wide: a lingering deleted record keeps its name, so retry with a
// suffix. (`onSessionEnd` finds this box through the recorded state.)
if (errorMessage(err).startsWith(SNAPSHOT_RESTORE_FAILED)) throw err;
// Box names are account-wide: a lingering deleted record keeps its name, so retry with a
// suffix. (`onSessionEnd` finds this box through the recorded state.)
if (errorMessage(err).startsWith(SNAPSHOT_RESTORE_FAILED)) throw err;
box = await createBox(`${name}-${randomBytes(3).toString("hex")}`, restoreFrom);
Comment on lines +551 to +554
} catch {
return; // nothing exists
}
const { status } = await box.getStatus().catch(() => ({ status: "deleted" }));
@CahidArda
CahidArda merged commit 3b92234 into main Oct 29, 2026
3 checks 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.

2 participants