refactor(tui): run eve dev on the shared agent store - #3880
OwenKephart wants to merge 8 commits into
Conversation
Bundle + Package Summary:
|
| Area | Metric | Baseline | Current | Delta |
|---|---|---|---|---|
| Package | Packed tarball | 8.45 MB | 8.45 MB | -4.4 kB ✅ |
| Package | Unpacked publish size | 31.04 MB | 31.01 MB | -21.1 kB ✅ |
| Package | Installed footprint | 77.43 MB | 77.40 MB | -21.1 kB ✅ |
| Package | Published files | 3908 | 3914 | +6 |
| Package | Installed files | 7887 | 7893 | +6 |
| Package | Installed package instances | 33 | 33 | 0 |
| Package | Distinct installed package names | 32 | 32 | 0 |
| Package | Installed dependency edges | 51 | 51 | 0 |
| Package | Installed optional peer edges | 9 | 9 | 0 |
| Runtime | Unique function payloads | 2 | 2 | 0 |
| Runtime | Total function bytes | 19.08 MB | 19.08 MB | -80 B ✅ |
| Runtime | Public routes | 17 | 17 | 0 |
Changed function payloads vs refactor/shared-conversation-client (3e63c13) (2)
| Function | Status | Baseline | Current | Delta | Route changes |
|---|---|---|---|---|---|
functions/__server.func |
changed | 9.54 MB | 9.54 MB | -40 B ✅ | none |
functions/.well-known/workflow/v1/flow.func |
changed | 9.54 MB | 9.54 MB | -40 B ✅ | none |
eve init install
| Metric | Baseline | Current | Delta |
|---|---|---|---|
| Installed footprint | 115.72 MB | 115.70 MB | -21.1 kB ✅ |
| Installed packages | 97 | 97 | 0 |
| dependencies | 4 | 4 | 0 |
| devDependencies | 2 | 2 | 0 |
| Dependency package bytes | 48.41 MB | 48.38 MB | -21.1 kB ✅ |
| devDependency package bytes | 5.11 MB | 5.11 MB | 0 B ➖ |
Build Metadata
- Preset:
vercel - Nitro:
nitro@3.0.260903-beta - Output directory:
apps/fixtures/weather-agent/.vercel/output - Build metadata timestamp: 2026-09-30T03:12:20.334Z
- Route aliases: 17 public, 1 internal (18 total aliases)
- Vercel routes in config: 20
- Severity legend: 🔴 dominant/large, 🟠 notable, 🟡 watch, ⚪ small
Package Drill-Down
Package Details
- Package:
eve@0.68.0 - Package directory:
packages/eve - Tarball: 8.45 MB (
eve-0.68.0.tgz) - Unpacked payload: 31.01 MB across 3914 published files
- Installed footprint: 77.40 MB across 7893 installed files
- Installed root package: 30.73 MB
- Installed dependencies: 46.68 MB
- Installed package instances: 33
- Distinct installed package names: 32
- Installed dependency edges: 51
- Installed optional peer edges: 9
- Runtime dependencies: 2
- Peer dependencies: 7 (6 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: 30.73 MB (39.7%)@rolldown/binding-linux-x64-gnu: 19.15 MB (24.7%)ai: 7.71 MB (10.0%)zod: 6.14 MB (7.9%)undici: 3.52 MB (4.5%)
Publish payload breakdown
Published file size
🔴 dist/src/compiled/shadcn-registry/index.js [##############..........] 9.70 MB 31.3%
🟠 dist/src/compiled/@photon-ai/chat-adapter-ime... [###.....................] 2.29 MB 7.4%
🟠 dist/src/compiled/@ai-sdk/code-mode/index.js [#.......................] 1.03 MB 3.3%
🟡 dist/src/compiled/@vercel/blob/index.js [#.......................] 604.9 kB 2.0%
🟡 dist/src/compiled/_chunks/workflow/signal-exi... [#.......................] 514.5 kB 1.7%
🔴 Other published files [########################] 16.88 MB 54.4%
Installed footprint breakdown
Installed package size
🔴 eve [########################] 30.73 MB 39.7%
🔴 @rolldown/binding-linux-x64-gnu [###############.........] 19.15 MB 24.7%
🔴 ai [######..................] 7.71 MB 10.0%
🔴 zod [#####...................] 6.14 MB 7.9%
🟠 undici [###.....................] 3.52 MB 4.5%
🟠 nitro [#.......................] 1.89 MB 2.4%
🔴 Other installed packages [######..................] 8.27 MB 10.7%
Runtime dependencies (2)
| Package | Range | Notes |
|---|---|---|
nitro |
3.0.260903-beta |
|
undici |
8.9.0 |
Peer dependencies (7)
| Package | Range | Notes |
|---|---|---|
@opentelemetry/api |
^1.0.0 |
optional peer |
ai |
catalog: |
|
braintrust |
^3.0.0 |
optional peer |
chat |
^4.41.0 |
optional peer |
dd-trace |
^6.13.0 |
optional peer |
just-bash |
^3.1.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: 115.70 MB across 9788 installed files
- Installed packages: 97 total (91 transitive-only)
- dependencies: 4 direct packages totaling 48.38 MB
- devDependencies: 2 direct packages totaling 5.11 MB
- Other transitive package files: 62.20 MB
Installed footprint is measured from an isolated temporary eve init my-agent using the current packed eve tarball.
Heavy installed dependencies
eve: 30.73 MB (26.6%)@typescript/typescript-linux-x64: 27.95 MB (24.2%)@rolldown/binding-linux-x64-gnu: 19.15 MB (16.5%)zod: 9.76 MB (8.4%)ai: 7.71 MB (6.7%)
Installed footprint breakdown
Installed package size
🔴 eve [########################] 30.73 MB 26.6%
🔴 @typescript/typescript-linux-x64 [######################..] 27.95 MB 24.2%
🔴 @rolldown/binding-linux-x64-gnu [###############.........] 19.15 MB 16.5%
🔴 zod [########................] 9.76 MB 8.4%
🔴 ai [######..................] 7.71 MB 6.7%
🟠 undici [###.....................] 3.52 MB 3.0%
🔴 Other installed packages [#############...........] 16.90 MB 14.6%
dependencies (4)
| Package | Range | Installed size | Share |
|---|---|---|---|
@vercel/connect |
2.2.0 |
194.7 kB | 0.2% |
ai |
^7.0.105 |
7.71 MB | 6.7% |
eve |
file:eve-0.68.0.tgz |
30.73 MB | 26.6% |
zod |
4.5.4 |
9.76 MB | 8.4% |
devDependencies (2)
| Package | Range | Installed size | Share |
|---|---|---|---|
@types/node |
24.x |
2.61 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 [########################] 9.54 MB 50.0%
🔴 functions/__server.func [########################] 9.54 MB 50.0%
Top Function Payloads
🟠 functions/.well-known/workflow/v1/flow.func • 1 public route • 9.54 MB
| Metric | Value |
|---|---|
| Public routes | /.well-known/workflow/v1/flow |
| Runtime | nodejs24.x |
| Handler | index.mjs |
| Payload | 9.54 MB |
| Function files | 9.54 MB across 111 files |
| Traced dependencies | 0 B |
| Signal | 🟠 Bundled file _chunks/vercel.web.mjs is 2.15 MB (22.5%) |
🟠 🔎 Dependency Analysis
📦 Bundled files:
Bundled file size
🟠 _chunks/vercel.web.mjs [############............] 2.15 MB 22.5%
🟡 _libs/undici.mjs [######..................] 980.8 kB 10.3%
🟡 _chunks/sandbox.mjs [#####...................] 811.4 kB 8.5%
🟡 _chunks/compiled-artifacts-instrumentation.mjs [####....................] 756.3 kB 7.9%
🟡 _chunks/signal-exit-DZKTacNU.mjs [###.....................] 616.2 kB 6.5%
🔴 Other bundled files [########################] 4.23 MB 44.3%
🧾 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 • 16 public routes, 1 internal alias • 9.54 MB
| Metric | Value |
|---|---|
| Public routes | //.well-known/workflow/v1/webhook/[token]/eve/v1/activity/[token]/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 |
| Internal aliases | /__server |
| Runtime | nodejs24.x |
| Handler | index.mjs |
| Payload | 9.54 MB |
| Function files | 9.54 MB across 111 files |
| Traced dependencies | 0 B |
| Signal | 🟠 Bundled file _chunks/vercel.web.mjs is 2.15 MB (22.5%) |
🟠 🔎 Dependency Analysis
📦 Bundled files:
Bundled file size
🟠 _chunks/vercel.web.mjs [############............] 2.15 MB 22.5%
🟡 _libs/undici.mjs [######..................] 980.8 kB 10.3%
🟡 _chunks/sandbox.mjs [#####...................] 811.4 kB 8.5%
🟡 _chunks/compiled-artifacts-instrumentation.mjs [####....................] 756.3 kB 7.9%
🟡 _chunks/signal-exit-DZKTacNU.mjs [###.....................] 616.2 kB 6.5%
🔴 Other bundled files [########################] 4.23 MB 44.3%
🧾 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: 4.39 s -> 4.41 s (+23.1 ms) vs
refactor/shared-conversation-client (3e63c13). - Timing is informational: shared GitHub runners are too variable for a hard timing budget.
Detailed phase timings vs `refactor/shared-conversation-client (3e63c13)`
| Phase | Baseline | Current | Delta |
|---|---|---|---|
extension.check |
12.3 ms | 4.1 ms | -8.2 ms |
project.resolve |
1.0 ms | 2.2 ms | +1.2 ms |
workspace.create |
1.0 ms | 0.9 ms | -0.1 ms |
host.prepare |
806.9 ms | 929.9 ms | +123.0 ms |
vercel.service-prefix.resolve |
1.9 ms | 1.8 ms | -0.1 ms |
nitro.create |
615.6 ms | 620.2 ms | +4.6 ms |
sandbox.prewarm |
337.1 ms | 303.6 ms | -33.5 ms |
nitro.cache.prepare |
0.2 ms | 0.3 ms | +0.1 ms |
nitro.prepare |
0.7 ms | 0.8 ms | +0.1 ms |
nitro.public-assets |
0.8 ms | 0.8 ms | 0.0 ms |
nitro.prerender |
0.5 ms | 0.5 ms | 0.0 ms |
nitro.bundle |
2.46 s | 2.40 s | -58.7 ms |
nitro.cache.write |
0.5 ms | 0.5 ms | 0.0 ms |
vercel.workflow-function.materialize |
54.2 ms | 54.5 ms | +0.3 ms |
agent-summary.emit |
0.7 ms | 0.7 ms | 0.0 ms |
connect-manifest.emit |
0.3 ms | 0.3 ms | 0.0 ms |
nitro.close |
0.1 ms | 0.1 ms | 0.0 ms |
output.publish |
3.6 ms | 3.7 ms | +0.1 ms |
workspace.remove |
2.8 ms | 2.8 ms | 0.0 ms |
6e442c6 to
5f61424
Compare
5f61424 to
fe947dd
Compare
5172299 to
ca2c0e9
Compare
ca2c0e9 to
c980daa
Compare
8cecbb3 to
0959fea
Compare
0959fea to
3367ccf
Compare
Signed-off-by: owenkephart <owen.kephart@vercel.com>
Signed-off-by: owenkephart <owen.kephart@vercel.com>
Signed-off-by: owenkephart <owen.kephart@vercel.com>
The requester and the "2 of 10" position took a line above the prompt's title. They now sit together at the right end of the drawer's top rule, as "subagent(color_generator) · 1 of 4", clipped with an ellipsis when the terminal is too narrow. Signed-off-by: owenkephart <owen.kephart@vercel.com>
A root approval ends the turn even while a task from the same step keeps working. The transcript treated every running row in an ended turn as interrupted, so an agent call showed "interrupted" while its approval drawer was open. A working task call now stays running until its task.settled. Signed-off-by: owenkephart <owen.kephart@vercel.com>
Signed-off-by: owenkephart <owen.kephart@vercel.com>
Whether a call's content can still arrive relies on the same rule as `agentCallTurns` and `isAgentSessionCaughtUp`: the session's k-th message came from the task's k-th call. The transcript kept its own copy of that check. It now lives with the other two as `isAgentCallContentPending`, which `eve/client` still does not export. Signed-off-by: owenkephart <owen.kephart@vercel.com>
…store main now writes a task's start and end as single lines and shows what working tasks do in a panel above the prompt (#3957), which replaced the live subagent sections this stack had kept. The store-based transcript now renders the same display: a task call becomes its start line; end lines and --subagents full rows are placed where the transcript had reached when they appeared; the panel, the Waiting for turn bar, stopped tasks, hidden task tools, preparing placeholders, and root tool labels and refusals match main. An approval or question names the task that asked as its lines do. Signed-off-by: owenkephart <owen.kephart@vercel.com>
3367ccf to
8653e02
Compare
Summary
The
eve devTUI ran its own steering stream, subagent pump, message projection, and turn ledger. It duplicated the lifecycle the web store already owns and kept drifting from web behavior. It now consumesEveAgentStorelike the framework hooks. It projects its transcript from store snapshots and keeps one persistent composer. The prompt stays open while the agent works, including turns the agent starts on its own. Slash commands run immediately. Approvals and questions open as soon as they arrive, andEscorCtrl+Ccancels the running turn.Each agent call gets its own section, which stays live until its reply arrives, and a section keeps its place above tool rows that appeared before its agent started. Tool rows are grouped by step and stay running until their task settles. The activity line names the tasks a held turn is waiting on. Each answer to an approval or question is sent as soon as it is given, and when several are open the prompt shows its place among them and the subagent or task that asked.
Removed behavior: the mid-turn message queue (and steering with queued messages), restoring the prompt after a cancel, the connection-authorization status label, and "preparing" placeholders for tool rows.
Third of four stacked PRs, on top of #3879. #3965 keeps a task call's tool part running until its task settles, which replaces this PR's working-task check.
Bugs fixed
step.completedfor one step also closed a later step's still-streaming text and reasoning.Escbefore the turn ID arrived sent an unguarded cancel and retried it for two seconds, which could cancel a later turn.Validation
pnpm typecheck,pnpm lint,pnpm fmt,pnpm guard:invariants,pnpm docs:check,git diff --checkkindchange:tscand unit tests forsrc/cli/dev/tuiandsrc/client(66 files, 1,140 passed), and their integration tests (6 files, 28 passed)node test/tui-client/run-all.mjs) against mock-model and live-model fixturesChecklist
CONTRIBUTING.mdevepackagegit commit --signoff)