Skip to content

request insights: add agent diagnosis access (4/5)#93977

Merged
timneutkens merged 6 commits into
canaryfrom
request-insights/agent-diagnosis
Jul 13, 2026
Merged

request insights: add agent diagnosis access (4/5)#93977
timneutkens merged 6 commits into
canaryfrom
request-insights/agent-diagnosis

Conversation

@feedthejim

Copy link
Copy Markdown
Contributor

What

Adds next experimental-diagnose and an MCP get_request_insights tool so agents and local users can inspect Request Insights without opening the DevTools overlay.

Stack:

  1. request insights: record local framework spans (1/5)
  2. request insights: derive request history and fetch data (2/5)
  3. request insights: expose dev snapshots to tools and HMR (3/5)
  4. request insights: add agent diagnosis access (4/5) ← current
  5. request insights: add DevTools request panel (5/5)

Review Focus

  • CLI error handling and raw JSON output.
  • MCP gating when Request Insights is unavailable.
  • Telemetry registration for the new MCP tool name.

Proof In This PR

  • pnpm jest packages/next/src/telemetry/events/mcp-telemetry.test.ts --runInBand
  • pnpm --filter=next types
  • Stack-tip smoke verifies next experimental-diagnose --url http://localhost:3003 --json against a real dev server.

Deferred Coverage

  • A more curated agent summary format is intentionally deferred until the raw private snapshot contract settles.

@github-actions

github-actions Bot commented May 20, 2026

Copy link
Copy Markdown
Contributor

Tests Passed

Commit: 50e5170

@feedthejim feedthejim force-pushed the request-insights/dev-transport branch from e53de89 to 1dccd5b Compare May 21, 2026 03:09
@feedthejim feedthejim force-pushed the request-insights/agent-diagnosis branch from 7659478 to 78cf1c5 Compare May 21, 2026 03:09
@feedthejim feedthejim force-pushed the request-insights/dev-transport branch from 1dccd5b to 2a5628a Compare May 21, 2026 03:40
@feedthejim feedthejim force-pushed the request-insights/agent-diagnosis branch from 78cf1c5 to a7fd9eb Compare May 21, 2026 03:40
@timneutkens timneutkens force-pushed the request-insights/dev-transport branch from 2a5628a to 8f12af2 Compare June 18, 2026 18:10
@timneutkens timneutkens force-pushed the request-insights/agent-diagnosis branch from a7fd9eb to 353bd2d Compare June 18, 2026 18:10
@github-actions

github-actions Bot commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

Stats from current PR

🔴 1 regression, 3 improvements

Metric Canary PR Change Trend
node_modules Size 516 MB 516 MB 🔴 +68 kB (+0%) █████
Webpack Build Time (cached) 27.479s 26.536s 🟢 943ms (-3%) █▁▁▂▁
Webpack Cold (First Request) 3.593s 3.477s 🟢 116ms (-3%) █▁▁▁▂
Webpack Warm (First Request) 3.691s 3.557s 🟢 134ms (-4%) █▁▁▁▂
📊 All Metrics
📖 Metrics Glossary

Dev Server Metrics:

  • Listen = TCP port starts accepting connections
  • First Request = HTTP server returns successful response
  • Cold = Fresh build (no cache)
  • Warm = With cached build artifacts

Build Metrics:

  • Fresh = Clean build (no .next directory)
  • Cached = With existing .next directory

Change Thresholds:

  • Time: Changes < 50ms AND < 10%, OR < 2% are insignificant
  • Size: Changes < 1KB AND < 1% are insignificant
  • All other changes are flagged to catch regressions

⚡ Dev Server

Metric Canary PR Change Trend
Cold (Listen) 812ms 813ms █▂▂▂▁
Cold (Ready in log) 778ms 779ms █▁▁▁▁
Cold (First Request) 1.296s 1.294s █▁▂▂▁
Warm (Listen) 812ms 813ms ▇▂▂▂▁
Warm (Ready in log) 783ms 777ms █▁▂▂▁
Warm (First Request) 1.295s 1.291s █▁▁▂▁
📦 Dev Server (Webpack) (Legacy)

