Skip to content

[ai] Expose totalUsage and finishReason on DurableAgent stream result#1863

Draft
VaguelySerious wants to merge 1 commit intomainfrom
peter/durable-agent-stream-result-totalusage
Draft

[ai] Expose totalUsage and finishReason on DurableAgent stream result#1863
VaguelySerious wants to merge 1 commit intomainfrom
peter/durable-agent-stream-result-totalusage

Conversation

@VaguelySerious
Copy link
Copy Markdown
Member

@VaguelySerious VaguelySerious commented Apr 28, 2026

Summary

DurableAgentStreamResult (the awaited return of agent.stream()) is missing totalUsage and finishReason. Both fields are already computed in the runtime and passed to the onFinish callback, so the omission from the result is asymmetric and diverges from the AI SDK's GenerateTextResult/StreamTextResult which expose them directly.

This adds them to the interface and to all three return sites (early-abort, paused-tools, and the final return), reusing the existing aggregateUsage(steps) helper.

See also vercel/ai#14786

Test plan

  • New regression test in durable-agent-compat.test.ts asserts result.totalUsage and result.finishReason after a normal stream
  • Existing 187 tests still pass (188 with the new one)
  • Build passes (pnpm build in packages/ai)

🤖 Generated with Claude Code

The DurableAgentStreamResult interface omitted totalUsage and finishReason,
which were already computed and passed to the onFinish callback. This made
them unreachable for callers that await stream() directly, and diverged
from the AI SDK's GenerateTextResult/StreamTextResult shape.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@vercel
Copy link
Copy Markdown
Contributor

vercel Bot commented Apr 28, 2026

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

Project Deployment Actions Updated (UTC)
example-nextjs-workflow-turbopack Ready Ready Preview, Comment Apr 28, 2026 7:08pm
example-nextjs-workflow-webpack Ready Ready Preview, Comment Apr 28, 2026 7:08pm
example-workflow Ready Ready Preview, Comment Apr 28, 2026 7:08pm
workbench-astro-workflow Ready Ready Preview, Comment Apr 28, 2026 7:08pm
workbench-express-workflow Ready Ready Preview, Comment Apr 28, 2026 7:08pm
workbench-fastify-workflow Ready Ready Preview, Comment Apr 28, 2026 7:08pm
workbench-hono-workflow Ready Ready Preview, Comment Apr 28, 2026 7:08pm
workbench-nitro-workflow Ready Ready Preview, Comment Apr 28, 2026 7:08pm
workbench-nuxt-workflow Ready Ready Preview, Comment Apr 28, 2026 7:08pm
workbench-sveltekit-workflow Ready Ready Preview, Comment Apr 28, 2026 7:08pm
workbench-vite-workflow Ready Ready Preview, Comment Apr 28, 2026 7:08pm
workflow-docs Ready Ready Preview, Comment, Open in v0 Apr 28, 2026 7:08pm
workflow-swc-playground Ready Ready Preview, Comment Apr 28, 2026 7:08pm
workflow-web Ready Ready Preview, Comment Apr 28, 2026 7:08pm

@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented Apr 28, 2026

🦋 Changeset detected

Latest commit: 8e78f75

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@workflow/ai Minor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 28, 2026

🧪 E2E Test Results

Some tests failed

Summary

Passed Failed Skipped Total
✅ ▲ Vercel Production 978 0 67 1045
❌ 💻 Local Development 1052 2 86 1140
✅ 📦 Local Production 1054 0 86 1140
✅ 🐘 Local Postgres 1054 0 86 1140
✅ 📋 Other 267 0 18 285
Total 4405 2 343 4750

❌ Failed Tests

💻 Local Development (2 failed)

vite-stable (2 failed):

  • error handling error propagation step errors basic step error preserves message and stack trace
  • error handling error propagation step errors cross-file step error preserves message and function names in stack

Details by Category

