Skip to content

feat(eve): add dynamic workflows - #3310

Open
ruiconti wants to merge 11 commits into
mainfrom
rui/dynamic-workflows
Open

ruiconti wants to merge 11 commits into
mainfrom
rui/dynamic-workflows

Conversation

@ruiconti

@ruiconti ruiconti commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

Summary

The old experimental Workflow surface combined an authored marker helper with a second orchestration lifecycle inside the turn harness. This replaces it with a provided, root-only lowercase workflow tool that agents opt into through agent/tools/workflow.ts. Programs call only visible subagents and await their final responses; direct subagent tools remain available. This is a breaking change: experimental_workflow() and the uppercase tool identity are removed, while eve/tools/workflow now exports the replacement definition.

Behavior

Before After
Author tools/workflow.ts with experimental_workflow() to opt in. Re-export the default tool from eve/tools/workflow.
Configure the call budget through the legacy marker or agent config. Use workflow({ maxSubagents }); the default budget is 100 and the supported range is 1–128.
The turn harness owned workflow interrupts, task state, limits, and lifecycle emission. The provided tool uses the existing durable workflow-tool transport and blocks until the program returns.
The framework advertised the uppercase Workflow identity. The model receives lowercase workflow only in root sessions with at least one visible subagent.

The provided definition uses defineWorkflowTool() and adds framework-owned root-session availability and call-budget metadata. Its executor delegates through WorkflowToolContext.agent(). The program supports loops, parallel fan-out, dependent calls, and agentId continuation. Excess calls fail with WORKFLOW_SUBAGENT_LIMIT_REACHED without aborting other calls in the batch. Cancellation and child failures flow through the existing workflow-tool owner protocol.

The sandbox does not receive ordinary tools, connections, tool search or description helpers, approvals, auth helpers, human questions, or session state. Authored defineWorkflowTool tools and the Workflow SDK's experimental.workflow runtime configuration are unchanged.

The guide includes the full JavaScript body for a 200-ticket software-factory pipeline. A real-model eval asks the root model to author that workflow and uses run-specific ticket values to assert outcomes rather than source-code shape: triage and review fan out before reproduction, reproduction combines both derived keys, the workflow output matches exactly, and the final JSON matches the generated test artifact.

Validation

  • pnpm --filter eve test:unit — 799 files passed; 8,737 tests passed and 1 skipped
  • cd packages/eve && ./node_modules/.bin/vitest run --config vitest.integration.config.ts src/execution/session-limit-cancellation.integration.test.ts src/execution/turn-cancellation.integration.test.ts — 13 tests passed
  • cd packages/eve && ./node_modules/.bin/vitest run --config vitest.integration.config.ts src/internal/nitro/host/dev-host-fingerprint.integration.test.ts — 9 tests passed
  • cd packages/eve && ./node_modules/.bin/vitest run --config vitest.scenario.config.ts src/internal/nitro/host/create-application-nitro.scenario.test.ts — 20 tests passed
  • node node_modules/typescript/bin/tsc -p packages/eve/tsconfig.json --noEmit — passed
  • pnpm --filter agent-subagents typecheck and pnpm --filter agent-cancellation typecheck — fixture builds and TypeScript checks passed
  • pnpm docs:check — 89 docs validated and compiled
  • pnpm guard:invariants — passed
  • node scripts/extension-capability-contracts.mjs — passed
  • pnpm lint — passed with 0 errors and 2 existing warnings in unrelated files
  • eve eval software-factory-workflow --strict --skip-report --verbose — reached the real AI Gateway model boundary; local execution was blocked by missing AI_GATEWAY_API_KEY / VERCEL_OIDC_TOKEN, so the eval remains for CI

Checklist

  • This change was requested or approved by a maintainer
  • I ran the relevant checks from CONTRIBUTING.md
  • I added tests and documentation where relevant
  • I added a changeset if this touches the published eve package
  • DCO sign-off passes for every commit (git commit --signoff)

Signed-off-by: Rui Conti <ruiconti@gmail.com>
@vercel

vercel Bot commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

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

Project Deployment Actions Updated
eve-docs Ready Ready Preview, v0 Sep 14, 2026 9:07pm UTC
eve-docs-4759 Ready Ready Preview, v0 Sep 14, 2026 9:07pm UTC
1 Skipped Deployment
Project Deployment Actions Updated
eve-pkg Skipped Skipped v0 Sep 14, 2026 9:07pm UTC

@e0-gh-vercel-connect

Copy link
Copy Markdown
Contributor

This session has hit the input-token limit (40M) per session. This is a guardrail against defective long-running sessions. If session activity looks fine, just approve to keep going.

  1. Approve - Grant a fresh token budget
  2. Stop - Stop now

Answer by mentioning me in a reply, e.g. @e0 Approve.

Signed-off-by: Rui Conti <ruiconti@gmail.com>
Signed-off-by: Rui Conti <ruiconti@gmail.com>
Signed-off-by: Rui Conti <ruiconti@gmail.com>
Signed-off-by: Rui Conti <ruiconti@gmail.com>

# Conflicts:
#	packages/eve/extension-contracts/compatibility/dynamicTool/v34.ts
#	packages/eve/extension-contracts/compatibility/subagent/v13.ts
#	packages/eve/extension-contracts/reports/dynamicTool/v35.json
#	packages/eve/extension-contracts/reports/subagent/v14.json
Signed-off-by: Rui Conti <ruiconti@gmail.com>
@github-actions

github-actions Bot commented Sep 14, 2026

Copy link
Copy Markdown
Contributor

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

Key takeaways

  • Bundle warning: function payloads grew 18.2%.
  • Runtime delta: function payloads 20.70 MB -> 24.48 MB (+3.77 MB ⚠️); 2 changed payloads.

❌ Bundle Warning: Action Will Fail

This action will fail because the bundle warning policy was exceeded. Add the acknowledge-bundle-warning label to acknowledge the regression and allow the check to pass without regenerating this report.

Area Warning Details
Runtime Total function bytes 20.70 MB -> 24.48 MB; +3.77 MB ⚠️ (18.2%) over limit 10.0%

Delta vs main (7ad2740)

Area Metric Baseline Current Delta
Package Packed tarball 8.75 MB 8.75 MB -2.1 kB ✅
Package Unpacked publish size 32.92 MB 32.91 MB -9.7 kB ✅
Package Installed footprint 78.54 MB 78.53 MB -9.7 kB ✅
Package Published files 3989 3988 -1
Package Installed files 7911 7910 -1
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 8 8 0
Runtime Unique function payloads 2 2 0
Runtime Total function bytes 20.70 MB 24.48 MB +3.77 MB ⚠️
Runtime Public routes 18 18 0
Changed function payloads vs main (7ad2740) (2)
Function Status Baseline Current Delta Route changes
functions/__server.func changed 10.35 MB 12.24 MB +1.89 MB ⚠️ none
functions/.well-known/workflow/v1/flow.func changed 10.35 MB 12.24 MB +1.89 MB ⚠️ none

eve init install

