Skip to content

Make agent Stop cancel durable turns - #1401

Open
timolins wants to merge 2 commits into
mainfrom
codex/durable-agent-stop
Open

Make agent Stop cancel durable turns#1401
timolins wants to merge 2 commits into
mainfrom
codex/durable-agent-stop

Conversation

@timolins

@timolins timolins commented Jul 30, 2026

Copy link
Copy Markdown
Member

Summary

useEveAgent().stop() now requests best-effort cancellation of the active durable turn instead of only disconnecting the browser.

  • extracts the retry policy that already existed in the eve TUI into a shared internal helper, so the TUI and framework bindings use the same cancellation-admission behavior
  • adds EveAgentStore.detach() for local-only transport cleanup
  • uses detach() automatically during React, Vue, and Svelte lifecycle cleanup
  • removes about 90 lines of cancellation orchestration from the generated chat example

Before / after

Before:

agent.stop(); // abort local stream; durable work keeps running

After:

agent.stop(); // request durable cancellation and observe settlement

Local-only cleanup remains available to low-level store users:

store.detach(); // abort local transport; durable work keeps running

Behavior change

This changes the public meaning of stop(). A pending send() now stays attached until the server reaches its cancellation boundary instead of ending immediately. Cancellation is best-effort; a turn that cannot admit cancellation continues normally.

Restoring saved session state still does not attach the binding to a turn that was already running before restoration.

Validation

  • pnpm fmt
  • pnpm lint
  • pnpm guard:invariants
  • pnpm docs:check
  • pnpm typecheck
  • pnpm test:unit — 5,664 passed, 1 skipped
  • pnpm --filter eve build
  • browser E2E: immediate Stop, mid-stream Stop with partial output preserved, and a successful next turn on the same session

timolins added 2 commits July 30, 2026 15:08
Signed-off-by: Timo Lins <me@timo.sh>
Signed-off-by: Timo Lins <me@timo.sh>
@vercel

vercel Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
eve-docs Ready Ready Preview Jul 30, 2026 1:15pm
eve-docs-4759 Ready Ready Preview, v0 Jul 30, 2026 1:15pm

@github-actions

Copy link
Copy Markdown
Contributor

Bundle + Package Summary: apps/fixtures/weather-agent

Key takeaways

  • No notable deltas vs main (33ea372).

Delta vs main (33ea372)

Area Metric Baseline Current Delta
Package Packed tarball 7.62 MB 7.62 MB +429 B ⚠️
Package Unpacked publish size 28.79 MB 28.79 MB +1.0 kB ⚠️
Package Installed footprint 91.26 MB 91.26 MB +1.0 kB ⚠️
Package Published files 2875 2877 +2
Package Installed files 6664 6666 +2
Runtime Unique function payloads 2 2 0
Runtime Total function bytes 16.80 MB 16.80 MB -40 B ✅
Runtime Public routes 11 11 0
Changed function payloads vs main (33ea372) (2)
Function Status Baseline Current Delta Route changes
functions/__server.func changed 8.40 MB 8.40 MB -20 B ✅ none
functions/.well-known/workflow/v1/flow.func changed 8.40 MB 8.40 MB -20 B ✅ none

eve init install

Metric Baseline Current Delta
Installed footprint 129.67 MB 129.67 MB +1.0 kB ⚠️
Installed packages 130 130 0
dependencies 4 4 0
devDependencies 2 2 0
Dependency package bytes 43.12 MB 43.12 MB +1.0 kB ⚠️
devDependency package bytes 5.04 MB 5.04 MB 0 B ➖
Build Metadata
  • Preset: vercel
  • Nitro: nitro@3.0.260610-beta
  • Output directory: apps/fixtures/weather-agent/.vercel/output
  • Build metadata timestamp: 2026-07-30T13:16:15.513Z
  • Route aliases: 11 public, 1 internal (12 total aliases)
  • Vercel routes in config: 14
  • Severity legend: 🔴 dominant/large, 🟠 notable, 🟡 watch, ⚪ small
Package Drill-Down

Package Details

  • Package: eve@0.27.13
  • Package directory: packages/eve
  • Tarball: 7.62 MB (eve-0.27.13.tgz)
  • Unpacked payload: 28.79 MB across 2877 published files
  • Installed footprint: 91.26 MB across 6666 installed files
  • Installed root package: 27.43 MB
  • Installed dependencies: 63.83 MB
  • Runtime dependencies: 2
  • Peer dependencies: 5 (4 optional)

Installed footprint is measured from an isolated temporary npm install of the packed tarball.

