Minor Changes
- ddc8e12: A connection sign-in or tool approval now holds the turn open, like a question or task: the stream emits
turn.waitinginstead ofturn.completedandsession.waiting, and the same turn resumes once the person acts. Everyturn.waitingnow carrieson:"input"when a person must act,"tasks"when the turn waits on its own work. A message from that person steers the turn and cancels the pending sign-in or approval, messages from anyone else wait for the turn to end, and cancelling the turn withdraws both, so an approval no longer stays answerable after a cancel. A message sent while a session-limit prompt holds the turn waits in that turn and runs once the budget is granted. Slack's sign-in prompt gains a Cancel button. - 9553b51: The first local subagent turn now uses its caller's trace; remote turns remain separate roots with dispatch links, and later child turns start new traces. Queries that followed local
eve.link.type=agent.dispatchlinks must useparentSpanIdoragent.parent_run.idandagent.parent_call.id; third-party spans receive the conversation ID only when they do not set one. - 63f86de: The TUI's
--logsand/loglevelmodes are nownone,error(default),warn,debug, andall, replacing thestderrandsandboxfilters. Console warnings retain their severity across local server workers, stay hidden by default, and render yellow when enabled; unclassified output is shown only withall, in neutral styling. Complete log records now commit immediately instead of holding completed turns in the clipped live region. - 8aca3d8: Frontend hooks and
EveAgentStorenow share one conversation client: default hooks returnConversationState(messages plus root turns, input requests, tasks, and agent sessions) instead ofEveMessageData, and every snapshot exposes canonicalconversationalongside a custom reducer'sdata. Answers to open input requests are accepted while a turn runs,followSubagents: truefollows each agent tool's session intoconversation.agents, a held turn staysstreamingwithturns[turnId].waitingset, andEveAgentStoreadds aclientoption pluscompact(),clear(), andretire().
Patch Changes
- 8aca3d8: A sign-in prompt that eve raises while checking who may answer an approval now includes its
attemptId, so clients match the completion to that prompt instead of leaving it open. - ddc8e12: A plain
connection_searchno longer asks the user to sign in: connections they have not authorized appear underunavailablewithrequiresSignIn: true, and the model signs in to one connection at a time withconnection_search({ connection, signIn: true }). A turn waiting on several sign-ins resumes once all of them are done. - ac77188: The build now fails when a dynamic remote agent's
authorheadersuses a value declared inside the event handler. Before, eve moved the credentials to module scope anyway, so they threw at request time or silently read a same-named module value. Dynamic remote agents imported through an alias orimport * as evenow compile their credentials too. - 1094e52: Eval results now list the models their steps started with:
derived.modelson each session holds the distinct model ids in first-use order, and the eval result'sderived.modelsmerges them in session order. Only the sessions an eval created or attached are covered. - 8aca3d8: The
eve devterminal UI now runs on the shared agent store: the prompt stays open while the agent works, including turns the agent starts on its own, approvals and questions open as soon as they arrive, and slash commands run immediately.EscorCtrl+Ccancels the running turn instead of steering with queued messages, and an approval or question names the task that asked. While a sign-in is open, the turn bar names the connection it waits for, and a turn cancelled from another client puts its message back in the prompt. - 001cc00: Tool, agent, and connection names now read as plain words in activity labels, approval prompts, and the Slack status and task card. An extension or memory namespace before
__is dropped, andsync_accountsorsyncAccountsshows asSync accounts. A connection call shows asLinear: List issues, and its approval asksApprove Linear: List issues?instead of namingconnection_execute. Agent calls read asResearcher: Find the March incidents. Labels set withlabel.startare unchanged. - 8aca3d8: Keep a tool's completed result visible when an approval decision arrives after that result. The TUI no longer shows a finished workflow call as interrupted during subsequent turns.
- 4361876: Extensions mounted inside a contributed subagent can now read the enclosing extension's configuration. Previously the nested mount saw an unbound handle, so deriving its configuration from the parent extension failed with
Invalid extension config. - 3f6d9cf:
eve/nuxtnow shares the Next.js dev-server startup: it waits up to 180 seconds by default (configurable with the newdevServerTimeoutMsoption), ignores non-local URLs in eve's startup output, and prefixes eve's logs with[eve:dev]. Restartingnuxt devno longer leaves eve requests proxied to a stopped dev server. - ddc8e12: Tools and connections that share one Vercel Connect connector now ask the user to sign in once. Before, each tool that called
ctx.getToken(connect(...))and each connection using the same connector posted its own sign-in prompt for the same grant. - a79fca4: Task starts in the terminal UI now use ordinary tool-call styling. A bounded activity drawer above the prompt shows readable subagent labels, nested work, and the parent's current state and elapsed time. Activity remains visible above questions and approvals when screen space permits.
- 4403122: On Vercel, a remote agent's spans now carry its own session ID as
vercel.session_idinstead of the calling deployment's root session, and its local subagents carry the same ID. Agent Runs in the receiving project lists the remote agent as its own session, with its turns, subagents, and token usage.gen_ai.conversation.idstill names the caller's conversation. - 384af57: Session workflow steps that only publish events or update session state, such as a workflow tool's progress report, no longer store the conversation history in their Workflow step input, so their stored size stops growing with the conversation. The session handoff checkpoint changed shape, so an idle session does not move between deployments on either side of this release; its current owner keeps running it.
- ff12e85:
session.waiting,turn.waiting,session.failed, andsession.completednow carryusage, the session's running token usage and cost including what the agents it delegated to spent. Eval results expose it asderived.usage, per session and summed for the eval, so a delegating eval no longer reports only its own model calls. - ddc8e12: A completed sign-in now resumes the turn as the user who started it. Before, when someone else posted in a shared thread while the sign-in was pending, the resumed turn ran as that last speaker and failed with "the service rejected the token immediately after authorization".
- ddc8e12: Slack now cleans up after a tool approval. Once it resolves, the separate tool-input post is deleted, a direct-message approval's
Waiting on approvalnote in the thread shows the outcome, and the card loses its buttons even when the approval ends without a click. TheChecking whether you can respond to this approval…notice is no longer posted, since Slack cannot remove it afterwards. - 490ac0d: Slack no longer drops a final reply without a trace. When Slack refuses eve's default reply as too large or malformed, eve uploads it as a Markdown snippet. When a reply still isn't delivered, including when a custom renderer throws, eve posts a short notice with an error id, without the reply, and tells the model on the next message that the user never saw it. Custom renderers can opt in to the same fallbacks by posting through
postCompletedSlackReplyfromeve/channels/slack, which tries their blocks, then native Markdown, then a snippet, using only the content they pass. - ddc8e12: Slack now identifies a person by the app installation workspace on both messages and button clicks, as
slack:<installation team>:<user>. Before, a Slack Connect or Enterprise Grid user could get one principal from their messages and another from approval clicks, so they were asked to sign in to the same connection again. Their principal changes once with this release, so they sign in to user-scoped connections one more time. - 19a2b4f: Slack
onMessagenow receives only newly posted messages. Edits, deletions, and other system message events go toonEvent, so updating the agent's own HITL card in a DM no longer starts a stray session. - 001cc00: Channels can now handle
step.started, which fires before each model call in a turn. The default Slack channel uses it to replace a stale thread status when the model starts another step. The status showsReviewing results...after a task finishes andThinking...after a tool call. Before,Waiting on 3 tasks...or a finished tool's label lingered until the model streamed its next output. - ddc8e12: Slack sign-in prompts now say which service they are for and why. The private message reads
Connect Linear: To continue, I need access to your Linear accountwith aConnect Linearbutton, and a device code, when the provider issues one, appears as a short hint below the button instead of leading withUse code … when prompted. The thread status names who it is waiting on, as inWaiting for @alice to connect Linear…. - 8aca3d8: The default message reducer gives assistant text and reasoning parts a stable
idacross streaming, completion, and replay, and keeps late-arriving participant messages ahead of their turn's response. Authorization parts match completions byattemptIdand mark callback-backed sign-ins withawaitsCallback; replayed tool events no longer reopen a settled approval, and rejected tool results render as denied. - b3fc842: Pressing a Telegram inline button for an
ask_questionquestion now answers it. Sinceeve@0.65.0the press was dropped and the agent kept waiting for an answer. - e1130dd: Fix generated Web Chat service builds with root-installed pnpm dependencies, and honor Vercel services configuration during project creation instead of prompting to switch to Next.js or eve. Deployment now shows Vercel build logs in the CLI and TUI and provides a command to retrieve them after a failure.