✅ ▲ Vercel Production
App Passed Failed Skipped
✅ astro 88 0 7
✅ example 88 0 7
✅ express 88 0 7
✅ fastify 88 0 7
✅ hono 88 0 7
✅ nextjs-turbopack 93 0 2
✅ nextjs-webpack 93 0 2
✅ nitro 88 0 7
✅ nuxt 88 0 7
✅ sveltekit 88 0 7
✅ vite 88 0 7
❌ 💻 Local Development
App Passed Failed Skipped
✅ astro-stable 89 0 6
✅ express-stable 89 0 6
✅ fastify-stable 89 0 6
✅ hono-stable 89 0 6
✅ nextjs-turbopack-canary 76 0 19
✅ nextjs-turbopack-stable 95 0 0
✅ nextjs-webpack-canary 76 0 19
✅ nextjs-webpack-stable 95 0 0
✅ nitro-stable 89 0 6
✅ nuxt-stable 89 0 6
✅ sveltekit-stable 89 0 6
❌ vite-stable 87 2 6
✅ 📦 Local Production
App Passed Failed Skipped
✅ astro-stable 89 0 6
✅ express-stable 89 0 6
✅ fastify-stable 89 0 6
✅ hono-stable 89 0 6
✅ nextjs-turbopack-canary 76 0 19
✅ nextjs-turbopack-stable 95 0 0
✅ nextjs-webpack-canary 76 0 19
✅ nextjs-webpack-stable 95 0 0
✅ nitro-stable 89 0 6
✅ nuxt-stable 89 0 6
✅ sveltekit-stable 89 0 6
✅ vite-stable 89 0 6
✅ 🐘 Local Postgres
App Passed Failed Skipped
✅ astro-stable 89 0 6
✅ express-stable 89 0 6
✅ fastify-stable 89 0 6
✅ hono-stable 89 0 6
✅ nextjs-turbopack-canary 76 0 19
✅ nextjs-turbopack-stable 95 0 0
✅ nextjs-webpack-canary 76 0 19
✅ nextjs-webpack-stable 95 0 0
✅ nitro-stable 89 0 6
✅ nuxt-stable 89 0 6
✅ sveltekit-stable 89 0 6
✅ vite-stable 89 0 6
✅ 📋 Other
App Passed Failed Skipped
✅ e2e-local-dev-nest-stable 89 0 6
✅ e2e-local-postgres-nest-stable 89 0 6
✅ e2e-local-prod-nest-stable 89 0 6

📋 View full workflow run


Some E2E test jobs failed:

  • Vercel Prod: success
  • Local Dev: failure
  • Local Prod: success
  • Local Postgres: success
  • Windows: cancelled

Check the workflow run for details.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 28, 2026

📊 Benchmark Results

📈 Comparing against baseline from main branch. Green 🟢 = faster, Red 🔺 = slower.

