dev3000 0.0.157 → 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 +241 -544
  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/chunks/10099c90a1ca89ea.js +0 -4
  462. package/mcp-server/.next/static/chunks/10c04cb580a9beec.js +0 -1
  463. package/mcp-server/.next/static/chunks/13606014ef33124c.js +0 -2
  464. package/mcp-server/.next/static/chunks/39e9bdcc541cc428.js +0 -1
  465. package/mcp-server/.next/static/chunks/3f3f8e7d16ba3bf4.js +0 -1
  466. package/mcp-server/.next/static/chunks/4785978304fb9e19.js +0 -1
  467. package/mcp-server/.next/static/chunks/59cdeaf92a780e96.css +0 -1
  468. package/mcp-server/.next/static/chunks/5df77c9395248155.js +0 -1
  469. package/mcp-server/.next/static/chunks/807aef58565dccb1.js +0 -1
  470. package/mcp-server/.next/static/chunks/a6dad97d9634a72d.js +0 -1
  471. package/mcp-server/.next/static/chunks/a6dad97d9634a72d.js.map +0 -1
  472. package/mcp-server/.next/static/chunks/b8eb42a9560f7980.js +0 -3
  473. package/mcp-server/.next/static/chunks/ea7b53054294e7bb.js +0 -3
  474. package/mcp-server/.next/static/chunks/ec58e1c556f5d0fa.js +0 -3
  475. package/mcp-server/.next/static/chunks/turbopack-b64e111cadf03885.js +0 -4
  476. package/mcp-server/.next/static/gTFARHqj7X4ZmcJWlUVID/_buildManifest.js +0 -11
  477. package/mcp-server/.next/static/gTFARHqj7X4ZmcJWlUVID/_clientMiddlewareManifest.json +0 -1
  478. package/mcp-server/.next/static/gTFARHqj7X4ZmcJWlUVID/_ssgManifest.js +0 -1
  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,150 +0,0 @@
