dev3000 0.0.130 → 0.0.134
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/dev3000 +90 -0
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js +216 -51
- package/dist/cli.js.map +1 -1
- package/dist/commands/cloud-fix.js +8 -8
- package/dist/commands/cloud-fix.js.map +1 -1
- package/dist/components/AgentSelector.d.ts +12 -0
- package/dist/components/AgentSelector.d.ts.map +1 -0
- package/dist/components/AgentSelector.js +99 -0
- package/dist/components/AgentSelector.js.map +1 -0
- package/dist/components/SkillSelector.d.ts +9 -0
- package/dist/components/SkillSelector.d.ts.map +1 -0
- package/dist/components/SkillSelector.js +70 -0
- package/dist/components/SkillSelector.js.map +1 -0
- package/dist/dev-environment.d.ts +38 -0
- package/dist/dev-environment.d.ts.map +1 -1
- package/dist/dev-environment.js +350 -116
- package/dist/dev-environment.js.map +1 -1
- package/dist/src/tui-interface-impl.tsx +36 -22
- package/dist/tui-interface-impl.d.ts +10 -6
- package/dist/tui-interface-impl.d.ts.map +1 -1
- package/dist/tui-interface-impl.js +24 -16
- package/dist/tui-interface-impl.js.map +1 -1
- package/dist/tui-interface.d.ts +11 -7
- package/dist/tui-interface.d.ts.map +1 -1
- package/dist/tui-interface.js +6 -6
- package/dist/tui-interface.js.map +1 -1
- package/dist/utils/agent-selection.d.ts +24 -0
- package/dist/utils/agent-selection.d.ts.map +1 -0
- package/dist/utils/agent-selection.js +34 -0
- package/dist/utils/agent-selection.js.map +1 -0
- package/dist/utils/project-name.d.ts +6 -0
- package/dist/utils/project-name.d.ts.map +1 -1
- package/dist/utils/project-name.js +10 -0
- package/dist/utils/project-name.js.map +1 -1
- package/dist/utils/skill-installer.d.ts +29 -0
- package/dist/utils/skill-installer.d.ts.map +1 -0
- package/dist/utils/skill-installer.js +185 -0
- package/dist/utils/skill-installer.js.map +1 -0
- package/dist/utils/tmux-helpers.d.ts +35 -0
- package/dist/utils/tmux-helpers.d.ts.map +1 -0
- package/dist/utils/tmux-helpers.js +62 -0
- package/dist/utils/tmux-helpers.js.map +1 -0
- package/dist/utils/user-config.d.ts +6 -0
- package/dist/utils/user-config.d.ts.map +1 -1
- package/dist/utils/user-config.js +30 -5
- package/dist/utils/user-config.js.map +1 -1
- package/dist/utils/version-check.d.ts +10 -1
- package/dist/utils/version-check.d.ts.map +1 -1
- package/dist/utils/version-check.js +60 -2
- package/dist/utils/version-check.js.map +1 -1
- package/mcp-server/.next/BUILD_ID +1 -1
- package/mcp-server/.next/build-manifest.json +2 -2
- package/mcp-server/.next/fallback-build-manifest.json +2 -2
- package/mcp-server/.next/next-minimal-server.js.nft.json +1 -1
- package/mcp-server/.next/next-server.js.nft.json +1 -1
- package/mcp-server/.next/prerender-manifest.json +3 -3
- package/mcp-server/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/mcp-server/.next/server/app/_global-error.html +2 -2
- package/mcp-server/.next/server/app/_global-error.rsc +1 -1
- package/mcp-server/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/mcp-server/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/mcp-server/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/mcp-server/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/mcp-server/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/mcp-server/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/mcp-server/.next/server/app/_not-found.html +1 -1
- package/mcp-server/.next/server/app/_not-found.rsc +1 -1
- package/mcp-server/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/mcp-server/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/mcp-server/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/mcp-server/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/mcp-server/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/mcp-server/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/mcp-server/.next/server/app/api/jank/[session]/route.js.nft.json +1 -1
- package/mcp-server/.next/server/app/api/logs/append/route.js.nft.json +1 -1
- package/mcp-server/.next/server/app/api/logs/head/route.js.nft.json +1 -1
- package/mcp-server/.next/server/app/api/logs/list/route.js.nft.json +1 -1
- package/mcp-server/.next/server/app/api/logs/rotate/route.js.nft.json +1 -1
- package/mcp-server/.next/server/app/api/logs/stream/route.js.nft.json +1 -1
- package/mcp-server/.next/server/app/api/logs/tail/route.js.nft.json +1 -1
- package/mcp-server/.next/server/app/api/orchestrator/route.js.nft.json +1 -1
- package/mcp-server/.next/server/app/api/screenshots/[filename]/route.js.nft.json +1 -1
- package/mcp-server/.next/server/app/api/screenshots/capture/route.js.nft.json +1 -1
- package/mcp-server/.next/server/app/api/screenshots/clear/route.js.nft.json +1 -1
- package/mcp-server/.next/server/app/api/screenshots/list/route.js.nft.json +1 -1
- package/mcp-server/.next/server/app/api/teams/route.js.nft.json +1 -1
- package/mcp-server/.next/server/app/api/tools/route.js.nft.json +1 -1
- package/mcp-server/.next/server/app/index.html +1 -1
- package/mcp-server/.next/server/app/index.rsc +1 -1
- package/mcp-server/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/mcp-server/.next/server/app/index.segments/_full.segment.rsc +1 -1
- package/mcp-server/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/mcp-server/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/mcp-server/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/mcp-server/.next/server/app/logs/page.js.nft.json +1 -1
- package/mcp-server/.next/server/app/mcp/route.js.nft.json +1 -1
- package/mcp-server/.next/server/app/page.js.nft.json +1 -1
- package/mcp-server/.next/server/app/video/[session]/page.js.nft.json +1 -1
- package/mcp-server/.next/server/chunks/[root-of-the-server]__141a5bc7._.js.map +1 -1
- package/mcp-server/.next/server/pages/404.html +1 -1
- package/mcp-server/.next/server/pages/500.html +2 -2
- package/mcp-server/.next/server/server-reference-manifest.js +1 -1
- package/mcp-server/.next/server/server-reference-manifest.json +1 -1
- package/mcp-server/app/mcp/route.ts +2 -0
- package/package.json +11 -4
- package/src/tui-interface-impl.tsx +36 -22
- /package/mcp-server/.next/static/{YTIno5QuIO6mgeAWJ8zng → Fekb6bDxTd8hH8dFQNlIK}/_buildManifest.js +0 -0
- /package/mcp-server/.next/static/{YTIno5QuIO6mgeAWJ8zng → Fekb6bDxTd8hH8dFQNlIK}/_clientMiddlewareManifest.json +0 -0
- /package/mcp-server/.next/static/{YTIno5QuIO6mgeAWJ8zng → Fekb6bDxTd8hH8dFQNlIK}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><!--
|
|
1
|
+
<!DOCTYPE html><!--Fekb6bDxTd8hH8dFQNlIK--><html lang="en" class="h-full" vt-update="auto"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/59cdeaf92a780e96.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/41c5312e59752fb5.js"/><script src="/_next/static/chunks/f09e07f5359ffb6b.js" async=""></script><script src="/_next/static/chunks/f5ae99caea655ac1.js" async=""></script><script src="/_next/static/chunks/0ceacd9ff62ffa24.js" async=""></script><script src="/_next/static/chunks/turbopack-2c2bdfdb92058782.js" async=""></script><script src="/_next/static/chunks/6bd8e9b9ad938cba.js" async=""></script><script src="/_next/static/chunks/4b70aaeeb4b78390.js" async=""></script><meta name="robots" content="noindex"/><title>dev3000</title><link rel="icon" href="/favicon.ico" type="image/x-icon"/><link rel="icon" href="/favicon.svg" type="image/svg+xml" sizes="32x32"/><link rel="icon" href="/favicon-16.svg" type="image/svg+xml" sizes="16x16"/><link rel="icon" href="/favicon-64.svg" type="image/svg+xml" sizes="64x64"/><link rel="apple-touch-icon" href="/favicon-180.png"/><link rel="shortcut icon" href="/favicon.svg"/><meta name="theme-color" content="#1f2937"/><title>404: This page could not be found.</title><script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script></head><body class="h-full"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/41c5312e59752fb5.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:\"$Sreact.view_transition\"\n3:I[41452,[\"/_next/static/chunks/6bd8e9b9ad938cba.js\",\"/_next/static/chunks/4b70aaeeb4b78390.js\"],\"default\"]\n4:I[56089,[\"/_next/static/chunks/6bd8e9b9ad938cba.js\",\"/_next/static/chunks/4b70aaeeb4b78390.js\"],\"default\"]\n5:I[47985,[\"/_next/static/chunks/6bd8e9b9ad938cba.js\",\"/_next/static/chunks/4b70aaeeb4b78390.js\"],\"OutletBoundary\"]\n6:\"$Sreact.suspense\"\n8:I[47985,[\"/_next/static/chunks/6bd8e9b9ad938cba.js\",\"/_next/static/chunks/4b70aaeeb4b78390.js\"],\"ViewportBoundary\"]\na:I[47985,[\"/_next/static/chunks/6bd8e9b9ad938cba.js\",\"/_next/static/chunks/4b70aaeeb4b78390.js\"],\"MetadataBoundary\"]\nc:I[56911,[\"/_next/static/chunks/6bd8e9b9ad938cba.js\",\"/_next/static/chunks/4b70aaeeb4b78390.js\"],\"default\"]\n:HL[\"/_next/static/chunks/59cdeaf92a780e96.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"Fekb6bDxTd8hH8dFQNlIK\",\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/59cdeaf92a780e96.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/6bd8e9b9ad938cba.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/4b70aaeeb4b78390.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$2\",null,{\"children\":[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"h-full\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"dev3000\"}],[\"$\",\"link\",null,{\"rel\":\"icon\",\"href\":\"/favicon.ico\",\"type\":\"image/x-icon\"}],[\"$\",\"link\",null,{\"rel\":\"icon\",\"href\":\"/favicon.svg\",\"type\":\"image/svg+xml\",\"sizes\":\"32x32\"}],[\"$\",\"link\",null,{\"rel\":\"icon\",\"href\":\"/favicon-16.svg\",\"type\":\"image/svg+xml\",\"sizes\":\"16x16\"}],[\"$\",\"link\",null,{\"rel\":\"icon\",\"href\":\"/favicon-64.svg\",\"type\":\"image/svg+xml\",\"sizes\":\"64x64\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"href\":\"/favicon-180.png\"}],[\"$\",\"link\",null,{\"rel\":\"shortcut icon\",\"href\":\"/favicon.svg\"}],[\"$\",\"meta\",null,{\"name\":\"theme-color\",\"content\":\"#1f2937\"}]]}],[\"$\",\"body\",null,{\"className\":\"h-full\",\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:1:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L5\",null,{\"children\":[\"$\",\"$6\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@7\"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$6\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",\"$undefined\"],\"S\":true}\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"7:null\nb:[]\n"])</script></body></html>
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
<!DOCTYPE html><!--
|
|
2
|
-
@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/41c5312e59752fb5.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[41452,[\"/_next/static/chunks/6bd8e9b9ad938cba.js\",\"/_next/static/chunks/4b70aaeeb4b78390.js\"],\"default\"]\n3:I[56089,[\"/_next/static/chunks/6bd8e9b9ad938cba.js\",\"/_next/static/chunks/4b70aaeeb4b78390.js\"],\"default\"]\n4:I[47985,[\"/_next/static/chunks/6bd8e9b9ad938cba.js\",\"/_next/static/chunks/4b70aaeeb4b78390.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n7:I[47985,[\"/_next/static/chunks/6bd8e9b9ad938cba.js\",\"/_next/static/chunks/4b70aaeeb4b78390.js\"],\"ViewportBoundary\"]\n9:I[47985,[\"/_next/static/chunks/6bd8e9b9ad938cba.js\",\"/_next/static/chunks/4b70aaeeb4b78390.js\"],\"MetadataBoundary\"]\nb:I[56911,[\"/_next/static/chunks/6bd8e9b9ad938cba.js\",\"/_next/static/chunks/4b70aaeeb4b78390.js\"],\"default\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"
|
|
1
|
+
<!DOCTYPE html><!--Fekb6bDxTd8hH8dFQNlIK--><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/41c5312e59752fb5.js"/><script src="/_next/static/chunks/f09e07f5359ffb6b.js" async=""></script><script src="/_next/static/chunks/f5ae99caea655ac1.js" async=""></script><script src="/_next/static/chunks/0ceacd9ff62ffa24.js" async=""></script><script src="/_next/static/chunks/turbopack-2c2bdfdb92058782.js" async=""></script><script src="/_next/static/chunks/6bd8e9b9ad938cba.js" async=""></script><script src="/_next/static/chunks/4b70aaeeb4b78390.js" async=""></script><title>500: Internal Server Error.</title><script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}
|
|
2
|
+
@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/41c5312e59752fb5.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[41452,[\"/_next/static/chunks/6bd8e9b9ad938cba.js\",\"/_next/static/chunks/4b70aaeeb4b78390.js\"],\"default\"]\n3:I[56089,[\"/_next/static/chunks/6bd8e9b9ad938cba.js\",\"/_next/static/chunks/4b70aaeeb4b78390.js\"],\"default\"]\n4:I[47985,[\"/_next/static/chunks/6bd8e9b9ad938cba.js\",\"/_next/static/chunks/4b70aaeeb4b78390.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n7:I[47985,[\"/_next/static/chunks/6bd8e9b9ad938cba.js\",\"/_next/static/chunks/4b70aaeeb4b78390.js\"],\"ViewportBoundary\"]\n9:I[47985,[\"/_next/static/chunks/6bd8e9b9ad938cba.js\",\"/_next/static/chunks/4b70aaeeb4b78390.js\"],\"MetadataBoundary\"]\nb:I[56911,[\"/_next/static/chunks/6bd8e9b9ad938cba.js\",\"/_next/static/chunks/4b70aaeeb4b78390.js\"],\"default\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"Fekb6bDxTd8hH8dFQNlIK\",\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"title\",null,{\"children\":\"500: Internal Server Error.\"}]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"lineHeight\":\"48px\"},\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"paddingRight\":23,\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\"},\"children\":\"500\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"28px\"},\"children\":\"Internal Server Error.\"}]}]]}]}]}]]}],[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/6bd8e9b9ad938cba.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/4b70aaeeb4b78390.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L7\",null,{\"children\":\"$L8\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L9\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$La\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$b\",\"$undefined\"],\"S\":true}\n"])</script><script>self.__next_f.push([1,"8:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\na:[]\n"])</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
self.__RSC_SERVER_MANIFEST="{\n \"node\": {},\n \"edge\": {},\n \"encryptionKey\": \"
|
|
1
|
+
self.__RSC_SERVER_MANIFEST="{\n \"node\": {},\n \"edge\": {},\n \"encryptionKey\": \"AcQnbb3NuNRqlB90VKugtAs9k2WB69GAfMcdvR7ejzo=\"\n}"
|
|
@@ -455,6 +455,8 @@ const handler = createMcpHandler(
|
|
|
455
455
|
})
|
|
456
456
|
|
|
457
457
|
// Allow arbitrary argument objects to pass through to downstream MCPs
|
|
458
|
+
// NOTE: Cannot use JSON Schema directly here - mcp-handler expects Zod schemas
|
|
459
|
+
// and will error with "Cannot read properties of undefined (reading 'typeName')"
|
|
458
460
|
proxiedTool.inputSchema = z.object({}).passthrough()
|
|
459
461
|
|
|
460
462
|
proxiedTool.update({
|
package/package.json
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dev3000",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.134",
|
|
4
4
|
"description": "AI-powered development tools with browser monitoring and MCP server integration",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"bin": {
|
|
8
|
-
"dev3000": "
|
|
9
|
-
"d3k": "
|
|
8
|
+
"dev3000": "./bin/dev3000",
|
|
9
|
+
"d3k": "./bin/dev3000"
|
|
10
10
|
},
|
|
11
11
|
"files": [
|
|
12
|
+
"bin/",
|
|
12
13
|
"dist/",
|
|
13
14
|
"src/tui-interface-impl.tsx",
|
|
14
15
|
"mcp-server/app/",
|
|
@@ -47,7 +48,8 @@
|
|
|
47
48
|
"_postinstall": "node scripts/check-install.js || exit 0",
|
|
48
49
|
"_prepare": "husky",
|
|
49
50
|
"release": "./scripts/release.sh",
|
|
50
|
-
"canary": "./scripts/canary.sh"
|
|
51
|
+
"canary": "./scripts/canary.sh",
|
|
52
|
+
"build:binaries": "bun run scripts/build-binaries.ts"
|
|
51
53
|
},
|
|
52
54
|
"keywords": [
|
|
53
55
|
"nextjs",
|
|
@@ -67,6 +69,7 @@
|
|
|
67
69
|
"chalk": "^5.3.0",
|
|
68
70
|
"commander": "^14.0.1",
|
|
69
71
|
"ink": "^6.5.1",
|
|
72
|
+
"ink-select-input": "^6.2.0",
|
|
70
73
|
"ink-spinner": "^5.0.0",
|
|
71
74
|
"ms": "^2.1.3",
|
|
72
75
|
"next": "16.1.0",
|
|
@@ -84,10 +87,14 @@
|
|
|
84
87
|
"@types/react": "^19.0.0",
|
|
85
88
|
"@types/ws": "^8.5.12",
|
|
86
89
|
"husky": "^9.0.0",
|
|
90
|
+
"react-devtools-core": "^7.0.1",
|
|
87
91
|
"tsx": "^4.20.3",
|
|
88
92
|
"turbo": "^2.6.0",
|
|
89
93
|
"vitest": "^3.2.4"
|
|
90
94
|
},
|
|
95
|
+
"optionalDependencies": {
|
|
96
|
+
"@d3k/darwin-arm64": "0.0.134"
|
|
97
|
+
},
|
|
91
98
|
"pnpm": {
|
|
92
99
|
"peerDependencyRules": {
|
|
93
100
|
"allowAny": [
|
|
@@ -6,6 +6,11 @@ import { memo, useEffect, useRef, useState } from "react"
|
|
|
6
6
|
import type { Readable } from "stream"
|
|
7
7
|
import { LOG_COLORS } from "./constants/log-colors.js"
|
|
8
8
|
|
|
9
|
+
export type UpdateInfo =
|
|
10
|
+
| { type: "available"; latestVersion: string }
|
|
11
|
+
| { type: "updated"; newVersion: string; autoHide?: boolean }
|
|
12
|
+
| null
|
|
13
|
+
|
|
9
14
|
export interface TUIOptions {
|
|
10
15
|
appPort: string
|
|
11
16
|
mcpPort: string
|
|
@@ -14,9 +19,7 @@ export interface TUIOptions {
|
|
|
14
19
|
serversOnly?: boolean
|
|
15
20
|
version: string
|
|
16
21
|
projectName?: string
|
|
17
|
-
|
|
18
|
-
latestVersion: string
|
|
19
|
-
} | null
|
|
22
|
+
updateInfo?: UpdateInfo
|
|
20
23
|
}
|
|
21
24
|
|
|
22
25
|
interface LogEntry {
|
|
@@ -151,25 +154,27 @@ const TUIApp = ({
|
|
|
151
154
|
serversOnly,
|
|
152
155
|
version,
|
|
153
156
|
projectName,
|
|
154
|
-
|
|
157
|
+
updateInfo: initialUpdateInfo,
|
|
155
158
|
onStatusUpdate,
|
|
156
159
|
onAppPortUpdate,
|
|
157
|
-
|
|
160
|
+
onUpdateInfoUpdate
|
|
158
161
|
}: TUIOptions & {
|
|
159
162
|
onStatusUpdate: (fn: (status: string | null) => void) => void
|
|
160
163
|
onAppPortUpdate: (fn: (port: string) => void) => void
|
|
161
|
-
|
|
164
|
+
onUpdateInfoUpdate: (fn: (info: UpdateInfo) => void) => void
|
|
162
165
|
}) => {
|
|
163
166
|
const [logs, setLogs] = useState<LogEntry[]>([])
|
|
164
167
|
const [scrollOffset, setScrollOffset] = useState(0)
|
|
165
168
|
const [initStatus, setInitStatus] = useState<string | null>(null)
|
|
166
169
|
const [appPort, setAppPort] = useState<string>(initialAppPort)
|
|
167
|
-
const [updateInfo, setUpdateInfo] = useState<
|
|
170
|
+
const [updateInfo, setUpdateInfo] = useState<UpdateInfo>(initialUpdateInfo || null)
|
|
168
171
|
const [portConfirmed, setPortConfirmed] = useState<boolean>(false)
|
|
169
172
|
const logIdCounter = useRef(0)
|
|
170
173
|
const [clearFromLogId, setClearFromLogId] = useState<number>(0) // Track log ID to clear from
|
|
171
174
|
const { stdout } = useStdout()
|
|
172
|
-
|
|
175
|
+
// Show pane switching hint if running inside tmux
|
|
176
|
+
const isInTmux = !!process.env.TMUX
|
|
177
|
+
const ctrlCMessageDefault = isInTmux ? "^B←→ panes ^L clear ^C quit" : "^L clear ^C quit"
|
|
173
178
|
const [ctrlCMessage, setCtrlCMessage] = useState(ctrlCMessageDefault)
|
|
174
179
|
const maxScrollOffsetRef = useRef(0)
|
|
175
180
|
|
|
@@ -226,7 +231,7 @@ const TUIApp = ({
|
|
|
226
231
|
setInitStatus(status)
|
|
227
232
|
}
|
|
228
233
|
})
|
|
229
|
-
}, [onStatusUpdate])
|
|
234
|
+
}, [onStatusUpdate, ctrlCMessageDefault])
|
|
230
235
|
|
|
231
236
|
// Provide app port update function to parent
|
|
232
237
|
useEffect(() => {
|
|
@@ -236,12 +241,18 @@ const TUIApp = ({
|
|
|
236
241
|
})
|
|
237
242
|
}, [onAppPortUpdate])
|
|
238
243
|
|
|
239
|
-
// Provide update
|
|
244
|
+
// Provide update info function to parent
|
|
240
245
|
useEffect(() => {
|
|
241
|
-
|
|
246
|
+
onUpdateInfoUpdate((info: UpdateInfo) => {
|
|
242
247
|
setUpdateInfo(info)
|
|
248
|
+
// Auto-hide "updated" messages after 10 seconds
|
|
249
|
+
if (info?.type === "updated" && info.autoHide !== false) {
|
|
250
|
+
setTimeout(() => {
|
|
251
|
+
setUpdateInfo(null)
|
|
252
|
+
}, 10000)
|
|
253
|
+
}
|
|
243
254
|
})
|
|
244
|
-
}, [
|
|
255
|
+
}, [onUpdateInfoUpdate])
|
|
245
256
|
|
|
246
257
|
// Calculate available lines for logs dynamically based on terminal height and mode
|
|
247
258
|
const calculateMaxVisibleLogs = () => {
|
|
@@ -254,7 +265,7 @@ const TUIApp = ({
|
|
|
254
265
|
} else {
|
|
255
266
|
// Normal mode calculation - account for all UI elements
|
|
256
267
|
const headerBorderLines = 2 // Top border (with title) + bottom border
|
|
257
|
-
const headerContentLines =
|
|
268
|
+
const headerContentLines = 4 // Logo is 4 lines tall
|
|
258
269
|
const logBoxBorderLines = 2 // Top and bottom border of log box
|
|
259
270
|
const logBoxHeaderLines = 1 // "Logs (X total)" text
|
|
260
271
|
const logBoxFooterLines = 1 // Always reserve space for "(X lines below)" to keep layout stable
|
|
@@ -469,7 +480,7 @@ const TUIApp = ({
|
|
|
469
480
|
<Text color="#A18CE5">{topBorderLine}</Text>
|
|
470
481
|
|
|
471
482
|
{/* Content with side borders only */}
|
|
472
|
-
<Box borderStyle="round" borderColor="#A18CE5" borderTop={false} paddingX={1}
|
|
483
|
+
<Box borderStyle="round" borderColor="#A18CE5" borderTop={false} paddingX={1}>
|
|
473
484
|
<Box flexDirection="row" gap={1}>
|
|
474
485
|
{/* ASCII Logo on the left */}
|
|
475
486
|
{/* biome-ignore format: preserve ASCII art alignment */}
|
|
@@ -547,7 +558,10 @@ const TUIApp = ({
|
|
|
547
558
|
</Text>
|
|
548
559
|
</Box>
|
|
549
560
|
<Box gap={2}>
|
|
550
|
-
{updateInfo
|
|
561
|
+
{updateInfo?.type === "available" && (
|
|
562
|
+
<Text color="yellow">↑ v{updateInfo.latestVersion} available (d3k upgrade)</Text>
|
|
563
|
+
)}
|
|
564
|
+
{updateInfo?.type === "updated" && <Text color="green">✓ Updated to v{updateInfo.newVersion}</Text>}
|
|
551
565
|
<Text color="#A18CE5">{ctrlCMessage}</Text>
|
|
552
566
|
</Box>
|
|
553
567
|
</Box>
|
|
@@ -559,13 +573,13 @@ export async function runTUI(options: TUIOptions): Promise<{
|
|
|
559
573
|
app: { unmount: () => void }
|
|
560
574
|
updateStatus: (status: string | null) => void
|
|
561
575
|
updateAppPort: (port: string) => void
|
|
562
|
-
|
|
576
|
+
updateUpdateInfo: (info: UpdateInfo) => void
|
|
563
577
|
}> {
|
|
564
578
|
return new Promise((resolve, reject) => {
|
|
565
579
|
try {
|
|
566
580
|
let statusUpdater: ((status: string | null) => void) | null = null
|
|
567
581
|
let appPortUpdater: ((port: string) => void) | null = null
|
|
568
|
-
let
|
|
582
|
+
let updateInfoUpdater: ((info: UpdateInfo) => void) | null = null
|
|
569
583
|
|
|
570
584
|
// Wrap stdout.write to add synchronized update escape sequences
|
|
571
585
|
// This tells the terminal to buffer all output until the end marker
|
|
@@ -602,8 +616,8 @@ export async function runTUI(options: TUIOptions): Promise<{
|
|
|
602
616
|
onAppPortUpdate={(fn) => {
|
|
603
617
|
appPortUpdater = fn
|
|
604
618
|
}}
|
|
605
|
-
|
|
606
|
-
|
|
619
|
+
onUpdateInfoUpdate={(fn) => {
|
|
620
|
+
updateInfoUpdater = fn
|
|
607
621
|
}}
|
|
608
622
|
/>,
|
|
609
623
|
{ exitOnCtrlC: false }
|
|
@@ -623,9 +637,9 @@ export async function runTUI(options: TUIOptions): Promise<{
|
|
|
623
637
|
appPortUpdater(port)
|
|
624
638
|
}
|
|
625
639
|
},
|
|
626
|
-
|
|
627
|
-
if (
|
|
628
|
-
|
|
640
|
+
updateUpdateInfo: (info: UpdateInfo) => {
|
|
641
|
+
if (updateInfoUpdater) {
|
|
642
|
+
updateInfoUpdater(info)
|
|
629
643
|
}
|
|
630
644
|
}
|
|
631
645
|
})
|
/package/mcp-server/.next/static/{YTIno5QuIO6mgeAWJ8zng → Fekb6bDxTd8hH8dFQNlIK}/_buildManifest.js
RENAMED
|
File without changes
|
|
File without changes
|
/package/mcp-server/.next/static/{YTIno5QuIO6mgeAWJ8zng → Fekb6bDxTd8hH8dFQNlIK}/_ssgManifest.js
RENAMED
|
File without changes
|