workflow with no steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Express 0.041s (-6.8% 🟢) 1.005s (~) 0.964s 10 1.00x
💻 Local Nitro 0.044s (+1.6%) 1.005s (~) 0.961s 10 1.06x
💻 Local Next.js (Turbopack) 0.046s 1.005s 0.959s 10 1.12x
🐘 Postgres Nitro 0.057s (-40.5% 🟢) 1.011s (-3.1%) 0.954s 10 1.37x
🐘 Postgres Next.js (Turbopack) 0.059s 1.011s 0.952s 10 1.43x
🐘 Postgres Express 0.061s (+5.5% 🔺) 1.012s (~) 0.951s 10 1.48x
workflow with 1 step

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Next.js (Turbopack) 1.116s 2.005s 0.890s 10 1.00x
💻 Local Express 1.130s (~) 2.006s (~) 0.876s 10 1.01x
💻 Local Nitro 1.132s (~) 2.006s (~) 0.874s 10 1.01x
🐘 Postgres Nitro 1.143s (~) 2.010s (~) 0.867s 10 1.02x
🐘 Postgres Next.js (Turbopack) 1.144s 2.011s 0.867s 10 1.02x
🐘 Postgres Express 1.154s (+0.6%) 2.010s (~) 0.856s 10 1.03x
workflow with 10 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Next.js (Turbopack) 10.827s 11.023s 0.196s 3 1.00x
🐘 Postgres Nitro 10.871s (~) 11.024s (~) 0.153s 3 1.00x
🐘 Postgres Express 10.902s (-0.6%) 11.023s (~) 0.122s 3 1.01x
🐘 Postgres Next.js (Turbopack) 10.916s 11.019s 0.104s 3 1.01x
💻 Local Nitro 10.941s (~) 11.024s (~) 0.083s 3 1.01x
💻 Local Express 10.949s (~) 11.024s (~) 0.075s 3 1.01x
workflow with 25 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Next.js (Turbopack) 14.475s 15.023s 0.548s 4 1.00x
💻 Local Next.js (Turbopack) 14.540s 15.030s 0.490s 4 1.00x
🐘 Postgres Express 14.577s (~) 15.030s (~) 0.453s 4 1.01x
🐘 Postgres Nitro 14.608s (~) 15.031s (~) 0.423s 4 1.01x
💻 Local Nitro 14.955s (-0.7%) 15.029s (-6.2% 🟢) 0.074s 4 1.03x
💻 Local Express 15.047s (+0.5%) 15.781s (+5.0% 🔺) 0.734s 4 1.04x
workflow with 50 sequential steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Next.js (Turbopack) 13.921s 14.167s 0.246s 7 1.00x
🐘 Postgres Express 14.067s (~) 14.878s (+2.0%) 0.812s 7 1.01x
🐘 Postgres Nitro 14.150s (+1.3%) 14.880s (+4.0%) 0.730s 7 1.02x
💻 Local Next.js (Turbopack) 15.686s 16.029s 0.343s 6 1.13x
💻 Local Nitro 16.359s (-2.5%) 17.031s (~) 0.672s 6 1.18x
💻 Local Express 16.886s (+1.7%) 17.033s (~) 0.147s 6 1.21x
Promise.all with 10 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Next.js (Turbopack) 1.235s 2.010s 0.775s 15 1.00x
🐘 Postgres Nitro 1.278s (~) 2.010s (~) 0.732s 15 1.03x
🐘 Postgres Express 1.285s (+2.0%) 2.009s (~) 0.724s 15 1.04x
💻 Local Next.js (Turbopack) 1.486s 2.005s 0.520s 15 1.20x
💻 Local Nitro 1.506s (-7.7% 🟢) 2.006s (-3.3%) 0.500s 15 1.22x
💻 Local Express 1.531s (+2.8%) 2.005s (~) 0.474s 15 1.24x
Promise.all with 25 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 2.317s (-1.4%) 3.009s (~) 0.692s 10 1.00x
🐘 Postgres Next.js (Turbopack) 2.388s 3.008s 0.620s 10 1.03x
🐘 Postgres Express 2.393s (+1.4%) 3.009s (~) 0.616s 10 1.03x
💻 Local Next.js (Turbopack) 2.602s 3.008s 0.407s 10 1.12x
💻 Local Nitro 2.935s (-6.6% 🟢) 3.308s (-14.8% 🟢) 0.373s 10 1.27x
💻 Local Express 2.981s (+1.0%) 3.564s (+3.2%) 0.583s 9 1.29x
Promise.all with 50 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 3.462s (~) 4.009s (~) 0.546s 8 1.00x
🐘 Postgres Express 3.495s (~) 4.012s (~) 0.516s 8 1.01x
🐘 Postgres Next.js (Turbopack) 3.655s 4.011s 0.355s 8 1.06x
💻 Local Next.js (Turbopack) 7.057s 7.515s 0.458s 4 2.04x
💻 Local Nitro 7.324s (-12.3% 🟢) 8.018s (-11.1% 🟢) 0.694s 4 2.12x
💻 Local Express 8.498s (+1.9%) 9.022s (~) 0.523s 4 2.45x
Promise.race with 10 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Next.js (Turbopack) 1.224s 2.009s 0.785s 15 1.00x
🐘 Postgres Express 1.249s (-0.6%) 2.008s (~) 0.759s 15 1.02x
🐘 Postgres Nitro 1.256s (~) 2.009s (~) 0.753s 15 1.03x
💻 Local Next.js (Turbopack) 1.468s 2.005s 0.537s 15 1.20x
💻 Local Nitro 1.508s (-19.2% 🟢) 2.005s (-14.3% 🟢) 0.497s 15 1.23x
💻 Local Express 1.530s (-19.2% 🟢) 2.006s (-15.1% 🟢) 0.476s 15 1.25x
Promise.race with 25 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 2.357s (+0.7%) 3.008s (~) 0.651s 10 1.00x
🐘 Postgres Next.js (Turbopack) 2.434s 3.009s 0.575s 10 1.03x
🐘 Postgres Nitro 2.452s (+4.8%) 3.111s (+3.4%) 0.660s 10 1.04x
💻 Local Next.js (Turbopack) 2.699s 3.008s 0.309s 10 1.15x
💻 Local Nitro 2.817s (-8.1% 🟢) 3.007s (-22.6% 🟢) 0.190s 10 1.20x
💻 Local Express 3.109s (-0.8%) 4.009s (+6.6% 🔺) 0.900s 8 1.32x
Promise.race with 50 concurrent steps

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Express 3.484s (~) 4.012s (~) 0.528s 8 1.00x
🐘 Postgres Nitro 3.577s (+2.8%) 4.014s (~) 0.438s 8 1.03x
🐘 Postgres Next.js (Turbopack) 3.654s 4.014s 0.360s 8 1.05x
💻 Local Next.js (Turbopack) 7.383s 7.771s 0.388s 4 2.12x
💻 Local Nitro 7.775s (-15.0% 🟢) 8.273s (-17.5% 🟢) 0.498s 4 2.23x
💻 Local Express 9.062s (+3.0%) 9.521s (+2.7%) 0.460s 4 2.60x
workflow with 10 sequential data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Next.js (Turbopack) 0.790s 1.007s 0.217s 60 1.00x
🐘 Postgres Express 0.832s (-0.8%) 1.007s (-1.6%) 0.174s 60 1.05x
💻 Local Next.js (Turbopack) 0.849s 1.004s 0.155s 60 1.07x
🐘 Postgres Nitro 0.938s (+14.4% 🔺) 1.099s (+9.2% 🔺) 0.160s 55 1.19x
💻 Local Express 0.989s (~) 1.178s (+9.5% 🔺) 0.189s 52 1.25x
💻 Local Nitro 1.007s (+2.7%) 1.505s (+37.6% 🔺) 0.498s 40 1.28x
workflow with 25 sequential data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Next.js (Turbopack) 1.968s 2.228s 0.260s 41 1.00x
🐘 Postgres Express 2.011s (+1.8%) 2.580s (+14.3% 🔺) 0.569s 35 1.02x
🐘 Postgres Nitro 2.286s (+18.6% 🔺) 3.011s (+43.3% 🔺) 0.725s 30 1.16x
💻 Local Next.js (Turbopack) 2.654s 3.008s 0.353s 30 1.35x
💻 Local Nitro 3.025s (~) 3.609s (-4.0%) 0.584s 25 1.54x
💻 Local Express 3.125s (+3.6%) 3.966s (+10.6% 🔺) 0.841s 23 1.59x
workflow with 50 sequential data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Next.js (Turbopack) 4.011s 4.456s 0.445s 27 1.00x
🐘 Postgres Express 4.141s (+3.8%) 4.972s (+13.8% 🔺) 0.831s 25 1.03x
🐘 Postgres Nitro 4.578s (+11.6% 🔺) 5.054s (+9.8% 🔺) 0.476s 24 1.14x
💻 Local Next.js (Turbopack) 8.484s 9.088s 0.604s 14 2.12x
💻 Local Nitro 8.963s (-3.6%) 9.401s (-6.2% 🟢) 0.439s 13 2.23x
💻 Local Express 9.429s (+2.4%) 10.019s (~) 0.590s 12 2.35x
workflow with 10 concurrent data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Next.js (Turbopack) 0.269s 1.007s 0.737s 60 1.00x
🐘 Postgres Express 0.281s (~) 1.007s (~) 0.725s 60 1.04x
🐘 Postgres Nitro 0.306s (+8.0% 🔺) 1.008s (~) 0.702s 60 1.14x
💻 Local Next.js (Turbopack) 0.563s 1.021s 0.458s 59 2.09x
💻 Local Nitro 0.567s (-6.2% 🟢) 1.021s (~) 0.454s 59 2.10x
💻 Local Express 0.616s (+10.0% 🔺) 1.005s (~) 0.388s 60 2.29x
workflow with 25 concurrent data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Next.js (Turbopack) 0.488s 1.007s 0.518s 90 1.00x
🐘 Postgres Nitro 0.496s (~) 1.007s (~) 0.510s 90 1.02x
🐘 Postgres Express 0.497s (-2.6%) 1.006s (~) 0.509s 90 1.02x
💻 Local Nitro 2.360s (-7.0% 🟢) 3.008s (~) 0.648s 30 4.84x
💻 Local Next.js (Turbopack) 2.496s 3.008s 0.512s 30 5.11x
💻 Local Express 2.597s (+3.3%) 3.009s (~) 0.412s 30 5.32x
workflow with 50 concurrent data payload steps (10KB)

