mcp-deploy 0.1.4 → 0.1.5
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/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/app-path-routes-manifest.json +6 -6
- package/.next/standalone/.next/build-manifest.json +2 -2
- package/.next/standalone/.next/server/app/.well-known/oauth-authorization-server/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_global-error.html +2 -2
- package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +2 -2
- package/.next/standalone/.next/server/app/_not-found.rsc +2 -2
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/api/cloudflare/setup/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/cloudflare/status/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/mcps/[slug]/deploy/route.js +1 -1
- package/.next/standalone/.next/server/app/api/mcps/[slug]/deploy/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/mcps/[slug]/remove/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/mcps/[slug]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/mcps/[slug]/secrets/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/mcps/[slug]/status/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/mcps/[slug]/undeploy/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/mcps/add/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/mcps/check-updates/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/mcps/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/mcps/validate/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/oauth/approve/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/oauth/register/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/oauth/token/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/test-connection/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/index.html +2 -2
- package/.next/standalone/.next/server/app/index.rsc +2 -2
- package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/mcps/[slug]/page.js +1 -1
- package/.next/standalone/.next/server/app/mcps/[slug]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/oauth/authorize/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/oauth/authorize.html +2 -2
- package/.next/standalone/.next/server/app/oauth/authorize.rsc +2 -2
- package/.next/standalone/.next/server/app/oauth/authorize.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/oauth/authorize.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/oauth/authorize.segments/_index.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/oauth/authorize.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/oauth/authorize.segments/oauth/authorize/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/oauth/authorize.segments/oauth/authorize.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/oauth/authorize.segments/oauth.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/setup/page.js +1 -1
- package/.next/standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/setup.html +2 -2
- package/.next/standalone/.next/server/app/setup.rsc +2 -2
- package/.next/standalone/.next/server/app/setup.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/setup.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/setup.segments/_index.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/setup.segments/setup.segment.rsc +1 -1
- package/.next/standalone/.next/server/app-paths-manifest.json +6 -6
- package/.next/standalone/.next/server/chunks/142.js +4 -4
- package/.next/standalone/.next/server/chunks/817.js +2 -2
- package/.next/standalone/.next/server/pages/404.html +2 -2
- package/.next/standalone/.next/server/pages/500.html +2 -2
- package/.next/standalone/.next/static/chunks/app/mcps/[slug]/{page-8e0aa560f0622f11.js → page-c5385aeb25f58d99.js} +1 -1
- package/.next/standalone/.next/static/css/{caae8cf5ba26c4c9.css → c1d55b213e741a4a.css} +1 -1
- package/.next/standalone/package.json +1 -1
- package/.next/static/chunks/app/mcps/[slug]/{page-8e0aa560f0622f11.js → page-c5385aeb25f58d99.js} +1 -1
- package/.next/static/css/{caae8cf5ba26c4c9.css → c1d55b213e741a4a.css} +1 -1
- package/package.json +1 -1
- package/src/app/api/mcps/[slug]/deploy/route.ts +20 -4
- package/src/app/mcps/[slug]/page.tsx +14 -4
- package/src/lib/operations.ts +10 -0
- package/src/lib/store.ts +6 -0
- /package/.next/standalone/.next/static/{umAS_nttM34Bn6AVZor2W → 2tKq_bTNyVhd6HGPRRssw}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{umAS_nttM34Bn6AVZor2W → 2tKq_bTNyVhd6HGPRRssw}/_ssgManifest.js +0 -0
- /package/.next/static/{umAS_nttM34Bn6AVZor2W → 2tKq_bTNyVhd6HGPRRssw}/_buildManifest.js +0 -0
- /package/.next/static/{umAS_nttM34Bn6AVZor2W → 2tKq_bTNyVhd6HGPRRssw}/_ssgManifest.js +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
<!DOCTYPE html><!--
|
|
1
|
+
<!DOCTYPE html><!--2tKq_bTNyVhd6HGPRRssw--><html lang="en" data-theme="dark"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/c1d55b213e741a4a.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-9ca43f4ce1bb8938.js"/><script src="/_next/static/chunks/4bd1b696-096d35a2bd1da3af.js" async=""></script><script src="/_next/static/chunks/794-37dad9bbc14b04b8.js" async=""></script><script src="/_next/static/chunks/main-app-9463efc72af57a9a.js" async=""></script><script src="/_next/static/chunks/500-5d45efbf86b8d36e.js" async=""></script><script src="/_next/static/chunks/app/layout-16156b2dce91d181.js" async=""></script><script src="/_next/static/chunks/app/setup/page-b7c341350a2c629c.js" async=""></script><title>MCP Deploy</title><meta name="description" content="Deploy and manage MCP servers on Cloudflare Workers"/><script>
|
|
2
2
|
(function(){
|
|
3
3
|
var t = localStorage.getItem("mcp-deploy-theme");
|
|
4
4
|
if (t === "light" || t === "system") {
|
|
5
5
|
document.documentElement.setAttribute("data-theme", t);
|
|
6
6
|
}
|
|
7
7
|
})();
|
|
8
|
-
</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="bg-surface-page text-fg min-h-screen antialiased"><div hidden=""><!--$--><!--/$--></div><nav class="border-b border-edge bg-surface/50 backdrop-blur-sm fixed top-0 inset-x-0 z-50"><div class="max-w-5xl mx-auto px-6 py-4 flex items-center justify-between"><a class="text-lg font-semibold tracking-tight" href="/"><span class="text-accent-fg">MCP</span> Deploy</a><div class="flex gap-6 text-sm"><a class="font-medium transition-colors pb-0.5 text-fg-muted hover:text-fg" href="/">Dashboard</a><a class="font-medium transition-colors pb-0.5 text-fg border-b-2 border-accent-fg" href="/setup">Settings</a></div></div></nav><main class="max-w-5xl mx-auto px-6 py-8 pt-16"><div class="space-y-8"><div><h1 class="text-2xl font-bold mb-1">Settings</h1><p class="text-fg-muted text-sm">Configure your Cloudflare account and app preferences.</p></div><div class="border border-edge rounded-xl p-6 bg-surface"><h2 class="text-lg font-semibold mb-2">Cloudflare Account</h2><div class="flex items-center justify-between"><div><div class="flex items-center gap-2 text-sm"><span class="w-2 h-2 rounded-full bg-fg-faint animate-pulse"></span><span class="text-fg-faint">Checking...</span></div><p class="text-xs text-fg-faint mt-1">Authentication via <code class="text-fg-muted">wrangler login</code> (opens browser)</p></div><button disabled="" class="px-4 py-2 bg-surface-raised hover:bg-surface-overlay border border-edge-subtle rounded-lg text-sm text-fg-secondary transition-colors disabled:opacity-50">Connect</button></div></div><section class="rounded-xl border border-edge bg-surface p-6 space-y-4"><div class="flex items-center justify-between"><div><h2 class="text-lg font-semibold">Appearance</h2><p class="text-fg-muted text-sm mt-1">Choose a color theme for the dashboard.</p></div><div class="inline-flex rounded-lg border border-edge bg-surface-raised p-1 gap-1"><button class="flex items-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium transition-colors text-fg-muted hover:text-fg-secondary"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="5"></circle><line x1="12" y1="1" x2="12" y2="3"></line><line x1="12" y1="21" x2="12" y2="23"></line><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line><line x1="1" y1="12" x2="3" y2="12"></line><line x1="21" y1="12" x2="23" y2="12"></line><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line></svg>Light</button><button class="flex items-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium transition-colors bg-surface-overlay text-fg shadow-sm"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path></svg>Dark</button><button class="flex items-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium transition-colors text-fg-muted hover:text-fg-secondary"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="3" width="20" height="14" rx="2" ry="2"></rect><line x1="8" y1="21" x2="16" y2="21"></line><line x1="12" y1="17" x2="12" y2="21"></line></svg>System</button></div></div></section><section class="rounded-xl border border-edge bg-surface p-6 space-y-4"><h2 class="text-lg font-semibold">About</h2><dl class="grid grid-cols-[auto_1fr] gap-x-6 gap-y-2 text-sm"><dt class="text-fg-muted">Name</dt><dd>mcp-deploy</dd><dt class="text-fg-muted">Version</dt><dd>0.1.4</dd><dt class="text-fg-muted">Description</dt><dd>Deploy and manage MCP (Model Context Protocol) servers on Cloudflare Workers</dd><dt class="text-fg-muted">License</dt><dd>GPL-3.0-only</dd><dt class="text-fg-muted">Source</dt><dd><a href="git+https://github.com/upascal/mcp-deploy" target="_blank" rel="noopener noreferrer" class="text-accent-fg hover:underline">git+github.com/upascal/mcp-deploy</a></dd></dl></section></div><!--$--><!--/$--></main><script src="/_next/static/chunks/webpack-9ca43f4ce1bb8938.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[8946,[\"500\",\"static/chunks/500-5d45efbf86b8d36e.js\",\"558\",\"static/chunks/app/layout-16156b2dce91d181.js\"],\"ThemeProvider\"]\n3:I[8500,[\"500\",\"static/chunks/500-5d45efbf86b8d36e.js\",\"558\",\"static/chunks/app/layout-16156b2dce91d181.js\"],\"\"]\n4:I[2240,[\"500\",\"static/chunks/500-5d45efbf86b8d36e.js\",\"558\",\"static/chunks/app/layout-16156b2dce91d181.js\"],\"NavLinks\"]\n5:I[7121,[],\"\"]\n6:I[4581,[],\"\"]\n7:I[9322,[\"620\",\"static/chunks/app/setup/page-b7c341350a2c629c.js\"],\"CloudflareSetup\"]\n8:I[1777,[\"620\",\"static/chunks/app/setup/page-b7c341350a2c629c.js\"],\"ThemeToggle\"]\nb:I[7123,[],\"\"]\n:HL[\"/_next/static/css/caae8cf5ba26c4c9.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"umAS_nttM34Bn6AVZor2W\",\"c\":[\"\",\"setup\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"setup\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/caae8cf5ba26c4c9.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"data-theme\":\"dark\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n(function(){\\n var t = localStorage.getItem(\\\"mcp-deploy-theme\\\");\\n if (t === \\\"light\\\" || t === \\\"system\\\") {\\n document.documentElement.setAttribute(\\\"data-theme\\\", t);\\n }\\n})();\\n\"}}],false]}],[\"$\",\"body\",null,{\"className\":\"bg-surface-page text-fg min-h-screen antialiased\",\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"nav\",null,{\"className\":\"border-b border-edge bg-surface/50 backdrop-blur-sm fixed top-0 inset-x-0 z-50\",\"children\":[\"$\",\"div\",null,{\"className\":\"max-w-5xl mx-auto px-6 py-4 flex items-center justify-between\",\"children\":[[\"$\",\"$L3\",null,{\"href\":\"/\",\"className\":\"text-lg font-semibold tracking-tight\",\"children\":[[\"$\",\"span\",null,{\"className\":\"text-accent-fg\",\"children\":\"MCP\"}],\" Deploy\"]}],[\"$\",\"$L4\",null,{}]]}]}],[\"$\",\"main\",null,{\"className\":\"max-w-5xl mx-auto px-6 py-8 pt-16\",\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",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,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"div\",null,{\"className\":\"space-y-8\",\"children\":[[\"$\",\"div\",null,{\"children\":[[\"$\",\"h1\",null,{\"className\":\"text-2xl font-bold mb-1\",\"children\":\"Settings\"}],[\"$\",\"p\",null,{\"className\":\"text-fg-muted text-sm\",\"children\":\"Configure your Cloudflare account and app preferences.\"}]]}],[\"$\",\"$L7\",null,{}],[\"$\",\"section\",null,{\"className\":\"rounded-xl border border-edge bg-surface p-6 space-y-4\",\"children\":[\"$\",\"div\",null,{\"className\":\"flex items-center justify-between\",\"children\":[[\"$\",\"div\",null,{\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-lg font-semibold\",\"children\":\"Appearance\"}],[\"$\",\"p\",null,{\"className\":\"text-fg-muted text-sm mt-1\",\"children\":\"Choose a color theme for the dashboard.\"}]]}],[\"$\",\"$L8\",null,{}]]}]}],[\"$\",\"section\",null,{\"className\":\"rounded-xl border border-edge bg-surface p-6 space-y-4\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-lg font-semibold\",\"children\":\"About\"}],[\"$\",\"dl\",null,{\"className\":\"grid grid-cols-[auto_1fr] gap-x-6 gap-y-2 text-sm\",\"children\":[[\"$\",\"dt\",null,{\"className\":\"text-fg-muted\",\"children\":\"Name\"}],[\"$\",\"dd\",null,{\"children\":\"mcp-deploy\"}],[\"$\",\"dt\",null,{\"className\":\"text-fg-muted\",\"children\":\"Version\"}],[\"$\",\"dd\",null,{\"children\":\"0.1.4\"}],[\"$\",\"dt\",null,{\"className\":\"text-fg-muted\",\"children\":\"Description\"}],[\"$\",\"dd\",null,{\"children\":\"Deploy and manage MCP (Model Context Protocol) servers on Cloudflare Workers\"}],[\"$\",\"dt\",null,{\"className\":\"text-fg-muted\",\"children\":\"License\"}],[\"$\",\"dd\",null,{\"children\":\"GPL-3.0-only\"}],[\"$\",\"dt\",null,{\"className\":\"text-fg-muted\",\"children\":\"Source\"}],[\"$\",\"dd\",null,{\"children\":[\"$\",\"a\",null,{\"href\":\"git+https://github.com/upascal/mcp-deploy\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"text-accent-fg hover:underline\",\"children\":\"git+github.com/upascal/mcp-deploy\"}]}]]}]]}]]}],null,\"$L9\"]}],{},null,false,false]},null,false,false]},null,false,false],\"$La\",false]],\"m\":\"$undefined\",\"G\":[\"$b\",[]],\"S\":true}\n"])</script><script>self.__next_f.push([1,"c:I[484,[],\"OutletBoundary\"]\nd:\"$Sreact.suspense\"\nf:I[484,[],\"ViewportBoundary\"]\n11:I[484,[],\"MetadataBoundary\"]\n9:[\"$\",\"$Lc\",null,{\"children\":[\"$\",\"$d\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@e\"}]}]\na:[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$Lf\",null,{\"children\":\"$L10\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L11\",null,{\"children\":[\"$\",\"$d\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L12\"}]}]}],null]}]\n"])</script><script>self.__next_f.push([1,"10:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"e:null\n12:[[\"$\",\"title\",\"0\",{\"children\":\"MCP Deploy\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Deploy and manage MCP servers on Cloudflare Workers\"}]]\n"])</script></body></html>
|
|
8
|
+
</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="bg-surface-page text-fg min-h-screen antialiased"><div hidden=""><!--$--><!--/$--></div><nav class="border-b border-edge bg-surface/50 backdrop-blur-sm fixed top-0 inset-x-0 z-50"><div class="max-w-5xl mx-auto px-6 py-4 flex items-center justify-between"><a class="text-lg font-semibold tracking-tight" href="/"><span class="text-accent-fg">MCP</span> Deploy</a><div class="flex gap-6 text-sm"><a class="font-medium transition-colors pb-0.5 text-fg-muted hover:text-fg" href="/">Dashboard</a><a class="font-medium transition-colors pb-0.5 text-fg border-b-2 border-accent-fg" href="/setup">Settings</a></div></div></nav><main class="max-w-5xl mx-auto px-6 py-8 pt-16"><div class="space-y-8"><div><h1 class="text-2xl font-bold mb-1">Settings</h1><p class="text-fg-muted text-sm">Configure your Cloudflare account and app preferences.</p></div><div class="border border-edge rounded-xl p-6 bg-surface"><h2 class="text-lg font-semibold mb-2">Cloudflare Account</h2><div class="flex items-center justify-between"><div><div class="flex items-center gap-2 text-sm"><span class="w-2 h-2 rounded-full bg-fg-faint animate-pulse"></span><span class="text-fg-faint">Checking...</span></div><p class="text-xs text-fg-faint mt-1">Authentication via <code class="text-fg-muted">wrangler login</code> (opens browser)</p></div><button disabled="" class="px-4 py-2 bg-surface-raised hover:bg-surface-overlay border border-edge-subtle rounded-lg text-sm text-fg-secondary transition-colors disabled:opacity-50">Connect</button></div></div><section class="rounded-xl border border-edge bg-surface p-6 space-y-4"><div class="flex items-center justify-between"><div><h2 class="text-lg font-semibold">Appearance</h2><p class="text-fg-muted text-sm mt-1">Choose a color theme for the dashboard.</p></div><div class="inline-flex rounded-lg border border-edge bg-surface-raised p-1 gap-1"><button class="flex items-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium transition-colors text-fg-muted hover:text-fg-secondary"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="5"></circle><line x1="12" y1="1" x2="12" y2="3"></line><line x1="12" y1="21" x2="12" y2="23"></line><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line><line x1="1" y1="12" x2="3" y2="12"></line><line x1="21" y1="12" x2="23" y2="12"></line><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line></svg>Light</button><button class="flex items-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium transition-colors bg-surface-overlay text-fg shadow-sm"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path></svg>Dark</button><button class="flex items-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium transition-colors text-fg-muted hover:text-fg-secondary"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="3" width="20" height="14" rx="2" ry="2"></rect><line x1="8" y1="21" x2="16" y2="21"></line><line x1="12" y1="17" x2="12" y2="21"></line></svg>System</button></div></div></section><section class="rounded-xl border border-edge bg-surface p-6 space-y-4"><h2 class="text-lg font-semibold">About</h2><dl class="grid grid-cols-[auto_1fr] gap-x-6 gap-y-2 text-sm"><dt class="text-fg-muted">Name</dt><dd>mcp-deploy</dd><dt class="text-fg-muted">Version</dt><dd>0.1.5</dd><dt class="text-fg-muted">Description</dt><dd>Deploy and manage MCP (Model Context Protocol) servers on Cloudflare Workers</dd><dt class="text-fg-muted">License</dt><dd>GPL-3.0-only</dd><dt class="text-fg-muted">Source</dt><dd><a href="git+https://github.com/upascal/mcp-deploy" target="_blank" rel="noopener noreferrer" class="text-accent-fg hover:underline">git+github.com/upascal/mcp-deploy</a></dd></dl></section></div><!--$--><!--/$--></main><script src="/_next/static/chunks/webpack-9ca43f4ce1bb8938.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[8946,[\"500\",\"static/chunks/500-5d45efbf86b8d36e.js\",\"558\",\"static/chunks/app/layout-16156b2dce91d181.js\"],\"ThemeProvider\"]\n3:I[8500,[\"500\",\"static/chunks/500-5d45efbf86b8d36e.js\",\"558\",\"static/chunks/app/layout-16156b2dce91d181.js\"],\"\"]\n4:I[2240,[\"500\",\"static/chunks/500-5d45efbf86b8d36e.js\",\"558\",\"static/chunks/app/layout-16156b2dce91d181.js\"],\"NavLinks\"]\n5:I[7121,[],\"\"]\n6:I[4581,[],\"\"]\n7:I[9322,[\"620\",\"static/chunks/app/setup/page-b7c341350a2c629c.js\"],\"CloudflareSetup\"]\n8:I[1777,[\"620\",\"static/chunks/app/setup/page-b7c341350a2c629c.js\"],\"ThemeToggle\"]\nb:I[7123,[],\"\"]\n:HL[\"/_next/static/css/c1d55b213e741a4a.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"2tKq_bTNyVhd6HGPRRssw\",\"c\":[\"\",\"setup\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"setup\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/c1d55b213e741a4a.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"data-theme\":\"dark\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n(function(){\\n var t = localStorage.getItem(\\\"mcp-deploy-theme\\\");\\n if (t === \\\"light\\\" || t === \\\"system\\\") {\\n document.documentElement.setAttribute(\\\"data-theme\\\", t);\\n }\\n})();\\n\"}}],false]}],[\"$\",\"body\",null,{\"className\":\"bg-surface-page text-fg min-h-screen antialiased\",\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"nav\",null,{\"className\":\"border-b border-edge bg-surface/50 backdrop-blur-sm fixed top-0 inset-x-0 z-50\",\"children\":[\"$\",\"div\",null,{\"className\":\"max-w-5xl mx-auto px-6 py-4 flex items-center justify-between\",\"children\":[[\"$\",\"$L3\",null,{\"href\":\"/\",\"className\":\"text-lg font-semibold tracking-tight\",\"children\":[[\"$\",\"span\",null,{\"className\":\"text-accent-fg\",\"children\":\"MCP\"}],\" Deploy\"]}],[\"$\",\"$L4\",null,{}]]}]}],[\"$\",\"main\",null,{\"className\":\"max-w-5xl mx-auto px-6 py-8 pt-16\",\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",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,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"div\",null,{\"className\":\"space-y-8\",\"children\":[[\"$\",\"div\",null,{\"children\":[[\"$\",\"h1\",null,{\"className\":\"text-2xl font-bold mb-1\",\"children\":\"Settings\"}],[\"$\",\"p\",null,{\"className\":\"text-fg-muted text-sm\",\"children\":\"Configure your Cloudflare account and app preferences.\"}]]}],[\"$\",\"$L7\",null,{}],[\"$\",\"section\",null,{\"className\":\"rounded-xl border border-edge bg-surface p-6 space-y-4\",\"children\":[\"$\",\"div\",null,{\"className\":\"flex items-center justify-between\",\"children\":[[\"$\",\"div\",null,{\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-lg font-semibold\",\"children\":\"Appearance\"}],[\"$\",\"p\",null,{\"className\":\"text-fg-muted text-sm mt-1\",\"children\":\"Choose a color theme for the dashboard.\"}]]}],[\"$\",\"$L8\",null,{}]]}]}],[\"$\",\"section\",null,{\"className\":\"rounded-xl border border-edge bg-surface p-6 space-y-4\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-lg font-semibold\",\"children\":\"About\"}],[\"$\",\"dl\",null,{\"className\":\"grid grid-cols-[auto_1fr] gap-x-6 gap-y-2 text-sm\",\"children\":[[\"$\",\"dt\",null,{\"className\":\"text-fg-muted\",\"children\":\"Name\"}],[\"$\",\"dd\",null,{\"children\":\"mcp-deploy\"}],[\"$\",\"dt\",null,{\"className\":\"text-fg-muted\",\"children\":\"Version\"}],[\"$\",\"dd\",null,{\"children\":\"0.1.5\"}],[\"$\",\"dt\",null,{\"className\":\"text-fg-muted\",\"children\":\"Description\"}],[\"$\",\"dd\",null,{\"children\":\"Deploy and manage MCP (Model Context Protocol) servers on Cloudflare Workers\"}],[\"$\",\"dt\",null,{\"className\":\"text-fg-muted\",\"children\":\"License\"}],[\"$\",\"dd\",null,{\"children\":\"GPL-3.0-only\"}],[\"$\",\"dt\",null,{\"className\":\"text-fg-muted\",\"children\":\"Source\"}],[\"$\",\"dd\",null,{\"children\":[\"$\",\"a\",null,{\"href\":\"git+https://github.com/upascal/mcp-deploy\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"text-accent-fg hover:underline\",\"children\":\"git+github.com/upascal/mcp-deploy\"}]}]]}]]}]]}],null,\"$L9\"]}],{},null,false,false]},null,false,false]},null,false,false],\"$La\",false]],\"m\":\"$undefined\",\"G\":[\"$b\",[]],\"S\":true}\n"])</script><script>self.__next_f.push([1,"c:I[484,[],\"OutletBoundary\"]\nd:\"$Sreact.suspense\"\nf:I[484,[],\"ViewportBoundary\"]\n11:I[484,[],\"MetadataBoundary\"]\n9:[\"$\",\"$Lc\",null,{\"children\":[\"$\",\"$d\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@e\"}]}]\na:[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$Lf\",null,{\"children\":\"$L10\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L11\",null,{\"children\":[\"$\",\"$d\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L12\"}]}]}],null]}]\n"])</script><script>self.__next_f.push([1,"10:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"e:null\n12:[[\"$\",\"title\",\"0\",{\"children\":\"MCP Deploy\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Deploy and manage MCP servers on Cloudflare Workers\"}]]\n"])</script></body></html>
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
7:I[9322,["620","static/chunks/app/setup/page-b7c341350a2c629c.js"],"CloudflareSetup"]
|
|
8
8
|
8:I[1777,["620","static/chunks/app/setup/page-b7c341350a2c629c.js"],"ThemeToggle"]
|
|
9
9
|
b:I[7123,[],""]
|
|
10
|
-
:HL["/_next/static/css/
|
|
11
|
-
0:{"P":null,"b":"
|
|
10
|
+
:HL["/_next/static/css/c1d55b213e741a4a.css","style"]
|
|
11
|
+
0:{"P":null,"b":"2tKq_bTNyVhd6HGPRRssw","c":["","setup"],"q":"","i":false,"f":[[["",{"children":["setup",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/c1d55b213e741a4a.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","data-theme":"dark","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","script",null,{"dangerouslySetInnerHTML":{"__html":"\n(function(){\n var t = localStorage.getItem(\"mcp-deploy-theme\");\n if (t === \"light\" || t === \"system\") {\n document.documentElement.setAttribute(\"data-theme\", t);\n }\n})();\n"}}],false]}],["$","body",null,{"className":"bg-surface-page text-fg min-h-screen antialiased","children":["$","$L2",null,{"children":[["$","nav",null,{"className":"border-b border-edge bg-surface/50 backdrop-blur-sm fixed top-0 inset-x-0 z-50","children":["$","div",null,{"className":"max-w-5xl mx-auto px-6 py-4 flex items-center justify-between","children":[["$","$L3",null,{"href":"/","className":"text-lg font-semibold tracking-tight","children":[["$","span",null,{"className":"text-accent-fg","children":"MCP"}]," Deploy"]}],["$","$L4",null,{}]]}]}],["$","main",null,{"className":"max-w-5xl mx-auto px-6 py-8 pt-16","children":["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",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,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","div",null,{"className":"space-y-8","children":[["$","div",null,{"children":[["$","h1",null,{"className":"text-2xl font-bold mb-1","children":"Settings"}],["$","p",null,{"className":"text-fg-muted text-sm","children":"Configure your Cloudflare account and app preferences."}]]}],["$","$L7",null,{}],["$","section",null,{"className":"rounded-xl border border-edge bg-surface p-6 space-y-4","children":["$","div",null,{"className":"flex items-center justify-between","children":[["$","div",null,{"children":[["$","h2",null,{"className":"text-lg font-semibold","children":"Appearance"}],["$","p",null,{"className":"text-fg-muted text-sm mt-1","children":"Choose a color theme for the dashboard."}]]}],["$","$L8",null,{}]]}]}],["$","section",null,{"className":"rounded-xl border border-edge bg-surface p-6 space-y-4","children":[["$","h2",null,{"className":"text-lg font-semibold","children":"About"}],["$","dl",null,{"className":"grid grid-cols-[auto_1fr] gap-x-6 gap-y-2 text-sm","children":[["$","dt",null,{"className":"text-fg-muted","children":"Name"}],["$","dd",null,{"children":"mcp-deploy"}],["$","dt",null,{"className":"text-fg-muted","children":"Version"}],["$","dd",null,{"children":"0.1.5"}],["$","dt",null,{"className":"text-fg-muted","children":"Description"}],["$","dd",null,{"children":"Deploy and manage MCP (Model Context Protocol) servers on Cloudflare Workers"}],["$","dt",null,{"className":"text-fg-muted","children":"License"}],["$","dd",null,{"children":"GPL-3.0-only"}],["$","dt",null,{"className":"text-fg-muted","children":"Source"}],["$","dd",null,{"children":["$","a",null,{"href":"git+https://github.com/upascal/mcp-deploy","target":"_blank","rel":"noopener noreferrer","className":"text-accent-fg hover:underline","children":"git+github.com/upascal/mcp-deploy"}]}]]}]]}]]}],null,"$L9"]}],{},null,false,false]},null,false,false]},null,false,false],"$La",false]],"m":"$undefined","G":["$b",[]],"S":true}
|
|
12
12
|
c:I[484,[],"OutletBoundary"]
|
|
13
13
|
d:"$Sreact.suspense"
|
|
14
14
|
f:I[484,[],"ViewportBoundary"]
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
7:I[9322,["620","static/chunks/app/setup/page-b7c341350a2c629c.js"],"CloudflareSetup"]
|
|
8
8
|
8:I[1777,["620","static/chunks/app/setup/page-b7c341350a2c629c.js"],"ThemeToggle"]
|
|
9
9
|
b:I[7123,[],""]
|
|
10
|
-
:HL["/_next/static/css/
|
|
11
|
-
0:{"P":null,"b":"
|
|
10
|
+
:HL["/_next/static/css/c1d55b213e741a4a.css","style"]
|
|
11
|
+
0:{"P":null,"b":"2tKq_bTNyVhd6HGPRRssw","c":["","setup"],"q":"","i":false,"f":[[["",{"children":["setup",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/c1d55b213e741a4a.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","data-theme":"dark","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","script",null,{"dangerouslySetInnerHTML":{"__html":"\n(function(){\n var t = localStorage.getItem(\"mcp-deploy-theme\");\n if (t === \"light\" || t === \"system\") {\n document.documentElement.setAttribute(\"data-theme\", t);\n }\n})();\n"}}],false]}],["$","body",null,{"className":"bg-surface-page text-fg min-h-screen antialiased","children":["$","$L2",null,{"children":[["$","nav",null,{"className":"border-b border-edge bg-surface/50 backdrop-blur-sm fixed top-0 inset-x-0 z-50","children":["$","div",null,{"className":"max-w-5xl mx-auto px-6 py-4 flex items-center justify-between","children":[["$","$L3",null,{"href":"/","className":"text-lg font-semibold tracking-tight","children":[["$","span",null,{"className":"text-accent-fg","children":"MCP"}]," Deploy"]}],["$","$L4",null,{}]]}]}],["$","main",null,{"className":"max-w-5xl mx-auto px-6 py-8 pt-16","children":["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",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,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","div",null,{"className":"space-y-8","children":[["$","div",null,{"children":[["$","h1",null,{"className":"text-2xl font-bold mb-1","children":"Settings"}],["$","p",null,{"className":"text-fg-muted text-sm","children":"Configure your Cloudflare account and app preferences."}]]}],["$","$L7",null,{}],["$","section",null,{"className":"rounded-xl border border-edge bg-surface p-6 space-y-4","children":["$","div",null,{"className":"flex items-center justify-between","children":[["$","div",null,{"children":[["$","h2",null,{"className":"text-lg font-semibold","children":"Appearance"}],["$","p",null,{"className":"text-fg-muted text-sm mt-1","children":"Choose a color theme for the dashboard."}]]}],["$","$L8",null,{}]]}]}],["$","section",null,{"className":"rounded-xl border border-edge bg-surface p-6 space-y-4","children":[["$","h2",null,{"className":"text-lg font-semibold","children":"About"}],["$","dl",null,{"className":"grid grid-cols-[auto_1fr] gap-x-6 gap-y-2 text-sm","children":[["$","dt",null,{"className":"text-fg-muted","children":"Name"}],["$","dd",null,{"children":"mcp-deploy"}],["$","dt",null,{"className":"text-fg-muted","children":"Version"}],["$","dd",null,{"children":"0.1.5"}],["$","dt",null,{"className":"text-fg-muted","children":"Description"}],["$","dd",null,{"children":"Deploy and manage MCP (Model Context Protocol) servers on Cloudflare Workers"}],["$","dt",null,{"className":"text-fg-muted","children":"License"}],["$","dd",null,{"children":"GPL-3.0-only"}],["$","dt",null,{"className":"text-fg-muted","children":"Source"}],["$","dd",null,{"children":["$","a",null,{"href":"git+https://github.com/upascal/mcp-deploy","target":"_blank","rel":"noopener noreferrer","className":"text-accent-fg hover:underline","children":"git+github.com/upascal/mcp-deploy"}]}]]}]]}]]}],null,"$L9"]}],{},null,false,false]},null,false,false]},null,false,false],"$La",false]],"m":"$undefined","G":["$b",[]],"S":true}
|
|
12
12
|
c:I[484,[],"OutletBoundary"]
|
|
13
13
|
d:"$Sreact.suspense"
|
|
14
14
|
f:I[484,[],"ViewportBoundary"]
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
2:I[484,[],"ViewportBoundary"]
|
|
3
3
|
3:I[484,[],"MetadataBoundary"]
|
|
4
4
|
4:"$Sreact.suspense"
|
|
5
|
-
0:{"buildId":"
|
|
5
|
+
0:{"buildId":"2tKq_bTNyVhd6HGPRRssw","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"MCP Deploy"}],["$","meta","1",{"name":"description","content":"Deploy and manage MCP servers on Cloudflare Workers"}]]}]}]}],null]}],"loading":null,"isPartial":false}
|
|
@@ -4,5 +4,5 @@
|
|
|
4
4
|
4:I[2240,["500","static/chunks/500-5d45efbf86b8d36e.js","558","static/chunks/app/layout-16156b2dce91d181.js"],"NavLinks"]
|
|
5
5
|
5:I[7121,[],""]
|
|
6
6
|
6:I[4581,[],""]
|
|
7
|
-
:HL["/_next/static/css/
|
|
8
|
-
0:{"buildId":"
|
|
7
|
+
:HL["/_next/static/css/c1d55b213e741a4a.css","style"]
|
|
8
|
+
0:{"buildId":"2tKq_bTNyVhd6HGPRRssw","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/c1d55b213e741a4a.css","precedence":"next"}]],["$","html",null,{"lang":"en","data-theme":"dark","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","script",null,{"dangerouslySetInnerHTML":{"__html":"\n(function(){\n var t = localStorage.getItem(\"mcp-deploy-theme\");\n if (t === \"light\" || t === \"system\") {\n document.documentElement.setAttribute(\"data-theme\", t);\n }\n})();\n"}}],false]}],["$","body",null,{"className":"bg-surface-page text-fg min-h-screen antialiased","children":["$","$L2",null,{"children":[["$","nav",null,{"className":"border-b border-edge bg-surface/50 backdrop-blur-sm fixed top-0 inset-x-0 z-50","children":["$","div",null,{"className":"max-w-5xl mx-auto px-6 py-4 flex items-center justify-between","children":[["$","$L3",null,{"href":"/","className":"text-lg font-semibold tracking-tight","children":[["$","span",null,{"className":"text-accent-fg","children":"MCP"}]," Deploy"]}],["$","$L4",null,{}]]}]}],["$","main",null,{"className":"max-w-5xl mx-auto px-6 py-8 pt-16","children":["$","$L5",null,{"parallelRouterKey":"children","template":["$","$L6",null,{}],"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."}]}]]}]}]],[]]}]}]]}]}]]}]]}],"loading":null,"isPartial":false}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
:HL["/_next/static/css/
|
|
2
|
-
0:{"buildId":"
|
|
1
|
+
:HL["/_next/static/css/c1d55b213e741a4a.css","style"]
|
|
2
|
+
0:{"buildId":"2tKq_bTNyVhd6HGPRRssw","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"setup","paramType":null,"paramKey":"setup","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":true},"staleTime":300}
|
|
@@ -3,5 +3,5 @@
|
|
|
3
3
|
3:I[1777,["620","static/chunks/app/setup/page-b7c341350a2c629c.js"],"ThemeToggle"]
|
|
4
4
|
4:I[484,[],"OutletBoundary"]
|
|
5
5
|
5:"$Sreact.suspense"
|
|
6
|
-
0:{"buildId":"
|
|
6
|
+
0:{"buildId":"2tKq_bTNyVhd6HGPRRssw","rsc":["$","$1","c",{"children":[["$","div",null,{"className":"space-y-8","children":[["$","div",null,{"children":[["$","h1",null,{"className":"text-2xl font-bold mb-1","children":"Settings"}],["$","p",null,{"className":"text-fg-muted text-sm","children":"Configure your Cloudflare account and app preferences."}]]}],["$","$L2",null,{}],["$","section",null,{"className":"rounded-xl border border-edge bg-surface p-6 space-y-4","children":["$","div",null,{"className":"flex items-center justify-between","children":[["$","div",null,{"children":[["$","h2",null,{"className":"text-lg font-semibold","children":"Appearance"}],["$","p",null,{"className":"text-fg-muted text-sm mt-1","children":"Choose a color theme for the dashboard."}]]}],["$","$L3",null,{}]]}]}],["$","section",null,{"className":"rounded-xl border border-edge bg-surface p-6 space-y-4","children":[["$","h2",null,{"className":"text-lg font-semibold","children":"About"}],["$","dl",null,{"className":"grid grid-cols-[auto_1fr] gap-x-6 gap-y-2 text-sm","children":[["$","dt",null,{"className":"text-fg-muted","children":"Name"}],["$","dd",null,{"children":"mcp-deploy"}],["$","dt",null,{"className":"text-fg-muted","children":"Version"}],["$","dd",null,{"children":"0.1.5"}],["$","dt",null,{"className":"text-fg-muted","children":"Description"}],["$","dd",null,{"children":"Deploy and manage MCP (Model Context Protocol) servers on Cloudflare Workers"}],["$","dt",null,{"className":"text-fg-muted","children":"License"}],["$","dd",null,{"children":"GPL-3.0-only"}],["$","dt",null,{"className":"text-fg-muted","children":"Source"}],["$","dd",null,{"children":["$","a",null,{"href":"git+https://github.com/upascal/mcp-deploy","target":"_blank","rel":"noopener noreferrer","className":"text-accent-fg hover:underline","children":"git+github.com/upascal/mcp-deploy"}]}]]}]]}]]}],null,["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],"loading":null,"isPartial":false}
|
|
7
7
|
6:null
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
1:"$Sreact.fragment"
|
|
2
2
|
2:I[7121,[],""]
|
|
3
3
|
3:I[4581,[],""]
|
|
4
|
-
0:{"buildId":"
|
|
4
|
+
0:{"buildId":"2tKq_bTNyVhd6HGPRRssw","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false}
|
|
@@ -2,24 +2,24 @@
|
|
|
2
2
|
"/.well-known/oauth-authorization-server/route": "app/.well-known/oauth-authorization-server/route.js",
|
|
3
3
|
"/api/cloudflare/setup/route": "app/api/cloudflare/setup/route.js",
|
|
4
4
|
"/api/cloudflare/status/route": "app/api/cloudflare/status/route.js",
|
|
5
|
+
"/api/mcps/[slug]/deploy/route": "app/api/mcps/[slug]/deploy/route.js",
|
|
5
6
|
"/api/mcps/[slug]/remove/route": "app/api/mcps/[slug]/remove/route.js",
|
|
6
7
|
"/api/mcps/[slug]/route": "app/api/mcps/[slug]/route.js",
|
|
7
8
|
"/api/mcps/[slug]/secrets/route": "app/api/mcps/[slug]/secrets/route.js",
|
|
8
9
|
"/api/mcps/[slug]/status/route": "app/api/mcps/[slug]/status/route.js",
|
|
9
|
-
"/api/mcps/[slug]/deploy/route": "app/api/mcps/[slug]/deploy/route.js",
|
|
10
10
|
"/api/mcps/[slug]/undeploy/route": "app/api/mcps/[slug]/undeploy/route.js",
|
|
11
11
|
"/api/mcps/check-updates/route": "app/api/mcps/check-updates/route.js",
|
|
12
12
|
"/api/mcps/add/route": "app/api/mcps/add/route.js",
|
|
13
|
-
"/api/oauth/approve/route": "app/api/oauth/approve/route.js",
|
|
14
|
-
"/api/oauth/register/route": "app/api/oauth/register/route.js",
|
|
15
13
|
"/api/mcps/route": "app/api/mcps/route.js",
|
|
16
|
-
"/api/oauth/token/route": "app/api/oauth/token/route.js",
|
|
17
14
|
"/api/mcps/validate/route": "app/api/mcps/validate/route.js",
|
|
18
|
-
"/api/test-connection/route": "app/api/test-connection/route.js",
|
|
19
15
|
"/_not-found/page": "app/_not-found/page.js",
|
|
16
|
+
"/api/oauth/approve/route": "app/api/oauth/approve/route.js",
|
|
20
17
|
"/_global-error/page": "app/_global-error/page.js",
|
|
18
|
+
"/api/oauth/register/route": "app/api/oauth/register/route.js",
|
|
19
|
+
"/api/oauth/token/route": "app/api/oauth/token/route.js",
|
|
20
|
+
"/api/test-connection/route": "app/api/test-connection/route.js",
|
|
21
21
|
"/mcps/[slug]/page": "app/mcps/[slug]/page.js",
|
|
22
|
-
"/page": "app/page.js",
|
|
23
22
|
"/oauth/authorize/page": "app/oauth/authorize/page.js",
|
|
23
|
+
"/page": "app/page.js",
|
|
24
24
|
"/setup/page": "app/setup/page.js"
|
|
25
25
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";exports.id=142,exports.ids=[142],exports.modules={1025:(a,b,c)=>{c.d(b,{Ux:()=>k,Oz:()=>l,Rj:()=>n,f4:()=>m,H7:()=>o});var d=c(3773),e=c(2629),f=c(8739);async function g(){let{loggedIn:a}=(0,f.iX)();return a}var h=c(4528),i=c(7416),j=c(5511);async function k(a,b="latest"){let c=(0,d.f6)(a);if(!c)throw Error("Invalid repository format. Use owner/repo or a GitHub URL.");let e=(0,h.aH)();if(e.some(a=>a.githubRepo===c))throw Error(`Repository ${c} is already added`);let{metadata:f,version:g,bundleUrl:i}=await (0,d.Og)(c,b),j=f.worker.name;if(e.some(a=>a.slug===j))throw Error(`"${f.name}" is already added`);return(0,h.Ux)({slug:j,githubRepo:c,releaseTag:b,addedAt:new Date().toISOString()}),(0,h.mS)(j,{metadata:f,bundleUrl:i,version:g}),{slug:j,name:f.name,version:g,githubRepo:c}}async function l(a,b){var c,d,k;let l,{authMode:m,secrets:n,config:o}=b,p=await (0,e.mo)(a);if(!p)throw Error("MCP not found");if(!g())throw Error("Not logged in to Cloudflare. Run `npx wrangler login` first, or use the Settings page.");let q=await (0,e.V9)(p),
|
|
1
|
+
"use strict";exports.id=142,exports.ids=[142],exports.modules={1025:(a,b,c)=>{c.d(b,{Ux:()=>k,Oz:()=>l,Rj:()=>n,f4:()=>m,H7:()=>o});var d=c(3773),e=c(2629),f=c(8739);async function g(){let{loggedIn:a}=(0,f.iX)();return a}var h=c(4528),i=c(7416),j=c(5511);async function k(a,b="latest"){let c=(0,d.f6)(a);if(!c)throw Error("Invalid repository format. Use owner/repo or a GitHub URL.");let e=(0,h.aH)();if(e.some(a=>a.githubRepo===c))throw Error(`Repository ${c} is already added`);let{metadata:f,version:g,bundleUrl:i}=await (0,d.Og)(c,b),j=f.worker.name;if(e.some(a=>a.slug===j))throw Error(`"${f.name}" is already added`);return(0,h.Ux)({slug:j,githubRepo:c,releaseTag:b,addedAt:new Date().toISOString()}),(0,h.mS)(j,{metadata:f,bundleUrl:i,version:g}),{slug:j,name:f.name,version:g,githubRepo:c}}async function l(a,b){var c,d,k;let l,{authMode:m,secrets:n,config:o}=b,p=await (0,e.mo)(a);if(!p)throw Error("MCP not found");if(!g())throw Error("Not logged in to Cloudflare. Run `npx wrangler login` first, or use the Settings page.");let q=(0,h.Uu)(a),r=(0,h.ny)(a);q&&r&&q.latestVersion!==r.version&&(0,h.$D)(a);let s=await (0,e.V9)(p),t={...(0,h.o_)(a)??{},...n},u=(0,h.i8)(a),v=!0===b.regenerateOAuthPassword,w=null;if("oauth"===m){if(process.env.OAUTH_PASSWORD?.trim())w=process.env.OAUTH_PASSWORD.trim();else if(!v&&u?.oauthPassword)try{w=(0,i.Y)(u.oauthPassword)}catch{w=null}w||(w=(0,j.randomBytes)(32).toString("hex"))}let x=!0===b.regenerateToken,y=null;if("open"!==m){if(!x&&u?.bearerToken)try{y=(0,i.Y)(u.bearerToken)}catch{y=null}y||(y=(0,j.randomBytes)(32).toString("hex"))}"oauth"===m?(c=s.durableObjectClassName,l=`
|
|
2
2
|
// ─── OAuth 2.1 Authorization Server + MCP Worker Wrapper ───
|
|
3
3
|
// Auto-generated by mcp-deploy. Do not edit.
|
|
4
4
|
|
|
@@ -722,7 +722,7 @@ export default {
|
|
|
722
722
|
);
|
|
723
723
|
}
|
|
724
724
|
};
|
|
725
|
-
`.trim()):"open"===m?(d=
|
|
725
|
+
`.trim()):"open"===m?(d=s.durableObjectClassName,l=`
|
|
726
726
|
// ─── Open (No Auth) Wrapper ───
|
|
727
727
|
// Auto-generated by mcp-deploy. Do not edit.
|
|
728
728
|
|
|
@@ -757,7 +757,7 @@ export default {
|
|
|
757
757
|
return OriginalWorker.fetch(request, env, ctx);
|
|
758
758
|
},
|
|
759
759
|
};
|
|
760
|
-
`.trim()):(k=
|
|
760
|
+
`.trim()):(k=s.durableObjectClassName,l=`
|
|
761
761
|
// ─── Bearer Token Authentication Wrapper ───
|
|
762
762
|
// Auto-generated by mcp-deploy. Do not edit.
|
|
763
763
|
|
|
@@ -846,4 +846,4 @@ export default {
|
|
|
846
846
|
return OriginalWorker.fetch(request, env, ctx);
|
|
847
847
|
},
|
|
848
848
|
};
|
|
849
|
-
`.trim());let
|
|
849
|
+
`.trim());let z=await (0,e.A1)(s),A="oauth"===m?await (0,f.JY)("mcp-deploy-oauth"):void 0,{url:B}=await (0,f.ER)(s,z,l,A),C={...t,...o};y&&(C.BEARER_TOKEN=y);let D=!1;"oauth"===m&&(C.OAUTH_JWT_SECRET=(0,j.randomBytes)(32).toString("hex"),w&&(C.OAUTH_PASSWORD=w),D=!0);try{await (0,f.sL)(s.workerName,C)}catch(a){console.error("[deploy] Failed to set secrets, cleaning up worker:",a);try{await (0,f.sp)(s.workerName)}catch(a){console.error("[deploy] Failed to delete worker during cleanup:",a)}throw a}let E=`${B}/mcp`,F=y?`${B}/mcp/t/${y}`:E;return(0,h.gT)({slug:a,status:"deployed",workerUrl:B,bearerToken:y?(0,i.w)(y):null,oauthPassword:w?(0,i.w)(w):null,authMode:m,deployedAt:new Date().toISOString(),version:s.version}),(0,h.el)(a,{...t,...o}),(0,h.OV)(a,s.version),{workerUrl:B,mcpUrl:E,mcpUrlWithToken:F,bearerToken:y,oauthPassword:w,authMode:m,oauthEnabled:D,version:s.version}}async function m(a){let b=(0,h.i8)(a);if(!b||"deployed"!==b.status)throw Error("MCP is not deployed");if(b.workerUrl){let b=await (0,e.mo)(a);if(b)try{let a=await (0,e.V9)(b);await (0,f.sp)(a.workerName)}catch(b){console.warn(`[undeploy] Failed to delete worker for "${a}":`,b)}}(0,h.f4)(a)}async function n(a){let b=(0,h.i8)(a);if(b?.workerUrl){let b=await (0,e.mo)(a);if(b)try{let a=await (0,e.V9)(b);await (0,f.sp)(a.workerName)}catch(b){console.warn(`[remove] Failed to delete worker for "${a}":`,b)}}(0,h.Rj)(a)}async function o(a,b,c=[]){let d=await (0,e.mo)(a);if(!d)throw Error("MCP not found");let i=await (0,e.V9)(d);if(!g())throw Error("Not logged in to Cloudflare. Run `npx wrangler login` first.");for(let a of c)await (0,f.e3)(i.workerName,a);await (0,f.sL)(i.workerName,b);let j={...(0,h.o_)(a)??{},...b};for(let a of c)delete j[a];return(0,h.el)(a,j),{updatedKeys:Object.keys(b),deletedKeys:c}}},8739:(a,b,c)=>{c.d(b,{ER:()=>q,JY:()=>t,Ns:()=>u,e3:()=>s,eS:()=>p,iX:()=>o,sL:()=>r,sp:()=>v});var d=c(9646),e=c(9021),f=c(3873),g=c(1820);let h=null;function i(a){return`${function(){if(h)return h;try{let a=(0,d.execSync)("which wrangler 2>/dev/null",{encoding:"utf-8",timeout:3e3}).trim();if(a)return h=a}catch{}try{let a=(0,d.execSync)("npx -y which wrangler 2>/dev/null",{encoding:"utf-8",timeout:15e3}).trim();if(a)return h=a}catch{}return h="npx -y wrangler"}()} ${a}`}let j=/^[a-zA-Z0-9_-]+$/,k=/^[a-zA-Z0-9_]+$/;function l(a){if(!j.test(a))throw Error(`Invalid worker name "${a}": must match ${j}`)}function m(a){if(!k.test(a))throw Error(`Invalid secret name "${a}": must match ${k}`)}let n=null;function o(){if(n&&Date.now()-n.timestamp<3e5)return n.result;try{let a=(0,d.execSync)(i("whoami 2>&1"),{encoding:"utf-8",timeout:15e3});if(a.includes("You are logged in")||a.includes("associated with")){let b=a.match(/associated with the email ([^\s!]+)/),c=b?b[1]:void 0,d={loggedIn:!0,account:c};return n={result:d,timestamp:Date.now()},d}let b={loggedIn:!1};return n={result:b,timestamp:Date.now()},b}catch{let a={loggedIn:!1};return n={result:a,timestamp:Date.now()},a}}async function p(){return n=null,new Promise(a=>{let b=(0,d.exec)(i("login"),{timeout:12e4}),c="";b.stdout?.on("data",a=>c+=a),b.stderr?.on("data",a=>c+=a),b.on("close",b=>{0===b?a({success:!0}):a({success:!1,error:"Cloudflare login failed. Please try again."})}),b.on("error",b=>{a({success:!1,error:b.message})})})}async function q(a,b,c,h){let j=(0,e.mkdtempSync)((0,f.join)((0,g.tmpdir)(),"mcp-deploy-"));try{let g=function(a){l(a);try{let b=(0,d.execSync)(i(`deployments list --name ${a} 2>&1`),{encoding:"utf-8",timeout:15e3});return!b.includes("no deployments")&&b.includes("Created on")}catch{return!1}}(a.workerName),k={name:a.workerName,main:"index.mjs",compatibility_date:a.compatibilityDate,compatibility_flags:a.compatibilityFlags,durable_objects:{bindings:[{name:a.durableObjectBinding,class_name:a.durableObjectClassName}]},...h&&{kv_namespaces:[{binding:"OAUTH_KV",id:h}]}};g?console.log("[wrangler] Existing worker, skipping migrations"):(k.migrations=[{tag:a.migrationTag,new_sqlite_classes:[a.durableObjectClassName]}],console.log("[wrangler] New worker, including migrations")),(0,e.writeFileSync)((0,f.join)(j,"wrangler.jsonc"),JSON.stringify(k,null,2)),(0,e.writeFileSync)((0,f.join)(j,"index.mjs"),c),(0,e.writeFileSync)((0,f.join)(j,"original.mjs"),b),console.log(`[wrangler] Deploying ${a.workerName} from ${j}...`);let m="";try{m=(0,d.execSync)(i("deploy 2>&1"),{cwd:j,encoding:"utf-8",timeout:12e4})}catch(d){let a=(d?.stdout??"").toString(),b=(d?.stderr??"").toString(),c=[a,b].filter(Boolean).join("\n").trim();throw Error(c?`wrangler deploy failed: ${c}`:`wrangler deploy failed: ${d instanceof Error?d.message:"unknown error"}`)}let n=m.match(/https:\/\/[^\s]+\.workers\.dev/);if(!n)throw Error("Deployed but could not find Worker URL in output. Check wrangler output.");return{url:n[0]}}finally{try{(0,e.rmSync)(j,{recursive:!0,force:!0})}catch{}}}async function r(a,b){l(a);let c={};for(let[a,d]of Object.entries(b))m(a),d&&(c[a]=d);if(0===Object.keys(c).length)return;let h=(0,e.mkdtempSync)((0,f.join)((0,g.tmpdir)(),"mcp-secrets-")),j=(0,f.join)(h,"secrets.json");try{(0,e.writeFileSync)(j,JSON.stringify(c)),console.log(`[wrangler] Setting ${Object.keys(c).length} secrets on ${a}...`),(0,d.execSync)(i(`secret bulk "${j}" --name ${a} 2>&1`),{encoding:"utf-8",timeout:3e4}),console.log("[wrangler] Secrets set successfully")}finally{try{(0,e.rmSync)(h,{recursive:!0,force:!0})}catch{}}}async function s(a,b){l(a),m(b);try{(0,d.execSync)(i(`secret delete ${b} --name ${a} --force 2>&1`),{encoding:"utf-8",timeout:15e3})}catch{}}async function t(a){try{let b=(0,d.execSync)(i("kv namespace list 2>&1"),{encoding:"utf-8",timeout:15e3}).match(/\[[\s\S]*\]/);if(b)try{let c=JSON.parse(b[0]).find(b=>b.title===a);if(c)return console.log(`[wrangler] KV namespace "${a}" already exists: ${c.id}`),c.id}catch{console.warn("[wrangler] Failed to parse KV namespace list, will attempt to create")}}catch{}console.log(`[wrangler] Creating KV namespace "${a}"...`);let b=(0,d.execSync)(i(`kv namespace create "${a}" 2>&1`),{encoding:"utf-8",timeout:15e3}),c=b.match(/id\s*=\s*"([^"]+)"/);if(!c)throw Error(`Failed to parse KV namespace ID from wrangler output: ${b}`);return console.log(`[wrangler] Created KV namespace "${a}": ${c[1]}`),c[1]}async function u(a){try{let b=new AbortController,c=setTimeout(()=>b.abort(),1e4),d=await fetch(a,{signal:b.signal});return clearTimeout(c),{healthy:d.ok,status:d.status}}catch(a){return{healthy:!1,error:a instanceof Error?a.message:"Unknown error"}}}async function v(a){l(a),(0,d.execSync)(i(`delete --name ${a} --force 2>&1`),{encoding:"utf-8",timeout:3e4})}},9526:(a,b,c)=>{function d(a){return"string"==typeof a&&!(a.length<1)&&!(a.length>100)&&/^[a-zA-Z0-9_-]+$/.test(a)}function e(a){return"string"==typeof a&&("latest"===a||!(a.length<1)&&!(a.length>100)&&/^v?[a-zA-Z0-9._-]+$/.test(a))}function f(a){return"string"==typeof a&&!(a.length<1)&&!(a.length>100)&&/^[A-Z0-9_]+$/.test(a)}function g(a){if("object"!=typeof a||null===a||Array.isArray(a))return!1;for(let[b,c]of Object.entries(a))if(!f(b)||!("string"==typeof c&&c.length>=1&&c.length<=1e4))return!1;return!0}c.d(b,{Ac:()=>d,SR:()=>e,fz:()=>g,y6:()=>f})}};
|
|
@@ -83,9 +83,9 @@ exports.id=817,exports.ids=[817],exports.modules={903:(a,b,c)=>{"use strict";c.d
|
|
|
83
83
|
CREATE INDEX IF NOT EXISTS idx_metadata_cache_slug ON metadata_cache(slug);
|
|
84
84
|
CREATE INDEX IF NOT EXISTS idx_oauth_codes_expires_at ON oauth_codes(expires_at);
|
|
85
85
|
CREATE INDEX IF NOT EXISTS idx_oauth_clients_expires_at ON oauth_clients(expires_at);
|
|
86
|
-
`),(a=l).prepare("PRAGMA table_info(deployments)").all().some(a=>"auth_mode"===a.name)||a.exec("ALTER TABLE deployments ADD COLUMN auth_mode TEXT NOT NULL DEFAULT 'bearer'"),(b=l).prepare("PRAGMA table_info(deployments)").all().some(a=>"oauth_password"===a.name)||b.exec("ALTER TABLE deployments ADD COLUMN oauth_password TEXT"),function(a){let b=(0,g.join)(j,"store.json"),c=(0,g.join)(j,"oauth-store.json");if(!a.prepare("SELECT value FROM config WHERE key = 'migrated_from_json'").get()&&0!==a.prepare("INSERT OR IGNORE INTO config (key, value) VALUES ('migrated_from_json', 'in_progress')").run().changes){if((0,f.existsSync)(b))try{let c=(0,f.readFileSync)(b,"utf-8"),d=JSON.parse(c);a.transaction(()=>{let b=a.prepare("INSERT OR IGNORE INTO mcps (slug, github_repo, release_tag, added_at, is_default) VALUES (?, ?, ?, ?, ?)");for(let a of d.mcps)b.run(a.slug,a.githubRepo,a.releaseTag,a.addedAt,+!!a.isDefault);let c=a.prepare("INSERT OR IGNORE INTO deployments (slug, status, worker_url, bearer_token, deployed_at, version, error) VALUES (?, ?, ?, ?, ?, ?, ?)");for(let a of Object.values(d.deployments)){let b=a.bearerToken;if(b){let a=n(b);a&&(b=(0,i.w)(a))}c.run(a.slug,a.status,a.workerUrl,b,a.deployedAt,a.version,a.error??null)}let e=a.prepare("INSERT OR IGNORE INTO secrets (slug, key, value) VALUES (?, ?, ?)");for(let[a,b]of Object.entries(d.secrets))for(let[c,d]of Object.entries(b))e.run(a,c,d);d.seededDefaults&&a.prepare("INSERT OR REPLACE INTO config (key, value) VALUES ('seeded_defaults', '1')").run()})(),(0,f.renameSync)(b,b+".bak"),console.log("[mcp-deploy] Migrated data/store.json → SQLite")}catch(a){console.error("[mcp-deploy] Failed to migrate store.json:",a)}if((0,f.existsSync)(c))try{let b=(0,f.readFileSync)(c,"utf-8"),d=JSON.parse(b);a.transaction(()=>{let b=a.prepare("INSERT OR IGNORE INTO oauth_clients (client_id, data, expires_at) VALUES (?, ?, ?)");for(let[a,c]of Object.entries(d.clients))b.run(a,JSON.stringify(c.data),c.expiresAt);let c=a.prepare("INSERT OR IGNORE INTO oauth_codes (code, data, expires_at) VALUES (?, ?, ?)");for(let[a,b]of Object.entries(d.authCodes))c.run(a,JSON.stringify(b.data),b.expiresAt);let e=a.prepare("INSERT OR IGNORE INTO jwt_secrets (slug, secret) VALUES (?, ?)");for(let[a,b]of Object.entries(d.jwtSecrets)){let c=b,d=n(b);d&&(c=(0,i.w)(d)),e.run(a,c)}let f=a.prepare("INSERT OR IGNORE INTO worker_url_mapping (worker_url, slug) VALUES (?, ?)");for(let[a,b]of Object.entries(d.urlToSlug))f.run(a,b)})(),(0,f.renameSync)(c,c+".bak"),console.log("[mcp-deploy] Migrated data/oauth-store.json → SQLite")}catch(a){console.error("[mcp-deploy] Failed to migrate oauth-store.json:",a)}a.prepare("UPDATE config SET value = '1' WHERE key = 'migrated_from_json'").run()}}(l),l}catch(a){throw l=null,Error(`Failed to initialize database at ${k}: ${a instanceof Error?a.message:a}`)}}function n(a){try{let b=(0,h.scryptSync)("mcp-deploy-local-dev-key","mcp-deploy-salt",32),c=a.split(":");if(3!==c.length)return null;let[d,e,f]=c,g=Buffer.from(d,"hex"),i=Buffer.from(e,"hex"),j=(0,h.createDecipheriv)("aes-256-gcm",b,g);j.setAuthTag(i);let k=j.update(f,"hex","utf8");return k+=j.final("utf8")}catch{return null}}},2629:(a,b,c)=>{"use strict";c.d(b,{A1:()=>l,V9:()=>j,dd:()=>k,lX:()=>m,mo:()=>i,n8:()=>h});var d=c(4528),e=c(3773);let f=[{slug:"zotero-assistant-mcp",githubRepo:"upascal/zotero-assistant-mcp"},{slug:"paper-search-mcp",githubRepo:"upascal/paper-search-mcp"}];async function g(){if(!(0,d.pg)()){for(let a of f)try{(0,d.Ux)({slug:a.slug,githubRepo:a.githubRepo,releaseTag:a.releaseTag??"latest",addedAt:new Date().toISOString(),isDefault:!0})}catch(b){console.log(`Skipping ${a.slug}: ${b}`)}(0,d.Qe)()}}async function h(){return await g(),(0,d.aH)()}async function i(a){return(await h()).find(b=>b.slug===a)}async function j(a){let b=(0,d.iW)(a.slug);if(!b){let c=await (0,e.Og)(a.githubRepo,a.releaseTag??"latest");b={metadata:c.metadata,bundleUrl:c.bundleUrl,version:c.version},(0,d.mS)(a.slug,b)}let{metadata:c,bundleUrl:f,version:g}=b;return{slug:a.slug,githubRepo:a.githubRepo,releaseTag:a.releaseTag,isDefault:a.isDefault,name:c.name,description:c.description,version:g,workerName:c.worker.name,durableObjectBinding:c.worker.durableObjectBinding,durableObjectClassName:c.worker.durableObjectClassName,compatibilityDate:c.worker.compatibilityDate,compatibilityFlags:c.worker.compatibilityFlags,migrationTag:c.worker.migrationTag,bundleUrl:f,secrets:c.secrets,config:c.config,autoSecrets:c.autoSecrets}}function k(a){let b=(0,d.ny)(a.slug);if(!b)return null;let{metadata:c,bundleUrl:e,version:f}=b;return{slug:a.slug,githubRepo:a.githubRepo,releaseTag:a.releaseTag,isDefault:a.isDefault,name:c.name,description:c.description,version:f,workerName:c.worker.name,durableObjectBinding:c.worker.durableObjectBinding,durableObjectClassName:c.worker.durableObjectClassName,compatibilityDate:c.worker.compatibilityDate,compatibilityFlags:c.worker.compatibilityFlags,migrationTag:c.worker.migrationTag,bundleUrl:e,secrets:c.secrets,config:c.config,autoSecrets:c.autoSecrets}}async function l(a){let b=await fetch(a.bundleUrl);if(!b.ok)throw Error(`Failed to fetch bundle: ${b.status}`);return b.text()}async function m(a,b){if(a.releaseTag&&"latest"!==a.releaseTag)return{updateAvailable:!1,latestVersion:a.releaseTag};let c=await (0,e.CA)(a.githubRepo);return c&&b?{updateAvailable:c!==b,latestVersion:c}:{updateAvailable:!1,latestVersion:c}}},3773:(a,b,c)=>{"use strict";async function d(a){let b=await fetch(`https://api.github.com/repos/${a}/releases/latest`,{headers:{Accept:"application/vnd.github.v3+json",...process.env.GITHUB_TOKEN&&{Authorization:`token ${process.env.GITHUB_TOKEN}`}},next:{revalidate:300}});if(!b.ok){if(404===b.status)throw Error("Repository not found or has no releases");throw Error(`Failed to fetch release: ${b.status}`)}return b.json()}async function e(a,b){if("latest"===b)return d(a);let c=await fetch(`https://api.github.com/repos/${a}/releases/tags/${b}`,{headers:{Accept:"application/vnd.github.v3+json",...process.env.GITHUB_TOKEN&&{Authorization:`token ${process.env.GITHUB_TOKEN}`}},next:{revalidate:300}});if(!c.ok)throw Error(`Failed to fetch release ${b}: ${c.status}`);return c.json()}async function f(a,b="latest"){let c=await e(a,b),d=c.assets.find(a=>"mcp-deploy.json"===a.name),g=c.assets.find(a=>"worker.mjs"===a.name);if(!d)throw Error(`Release ${c.tag_name} missing mcp-deploy.json`);if(!g)throw Error(`Release ${c.tag_name} missing worker.mjs`);let h=await fetch(d.browser_download_url,{next:{revalidate:300}});if(!h.ok)throw Error(`Failed to fetch metadata: ${h.status}`);return{metadata:await h.json(),bundleUrl:g.browser_download_url,metadataUrl:d.browser_download_url,version:c.tag_name.replace(/^v/,"")}}async function g(a){try{return(await d(a)).tag_name.replace(/^v/,"")}catch{return null}}function h(a){if(/^[a-zA-Z0-9_.-]+\/[a-zA-Z0-9_.-]+$/.test(a))return a;try{let b=new URL(a.startsWith("http")?a:`https://${a}`);if("github.com"===b.hostname){let a=b.pathname.split("/").filter(Boolean);if(a.length>=2)return`${a[0]}/${a[1]}`}}catch{}return null}c.d(b,{CA:()=>g,Og:()=>f,f6:()=>h})},4528:(a,b,c)=>{"use strict";c.d(b,{OV:()=>
|
|
86
|
+
`),(a=l).prepare("PRAGMA table_info(deployments)").all().some(a=>"auth_mode"===a.name)||a.exec("ALTER TABLE deployments ADD COLUMN auth_mode TEXT NOT NULL DEFAULT 'bearer'"),(b=l).prepare("PRAGMA table_info(deployments)").all().some(a=>"oauth_password"===a.name)||b.exec("ALTER TABLE deployments ADD COLUMN oauth_password TEXT"),function(a){let b=(0,g.join)(j,"store.json"),c=(0,g.join)(j,"oauth-store.json");if(!a.prepare("SELECT value FROM config WHERE key = 'migrated_from_json'").get()&&0!==a.prepare("INSERT OR IGNORE INTO config (key, value) VALUES ('migrated_from_json', 'in_progress')").run().changes){if((0,f.existsSync)(b))try{let c=(0,f.readFileSync)(b,"utf-8"),d=JSON.parse(c);a.transaction(()=>{let b=a.prepare("INSERT OR IGNORE INTO mcps (slug, github_repo, release_tag, added_at, is_default) VALUES (?, ?, ?, ?, ?)");for(let a of d.mcps)b.run(a.slug,a.githubRepo,a.releaseTag,a.addedAt,+!!a.isDefault);let c=a.prepare("INSERT OR IGNORE INTO deployments (slug, status, worker_url, bearer_token, deployed_at, version, error) VALUES (?, ?, ?, ?, ?, ?, ?)");for(let a of Object.values(d.deployments)){let b=a.bearerToken;if(b){let a=n(b);a&&(b=(0,i.w)(a))}c.run(a.slug,a.status,a.workerUrl,b,a.deployedAt,a.version,a.error??null)}let e=a.prepare("INSERT OR IGNORE INTO secrets (slug, key, value) VALUES (?, ?, ?)");for(let[a,b]of Object.entries(d.secrets))for(let[c,d]of Object.entries(b))e.run(a,c,d);d.seededDefaults&&a.prepare("INSERT OR REPLACE INTO config (key, value) VALUES ('seeded_defaults', '1')").run()})(),(0,f.renameSync)(b,b+".bak"),console.log("[mcp-deploy] Migrated data/store.json → SQLite")}catch(a){console.error("[mcp-deploy] Failed to migrate store.json:",a)}if((0,f.existsSync)(c))try{let b=(0,f.readFileSync)(c,"utf-8"),d=JSON.parse(b);a.transaction(()=>{let b=a.prepare("INSERT OR IGNORE INTO oauth_clients (client_id, data, expires_at) VALUES (?, ?, ?)");for(let[a,c]of Object.entries(d.clients))b.run(a,JSON.stringify(c.data),c.expiresAt);let c=a.prepare("INSERT OR IGNORE INTO oauth_codes (code, data, expires_at) VALUES (?, ?, ?)");for(let[a,b]of Object.entries(d.authCodes))c.run(a,JSON.stringify(b.data),b.expiresAt);let e=a.prepare("INSERT OR IGNORE INTO jwt_secrets (slug, secret) VALUES (?, ?)");for(let[a,b]of Object.entries(d.jwtSecrets)){let c=b,d=n(b);d&&(c=(0,i.w)(d)),e.run(a,c)}let f=a.prepare("INSERT OR IGNORE INTO worker_url_mapping (worker_url, slug) VALUES (?, ?)");for(let[a,b]of Object.entries(d.urlToSlug))f.run(a,b)})(),(0,f.renameSync)(c,c+".bak"),console.log("[mcp-deploy] Migrated data/oauth-store.json → SQLite")}catch(a){console.error("[mcp-deploy] Failed to migrate oauth-store.json:",a)}a.prepare("UPDATE config SET value = '1' WHERE key = 'migrated_from_json'").run()}}(l),l}catch(a){throw l=null,Error(`Failed to initialize database at ${k}: ${a instanceof Error?a.message:a}`)}}function n(a){try{let b=(0,h.scryptSync)("mcp-deploy-local-dev-key","mcp-deploy-salt",32),c=a.split(":");if(3!==c.length)return null;let[d,e,f]=c,g=Buffer.from(d,"hex"),i=Buffer.from(e,"hex"),j=(0,h.createDecipheriv)("aes-256-gcm",b,g);j.setAuthTag(i);let k=j.update(f,"hex","utf8");return k+=j.final("utf8")}catch{return null}}},2629:(a,b,c)=>{"use strict";c.d(b,{A1:()=>l,V9:()=>j,dd:()=>k,lX:()=>m,mo:()=>i,n8:()=>h});var d=c(4528),e=c(3773);let f=[{slug:"zotero-assistant-mcp",githubRepo:"upascal/zotero-assistant-mcp"},{slug:"paper-search-mcp",githubRepo:"upascal/paper-search-mcp"}];async function g(){if(!(0,d.pg)()){for(let a of f)try{(0,d.Ux)({slug:a.slug,githubRepo:a.githubRepo,releaseTag:a.releaseTag??"latest",addedAt:new Date().toISOString(),isDefault:!0})}catch(b){console.log(`Skipping ${a.slug}: ${b}`)}(0,d.Qe)()}}async function h(){return await g(),(0,d.aH)()}async function i(a){return(await h()).find(b=>b.slug===a)}async function j(a){let b=(0,d.iW)(a.slug);if(!b){let c=await (0,e.Og)(a.githubRepo,a.releaseTag??"latest");b={metadata:c.metadata,bundleUrl:c.bundleUrl,version:c.version},(0,d.mS)(a.slug,b)}let{metadata:c,bundleUrl:f,version:g}=b;return{slug:a.slug,githubRepo:a.githubRepo,releaseTag:a.releaseTag,isDefault:a.isDefault,name:c.name,description:c.description,version:g,workerName:c.worker.name,durableObjectBinding:c.worker.durableObjectBinding,durableObjectClassName:c.worker.durableObjectClassName,compatibilityDate:c.worker.compatibilityDate,compatibilityFlags:c.worker.compatibilityFlags,migrationTag:c.worker.migrationTag,bundleUrl:f,secrets:c.secrets,config:c.config,autoSecrets:c.autoSecrets}}function k(a){let b=(0,d.ny)(a.slug);if(!b)return null;let{metadata:c,bundleUrl:e,version:f}=b;return{slug:a.slug,githubRepo:a.githubRepo,releaseTag:a.releaseTag,isDefault:a.isDefault,name:c.name,description:c.description,version:f,workerName:c.worker.name,durableObjectBinding:c.worker.durableObjectBinding,durableObjectClassName:c.worker.durableObjectClassName,compatibilityDate:c.worker.compatibilityDate,compatibilityFlags:c.worker.compatibilityFlags,migrationTag:c.worker.migrationTag,bundleUrl:e,secrets:c.secrets,config:c.config,autoSecrets:c.autoSecrets}}async function l(a){let b=await fetch(a.bundleUrl);if(!b.ok)throw Error(`Failed to fetch bundle: ${b.status}`);return b.text()}async function m(a,b){if(a.releaseTag&&"latest"!==a.releaseTag)return{updateAvailable:!1,latestVersion:a.releaseTag};let c=await (0,e.CA)(a.githubRepo);return c&&b?{updateAvailable:c!==b,latestVersion:c}:{updateAvailable:!1,latestVersion:c}}},3773:(a,b,c)=>{"use strict";async function d(a){let b=await fetch(`https://api.github.com/repos/${a}/releases/latest`,{headers:{Accept:"application/vnd.github.v3+json",...process.env.GITHUB_TOKEN&&{Authorization:`token ${process.env.GITHUB_TOKEN}`}},next:{revalidate:300}});if(!b.ok){if(404===b.status)throw Error("Repository not found or has no releases");throw Error(`Failed to fetch release: ${b.status}`)}return b.json()}async function e(a,b){if("latest"===b)return d(a);let c=await fetch(`https://api.github.com/repos/${a}/releases/tags/${b}`,{headers:{Accept:"application/vnd.github.v3+json",...process.env.GITHUB_TOKEN&&{Authorization:`token ${process.env.GITHUB_TOKEN}`}},next:{revalidate:300}});if(!c.ok)throw Error(`Failed to fetch release ${b}: ${c.status}`);return c.json()}async function f(a,b="latest"){let c=await e(a,b),d=c.assets.find(a=>"mcp-deploy.json"===a.name),g=c.assets.find(a=>"worker.mjs"===a.name);if(!d)throw Error(`Release ${c.tag_name} missing mcp-deploy.json`);if(!g)throw Error(`Release ${c.tag_name} missing worker.mjs`);let h=await fetch(d.browser_download_url,{next:{revalidate:300}});if(!h.ok)throw Error(`Failed to fetch metadata: ${h.status}`);return{metadata:await h.json(),bundleUrl:g.browser_download_url,metadataUrl:d.browser_download_url,version:c.tag_name.replace(/^v/,"")}}async function g(a){try{return(await d(a)).tag_name.replace(/^v/,"")}catch{return null}}function h(a){if(/^[a-zA-Z0-9_.-]+\/[a-zA-Z0-9_.-]+$/.test(a))return a;try{let b=new URL(a.startsWith("http")?a:`https://${a}`);if("github.com"===b.hostname){let a=b.pathname.split("/").filter(Boolean);if(a.length>=2)return`${a[0]}/${a[1]}`}}catch{}return null}c.d(b,{CA:()=>g,Og:()=>f,f6:()=>h})},4528:(a,b,c)=>{"use strict";c.d(b,{$D:()=>s,OV:()=>u,Qe:()=>o,Rj:()=>m,Uu:()=>t,Ux:()=>k,aH:()=>j,el:()=>i,f4:()=>l,gT:()=>g,i8:()=>f,iW:()=>p,mS:()=>r,ny:()=>q,o_:()=>h,pg:()=>n});var d=c(903),e=c(7416);function f(a){let b=(0,d.L)().prepare("SELECT slug, status, worker_url, bearer_token, oauth_password, auth_mode, deployed_at, version, error FROM deployments WHERE slug = ?").get(a);return b?{slug:b.slug,status:b.status,workerUrl:b.worker_url,bearerToken:b.bearer_token,oauthPassword:b.oauth_password,authMode:b.auth_mode??"bearer",deployedAt:b.deployed_at,version:b.version,...b.error?{error:b.error}:{}}:null}function g(a){(0,d.L)().prepare(`INSERT OR REPLACE INTO deployments (slug, status, worker_url, bearer_token, oauth_password, auth_mode, deployed_at, version, error)
|
|
87
87
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(a.slug,a.status,a.workerUrl,a.bearerToken,a.oauthPassword??null,a.authMode??"bearer",a.deployedAt,a.version,a.error??null)}function h(a){let b=(0,d.L)().prepare("SELECT key, value FROM secrets WHERE slug = ?").all(a);if(0===b.length)return null;let c={};for(let a of b)try{c[a.key]=(0,e.Y)(a.value)}catch{c[a.key]=a.value}return c}function i(a,b){let c=(0,d.L)();c.transaction(()=>{c.prepare("DELETE FROM secrets WHERE slug = ?").run(a);let d=c.prepare("INSERT INTO secrets (slug, key, value) VALUES (?, ?, ?)");for(let[c,f]of Object.entries(b))f&&d.run(a,c,(0,e.w)(f))})()}function j(){return(0,d.L)().prepare("SELECT slug, github_repo, release_tag, added_at, is_default FROM mcps").all().map(a=>({slug:a.slug,githubRepo:a.github_repo,releaseTag:a.release_tag,addedAt:a.added_at,...a.is_default?{isDefault:!0}:{}}))}function k(a){if((0,d.L)().prepare("SELECT slug FROM mcps WHERE slug = ?").get(a.slug))throw Error(`MCP with slug "${a.slug}" already exists`);(0,d.L)().prepare("INSERT INTO mcps (slug, github_repo, release_tag, added_at, is_default) VALUES (?, ?, ?, ?, ?)").run(a.slug,a.githubRepo,a.releaseTag,a.addedAt,+!!a.isDefault)}function l(a){(0,d.L)().prepare("UPDATE deployments SET status = 'not_deployed', worker_url = NULL WHERE slug = ?").run(a)}function m(a){let b=(0,d.L)();b.transaction(()=>{b.prepare("DELETE FROM deployments WHERE slug = ?").run(a),b.prepare("DELETE FROM secrets WHERE slug = ?").run(a),b.prepare("DELETE FROM jwt_secrets WHERE slug = ?").run(a),b.prepare("DELETE FROM metadata_cache WHERE slug = ?").run(a),b.prepare("DELETE FROM latest_version_cache WHERE slug = ?").run(a),b.prepare("DELETE FROM worker_url_mapping WHERE slug = ?").run(a),b.prepare("DELETE FROM mcps WHERE slug = ?").run(a)})()}function n(){let a=(0,d.L)().prepare("SELECT value FROM config WHERE key = 'seeded_defaults'").get();return a?.value==="1"}function o(){(0,d.L)().prepare("INSERT OR REPLACE INTO config (key, value) VALUES ('seeded_defaults', '1')").run()}function p(a){let b=(0,d.L)().prepare("SELECT metadata, bundle_url, version, fetched_at FROM metadata_cache WHERE slug = ?").get(a);return!b||Date.now()-b.fetched_at>18e5?null:{metadata:JSON.parse(b.metadata),bundleUrl:b.bundle_url,version:b.version}}function q(a){let b=(0,d.L)().prepare("SELECT metadata, bundle_url, version, fetched_at FROM metadata_cache WHERE slug = ?").get(a);return b?{metadata:JSON.parse(b.metadata),bundleUrl:b.bundle_url,version:b.version}:null}function r(a,b){(0,d.L)().prepare(`INSERT OR REPLACE INTO metadata_cache (slug, metadata, bundle_url, version, fetched_at)
|
|
88
|
-
VALUES (?, ?, ?, ?, ?)`).run(a,JSON.stringify(b.metadata),b.bundleUrl,b.version,Date.now())}function s(a){let b=(0,d.L)().prepare("SELECT latest_version, checked_at FROM latest_version_cache WHERE slug = ?").get(a);return b?{latestVersion:b.latest_version,checkedAt:b.checked_at}:null}function
|
|
88
|
+
VALUES (?, ?, ?, ?, ?)`).run(a,JSON.stringify(b.metadata),b.bundleUrl,b.version,Date.now())}function s(a){(0,d.L)().prepare("DELETE FROM metadata_cache WHERE slug = ?").run(a)}function t(a){let b=(0,d.L)().prepare("SELECT latest_version, checked_at FROM latest_version_cache WHERE slug = ?").get(a);return b?{latestVersion:b.latest_version,checkedAt:b.checked_at}:null}function u(a,b){(0,d.L)().prepare(`INSERT OR REPLACE INTO latest_version_cache (slug, latest_version, checked_at)
|
|
89
89
|
VALUES (?, ?, ?)`).run(a,b,Date.now())}},6487:()=>{},7416:(a,b,c)=>{"use strict";c.d(b,{Y:()=>k,w:()=>j});var d=c(5511),e=c(9021),f=c(3873);let g="aes-256-gcm",h=(0,f.join)(process.env.MCP_DEPLOY_ROOT||process.cwd(),".env.local");function i(){let a=function(){if(process.env.ENCRYPTION_KEY)return process.env.ENCRYPTION_KEY;if((0,e.existsSync)(h)){let a=(0,e.readFileSync)(h,"utf-8").match(/^ENCRYPTION_KEY=(.+)$/m);if(a){let b=a[1].trim();return process.env.ENCRYPTION_KEY=b,b}}let a=(0,d.randomBytes)(32).toString("hex");return(0,e.existsSync)(h)?(0,e.appendFileSync)(h,`
|
|
90
90
|
ENCRYPTION_KEY=${a}
|
|
91
91
|
`):(0,e.writeFileSync)(h,`ENCRYPTION_KEY=${a}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
<!DOCTYPE html><!--
|
|
1
|
+
<!DOCTYPE html><!--2tKq_bTNyVhd6HGPRRssw--><html lang="en" data-theme="dark"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/c1d55b213e741a4a.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-9ca43f4ce1bb8938.js"/><script src="/_next/static/chunks/4bd1b696-096d35a2bd1da3af.js" async=""></script><script src="/_next/static/chunks/794-37dad9bbc14b04b8.js" async=""></script><script src="/_next/static/chunks/main-app-9463efc72af57a9a.js" async=""></script><script src="/_next/static/chunks/500-5d45efbf86b8d36e.js" async=""></script><script src="/_next/static/chunks/app/layout-16156b2dce91d181.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>MCP Deploy</title><meta name="description" content="Deploy and manage MCP servers on Cloudflare Workers"/><script>
|
|
2
2
|
(function(){
|
|
3
3
|
var t = localStorage.getItem("mcp-deploy-theme");
|
|
4
4
|
if (t === "light" || t === "system") {
|
|
5
5
|
document.documentElement.setAttribute("data-theme", t);
|
|
6
6
|
}
|
|
7
7
|
})();
|
|
8
|
-
</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="bg-surface-page text-fg min-h-screen antialiased"><div hidden=""><!--$--><!--/$--></div><nav class="border-b border-edge bg-surface/50 backdrop-blur-sm fixed top-0 inset-x-0 z-50"><div class="max-w-5xl mx-auto px-6 py-4 flex items-center justify-between"><a class="text-lg font-semibold tracking-tight" href="/"><span class="text-accent-fg">MCP</span> Deploy</a><div class="flex gap-6 text-sm"><a class="font-medium transition-colors pb-0.5 text-fg-muted hover:text-fg" href="/">Dashboard</a><a class="font-medium transition-colors pb-0.5 text-fg-muted hover:text-fg" href="/setup">Settings</a></div></div></nav><main class="max-w-5xl mx-auto px-6 py-8 pt-16"><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><!--$--><!--/$--></main><script src="/_next/static/chunks/webpack-9ca43f4ce1bb8938.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[8946,[\"500\",\"static/chunks/500-5d45efbf86b8d36e.js\",\"558\",\"static/chunks/app/layout-16156b2dce91d181.js\"],\"ThemeProvider\"]\n3:I[8500,[\"500\",\"static/chunks/500-5d45efbf86b8d36e.js\",\"558\",\"static/chunks/app/layout-16156b2dce91d181.js\"],\"\"]\n4:I[2240,[\"500\",\"static/chunks/500-5d45efbf86b8d36e.js\",\"558\",\"static/chunks/app/layout-16156b2dce91d181.js\"],\"NavLinks\"]\n5:I[7121,[],\"\"]\n6:I[4581,[],\"\"]\n7:I[484,[],\"OutletBoundary\"]\n8:\"$Sreact.suspense\"\na:I[484,[],\"ViewportBoundary\"]\nc:I[484,[],\"MetadataBoundary\"]\ne:I[7123,[],\"\"]\n:HL[\"/_next/static/css/
|
|
8
|
+
</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="bg-surface-page text-fg min-h-screen antialiased"><div hidden=""><!--$--><!--/$--></div><nav class="border-b border-edge bg-surface/50 backdrop-blur-sm fixed top-0 inset-x-0 z-50"><div class="max-w-5xl mx-auto px-6 py-4 flex items-center justify-between"><a class="text-lg font-semibold tracking-tight" href="/"><span class="text-accent-fg">MCP</span> Deploy</a><div class="flex gap-6 text-sm"><a class="font-medium transition-colors pb-0.5 text-fg-muted hover:text-fg" href="/">Dashboard</a><a class="font-medium transition-colors pb-0.5 text-fg-muted hover:text-fg" href="/setup">Settings</a></div></div></nav><main class="max-w-5xl mx-auto px-6 py-8 pt-16"><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><!--$--><!--/$--></main><script src="/_next/static/chunks/webpack-9ca43f4ce1bb8938.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[8946,[\"500\",\"static/chunks/500-5d45efbf86b8d36e.js\",\"558\",\"static/chunks/app/layout-16156b2dce91d181.js\"],\"ThemeProvider\"]\n3:I[8500,[\"500\",\"static/chunks/500-5d45efbf86b8d36e.js\",\"558\",\"static/chunks/app/layout-16156b2dce91d181.js\"],\"\"]\n4:I[2240,[\"500\",\"static/chunks/500-5d45efbf86b8d36e.js\",\"558\",\"static/chunks/app/layout-16156b2dce91d181.js\"],\"NavLinks\"]\n5:I[7121,[],\"\"]\n6:I[4581,[],\"\"]\n7:I[484,[],\"OutletBoundary\"]\n8:\"$Sreact.suspense\"\na:I[484,[],\"ViewportBoundary\"]\nc:I[484,[],\"MetadataBoundary\"]\ne:I[7123,[],\"\"]\n:HL[\"/_next/static/css/c1d55b213e741a4a.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"2tKq_bTNyVhd6HGPRRssw\",\"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/css/c1d55b213e741a4a.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"data-theme\":\"dark\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n(function(){\\n var t = localStorage.getItem(\\\"mcp-deploy-theme\\\");\\n if (t === \\\"light\\\" || t === \\\"system\\\") {\\n document.documentElement.setAttribute(\\\"data-theme\\\", t);\\n }\\n})();\\n\"}}],false]}],[\"$\",\"body\",null,{\"className\":\"bg-surface-page text-fg min-h-screen antialiased\",\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"nav\",null,{\"className\":\"border-b border-edge bg-surface/50 backdrop-blur-sm fixed top-0 inset-x-0 z-50\",\"children\":[\"$\",\"div\",null,{\"className\":\"max-w-5xl mx-auto px-6 py-4 flex items-center justify-between\",\"children\":[[\"$\",\"$L3\",null,{\"href\":\"/\",\"className\":\"text-lg font-semibold tracking-tight\",\"children\":[[\"$\",\"span\",null,{\"className\":\"text-accent-fg\",\"children\":\"MCP\"}],\" Deploy\"]}],[\"$\",\"$L4\",null,{}]]}]}],[\"$\",\"main\",null,{\"className\":\"max-w-5xl mx-auto px-6 py-8 pt-16\",\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",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\":{\"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.\"}]}]]}]}]],null,[\"$\",\"$L7\",null,{\"children\":[\"$\",\"$8\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@9\"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$La\",null,{\"children\":\"$Lb\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lc\",null,{\"children\":[\"$\",\"$8\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Ld\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$e\",[]],\"S\":true}\n"])</script><script>self.__next_f.push([1,"b:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"9:null\nd:[[\"$\",\"title\",\"0\",{\"children\":\"MCP Deploy\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Deploy and manage MCP servers on Cloudflare Workers\"}]]\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/webpack-9ca43f4ce1bb8938.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[7121,[],\"\"]\n3:I[4581,[],\"\"]\n4:I[484,[],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n7:I[484,[],\"ViewportBoundary\"]\n9:I[484,[],\"MetadataBoundary\"]\nb:I[7123,[],\"\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"
|
|
1
|
+
<!DOCTYPE html><!--2tKq_bTNyVhd6HGPRRssw--><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/webpack-9ca43f4ce1bb8938.js"/><script src="/_next/static/chunks/4bd1b696-096d35a2bd1da3af.js" async=""></script><script src="/_next/static/chunks/794-37dad9bbc14b04b8.js" async=""></script><script src="/_next/static/chunks/main-app-9463efc72af57a9a.js" async=""></script><title>500: Internal Server Error.</title><script src="/_next/static/chunks/polyfills-42372ed130431b0a.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/webpack-9ca43f4ce1bb8938.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[7121,[],\"\"]\n3:I[4581,[],\"\"]\n4:I[484,[],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n7:I[484,[],\"ViewportBoundary\"]\n9:I[484,[],\"MetadataBoundary\"]\nb:I[7123,[],\"\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"2tKq_bTNyVhd6HGPRRssw\",\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_global-error\",{\"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\":[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.\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,false]},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\",[]],\"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>
|