Metric Baseline Current Delta
Installed footprint 116.63 MB 116.62 MB -9.7 kB ✅
Installed packages 113 113 0
dependencies 4 4 0
devDependencies 2 2 0
Dependency package bytes 49.17 MB 49.16 MB -9.7 kB ✅
devDependency package bytes 5.04 MB 5.04 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-14T21:08:17.747Z
  • 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.54.5
  • Package directory: packages/eve
  • Tarball: 8.75 MB (eve-0.54.5.tgz)
  • Unpacked payload: 32.91 MB across 3988 published files
  • Installed footprint: 78.53 MB across 7910 installed files
  • Installed root package: 31.48 MB
  • Installed dependencies: 47.05 MB
  • Installed package instances: 33
  • Distinct installed package names: 32
  • Installed dependency edges: 51
  • Installed optional peer edges: 8
  • Runtime dependencies: 2
  • Peer dependencies: 6 (5 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: 31.48 MB (40.1%)
  • @rolldown/binding-linux-x64-gnu: 19.31 MB (24.6%)
  • ai: 7.14 MB (9.1%)
  • zod: 6.76 MB (8.6%)
  • undici: 3.51 MB (4.5%)
Publish payload breakdown
Published file size
🔴 dist/src/compiled/shadcn-registry/index.js       [#############...........] 9.76 MB 29.6%
🟠 dist/src/compiled/@photon-ai/chat-adapter-ime... [###.....................] 2.27 MB 6.9%
🟠 dist/src/compiled/@ai-sdk/code-mode/index.js     [#.......................] 1.03 MB 3.1%
🟡 dist/src/compiled/@vercel/blob/index.js          [#.......................] 901.4 kB 2.7%
🟡 dist/src/compiled/_chunks/workflow/signal-exi... [#.......................] 514.6 kB 1.6%
🔴 Other published files                            [########################] 18.44 MB 56.0%
Installed footprint breakdown
Installed package size
🔴 eve                             [########################] 31.48 MB 40.1%
🔴 @rolldown/binding-linux-x64-gnu [###############.........] 19.31 MB 24.6%
🔴 ai                              [#####...................] 7.14 MB 9.1%
🔴 zod                             [#####...................] 6.76 MB 8.6%
🟠 undici                          [###.....................] 3.51 MB 4.5%
🟠 nitro                           [#.......................] 1.89 MB 2.4%
🔴 Other installed packages        [######..................] 8.44 MB 10.7%
Runtime dependencies (2)
Package Range Notes
nitro 3.0.260903-beta
undici 8.9.0
Peer dependencies (6)
Package Range Notes
@opentelemetry/api ^1.0.0 optional peer
ai catalog:
braintrust ^3.0.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: 116.62 MB across 9794 installed files
  • Installed packages: 113 total (107 transitive-only)
  • dependencies: 4 direct packages totaling 49.16 MB
  • devDependencies: 2 direct packages totaling 5.04 MB
  • Other transitive package files: 62.43 MB

Installed footprint is measured from an isolated temporary eve init my-agent using the current packed eve tarball.

Heavy installed dependencies

  • eve: 31.48 MB (27.0%)
  • @typescript/typescript-linux-x64: 27.95 MB (24.0%)
  • @rolldown/binding-linux-x64-gnu: 19.31 MB (16.6%)
  • zod: 10.37 MB (8.9%)
  • ai: 7.14 MB (6.1%)
Installed footprint breakdown
Installed package size
🔴 eve                              [########################] 31.48 MB 27.0%
🔴 @typescript/typescript-linux-x64 [#####################...] 27.95 MB 24.0%
🔴 @rolldown/binding-linux-x64-gnu  [###############.........] 19.31 MB 16.6%
🔴 zod                              [########................] 10.37 MB 8.9%
🔴 ai                               [#####...................] 7.14 MB 6.1%
🟠 undici                           [###.....................] 3.51 MB 3.0%
🔴 Other installed packages         [#############...........] 16.87 MB 14.5%
dependencies (4)
Package Range Installed size Share
@vercel/connect 1.0.0 167.9 kB 0.1%
ai ^7.0.93 7.14 MB 6.1%
eve file:eve-0.54.5.tgz 31.48 MB 27.0%
zod 4.5.4 10.37 MB 8.9%
devDependencies (2)
Package Range Installed size Share
@types/node 24.x 2.54 MB 2.2%
typescript 7.0.2 2.50 MB 2.1%
Function Drill-Down

Payload Size Graph

Unique function payload size and share of total
🔴 functions/.well-known/workflow/v1/flow.func     [########################] 12.24 MB 50.0%
🔴 functions/__server.func                         [########################] 12.24 MB 50.0%

Top Function Payloads

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

🟠 🔎 Dependency Analysis

📦 Bundled files:

Bundled file size
🟠 index.mjs                        [###################.....] 4.12 MB 33.7%
🟡 _libs/undici.mjs                 [#####...................] 980.8 kB 8.0%
🟡 _chunks/esm-Fqlolk7e.mjs         [###.....................] 723.3 kB 5.9%
🟡 _chunks/chatgpt-model.mjs        [###.....................] 696.6 kB 5.7%
🟡 _chunks/signal-exit-Dsy-TT0V.mjs [###.....................] 616.2 kB 5.0%
🔴 Other bundled files              [########################] 5.10 MB 41.7%

🧾 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 • 12.24 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
/eve/v1/task-input/[token]
Internal aliases /__server
Runtime nodejs24.x
Handler index.mjs
Payload 12.24 MB
Function files 12.24 MB across 115 files
Traced dependencies 0 B
Signal 🟠 Bundled file index.mjs is 4.12 MB (33.7%)

🟠 🔎 Dependency Analysis

📦 Bundled files:

Bundled file size
🟠 index.mjs                        [###################.....] 4.12 MB 33.7%
🟡 _libs/undici.mjs                 [#####...................] 980.8 kB 8.0%
🟡 _chunks/esm-Fqlolk7e.mjs         [###.....................] 723.3 kB 5.9%
🟡 _chunks/chatgpt-model.mjs        [###.....................] 696.6 kB 5.7%
🟡 _chunks/signal-exit-Dsy-TT0V.mjs [###.....................] 616.2 kB 5.0%
🔴 Other bundled files              [########################] 5.10 MB 41.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: 6.17 s -> 6.23 s (+59.1 ms) vs main (7ad2740).
  • Timing is informational: shared GitHub runners are too variable for a hard timing budget.
Detailed phase timings vs `main (7ad2740)`
Phase Baseline Current Delta
extension.check 4.3 ms 0.8 ms -3.5 ms
project.resolve 5.1 ms 0.3 ms -4.8 ms
workspace.create 3.3 ms 0.5 ms -2.8 ms
host.prepare 784.5 ms 536.2 ms -248.3 ms
vercel.service-prefix.resolve 1.8 ms 1.9 ms +0.1 ms
nitro.create 572.8 ms 755.9 ms +183.1 ms
sandbox.prewarm 318.6 ms 327.0 ms +8.4 ms
nitro.cache.prepare 0.2 ms 0.2 ms 0.0 ms
nitro.prepare 0.7 ms 0.6 ms -0.1 ms
nitro.public-assets 0.7 ms 0.7 ms 0.0 ms
nitro.prerender 0.5 ms 0.5 ms 0.0 ms
nitro.bundle 4.43 s 4.55 s +123.8 ms
nitro.cache.write 0.3 ms 0.4 ms +0.1 ms
vercel.workflow-function.materialize 45.1 ms 47.7 ms +2.6 ms
agent-summary.emit 0.7 ms 0.9 ms +0.2 ms
nitro.close 0.2 ms 0.2 ms 0.0 ms
output.publish 3.3 ms 3.6 ms +0.3 ms
workspace.remove 1.9 ms 1.8 ms -0.1 ms

Signed-off-by: Rui Conti <ruiconti@gmail.com>
Signed-off-by: Rui Conti <ruiconti@gmail.com>
Signed-off-by: Rui Conti <ruiconti@gmail.com>
Signed-off-by: Rui Conti <ruiconti@gmail.com>
Signed-off-by: Rui Conti <ruiconti@gmail.com>
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.

1 participant