💻 Local Development

World Framework Workflow Time Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Next.js (Turbopack) 0.766s 1.007s 0.241s 120 1.00x
🐘 Postgres Nitro 0.782s (-1.0%) 1.007s (~) 0.225s 120 1.02x
🐘 Postgres Express 0.789s (-3.6%) 1.008s (-0.9%) 0.219s 120 1.03x
💻 Local Next.js (Turbopack) 10.177s 10.862s 0.684s 12 13.28x
💻 Local Nitro 10.213s (-8.7% 🟢) 10.934s (-6.3% 🟢) 0.721s 11 13.33x
💻 Local Express 11.340s (+1.3%) 12.028s (+0.7%) 0.688s 10 14.80x
Stream Benchmarks (includes TTFB metrics)
workflow with stream

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
💻 Local 🥇 Next.js (Turbopack) 0.171s 1.002s 0.010s 1.016s 0.845s 10 1.00x
🐘 Postgres Next.js (Turbopack) 0.196s 1.001s 0.001s 1.011s 0.816s 10 1.15x
💻 Local Express 0.202s (+1.4%) 1.004s (~) 0.011s (-9.1% 🟢) 1.017s (~) 0.815s 10 1.18x
💻 Local Nitro 0.205s (-4.2%) 1.004s (~) 0.010s (-20.8% 🟢) 1.016s (~) 0.811s 10 1.20x
🐘 Postgres Nitro 0.215s (+4.7%) 0.997s (~) 0.001s (-20.0% 🟢) 1.009s (~) 0.795s 10 1.26x
🐘 Postgres Express 0.223s (+8.6% 🔺) 1.000s (~) 0.001s (-18.8% 🟢) 1.010s (~) 0.788s 10 1.31x
stream pipeline with 5 transform steps (1MB)

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 0.606s (-2.9%) 1.004s (~) 0.005s (+10.7% 🔺) 1.022s (~) 0.416s 59 1.00x
🐘 Postgres Next.js (Turbopack) 0.624s 1.009s 0.004s 1.023s 0.398s 59 1.03x
🐘 Postgres Express 0.630s (~) 1.023s (+1.6%) 0.004s (+13.0% 🔺) 1.040s (+1.7%) 0.410s 58 1.04x
💻 Local Next.js (Turbopack) 0.774s 1.012s 0.010s 1.117s 0.343s 54 1.28x
💻 Local Nitro 0.853s (+1.7%) 1.011s (~) 0.011s (+21.1% 🔺) 1.117s (~) 0.264s 54 1.41x
💻 Local Express 0.855s (+13.0% 🔺) 1.012s (-1.6%) 0.010s (+1.5%) 1.116s (+7.4% 🔺) 0.261s 54 1.41x
10 parallel streams (1MB each)

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 0.920s (-5.1% 🟢) 1.067s (-14.4% 🟢) 0.000s (+28.6% 🔺) 1.079s (-14.2% 🟢) 0.159s 56 1.00x
🐘 Postgres Next.js (Turbopack) 0.920s 1.112s 0.000s 1.119s 0.199s 54 1.00x
🐘 Postgres Express 0.976s (+1.5%) 1.221s (-4.5%) 0.000s (-53.1% 🟢) 1.234s (-5.6% 🟢) 0.258s 49 1.06x
💻 Local Nitro 1.195s (-2.3%) 2.019s (~) 0.000s (+133.3% 🔺) 2.021s (~) 0.826s 30 1.30x
💻 Local Express 1.251s (+2.2%) 2.022s (~) 0.000s (-60.0% 🟢) 2.024s (~) 0.772s 30 1.36x
💻 Local Next.js (Turbopack) 1.254s 2.020s 0.000s 2.023s 0.769s 30 1.36x
fan-out fan-in 10 streams (1MB each)

