feat(eve): trace inbound HTTP channel requests - #1419
Conversation
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Signed-off-by: Karthik Kalyanaraman <karthik.kalyanaraman@vercel.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Bundle + Package Summary:
|
| Area | Metric | Baseline | Current | Delta |
|---|---|---|---|---|
| Package | Packed tarball | 7.62 MB | 7.62 MB | -1.3 kB ✅ |
| Package | Unpacked publish size | 28.80 MB | 28.79 MB | -12.4 kB ✅ |
| Package | Installed footprint | 91.28 MB | 91.26 MB | -12.4 kB ✅ |
| Package | Published files | 2878 | 2868 | -10 |
| Package | Installed files | 6667 | 6657 | -10 |
| Runtime | Unique function payloads | 2 | 2 | 0 |
| Runtime | Total function bytes | 16.81 MB | 16.81 MB | +4.5 kB |
| Runtime | Public routes | 11 | 11 | 0 |
Changed function payloads vs main (01ed80d) (2)
| Function | Status | Baseline | Current | Delta | Route changes |
|---|---|---|---|---|---|
functions/__server.func |
changed | 8.41 MB | 8.41 MB | +2.3 kB |
none |
functions/.well-known/workflow/v1/flow.func |
changed | 8.41 MB | 8.41 MB | +2.3 kB |
none |
eve init install
| Metric | Baseline | Current | Delta |
|---|---|---|---|
| Installed footprint | 129.68 MB | 129.67 MB | -12.4 kB ✅ |
| Installed packages | 128 | 128 | 0 |
| dependencies | 4 | 4 | 0 |
| devDependencies | 2 | 2 | 0 |
| Dependency package bytes | 43.14 MB | 43.13 MB | -12.4 kB ✅ |
| devDependency package bytes | 5.04 MB | 5.04 MB | 0 B ➖ |
eve init dependency changes vs main (01ed80d)
dependencies
- Changed:
eve@file:eve-0.28.0.tgz->eve@file:eve-0.29.0.tgz
Build Metadata
- Preset:
vercel - Nitro:
nitro@3.0.260610-beta - Output directory:
apps/fixtures/weather-agent/.vercel/output - Build metadata timestamp: 2026-07-30T20:30:44.475Z
- 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.0 - Package directory:
packages/eve - Tarball: 7.62 MB (
eve-0.29.0.tgz) - Unpacked payload: 28.79 MB across 2868 published files
- Installed footprint: 91.26 MB across 6657 installed files
- Installed root package: 27.44 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.44 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.44 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 8525 installed files
- Installed packages: 128 total (122 transitive-only)
- dependencies: 4 direct packages totaling 43.13 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.44 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.44 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.29.0.tgz |
27.44 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.41 MB 50.0%
🔴 functions/__server.func [########################] 8.41 MB 50.0%
Top Function Payloads
🟠 functions/.well-known/workflow/v1/flow.func • 1 public route • 8.41 MB
| Metric | Value |
|---|---|
| Public routes | /.well-known/workflow/v1/flow |
| Runtime | nodejs24.x |
| Handler | index.mjs |
| Payload | 8.41 MB |
| Function files | 8.41 MB across 43 files |
| Traced dependencies | 0 B |
| Signal | 🟠 Bundled file index.mjs is 2.31 MB (27.5%) |
🟠 🔎 Dependency Analysis
📦 Bundled files:
Bundled file size
🟠 index.mjs [########################] 2.31 MB 27.5%
🟠 _chunks/runtime-artifacts.mjs [################........] 1.59 MB 19.0%
🟡 _libs/undici.mjs [##########..............] 980.5 kB 11.7%
🟡 _chunks/sandbox.mjs [########................] 768.8 kB 9.1%
🟡 _libs/@ai-sdk/gateway+[...].mjs [####....................] 432.8 kB 5.1%
🟠 Other bundled files [########################] 2.32 MB 27.6%
🧾 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.41 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.41 MB |
| Function files | 8.41 MB across 43 files |
| Traced dependencies | 0 B |
| Signal | 🟠 Bundled file index.mjs is 2.31 MB (27.5%) |
🟠 🔎 Dependency Analysis
📦 Bundled files:
Bundled file size
🟠 index.mjs [########################] 2.31 MB 27.5%
🟠 _chunks/runtime-artifacts.mjs [################........] 1.59 MB 19.0%
🟡 _libs/undici.mjs [##########..............] 980.5 kB 11.7%
🟡 _chunks/sandbox.mjs [########................] 768.8 kB 9.1%
🟡 _libs/@ai-sdk/gateway+[...].mjs [####....................] 432.8 kB 5.1%
🟠 Other bundled files [########################] 2.32 MB 27.6%
🧾 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.66 s -> 2.10 s (+442.8 ms) vs
main (01ed80d). - Timing is informational: shared GitHub runners are too variable for a hard timing budget.
Detailed phase timings vs `main (01ed80d)`
| Phase | Baseline | Current | Delta |
|---|---|---|---|
extension.check |
0.9 ms | 9.1 ms | +8.2 ms |
project.resolve |
0.5 ms | 3.4 ms | +2.9 ms |
workspace.create |
0.6 ms | 1.0 ms | +0.4 ms |
host.prepare |
123.3 ms | 130.4 ms | +7.1 ms |
vercel.service-prefix.resolve |
1.4 ms | 1.4 ms | 0.0 ms |
nitro.create |
169.9 ms | 150.8 ms | -19.1 ms |
sandbox.prewarm |
234.7 ms | 718.5 ms | +483.8 ms |
nitro.cache.prepare |
0.2 ms | 0.2 ms | 0.0 ms |
nitro.prepare |
0.7 ms | 0.6 ms | -0.1 ms |
nitro.public-assets |
0.6 ms | 0.6 ms | 0.0 ms |
nitro.prerender |
0.3 ms | 0.4 ms | +0.1 ms |
nitro.bundle |
1.03 s | 1.03 s | -5.3 ms |
nitro.cache.write |
0.3 ms | 0.2 ms | -0.1 ms |
vercel.workflow-function.materialize |
84.0 ms | 30.3 ms | -53.7 ms |
agent-summary.emit |
0.4 ms | 0.4 ms | 0.0 ms |
nitro.close |
0.1 ms | 0.1 ms | 0.0 ms |
output.publish |
2.5 ms | 20.9 ms | +18.4 ms |
workspace.remove |
1.4 ms | 1.4 ms | 0.0 ms |
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Signed-off-by: Karthik Kalyanaraman <karthik.kalyanaraman@vercel.com>
Lets authored instrumentation suppress the inbound channel-request
SERVER span via defineInstrumentation({ traceChannelRequests: false }),
following the recordInputs/recordOutputs pattern. Defaults to true.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: Karthik Kalyanaraman <karthik.kalyanaraman@vercel.com>
Behaviorless authored channels keep adapter kind "http", so the request span reported "http" where the rest of the trace reports channel:<name>. Derive eve.channel.kind via getChannelInstrumentationKind, falling back to the adapter kind. Addresses PR review feedback. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Signed-off-by: Karthik Kalyanaraman <karthik.kalyanaraman@vercel.com>
| input: TraceChannelRequestInput, | ||
| handler: (span: Span | undefined) => Promise<T>, | ||
| ): Promise<T> { | ||
| if (getInstrumentationConfig()?.traceChannelRequests === false) { |
There was a problem hiding this comment.
as discussed lets change default to no channel tracing
| if (getInstrumentationConfig()?.traceChannelRequests === false) { | |
| if (getInstrumentationConfig()?.traceChannelRequests !== true) { |
There was a problem hiding this comment.
Done in 76c0648 — traceChannelRequests now defaults to false (!== true gate), so request spans are emitted only when explicitly enabled. Updated the prop doc, guide, and changeset to frame it as opt-in, and reworked the tests so the tracing suites enable the flag and a new suite asserts no span when it's unset or explicitly false.
AndrewBarba
left a comment
There was a problem hiding this comment.
LGTM with one nit on default
Flip traceChannelRequests to default false so the inbound SERVER span is
emitted only when explicitly enabled via
defineInstrumentation({ traceChannelRequests: true }). Updates docs,
changeset, and tests accordingly.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: Karthik Kalyanaraman <karthik.kalyanaraman@vercel.com>
What changed: Wrap every inbound HTTP channel request in one OTel
SERVERspan, named for the route, respecting an incomingtraceparentand parenting nested channel/Workflow spans. Records only low-cardinality, non-sensitive attributes.Why: Close the tracing gap so channel requests appear as a single root span in Datadog/Braintrust, correlated with downstream
hook.resumeand outgoing HTTP spans.🤖 Generated with Claude Code