dev3000 0.0.131 → 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.js +202 -33
- 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 +37 -0
- package/dist/dev-environment.d.ts.map +1 -1
- package/dist/dev-environment.js +245 -106
- package/dist/dev-environment.js.map +1 -1
- package/dist/src/tui-interface-impl.tsx +32 -20
- 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 +20 -14
- 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.map +1 -1
- package/dist/utils/tmux-helpers.js +4 -2
- package/dist/utils/tmux-helpers.js.map +1 -1
- 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/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/package.json +11 -4
- package/src/tui-interface-impl.tsx +32 -20
- /package/mcp-server/.next/static/{i5SOhj7cf3JSMPksTBNpr → Fekb6bDxTd8hH8dFQNlIK}/_buildManifest.js +0 -0
- /package/mcp-server/.next/static/{i5SOhj7cf3JSMPksTBNpr → Fekb6bDxTd8hH8dFQNlIK}/_clientMiddlewareManifest.json +0 -0
- /package/mcp-server/.next/static/{i5SOhj7cf3JSMPksTBNpr → 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}"
|
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,20 +154,20 @@ 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
|
|
@@ -238,12 +241,18 @@ const TUIApp = ({
|
|
|
238
241
|
})
|
|
239
242
|
}, [onAppPortUpdate])
|
|
240
243
|
|
|
241
|
-
// Provide update
|
|
244
|
+
// Provide update info function to parent
|
|
242
245
|
useEffect(() => {
|
|
243
|
-
|
|
246
|
+
onUpdateInfoUpdate((info: UpdateInfo) => {
|
|
244
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
|
+
}
|
|
245
254
|
})
|
|
246
|
-
}, [
|
|
255
|
+
}, [onUpdateInfoUpdate])
|
|
247
256
|
|
|
248
257
|
// Calculate available lines for logs dynamically based on terminal height and mode
|
|
249
258
|
const calculateMaxVisibleLogs = () => {
|
|
@@ -256,7 +265,7 @@ const TUIApp = ({
|
|
|
256
265
|
} else {
|
|
257
266
|
// Normal mode calculation - account for all UI elements
|
|
258
267
|
const headerBorderLines = 2 // Top border (with title) + bottom border
|
|
259
|
-
const headerContentLines =
|
|
268
|
+
const headerContentLines = 4 // Logo is 4 lines tall
|
|
260
269
|
const logBoxBorderLines = 2 // Top and bottom border of log box
|
|
261
270
|
const logBoxHeaderLines = 1 // "Logs (X total)" text
|
|
262
271
|
const logBoxFooterLines = 1 // Always reserve space for "(X lines below)" to keep layout stable
|
|
@@ -471,7 +480,7 @@ const TUIApp = ({
|
|
|
471
480
|
<Text color="#A18CE5">{topBorderLine}</Text>
|
|
472
481
|
|
|
473
482
|
{/* Content with side borders only */}
|
|
474
|
-
<Box borderStyle="round" borderColor="#A18CE5" borderTop={false} paddingX={1}
|
|
483
|
+
<Box borderStyle="round" borderColor="#A18CE5" borderTop={false} paddingX={1}>
|
|
475
484
|
<Box flexDirection="row" gap={1}>
|
|
476
485
|
{/* ASCII Logo on the left */}
|
|
477
486
|
{/* biome-ignore format: preserve ASCII art alignment */}
|
|
@@ -549,7 +558,10 @@ const TUIApp = ({
|
|
|
549
558
|
</Text>
|
|
550
559
|
</Box>
|
|
551
560
|
<Box gap={2}>
|
|
552
|
-
{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>}
|
|
553
565
|
<Text color="#A18CE5">{ctrlCMessage}</Text>
|
|
554
566
|
</Box>
|
|
555
567
|
</Box>
|
|
@@ -561,13 +573,13 @@ export async function runTUI(options: TUIOptions): Promise<{
|
|
|
561
573
|
app: { unmount: () => void }
|
|
562
574
|
updateStatus: (status: string | null) => void
|
|
563
575
|
updateAppPort: (port: string) => void
|
|
564
|
-
|
|
576
|
+
updateUpdateInfo: (info: UpdateInfo) => void
|
|
565
577
|
}> {
|
|
566
578
|
return new Promise((resolve, reject) => {
|
|
567
579
|
try {
|
|
568
580
|
let statusUpdater: ((status: string | null) => void) | null = null
|
|
569
581
|
let appPortUpdater: ((port: string) => void) | null = null
|
|
570
|
-
let
|
|
582
|
+
let updateInfoUpdater: ((info: UpdateInfo) => void) | null = null
|
|
571
583
|
|
|
572
584
|
// Wrap stdout.write to add synchronized update escape sequences
|
|
573
585
|
// This tells the terminal to buffer all output until the end marker
|
|
@@ -604,8 +616,8 @@ export async function runTUI(options: TUIOptions): Promise<{
|
|
|
604
616
|
onAppPortUpdate={(fn) => {
|
|
605
617
|
appPortUpdater = fn
|
|
606
618
|
}}
|
|
607
|
-
|
|
608
|
-
|
|
619
|
+
onUpdateInfoUpdate={(fn) => {
|
|
620
|
+
updateInfoUpdater = fn
|
|
609
621
|
}}
|
|
610
622
|
/>,
|
|
611
623
|
{ exitOnCtrlC: false }
|
|
@@ -625,9 +637,9 @@ export async function runTUI(options: TUIOptions): Promise<{
|
|
|
625
637
|
appPortUpdater(port)
|
|
626
638
|
}
|
|
627
639
|
},
|
|
628
|
-
|
|
629
|
-
if (
|
|
630
|
-
|
|
640
|
+
updateUpdateInfo: (info: UpdateInfo) => {
|
|
641
|
+
if (updateInfoUpdater) {
|
|
642
|
+
updateInfoUpdater(info)
|
|
631
643
|
}
|
|
632
644
|
}
|
|
633
645
|
})
|
/package/mcp-server/.next/static/{i5SOhj7cf3JSMPksTBNpr → Fekb6bDxTd8hH8dFQNlIK}/_buildManifest.js
RENAMED
|
File without changes
|
|
File without changes
|
/package/mcp-server/.next/static/{i5SOhj7cf3JSMPksTBNpr → Fekb6bDxTd8hH8dFQNlIK}/_ssgManifest.js
RENAMED
|
File without changes
|