Patch Changes
- 3e96a14: An optimistic message no longer stays in the
submittedstate when its turn is cancelled or fails before the agent reads it.EveAgentStorenow marks that messagefailed, so it keeps its own text, and later messages reconcile against their own submissions. A steered message the cancelled turn never read now also lets itssend()settle. Thanks @brettcrane for reporting this in #3102. - 8077f2d: With
otel({ traceChannelRequests: true }), theagent.channel.requestspan now ends when the response body finishes, fails, or is cancelled, not when the route handler returns. Session stream requests no longer logYou can only call end() on a span once.forworkflow.stream.read.connect, and request spans now cover the full streaming time. Thanks @ahcarpenter for reporting this and proposing the fix in #4256. - 54adf15:
chatSdkChannelnow reports failed final reply delivery with an error-id notice and a note to the model, avoids reposting streamed replies, and skips unchanged final edits after state restoration. Thanks @diegojohnsonl for reporting this in #4801. - 4280d51: A hook that cancels the turn at
compaction.completedno longer drops the compaction's summary call from the session's usage.session.waitingand session limits now count it. - 181caed: Compaction no longer re-runs on every step when the current user message is most of the context window. After a compaction, eve keeps at most 20,000 tokens of the latest conversation word for word next to the summary, with tool results shortened to 2,000 characters; a current message larger than that keeps its start and end, and the cut-out middle is summarized. A compaction that cannot bring the history under the threshold now fails the session, without retrying the step, with an error that says to start a new session or send a smaller message.
- cea4eb0: Declare
nextas an optional peer dependency, soeve/nexttypes resolve the app's ownnextin pnpm workspaces that install more than onenextversion. Thanks @laugharn for reporting this in #5341. - 80db4b3: A session started before eve 0.57 now imports on its next message instead of failing with
IncompatibleStateLayoutErrorforeve.mode. The import drops the framework context keys that those builds saved and the current build no longer defines. Thanks @sunlanchang for reporting this in #5213. - 200d2d8:
localDev()now refuses requests that a browser sends for another website: a non-loopback request host orOrigin. A web page open in the developer's browser can no longer start sessions or run the agent's tools on aneve devserver, including through DNS rebinding. Frontends served from any loopback host and port still authenticate. - 243a4a4:
localDev()now refuses callers on other machines. Before, aneve devserver started with--host 0.0.0.0gave every LAN caller thelocal-devprincipal, so they could run the agent and its local editing tools, which write to the project'sagent/source. Callers on the same machine are unchanged, including the developer's own clients when--hostnames a LAN address. - da515dc: OpenAPI
operations.allowandoperations.blocknow match an operation'soperationIdas written in the spec, as well as its generated tool name. Before, anoperationIdwith characters such as.or/never matched, because eve compared the filter only against the sanitized tool name, so a blocked operation stayed callable. - 9a55d23: OpenAPI connection tools no longer reject valid deeply nested input, such as a Notion page title. eve now keeps the spec's referenced schemas under
$defsinstead of copying them inline up to a depth limit, so validation applies at every depth and shared schemas no longer grow exponentially. Thanks @lildesert for reporting this with a minimal reproduction in #3267. - b8b36a8: Preserve the original session output stream’s public encryption metadata during deployment handoffs, avoiding repeated run metadata and encryption-key lookups before later turns.
- 7cf27bb: Text a root session's model writes before
eve__task_waitin the same step now posts as a reply. Before, Slack showed it only as the thread status, and Telegram, Teams, and other channels dropped it. - f3e3140: Fixed a denial-of-service issue in
webFetchwithformat: "text": HTML text extraction now runs in linear time, so malformed pages, such as ones with unclosed<script>tags or stray<characters, can no longer block the event loop. Content after an unclosed<script>,<style>,<noscript>, or<!--is now dropped, as browsers do. Thanks @not2face for the report. - de1b9aa: Workspace packages bundled from TypeScript source can now import their own files with
?rawand other relative asset imports. Before,eve buildfailed with "resolves outside package root" when an agent imported such a package.?rawnow also works for.jsonfiles and files without an extension, such as aDockerfile.