Skip to content

eve@1.0.0-rc.2

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 02 Nov 23:03
55193f2

Released 2026-11-02 · Compare with 1.0.0-rc.1

Features

  • Set approval in agent.ts to gate every tool, connection, and subagent call from one policy.
    The agent's policy runs beside each entry's own approval and the stricter result wins, so it can add a gate but never remove one. Subagent sessions inherit the root agent's policy. Thanks @kingztech2019 and @taoufik-ia for the proposals in #145 and #2673. (#5793)
  • Slack sends a person's edit to a message the agent serves to that thread's session, as a <slack_message_edit> with a diff of the changed lines and the full edited text, and slackChannel({ onMessageEdited }) decides which edits reach the agent.
    An edit follows the channel's turnPolicy like any message: by default it joins a running turn, and if the agent already replied, it starts a new turn, which shows no thread status until its first tool call finishes; add the no_reply tool so the agent can stay quiet when an edit changes nothing. By default, eve sends edits to DMs, code channel messages, and messages that mention the agent before or after the edit. With an authored onAppMention, onDirectMessage, or onMessage, edits need their own onMessageEdited, so they can't skip those hooks' checks; until then they go to onEvent or are dropped.
    The generated Slack app manifest now subscribes to the message.channels, message.groups, message.im, and message.mpim events and adds the channels:history, groups:history, im:history, and mpim:history scopes, which Slack requires to send edits. Reinstall the Slack app to grant them. With these events, the default handler also answers DMs without extra setup, and an authored onEvent receives every message event in channels the app has joined. (#5796)
  • Add the Tavily MCP integration to the registry, so eve add connection/tavily connects web search, extraction, crawling, and URL mapping through Vercel Connect OAuth. (#5731)
  • Dynamic functions can read the session's sandbox with ctx.getSandbox(), the same handle tools and hooks get.
    eve runs dynamic functions before every model call, so read the sandbox inside ctx.memo, keyed on what would change the files, such as the latest checkout call in ctx.view. ctx.getSandbox() isn't available while choosing the model. (#5802)
  • eve add channel/telegram now offers guided setup with Vercel Connect or portable credentials.
    With Connect, it stores the bot token in a Telegram connector and routes the connector's triggers to /eve/v1/telegram, so Connect registers and verifies the webhook. With portable credentials, it writes the bot token and a generated webhook secret to .env.local. (#5810)
  • Session events can now record a call or a content part that its turn made without a model run: call.requested accepts an owner of { turnId }, and content.completed leaves out runId, with scope.turnId naming the turn.
    The fold, the client's conversation, and the Slack channel place both under their turn. ContentCompletedData.runId is optional and CallOwner has a third variant in TypeScript, so code that reads runId as always present or switches over owners needs a default branch. Stream version 27 also now allows a later release to add call owners, and a reader treats a call whose owner it doesn't know as the session's. (#5771)

Bug Fixes

  • eve dev now resolves a string agent model through a custom globalThis.AI_SDK_DEFAULT_PROVIDER, as eve start does, instead of routing it to the local AI Gateway connection. (#5789)
  • Only sign-ins the runtime starts can hold a turn.
    A tool result shaped like a sign-in request, such as JSON from an MCP or OpenAPI connection, no longer opens a sign-in or changes who the turn runs as. (#5790)
  • Deliver Slack DM thread replies posted with "Also send to direct message" to the agent.
    Thanks @dohooo for reporting this in #5774. (#5776)