feat(eve): relay remote subagent progress on the best-effort lane#1209
Open
ruiconti wants to merge 1 commit into
Open
feat(eve): relay remote subagent progress on the best-effort lane#1209ruiconti wants to merge 1 commit into
ruiconti wants to merge 1 commit into
Conversation
) A remote callee's non-terminal progress — message.*, reasoning.*, step.* — now surfaces on the caller's stream wrapped as subagent.event. The callee forwards each progress event to the caller's :events ingestion URL (baked into the dispatch callback metadata as notifyUrl); the route appends it to the caller's durable stream via world.streams.write, with no run, no hook, and no resume. This is the whole point of the separate lane: high-frequency progress must never inflate the main run's replay journal, so it never rides resumeHook. Delivery is fire-once best-effort: a closed stream (finished session) logs and drops; nothing retries. Progress data rides loosely — it drives no state — and is allow-listed by event type, not re-validated per shape. Contrast the authorization lane (#1207), which is low-frequency control and does ride the durable resumeHook path. Adds childSessionId to SubagentChildEventStreamEvent for correlation. Known-red: that protocol addition trips the rule-36 capability-epoch ceremony (deferred); progress e2e evals are the next step. Signed-off-by: Rui Conti <ruiconti@gmail.com>
Contributor
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Contributor
Bundle + Package Summary:
|
| Area | Metric | Baseline | Current | Delta |
|---|---|---|---|---|
| Package | Packed tarball | 4.04 MB | 4.05 MB | +1.7 kB |
| Package | Unpacked publish size | 14.71 MB | 14.72 MB | +6.5 kB |
| Package | Installed footprint | 53.87 MB | 53.87 MB | +6.5 kB |
| Package | Published files | 2747 | 2751 | +4 |
| Package | Installed files | 5987 | 5991 | +4 |
| Runtime | Unique function payloads | 2 | 2 | 0 |
| Runtime | Total function bytes | 11.67 MB | 11.68 MB | +5.7 kB |
| Runtime | Public routes | 10 | 10 | 0 |
Changed function payloads vs rui/remote-authorization-durable (7806612) (2)
| Function | Status | Baseline | Current | Delta | Route changes |
|---|---|---|---|---|---|
functions/.well-known/workflow/v1/flow.func |
changed | 7.27 MB | 7.27 MB | +3.4 kB |
none |
functions/__server.func |
changed | 4.41 MB | 4.41 MB | +2.3 kB |
none |
eve init install
| Metric | Baseline | Current | Delta |
|---|---|---|---|
| Installed footprint | 92.27 MB | 92.28 MB | +6.5 kB |
| Installed packages | 122 | 122 | 0 |
| dependencies | 4 | 4 | 0 |
| devDependencies | 2 | 2 | 0 |
| Dependency package bytes | 28.99 MB | 29.00 MB | +6.5 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-25T03:04:30.959Z
- Route aliases: 10 public, 1 internal (11 total aliases)
- Vercel routes in config: 11
- Severity legend: 🔴 dominant/large, 🟠 notable, 🟡 watch, ⚪ small
Package Drill-Down
Package Details
- Package:
eve@0.27.3 - Package directory:
packages/eve - Tarball: 4.05 MB (
eve-0.27.3.tgz) - Unpacked payload: 14.72 MB across 2751 published files
- Installed footprint: 53.87 MB across 5991 installed files
- Installed root package: 13.43 MB
- Installed dependencies: 40.44 MB
- Runtime dependencies: 1
- Peer dependencies: 5 (4 optional)
Installed footprint is measured from an isolated temporary npm install of the packed tarball.
Heavy installed dependencies
@rolldown/binding-linux-x64-gnu: 18.96 MB (35.2%)eve: 13.43 MB (24.9%)ai: 6.43 MB (11.9%)zod: 5.04 MB (9.4%)nitro: 2.41 MB (4.5%)
Publish payload breakdown
Published file size
🟠 dist/src/compiled/experimental-ai-sdk-code-mo... [###.....................] 1.51 MB 10.2%
🟡 dist/src/compiled/@vercel/sandbox/index.js [#.......................] 632.4 kB 4.3%
🟡 dist/src/compiled/_chunks/workflow/undici-C2Z... [#.......................] 502.4 kB 3.4%
🟡 dist/src/compiled/@chat-adapter/slack/index.js [#.......................] 440.5 kB 3.0%
🟡 dist/src/compiled/@vercel/oidc/index.js [#.......................] 379.5 kB 2.6%
🔴 Other published files [########################] 11.26 MB 76.5%
Installed footprint breakdown
Installed package size
🔴 @rolldown/binding-linux-x64-gnu [########################] 18.96 MB 35.2%
🔴 eve [#################.......] 13.43 MB 24.9%
🔴 ai [########................] 6.43 MB 11.9%
🔴 zod [######..................] 5.04 MB 9.4%
🟠 nitro [###.....................] 2.41 MB 4.5%
🟡 @ai-sdk/provider-utils [#.......................] 852.0 kB 1.6%
🔴 Other installed packages [#########...............] 6.75 MB 12.5%
Runtime dependencies (1)
| Package | Range | Notes |
|---|---|---|
nitro |
3.0.260610-beta |
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: 92.28 MB across 7859 installed files
- Installed packages: 122 total (116 transitive-only)
- dependencies: 4 direct packages totaling 29.00 MB
- devDependencies: 2 direct packages totaling 5.04 MB
- Other transitive package files: 58.24 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 (30.3%)@rolldown/binding-linux-x64-gnu: 18.96 MB (20.5%)eve: 13.43 MB (14.6%)zod: 9.00 MB (9.8%)ai: 6.43 MB (7.0%)
Installed footprint breakdown
Installed package size
🔴 @typescript/typescript-linux-x64 [########################] 27.95 MB 30.3%
🔴 @rolldown/binding-linux-x64-gnu [################........] 18.96 MB 20.5%
🔴 eve [############............] 13.43 MB 14.6%
🔴 zod [########................] 9.00 MB 9.8%
🔴 ai [######..................] 6.43 MB 7.0%
🟠 @types/node [##......................] 2.54 MB 2.8%
🔴 Other installed packages [############............] 13.97 MB 15.1%
dependencies (4)
| Package | Range | Installed size | Share |
|---|---|---|---|
@vercel/connect |
0.4.2 |
135.8 kB | 0.1% |
ai |
^7.0.34 |
6.43 MB | 7.0% |
eve |
file:eve-0.27.3.tgz |
13.43 MB | 14.6% |
zod |
4.4.3 |
9.00 MB | 9.8% |
devDependencies (2)
| Package | Range | Installed size | Share |
|---|---|---|---|
@types/node |
24.x |
2.54 MB | 2.8% |
typescript |
7.0.2 |
2.50 MB | 2.7% |
Function Drill-Down
Payload Size Graph
Unique function payload size and share of total
🔴 functions/.well-known/workflow/v1/flow.func [########################] 7.27 MB 62.3%
🟠 functions/__server.func [###############.........] 4.41 MB 37.7%
Top Function Payloads
🟠 functions/.well-known/workflow/v1/flow.func • 1 public route • 7.27 MB
| Metric | Value |
|---|---|
| Public routes | /.well-known/workflow/v1/flow |
| Runtime | nodejs24.x |
| Handler | index.mjs |
| Payload | 7.27 MB |
| Function files | 7.27 MB across 39 files |
| Traced dependencies | 0 B |
| Signal | 🟠 Bundled file __eve_nitro_handler__.mjs is 2.71 MB (37.3%) |
🟠 🔎 Dependency Analysis
📦 Bundled files:
Bundled file size
🟠 __eve_nitro_handler__.mjs [########################] 2.71 MB 37.3%
🟡 _chunks/world-vercel.mjs [########................] 903.2 kB 12.4%
🟡 _chunks/sandbox.mjs [#######.................] 767.6 kB 10.6%
🟡 _libs/@ai-sdk/gateway+[...].mjs [####....................] 432.5 kB 5.9%
🟡 _chunks/token-util-B6qBs3-0.mjs [###.....................] 379.1 kB 5.2%
🟠 Other bundled files [##################......] 2.08 MB 28.6%
🧾 Vercel Config
{
"handler": "index.mjs",
"launcherType": "Nodejs",
"shouldAddHelpers": false,
"supportsResponseStreaming": true,
"runtime": "nodejs24.x",
"environment": {
"WORKFLOW_PRECONDITION_GUARD": "1",
"NODE_OPTIONS": "--experimental-require-module"
},
"maxDuration": "max",
"experimentalTriggers": [
{
"type": "queue/v2beta",
"topic": "__eve776561746865722d6167656e74_wkf_workflow_*",
"consumer": "default",
"retryAfterSeconds": 5,
"initialDelaySeconds": 0
}
]
}🟠 functions/__server.func • 9 public routes, 1 internal alias • 4.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 |
| Internal aliases | /__server |
| Runtime | nodejs24.x |
| Handler | index.mjs |
| Payload | 4.41 MB |
| Function files | 4.41 MB across 30 files |
| Traced dependencies | 0 B |
| Signal | 🟠 Bundled file _chunks/runtime-artifacts.mjs is 1.41 MB (32.1%) |
🟠 🔎 Dependency Analysis
📦 Bundled files:
Bundled file size
🟠 _chunks/runtime-artifacts.mjs [########################] 1.41 MB 32.1%
🟠 _chunks/world-vercel.mjs [###############.........] 900.3 kB 20.4%
🟠 _chunks/sandbox.mjs [#############...........] 767.6 kB 17.4%
🟡 _chunks/token-util-B6qBs3-0.mjs [######..................] 379.1 kB 8.6%
🟡 _chunks/dist-BX517Nmz.mjs [######..................] 348.7 kB 7.9%
🟡 Other bundled files [##########..............] 597.9 kB 13.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: 2.77 s -> 2.92 s (+151.1 ms) vs
rui/remote-authorization-durable (7806612). - Timing is informational: shared GitHub runners are too variable for a hard timing budget.
Detailed phase timings vs `rui/remote-authorization-durable (7806612)`
| Phase | Baseline | Current | Delta |
|---|---|---|---|
extension.check |
1.2 ms | 9.6 ms | +8.4 ms |
project.resolve |
0.7 ms | 1.5 ms | +0.8 ms |
workspace.create |
0.8 ms | 1.4 ms | +0.6 ms |
host.prepare |
296.9 ms | 217.8 ms | -79.1 ms |
vercel.service-prefix.resolve |
2.3 ms | 2.4 ms | +0.1 ms |
nitro.app.create |
26.0 ms | 27.6 ms | +1.6 ms |
nitro.app.cache.prepare |
0.3 ms | 0.3 ms | 0.0 ms |
nitro.app.prepare |
1.0 ms | 1.0 ms | 0.0 ms |
nitro.app.public-assets |
0.7 ms | 0.8 ms | +0.1 ms |
nitro.app.prerender |
0.6 ms | 0.6 ms | 0.0 ms |
nitro.app.bundle |
704.8 ms | 756.6 ms | +51.8 ms |
nitro.app.cache.write |
0.4 ms | 0.4 ms | 0.0 ms |
sandbox.prewarm |
301.9 ms | 444.3 ms | +142.4 ms |
nitro.flow.create |
168.4 ms | 194.7 ms | +26.3 ms |
nitro.flow.cache.prepare |
0.2 ms | 0.2 ms | 0.0 ms |
nitro.flow.prepare |
0.9 ms | 0.9 ms | 0.0 ms |
nitro.flow.public-assets |
0.2 ms | 0.2 ms | 0.0 ms |
nitro.flow.prerender |
0.0 ms | 0.0 ms | 0.0 ms |
nitro.flow.bundle |
1.06 s | 1.08 s | +13.4 ms |
nitro.flow.cache.write |
0.3 ms | 0.4 ms | +0.1 ms |
nitro.flow.close |
0.2 ms | 0.2 ms | 0.0 ms |
workflow.emit |
182.0 ms | 172.3 ms | -9.7 ms |
agent-summary.emit |
0.6 ms | 0.6 ms | 0.0 ms |
nitro.app.close |
0.1 ms | 0.1 ms | 0.0 ms |
output.publish |
9.6 ms | 3.9 ms | -5.7 ms |
workspace.remove |
5.8 ms | 5.7 ms | -0.1 ms |
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.
Implements the progress lane for #1170 — the one lane that genuinely needs to stay off the main run's replay journal. Stacked on #1207 (remote authorization, durable path).
What
A remote callee's non-terminal progress —
message.*,reasoning.*,step.*— now surfaces on the caller's stream wrapped assubagent.event::eventsingestion URL (notifyUrl, baked into the dispatch callback metadata) —session-callback-progress.ts, best-effort, swallows POST failures.:eventsbranch) validates the progress event, wraps it assubagent.event(withchildSessionId), and appends it to the caller's durable stream viaworld.streams.write— no run, no hook, no resume. Followers (TUI, clients) read it off the stream.Why this lane exists (the plain reason)
High-frequency progress must never ride
resumeHook, because every resume replays the main run's journal — and inflating that with progress deltas is exactly what the two-lane split prevents (#1205). So progress takes the best-effort append path, off the main run entirely. Contrast authorization (#1207): low-frequency control, so it does ride the durableresumeHookpath like a local subagent. Same wire envelope, opposite lanes, by frequency.This is #1204's route-direct mechanism — restored for its correct purpose. #1204 aimed it at authorization (wrong: authorization is control); here it carries progress (right).
Scope / deferred
type, not re-validated per shape) — it drives no state.childSessionIdadded toSubagentChildEventStreamEvent; this trips the rule-36 capability-epoch ceremony (deferred, known-red on the stack).Full unit suite green (5370); lint clean;
guard:invariantsred only on the deferred epoch ceremony.