dev3000 0.0.156 → 0.0.159

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 (516) hide show
  1. package/README.md +3 -1
  2. package/dist/cdp-monitor.d.ts +2 -3
  3. package/dist/cdp-monitor.d.ts.map +1 -1
  4. package/dist/cdp-monitor.js +5 -11
  5. package/dist/cdp-monitor.js.map +1 -1
  6. package/dist/cli.js +182 -161
  7. package/dist/cli.js.map +1 -1
  8. package/dist/commands/cloud-check-pr.js +2 -1
  9. package/dist/commands/cloud-check-pr.js.map +1 -1
  10. package/dist/commands/cloud-fix.d.ts +1 -2
  11. package/dist/commands/cloud-fix.d.ts.map +1 -1
  12. package/dist/commands/cloud-fix.js +49 -685
  13. package/dist/commands/cloud-fix.js.map +1 -1
  14. package/dist/components/PackageSelector.d.ts +3 -2
  15. package/dist/components/PackageSelector.d.ts.map +1 -1
  16. package/dist/components/PackageSelector.js +9 -4
  17. package/dist/components/PackageSelector.js.map +1 -1
  18. package/dist/dev-environment.d.ts +9 -40
  19. package/dist/dev-environment.d.ts.map +1 -1
  20. package/dist/dev-environment.js +245 -542
  21. package/dist/dev-environment.js.map +1 -1
  22. package/dist/skills/d3k/SKILL.md +35 -2
  23. package/dist/src/tui-interface-impl.tsx +2 -12
  24. package/dist/tui-interface-impl.d.ts +0 -1
  25. package/dist/tui-interface-impl.d.ts.map +1 -1
  26. package/dist/tui-interface-impl.js +3 -7
  27. package/dist/tui-interface-impl.js.map +1 -1
  28. package/dist/tui-interface-opentui.d.ts +0 -1
  29. package/dist/tui-interface-opentui.d.ts.map +1 -1
  30. package/dist/tui-interface-opentui.js +26 -10
  31. package/dist/tui-interface-opentui.js.map +1 -1
  32. package/dist/tui-interface.d.ts +0 -1
  33. package/dist/tui-interface.d.ts.map +1 -1
  34. package/dist/tui-interface.js.map +1 -1
  35. package/dist/utils/agent-browser.d.ts.map +1 -1
  36. package/dist/utils/agent-browser.js +18 -13
  37. package/dist/utils/agent-browser.js.map +1 -1
  38. package/dist/utils/agent-selection.d.ts +1 -0
  39. package/dist/utils/agent-selection.d.ts.map +1 -1
  40. package/dist/utils/agent-selection.js +26 -1
  41. package/dist/utils/agent-selection.js.map +1 -1
  42. package/dist/utils/d3k-dir.d.ts +3 -0
  43. package/dist/utils/d3k-dir.d.ts.map +1 -0
  44. package/dist/utils/d3k-dir.js +12 -0
  45. package/dist/utils/d3k-dir.js.map +1 -0
  46. package/dist/utils/skill-installer.d.ts +7 -7
  47. package/dist/utils/skill-installer.d.ts.map +1 -1
  48. package/dist/utils/skill-installer.js +131 -18
  49. package/dist/utils/skill-installer.js.map +1 -1
  50. package/dist/utils/user-config.d.ts +0 -1
  51. package/dist/utils/user-config.d.ts.map +1 -1
  52. package/dist/utils/user-config.js +0 -13
  53. package/dist/utils/user-config.js.map +1 -1
  54. package/package.json +9 -29
  55. package/src/tui-interface-impl.tsx +2 -12
  56. package/dist/commands/cloud-fix-workflow.d.ts +0 -16
  57. package/dist/commands/cloud-fix-workflow.d.ts.map +0 -1
  58. package/dist/commands/cloud-fix-workflow.js +0 -153
  59. package/dist/commands/cloud-fix-workflow.js.map +0 -1
  60. package/dist/commands/restart.d.ts +0 -8
  61. package/dist/commands/restart.d.ts.map +0 -1
  62. package/dist/commands/restart.js +0 -92
  63. package/dist/commands/restart.js.map +0 -1
  64. package/dist/utils/mcp-configs.d.ts +0 -6
  65. package/dist/utils/mcp-configs.d.ts.map +0 -1
  66. package/dist/utils/mcp-configs.js +0 -54
  67. package/dist/utils/mcp-configs.js.map +0 -1
  68. package/mcp-server/.next/BUILD_ID +0 -1
  69. package/mcp-server/.next/app-path-routes-manifest.json +0 -22
  70. package/mcp-server/.next/build/chunks/[root-of-the-server]__25374c4f._.js +0 -500
  71. package/mcp-server/.next/build/chunks/[root-of-the-server]__25374c4f._.js.map +0 -11
  72. package/mcp-server/.next/build/chunks/[root-of-the-server]__6e020478._.js +0 -441
  73. package/mcp-server/.next/build/chunks/[root-of-the-server]__6e020478._.js.map +0 -7
  74. package/mcp-server/.next/build/chunks/[root-of-the-server]__c438ef56._.js +0 -205
  75. package/mcp-server/.next/build/chunks/[root-of-the-server]__c438ef56._.js.map +0 -8
  76. package/mcp-server/.next/build/chunks/[root-of-the-server]__c7ae8543._.js +0 -500
  77. package/mcp-server/.next/build/chunks/[root-of-the-server]__c7ae8543._.js.map +0 -11
  78. package/mcp-server/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_7988927e._.js +0 -13
  79. package/mcp-server/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_7988927e._.js.map +0 -5
  80. package/mcp-server/.next/build/chunks/[turbopack-node]_transforms_webpack-loaders_ts_1efa112f._.js +0 -12
  81. package/mcp-server/.next/build/chunks/[turbopack-node]_transforms_webpack-loaders_ts_1efa112f._.js.map +0 -5
  82. package/mcp-server/.next/build/chunks/[turbopack]_runtime.js +0 -795
  83. package/mcp-server/.next/build/chunks/[turbopack]_runtime.js.map +0 -10
  84. package/mcp-server/.next/build/chunks/node_modules__bun_19755e4f._.js +0 -6758
  85. package/mcp-server/.next/build/chunks/node_modules__bun_19755e4f._.js.map +0 -47
  86. package/mcp-server/.next/build/package.json +0 -1
  87. package/mcp-server/.next/build/postcss.js +0 -6
  88. package/mcp-server/.next/build/postcss.js.map +0 -5
  89. package/mcp-server/.next/build/webpack-loaders.js +0 -6
  90. package/mcp-server/.next/build/webpack-loaders.js.map +0 -5
  91. package/mcp-server/.next/build-manifest.json +0 -20
  92. package/mcp-server/.next/export-marker.json +0 -6
  93. package/mcp-server/.next/fallback-build-manifest.json +0 -12
  94. package/mcp-server/.next/images-manifest.json +0 -66
  95. package/mcp-server/.next/next-minimal-server.js.nft.json +0 -1
  96. package/mcp-server/.next/next-server.js.nft.json +0 -1
  97. package/mcp-server/.next/package.json +0 -1
  98. package/mcp-server/.next/prerender-manifest.json +0 -85
  99. package/mcp-server/.next/required-server-files.js +0 -164
  100. package/mcp-server/.next/required-server-files.json +0 -164
  101. package/mcp-server/.next/routes-manifest.json +0 -171
  102. package/mcp-server/.next/server/app/_global-error/page/app-paths-manifest.json +0 -3
  103. package/mcp-server/.next/server/app/_global-error/page/build-manifest.json +0 -17
  104. package/mcp-server/.next/server/app/_global-error/page/next-font-manifest.json +0 -6
  105. package/mcp-server/.next/server/app/_global-error/page/react-loadable-manifest.json +0 -1
  106. package/mcp-server/.next/server/app/_global-error/page/server-reference-manifest.json +0 -4
  107. package/mcp-server/.next/server/app/_global-error/page.js +0 -10
  108. package/mcp-server/.next/server/app/_global-error/page.js.map +0 -5
  109. package/mcp-server/.next/server/app/_global-error/page.js.nft.json +0 -1
  110. package/mcp-server/.next/server/app/_global-error/page_client-reference-manifest.js +0 -2
  111. package/mcp-server/.next/server/app/_global-error.html +0 -2
  112. package/mcp-server/.next/server/app/_global-error.meta +0 -15
  113. package/mcp-server/.next/server/app/_global-error.rsc +0 -12
  114. package/mcp-server/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +0 -5
  115. package/mcp-server/.next/server/app/_global-error.segments/_full.segment.rsc +0 -12
  116. package/mcp-server/.next/server/app/_global-error.segments/_head.segment.rsc +0 -5
  117. package/mcp-server/.next/server/app/_global-error.segments/_index.segment.rsc +0 -4
  118. package/mcp-server/.next/server/app/_global-error.segments/_tree.segment.rsc +0 -1
  119. package/mcp-server/.next/server/app/_not-found/page/app-paths-manifest.json +0 -3
  120. package/mcp-server/.next/server/app/_not-found/page/build-manifest.json +0 -17
  121. package/mcp-server/.next/server/app/_not-found/page/next-font-manifest.json +0 -6
  122. package/mcp-server/.next/server/app/_not-found/page/react-loadable-manifest.json +0 -1
  123. package/mcp-server/.next/server/app/_not-found/page/server-reference-manifest.json +0 -4
  124. package/mcp-server/.next/server/app/_not-found/page.js +0 -13
  125. package/mcp-server/.next/server/app/_not-found/page.js.map +0 -5
  126. package/mcp-server/.next/server/app/_not-found/page.js.nft.json +0 -1
  127. package/mcp-server/.next/server/app/_not-found/page_client-reference-manifest.js +0 -2
  128. package/mcp-server/.next/server/app/_not-found.html +0 -1
  129. package/mcp-server/.next/server/app/_not-found.meta +0 -16
  130. package/mcp-server/.next/server/app/_not-found.rsc +0 -14
  131. package/mcp-server/.next/server/app/_not-found.segments/_full.segment.rsc +0 -14
  132. package/mcp-server/.next/server/app/_not-found.segments/_head.segment.rsc +0 -5
  133. package/mcp-server/.next/server/app/_not-found.segments/_index.segment.rsc +0 -6
  134. package/mcp-server/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +0 -5
  135. package/mcp-server/.next/server/app/_not-found.segments/_not-found.segment.rsc +0 -4
  136. package/mcp-server/.next/server/app/_not-found.segments/_tree.segment.rsc +0 -2
  137. package/mcp-server/.next/server/app/api/jank/[session]/route/app-paths-manifest.json +0 -3
  138. package/mcp-server/.next/server/app/api/jank/[session]/route/build-manifest.json +0 -11
  139. package/mcp-server/.next/server/app/api/jank/[session]/route/server-reference-manifest.json +0 -4
  140. package/mcp-server/.next/server/app/api/jank/[session]/route.js +0 -10
  141. package/mcp-server/.next/server/app/api/jank/[session]/route.js.map +0 -5
  142. package/mcp-server/.next/server/app/api/jank/[session]/route.js.nft.json +0 -1
  143. package/mcp-server/.next/server/app/api/jank/[session]/route_client-reference-manifest.js +0 -2
  144. package/mcp-server/.next/server/app/api/logs/append/route/app-paths-manifest.json +0 -3
  145. package/mcp-server/.next/server/app/api/logs/append/route/build-manifest.json +0 -11
  146. package/mcp-server/.next/server/app/api/logs/append/route/server-reference-manifest.json +0 -4
  147. package/mcp-server/.next/server/app/api/logs/append/route.js +0 -6
  148. package/mcp-server/.next/server/app/api/logs/append/route.js.map +0 -5
  149. package/mcp-server/.next/server/app/api/logs/append/route.js.nft.json +0 -1
  150. package/mcp-server/.next/server/app/api/logs/append/route_client-reference-manifest.js +0 -2
  151. package/mcp-server/.next/server/app/api/logs/head/route/app-paths-manifest.json +0 -3
  152. package/mcp-server/.next/server/app/api/logs/head/route/build-manifest.json +0 -11
  153. package/mcp-server/.next/server/app/api/logs/head/route/server-reference-manifest.json +0 -4
  154. package/mcp-server/.next/server/app/api/logs/head/route.js +0 -6
  155. package/mcp-server/.next/server/app/api/logs/head/route.js.map +0 -5
  156. package/mcp-server/.next/server/app/api/logs/head/route.js.nft.json +0 -1
  157. package/mcp-server/.next/server/app/api/logs/head/route_client-reference-manifest.js +0 -2
  158. package/mcp-server/.next/server/app/api/logs/list/route/app-paths-manifest.json +0 -3
  159. package/mcp-server/.next/server/app/api/logs/list/route/build-manifest.json +0 -11
  160. package/mcp-server/.next/server/app/api/logs/list/route/server-reference-manifest.json +0 -4
  161. package/mcp-server/.next/server/app/api/logs/list/route.js +0 -6
  162. package/mcp-server/.next/server/app/api/logs/list/route.js.map +0 -5
  163. package/mcp-server/.next/server/app/api/logs/list/route.js.nft.json +0 -1
  164. package/mcp-server/.next/server/app/api/logs/list/route_client-reference-manifest.js +0 -2
  165. package/mcp-server/.next/server/app/api/logs/rotate/route/app-paths-manifest.json +0 -3
  166. package/mcp-server/.next/server/app/api/logs/rotate/route/build-manifest.json +0 -11
  167. package/mcp-server/.next/server/app/api/logs/rotate/route/server-reference-manifest.json +0 -4
  168. package/mcp-server/.next/server/app/api/logs/rotate/route.js +0 -8
  169. package/mcp-server/.next/server/app/api/logs/rotate/route.js.map +0 -5
  170. package/mcp-server/.next/server/app/api/logs/rotate/route.js.nft.json +0 -1
  171. package/mcp-server/.next/server/app/api/logs/rotate/route_client-reference-manifest.js +0 -2
  172. package/mcp-server/.next/server/app/api/logs/stream/route/app-paths-manifest.json +0 -3
  173. package/mcp-server/.next/server/app/api/logs/stream/route/build-manifest.json +0 -11
  174. package/mcp-server/.next/server/app/api/logs/stream/route/server-reference-manifest.json +0 -4
  175. package/mcp-server/.next/server/app/api/logs/stream/route.js +0 -6
  176. package/mcp-server/.next/server/app/api/logs/stream/route.js.map +0 -5
  177. package/mcp-server/.next/server/app/api/logs/stream/route.js.nft.json +0 -1
  178. package/mcp-server/.next/server/app/api/logs/stream/route_client-reference-manifest.js +0 -2
  179. package/mcp-server/.next/server/app/api/logs/tail/route/app-paths-manifest.json +0 -3
  180. package/mcp-server/.next/server/app/api/logs/tail/route/build-manifest.json +0 -11
  181. package/mcp-server/.next/server/app/api/logs/tail/route/server-reference-manifest.json +0 -4
  182. package/mcp-server/.next/server/app/api/logs/tail/route.js +0 -6
  183. package/mcp-server/.next/server/app/api/logs/tail/route.js.map +0 -5
  184. package/mcp-server/.next/server/app/api/logs/tail/route.js.nft.json +0 -1
  185. package/mcp-server/.next/server/app/api/logs/tail/route_client-reference-manifest.js +0 -2
  186. package/mcp-server/.next/server/app/api/orchestrator/route/app-paths-manifest.json +0 -3
  187. package/mcp-server/.next/server/app/api/orchestrator/route/build-manifest.json +0 -11
  188. package/mcp-server/.next/server/app/api/orchestrator/route/server-reference-manifest.json +0 -4
  189. package/mcp-server/.next/server/app/api/orchestrator/route.js +0 -9
  190. package/mcp-server/.next/server/app/api/orchestrator/route.js.map +0 -5
  191. package/mcp-server/.next/server/app/api/orchestrator/route.js.nft.json +0 -1
  192. package/mcp-server/.next/server/app/api/orchestrator/route_client-reference-manifest.js +0 -2
  193. package/mcp-server/.next/server/app/api/screenshots/[filename]/route/app-paths-manifest.json +0 -3
  194. package/mcp-server/.next/server/app/api/screenshots/[filename]/route/build-manifest.json +0 -11
  195. package/mcp-server/.next/server/app/api/screenshots/[filename]/route/server-reference-manifest.json +0 -4
  196. package/mcp-server/.next/server/app/api/screenshots/[filename]/route.js +0 -8
  197. package/mcp-server/.next/server/app/api/screenshots/[filename]/route.js.map +0 -5
  198. package/mcp-server/.next/server/app/api/screenshots/[filename]/route.js.nft.json +0 -1
  199. package/mcp-server/.next/server/app/api/screenshots/[filename]/route_client-reference-manifest.js +0 -2
  200. package/mcp-server/.next/server/app/api/screenshots/capture/route/app-paths-manifest.json +0 -3
  201. package/mcp-server/.next/server/app/api/screenshots/capture/route/build-manifest.json +0 -11
  202. package/mcp-server/.next/server/app/api/screenshots/capture/route/server-reference-manifest.json +0 -4
  203. package/mcp-server/.next/server/app/api/screenshots/capture/route.js +0 -9
  204. package/mcp-server/.next/server/app/api/screenshots/capture/route.js.map +0 -5
  205. package/mcp-server/.next/server/app/api/screenshots/capture/route.js.nft.json +0 -1
  206. package/mcp-server/.next/server/app/api/screenshots/capture/route_client-reference-manifest.js +0 -2
  207. package/mcp-server/.next/server/app/api/screenshots/clear/route/app-paths-manifest.json +0 -3
  208. package/mcp-server/.next/server/app/api/screenshots/clear/route/build-manifest.json +0 -11
  209. package/mcp-server/.next/server/app/api/screenshots/clear/route/server-reference-manifest.json +0 -4
  210. package/mcp-server/.next/server/app/api/screenshots/clear/route.js +0 -8
  211. package/mcp-server/.next/server/app/api/screenshots/clear/route.js.map +0 -5
  212. package/mcp-server/.next/server/app/api/screenshots/clear/route.js.nft.json +0 -1
  213. package/mcp-server/.next/server/app/api/screenshots/clear/route_client-reference-manifest.js +0 -2
  214. package/mcp-server/.next/server/app/api/screenshots/list/route/app-paths-manifest.json +0 -3
  215. package/mcp-server/.next/server/app/api/screenshots/list/route/build-manifest.json +0 -11
  216. package/mcp-server/.next/server/app/api/screenshots/list/route/server-reference-manifest.json +0 -4
  217. package/mcp-server/.next/server/app/api/screenshots/list/route.js +0 -8
  218. package/mcp-server/.next/server/app/api/screenshots/list/route.js.map +0 -5
  219. package/mcp-server/.next/server/app/api/screenshots/list/route.js.nft.json +0 -1
  220. package/mcp-server/.next/server/app/api/screenshots/list/route_client-reference-manifest.js +0 -2
  221. package/mcp-server/.next/server/app/api/teams/route/app-paths-manifest.json +0 -3
  222. package/mcp-server/.next/server/app/api/teams/route/build-manifest.json +0 -11
  223. package/mcp-server/.next/server/app/api/teams/route/server-reference-manifest.json +0 -4
  224. package/mcp-server/.next/server/app/api/teams/route.js +0 -8
  225. package/mcp-server/.next/server/app/api/teams/route.js.map +0 -5
  226. package/mcp-server/.next/server/app/api/teams/route.js.nft.json +0 -1
  227. package/mcp-server/.next/server/app/api/teams/route_client-reference-manifest.js +0 -2
  228. package/mcp-server/.next/server/app/api/tools/route/app-paths-manifest.json +0 -3
  229. package/mcp-server/.next/server/app/api/tools/route/build-manifest.json +0 -11
  230. package/mcp-server/.next/server/app/api/tools/route/server-reference-manifest.json +0 -4
  231. package/mcp-server/.next/server/app/api/tools/route.js +0 -8
  232. package/mcp-server/.next/server/app/api/tools/route.js.map +0 -5
  233. package/mcp-server/.next/server/app/api/tools/route.js.nft.json +0 -1
  234. package/mcp-server/.next/server/app/api/tools/route_client-reference-manifest.js +0 -2
  235. package/mcp-server/.next/server/app/index.html +0 -1
  236. package/mcp-server/.next/server/app/index.meta +0 -14
  237. package/mcp-server/.next/server/app/index.rsc +0 -18
  238. package/mcp-server/.next/server/app/index.segments/__PAGE__.segment.rsc +0 -9
  239. package/mcp-server/.next/server/app/index.segments/_full.segment.rsc +0 -18
  240. package/mcp-server/.next/server/app/index.segments/_head.segment.rsc +0 -5
  241. package/mcp-server/.next/server/app/index.segments/_index.segment.rsc +0 -6
  242. package/mcp-server/.next/server/app/index.segments/_tree.segment.rsc +0 -2
  243. package/mcp-server/.next/server/app/logs/page/app-paths-manifest.json +0 -3
  244. package/mcp-server/.next/server/app/logs/page/build-manifest.json +0 -17
  245. package/mcp-server/.next/server/app/logs/page/next-font-manifest.json +0 -6
  246. package/mcp-server/.next/server/app/logs/page/react-loadable-manifest.json +0 -1
  247. package/mcp-server/.next/server/app/logs/page/server-reference-manifest.json +0 -4
  248. package/mcp-server/.next/server/app/logs/page.js +0 -16
  249. package/mcp-server/.next/server/app/logs/page.js.map +0 -5
  250. package/mcp-server/.next/server/app/logs/page.js.nft.json +0 -1
  251. package/mcp-server/.next/server/app/logs/page_client-reference-manifest.js +0 -2
  252. package/mcp-server/.next/server/app/mcp/route/app-paths-manifest.json +0 -3
  253. package/mcp-server/.next/server/app/mcp/route/build-manifest.json +0 -11
  254. package/mcp-server/.next/server/app/mcp/route/server-reference-manifest.json +0 -4
  255. package/mcp-server/.next/server/app/mcp/route.js +0 -11
  256. package/mcp-server/.next/server/app/mcp/route.js.map +0 -5
  257. package/mcp-server/.next/server/app/mcp/route.js.nft.json +0 -1
  258. package/mcp-server/.next/server/app/mcp/route_client-reference-manifest.js +0 -2
  259. package/mcp-server/.next/server/app/page/app-paths-manifest.json +0 -3
  260. package/mcp-server/.next/server/app/page/build-manifest.json +0 -17
  261. package/mcp-server/.next/server/app/page/next-font-manifest.json +0 -6
  262. package/mcp-server/.next/server/app/page/react-loadable-manifest.json +0 -1
  263. package/mcp-server/.next/server/app/page/server-reference-manifest.json +0 -4
  264. package/mcp-server/.next/server/app/page.js +0 -15
  265. package/mcp-server/.next/server/app/page.js.map +0 -5
  266. package/mcp-server/.next/server/app/page.js.nft.json +0 -1
  267. package/mcp-server/.next/server/app/page_client-reference-manifest.js +0 -2
  268. package/mcp-server/.next/server/app/video/[session]/page/app-paths-manifest.json +0 -3
  269. package/mcp-server/.next/server/app/video/[session]/page/build-manifest.json +0 -17
  270. package/mcp-server/.next/server/app/video/[session]/page/next-font-manifest.json +0 -6
  271. package/mcp-server/.next/server/app/video/[session]/page/react-loadable-manifest.json +0 -1
  272. package/mcp-server/.next/server/app/video/[session]/page/server-reference-manifest.json +0 -4
  273. package/mcp-server/.next/server/app/video/[session]/page.js +0 -15
  274. package/mcp-server/.next/server/app/video/[session]/page.js.map +0 -5
  275. package/mcp-server/.next/server/app/video/[session]/page.js.nft.json +0 -1
  276. package/mcp-server/.next/server/app/video/[session]/page_client-reference-manifest.js +0 -2
  277. package/mcp-server/.next/server/app-paths-manifest.json +0 -22
  278. package/mcp-server/.next/server/chunks/250ae__next-internal_server_app_api_screenshots_[filename]_route_actions_4f8d6e37.js +0 -3
  279. package/mcp-server/.next/server/chunks/250ae__next-internal_server_app_api_screenshots_[filename]_route_actions_4f8d6e37.js.map +0 -1
  280. package/mcp-server/.next/server/chunks/250ae__next-internal_server_app_api_screenshots_capture_route_actions_4034f26c.js +0 -3
  281. package/mcp-server/.next/server/chunks/250ae__next-internal_server_app_api_screenshots_capture_route_actions_4034f26c.js.map +0 -1
  282. package/mcp-server/.next/server/chunks/250ae__next-internal_server_app_api_screenshots_clear_route_actions_e26206f4.js +0 -3
  283. package/mcp-server/.next/server/chunks/250ae__next-internal_server_app_api_screenshots_clear_route_actions_e26206f4.js.map +0 -1
  284. package/mcp-server/.next/server/chunks/[externals]__0e1fd2ca._.js +0 -3
  285. package/mcp-server/.next/server/chunks/[externals]__0e1fd2ca._.js.map +0 -1
  286. package/mcp-server/.next/server/chunks/[externals]_next_dist_2a398dc7._.js +0 -3
  287. package/mcp-server/.next/server/chunks/[externals]_next_dist_2a398dc7._.js.map +0 -1
  288. package/mcp-server/.next/server/chunks/[externals]_node:crypto_c20cce38._.js +0 -3
  289. package/mcp-server/.next/server/chunks/[externals]_node:crypto_c20cce38._.js.map +0 -1
  290. package/mcp-server/.next/server/chunks/[root-of-the-server]__1dca9894._.js +0 -3
  291. package/mcp-server/.next/server/chunks/[root-of-the-server]__1dca9894._.js.map +0 -1
  292. package/mcp-server/.next/server/chunks/[root-of-the-server]__21541e6b._.js +0 -11
  293. package/mcp-server/.next/server/chunks/[root-of-the-server]__21541e6b._.js.map +0 -1
  294. package/mcp-server/.next/server/chunks/[root-of-the-server]__2f95edf0._.js +0 -17
  295. package/mcp-server/.next/server/chunks/[root-of-the-server]__2f95edf0._.js.map +0 -1
  296. package/mcp-server/.next/server/chunks/[root-of-the-server]__377f76d7._.js +0 -7
  297. package/mcp-server/.next/server/chunks/[root-of-the-server]__377f76d7._.js.map +0 -1
  298. package/mcp-server/.next/server/chunks/[root-of-the-server]__454b0d3c._.js +0 -7
  299. package/mcp-server/.next/server/chunks/[root-of-the-server]__454b0d3c._.js.map +0 -1
  300. package/mcp-server/.next/server/chunks/[root-of-the-server]__69e6dfb7._.js +0 -3
  301. package/mcp-server/.next/server/chunks/[root-of-the-server]__69e6dfb7._.js.map +0 -1
  302. package/mcp-server/.next/server/chunks/[root-of-the-server]__6baff21e._.js +0 -4
  303. package/mcp-server/.next/server/chunks/[root-of-the-server]__6baff21e._.js.map +0 -1
  304. package/mcp-server/.next/server/chunks/[root-of-the-server]__6f790e1f._.js +0 -3
  305. package/mcp-server/.next/server/chunks/[root-of-the-server]__6f790e1f._.js.map +0 -1
  306. package/mcp-server/.next/server/chunks/[root-of-the-server]__7049acd5._.js +0 -3
  307. package/mcp-server/.next/server/chunks/[root-of-the-server]__7049acd5._.js.map +0 -1
  308. package/mcp-server/.next/server/chunks/[root-of-the-server]__73c9cc46._.js +0 -3
  309. package/mcp-server/.next/server/chunks/[root-of-the-server]__73c9cc46._.js.map +0 -1
  310. package/mcp-server/.next/server/chunks/[root-of-the-server]__78991125._.js +0 -3
  311. package/mcp-server/.next/server/chunks/[root-of-the-server]__78991125._.js.map +0 -1
  312. package/mcp-server/.next/server/chunks/[root-of-the-server]__7ae828c6._.js +0 -3
  313. package/mcp-server/.next/server/chunks/[root-of-the-server]__7ae828c6._.js.map +0 -1
  314. package/mcp-server/.next/server/chunks/[root-of-the-server]__94946101._.js +0 -3
  315. package/mcp-server/.next/server/chunks/[root-of-the-server]__94946101._.js.map +0 -1
  316. package/mcp-server/.next/server/chunks/[root-of-the-server]__99274dd8._.js +0 -4
  317. package/mcp-server/.next/server/chunks/[root-of-the-server]__99274dd8._.js.map +0 -1
  318. package/mcp-server/.next/server/chunks/[root-of-the-server]__9c4c7095._.js +0 -3
  319. package/mcp-server/.next/server/chunks/[root-of-the-server]__9c4c7095._.js.map +0 -1
  320. package/mcp-server/.next/server/chunks/[root-of-the-server]__b56464d6._.js +0 -7
  321. package/mcp-server/.next/server/chunks/[root-of-the-server]__b56464d6._.js.map +0 -1
  322. package/mcp-server/.next/server/chunks/[root-of-the-server]__b698502d._.js +0 -3
  323. package/mcp-server/.next/server/chunks/[root-of-the-server]__b698502d._.js.map +0 -1
  324. package/mcp-server/.next/server/chunks/[root-of-the-server]__b86e20b6._.js +0 -3
  325. package/mcp-server/.next/server/chunks/[root-of-the-server]__b86e20b6._.js.map +0 -1
  326. package/mcp-server/.next/server/chunks/[root-of-the-server]__c8cf5b23._.js +0 -3
  327. package/mcp-server/.next/server/chunks/[root-of-the-server]__c8cf5b23._.js.map +0 -1
  328. package/mcp-server/.next/server/chunks/[root-of-the-server]__e6a83e60._.js +0 -4
  329. package/mcp-server/.next/server/chunks/[root-of-the-server]__e6a83e60._.js.map +0 -1
  330. package/mcp-server/.next/server/chunks/[root-of-the-server]__ee139f8a._.js +0 -3
  331. package/mcp-server/.next/server/chunks/[root-of-the-server]__ee139f8a._.js.map +0 -1
  332. package/mcp-server/.next/server/chunks/[turbopack]_runtime.js +0 -795
  333. package/mcp-server/.next/server/chunks/[turbopack]_runtime.js.map +0 -10
  334. package/mcp-server/.next/server/chunks/edd96_next_80752ad3._.js +0 -3
  335. package/mcp-server/.next/server/chunks/edd96_next_80752ad3._.js.map +0 -1
  336. package/mcp-server/.next/server/chunks/edd96_next_dist_esm_build_templates_app-route_f51c5640.js +0 -3
  337. package/mcp-server/.next/server/chunks/edd96_next_dist_esm_build_templates_app-route_f51c5640.js.map +0 -1
  338. package/mcp-server/.next/server/chunks/edd96_next_dist_fa47e982._.js +0 -6
  339. package/mcp-server/.next/server/chunks/edd96_next_dist_fa47e982._.js.map +0 -1
  340. package/mcp-server/.next/server/chunks/edd96_next_ef93dda6._.js +0 -14
  341. package/mcp-server/.next/server/chunks/edd96_next_ef93dda6._.js.map +0 -1
  342. package/mcp-server/.next/server/chunks/mcp-server_70405c2f._.js +0 -3
  343. package/mcp-server/.next/server/chunks/mcp-server_70405c2f._.js.map +0 -1
  344. package/mcp-server/.next/server/chunks/mcp-server__next-internal_server_app_api_jank_[session]_route_actions_3b2b275b.js +0 -3
  345. package/mcp-server/.next/server/chunks/mcp-server__next-internal_server_app_api_jank_[session]_route_actions_3b2b275b.js.map +0 -1
  346. package/mcp-server/.next/server/chunks/mcp-server__next-internal_server_app_api_logs_append_route_actions_bc66060f.js +0 -3
  347. package/mcp-server/.next/server/chunks/mcp-server__next-internal_server_app_api_logs_append_route_actions_bc66060f.js.map +0 -1
  348. package/mcp-server/.next/server/chunks/mcp-server__next-internal_server_app_api_logs_head_route_actions_1152480c.js +0 -3
  349. package/mcp-server/.next/server/chunks/mcp-server__next-internal_server_app_api_logs_head_route_actions_1152480c.js.map +0 -1
  350. package/mcp-server/.next/server/chunks/mcp-server__next-internal_server_app_api_logs_list_route_actions_b9e24400.js +0 -3
  351. package/mcp-server/.next/server/chunks/mcp-server__next-internal_server_app_api_logs_list_route_actions_b9e24400.js.map +0 -1
  352. package/mcp-server/.next/server/chunks/mcp-server__next-internal_server_app_api_logs_rotate_route_actions_76075d08.js +0 -3
  353. package/mcp-server/.next/server/chunks/mcp-server__next-internal_server_app_api_logs_rotate_route_actions_76075d08.js.map +0 -1
  354. package/mcp-server/.next/server/chunks/mcp-server__next-internal_server_app_api_logs_stream_route_actions_16e5c553.js +0 -3
  355. package/mcp-server/.next/server/chunks/mcp-server__next-internal_server_app_api_logs_stream_route_actions_16e5c553.js.map +0 -1
  356. package/mcp-server/.next/server/chunks/mcp-server__next-internal_server_app_api_logs_tail_route_actions_55440150.js +0 -3
  357. package/mcp-server/.next/server/chunks/mcp-server__next-internal_server_app_api_logs_tail_route_actions_55440150.js.map +0 -1
  358. package/mcp-server/.next/server/chunks/mcp-server__next-internal_server_app_api_orchestrator_route_actions_c6fba9ec.js +0 -3
  359. package/mcp-server/.next/server/chunks/mcp-server__next-internal_server_app_api_orchestrator_route_actions_c6fba9ec.js.map +0 -1
  360. package/mcp-server/.next/server/chunks/mcp-server__next-internal_server_app_api_screenshots_list_route_actions_acfa57bd.js +0 -3
  361. package/mcp-server/.next/server/chunks/mcp-server__next-internal_server_app_api_screenshots_list_route_actions_acfa57bd.js.map +0 -1
  362. package/mcp-server/.next/server/chunks/mcp-server__next-internal_server_app_api_teams_route_actions_aaa1c876.js +0 -3
  363. package/mcp-server/.next/server/chunks/mcp-server__next-internal_server_app_api_teams_route_actions_aaa1c876.js.map +0 -1
  364. package/mcp-server/.next/server/chunks/mcp-server__next-internal_server_app_api_tools_route_actions_007f3c7c.js +0 -3
  365. package/mcp-server/.next/server/chunks/mcp-server__next-internal_server_app_api_tools_route_actions_007f3c7c.js.map +0 -1
  366. package/mcp-server/.next/server/chunks/mcp-server__next-internal_server_app_mcp_route_actions_7f7b5be4.js +0 -3
  367. package/mcp-server/.next/server/chunks/mcp-server__next-internal_server_app_mcp_route_actions_7f7b5be4.js.map +0 -1
  368. package/mcp-server/.next/server/chunks/mcp-server_app_mcp_tools_ts_faf6d7df._.js +0 -185
  369. package/mcp-server/.next/server/chunks/mcp-server_app_mcp_tools_ts_faf6d7df._.js.map +0 -1
  370. package/mcp-server/.next/server/chunks/mcp-server_instrumentation_node_ts_32271e34._.js +0 -3
  371. package/mcp-server/.next/server/chunks/mcp-server_instrumentation_node_ts_32271e34._.js.map +0 -1
  372. package/mcp-server/.next/server/chunks/src_utils_agent-browser_ts_cc00e0d8._.js +0 -3
  373. package/mcp-server/.next/server/chunks/src_utils_agent-browser_ts_cc00e0d8._.js.map +0 -1
  374. package/mcp-server/.next/server/chunks/src_utils_project-name_ts_1fab1dd5._.js +0 -3
  375. package/mcp-server/.next/server/chunks/src_utils_project-name_ts_1fab1dd5._.js.map +0 -1
  376. package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__250a4cf3._.js +0 -3
  377. package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__250a4cf3._.js.map +0 -1
  378. package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__41e244ae._.js +0 -3
  379. package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__41e244ae._.js.map +0 -1
  380. package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__4a45fb1f._.js +0 -4
  381. package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__4a45fb1f._.js.map +0 -1
  382. package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__4feaccaf._.js +0 -3
  383. package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__4feaccaf._.js.map +0 -1
  384. package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__6d9fa861._.js +0 -3
  385. package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__6d9fa861._.js.map +0 -1
  386. package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__9913ce94._.js +0 -3
  387. package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__9913ce94._.js.map +0 -1
  388. package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__9923da5e._.js +0 -3
  389. package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__9923da5e._.js.map +0 -1
  390. package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__a8fcf205._.js +0 -3
  391. package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__a8fcf205._.js.map +0 -1
  392. package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__b17d4048._.js +0 -3
  393. package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__b17d4048._.js.map +0 -1
  394. package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__dcf84f77._.js +0 -3
  395. package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__dcf84f77._.js.map +0 -1
  396. package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__df4ed844._.js +0 -3
  397. package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__df4ed844._.js.map +0 -1
  398. package/mcp-server/.next/server/chunks/ssr/[turbopack]_runtime.js +0 -795
  399. package/mcp-server/.next/server/chunks/ssr/[turbopack]_runtime.js.map +0 -10
  400. package/mcp-server/.next/server/chunks/ssr/_213c874b._.js +0 -4
  401. package/mcp-server/.next/server/chunks/ssr/_213c874b._.js.map +0 -1
  402. package/mcp-server/.next/server/chunks/ssr/_69be9abe._.js +0 -4
  403. package/mcp-server/.next/server/chunks/ssr/_69be9abe._.js.map +0 -1
  404. package/mcp-server/.next/server/chunks/ssr/_b38781f1._.js +0 -4
  405. package/mcp-server/.next/server/chunks/ssr/_b38781f1._.js.map +0 -1
  406. package/mcp-server/.next/server/chunks/ssr/_edba94b0._.js +0 -8
  407. package/mcp-server/.next/server/chunks/ssr/_edba94b0._.js.map +0 -1
  408. package/mcp-server/.next/server/chunks/ssr/_f478416d._.js +0 -8
  409. package/mcp-server/.next/server/chunks/ssr/_f478416d._.js.map +0 -1
  410. package/mcp-server/.next/server/chunks/ssr/edd96_next_dist_22d4e869._.js +0 -4
  411. package/mcp-server/.next/server/chunks/ssr/edd96_next_dist_22d4e869._.js.map +0 -1
  412. package/mcp-server/.next/server/chunks/ssr/edd96_next_dist_329c4a9b._.js +0 -10
  413. package/mcp-server/.next/server/chunks/ssr/edd96_next_dist_329c4a9b._.js.map +0 -1
  414. package/mcp-server/.next/server/chunks/ssr/edd96_next_dist_6cceb2cd._.js +0 -3
  415. package/mcp-server/.next/server/chunks/ssr/edd96_next_dist_6cceb2cd._.js.map +0 -1
  416. package/mcp-server/.next/server/chunks/ssr/edd96_next_dist_861297ac._.js +0 -6
  417. package/mcp-server/.next/server/chunks/ssr/edd96_next_dist_861297ac._.js.map +0 -1
  418. package/mcp-server/.next/server/chunks/ssr/edd96_next_dist_client_components_85c7e922._.js +0 -3
  419. package/mcp-server/.next/server/chunks/ssr/edd96_next_dist_client_components_85c7e922._.js.map +0 -1
  420. package/mcp-server/.next/server/chunks/ssr/edd96_next_dist_client_components_builtin_forbidden_0eb1cacd.js +0 -3
  421. package/mcp-server/.next/server/chunks/ssr/edd96_next_dist_client_components_builtin_forbidden_0eb1cacd.js.map +0 -1
  422. package/mcp-server/.next/server/chunks/ssr/edd96_next_dist_client_components_builtin_global-error_e64e654b.js +0 -3
  423. package/mcp-server/.next/server/chunks/ssr/edd96_next_dist_client_components_builtin_global-error_e64e654b.js.map +0 -1
  424. package/mcp-server/.next/server/chunks/ssr/edd96_next_dist_client_components_builtin_unauthorized_06e7b5f5.js +0 -3
  425. package/mcp-server/.next/server/chunks/ssr/edd96_next_dist_client_components_builtin_unauthorized_06e7b5f5.js.map +0 -1
  426. package/mcp-server/.next/server/chunks/ssr/edd96_next_dist_esm_build_templates_app-page_f82c7ca4.js +0 -4
  427. package/mcp-server/.next/server/chunks/ssr/edd96_next_dist_esm_build_templates_app-page_f82c7ca4.js.map +0 -1
  428. package/mcp-server/.next/server/chunks/ssr/mcp-server__next-internal_server_app__global-error_page_actions_404453e7.js +0 -3
  429. package/mcp-server/.next/server/chunks/ssr/mcp-server__next-internal_server_app__global-error_page_actions_404453e7.js.map +0 -1
  430. package/mcp-server/.next/server/chunks/ssr/mcp-server__next-internal_server_app__not-found_page_actions_c1864427.js +0 -3
  431. package/mcp-server/.next/server/chunks/ssr/mcp-server__next-internal_server_app__not-found_page_actions_c1864427.js.map +0 -1
  432. package/mcp-server/.next/server/chunks/ssr/mcp-server__next-internal_server_app_logs_page_actions_71542ba9.js +0 -3
  433. package/mcp-server/.next/server/chunks/ssr/mcp-server__next-internal_server_app_logs_page_actions_71542ba9.js.map +0 -1
  434. package/mcp-server/.next/server/chunks/ssr/mcp-server__next-internal_server_app_page_actions_a5ee4758.js +0 -3
  435. package/mcp-server/.next/server/chunks/ssr/mcp-server__next-internal_server_app_page_actions_a5ee4758.js.map +0 -1
  436. package/mcp-server/.next/server/chunks/ssr/mcp-server__next-internal_server_app_video_[session]_page_actions_a6aab323.js +0 -3
  437. package/mcp-server/.next/server/chunks/ssr/mcp-server__next-internal_server_app_video_[session]_page_actions_a6aab323.js.map +0 -1
  438. package/mcp-server/.next/server/chunks/ssr/mcp-server_app_layout_tsx_afa41767._.js +0 -3
  439. package/mcp-server/.next/server/chunks/ssr/mcp-server_app_layout_tsx_afa41767._.js.map +0 -1
  440. package/mcp-server/.next/server/chunks/ssr/mcp-server_app_page_tsx_9fc46577._.js +0 -3
  441. package/mcp-server/.next/server/chunks/ssr/mcp-server_app_page_tsx_9fc46577._.js.map +0 -1
  442. package/mcp-server/.next/server/chunks/ssr/mcp-server_components_dark-mode-toggle_tsx_f31dd15d._.js +0 -3
  443. package/mcp-server/.next/server/chunks/ssr/mcp-server_components_dark-mode-toggle_tsx_f31dd15d._.js.map +0 -1
  444. package/mcp-server/.next/server/chunks/ssr/node_modules__bun_39d5fbaf._.js +0 -3
  445. package/mcp-server/.next/server/chunks/ssr/node_modules__bun_39d5fbaf._.js.map +0 -1
  446. package/mcp-server/.next/server/chunks/ssr/node_modules__bun_d6d37386._.js +0 -5
  447. package/mcp-server/.next/server/chunks/ssr/node_modules__bun_d6d37386._.js.map +0 -1
  448. package/mcp-server/.next/server/functions-config-manifest.json +0 -4
  449. package/mcp-server/.next/server/instrumentation.js +0 -4
  450. package/mcp-server/.next/server/instrumentation.js.nft.json +0 -1
  451. package/mcp-server/.next/server/interception-route-rewrite-manifest.js +0 -1
  452. package/mcp-server/.next/server/middleware-build-manifest.js +0 -21
  453. package/mcp-server/.next/server/middleware-manifest.json +0 -6
  454. package/mcp-server/.next/server/next-font-manifest.js +0 -1
  455. package/mcp-server/.next/server/next-font-manifest.json +0 -6
  456. package/mcp-server/.next/server/pages/404.html +0 -1
  457. package/mcp-server/.next/server/pages/500.html +0 -2
  458. package/mcp-server/.next/server/pages-manifest.json +0 -4
  459. package/mcp-server/.next/server/server-reference-manifest.js +0 -1
  460. package/mcp-server/.next/server/server-reference-manifest.json +0 -5
  461. package/mcp-server/.next/static/HxwUjR9e01QAp7lf9kRjn/_buildManifest.js +0 -11
  462. package/mcp-server/.next/static/HxwUjR9e01QAp7lf9kRjn/_clientMiddlewareManifest.json +0 -1
  463. package/mcp-server/.next/static/HxwUjR9e01QAp7lf9kRjn/_ssgManifest.js +0 -1
  464. package/mcp-server/.next/static/chunks/10099c90a1ca89ea.js +0 -4
  465. package/mcp-server/.next/static/chunks/10c04cb580a9beec.js +0 -1
  466. package/mcp-server/.next/static/chunks/13606014ef33124c.js +0 -2
  467. package/mcp-server/.next/static/chunks/39e9bdcc541cc428.js +0 -1
  468. package/mcp-server/.next/static/chunks/3f3f8e7d16ba3bf4.js +0 -1
  469. package/mcp-server/.next/static/chunks/4785978304fb9e19.js +0 -1
  470. package/mcp-server/.next/static/chunks/59cdeaf92a780e96.css +0 -1
  471. package/mcp-server/.next/static/chunks/5df77c9395248155.js +0 -1
  472. package/mcp-server/.next/static/chunks/807aef58565dccb1.js +0 -1
  473. package/mcp-server/.next/static/chunks/a6dad97d9634a72d.js +0 -1
  474. package/mcp-server/.next/static/chunks/a6dad97d9634a72d.js.map +0 -1
  475. package/mcp-server/.next/static/chunks/b8eb42a9560f7980.js +0 -3
  476. package/mcp-server/.next/static/chunks/ea7b53054294e7bb.js +0 -3
  477. package/mcp-server/.next/static/chunks/ec58e1c556f5d0fa.js +0 -3
  478. package/mcp-server/.next/static/chunks/turbopack-b64e111cadf03885.js +0 -4
  479. package/mcp-server/app/api/jank/[session]/route.ts +0 -344
  480. package/mcp-server/app/api/logs/append/route.ts +0 -82
  481. package/mcp-server/app/api/logs/head/route.ts +0 -32
  482. package/mcp-server/app/api/logs/list/route.ts +0 -71
  483. package/mcp-server/app/api/logs/rotate/route.ts +0 -48
  484. package/mcp-server/app/api/logs/stream/route.ts +0 -61
  485. package/mcp-server/app/api/logs/tail/route.ts +0 -32
  486. package/mcp-server/app/api/orchestrator/route.ts +0 -73
  487. package/mcp-server/app/api/screenshots/[filename]/route.ts +0 -61
  488. package/mcp-server/app/api/screenshots/capture/route.ts +0 -137
  489. package/mcp-server/app/api/screenshots/clear/route.ts +0 -44
  490. package/mcp-server/app/api/screenshots/list/route.ts +0 -22
  491. package/mcp-server/app/api/teams/route.ts +0 -86
  492. package/mcp-server/app/api/tools/route.ts +0 -92
  493. package/mcp-server/app/globals.css +0 -124
  494. package/mcp-server/app/layout.tsx +0 -23
  495. package/mcp-server/app/logs/LogsClient.infinite-loop.test.tsx +0 -127
  496. package/mcp-server/app/logs/LogsClient.test.ts +0 -416
  497. package/mcp-server/app/logs/LogsClient.tsx +0 -1967
  498. package/mcp-server/app/logs/page.tsx +0 -150
  499. package/mcp-server/app/logs/utils.ts +0 -151
  500. package/mcp-server/app/mcp/client-manager.ts +0 -346
  501. package/mcp-server/app/mcp/route.ts +0 -765
  502. package/mcp-server/app/mcp/tools.ts +0 -4158
  503. package/mcp-server/app/page.tsx +0 -399
  504. package/mcp-server/app/video/[session]/page.tsx +0 -239
  505. package/mcp-server/next-env.d.ts +0 -6
  506. package/mcp-server/package.json +0 -48
  507. package/mcp-server/postcss.config.mjs +0 -5
  508. package/mcp-server/public/favicon-16.svg +0 -4
  509. package/mcp-server/public/favicon-180.png +0 -0
  510. package/mcp-server/public/favicon-64.svg +0 -4
  511. package/mcp-server/public/favicon-preview.html +0 -67
  512. package/mcp-server/public/favicon.ico +0 -0
  513. package/mcp-server/public/favicon.svg +0 -4
  514. package/mcp-server/public/screenshots/test.txt +0 -1
  515. package/mcp-server/start-production.mjs +0 -101
  516. package/mcp-server/tsconfig.json +0 -28
