Skip to content

feat(dev): materialize immutable generations#759

Open
ctgowrie wants to merge 2 commits into
mainfrom
feat/dev-generation-artifacts
Open

feat(dev): materialize immutable generations#759
ctgowrie wants to merge 2 commits into
mainfrom
feat/dev-generation-artifacts

Conversation

@ctgowrie

@ctgowrie ctgowrie commented Jul 13, 2026

Copy link
Copy Markdown
Collaborator

Why

Development snapshots still depended on authored files and dependency links in the live workspace. Removing a tool, changing a package, or advancing away from the startup snapshot could leave retained runtime behavior or later Nitro rebuilds pointing at files that no longer existed.

What

  • Adds explicit stage, activate, and discard boundaries for development generations.
  • Bundles ordinary authored dependencies and materializes configured external closures from bundler-resolved ESM entries, including pnpm transitive links, package exports, assets, native files, and package links whose targets live outside the workspace.
  • Produces a path-independent behavior fingerprint covering authored modules, instrumentation, workspace resources, and materialized dependencies.
  • Parses actual directive prologues so comments and ordinary strings containing workflow text remain valid.
  • Keeps Nitro host inputs outside generation storage and retains activated generations until later lease-aware pruning exists.
  • Preserves the packaged-server regression by force-pruning the startup generation before a structural reload and streamed turn.

Stage boundary

This is Stage 2 stacked on #739. It does not introduce parent-owned workers, request transport, transactional watcher promotion, channel routing changes, Workflow generation selection, or reference-driven pruning.

Validation

  • Full unit tier: 446 eve files, 4,684 passed, 1 skipped; 7 catalog tests passed.
  • Full integration tier: 61 files, 438 passed.
  • Full scenario tier: 52 files, 299 passed, 15 skipped.
  • Workspace typecheck, lint, formatting, build, and invariant guard passed.

@vercel

vercel Bot commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
eve-docs Building Building Preview, Comment Jul 14, 2026 2:05pm
2 Skipped Deployments
Project Deployment Actions Updated (UTC)
eve-docs-1644 Skipped Skipped Jul 14, 2026 2:05pm
eve-docs-4759 Skipped Skipped Jul 14, 2026 2:05pm

@ctgowrie ctgowrie force-pushed the feat/dev-generation-artifacts branch from 7b4c794 to a202392 Compare July 13, 2026 23:16
@vercel vercel Bot temporarily deployed to Preview – eve-docs-1644 July 13, 2026 23:16 Inactive
@vercel vercel Bot temporarily deployed to Preview – eve-docs-4759 July 13, 2026 23:16 Inactive
@ctgowrie ctgowrie force-pushed the feat/dev-generation-artifacts branch from a202392 to 1c9ad44 Compare July 13, 2026 23:19
@vercel vercel Bot temporarily deployed to Preview – eve-docs-1644 July 13, 2026 23:19 Inactive
@vercel vercel Bot temporarily deployed to Preview – eve-docs-4759 July 13, 2026 23:19 Inactive
@vercel vercel Bot temporarily deployed to Preview – eve-docs-4759 July 14, 2026 12:25 Inactive
@vercel vercel Bot temporarily deployed to Preview – eve-docs-1644 July 14, 2026 12:25 Inactive
@ctgowrie ctgowrie force-pushed the feat/dev-generation-artifacts branch from 1a5e322 to c0c3030 Compare July 14, 2026 13:23
@ctgowrie ctgowrie force-pushed the feat/dev-generation-artifacts branch from c0c3030 to 4d02fe3 Compare July 14, 2026 13:34
@vercel vercel Bot temporarily deployed to Preview – eve-docs-1644 July 14, 2026 13:34 Inactive
@vercel vercel Bot temporarily deployed to Preview – eve-docs-4759 July 14, 2026 13:34 Inactive
Base automatically changed from fix/production-build-isolation to main July 14, 2026 14:02
ctgowrie added 2 commits July 14, 2026 10:03
Third-party dependencies inlined into a generation bundle can import
`@workflow/*` (e.g. `@ai-sdk/provider-utils` -> `@workflow/serde`). eve
vendors those packages, so leaving the import external emits a bare
specifier no materialized generation can resolve. Externalize workflow
runtime imports only for authored importers and inline them inside
bundled node_modules code.

