agentroam 0.2.0-preview.5 → 0.2.0-preview.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/README.md +2 -2
  2. package/dist/cli.js +1 -1
  3. package/dist/cloudflared/bundled-asset.test.js +1 -1
  4. package/dist/cloudflared/manifest.js +1 -1
  5. package/dist/tunnel/public-readiness.js +1 -1
  6. package/package.json +2 -2
  7. package/runtime/.next/BUILD_ID +1 -1
  8. package/runtime/.next/app-build-manifest.json +4 -4
  9. package/runtime/.next/app-path-routes-manifest.json +1 -1
  10. package/runtime/.next/build-manifest.json +5 -5
  11. package/runtime/.next/prerender-manifest.json +1 -1
  12. package/runtime/.next/react-loadable-manifest.json +2 -2
  13. package/runtime/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  14. package/runtime/.next/server/app/_not-found.html +1 -1
  15. package/runtime/.next/server/app/_not-found.rsc +1 -1
  16. package/runtime/.next/server/app/api/agent/abort/route.js +2 -2
  17. package/runtime/.next/server/app/api/agent/abort/route.js.nft.json +1 -1
  18. package/runtime/.next/server/app/api/agent/answer/route.js +2 -2
  19. package/runtime/.next/server/app/api/agent/answer/route.js.nft.json +1 -1
  20. package/runtime/.next/server/app/api/agent/run/route.js +2 -2
  21. package/runtime/.next/server/app/api/agent/run/route.js.nft.json +1 -1
  22. package/runtime/.next/server/app/api/agent/runtime-health/route.js +1 -1
  23. package/runtime/.next/server/app/api/agent/runtime-health/route.js.nft.json +1 -1
  24. package/runtime/.next/server/app/api/agent/steer/route.js +2 -2
  25. package/runtime/.next/server/app/api/agent/steer/route.js.nft.json +1 -1
  26. package/runtime/.next/server/app/api/agent/stream/route.js +2 -2
  27. package/runtime/.next/server/app/api/agent/stream/route.js.nft.json +1 -1
  28. package/runtime/.next/server/app/api/sessions/[id]/changes/route.js +2 -2
  29. package/runtime/.next/server/app/api/sessions/[id]/changes/route.js.nft.json +1 -1
  30. package/runtime/.next/server/app/api/sessions/[id]/fork/route.js +1 -1
  31. package/runtime/.next/server/app/api/sessions/[id]/fork/route.js.nft.json +1 -1
  32. package/runtime/.next/server/app/api/sessions/[id]/handoff/route.js +1 -1
  33. package/runtime/.next/server/app/api/sessions/[id]/handoff/route.js.nft.json +1 -1
  34. package/runtime/.next/server/app/api/sessions/[id]/route.js +2 -2
  35. package/runtime/.next/server/app/api/sessions/[id]/route.js.nft.json +1 -1
  36. package/runtime/.next/server/app/api/sessions/route.js +2 -2
  37. package/runtime/.next/server/app/api/sessions/route.js.nft.json +1 -1
  38. package/runtime/.next/server/app/web/page.js +1 -1
  39. package/runtime/.next/server/app/web/page_client-reference-manifest.js +1 -1
  40. package/runtime/.next/server/app/web.html +1 -1
  41. package/runtime/.next/server/app/web.rsc +2 -2
  42. package/runtime/.next/server/app-paths-manifest.json +15 -15
  43. package/runtime/.next/server/chunks/{809.js → 988.js} +10 -10
  44. package/runtime/.next/server/middleware-build-manifest.js +1 -1
  45. package/runtime/.next/server/middleware-react-loadable-manifest.js +1 -1
  46. package/runtime/.next/server/pages/404.html +1 -1
  47. package/runtime/.next/server/pages/500.html +1 -1
  48. package/runtime/.next/server/server-reference-manifest.json +1 -1
  49. package/runtime/.next/static/chunks/404.829f96e7395dbd79.js +1 -0
  50. package/runtime/.next/static/chunks/app/web/page-8747e21600303a2a.js +1 -0
  51. package/runtime/.next/static/chunks/{webpack-8bcef6486c3ddc96.js → webpack-96381cef391af02d.js} +1 -1
  52. package/runtime/node_modules/@agent/core/dist/domain/web-console/WebArtifactBridge.d.ts +9 -0
  53. package/runtime/node_modules/@agent/core/dist/domain/web-console/WebArtifactBridge.d.ts.map +1 -0
  54. package/runtime/node_modules/@agent/core/dist/domain/web-console/WebArtifactBridge.test.d.ts +2 -0
  55. package/runtime/node_modules/@agent/core/dist/domain/web-console/WebArtifactBridge.test.d.ts.map +1 -0
  56. package/runtime/node_modules/@agent/core/dist/domain/web-console/index.d.ts +1 -0
  57. package/runtime/node_modules/@agent/core/dist/domain/web-console/index.d.ts.map +1 -1
  58. package/runtime/node_modules/@agent/core/dist/index.js +24 -1
  59. package/runtime/node_modules/@agent/core/dist/index.js.map +4 -3
  60. package/runtime/webapp/dist/assets/{App-XUxeDI8P.js → App-C4wiUXZC.js} +62 -62
  61. package/runtime/webapp/dist/assets/index-D7slQOD-.css +1 -0
  62. package/runtime/webapp/dist/assets/{index-BdHtZjnb.js → index-DhS2YvqH.js} +1 -1
  63. package/runtime/webapp/dist/index.html +2 -2
  64. package/runtime/.next/static/chunks/604.749f141c00996f2f.js +0 -1
  65. package/runtime/.next/static/chunks/app/web/page-7d24c8b46d41da35.js +0 -1
  66. package/runtime/webapp/dist/assets/index-DeGogWCH.css +0 -1
  67. /package/runtime/.next/static/{mZZGSYMLIZnVm0gc5PXky → HvOq-7Qqu9K-QSMSBbbdj}/_buildManifest.js +0 -0
  68. /package/runtime/.next/static/{mZZGSYMLIZnVm0gc5PXky → HvOq-7Qqu9K-QSMSBbbdj}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en"><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-8bcef6486c3ddc96.js"/><script src="/_next/static/chunks/3cc391f0-6377b9b71382a170.js" async=""></script><script src="/_next/static/chunks/183-ffe4acb07968be9e.js" async=""></script><script src="/_next/static/chunks/main-app-07d67f2d4e96ecb8.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>AgentRoam</title><meta name="description" content="General-purpose AI agent API server"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><script src="/_next/static/chunks/webpack-8bcef6486c3ddc96.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:I[7709,[],\"\"]\n3:I[1338,[],\"\"]\n4:I[1573,[],\"\"]\na:I[6554,[],\"\"]\n5:{\"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\"}\n6:{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"}\n7:{\"display\":\"inline-block\"}\n8:{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0}\nb:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L1\",null,{\"buildId\":\"mZZGSYMLIZnVm0gc5PXky\",\"assetPrefix\":\"\",\"urlParts\":[\"\",\"_not-found\"],\"initialTree\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{},[[\"$L2\",[[\"$\",\"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],null],null]},[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"/_not-found\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[[null,[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$5\",\"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\":\"$6\",\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":\"$7\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$8\",\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],\"$L9\"],\"globalErrorComponent\":\"$a\",\"missingSlots\":\"$Wb\"}]\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"AgentRoam\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"General-purpose AI agent API server\"}]]\n2:null\n"])</script></body></html>
1
+ <!DOCTYPE html><html lang="en"><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-96381cef391af02d.js"/><script src="/_next/static/chunks/3cc391f0-6377b9b71382a170.js" async=""></script><script src="/_next/static/chunks/183-ffe4acb07968be9e.js" async=""></script><script src="/_next/static/chunks/main-app-07d67f2d4e96ecb8.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>AgentRoam</title><meta name="description" content="General-purpose AI agent API server"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><script src="/_next/static/chunks/webpack-96381cef391af02d.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:I[7709,[],\"\"]\n3:I[1338,[],\"\"]\n4:I[1573,[],\"\"]\na:I[6554,[],\"\"]\n5:{\"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\"}\n6:{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"}\n7:{\"display\":\"inline-block\"}\n8:{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0}\nb:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L1\",null,{\"buildId\":\"HvOq-7Qqu9K-QSMSBbbdj\",\"assetPrefix\":\"\",\"urlParts\":[\"\",\"_not-found\"],\"initialTree\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{},[[\"$L2\",[[\"$\",\"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],null],null]},[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"/_not-found\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[[null,[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$5\",\"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\":\"$6\",\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":\"$7\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$8\",\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],\"$L9\"],\"globalErrorComponent\":\"$a\",\"missingSlots\":\"$Wb\"}]\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"AgentRoam\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"General-purpose AI agent API server\"}]]\n2:null\n"])</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>500: Internal Server Error</title><meta name="next-head-count" content="3"/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-8bcef6486c3ddc96.js" defer=""></script><script src="/_next/static/chunks/framework-7bac12ed8564755e.js" defer=""></script><script src="/_next/static/chunks/main-a03d29ab49823387.js" defer=""></script><script src="/_next/static/chunks/pages/_app-389e6eb8abb0af2d.js" defer=""></script><script src="/_next/static/chunks/pages/_error-7cee5565b5ef9bcb.js" defer=""></script><script src="/_next/static/mZZGSYMLIZnVm0gc5PXky/_buildManifest.js" defer=""></script><script src="/_next/static/mZZGSYMLIZnVm0gc5PXky/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;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)}@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></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"mZZGSYMLIZnVm0gc5PXky","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>500: Internal Server Error</title><meta name="next-head-count" content="3"/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-96381cef391af02d.js" defer=""></script><script src="/_next/static/chunks/framework-7bac12ed8564755e.js" defer=""></script><script src="/_next/static/chunks/main-a03d29ab49823387.js" defer=""></script><script src="/_next/static/chunks/pages/_app-389e6eb8abb0af2d.js" defer=""></script><script src="/_next/static/chunks/pages/_error-7cee5565b5ef9bcb.js" defer=""></script><script src="/_next/static/HvOq-7Qqu9K-QSMSBbbdj/_buildManifest.js" defer=""></script><script src="/_next/static/HvOq-7Qqu9K-QSMSBbbdj/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;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)}@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></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"HvOq-7Qqu9K-QSMSBbbdj","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- {"node":{},"edge":{},"encryptionKey":"j1rHkM3lHIlidXFM0xhPuCCOZB1gKavtFsIwnF82Tjw="}
1
+ {"node":{},"edge":{},"encryptionKey":"OdB6ZG/Ytp4SaxZHPdoqGbbBBppspSSdSK5GI5vLIRM="}
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[404],{9404:function(e,t,a){a.r(t),a.d(t,{default:function(){return I}});var l=a(1996),r=a(6121);let n=[["style",new Set(["css","scss","sass","less","styl"])],["image",new Set(["png","jpg","jpeg","gif","webp","avif","bmp","ico","svg","tif","tiff"])],["video",new Set(["mp4","mov","m4v","webm","mkv","avi","wmv","flv","mpeg","mpg"])],["audio",new Set(["mp3","wav","m4a","aac","ogg","flac","opus"])],["markdown",new Set(["md","mdx","markdown"])],["json",new Set(["json","jsonc","geojson"])],["archive",new Set(["zip","tar","gz","tgz","bz2","xz","7z","rar"])],["spreadsheet",new Set(["csv","tsv","xls","xlsx","ods"])],["presentation",new Set(["ppt","pptx","key","odp"])],["database",new Set(["db","sqlite","sqlite3"])],["text",new Set(["txt","log","rtf","ini","cfg","conf","env","yaml","yml","toml","xml","pdf","doc","docx","odt"])],["code",new Set(["js","jsx","mjs","cjs","ts","tsx","vue","svelte","java","kt","kts","py","rb","go","rs","php","c","cc","cpp","h","hpp","cs","swift","scala","sh","bash","zsh","fish","sql","html"])]],i=new Map([["dockerfile","code"],["makefile","code"],["gemfile","code"],["rakefile","code"],["license","text"]]);var c=a(1806);let d=(0,c.Z)("FileCode2",[["path",{d:"M4 22h14a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v4",key:"1pf5j1"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"m5 12-3 3 3 3",key:"oke12k"}],["path",{d:"m9 18 3-3-3-3",key:"112psh"}]]),s=(0,c.Z)("Palette",[["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["path",{d:"M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10c.926 0 1.648-.746 1.648-1.688 0-.437-.18-.835-.437-1.125-.29-.289-.438-.652-.438-1.125a1.64 1.64 0 0 1 1.668-1.668h1.996c3.051 0 5.555-2.503 5.555-5.554C21.965 6.012 17.461 2 12 2z",key:"12rzf8"}]]),o=(0,c.Z)("FileImage",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["circle",{cx:"10",cy:"12",r:"2",key:"737tya"}],["path",{d:"m20 17-1.296-1.296a2.41 2.41 0 0 0-3.408 0L9 22",key:"wt3hpn"}]]),h=(0,c.Z)("FileVideo2",[["path",{d:"M4 22h14a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v4",key:"1pf5j1"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["rect",{width:"8",height:"6",x:"2",y:"12",rx:"1",key:"1a6c1e"}],["path",{d:"m10 15.5 4 2.5v-6l-4 2.5",key:"t7cp39"}]]),p=(0,c.Z)("FileAudio",[["path",{d:"M17.5 22h.5a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v3",key:"rslqgf"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M2 19a2 2 0 1 1 4 0v1a2 2 0 1 1-4 0v-4a6 6 0 0 1 12 0v4a2 2 0 1 1-4 0v-1a2 2 0 1 1 4 0",key:"9f7x3i"}]]),u=(0,c.Z)("NotebookText",[["path",{d:"M2 6h4",key:"aawbzj"}],["path",{d:"M2 10h4",key:"l0bgd4"}],["path",{d:"M2 14h4",key:"1gsvsf"}],["path",{d:"M2 18h4",key:"1bu2t1"}],["rect",{width:"16",height:"20",x:"4",y:"2",rx:"2",key:"1nb95v"}],["path",{d:"M9.5 8h5",key:"11mslq"}],["path",{d:"M9.5 12H16",key:"ktog6x"}],["path",{d:"M9.5 16H14",key:"p1seyn"}]]),y=(0,c.Z)("FileText",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]),v=(0,c.Z)("FileJson2",[["path",{d:"M4 22h14a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v4",key:"1pf5j1"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M4 12a1 1 0 0 0-1 1v1a1 1 0 0 1-1 1 1 1 0 0 1 1 1v1a1 1 0 0 0 1 1",key:"fq0c9t"}],["path",{d:"M8 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1",key:"4gibmv"}]]),k=(0,c.Z)("FileArchive",[["path",{d:"M10 12v-1",key:"v7bkov"}],["path",{d:"M10 18v-2",key:"1cjy8d"}],["path",{d:"M10 7V6",key:"dljcrl"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M15.5 22H18a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v16a2 2 0 0 0 .274 1.01",key:"gkbcor"}],["circle",{cx:"10",cy:"20",r:"2",key:"1xzdoj"}]]),f=(0,c.Z)("FileSpreadsheet",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M8 13h2",key:"yr2amv"}],["path",{d:"M14 13h2",key:"un5t4a"}],["path",{d:"M8 17h2",key:"2yhykz"}],["path",{d:"M14 17h2",key:"10kma7"}]]),x=(0,c.Z)("Presentation",[["path",{d:"M2 3h20",key:"91anmk"}],["path",{d:"M21 3v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V3",key:"2k9sn8"}],["path",{d:"m7 21 5-5 5 5",key:"bip4we"}]]),m=(0,c.Z)("Database",[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]]),b=(0,c.Z)("File",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}]]),g=(0,c.Z)("LoaderCircle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]),j=(0,c.Z)("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]),w=(0,c.Z)("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]),M=(0,c.Z)("FolderOpen",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]),z=(0,c.Z)("Folder",[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]]),q=(0,c.Z)("CornerDownLeft",[["polyline",{points:"9 10 4 15 9 20",key:"r3jprv"}],["path",{d:"M20 4v7a4 4 0 0 1-4 4H4",key:"6o5b7l"}]]),C=(0,c.Z)("LocateFixed",[["line",{x1:"2",x2:"5",y1:"12",y2:"12",key:"bvdh0s"}],["line",{x1:"19",x2:"22",y1:"12",y2:"12",key:"1tbv5k"}],["line",{x1:"12",x2:"12",y1:"2",y2:"5",key:"11lu5j"}],["line",{x1:"12",x2:"12",y1:"19",y2:"22",key:"x3vr5v"}],["circle",{cx:"12",cy:"12",r:"7",key:"fim9np"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]),Z=(0,c.Z)("Search",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]);var N=a(7317);function S(e){let t=e.replace(/\/{2,}/g,"/");return t.length>1?t.replace(/\/+$/,""):t}function H(e){let t=S(e),a=t.lastIndexOf("/");return a<=0?"/":t.slice(0,a)}function F(e,t){let a=S(e),l=S(t);return"/"===l?a.startsWith("/"):a.startsWith("".concat(l,"/"))}let V={code:{icon:d,color:"#7aa2f7",label:"代码文件"},style:{icon:s,color:"#bb9af7",label:"样式文件"},image:{icon:o,color:"#9ece6a",label:"图片文件"},video:{icon:h,color:"#f7768e",label:"视频文件"},audio:{icon:p,color:"#c099ff",label:"音频文件"},markdown:{icon:u,color:"#73daca",label:"Markdown 文件"},text:{icon:y,color:"#a9b1d6",label:"文本文件"},json:{icon:v,color:"#e0af68",label:"JSON 文件"},archive:{icon:k,color:"#ff9e64",label:"压缩文件"},spreadsheet:{icon:f,color:"#9ece6a",label:"表格文件"},presentation:{icon:x,color:"#f7768e",label:"演示文件"},database:{icon:m,color:"#2ac3de",label:"数据库文件"},file:{icon:b,color:"#c8c8d0",label:"文件"}};function L(e){return e<1024?"".concat(e,"B"):e<1048576?"".concat((e/1024).toFixed(1),"K"):e<1073741824?"".concat((e/1024/1024).toFixed(1),"M"):"".concat((e/1024/1024/1024).toFixed(1),"G")}function I(e){let{rpc:t,onEvent:a,onOpenFile:c,selectedPath:d,ready:s,cwd:o,followCwd:h,initialRoot:p,initialFollow:u=!0,onTreeStateChange:y,revealRequest:v}=e,[k,f]=(0,r.useState)(null),[x,m]=(0,r.useState)(""),[b,I]=(0,r.useState)(""),[A,E]=(0,r.useState)(!u),[W,R]=(0,r.useState)(""),D=(0,r.useRef)(new Map),O=(0,r.useRef)(null),_=(0,r.useRef)(null),P=(0,r.useRef)(0),B=(0,r.useRef)(0),[,J]=(0,r.useState)(0),K=()=>J(e=>e+1),T=(0,r.useCallback)(async(e,a)=>{let l={path:e,depth:a,expanded:!0,children:null,loading:!0};D.current.set(e,l),K();try{let a=await t("fs:list",{path:e});l.children=a.entries,t("fs:watch",{path:e}).catch(()=>{})}catch(e){var r;l.children=[],l.error=null!==(r=null==e?void 0:e.message)&&void 0!==r?r:"read failed"}return l.loading=!1,K(),l},[t]),$=!!h&&!A,G=(0,r.useCallback)(e=>{let t=e.length>1?e.replace(/\/+$/,""):e;O.current=t,D.current.clear(),f({path:t,depth:0,expanded:!1,children:null,loading:!1}),I(t)},[]);(0,r.useEffect)(()=>{s&&o&&$&&O.current!==o&&(G(o),null==y||y(o,!0))},[s,o,$,G]),(0,r.useEffect)(()=>{s&&p&&!u&&!O.current&&(E(!0),G(p))},[s,p,u,G]),(0,r.useEffect)(()=>{s&&t("hello").then(e=>{R(e.home),!$||o||O.current||G(e.home)}).catch(()=>{})},[s,o,$,t,G]);let Q=()=>{let e=b.trim();e&&("~"===e?e=W||o||"/":e.startsWith("~/")?e="".concat(W||o||"").concat(e.slice(1)):e.startsWith("/")||(e="".concat(o||(null==k?void 0:k.path)||W||"/","/").concat(e)),e=e.replace(/\/+/g,"/"),E(!0),G(e),null==y||y(e,!1))},U=(0,r.useCallback)(async e=>{let t=D.current.get(e);t||(t={path:e,depth:0,expanded:!1,children:null,loading:!1},D.current.set(e,t)),t.expanded?t.expanded=!1:(t.expanded=!0,t.children||t.loading||await T(e,t.depth)),K()},[T]),X=(0,r.useCallback)(async(e,t)=>{let a=D.current.get(e);a?a.children||a.loading||await T(e,t):a=await T(e,t),a.expanded=!0,K()},[T]),Y=(0,r.useCallback)(async(e,t)=>{var a;let l=H(e),r=null!==(a=null==k?void 0:k.path)&&void 0!==a?a:l;F(e,r)||(r=l,E(!0),G(r),null==y||y(r,!1));let n=function(e,t){let a=S(e);if(!F(t,a))return[];let l=H(t);if(l===a)return[a];let r=l.slice("/"===a?1:a.length+1),n=[a],i=a;for(let e of r.split("/").filter(Boolean))i="/"===i?"/".concat(e):"".concat(i,"/").concat(e),n.push(i);return n}(r,e);for(let e=0;e<n.length;e+=1){if(P.current!==t)return;await X(n[e],e)}let i=()=>{var a,l;if(P.current!==t)return;let r=Array.from(null!==(l=null===(a=_.current)||void 0===a?void 0:a.querySelectorAll("[data-tree-path]"))&&void 0!==l?l:[]).find(t=>t.dataset.treePath===e);null==r||r.scrollIntoView({block:"center",inline:"nearest"})};requestAnimationFrame(()=>requestAnimationFrame(i))},[G,y,X,null==k?void 0:k.path]);(0,r.useEffect)(()=>{s&&v&&B.current!==v.requestId&&(B.current=v.requestId,P.current=v.requestId,Y(v.path,v.requestId))},[s,Y,null==v?void 0:v.requestId]),(0,r.useEffect)(()=>a("fs:event",e=>{var t;for(let a of null!==(t=e.events)&&void 0!==t?t:[]){let e=a.path;e===d&&window.dispatchEvent(new CustomEvent("file-changed",{detail:e}));let t=e.slice(0,e.lastIndexOf("/"))||"/",l=D.current.get(t);(null==l?void 0:l.expanded)&&l.children&&!l.loading&&T(t,l.depth).catch(()=>{})}}),[a,d,T]);let ee=(e,t)=>e.endsWith("/")?e+t:"".concat(e,"/").concat(t),et=x.trim().toLowerCase(),ea=(e,t)=>{var a,l;if(!et||t.name.toLowerCase().includes(et))return!0;if(!t.dir)return!1;let r=ee(e,t.name),n=null===(a=D.current.get(r))||void 0===a?void 0:a.children;return null!==(l=null==n?void 0:n.some(e=>ea(r,e)))&&void 0!==l&&l},el=(e,t,a)=>t.filter(t=>ea(e,t)).map(t=>{let r=ee(e,t.name);if(t.dir){var s;let e=D.current.get(r),n=null!==(s=null==e?void 0:e.expanded)&&void 0!==s&&s;return(0,l.jsxs)("div",{children:[(0,l.jsxs)("div",{className:"tree-row",onClick:()=>U(r),style:{paddingLeft:6+12*a},children:[(0,l.jsx)("span",{className:"tree-disclosure","aria-hidden":"true",children:(null==e?void 0:e.loading)?(0,l.jsx)(g,{className:"tree-spin",size:13}):n?(0,l.jsx)(j,{size:13}):(0,l.jsx)(w,{size:13})}),(0,l.jsx)("span",{className:"tree-entry-icon tree-folder-icon","aria-hidden":"true",children:n?(0,l.jsx)(M,{size:16}):(0,l.jsx)(z,{size:16})}),(0,l.jsx)("span",{className:"tree-entry-name",children:t.name})]}),n&&(e.children?el(r,e.children,a+1):(0,l.jsx)("div",{className:"tree-row",style:{paddingLeft:22+12*a,color:"#556"},children:"…"}))]},r)}let o=V[function(e){var t,a;let l=e.toLocaleLowerCase(),r=i.get(l);if(r)return r;if(l.startsWith(".env")||".gitignore"===l||".npmrc"===l)return"text";let c=l.includes(".")&&l.split(".").pop()||"";return null!==(a=null===(t=n.find(e=>{let[,t]=e;return t.has(c)}))||void 0===t?void 0:t[0])&&void 0!==a?a:"file"}(t.name)],h=o.icon;return(0,l.jsxs)("div",{className:"tree-row","data-tree-path":r,"data-selected":r===d?"1":void 0,onClick:()=>c(r),title:"".concat(o.label," \xb7 ").concat(r," \xb7 ").concat(L(t.size)),style:{paddingLeft:6+12*a},children:[(0,l.jsx)("span",{className:"tree-disclosure","aria-hidden":"true"}),(0,l.jsx)("span",{className:"tree-entry-icon",style:{color:o.color},"aria-hidden":"true",children:(0,l.jsx)(h,{size:16,strokeWidth:1.8})}),(0,l.jsx)("span",{className:"tree-entry-name",children:t.name}),(0,l.jsx)("span",{className:"tree-size",children:L(t.size)})]},r)});if(!k)return(0,l.jsx)("div",{style:{padding:14,fontSize:12,color:"#556"},children:$?s?"等待终端目录…":"连接中…":"…"});let er=D.current.get(k.path);return(0,l.jsxs)("div",{className:"tree-scroll",ref:_,children:[(0,l.jsxs)("div",{className:"tree-location",children:[(0,l.jsx)("input",{value:b,onChange:e=>I(e.target.value),onKeyDown:e=>{"Enter"===e.key&&Q()},placeholder:"输入目录路径","aria-label":"文件树目录路径",spellCheck:!1}),(0,l.jsx)("button",{tabIndex:-1,onClick:Q,title:"定位目录","aria-label":"定位目录",children:(0,l.jsx)(q,{size:14,"aria-hidden":"true"})}),(0,l.jsx)("button",{tabIndex:-1,onClick:()=>{E(!1),o&&(G(o),null==y||y(o,!0))},title:"跟随终端目录","aria-label":"跟随终端目录","data-active":$?"1":void 0,children:(0,l.jsx)(C,{size:14,"aria-hidden":"true"})})]}),(0,l.jsxs)("div",{className:"tree-filter",children:[(0,l.jsx)(Z,{size:14,"aria-hidden":"true"}),(0,l.jsx)("input",{value:x,onChange:e=>m(e.target.value),placeholder:"筛选已加载文件","aria-label":"筛选文件树"}),x&&(0,l.jsx)("button",{tabIndex:-1,onClick:()=>m(""),"aria-label":"清除筛选",children:(0,l.jsx)(N.Z,{size:13,"aria-hidden":"true"})})]}),(0,l.jsxs)("div",{className:"tree-row",onClick:()=>U(k.path),children:[(0,l.jsx)("span",{className:"tree-disclosure","aria-hidden":"true",children:(null==er?void 0:er.loading)?(0,l.jsx)(g,{className:"tree-spin",size:13}):(null==er?void 0:er.expanded)?(0,l.jsx)(j,{size:13}):(0,l.jsx)(w,{size:13})}),(0,l.jsx)("span",{className:"tree-entry-icon tree-folder-icon","aria-hidden":"true",children:(null==er?void 0:er.expanded)?(0,l.jsx)(M,{size:16}):(0,l.jsx)(z,{size:16})}),(0,l.jsx)("span",{className:"tree-entry-name",style:{direction:"rtl",textAlign:"left"},children:k.path})]}),(null==er?void 0:er.expanded)&&(er.children?el(k.path,er.children,1):(0,l.jsx)("div",{className:"tree-row",style:{paddingLeft:24,color:"#556"},children:"…"}))]})}}}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[541],{6736:function(e,t,n){Promise.resolve().then(n.bind(n,4002))},1806:function(e,t,n){"use strict";n.d(t,{Z:function(){return c}});var r=n(6121);let i=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),a=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.filter((e,t,n)=>!!e&&""!==e.trim()&&n.indexOf(e)===t).join(" ").trim()};var o={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let l=(0,r.forwardRef)((e,t)=>{let{color:n="currentColor",size:i=24,strokeWidth:l=2,absoluteStrokeWidth:c,className:s="",children:d,iconNode:u,...f}=e;return(0,r.createElement)("svg",{ref:t,...o,width:i,height:i,stroke:n,strokeWidth:c?24*Number(l)/Number(i):l,className:a("lucide",s),...f},[...u.map(e=>{let[t,n]=e;return(0,r.createElement)(t,n)}),...Array.isArray(d)?d:[d]])}),c=(e,t)=>{let n=(0,r.forwardRef)((n,o)=>{let{className:c,...s}=n;return(0,r.createElement)(l,{ref:o,iconNode:t,className:a("lucide-".concat(i(e)),c),...s})});return n.displayName="".concat(e),n}},7317:function(e,t,n){"use strict";n.d(t,{Z:function(){return r}});let r=(0,n(1806).Z)("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]])},6302:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return a}});let r=n(684);n(1996),n(6121);let i=r._(n(6729));function a(e,t){var n;let r={loading:e=>{let{error:t,isLoading:n,pastDelay:r}=e;return null}};"function"==typeof e&&(r.loader=e);let a={...r,...t};return(0,i.default)({...a,modules:null==(n=a.loadableGenerated)?void 0:n.modules})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4352:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"BailoutToCSR",{enumerable:!0,get:function(){return i}});let r=n(2723);function i(e){let{reason:t,children:n}=e;if("undefined"==typeof window)throw new r.BailoutToCSRError(t);return n}},6729:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return s}});let r=n(1996),i=n(6121),a=n(4352),o=n(5882);function l(e){return{default:e&&"default"in e?e.default:e}}let c={loader:()=>Promise.resolve(l(()=>null)),loading:null,ssr:!0},s=function(e){let t={...c,...e},n=(0,i.lazy)(()=>t.loader().then(l)),s=t.loading;function d(e){let l=s?(0,r.jsx)(s,{isLoading:!0,pastDelay:!0,error:null}):null,c=t.ssr?(0,r.jsxs)(r.Fragment,{children:["undefined"==typeof window?(0,r.jsx)(o.PreloadCss,{moduleIds:t.modules}):null,(0,r.jsx)(n,{...e})]}):(0,r.jsx)(a.BailoutToCSR,{reason:"next/dynamic",children:(0,r.jsx)(n,{...e})});return(0,r.jsx)(i.Suspense,{fallback:l,children:c})}return d.displayName="LoadableComponent",d}},5882:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"PreloadCss",{enumerable:!0,get:function(){return a}});let r=n(1996),i=n(7994);function a(e){let{moduleIds:t}=e;if("undefined"!=typeof window)return null;let n=(0,i.getExpectedRequestStore)("next/dynamic css"),a=[];if(n.reactLoadableManifest&&t){let e=n.reactLoadableManifest;for(let n of t){if(!e[n])continue;let t=e[n].files.filter(e=>e.endsWith(".css"));a.push(...t)}}return 0===a.length?null:(0,r.jsx)(r.Fragment,{children:a.map(e=>(0,r.jsx)("link",{precedence:"dynamic",rel:"stylesheet",href:n.assetPrefix+"/_next/"+encodeURI(e),as:"style"},e))})}},9532:function(e,t,n){"use strict";function r(e,t){var n,r,i,a;return{height:Math.round(null!==(n=null==e?void 0:e.height)&&void 0!==n?n:t.height),width:Math.round(null!==(r=null==e?void 0:e.width)&&void 0!==r?r:t.width),top:Math.round(null!==(i=null==e?void 0:e.offsetTop)&&void 0!==i?i:0),left:Math.round(null!==(a=null==e?void 0:e.offsetLeft)&&void 0!==a?a:0)}}function i(e){e&&(e.scrollLeft=0)}n.d(t,{i:function(){return i},x:function(){return r}})},4002:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return E}});var r=n(1996),i=n(6302),a=n.n(i),o=n(6121),l=n(7317);let c=(0,n(1806).Z)("FolderTree",[["path",{d:"M20 10a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1h-2.5a1 1 0 0 1-.8-.4l-.9-1.2A1 1 0 0 0 15 3h-2a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1Z",key:"hod4my"}],["path",{d:"M20 21a1 1 0 0 0 1-1v-3a1 1 0 0 0-1-1h-2.9a1 1 0 0 1-.88-.55l-.42-.85a1 1 0 0 0-.92-.6H13a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1Z",key:"w4yl2u"}],["path",{d:"M3 5a2 2 0 0 0 2 2h3",key:"f2jnh7"}],["path",{d:"M3 3v13a2 2 0 0 0 2 2h3",key:"k8epm1"}]]),s="agent-web-shell:project-response:v1",d=new Set(["project:list","project:get","project:create","project:rename","project:delete","project:roots","project:directories","project:check"]);function u(e){let{children:t}=e,n=function(){let[e,t]=(0,o.useState)("loading"),[n,r]=(0,o.useState)(null),[i]=(0,o.useState)(""),[a,l]=(0,o.useState)(null),c=(0,o.useCallback)(async()=>{t("loading"),l(null);try{let e=await fetch("/api/web-console/bootstrap",{credentials:"same-origin",cache:"no-store"});if(!e.ok)throw Error("HTTP ".concat(e.status));let n=await e.json();r(n.user),t("authenticated")}catch(e){l("无法连接远程控制台"),t("needsLogin")}},[]);(0,o.useEffect)(()=>{c()},[c]);let s=(0,o.useCallback)(async()=>{let e=await fetch("/api/web-console/bootstrap",{credentials:"same-origin",cache:"no-store"});if(!e.ok)throw Error("bootstrap failed");let n=await e.json();return r(n.user),t("authenticated"),n.wsNonce},[]),d=(0,o.useCallback)(async()=>!0,[]);return{status:e,user:n,error:a,csrfToken:i,setup:d,login:d,logout:c,refresh:c,getWsNonce:s}}();return"authenticated"===n.status?(0,r.jsx)(r.Fragment,{children:t(n)}):(0,r.jsx)("main",{style:f.page,children:(0,r.jsx)("div",{style:f.card,children:n.error||"正在连接远程控制台…"})})}let f={page:{minHeight:"100dvh",display:"grid",placeItems:"center",background:"#0b0b10",color:"#e8e8ee",fontFamily:'-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif'},card:{color:"#858999",fontSize:13}};function p(e){let{csrfToken:t,terminalId:n,onFill:i}=e,[a,l]=(0,o.useState)([]),[c,s]=(0,o.useState)(""),d=(0,o.useCallback)(async()=>{let e=new URLSearchParams({q:c,limit:"200"}),t=await fetch("/api/web-console/history?".concat(e),{credentials:"same-origin"});t.ok&&l((await t.json()).history)},[c]);(0,o.useEffect)(()=>{let e=setTimeout(d,200);return()=>clearTimeout(e)},[d]);let u=async e=>{await fetch("/api/web-console/history",{method:"DELETE",credentials:"same-origin",headers:{"content-type":"application/json","x-csrf-token":t},body:JSON.stringify({id:e})}),d()},f=e=>{n&&i(e)};return(0,r.jsxs)("div",{className:"history-panel",children:[(0,r.jsxs)("div",{className:"history-search",children:[(0,r.jsx)("input",{value:c,onChange:e=>s(e.target.value),placeholder:"搜索命令"}),(0,r.jsx)("button",{onClick:d,children:"刷新"})]}),a.map(e=>(0,r.jsxs)("div",{className:"history-item".concat(n?"":" history-item-disabled"),role:"button",tabIndex:n?0:-1,onClick:()=>f(e.command),onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&n&&(t.preventDefault(),f(e.command))},children:[(0,r.jsx)("code",{children:e.command}),(0,r.jsxs)("small",{children:[e.cwd," \xb7 ",new Date(e.executedAt).toLocaleString()]}),(0,r.jsxs)("div",{className:"history-item-actions",onClick:e=>e.stopPropagation(),onPointerDown:e=>e.stopPropagation(),children:[(0,r.jsx)("button",{onClick:()=>navigator.clipboard.writeText(e.command),children:"复制"}),(0,r.jsx)("button",{disabled:!n,onClick:()=>f(e.command),children:"填入"}),(0,r.jsx)("button",{onClick:()=>u(e.id),children:"删除"})]})]},e.id)),!a.length&&(0,r.jsx)("div",{className:"history-empty",children:"暂无 Shell 命令历史"}),!n&&!!a.length&&(0,r.jsx)("div",{className:"history-empty",children:"请先打开一个终端页签"})]})}var b=n(9149);let h=[{id:"pearl",label:"珍珠白",swatch:"#f5f6fa",preview:["#f5f6fa","#4f6ef7"],cssVars:{"--ui-root-bg":"#f5f6fa","--ui-text":"#111827","--ui-tabbar-bg":"#eef0f6","--ui-tabbar-border":"#dfe3ee","--ui-tab-bg":"#e6e9f4","--ui-tab-text":"#5b6472","--ui-tab-active-bg":"#ffffff","--ui-tab-active-text":"#111827","--ui-tab-accent":"#4f6ef7","--ui-connection-bg":"#eef0f6","--ui-connection-text":"#9ca3af","--ui-tree-bg":"#fbfcfe","--ui-tree-border":"#e5e8f0","--ui-term-col-bg":"#f5f6fa","--ui-fab-bg":"#ffffff","--ui-fab-border":"#d8dcea","--ui-muted-surface":"#eef0f6","--ui-muted-border":"#d8dcea","--ui-muted-text":"#6b7280","--ui-panel-input-bg":"#ffffff","--ui-panel-input-text":"#111827","--ui-panel-input-border":"#d8dcea","--ui-drawer-tab-text":"#6b7280","--ui-drawer-tab-active":"#111827","--ui-history-item-text":"#1f2937","--ui-history-meta":"#9ca3af","--ui-success":"#059669","--ui-error":"#dc2626"},termHostBg:"#ffffff",keybar:{bg:"#eef0f6",border:"#dfe3ee",keyBg:"#ffffff",keyBorder:"#d8dcea",keyText:"#4b5563",accent:"#4f6ef7",accentText:"#ffffff",drag:"#a5b4fc"},xterm:{background:"#ffffff",foreground:"#1f2937",cursor:"#4f6ef7",selectionBackground:"#c7d2fe",black:"#24292e",red:"#d73a49",green:"#22863a",yellow:"#b08800",blue:"#005cc5",magenta:"#6f42c1",cyan:"#1b7c83",white:"#6a737d",brightBlack:"#959da5",brightWhite:"#fafbfc"}},{id:"scifi",label:"科幻霓虹",swatch:"#050a14",preview:["#050a14","#22d3ee"],cssVars:{"--ui-root-bg":"#050a14","--ui-text":"#e2f3ff","--ui-tabbar-bg":"#0a1220","--ui-tabbar-border":"#10263c","--ui-tab-bg":"#0d1626","--ui-tab-text":"#5c7893","--ui-tab-active-bg":"#122036","--ui-tab-active-text":"#e2f3ff","--ui-tab-accent":"#22d3ee","--ui-connection-bg":"#0a1220","--ui-connection-text":"#5c7893","--ui-tree-bg":"#0d1626","--ui-tree-border":"#10263c","--ui-term-col-bg":"#050a14","--ui-fab-bg":"#122036","--ui-fab-border":"#155e75","--ui-muted-surface":"#0d1626","--ui-muted-border":"#164e63","--ui-muted-text":"#9fb8d0","--ui-panel-input-bg":"#0a1220","--ui-panel-input-text":"#e2f3ff","--ui-panel-input-border":"#164e63","--ui-drawer-tab-text":"#5c7893","--ui-drawer-tab-active":"#e2f3ff","--ui-history-item-text":"#d5ecfb","--ui-history-meta":"#5c7893","--ui-success":"#34d399","--ui-error":"#fb7185"},termHostBg:"#0a1220",keybar:{bg:"#0a1220",border:"#10263c",keyBg:"#0d1626",keyBorder:"#164e63",keyText:"#9fb8d0",accent:"#22d3ee",accentText:"#04121a",drag:"#155e75"},xterm:{background:"#0a1220",foreground:"#e2f3ff",cursor:"#22d3ee",selectionBackground:"#164e63",black:"#0d1626",red:"#fb7185",green:"#34d399",yellow:"#fbbf24",blue:"#38bdf8",magenta:"#e879f9",cyan:"#22d3ee",white:"#e2f3ff",brightBlack:"#5c7893",brightWhite:"#ffffff"}},{id:"noir",label:"暗夜黑",swatch:"#0f1115",preview:["#0f1115","#a78bfa"],cssVars:{"--ui-root-bg":"#0f1115","--ui-text":"#eceff4","--ui-tabbar-bg":"#14171d","--ui-tabbar-border":"#232833","--ui-tab-bg":"#191d24","--ui-tab-text":"#6b7280","--ui-tab-active-bg":"#1f242d","--ui-tab-active-text":"#eceff4","--ui-tab-accent":"#a78bfa","--ui-connection-bg":"#14171d","--ui-connection-text":"#6b7280","--ui-tree-bg":"#191d24","--ui-tree-border":"#232833","--ui-term-col-bg":"#0f1115","--ui-fab-bg":"#1f242d","--ui-fab-border":"#2a3040","--ui-muted-surface":"#191d24","--ui-muted-border":"#2a3040","--ui-muted-text":"#aab2bf","--ui-panel-input-bg":"#14171d","--ui-panel-input-text":"#eceff4","--ui-panel-input-border":"#2a3040","--ui-drawer-tab-text":"#6b7280","--ui-drawer-tab-active":"#eceff4","--ui-history-item-text":"#d7dce4","--ui-history-meta":"#6b7280","--ui-success":"#4ade80","--ui-error":"#f87171"},termHostBg:"#14171d",keybar:{bg:"#14171d",border:"#232833",keyBg:"#191d24",keyBorder:"#2a3040",keyText:"#aab2bf",accent:"#a78bfa",accentText:"#0f1115",drag:"#4b4470"},xterm:{background:"#14171d",foreground:"#eceff4",cursor:"#a78bfa",selectionBackground:"#3b3654",black:"#191d24",red:"#f87171",green:"#4ade80",yellow:"#fbbf24",blue:"#60a5fa",magenta:"#c084fc",cyan:"#67e8f9",white:"#eceff4",brightBlack:"#6b7280",brightWhite:"#ffffff"}}],v="pearl",m=Object.fromEntries(h.map(e=>[e.id,e])),g={dark:"noir",black:"noir",gray:"noir",blue:"noir",red:"noir",yellow:"noir",green:"noir",white:"pearl"};function x(e){if(e&&e in m)return m[e];let t=e?g[e]:void 0;return t?m[t]:m[v]}function w(e){var t;let{username:n,themeId:i,onThemeChange:a,accent:l,accentText:c}=e,[s,d]=(0,o.useState)(!1),u=(0,o.useRef)(null),f=(0,o.useRef)(null),p=(0,o.useRef)(null),[v,m]=(0,o.useState)(null),[g,x]=(0,o.useState)(null);(0,o.useEffect)(()=>{var e,t;x(null!==(t=null===(e=u.current)||void 0===e?void 0:e.closest(".web-root"))&&void 0!==t?t:document.body)},[]);let w=(null!==(t=n.trim()[0])&&void 0!==t?t:"?").toUpperCase(),y=()=>{let e=f.current;if(!e)return;let t=e.getBoundingClientRect(),n=Math.max(8,Math.min(window.innerWidth-176-8,t.right-176));m({top:t.bottom+6,left:n})};return(0,o.useLayoutEffect)(()=>{if(!s){m(null);return}return y(),window.addEventListener("resize",y),window.addEventListener("scroll",y,!0),()=>{window.removeEventListener("resize",y),window.removeEventListener("scroll",y,!0)}},[s]),(0,o.useEffect)(()=>{if(!s)return;let e=e=>{var t,n;let r=e.target;(null===(t=u.current)||void 0===t||!t.contains(r))&&(null!==(n=p.current)&&void 0!==n&&n.contains(r)||d(!1))},t=e=>{"Escape"===e.key&&d(!1)},n=window.setTimeout(()=>{window.addEventListener("pointerdown",e,!0)},0);return window.addEventListener("keydown",t),()=>{window.clearTimeout(n),window.removeEventListener("pointerdown",e,!0),window.removeEventListener("keydown",t)}},[s]),(0,r.jsxs)("div",{ref:u,className:"theme-picker",children:[(0,r.jsx)("button",{ref:f,type:"button",className:"theme-avatar","aria-label":"换肤(".concat(n,")"),title:n,"aria-expanded":s,onPointerDown:e=>e.stopPropagation(),onClick:e=>{e.preventDefault(),e.stopPropagation(),d(e=>!e)},style:{border:"1px solid ".concat(l),background:l,color:c},children:w}),s&&v&&g&&(0,b.createPortal)((0,r.jsxs)("div",{ref:p,className:"theme-popover",role:"dialog","aria-label":"选择皮肤",style:{position:"fixed",top:v.top,left:v.left,zIndex:200,width:176,padding:8,borderRadius:10,border:"1px solid var(--ui-tabbar-border, #282b36)",background:"var(--ui-tab-active-bg, #262b38)",boxShadow:"0 10px 28px rgba(0,0,0,.45)"},children:[(0,r.jsx)("div",{style:{fontSize:10,color:"var(--ui-connection-text, #777b8c)",margin:"2px 4px 6px",letterSpacing:.5},children:"皮肤"}),(0,r.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:2},children:h.map(e=>{let t=e.id===i;return(0,r.jsxs)("button",{type:"button",className:"theme-popover-item","aria-label":e.label,"aria-pressed":t,onPointerDown:e=>e.stopPropagation(),onClick:()=>{a(e.id),d(!1)},style:{background:t?"color-mix(in srgb, var(--ui-tab-accent, #7aa2f7) 14%, transparent)":"transparent"},children:[(0,r.jsx)("span",{style:{width:18,height:18,borderRadius:5,flexShrink:0,background:"linear-gradient(135deg, ".concat(e.preview[0]," 55%, ").concat(e.preview[1]," 55%)"),boxShadow:"inset 0 0 0 1px rgba(128,128,160,.25)"}}),(0,r.jsx)("span",{style:{flex:1,textAlign:"left",fontSize:12,fontWeight:t?600:400,color:t?"var(--ui-tab-active-text, #edf0f7)":"var(--ui-tab-text, #8f93a4)"},children:e.label}),t&&(0,r.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"var(--ui-tab-accent, #7aa2f7)",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:(0,r.jsx)("path",{d:"m5 12 4 4L19 6"})})]},e.id)})})]}),g)]})}var y=n(9532);let k=a()(()=>Promise.all([n.e(118),n.e(658),n.e(982)]).then(n.bind(n,3366)),{loadableGenerated:{webpack:()=>[3366]},ssr:!1}),j=a()(()=>n.e(404).then(n.bind(n,9404)),{loadableGenerated:{webpack:()=>[9404]},ssr:!1}),S=a()(()=>n.e(945).then(n.bind(n,1945)),{loadableGenerated:{webpack:()=>[1945]},ssr:!1});function E(){return(0,r.jsx)(u,{children:e=>(0,r.jsx)(T,{auth:e})})}let C={id:"webapp-agent",title:"智能助手",kind:"webapp"};function T(e){var t,n,i,a;let{auth:u}=e,{state:f,epoch:b,rpc:h,onEvent:m,onTerminalData:g,onTerminalReset:E,sendTerminalInput:T}=function(e,t,n){let[r,i]=(0,o.useState)({connected:!1,error:null}),[a,l]=(0,o.useState)(0),c=(0,o.useRef)(null),s=(0,o.useRef)(0),d=(0,o.useRef)(new Map),u=(0,o.useRef)([]),f=(0,o.useRef)(0),p=(0,o.useRef)(new Map),b=(0,o.useRef)(new Map),h=(0,o.useRef)(new Map),v=(0,o.useRef)(1e3),m=(0,o.useRef)(!1),g=(0,o.useRef)(null),x=(0,o.useRef)(e),w=(0,o.useRef)(t),y=(0,o.useRef)(n);x.current=e,w.current=t,y.current=n;let k=(0,o.useCallback)((e,t)=>{let n=p.current.get(e);return n||p.current.set(e,n=new Set),n.add(t),()=>n.delete(t)},[]),j=(0,o.useCallback)((e,t)=>{let n=b.current.get(e);return n||b.current.set(e,n=new Set),n.add(t),()=>n.delete(t)},[]),S=(0,o.useCallback)((e,t)=>{let n=h.current.get(e);return n||h.current.set(e,n=new Set),n.add(t),()=>n.delete(t)},[]),E=(0,o.useCallback)((e,t)=>{let n=c.current;if(!n||n.readyState!==WebSocket.OPEN)return!1;let r=new TextEncoder().encode(t),i=new Uint8Array(6+r.byteLength),a=new DataView(i.buffer);return i[0]=1,i[1]=1,a.setUint32(2,e),i.set(r,6),n.send(i),!0},[]),C=(0,o.useCallback)(e=>{let t=c.current;(null==t?void 0:t.readyState)===WebSocket.OPEN?t.send(e):u.current.push(e)},[]),T=(0,o.useCallback)(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:15e3;return new Promise((r,i)=>{let a=++f.current,o=setTimeout(()=>{d.current.delete(a),i(Error("".concat(e," timeout")))},n);d.current.set(a,{resolve:r,reject:i,timer:o}),C(JSON.stringify({type:e,_req:a,...t}))})},[C]),L=(0,o.useCallback)(async()=>{let e,t;m.current=!1;let n=++s.current;g.current&&(clearInterval(g.current),g.current=null);let r=c.current;if(r){r.onopen=r.onmessage=r.onerror=r.onclose=null;try{r.close()}catch(e){}}try{e=await w.current()}catch(e){n===s.current&&y.current();return}if(n===s.current&&!m.current){try{t=new WebSocket("".concat("".concat("https:"===location.protocol?"wss:":"ws:","//").concat(location.host,"/ws"),"?nonce=").concat(encodeURIComponent(e)))}catch(e){i({connected:!1,error:String(e)});return}t.binaryType="arraybuffer",c.current=t,t.onopen=()=>{if(n!==s.current||c.current!==t)return;for(let e of(v.current=1e3,i({connected:!0,error:null}),l(e=>e+1),u.current.splice(0)))t.send(e);let e=Date.now();g.current=setInterval(()=>{if(c.current!==t||t.readyState!==WebSocket.OPEN){clearInterval(g.current),g.current=null;return}if(Date.now()-e>25e3){try{t.close()}catch(e){}return}try{t.send(JSON.stringify({type:"ping"}))}catch(e){}},1e4);let r=()=>{e=Date.now()};t.addEventListener("message",r),t.addEventListener("close",()=>t.removeEventListener("message",r),{once:!0})},t.onmessage=e=>{var r,i,a;let o;if(n===s.current&&c.current===t){if("string"!=typeof e.data){let t=new Uint8Array(e.data);if(t.byteLength>=6&&1===t[0]&&2===t[1]){let e=new DataView(t.buffer,t.byteOffset,t.byteLength).getUint32(2);null===(i=b.current.get(e))||void 0===i||i.forEach(e=>e(t.subarray(6)))}else if(t.byteLength>=6&&1===t[0]&&3===t[1]){let e=new DataView(t.buffer,t.byteOffset,t.byteLength).getUint32(2);null===(a=h.current.get(e))||void 0===a||a.forEach(e=>e())}else x.current(t);return}try{o=JSON.parse(e.data)}catch(e){return}if("error"===o.type&&null!=o.id){let e=d.current.get(o.id);if(e){d.current.delete(o.id),clearTimeout(e.timer);let t=Object.assign(Error(o.error||"gateway error"),{code:o.code});e.reject(t)}return}if(null!=o.id&&"string"==typeof o.type&&o.type.endsWith(":result")){let e=d.current.get(o.id);e&&(d.current.delete(o.id),clearTimeout(e.timer),e.resolve(o));return}null===(r=p.current.get(o.type))||void 0===r||r.forEach(e=>e(o))}},t.onclose=e=>{if(n!==s.current||c.current!==t)return;if(g.current&&(clearInterval(g.current),g.current=null),c.current=null,i({connected:!1,error:null}),4001===e.code||4003===e.code){y.current();return}if(m.current)return;let r=v.current;v.current=Math.min(2*r,8e3),setTimeout(()=>{m.current||n!==s.current||L()},r)},t.onerror=()=>{}}},[]);return(0,o.useEffect)(()=>(L(),()=>{m.current=!0,s.current++,g.current&&(clearInterval(g.current),g.current=null);let e=c.current;if(c.current=null,e){e.onopen=e.onmessage=e.onerror=e.onclose=null;try{e.close()}catch(e){}}}),[L]),{state:r,epoch:a,rpc:T,onEvent:k,onTerminalData:j,onTerminalReset:S,sendTerminalInput:E,reconnect:L}}(()=>{},u.getWsNonce,u.refresh),[M,P]=(0,o.useState)([{...C}]),[N,z]=(0,o.useState)(C.id),[O,I]=(0,o.useState)({}),W=(0,o.useRef)(!1),D=(0,o.useRef)(null),F=(0,o.useRef)(new Map),B=(0,o.useCallback)((e,t)=>(F.current.set(e,t),()=>F.current.delete(e)),[]),H=(0,o.useCallback)(e=>{if(!N)return;let t=F.current.get(N);t?t(e):h("term:input",{id:N,data:"\x15".concat(e)}).catch(()=>{}),Y(!1)},[N,h]),[_,X]=(0,o.useState)(!1),[A,U]=(0,o.useState)({}),[q,V]=(0,o.useState)(null),[Z,Y]=(0,o.useState)(!1),[J,G]=(0,o.useState)("files"),[K,$]=(0,o.useState)(null),[Q,ee]=(0,o.useState)(!0),[et,en]=(0,o.useState)(null),[er,ei]=(0,o.useState)({xRatio:.94,yRatio:.65,anchor:"right"}),[ea,eo]=(0,o.useState)(!1),[el,ec]=(0,o.useState)([]),[es,ed]=(0,o.useState)(v),[eu,ef]=(0,o.useState)(!1),ep=x(es),eb=(0,o.useRef)(null),eh=(0,o.useRef)(null),[ev,em]=(0,o.useState)(0),[eg,ex]=(0,o.useState)(!1),ew=(0,o.useRef)(null),ey=(0,o.useRef)(null),ek=(0,o.useRef)(null),ej=(0,o.useCallback)(e=>{var t,n;null===(n=ek.current)||void 0===n||null===(t=n.contentWindow)||void 0===t||t.postMessage({type:"agent-web-shell:skin:v1",skin:e},window.location.origin)},[]);(0,o.useEffect)(()=>{ej(es)},[es,ej]),(0,o.useEffect)(()=>{let e=e=>{var t,n,r,i,a,o,l,c,u,f;let p=(a=window.location.origin,o=null!==(r=null===(t=ek.current)||void 0===t?void 0:t.contentWindow)&&void 0!==r?r:null,e.origin!==a||e.source!==o?null:(l=e.data)&&"object"==typeof l?"agent-webapp:artifact-open:v1"!==l.type||!Number.isSafeInteger(l.requestId)||1>Number(l.requestId)||"string"!=typeof l.path||!l.path.startsWith("/")||l.path.includes("\0")||l.path.includes("\n")||l.path.includes("\r")?null:l:null);if(p){G("files"),Y(!0),V(p.path),en(p);return}let b=(c=window.location.origin,u=null!==(i=null===(n=ek.current)||void 0===n?void 0:n.contentWindow)&&void 0!==i?i:null,e.origin!==c||e.source!==u?null:(f=e.data)&&"object"==typeof f?"agent-webapp:project-request:v1"!==f.type||!Number.isSafeInteger(f.id)||1>Number(f.id)||"string"!=typeof f.method||!d.has(f.method)||!f.payload||"object"!=typeof f.payload||Array.isArray(f.payload)?null:f:null);b&&h(b.method,b.payload).then(e=>{var t,n;null===(n=ek.current)||void 0===n||null===(t=n.contentWindow)||void 0===t||t.postMessage({type:s,id:b.id,ok:!0,result:e},window.location.origin)},e=>{var t,n;null===(n=ek.current)||void 0===n||null===(t=n.contentWindow)||void 0===t||t.postMessage({type:s,id:b.id,ok:!1,error:e.message||"项目操作失败",code:e.code},window.location.origin)})};return window.addEventListener("message",e),()=>window.removeEventListener("message",e)},[h]);let eS=(0,o.useRef)(0),eE=N&&null!==(i=O[N])&&void 0!==i?i:null;(0,o.useEffect)(()=>{let e=window.visualViewport,t=null,n="",r=()=>{let i=(0,y.x)(e,{height:window.innerHeight,width:window.innerWidth}),a="".concat(i.width,"x").concat(i.height,"+").concat(i.top,"+").concat(i.left);a!==n&&(n=a,document.documentElement.style.setProperty("--vv-height","".concat(i.height,"px")),document.documentElement.style.setProperty("--vv-width","".concat(i.width,"px")),document.documentElement.style.setProperty("--vv-top","".concat(i.top,"px")),document.documentElement.style.setProperty("--vv-left","".concat(i.left,"px")),t&&window.clearTimeout(t),t=window.setTimeout(r,250))};return r(),null==e||e.addEventListener("resize",r),null==e||e.addEventListener("scroll",r),window.addEventListener("orientationchange",r),window.addEventListener("resize",r),document.addEventListener("visibilitychange",r),window.addEventListener("pageshow",r),()=>{null==e||e.removeEventListener("resize",r),null==e||e.removeEventListener("scroll",r),window.removeEventListener("orientationchange",r),window.removeEventListener("resize",r),document.removeEventListener("visibilitychange",r),window.removeEventListener("pageshow",r),t&&window.clearTimeout(t),document.documentElement.style.removeProperty("--vv-height"),document.documentElement.style.removeProperty("--vv-width"),document.documentElement.style.removeProperty("--vv-top"),document.documentElement.style.removeProperty("--vv-left")}},[]),(0,o.useEffect)(()=>{fetch("/api/web-console/preferences",{credentials:"same-origin"}).then(e=>e.json()).then(e=>{var t,n,r,i;(null===(t=e.preferences)||void 0===t?void 0:t.fileButtonPosition)&&ei(e.preferences.fileButtonPosition),"boolean"==typeof(null===(n=e.preferences)||void 0===n?void 0:n.keybarHidden)&&eo(e.preferences.keybarHidden),Array.isArray(null===(r=e.preferences)||void 0===r?void 0:r.keyOrder)&&ec(e.preferences.keyOrder),(null===(i=e.preferences)||void 0===i?void 0:i.theme)&&ed(x(e.preferences.theme).id)}).catch(()=>{}).finally(()=>ef(!0)),fetch("/api/web-console/device-state",{credentials:"same-origin"}).then(e=>e.json()).then(e=>{let t=e.deviceState;(null==t?void 0:t.drawerTab)&&G(t.drawerTab),(null==t?void 0:t.activeTerminalId)&&(D.current=t.activeTerminalId),"boolean"==typeof(null==t?void 0:t.drawerOpen)&&Y(t.drawerOpen),(null==t?void 0:t.fileTreeRoot)&&$(t.fileTreeRoot),"boolean"==typeof(null==t?void 0:t.fileTreeFollowMode)&&ee(t.fileTreeFollowMode),(null==t?void 0:t.selectedFile)&&V(t.selectedFile),(null==t?void 0:t.terminalScroll)&&"object"==typeof t.terminalScroll&&U(t.terminalScroll)}).catch(()=>{}).finally(()=>X(!0))},[]);let eC=(0,o.useCallback)(e=>{fetch("/api/web-console/preferences",{method:"PATCH",credentials:"same-origin",headers:{"content-type":"application/json","x-csrf-token":u.csrfToken},body:JSON.stringify(e)}).catch(()=>{})},[u.csrfToken]);(0,o.useEffect)(()=>{if(!eu)return;let e=setTimeout(()=>eC({fileButtonPosition:er,keybarHidden:ea,keyOrder:el,theme:es}),500);return()=>clearTimeout(e)},[er,ea,el,es,eu,eC]);let eT=(0,o.useCallback)(e=>{u.csrfToken&&fetch("/api/web-console/device-state",{method:"PUT",credentials:"same-origin",headers:{"content-type":"application/json","x-csrf-token":u.csrfToken},body:JSON.stringify(e)}).catch(()=>{})},[u.csrfToken]);(0,o.useEffect)(()=>{if(!u.csrfToken)return;let e=setTimeout(()=>eT({activeTerminalId:N,drawerOpen:Z,drawerTab:J,fileTreeRoot:K,fileTreeFollowMode:Q,selectedFile:q,terminalScroll:A}),500);return()=>clearTimeout(e)},[N,Z,J,K,Q,q,A,u.csrfToken,eT]),(0,o.useEffect)(()=>{if(!u.csrfToken)return;let e=()=>eT({activeTerminalId:N,drawerOpen:Z,drawerTab:J,fileTreeRoot:K,fileTreeFollowMode:Q,selectedFile:q,terminalScroll:A});return window.addEventListener("pagehide",e),()=>window.removeEventListener("pagehide",e)},[N,Z,J,K,Q,q,A,u.csrfToken,eT]);let eL=(0,o.useCallback)(e=>{V(e),Y(!1)},[]),eR=(0,o.useCallback)(()=>{let e=null;P(t=>t.length>=8?t:[...t,{id:e="t-web-".concat(Date.now().toString(36),"-").concat(Math.random().toString(36).slice(2,8)),title:"Terminal ".concat(t.length+1)}]),e&&z(e)},[]);(0,o.useEffect)(()=>{f.connected&&_&&!W.current&&(W.current=!0,h("term:list").then(e=>{let t=e.tabs.filter(e=>"active"===e.status||"detached"===e.status).map(e=>{let{id:t,title:n}=e;return{id:t,title:n}});P([C,...t]),z(e=>{let n=D.current||e||C.id;return n===C.id?C.id:t.some(e=>e.id===n)?n:C.id})}).catch(()=>{}))},[f.connected,_,h]);let eM=e=>{e!==C.id&&window.confirm("关闭页签会终止该终端进程,确认关闭?")&&(P(t=>{var n,r;let i=t.filter(t=>t.id!==e);return N===e&&z(null!==(r=null===(n=i[0])||void 0===n?void 0:n.id)&&void 0!==r?r:null),i}),h("term:kill",{id:e}).catch(()=>{}))};(0,o.useEffect)(()=>{let e=m("term:exited",e=>{let t=null==e?void 0:e.id;t&&(P(e=>{let n=e.filter(e=>e.id!==t);return z(e=>{var r,i;return e===t?null!==(i=null===(r=n[0])||void 0===r?void 0:r.id)&&void 0!==i?i:null:e}),n}),U(e=>{if(!(t in e))return e;let n={...e};return delete n[t],n}))});return()=>{e()}},[m]);let eP=(0,o.useCallback)(e=>{if(!N||M.length<2)return;let t=(M.findIndex(e=>e.id===N)+e+M.length)%M.length;z(M[t].id)},[N,M]),eN=Math.max(0,M.findIndex(e=>e.id===N)),ez=(null===(t=M[eN])||void 0===t?void 0:t.kind)==="webapp"?ep.cssVars["--ui-term-col-bg"]:ep.termHostBg,eO={...R.root,...ep.cssVars,"--ui-active-content-bg":ez,"--ui-terminal-bg":ep.termHostBg,background:"var(--ui-root-bg)",color:"var(--ui-text)"},eI=(0,o.useCallback)(()=>{eh.current=null,em(0),ex(!1)},[]),eW=(0,o.useCallback)(e=>{Math.abs(e)>=64&&M.length>1&&eP(e<0?1:-1),eI()},[M.length,eP,eI]),eD=e=>e instanceof Element&&!!e.closest(".terminal-screen");(0,o.useEffect)(()=>{let e=e=>{var t,n,r,i,a;if(N!==C.id)return;let o=(r=window.location.origin,i=null!==(n=null===(t=ek.current)||void 0===t?void 0:t.contentWindow)&&void 0!==n?n:null,e.origin!==r||e.source!==i?null:(a=e.data)&&"object"==typeof a&&"agent-webapp:tab-swipe:v1"===a.type&&("move"===a.phase||"end"===a.phase||"cancel"===a.phase)&&"number"==typeof a.deltaX&&Number.isFinite(a.deltaX)?a:null);o&&("move"===o.phase?(ex(!0),em(o.deltaX)):"end"===o.phase?eW(o.deltaX):eI())};return window.addEventListener("message",e),()=>window.removeEventListener("message",e)},[N,eW,eI]);let eF=(0,o.useCallback)(function(){var e;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"smooth",n=ey.current;if(!n||!N)return;let r=n.querySelector('[data-terminal-id="'.concat(N,'"]'));if(!r)return;if(r===n.querySelector("[data-terminal-id]")){(0,y.i)(n);return}let i=n.querySelector(".terminal-connection"),a=null!==(e=null==i?void 0:i.offsetWidth)&&void 0!==e?e:0,o=r.offsetLeft,l=o+r.offsetWidth,c=n.scrollLeft,s=c+n.clientWidth-a;o<c+8?n.scrollTo({left:Math.max(0,o-8),behavior:t}):l>s-8&&n.scrollTo({left:l-n.clientWidth+a+8,behavior:t})},[N]);return(0,o.useLayoutEffect)(()=>{if(!N)return;let e=M.length>eS.current;eS.current=M.length,eF(e?"auto":"smooth")},[N,M.length,eF]),(0,o.useEffect)(()=>{let e=()=>requestAnimationFrame(()=>eF("auto"));return window.addEventListener("pageshow",e),()=>window.removeEventListener("pageshow",e)},[eF]),(0,r.jsxs)("div",{className:"web-root",style:eO,children:[(0,r.jsx)("style",{dangerouslySetInnerHTML:{__html:L}}),(0,r.jsxs)("div",{className:"terminal-tabs",ref:ey,children:[M.map(e=>(0,r.jsxs)("div",{"data-terminal-id":e.id,draggable:!0,className:"terminal-tab ".concat(e.id===N?"active":""),onDragStart:()=>{ew.current=e.id},onDragOver:e=>e.preventDefault(),onDrop:t=>{t.preventDefault();let n=ew.current;ew.current=null,n&&n!==e.id&&P(t=>{let r=t.findIndex(e=>e.id===n),i=t.findIndex(t=>t.id===e.id);if(r<0||i<0)return t;let a=[...t],[o]=a.splice(r,1);return a.splice(i,0,o),h("term:reorder",{ids:a.map(e=>e.id).filter(e=>e!==C.id)}).catch(()=>{}),a})},onClick:()=>z(e.id),onDoubleClick:()=>{var t;if("webapp"===e.kind)return;let n=null===(t=window.prompt("页签名称",e.title))||void 0===t?void 0:t.trim();n&&h("term:rename",{id:e.id,title:n}).then(()=>P(t=>t.map(t=>t.id===e.id?{...t,title:n}:t))).catch(()=>{})},children:[(0,r.jsx)("span",{children:e.title}),"webapp"!==e.kind&&(0,r.jsx)("button",{tabIndex:-1,onClick:t=>{t.stopPropagation(),eM(e.id)},children:"\xd7"})]},e.id)),(0,r.jsx)("button",{className:"terminal-add",disabled:M.length>=8,onClick:eR,children:"+"}),(0,r.jsxs)("div",{className:"terminal-connection",children:[(0,r.jsx)("span",{style:{width:8,height:8,borderRadius:99,background:f.connected?"var(--ui-success)":"var(--ui-error)"}}),(0,r.jsx)(w,{username:null!==(a=null===(n=u.user)||void 0===n?void 0:n.username)&&void 0!==a?a:"?",themeId:es,onThemeChange:ed,accent:ep.keybar.accent,accentText:ep.keybar.accentText})]})]}),(0,r.jsxs)("main",{className:"workspace ".concat(Z?"show-tree":""," ").concat(q?"has-preview":""),style:R.workspace,children:[(0,r.jsx)("section",{className:"term-col",style:R.termCol,onPointerDownCapture:e=>{"touch"===e.pointerType&&eD(e.target)&&(eh.current={x:e.clientX,y:e.clientY,axis:"pending"})},onPointerMoveCapture:e=>{let t=eh.current;if(!t||"touch"!==e.pointerType)return;let n=e.clientX-t.x,r=e.clientY-t.y;if("pending"===t.axis){if(8>=Math.max(Math.abs(n),Math.abs(r)))return;if(Math.abs(r)>=1.2*Math.abs(n)){eh.current=null;return}t.axis="horizontal",ex(!0)}"horizontal"===t.axis&&(e.preventDefault(),em(n))},onPointerUpCapture:e=>{let t=eh.current;if(!t||"touch"!==e.pointerType)return;let n=e.clientX-t.x;"horizontal"===t.axis&&Math.abs(n)>=64?eW(n):eI()},onPointerCancelCapture:eI,children:(0,r.jsx)("div",{className:"terminal-track",style:{transform:"translate3d(calc(".concat(-(100*eN),"% + ").concat(ev,"px),0,0)"),transition:eg?"none":"transform 260ms cubic-bezier(.22,.8,.32,1)"},children:M.map(e=>{var t;return(0,r.jsx)("div",{className:"terminal-slide",children:"webapp"===e.kind?(0,r.jsx)("iframe",{ref:ek,src:"/app/",title:e.title,onLoad:()=>ej(es),style:{width:"100%",height:"100%",border:"0",background:"var(--ui-term-col-bg, #101014)"}}):(0,r.jsx)(k,{terminalId:e.id,title:e.title,visible:e.id===N,state:f,rpc:h,onEvent:m,onTerminalData:g,onTerminalReset:E,sendTerminalInput:T,keyOrder:el,keybarHidden:ea,onKeyOrderChange:ec,onKeybarHiddenChange:eo,terminalTheme:ep,initialScrollLine:null!==(t=A[e.id])&&void 0!==t?t:null,onScrollLineChange:t=>U(n=>n[e.id]===t?n:{...n,[e.id]:t}),onRegisterFill:t=>B(e.id,t),onCwdChange:t=>t&&I(n=>({...n,[e.id]:t}))})},e.id)})})}),Z&&(0,r.jsx)("div",{className:"drawer-mask",onClick:()=>Y(!1)}),(0,r.jsxs)("aside",{className:"tree-col ".concat(Z?"tree-col-open":""),style:R.treeCol,children:[(0,r.jsxs)("div",{className:"tree-head",style:R.treeHead,children:[(0,r.jsx)("button",{className:"files"===J?"drawer-tab-active":"",onClick:()=>G("files"),children:"文件"}),(0,r.jsx)("button",{className:"history"===J?"drawer-tab-active":"",onClick:()=>G("history"),children:"历史"}),(0,r.jsx)("span",{className:"tree-cwd",style:R.treeCwd,children:null!=eE?eE:""}),(0,r.jsx)("button",{style:{...R.iconBtn,marginLeft:"auto",flexShrink:0},onClick:()=>Y(!1),"aria-label":"close drawer",children:(0,r.jsx)(l.Z,{size:15,"aria-hidden":"true"})})]}),"files"===J?(0,r.jsx)(j,{ready:b>0,followCwd:!0,cwd:eE,rpc:h,onEvent:m,onOpenFile:eL,selectedPath:q,initialRoot:K,initialFollow:Q,revealRequest:et,onTreeStateChange:(e,t)=>{$(e),ee(t)}}):(0,r.jsx)(p,{csrfToken:u.csrfToken,terminalId:N,onFill:H}),(0,r.jsxs)("div",{style:R.treeFoot,children:[(0,r.jsx)("span",{style:R.treeFootDot}),(0,r.jsx)("span",{children:"实时同步"})]})]}),q&&(0,r.jsx)("section",{className:"preview-col",style:R.previewCol,children:(0,r.jsx)(S,{path:q,rpc:h,onClose:()=>V(null)})})]}),!Z&&(0,r.jsx)("button",{className:"fab-files",style:{...R.fabFiles,left:"".concat(100*er.xRatio,"%"),top:"".concat(100*er.yRatio,"%"),right:"auto",bottom:"auto",transform:"translate(-50%,-50%)"},onPointerDown:e=>{eb.current={moved:!1,startX:e.clientX,startY:e.clientY},e.currentTarget.setPointerCapture(e.pointerId)},onPointerMove:e=>{let t=eb.current;if(!t||!t.moved&&4>Math.hypot(e.clientX-t.startX,e.clientY-t.startY))return;t.moved=!0;let n=window.visualViewport;ei({xRatio:Math.max(.05,Math.min(.95,e.clientX/((null==n?void 0:n.width)||innerWidth))),yRatio:Math.max(.08,Math.min(.92,(e.clientY-((null==n?void 0:n.offsetTop)||0))/((null==n?void 0:n.height)||innerHeight))),anchor:e.clientX<((null==n?void 0:n.width)||innerWidth)/2?"left":"right"})},onPointerUp:e=>{var t;e.currentTarget.releasePointerCapture(e.pointerId),(null===(t=eb.current)||void 0===t?void 0:t.moved)||Y(!0),eb.current=null},"aria-label":"files",children:(0,r.jsx)(c,{size:20,"aria-hidden":"true"})})]})}let L='\n html, body { width:100%; height:100%; margin:0; overflow:hidden; background:var(--ui-root-bg, #0b0b10); overscroll-behavior:none; color:var(--ui-text, #e8e8ee); }\n * { -webkit-tap-highlight-color: transparent; }\n .terminal-tabs { display:flex; align-items:end; gap:4px; min-height:38px; padding:0 8px; overflow-x:auto; overflow-y:hidden; touch-action:pan-x; overscroll-behavior-x:contain; -webkit-overflow-scrolling:touch; scroll-behavior:smooth; background:var(--ui-tabbar-bg, #12141b); border-bottom:0; scrollbar-width:none; flex-shrink:0; }\n .terminal-tab { display:flex; align-items:center; gap:7px; min-width:74px; max-width:130px; height:32px; padding:0 7px 0 10px; border-radius:7px 7px 0 0; background:var(--ui-tab-bg, #1b1e28); color:var(--ui-tab-text, #8f93a4); font-size:11px; cursor:pointer; box-sizing:border-box; transition:color .2s ease,box-shadow .2s ease; }\n .terminal-tab.active { color:var(--ui-tab-active-text, #edf0f7); background:var(--ui-active-content-bg, var(--ui-tab-active-bg, #262b38)); box-shadow:inset 0 2px var(--ui-tab-accent, #7aa2f7); }\n .terminal-tab span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; flex:1; }\n .terminal-tab button { width:18px; height:18px; border:0; border-radius:4px; background:transparent; color:var(--ui-tab-text, #707586); padding:0; }\n .terminal-add { min-width:30px; height:28px; margin-bottom:2px; border:1px solid var(--ui-tabbar-border, #303442); border-radius:6px; background:var(--ui-tab-bg, #1b1e28); color:var(--ui-tab-text, #9da2b2); }\n .terminal-connection { position:sticky; right:-8px; margin-left:auto; align-self:stretch; display:flex; align-items:center; gap:7px; padding:0 9px; background:var(--ui-connection-bg, #12141b); color:var(--ui-connection-text, #777b8c); font-size:10.5px; flex-shrink:0; z-index:5; box-shadow:-8px 0 12px color-mix(in srgb, var(--ui-connection-bg, #12141b) 90%, transparent); }\n .theme-picker { position:relative; flex-shrink:0; z-index:6; }\n .theme-avatar { position:relative; display:flex; align-items:center; justify-content:center; width:22px; height:22px; padding:0; border-radius:99px; font-size:10px; font-weight:700; cursor:pointer; flex-shrink:0; touch-action:manipulation; -webkit-tap-highlight-color:transparent; transition:transform .12s ease, filter .12s ease; }\n /* Hit-area padding: the 22px circle is far below the ~44px minimum touch\n target, so an invisible ::after extends the tap region. Keep the visual\n size unchanged — only the hit-test area grows. */\n .theme-avatar::after { content:""; position:absolute; inset:-6px; border-radius:99px; }\n .theme-avatar:active { transform:scale(.9); filter:brightness(1.15); }\n .theme-popover-item { display:flex; align-items:center; gap:8px; padding:7px 8px; border:none; border-radius:8px; cursor:pointer; touch-action:manipulation; -webkit-tap-highlight-color:transparent; }\n .theme-popover-item:active { background:color-mix(in srgb, var(--ui-tab-accent, #7aa2f7) 22%, transparent); }\n /* Touch devices: grow the avatar hit area to ~44px and the popover rows to\n ~40px tall. The tab bar must grow in step — it clips overflow-y, so an\n expanded hit area taller than the bar would get cut off. */\n @media (pointer: coarse) {\n .terminal-tabs { min-height:44px; }\n .theme-avatar::after { inset:-11px; }\n .theme-popover-item { padding-top:11px; padding-bottom:11px; }\n }\n @media (prefers-reduced-motion: reduce) { .theme-avatar { transition:none; } }\n .terminal-track { display:flex; width:100%; height:100%; will-change:transform; }\n .terminal-slide { flex:0 0 100%; width:100%; height:100%; min-width:0; }\n .terminal-screen { display:flex; flex-direction:column; min-height:0; overflow:hidden; }\n .terminal-screen .xterm { flex:1; height:100%; background:var(--ui-terminal-bg, #101014); }\n .terminal-screen .xterm .xterm-viewport { background-color:var(--ui-terminal-bg, #101014); }\n .terminal-screen .xterm-scrollable-element { touch-action:pan-y; -webkit-overflow-scrolling:touch; }\n @media (prefers-reduced-motion: reduce) { .terminal-track,.terminal-tab { transition:none !important; } }\n .web-root {\n position: fixed;\n top: var(--vv-top, 0px);\n left: var(--vv-left, 0px);\n width: var(--vv-width, 100vw);\n height: var(--vv-height, 100dvh) !important;\n }\n .tree-scroll {\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n overflow-x: hidden;\n overscroll-behavior: contain;\n touch-action: pan-y;\n -webkit-overflow-scrolling: touch;\n padding: 6px;\n }\n .tree-location {\n position: sticky;\n top: -6px;\n z-index: 3;\n display: flex;\n align-items: center;\n gap: 5px;\n margin: -1px -1px 0;\n padding: 7px 7px 5px;\n background: color-mix(in srgb, var(--ui-tree-bg, #121218) 98%, transparent);\n }\n .tree-location input {\n flex: 1;\n min-width: 0;\n height: 28px;\n border: 1px solid var(--ui-panel-input-border, #30303b);\n border-radius: 6px;\n outline: none;\n padding: 0 8px;\n background: var(--ui-panel-input-bg, #0f0f15);\n color: var(--ui-panel-input-text, #d8d8df);\n font-family: "SF Mono", Menlo, monospace;\n font-size: 10.5px;\n }\n .tree-location input:focus { border-color: var(--ui-tab-accent, #536b9e); }\n .tree-location button {\n width: 28px;\n height: 28px;\n flex-shrink: 0;\n border: 1px solid var(--ui-panel-input-border, #30303a);\n border-radius: 6px;\n background: var(--ui-tab-bg, #202029);\n color: var(--ui-tab-text, #aaaab8);\n font-size: 12px;\n }\n .tree-location button[data-active="1"] {\n border-color: var(--ui-success, #4f6f58);\n color: var(--ui-success, #9ece6a);\n background: color-mix(in srgb, var(--ui-success, #9ece6a) 12%, var(--ui-tree-bg, #18221b));\n }\n .tree-head button { height:26px; padding:0 10px; border:0; border-radius:6px 6px 0 0; background:transparent; color:var(--ui-drawer-tab-text, #74798a); font-size:11px; }\n .tree-head button.drawer-tab-active { color:var(--ui-drawer-tab-active, #e4e7ef); box-shadow:inset 0 -2px var(--ui-tab-accent, #7aa2f7); }\n .history-panel { flex:1; min-height:0; overflow:auto; padding:7px; }\n .history-search { position:sticky; top:0; display:flex; gap:5px; padding:5px; background:var(--ui-tree-bg, #121218); z-index:2; }\n .history-search input { flex:1; min-width:0; height:28px; border:1px solid var(--ui-panel-input-border, #30303a); border-radius:6px; padding:0 8px; background:var(--ui-panel-input-bg, #0f0f15); color:var(--ui-panel-input-text, #ddd); font-size:11px; }\n .history-search button,.history-item button { border:1px solid var(--ui-panel-input-border, #30303a); border-radius:5px; background:var(--ui-tab-bg, #202029); color:var(--ui-connection-text, #999dab); font-size:10px; }\n .history-item { padding:9px 7px; border-bottom:1px solid var(--ui-tabbar-border, #242731); cursor:pointer; border-radius:6px; }\n .history-item:hover { background:color-mix(in srgb, var(--ui-tab-active-bg, #181b24) 80%, transparent); }\n .history-item:active { background:var(--ui-tab-active-bg, #1f2430); }\n .history-item-disabled { cursor:not-allowed; opacity:.55; }\n .history-item-disabled:hover { background:transparent; }\n .history-item:focus-visible { outline:1px solid var(--ui-tab-accent, #536b9e); outline-offset:-1px; }\n .history-item code { display:block; color:var(--ui-history-item-text, #d3d6df); font-size:11px; overflow-wrap:anywhere; }\n .history-item small { display:block; margin:4px 0 7px; color:var(--ui-history-meta, #656a79); font-size:9.5px; }\n .history-item-actions { display:flex; gap:5px; }\n .history-empty { padding:18px; color:#5d6270; font-size:11px; text-align:center; }\n .keybar-scroll { scrollbar-width:none; }\n .keybar-scroll::-webkit-scrollbar { display:none; }\n .tree-filter {\n position: sticky;\n top: 34px;\n z-index: 2;\n display: flex;\n align-items: center;\n gap: 6px;\n margin: -1px -1px 7px;\n padding: 7px 8px;\n border-bottom: 1px solid var(--ui-tabbar-border, #25252e);\n background: color-mix(in srgb, var(--ui-tree-bg, #121218) 97%, transparent);\n color: var(--ui-history-meta, #666678);\n backdrop-filter: blur(8px);\n }\n .tree-filter input {\n flex: 1;\n min-width: 0;\n height: 27px;\n border: 1px solid var(--ui-panel-input-border, #30303a);\n border-radius: 6px;\n outline: none;\n padding: 0 8px;\n background: var(--ui-panel-input-bg, #0f0f15);\n color: var(--ui-panel-input-text, #d8d8df);\n font-size: 11px;\n }\n .tree-filter input:focus { border-color: var(--ui-tab-accent, #536b9e); }\n .tree-filter button {\n width: 25px;\n height: 25px;\n padding: 0;\n border: 0;\n border-radius: 5px;\n background: var(--ui-tab-bg, #24242d);\n color: var(--ui-connection-text, #9999a6);\n font-size: 10px;\n }\n .tree-row {\n display: flex;\n align-items: center;\n gap: 6px;\n min-height: 31px;\n padding-right: 7px;\n border-radius: 6px;\n font-size: 12px;\n white-space: nowrap;\n cursor: pointer;\n }\n .tree-disclosure {\n width: 13px;\n min-width: 13px;\n height: 16px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: var(--ui-history-meta, #777785);\n }\n .tree-entry-icon {\n width: 17px;\n min-width: 17px;\n height: 17px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n .tree-folder-icon { color: var(--ui-tab-accent, #7aa2f7); }\n .tree-entry-name { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }\n .tree-spin { animation:tree-spin .8s linear infinite; }\n @keyframes tree-spin { to { transform:rotate(360deg); } }\n @media (prefers-reduced-motion: reduce) { .tree-spin { animation:none; } }\n .tree-row[data-selected="1"] { background: color-mix(in srgb, var(--ui-tab-accent, #26304a) 24%, transparent); }\n .tree-size { margin-left: auto; color: var(--ui-history-meta, #555); font-size: 10px; flex-shrink: 0; }\n\n /* phone-first: terminal is THE screen */\n .workspace { display: grid !important; grid-template-columns: 1fr; }\n .tree-col {\n display: flex;\n position: fixed;\n top: var(--vv-top, 0px);\n height: var(--vv-height, 100dvh);\n right: calc(100vw - var(--vv-left, 0px) - var(--vv-width, 100vw));\n width: min(82vw, 320px); z-index: 40;\n transform: translateX(102%); transition: transform .22s ease;\n box-shadow: -12px 0 32px rgba(0,0,0,.5);\n }\n .tree-col-open { transform: translateX(0); }\n .drawer-mask { position:fixed; top:var(--vv-top, 0px); left:var(--vv-left, 0px); width:var(--vv-width, 100vw); height:var(--vv-height, 100dvh); background:rgba(0,0,0,.45); z-index:39; }\n .preview-col {\n position: fixed;\n top: var(--vv-top, 0px);\n left: var(--vv-left, 0px);\n width: var(--vv-width, 100vw);\n height: var(--vv-height, 100dvh);\n z-index: 50;\n background: var(--ui-term-col-bg, #101014);\n }\n .fab-files { display: grid; place-items: center; }\n .cwd-hint { max-width: 40vw; }\n\n @media (min-width: 900px) {\n .workspace.show-tree.has-preview { grid-template-columns: 46% 20% 34%; }\n .workspace.show-tree:not(.has-preview) { grid-template-columns: 80% 20%; }\n .workspace.has-preview:not(.show-tree) { grid-template-columns: 66% 34%; }\n /* desktop: the tree becomes a right column only while the drawer is open */\n .tree-col {\n position: static; top: auto; height: auto; width: auto; transform: none;\n box-shadow: none; border-left: 1px solid var(--ui-tree-border, #1e1e26);\n }\n .workspace:not(.show-tree) .tree-col { display: none; }\n .preview-col { position: relative; inset: auto; width: auto; height: auto; border-left: 1px solid var(--ui-tree-border, #1e1e26); }\n .drawer-mask { display: none; }\n }\n',R={root:{height:"100dvh",display:"flex",flexDirection:"column",fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", sans-serif',overflow:"hidden"},iconBtn:{minWidth:28,height:28,borderRadius:7,border:"1px solid var(--ui-tabbar-border, #303442)",background:"var(--ui-tab-bg, #202029)",color:"var(--ui-tab-text, #aaaab8)",fontSize:13},workspace:{flex:1,minHeight:0,display:"grid",position:"relative"},treeCol:{background:"var(--ui-tree-bg, #121218)",minHeight:0,flexDirection:"column"},treeHead:{display:"flex",alignItems:"center",gap:8,padding:"10px 12px 4px",fontSize:11,textTransform:"uppercase",letterSpacing:1,color:"#778",flexShrink:0},treeCwd:{fontSize:10,color:"#556",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:150,textTransform:"none",letterSpacing:0},treeFoot:{display:"flex",alignItems:"center",gap:7,minHeight:31,padding:"6px 11px calc(env(safe-area-inset-bottom) + 6px)",borderTop:"1px solid var(--ui-tabbar-border, #282832)",boxShadow:"0 -5px 16px rgba(0,0,0,.22)",background:"var(--ui-tab-bg, #15151c)",color:"var(--ui-connection-text, #777789)",fontSize:10.5,flexShrink:0},treeFootDot:{width:6,height:6,borderRadius:99,background:"var(--ui-success, #9ece6a)",boxShadow:"0 0 0 2px color-mix(in srgb, var(--ui-success, #9ece6a) 12%, transparent)",flexShrink:0},termCol:{minWidth:0,minHeight:0,display:"flex",flexDirection:"column",background:"var(--ui-term-col-bg, #101014)",gridColumn:1,overflow:"hidden"},previewCol:{minWidth:0,minHeight:0},fabFiles:{position:"absolute",right:14,bottom:"calc(env(safe-area-inset-bottom) + 64px)",width:44,height:44,borderRadius:99,border:"1px solid var(--ui-fab-border, #2c2c38)",background:"var(--ui-fab-bg, #1b1b26)",color:"var(--ui-text, #dde)",fontSize:18,zIndex:45,boxShadow:"0 4px 16px rgba(0,0,0,.45)"}}}},function(e){e.O(0,[37,183,744],function(){return e(e.s=6736)}),_N_E=e.O()}]);
@@ -1 +1 @@
1
- !function(){"use strict";var e,t,n,r,o,u,i,f,a,c,l,s,d={},p={};function h(e){var t=p[e];if(void 0!==t)return t.exports;var n=p[e]={exports:{}},r=!0;try{d[e](n,n.exports,h),r=!1}finally{r&&delete p[e]}return n.exports}h.m=d,e=[],h.O=function(t,n,r,o){if(n){o=o||0;for(var u=e.length;u>0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[n,r,o];return}for(var i=1/0,u=0;u<e.length;u++){for(var n=e[u][0],r=e[u][1],o=e[u][2],f=!0,a=0;a<n.length;a++)i>=o&&Object.keys(h.O).every(function(e){return h.O[e](n[a])})?n.splice(a--,1):(f=!1,o<i&&(i=o));if(f){e.splice(u--,1);var c=r();void 0!==c&&(t=c)}}return t},h.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return h.d(t,{a:t}),t},n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},h.t=function(e,r){if(1&r&&(e=this(e)),8&r||"object"==typeof e&&e&&(4&r&&e.__esModule||16&r&&"function"==typeof e.then))return e;var o=Object.create(null);h.r(o);var u={};t=t||[null,n({}),n([]),n(n)];for(var i=2&r&&e;"object"==typeof i&&!~t.indexOf(i);i=n(i))Object.getOwnPropertyNames(i).forEach(function(t){u[t]=function(){return e[t]}});return u.default=function(){return e},h.d(o,u),o},h.d=function(e,t){for(var n in t)h.o(t,n)&&!h.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},h.f={},h.e=function(e){return Promise.all(Object.keys(h.f).reduce(function(t,n){return h.f[n](e,t),t},[]))},h.u=function(e){return"static/chunks/"+(658===e?"f3dd23f1":e)+"."+({118:"2a6035b13645ef2d",604:"749f141c00996f2f",658:"b423f4328b6ce988",945:"029658916456ec41",982:"9e87a5cc0e6b13cf"})[e]+".js"},h.miniCssF=function(e){return"static/css/ac3c182a4b5bc5f1.css"},h.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),h.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},o="_N_E:",h.l=function(e,t,n,u){if(r[e]){r[e].push(t);return}if(void 0!==n)for(var i,f,a=document.getElementsByTagName("script"),c=0;c<a.length;c++){var l=a[c];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")==o+n){i=l;break}}i||(f=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,h.nc&&i.setAttribute("nonce",h.nc),i.setAttribute("data-webpack",o+n),i.src=h.tu(e)),r[e]=[t];var s=function(t,n){i.onerror=i.onload=null,clearTimeout(d);var o=r[e];if(delete r[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach(function(e){return e(n)}),t)return t(n)},d=setTimeout(s.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=s.bind(null,i.onerror),i.onload=s.bind(null,i.onload),f&&document.head.appendChild(i)},h.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},h.tt=function(){return void 0===u&&(u={createScriptURL:function(e){return e}},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(u=trustedTypes.createPolicy("nextjs#bundler",u))),u},h.tu=function(e){return h.tt().createScriptURL(e)},h.p="/_next/",i=function(e,t,n,r){var o=document.createElement("link");return o.rel="stylesheet",o.type="text/css",o.onerror=o.onload=function(u){if(o.onerror=o.onload=null,"load"===u.type)n();else{var i=u&&("load"===u.type?"missing":u.type),f=u&&u.target&&u.target.href||t,a=Error("Loading CSS chunk "+e+" failed.\n("+f+")");a.code="CSS_CHUNK_LOAD_FAILED",a.type=i,a.request=f,o.parentNode.removeChild(o),r(a)}},o.href=t,document.head.appendChild(o),o},f=function(e,t){for(var n=document.getElementsByTagName("link"),r=0;r<n.length;r++){var o=n[r],u=o.getAttribute("data-href")||o.getAttribute("href");if("stylesheet"===o.rel&&(u===e||u===t))return o}for(var i=document.getElementsByTagName("style"),r=0;r<i.length;r++){var o=i[r],u=o.getAttribute("data-href");if(u===e||u===t)return o}},a={272:0},h.f.miniCss=function(e,t){a[e]?t.push(a[e]):0!==a[e]&&({118:1})[e]&&t.push(a[e]=new Promise(function(t,n){var r=h.miniCssF(e),o=h.p+r;if(f(r,o))return t();i(e,o,t,n)}).then(function(){a[e]=0},function(t){throw delete a[e],t}))},c={272:0},h.f.j=function(e,t){var n=h.o(c,e)?c[e]:void 0;if(0!==n){if(n)t.push(n[2]);else if(/^(118|272)$/.test(e))c[e]=0;else{var r=new Promise(function(t,r){n=c[e]=[t,r]});t.push(n[2]=r);var o=h.p+h.u(e),u=Error();h.l(o,function(t){if(h.o(c,e)&&(0!==(n=c[e])&&(c[e]=void 0),n)){var r=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;u.message="Loading chunk "+e+" failed.\n("+r+": "+o+")",u.name="ChunkLoadError",u.type=r,u.request=o,n[1](u)}},"chunk-"+e,e)}}},h.O.j=function(e){return 0===c[e]},l=function(e,t){var n,r,o=t[0],u=t[1],i=t[2],f=0;if(o.some(function(e){return 0!==c[e]})){for(n in u)h.o(u,n)&&(h.m[n]=u[n]);if(i)var a=i(h)}for(e&&e(t);f<o.length;f++)r=o[f],h.o(c,r)&&c[r]&&c[r][0](),c[r]=0;return h.O(a)},(s=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).forEach(l.bind(null,0)),s.push=l.bind(null,s.push.bind(s))}();
1
+ !function(){"use strict";var e,t,n,r,o,u,i,f,a,c,l,s,d={},p={};function h(e){var t=p[e];if(void 0!==t)return t.exports;var n=p[e]={exports:{}},r=!0;try{d[e](n,n.exports,h),r=!1}finally{r&&delete p[e]}return n.exports}h.m=d,e=[],h.O=function(t,n,r,o){if(n){o=o||0;for(var u=e.length;u>0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[n,r,o];return}for(var i=1/0,u=0;u<e.length;u++){for(var n=e[u][0],r=e[u][1],o=e[u][2],f=!0,a=0;a<n.length;a++)i>=o&&Object.keys(h.O).every(function(e){return h.O[e](n[a])})?n.splice(a--,1):(f=!1,o<i&&(i=o));if(f){e.splice(u--,1);var c=r();void 0!==c&&(t=c)}}return t},h.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return h.d(t,{a:t}),t},n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},h.t=function(e,r){if(1&r&&(e=this(e)),8&r||"object"==typeof e&&e&&(4&r&&e.__esModule||16&r&&"function"==typeof e.then))return e;var o=Object.create(null);h.r(o);var u={};t=t||[null,n({}),n([]),n(n)];for(var i=2&r&&e;"object"==typeof i&&!~t.indexOf(i);i=n(i))Object.getOwnPropertyNames(i).forEach(function(t){u[t]=function(){return e[t]}});return u.default=function(){return e},h.d(o,u),o},h.d=function(e,t){for(var n in t)h.o(t,n)&&!h.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},h.f={},h.e=function(e){return Promise.all(Object.keys(h.f).reduce(function(t,n){return h.f[n](e,t),t},[]))},h.u=function(e){return"static/chunks/"+(658===e?"f3dd23f1":e)+"."+({118:"2a6035b13645ef2d",404:"829f96e7395dbd79",658:"b423f4328b6ce988",945:"029658916456ec41",982:"9e87a5cc0e6b13cf"})[e]+".js"},h.miniCssF=function(e){return"static/css/ac3c182a4b5bc5f1.css"},h.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),h.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},o="_N_E:",h.l=function(e,t,n,u){if(r[e]){r[e].push(t);return}if(void 0!==n)for(var i,f,a=document.getElementsByTagName("script"),c=0;c<a.length;c++){var l=a[c];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")==o+n){i=l;break}}i||(f=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,h.nc&&i.setAttribute("nonce",h.nc),i.setAttribute("data-webpack",o+n),i.src=h.tu(e)),r[e]=[t];var s=function(t,n){i.onerror=i.onload=null,clearTimeout(d);var o=r[e];if(delete r[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach(function(e){return e(n)}),t)return t(n)},d=setTimeout(s.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=s.bind(null,i.onerror),i.onload=s.bind(null,i.onload),f&&document.head.appendChild(i)},h.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},h.tt=function(){return void 0===u&&(u={createScriptURL:function(e){return e}},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(u=trustedTypes.createPolicy("nextjs#bundler",u))),u},h.tu=function(e){return h.tt().createScriptURL(e)},h.p="/_next/",i=function(e,t,n,r){var o=document.createElement("link");return o.rel="stylesheet",o.type="text/css",o.onerror=o.onload=function(u){if(o.onerror=o.onload=null,"load"===u.type)n();else{var i=u&&("load"===u.type?"missing":u.type),f=u&&u.target&&u.target.href||t,a=Error("Loading CSS chunk "+e+" failed.\n("+f+")");a.code="CSS_CHUNK_LOAD_FAILED",a.type=i,a.request=f,o.parentNode.removeChild(o),r(a)}},o.href=t,document.head.appendChild(o),o},f=function(e,t){for(var n=document.getElementsByTagName("link"),r=0;r<n.length;r++){var o=n[r],u=o.getAttribute("data-href")||o.getAttribute("href");if("stylesheet"===o.rel&&(u===e||u===t))return o}for(var i=document.getElementsByTagName("style"),r=0;r<i.length;r++){var o=i[r],u=o.getAttribute("data-href");if(u===e||u===t)return o}},a={272:0},h.f.miniCss=function(e,t){a[e]?t.push(a[e]):0!==a[e]&&({118:1})[e]&&t.push(a[e]=new Promise(function(t,n){var r=h.miniCssF(e),o=h.p+r;if(f(r,o))return t();i(e,o,t,n)}).then(function(){a[e]=0},function(t){throw delete a[e],t}))},c={272:0},h.f.j=function(e,t){var n=h.o(c,e)?c[e]:void 0;if(0!==n){if(n)t.push(n[2]);else if(/^(118|272)$/.test(e))c[e]=0;else{var r=new Promise(function(t,r){n=c[e]=[t,r]});t.push(n[2]=r);var o=h.p+h.u(e),u=Error();h.l(o,function(t){if(h.o(c,e)&&(0!==(n=c[e])&&(c[e]=void 0),n)){var r=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;u.message="Loading chunk "+e+" failed.\n("+r+": "+o+")",u.name="ChunkLoadError",u.type=r,u.request=o,n[1](u)}},"chunk-"+e,e)}}},h.O.j=function(e){return 0===c[e]},l=function(e,t){var n,r,o=t[0],u=t[1],i=t[2],f=0;if(o.some(function(e){return 0!==c[e]})){for(n in u)h.o(u,n)&&(h.m[n]=u[n]);if(i)var a=i(h)}for(e&&e(t);f<o.length;f++)r=o[f],h.o(c,r)&&c[r]&&c[r][0](),c[r]=0;return h.O(a)},(s=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).forEach(l.bind(null,0)),s.push=l.bind(null,s.push.bind(s))}();
@@ -0,0 +1,9 @@
1
+ export declare const WEBAPP_ARTIFACT_OPEN_TYPE = "agent-webapp:artifact-open:v1";
2
+ export interface WebArtifactOpenRequest {
3
+ type: typeof WEBAPP_ARTIFACT_OPEN_TYPE;
4
+ requestId: number;
5
+ path: string;
6
+ }
7
+ export declare function parseWebArtifactOpenRequest(data: unknown): WebArtifactOpenRequest | null;
8
+ export declare function readWebArtifactOpenRequest(event: Pick<MessageEvent, "data" | "origin" | "source">, expectedOrigin: string, expectedSource: MessageEventSource | null): WebArtifactOpenRequest | null;
9
+ //# sourceMappingURL=WebArtifactBridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebArtifactBridge.d.ts","sourceRoot":"","sources":["../../../src/domain/web-console/WebArtifactBridge.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,yBAAyB,kCAAkC,CAAC;AAEzE,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,OAAO,yBAAyB,CAAC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,OAAO,GAAG,sBAAsB,GAAG,IAAI,CAaxF;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC,EACvD,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,kBAAkB,GAAG,IAAI,GACxC,sBAAsB,GAAG,IAAI,CAG/B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=WebArtifactBridge.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebArtifactBridge.test.d.ts","sourceRoot":"","sources":["../../../src/domain/web-console/WebArtifactBridge.test.ts"],"names":[],"mappings":""}
@@ -1,3 +1,4 @@
1
1
  export * from "./entities.js";
2
+ export * from "./WebArtifactBridge.js";
2
3
  export * from "./WebProjectBridge.js";
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/web-console/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/web-console/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC"}
@@ -845,6 +845,26 @@ function validateCredentials(username, password) {
845
845
  if (password.length < 10)
846
846
  throw new WebAuthError("INVALID_INPUT", "密码至少 10 位", 400);
847
847
  }
848
+ // src/domain/web-console/WebArtifactBridge.ts
849
+ var WEBAPP_ARTIFACT_OPEN_TYPE = "agent-webapp:artifact-open:v1";
850
+ function parseWebArtifactOpenRequest(data) {
851
+ if (!data || typeof data !== "object")
852
+ return null;
853
+ const candidate = data;
854
+ if (candidate.type !== WEBAPP_ARTIFACT_OPEN_TYPE)
855
+ return null;
856
+ if (!Number.isSafeInteger(candidate.requestId) || Number(candidate.requestId) < 1)
857
+ return null;
858
+ if (typeof candidate.path !== "string" || !candidate.path.startsWith("/") || candidate.path.includes("\x00") || candidate.path.includes(`
859
+ `) || candidate.path.includes("\r"))
860
+ return null;
861
+ return candidate;
862
+ }
863
+ function readWebArtifactOpenRequest(event, expectedOrigin, expectedSource) {
864
+ if (event.origin !== expectedOrigin || event.source !== expectedSource)
865
+ return null;
866
+ return parseWebArtifactOpenRequest(event.data);
867
+ }
848
868
  // src/domain/web-console/WebProjectBridge.ts
849
869
  var WEBAPP_PROJECT_REQUEST_TYPE = "agent-webapp:project-request:v1";
850
870
  var WEBAPP_PROJECT_RESPONSE_TYPE = "agent-web-shell:project-response:v1";
@@ -11742,8 +11762,10 @@ export {
11742
11762
  registerBuiltinTools,
11743
11763
  reduceRuntimeProgress,
11744
11764
  readWebProjectRequest,
11765
+ readWebArtifactOpenRequest,
11745
11766
  parseWebProjectResponse,
11746
11767
  parseWebProjectRequest,
11768
+ parseWebArtifactOpenRequest,
11747
11769
  parseIntervalMs,
11748
11770
  paginateSessionHistory,
11749
11771
  normalizeUsername,
@@ -11768,6 +11790,7 @@ export {
11768
11790
  WEB_PROJECT_METHODS,
11769
11791
  WEBAPP_PROJECT_RESPONSE_TYPE,
11770
11792
  WEBAPP_PROJECT_REQUEST_TYPE,
11793
+ WEBAPP_ARTIFACT_OPEN_TYPE,
11771
11794
  ToolRegistry,
11772
11795
  ToolPermissionGate,
11773
11796
  TodoUpdateTool,
@@ -11834,4 +11857,4 @@ export {
11834
11857
  AgentBuilder
11835
11858
  };
11836
11859
 
11837
- //# debugId=373EC3EBC2779D8E64756E2164756E21
11860
+ //# debugId=C9A665A8653F1E3764756E2164756E21