@@ -1,765 +0,0 @@
1
- import { readdirSync, readFileSync } from "node:fs"
2
- import { homedir } from "node:os"
3
- import { join } from "node:path"
4
- import type { Tool } from "@modelcontextprotocol/sdk/types.js"
5
- import { createMcpHandler } from "mcp-handler"
6
- import { z } from "zod"
7
- import { getMCPClientManager } from "./client-manager"
8
- import { crawlApp, findComponentSource, fixMyApp, getSkill, restartDevServer, TOOL_DESCRIPTIONS } from "./tools"
9
-
10
- // Detect available package runner (bunx, npx, pnpm dlx, or fail)
11
- const getPackageRunner = (): { command: string; args: string[] } | null => {
12
- try {
13
- const { execSync } = require("node:child_process")
14
-
15
- // Try bunx first (fastest)
16
- try {
17
- execSync("bunx --version", { stdio: "ignore" })
18
- return { command: "bunx", args: [] }
19
- } catch {
20
- // bunx not available
21
- }
22
-
23
- // Try npx (most common)
24
- try {
25
- execSync("npx --version", { stdio: "ignore" })
26
- return { command: "npx", args: ["-y"] }
27
- } catch {
28
- // npx not available or is aliased to pnpm dlx
29
- }
30
-
31
- // Try pnpm dlx as fallback
32
- try {
33
- execSync("pnpm --version", { stdio: "ignore" })
34
- return { command: "pnpm", args: ["dlx"] }
35
- } catch {
36
- // pnpm not available
37
- }
38
-
39
- console.error("[MCP Orchestrator] No package runner found (bunx, npx, or pnpm) - cannot spawn MCP servers")
40
- return null
41
- } catch (error) {
42
- console.error("[MCP Orchestrator] Failed to detect package runner:", error)
43
- return null
44
- }
45
- }
46
-
47
- // Check if chrome-devtools-mcp is externally configured (e.g., in user's .mcp.json)
48
- // This helps avoid spawning a duplicate that would cause CDP conflicts
49
- const isExternalChromeDevtoolsConfigured = (): boolean => {
50
- try {
51
- const { existsSync, readFileSync } = require("node:fs")
52
- const cwd = process.cwd()
53
-
54
- // Check common MCP config locations
55
- const configPaths = [
56
- join(cwd, ".mcp.json"), // Claude Code / OpenAI
57
- join(cwd, ".cursor", "mcp.json"), // Cursor
58
- join(homedir(), ".claude", "settings.json") // Claude global settings
59
- ]
60
-
61
- for (const configPath of configPaths) {
62
- if (!existsSync(configPath)) continue
63
-
64
- try {
65
- const content = readFileSync(configPath, "utf-8")
66
- const config = JSON.parse(content)
67
-
68
- // Check mcpServers object for chrome-devtools variants
69
- const servers = config.mcpServers || config.mcp || {}
70
- for (const [name, serverConfig] of Object.entries(servers)) {
71
- // Skip if this is dev3000's own entry
72
- if (name === "dev3000") continue
73
-
74
- // Check if it's chrome-devtools-mcp by name or command
75
- const nameLower = name.toLowerCase()
76
- if (nameLower.includes("chrome-devtools") || nameLower.includes("chromedevtools")) {
77
- console.log(
78
- `[MCP Orchestrator] Detected external chrome-devtools-mcp (${name}). ` +
79
- "dev3000 will use its native CDP implementation instead of spawning a duplicate."
80
- )
81
- return true
82
- }
83
-
84
- // Also check the command/args if available
85
- const cfg = serverConfig as Record<string, unknown>
86
- const command = String(cfg.command || "")
87
- const args = Array.isArray(cfg.args) ? cfg.args.join(" ") : ""
88
- if (command.includes("chrome-devtools-mcp") || args.includes("chrome-devtools-mcp")) {
89
- console.log(
90
- `[MCP Orchestrator] Detected external chrome-devtools-mcp (${name}). ` +
91
- "dev3000 will use its native CDP implementation instead of spawning a duplicate."
92
- )
93
- return true
94
- }
95
- }
96
- } catch {
97
- // Skip invalid config files
98
- }
99
- }
100
-
101
- return false
102
- } catch {
103
- return false
104
- }
105
- }
106
-
107
- // Initialize MCP client manager for orchestration
108
- // This will spawn and connect to chrome-devtools and next-devtools-mcp as stdio processes
109
- const initializeOrchestration = async () => {
110
- const clientManager = getMCPClientManager()
111
-
112
- // Check if chrome-devtools is already configured externally
113
- const externalChromeDevtools = isExternalChromeDevtoolsConfigured()
114
-
115
- // Helper to get config from session files in ~/.d3k/ or CDP_URL env var
116
- const getConfigFromSessions = () => {
117
- const config: Parameters<typeof clientManager.initialize>[0] = {}
118
- const sessionDir = join(homedir(), ".d3k")
119
-
120
- // Helper to configure chrome-devtools from a CDP URL
121
- const configureFromCdpUrl = (cdpUrl: string): boolean => {
122
- if (config.chromeDevtools || externalChromeDevtools) return false
123
-
124
- const runner = getPackageRunner()
125
- if (!runner) {
126
- console.warn("[MCP Orchestrator] Cannot configure chrome-devtools MCP: no package runner available")
127
- return false
128
- }
129
-
130
- try {
131
- const wsUrl = new URL(cdpUrl)
132
- // Convert ws:// to http:// and use just the origin (no path)
133
- const browserUrl = `http://${wsUrl.host}`
134
-
135
- config.chromeDevtools = {
136
- command: runner.command,
137
- args: [...runner.args, "chrome-devtools-mcp@latest", "--browserUrl", browserUrl],
138
- enabled: true
139
- }
140
- console.log(`[MCP Orchestrator] Configured chrome-devtools MCP with browserUrl: ${browserUrl}`)
141
- return true
142
- } catch {
143
- console.warn("[MCP Orchestrator] Failed to parse CDP URL:", cdpUrl)
144
- return false
145
- }
146
- }
147
-
148
- // PRIORITY 1: Use CDP_URL environment variable if set (passed by dev3000 parent process)
149
- // This ensures we connect to the Chrome instance that THIS dev3000 instance spawned,
150
- // avoiding port mismatches when multiple dev3000 instances are running
151
- const envCdpUrl = process.env.CDP_URL
152
- if (envCdpUrl) {
153
- console.log(`[MCP Orchestrator] Using CDP_URL from environment: ${envCdpUrl}`)
154
- configureFromCdpUrl(envCdpUrl)
155
- }
156
-
157
- // PRIORITY 2: Fall back to session files if CDP_URL env var is not set
158
- if (!config.chromeDevtools) {
159
- try {
160
- // Read all *.json session files
161
- const { readdirSync, existsSync, statSync } = require("node:fs")
162
- if (!existsSync(sessionDir)) return config
163
-
164
- const sessionFiles = readdirSync(sessionDir)
165
- .filter((f: string) => f.endsWith(".json"))
166
- // Sort by modification time (most recent first) to use the active session
167
- .sort((a: string, b: string) => {
168
- try {
169
- const statA = statSync(join(sessionDir, a))
170
- const statB = statSync(join(sessionDir, b))
171
- return statB.mtimeMs - statA.mtimeMs
172
- } catch {
173
- return 0
174
- }
175
- })
176
-
177
- // Use the most recent session with CDP URL
178
- for (const file of sessionFiles) {
179
- try {
180
- const sessionPath = join(sessionDir, file)
181
- const sessionData = JSON.parse(readFileSync(sessionPath, "utf-8"))
182
-
183
- // Configure chrome-devtools MCP if CDP URL is available
184
- // Skip if externally configured to avoid CDP conflicts
185
- if (sessionData.cdpUrl && !config.chromeDevtools && !externalChromeDevtools) {
186
- // Extract the HTTP endpoint from the WebSocket URL
187
- // The cdpUrl is typically ws://localhost:9222/devtools/page/<targetId>
188
- // chrome-devtools-mcp needs --browserUrl http://localhost:9222 to properly
189
- // manage browser contexts (avoids "Target.getBrowserContexts: Not allowed" errors)
190
- configureFromCdpUrl(sessionData.cdpUrl)
191
- }
192
-
193
- // Break early if we have chrome-devtools - only need one session for CDP URL
194
- if (config.chromeDevtools) break
195
- } catch {
196
- // Skip invalid session files
197
- }
198
- }
199
- } catch (error) {
200
- console.warn("[MCP Orchestrator] Failed to read session files:", error)
201
- }
202
- }
203
-
204
- // Configure framework-specific MCPs based on detected framework
205
- // Read framework from session data
206
- if (!config.nextjsDev && !config.svelteDev) {
207
- const runner = getPackageRunner()
208
-
209
- // Try to find framework from any session file
210
- let framework: string | null = null
211
- try {
212
- const sessionFiles = readdirSync(sessionDir).filter((f: string) => f.endsWith(".json"))
213
- for (const file of sessionFiles) {
214
- try {
215
- const sessionPath = join(sessionDir, file)
216
- const sessionData = JSON.parse(readFileSync(sessionPath, "utf-8"))
217
- if (sessionData.framework) {
218
- framework = sessionData.framework
219
- break
220
- }
221
- } catch {
222
- // Skip invalid session files
223
- }
224
- }
225
- } catch {
226
- // Ignore errors reading framework
227
- }
228
-
229
- if (runner) {
230
- // Configure framework-specific MCP based on detected framework
231
- if (framework === "nextjs") {
232
- config.nextjsDev = {
233
- command: runner.command,
234
- args: [...runner.args, "next-devtools-mcp@latest"],
235
- enabled: true
236
- }
237
- console.log("[MCP Orchestrator] Detected Next.js framework, configuring next-devtools-mcp")
238
- } else if (framework === "svelte") {
239
- config.svelteDev = {
240
- command: runner.command,
241
- args: [...runner.args, "@sveltejs/mcp-server-svelte"],
242
- enabled: true
243
- }
244
- console.log("[MCP Orchestrator] Detected Svelte framework, configuring @sveltejs/mcp-server-svelte")
245
- }
246
- // For "other" or null framework, don't configure any framework-specific MCP
247
- } else {
248
- console.warn("[MCP Orchestrator] Cannot configure framework MCP: no package runner available")
249
- }
250
- }
251
-
252
- return config
253
- }
254
-
255
- const waitForInitialConfig = async (
256
- timeoutMs: number = 10000,
257
- pollIntervalMs: number = 250
258
- ): Promise<{ config: Parameters<typeof clientManager.initialize>[0]; waited: boolean }> => {
259
- const startTime = Date.now()
260
- let waited = false
261
- let config = getConfigFromSessions()
262
-
263
- while (Object.keys(config).length === 0 && Date.now() - startTime < timeoutMs) {
264
- if (!waited) {
265
- console.log("[MCP Orchestrator] Waiting for session info before connecting downstream MCPs...")
266
- waited = true
267
- }
268
-
269
- await new Promise((resolve) => setTimeout(resolve, pollIntervalMs))
270
- config = getConfigFromSessions()
271
- }
272
-
273
- return { config, waited }
274
- }
275
-
276
- try {
277
- // Initial attempt to connect
278
- const { config, waited } = await waitForInitialConfig()
279
- if (Object.keys(config).length > 0) {
280
- await clientManager.initialize(config)
281
- console.log(`[MCP Orchestrator] Initialized with ${Object.keys(config).join(", ")}`)
282
- } else {
283
- if (waited) {
284
- console.log("[MCP Orchestrator] No downstream MCPs detected after waiting for session info (will retry)")
285
- } else {
286
- console.log("[MCP Orchestrator] No downstream MCPs found yet (will retry)")
287
- }
288
- }
289
-
290
- // Since MCP server starts before Chrome, periodically retry connection
291
- // This allows late-binding to chrome-devtools MCP after Chrome launches
292
- let retryCount = 0
293
- const maxRetries = 10
294
- const retryInterval = setInterval(async () => {
295
- retryCount++
296
-
297
- const newConfig = getConfigFromSessions()
298
- const hasChromeDevtools = !!newConfig.chromeDevtools
299
- const hasNextjs = !!newConfig.nextjsDev
300
- const hasSvelte = !!newConfig.svelteDev
301
- const alreadyConnectedChrome = clientManager.isConnected("chrome-devtools")
302
- const alreadyConnectedNextjs = clientManager.isConnected("nextjs-dev")
303
- const alreadyConnectedSvelte = clientManager.isConnected("svelte-dev")
304
-
305
- // Check if we have new MCPs to connect to
306
- const needsChrome = hasChromeDevtools && !alreadyConnectedChrome
307
- const needsNextjs = hasNextjs && !alreadyConnectedNextjs
308
- const needsSvelte = hasSvelte && !alreadyConnectedSvelte
309
-
310
- if (needsChrome || needsNextjs || needsSvelte) {
311
- const toConnect = [
312
- needsChrome && "chrome-devtools",
313
- needsNextjs && "nextjs-dev",
314
- needsSvelte && "svelte-dev"
315
- ].filter(Boolean)
316
- console.log(`[MCP Orchestrator] Retry ${retryCount}: Attempting to connect to ${toConnect.join(", ")}`)
317
- try {
318
- await clientManager.initialize(newConfig)
319
- console.log("[MCP Orchestrator] Successfully connected to downstream MCPs")
320
- } catch (error) {
321
- console.warn(`[MCP Orchestrator] Retry ${retryCount} failed:`, error)
322
- }
323
- }
324
-
325
- // Stop retrying after max attempts or when all potential MCPs are connected
326
- const allFrameworkMcpsConnected =
327
- (hasNextjs ? alreadyConnectedNextjs : true) && (hasSvelte ? alreadyConnectedSvelte : true)
328
- if (retryCount >= maxRetries || (alreadyConnectedChrome && allFrameworkMcpsConnected)) {
329
- clearInterval(retryInterval)
330
- const connected = clientManager.getConnectedMCPs()
331
- console.log(`[MCP Orchestrator] Stopped retry loop (connected: ${connected.join(", ") || "none"})`)
332
- }
333
- }, 2000) // Retry every 2 seconds
334
- } catch (error) {
335
- console.warn("[MCP Orchestrator] Failed to initialize downstream MCPs:", error)
336
- }
337
- }
338
-
339
- // Initialize on module load
340
- const orchestrationReady = initializeOrchestration().catch((error) => {
341
- console.error("[MCP Orchestrator] Failed to initialize downstream MCPs:", error)
342
- })
343
-
344
- // Cleanup on shutdown
345
- process.on("SIGTERM", async () => {
346
- console.log("[MCP Orchestrator] Received SIGTERM, cleaning up...")
347
- try {
348
- await getMCPClientManager().disconnect()
349
- console.log("[MCP Orchestrator] Cleanup complete")
350
- } catch (error) {
351
- console.error("[MCP Orchestrator] Error during cleanup:", error)
352
- }
353
- process.exit(0)
354
- })
355
-
356
- process.on("SIGINT", async () => {
357
- console.log("[MCP Orchestrator] Received SIGINT, cleaning up...")
358
- try {
359
- await getMCPClientManager().disconnect()
360
- console.log("[MCP Orchestrator] Cleanup complete")
361
- } catch (error) {
362
- console.error("[MCP Orchestrator] Error during cleanup:", error)
363
- }
364
- process.exit(0)
365
- })
366
-
367
- const handler = createMcpHandler(
368
- async (server) => {
369
- const clientManager = getMCPClientManager()
370
-
371
- await orchestrationReady
372
- await clientManager.waitForInitialTools()
373
-
374
- const registeredProxiedTools = new Map<
375
- string,
376
- {
377
- mcpName: string
378
- toolName: string
379
- registered: ReturnType<typeof server.tool>
380
- }
381
- >()
382
-
383
- // Whitelist of tools to proxy from downstream MCPs
384
- // This reduces token usage by only exposing commonly used tools
385
- // NOTE: dev3000 already has CDP for basic automation (screenshot, click, navigate, etc.)
386
- // so we only proxy advanced analysis tools that dev3000 doesn't provide natively
387
- const PROXIED_TOOL_WHITELIST: Record<string, string[]> = {
388
- "chrome-devtools": [
389
- // Performance & CLS/Jank Analysis (actual tool names from chrome-devtools-mcp)
390
- "performance_start_trace",
391
- "performance_stop_trace",
392
- "performance_analyze_insight",
393
- // DOM/Page Analysis
394
- "take_snapshot",
395
- // Screenshot capture for verification (uses chrome-devtools-mcp's CDP connection)
396
- "take_screenshot"
397
- ],
398
- // nextjs-dev: Include most tools for framework-specific debugging
399
- // NOTE: browser_eval is intentionally excluded - it spawns a separate headless
400
- // Playwright browser that doesn't share cookies with the d3k Chrome browser.
401
- // Use d3k CLI for browser automation: `d3k agent-browser --cdp 9222 <command>`
402
- "nextjs-dev": [
403
- "enable_cache_components",
404
- "init",
405
- "nextjs_docs",
406
- "nextjs_index",
407
- "nextjs_call",
408
- "upgrade_nextjs_16"
409
- ]
410
- }
411
-
412
- const shouldProxyTool = (mcpName: string, toolName: string): boolean => {
413
- const whitelist = PROXIED_TOOL_WHITELIST[mcpName]
414
- if (!whitelist) {
415
- // If MCP not in whitelist, proxy all its tools (for unknown MCPs)
416
- return true
417
- }
418
- return whitelist.includes(toolName)
419
- }
420
-
421
- const registerOrUpdateProxiedTool = (mcpName: string, tool: Tool): boolean => {
422
- // Filter tools based on whitelist
423
- if (!shouldProxyTool(mcpName, tool.name)) {
424
- console.log(`[MCP Orchestrator] Filtered out tool ${mcpName}:${tool.name} (not in whitelist)`)
425
- return false
426
- }
427
-
428
- const proxiedToolName = `${mcpName}_${tool.name}`
429
- const existing = registeredProxiedTools.get(proxiedToolName)
430
- const description = `[${mcpName}] ${tool.description || ""}`
431
- const annotations = {
432
- ...(tool.annotations ?? {}),
433
- proxiedFrom: mcpName,
434
- originalInputSchema: tool.inputSchema
435
- }
436
-
437
- if (existing) {
438
- existing.registered.update({
439
- description,
440
- annotations
441
- })
442
- return false
443
- }
444
-
445
- try {
446
- const proxiedTool = server.tool(proxiedToolName, description, {}, async (params: Record<string, unknown>) => {
447
- return clientManager.callTool(mcpName, tool.name, params)
448
- })
449
-
450
- // Allow arbitrary argument objects to pass through to downstream MCPs
451
- // NOTE: Cannot use JSON Schema directly here - mcp-handler expects Zod schemas
452
- // and will error with "Cannot read properties of undefined (reading 'typeName')"
453
- proxiedTool.inputSchema = z.object({}).passthrough()
454
-
455
- proxiedTool.update({
456
- annotations
457
- })
458
-
459
- registeredProxiedTools.set(proxiedToolName, {
460
- mcpName,
461
- toolName: tool.name,
462
- registered: proxiedTool
463
- })
464
-
465
- console.log(`[MCP Orchestrator] Registered proxied tool ${proxiedToolName}`)
466
- return true
467
- } catch (error) {
468
- console.warn(`[MCP Orchestrator] Failed to register proxied tool ${proxiedToolName}:`, error)
469
- return false
470
- }
471
- }
472
-
473
- const removeToolsForMcp = (mcpName: string): number => {
474
- let removed = 0
475
- for (const [proxiedToolName, entry] of registeredProxiedTools.entries()) {
476
- if (entry.mcpName === mcpName) {
477
- try {
478
- entry.registered.remove()
479
- registeredProxiedTools.delete(proxiedToolName)
480
- removed++
481
- console.log(`[MCP Orchestrator] Removed proxied tool ${proxiedToolName}`)
482
- } catch (error) {
483
- console.warn(`[MCP Orchestrator] Failed to remove proxied tool ${proxiedToolName}:`, error)
484
- }
485
- }
486
- }
487
- return removed
488
- }
489
-
490
- // Dynamically register proxied tools from downstream MCPs
491
- const downstreamTools = clientManager.getAllTools()
492
-
493
- if (downstreamTools.length === 0) {
494
- console.log("[MCP Orchestrator] No downstream MCP tools available during initial registration")
495
- } else {
496
- console.log(`[MCP Orchestrator] Registering ${downstreamTools.length} downstream MCP tools`)
497
- }
498
-
499
- let initialNewTools = 0
500
- for (const { mcpName, tool } of downstreamTools) {
501
- if (registerOrUpdateProxiedTool(mcpName, tool)) {
502
- initialNewTools++
503
- }
504
- }
505
-
506
- if (initialNewTools > 0) {
507
- server.sendToolListChanged()
508
- }
509
-
510
- clientManager.onToolsUpdated(({ mcpName, tools }) => {
511
- if (tools.length === 0) {
512
- const removed = removeToolsForMcp(mcpName)
513
- if (removed > 0) {
514
- server.sendToolListChanged()
515
- }
516
- return
517
- }
518
-
519
- let addedOrUpdated = 0
520
- for (const tool of tools) {
521
- if (registerOrUpdateProxiedTool(mcpName, tool)) {
522
- addedOrUpdated++
523
- }
524
- }
525
-
526
- if (addedOrUpdated > 0) {
527
- server.sendToolListChanged()
528
- }
529
- })
530
-
531
- // Dev3000's own tools below:
532
- // Enhanced fix_my_app - the ultimate error fixing tool
533
- server.tool(
534
- "fix_my_app",
535
- TOOL_DESCRIPTIONS.fix_my_app,
536
- {
537
- projectName: z
538
- .string()
539
- .optional()
540
- .describe("Project name to debug (if multiple dev3000 instances are running)"),
541
- focusArea: z
542
- .string()
543
- .optional()
544
- .describe("Specific area: 'build', 'runtime', 'network', 'ui', 'all' (default: 'all')"),
545
- mode: z
546
- .enum(["snapshot", "bisect", "monitor"])
547
- .optional()
548
- .describe("Fix mode: 'snapshot' (fix now), 'bisect' (fix regression), 'monitor' (fix continuously)"),
549
- waitForUserInteraction: z
550
- .boolean()
551
- .optional()
552
- .describe("In bisect mode: capture timestamp, wait for user testing, then analyze (default: false)"),
553
- timeRangeMinutes: z.number().optional().describe("Minutes to analyze back from now (default: 10)"),
554
- includeTimestampInstructions: z
555
- .boolean()
556
- .optional()
557
- .describe("Show timestamp-based debugging instructions for manual workflow (default: true)"),
558
- integrateNextjs: z
559
- .boolean()
560
- .optional()
561
- .describe("Auto-detected based on available MCPs - enables Next.js-specific analysis"),
562
- integrateChromeDevtools: z
563
- .boolean()
564
- .optional()
565
- .describe("Auto-detected based on available MCPs - enables Chrome DevTools integration"),
566
- returnRawData: z
567
- .boolean()
568
- .optional()
569
- .describe("Return structured data for Claude orchestration instead of formatted text"),
570
- createPR: z.boolean().optional().describe("Create a PR for the highest priority issue (default: false)")
571
- },
572
- async (params) => {
573
- return fixMyApp(params)
574
- }
575
- )
576
-
577
- // NOTE: execute_browser_action was removed - use agent_browser_action instead
578
- // agent_browser_action provides the same functionality with better reliability
579
- // and persistent browser sessions via agent-browser CLI
580
-
581
- // Visual diff analysis tool
582
- server.tool(
583
- "analyze_visual_diff",
584
- "🔍 **VISUAL DIFF ANALYZER** - Analyzes two screenshots and provides a verbal description of the visual differences. Perfect for understanding what changed between before/after frames in layout shift detection.\n\n💡 This tool loads both images and describes what elements appeared, moved, or changed that could have caused the layout shift.",
585
- {
586
- beforeImageUrl: z.string().describe("URL of the 'before' screenshot"),
587
- afterImageUrl: z.string().describe("URL of the 'after' screenshot"),
588
- context: z
589
- .string()
590
- .optional()
591
- .describe("Optional context about what to look for (e.g., 'navigation header shift')")
592
- },
593
- async (params) => {
594
- const { analyzeVisualDiff } = await import("./tools")
595
- return analyzeVisualDiff(params)
596
- }
597
- )
598
-
599
- // Component source finder tool
600
- server.tool(
601
- "find_component_source",
602
- TOOL_DESCRIPTIONS.find_component_source,
603
- {
604
- selector: z
605
- .string()
606
- .describe("CSS selector for the DOM element (e.g., 'nav', '.header', '#main'). Use lowercase for tag names."),
607
- projectName: z.string().optional().describe("Project name (if multiple dev3000 instances are running)")
608
- },
609
- async (params) => {
610
- return findComponentSource(params)
611
- }
612
- )
613
-
614
- // Dev server restart tool
615
- server.tool(
616
- "restart_dev_server",
617
- TOOL_DESCRIPTIONS.restart_dev_server,
618
- {
619
- projectName: z.string().optional().describe("Project name (if multiple dev3000 instances are running)")
620
- },
621
- async (params) => {
622
- return restartDevServer(params)
623
- }
624
- )
625
-
626
- // App crawler tool
627
- server.tool(
628
- "crawl_app",
629
- TOOL_DESCRIPTIONS.crawl_app,
630
- {
631
- depth: z
632
- .union([z.number().int().min(1), z.literal("all")])
633
- .optional()
634
- .describe(
635
- "Crawl depth: number (1=homepage only, 2=homepage+next level, etc.) or 'all' for exhaustive (default: 1)"
636
- ),
637
- projectName: z.string().optional().describe("Project name (if multiple dev3000 instances are running)")
638
- },
639
- async (params) => {
640
- return crawlApp(params)
641
- }
642
- )
643
-
644
- // Get skill content tool
645
- server.tool(
646
- "get_skill",
647
- TOOL_DESCRIPTIONS.get_skill,
648
- {
649
- name: z.string().describe("The skill name (e.g., 'vercel-design-guidelines', 'd3k')")
650
- },
651
- async (params) => {
652
- return getSkill(params)
653
- }
654
- )
655
-
656
- // NOTE: agent_browser_action MCP tool removed to encourage CLI usage
657
- // Claude should use `d3k agent-browser --cdp 9222 <command>` instead
658
- // This avoids browser installation issues and connects to d3k's existing Chrome
659
-
660
- // Tool that returns monitoring code for Claude to execute
661
- // TODO: Commenting out for now - need to figure out the right approach for proactive monitoring
662
- /*
663
- server.tool(
664
- "start_error_monitoring",
665
- "🔍 **SIMPLE ERROR MONITORING** - Starts a lightweight background process that watches your app for errors and alerts you in real-time.\n\n⚡ **INSTANT ACTION:**\n• Claude will offer to run the monitoring script right away\n• No manual setup needed - just say yes!\n• Simple 15-line Python script\n• Alerts when errors appear in logs\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🎯 **PERFECT FOR:**\n• Quick error detection during development\n• Lightweight background monitoring\n• No complex features - just works",
666
- {
667
- projectName: z
668
- .string()
669
- .optional()
670
- .describe("Project name to monitor (if multiple dev3000 instances are running)")
671
- },
672
- async ({ projectName }) => {
673
- try {
674
- const logPath = getLogPath(projectName)
675
- if (!logPath) {
676
- const sessions = findActiveSessions()
677
- if (sessions.length === 0) {
678
- return {
679
- content: [
680
- {
681
- type: "text",
682
- text: "❌ No active dev3000 sessions found. Make sure dev3000 is running!"
683
- }
684
- ]
685
- }
686
- }
687
-
688
- return {
689
- content: [
690
- {
691
- type: "text",
692
- text: `🔍 Multiple sessions found. Please specify projectName:\n${sessions
693
- .map((s) => `• ${s.projectName} (started ${new Date(s.startTime).toLocaleString()})`)
694
- .join("\n")}`
695
- }
696
- ]
697
- }
698
- }
699
-
700
- // Return simple Python monitoring code
701
- const monitoringCode = `import time
702
-
703
- log_file = "${logPath}"
704
- pos = 0
705
-
706
- print("🔍 Monitoring:", log_file)
707
- print("Press Ctrl+C to stop\\n")
708
-
709
- while True:
710
- with open(log_file, 'r') as f:
711
- f.seek(pos)
712
- new = f.read()
713
- pos = f.tell()
714
-
715
- for line in new.split('\\n'):
716
- if any(err in line for err in ['ERROR', 'FAIL', 'Exception', 'TypeError', 'CRASH']):
717
- print(f"\\n🚨 ERROR DETECTED:\\n{line[:200]}\\n")
718
- print("💡 Tell me: 'fix my app' or 'debug my app' to fix this!\\n")
719
-
720
- time.sleep(2)
721
- `
722
-
723
- return {
724
- content: [
725
- {
726
- type: "text",
727
- text: `I'm ready to monitor your app for errors. I'll watch ${logPath} and alert you when errors occur.
728
-
729
- Should I start monitoring now?`
730
- },
731
- {
732
- type: "text",
733
- text: `\`\`\`python
734
- ${monitoringCode}
735
- \`\`\``
736
- }
737
- ]
738
- }
739
- } catch (error) {
740
- return {
741
- content: [
742
- {
743
- type: "text",
744
- text: `Error setting up monitoring: ${error instanceof Error ? error.message : String(error)}`
745
- }
746
- ]
747
- }
748
- }
749
- }
750
- )
751
- */
752
- },
753
- {
754
- // dev3000 MCP Server - Advanced development debugging tools
755
- // Provides AI tools with comprehensive access to real-time development logs,
756
- // browser monitoring data, and timestamp-based debugging workflows
757
- },
758
- {
759
- basePath: "/",
760
- maxDuration: 60,
761
- verboseLogs: true
762
- }
763
- )
764
-
765
- export { handler as GET, handler as POST }