$ the-wire · showcase
Eve ships per-session token cost limits, Next.js tightens Server Action errors
By RepoJournal · Filed · About Vercel
Eve 0.51.0 ships per-session USD token-cost limits, while Next.js now returns precise client errors for unrecognized Server Actions.
Eve 0.51.0 is out [1]. It brings an optional `maxTokenCostUsdPerSession` limit that follows the existing human-in-the-loop flow: once accumulated model cost hits the limit, **Approve** grants another configured window and **Stop** cancels the turn; runs without HITL fail with a token-cost-specific error [2]. The limit is unset by default and excludes tool and infrastructure spend. In a separate privacy move, `@eve/self-modification` stays a private workspace package instead of shipping through `eve`, retaining the AI Gateway model-search tool for the internal extension [3]. Also, workspace agents in a top-level `agents/` workspace no longer share memory across workspaces: the default namespace now includes workspace membership and the public route prefix, while standalone agents remain byte-for-byte compatible [4].
Next.js now distinguishes why a Server Action reference fails on the client [5]. It returns `400 Bad Request` when an action ID does not match the expected format and `409 Conflict` when a well-formed ID is unavailable in the current deployment, covering deployment skew. The classification applies to IDs from the `Next-Action` header and multipart MPA forms across Node and Edge runtimes, and responses are generic text bodies that don't expose action-ID details. Also in Next.js, the vendored `web-vitals` dependency upgrades to v6.0.1 and enables soft-navigation reporting for CLS, INP, and LCP, so `useReportWebVitals` reports metrics against the navigation where they occurred, including `navigationURL` for route attribution; the obsolete FID integration is removed [6].
In the AI SDK, two stream-handling fixes landed. WorkflowAgent.stream no longer rejects valid abort signals in runtimes where the `AbortSignal` global is not a constructor: `mergeAbortSignals` used it as the right-hand operand of `instanceof`, producing a `TypeError` classified as `USER_ERROR` before any model step completed [7]. And OpenAI-compatible gateways that attach `tool_calls: []` to reasoning deltas no longer split one logical reasoning span into multiple visible blocks: the stream transform treated any non-null `tool_calls` array as active tool output, so empty arrays closed reasoning after each delta [8]. Separately, MCP tool metadata now surfaces server-provided annotations, so applications can implement approvals themselves; the AI SDK should just surface the metadata, as the PR notes [9].
vercel-py's workflow SDK adds typed streams: a `type=` argument on all stream-getting functions wraps a pydantic validator around the read or write, and `WorkflowWritable` gets the same treatment when passed to a step [10]. It also writes gzip- and zstd-compressed workflow payloads using the same thresholds and codec controls as the TypeScript SDK, bumping the spec version to 5 [11]. And importing `httpx` inside workflows no longer fails now that `zstandard` is a dependency: it's in the passthrough list but its `open` method is blocklisted, so importing `httpx` works while using it still fails as expected [12].
Action items
- → Review eve release notes and test the new `maxTokenCostUsdPerSession` limit if you use session budgets vercel/eve [plan]
- → Update client code to handle 400 and 409 from Server Actions as distinct errors vercel/next.js [plan]
- → Upgrade web-vitals to v6.0.1 in your Next.js app for soft-navigation metrics vercel/next.js [plan]
- → Watch for vercel-py workflow stream type validation in your next release vercel/vercel-py [monitor]
References
- [1] Version Packages ↗ vercel/eve
- [2] feat(eve): add per-session model token-cost limits ↗ vercel/eve
- [3] feat(selfmod): keep self-modification private ↗ vercel/eve
- [4] fix(eve): isolate workspace agent memory ↗ vercel/eve
- [5] Return client errors for unrecognized Server Actions ↗ vercel/next.js
- [6] Upgrade web-vitals to v6 and report soft navigations (#97232) ↗ vercel/next.js
- [7] fix: prevent valid abort signals from crashing WorkflowAgent in runtimes with a non-constructor AbortSignal global (#20276) ↗ vercel/ai
- [8] fix: prevent empty tool-call deltas from fragmenting OpenAI-compatible reasoning streams (#20253) ↗ vercel/ai
- [9] feat(mcp): surface server-provided tool annotations in tool metadata (#20287) ↗ vercel/ai
- [10] workflow: typed streams ↗ vercel/vercel-py
- [11] workflow: write compressed payloads ↗ vercel/vercel-py
- [12] workflow: make zstandard passthrough (and restricted) to make httpx work ↗ vercel/vercel-py