💻 Local Development

World Framework Workflow Time TTFB Slurp Wall Time Overhead Samples vs Fastest
🐘 Postgres 🥇 Nitro 1.738s (-3.0%) 2.101s (-1.9%) 0.000s (-100.0% 🟢) 2.113s (-2.8%) 0.375s 29 1.00x
🐘 Postgres Express 1.752s (-1.1%) 2.141s (-1.7%) 0.000s (NaN%) 2.152s (-2.1%) 0.401s 28 1.01x
🐘 Postgres Next.js (Turbopack) 1.817s 2.107s 0.000s 2.116s 0.299s 29 1.05x
💻 Local Nitro 3.308s (-2.4%) 3.971s (-1.5%) 0.000s (-29.7% 🟢) 3.974s (-1.5%) 0.666s 16 1.90x
💻 Local Express 3.597s (+3.7%) 4.166s (+3.3%) 0.000s (-41.7% 🟢) 4.169s (+3.3%) 0.572s 15 2.07x
💻 Local Next.js (Turbopack) 4.159s 4.178s 0.000s 4.539s 0.380s 14 2.39x

Summary

Fastest Framework by World

Winner determined by most benchmark wins

World 🥇 Fastest Framework Wins
💻 Local Next.js (Turbopack) 17/21
🐘 Postgres Next.js (Turbopack) 11/21
Fastest World by Framework

