Skip to content

refactor(eve): state the ACP cancel rule once - #1474

Draft
chadhietala wants to merge 1 commit into
mainfrom
simplify-commit-review-acp-adapter
Draft

refactor(eve): state the ACP cancel rule once#1474
chadhietala wants to merge 1 commit into
mainfrom
simplify-commit-review-acp-adapter

Conversation

@chadhietala

Copy link
Copy Markdown
Contributor

Found

  • acp/adapter.ts's ActivePrompt.protocolCancelled mirrors the prompt request's signal.aborted by hand: it is written only by onProtocolCancel, which runs only when the signal is already aborted or from its abort listener, so the two can never disagree at any of its five reads.
  • The rule those reads encode — a protocol cancel is an error, a client-side cancel is a normal stopReason — was spelled out at four exits of the prompt loop.
  • session.tools.clear() before the first send can never see a non-empty map (the finally always clears, and a concurrent prompt is rejected up front); the two "client gave no answer" exits of #requestInput are the same statement pair.

Did
Dropped the mirrored field, added one clientCancelled() closure so each exit is a single line, deleted the dead clear, and folded the declined-input pair into #declineInput. −24/+25 in one file.

Validated
All 20 ACP unit tests pass unmodified, including the four cancellation cases (already-cancelled → -32800, cancel during streaming, cancel while awaiting input). Full pnpm test:unit: 5737 pass, only the 4 pre-existing bin-bootstrap failures that also fail on clean main here. No test changed. tsc --noEmit, lint, fmt, guard:invariants clean.

`ActivePrompt.protocolCancelled` was a hand-maintained mirror of the
prompt request's own `signal.aborted`. It was written in exactly one
place — `onProtocolCancel`, which runs only when the signal is already
aborted or from that signal's `abort` listener — so the two values could
never disagree at any of its five read sites, all of which sit inside the
`try` that installs and removes the listener.

The rule those reads encode is that a protocol cancel is an error for the
caller while a client-side cancel (the client declining an input request)
is a normal `stopReason`, and it was spelled out at four exits of the
prompt loop. One `clientCancelled()` closure now states it once and each
exit is a single line.

Two smaller ones: `session.tools.clear()` before the first send could
never see a non-empty map — the `finally` always clears it and a
concurrent prompt on the same session is rejected up front — and the two
"the client gave no answer" exits of `#requestInput` were the same pair of
statements, now `#declineInput`.

Signed-off-by: Chad Hietala <chadhietala@gmail.com>
@chadhietala chadhietala added the simplify-devbox Simplification found by the automated devbox code review label Jul 31, 2026
@vercel

vercel Bot commented Jul 31, 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 31, 2026 4:35pm
eve-docs-4759 Ready Ready Preview, v0 Jul 31, 2026 4:35pm

@github-actions

Copy link
Copy Markdown
Contributor

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

Key takeaways

  • No notable deltas vs main (33a358c).

Delta vs main (33a358c)

Area Metric Baseline Current Delta
Package Packed tarball 7.58 MB 7.57 MB -2.9 kB ✅
Package Unpacked publish size 28.39 MB 28.39 MB -227 B ✅
Package Installed footprint 85.37 MB 85.37 MB -227 B ✅
Package Published files 2936 2936 0
Package Installed files 6729 6729 0
Runtime Unique function payloads 2 2 0
Runtime Total function bytes 16.91 MB 16.91 MB -40 B ✅
Runtime Public routes 11 11 0
Changed function payloads vs main (33a358c) (2)
Function Status Baseline Current Delta Route changes
functions/__server.func changed 8.45 MB 8.45 MB -20 B ✅ none
functions/.well-known/workflow/v1/flow.func changed 8.45 MB 8.45 MB -20 B ✅ none

eve init install

Metric Baseline Current Delta
Installed footprint 123.78 MB 123.78 MB -227 B ✅
Installed packages 128 128 0
dependencies 4 4 0
devDependencies 2 2 0
Dependency package bytes 42.77 MB 42.76 MB -227 B ✅
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-31T16:36:57.575Z
  • 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.29.3
  • Package directory: packages/eve
  • Tarball: 7.57 MB (eve-0.29.3.tgz)
  • Unpacked payload: 28.39 MB across 2936 published files
  • Installed footprint: 85.37 MB across 6729 installed files
  • Installed root package: 27.04 MB
  • Installed dependencies: 58.33 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.04 MB (31.7%)
  • @rolldown/binding-linux-x64-gnu: 19.28 MB (22.6%)
  • @rolldown/binding-wasm32-wasi: 10.66 MB (12.5%)
  • ai: 6.56 MB (7.7%)
  • zod: 5.07 MB (5.9%)
