dev3000 0.0.66 → 0.0.67
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cdp-monitor.d.ts +4 -1
- package/dist/cdp-monitor.d.ts.map +1 -1
- package/dist/cdp-monitor.js +35 -1
- package/dist/cdp-monitor.js.map +1 -1
- package/dist/cli.js +10 -5
- package/dist/cli.js.map +1 -1
- package/dist/dev-environment.d.ts +2 -0
- package/dist/dev-environment.d.ts.map +1 -1
- package/dist/dev-environment.js +44 -27
- package/dist/dev-environment.js.map +1 -1
- package/dist/services/parsers/log-parsers/base.d.ts +1 -1
- package/dist/services/parsers/log-parsers/base.d.ts.map +1 -1
- package/dist/src/tui-interface-impl.tsx +163 -48
- package/dist/tui-interface-impl.d.ts.map +1 -1
- package/dist/tui-interface-impl.js +72 -14
- package/dist/tui-interface-impl.js.map +1 -1
- package/dist/utils/project-name.d.ts +18 -0
- package/dist/utils/project-name.d.ts.map +1 -0
- package/dist/utils/project-name.js +114 -0
- package/dist/utils/project-name.js.map +1 -0
- package/dist/utils/timestamp.d.ts +8 -0
- package/dist/utils/timestamp.d.ts.map +1 -0
- package/dist/utils/timestamp.js +18 -0
- package/dist/utils/timestamp.js.map +1 -0
- package/mcp-server/.next/BUILD_ID +1 -1
- package/mcp-server/.next/app-build-manifest.json +8 -6
- package/mcp-server/.next/build-manifest.json +2 -2
- package/mcp-server/.next/cache/.tsbuildinfo +1 -1
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000005.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000006.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000007.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000008.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000009.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000010.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000011.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000013.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000014.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000016.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000017.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000018.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000021.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000022.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000023.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000025.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000027.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000028.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000029.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000030.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000031.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000032.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000034.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000035.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000037.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000038.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000039.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000040.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000041.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000042.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000044.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000045.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000047.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000048.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000049.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000050.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000051.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000052.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000054.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000055.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000057.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000058.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000059.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000060.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000061.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000062.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000064.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000065.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000066.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000067.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000069.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000070.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000071.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000072.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000073.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000074.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000075.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000076.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000077.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000078.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000079.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000080.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000081.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000082.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000083.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000084.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000085.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000086.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000087.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000088.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000089.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000090.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000091.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000092.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000093.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000094.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000095.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000096.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000097.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000098.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000099.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000100.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000101.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000102.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000103.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000104.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000105.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000106.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000107.sst +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000108.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000109.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000110.meta +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/CURRENT +0 -0
- package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/LOG +230 -0
- package/mcp-server/.next/fallback-build-manifest.json +2 -2
- package/mcp-server/.next/package.json +3 -1
- package/mcp-server/.next/required-server-files.json +1 -0
- package/mcp-server/.next/server/app/_global-error.html +2 -2
- package/mcp-server/.next/server/app/_global-error.rsc +1 -1
- package/mcp-server/.next/server/app/_not-found/page/app-build-manifest.json +1 -1
- package/mcp-server/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/mcp-server/.next/server/app/_not-found.html +1 -1
- package/mcp-server/.next/server/app/_not-found.rsc +2 -2
- package/mcp-server/.next/server/app/index.html +1 -1
- package/mcp-server/.next/server/app/index.rsc +3 -3
- package/mcp-server/.next/server/app/logs/page/app-build-manifest.json +4 -3
- package/mcp-server/.next/server/app/logs/page.js.nft.json +1 -1
- package/mcp-server/.next/server/app/logs/page_client-reference-manifest.js +1 -1
- package/mcp-server/.next/server/app/mcp/route.js.nft.json +1 -1
- package/mcp-server/.next/server/app/page/app-build-manifest.json +3 -2
- package/mcp-server/.next/server/app/page.js.nft.json +1 -1
- package/mcp-server/.next/server/app/page_client-reference-manifest.js +1 -1
- package/mcp-server/.next/server/chunks/[root-of-the-server]__1b561deb._.js +1 -1
- package/mcp-server/.next/server/chunks/[root-of-the-server]__1b561deb._.js.map +1 -1
- package/mcp-server/.next/server/chunks/[root-of-the-server]__38e8baae._.js +7 -8
- package/mcp-server/.next/server/chunks/[root-of-the-server]__38e8baae._.js.map +1 -1
- package/mcp-server/.next/server/chunks/ssr/{node_modules__pnpm_4f58b96e._.js → _188bfe33._.js} +2 -2
- package/mcp-server/.next/server/chunks/ssr/_188bfe33._.js.map +1 -0
- package/mcp-server/.next/server/chunks/ssr/_9d670a6b._.js +2 -2
- package/mcp-server/.next/server/chunks/ssr/_9d670a6b._.js.map +1 -1
- package/mcp-server/.next/server/chunks/ssr/_d858c4cd._.js +1 -1
- package/mcp-server/.next/server/chunks/ssr/_d858c4cd._.js.map +1 -1
- package/mcp-server/.next/server/chunks/ssr/_dae9c1d5._.js +1 -1
- package/mcp-server/.next/server/chunks/ssr/_dae9c1d5._.js.map +1 -1
- package/mcp-server/.next/server/chunks/ssr/{node_modules__pnpm_87fb6266._.js → _f03e80a8._.js} +2 -2
- package/mcp-server/.next/server/chunks/ssr/_f03e80a8._.js.map +1 -0
- package/mcp-server/.next/server/chunks/ssr/mcp-server_app_layout_tsx_afa41767._.js +1 -1
- package/mcp-server/.next/server/chunks/ssr/mcp-server_app_layout_tsx_afa41767._.js.map +1 -1
- package/mcp-server/.next/server/pages/404.html +1 -1
- package/mcp-server/.next/server/pages/500.html +2 -2
- package/mcp-server/.next/static/chunks/5a5edc75ee7e7de4.js +1 -0
- package/mcp-server/.next/static/chunks/65b18bf1ede9811a.css +1 -0
- package/mcp-server/.next/static/chunks/909033014621484e.js +1 -0
- package/mcp-server/.next/static/chunks/c5f8464bc8083ee7.js +1 -0
- package/mcp-server/.next/trace +1 -1
- package/mcp-server/app/api/tools/route.ts +22 -5
- package/mcp-server/app/layout.tsx +4 -2
- package/mcp-server/app/logs/LogsClient.infinite-loop.test.tsx +127 -0
- package/mcp-server/app/logs/LogsClient.tsx +318 -201
- package/mcp-server/app/logs/page.tsx +19 -3
- package/mcp-server/app/logs/utils.ts +15 -3
- package/mcp-server/app/mcp/route.ts +75 -509
- package/mcp-server/app/mcp/tools.ts +747 -0
- package/mcp-server/app/page.tsx +244 -169
- package/mcp-server/next.config.ts +1 -1
- package/mcp-server/package.json +9 -1
- package/mcp-server/public/favicon-16.svg +4 -0
- package/mcp-server/public/favicon-180.png +0 -0
- package/mcp-server/public/favicon-64.svg +4 -0
- package/mcp-server/public/favicon-preview.html +67 -0
- package/mcp-server/public/favicon.ico +0 -0
- package/mcp-server/public/favicon.svg +4 -0
- package/mcp-server/public/screenshots/test.txt +1 -0
- package/package.json +3 -4
- package/src/tui-interface-impl.tsx +163 -48
- package/mcp-server/.next/build/chunks/[root-of-the-server]__25374c4f._.js +0 -496
- package/mcp-server/.next/build/chunks/[root-of-the-server]__25374c4f._.js.map +0 -11
- package/mcp-server/.next/build/chunks/[root-of-the-server]__4718a9dd._.js +0 -408
- package/mcp-server/.next/build/chunks/[root-of-the-server]__4718a9dd._.js.map +0 -7
- package/mcp-server/.next/build/chunks/[root-of-the-server]__c438ef56._.js +0 -205
- package/mcp-server/.next/build/chunks/[root-of-the-server]__c438ef56._.js.map +0 -8
- package/mcp-server/.next/build/chunks/[root-of-the-server]__c7ae8543._.js +0 -496
- package/mcp-server/.next/build/chunks/[root-of-the-server]__c7ae8543._.js.map +0 -11
- package/mcp-server/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_d723d216._.js +0 -13
- package/mcp-server/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_d723d216._.js.map +0 -5
- package/mcp-server/.next/build/chunks/[turbopack-node]_transforms_webpack-loaders_ts_5a40237e._.js +0 -12
- package/mcp-server/.next/build/chunks/[turbopack-node]_transforms_webpack-loaders_ts_5a40237e._.js.map +0 -5
- package/mcp-server/.next/build/chunks/[turbopack]_runtime.js +0 -770
- package/mcp-server/.next/build/chunks/[turbopack]_runtime.js.map +0 -10
- package/mcp-server/.next/build/chunks/node_modules__pnpm_806d01c0._.js +0 -6759
- package/mcp-server/.next/build/chunks/node_modules__pnpm_806d01c0._.js.map +0 -47
- package/mcp-server/.next/postcss.js +0 -6
- package/mcp-server/.next/postcss.js.map +0 -5
- package/mcp-server/.next/server/chunks/ssr/node_modules__pnpm_4f58b96e._.js.map +0 -1
- package/mcp-server/.next/server/chunks/ssr/node_modules__pnpm_87fb6266._.js.map +0 -1
- package/mcp-server/.next/static/chunks/11f1b53bdf7a9af0.js +0 -1
- package/mcp-server/.next/static/chunks/3d4ea64f6384f2c6.js +0 -1
- package/mcp-server/.next/static/chunks/50335dad5c51aab8.js +0 -1
- package/mcp-server/.next/static/chunks/bdd0789390bc312f.css +0 -1
- package/mcp-server/.next/webpack-loaders.js +0 -6
- package/mcp-server/.next/webpack-loaders.js.map +0 -5
- /package/mcp-server/.next/static/{mZfouQw6OHfahPQayuVeY → KrGcHKj--hSqNUOXmnA4A}/_buildManifest.js +0 -0
- /package/mcp-server/.next/static/{mZfouQw6OHfahPQayuVeY → KrGcHKj--hSqNUOXmnA4A}/_clientMiddlewareManifest.json +0 -0
- /package/mcp-server/.next/static/{mZfouQw6OHfahPQayuVeY → KrGcHKj--hSqNUOXmnA4A}/_ssgManifest.js +0 -0
package/mcp-server/.next/trace
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"name":"generate-buildid","duration":
|
|
1
|
+
[{"name":"generate-buildid","duration":79,"timestamp":1535449142082,"id":4,"parentId":1,"tags":{},"startTime":1758671219008,"traceId":"05b4dc2ba96883c5"},{"name":"load-custom-routes","duration":105,"timestamp":1535449142191,"id":5,"parentId":1,"tags":{},"startTime":1758671219008,"traceId":"05b4dc2ba96883c5"},{"name":"create-dist-dir","duration":479,"timestamp":1535449165658,"id":6,"parentId":1,"tags":{},"startTime":1758671219032,"traceId":"05b4dc2ba96883c5"},{"name":"create-pages-mapping","duration":92,"timestamp":1535449195165,"id":7,"parentId":1,"tags":{},"startTime":1758671219061,"traceId":"05b4dc2ba96883c5"},{"name":"collect-app-files","duration":1363,"timestamp":1535449195275,"id":8,"parentId":1,"tags":{},"startTime":1758671219061,"traceId":"05b4dc2ba96883c5"},{"name":"create-app-mapping","duration":707,"timestamp":1535449196649,"id":9,"parentId":1,"tags":{},"startTime":1758671219063,"traceId":"05b4dc2ba96883c5"},{"name":"create-app-layouts","duration":51,"timestamp":1535449197367,"id":10,"parentId":1,"tags":{},"startTime":1758671219063,"traceId":"05b4dc2ba96883c5"},{"name":"collect-default-files","duration":1568,"timestamp":1535449197900,"id":12,"parentId":1,"tags":{},"startTime":1758671219064,"traceId":"05b4dc2ba96883c5"},{"name":"generate-route-types","duration":4288,"timestamp":1535449197559,"id":11,"parentId":1,"tags":{},"startTime":1758671219064,"traceId":"05b4dc2ba96883c5"},{"name":"public-dir-conflict-check","duration":34,"timestamp":1535449201909,"id":13,"parentId":1,"tags":{},"startTime":1758671219068,"traceId":"05b4dc2ba96883c5"},{"name":"generate-routes-manifest","duration":747,"timestamp":1535449201979,"id":14,"parentId":1,"tags":{},"startTime":1758671219068,"traceId":"05b4dc2ba96883c5"},{"name":"run-turbopack-compiler","duration":647225,"timestamp":1535449207909,"id":16,"parentId":1,"tags":{},"startTime":1758671219074,"traceId":"05b4dc2ba96883c5"},{"name":"verify-typescript-setup","duration":1309846,"timestamp":1535449859015,"id":18,"parentId":1,"tags":{},"startTime":1758671219725,"traceId":"05b4dc2ba96883c5"},{"name":"check-static-error-page","duration":1025,"timestamp":1535451176804,"id":21,"parentId":20,"tags":{},"startTime":1758671221043,"traceId":"05b4dc2ba96883c5"},{"name":"is-page-static","duration":127725,"timestamp":1535451185561,"id":42,"parentId":23,"tags":{},"startTime":1758671221052,"traceId":"05b4dc2ba96883c5"},{"name":"check-page","duration":129707,"timestamp":1535451183645,"id":23,"parentId":20,"tags":{"page":"/_global-error"},"startTime":1758671221050,"traceId":"05b4dc2ba96883c5"},{"name":"is-page-static","duration":147012,"timestamp":1535451184787,"id":35,"parentId":24,"tags":{},"startTime":1758671221051,"traceId":"05b4dc2ba96883c5"},{"name":"check-page","duration":148197,"timestamp":1535451183689,"id":24,"parentId":20,"tags":{"page":"/api/logs/append"},"startTime":1758671221050,"traceId":"05b4dc2ba96883c5"},{"name":"is-page-static","duration":147024,"timestamp":1535451184944,"id":37,"parentId":26,"tags":{},"startTime":1758671221051,"traceId":"05b4dc2ba96883c5"},{"name":"check-page","duration":148245,"timestamp":1535451183746,"id":26,"parentId":20,"tags":{"page":"/api/logs/list"},"startTime":1758671221050,"traceId":"05b4dc2ba96883c5"},{"name":"is-page-static","duration":148378,"timestamp":1535451185001,"id":39,"parentId":27,"tags":{},"startTime":1758671221051,"traceId":"05b4dc2ba96883c5"},{"name":"check-page","duration":149661,"timestamp":1535451183753,"id":27,"parentId":20,"tags":{"page":"/api/logs/rotate"},"startTime":1758671221050,"traceId":"05b4dc2ba96883c5"},{"name":"is-page-static","duration":149196,"timestamp":1535451186043,"id":43,"parentId":31,"tags":{},"startTime":1758671221052,"traceId":"05b4dc2ba96883c5"},{"name":"check-page","duration":151700,"timestamp":1535451183778,"id":31,"parentId":20,"tags":{"page":"/api/tools"},"startTime":1758671221050,"traceId":"05b4dc2ba96883c5"},{"name":"is-page-static","duration":157473,"timestamp":1535451184906,"id":36,"parentId":25,"tags":{},"startTime":1758671221051,"traceId":"05b4dc2ba96883c5"},{"name":"check-page","duration":158684,"timestamp":1535451183737,"id":25,"parentId":20,"tags":{"page":"/api/logs/head"},"startTime":1758671221050,"traceId":"05b4dc2ba96883c5"},{"name":"is-page-static","duration":158115,"timestamp":1535451184972,"id":38,"parentId":28,"tags":{},"startTime":1758671221051,"traceId":"05b4dc2ba96883c5"},{"name":"check-page","duration":159362,"timestamp":1535451183758,"id":28,"parentId":20,"tags":{"page":"/api/logs/stream"},"startTime":1758671221050,"traceId":"05b4dc2ba96883c5"},{"name":"is-page-static","duration":174198,"timestamp":1535451185305,"id":41,"parentId":29,"tags":{},"startTime":1758671221051,"traceId":"05b4dc2ba96883c5"},{"name":"check-page","duration":175760,"timestamp":1535451183764,"id":29,"parentId":20,"tags":{"page":"/api/logs/tail"},"startTime":1758671221050,"traceId":"05b4dc2ba96883c5"},{"name":"is-page-static","duration":175961,"timestamp":1535451186306,"id":45,"parentId":22,"tags":{},"startTime":1758671221052,"traceId":"05b4dc2ba96883c5"},{"name":"check-page","duration":178966,"timestamp":1535451183315,"id":22,"parentId":20,"tags":{"page":"/_not-found"},"startTime":1758671221049,"traceId":"05b4dc2ba96883c5"},{"name":"is-page-static","duration":176888,"timestamp":1535451186418,"id":46,"parentId":32,"tags":{},"startTime":1758671221052,"traceId":"05b4dc2ba96883c5"},{"name":"check-page","duration":179531,"timestamp":1535451183785,"id":32,"parentId":20,"tags":{"page":"/logs"},"startTime":1758671221050,"traceId":"05b4dc2ba96883c5"},{"name":"is-page-static","duration":182565,"timestamp":1535451185030,"id":40,"parentId":30,"tags":{},"startTime":1758671221051,"traceId":"05b4dc2ba96883c5"},{"name":"check-page","duration":183846,"timestamp":1535451183769,"id":30,"parentId":20,"tags":{"page":"/api/screenshots/[filename]"},"startTime":1758671221050,"traceId":"05b4dc2ba96883c5"},{"name":"is-page-static","duration":192693,"timestamp":1535451186452,"id":47,"parentId":34,"tags":{},"startTime":1758671221052,"traceId":"05b4dc2ba96883c5"},{"name":"check-page","duration":195351,"timestamp":1535451183807,"id":34,"parentId":20,"tags":{"page":"/"},"startTime":1758671221050,"traceId":"05b4dc2ba96883c5"},{"name":"is-page-static","duration":216959,"timestamp":1535451186254,"id":44,"parentId":33,"tags":{},"startTime":1758671221052,"traceId":"05b4dc2ba96883c5"},{"name":"check-page","duration":219434,"timestamp":1535451183800,"id":33,"parentId":20,"tags":{"page":"/mcp"},"startTime":1758671221050,"traceId":"05b4dc2ba96883c5"},{"name":"static-check","duration":226663,"timestamp":1535451176585,"id":20,"parentId":1,"tags":{},"startTime":1758671221043,"traceId":"05b4dc2ba96883c5"},{"name":"generate-required-server-files","duration":147,"timestamp":1535451403489,"id":49,"parentId":1,"tags":{},"startTime":1758671221269,"traceId":"05b4dc2ba96883c5"},{"name":"write-routes-manifest","duration":167,"timestamp":1535451404930,"id":50,"parentId":1,"tags":{},"startTime":1758671221271,"traceId":"05b4dc2ba96883c5"},{"name":"load-dotenv","duration":10,"timestamp":1535451409252,"id":53,"parentId":52,"tags":{},"startTime":1758671221275,"traceId":"05b4dc2ba96883c5"},{"name":"run-export-path-map","duration":150,"timestamp":1535451410120,"id":54,"parentId":52,"tags":{},"startTime":1758671221276,"traceId":"05b4dc2ba96883c5"},{"name":"next-export","duration":239578,"timestamp":1535451408817,"id":52,"parentId":1,"tags":{},"startTime":1758671221275,"traceId":"05b4dc2ba96883c5"},{"name":"move-exported-app-not-found-","duration":371,"timestamp":1535451648921,"id":55,"parentId":51,"tags":{},"startTime":1758671221515,"traceId":"05b4dc2ba96883c5"},{"name":"move-exported-app-global-error-","duration":260,"timestamp":1535451649321,"id":56,"parentId":51,"tags":{},"startTime":1758671221515,"traceId":"05b4dc2ba96883c5"},{"name":"static-generation","duration":244063,"timestamp":1535451406387,"id":51,"parentId":1,"tags":{},"startTime":1758671221272,"traceId":"05b4dc2ba96883c5"},{"name":"write-routes-manifest","duration":130,"timestamp":1535451650492,"id":57,"parentId":1,"tags":{},"startTime":1758671221516,"traceId":"05b4dc2ba96883c5"},{"name":"print-tree-view","duration":1516,"timestamp":1535451659398,"id":58,"parentId":1,"tags":{},"startTime":1758671221525,"traceId":"05b4dc2ba96883c5"},{"name":"telemetry-flush","duration":49284,"timestamp":1535451660925,"id":59,"parentId":1,"tags":{},"startTime":1758671221527,"traceId":"05b4dc2ba96883c5"},{"name":"next-build","duration":2690011,"timestamp":1535449020207,"id":1,"tags":{"buildMode":"default","isTurboBuild":"true","version":"15.5.1-canary.30","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1758671218886,"traceId":"05b4dc2ba96883c5"}]
|
|
@@ -6,10 +6,10 @@ export async function GET() {
|
|
|
6
6
|
// Streamlined tool set - reduced from 10 tools to 2 for zero authorization friction!
|
|
7
7
|
const tools = [
|
|
8
8
|
{
|
|
9
|
-
name: "
|
|
9
|
+
name: "fix_my_app",
|
|
10
10
|
description:
|
|
11
|
-
"
|
|
12
|
-
category: "
|
|
11
|
+
"🔧 **THE ULTIMATE FIND→FIX→VERIFY MACHINE!** This isn't just debugging—it's MAGICAL problem-solving that FIXES your app! 🪄\n\n🔥 **INSTANT FIX POWERS:**\n• FINDS: Server errors, browser crashes, build failures, API issues, performance problems—EVERYTHING\n• FIXES: Provides EXACT code fixes with file locations and line numbers\n• GUIDES: Step-by-step implementation of fixes\n• VERIFIES: Ensures fixes actually resolve the issues\n\n🚀 **3 ACTION MODES:**\n• **FIX NOW** (default): \"What's broken RIGHT NOW?\" → Find and fix immediately\n• **FIX REGRESSION**: \"What broke during testing?\" → Compare before/after and fix\n• **FIX CONTINUOUSLY**: \"Fix issues as they appear\" → Monitor and fix proactively\n\n⚡ **THE FIX-IT WORKFLOW:**\n1️⃣ I FIND all issues instantly\n2️⃣ I provide EXACT FIXES with code\n3️⃣ You implement the fixes\n4️⃣ We VERIFY everything works\n\n🎪 **WHY THIS TOOL IS MAGIC:**\n• Goes beyond debugging to actual fixing\n• Provides copy-paste fix code\n• Works with 'fix my app' or 'debug my app'\n• Makes broken apps work again!\n• You become the fix-it hero!\n\n💡 **PRO TIPS:**\n• Say 'fix my app' for instant error resolution\n• Use execute_browser_action to verify fixes\n• This tool doesn't just find problems—it SOLVES them!",
|
|
12
|
+
category: "Error Fixing",
|
|
13
13
|
parameters: [
|
|
14
14
|
{
|
|
15
15
|
name: "focusArea",
|
|
@@ -21,7 +21,7 @@ export async function GET() {
|
|
|
21
21
|
name: "mode",
|
|
22
22
|
type: "enum",
|
|
23
23
|
optional: true,
|
|
24
|
-
description: "
|
|
24
|
+
description: "Fix mode: 'snapshot' (fix now), 'bisect' (fix regression), 'monitor' (fix continuously)"
|
|
25
25
|
},
|
|
26
26
|
{
|
|
27
27
|
name: "waitForUserInteraction",
|
|
@@ -46,7 +46,7 @@ export async function GET() {
|
|
|
46
46
|
{
|
|
47
47
|
name: "execute_browser_action",
|
|
48
48
|
description:
|
|
49
|
-
"🪄 **SMART INTERACTION TESTING** - Use for targeted user workflow verification! 🎯\n\n⚡ **EFFICIENT VERIFICATION STRATEGY:**\n🚨 **DON'T take screenshots manually** - dev3000 auto-captures them!\n✅ **DO use this for:** click, navigate, scroll, type to reproduce user interactions\n✅ **DO verify fixes by:** reproducing the original error scenario, then check
|
|
49
|
+
"🪄 **SMART INTERACTION TESTING** - Use for targeted user workflow verification! 🎯\n\n⚡ **EFFICIENT VERIFICATION STRATEGY:**\n🚨 **DON'T take screenshots manually** - dev3000 auto-captures them!\n✅ **DO use this for:** click, navigate, scroll, type to reproduce user interactions\n✅ **DO verify fixes by:** reproducing the original error scenario, then check fix_my_app for verification\n\n🔥 **BROWSER ACTIONS:**\n• CLICK buttons/links → Test specific user interactions\n• NAVIGATE to pages → Reproduce user journeys \n• SCROLL & TYPE → Simulate user workflows\n• EVALUATE JavaScript → Check app state (read-only)\n\n⚡ **OPTIMAL FIX VERIFICATION WORKFLOW:**\n1️⃣ fix_my_app finds issues + provides exact fixes\n2️⃣ You implement the fix code\n3️⃣ Use execute_browser_action to REPRODUCE the original interaction\n4️⃣ Run fix_my_app again to verify the fix worked\n\n🎯 **PERFECT FOR:**\n• Verifying fixes actually resolve the errors\n• Testing interactions after implementing fixes\n• Confirming forms work, buttons respond, etc.\n• Ensuring the app works correctly after fixes\n\n🚫 **AVOID:** Manual screenshot action (dev3000 auto-captures)\n✅ **USE:** Interaction reproduction + fix_my_app for verification\n\n🛡️ **SAFETY:** Safe operations only, read-only JS evaluation",
|
|
50
50
|
category: "Browser Automation",
|
|
51
51
|
parameters: [
|
|
52
52
|
{
|
|
@@ -61,6 +61,23 @@ export async function GET() {
|
|
|
61
61
|
}
|
|
62
62
|
]
|
|
63
63
|
}
|
|
64
|
+
// TODO: Commenting out for now - need to figure out the right approach for proactive monitoring
|
|
65
|
+
/*
|
|
66
|
+
,{
|
|
67
|
+
name: "start_error_monitoring",
|
|
68
|
+
description:
|
|
69
|
+
"🔍 **SIMPLE ERROR MONITORING** - Starts a lightweight background process that watches your app for errors and alerts you in real-time.\n\n⚡ **INSTANT ACTIVATION:**\n• Claude offers to run the monitoring script immediately\n• Just say 'yes' or 'monitor my app' to start\n• Simple 15-line Python script that just works\n• Real-time alerts when errors occur\n\n💡 **WHAT IT DOES:**\n• Watches for ERROR, FAIL, Exception, TypeError, CRASH keywords\n• Shows the error line when detected\n• Prompts you to let Claude debug\n• That's it - simple and effective!\n\n🎯 **USAGE FLOW:**\n1. User: 'monitor my app'\n2. Claude: 'Should I start monitoring now?'\n3. User: 'yes'\n4. Claude runs the script → monitoring active\n5. When errors appear → 'Tell me: debug my app'\n\n✨ **THE BEAUTY:**\n• No complex features - just works\n• Lightweight and fast\n• Perfect for quick error detection",
|
|
70
|
+
category: "Monitoring",
|
|
71
|
+
parameters: [
|
|
72
|
+
{
|
|
73
|
+
name: "projectName",
|
|
74
|
+
type: "string",
|
|
75
|
+
optional: true,
|
|
76
|
+
description: "Project name to monitor (if multiple dev3000 instances are running)"
|
|
77
|
+
}
|
|
78
|
+
]
|
|
79
|
+
}
|
|
80
|
+
*/
|
|
64
81
|
]
|
|
65
82
|
|
|
66
83
|
return NextResponse.json({
|
|
@@ -6,10 +6,12 @@ export default function RootLayout({ children }: { children: React.ReactNode })
|
|
|
6
6
|
<html lang="en" className="h-full">
|
|
7
7
|
<head>
|
|
8
8
|
<title>🎯 dev3000</title>
|
|
9
|
-
<link rel="icon" href="/favicon.ico"
|
|
10
|
-
<link rel="icon" href="/favicon.svg" type="image/svg+xml" />
|
|
9
|
+
<link rel="icon" href="/favicon.ico" type="image/x-icon" />
|
|
10
|
+
<link rel="icon" href="/favicon.svg" type="image/svg+xml" sizes="32x32" />
|
|
11
11
|
<link rel="icon" href="/favicon-16.svg" type="image/svg+xml" sizes="16x16" />
|
|
12
|
+
<link rel="icon" href="/favicon-64.svg" type="image/svg+xml" sizes="64x64" />
|
|
12
13
|
<link rel="apple-touch-icon" href="/favicon-180.png" />
|
|
14
|
+
<link rel="shortcut icon" href="/favicon.svg" />
|
|
13
15
|
<meta name="theme-color" content="#1f2937" />
|
|
14
16
|
</head>
|
|
15
17
|
<body className="h-full">{children}</body>
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest"
|
|
2
|
+
|
|
3
|
+
// This test file exists to document and test the critical infinite loop prevention
|
|
4
|
+
// in LogsClient.tsx. The loadInitialLogs function must NEVER be added to the
|
|
5
|
+
// useEffect dependencies array.
|
|
6
|
+
|
|
7
|
+
// This test file documents the critical infinite loop prevention pattern
|
|
8
|
+
// without needing to mock the actual React component
|
|
9
|
+
|
|
10
|
+
describe("LogsClient Infinite Loop Prevention", () => {
|
|
11
|
+
it("documents the critical infinite loop prevention pattern", () => {
|
|
12
|
+
// This test documents the critical pattern in LogsClient.tsx
|
|
13
|
+
// The loadInitialLogs function creates a new function reference on every render
|
|
14
|
+
// If it were included in useEffect dependencies, it would cause:
|
|
15
|
+
// 1. useEffect to run
|
|
16
|
+
// 2. loadInitialLogs to be called
|
|
17
|
+
// 3. State updates from loadInitialLogs
|
|
18
|
+
// 4. Component re-render
|
|
19
|
+
// 5. New loadInitialLogs function reference
|
|
20
|
+
// 6. useEffect runs again (because dependency changed)
|
|
21
|
+
// 7. Infinite loop!
|
|
22
|
+
|
|
23
|
+
// The correct pattern is to exclude it from dependencies
|
|
24
|
+
// and use the eslint-disable comment
|
|
25
|
+
expect(true).toBe(true)
|
|
26
|
+
})
|
|
27
|
+
|
|
28
|
+
it("simulates what would happen with incorrect dependencies", () => {
|
|
29
|
+
let renderCount = 0
|
|
30
|
+
let effectCount = 0
|
|
31
|
+
|
|
32
|
+
// This simulates the problematic pattern
|
|
33
|
+
const simulateBadPattern = () => {
|
|
34
|
+
renderCount++
|
|
35
|
+
|
|
36
|
+
// This represents loadInitialLogs - new function each render
|
|
37
|
+
const loadData = () => {
|
|
38
|
+
// Simulate state update that causes re-render
|
|
39
|
+
renderCount++
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// Simulate useEffect with loadData in dependencies
|
|
43
|
+
// In real code, this would cause infinite loop
|
|
44
|
+
if (renderCount === 1) {
|
|
45
|
+
effectCount++
|
|
46
|
+
loadData() // This would trigger another render
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
simulateBadPattern()
|
|
51
|
+
|
|
52
|
+
// In the bad pattern, we'd have multiple renders
|
|
53
|
+
// In our fixed pattern, we only have initial render
|
|
54
|
+
expect(renderCount).toBeGreaterThan(1) // Bad pattern causes multiple renders
|
|
55
|
+
expect(effectCount).toBe(1) // Effect runs once
|
|
56
|
+
})
|
|
57
|
+
|
|
58
|
+
it("validates the retry limit mechanism", () => {
|
|
59
|
+
// Test the retry counting logic
|
|
60
|
+
let retryCount = 0
|
|
61
|
+
const maxRetries = 5
|
|
62
|
+
const failedUrl = "/api/logs/tail?test=1"
|
|
63
|
+
let lastFailedUrl = null
|
|
64
|
+
|
|
65
|
+
// Simulate retry logic
|
|
66
|
+
const attemptFetch = (url: string): boolean => {
|
|
67
|
+
if (lastFailedUrl === url && retryCount >= maxRetries) {
|
|
68
|
+
// Stop - max retries reached
|
|
69
|
+
return false
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
if (lastFailedUrl !== url) {
|
|
73
|
+
// New URL, reset counter
|
|
74
|
+
retryCount = 1
|
|
75
|
+
lastFailedUrl = url
|
|
76
|
+
} else {
|
|
77
|
+
// Same URL, increment counter
|
|
78
|
+
retryCount++
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
return true // Continue trying
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// Test max retries for same URL
|
|
85
|
+
let attempts = 0
|
|
86
|
+
while (attemptFetch(failedUrl) && attempts < 10) {
|
|
87
|
+
attempts++
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
expect(attempts).toBe(5) // Should stop at max retries
|
|
91
|
+
expect(retryCount).toBe(5)
|
|
92
|
+
|
|
93
|
+
// Test reset for new URL
|
|
94
|
+
const newUrl = "/api/logs/tail?test=2"
|
|
95
|
+
expect(attemptFetch(newUrl)).toBe(true)
|
|
96
|
+
expect(retryCount).toBe(1) // Reset for new URL
|
|
97
|
+
})
|
|
98
|
+
|
|
99
|
+
it("validates the hasLoadedInitial flag prevents duplicate loads", () => {
|
|
100
|
+
let hasLoadedInitial = false
|
|
101
|
+
let loadCount = 0
|
|
102
|
+
|
|
103
|
+
const loadInitialLogs = () => {
|
|
104
|
+
loadCount++
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// Simulate the useEffect logic
|
|
108
|
+
const simulateEffect = (hasData: boolean) => {
|
|
109
|
+
if (!hasData && !hasLoadedInitial) {
|
|
110
|
+
hasLoadedInitial = true
|
|
111
|
+
loadInitialLogs()
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// First render - no data
|
|
116
|
+
simulateEffect(false)
|
|
117
|
+
expect(loadCount).toBe(1)
|
|
118
|
+
expect(hasLoadedInitial).toBe(true)
|
|
119
|
+
|
|
120
|
+
// Subsequent renders - should not load again
|
|
121
|
+
simulateEffect(false)
|
|
122
|
+
simulateEffect(false)
|
|
123
|
+
simulateEffect(false)
|
|
124
|
+
|
|
125
|
+
expect(loadCount).toBe(1) // Still only loaded once
|
|
126
|
+
})
|
|
127
|
+
})
|