Also exclude the channel identity plugin from generation bundles so an
immutable artifact structurally cannot read the process-global channel
cache, and split the package boundary plugins into their own module.

Signed-off-by: Casey Gowrie <[email protected]>
@ctgowrie ctgowrie force-pushed the feat/dev-generation-artifacts branch from 4d02fe3 to 9535d97 Compare July 14, 2026 14:04
@vercel vercel Bot temporarily deployed to Preview – eve-docs-1644 July 14, 2026 14:05 Inactive
@vercel vercel Bot temporarily deployed to Preview – eve-docs-4759 July 14, 2026 14:05 Inactive
@github-actions

Copy link
Copy Markdown
Contributor

Bundle + Package Summary: apps/fixtures/weather-agent

Key takeaways

  • No notable deltas vs main (6aac45d).

Delta vs main (6aac45d)

Area Metric Baseline Current Delta
Package Packed tarball 3.63 MB 3.64 MB +5.6 kB ⚠️
Package Unpacked publish size 13.17 MB 13.19 MB +21.9 kB ⚠️
Package Installed footprint 52.42 MB 52.45 MB +21.9 kB ⚠️
Package Published files 2545 2557 +12
Package Installed files 5785 5797 +12
Runtime Unique function payloads 2 2 0
Runtime Total function bytes 9.29 MB 9.29 MB +2.0 kB ⚠️
Runtime Public routes 9 9 0
Changed function payloads vs main (6aac45d) (2)
Function Status Baseline Current Delta Route changes
functions/.well-known/workflow/v1/flow.func changed 5.82 MB 5.82 MB +2.0 kB ⚠️ none
functions/__server.func changed 3.47 MB 3.47 MB -32 B ✅ none

eve init install

Metric Baseline Current Delta
Installed footprint 90.69 MB 90.71 MB +21.9 kB ⚠️
Installed packages 122 122 0
dependencies 4 4 0
devDependencies 2 2 0
Dependency package bytes 27.37 MB 27.39 MB +21.9 kB ⚠️
devDependency package bytes 5.04 MB 5.04 MB 0 B ➖
Build Metadata
  • Preset: vercel
  • Nitro: [email protected]
  • Output directory: apps/fixtures/weather-agent/.vercel/output
  • Build metadata timestamp: 2026-07-14T14:07:02.910Z
  • 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: [email protected]
  • Package directory: packages/eve
  • Tarball: 3.64 MB (eve-0.24.0.tgz)
  • Unpacked payload: 13.19 MB across 2557 published files
  • Installed footprint: 52.45 MB across 5797 installed files
  • Installed root package: 11.92 MB
  • Installed dependencies: 40.53 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: 19.13 MB (36.5%)
  • eve: 11.92 MB (22.7%)
  • ai: 6.38 MB (12.2%)
  • 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 11.4%
