feat(eve): split otel() from otelIntegration() - #1813
Draft
chadhietala wants to merge 1 commit into
Draft
Conversation
chadhietala
requested review from
AndrewBarba,
ctgowrie,
ijjk and
ruiconti
as code owners
August 7, 2026 19:20
Contributor
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
chadhietala
marked this pull request as draft
August 7, 2026 19:21
Contributor
Bundle + Package Summary:
|
| Area | Metric | Baseline | Current | Delta |
|---|---|---|---|---|
| Package | Packed tarball | 7.70 MB | 7.86 MB | +164.1 kB |
| Package | Unpacked publish size | 28.83 MB | 29.36 MB | +533.6 kB |
| Package | Installed footprint | 72.26 MB | 72.79 MB | +533.6 kB |
| Package | Published files | 3077 | 3090 | +13 |
| Package | Installed files | 6787 | 6800 | +13 |
| Runtime | Unique function payloads | 2 | 2 | 0 |
| Runtime | Total function bytes | 17.07 MB | 17.08 MB | +16.4 kB |
| Runtime | Public routes | 13 | 13 | 0 |
Changed function payloads vs instr/05-provider-contract (5da072a) (2)
| Function | Status | Baseline | Current | Delta | Route changes |
|---|---|---|---|---|---|
functions/__server.func |
changed | 8.53 MB | 8.54 MB | +8.2 kB |
none |
functions/.well-known/workflow/v1/flow.func |
changed | 8.53 MB | 8.54 MB | +8.2 kB |
none |
eve init install
| Metric | Baseline | Current | Delta |
|---|---|---|---|
| Installed footprint | 110.67 MB | 111.20 MB | +533.6 kB |
| Installed packages | 121 | 121 | 0 |
| dependencies | 4 | 4 | 0 |
| devDependencies | 2 | 2 | 0 |
| Dependency package bytes | 43.31 MB | 43.84 MB | +533.6 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-08-08T15:46:32.064Z
- Route aliases: 13 public, 1 internal (14 total aliases)
- Vercel routes in config: 16
- Severity legend: 🔴 dominant/large, 🟠 notable, 🟡 watch, ⚪ small
Package Drill-Down
Package Details
- Package:
eve@0.31.3 - Package directory:
packages/eve - Tarball: 7.86 MB (
eve-0.31.3.tgz) - Unpacked payload: 29.36 MB across 3090 published files
- Installed footprint: 72.79 MB across 6800 installed files
- Installed root package: 28.00 MB
- Installed dependencies: 44.79 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: 28.00 MB (38.5%)@rolldown/binding-linux-x64-gnu: 19.35 MB (26.6%)ai: 6.67 MB (9.2%)zod: 5.07 MB (7.0%)undici: 3.50 MB (4.8%)
Publish payload breakdown
Published file size
🔴 dist/src/compiled/shadcn-registry/index.js [################........] 9.68 MB 33.0%
🟠 dist/src/compiled/@photon-ai/chat-adapter-ime... [#####...................] 2.92 MB 10.0%
🟠 dist/src/compiled/experimental-ai-sdk-code-mo... [###.....................] 1.51 MB 5.1%
🟡 dist/src/compiled/@vercel/sandbox/index.js [#.......................] 638.9 kB 2.2%
🟡 dist/src/compiled/_chunks/workflow/undici-CUI... [#.......................] 508.8 kB 1.7%
🔴 Other published files [########################] 14.10 MB 48.0%
Installed footprint breakdown
Installed package size
🔴 eve [########################] 28.00 MB 38.5%
🔴 @rolldown/binding-linux-x64-gnu [#################.......] 19.35 MB 26.6%
🔴 ai [######..................] 6.67 MB 9.2%
🔴 zod [####....................] 5.07 MB 7.0%
🟠 undici [###.....................] 3.50 MB 4.8%
🟠 nitro [##......................] 2.41 MB 3.3%
🔴 Other installed packages [#######.................] 7.79 MB 10.7%
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: 111.20 MB across 8676 installed files
- Installed packages: 121 total (115 transitive-only)
- dependencies: 4 direct packages totaling 43.84 MB
- devDependencies: 2 direct packages totaling 5.04 MB
- Other transitive package files: 62.32 MB
Installed footprint is measured from an isolated temporary eve init my-agent using the current packed eve tarball.
Heavy installed dependencies
eve: 28.00 MB (25.2%)@typescript/typescript-linux-x64: 27.95 MB (25.1%)@rolldown/binding-linux-x64-gnu: 19.35 MB (17.4%)zod: 9.02 MB (8.1%)ai: 6.67 MB (6.0%)
Installed footprint breakdown
Installed package size
🔴 eve [########################] 28.00 MB 25.2%
🔴 @typescript/typescript-linux-x64 [########################] 27.95 MB 25.1%
🔴 @rolldown/binding-linux-x64-gnu [#################.......] 19.35 MB 17.4%
🔴 zod [########................] 9.02 MB 8.1%
🔴 ai [######..................] 6.67 MB 6.0%
🟠 undici [###.....................] 3.50 MB 3.2%
🔴 Other installed packages [##############..........] 16.71 MB 15.0%
dependencies (4)
| Package | Range | Installed size | Share |
|---|---|---|---|
@vercel/connect |
0.4.3 |
141.0 kB | 0.1% |
ai |
^7.0.38 |
6.67 MB | 6.0% |
eve |
file:eve-0.31.3.tgz |
28.00 MB | 25.2% |
zod |
4.4.3 |
9.02 MB | 8.1% |
devDependencies (2)
| Package | Range | Installed size | Share |
|---|---|---|---|
@types/node |
24.x |
2.54 MB | 2.3% |
typescript |
7.0.2 |
2.50 MB | 2.2% |
Function Drill-Down
Payload Size Graph
Unique function payload size and share of total
🔴 functions/.well-known/workflow/v1/flow.func [########################] 8.54 MB 50.0%
🔴 functions/__server.func [########################] 8.54 MB 50.0%
Top Function Payloads
🟠 functions/.well-known/workflow/v1/flow.func • 1 public route • 8.54 MB
| Metric | Value |
|---|---|
| Public routes | /.well-known/workflow/v1/flow |
| Runtime | nodejs24.x |
| Handler | index.mjs |
| Payload | 8.54 MB |
| Function files | 8.54 MB across 44 files |
| Traced dependencies | 0 B |
| Signal | 🟠 Bundled file index.mjs is 2.34 MB (27.3%) |
🟠 🔎 Dependency Analysis
📦 Bundled files:
Bundled file size
🟠 index.mjs [########################] 2.34 MB 27.3%
🟠 _chunks/runtime-artifacts.mjs [################........] 1.63 MB 19.1%
🟡 _libs/undici.mjs [##########..............] 980.5 kB 11.5%
🟡 _chunks/sandbox.mjs [########................] 777.1 kB 9.1%
🟡 _libs/@ai-sdk/gateway+[...].mjs [####....................] 432.8 kB 5.1%
🟠 Other bundled files [########################] 2.38 MB 27.9%
🧾 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 • 12 public routes, 1 internal alias • 8.54 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]/clear/eve/v1/session/[sessionId]/compact/eve/v1/session/[sessionId]/reset/eve/v1/session/[sessionId]/stream |
| Internal aliases | /__server |
| Runtime | nodejs24.x |
| Handler | index.mjs |
| Payload | 8.54 MB |
| Function files | 8.54 MB across 44 files |
| Traced dependencies | 0 B |
| Signal | 🟠 Bundled file index.mjs is 2.34 MB (27.3%) |
🟠 🔎 Dependency Analysis
📦 Bundled files:
Bundled file size
🟠 index.mjs [########################] 2.34 MB 27.3%
🟠 _chunks/runtime-artifacts.mjs [################........] 1.63 MB 19.1%
🟡 _libs/undici.mjs [##########..............] 980.5 kB 11.5%
🟡 _chunks/sandbox.mjs [########................] 777.1 kB 9.1%
🟡 _libs/@ai-sdk/gateway+[...].mjs [####....................] 432.8 kB 5.1%
🟠 Other bundled files [########################] 2.38 MB 27.9%
🧾 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.28 s -> 2.26 s (-15.7 ms) vs
instr/05-provider-contract (5da072a). - Timing is informational: shared GitHub runners are too variable for a hard timing budget.
Detailed phase timings vs `instr/05-provider-contract (5da072a)`
| Phase | Baseline | Current | Delta |
|---|---|---|---|
extension.check |
5.8 ms | 1.3 ms | -4.5 ms |
project.resolve |
6.5 ms | 0.8 ms | -5.7 ms |
workspace.create |
1.4 ms | 0.7 ms | -0.7 ms |
host.prepare |
288.0 ms | 215.5 ms | -72.5 ms |
vercel.service-prefix.resolve |
2.6 ms | 2.5 ms | -0.1 ms |
nitro.create |
221.2 ms | 247.1 ms | +25.9 ms |
sandbox.prewarm |
315.1 ms | 307.3 ms | -7.8 ms |
nitro.cache.prepare |
0.3 ms | 0.6 ms | +0.3 ms |
nitro.prepare |
0.9 ms | 1.1 ms | +0.2 ms |
nitro.public-assets |
0.8 ms | 0.9 ms | +0.1 ms |
nitro.prerender |
0.6 ms | 0.6 ms | 0.0 ms |
nitro.bundle |
1.40 s | 1.45 s | +49.9 ms |
nitro.cache.write |
0.4 ms | 0.4 ms | 0.0 ms |
vercel.workflow-function.materialize |
24.4 ms | 23.8 ms | -0.6 ms |
agent-summary.emit |
0.5 ms | 0.5 ms | 0.0 ms |
nitro.close |
0.2 ms | 0.1 ms | -0.1 ms |
output.publish |
3.5 ms | 3.6 ms | +0.1 ms |
workspace.remove |
2.4 ms | 2.4 ms | 0.0 ms |
5 tasks
chadhietala
force-pushed
the
instr/06-otel-split
branch
from
August 7, 2026 21:03
242cd3d to
5106432
Compare
chadhietala
force-pushed
the
instr/06-otel-split
branch
from
August 8, 2026 13:04
5106432 to
23fadbb
Compare
chadhietala
force-pushed
the
instr/06-otel-split
branch
from
August 8, 2026 13:14
23fadbb to
b74d946
Compare
chadhietala
force-pushed
the
instr/06-otel-split
branch
from
August 8, 2026 13:47
b74d946 to
013d967
Compare
chadhietala
force-pushed
the
instr/06-otel-split
branch
from
August 8, 2026 14:11
013d967 to
be0df14
Compare
chadhietala
force-pushed
the
instr/06-otel-split
branch
from
August 8, 2026 14:43
be0df14 to
f045890
Compare
OpenTelemetry has a singleton half and a plural half. A process has one
tracer provider, so it has one resource, one sampler, and one propagator
set; it has as many destinations as the author cares to name. Folding
both into a single `otel()` made the collision a runtime error eve had to
detect. Splitting them makes it structurally impossible: one declaration
per file, and only one file exports `otel()`.
`otelIntegration({ traceExporter })` wraps the exporter in an eve-owned
batching processor rather than taking `@opentelemetry/sdk-trace-base` as
a runtime dependency — an exporter needs one thing done for it, and the
dependency arrives with the whole SDK behind it.
The two harness consumers move onto `#harness/otel-settings.js`, a store
both layouts write, so neither the turn loop nor the channel-request
wrapper has to know which one the build used.
Signed-off-by: Chad Hietala <chadhietala@gmail.com>
chadhietala
force-pushed
the
instr/06-otel-split
branch
from
August 8, 2026 15:43
f045890 to
d83fa8a
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Related to #1595. Sixth of the instrumentation-provider stack, based on #1810 and still unreachable without
experimental.instrumentationProviders.This splits process-wide
otel()settings from pluralotelIntegration()destinations and installs the collected pipeline through the same runtime as zero-config local tracing. Local traces remain the development default, Agent Runs becomes the Vercel production default, and reserved files can narrow or disable either without causing a second global OTel registration. The runtime now drives provider and tracer-provider flush/shutdown hooks, including Vercel's automatic processor, while the eve-owned batcher exports only sampled spans, suppresses tracing during export, and keeps timed-out exporter calls serialized.Worth reviewing: narrowed Agent Runs content uses an explicit filtered request-context processor so redaction stays destination-specific; the default policy continues to use
@vercel/otel's"auto"processor.Validation
pnpm test:unit(6,110 eve tests plus workspace package suites), then the rebased top-of-stack eve unit suite (6,152 passed, 1 skipped)pnpm test:integration(618 passed)localTraces()pnpm typecheck;oxlint packages/eve/src packages/eve/testpnpm guard:invariants;pnpm docs:checkChecklist
CONTRIBUTING.mdevepackagegit commit --signoff)