Winner determined by most benchmark wins

Framework 🥇 Fastest World Wins
Express 🐘 Postgres 18/21
Next.js (Turbopack) 🐘 Postgres 17/21
Nitro 🐘 Postgres 18/21
Column Definitions
  • Workflow Time: Runtime reported by workflow (completedAt - createdAt) - primary metric
  • TTFB: Time to First Byte - time from workflow start until first stream byte received (stream benchmarks only)
  • Slurp: Time from first byte to complete stream consumption (stream benchmarks only)
  • Wall Time: Total testbench time (trigger workflow + poll for result)
  • Overhead: Testbench overhead (Wall Time - Workflow Time)
  • Samples: Number of benchmark iterations run
  • vs Fastest: How much slower compared to the fastest configuration for this benchmark

Worlds:

  • 💻 Local: In-memory filesystem world (local development)
  • 🐘 Postgres: PostgreSQL database world (local development)
  • ▲ Vercel: Vercel production/preview deployment
  • 🌐 Turso: Community world (local development)
  • 🌐 MongoDB: Community world (local development)
  • 🌐 Redis: Community world (local development)
  • 🌐 Jazz: Community world (local development)

📋 View full workflow run

@VaguelySerious
Copy link
Copy Markdown
Member Author

CI status (interim)

Two failures, both pre-existing on main — not introduced by this PR:

  1. E2E Local Dev Tests (vite - stable) — failing tests basic step error preserves message and stack trace and cross-file step error preserves message and function names in stack both fail on the most recent main run (job 73444472541) with the same assertion. Unrelated to AI SDK changes.
  2. Docs Preview Smoke Checks — Vercel API returning 403 invalidToken while polling for the preview deployment. Infra/credential issue, not code.

12 E2E Postgres jobs still pending; will check back when they complete.

@VaguelySerious
Copy link
Copy Markdown
Member Author

CI status (final)

88 pass, 5 skipping, 5 still-running benchmarks, 4 failures — none caused by this PR.

Check Status Verdict
E2E Local Dev Tests (vite - stable) fail Same 2 tests (basic step error preserves message and stack trace, cross-file step error preserves message and function names in stack) fail on the latest main run (job 73444472541). Pre-existing.
E2E Windows Tests fail (cancelled at 30m) dev.test.ts > should rebuild on imported step dependency change timed out on hot-reload polling (Failed to trigger workflow "importedStepOnlyWorkflow": 500). Same 30m20s/30m24s cancellation pattern visible on PRs #1857 and #1854 — known Windows-job timeout flake, unrelated to AI SDK changes.
Docs Preview Smoke Checks fail Vercel API 403 invalidToken while polling for the preview deployment URL. Infra/credential issue, the deployment itself succeeded.
E2E Required Check fail (3s) Aggregator that reports failure when any of the above E2E jobs fail. No independent signal.

The 5 pending Benchmark * jobs are still in progress (>30 min in) and are independent of type/contract changes in @workflow/ai.

Marking the PR as ready for review when you take a look.

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