📦 Dev Server (Webpack)

Metric Canary PR Change Trend
Cold (Listen) 814ms 814ms █▁▂▂▁
Cold (Ready in log) 819ms 802ms █▁▁▁▁
Cold (First Request) 3.593s 3.477s 🟢 116ms (-3%) █▁▁▁▂
Warm (Listen) 863ms 814ms █▁▂▂▂
Warm (Ready in log) 826ms 802ms █▁▁▁▂
Warm (First Request) 3.691s 3.557s 🟢 134ms (-4%) █▁▁▁▂

⚡ Production Builds

Metric Canary PR Change Trend
Fresh Build 5.121s 5.049s █▁▂▃▁
Cached Build 5.204s 5.221s █▁▃▃▁
📦 Production Builds (Webpack) (Legacy)

📦 Production Builds (Webpack)

Metric Canary PR Change Trend
Fresh Build 26.516s 26.352s █▁▁▂▁
Cached Build 27.479s 26.536s 🟢 943ms (-3%) █▁▁▂▁
node_modules Size 516 MB 516 MB 🔴 +68 kB (+0%) █████
📦 Bundle Sizes

Bundle Sizes

⚡ Turbopack

Client

Main Bundles
Canary PR Change
03gmyxr7dukvs.js gzip 10.3 kB N/A -
040t1q17lo593.js gzip 8.77 kB N/A -
0bb0vtp8dwsez.js gzip 450 B N/A -
0c_ha94l6c04t.js gzip 156 B N/A -
0cz1d0mv5g_q7.js gzip 39.4 kB 39.4 kB
0kc46plcxbl2o.js gzip 65.5 kB N/A -
0l0sr6gau5xjn.js gzip 3.53 kB N/A -
0nxqz3q165m2l.js gzip 220 B N/A -
0qr-1tnb7_hg5.js gzip 5.72 kB N/A -
0u7_bcr66x2yb.js gzip 157 B N/A -
0uilzvklme4ea.js gzip 8.76 kB N/A -
0wh21b9_q2n6i.js gzip 157 B N/A -
0yqov-58ioapx.js gzip 162 B N/A -
0z0y83mfx-l-h.js gzip 10 kB N/A -
15ok8ydf274z0.js gzip 10.6 kB N/A -
16cqqcigykfea.js gzip 13.6 kB N/A -
17h18zxt1915l.js gzip 1.46 kB N/A -
1bggfiprh0q1n.js gzip 158 B N/A -
1elt1qium-r2m.css gzip 115 B 115 B
1fq1h7dxad4cv.js gzip 9.44 kB N/A -
1fym-adbk_69_.js gzip 13.1 kB N/A -
1g80-jfls9qyr.js gzip 13.2 kB N/A -
1gav7nfh4y8ln.js gzip 8.76 kB N/A -
1w14h_4ar9o-w.js gzip 161 B N/A -
1xdrt2nef_9m-.js gzip 159 B N/A -
203qo9qrhc_77.js gzip 154 B N/A -
22sajk3amu-ua.js gzip 45 kB N/A -
26xnr0078vuee.js gzip 71.1 kB N/A -
2n8sk86540ptu.js gzip 154 B N/A -
2o1ojrb3rdrmw.js gzip 157 B N/A -
2rypqffktcxqh.js gzip 8.69 kB N/A -
2uqsizxtehgqf.js gzip 8.79 kB N/A -
2vzktdqwbijqc.js gzip 8.74 kB N/A -
339ja3s29wraf.js gzip 153 B N/A -
3c244akvx_-be.js gzip 8.74 kB N/A -
3dmlemitx3ef3.js gzip 2.29 kB N/A -
3e4px3hvyezn-.js gzip 168 B N/A -
3y193x4n8cq9d.js gzip 7.4 kB N/A -
41lexzgfayovg.js gzip 155 B N/A -
4237vdj6eyslt.js gzip 8.7 kB N/A -
turbopack-05..5a3x.js gzip 3.85 kB N/A -
turbopack-0o..7u6k.js gzip 3.86 kB N/A -
turbopack-0u..beck.js gzip 3.84 kB N/A -
turbopack-0x..qd7q.js gzip 3.85 kB N/A -
turbopack-1i..pfwv.js gzip 3.85 kB N/A -
turbopack-1j..ka1s.js gzip 3.85 kB N/A -
turbopack-1z..jft8.js gzip 3.83 kB N/A -
turbopack-2a..ikab.js gzip 3.85 kB N/A -
turbopack-2b..meu9.js gzip 3.85 kB N/A -
turbopack-34..8_3t.js gzip 3.85 kB N/A -
turbopack-3f..48d3.js gzip 3.85 kB N/A -
turbopack-3j..fj12.js gzip 3.85 kB N/A -
turbopack-3x..czlp.js gzip 3.85 kB N/A -
turbopack-41..8vth.js gzip 3.85 kB N/A -
00tc16j5-eos9.js gzip N/A 1.46 kB -
05tax4x1rfda4.js gzip N/A 7.4 kB -
0f3x8hscjb7ap.js gzip N/A 156 B -
0gaw1gmpwuwkn.js gzip N/A 8.8 kB -
0v19i0q8g4rho.js gzip N/A 156 B -
12zyjjmq4oad1.js gzip N/A 5.72 kB -
17v7o0y0g4-7-.js gzip N/A 155 B -
1k9cc4-gpa2cx.js gzip N/A 13.1 kB -
1n59uogejo81s.js gzip N/A 10.3 kB -
1noy5y6bnyiy7.js gzip N/A 154 B -
1npei3hlexdv3.js gzip N/A 9.99 kB -
1ssuiwj_rnpc5.js gzip N/A 8.77 kB -
1uqman5iy_ejn.js gzip N/A 156 B -
2-phc9obd3nyd.js gzip N/A 8.77 kB -
24utq57r3l1cw.js gzip N/A 8.7 kB -
2a3jkn8z7ke-t.js gzip N/A 65.6 kB -
2fhjq6ek3srmr.js gzip N/A 8.69 kB -
2g0t7upz_v-hf.js gzip N/A 10.6 kB -
2ghzkgx1ddgu_.js gzip N/A 157 B -
2ia9qqy99aie9.js gzip N/A 13.6 kB -
2koxg04ry-g8s.js gzip N/A 168 B -
2m-y5z-jn6d95.js gzip N/A 155 B -
2oza28kdqvoay.js gzip N/A 8.74 kB -
2zh8-mmhujy8o.js gzip N/A 2.29 kB -
30h_m0irj-q6p.js gzip N/A 221 B -
319hk3fl01uhk.js gzip N/A 71.1 kB -
37ejbfx1u9lpo.js gzip N/A 8.75 kB -
38c63ct4i1cy7.js gzip N/A 449 B -
38i6xpn0ullxe.js gzip N/A 155 B -
3hd1us4ordyc9.js gzip N/A 13.2 kB -
3jimpal3lvz5e.js gzip N/A 9.44 kB -
3ns42zoevxrsp.js gzip N/A 45 kB -
3olzqw8v8kq4p.js gzip N/A 160 B -
3otxp6kbeequz.js gzip N/A 156 B -
3su6a4l8jbfth.js gzip N/A 3.53 kB -
3w25ccsfocdnd.js gzip N/A 159 B -
3wb4pe4z4-aim.js gzip N/A 8.77 kB -
40j0uuoh0xxc2.js gzip N/A 155 B -
turbopack-05..ztdo.js gzip N/A 3.85 kB -
turbopack-05..tsib.js gzip N/A 3.85 kB -
turbopack-0c..4rx4.js gzip N/A 3.83 kB -
turbopack-12..zapb.js gzip N/A 3.85 kB -
turbopack-19..g7-6.js gzip N/A 3.85 kB -
turbopack-2i..cubw.js gzip N/A 3.86 kB -
turbopack-2v..f86f.js gzip N/A 3.85 kB -
turbopack-2w..l3g5.js gzip N/A 3.85 kB -
turbopack-2x..mykf.js gzip N/A 3.85 kB -
turbopack-2x..xsyd.js gzip N/A 3.85 kB -
turbopack-3_..obhu.js gzip N/A 3.85 kB -
turbopack-35..p4jp.js gzip N/A 3.85 kB -
turbopack-3f..ggdw.js gzip N/A 3.85 kB -
turbopack-3o..gklp.js gzip N/A 3.85 kB -
Total 448 kB 448 kB ⚠️ +86 B

Server

Middleware
Canary PR Change
middleware-b..fest.js gzip 731 B 723 B 🟢 8 B (-1%)
Total 731 B 723 B ✅ -8 B
Build Details
Build Manifests
Canary PR Change
_buildManifest.js gzip 434 B 436 B
Total 434 B 436 B ⚠️ +2 B

📦 Webpack

Client

Main Bundles
Canary PR Change
2486.HASH.js gzip 169 B N/A -
3146-HASH.js gzip 64 kB N/A -
39fcf99b-HASH.js gzip 62.9 kB N/A -
8443-HASH.js gzip 4.68 kB N/A -
9431-HASH.js gzip 5.62 kB N/A -
framework-HASH.js gzip 59.8 kB 59.8 kB
main-app-HASH.js gzip 255 B 253 B
main-HASH.js gzip 39.6 kB 40.1 kB 🔴 +497 B (+1%)
webpack-HASH.js gzip 1.68 kB 1.68 kB
6105-HASH.js gzip N/A 5.63 kB -
764.HASH.js gzip N/A 169 B -
8898-HASH.js gzip N/A 63.4 kB -
9597-HASH.js gzip N/A 4.65 kB -
e1ccab69-HASH.js gzip N/A 62.9 kB -
Total 239 kB 239 kB ✅ -99 B
Polyfills
Canary PR Change
polyfills-HASH.js gzip 39.4 kB 39.4 kB
Total 39.4 kB 39.4 kB
Pages
Canary PR Change
_app-HASH.js gzip 194 B 194 B
_error-HASH.js gzip 183 B 182 B
css-HASH.js gzip 335 B 335 B
dynamic-HASH.js gzip 1.8 kB 1.8 kB
edge-ssr-HASH.js gzip 255 B 254 B
head-HASH.js gzip 351 B 349 B
hooks-HASH.js gzip 384 B 384 B
image-HASH.js gzip 580 B 580 B
index-HASH.js gzip 259 B 259 B
link-HASH.js gzip 2.49 kB 2.49 kB
routerDirect..HASH.js gzip 319 B 319 B
script-HASH.js gzip 386 B 386 B
withRouter-HASH.js gzip 315 B 313 B
1afbb74e6ecf..834.css gzip 106 B 106 B
Total 7.96 kB 7.95 kB ✅ -7 B

Server

Edge SSR
Canary PR Change
edge-ssr.js gzip 128 kB 128 kB
page.js gzip 282 kB 284 kB
Total 409 kB 411 kB ⚠️ +2.05 kB
Middleware
Canary PR Change
middleware-b..fest.js gzip 616 B 618 B
middleware-r..fest.js gzip 156 B 155 B
middleware.js gzip 45.3 kB 45.2 kB
edge-runtime..pack.js gzip 842 B 842 B
Total 46.9 kB 46.8 kB ✅ -119 B
Build Details
Build Manifests
Canary PR Change
_buildManifest.js gzip 719 B 720 B
Total 719 B 720 B ⚠️ +1 B
Build Cache
Canary PR Change
0.pack gzip 4.79 MB 4.78 MB 🟢 11.8 kB (0%)
index.pack gzip 118 kB 117 kB
index.pack.old gzip 118 kB 118 kB
Total 5.02 MB 5.01 MB ✅ -12.4 kB

🔄 Shared (bundler-independent)

Runtimes
Canary PR Change
app-page-exp...dev.js gzip 363 kB 363 kB
app-page-exp..prod.js gzip 201 kB 201 kB
app-page-tur...dev.js gzip 363 kB 363 kB
app-page-tur..prod.js gzip 201 kB 201 kB
app-page-tur...dev.js gzip 359 kB 359 kB
app-page-tur..prod.js gzip 199 kB 199 kB
app-page.run...dev.js gzip 360 kB 360 kB
app-page.run..prod.js gzip 199 kB 199 kB
app-route-ex...dev.js gzip 81.1 kB 81.1 kB
app-route-ex..prod.js gzip 55.2 kB 55.2 kB
app-route-tu...dev.js gzip 81.1 kB 81.1 kB
app-route-tu..prod.js gzip 55.2 kB 55.2 kB
app-route-tu...dev.js gzip 80.7 kB 80.7 kB
app-route-tu..prod.js gzip 55 kB 55 kB
app-route.ru...dev.js gzip 80.7 kB 80.7 kB
app-route.ru..prod.js gzip 54.9 kB 54.9 kB
dist_client_...dev.js gzip 324 B 324 B
dist_client_...dev.js gzip 326 B 326 B
dist_client_...dev.js gzip 318 B 318 B
dist_client_...dev.js gzip 317 B 317 B
pages-api-tu...dev.js gzip 45.2 kB 45.2 kB
pages-api-tu..prod.js gzip 34 kB 34 kB
pages-api.ru...dev.js gzip 45.2 kB 45.2 kB
pages-api.ru..prod.js gzip 33.9 kB 33.9 kB
pages-turbo....dev.js gzip 54.7 kB 54.7 kB
pages-turbo...prod.js gzip 39.6 kB 39.6 kB
pages.runtim...dev.js gzip 54.7 kB 54.7 kB
pages.runtim..prod.js gzip 39.6 kB 39.6 kB
server.runti..prod.js gzip 65.3 kB 65.3 kB
use-cache-pr...dev.js gzip 71.4 kB 71.4 kB
use-cache-pr...dev.js gzip 71.4 kB 71.4 kB
use-cache-pr...dev.js gzip 69.7 kB 69.7 kB
use-cache-pr...dev.js gzip 69.7 kB 69.7 kB
Total 3.48 MB 3.48 MB ✅ -2 B
📝 Changed Files (2 files)

Files with changes:

  • pages-api.ru..time.prod.js
  • pages.runtime.prod.js
View diffs
pages-api.ru..time.prod.js

Diff too large to display

pages.runtime.prod.js

Diff too large to display

📎 Tarball URL
https://vercel-packages.vercel.app/next/commits/50e5170d50f9add47ba9ba901257c5247ff025ce/next

Commit: 50e5170

@timneutkens timneutkens force-pushed the request-insights/dev-transport branch from 8f12af2 to 6cc46d4 Compare June 19, 2026 09:27
@timneutkens timneutkens force-pushed the request-insights/agent-diagnosis branch from 353bd2d to 80707b5 Compare June 19, 2026 09:27
@timneutkens timneutkens force-pushed the request-insights/dev-transport branch from 6cc46d4 to 9979bc8 Compare June 19, 2026 12:14
@timneutkens timneutkens force-pushed the request-insights/agent-diagnosis branch from 80707b5 to 0a61e40 Compare June 19, 2026 12:14
@timneutkens timneutkens force-pushed the request-insights/dev-transport branch from 9979bc8 to a0c338a Compare June 19, 2026 16:00
@timneutkens timneutkens force-pushed the request-insights/agent-diagnosis branch 2 times, most recently from 3ebe685 to adac147 Compare June 22, 2026 09:44
Comment thread packages/next/src/cli/next-diagnose.ts Outdated
Comment thread packages/next/src/cli/next-diagnose.ts Outdated
Comment thread packages/next/src/cli/next-diagnose.ts Outdated
Comment thread packages/next/src/cli/next-diagnose.ts Outdated
Comment thread packages/next/src/cli/next-diagnose.ts Outdated
Comment thread packages/next/src/cli/next-diagnose.ts Outdated
@timneutkens timneutkens marked this pull request as ready for review June 22, 2026 14:48
@timneutkens timneutkens force-pushed the request-insights/agent-diagnosis branch from 73b47a4 to 84d76d3 Compare June 26, 2026 15:11
@timneutkens timneutkens force-pushed the request-insights/dev-transport branch from c742bf2 to b11eb2b Compare June 26, 2026 15:11
@timneutkens timneutkens self-requested a review July 7, 2026 16:38
Comment thread packages/next/src/bin/next.ts Outdated
@timneutkens timneutkens force-pushed the request-insights/dev-transport branch from b11eb2b to 04b1063 Compare July 8, 2026 11:53
@timneutkens timneutkens force-pushed the request-insights/agent-diagnosis branch 2 times, most recently from 52ccf77 to fe7521f Compare July 8, 2026 19:54
@timneutkens timneutkens force-pushed the request-insights/dev-transport branch from 04b1063 to 7ff7088 Compare July 8, 2026 19:54
@timneutkens timneutkens force-pushed the request-insights/dev-transport branch from 7ff7088 to d0ae033 Compare July 9, 2026 09:02
@timneutkens timneutkens force-pushed the request-insights/agent-diagnosis branch from fe7521f to 747748a Compare July 9, 2026 09:02
@timneutkens timneutkens force-pushed the request-insights/dev-transport branch from d0ae033 to 3acf8c6 Compare July 10, 2026 13:24
@timneutkens timneutkens force-pushed the request-insights/agent-diagnosis branch 2 times, most recently from 573ce9b to 9cd978f Compare July 10, 2026 13:54
@timneutkens timneutkens force-pushed the request-insights/dev-transport branch from 3acf8c6 to 081b44b Compare July 10, 2026 13:54
@timneutkens timneutkens force-pushed the request-insights/agent-diagnosis branch from 9cd978f to 1c2463d Compare July 11, 2026 18:01
@timneutkens timneutkens force-pushed the request-insights/dev-transport branch from 081b44b to 4444cc7 Compare July 11, 2026 18:01
@timneutkens timneutkens force-pushed the request-insights/agent-diagnosis branch from 1c2463d to 790a8b4 Compare July 11, 2026 18:27
@timneutkens timneutkens force-pushed the request-insights/dev-transport branch from 4444cc7 to 71fbc1a Compare July 11, 2026 18:27
Base automatically changed from request-insights/dev-transport to canary July 12, 2026 11:47
@timneutkens timneutkens force-pushed the request-insights/agent-diagnosis branch from 790a8b4 to e8e4c37 Compare July 12, 2026 12:21
feedthejim and others added 5 commits July 13, 2026 10:26
Adds next experimental-diagnose for the private Request Insights endpoint, registers an MCP get_request_insights tool, and updates MCP telemetry for the new tool name.

Verification:

- pnpm jest packages/next/src/telemetry/events/mcp-telemetry.test.ts --runInBand

- pnpm --filter=next types

Deferred coverage: real CLI JSON against a running dev server is verified at the stack tip with the Cache Components smoke fixture.
@timneutkens timneutkens force-pushed the request-insights/agent-diagnosis branch from 4e18228 to 1d0187e Compare July 13, 2026 08:29
@timneutkens timneutkens merged commit 4a4590a into canary Jul 13, 2026
227 of 229 checks passed
@timneutkens timneutkens deleted the request-insights/agent-diagnosis branch July 13, 2026 12:01
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.

3 participants