Heavy installed dependencies

  • eve: 27.43 MB (30.1%)
  • @rolldown/binding-linux-x64-gnu: 19.28 MB (21.1%)
  • @rolldown/binding-wasm32-wasi: 10.66 MB (11.7%)
  • @napi-rs/wasm-runtime: 6.56 MB (7.2%)
  • ai: 6.53 MB (7.2%)
Publish payload breakdown
Published file size
🔴 dist/src/compiled/shadcn-registry/index.js       [########################] 13.15 MB 45.7%
🟠 dist/src/compiled/experimental-ai-sdk-code-mo... [###.....................] 1.51 MB 5.2%
🟡 dist/src/compiled/@vercel/sandbox/index.js       [#.......................] 632.5 kB 2.2%
🟡 dist/src/compiled/_chunks/workflow/undici-DWL... [#.......................] 502.4 kB 1.7%
🟡 dist/src/compiled/@chat-adapter/slack/index.js   [#.......................] 440.5 kB 1.5%
🔴 Other published files                            [#######################.] 12.56 MB 43.6%
Installed footprint breakdown
Installed package size
🔴 eve                             [########################] 27.43 MB 30.1%
🔴 @rolldown/binding-linux-x64-gnu [#################.......] 19.28 MB 21.1%
🔴 @rolldown/binding-wasm32-wasi   [#########...............] 10.66 MB 11.7%
🔴 @napi-rs/wasm-runtime           [######..................] 6.56 MB 7.2%
🔴 ai                              [######..................] 6.53 MB 7.2%
🔴 zod                             [####....................] 5.07 MB 5.6%
🔴 Other installed packages        [##############..........] 15.73 MB 17.2%
Runtime dependencies (2)
Package Range Notes
nitro 3.0.260610-beta
undici 8.9.0
Peer dependencies (5)
Package Range Notes
@opentelemetry/api ^1.0.0 optional peer
ai catalog:
braintrust ^3.0.0 optional peer
just-bash ^3.0.0 optional peer
microsandbox ^0.5.0 optional peer
eve init install drill-down

eve init install details

  • Command: eve init my-agent
  • Package manager: npm
  • Installed footprint: 129.67 MB across 8534 installed files
  • Installed packages: 130 total (124 transitive-only)
  • dependencies: 4 direct packages totaling 43.12 MB
  • devDependencies: 2 direct packages totaling 5.04 MB
  • Other transitive package files: 81.50 MB

Installed footprint is measured from an isolated temporary eve init my-agent using the current packed eve tarball.

Heavy installed dependencies

  • @typescript/typescript-linux-x64: 27.95 MB (21.6%)
  • eve: 27.43 MB (21.2%)
  • @rolldown/binding-linux-x64-gnu: 19.28 MB (14.9%)
  • @rolldown/binding-wasm32-wasi: 10.66 MB (8.2%)
  • zod: 9.02 MB (7.0%)
Installed footprint breakdown
Installed package size
🔴 @typescript/typescript-linux-x64 [########################] 27.95 MB 21.6%
🔴 eve                              [########################] 27.43 MB 21.2%
🔴 @rolldown/binding-linux-x64-gnu  [#################.......] 19.28 MB 14.9%
🔴 @rolldown/binding-wasm32-wasi    [#########...............] 10.66 MB 8.2%
🔴 zod                              [########................] 9.02 MB 7.0%
🔴 @napi-rs/wasm-runtime            [######..................] 6.56 MB 5.1%
🔴 ai                               [######..................] 6.53 MB 5.0%
🔴 Other installed packages         [###################.....] 22.23 MB 17.1%
dependencies (4)
Package Range Installed size Share
@vercel/connect 0.4.2 135.8 kB 0.1%
ai ^7.0.38 6.53 MB 5.0%
eve file:eve-0.27.13.tgz 27.43 MB 21.2%
zod 4.4.3 9.02 MB 7.0%
devDependencies (2)
Package Range Installed size Share
@types/node 24.x 2.54 MB 2.0%
typescript 7.0.2 2.50 MB 1.9%
Function Drill-Down

Payload Size Graph

Unique function payload size and share of total
🔴 functions/.well-known/workflow/v1/flow.func     [########################] 8.40 MB 50.0%
🔴 functions/__server.func                         [########################] 8.40 MB 50.0%

Top Function Payloads

🟠 functions/.well-known/workflow/v1/flow.func • 1 public route • 8.40 MB
Metric Value
Public routes /.well-known/workflow/v1/flow
Runtime nodejs24.x
Handler index.mjs
Payload 8.40 MB
Function files 8.40 MB across 44 files
Traced dependencies 0 B
Signal 🟠 Bundled file index.mjs is 2.30 MB (27.4%)

🟠 🔎 Dependency Analysis

📦 Bundled files:

Bundled file size
🟠 index.mjs                       [########################] 2.30 MB 27.4%
🟠 _chunks/runtime-artifacts.mjs   [################........] 1.59 MB 18.9%
🟡 _libs/undici.mjs                [##########..............] 980.5 kB 11.7%
🟡 _chunks/sandbox.mjs             [########................] 768.8 kB 9.2%
🟡 _libs/@ai-sdk/gateway+[...].mjs [####....................] 432.8 kB 5.2%
🟠 Other bundled files             [########################] 2.33 MB 27.7%

🧾 Vercel Config

{
  "handler": "index.mjs",
  "launcherType": "Nodejs",
  "shouldAddHelpers": false,
  "supportsResponseStreaming": true,
  "runtime": "nodejs24.x",
  "maxDuration": "max",
  "experimentalTriggers": [
    {
      "type": "queue/v2beta",
      "topic": "__eve776561746865722d6167656e74_wkf_workflow_*",
      "consumer": "default",
      "retryAfterSeconds": 5,
      "initialDelaySeconds": 0
    }
  ],
  "environment": {
    "WORKFLOW_PRECONDITION_GUARD": "1"
  }
}

🟠 functions/__server.func • 10 public routes, 1 internal alias • 8.40 MB
Metric Value
Public routes /
/eve/v1/callback/[token]
/eve/v1/connections/[name]/callback/[token]
/eve/v1/health
/eve/v1/info
/eve/v1/session
/eve/v1/session/[sessionId]
/eve/v1/session/[sessionId]/cancel
/eve/v1/session/[sessionId]/stream
/eve/v1/session/reset
Internal aliases /__server
Runtime nodejs24.x
Handler index.mjs
Payload 8.40 MB
Function files 8.40 MB across 44 files
Traced dependencies 0 B
Signal 🟠 Bundled file index.mjs is 2.30 MB (27.4%)

🟠 🔎 Dependency Analysis

📦 Bundled files:

Bundled file size
🟠 index.mjs                       [########################] 2.30 MB 27.4%
🟠 _chunks/runtime-artifacts.mjs   [################........] 1.59 MB 18.9%
🟡 _libs/undici.mjs                [##########..............] 980.5 kB 11.7%
🟡 _chunks/sandbox.mjs             [########................] 768.8 kB 9.2%
🟡 _libs/@ai-sdk/gateway+[...].mjs [####....................] 432.8 kB 5.2%
🟠 Other bundled files             [########################] 2.32 MB 27.7%

🧾 Vercel Config

{
  "handler": "index.mjs",
  "launcherType": "Nodejs",
  "shouldAddHelpers": false,
  "supportsResponseStreaming": true,
  "runtime": "nodejs24.x"
}

Build Timing: e2e/fixtures/agent-tools-sandbox

This is an informational timing measurement inside eve build, from preflight through publication. Output-size measurement and profile writing are excluded.

Build mode: deployable Vercel build with sandbox template prewarm included.

  • Build pipeline: 2.23 s -> 2.10 s (-126.3 ms) vs main (33ea372).
  • Timing is informational: shared GitHub runners are too variable for a hard timing budget.
Detailed phase timings vs `main (33ea372)`
Phase Baseline Current Delta
extension.check 6.6 ms 6.9 ms +0.3 ms
project.resolve 1.4 ms 1.5 ms +0.1 ms
workspace.create 1.1 ms 1.4 ms +0.3 ms
host.prepare 270.0 ms 225.8 ms -44.2 ms
vercel.service-prefix.resolve 1.8 ms 1.7 ms -0.1 ms
nitro.create 188.8 ms 197.2 ms +8.4 ms
sandbox.prewarm 372.8 ms 295.9 ms -76.9 ms
nitro.cache.prepare 0.8 ms 0.2 ms -0.6 ms
nitro.prepare 2.0 ms 0.6 ms -1.4 ms
nitro.public-assets 1.4 ms 0.8 ms -0.6 ms
nitro.prerender 0.7 ms 0.4 ms -0.3 ms
nitro.bundle 1.36 s 1.34 s -11.0 ms
nitro.cache.write 0.3 ms 0.3 ms 0.0 ms
vercel.workflow-function.materialize 18.3 ms 18.5 ms +0.2 ms
agent-summary.emit 0.5 ms 0.5 ms 0.0 ms
nitro.close 0.1 ms 0.1 ms 0.0 ms
output.publish 2.9 ms 2.9 ms 0.0 ms
workspace.remove 1.9 ms 1.6 ms -0.3 ms

@timolins
timolins marked this pull request as ready for review July 30, 2026 13:47
@timolins
timolins requested a review from AndrewBarba July 30, 2026 20:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant