Repository navigation
fix(eve): send optimistic messages without crypto.randomUUID - #5416
Conversation
Pins #5415 as an expected failure: on a plain-HTTP origin, where browsers do not expose crypto.randomUUID, SessionStore.send() throws before the message POST. Co-authored-by: ruiconti <1834568+ruiconti@users.noreply.github.com>
Browsers expose crypto.randomUUID only in secure contexts. Restore the local sequence fallback that #4855 dropped so SessionStore.send() works on plain-HTTP origins, and remove the expected-failure marker from the #5415 regression. Co-authored-by: ruiconti <1834568+ruiconti@users.noreply.github.com>
Bundle + Package Summary:
|
| Area | Metric | Baseline | Current | Delta |
|---|---|---|---|---|
| Package | Packed tarball | 7.90 MB | 7.90 MB | +2.4 kB |
| Package | Unpacked publish size | 27.57 MB | 27.58 MB | +6.8 kB |
| Package | Installed footprint | 76.02 MB | 76.03 MB | +6.8 kB |
| Package | Published files | 4366 | 4368 | +2 |
| Package | Installed files | 8363 | 8365 | +2 |
| Package | Installed package instances | 34 | 34 | 0 |
| Package | Distinct installed package names | 32 | 32 | 0 |
| Package | Installed dependency edges | 51 | 51 | 0 |
| Package | Installed optional peer edges | 17 | 17 | 0 |
| Runtime | Unique function payloads | 2 | 2 | 0 |
| Runtime | Total function bytes | 21.86 MB | 22.07 MB | +209.1 kB |
| Runtime | Public routes | 18 | 18 | 0 |
Changed function payloads vs main (a5328b4) (2)
| Function | Status | Baseline | Current | Delta | Route changes |
|---|---|---|---|---|---|
functions/__server.func |
changed | 10.93 MB | 11.04 MB | +104.6 kB |
none |
functions/.well-known/workflow/v1/flow.func |
changed | 10.93 MB | 11.04 MB | +104.6 kB |
none |
eve init install
| Metric | Baseline | Current | Delta |
|---|---|---|---|
| Installed footprint | 114.40 MB | 114.41 MB | +6.8 kB |
| Installed packages | 97 | 97 | 0 |
| dependencies | 4 | 4 | 0 |
| devDependencies | 2 | 2 | 0 |
| Dependency package bytes | 46.10 MB | 46.11 MB | +6.8 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-10-27T15:30:53.783Z
- Route aliases: 18 public, 1 internal (19 total aliases)
- Vercel routes in config: 21
- Severity legend: 🔴 dominant/large, 🟠 notable, 🟡 watch, ⚪ small
Package Drill-Down
Package Details
- Package:
eve@0.84.0 - Package directory:
packages/eve - Tarball: 7.90 MB (
eve-0.84.0.tgz) - Unpacked payload: 27.58 MB across 4368 published files
- Installed footprint: 76.03 MB across 8365 installed files
- Installed root package: 27.58 MB
- Installed dependencies: 48.45 MB
- Installed package instances: 34
- Distinct installed package names: 32
- Installed dependency edges: 51
- Installed optional peer edges: 17
- Runtime dependencies: 2
- Peer dependencies: 15 (14 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: 27.58 MB (36.3%)@rolldown/binding-linux-x64-gnu: 19.89 MB (26.2%)ai: 8.50 MB (11.2%)zod: 6.15 MB (8.1%)undici: 3.58 MB (4.7%)
Publish payload breakdown
Published file size
🟠 dist/src/compiled/shadcn-registry/index.js [#####...................] 3.85 MB 14.0%
🟠 dist/src/compiled/@photon-ai/chat-adapter-ime... [###.....................] 2.29 MB 8.3%
🟠 dist/src/compiled/run/index.js [#.......................] 1.00 MB 3.6%
🟡 dist/src/compiled/@vercel/blob/index.js [#.......................] 604.9 kB 2.2%
🟡 dist/src/compiled/_chunks/workflow/undici-D-I... [#.......................] 521.9 kB 1.9%
🔴 Other published files [########################] 19.31 MB 70.0%
Installed footprint breakdown
Installed package size
🔴 eve [########################] 27.58 MB 36.3%
🔴 @rolldown/binding-linux-x64-gnu [#################.......] 19.89 MB 26.2%
🔴 ai [#######.................] 8.50 MB 11.2%
🔴 zod [#####...................] 6.15 MB 8.1%
🟠 undici [###.....................] 3.58 MB 4.7%
🟠 nitro [##......................] 1.89 MB 2.5%
🔴 Other installed packages [#######.................] 8.44 MB 11.1%
Runtime dependencies (2)
| Package | Range | Notes |
|---|---|---|
nitro |
3.0.260903-beta |
|
undici |
8.10.2 |
Peer dependencies (15)
| Package | Range | Notes |
|---|---|---|
@linqapp/sdk |
^0.47.1 |
optional peer |
@nuxt/kit |
^4.0.0 |
optional peer |
@nuxt/schema |
^4.0.0 |
optional peer |
@opentelemetry/api |
^1.0.0 |
optional peer |
@vercel/connect |
^2.5.2 |
optional peer |
ai |
catalog: |
|
braintrust |
^3.0.0 |
optional peer |
chat |
^4.42.0 |
optional peer |
dd-trace |
^6.13.0 |
optional peer |
just-bash |
^3.6.0 |
optional peer |
next |
^16.0.0 |
optional peer |
react |
^19.0.0 |
optional peer |
svelte |
^5.0.0 |
optional peer |
vite |
^8.3.1 |
optional peer |
vue |
^3.5.0 |
optional peer |
eve init install drill-down
eve init install details
- Command:
eve init my-agent - Package manager:
npm - Installed footprint: 114.41 MB across 10282 installed files
- Installed packages: 97 total (91 transitive-only)
- dependencies: 4 direct packages totaling 46.11 MB
- devDependencies: 2 direct packages totaling 5.11 MB
- Other transitive package files: 63.19 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 (24.4%)eve: 27.58 MB (24.1%)@rolldown/binding-linux-x64-gnu: 19.89 MB (17.4%)zod: 9.76 MB (8.5%)ai: 8.50 MB (7.4%)
Installed footprint breakdown
Installed package size
🔴 @typescript/typescript-linux-x64 [########################] 27.95 MB 24.4%
🔴 eve [########################] 27.58 MB 24.1%
🔴 @rolldown/binding-linux-x64-gnu [#################.......] 19.89 MB 17.4%
🔴 zod [########................] 9.76 MB 8.5%
🔴 ai [#######.................] 8.50 MB 7.4%
🟠 undici [###.....................] 3.58 MB 3.1%
🔴 Other installed packages [###############.........] 17.16 MB 15.0%
dependencies (4)
| Package | Range | Installed size | Share |
|---|---|---|---|
@vercel/connect |
2.5.2 |
276.3 kB | 0.2% |
ai |
^7.0.137 |
8.50 MB | 7.4% |
eve |
file:eve-0.84.0.tgz |
27.58 MB | 24.1% |
zod |
4.5.4 |
9.76 MB | 8.5% |
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 [########################] 11.04 MB 50.0%
🔴 functions/__server.func [########################] 11.04 MB 50.0%
Top Function Payloads
🟠 functions/.well-known/workflow/v1/flow.func • 1 public route • 11.04 MB
| Metric | Value |
|---|---|
| Public routes | /.well-known/workflow/v1/flow |
| Runtime | nodejs24.x |
| Handler | index.mjs |
| Payload | 11.04 MB |
| Function files | 11.04 MB across 124 files |
| Traced dependencies | 0 B |
| Signal | 🟠 Bundled file _chunks/vercel.web.mjs is 2.70 MB (24.5%) |
🟠 🔎 Dependency Analysis
📦 Bundled files:
Bundled file size
🟠 _chunks/vercel.web.mjs [#############...........] 2.70 MB 24.5%
🟡 _libs/undici.mjs [#####...................] 994.5 kB 9.0%
🟡 _chunks/sandbox2.mjs [#####...................] 937.1 kB 8.5%
🟡 _chunks/compiled-artifacts-instrumentation.mjs [####....................] 730.7 kB 6.6%
🟡 _chunks/token-util-Bla5Z0G9.mjs [###.....................] 704.5 kB 6.4%
🔴 Other bundled files [########################] 4.97 MB 45.0%
🧾 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 • 17 public routes, 1 internal alias • 11.04 MB
| Metric | Value |
|---|---|
| Public routes | //.well-known/workflow/v1/webhook/[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]/descendants/stream/eve/v1/session/[sessionId]/reset/eve/v1/session/[sessionId]/stream/eve/v1/session/[sessionId]/stubs |
| Internal aliases | /__server |
| Runtime | nodejs24.x |
| Handler | index.mjs |
| Payload | 11.04 MB |
| Function files | 11.04 MB across 124 files |
| Traced dependencies | 0 B |
| Signal | 🟠 Bundled file _chunks/vercel.web.mjs is 2.70 MB (24.5%) |
🟠 🔎 Dependency Analysis
📦 Bundled files:
Bundled file size
🟠 _chunks/vercel.web.mjs [#############...........] 2.70 MB 24.5%
🟡 _libs/undici.mjs [#####...................] 994.5 kB 9.0%
🟡 _chunks/sandbox2.mjs [#####...................] 937.1 kB 8.5%
🟡 _chunks/compiled-artifacts-instrumentation.mjs [####....................] 730.7 kB 6.6%
🟡 _chunks/token-util-Bla5Z0G9.mjs [###.....................] 704.5 kB 6.4%
🔴 Other bundled files [########################] 4.97 MB 45.0%
🧾 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: 3.92 s -> 4.03 s (+118.0 ms) vs
main (a5328b4). - Timing is informational: shared GitHub runners are too variable for a hard timing budget.
Detailed phase timings vs `main (a5328b4)`
| Phase | Baseline | Current | Delta |
|---|---|---|---|
extension.check |
18.0 ms | 8.0 ms | -10.0 ms |
project.resolve |
6.0 ms | 0.4 ms | -5.6 ms |
workspace.create |
1.1 ms | 8.3 ms | +7.2 ms |
host.prepare |
669.4 ms | 621.0 ms | -48.4 ms |
vercel.service-prefix.resolve |
2.1 ms | 2.1 ms | 0.0 ms |
nitro.create |
444.4 ms | 496.2 ms | +51.8 ms |
sandbox.prewarm |
536.6 ms | 467.2 ms | -69.4 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.9 ms | 0.9 ms | 0.0 ms |
nitro.prerender |
0.5 ms | 0.5 ms | 0.0 ms |
nitro.bundle |
2.08 s | 2.27 s | +191.6 ms |
nitro.cache.write |
0.3 ms | 0.4 ms | +0.1 ms |
vercel.workflow-function.materialize |
59.0 ms | 57.4 ms | -1.6 ms |
agent-summary.emit |
0.7 ms | 0.7 ms | 0.0 ms |
connect-manifest.emit |
0.4 ms | 0.4 ms | 0.0 ms |
nitro.close |
0.1 ms | 0.1 ms | 0.0 ms |
output.publish |
3.7 ms | 3.6 ms | -0.1 ms |
workspace.remove |
3.0 ms | 3.1 ms | +0.1 ms |
AndrewBarba
left a comment
There was a problem hiding this comment.
Reviewed the combined repro and fix. The guarded randomUUID with a page-local fallback restores pre-0.84 behavior, and the test covers the non-secure context. LGTM.
Summary
Closes #5415. Browsers expose
crypto.randomUUIDonly in secure contexts, so on a plain-HTTP origin other thanlocalhosteverySessionStore.send()threw before the POST. This brokeuseEveAgentsends in React, Vue, and Svelte, for example on a dev server opened over a LAN IP. Optimistic submissions now usecrypto.randomUUID()when it exists and otherwise fall back to a page-localsubmission_<n>sequence, which is what eve did before #4855. Secure contexts still get UUIDs.The fallback id only needs to be unique within the page, because it correlates a local echo with its delivery. It restarts on each page load, which matters only if an app persists the
message.idof its own optimistic user messages.This combines the repro (#5416) and the fix (#5417) into one PR.
Validation
mainwithTypeError: crypto.randomUUID is not a functionand passes with the fix. It sends two messages with onlygetRandomValuesoncrypto, then asserts two POSTs and two distinct echoes.pnpm --filter eve exec vitest run --config vitest.unit.config.ts src/client/session-store.test.ts: 74 passed.Checklist
evepackagegit commit --signoff)