Publish payload breakdown
Published file size
🔴 dist/src/compiled/shadcn-registry/index.js       [#################.......] 9.68 MB 34.1%
🟠 dist/src/compiled/@photon-ai/chat-adapter-ime... [####....................] 2.42 MB 8.5%
🟠 dist/src/compiled/experimental-ai-sdk-code-mo... [###.....................] 1.51 MB 5.3%
🟡 dist/src/compiled/_chunks/node/undici-DWL_MYm... [#.......................] 502.4 kB 1.8%
🟡 dist/src/compiled/_chunks/workflow/undici-DWL... [#.......................] 502.4 kB 1.8%
🔴 Other published files                            [########################] 13.78 MB 48.5%
Installed footprint breakdown
Installed package size
🔴 eve                             [########################] 27.04 MB 31.7%
🔴 @rolldown/binding-linux-x64-gnu [#################.......] 19.28 MB 22.6%
🔴 @rolldown/binding-wasm32-wasi   [#########...............] 10.66 MB 12.5%
🔴 ai                              [######..................] 6.56 MB 7.7%
🔴 zod                             [####....................] 5.07 MB 5.9%
🟠 undici                          [###.....................] 3.50 MB 4.1%
🔴 Other installed packages        [############............] 13.26 MB 15.5%
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: 123.78 MB across 8605 installed files
  • Installed packages: 128 total (122 transitive-only)
  • dependencies: 4 direct packages totaling 42.76 MB
  • devDependencies: 2 direct packages totaling 5.04 MB
  • Other transitive package files: 75.97 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 (22.6%)
  • eve: 27.04 MB (21.8%)
  • @rolldown/binding-linux-x64-gnu: 19.28 MB (15.6%)
  • @rolldown/binding-wasm32-wasi: 10.66 MB (8.6%)
  • zod: 9.02 MB (7.3%)
Installed footprint breakdown
Installed package size
🔴 @typescript/typescript-linux-x64 [########################] 27.95 MB 22.6%
🔴 eve                              [#######################.] 27.04 MB 21.8%
🔴 @rolldown/binding-linux-x64-gnu  [#################.......] 19.28 MB 15.6%
🔴 @rolldown/binding-wasm32-wasi    [#########...............] 10.66 MB 8.6%
🔴 zod                              [########................] 9.02 MB 7.3%
🔴 ai                               [######..................] 6.56 MB 5.3%
🔴 Other installed packages         [####################....] 23.27 MB 18.8%
dependencies (4)
Package Range Installed size Share
@vercel/connect 0.4.3 141.0 kB 0.1%
ai ^7.0.38 6.56 MB 5.3%
eve file:eve-0.29.3.tgz 27.04 MB 21.8%
zod 4.4.3 9.02 MB 7.3%
devDependencies (2)
Package Range Installed size Share
@types/node 24.x 2.54 MB 2.1%
typescript 7.0.2 2.50 MB 2.0%
Function Drill-Down

Payload Size Graph

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

Top Function Payloads

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

🟠 🔎 Dependency Analysis

📦 Bundled files:

Bundled file size
🟠 index.mjs                       [#######################.] 2.31 MB 27.4%
🟠 _chunks/runtime-artifacts.mjs   [################........] 1.59 MB 18.9%
🟡 _libs/undici.mjs                [##########..............] 980.5 kB 11.6%
🟡 _chunks/sandbox.mjs             [########................] 769.0 kB 9.1%
🟡 _libs/@ai-sdk/gateway+[...].mjs [####....................] 432.8 kB 5.1%
🟠 Other bundled files             [########################] 2.37 MB 28.0%

🧾 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.45 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.45 MB
Function files 8.45 MB across 43 files
Traced dependencies 0 B
Signal 🟠 Bundled file index.mjs is 2.31 MB (27.4%)

🟠 🔎 Dependency Analysis

📦 Bundled files:

Bundled file size
🟠 index.mjs                       [#######################.] 2.31 MB 27.4%
🟠 _chunks/runtime-artifacts.mjs   [################........] 1.59 MB 18.9%
🟡 _libs/undici.mjs                [##########..............] 980.5 kB 11.6%
🟡 _chunks/sandbox.mjs             [########................] 769.0 kB 9.1%
🟡 _libs/@ai-sdk/gateway+[...].mjs [####....................] 432.8 kB 5.1%
🟠 Other bundled files             [########################] 2.36 MB 28.0%

🧾 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: 1.93 s -> 1.82 s (-114.1 ms) vs main (33a358c).
  • Timing is informational: shared GitHub runners are too variable for a hard timing budget.
Detailed phase timings vs `main (33a358c)`
Phase Baseline Current Delta
extension.check 2.4 ms 3.8 ms +1.4 ms
project.resolve 6.3 ms 2.9 ms -3.4 ms
workspace.create 6.2 ms 0.9 ms -5.3 ms
host.prepare 402.5 ms 209.1 ms -193.4 ms
vercel.service-prefix.resolve 1.4 ms 1.3 ms -0.1 ms
nitro.create 150.6 ms 145.9 ms -4.7 ms
sandbox.prewarm 264.9 ms 287.4 ms +22.5 ms
nitro.cache.prepare 0.2 ms 0.2 ms 0.0 ms
nitro.prepare 0.6 ms 0.7 ms +0.1 ms
nitro.public-assets 0.6 ms 0.5 ms -0.1 ms
nitro.prerender 0.3 ms 0.4 ms +0.1 ms
nitro.bundle 1.00 s 1.07 s +66.2 ms
nitro.cache.write 0.4 ms 0.3 ms -0.1 ms
vercel.workflow-function.materialize 86.6 ms 90.2 ms +3.6 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 3.2 ms 2.4 ms -0.8 ms
workspace.remove 1.4 ms 1.4 ms 0.0 ms

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

simplify-devbox Simplification found by the automated devbox code review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant