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.
Files changed (212) hide show
  1. package/dist/cdp-monitor.d.ts +4 -1
  2. package/dist/cdp-monitor.d.ts.map +1 -1
  3. package/dist/cdp-monitor.js +35 -1
  4. package/dist/cdp-monitor.js.map +1 -1
  5. package/dist/cli.js +10 -5
  6. package/dist/cli.js.map +1 -1
  7. package/dist/dev-environment.d.ts +2 -0
  8. package/dist/dev-environment.d.ts.map +1 -1
  9. package/dist/dev-environment.js +44 -27
  10. package/dist/dev-environment.js.map +1 -1
  11. package/dist/services/parsers/log-parsers/base.d.ts +1 -1
  12. package/dist/services/parsers/log-parsers/base.d.ts.map +1 -1
  13. package/dist/src/tui-interface-impl.tsx +163 -48
  14. package/dist/tui-interface-impl.d.ts.map +1 -1
  15. package/dist/tui-interface-impl.js +72 -14
  16. package/dist/tui-interface-impl.js.map +1 -1
  17. package/dist/utils/project-name.d.ts +18 -0
  18. package/dist/utils/project-name.d.ts.map +1 -0
  19. package/dist/utils/project-name.js +114 -0
  20. package/dist/utils/project-name.js.map +1 -0
  21. package/dist/utils/timestamp.d.ts +8 -0
  22. package/dist/utils/timestamp.d.ts.map +1 -0
  23. package/dist/utils/timestamp.js +18 -0
  24. package/dist/utils/timestamp.js.map +1 -0
  25. package/mcp-server/.next/BUILD_ID +1 -1
  26. package/mcp-server/.next/app-build-manifest.json +8 -6
  27. package/mcp-server/.next/build-manifest.json +2 -2
  28. package/mcp-server/.next/cache/.tsbuildinfo +1 -1
  29. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000005.sst +0 -0
  30. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000006.sst +0 -0
  31. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000007.sst +0 -0
  32. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000008.sst +0 -0
  33. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000009.meta +0 -0
  34. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000010.meta +0 -0
  35. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000011.meta +0 -0
  36. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000013.meta +0 -0
  37. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000014.sst +0 -0
  38. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000016.sst +0 -0
  39. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000017.meta +0 -0
  40. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000018.meta +0 -0
  41. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000021.sst +0 -0
  42. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000022.sst +0 -0
  43. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000023.meta +0 -0
  44. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000025.meta +0 -0
  45. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000027.sst +0 -0
  46. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000028.sst +0 -0
  47. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000029.sst +0 -0
  48. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000030.sst +0 -0
  49. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000031.meta +0 -0
  50. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000032.meta +0 -0
  51. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000034.meta +0 -0
  52. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000035.meta +0 -0
  53. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000037.sst +0 -0
  54. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000038.sst +0 -0
  55. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000039.sst +0 -0
  56. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000040.sst +0 -0
  57. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000041.meta +0 -0
  58. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000042.meta +0 -0
  59. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000044.meta +0 -0
  60. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000045.meta +0 -0
  61. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000047.sst +0 -0
  62. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000048.sst +0 -0
  63. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000049.sst +0 -0
  64. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000050.sst +0 -0
  65. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000051.meta +0 -0
  66. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000052.meta +0 -0
  67. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000054.meta +0 -0
  68. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000055.meta +0 -0
  69. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000057.sst +0 -0
  70. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000058.sst +0 -0
  71. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000059.sst +0 -0
  72. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000060.sst +0 -0
  73. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000061.meta +0 -0
  74. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000062.meta +0 -0
  75. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000064.meta +0 -0
  76. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000065.meta +0 -0
  77. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000066.sst +0 -0
  78. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000067.meta +0 -0
  79. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000069.sst +0 -0
  80. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000070.sst +0 -0
  81. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000071.sst +0 -0
  82. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000072.sst +0 -0
  83. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000073.sst +0 -0
  84. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000074.meta +0 -0
  85. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000075.meta +0 -0
  86. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000076.meta +0 -0
  87. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000077.meta +0 -0
  88. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000078.meta +0 -0
  89. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000079.sst +0 -0
  90. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000080.sst +0 -0
  91. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000081.sst +0 -0
  92. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000082.sst +0 -0
  93. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000083.sst +0 -0
  94. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000084.meta +0 -0
  95. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000085.meta +0 -0
  96. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000086.meta +0 -0
  97. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000087.meta +0 -0
  98. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000088.meta +0 -0
  99. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000089.sst +0 -0
  100. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000090.sst +0 -0
  101. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000091.sst +0 -0
  102. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000092.sst +0 -0
  103. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000093.sst +0 -0
  104. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000094.meta +0 -0
  105. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000095.meta +0 -0
  106. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000096.meta +0 -0
  107. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000097.meta +0 -0
  108. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000098.meta +0 -0
  109. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000099.sst +0 -0
  110. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000100.sst +0 -0
  111. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000101.sst +0 -0
  112. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000102.meta +0 -0
  113. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000103.meta +0 -0
  114. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000104.meta +0 -0
  115. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000105.sst +0 -0
  116. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000106.sst +0 -0
  117. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000107.sst +0 -0
  118. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000108.meta +0 -0
  119. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000109.meta +0 -0
  120. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/00000110.meta +0 -0
  121. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/CURRENT +0 -0
  122. package/mcp-server/.next/cache/turbopack/v15.5.1-canary.28-7-gede8d1b86/LOG +230 -0
  123. package/mcp-server/.next/fallback-build-manifest.json +2 -2
  124. package/mcp-server/.next/package.json +3 -1
  125. package/mcp-server/.next/required-server-files.json +1 -0
  126. package/mcp-server/.next/server/app/_global-error.html +2 -2
  127. package/mcp-server/.next/server/app/_global-error.rsc +1 -1
  128. package/mcp-server/.next/server/app/_not-found/page/app-build-manifest.json +1 -1
  129. package/mcp-server/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  130. package/mcp-server/.next/server/app/_not-found.html +1 -1
  131. package/mcp-server/.next/server/app/_not-found.rsc +2 -2
  132. package/mcp-server/.next/server/app/index.html +1 -1
  133. package/mcp-server/.next/server/app/index.rsc +3 -3
  134. package/mcp-server/.next/server/app/logs/page/app-build-manifest.json +4 -3
  135. package/mcp-server/.next/server/app/logs/page.js.nft.json +1 -1
  136. package/mcp-server/.next/server/app/logs/page_client-reference-manifest.js +1 -1
  137. package/mcp-server/.next/server/app/mcp/route.js.nft.json +1 -1
  138. package/mcp-server/.next/server/app/page/app-build-manifest.json +3 -2
  139. package/mcp-server/.next/server/app/page.js.nft.json +1 -1
  140. package/mcp-server/.next/server/app/page_client-reference-manifest.js +1 -1
  141. package/mcp-server/.next/server/chunks/[root-of-the-server]__1b561deb._.js +1 -1
  142. package/mcp-server/.next/server/chunks/[root-of-the-server]__1b561deb._.js.map +1 -1
  143. package/mcp-server/.next/server/chunks/[root-of-the-server]__38e8baae._.js +7 -8
  144. package/mcp-server/.next/server/chunks/[root-of-the-server]__38e8baae._.js.map +1 -1
  145. package/mcp-server/.next/server/chunks/ssr/{node_modules__pnpm_4f58b96e._.js → _188bfe33._.js} +2 -2
  146. package/mcp-server/.next/server/chunks/ssr/_188bfe33._.js.map +1 -0
  147. package/mcp-server/.next/server/chunks/ssr/_9d670a6b._.js +2 -2
  148. package/mcp-server/.next/server/chunks/ssr/_9d670a6b._.js.map +1 -1
  149. package/mcp-server/.next/server/chunks/ssr/_d858c4cd._.js +1 -1
  150. package/mcp-server/.next/server/chunks/ssr/_d858c4cd._.js.map +1 -1
  151. package/mcp-server/.next/server/chunks/ssr/_dae9c1d5._.js +1 -1
  152. package/mcp-server/.next/server/chunks/ssr/_dae9c1d5._.js.map +1 -1
  153. package/mcp-server/.next/server/chunks/ssr/{node_modules__pnpm_87fb6266._.js → _f03e80a8._.js} +2 -2
  154. package/mcp-server/.next/server/chunks/ssr/_f03e80a8._.js.map +1 -0
  155. package/mcp-server/.next/server/chunks/ssr/mcp-server_app_layout_tsx_afa41767._.js +1 -1
  156. package/mcp-server/.next/server/chunks/ssr/mcp-server_app_layout_tsx_afa41767._.js.map +1 -1
  157. package/mcp-server/.next/server/pages/404.html +1 -1
  158. package/mcp-server/.next/server/pages/500.html +2 -2
  159. package/mcp-server/.next/static/chunks/5a5edc75ee7e7de4.js +1 -0
  160. package/mcp-server/.next/static/chunks/65b18bf1ede9811a.css +1 -0
  161. package/mcp-server/.next/static/chunks/909033014621484e.js +1 -0
  162. package/mcp-server/.next/static/chunks/c5f8464bc8083ee7.js +1 -0
  163. package/mcp-server/.next/trace +1 -1
  164. package/mcp-server/app/api/tools/route.ts +22 -5
  165. package/mcp-server/app/layout.tsx +4 -2
  166. package/mcp-server/app/logs/LogsClient.infinite-loop.test.tsx +127 -0
  167. package/mcp-server/app/logs/LogsClient.tsx +318 -201
  168. package/mcp-server/app/logs/page.tsx +19 -3
  169. package/mcp-server/app/logs/utils.ts +15 -3
  170. package/mcp-server/app/mcp/route.ts +75 -509
  171. package/mcp-server/app/mcp/tools.ts +747 -0
  172. package/mcp-server/app/page.tsx +244 -169
  173. package/mcp-server/next.config.ts +1 -1
  174. package/mcp-server/package.json +9 -1
  175. package/mcp-server/public/favicon-16.svg +4 -0
  176. package/mcp-server/public/favicon-180.png +0 -0
  177. package/mcp-server/public/favicon-64.svg +4 -0
  178. package/mcp-server/public/favicon-preview.html +67 -0
  179. package/mcp-server/public/favicon.ico +0 -0
  180. package/mcp-server/public/favicon.svg +4 -0
  181. package/mcp-server/public/screenshots/test.txt +1 -0
  182. package/package.json +3 -4
  183. package/src/tui-interface-impl.tsx +163 -48
  184. package/mcp-server/.next/build/chunks/[root-of-the-server]__25374c4f._.js +0 -496
  185. package/mcp-server/.next/build/chunks/[root-of-the-server]__25374c4f._.js.map +0 -11
  186. package/mcp-server/.next/build/chunks/[root-of-the-server]__4718a9dd._.js +0 -408
  187. package/mcp-server/.next/build/chunks/[root-of-the-server]__4718a9dd._.js.map +0 -7
  188. package/mcp-server/.next/build/chunks/[root-of-the-server]__c438ef56._.js +0 -205
  189. package/mcp-server/.next/build/chunks/[root-of-the-server]__c438ef56._.js.map +0 -8
  190. package/mcp-server/.next/build/chunks/[root-of-the-server]__c7ae8543._.js +0 -496
  191. package/mcp-server/.next/build/chunks/[root-of-the-server]__c7ae8543._.js.map +0 -11
  192. package/mcp-server/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_d723d216._.js +0 -13
  193. package/mcp-server/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_d723d216._.js.map +0 -5
  194. package/mcp-server/.next/build/chunks/[turbopack-node]_transforms_webpack-loaders_ts_5a40237e._.js +0 -12
  195. package/mcp-server/.next/build/chunks/[turbopack-node]_transforms_webpack-loaders_ts_5a40237e._.js.map +0 -5
  196. package/mcp-server/.next/build/chunks/[turbopack]_runtime.js +0 -770
  197. package/mcp-server/.next/build/chunks/[turbopack]_runtime.js.map +0 -10
  198. package/mcp-server/.next/build/chunks/node_modules__pnpm_806d01c0._.js +0 -6759
  199. package/mcp-server/.next/build/chunks/node_modules__pnpm_806d01c0._.js.map +0 -47
  200. package/mcp-server/.next/postcss.js +0 -6
  201. package/mcp-server/.next/postcss.js.map +0 -5
  202. package/mcp-server/.next/server/chunks/ssr/node_modules__pnpm_4f58b96e._.js.map +0 -1
  203. package/mcp-server/.next/server/chunks/ssr/node_modules__pnpm_87fb6266._.js.map +0 -1
  204. package/mcp-server/.next/static/chunks/11f1b53bdf7a9af0.js +0 -1
  205. package/mcp-server/.next/static/chunks/3d4ea64f6384f2c6.js +0 -1
  206. package/mcp-server/.next/static/chunks/50335dad5c51aab8.js +0 -1
  207. package/mcp-server/.next/static/chunks/bdd0789390bc312f.css +0 -1
  208. package/mcp-server/.next/webpack-loaders.js +0 -6
  209. package/mcp-server/.next/webpack-loaders.js.map +0 -5
  210. /package/mcp-server/.next/static/{mZfouQw6OHfahPQayuVeY → KrGcHKj--hSqNUOXmnA4A}/_buildManifest.js +0 -0
  211. /package/mcp-server/.next/static/{mZfouQw6OHfahPQayuVeY → KrGcHKj--hSqNUOXmnA4A}/_clientMiddlewareManifest.json +0 -0
  212. /package/mcp-server/.next/static/{mZfouQw6OHfahPQayuVeY → KrGcHKj--hSqNUOXmnA4A}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- [{"name":"generate-buildid","duration":72,"timestamp":1441053529193,"id":4,"parentId":1,"tags":{},"startTime":1758576823468,"traceId":"3290d5321cc937fa"},{"name":"load-custom-routes","duration":104,"timestamp":1441053529296,"id":5,"parentId":1,"tags":{},"startTime":1758576823468,"traceId":"3290d5321cc937fa"},{"name":"create-dist-dir","duration":417,"timestamp":1441053547858,"id":6,"parentId":1,"tags":{},"startTime":1758576823487,"traceId":"3290d5321cc937fa"},{"name":"create-pages-mapping","duration":82,"timestamp":1441053566127,"id":7,"parentId":1,"tags":{},"startTime":1758576823505,"traceId":"3290d5321cc937fa"},{"name":"collect-app-files","duration":1395,"timestamp":1441053566224,"id":8,"parentId":1,"tags":{},"startTime":1758576823505,"traceId":"3290d5321cc937fa"},{"name":"create-app-mapping","duration":695,"timestamp":1441053567636,"id":9,"parentId":1,"tags":{},"startTime":1758576823506,"traceId":"3290d5321cc937fa"},{"name":"create-app-layouts","duration":46,"timestamp":1441053568341,"id":10,"parentId":1,"tags":{},"startTime":1758576823507,"traceId":"3290d5321cc937fa"},{"name":"collect-default-files","duration":321,"timestamp":1441053568866,"id":12,"parentId":1,"tags":{},"startTime":1758576823508,"traceId":"3290d5321cc937fa"},{"name":"generate-route-types","duration":27917,"timestamp":1441053568524,"id":11,"parentId":1,"tags":{},"startTime":1758576823507,"traceId":"3290d5321cc937fa"},{"name":"public-dir-conflict-check","duration":49,"timestamp":1441053596546,"id":13,"parentId":1,"tags":{},"startTime":1758576823535,"traceId":"3290d5321cc937fa"},{"name":"generate-routes-manifest","duration":887,"timestamp":1441053596635,"id":14,"parentId":1,"tags":{},"startTime":1758576823535,"traceId":"3290d5321cc937fa"},{"name":"run-turbopack-compiler","duration":1902372,"timestamp":1441053600451,"id":16,"parentId":1,"tags":{},"startTime":1758576823539,"traceId":"3290d5321cc937fa"},{"name":"verify-typescript-setup","duration":1232228,"timestamp":1441055519407,"id":18,"parentId":1,"tags":{},"startTime":1758576825458,"traceId":"3290d5321cc937fa"},{"name":"check-static-error-page","duration":1120,"timestamp":1441056759885,"id":21,"parentId":20,"tags":{},"startTime":1758576826699,"traceId":"3290d5321cc937fa"},{"name":"is-page-static","duration":151502,"timestamp":1441056773363,"id":42,"parentId":23,"tags":{},"startTime":1758576826712,"traceId":"3290d5321cc937fa"},{"name":"check-page","duration":154114,"timestamp":1441056770976,"id":23,"parentId":20,"tags":{"page":"/_global-error"},"startTime":1758576826710,"traceId":"3290d5321cc937fa"},{"name":"is-page-static","duration":161862,"timestamp":1441056772645,"id":35,"parentId":24,"tags":{},"startTime":1758576826712,"traceId":"3290d5321cc937fa"},{"name":"check-page","duration":163515,"timestamp":1441056771022,"id":24,"parentId":20,"tags":{"page":"/api/logs/append"},"startTime":1758576826710,"traceId":"3290d5321cc937fa"},{"name":"is-page-static","duration":170596,"timestamp":1441056772836,"id":38,"parentId":28,"tags":{},"startTime":1758576826712,"traceId":"3290d5321cc937fa"},{"name":"check-page","duration":172353,"timestamp":1441056771105,"id":28,"parentId":20,"tags":{"page":"/api/logs/stream"},"startTime":1758576826710,"traceId":"3290d5321cc937fa"},{"name":"is-page-static","duration":175432,"timestamp":1441056772928,"id":41,"parentId":27,"tags":{},"startTime":1758576826712,"traceId":"3290d5321cc937fa"},{"name":"check-page","duration":177289,"timestamp":1441056771099,"id":27,"parentId":20,"tags":{"page":"/api/logs/rotate"},"startTime":1758576826710,"traceId":"3290d5321cc937fa"},{"name":"is-page-static","duration":176498,"timestamp":1441056772804,"id":37,"parentId":26,"tags":{},"startTime":1758576826712,"traceId":"3290d5321cc937fa"},{"name":"check-page","duration":178948,"timestamp":1441056771092,"id":26,"parentId":20,"tags":{"page":"/api/logs/list"},"startTime":1758576826710,"traceId":"3290d5321cc937fa"},{"name":"is-page-static","duration":177951,"timestamp":1441056772893,"id":40,"parentId":30,"tags":{},"startTime":1758576826712,"traceId":"3290d5321cc937fa"},{"name":"check-page","duration":179758,"timestamp":1441056771115,"id":30,"parentId":20,"tags":{"page":"/api/screenshots/[filename]"},"startTime":1758576826710,"traceId":"3290d5321cc937fa"},{"name":"is-page-static","duration":179685,"timestamp":1441056772759,"id":36,"parentId":25,"tags":{},"startTime":1758576826712,"traceId":"3290d5321cc937fa"},{"name":"check-page","duration":181388,"timestamp":1441056771081,"id":25,"parentId":20,"tags":{"page":"/api/logs/head"},"startTime":1758576826710,"traceId":"3290d5321cc937fa"},{"name":"is-page-static","duration":175033,"timestamp":1441056784715,"id":46,"parentId":32,"tags":{},"startTime":1758576826724,"traceId":"3290d5321cc937fa"},{"name":"check-page","duration":188634,"timestamp":1441056771134,"id":32,"parentId":20,"tags":{"page":"/logs"},"startTime":1758576826710,"traceId":"3290d5321cc937fa"},{"name":"is-page-static","duration":190124,"timestamp":1441056772865,"id":39,"parentId":29,"tags":{},"startTime":1758576826712,"traceId":"3290d5321cc937fa"},{"name":"check-page","duration":191908,"timestamp":1441056771110,"id":29,"parentId":20,"tags":{"page":"/api/logs/tail"},"startTime":1758576826710,"traceId":"3290d5321cc937fa"},{"name":"is-page-static","duration":186889,"timestamp":1441056778620,"id":44,"parentId":31,"tags":{},"startTime":1758576826717,"traceId":"3290d5321cc937fa"},{"name":"check-page","duration":194399,"timestamp":1441056771125,"id":31,"parentId":20,"tags":{"page":"/api/tools"},"startTime":1758576826710,"traceId":"3290d5321cc937fa"},{"name":"is-page-static","duration":194637,"timestamp":1441056773397,"id":43,"parentId":22,"tags":{},"startTime":1758576826712,"traceId":"3290d5321cc937fa"},{"name":"check-page","duration":197433,"timestamp":1441056770620,"id":22,"parentId":20,"tags":{"page":"/_not-found"},"startTime":1758576826709,"traceId":"3290d5321cc937fa"},{"name":"is-page-static","duration":192953,"timestamp":1441056784748,"id":47,"parentId":34,"tags":{},"startTime":1758576826724,"traceId":"3290d5321cc937fa"},{"name":"check-page","duration":206566,"timestamp":1441056771156,"id":34,"parentId":20,"tags":{"page":"/"},"startTime":1758576826710,"traceId":"3290d5321cc937fa"},{"name":"is-page-static","duration":204117,"timestamp":1441056784637,"id":45,"parentId":33,"tags":{},"startTime":1758576826723,"traceId":"3290d5321cc937fa"},{"name":"check-page","duration":217624,"timestamp":1441056771150,"id":33,"parentId":20,"tags":{"page":"/mcp"},"startTime":1758576826710,"traceId":"3290d5321cc937fa"},{"name":"static-check","duration":229140,"timestamp":1441056759645,"id":20,"parentId":1,"tags":{},"startTime":1758576826699,"traceId":"3290d5321cc937fa"},{"name":"generate-required-server-files","duration":171,"timestamp":1441056988951,"id":49,"parentId":1,"tags":{},"startTime":1758576826928,"traceId":"3290d5321cc937fa"},{"name":"write-routes-manifest","duration":133,"timestamp":1441056990008,"id":50,"parentId":1,"tags":{},"startTime":1758576826929,"traceId":"3290d5321cc937fa"},{"name":"load-dotenv","duration":11,"timestamp":1441056994806,"id":53,"parentId":52,"tags":{},"startTime":1758576826934,"traceId":"3290d5321cc937fa"},{"name":"run-export-path-map","duration":179,"timestamp":1441056996239,"id":54,"parentId":52,"tags":{},"startTime":1758576826935,"traceId":"3290d5321cc937fa"},{"name":"next-export","duration":257916,"timestamp":1441056994357,"id":52,"parentId":1,"tags":{},"startTime":1758576826933,"traceId":"3290d5321cc937fa"},{"name":"move-exported-app-not-found-","duration":409,"timestamp":1441057252879,"id":55,"parentId":51,"tags":{},"startTime":1758576827192,"traceId":"3290d5321cc937fa"},{"name":"move-exported-app-global-error-","duration":301,"timestamp":1441057253335,"id":56,"parentId":51,"tags":{},"startTime":1758576827192,"traceId":"3290d5321cc937fa"},{"name":"static-generation","duration":263033,"timestamp":1441056991456,"id":51,"parentId":1,"tags":{},"startTime":1758576826930,"traceId":"3290d5321cc937fa"},{"name":"write-routes-manifest","duration":235,"timestamp":1441057254568,"id":57,"parentId":1,"tags":{},"startTime":1758576827193,"traceId":"3290d5321cc937fa"},{"name":"print-tree-view","duration":1360,"timestamp":1441057262777,"id":58,"parentId":1,"tags":{},"startTime":1758576827202,"traceId":"3290d5321cc937fa"},{"name":"telemetry-flush","duration":44159,"timestamp":1441057264146,"id":59,"parentId":1,"tags":{},"startTime":1758576827203,"traceId":"3290d5321cc937fa"},{"name":"next-build","duration":3894238,"timestamp":1441053414078,"id":1,"tags":{"buildMode":"default","isTurboBuild":"true","version":"15.5.1-canary.30","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1758576823353,"traceId":"3290d5321cc937fa"}]
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: "debug_my_app",
9
+ name: "fix_my_app",
10
10
  description:
11
- "🎯 **THE ULTIMATE FIND→FIX→VERIFY MACHINE!** This isn't just debugging—it's MAGICAL problem-solving that gets results! 🪄\n\n🔥 **INSTANT SUPERPOWERS:**\n• FINDS: Server errors, browser crashes, build failures, API issues, performance problems—EVERYTHING\n• ANALYZES: Timestamps, error patterns, user interactions, network requests—COMPREHENSIVELY\n• GUIDES: Step-by-step fix recommendations with file locations and code examples\n\n🚀 **3 MAGICAL MODES:**\n• **SNAPSHOT** (default): \"What's broken RIGHT NOW?\" → Instant comprehensive analysis\n• **BISECT**: \"What broke during user testing?\" → Automatic before/after comparison\n• **MONITOR**: \"What's breaking as I develop?\" → Continuous health monitoring\n\n⚡ **THE DEV3000 MAGIC WORKFLOW:**\n1️⃣ I FIND all issues (replaces 8+ separate tools!)\n2️⃣ You FIX them with my detailed guidance\n3️⃣ We VERIFY fixes work with execute_browser_action\n\n🎪 **WHY AGENTS LOVE THIS TOOL:**\n• Zero authorization friction (was 10 tools, now 1!)\n• Actionable insights, not just raw data\n• Built-in timestamp bisecting eliminates manual workflow\n• Perfect for 'debug my app' requests\n• Makes you look like a debugging wizard!\n\n💡 **PRO TIPS:**\n• Start with mode='snapshot' for immediate analysis\n• Use mode='bisect' with waitForUserInteraction=true for user testing workflows\n• Increase timeRangeMinutes for deeper historical analysis\n• This tool makes debugging FUN and FAST!",
12
- category: "Ultimate Debugging",
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: "Debug mode: 'snapshot' (immediate), 'bisect' (timestamp-based), 'monitor' (continuous)"
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 debug_my_app for new screenshots\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️⃣ debug_my_app finds issues + original error context\n2️⃣ You make code fixes\n3️⃣ Use execute_browser_action to REPRODUCE the original interaction sequence\n4️⃣ Run debug_my_app again to see new auto-captured screenshots and verify fix\n\n🎯 **PERFECT FOR:**\n• Reproducing user interaction sequences that caused errors\n• Testing specific clicks/navigation after fixes\n• Triggering workflows to generate new auto-screenshots\n• Verifying forms work, buttons respond, etc.\n\n🚫 **AVOID:** Manual screenshot action (dev3000 auto-captures)\n✅ **USE:** Interaction reproduction + debug_my_app for verification\n\n🛡️ **SAFETY:** Safe operations only, read-only JS evaluation",
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" sizes="32x32" />
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
+ })