github vercel/eve eve@0.71.1

latest release: eve@0.71.2
4 hours ago

Patch Changes

  • 28f4063: Telegram, Discord, Teams, and chatSdkChannel now remove a question's or approval's buttons once it's answered and show the outcome, such as Approved or Answered: Saturday. This covers pressed buttons, typed replies, and requests withdrawn when a turn is cancelled. Adapters that can't edit messages keep the original prompt.
  • cdad50a: A follow-up message cancelled before its first model call now keeps its own sender as ctx.session.auth.current. Previously the cancelled turn reverted to the previous caller, even when the follow-up was anonymous, so turn.cancelled hooks saw the wrong identity.
  • b842fe0: Discord buttons now answer every pending request when a turn asks more than one at once, such as two questions, two tool approvals, or a question beside an approval. Before, only the first request's buttons reached the session; pressing another request's buttons failed with "the target session was not found via continuation token".
  • 440b2f2: Fix Docker sandbox template pruning so eve dev removes stale template images again, and drop the intermediate eve-sandbox-dockerfile image once its template is committed.
  • 8c026ee: Sessions saved before eve 0.64 that used a sandbox no longer fail every sandbox call with Sandbox session state belongs to provider "undefined" or the Session checkpoint sandbox provider state is incompatible handoff error. A sandbox record without a provider is treated as no sandbox, so the next sandbox call starts a fresh one.
  • 58a68dd: Keep MCP connections over HTTP on the 2026-07-28 protocol when the server is slow to answer server/discover. Previously eve gave up after 1 s and fell back to the legacy handshake, which servers that only speak the new protocol reject with Unsupported protocol version: 2025-11-25.
  • 5919154: MCP tools/call requests whose arguments don't match the tool's input schema now return structuredContent.error with code invalid_input, like every other rejected call, instead of only a text message.
  • 738c8de: Detect PNG, JPEG, GIF, and WebP files from their bytes in read_file, so images with missing or incorrect filename extensions remain viewable. Text files are always read as text, even with an image extension, and unreadable binary files now get a clear error.
  • 6c2e941: Channel route handlers now receive describe(), which returns the agent's name, description, and the compiled tools a caller can run outside a turn, with their JSON schemas, without the inspection detail of GET /eve/v1/info.
  • 073281c: Fix a spurious toolResultFrom identity warning when one tool definition is mounted under more than one name, such as the code extension's grep tool in its worker subagent. toolResultFrom now matches results from every name that definition is mounted under.
  • b842fe0: Pressing a Telegram question button again after the question is answered now sends that option to the agent as a new message, as it does on other channels. Before, the press was acknowledged and dropped. Button presses also act as the person who pressed them instead of an anonymous caller.
  • 12ced99: A plain-text message that answers a pending ctx.ask() question is now recorded as message.received, stamped with its delivery id, before the input.resolved it produces. Clients rendering from the session stream now show what the person typed, and an optimistic copy of the message reconciles instead of lingering. The answer joins the open turn like a steering message, so the turn's later events carry its delivery id too. Model history is unchanged.

Don't miss a new eve release

NewReleases is sending notifications on new releases.