feat(eve): tag workflows with channel request ids#215
Open
ruiconti wants to merge 1 commit into
Open
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Contributor
Bundle + Package Summary:
|
| Area | Metric | Baseline | Current | Delta |
|---|---|---|---|---|
| Package | Packed tarball | 3.39 MB | 3.39 MB | +138 B |
| Package | Unpacked publish size | 12.35 MB | 12.35 MB | +2.0 kB |
| Package | Installed footprint | 52.56 MB | 52.56 MB | +2.0 kB |
| Package | Published files | 2280 | 2280 | 0 |
| Package | Installed files | 5485 | 5485 | 0 |
| Runtime | Unique function payloads | 2 | 2 | 0 |
| Runtime | Total function bytes | 9.35 MB | 9.37 MB | +26.3 kB |
| Runtime | Public routes | 9 | 9 | 0 |
Changed function payloads vs main (69aba4f) (2)
| Function | Status | Baseline | Current | Delta | Route changes |
|---|---|---|---|---|---|
functions/.well-known/workflow/v1/flow.func |
changed | 5.48 MB | 5.51 MB | +25.7 kB |
none |
functions/__server.func |
changed | 3.87 MB | 3.87 MB | +613 B |
none |
Build Metadata
- Preset:
vercel - Nitro:
nitro@3.0.260610-beta - Output directory:
apps/fixtures/weather-agent/.vercel/output - Build metadata timestamp: 2026-06-23T20:28:56.278Z
- Route aliases: 9 public, 1 internal (10 total aliases)
- Vercel routes in config: 10
- Severity legend: 🔴 dominant/large, 🟠 notable, 🟡 watch, ⚪ small
Package Drill-Down
Package Details
- Package:
eve@0.13.2 - Package directory:
packages/eve - Tarball: 3.39 MB (
eve-0.13.2.tgz) - Unpacked payload: 12.35 MB across 2280 published files
- Installed footprint: 52.56 MB across 5485 installed files
- Installed root package: 11.08 MB
- Installed dependencies: 41.48 MB
- Runtime dependencies: 1
- Peer dependencies: 12 (11 optional)
Installed footprint is measured from an isolated temporary npm install of the packed tarball.
Heavy installed dependencies
@rolldown/binding-linux-x64-gnu: 20.61 MB (39.2%)eve: 11.08 MB (21.1%)ai: 6.20 MB (11.8%)zod: 5.04 MB (9.6%)nitro: 2.41 MB (4.6%)
Publish payload breakdown
Published file size
🟠 dist/src/compiled/experimental-ai-sdk-code-mo... [####....................] 1.51 MB 12.2%
🟡 dist/src/compiled/@workflow/core/runtime.js [##......................] 775.4 kB 6.3%
🟡 dist/src/compiled/@vercel/sandbox/index.js [##......................] 632.0 kB 5.1%
🟡 dist/src/compiled/@chat-adapter/slack/index.js [#.......................] 438.4 kB 3.5%
🟡 dist/src/compiled/_chunks/workflow/attribute-... [#.......................] 370.9 kB 3.0%
🔴 Other published files [########################] 8.63 MB 69.9%
Installed footprint breakdown
Installed package size
🔴 @rolldown/binding-linux-x64-gnu [########################] 20.61 MB 39.2%
🔴 eve [#############...........] 11.08 MB 21.1%
🔴 ai [#######.................] 6.20 MB 11.8%
🔴 zod [######..................] 5.04 MB 9.6%
🟠 nitro [###.....................] 2.41 MB 4.6%
🟡 rolldown [#.......................] 771.0 kB 1.5%
🔴 Other installed packages [########................] 6.46 MB 12.3%
Runtime dependencies (1)
| Package | Range | Notes |
|---|---|---|
nitro |
3.0.260610-beta |
Peer dependencies (12)
| Package | Range | Notes |
|---|---|---|
@opentelemetry/api |
^1.0.0 |
optional peer |
@sveltejs/kit |
^2.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 |
next |
^16.0.0 |
optional peer |
nuxt |
^4.0.0 |
optional peer |
react |
^19.0.0 |
optional peer |
svelte |
^5.0.0 |
optional peer |
vite |
^8.0.0 |
optional peer |
vue |
^3.5.0 |
optional peer |
Function Drill-Down
Payload Size Graph
Unique function payload size and share of total
🔴 functions/.well-known/workflow/v1/flow.func [########################] 5.51 MB 58.7%
🔴 functions/__server.func [#################.......] 3.87 MB 41.3%
Top Function Payloads
🟠 functions/.well-known/workflow/v1/flow.func • 1 public route • 5.51 MB
| Metric | Value |
|---|---|
| Public routes | /.well-known/workflow/v1/flow |
| Runtime | nodejs24.x |
| Handler | index.mjs |
| Payload | 5.51 MB |
| Function files | 5.51 MB across 27 files |
| Traced dependencies | 0 B |
| Signal | 🟠 Bundled file __eve_nitro_handler__.mjs is 1.54 MB (27.9%) |
🟠 🔎 Dependency Analysis
📦 Bundled files:
Bundled file size
🟠 __eve_nitro_handler__.mjs [########################] 1.54 MB 27.9%
🟠 _chunks/runtime.mjs [###############.........] 958.4 kB 17.4%
🟡 _chunks/sandbox.mjs [############............] 766.0 kB 13.9%
🟡 _chunks/attribute-changes-Bi5DLT8S.mjs [#######.................] 472.2 kB 8.6%
🟡 _chunks/dist-DTchiX0N.mjs [#######.................] 460.6 kB 8.4%
🟠 Other bundled files [#####################...] 1.31 MB 23.8%
🧾 Vercel Config
{
"handler": "index.mjs",
"launcherType": "Nodejs",
"shouldAddHelpers": false,
"supportsResponseStreaming": true,
"runtime": "nodejs24.x",
"environment": {
"NODE_OPTIONS": "--experimental-require-module",
"WORKFLOW_QUEUE_NAMESPACE": "eve"
},
"maxDuration": "max",
"experimentalTriggers": [
{
"type": "queue/v2beta",
"topic": "__eve_wkf_workflow_*",
"consumer": "default",
"retryAfterSeconds": 5,
"initialDelaySeconds": 0
}
]
}🟠 functions/__server.func • 8 public routes, 1 internal alias • 3.87 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]/stream |
| Internal aliases | /__server |
| Runtime | nodejs24.x |
| Handler | index.mjs |
| Payload | 3.87 MB |
| Function files | 3.87 MB across 21 files |
| Traced dependencies | 0 B |
| Signal | 🟠 Bundled file index.mjs is 1.40 MB (36.3%) |
🟠 🔎 Dependency Analysis
📦 Bundled files:
Bundled file size
🟠 index.mjs [########################] 1.40 MB 36.3%
🟠 _chunks/runtime.mjs [###############.........] 875.8 kB 22.6%
🟠 _chunks/sandbox.mjs [#############...........] 766.0 kB 19.8%
🟡 _chunks/attribute-changes-Bi5DLT8S.mjs [########................] 448.5 kB 11.6%
⚪ _libs/zod.mjs [##......................] 114.2 kB 3.0%
🟡 Other bundled files [####....................] 258.8 kB 6.7%
🧾 Vercel Config
{
"handler": "index.mjs",
"launcherType": "Nodejs",
"shouldAddHelpers": false,
"supportsResponseStreaming": true,
"runtime": "nodejs24.x"
}Inbound Vercel channel requests carry `x-vercel-id`, but eve was not recording it on workflow rows, so a platform request could not be joined to the session and turn runs it created. Thread that header through the channel route path as `requestId`: `send`, route-agent `run`, and route-agent `deliver` pass it into the runtime, the workflow runtime serializes it as `eve.channelRequestId`, and session, subagent, and turn rows emit `$eve.channel_request_id`. When the header is absent, eve does not synthesize a replacement. Ported from vercel/ash#1004. Three adaptations for this repo: the run test stubs `VERCEL_ENV=production` because latest-deployment routing is gated on it here; the changeset is `patch` (additive optional fields only) per the pre-1.0 convention rather than `minor`; and because workflow-entry.ts was already at the 700-line cap, the two deliver payloads stay inline and the file is temporarily allowlisted with a TODO to extract the deliver-routing helpers. Signed-off-by: Rui Conti <ruiconti@gmail.com>
f9d8ca4 to
ed8e632
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.
Inbound Vercel requests carry
x-vercel-id, but we never wrote it to workflow rows. When a platform request opened a session or resumed a turn, there was no way to join that workflow run back to the request that caused it. This records the id as a workflow attribute.What
x-vercel-idoff the inbound channel route and thread it throughsend,run, anddeliverasrequestId.eve.channelRequestId.$eve.channel_request_idon session, subagent, and turn rows.Route → runtime
channel-dispatch.tsreads the header once per request and builds a route agent that injectsrequestIdintodeliver/run. It spreads into a fresh input each call, so a frozen caller input is never mutated.createSendFntakes the id as ametadata.requestIdargument.Context
New
ChannelRequestIdKey.buildRunContextsets it fromRunInput.requestId, soruncarries it into the serialized context the driver starts with.deliverputs it on the resume hook payload, so a resumed turn picks it up too.Attributes
readChannelRequestIdreads the slot and drops empty or non-string values. The session, subagent, and turn attribute builders emit$eve.channel_request_idfrom it —undefinedwhen the run didn't start from an inbound route, like a schedule.Doesn't touch
Driver hook timing, rekey, cross-channel receive, subagent callback routing. No behavior change beyond the new attribute.
Ported from ash#1004, with three changes for this repo
runtest stubsVERCEL_ENV=production. Latest-deployment routing is gated on it here (shouldRouteToLatestDeployment), so without the stub the run pins to the current deployment and thedeploymentId: "latest"assertion fails.patch, notminor. The change only adds optional fields and new exports, so nothing breaks — a patch under the pre-1.0 rule.workflow-entry.tswas already sitting at the 700-line cap, so the two newrequestIdfields tip it over. The two deliver payloads stay inline (no extraconsts) and the file gets a temporary allowlist entry with a TODO to extract the deliver-routing helpers (routeDeliverForChildren,waitForNextDeliver).