feat(eve): add parent session progress inbox - #2293
Conversation
Bundle + Package Summary:
|
| Area | Metric | Baseline | Current | Delta |
|---|---|---|---|---|
| Package | Packed tarball | 8.15 MB | 8.16 MB | +2.5 kB |
| Package | Unpacked publish size | 30.68 MB | 30.70 MB | +18.6 kB |
| Package | Installed footprint | 74.76 MB | 74.78 MB | +18.6 kB |
| Package | Published files | 3374 | 3382 | +8 |
| Package | Installed files | 7085 | 7093 | +8 |
| Package | Installed package instances | 35 | 35 | 0 |
| Package | Distinct installed package names | 34 | 34 | 0 |
| Package | Installed dependency edges | 53 | 53 | 0 |
| Package | Installed optional peer edges | 47 | 47 | 0 |
| Runtime | Unique function payloads | 2 | 2 | 0 |
| Runtime | Total function bytes | 18.10 MB | 18.12 MB | +23.3 kB |
| Runtime | Public routes | 16 | 16 | 0 |
Changed function payloads vs main (be9be27) (2)
| Function | Status | Baseline | Current | Delta | Route changes |
|---|---|---|---|---|---|
functions/__server.func |
changed | 9.05 MB | 9.06 MB | +11.7 kB |
none |
functions/.well-known/workflow/v1/flow.func |
changed | 9.05 MB | 9.06 MB | +11.7 kB |
none |
eve init install
| Metric | Baseline | Current | Delta |
|---|---|---|---|
| Installed footprint | 113.17 MB | 113.19 MB | +18.6 kB |
| Installed packages | 121 | 121 | 0 |
| dependencies | 4 | 4 | 0 |
| devDependencies | 2 | 2 | 0 |
| Dependency package bytes | 45.20 MB | 45.22 MB | +18.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-20T23:58:13.615Z
- Route aliases: 16 public, 1 internal (17 total aliases)
- Vercel routes in config: 19
- Severity legend: 🔴 dominant/large, 🟠 notable, 🟡 watch, ⚪ small
Package Drill-Down
Package Details
- Package:
eve@0.42.0 - Package directory:
packages/eve - Tarball: 8.16 MB (
eve-0.42.0.tgz) - Unpacked payload: 30.70 MB across 3382 published files
- Installed footprint: 74.78 MB across 7093 installed files
- Installed root package: 29.34 MB
- Installed dependencies: 45.44 MB
- Installed package instances: 35
- Distinct installed package names: 34
- Installed dependency edges: 53
- Installed optional peer edges: 47
- Runtime dependencies: 2
- Peer dependencies: 5 (4 optional)
Installed footprint is measured from an isolated temporary npm install of the packed tarball.
Graph metrics read only package.json files in package directories directly beneath a node_modules boundary, including nested boundaries. Each directory is one package instance; distinct names come from those manifests. Dependency edges count each unique name in dependencies or optionalDependencies per instance; optional peer edges count peerDependencies marked optional.
Heavy installed dependencies
eve: 29.34 MB (39.2%)@rolldown/binding-linux-x64-gnu: 19.91 MB (26.6%)ai: 6.71 MB (9.0%)zod: 5.07 MB (6.8%)undici: 3.50 MB (4.7%)
Publish payload breakdown
Published file size
🔴 dist/src/compiled/shadcn-registry/index.js [###############.........] 9.76 MB 31.8%
🟠 dist/src/compiled/@photon-ai/chat-adapter-ime... [####....................] 2.44 MB 8.0%
🟠 dist/src/compiled/experimental-ai-sdk-code-mo... [##......................] 1.51 MB 4.9%
🟡 dist/src/compiled/_chunks/workflow/undici-Dzn... [#.......................] 512.7 kB 1.7%
🟡 dist/src/compiled/_chunks/node/undici-CUIybhQ... [#.......................] 508.8 kB 1.7%
🔴 Other published files [########################] 15.97 MB 52.0%
Installed footprint breakdown
Installed package size
🔴 eve [########################] 29.34 MB 39.2%
🔴 @rolldown/binding-linux-x64-gnu [################........] 19.91 MB 26.6%
🔴 ai [#####...................] 6.71 MB 9.0%
🔴 zod [####....................] 5.07 MB 6.8%
🟠 undici [###.....................] 3.50 MB 4.7%
🟠 nitro [##......................] 2.41 MB 3.2%
🔴 Other installed packages [######..................] 7.84 MB 10.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: 113.19 MB across 8969 installed files
- Installed packages: 121 total (115 transitive-only)
- dependencies: 4 direct packages totaling 45.22 MB
- devDependencies: 2 direct packages totaling 5.04 MB
- Other transitive package files: 62.93 MB
Installed footprint is measured from an isolated temporary eve init my-agent using the current packed eve tarball.
Heavy installed dependencies
eve: 29.34 MB (25.9%)@typescript/typescript-linux-x64: 27.95 MB (24.7%)@rolldown/binding-linux-x64-gnu: 19.91 MB (17.6%)zod: 9.02 MB (8.0%)ai: 6.71 MB (5.9%)
Installed footprint breakdown
Installed package size
🔴 eve [########################] 29.34 MB 25.9%
🔴 @typescript/typescript-linux-x64 [#######################.] 27.95 MB 24.7%
🔴 @rolldown/binding-linux-x64-gnu [################........] 19.91 MB 17.6%
🔴 zod [#######.................] 9.02 MB 8.0%
🔴 ai [#####...................] 6.71 MB 5.9%
🟠 undici [###.....................] 3.50 MB 3.1%
🔴 Other installed packages [##############..........] 16.75 MB 14.8%
dependencies (4)
| Package | Range | Installed size | Share |
|---|---|---|---|
@vercel/connect |
0.4.3 |
141.0 kB | 0.1% |
ai |
^7.0.58 |
6.71 MB | 5.9% |
eve |
file:eve-0.42.0.tgz |
29.34 MB | 25.9% |
zod |
4.4.3 |
9.02 MB | 8.0% |
devDependencies (2)
| Package | Range | Installed size | Share |
|---|---|---|---|
@types/node |
24.x |
2.54 MB | 2.2% |
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 [########################] 9.06 MB 50.0%
🔴 functions/__server.func [########################] 9.06 MB 50.0%
Top Function Payloads
🟠 functions/.well-known/workflow/v1/flow.func • 1 public route • 9.06 MB
| Metric | Value |
|---|---|
| Public routes | /.well-known/workflow/v1/flow |
| Runtime | nodejs24.x |
| Handler | index.mjs |
| Payload | 9.06 MB |
| Function files | 9.06 MB across 50 files |
| Traced dependencies | 0 B |
| Signal | 🟠 Bundled file index.mjs is 2.02 MB (22.3%) |
🟠 🔎 Dependency Analysis
📦 Bundled files:
Bundled file size
🟠 index.mjs [#################.......] 2.02 MB 22.3%
🟠 _chunks/runtime-artifacts.mjs [###############.........] 1.80 MB 19.9%
🟡 _libs/undici.mjs [########................] 980.5 kB 10.8%
🟡 _chunks/sandbox.mjs [#######.................] 781.9 kB 8.6%
🟡 _chunks/frames-Dl2Hcma4.mjs [######..................] 678.7 kB 7.5%
🟠 Other bundled files [########################] 2.80 MB 30.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 • 15 public routes, 1 internal alias • 9.06 MB
| Metric | Value |
|---|---|
| Public routes | //eve/v1/callback/[token]/eve/v1/connections/[name]/callback/[attemptId]/[token]/eve/v1/connections/[name]/callback/[token]/eve/v1/health/eve/v1/info/eve/v1/session/eve/v1/session/[parentSessionId]/subagents/[callId]/[childSessionId]/stream/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/eve/v1/task-input/[token] |
| Internal aliases | /__server |
| Runtime | nodejs24.x |
| Handler | index.mjs |
| Payload | 9.06 MB |
| Function files | 9.06 MB across 50 files |
| Traced dependencies | 0 B |
| Signal | 🟠 Bundled file index.mjs is 2.02 MB (22.3%) |
🟠 🔎 Dependency Analysis
📦 Bundled files:
Bundled file size
🟠 index.mjs [#################.......] 2.02 MB 22.3%
🟠 _chunks/runtime-artifacts.mjs [###############.........] 1.80 MB 19.9%
🟡 _libs/undici.mjs [########................] 980.5 kB 10.8%
🟡 _chunks/sandbox.mjs [#######.................] 781.9 kB 8.6%
🟡 _chunks/frames-Dl2Hcma4.mjs [######..................] 678.7 kB 7.5%
🟠 Other bundled files [########################] 2.80 MB 30.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: 1.91 s -> 1.88 s (-35.0 ms) vs
main (be9be27). - Timing is informational: shared GitHub runners are too variable for a hard timing budget.
Detailed phase timings vs `main (be9be27)`
| Phase | Baseline | Current | Delta |
|---|---|---|---|
extension.check |
9.4 ms | 9.3 ms | -0.1 ms |
project.resolve |
0.3 ms | 0.3 ms | 0.0 ms |
workspace.create |
0.6 ms | 0.7 ms | +0.1 ms |
host.prepare |
284.7 ms | 228.7 ms | -56.0 ms |
vercel.service-prefix.resolve |
1.4 ms | 1.6 ms | +0.2 ms |
nitro.create |
185.1 ms | 186.4 ms | +1.3 ms |
sandbox.prewarm |
275.0 ms | 303.5 ms | +28.5 ms |
nitro.cache.prepare |
0.2 ms | 0.2 ms | 0.0 ms |
nitro.prepare |
1.1 ms | 0.7 ms | -0.4 ms |
nitro.public-assets |
0.6 ms | 0.6 ms | 0.0 ms |
nitro.prerender |
0.4 ms | 0.4 ms | 0.0 ms |
nitro.bundle |
1.08 s | 1.09 s | +13.5 ms |
nitro.cache.write |
0.2 ms | 0.2 ms | 0.0 ms |
vercel.workflow-function.materialize |
68.2 ms | 48.8 ms | -19.4 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 |
6.9 ms | 4.5 ms | -2.4 ms |
workspace.remove |
1.6 ms | 1.5 ms | -0.1 ms |
471f685 to
6c2654a
Compare
6c2654a to
57347e4
Compare
57347e4 to
cbf7d43
Compare
cbf7d43 to
a9b8b66
Compare
7edb7c0 to
a450f0e
Compare
a450f0e to
4235a11
Compare
c3be39b to
bf89cde
Compare
bf89cde to
63e952b
Compare
| export function encodeSessionCommandV2( | ||
| command: DeliverHookPayload | SessionCommand | SessionTimeoutHookPayload, | ||
| ): SessionInboxWireV2 { | ||
| const wire = | ||
| command.kind === "progress" | ||
| ? { ...command, version: VERSION } | ||
| : { ...encodeSessionCommandV1(command), version: VERSION }; | ||
| const parsed = sessionInboxWireV2Schema.safeParse(wire); | ||
| if (!parsed.success) { | ||
| throw new SessionInboxWireError( | ||
| `Produced a session inbox payload that does not match wire version ${VERSION}: ${formatValidationError(parsed.error)}`, | ||
| ); | ||
| } |
There was a problem hiding this comment.
If progress are not supposed to trigger a turn, why are we making changes to the inbox wire schema?
@!e0
There was a problem hiding this comment.
Because the inbox is the durable transport, not the turn trigger. The receiver decides semantics after decoding: progress is consumed by the progress handler, then returns undefined or continues waiting, so it never reaches model delivery. It still needs a wire representation to reach active or parked sessions and remain compatible with persisted v1 inbox payloads. Since v1 is a closed, versioned contract, adding progress requires v2 plus the v1 migration.
63e952b to
73d1866
Compare
73d1866 to
dcd9ca9
Compare
Signed-off-by: benpankow <ben.pankow@vercel.com>
dcd9ca9 to
ff46b2c
Compare
Summary
Related to #1673.
Today, any subagent update sent to its parent becomes model input and can start or steer another turn.
This first PR in the stack adds a separate durable session-inbox command that the session driver can observe while parked or while a model turn is active, which is not fed to the model. The inbox is transport rather than a turn trigger: the receiver consumes progress before delivery routing and continues waiting or servicing the active turn.
This PR establishes only the delivery lane, while #2294 defines the progress data that will travel through it.
Validation
Focused unit coverage demonstrates that active and parked sessions consume progress without buffering a delivery, cancelling or steering the active turn, or returning a turn instruction; observer failures are logged and isolated from session control. Real Workflow inbox coverage exercises the stable hook with concurrent batches of 10 and 100 opaque commands and verifies v1-to-v2 wire compatibility. The workflow decoder uses a dependency-free v2 contract; a local weather-agent build measures only ~19 KB of total function growth instead of pulling Zod into each workflow entrypoint.
Checklist
CONTRIBUTING.mdevepackagegit commit --signoff)No changeset or user documentation is needed because no production code sends or interprets this command yet.
Diff size
Docs — 0 files ·
+0 / -0Not applicable.
Implementation — 12 files ·
+198 / -16Most of this category is the explicit inbox v2 encoder, decoder, and v1 migration required to add a command kind without weakening compatibility with persisted workflow consumers.
Tests — 7 files ·
+200 / -5Covers both driver states, observer logging and isolation, versioned wire behavior, and concurrent delivery through the real Workflow hook.