1
- import { extractProjectNameFromLogFilename, logFilenameMatchesProject } from "@dev3000/src/utils/log-filename"
2
- import { existsSync, readdirSync, readFileSync, statSync } from "fs"
3
- import { redirect } from "next/navigation"
4
- import { basename, dirname, join } from "path"
5
- import LogsClient from "./LogsClient"
6
- import { parseLogEntries } from "./utils"
7
-
8
- interface PageProps {
9
- searchParams: Promise<{ file?: string; mode?: "head" | "tail"; project?: string }>
10
- }
11
-
12
- async function getLogFiles() {
13
- try {
14
- const currentLogPath = process.env.LOG_FILE_PATH || "/var/log/dev3000/dev3000.log"
15
-
16
- if (!existsSync(currentLogPath)) {
17
- return { files: [], currentFile: "", projectName: "unknown" }
18
- }
19
-
20
- const logDir = dirname(currentLogPath)
21
- const currentLogName = basename(currentLogPath)
22
-
23
- // Extract project name from current log filename using shared utility
24
- const projectName = extractProjectNameFromLogFilename(currentLogName) || "unknown"
25
-
26
- const dirContents = readdirSync(logDir)
27
- const logFiles = dirContents
28
- // Get all log files for this project
29
- .filter((file) => logFilenameMatchesProject(file, projectName))
30
- .map((file) => {
31
- const filePath = join(logDir, file)
32
- const stats = statSync(filePath)
33
-
34
- const timestampMatch = file.match(/(\d{4}-\d{2}-\d{2}T[\d-]+Z)/)
35
- const timestamp = timestampMatch ? timestampMatch[1].replace(/-/g, ":") : ""
36
-
37
- return {
38
- name: file,
39
- path: filePath,
40
- timestamp,
41
- size: stats.size,
42
- mtime: stats.mtime,
43
- isCurrent: file === currentLogName
44
- }
45
- })
46
- .sort((a, b) => b.mtime.getTime() - a.mtime.getTime())
47
- .map((file) => ({
48
- ...file,
49
- mtime: file.mtime.toISOString() // Convert to string after sorting
50
- }))
51
-
52
- return {
53
- files: logFiles,
54
- currentFile: currentLogPath,
55
- projectName
56
- }
57
- } catch (_error) {
58
- return { files: [], currentFile: "", projectName: "unknown" }
59
- }
60
- }
61
-
62
- async function getLogData(logPath: string, mode: "head" | "tail" = "tail", lines: number = 100) {
63
- try {
64
- if (!existsSync(logPath)) {
65
- return { logs: "", total: 0 }
66
- }
67
-
68
- const logContent = readFileSync(logPath, "utf-8")
69
- const allLines = logContent.split("\n").filter((line) => line.trim())
70
-
71
- const selectedLines = mode === "head" ? allLines.slice(0, lines) : allLines.slice(-lines)
72
-
73
- return {
74
- logs: selectedLines.join("\n"),
75
- total: allLines.length
76
- }
77
- } catch (_error) {
78
- return { logs: "", total: 0 }
79
- }
80
- }
81
-
82
- export default async function LogsPage({ searchParams }: PageProps) {
83
- const version = process.env.DEV3000_VERSION || "0.0.0"
84
-
85
- // Await searchParams (Next.js 15 requirement)
86
- const params = await searchParams
87
-
88
- // Get available log files
89
- const { files, currentFile } = await getLogFiles()
90
-
91
- // If project parameter is provided, find latest file for that project
92
- if (params.project && !params.file) {
93
- // Look for files that match the project name (supports partial matching)
94
- const projectFiles = files.filter((f) => logFilenameMatchesProject(f.name, params.project ?? ""))
95
- if (projectFiles.length > 0) {
96
- redirect(`/logs?file=${encodeURIComponent(projectFiles[0].name)}&mode=tail`)
97
- }
98
- // If no matching project files found but we have other files, show the latest
99
- else if (files.length > 0) {
100
- redirect(`/logs?file=${encodeURIComponent(files[0].name)}&mode=tail`)
101
- }
102
- // Otherwise fall through to render empty state
103
- }
104
-
105
- // If no file specified and we have files, redirect to latest with tail mode
106
- else if (!params.file && files.length > 0) {
107
- const latestFile = files[0].name
108
- redirect(`/logs?file=${encodeURIComponent(latestFile)}&mode=tail`)
109
- }
110
-
111
- // If no file specified and no files available, render with empty data
112
- if (!params.file) {
113
- return (
114
- <LogsClient
115
- version={version}
116
- initialData={{
117
- logs: [],
118
- logFiles: [],
119
- currentLogFile: "",
120
- mode: "tail"
121
- }}
122
- />
123
- )
124
- }
125
-
126
- // Find the selected log file
127
- const selectedFile = files.find((f) => f.name === params.file)
128
- const logPath = selectedFile?.path || currentFile
129
-
130
- // Always default to 'tail' mode for initial loads
131
- const _isCurrentFile = selectedFile?.isCurrent !== false
132
- const defaultMode = "tail" // Always start in tail mode
133
- const mode = (params.mode as "head" | "tail") || defaultMode
134
-
135
- // Get initial log data server-side
136
- const logData = await getLogData(logPath, mode)
137
- const parsedLogs = parseLogEntries(logData.logs)
138
-
139
- return (
140
- <LogsClient
141
- version={version}
142
- initialData={{
143
- logs: parsedLogs,
144
- logFiles: files,
145
- currentLogFile: logPath,
146
- mode
147
- }}
148
- />
149
- )
150
- }
@@ -1,151 +0,0 @@
1
- import type { LogEntry } from "@/types"
2
-
3
- /**
4
- * Cleans up console log messages that contain CSS formatting directives
5
- * Example: "%c[Vercel Web Analytics]%c Debug mode... color: rgb(120, 120, 120) color: inherit"
6
- * Becomes: "[Vercel Web Analytics] Debug mode..."
7
- */
8
- function cleanConsoleFormatting(message: string): string {
9
- // Pattern to match console log entries with CSS formatting
10
- const consoleLogPattern = /^\[CONSOLE LOG\] (.+)$/
11
- const match = message.match(consoleLogPattern)
12
-
13
- if (!match) {
14
- return message
15
- }
16
-
17
- const consoleMessage = match[1]
18
-
19
- // Check if this message has %c CSS formatting directives
20
- if (!consoleMessage.includes("%c")) {
21
- return message // No formatting to clean
22
- }
23
-
24
- // Remove CSS formatting directives step by step
25
- let cleaned = consoleMessage
26
-
27
- // Remove %c markers
28
- cleaned = cleaned.replace(/%c/g, "")
29
-
30
- // Remove trailing CSS color declarations - look for CSS patterns before JSON or at end of string
31
- // Match CSS color declarations that appear after %c removal
32
- cleaned = cleaned.replace(/\s+color:\s*[^{}\n]*?(?=\s*[{[]|$)/g, "")
33
-
34
- // Clean up any extra whitespace
35
- cleaned = cleaned.replace(/\s+/g, " ").trim()
36
-
37
- return `[CONSOLE LOG] ${cleaned}`
38
- }
39
-
40
- export function parseLogEntries(logContent: string): LogEntry[] {
41
- // Enhanced pattern to handle multiple timestamp formats:
42
- // Format 1 (CDP): [timestamp] [SOURCE] message
43
- // Format 2 (Extension): [timestamp] [TAB-id] [SOURCE] [event] message
44
- // Format 3 (Short): [HH:MM:SS.mmm] [SOURCE] message
45
- const timestampPattern = /\[(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z|\d{2}:\d{2}:\d{2}\.\d{3})\] \[([^\]]+)\] /
46
-
47
- const entries: LogEntry[] = []
48
- const lines = logContent.split("\n")
49
- let currentEntry: LogEntry | null = null
50
-
51
- for (const line of lines) {
52
- if (!line.trim()) continue
53
-
54
- const match = line.match(timestampPattern)
55
- if (match) {
56
- // Save previous entry if exists
57
- if (currentEntry) {
58
- entries.push(currentEntry)
59
- }
60
-
61
- const [fullMatch, timestamp, firstBracket] = match
62
- const remainingLine = line.substring(fullMatch.length)
63
-
64
- // Check if this is a Chrome extension format with tab identifier
65
- const isTabIdentifier = /^TAB-\d+\.\d+$/.test(firstBracket)
66
- let source = firstBracket
67
- let message = remainingLine
68
- let tabIdentifier: string | undefined
69
- let userAgent: string | undefined
70
-
71
- if (isTabIdentifier) {
72
- // Chrome extension format: [TAB-id] [SOURCE] [event] message
73
- tabIdentifier = firstBracket
74
-
75
- // Look for the next bracketed section which should be the actual source
76
- const sourceMatch = remainingLine.match(/^\[([^\]]+)\] /)
77
- if (sourceMatch) {
78
- source = sourceMatch[1] // This should be "BROWSER"
79
- message = remainingLine.substring(sourceMatch[0].length)
80
-
81
- // Extract user agent from INFO entries if present
82
- if (message.includes("User-Agent:")) {
83
- const uaMatch = message.match(/User-Agent: ([^,\n]+)/)
84
- if (uaMatch) {
85
- userAgent = uaMatch[1]
86
- }
87
- }
88
- }
89
- }
90
-
91
- const screenshot = message.match(/\[SCREENSHOT\] ([^\s[]+)/)?.[1]
92
- const screencast = message.match(/\[SCREENCAST\] View jank analysis: ([^\s]+)/)?.[1]
93
-
94
- // Clean up CSS formatting directives in console log messages
95
- let cleanedMessage = cleanConsoleFormatting(message)
96
-
97
- // Remove browser type markers from displayed message (they'll show as pills instead)
98
- // cleanedMessage = cleanedMessage.replace(/ \[PLAYWRIGHT\]$/, "").replace(/ \[CHROME_EXTENSION\]$/, "")
99
- cleanedMessage = cleanedMessage.replace(/ \[CHROME_EXTENSION\]$/, "") // Only remove Chrome Extension tag
100
-
101
- // Filter out noisy WebSocket logs from Next.js dev server
102
- const isNoisyWebSocketLog =
103
- cleanedMessage.includes("[Network.webSocketFrameSent]") ||
104
- cleanedMessage.includes("[Network.webSocketFrameReceived]") ||
105
- cleanedMessage.includes("[Network.webSocketFrame") ||
106
- (cleanedMessage.includes("webSocketDebuggerUrl") && cleanedMessage.includes("localhost")) ||
107
- (cleanedMessage.includes("[NETWORK") &&
108
- cleanedMessage.includes("__PAGE__") &&
109
- cleanedMessage.includes("refresh"))
110
-
111
- // Skip noisy WebSocket logs unless user specifically wants to see them
112
- if (isNoisyWebSocketLog) {
113
- currentEntry = null // Skip this entry
114
- continue
115
- }
116
-
117
- // Normalize timestamp to full ISO format if it's just time
118
- let normalizedTimestamp = timestamp
119
- if (/^\d{2}:\d{2}:\d{2}\.\d{3}$/.test(timestamp)) {
120
- // It's just HH:MM:SS.mmm, convert to today's date with this time
121
- const today = new Date()
122
- const [hours, minutes, secondsMs] = timestamp.split(":")
123
- const [seconds, ms] = secondsMs.split(".")
124
- today.setHours(parseInt(hours, 10), parseInt(minutes, 10), parseInt(seconds, 10), parseInt(ms, 10))
125
- normalizedTimestamp = today.toISOString()
126
- }
127
-
128
- currentEntry = {
129
- timestamp: normalizedTimestamp,
130
- source,
131
- message: cleanedMessage,
132
- screenshot,
133
- screencast,
134
- original: line,
135
- tabIdentifier,
136
- userAgent
137
- }
138
- } else if (currentEntry) {
139
- // Append to current entry's message
140
- currentEntry.message += `\n${line}`
141
- currentEntry.original += `\n${line}`
142
- }
143
- }
144
-
145
- // Don't forget the last entry
146
- if (currentEntry) {
147
- entries.push(currentEntry)
148
- }
149
-
150
- return entries
151
- }
@@ -1,346 +0,0 @@
1
- /**
2
- * MCP Client Manager - Orchestrates connections to downstream MCP servers
3
- *
4
- * This implements the "orchestrator" or "gateway" pattern where dev3000 acts as:
5
- * - MCP Server (to AI clients like Claude)
6
- * - MCP Client (to chrome-devtools and nextjs-dev MCPs)
7
- *
8
- * Benefits:
9
- * - Users only configure dev3000 once globally
10
- * - Auto-discovery of chrome-devtools and nextjs-dev MCPs
11
- * - Reduced context bloat for AI clients
12
- * - Intelligent orchestration across multiple MCP sources
13
- */
14
-
15
- import { Client } from "@modelcontextprotocol/sdk/client/index.js"
16
- import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js"
17
- import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js"
18
- import type { CallToolResult, Tool } from "@modelcontextprotocol/sdk/types.js"
19
-
20
- interface MCPClientConfig {
21
- name: string
22
- type: "http" | "stdio"
23
- url?: string // For HTTP transport
24
- command?: string // For stdio transport
25
- args?: string[] // For stdio transport
26
- enabled: boolean
27
- }
28
-
29
- export class MCPClientManager {
30
- private clients: Map<string, Client> = new Map()
31
- private transports: Map<string, StreamableHTTPClientTransport | StdioClientTransport> = new Map()
32
- private tools: Map<string, Tool[]> = new Map()
33
- private reconnectTimers: Map<string, NodeJS.Timeout> = new Map()
34
- private lastConfigs: Map<string, MCPClientConfig> = new Map()
35
- private toolDiscoveryListeners: Array<() => void> = []
36
- private toolUpdateSubscribers: Array<(info: { mcpName: string; tools: Tool[] }) => void> = []
37
-
38
- /**
39
- * Initialize MCP clients for available downstream servers
40
- */
41
- async initialize(config: {
42
- chromeDevtools?: { command: string; args: string[]; enabled: boolean }
43
- nextjsDev?: { command: string; args: string[]; enabled: boolean }
44
- svelteDev?: { command: string; args: string[]; enabled: boolean }
45
- }): Promise<void> {
46
- const configs: MCPClientConfig[] = []
47
-
48
- if (config.chromeDevtools?.enabled) {
49
- configs.push({
50
- name: "chrome-devtools",
51
- type: "stdio",
52
- command: config.chromeDevtools.command,
53
- args: config.chromeDevtools.args,
54
- enabled: true
55
- })
56
- }
57
-
58
- if (config.nextjsDev?.enabled) {
59
- configs.push({
60
- name: "nextjs-dev",
61
- type: "stdio",
62
- command: config.nextjsDev.command,
63
- args: config.nextjsDev.args,
64
- enabled: true
65
- })
66
- }
67
-
68
- if (config.svelteDev?.enabled) {
69
- configs.push({
70
- name: "svelte-dev",
71
- type: "stdio",
72
- command: config.svelteDev.command,
73
- args: config.svelteDev.args,
74
- enabled: true
75
- })
76
- }
77
-
78
- // Connect to each available MCP
79
- for (const cfg of configs) {
80
- try {
81
- await this.connectToMCP(cfg)
82
- const location = cfg.type === "http" ? cfg.url : `${cfg.command} ${cfg.args?.join(" ")}`
83
- console.log(`[MCP Orchestrator] Connected to ${cfg.name} (${cfg.type}) at ${location}`)
84
- } catch (error) {
85
- console.warn(`[MCP Orchestrator] Failed to connect to ${cfg.name}:`, error)
86
- }
87
- }
88
- }
89
-
90
- /**
91
- * Connect to a downstream MCP server
92
- */
93
- private async connectToMCP(config: MCPClientConfig): Promise<void> {
94
- // Store config for reconnection
95
- this.lastConfigs.set(config.name, config)
96
-
97
- const client = new Client(
98
- {
99
- name: "dev3000-orchestrator",
100
- version: "1.0.0"
101
- },
102
- {
103
- capabilities: {}
104
- }
105
- )
106
-
107
- client.onerror = (error) => {
108
- console.error(`[MCP Orchestrator] ${config.name} error:`, error)
109
- // Schedule reconnection for HTTP transports (SSE disconnects)
110
- if (config.type === "http") {
111
- this.scheduleReconnect(config.name)
112
- }
113
- }
114
-
115
- let transport: StreamableHTTPClientTransport | StdioClientTransport
116
-
117
- if (config.type === "http" && config.url) {
118
- transport = new StreamableHTTPClientTransport(new URL(config.url))
119
- } else if (config.type === "stdio" && config.command) {
120
- transport = new StdioClientTransport({
121
- command: config.command,
122
- args: config.args || []
123
- })
124
- } else {
125
- throw new Error(`Invalid MCP config for ${config.name}`)
126
- }
127
-
128
- await client.connect(transport)
129
-
130
- this.clients.set(config.name, client)
131
- this.transports.set(config.name, transport)
132
-
133
- // Discover available tools (non-fatal - connection already succeeded)
134
- try {
135
- const toolsResult = await client.listTools()
136
- const discoveredTools = Array.isArray(toolsResult?.tools) ? (toolsResult.tools as Tool[]) : []
137
-
138
- this.tools.set(config.name, discoveredTools)
139
-
140
- if (discoveredTools.length > 0) {
141
- console.log(`[MCP Orchestrator] Discovered ${discoveredTools.length} tools from ${config.name}`)
142
- this.notifyToolDiscovery()
143
- } else {
144
- console.log(`[MCP Orchestrator] No tools discovered from ${config.name} (will retry on first use)`)
145
- }
146
- this.notifyToolsUpdated(config.name)
147
- } catch (_error) {
148
- // Tool discovery failed but connection succeeded - tools will be discovered on first use
149
- this.tools.set(config.name, [])
150
- console.log(`[MCP Orchestrator] Tool discovery deferred for ${config.name} (will discover on first tool call)`)
151
- this.notifyToolsUpdated(config.name)
152
- }
153
- }
154
-
155
- /**
156
- * Get all discovered tools from all connected MCPs
157
- */
158
- getAllTools(): Array<{ mcpName: string; tool: Tool }> {
159
- const allTools: Array<{ mcpName: string; tool: Tool }> = []
160
-
161
- for (const [mcpName, tools] of this.tools.entries()) {
162
- for (const tool of tools) {
163
- allTools.push({ mcpName, tool })
164
- }
165
- }
166
-
167
- return allTools
168
- }
169
-
170
- /**
171
- * Call a tool on a downstream MCP server
172
- */
173
- async callTool(mcpName: string, toolName: string, args: Record<string, unknown>): Promise<CallToolResult> {
174
- const client = this.clients.get(mcpName)
175
-
176
- if (!client) {
177
- throw new Error(`MCP client '${mcpName}' not connected`)
178
- }
179
-
180
- try {
181
- const result = await client.callTool({
182
- name: toolName,
183
- arguments: args
184
- })
185
-
186
- return result as CallToolResult
187
- } catch (error) {
188
- console.error(`[MCP Orchestrator] Error calling ${mcpName}.${toolName}:`, error)
189
- throw error
190
- }
191
- }
192
-
193
- /**
194
- * Check if a specific MCP is connected
195
- */
196
- isConnected(mcpName: string): boolean {
197
- return this.clients.has(mcpName)
198
- }
199
-
200
- /**
201
- * Get list of connected MCP names
202
- */
203
- getConnectedMCPs(): string[] {
204
- return Array.from(this.clients.keys())
205
- }
206
-
207
- /**
208
- * Subscribe to tool updates for a specific MCP. Returns an unsubscribe function.
209
- */
210
- onToolsUpdated(subscriber: (info: { mcpName: string; tools: Tool[] }) => void): () => void {
211
- this.toolUpdateSubscribers.push(subscriber)
212
- return () => {
213
- this.toolUpdateSubscribers = this.toolUpdateSubscribers.filter((fn) => fn !== subscriber)
214
- }
215
- }
216
-
217
- /**
218
- * Wait for at least one downstream MCP to finish tool discovery, or resolve after a timeout.
219
- * Prevents registering an empty toolset before downstream servers are ready.
220
- */
221
- async waitForInitialTools(timeoutMs: number = 8000): Promise<void> {
222
- if (this.getAllTools().length > 0) {
223
- return
224
- }
225
-
226
- await new Promise<void>((resolve) => {
227
- let timeoutId: NodeJS.Timeout
228
-
229
- const onDiscovery = () => {
230
- clearTimeout(timeoutId)
231
- this.toolDiscoveryListeners = this.toolDiscoveryListeners.filter((listener) => listener !== onDiscovery)
232
- resolve()
233
- }
234
-
235
- timeoutId = setTimeout(() => {
236
- this.toolDiscoveryListeners = this.toolDiscoveryListeners.filter((listener) => listener !== onDiscovery)
237
- resolve()
238
- }, timeoutMs)
239
-
240
- this.toolDiscoveryListeners.push(onDiscovery)
241
- })
242
- }
243
-
244
- private notifyToolDiscovery(): void {
245
- if (this.toolDiscoveryListeners.length === 0 || this.getAllTools().length === 0) {
246
- return
247
- }
248
-
249
- const listeners = [...this.toolDiscoveryListeners]
250
- this.toolDiscoveryListeners = []
251
- for (const listener of listeners) {
252
- listener()
253
- }
254
- }
255
-
256
- private notifyToolsUpdated(mcpName: string): void {
257
- const tools = this.tools.get(mcpName) ?? []
258
- for (const subscriber of this.toolUpdateSubscribers) {
259
- try {
260
- subscriber({ mcpName, tools })
261
- } catch (error) {
262
- console.warn(`[MCP Orchestrator] Tool update subscriber error for ${mcpName}:`, error)
263
- }
264
- }
265
- }
266
-
267
- /**
268
- * Schedule reconnection for a disconnected MCP
269
- */
270
- private scheduleReconnect(mcpName: string): void {
271
- // Clear any existing reconnect timer
272
- const existingTimer = this.reconnectTimers.get(mcpName)
273
- if (existingTimer) {
274
- clearTimeout(existingTimer)
275
- }
276
-
277
- // Schedule reconnection after 3 seconds
278
- const timer = setTimeout(async () => {
279
- const config = this.lastConfigs.get(mcpName)
280
- if (!config) {
281
- console.warn(`[MCP Orchestrator] No config found for reconnection: ${mcpName}`)
282
- return
283
- }
284
-
285
- console.log(`[MCP Orchestrator] Attempting to reconnect to ${mcpName}...`)
286
- try {
287
- // Clean up old connection
288
- const oldTransport = this.transports.get(mcpName)
289
- if (oldTransport) {
290
- try {
291
- await oldTransport.close()
292
- } catch {
293
- // Ignore close errors
294
- }
295
- }
296
- this.clients.delete(mcpName)
297
- this.transports.delete(mcpName)
298
-
299
- // Attempt reconnection
300
- await this.connectToMCP(config)
301
- console.log(`[MCP Orchestrator] Successfully reconnected to ${mcpName}`)
302
- } catch (error) {
303
- console.warn(`[MCP Orchestrator] Reconnection to ${mcpName} failed:`, error)
304
- // Schedule another retry
305
- this.scheduleReconnect(mcpName)
306
- }
307
- }, 3000)
308
-
309
- this.reconnectTimers.set(mcpName, timer)
310
- }
311
-
312
- /**
313
- * Disconnect all MCP clients
314
- */
315
- async disconnect(): Promise<void> {
316
- // Clear all reconnect timers
317
- for (const timer of this.reconnectTimers.values()) {
318
- clearTimeout(timer)
319
- }
320
- this.reconnectTimers.clear()
321
-
322
- for (const [name, transport] of this.transports.entries()) {
323
- try {
324
- await transport.close()
325
- console.log(`[MCP Orchestrator] Disconnected from ${name}`)
326
- } catch (error) {
327
- console.error(`[MCP Orchestrator] Error disconnecting from ${name}:`, error)
328
- }
329
- }
330
-
331
- this.clients.clear()
332
- this.transports.clear()
333
- this.tools.clear()
334
- this.lastConfigs.clear()
335
- }
336
- }
337
-
338
- // Singleton instance
339
- let clientManager: MCPClientManager | null = null
340
-
341
- export function getMCPClientManager(): MCPClientManager {
342
- if (!clientManager) {
343
- clientManager = new MCPClientManager()
344
- }
345
- return clientManager
346
- }