github vercel/eve eve@0.87.0

latest release: @vercel/agent-runs@0.0.3
3 hours ago

Release eve@0.87.0 | 2026-10-28 | minor

🚀 Features

  • Typed eve/client errors now extend the new EveError (from eve/client and eve/sessions) with a stable snake_case code, and session.snapshot() now returns the full session state, including the opaque inbox value. #5479

    Match SessionNotActiveError on session_not_active or session_not_ready instead of EVE_SESSION_NOT_ACTIVE, expect ClientError.code to be http_error when the response had none, and narrow with ClientError.is(error) and friends instead of instanceof. Persist the session that snapshot() returns as is to keep inbox across restores.

  • Rename the terminal display flags on eve dev and eve remote connect to --show-tools, --show-reasoning, --show-subagents, and --show-connection-auth. #5479

    The old --tools, --reasoning, --subagents, and --connection-auth display flags are no longer accepted, and rendering defaults are unchanged. Model reasoning effort still uses --reasoning on eve init and eve set model.

  • Rename reset() to end() on client sessions, frontend stores/hooks, and channel/Slack handles, and the HTTP retirement endpoint to POST /eve/v1/session/:sessionId/end (upgrade the server before using the new client). #5479

    Ending keeps the retired ID: use newSession() or client.sessions.create() for a fresh conversation, or clear() to clear context in place; remote-agent and session-history compatibility encodings remain unchanged.

  • eve's authoring and configuration types no longer expose AI SDK, zod, OpenTelemetry, or channel-adapter types, so import eve's own types where you named the third-party ones. #5479

    Agent model fields accept EveLanguageModel, DecisionModel requires specification v4, memory providers return MemoryToolSet instead of the removed MemoryToolDefinition, TokenUsage is exported from eve, and eve/instrumentation/otel, eve/channels/linq, and eve/channels/photon export eve-owned span processor/exporter, LinqWebhookVerifier, and PhotonIMessageWebhookVerifier/PhotonProjectCredentials types. Any AI SDK language model or OpenTelemetry processor still type-checks wherever eve accepts one.

  • Import durable primitives from eve/workflow and run/hook operations from eve/workflow/api, because bare workflow imports now fail in authored modules. #5479

    Both entries declare eve-owned types: start(workflow, args?) takes no options, runs expose only runId, status, returnValue, and cancel(), and getHookByToken is removed, so pass a deterministic token to createHook and call resumeHook(token, payload). Ambient Workflow types are no longer needed, though existing eve/workflow-modules tsconfig entries can stay through 1.x.

  • The just-bash escape hatches and the Discord Gateway relay move to experimental entries, so update their imports. #5479

    Pass customCommands and filesystem as JustBashSandbox.environment({ experimental: { customCommands, filesystem } }) and import their types, such as JustBashCommand and JustBashFilesystem, from eve/experimental/sandbox/just-bash. Import runDiscordGatewayRelay (formerly experimental_runDiscordGatewayRelay) from eve/experimental/channels/discord/gateway instead of eve/channels/discord/gateway.

  • Import defineWorkspaceAgent, WorkspaceAgentDefinition, and WorkspaceAgentTransport from eve/experimental/workspace instead of eve. #5479

    The helper is experimental; workspace layout and eve/vercel remain stable.

  • Builds now reject agent and connection definitions that don't come from eve's helpers. #5479

    Export defineAgent({...}) from every local agent.ts (and return it from dynamic subagents), wrap static connections in defineMcpClientConnection or defineOpenAPIConnection (plain objects no longer default to MCP), and create sentinels only with defineDynamic(), disableTool(), and disableRoute(). Move an agent/sandbox.ts that sits beside agent/sandbox/ to agent/sandbox/sandbox.ts.

  • Remove the undocumented public exports isDisabledToolSentinel, isDisabledRouteSentinel, isInstrumentationDisabled, answerFromText, failureOf, and Linear's defaultOnAgentSession. #5479

    Use failure(view, turnId) from eve/events on a folded view, or check raw turn.settled and session.ended events for outcome === "failed". Omit onAgentSession to keep Linear's default handler.

  • Flatten client stream retry settings into reconnect?: false | ReconnectOptions. #5479

    Replace streamReconnectPolicy: { reconnect: false } with reconnect: false, move streamOpenReconnectPolicy fields under reconnect, and rename retryableErrorStatuses to retryableStatuses. The StreamReconnectPolicy and StreamReconnectRetryPolicy types are removed in favor of ReconnectOptions.

  • Rename compaction.thresholdPercent to compaction.threshold, which takes a 0–1 fraction. #5479

    The old key now fails with migration guidance. Set limits.sessionUsage: false to disable usage limits, including limits inherited from a parent agent.

  • Built-in channel state types no longer publish the default handlers' bookkeeping, so keep custom handler data in your own state keys. #5479

    Hidden fields include Slack taskCards, threadStatus, and the code-channel reply fields replyThreadTs and pendingReplyThreadTs, Chat SDK streaming fields, pendingSignIns, prompt-card fields, and Discord's interactionToken (read it from the Discord handle), and TelegramHitlState is no longer exported. SendTurnPayload is now exported from eve/client.

  • Slack initialMessage now accepts Markdown, text, raw blocks, or a card, with optional files uploaded into the root message's thread. #5479

    Remove unsupported Modal*, ExternalSelect*, TextInput*, CardJSXElement, CardJSXProps, isCardElement, and cardChildToFallbackText exports, plus the card builders' JSX-props overloads and their *Props, ContainerProps, and ChatElement types. Call builders with their data forms such as Button({ id, label }), use CardText for labels, native Slack view data for modals, and cardToFallbackText for whole cards (see Slack cards).

  • Clarify that Next.js servicePrefix supports manually configured Vercel services and production proxying; it is not a legacy option. #5479

Other Changes

See the full list of changes.

Contributors

Don't miss a new eve release

NewReleases is sending notifications on new releases.