🟡 dist/src/compiled/@vercel/sandbox/index.js       [##......................] 632.2 kB 4.8%
🟡 dist/src/compiled/_chunks/workflow/undici-fb5... [#.......................] 502.4 kB 3.8%
🟡 dist/src/compiled/@chat-adapter/slack/index.js   [#.......................] 433.8 kB 3.3%
🟡 dist/src/compiled/_chunks/workflow/dist-CQeni... [#.......................] 277.5 kB 2.1%
🔴 Other published files                            [########################] 9.84 MB 74.6%
Installed footprint breakdown
Installed package size
🔴 @rolldown/binding-linux-x64-gnu [########################] 19.13 MB 36.5%
🔴 eve                             [###############.........] 11.92 MB 22.7%
🔴 ai                              [########................] 6.38 MB 12.2%
🔴 zod                             [######..................] 5.04 MB 9.6%
🟠 nitro                           [###.....................] 2.41 MB 4.6%
🟡 @ai-sdk/provider-utils          [#.......................] 845.4 kB 1.6%
🔴 Other installed packages        [########................] 6.73 MB 12.8%
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: 90.71 MB across 7615 installed files
  • Installed packages: 122 total (116 transitive-only)
  • dependencies: 4 direct packages totaling 27.39 MB
  • devDependencies: 2 direct packages totaling 5.04 MB
  • Other transitive package files: 58.28 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.8%)
  • @rolldown/binding-linux-x64-gnu: 19.13 MB (21.1%)
  • eve: 11.92 MB (13.1%)
  • zod: 9.00 MB (9.9%)
  • ai: 6.38 MB (7.0%)
Installed footprint breakdown
Installed package size
🔴 @typescript/typescript-linux-x64 [########################] 27.95 MB 30.8%
🔴 @rolldown/binding-linux-x64-gnu  [################........] 19.13 MB 21.1%
🔴 eve                              [##########..............] 11.92 MB 13.1%
🔴 zod                              [########................] 9.00 MB 9.9%
🔴 ai                               [#####...................] 6.38 MB 7.0%
🟠 @types/node                      [##......................] 2.54 MB 2.8%
🔴 Other installed packages         [############............] 13.80 MB 15.2%
dependencies (4)
Package Range Installed size Share
@vercel/connect 0.2.2 98.6 kB 0.1%
ai ^7.0.0 6.38 MB 7.0%
eve file:eve-0.24.0.tgz 11.92 MB 13.1%
zod 4.4.3 9.00 MB 9.9%
devDependencies (2)
Package Range Installed size Share
@types/node 24.x 2.54 MB 2.8%
typescript 7.0.2 2.50 MB 2.8%
Function Drill-Down

Payload Size Graph

Unique function payload size and share of total
🔴 functions/.well-known/workflow/v1/flow.func     [########################] 5.82 MB 62.6%
🟠 functions/__server.func                         [##############..........] 3.47 MB 37.4%

Top Function Payloads

🟠 functions/.well-known/workflow/v1/flow.func • 1 public route • 5.82 MB
Metric Value
Public routes /.well-known/workflow/v1/flow
Runtime nodejs24.x
Handler index.mjs
Payload 5.82 MB
Function files 5.82 MB across 33 files
Traced dependencies 0 B
Signal 🟠 Bundled file __eve_nitro_handler__.mjs is 2.18 MB (37.4%)

🟠 🔎 Dependency Analysis

📦 Bundled files:

Bundled file size
🟠 __eve_nitro_handler__.mjs       [########################] 2.18 MB 37.4%
🟡 _chunks/world-vercel.mjs        [#########...............] 819.1 kB 14.1%
🟡 _chunks/sandbox.mjs             [########................] 766.3 kB 13.2%
🟡 _libs/@ai-sdk/gateway+[...].mjs [#####...................] 413.6 kB 7.1%
🟡 _chunks/dist-CQenixFf.mjs       [####....................] 348.9 kB 6.0%
🟠 Other bundled files             [##############..........] 1.29 MB 22.2%

🧾 Vercel Config

{
  "handler": "index.mjs",
  "launcherType": "Nodejs",
  "shouldAddHelpers": false,
  "supportsResponseStreaming": true,
  "runtime": "nodejs24.x",
  "environment": {
    "NODE_OPTIONS": "--experimental-require-module"
  },
  "maxDuration": "max",
  "experimentalTriggers": [
    {
      "type": "queue/v2beta",
      "topic": "__eve776561746865722d6167656e74_wkf_workflow_*",
      "consumer": "default",
      "retryAfterSeconds": 5,
      "initialDelaySeconds": 0
    }
  ]
}

🟠 functions/__server.func • 8 public routes, 1 internal alias • 3.47 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.47 MB
Function files 3.47 MB across 23 files
Traced dependencies 0 B
Signal 🟠 Bundled file _chunks/runtime-artifacts.mjs is 941.9 kB (27.1%)

🟠 🔎 Dependency Analysis

📦 Bundled files:

Bundled file size
🟠 _chunks/runtime-artifacts.mjs [########################] 941.9 kB 27.1%
🟠 _chunks/world-vercel.mjs      [#####################...] 819.2 kB 23.6%
🟠 _chunks/sandbox.mjs           [####################....] 766.3 kB 22.1%
🟡 _chunks/dist-CQenixFf.mjs     [#########...............] 347.9 kB 10.0%
⚪ _libs/zod.mjs                 [###.....................] 114.2 kB 3.3%
🟡 Other bundled files           [############............] 482.4 kB 13.9%

🧾 Vercel Config

{
  "handler": "index.mjs",
  "launcherType": "Nodejs",
  "shouldAddHelpers": false,
  "supportsResponseStreaming": true,
  "runtime": "nodejs24.x"
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants