Skip to content

refactor(eve): drop dead state from the local trace harness - #1464

Draft
chadhietala wants to merge 3 commits into
mainfrom
simplify-commit-review-trace-state
Draft

refactor(eve): drop dead state from the local trace harness#1464
chadhietala wants to merge 3 commits into
mainfrom
simplify-commit-review-trace-state

Conversation

@chadhietala

@chadhietala chadhietala commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Found

  • channelKind was threaded through the session-started event, the session trace state and the store deserializer with no reader anywhere and no production writer.
  • It was the only reason onTurnStarted fabricated a synthetic session.started event to open a session.
  • Parallel models/tools context maps although operation ids already encode the kind; contentAttribute re-implemented the module's own stringifyContent; two turnKey helpers with different separators.

Did
Removed the field, narrowed ensureSessionContext to the four fields it reads, merged the two maps into one, and shared one exported agentTurnStateKey. −53/+44. No span, attribute or persisted shape changes.

Validated
702 harness unit tests pass across 49 files. The only test change deletes two channelKind: "http" fixture literals whose field no longer exists. tsc --noEmit, lint, fmt, guard:invariants clean.

Four commits (#1410, #1433, #1443, #1445) landed in this cluster in quick
succession and left some state behind.

`channelKind` was threaded through the session-started event, the session
trace state, and the context-store deserializer, but nothing ever read it
and no production publisher ever set it — it was never emitted as a span
attribute. Removing it also removes the reason `onTurnStarted` had to
fabricate a whole `session.started` event to open a session: with the
field gone, `ensureSessionContext` takes only the four fields it reads.

The per-attempt execution contexts were split into parallel `models` and
`tools` maps, but operation ids already encode their kind
(`<attempt>:model:<callId>:<step>` vs `<attempt>:tool:<toolCallId>:<step>`,
built in `ai-sdk-hook-bridge.ts`), so the two maps can never collide and
`runInContext` no longer has to pick between them.

Also folds `contentAttribute`'s inline stringify into the module's own
`stringifyContent`, and shares one turn-state key helper between the two
`AgentTraceStateStore` implementations, which had drifted to different
separators — `:`, which appears inside attempt ids, and `\0`, which
cannot appear in either id.

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 5:23pm
eve-docs-4759 Ready Ready Preview, v0 Jul 31, 2026 5:23pm

@github-actions

github-actions Bot commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

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

Key takeaways

  • Package delta: install footprint 84.89 MB -> 85.37 MB (+474.2 kB ⚠️).

Delta vs main (4d755f5)

Area Metric Baseline Current Delta
Package Packed tarball 7.49 MB 7.58 MB +86.8 kB ⚠️
Package Unpacked publish size 27.92 MB 28.39 MB +474.2 kB ⚠️
Package Installed footprint 84.89 MB 85.37 MB +474.2 kB ⚠️
Package Published files 2917 2936 +19
Package Installed files 6710 6729 +19
Runtime Unique function payloads 2 2 0
Runtime Total function bytes 16.91 MB 16.91 MB -192 B ✅
Runtime Public routes 11 11 0
Changed function payloads vs main (4d755f5) (2)
Function Status Baseline Current Delta Route changes
functions/__server.func changed 8.45 MB 8.45 MB -96 B ✅ none
functions/.well-known/workflow/v1/flow.func changed 8.45 MB 8.45 MB -96 B ✅ none

eve init install

Metric Baseline Current Delta
Installed footprint 123.30 MB 123.78 MB +474.2 kB ⚠️
Installed packages 128 128 0
dependencies 4 4 0
devDependencies 2 2 0
Dependency package bytes 42.29 MB 42.76 MB +474.2 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-31T17:24:24.099Z
  • 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.58 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.94 s -> 2.02 s (+79.1 ms) vs main (4d755f5).
  • Timing is informational: shared GitHub runners are too variable for a hard timing budget.
Detailed phase timings vs `main (4d755f5)`
Phase Baseline Current Delta
extension.check 5.1 ms 7.0 ms +1.9 ms
project.resolve 0.8 ms 1.3 ms +0.5 ms
workspace.create 2.4 ms 1.2 ms -1.2 ms
host.prepare 203.7 ms 234.6 ms +30.9 ms
vercel.service-prefix.resolve 1.7 ms 1.8 ms +0.1 ms
nitro.create 196.4 ms 187.9 ms -8.5 ms
sandbox.prewarm 215.9 ms 320.9 ms +105.0 ms
nitro.cache.prepare 0.3 ms 0.2 ms -0.1 ms
nitro.prepare 1.6 ms 0.9 ms -0.7 ms
nitro.public-assets 0.7 ms 0.7 ms 0.0 ms
nitro.prerender 0.6 ms 0.4 ms -0.2 ms
nitro.bundle 1.28 s 1.23 s -48.5 ms
nitro.cache.write 0.3 ms 0.4 ms +0.1 ms
vercel.workflow-function.materialize 21.2 ms 20.9 ms -0.3 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 3.3 ms +0.1 ms
workspace.remove 1.8 ms 1.8 ms 0.0 ms

# Conflicts:
#	packages/eve/src/tracing/agent-trace-context-store.ts
The previous commit narrowed `ensureSessionContext`'s parameter, and the
interface plus its doc comment pushed the file from 699 to 702 lines —
three over the 700-line cap `file-length.test.ts` enforces, which CI
caught.

Deduping the attempt-scoped span attributes pays for it. `agent.step` and
`agent.action` each spelled out the same seven expressions — framework
name and version, the root-session fallback, session id, step attempt and
index, turn id — and now spread one `attemptScopeAttributes(scope)`
closure, keeping their own keys (`agent.name` for the step, the three
`agent.action.*` for the action). Same attribute set, same values.

The file lands at 697, two under where it started.

Signed-off-by: Chad Hietala <chadhietala@gmail.com>
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