agentroam-runtime-darwin-arm64 0.2.0-preview.11 → 0.2.0-preview.13

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 (122) hide show
  1. package/manifest.json +1 -1
  2. package/package.json +1 -1
  3. package/runtime/.next/BUILD_ID +1 -1
  4. package/runtime/.next/app-build-manifest.json +7 -7
  5. package/runtime/.next/app-path-routes-manifest.json +1 -1
  6. package/runtime/.next/build-manifest.json +8 -8
  7. package/runtime/.next/prerender-manifest.json +1 -1
  8. package/runtime/.next/react-loadable-manifest.json +3 -3
  9. package/runtime/.next/required-server-files.json +1 -1
  10. package/runtime/.next/routes-manifest.json +1 -1
  11. package/runtime/.next/server/app/_not-found/page.js +1 -1
  12. package/runtime/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  13. package/runtime/.next/server/app/_not-found.html +1 -1
  14. package/runtime/.next/server/app/_not-found.rsc +1 -1
  15. package/runtime/.next/server/app/api/agent/abort/route.js +1 -1
  16. package/runtime/.next/server/app/api/agent/answer/route.js +1 -1
  17. package/runtime/.next/server/app/api/agent/model/route.js +1 -1
  18. package/runtime/.next/server/app/api/agent/models/route.js +1 -0
  19. package/runtime/.next/server/app/api/agent/models/route.js.nft.json +1 -0
  20. package/runtime/.next/server/app/api/agent/run/route.js +1 -1
  21. package/runtime/.next/server/app/api/agent/runtime-health/route.js +1 -1
  22. package/runtime/.next/server/app/api/agent/steer/route.js +1 -1
  23. package/runtime/.next/server/app/api/agent/stream/route.js +2 -2
  24. package/runtime/.next/server/app/api/agent-workspaces/[workspaceId]/sessions/route.js +1 -1
  25. package/runtime/.next/server/app/api/agent-workspaces/route.js +1 -1
  26. package/runtime/.next/server/app/api/auth/verify/route.js +1 -1
  27. package/runtime/.next/server/app/api/mcp/connect/route.js +1 -1
  28. package/runtime/.next/server/app/api/mcp/disconnect/route.js +1 -1
  29. package/runtime/.next/server/app/api/mcp/servers/route.js +1 -1
  30. package/runtime/.next/server/app/api/memory/[key]/route.js +1 -1
  31. package/runtime/.next/server/app/api/memory/route.js +1 -1
  32. package/runtime/.next/server/app/api/plugins/load/route.js +1 -1
  33. package/runtime/.next/server/app/api/projects/[id]/route.js +1 -1
  34. package/runtime/.next/server/app/api/projects/check/route.js +1 -1
  35. package/runtime/.next/server/app/api/projects/directories/route.js +1 -1
  36. package/runtime/.next/server/app/api/projects/roots/route.js +1 -1
  37. package/runtime/.next/server/app/api/projects/route.js +1 -1
  38. package/runtime/.next/server/app/api/remote-tools/register/route.js +1 -1
  39. package/runtime/.next/server/app/api/sessions/[id]/changes/route.js +2 -2
  40. package/runtime/.next/server/app/api/sessions/[id]/fork/route.js +1 -1
  41. package/runtime/.next/server/app/api/sessions/[id]/goals/route.js +1 -1
  42. package/runtime/.next/server/app/api/sessions/[id]/handoff/route.js +1 -1
  43. package/runtime/.next/server/app/api/sessions/[id]/query-index/route.js +1 -0
  44. package/runtime/.next/server/app/api/sessions/[id]/query-index/route.js.nft.json +1 -0
  45. package/runtime/.next/server/app/api/sessions/[id]/route.js +1 -1
  46. package/runtime/.next/server/app/api/sessions/route.js +1 -1
  47. package/runtime/.next/server/app/api/skills/route.js +1 -1
  48. package/runtime/.next/server/app/api/tools/route.js +1 -1
  49. package/runtime/.next/server/app/api/web-auth/login/route.js +1 -1
  50. package/runtime/.next/server/app/api/web-auth/logout/route.js +1 -1
  51. package/runtime/.next/server/app/api/web-auth/revoke-all/route.js +1 -1
  52. package/runtime/.next/server/app/api/web-auth/setup/route.js +1 -1
  53. package/runtime/.next/server/app/api/web-auth/status/route.js +1 -1
  54. package/runtime/.next/server/app/api/web-console/bootstrap/route.js +1 -1
  55. package/runtime/.next/server/app/api/web-console/device-state/route.js +1 -1
  56. package/runtime/.next/server/app/api/web-console/history/route.js +1 -1
  57. package/runtime/.next/server/app/api/web-console/preferences/route.js +1 -1
  58. package/runtime/.next/server/app/web/page.js +10 -6
  59. package/runtime/.next/server/app/web/page_client-reference-manifest.js +1 -1
  60. package/runtime/.next/server/app/web.html +1 -1
  61. package/runtime/.next/server/app/web.rsc +2 -2
  62. package/runtime/.next/server/app-paths-manifest.json +20 -18
  63. package/runtime/.next/server/chunks/1322.js +40 -39
  64. package/runtime/.next/server/chunks/2083.js +7 -7
  65. package/runtime/.next/server/chunks/5303.js +2 -2
  66. package/runtime/.next/server/middleware-build-manifest.js +1 -1
  67. package/runtime/.next/server/middleware-react-loadable-manifest.js +1 -1
  68. package/runtime/.next/server/pages/404.html +1 -1
  69. package/runtime/.next/server/pages/500.html +1 -1
  70. package/runtime/.next/server/server-reference-manifest.json +1 -1
  71. package/runtime/.next/static/chunks/137.261fab9d606d75d3.js +1 -0
  72. package/runtime/.next/static/chunks/366.2332f424b0ce112a.js +1 -0
  73. package/runtime/.next/static/chunks/app/web/page-8e4da33d77868123.js +1 -0
  74. package/runtime/.next/static/chunks/{main-46a4068052b74acf.js → main-4b71c9eb0b4f4151.js} +1 -1
  75. package/runtime/.next/static/chunks/main-app-3596fd7d2841e9a3.js +1 -0
  76. package/runtime/.next/static/chunks/{webpack-5b0dd5760d684512.js → webpack-d22db940097662ef.js} +1 -1
  77. package/runtime/lib/file-preview-service.mjs +3 -1
  78. package/runtime/node_modules/.package-lock.json +11 -11
  79. package/runtime/node_modules/@agent/core/dist/domain/model/entities.d.ts +2 -0
  80. package/runtime/node_modules/@agent/core/dist/domain/model/entities.d.ts.map +1 -1
  81. package/runtime/node_modules/@agent/core/dist/domain/session/SessionHistory.d.ts.map +1 -1
  82. package/runtime/node_modules/@agent/core/dist/domain/session/SessionQueryIndex.d.ts +16 -0
  83. package/runtime/node_modules/@agent/core/dist/domain/session/SessionQueryIndex.d.ts.map +1 -0
  84. package/runtime/node_modules/@agent/core/dist/domain/session/SessionQueryIndex.test.d.ts +2 -0
  85. package/runtime/node_modules/@agent/core/dist/domain/session/SessionQueryIndex.test.d.ts.map +1 -0
  86. package/runtime/node_modules/@agent/core/dist/domain/session/SessionQueryIndexCache.d.ts +11 -0
  87. package/runtime/node_modules/@agent/core/dist/domain/session/SessionQueryIndexCache.d.ts.map +1 -0
  88. package/runtime/node_modules/@agent/core/dist/domain/session/SessionQueryIndexCache.test.d.ts +2 -0
  89. package/runtime/node_modules/@agent/core/dist/domain/session/SessionQueryIndexCache.test.d.ts.map +1 -0
  90. package/runtime/node_modules/@agent/core/dist/domain/session/entities.d.ts +18 -0
  91. package/runtime/node_modules/@agent/core/dist/domain/session/entities.d.ts.map +1 -1
  92. package/runtime/node_modules/@agent/core/dist/domain/session/index.d.ts +3 -1
  93. package/runtime/node_modules/@agent/core/dist/domain/session/index.d.ts.map +1 -1
  94. package/runtime/node_modules/@agent/core/dist/domain/web-console/entities.d.ts +1 -0
  95. package/runtime/node_modules/@agent/core/dist/domain/web-console/entities.d.ts.map +1 -1
  96. package/runtime/node_modules/@agent/core/dist/index.js +224 -13
  97. package/runtime/node_modules/@agent/core/dist/index.js.map +8 -6
  98. package/runtime/node_modules/@agent/core/dist/infrastructure/SQLiteDatabase.d.ts +2 -0
  99. package/runtime/node_modules/@agent/core/dist/infrastructure/SQLiteDatabase.d.ts.map +1 -1
  100. package/runtime/node_modules/@agent/core/dist/infrastructure/SQLiteWebConsoleStore.d.ts +1 -1
  101. package/runtime/node_modules/@agent/core/dist/infrastructure/SQLiteWebConsoleStore.d.ts.map +1 -1
  102. package/runtime/node_modules/@anthropic-ai/claude-agent-sdk/bridge.mjs +100 -79
  103. package/runtime/node_modules/@anthropic-ai/claude-agent-sdk/browser-sdk.js +67 -59
  104. package/runtime/node_modules/@anthropic-ai/claude-agent-sdk/manifest.json +19 -21
  105. package/runtime/node_modules/@anthropic-ai/claude-agent-sdk/manifest.zst.json +23 -25
  106. package/runtime/node_modules/@anthropic-ai/claude-agent-sdk/package.json +10 -10
  107. package/runtime/node_modules/@anthropic-ai/claude-agent-sdk/sdk.mjs +98 -77
  108. package/runtime/package-lock.json +44 -44
  109. package/runtime/shell-integration.mjs +126 -0
  110. package/runtime/webapp/dist/assets/App-CZspcejP.js +275 -0
  111. package/runtime/webapp/dist/assets/{index-CMg2JqFN.js → index-BAH3pT_c.js} +12 -12
  112. package/runtime/webapp/dist/assets/index-lt5J4xDf.css +1 -0
  113. package/runtime/webapp/dist/index.html +2 -2
  114. package/runtime/ws-server.mjs +95 -35
  115. package/runtime/.next/static/chunks/366.9bfa310c7c3276cf.js +0 -1
  116. package/runtime/.next/static/chunks/793.e40ddf9167835123.js +0 -1
  117. package/runtime/.next/static/chunks/app/web/page-d0549ed261e10cd8.js +0 -1
  118. package/runtime/.next/static/chunks/main-app-1ca58b15d170cda2.js +0 -1
  119. package/runtime/webapp/dist/assets/App-B13GP2OF.js +0 -270
  120. package/runtime/webapp/dist/assets/index-8vuD14aR.css +0 -1
  121. /package/runtime/.next/static/{xTNCVAIsaS_jW3LOfeS7l → iaxCayE60RyqJY_Zj-OjS}/_buildManifest.js +0 -0
  122. /package/runtime/.next/static/{xTNCVAIsaS_jW3LOfeS7l → iaxCayE60RyqJY_Zj-OjS}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[137],{2466:function(e,t,r){r.d(t,{Z:function(){return n}});let n=(0,r(1806).Z)("LoaderCircle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]])},5137:function(e,t,r){r.r(t),r.d(t,{MAX_CLIENT_DOWNLOAD_BYTES:function(){return S},decodeTextChunk:function(){return E},default:function(){return H},isBrowserPreviewPath:function(){return R},isHtmlPreviewPath:function(){return F},mimeTypeForPath:function(){return L},nativeFileShareReadiness:function(){return z},readFileForClientDownload:function(){return T},shareFileWithNativePicker:function(){return W}});var n=r(1996),i=r(6121),a=r(1806);let l=(0,a.Z)("RotateCcw",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]]);var o=r(2466);let s=(0,a.Z)("Save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]]);var u=r(6533),c=r(4267);let d=(0,a.Z)("Download",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]]),p=(0,a.Z)("Share2",[["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}],["circle",{cx:"6",cy:"12",r:"3",key:"w7nqdw"}],["circle",{cx:"18",cy:"19",r:"3",key:"1xt0gg"}],["line",{x1:"8.59",x2:"15.42",y1:"13.51",y2:"17.49",key:"47mynk"}],["line",{x1:"15.41",x2:"8.59",y1:"6.51",y2:"10.49",key:"1n3mei"}]]),h=(0,a.Z)("Eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);var f=r(7317),x=r(3797);let m=/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/,v=new Set(["ts","tsx","js","jsx","mjs","cjs","json","md","markdown","mdown","mkdn","mdx","css","scss","html","htm","xml","yml","yaml","toml","sh","zsh","bash","py","rb","go","rs","java","kt","c","h","cpp","hpp","sql","env","gitignore","dockerfile","txt","log","conf","properties","gradle","lock","csv","vue","svelte","astro","graphql","prisma","proto"]),g=new Set(["png","jpg","jpeg","gif","webp","bmp","ico","svg"]),b=new Set(["html","htm"]),y=new Set(v),w=new Set(["mp4","webm","mov","m4v"]),k=new Set(["mp3","wav","m4a","aac","ogg","flac"]),j=new Set(["pdf"]),S=268435456,C={aac:"audio/aac",csv:"text/csv",doc:"application/msword",docx:"application/vnd.openxmlformats-officedocument.wordprocessingml.document",gif:"image/gif",html:"text/html",jpeg:"image/jpeg",jpg:"image/jpeg",json:"application/json",m4a:"audio/mp4",m4v:"video/mp4",md:"text/markdown",mov:"video/quicktime",mp3:"audio/mpeg",mp4:"video/mp4",ogg:"audio/ogg",pdf:"application/pdf",png:"image/png",ppt:"application/vnd.ms-powerpoint",pptx:"application/vnd.openxmlformats-officedocument.presentationml.presentation",svg:"image/svg+xml",tar:"application/x-tar",txt:"text/plain",wav:"audio/wav",webm:"video/webm",webp:"image/webp",xls:"application/vnd.ms-excel",xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",xml:"application/xml",zip:"application/zip"};function z(e,t){return t?e.share&&e.canShare?"ready":"unsupported-browser":"insecure-context"}function L(e){var t,r,n;return null!==(n=C[null!==(r=null===(t=e.split(".").pop())||void 0===t?void 0:t.toLowerCase())&&void 0!==r?r:""])&&void 0!==n?n:"application/octet-stream"}async function W(e,t){var r;if(!t.share||!(null===(r=t.canShare)||void 0===r?void 0:r.call(t,{files:[e]})))return"unsupported";try{return await t.share({files:[e],title:e.name}),"shared"}catch(e){if(e&&"object"==typeof e&&"name"in e&&"AbortError"===e.name)return"cancelled";throw e}}function M(e){return Uint8Array.from(atob(e),e=>e.charCodeAt(0))}function E(e,t,r){return e.decode(M(t),{stream:!r})}async function T(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:()=>{},n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:524288,i=await t("fs:stat",{path:e});if(i.dir)throw Error("文件夹不能下载");if(i.size>S)throw Error("文件超过 256M,请通过终端传输");let a=[],l=0;do{let o=await t("fs:read",{path:e,offset:l,length:n},6e4),s=M(o.data);if(s.byteLength!==o.bytes)throw Error("文件分块长度不一致,请重试");a.push(s.slice().buffer);let u=o.offset+o.bytes;if(!o.eof&&u<=l)throw Error("文件下载未取得进展,请重试");if(l=u,r(0===i.size?100:Math.min(100,Math.round(l/i.size*100))),o.eof)break}while(l<i.size);return new Blob(a,{type:"application/octet-stream"})}function F(e){var t,r;let n=null!==(r=null===(t=e.split(".").pop())||void 0===t?void 0:t.toLowerCase())&&void 0!==r?r:"";return b.has(n)}function R(e){var t,r;let n=null!==(r=null===(t=e.split(".").pop())||void 0===t?void 0:t.toLowerCase())&&void 0!==r?r:"";return y.has(n)}function H(e){var t,r;let{path:a,rpc:b,onClose:y}=e,[S,C]=(0,i.useState)([]),[H,O]=(0,i.useState)(null),[U,q]=(0,i.useState)(""),[_,V]=(0,i.useState)(null),[K,X]=(0,i.useState)("initial-loading"),[Y,$]=(0,i.useState)(!1),[G,J]=(0,i.useState)(0),[Q,ee]=(0,i.useState)(null),[et,er]=(0,i.useState)(null),[en,ei]=(0,i.useState)(null),[ea,el]=(0,i.useState)(null),[eo,es]=(0,i.useState)(!1),[eu,ec]=(0,i.useState)(null),[ed,ep]=(0,i.useState)(null),[eh,ef]=(0,i.useState)(!1),[ex,em]=(0,i.useState)(!0),[ev,eg]=(0,i.useState)(null),[eb,ey]=(0,i.useState)("unavailable"),[ew,ek]=(0,i.useState)(!1),[ej,eS]=(0,i.useState)(null),[eC,ez]=(0,i.useState)("file"),[eL,eW]=(0,i.useState)(!1),[eM,eE]=(0,i.useState)(!1),[eT,eF]=(0,i.useState)(!1),[eR,eH]=(0,i.useState)(!1),[eZ,eI]=(0,i.useState)(""),[eN,eA]=(0,i.useState)(!1),[eD,eP]=(0,i.useState)(null),[eB,eO]=(0,i.useState)(!1),eU=(0,i.useRef)(null),eq=(0,i.useRef)(null),e_=(0,i.useRef)(0),eV=(0,i.useRef)(!1),eK=(0,i.useRef)(0),eX=(0,i.useRef)(!1),eY=(0,i.useRef)(new TextDecoder("utf-8",{fatal:!1})),e$=(0,i.useRef)(null),eG=(0,i.useRef)(null),eJ=(0,i.useRef)(!1),eQ=a?function(e){var t,r;let n=null!==(r=null===(t=e.split(".").pop())||void 0===t?void 0:t.toLowerCase())&&void 0!==r?r:"";return v.has(n)||!e.includes(".")?"text":g.has(n)?"image":w.has(n)?"video":k.has(n)?"audio":j.has(n)?"pdf":"hex"}(a):"unsupported",e0=!!a&&F(a),e1=!!a&&R(a),e2=(0,i.useMemo)(()=>S.join(""),[S]),e6=(0,i.useCallback)(()=>{let e=e$.current;e$.current=null,e&&b("fs:preview-close",{ticketId:e}).catch(()=>{})},[b]),e8=(0,i.useCallback)(async function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:eK.current;if(!eX.current){eX.current=!0,t?X("initial-loading"):X("loading-more"),ee(null);try{let n=t?0:e_.current,i=await b("fs:read",{path:e,offset:n,length:262144});if(r!==eK.current)return;let a=i.offset+i.bytes;if(!i.eof&&a<=n)throw Error("文件加载未取得进展,请重试");t&&(eY.current=new TextDecoder("utf-8",{fatal:!1}));let l=E(eY.current,i.data,i.eof);e_.current=a,em(i.eof),J(a),C(e=>t?[l]:[...e,l]),V(e=>{var t;return{size:i.size,mtime:null!==(t=null==e?void 0:e.mtime)&&void 0!==t?t:0}}),er(null),X("ready")}catch(i){var n;if(r!==eK.current)return;let e=null!==(n=i.message)&&void 0!==n?n:String(i);t?(er(e),X("error")):(ee(e),X("ready"))}finally{r===eK.current&&(eX.current=!1)}}},[b]),e5=(0,i.useCallback)(async(e,t)=>{try{let r=await b("fs:inspect-text-status",{path:e});if(t!==eK.current)return;V({size:r.size,mtime:r.mtime}),ey(r.diffStatus),eE(!r.tooLarge),eO(!1),eP(null)}catch(e){}},[b]),e7=(0,i.useCallback)(async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:eK.current;e6(),X("initial-loading"),er(null);try{let r=await b("fs:preview-open",{path:e});if(t!==eK.current){b("fs:preview-close",{ticketId:r.ticketId}).catch(()=>{});return}e$.current=r.ticketId,eG.current=r.url,O(r.url),V({size:r.size,mtime:r.mtime})}catch(e){var r;if(t!==eK.current)return;er(null!==(r=e.message)&&void 0!==r?r:String(e)),X("error")}},[e6,b]),e4=(0,i.useCallback)(async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:eK.current;X("initial-loading"),er(null);try{let r=await b("fs:read",{path:e,offset:0,length:4096});if(t!==eK.current)return;(function(e){let t=atob(e),r=[];for(let e=0;e+16<=t.length||0===e;e+=16){let n=t.slice(e,e+16),i=[...n].map(e=>e.charCodeAt(0).toString(16).padStart(2,"0")).join(" ").padEnd(47," "),a=[...n].map(e=>e.charCodeAt(0)>=32&&127>e.charCodeAt(0)?e:".").join("");if(r.push("".concat(e.toString(16).padStart(8,"0")," ").concat(i," |").concat(a,"|")),e+16>t.length)break}q(r.join("\n"))})(r.data),J(r.bytes),V(e=>{var t;return{size:r.size,mtime:null!==(t=null==e?void 0:e.mtime)&&void 0!==t?t:0}}),X("ready")}catch(e){var r;if(t!==eK.current)return;er(null!==(r=e.message)&&void 0!==r?r:String(e)),X("error")}},[b]),e3=(0,i.useCallback)((e,t)=>{let r=++eK.current,n=R(e);eX.current=!1,e6(),eG.current=null,C([]),O(null),q(""),V(null),er(null),ee(null),J(0),ei(null),el(null),es(!1),ec(null),ep(null),ef(!1),em(!0),eg(null),ey("unavailable"),ek(!1),eS(null),ez("file"),eE(!1),eF(!1),eH(!1),eI(""),eP(null),eO(!1),X("initial-loading"),eV.current=!1,e_.current=0,eY.current=new TextDecoder("utf-8",{fatal:!1}),b("fs:watch",{path:function(e){let t=e.lastIndexOf("/");return t>0?e.slice(0,t):"/"}(e)}).catch(()=>{}),"text"===t?(e5(e,r),e8(e,!0,r),n&&eJ.current&&e7(e,r)):"image"===t||"video"===t||"audio"===t||"pdf"===t?e7(e,r):"hex"===t&&(b("fs:stat",{path:e}).then(e=>{r===eK.current&&V(e)}).catch(()=>{}),e4(e,r))},[e8,e4,e7,e5,e6,b]);(0,i.useEffect)(()=>{if(a)return eJ.current=!1,eW(!1),e3(a,eQ),()=>{eK.current++,eX.current=!1,e6()}},[a]),(0,i.useEffect)(()=>{let e=null,t=t=>{let r=t.detail;r&&r===a&&(null!==e&&window.clearTimeout(e),e=window.setTimeout(()=>{"text"===eQ&&eV.current?eO(!0):a&&e3(a,eQ)},350))};return window.addEventListener("file-changed",t),()=>{window.removeEventListener("file-changed",t),null!==e&&window.clearTimeout(e)}},[a,eQ,e3]),(0,i.useEffect)(()=>{eV.current=eR},[eR]),(0,i.useEffect)(()=>{if("initial-loading"!==K){$(!1);return}let e=window.setTimeout(()=>$(!0),120);return()=>window.clearTimeout(e)},[a,K]),(0,i.useEffect)(()=>{let e=eq.current,t=eU.current;if(!e||!t||!a||"text"!==eQ||ex||eR||"file"!==eC||"ready"!==K||Q)return;let r=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&e8(a)},{root:t,rootMargin:"0px 0px 360px 0px"});return r.observe(e),()=>r.disconnect()},[eR,ex,eQ,e8,Q,a,K,eC]);let e9=(0,i.useCallback)((e,t)=>{let r=URL.createObjectURL(e),n=document.createElement("a");n.href=r,n.download=Z(t),n.style.display="none",document.body.appendChild(n),n.click(),n.remove(),window.setTimeout(()=>URL.revokeObjectURL(r),1e3)},[]),te=(0,i.useCallback)(async()=>{if(a&&null===ea&&null===ed){ei(null),ec(null),es(!1),el(0);try{let e=await T(a,b,el);e9(e,a),es(!0),window.setTimeout(()=>es(!1),1500)}catch(t){var e;ei(null!==(e=null==t?void 0:t.message)&&void 0!==e?e:String(t))}finally{el(null)}}},[e9,ea,a,b,ed]),tt=(0,i.useCallback)(async()=>{var e,t;if(!a||null!==ed||null!==ea)return;ei(null),ec(null),ef(!1);let r=z(navigator,window.isSecureContext);if("insecure-context"===r){ec("当前页面是 HTTP,手机 Chrome 仅允许 HTTPS 页面分享文件,请改用 HTTPS 地址后重试");return}if("unsupported-browser"===r){ec("当前浏览器不支持分享文件,请使用最新版手机 Chrome 或系统浏览器");return}ep(0);try{let t=await T(a,b,ep),r=new File([t],Z(a),{type:L(a),lastModified:null!==(e=null==_?void 0:_.mtime)&&void 0!==e?e:Date.now()}),n=await W(r,navigator);"unsupported"===n?ec("当前浏览器不支持分享此文件类型,请使用下载按钮"):"shared"===n&&(ef(!0),window.setTimeout(()=>ef(!1),1500))}catch(e){ec(null!==(t=null==e?void 0:e.message)&&void 0!==t?t:String(e))}finally{ep(null)}},[ea,null==_?void 0:_.mtime,a,b,ed]),tr=(0,i.useCallback)(async(e,t)=>{let r=await b("fs:inspect-text",{path:e},6e4);return t!==eK.current?null:(V({size:r.size,mtime:r.mtime}),ey(r.diffStatus),eg(r.patch),eE(!r.tooLarge&&r.validUtf8),r)},[b]),tn=(0,i.useCallback)(async()=>{if(!a||eT)return;let e=eK.current;eF(!0),eP(null);try{let t=await tr(a,e);if(!t)return;if(t.tooLarge||null===t.data)throw Error("文件超过 8M,无法在线编辑");if(!t.validUtf8)throw Error("此文件不是有效的 UTF-8 文本,无法在线编辑");let r=new TextDecoder("utf-8",{fatal:!1}).decode(M(t.data));C([r]),J(t.size),e_.current=t.size,em(!0),eI(r),eO(!1),eV.current=!0,eH(!0)}catch(r){var t;e===eK.current&&eP(null!==(t=r.message)&&void 0!==t?t:String(r))}finally{e===eK.current&&eF(!1)}},[eT,tr,a]),ti=(0,i.useCallback)(async()=>{if(!a||ew||(ez("diff"),null!==ev))return;let e=eK.current;ek(!0),eS(null);try{await tr(a,e)}catch(r){var t;e===eK.current&&eS(null!==(t=r.message)&&void 0!==t?t:String(r))}finally{e===eK.current&&ek(!1)}},[ew,tr,ev,a]),ta=(0,i.useCallback)(()=>{if(!a)return;let e=!eL;eJ.current=e,eW(e),e&&!H&&e7(a,eK.current)},[e7,H,a,eL]),tl=(0,i.useCallback)(e=>{eG.current===e&&(er(null),X("ready"))},[]),to=(0,i.useCallback)(e=>{eG.current===e&&(er("文件预览加载失败,请重试"),X("error"))},[]),ts=(0,i.useCallback)(()=>{a&&e3(a,eQ)},[eQ,a,e3]),tu=(0,i.useCallback)(()=>{(eZ===e2||window.confirm("放弃未保存的修改?"))&&(eV.current=!1,eH(!1),eI(""),eP(null),eO(!1))},[eZ,e2]),tc=(0,i.useCallback)(()=>{(!eR||eZ===e2||window.confirm("放弃未保存的修改并关闭预览?"))&&(eK.current++,e6(),y())},[eZ,eR,y,e6,e2]),td=(0,i.useCallback)(()=>{a&&(eV.current=!1,eH(!1),eI(""),e3(a,"text"))},[a,e3]),tp=(0,i.useCallback)(async()=>{if(a&&_&&!eN&&eZ!==e2){eA(!0),eP(null);try{await b("fs:write-text",{path:a,content:eZ,expectedSize:_.size,expectedMtime:_.mtime},6e4),eV.current=!1,eH(!1),eI(""),e3(a,"text")}catch(t){var e;eP(null!==(e=null==t?void 0:t.message)&&void 0!==e?e:String(t))}finally{eA(!1)}}},[eZ,_,a,b,eN,e3,e2]),th=(0,i.useMemo)(()=>(function(e){if(!e.trim())return{rows:[],added:0,removed:0};let t=[],r=0,n=0,i=!1,a=0,l=0;for(let o of e.replace(/\n$/,"").split("\n")){let e=o.match(m);if(e){r=Number(e[1]),n=Number(e[2]),i=!0,t.push({kind:"hunk",text:o,oldLine:null,newLine:null});continue}if(!i){o.startsWith("diff --git ")||o.startsWith("index ")||o.startsWith("--- ")||o.startsWith("+++ ")||t.push({kind:"meta",text:o,oldLine:null,newLine:null});continue}o.startsWith("+")?(t.push({kind:"added",text:o.slice(1),oldLine:null,newLine:n}),n+=1,a+=1):o.startsWith("-")?(t.push({kind:"removed",text:o.slice(1),oldLine:r,newLine:null}),r+=1,l+=1):o.startsWith(" ")?(t.push({kind:"context",text:o.slice(1),oldLine:r,newLine:n}),r+=1,n+=1):t.push({kind:"note",text:o,oldLine:null,newLine:null})}return{rows:t,added:a,removed:l}})(null!=ev?ev:""),[ev]);if(!a)return null;let tf=(null!==(t=null==_?void 0:_.size)&&void 0!==t?t:0)>8388608,tx=!tf&&("changed"===eb||"untracked"===eb),tm="text"===eQ&&eM&&"initial-loading"!==K&&!eT&&!et;return(0,n.jsxs)("div",{style:{height:"100%",display:"flex",flexDirection:"column",background:"var(--ui-term-col-bg, #101014)",color:"var(--ui-text, #e8e8ee)",colorScheme:"var(--ui-color-scheme, dark)",accentColor:"var(--ui-tab-accent, #7aa2f7)"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"9px 12px",borderBottom:"1px solid var(--ui-tree-border, #222)",background:"var(--ui-tree-bg, #121218)",flexShrink:0},children:[(0,n.jsx)("span",{className:"pv-name",style:{minWidth:0,flex:"1 1 auto",fontSize:12.5,color:"var(--ui-text, #e8e8ee)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:Z(a)}),_&&(0,n.jsx)("span",{style:{fontSize:10.5,color:"var(--ui-history-meta, #666)",flexShrink:0},children:I(_.size)}),eR?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("button",{type:"button",onClick:tu,disabled:eN,style:N,"aria-label":"取消编辑",title:"取消编辑",children:(0,n.jsx)(l,{size:15,strokeWidth:1.8,"aria-hidden":"true"})}),(0,n.jsx)("button",{type:"button",onClick:tp,disabled:eN||eZ===e2,style:{...N,color:"var(--ui-tab-accent, #7aa2f7)",opacity:eN||eZ===e2?.55:1},"aria-label":eN?"正在保存":"保存修改",title:eN?"正在保存":"保存修改",children:eN?(0,n.jsx)(o.Z,{className:"tree-spin",size:15,strokeWidth:1.8,"aria-hidden":"true"}):(0,n.jsx)(s,{size:15,strokeWidth:1.8,"aria-hidden":"true"})})]}):(0,n.jsxs)(n.Fragment,{children:["text"===eQ&&(0,n.jsx)("button",{type:"button",onClick:tn,disabled:!tm,style:{...N,opacity:tm?1:.45},"aria-label":"编辑文件",title:tf?"文件超过 8M,无法在线编辑":eM?"编辑文件":"此文件不可编辑",children:(0,n.jsx)(u.Z,{size:15,strokeWidth:1.8,"aria-hidden":"true"})}),(0,n.jsx)("button",{type:"button",onClick:te,disabled:null!==ea||null!==ed,style:{...N,opacity:null!==ea||null!==ed?.72:1},"aria-label":null===ea?"下载到当前设备":"正在下载 ".concat(ea,"%"),title:null===ea?"下载到当前设备":"正在下载 ".concat(ea,"%"),children:null!==ea?(0,n.jsx)(o.Z,{className:"tree-spin",size:15,strokeWidth:1.8,"aria-hidden":"true"}):eo?(0,n.jsx)(c.Z,{size:15,strokeWidth:1.8,"aria-hidden":"true"}):(0,n.jsx)(d,{size:15,strokeWidth:1.8,"aria-hidden":"true"})}),(0,n.jsx)("button",{type:"button",onClick:tt,disabled:null!==ed||null!==ea,style:{...N,opacity:null!==ed||null!==ea?.72:1},"aria-label":"分享文件",title:null===ed?"分享文件":"正在准备 ".concat(ed,"%"),children:null!==ed?(0,n.jsx)(o.Z,{className:"tree-spin",size:15,strokeWidth:1.8,"aria-hidden":"true"}):eh?(0,n.jsx)(c.Z,{size:15,strokeWidth:1.8,"aria-hidden":"true"}):(0,n.jsx)(p,{size:15,strokeWidth:1.8,"aria-hidden":"true"})}),e1&&(0,n.jsx)("button",{type:"button",onClick:ta,"aria-pressed":eL,style:{...N,...eL?{color:"var(--ui-tab-accent, #7aa2f7)",borderColor:"var(--ui-tab-accent, #7aa2f7)"}:{}},"aria-label":eL?"退出浏览器预览":"浏览器预览",title:eL?"退出浏览器预览":e0?"在浏览器中预览渲染效果":"在浏览器中查看原始文件",children:(0,n.jsx)(h,{size:15,strokeWidth:1.8,"aria-hidden":"true"})})]}),(0,n.jsx)("button",{type:"button",onClick:tc,style:N,"aria-label":"关闭预览",title:"关闭预览",children:(0,n.jsx)(f.Z,{size:15,strokeWidth:1.8,"aria-hidden":"true"})})]}),"text"===eQ&&tx&&!eR&&!eL&&(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",minHeight:34,padding:"0 12px",borderBottom:"1px solid var(--ui-tree-border, #222)",background:"var(--ui-tree-bg, #121218)",flexShrink:0},children:[(0,n.jsxs)("div",{role:"tablist","aria-label":"文件预览模式",style:{display:"inline-flex",gap:2,padding:2,border:"1px solid var(--ui-panel-input-border, #333)",borderRadius:6,background:"var(--ui-muted-surface, #1b1b22)"},children:[(0,n.jsx)(P,{active:"diff"===eC,onClick:ti,children:"变更"}),(0,n.jsx)(P,{active:"file"===eC,onClick:()=>ez("file"),children:"文件"})]}),(0,n.jsxs)("span",{style:{marginLeft:9,display:"inline-flex",gap:7,fontFamily:'"SF Mono", Menlo, Consolas, monospace',fontSize:10.5},children:[th.added>0&&(0,n.jsxs)("span",{style:{color:"var(--ui-success, #059669)"},children:["+",th.added]}),th.removed>0&&(0,n.jsxs)("span",{style:{color:"var(--ui-error, #dc2626)"},children:["-",th.removed]})]})]}),eu&&(0,n.jsxs)("div",{role:"alert",style:{flexShrink:0,padding:"8px 12px",borderBottom:"1px solid var(--ui-tree-border, #222)",background:"var(--ui-tree-bg, #121218)",color:"var(--ui-error, #f7768e)",fontSize:12.5,lineHeight:1.5},children:["分享失败:",eu]}),(0,n.jsxs)("div",{ref:eU,className:"pv-body",style:{position:"relative",flex:1,minHeight:0,overflow:"auto",background:"var(--ui-term-col-bg, #101014)",WebkitOverflowScrolling:"touch"},children:[en&&(0,n.jsxs)("div",{style:{padding:"10px 14px 0",color:"var(--ui-error, #f7768e)",fontSize:12.5},children:["下载失败:",en]}),eD&&(0,n.jsx)("div",{role:"alert",style:{padding:"10px 14px",color:"var(--ui-error, #f7768e)",fontSize:12.5},children:eD}),eB&&eR&&(0,n.jsxs)("div",{role:"alert",style:{display:"flex",alignItems:"center",gap:8,padding:"8px 12px",borderBottom:"1px solid var(--ui-tree-border, #222)",color:"var(--ui-error, #f7768e)",fontSize:12},children:[(0,n.jsx)("span",{style:{flex:1},children:"文件已在其他位置更新"}),(0,n.jsxs)("button",{type:"button",onClick:td,style:A,children:[(0,n.jsx)(x.Z,{size:13,strokeWidth:1.8,"aria-hidden":"true"}),"重新加载"]})]}),H&&!et&&"image"===eQ&&(0,n.jsx)("img",{src:H,alt:a,onLoad:()=>tl(H),onError:()=>to(H),style:{maxWidth:"100%",maxHeight:"100%",objectFit:"contain",display:"block",margin:"0 auto"}}),H&&!et&&"video"===eQ&&(0,n.jsx)("video",{src:H,controls:!0,autoPlay:!0,onLoadedMetadata:()=>tl(H),onError:()=>to(H),style:{maxWidth:"100%",maxHeight:"100%",display:"block",margin:"0 auto"}}),H&&!et&&"audio"===eQ&&(0,n.jsx)("div",{style:{display:"grid",placeItems:"center",height:"100%"},children:(0,n.jsx)("audio",{src:H,controls:!0,autoPlay:!0,onLoadedMetadata:()=>tl(H),onError:()=>to(H),style:{width:"min(420px, 88%)"}})}),H&&!et&&"pdf"===eQ&&(0,n.jsx)("iframe",{src:H,title:a,onLoad:()=>tl(H),onError:()=>to(H),style:{width:"100%",height:"100%",border:"none"}}),H&&!et&&"text"===eQ&&e1&&eL&&!eR&&(0,n.jsx)("iframe",{src:e0?"".concat(H,"/").concat(encodeURIComponent(Z(a))):H,sandbox:"allow-scripts allow-popups allow-forms allow-modals",title:a,onLoad:()=>tl(H),onError:()=>to(H),style:{width:"100%",height:"100%",border:"none",background:"#fff"}}),"text"===eQ&&eR&&!et&&(0,n.jsx)("textarea",{value:eZ,onChange:e=>eI(e.target.value),spellCheck:!1,autoCapitalize:"off",autoCorrect:"off","aria-label":"编辑 ".concat(Z(a)),style:{width:"100%",minHeight:"100%",boxSizing:"border-box",resize:"none",margin:0,padding:"12px 14px calc(env(safe-area-inset-bottom) + 36px)",border:0,outline:0,background:"var(--ui-term-col-bg, #101014)",color:"var(--ui-history-item-text, var(--ui-text, #d6d6de))",fontFamily:'"SF Mono", Menlo, Consolas, monospace',fontSize:12,lineHeight:1.5,tabSize:2}}),"text"===eQ&&!eR&&!et&&tx&&"diff"===eC&&(ej?(0,n.jsx)(D,{label:ej,actionLabel:"重试",onAction:()=>void ti(),tone:"error"}):ew?(0,n.jsx)(D,{label:"正在加载变更"}):(0,n.jsx)(B,{rows:th.rows})),("hex"===eQ||"text"===eQ&&!eR&&!eL&&(!tx||"file"===eC))&&!et&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("pre",{style:{margin:0,padding:"11px 13px calc(env(safe-area-inset-bottom) + 36px)",fontFamily:'"SF Mono", Menlo, Consolas, monospace',fontSize:"hex"===eQ?10.5:12,lineHeight:1.45,color:"hex"===eQ?"var(--ui-muted-text, #9aa)":"var(--ui-history-item-text, var(--ui-text, #d6d6de))",whiteSpace:"hex"===eQ?"pre":"pre-wrap",wordBreak:"hex"===eQ?"normal":"break-word"},children:"hex"===eQ?U:S.map((e,t)=>(0,n.jsx)("span",{children:e},t))}),"text"===eQ&&!ex&&(0,n.jsxs)("div",{ref:eq,role:"status","aria-live":"polite",style:{minHeight:44,padding:"0 14px calc(env(safe-area-inset-bottom) + 8px)",display:"flex",alignItems:"center",justifyContent:"center",gap:7,color:"var(--ui-history-meta, #666)",fontSize:11.5},children:["loading-more"===K&&(0,n.jsx)(o.Z,{className:"tree-spin",size:14,strokeWidth:1.8,"aria-hidden":"true",style:{color:"var(--ui-tab-accent, #7aa2f7)"}}),Q?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("span",{children:"加载失败"}),(0,n.jsxs)("button",{type:"button",onClick:()=>e8(a),style:A,children:[(0,n.jsx)(x.Z,{size:13,strokeWidth:1.8,"aria-hidden":"true"}),"重试"]})]}):(0,n.jsx)("span",{children:"loading-more"===K?"正在加载更多":"".concat(I(G)," / ").concat(I(null!==(r=null==_?void 0:_.size)&&void 0!==r?r:G))})]})]}),Y&&"initial-loading"===K&&(0,n.jsx)(D,{label:"正在加载文件"}),et&&"error"===K&&(0,n.jsx)(D,{label:et,actionLabel:"重试",onAction:ts,tone:"error"})]})]})}function Z(e){return e.slice(e.lastIndexOf("/")+1)||e}function I(e){return e<1024?"".concat(e,"B"):e<1048576?"".concat((e/1024).toFixed(1),"K"):"".concat((e/1024/1024).toFixed(1),"M")}let N={width:28,height:28,borderRadius:7,border:"1px solid var(--ui-panel-input-border, #333)",display:"inline-flex",alignItems:"center",justifyContent:"center",background:"var(--ui-muted-surface, #1b1b22)",color:"var(--ui-muted-text, #ccc)",flexShrink:0,cursor:"pointer"},A={minHeight:28,padding:"0 9px",borderRadius:6,border:"1px solid var(--ui-panel-input-border, #333)",display:"inline-flex",alignItems:"center",justifyContent:"center",gap:5,background:"var(--ui-muted-surface, #1b1b22)",color:"var(--ui-muted-text, #ccc)",cursor:"pointer",fontSize:11};function D(e){let{label:t,actionLabel:r,onAction:i,tone:a="muted"}=e;return(0,n.jsxs)("div",{role:"error"===a?"alert":"status",style:{position:"absolute",inset:0,minHeight:120,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:10,color:"error"===a?"var(--ui-error, #f7768e)":"var(--ui-muted-text, #9aa)",fontSize:12.5},children:["error"!==a&&(0,n.jsx)(o.Z,{className:"tree-spin",size:18,strokeWidth:1.8,"aria-hidden":"true",style:{color:"var(--ui-tab-accent, #7aa2f7)"}}),(0,n.jsx)("span",{children:t}),r&&i&&(0,n.jsxs)("button",{type:"button",onClick:i,style:A,children:[(0,n.jsx)(x.Z,{size:13,strokeWidth:1.8,"aria-hidden":"true"}),r]})]})}function P(e){let{active:t,onClick:r,children:i}=e;return(0,n.jsx)("button",{type:"button",role:"tab","aria-selected":t,onClick:r,style:{minWidth:48,height:24,padding:"0 9px",border:0,borderRadius:4,background:t?"var(--ui-tab-accent, #7aa2f7)":"transparent",color:t?"var(--ui-tab-active-text, #fff)":"var(--ui-muted-text, #9aa)",fontSize:11,fontWeight:600,cursor:"pointer"},children:i})}function B(e){let{rows:t}=e;return(0,n.jsx)("div",{style:{minWidth:"100%",width:"max-content",paddingBottom:"calc(env(safe-area-inset-bottom) + 36px)",fontFamily:'"SF Mono", Menlo, Consolas, monospace',fontSize:11.5,lineHeight:1.55},children:t.map((e,t)=>{var r,i;let a="added"===e.kind,l="removed"===e.kind,o="hunk"===e.kind||"meta"===e.kind||"note"===e.kind,s=a?"color-mix(in srgb, var(--ui-success, #059669) 12%, transparent)":l?"color-mix(in srgb, var(--ui-error, #dc2626) 11%, transparent)":"hunk"===e.kind?"color-mix(in srgb, var(--ui-tab-accent, #7aa2f7) 10%, transparent)":"transparent",u=a?"var(--ui-success, #059669)":l?"var(--ui-error, #dc2626)":o?"var(--ui-muted-text, #9aa)":"var(--ui-history-item-text, var(--ui-text, #d6d6de))";return(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"42px 42px 22px minmax(0, 1fr)",minHeight:18,background:s,color:u},children:[(0,n.jsx)("span",{style:O,children:null!==(r=e.oldLine)&&void 0!==r?r:""}),(0,n.jsx)("span",{style:O,children:null!==(i=e.newLine)&&void 0!==i?i:""}),(0,n.jsx)("span",{style:{textAlign:"center",userSelect:"none",color:u},children:a?"+":l?"-":" "}),(0,n.jsx)("span",{style:{padding:"0 12px 0 6px",whiteSpace:"pre-wrap",overflowWrap:"anywhere"},children:e.text||" "})]},"".concat(e.kind,"-").concat(t))})})}let O={padding:"0 6px",borderRight:"1px solid var(--ui-tree-border, #222)",color:"var(--ui-history-meta, #666)",textAlign:"right",userSelect:"none"}}}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[366],{3366:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return f}});var n=r(1996),l=r(6121),i=r(8918),o=class{activate(e){this._terminal=e}dispose(){}fit(){let e=this.proposeDimensions();if(!e||!this._terminal||isNaN(e.cols)||isNaN(e.rows))return;let t=this._terminal._core;(this._terminal.rows!==e.rows||this._terminal.cols!==e.cols)&&(t._renderService.clear(),this._terminal.resize(e.cols,e.rows))}proposeDimensions(){if(!this._terminal||!this._terminal.element||!this._terminal.element.parentElement)return;let e=this._terminal._core._renderService.dimensions;if(0===e.css.cell.width||0===e.css.cell.height)return;let t=0===this._terminal.options.scrollback?0:this._terminal.options.overviewRuler?.width||14,r=window.getComputedStyle(this._terminal.element.parentElement),n=parseInt(r.getPropertyValue("height")),l=Math.max(0,parseInt(r.getPropertyValue("width"))),i=window.getComputedStyle(this._terminal.element),o={top:parseInt(i.getPropertyValue("padding-top")),bottom:parseInt(i.getPropertyValue("padding-bottom")),right:parseInt(i.getPropertyValue("padding-right")),left:parseInt(i.getPropertyValue("padding-left"))},c=o.top+o.bottom;return{cols:Math.max(2,Math.floor((l-(o.right+o.left)-t)/e.css.cell.width)),rows:Math.max(1,Math.floor((n-c)/e.css.cell.height))}}};r(8810);var c=r(9532);let a=new Set(["\x1b[A","\x1b[B","\x1b[5~","\x1b[6~"]),u={minWidth:34,height:30,borderRadius:7,fontSize:11.5,padding:"0 7px",touchAction:"none",userSelect:"none",flexShrink:0},s=["ctrl","esc","tab","up","down","left","right","pgup","pgdown","end","enter","pipe","tilde","dash","slash","ctrlc","ctrld","ctrll","hide"],d={ctrl:"Ctrl",esc:"Esc",tab:"Tab",up:"↑",down:"↓",left:"←",right:"→",pgup:"Pg↑",pgdown:"Pg↓",end:"End",enter:"↵",pipe:"|",tilde:"~",dash:"-",slash:"/",ctrlc:"^C",ctrld:"^D",ctrll:"^L",hide:"隐藏"};function f(e){let{terminalId:t,title:r,initialCommand:f,visible:p,state:v,rpc:m,onEvent:h,onTerminalData:b,onTerminalReset:g,sendTerminalInput:y,keyOrder:w,keybarHidden:x,onKeyOrderChange:k,onKeybarHiddenChange:E,onCwdChange:T,initialScrollLine:M,onScrollLineChange:C,onRegisterFill:L,terminalTheme:R}=e,S=(0,l.useRef)(null),I=(0,l.useRef)(null),Y=(0,l.useRef)(null),[D,P]=(0,l.useState)(!1),[_,z]=(0,l.useState)(!1),[A,B]=(0,l.useState)(null),[X,j]=(0,l.useState)(!1),H=(0,l.useRef)(!1),[W,N]=(0,l.useState)(!1),q=(0,l.useRef)(t),O=(0,l.useRef)(null),V=(0,l.useRef)(null),F=(0,l.useRef)(null),K=(0,l.useRef)(()=>{}),U=(0,l.useRef)(null),Z=(0,l.useRef)(!0),G=(0,l.useRef)(0),J=(0,l.useRef)(null),Q=(0,l.useRef)(null),$=(0,l.useRef)(!1),ee=(0,l.useRef)(null),et=(0,l.useRef)(0),er=(0,l.useRef)(!1),en=(0,l.useRef)(!1),[el,ei]=(0,l.useState)(null),eo=(0,l.useCallback)(e=>{null!=O.current&&y(O.current,e)||m("term:input",{id:q.current,data:e}).catch(()=>{})},[m,y]);(0,l.useRef)(eo).current=eo;let ec=(0,l.useRef)(()=>{}),ea=(0,l.useRef)(R);ea.current=R;let eu={...u,border:"1px solid ".concat(R.keybar.keyBorder),background:R.keybar.keyBg,color:R.keybar.keyText},es=(0,l.useRef)(L);es.current=L;let ed=(0,l.useCallback)(function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];(async()=>{var r,n;Z.current=!0,null===(r=I.current)||void 0===r||r.scrollToBottom();try{await m("term:focus",{id:q.current}),j(!1)}catch(e){if((null==e?void 0:e.code)==="EWRITELOCK"){j(!0);return}}null===(n=I.current)||void 0===n||n.focus(),eo("\x15"),window.setTimeout(()=>{let r=I.current;r&&("function"==typeof r.paste?r.paste(e):eo(e),t&&window.setTimeout(()=>eo("\r"),20))},20)})()},[m,eo]);ec.current=ed;let ef=(0,l.useCallback)(()=>{let e=I.current;e&&C&&C(Z.current?e.buffer.active.baseY:e.buffer.active.viewportY)},[C]),ep=(0,l.useRef)(ef);ep.current=ef;let ev=(0,l.useRef)(e=>{let t=I.current;t&&"alternate"!==t.buffer.active.type&&0!==e&&(Z.current=!1,t.scrollLines(e),G.current=t.buffer.active.viewportY,Z.current=t.buffer.active.viewportY>=t.buffer.active.baseY,ep.current())}),em=(0,l.useRef)(e=>{let t=I.current;t&&"alternate"!==t.buffer.active.type&&0!==e&&(e<0&&(Z.current=!1),t.scrollPages(e),G.current=t.buffer.active.viewportY,Z.current=t.buffer.active.viewportY>=t.buffer.active.baseY,ep.current())}),eh=(0,l.useCallback)(()=>{let e=I.current;if(e&&null!=M){if(M>=e.buffer.active.baseY){Z.current=!0,e.scrollToBottom();return}Z.current=!1,G.current=M,e.scrollToLine(M)}},[M]);(0,l.useEffect)(()=>{var e;let t;let r=new i.o({fontFamily:'"SF Mono", Menlo, Consolas, monospace',fontSize:window.innerWidth<=768?11:12,lineHeight:1.12,letterSpacing:0,cursorBlink:!0,allowProposedApi:!0,scrollback:5e3,scrollOnUserInput:!1,smoothScrollDuration:0,scrollSensitivity:1,theme:ea.current.xterm}),n=new o;r.loadAddon(n),r.open(S.current),I.current=r,Y.current=n;try{n.fit()}catch(e){}let l=r.parser.registerOscHandler(7,e=>{try{let t=e.startsWith("file://")?e:"file://".concat(e),r=new URL(t);if("file:"!==r.protocol)return!1;let n=decodeURIComponent(r.pathname);return/^\/[A-Za-z]:\//.test(n)&&(n=n.slice(1)),(n.startsWith("/")||/^[A-Za-z]:\//.test(n))&&(null==T||T(n),m("term:set-cwd",{id:q.current,cwd:n}).catch(()=>{})),!0}catch(e){return!1}});K.current=e=>{r.write(e,()=>{var e;if("alternate"===r.buffer.active.type)return;let t=null===(e=S.current)||void 0===e?void 0:e.querySelector(".xterm");(null==t?void 0:t.style.transform)&&(t.style.transform="",t.style.willChange=""),Z.current?r.scrollToBottom():r.scrollToLine(Math.min(G.current,r.buffer.active.baseY))})},r.onData(e=>{var t;if(v.connected&&(t=e,!(en.current&&a.has(t)))){if(Z.current=!0,"alternate"!==r.buffer.active.type&&r.scrollToBottom(),ef(),H.current&&1===e.length){let t=e.toLowerCase().charCodeAt(0);t>=97&&t<=122?e=String.fromCharCode(t-96):" "===e?e="\0":"["===e?e="\x1b":"\\"===e?e="\x1c":"]"===e&&(e="\x1d"),eb()}eo(e)}}),r.onResize(e=>{let{cols:r,rows:n}=e;clearTimeout(t),t=setTimeout(()=>{m("term:resize",{id:q.current,cols:r,rows:n}).catch(()=>{})},120)});let c=r.onScroll(e=>{let t=e>=r.buffer.active.baseY;Z.current=t,t||(G.current=e),ep.current()});r.attachCustomKeyEventHandler(e=>"alternate"===r.buffer.active.type||"keydown"!==e.type||!en.current||("ArrowUp"===e.key?(ev.current(-1),e.preventDefault(),!1):"ArrowDown"===e.key?(ev.current(1),e.preventDefault(),!1):"PageUp"===e.key?(em.current(-1),e.preventDefault(),!1):"PageDown"!==e.key||(em.current(1),e.preventDefault(),!1))),r.attachCustomWheelEventHandler(e=>{var t,n;if("alternate"===r.buffer.active.type||!e.deltaY)return!0;let l=Math.max(8,(null!==(n=null===(t=S.current)||void 0===t?void 0:t.clientHeight)&&void 0!==n?n:14*r.rows)/Math.max(r.rows,1)),i=Math.trunc(e.deltaY/l)||(e.deltaY>0?1:-1);return ev.current(i),!1});let u=null,s=0,d=0,f=0,p=0,h=!1,b="pending",g=0,y=null!==(e=r.element)&&void 0!==e?e:S.current,w=e=>{if("touch"===e.pointerType&&e.isPrimary){u=e.pointerId,s=e.clientX,d=e.clientY,f=e.clientY,p=0,b="pending",h=!0,"alternate"!==r.buffer.active.type&&(Z.current=!1);try{null==y||y.setPointerCapture(e.pointerId)}catch(e){}}},x=e=>{var t;if(!h||e.pointerId!==u)return;let n=e.clientX-s,l=e.clientY-d;if("pending"===b&&Math.max(Math.abs(n),Math.abs(l))>8&&(b=Math.abs(n)>1.2*Math.abs(l)?"horizontal":"vertical"),"vertical"!==b)return;let i=f-e.clientY;if(f=e.clientY,p+=i,"alternate"===r.buffer.active.type){let t=null==y?void 0:y.getBoundingClientRect(),n=t?Math.max(1,Math.min(r.cols,Math.floor((e.clientX-t.left)/Math.max(t.width,1)*r.cols)+1)):1,l=t?Math.max(1,Math.min(r.rows,Math.floor((e.clientY-t.top)/Math.max(t.height,1)*r.rows)+1)):1;if("none"!==r.modes.mouseTrackingMode){let e=Math.trunc(p/18),t=performance.now();if(0!==e&&t-g>=32){let r=Math.sign(e)*Math.min(2,Math.abs(e));p-=18*r,g=t,en.current=!0,eo("\x1b[<".concat(e<0?64:65,";").concat(n,";").concat(l,"M").repeat(Math.abs(r)))}}else{let e=Math.trunc(p/64),t=performance.now();if(0!==e&&t-g>=80){let r=Math.sign(e);p-=64*r,g=t,en.current=!0,eo(r<0?"\x1b[5~":"\x1b[6~")}}e.preventDefault(),er.current=!0;return}let o=Math.max(8,(null!==(t=null==y?void 0:y.clientHeight)&&void 0!==t?t:14*r.rows)/Math.max(r.rows,1)|0),c=Math.trunc(p/o);0!==c&&(p-=c*o,en.current=!0,ev.current(c),e.preventDefault(),er.current=!0)},k=e=>{if(e.pointerId===u){try{null==y||y.releasePointerCapture(e.pointerId)}catch(e){}Math.abs(p)>8&&window.setTimeout(()=>{er.current=!1},400),h=!1,u=null,b="pending",window.setTimeout(()=>{en.current=!1},450)}};return null==y||y.addEventListener("pointerdown",w,{capture:!0}),null==y||y.addEventListener("pointermove",x,{capture:!0,passive:!1}),null==y||y.addEventListener("pointerup",k,{capture:!0}),null==y||y.addEventListener("pointercancel",k,{capture:!0}),()=>{var e,n;clearTimeout(t),c.dispose(),r.attachCustomKeyEventHandler(()=>!0),r.attachCustomWheelEventHandler(()=>!0),null==y||y.removeEventListener("pointerdown",w,{capture:!0}),null==y||y.removeEventListener("pointermove",x,{capture:!0}),null==y||y.removeEventListener("pointerup",k,{capture:!0}),null==y||y.removeEventListener("pointercancel",k,{capture:!0}),l.dispose(),null===(e=V.current)||void 0===e||e.call(V),null===(n=F.current)||void 0===n||n.call(F),null==T||T(null),r.dispose(),I.current=null}},[]),(0,l.useEffect)(()=>{let e=I.current;e&&(e.options.theme=R.xterm,e.refresh(0,e.rows-1))},[R]);let eb=()=>{H.current=!1,N(!1)},eg=(0,l.useCallback)(()=>{var e;let t=Y.current,r=I.current;if(!t||!r||!(null===(e=S.current)||void 0===e?void 0:e.isConnected))return!1;try{let e=t.proposeDimensions();if(!e||e.cols===r.cols&&e.rows===r.rows)return!1;return t.fit(),!0}catch(e){return!1}},[]),ey=(0,l.useCallback)(e=>{var t,r;let n=null!==(t=null==e?void 0:e.restoreScroll)&&void 0!==t&&t,l=null!==(r=null==e?void 0:e.forceLive)&&void 0!==r&&r;eg();let i=I.current;if(!i)return;let o="alternate"===i.buffer.active.type;n&&null!=M&&!o?eh():!o&&(l||Z.current)&&(l&&(Z.current=!0),i.scrollToBottom()),i.focus(),ef(),m("term:focus",{id:q.current}).then(()=>j(!1)).catch(e=>{(null==e?void 0:e.code)==="EWRITELOCK"&&j(!0)})},[eh,eg,M,ef,m]);(0,l.useEffect)(()=>h("term:ready",e=>{e.id===q.current&&P(!0)}),[h]),(0,l.useEffect)(()=>{var e,n,l,i,o,c,a;if(!v.connected){U.current=null,O.current=null,null===(l=V.current)||void 0===l||l.call(V),V.current=null,null===(i=F.current)||void 0===i||i.call(F),F.current=null,P(!1),z(!1),B(null),et.current=0;return}let u=!1;return B(null),z(!1),eg(),requestAnimationFrame(eg),(null!==(a=U.current)&&void 0!==a?a:U.current=m("term:start",{id:t,title:r,initialCommand:f,cols:null!==(o=null===(e=I.current)||void 0===e?void 0:e.cols)&&void 0!==o?o:80,rows:null!==(c=null===(n=I.current)||void 0===n?void 0:n.rows)&&void 0!==c?c:24})).then(e=>{var t,r,n;u||(q.current=e.sessionId,O.current=e.channelId,null===(t=V.current)||void 0===t||t.call(V),null===(r=F.current)||void 0===r||r.call(F),F.current=g(e.channelId,()=>{var e;null===(e=I.current)||void 0===e||e.reset()}),V.current=b(e.channelId,e=>K.current(e)),e.ready&&P(!0),null==T||T(null!==(n=e.cwd)&&void 0!==n?n:null),window.setTimeout(()=>eg(),80),window.setTimeout(()=>{let e=I.current;e&&m("term:resize",{id:q.current,cols:e.cols,rows:e.rows}).catch(()=>{})},400))}).catch(e=>{U.current=null,u||B((null==e?void 0:e.message)||"终端启动失败")}),()=>{u=!0}},[v.connected,t,r,f,b]),(0,l.useEffect)(()=>{if(!v.connected||D)return;z(!1);let e=window.setTimeout(()=>z(!0),8e3);return()=>window.clearTimeout(e)},[v.connected,t,D]),(0,l.useEffect)(()=>{if(!L)return;let e=es.current;if(e&&D)return e((e,t)=>ec.current(e,t))},[t,D]),(0,l.useEffect)(()=>{if(!p||!D)return;et.current+=1;let e=et.current>1,t=window.setTimeout(()=>{var t;let r=(null===(t=I.current)||void 0===t?void 0:t.buffer.active.type)==="alternate";ey({restoreScroll:e,forceLive:!e&&!r})},350);return()=>window.clearTimeout(t)},[p,D,ey]),(0,l.useEffect)(()=>h("term:cwd",e=>{e.id===q.current&&e.cwd&&(null==T||T(e.cwd))}),[h]),(0,l.useEffect)(()=>{var e;let t=window.visualViewport,r=null,n=null,l=()=>{var e;let t=I.current,r=S.current,n=null==r?void 0:r.querySelector(".xterm"),l=null==r?void 0:r.querySelector(".xterm-screen");if(!t||!r||!n)return!1;if("alternate"!==t.buffer.active.type)return n.style.transform&&(n.style.transform=""),!1;let i=Math.max(0,(null!==(e=null==l?void 0:l.getBoundingClientRect().height)&&void 0!==e?e:r.clientHeight)-r.clientHeight);return n.style.transform=i>0?"translate3d(0,-".concat(Math.round(i),"px,0)"):"",n.style.willChange=i>0?"transform":"",!0},i=()=>{r=null,requestAnimationFrame(()=>{if(l()||!eg())return;let e=I.current;e&&"alternate"!==e.buffer.active.type&&(Z.current?e.buffer.active.viewportY<e.buffer.active.baseY&&e.scrollToBottom():e.buffer.active.viewportY!==G.current&&e.scrollToLine(Math.min(G.current,e.buffer.active.baseY)))})},o=()=>{n=null,requestAnimationFrame(()=>{eg(),l()})},c=()=>{requestAnimationFrame(l),r&&clearTimeout(r),r=setTimeout(i,180),n&&clearTimeout(n),n=setTimeout(o,550)};c(),null==t||t.addEventListener("resize",c),null==t||t.addEventListener("scroll",c),window.addEventListener("orientationchange",c),window.addEventListener("resize",c);let a=new ResizeObserver(c);return(null===(e=S.current)||void 0===e?void 0:e.parentElement)&&a.observe(S.current.parentElement),()=>{null==t||t.removeEventListener("resize",c),null==t||t.removeEventListener("scroll",c),window.removeEventListener("orientationchange",c),window.removeEventListener("resize",c),r&&clearTimeout(r),n&&clearTimeout(n),a.disconnect()}},[eg]),(0,l.useEffect)(()=>{if(x)return;let e=()=>(0,c.i)(J.current);return e(),window.addEventListener("pageshow",e),()=>window.removeEventListener("pageshow",e)},[x,t]),(0,l.useEffect)(()=>{let e=S.current;if(!e)return;e.style.display="flex",e.style.flexDirection="column",e.style.minHeight="0",e.style.overflow="hidden";let t=e.querySelector(".xterm");null==t||t.style.setProperty("flex","1"),null==t||t.style.setProperty("height","100%");let r=e.querySelector(".xterm-scrollable-element, .xterm-viewport");null==r||r.style.setProperty("touch-action","pan-y"),null==r||r.style.setProperty("-webkit-overflow-scrolling","touch")},[D]),(0,l.useEffect)(()=>{let e=J.current;if(!e||x)return;let t=0,r=!1,n=null,l=e=>e instanceof Element?e.closest("button[data-key]"):null,i=e=>{if($.current=!1,"touch"!==e.pointerType||!e.isPrimary)return;let i=l(e.target);if(i){e.preventDefault();try{i.setPointerCapture(e.pointerId)}catch(e){}let t=i.dataset.key;ee.current={key:t,dragged:!1};let r={key:t,timer:null,active:!1,startX:e.clientX,startY:e.clientY,lastX:e.clientX,scrolling:!1};r.timer=setTimeout(()=>{var e,n;r.scrolling||(r.active=!0,ee.current&&(ee.current.dragged=!0),ei(t),null===(e=(n=navigator).vibrate)||void 0===e||e.call(n,20))},280),Q.current=r;return}n=e.pointerId,t=e.clientX,r=!0},o=l=>{var i;let o=Q.current;if(o){if(!o.active){let e=l.clientX-o.startX,t=l.clientY-o.startY;if(!o.scrolling&&Math.abs(e)>10&&Math.abs(e)>1.2*Math.abs(t))o.timer&&clearTimeout(o.timer),o.timer=null,o.scrolling=!0,ee.current&&(ee.current.dragged=!0);else if(!o.scrolling)return}if(o.scrolling){l.preventDefault();let t=o.lastX-l.clientX;o.lastX=l.clientX,e.scrollLeft+=t;return}l.preventDefault();let t=Array.from(e.querySelectorAll("button[data-key]")).find(e=>{let t=e.getBoundingClientRect();return l.clientX>=t.left&&l.clientX<=t.right}),r=null==t?void 0:t.dataset.key;if(!r||r===o.key)return;let n=[...ex],i=n.indexOf(o.key),c=n.indexOf(r);if(i<0||c<0)return;n.splice(i,1),n.splice(c,0,o.key),k(n);return}if(!r||l.pointerId!==n||(null===(i=Q.current)||void 0===i?void 0:i.active))return;let c=t-l.clientX;t=l.clientX,Math.abs(c)>1&&(e.scrollLeft+=c,l.preventDefault())},c=e=>{let t=Q.current;if("touch"===e.pointerType&&t){t.timer&&clearTimeout(t.timer),(t.active||t.scrolling)&&($.current=!0),Q.current=null,ee.current=null,ei(null);return}e.pointerId===n&&(r=!1,n=null)},a=e=>{"touch"===e.pointerType&&eT(),r=!1,n=null},u=e=>{let t=l(e.target),r=null==t?void 0:t.dataset.key;if(r){if($.current){$.current=!1;return}e.preventDefault(),ew(()=>ek(r))}};return e.addEventListener("pointerdown",i,{passive:!1}),e.addEventListener("pointermove",o,{passive:!1}),e.addEventListener("pointerup",c,{passive:!0}),e.addEventListener("pointercancel",a,{passive:!0}),e.addEventListener("click",u),()=>{e.removeEventListener("pointerdown",i),e.removeEventListener("pointermove",o),e.removeEventListener("pointerup",c),e.removeEventListener("pointercancel",a),e.removeEventListener("click",u)}},[x,w.join("|")]);let ew=e=>{e()},ex=[...w.filter(e=>s.includes(e)),...s.filter(e=>!w.includes(e))],ek=e=>{let t={esc:"\x1b",tab:" ",enter:"\r",pipe:"|",tilde:"~",dash:"-",slash:"/",ctrlc:"\x03",ctrld:"\x04",ctrll:"\f"},r=I.current,n=e=>(null==r?void 0:r.modes.applicationCursorKeysMode)?"\x1bO".concat(e):"\x1b[".concat(e);if("up"===e){eo(n("A"));return}if("down"===e){eo(n("B"));return}if("right"===e){r&&eo(n("C"));return}if("left"===e){r&&eo(n("D"));return}if(t[e])return eo(t[e]);if("ctrl"===e){H.current=!H.current,N(H.current);return}if("hide"===e){E(!0);return}r&&("pgup"===e&&("alternate"===r.buffer.active.type?eo("\x1b[5~"):em.current(-1)),"pgdown"===e&&("alternate"===r.buffer.active.type?eo("\x1b[6~"):em.current(1)),"end"===e&&(Z.current=!0,r.scrollToBottom(),ef()))},eE=e=>{let t=Q.current;t&&(t.timer&&clearTimeout(t.timer),$.current=!0,"touch"!==e.pointerType||t.active||t.scrolling||ew(()=>ek(t.key)),Q.current=null,ee.current=null,ei(null))},eT=()=>{let e=Q.current;(null==e?void 0:e.timer)&&clearTimeout(e.timer),Q.current=null,ei(null)},eM=async function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];try{var t;await m(e?"term:request-write":"term:focus",{id:q.current,force:e}),j(!1),null===(t=I.current)||void 0===t||t.focus()}catch(e){(null==e?void 0:e.code)==="EWRITELOCK"&&j(!0)}};return(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",minHeight:0,position:"relative"},children:[(0,n.jsxs)("div",{className:"terminal-surface",style:{background:R.termHostBg},children:[(0,n.jsx)("div",{ref:S,className:"terminal-screen",onClick:()=>{var e;null===(e=I.current)||void 0===e||e.focus(),!er.current&&Z.current&&ey({forceLive:!0}),eM(!1)},style:{height:"100%",padding:"3px 5px 3px 9px",background:R.termHostBg,touchAction:"none",overflow:"hidden"}}),!D&&!_&&!A&&p&&(0,n.jsxs)("div",{className:"terminal-boot",role:"status","aria-live":"polite",style:{background:R.termHostBg,color:R.xterm.foreground},children:[(0,n.jsx)("span",{className:"terminal-boot-spinner","aria-hidden":"true",style:{color:R.keybar.accent}}),(0,n.jsx)("span",{children:"正在启动终端"})]}),!D&&_&&!A&&p&&(0,n.jsx)("div",{className:"terminal-boot-warning",role:"status",style:{background:R.keybar.bg,borderColor:R.keybar.border,color:R.keybar.keyText},children:"终端初始化较慢"})]}),A&&p&&(0,n.jsxs)("div",{role:"alert",style:{position:"absolute",inset:"42% auto auto 50%",transform:"translate(-50%,-50%)",zIndex:47,maxWidth:"min(420px,calc(100% - 32px))",padding:"10px 12px",border:"1px solid ".concat(R.keybar.keyBorder),borderRadius:7,background:"rgba(24,24,29,.96)",color:R.xterm.foreground,fontSize:12,lineHeight:1.5,textAlign:"center"},children:["终端启动失败:",A]}),X&&p&&(0,n.jsxs)("div",{style:{position:"absolute",top:10,right:10,zIndex:48,display:"flex",alignItems:"center",gap:7,padding:"7px 9px",border:"1px solid #6b5634",borderRadius:8,background:"rgba(39,32,22,.95)",color:"#d9b56c",fontSize:11},children:["其他设备正在输入 ",(0,n.jsx)("button",{style:{border:0,borderRadius:5,padding:"4px 7px",background:"#e0af68",color:"#17120a",fontSize:10},onClick:()=>eM(!0),children:"接管输入"})]}),x?(0,n.jsx)("div",{className:"keybar",style:{display:"flex",justifyContent:"center",padding:"5px 7px calc(env(safe-area-inset-bottom) + 5px)",borderTop:"1px solid ".concat(R.keybar.border),background:R.keybar.bg,flexShrink:0},children:(0,n.jsx)("button",{className:"keybar-restore",style:{...eu,minWidth:80},onPointerDown:e=>e.preventDefault(),onClick:()=>E(!1),children:"⌨ 显示快捷键"})}):(0,n.jsx)("div",{ref:J,className:"keybar keybar-scroll",style:{background:R.keybar.bg,display:"flex",gap:5,overflowX:"auto",padding:"5px calc(env(safe-area-inset-right) + 7px) calc(env(safe-area-inset-bottom) + 5px)",borderTop:"1px solid ".concat(R.keybar.border),flexShrink:0,WebkitOverflowScrolling:"touch",scrollbarWidth:"none",touchAction:"pan-x"},children:ex.map(e=>(0,n.jsx)("button",{"data-key":e,"data-dragging":el===e?"1":void 0,tabIndex:-1,style:{...eu,minWidth:"enter"===e?44:eu.minWidth,background:el===e?R.keybar.drag:"ctrl"===e&&W?R.keybar.accent:eu.background,color:el===e||"ctrl"===e&&W?R.keybar.accentText:eu.color,cursor:el===e?"grabbing":"grab",transform:el===e?"scale(1.08)":"none",transition:"transform .12s, background .12s"},onPointerUpCapture:eE,onPointerCancel:eT,onContextMenu:e=>e.preventDefault(),onMouseDown:e=>e.preventDefault(),children:d[e]},e))})]})}},8810:function(){}}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[541],{722:function(e,t,r){Promise.resolve().then(r.bind(r,2407))},9532:function(e,t,r){"use strict";function n(e,t){var r,n,a,o;return{height:Math.round(null!==(r=null==e?void 0:e.height)&&void 0!==r?r:t.height),width:Math.round(null!==(n=null==e?void 0:e.width)&&void 0!==n?n:t.width),top:Math.round(null!==(a=null==e?void 0:e.offsetTop)&&void 0!==a?a:0),left:Math.round(null!==(o=null==e?void 0:e.offsetLeft)&&void 0!==o?o:0)}}function a(e){e&&(e.scrollLeft=0)}r.d(t,{i:function(){return a},x:function(){return n}})},2407:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return H}});var n=r(1996),a=r(7004),o=r(6121),i=r(7317),s=r(9931);let l=["codex","claude agents","opencode","agent-tui"],d="agent-web-shell:project-response:v1",c=new Set(["project:list","project:get","project:create","project:rename","project:delete","project:roots","project:directories","project:check"]);var p=r(9516),u=r.n(p),f=r(509);function b(e){let{children:t}=e,r=function(){let[e,t]=(0,o.useState)("loading"),[r,n]=(0,o.useState)(null),[a]=(0,o.useState)(""),[i,s]=(0,o.useState)(null),l=(0,o.useCallback)(async()=>{t("loading"),s(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 r=await e.json();n(r.user),t("authenticated")}catch(e){s("无法连接远程控制台"),t("needsLogin")}},[]);(0,o.useEffect)(()=>{l()},[l]);let d=(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 r=await e.json();return n(r.user),t("authenticated"),r.wsNonce},[]),c=(0,o.useCallback)(async()=>!0,[]);return{status:e,user:r,error:i,csrfToken:a,setup:c,login:c,logout:l,refresh:l,getWsNonce:d}}(),[a,i]=(0,o.useState)(()=>Date.now()),[s,l]=(0,o.useState)(()=>Date.now());if((0,o.useEffect)(()=>{if("loading"!==r.status||r.error)return;let e=Date.now();i(e),l(e);let t=window.setInterval(()=>l(Date.now()),1e3);return()=>window.clearInterval(t)},[r.error,r.status]),"authenticated"===r.status)return(0,n.jsx)(n.Fragment,{children:t(r)});let d=!r.error;return(0,n.jsxs)("main",{className:"jsx-3fdfcb7d409f1983 "+"remote-gate".concat(d?" is-connecting":" is-error"),children:[(0,n.jsx)("div",{"aria-hidden":"true",className:"jsx-3fdfcb7d409f1983 remote-grid"}),(0,n.jsx)("div",{"aria-hidden":"true",className:"jsx-3fdfcb7d409f1983 remote-stream remote-stream-left"}),(0,n.jsx)("div",{"aria-hidden":"true",className:"jsx-3fdfcb7d409f1983 remote-stream remote-stream-right"}),(0,n.jsxs)("div",{className:"jsx-3fdfcb7d409f1983 remote-content",children:[(0,n.jsxs)("div",{"aria-hidden":"true",className:"jsx-3fdfcb7d409f1983 remote-scene",children:[(0,n.jsx)("div",{className:"jsx-3fdfcb7d409f1983 remote-beam"}),(0,n.jsx)("div",{className:"jsx-3fdfcb7d409f1983 remote-pulse remote-pulse-one"}),(0,n.jsx)("div",{className:"jsx-3fdfcb7d409f1983 remote-pulse remote-pulse-two"}),(0,n.jsxs)("div",{className:"jsx-3fdfcb7d409f1983 remote-device",children:[(0,n.jsx)("div",{className:"jsx-3fdfcb7d409f1983 remote-device-back"}),(0,n.jsxs)("div",{className:"jsx-3fdfcb7d409f1983 remote-screen",children:[(0,n.jsx)("div",{className:"jsx-3fdfcb7d409f1983 remote-screen-scan"}),(0,n.jsx)(f.Z,{size:44,strokeWidth:1.25})]}),(0,n.jsx)("div",{className:"jsx-3fdfcb7d409f1983 remote-device-stand"})]})]}),(0,n.jsxs)("div",{role:d?"status":"alert","aria-label":d?"正在连接远程控制台":r.error||void 0,className:"jsx-3fdfcb7d409f1983 remote-status",children:[(0,n.jsx)(f.Z,{size:20,strokeWidth:1.8,"aria-hidden":"true"}),(0,n.jsx)("span",{className:"jsx-3fdfcb7d409f1983",children:r.error||"远程连接中"}),d&&(0,n.jsxs)("span",{"aria-hidden":"true",className:"jsx-3fdfcb7d409f1983 remote-elapsed",children:["\xb7 已持续 ",Math.max(0,Math.floor((s-a)/1e3))," 秒"]})]})]}),(0,n.jsx)(u(),{id:"3fdfcb7d409f1983",children:'.remote-gate.jsx-3fdfcb7d409f1983{position:relative;min-height:100dvh;display:grid;-webkit-box-align:center;-webkit-align-items:center;-moz-box-align:center;-ms-flex-align:center;align-items:center;justify-items:center;place-items:center;overflow:hidden;background:-webkit-linear-gradient(332deg,rgba(45,112,124,.2),transparent 31%),-webkit-linear-gradient(202deg,rgba(48,112,87,.17),transparent 34%),rgba(7,10,14,.92);background:-moz-linear-gradient(332deg,rgba(45,112,124,.2),transparent 31%),-moz-linear-gradient(202deg,rgba(48,112,87,.17),transparent 34%),rgba(7,10,14,.92);background:-o-linear-gradient(332deg,rgba(45,112,124,.2),transparent 31%),-o-linear-gradient(202deg,rgba(48,112,87,.17),transparent 34%),rgba(7,10,14,.92);background:linear-gradient(118deg,rgba(45,112,124,.2),transparent 31%),linear-gradient(248deg,rgba(48,112,87,.17),transparent 34%),rgba(7,10,14,.92);backdrop-filter:blur(8px)saturate(1.12);-webkit-backdrop-filter:blur(8px)saturate(1.12);color:#e8e8ee;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}.remote-gate.jsx-3fdfcb7d409f1983::before{content:"";position:absolute;inset:0;pointer-events:none;background-image:-webkit-linear-gradient(rgba(91,220,194,.045)1px,transparent 1px),-webkit-linear-gradient(left,rgba(102,166,255,.045)1px,transparent 1px);background-image:-moz-linear-gradient(rgba(91,220,194,.045)1px,transparent 1px),-moz-linear-gradient(left,rgba(102,166,255,.045)1px,transparent 1px);background-image:-o-linear-gradient(rgba(91,220,194,.045)1px,transparent 1px),-o-linear-gradient(left,rgba(102,166,255,.045)1px,transparent 1px);background-image:linear-gradient(rgba(91,220,194,.045)1px,transparent 1px),linear-gradient(90deg,rgba(102,166,255,.045)1px,transparent 1px);-webkit-background-size:56px 56px;-moz-background-size:56px 56px;-o-background-size:56px 56px;background-size:56px 56px;-webkit-mask-image:-webkit-linear-gradient(top,transparent 5%,#000 48%,transparent 100%);mask-image:-webkit-linear-gradient(top,transparent 5%,#000 48%,transparent 100%);mask-image:-moz-linear-gradient(top,transparent 5%,#000 48%,transparent 100%);mask-image:-o-linear-gradient(top,transparent 5%,#000 48%,transparent 100%);mask-image:linear-gradient(to bottom,transparent 5%,#000 48%,transparent 100%);opacity:.82}.remote-grid.jsx-3fdfcb7d409f1983{position:absolute;left:-22%;right:-22%;bottom:-28%;height:70%;-webkit-transform:perspective(440px)rotatex(64deg);-moz-transform:perspective(440px)rotatex(64deg);transform:perspective(440px)rotatex(64deg);-webkit-transform-origin:center bottom;-moz-transform-origin:center bottom;-ms-transform-origin:center bottom;-o-transform-origin:center bottom;transform-origin:center bottom;background-image:-webkit-linear-gradient(rgba(95,220,196,.16)1px,transparent 1px),-webkit-linear-gradient(left,rgba(101,165,255,.14)1px,transparent 1px);background-image:-moz-linear-gradient(rgba(95,220,196,.16)1px,transparent 1px),-moz-linear-gradient(left,rgba(101,165,255,.14)1px,transparent 1px);background-image:-o-linear-gradient(rgba(95,220,196,.16)1px,transparent 1px),-o-linear-gradient(left,rgba(101,165,255,.14)1px,transparent 1px);background-image:linear-gradient(rgba(95,220,196,.16)1px,transparent 1px),linear-gradient(90deg,rgba(101,165,255,.14)1px,transparent 1px);-webkit-background-size:46px 46px;-moz-background-size:46px 46px;-o-background-size:46px 46px;background-size:46px 46px;-webkit-mask-image:-webkit-linear-gradient(top,transparent 4%,#000 60%,transparent 96%);mask-image:-webkit-linear-gradient(top,transparent 4%,#000 60%,transparent 96%);mask-image:-moz-linear-gradient(top,transparent 4%,#000 60%,transparent 96%);mask-image:-o-linear-gradient(top,transparent 4%,#000 60%,transparent 96%);mask-image:linear-gradient(to bottom,transparent 4%,#000 60%,transparent 96%);opacity:.72}.remote-stream.jsx-3fdfcb7d409f1983{position:absolute;top:-12%;width:1px;height:124%;background:-webkit-linear-gradient(top,transparent,rgba(96,222,196,.5),transparent 72%);background:-moz-linear-gradient(top,transparent,rgba(96,222,196,.5),transparent 72%);background:-o-linear-gradient(top,transparent,rgba(96,222,196,.5),transparent 72%);background:linear-gradient(to bottom,transparent,rgba(96,222,196,.5),transparent 72%);opacity:.55;-webkit-transform:rotate(18deg);-moz-transform:rotate(18deg);-ms-transform:rotate(18deg);-o-transform:rotate(18deg);transform:rotate(18deg);-webkit-transform-origin:top;-moz-transform-origin:top;-ms-transform-origin:top;-o-transform-origin:top;transform-origin:top}.remote-stream.jsx-3fdfcb7d409f1983::after{content:"";position:absolute;left:-2px;top:24%;width:5px;height:54px;background:-webkit-linear-gradient(top,transparent,#8cf3dd,transparent);background:-moz-linear-gradient(top,transparent,#8cf3dd,transparent);background:-o-linear-gradient(top,transparent,#8cf3dd,transparent);background:linear-gradient(to bottom,transparent,#8cf3dd,transparent);-webkit-filter:blur(1px);filter:blur(1px);-webkit-animation:streamFlow 2.6s linear infinite;-moz-animation:streamFlow 2.6s linear infinite;-o-animation:streamFlow 2.6s linear infinite;animation:streamFlow 2.6s linear infinite}.remote-stream-left.jsx-3fdfcb7d409f1983{left:16%}.remote-stream-right.jsx-3fdfcb7d409f1983{right:18%;-webkit-transform:rotate(-15deg);-moz-transform:rotate(-15deg);-ms-transform:rotate(-15deg);-o-transform:rotate(-15deg);transform:rotate(-15deg)}.remote-stream-right.jsx-3fdfcb7d409f1983::after{-webkit-animation-delay:-1.3s;-moz-animation-delay:-1.3s;-o-animation-delay:-1.3s;animation-delay:-1.3s}.remote-content.jsx-3fdfcb7d409f1983{position:relative;z-index:1;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-moz-box-orient:vertical;-moz-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;-moz-box-align:center;-ms-flex-align:center;align-items:center;gap:24px}.remote-scene.jsx-3fdfcb7d409f1983{position:relative;width:220px;height:154px;-webkit-perspective:520px;-moz-perspective:520px;perspective:520px;-webkit-transform-style:preserve-3d;-moz-transform-style:preserve-3d;transform-style:preserve-3d}.remote-beam.jsx-3fdfcb7d409f1983{position:absolute;left:50%;top:50%;width:184px;height:2px;-webkit-transform:translate(-50%,-50%)rotatex(68deg);-moz-transform:translate(-50%,-50%)rotatex(68deg);-ms-transform:translate(-50%,-50%)rotatex(68deg);-o-transform:translate(-50%,-50%)rotatex(68deg);transform:translate(-50%,-50%)rotatex(68deg);background:-webkit-linear-gradient(left,transparent,rgba(118,177,255,.86),#8cf3dd,transparent);background:-moz-linear-gradient(left,transparent,rgba(118,177,255,.86),#8cf3dd,transparent);background:-o-linear-gradient(left,transparent,rgba(118,177,255,.86),#8cf3dd,transparent);background:linear-gradient(90deg,transparent,rgba(118,177,255,.86),#8cf3dd,transparent);-webkit-box-shadow:0 0 16px rgba(105,222,205,.5);-moz-box-shadow:0 0 16px rgba(105,222,205,.5);box-shadow:0 0 16px rgba(105,222,205,.5);-webkit-animation:beamConnect 1.8s ease-in-out infinite;-moz-animation:beamConnect 1.8s ease-in-out infinite;-o-animation:beamConnect 1.8s ease-in-out infinite;animation:beamConnect 1.8s ease-in-out infinite}.remote-pulse.jsx-3fdfcb7d409f1983{position:absolute;left:50%;top:47%;width:132px;height:86px;border:1px solid rgba(112,231,207,.42);-webkit-border-radius:8px;-moz-border-radius:8px;border-radius:8px;-webkit-transform:translate(-50%,-50%)rotatey(-12deg)rotatex(4deg)translatez(-20px);-moz-transform:translate(-50%,-50%)rotatey(-12deg)rotatex(4deg)translatez(-20px);-ms-transform:translate(-50%,-50%)rotatey(-12deg)rotatex(4deg)translatez(-20px);-o-transform:translate(-50%,-50%)rotatey(-12deg)rotatex(4deg)translatez(-20px);transform:translate(-50%,-50%)rotatey(-12deg)rotatex(4deg)translatez(-20px);opacity:0;-webkit-animation:signalPulse 2.4s ease-out infinite;-moz-animation:signalPulse 2.4s ease-out infinite;-o-animation:signalPulse 2.4s ease-out infinite;animation:signalPulse 2.4s ease-out infinite}.remote-pulse-two.jsx-3fdfcb7d409f1983{-webkit-animation-delay:1.2s;-moz-animation-delay:1.2s;-o-animation-delay:1.2s;animation-delay:1.2s}.remote-device.jsx-3fdfcb7d409f1983{position:absolute;left:50%;top:50%;width:136px;height:108px;-webkit-transform-style:preserve-3d;-moz-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transform:translate(-50%,-50%)rotatey(-12deg)rotatex(4deg);-moz-transform:translate(-50%,-50%)rotatey(-12deg)rotatex(4deg);-ms-transform:translate(-50%,-50%)rotatey(-12deg)rotatex(4deg);-o-transform:translate(-50%,-50%)rotatey(-12deg)rotatex(4deg);transform:translate(-50%,-50%)rotatey(-12deg)rotatex(4deg);-webkit-animation:deviceFloat 3.2s ease-in-out infinite;-moz-animation:deviceFloat 3.2s ease-in-out infinite;-o-animation:deviceFloat 3.2s ease-in-out infinite;animation:deviceFloat 3.2s ease-in-out infinite}.remote-device-back.jsx-3fdfcb7d409f1983{position:absolute;inset:3px 2px 17px 7px;border:1px solid rgba(118,177,255,.2);-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px;background:rgba(14,18,27,.68);-webkit-transform:translatez(-12px)translate(7px,6px);-moz-transform:translatez(-12px)translate(7px,6px);-ms-transform:translatez(-12px)translate(7px,6px);-o-transform:translatez(-12px)translate(7px,6px);transform:translatez(-12px)translate(7px,6px)}.remote-screen.jsx-3fdfcb7d409f1983{position:absolute;inset:0 0 18px;display:grid;-webkit-box-align:center;-webkit-align-items:center;-moz-box-align:center;-ms-flex-align:center;align-items:center;justify-items:center;place-items:center;overflow:hidden;border:1px solid rgba(132,232,215,.58);-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px;background:rgba(10,15,22,.76);color:#9bf4e3;-webkit-box-shadow:inset 0 0 24px rgba(86,205,185,.08),0 14px 34px rgba(0,0,0,.28),0 0 24px rgba(80,208,185,.14);-moz-box-shadow:inset 0 0 24px rgba(86,205,185,.08),0 14px 34px rgba(0,0,0,.28),0 0 24px rgba(80,208,185,.14);box-shadow:inset 0 0 24px rgba(86,205,185,.08),0 14px 34px rgba(0,0,0,.28),0 0 24px rgba(80,208,185,.14);-webkit-transform:translatez(8px);-moz-transform:translatez(8px);-ms-transform:translatez(8px);-o-transform:translatez(8px);transform:translatez(8px)}.remote-screen.jsx-3fdfcb7d409f1983::before{content:"";position:absolute;inset:7px;border:1px solid rgba(116,174,255,.13);-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.remote-screen-scan.jsx-3fdfcb7d409f1983{position:absolute;left:9px;right:9px;height:1px;background:#8cf3dd;-webkit-box-shadow:0 0 8px rgba(140,243,221,.85);-moz-box-shadow:0 0 8px rgba(140,243,221,.85);box-shadow:0 0 8px rgba(140,243,221,.85);-webkit-animation:screenScan 2s ease-in-out infinite;-moz-animation:screenScan 2s ease-in-out infinite;-o-animation:screenScan 2s ease-in-out infinite;animation:screenScan 2s ease-in-out infinite}.remote-device-stand.jsx-3fdfcb7d409f1983{position:absolute;left:50%;bottom:4px;width:44px;height:14px;border-bottom:2px solid rgba(147,183,202,.55);-webkit-transform:translatex(-50%)translatez(4px)skewx(-14deg);-moz-transform:translatex(-50%)translatez(4px)skewx(-14deg);-ms-transform:translatex(-50%)translatez(4px)skewx(-14deg);-o-transform:translatex(-50%)translatez(4px)skewx(-14deg);transform:translatex(-50%)translatez(4px)skewx(-14deg)}.remote-device-stand.jsx-3fdfcb7d409f1983::before{content:"";position:absolute;left:50%;top:-5px;width:2px;height:9px;background:rgba(147,183,202,.55)}.remote-status.jsx-3fdfcb7d409f1983{min-height:24px;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-moz-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;color:#cbd2dc;font-size:13px;line-height:20px;text-shadow:0 1px 10px rgba(0,0,0,.45)}.remote-elapsed.jsx-3fdfcb7d409f1983{color:#9ca6b6;font-size:12px}.is-error.jsx-3fdfcb7d409f1983 .remote-screen.jsx-3fdfcb7d409f1983,.is-error.jsx-3fdfcb7d409f1983 .remote-status.jsx-3fdfcb7d409f1983{color:#e2a5a5;border-color:rgba(226,165,165,.4)}.is-error.jsx-3fdfcb7d409f1983 .remote-screen-scan.jsx-3fdfcb7d409f1983,.is-error.jsx-3fdfcb7d409f1983 .remote-beam.jsx-3fdfcb7d409f1983,.is-error.jsx-3fdfcb7d409f1983 .remote-pulse.jsx-3fdfcb7d409f1983,.is-error.jsx-3fdfcb7d409f1983 .remote-stream.jsx-3fdfcb7d409f1983::after,.is-error.jsx-3fdfcb7d409f1983 .remote-device.jsx-3fdfcb7d409f1983{-webkit-animation:none;-moz-animation:none;-o-animation:none;animation:none}@-webkit-keyframes deviceFloat{0%,100%{-webkit-transform:translate(-50%,-50%)rotatey(-12deg)rotatex(4deg)translatey(0);transform:translate(-50%,-50%)rotatey(-12deg)rotatex(4deg)translatey(0)}50%{-webkit-transform:translate(-50%,-50%)rotatey(-8deg)rotatex(2deg)translatey(-6px);transform:translate(-50%,-50%)rotatey(-8deg)rotatex(2deg)translatey(-6px)}}@-moz-keyframes deviceFloat{0%,100%{-moz-transform:translate(-50%,-50%)rotatey(-12deg)rotatex(4deg)translatey(0);transform:translate(-50%,-50%)rotatey(-12deg)rotatex(4deg)translatey(0)}50%{-moz-transform:translate(-50%,-50%)rotatey(-8deg)rotatex(2deg)translatey(-6px);transform:translate(-50%,-50%)rotatey(-8deg)rotatex(2deg)translatey(-6px)}}@-o-keyframes deviceFloat{0%,100%{-o-transform:translate(-50%,-50%)rotatey(-12deg)rotatex(4deg)translatey(0);transform:translate(-50%,-50%)rotatey(-12deg)rotatex(4deg)translatey(0)}50%{-o-transform:translate(-50%,-50%)rotatey(-8deg)rotatex(2deg)translatey(-6px);transform:translate(-50%,-50%)rotatey(-8deg)rotatex(2deg)translatey(-6px)}}@keyframes deviceFloat{0%,100%{-webkit-transform:translate(-50%,-50%)rotatey(-12deg)rotatex(4deg)translatey(0);-moz-transform:translate(-50%,-50%)rotatey(-12deg)rotatex(4deg)translatey(0);-o-transform:translate(-50%,-50%)rotatey(-12deg)rotatex(4deg)translatey(0);transform:translate(-50%,-50%)rotatey(-12deg)rotatex(4deg)translatey(0)}50%{-webkit-transform:translate(-50%,-50%)rotatey(-8deg)rotatex(2deg)translatey(-6px);-moz-transform:translate(-50%,-50%)rotatey(-8deg)rotatex(2deg)translatey(-6px);-o-transform:translate(-50%,-50%)rotatey(-8deg)rotatex(2deg)translatey(-6px);transform:translate(-50%,-50%)rotatey(-8deg)rotatex(2deg)translatey(-6px)}}@-webkit-keyframes signalPulse{0%{opacity:0;-webkit-transform:translate(-50%,-50%)rotatey(-12deg)rotatex(4deg)translatez(-18px)scale(.82);transform:translate(-50%,-50%)rotatey(-12deg)rotatex(4deg)translatez(-18px)scale(.82)}28%{opacity:.58}100%{opacity:0;-webkit-transform:translate(-50%,-50%)rotatey(-12deg)rotatex(4deg)translatez(-42px)scale(1.5);transform:translate(-50%,-50%)rotatey(-12deg)rotatex(4deg)translatez(-42px)scale(1.5)}}@-moz-keyframes signalPulse{0%{opacity:0;-moz-transform:translate(-50%,-50%)rotatey(-12deg)rotatex(4deg)translatez(-18px)scale(.82);transform:translate(-50%,-50%)rotatey(-12deg)rotatex(4deg)translatez(-18px)scale(.82)}28%{opacity:.58}100%{opacity:0;-moz-transform:translate(-50%,-50%)rotatey(-12deg)rotatex(4deg)translatez(-42px)scale(1.5);transform:translate(-50%,-50%)rotatey(-12deg)rotatex(4deg)translatez(-42px)scale(1.5)}}@-o-keyframes signalPulse{0%{opacity:0;-o-transform:translate(-50%,-50%)rotatey(-12deg)rotatex(4deg)translatez(-18px)scale(.82);transform:translate(-50%,-50%)rotatey(-12deg)rotatex(4deg)translatez(-18px)scale(.82)}28%{opacity:.58}100%{opacity:0;-o-transform:translate(-50%,-50%)rotatey(-12deg)rotatex(4deg)translatez(-42px)scale(1.5);transform:translate(-50%,-50%)rotatey(-12deg)rotatex(4deg)translatez(-42px)scale(1.5)}}@keyframes signalPulse{0%{opacity:0;-webkit-transform:translate(-50%,-50%)rotatey(-12deg)rotatex(4deg)translatez(-18px)scale(.82);-moz-transform:translate(-50%,-50%)rotatey(-12deg)rotatex(4deg)translatez(-18px)scale(.82);-o-transform:translate(-50%,-50%)rotatey(-12deg)rotatex(4deg)translatez(-18px)scale(.82);transform:translate(-50%,-50%)rotatey(-12deg)rotatex(4deg)translatez(-18px)scale(.82)}28%{opacity:.58}100%{opacity:0;-webkit-transform:translate(-50%,-50%)rotatey(-12deg)rotatex(4deg)translatez(-42px)scale(1.5);-moz-transform:translate(-50%,-50%)rotatey(-12deg)rotatex(4deg)translatez(-42px)scale(1.5);-o-transform:translate(-50%,-50%)rotatey(-12deg)rotatex(4deg)translatez(-42px)scale(1.5);transform:translate(-50%,-50%)rotatey(-12deg)rotatex(4deg)translatez(-42px)scale(1.5)}}@-webkit-keyframes screenScan{0%,100%{top:18%;opacity:.24}50%{top:80%;opacity:.82}}@-moz-keyframes screenScan{0%,100%{top:18%;opacity:.24}50%{top:80%;opacity:.82}}@-o-keyframes screenScan{0%,100%{top:18%;opacity:.24}50%{top:80%;opacity:.82}}@keyframes screenScan{0%,100%{top:18%;opacity:.24}50%{top:80%;opacity:.82}}@-webkit-keyframes beamConnect{0%,100%{opacity:.24;-webkit-transform:translate(-50%,-50%)rotatex(68deg)scalex(.7);transform:translate(-50%,-50%)rotatex(68deg)scalex(.7)}50%{opacity:.9;-webkit-transform:translate(-50%,-50%)rotatex(68deg)scalex(1);transform:translate(-50%,-50%)rotatex(68deg)scalex(1)}}@-moz-keyframes beamConnect{0%,100%{opacity:.24;-moz-transform:translate(-50%,-50%)rotatex(68deg)scalex(.7);transform:translate(-50%,-50%)rotatex(68deg)scalex(.7)}50%{opacity:.9;-moz-transform:translate(-50%,-50%)rotatex(68deg)scalex(1);transform:translate(-50%,-50%)rotatex(68deg)scalex(1)}}@-o-keyframes beamConnect{0%,100%{opacity:.24;-o-transform:translate(-50%,-50%)rotatex(68deg)scalex(.7);transform:translate(-50%,-50%)rotatex(68deg)scalex(.7)}50%{opacity:.9;-o-transform:translate(-50%,-50%)rotatex(68deg)scalex(1);transform:translate(-50%,-50%)rotatex(68deg)scalex(1)}}@keyframes beamConnect{0%,100%{opacity:.24;-webkit-transform:translate(-50%,-50%)rotatex(68deg)scalex(.7);-moz-transform:translate(-50%,-50%)rotatex(68deg)scalex(.7);-o-transform:translate(-50%,-50%)rotatex(68deg)scalex(.7);transform:translate(-50%,-50%)rotatex(68deg)scalex(.7)}50%{opacity:.9;-webkit-transform:translate(-50%,-50%)rotatex(68deg)scalex(1);-moz-transform:translate(-50%,-50%)rotatex(68deg)scalex(1);-o-transform:translate(-50%,-50%)rotatex(68deg)scalex(1);transform:translate(-50%,-50%)rotatex(68deg)scalex(1)}}@-webkit-keyframes streamFlow{from{-webkit-transform:translatey(-90px);transform:translatey(-90px);opacity:0}30%,70%{opacity:.9}to{-webkit-transform:translatey(460px);transform:translatey(460px);opacity:0}}@-moz-keyframes streamFlow{from{-moz-transform:translatey(-90px);transform:translatey(-90px);opacity:0}30%,70%{opacity:.9}to{-moz-transform:translatey(460px);transform:translatey(460px);opacity:0}}@-o-keyframes streamFlow{from{-o-transform:translatey(-90px);transform:translatey(-90px);opacity:0}30%,70%{opacity:.9}to{-o-transform:translatey(460px);transform:translatey(460px);opacity:0}}@keyframes streamFlow{from{-webkit-transform:translatey(-90px);-moz-transform:translatey(-90px);-o-transform:translatey(-90px);transform:translatey(-90px);opacity:0}30%,70%{opacity:.9}to{-webkit-transform:translatey(460px);-moz-transform:translatey(460px);-o-transform:translatey(460px);transform:translatey(460px);opacity:0}}@media(prefers-reduced-motion:reduce){.remote-gate.jsx-3fdfcb7d409f1983 *.jsx-3fdfcb7d409f1983,.remote-gate.jsx-3fdfcb7d409f1983 *.jsx-3fdfcb7d409f1983::before,.remote-gate.jsx-3fdfcb7d409f1983 *.jsx-3fdfcb7d409f1983::after{-webkit-animation:none!important;-moz-animation:none!important;-o-animation:none!important;animation:none!important}}'})]})}var m=r(3797),x=r(2199),g=r(5257),h=r(2090),v=r(1857),w=r(7805),y=r(8026),k=r(6533),j=r(4267);function z(e,t,r){let n=e.findIndex(e=>e.id===t),a=e.findIndex(e=>e.id===r);if(n<0||a<0||n===a)return[...e];let o=[...e],[i]=o.splice(n,1);return o.splice(a,0,i),o}function C(e){let{commands:t,onChange:r,onExecute:a}=e,[i,s]=(0,o.useState)(null),[l,d]=(0,o.useState)(""),[c,p]=(0,o.useState)(null),u=(0,o.useRef)(null),f=()=>{if(!i)return;let e=i.value.trim();return e?e.length>1e3?d("命令最多 1000 个字符"):/[\r\n\0]/.test(e)?d("命令只能包含一行"):void(i.id?r(t.map(t=>t.id===i.id?{...t,command:e}:t)):r([...t,function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:crypto.randomUUID();return{id:t,command:e.trim()}}(e)]),s(null),d("")):d("命令不能为空")},b=(e,t)=>{e.preventDefault(),e.stopPropagation(),u.current=t,p(t),e.currentTarget.setPointerCapture(e.pointerId)},m=e=>{var n;if(!u.current)return;let a=null===(n=document.elementFromPoint(e.clientX,e.clientY))||void 0===n?void 0:n.closest("[data-pinned-id]"),o=null==a?void 0:a.dataset.pinnedId;o&&o!==u.current&&r(z(t,u.current,o))},x=e=>{e.currentTarget.hasPointerCapture(e.pointerId)&&e.currentTarget.releasePointerCapture(e.pointerId),u.current=null,p(null)},g=(e,n)=>{if("ArrowUp"!==e.key&&"ArrowDown"!==e.key)return;e.preventDefault();let a=t.findIndex(e=>e.id===n),o=t[a+("ArrowUp"===e.key?-1:1)];o&&r(z(t,n,o.id))};return(0,n.jsxs)("section",{className:"pinned-commands","aria-labelledby":"pinned-command-title",children:[(0,n.jsxs)("div",{className:"pinned-command-head",children:[(0,n.jsx)("span",{id:"pinned-command-title",children:"置顶命令"}),(0,n.jsx)("button",{className:"history-icon-button",onClick:()=>{s({id:null,value:""}),d("")},"aria-label":"新增置顶命令",title:"新增置顶命令",children:(0,n.jsx)(w.Z,{size:14,"aria-hidden":"true"})})]}),t.map(e=>(null==i?void 0:i.id)===e.id?(0,n.jsx)(S,{editor:i,error:l,onChange:e=>{s({...i,value:e}),d("")},onSave:f,onCancel:()=>{s(null),d("")}},e.id):(0,n.jsxs)("div",{className:"pinned-command-row".concat(c===e.id?" pinned-command-dragging":""),"data-pinned-id":e.id,role:"button",tabIndex:0,onClick:()=>a(e.command),onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&(t.preventDefault(),a(e.command))},children:[(0,n.jsx)("button",{className:"pinned-command-grip",onPointerDown:t=>b(t,e.id),onPointerMove:m,onPointerUp:x,onPointerCancel:x,onKeyDown:t=>g(t,e.id),onClick:e=>e.stopPropagation(),"aria-label":"调整 ".concat(e.command," 的顺序"),title:"拖动排序,或按上下方向键",children:(0,n.jsx)(y.Z,{size:14,"aria-hidden":"true"})}),(0,n.jsx)("code",{children:e.command}),(0,n.jsxs)("div",{className:"pinned-command-actions",onClick:e=>e.stopPropagation(),children:[(0,n.jsx)("button",{className:"history-icon-button",onClick:()=>{s({id:e.id,value:e.command}),d("")},"aria-label":"编辑 ".concat(e.command),title:"编辑",children:(0,n.jsx)(k.Z,{size:12,"aria-hidden":"true"})}),(0,n.jsx)("button",{className:"history-icon-button history-icon-danger",onClick:()=>r(t.filter(t=>t.id!==e.id)),"aria-label":"删除 ".concat(e.command),title:"删除",children:(0,n.jsx)(v.Z,{size:12,"aria-hidden":"true"})})]})]},e.id)),(null==i?void 0:i.id)===null&&(0,n.jsx)(S,{editor:i,error:l,onChange:e=>{s({...i,value:e}),d("")},onSave:f,onCancel:()=>{s(null),d("")}})]})}function S(e){let{editor:t,error:r,onChange:a,onSave:o,onCancel:s}=e;return(0,n.jsxs)("div",{className:"pinned-command-editor",children:[(0,n.jsx)("input",{autoFocus:!0,value:t.value,maxLength:1e3,onChange:e=>a(e.target.value),onKeyDown:e=>{"Enter"===e.key&&o(),"Escape"===e.key&&s()},"aria-label":t.id?"编辑置顶命令":"新增置顶命令"}),(0,n.jsx)("button",{className:"history-icon-button",onClick:o,"aria-label":"保存命令",title:"保存",children:(0,n.jsx)(j.Z,{size:13,"aria-hidden":"true"})}),(0,n.jsx)("button",{className:"history-icon-button",onClick:s,"aria-label":"取消编辑",title:"取消",children:(0,n.jsx)(i.Z,{size:13,"aria-hidden":"true"})}),r&&(0,n.jsx)("small",{role:"alert",children:r})]})}function E(e){let{csrfToken:t,terminalId:r,pinnedCommands:a,onPinnedCommandsChange:i,onFill:s,onExecute:l}=e,[d,c]=(0,o.useState)([]),[p,u]=(0,o.useState)(""),f=(0,o.useCallback)(async()=>{let e=new URLSearchParams({q:p,limit:"200"}),t=await fetch("/api/web-console/history?".concat(e),{credentials:"same-origin"});t.ok&&c((await t.json()).history)},[p]);(0,o.useEffect)(()=>{let e=setTimeout(f,200);return()=>clearTimeout(e)},[f]);let b=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})}),f()},w=e=>{r&&s(e)},y=(0,o.useCallback)(e=>{"[REDACTED]"===e||a.some(t=>t.command===e)||i([...a,{id:crypto.randomUUID(),command:e}])},[i,a]);return(0,n.jsxs)("div",{className:"history-panel",children:[(0,n.jsx)(C,{commands:a,onChange:i,onExecute:l}),(0,n.jsxs)("div",{className:"history-search",children:[(0,n.jsx)("input",{value:p,onChange:e=>u(e.target.value),placeholder:"搜索命令"}),(0,n.jsx)("button",{className:"history-icon-button",onClick:f,"aria-label":"刷新历史",title:"刷新历史",children:(0,n.jsx)(m.Z,{size:13,"aria-hidden":"true"})})]}),d.map(e=>(0,n.jsxs)("div",{className:"history-item".concat(r?"":" history-item-disabled"),role:"button",tabIndex:r?0:-1,onClick:()=>w(e.command),onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&r&&(t.preventDefault(),w(e.command))},children:[(0,n.jsx)("code",{children:e.command}),(0,n.jsxs)("small",{children:[e.cwd," \xb7 ",new Date(e.executedAt).toLocaleString()]}),(0,n.jsxs)("div",{className:"history-item-actions",onClick:e=>e.stopPropagation(),onPointerDown:e=>e.stopPropagation(),children:[(0,n.jsx)("button",{className:"history-icon-button",onClick:()=>navigator.clipboard.writeText(e.command),"aria-label":"复制命令",title:"复制",children:(0,n.jsx)(x.Z,{size:12,"aria-hidden":"true"})}),(0,n.jsx)("button",{className:"history-icon-button",disabled:!r,onClick:()=>w(e.command),"aria-label":"填入命令",title:"填入",children:(0,n.jsx)(g.Z,{size:12,"aria-hidden":"true"})}),(0,n.jsx)("button",{className:"history-icon-button",disabled:"[REDACTED]"===e.command||a.some(t=>t.command===e.command),onClick:()=>y(e.command),"aria-label":"置顶命令",title:"置顶",children:(0,n.jsx)(h.Z,{size:12,"aria-hidden":"true"})}),(0,n.jsx)("button",{className:"history-icon-button history-icon-danger",onClick:()=>b(e.id),"aria-label":"删除历史",title:"删除",children:(0,n.jsx)(v.Z,{size:12,"aria-hidden":"true"})})]})]},e.id)),!d.length&&(0,n.jsx)("div",{className:"history-empty",children:"暂无 Shell 命令历史"}),!r&&!!d.length&&(0,n.jsx)("div",{className:"history-empty",children:"请先打开一个终端页签"})]})}var N=r(9149);let T=[{id:"pearl",label:"珍珠白",swatch:"#f5f6fa",preview:["#f5f6fa","#4f6ef7"],cssVars:{"--ui-color-scheme":"light","--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-color-scheme":"dark","--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-color-scheme":"dark","--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"}}],P="pearl",L=Object.fromEntries(T.map(e=>[e.id,e])),R={dark:"noir",black:"noir",gray:"noir",blue:"noir",red:"noir",yellow:"noir",green:"noir",white:"pearl"};function D(e){if(e&&e in L)return L[e];let t=e?R[e]:void 0;return t?L[t]:L[P]}function I(e){var t;let{username:r,themeId:a,onThemeChange:i,accent:s,accentText:l}=e,[d,c]=(0,o.useState)(!1),p=(0,o.useRef)(null),u=(0,o.useRef)(null),f=(0,o.useRef)(null),[b,m]=(0,o.useState)(null),[x,g]=(0,o.useState)(null);(0,o.useEffect)(()=>{var e,t;g(null!==(t=null===(e=p.current)||void 0===e?void 0:e.closest(".web-root"))&&void 0!==t?t:document.body)},[]);let h=(null!==(t=r.trim()[0])&&void 0!==t?t:"?").toUpperCase(),v=()=>{let e=u.current;if(!e)return;let t=e.getBoundingClientRect(),r=Math.max(8,Math.min(window.innerWidth-176-8,t.right-176));m({top:t.bottom+6,left:r})};return(0,o.useLayoutEffect)(()=>{if(!d){m(null);return}return v(),window.addEventListener("resize",v),window.addEventListener("scroll",v,!0),()=>{window.removeEventListener("resize",v),window.removeEventListener("scroll",v,!0)}},[d]),(0,o.useEffect)(()=>{if(!d)return;let e=e=>{var t,r;let n=e.target;(null===(t=p.current)||void 0===t||!t.contains(n))&&(null!==(r=f.current)&&void 0!==r&&r.contains(n)||c(!1))},t=e=>{"Escape"===e.key&&c(!1)},r=window.setTimeout(()=>{window.addEventListener("pointerdown",e,!0)},0);return window.addEventListener("keydown",t),()=>{window.clearTimeout(r),window.removeEventListener("pointerdown",e,!0),window.removeEventListener("keydown",t)}},[d]),(0,n.jsxs)("div",{ref:p,className:"theme-picker",children:[(0,n.jsx)("button",{ref:u,type:"button",className:"theme-avatar","aria-label":"换肤(".concat(r,")"),title:r,"aria-expanded":d,onPointerDown:e=>e.stopPropagation(),onClick:e=>{e.preventDefault(),e.stopPropagation(),c(e=>!e)},style:{border:"1px solid ".concat(s),background:s,color:l},children:h}),d&&b&&x&&(0,N.createPortal)((0,n.jsxs)("div",{ref:f,className:"theme-popover",role:"dialog","aria-label":"选择皮肤",style:{position:"fixed",top:b.top,left:b.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,n.jsx)("div",{style:{fontSize:10,color:"var(--ui-connection-text, #777b8c)",margin:"2px 4px 6px",letterSpacing:.5},children:"皮肤"}),(0,n.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:2},children:T.map(e=>{let t=e.id===a;return(0,n.jsxs)("button",{type:"button",className:"theme-popover-item","aria-label":e.label,"aria-pressed":t,onPointerDown:e=>e.stopPropagation(),onClick:()=>{i(e.id),c(!1)},style:{background:t?"color-mix(in srgb, var(--ui-tab-accent, #7aa2f7) 14%, transparent)":"transparent"},children:[(0,n.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,n.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,n.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,n.jsx)("path",{d:"m5 12 4 4L19 6"})})]},e.id)})})]}),x)]})}var M=r(9532);let F="agent-webapp:ready:v1",W=(0,a.default)(()=>Promise.all([r.e(118),r.e(658),r.e(366)]).then(r.bind(r,3366)),{loadableGenerated:{webpack:()=>[3366]},ssr:!1}),B=(0,a.default)(()=>r.e(196).then(r.bind(r,5196)),{loadableGenerated:{webpack:()=>[5196]},ssr:!1}),O=(0,a.default)(()=>r.e(137).then(r.bind(r,5137)),{loadableGenerated:{webpack:()=>[5137]},ssr:!1});function H(){return(0,n.jsx)(b,{children:e=>(0,n.jsx)(A,{auth:e})})}let U={id:"webapp-agent",title:"智能助手",kind:"webapp"};function A(e){var t,r,a,p,u;let{auth:f}=e,{state:b,epoch:m,rpc:x,onEvent:g,onTerminalData:h,onTerminalReset:v,sendTerminalInput:w}=function(e,t,r){let[n,a]=(0,o.useState)({connected:!1,error:null}),[i,s]=(0,o.useState)(0),l=(0,o.useRef)(null),d=(0,o.useRef)(0),c=(0,o.useRef)(new Map),p=(0,o.useRef)([]),u=(0,o.useRef)(0),f=(0,o.useRef)(new Map),b=(0,o.useRef)(new Map),m=(0,o.useRef)(new Map),x=(0,o.useRef)(1e3),g=(0,o.useRef)(!1),h=(0,o.useRef)(null),v=(0,o.useRef)(e),w=(0,o.useRef)(t),y=(0,o.useRef)(r);v.current=e,w.current=t,y.current=r;let k=(0,o.useCallback)((e,t)=>{let r=f.current.get(e);return r||f.current.set(e,r=new Set),r.add(t),()=>r.delete(t)},[]),j=(0,o.useCallback)((e,t)=>{let r=b.current.get(e);return r||b.current.set(e,r=new Set),r.add(t),()=>r.delete(t)},[]),z=(0,o.useCallback)((e,t)=>{let r=m.current.get(e);return r||m.current.set(e,r=new Set),r.add(t),()=>r.delete(t)},[]),C=(0,o.useCallback)((e,t)=>{let r=l.current;if(!r||r.readyState!==WebSocket.OPEN)return!1;let n=new TextEncoder().encode(t),a=new Uint8Array(6+n.byteLength),o=new DataView(a.buffer);return a[0]=1,a[1]=1,o.setUint32(2,e),a.set(n,6),r.send(a),!0},[]),S=(0,o.useCallback)(e=>{let t=l.current;(null==t?void 0:t.readyState)===WebSocket.OPEN?t.send(e):p.current.push(e)},[]),E=(0,o.useCallback)(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:15e3;return new Promise((n,a)=>{let o=++u.current,i=setTimeout(()=>{c.current.delete(o),a(Error("".concat(e," timeout")))},r);c.current.set(o,{resolve:n,reject:a,timer:i}),S(JSON.stringify({type:e,_req:o,...t}))})},[S]),N=(0,o.useCallback)(async()=>{let e,t;g.current=!1;let r=++d.current;h.current&&(clearInterval(h.current),h.current=null);let n=l.current;if(n){n.onopen=n.onmessage=n.onerror=n.onclose=null;try{n.close()}catch(e){}}try{e=await w.current()}catch(e){r===d.current&&y.current();return}if(r===d.current&&!g.current){try{t=new WebSocket("".concat("".concat("https:"===location.protocol?"wss:":"ws:","//").concat(location.host,"/ws"),"?nonce=").concat(encodeURIComponent(e)))}catch(e){a({connected:!1,error:String(e)});return}t.binaryType="arraybuffer",l.current=t,t.onopen=()=>{if(r!==d.current||l.current!==t)return;for(let e of(x.current=1e3,a({connected:!0,error:null}),s(e=>e+1),p.current.splice(0)))t.send(e);let e=Date.now();h.current=setInterval(()=>{if(l.current!==t||t.readyState!==WebSocket.OPEN){clearInterval(h.current),h.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 n=()=>{e=Date.now()};t.addEventListener("message",n),t.addEventListener("close",()=>t.removeEventListener("message",n),{once:!0})},t.onmessage=e=>{var n,a,o;let i;if(r===d.current&&l.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===(a=b.current.get(e))||void 0===a||a.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===(o=m.current.get(e))||void 0===o||o.forEach(e=>e())}else v.current(t);return}try{i=JSON.parse(e.data)}catch(e){return}if("error"===i.type&&null!=i.id){let e=c.current.get(i.id);if(e){c.current.delete(i.id),clearTimeout(e.timer);let t=Object.assign(Error(i.error||"gateway error"),{code:i.code});e.reject(t)}return}if(null!=i.id&&"string"==typeof i.type&&i.type.endsWith(":result")){let e=c.current.get(i.id);e&&(c.current.delete(i.id),clearTimeout(e.timer),e.resolve(i));return}null===(n=f.current.get(i.type))||void 0===n||n.forEach(e=>e(i))}},t.onclose=e=>{if(r!==d.current||l.current!==t)return;if(h.current&&(clearInterval(h.current),h.current=null),l.current=null,a({connected:!1,error:null}),4001===e.code||4003===e.code){y.current();return}if(g.current)return;let n=x.current;x.current=Math.min(2*n,8e3),setTimeout(()=>{g.current||r!==d.current||N()},n)},t.onerror=()=>{}}},[]);return(0,o.useEffect)(()=>(N(),()=>{g.current=!0,d.current++,h.current&&(clearInterval(h.current),h.current=null);let e=l.current;if(l.current=null,e){e.onopen=e.onmessage=e.onerror=e.onclose=null;try{e.close()}catch(e){}}}),[N]),{state:n,epoch:i,rpc:E,onEvent:k,onTerminalData:j,onTerminalReset:z,sendTerminalInput:C,reconnect:N}}(()=>{},f.getWsNonce,f.refresh),[y,k]=(0,o.useState)([{...U}]),[j,z]=(0,o.useState)(U.id),[C,S]=(0,o.useState)({}),N=(0,o.useRef)(!1),T=(0,o.useRef)(null),L=(0,o.useRef)(new Map),R=(0,o.useRef)(new Map),H=(0,o.useCallback)((e,t)=>{L.current.set(e,t);let r=window.setTimeout(()=>{if(L.current.get(e)!==t)return;let r=R.current.get(e);r&&(R.current.delete(e),t(r,!0))},180);return()=>{window.clearTimeout(r),L.current.get(e)===t&&L.current.delete(e)}},[]),A=(0,o.useCallback)(e=>{var t;if(!j||(null===(t=y.find(e=>e.id===j))||void 0===t?void 0:t.kind)==="webapp")return;let r=L.current.get(j);r?r(e):x("term:input",{id:j,data:"\x15".concat(e)}).catch(()=>{}),Q(!1)},[j,x,y]),[q,V]=(0,o.useState)(!1),[_,Y]=(0,o.useState)({}),[K,J]=(0,o.useState)(null),[G,Q]=(0,o.useState)(!1),[$,ee]=(0,o.useState)("files"),[et,er]=(0,o.useState)(null),[en,ea]=(0,o.useState)(!0),[eo,ei]=(0,o.useState)(null),[es,el]=(0,o.useState)({xRatio:.94,yRatio:.65,anchor:"right"}),[ed,ec]=(0,o.useState)(!1),[ep,eu]=(0,o.useState)([]),[ef,eb]=(0,o.useState)(l.map((e,t)=>({id:"default-".concat(t+1),command:e}))),[em,ex]=(0,o.useState)(P),[eg,eh]=(0,o.useState)(!1),[ev,ew]=(0,o.useState)(!1),ey=D(em),ek=(0,o.useRef)(null),ej=(0,o.useRef)(null),[ez,eC]=(0,o.useState)(0),[eS,eE]=(0,o.useState)(!1),eN=(0,o.useRef)(null),eT=(0,o.useRef)(null),eP=(0,o.useRef)(null),eL=(0,o.useCallback)(e=>{var t,r;null===(r=eP.current)||void 0===r||null===(t=r.contentWindow)||void 0===t||t.postMessage({type:"agent-web-shell:skin:v1",skin:e},window.location.origin)},[]);(0,o.useEffect)(()=>{eL(em)},[em,eL]),(0,o.useEffect)(()=>{let e=e=>{var t,r,n,a,o,i,s,l,p,u,f,b,m,g,h,v;if(p=window.location.origin,u=null!==(a=null===(t=eP.current)||void 0===t?void 0:t.contentWindow)&&void 0!==a?a:null,e.origin!==p||e.source!==u?null:(f=e.data)&&"object"==typeof f?f.type!==F?null:{type:F}:null){ew(!0);return}let w=(s=window.location.origin,l=null!==(o=null===(r=eP.current)||void 0===r?void 0:r.contentWindow)&&void 0!==o?o:null,e.origin!==s||e.source!==l?null:!(b=e.data)||"object"!=typeof b||"agent-webapp:artifact-open:v1"!==b.type||!Number.isSafeInteger(b.requestId)||1>Number(b.requestId)?null:"string"!=typeof b.path||!((m=b.path).startsWith("/")||/^[A-Za-z]:[\\/]/.test(m)||/^\\\\[^\\/]+[\\/][^\\/]+/.test(m))||b.path.includes("\0")||b.path.includes("\n")||b.path.includes("\r")?null:b);if(w){ee("files"),Q(!0),J(w.path),ei(w);return}let y=(g=window.location.origin,h=null!==(i=null===(n=eP.current)||void 0===n?void 0:n.contentWindow)&&void 0!==i?i:null,e.origin!==g||e.source!==h?null:(v=e.data)&&"object"==typeof v?"agent-webapp:project-request:v1"!==v.type||!Number.isSafeInteger(v.id)||1>Number(v.id)||"string"!=typeof v.method||!c.has(v.method)||!v.payload||"object"!=typeof v.payload||Array.isArray(v.payload)?null:v:null);y&&x(y.method,y.payload).then(e=>{var t,r;null===(r=eP.current)||void 0===r||null===(t=r.contentWindow)||void 0===t||t.postMessage({type:d,id:y.id,ok:!0,result:e},window.location.origin)},e=>{var t,r;null===(r=eP.current)||void 0===r||null===(t=r.contentWindow)||void 0===t||t.postMessage({type:d,id:y.id,ok:!1,error:e.message||"项目操作失败",code:e.code},window.location.origin)})};return window.addEventListener("message",e),()=>window.removeEventListener("message",e)},[x]);let eR=(0,o.useRef)(0),eD=j&&null!==(p=C[j])&&void 0!==p?p:null;(0,o.useEffect)(()=>{let e=window.visualViewport,t=null,r="",n=()=>{let a=(0,M.x)(e,{height:window.innerHeight,width:window.innerWidth}),o="".concat(a.width,"x").concat(a.height,"+").concat(a.top,"+").concat(a.left);o!==r&&(r=o,document.documentElement.style.setProperty("--vv-height","".concat(a.height,"px")),document.documentElement.style.setProperty("--vv-width","".concat(a.width,"px")),document.documentElement.style.setProperty("--vv-top","".concat(a.top,"px")),document.documentElement.style.setProperty("--vv-left","".concat(a.left,"px")),t&&window.clearTimeout(t),t=window.setTimeout(n,250))};return n(),null==e||e.addEventListener("resize",n),null==e||e.addEventListener("scroll",n),window.addEventListener("orientationchange",n),window.addEventListener("resize",n),document.addEventListener("visibilitychange",n),window.addEventListener("pageshow",n),()=>{null==e||e.removeEventListener("resize",n),null==e||e.removeEventListener("scroll",n),window.removeEventListener("orientationchange",n),window.removeEventListener("resize",n),document.removeEventListener("visibilitychange",n),window.removeEventListener("pageshow",n),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,r,n,a,o;(null===(t=e.preferences)||void 0===t?void 0:t.fileButtonPosition)&&el(e.preferences.fileButtonPosition),"boolean"==typeof(null===(r=e.preferences)||void 0===r?void 0:r.keybarHidden)&&ec(e.preferences.keybarHidden),Array.isArray(null===(n=e.preferences)||void 0===n?void 0:n.keyOrder)&&eu(e.preferences.keyOrder),Array.isArray(null===(a=e.preferences)||void 0===a?void 0:a.pinnedCommands)&&eb(e.preferences.pinnedCommands),(null===(o=e.preferences)||void 0===o?void 0:o.theme)&&ex(D(e.preferences.theme).id)}).catch(()=>{}).finally(()=>eh(!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)&&ee(t.drawerTab),(null==t?void 0:t.activeTerminalId)&&(T.current=t.activeTerminalId),"boolean"==typeof(null==t?void 0:t.drawerOpen)&&Q(t.drawerOpen),(null==t?void 0:t.fileTreeRoot)&&er(t.fileTreeRoot),"boolean"==typeof(null==t?void 0:t.fileTreeFollowMode)&&ea(t.fileTreeFollowMode),(null==t?void 0:t.selectedFile)&&J(t.selectedFile),(null==t?void 0:t.terminalScroll)&&"object"==typeof t.terminalScroll&&Y(t.terminalScroll)}).catch(()=>{}).finally(()=>V(!0))},[]);let eI=(0,o.useCallback)(e=>{fetch("/api/web-console/preferences",{method:"PATCH",credentials:"same-origin",headers:{"content-type":"application/json","x-csrf-token":f.csrfToken},body:JSON.stringify(e)}).catch(()=>{})},[f.csrfToken]);(0,o.useEffect)(()=>{if(!eg)return;let e=setTimeout(()=>eI({fileButtonPosition:es,keybarHidden:ed,keyOrder:ep,pinnedCommands:ef,theme:em}),500);return()=>clearTimeout(e)},[es,ed,ep,ef,em,eg,eI]);let eM=(0,o.useCallback)(e=>{f.csrfToken&&fetch("/api/web-console/device-state",{method:"PUT",credentials:"same-origin",headers:{"content-type":"application/json","x-csrf-token":f.csrfToken},body:JSON.stringify(e)}).catch(()=>{})},[f.csrfToken]);(0,o.useEffect)(()=>{if(!f.csrfToken)return;let e=setTimeout(()=>eM({activeTerminalId:j,drawerOpen:G,drawerTab:$,fileTreeRoot:et,fileTreeFollowMode:en,selectedFile:K,terminalScroll:_}),500);return()=>clearTimeout(e)},[j,G,$,et,en,K,_,f.csrfToken,eM]),(0,o.useEffect)(()=>{if(!f.csrfToken)return;let e=()=>eM({activeTerminalId:j,drawerOpen:G,drawerTab:$,fileTreeRoot:et,fileTreeFollowMode:en,selectedFile:K,terminalScroll:_});return window.addEventListener("pagehide",e),()=>window.removeEventListener("pagehide",e)},[j,G,$,et,en,K,_,f.csrfToken,eM]);let eF=(0,o.useCallback)(e=>{J(e),Q(!1)},[]),eW=(0,o.useCallback)(()=>{if(y.length>=8)return;let e="t-web-".concat(Date.now().toString(36),"-").concat(Math.random().toString(36).slice(2,8));k(t=>t.length>=8?t:[...t,{id:e,title:"Terminal ".concat(t.length+1)}]),z(e)},[y.length]),eB=(0,o.useCallback)(e=>{var t;let r=y.find(e=>e.id===j);if(r&&"webapp"!==r.kind){let t=L.current.get(r.id);t?t(e,!0):R.current.set(r.id,e),Q(!1);return}let n=y.length>=8?y.find(e=>"webapp"!==e.kind):null,a=null!==(t=null==n?void 0:n.id)&&void 0!==t?t:"t-web-".concat(Date.now().toString(36),"-").concat(Math.random().toString(36).slice(2,8));n?R.current.set(a,e):k(t=>[...t,{id:a,title:"Terminal ".concat(t.length+1),initialCommand:e}]),z(a),Q(!1)},[j,y]);(0,o.useEffect)(()=>{b.connected&&q&&!N.current&&(N.current=!0,x("term:list").then(e=>{let t=e.tabs.filter(e=>"active"===e.status||"detached"===e.status).map(e=>{let{id:t,title:r}=e;return{id:t,title:r}});k([U,...t]),z(e=>{let r=T.current||e||U.id;return r===U.id?U.id:t.some(e=>e.id===r)?r:U.id})}).catch(()=>{}))},[b.connected,q,x]);let eO=e=>{e!==U.id&&window.confirm("关闭页签会终止该终端进程,确认关闭?")&&(k(t=>{var r,n;let a=t.filter(t=>t.id!==e);return j===e&&z(null!==(n=null===(r=a[0])||void 0===r?void 0:r.id)&&void 0!==n?n:null),a}),x("term:kill",{id:e}).catch(()=>{}))};(0,o.useEffect)(()=>{let e=g("term:exited",e=>{let t=null==e?void 0:e.id;t&&(k(e=>{let r=e.filter(e=>e.id!==t);return z(e=>{var n,a;return e===t?null!==(a=null===(n=r[0])||void 0===n?void 0:n.id)&&void 0!==a?a:null:e}),r}),Y(e=>{if(!(t in e))return e;let r={...e};return delete r[t],r}))});return()=>{e()}},[g]);let eH=(0,o.useCallback)(e=>{if(!j||y.length<2)return;let t=(y.findIndex(e=>e.id===j)+e+y.length)%y.length;z(y[t].id)},[j,y]),eU=Math.max(0,y.findIndex(e=>e.id===j)),eA=(null===(t=y[eU])||void 0===t?void 0:t.kind)==="webapp"?ey.cssVars["--ui-term-col-bg"]:ey.termHostBg,eX={...Z.root,...ey.cssVars,"--ui-active-content-bg":eA,"--ui-terminal-bg":ey.termHostBg,background:"var(--ui-root-bg)",color:"var(--ui-text)"},eZ=(0,o.useCallback)(()=>{ej.current=null,eC(0),eE(!1)},[]),eq=(0,o.useCallback)(e=>{Math.abs(e)>=64&&y.length>1&&eH(e<0?1:-1),eZ()},[y.length,eH,eZ]),eV=e=>e instanceof Element&&!!e.closest(".terminal-screen");(0,o.useEffect)(()=>{let e=e=>{var t,r,n,a,o;if(j!==U.id)return;let i=(n=window.location.origin,a=null!==(r=null===(t=eP.current)||void 0===t?void 0:t.contentWindow)&&void 0!==r?r:null,e.origin!==n||e.source!==a?null:(o=e.data)&&"object"==typeof o&&"agent-webapp:tab-swipe:v1"===o.type&&("move"===o.phase||"end"===o.phase||"cancel"===o.phase)&&"number"==typeof o.deltaX&&Number.isFinite(o.deltaX)?o:null);i&&("move"===i.phase?(eE(!0),eC(i.deltaX)):"end"===i.phase?eq(i.deltaX):eZ())};return window.addEventListener("message",e),()=>window.removeEventListener("message",e)},[j,eq,eZ]);let e_=(0,o.useCallback)(function(){var e;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"smooth",r=eT.current;if(!r||!j)return;let n=r.querySelector('[data-terminal-id="'.concat(j,'"]'));if(!n)return;if(n===r.querySelector("[data-terminal-id]")){(0,M.i)(r);return}let a=r.querySelector(".terminal-connection"),o=null!==(e=null==a?void 0:a.offsetWidth)&&void 0!==e?e:0,i=n.offsetLeft,s=i+n.offsetWidth,l=r.scrollLeft,d=l+r.clientWidth-o;i<l+8?r.scrollTo({left:Math.max(0,i-8),behavior:t}):s>d-8&&r.scrollTo({left:s-r.clientWidth+o+8,behavior:t})},[j]);return(0,o.useLayoutEffect)(()=>{if(!j)return;let e=y.length>eR.current;eR.current=y.length,e_(e?"auto":"smooth")},[j,y.length,e_]),(0,o.useEffect)(()=>{let e=()=>requestAnimationFrame(()=>e_("auto"));return window.addEventListener("pageshow",e),()=>window.removeEventListener("pageshow",e)},[e_]),(0,n.jsxs)("div",{className:"web-root",style:eX,children:[(0,n.jsx)("style",{dangerouslySetInnerHTML:{__html:X}}),(0,n.jsxs)("div",{className:"terminal-tabs",ref:eT,children:[y.map(e=>(0,n.jsxs)("div",{"data-terminal-id":e.id,draggable:!0,className:"terminal-tab ".concat(e.id===j?"active":""),onDragStart:()=>{eN.current=e.id},onDragOver:e=>e.preventDefault(),onDrop:t=>{t.preventDefault();let r=eN.current;eN.current=null,r&&r!==e.id&&k(t=>{let n=t.findIndex(e=>e.id===r),a=t.findIndex(t=>t.id===e.id);if(n<0||a<0)return t;let o=[...t],[i]=o.splice(n,1);return o.splice(a,0,i),x("term:reorder",{ids:o.map(e=>e.id).filter(e=>e!==U.id)}).catch(()=>{}),o})},onClick:()=>z(e.id),onDoubleClick:()=>{var t;if("webapp"===e.kind)return;let r=null===(t=window.prompt("页签名称",e.title))||void 0===t?void 0:t.trim();r&&x("term:rename",{id:e.id,title:r}).then(()=>k(t=>t.map(t=>t.id===e.id?{...t,title:r}:t))).catch(()=>{})},children:[(0,n.jsx)("span",{children:e.title}),"webapp"!==e.kind&&(0,n.jsx)("button",{tabIndex:-1,onClick:t=>{t.stopPropagation(),eO(e.id)},children:"\xd7"})]},e.id)),(0,n.jsx)("button",{className:"terminal-add",disabled:y.length>=8,onClick:eW,children:"+"}),(0,n.jsxs)("div",{className:"terminal-connection",children:[(0,n.jsx)("span",{style:{width:8,height:8,borderRadius:99,background:b.connected?"var(--ui-success)":"var(--ui-error)"}}),(0,n.jsx)(I,{username:null!==(u=null===(r=f.user)||void 0===r?void 0:r.username)&&void 0!==u?u:"?",themeId:em,onThemeChange:ex,accent:ey.keybar.accent,accentText:ey.keybar.accentText})]})]}),(0,n.jsxs)("main",{className:"workspace ".concat(G?"show-tree":""," ").concat(K?"has-preview":""),style:Z.workspace,children:[(0,n.jsx)("section",{className:"term-col",style:Z.termCol,onPointerDownCapture:e=>{"touch"===e.pointerType&&eV(e.target)&&(eZ(),ej.current={x:e.clientX,y:e.clientY,axis:"pending",pointerId:e.pointerId})},onPointerMoveCapture:e=>{let t=ej.current;if(!t||e.pointerId!==t.pointerId||"touch"!==e.pointerType)return;let r=e.clientX-t.x,n=e.clientY-t.y;if("pending"===t.axis){if(8>=Math.max(Math.abs(r),Math.abs(n)))return;if(Math.abs(n)>=1.2*Math.abs(r)){ej.current=null;return}t.axis="horizontal",eE(!0);let e=r=>{window.removeEventListener("pointerup",e),window.removeEventListener("pointercancel",e),ej.current===t&&eZ()};window.addEventListener("pointerup",e),window.addEventListener("pointercancel",e)}"horizontal"===t.axis&&(e.preventDefault(),eC(r))},onPointerUpCapture:e=>{let t=ej.current;if(!t||e.pointerId!==t.pointerId)return;let r=e.clientX-t.x;"horizontal"===t.axis&&Math.abs(r)>=64?eq(r):eZ()},onPointerCancelCapture:eZ,children:(0,n.jsx)("div",{className:"terminal-track",style:{transform:"translate3d(calc(".concat(-(100*eU),"% + ").concat(ez,"px),0,0)"),transition:eS?"none":"transform 260ms cubic-bezier(.22,.8,.32,1)"},children:y.map(e=>{var t;return(0,n.jsx)("div",{className:"terminal-slide",children:"webapp"===e.kind?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("iframe",{ref:eP,className:"webapp-frame",src:"/app/",title:e.title,onLoad:()=>eL(em)}),(0,n.jsxs)("div",{className:"webapp-boot".concat(ev?" is-ready":""),role:"status","aria-live":"polite","aria-hidden":ev,children:[(0,n.jsxs)("div",{className:"webapp-boot-mark","aria-hidden":"true",children:[(0,n.jsx)("span",{className:"webapp-boot-orbit"}),(0,n.jsx)("span",{className:"webapp-boot-diamond"}),(0,n.jsx)("span",{className:"webapp-boot-core"})]}),(0,n.jsx)("strong",{children:"AgentRoam"}),(0,n.jsx)("span",{children:"正在唤醒工作区"})]})]}):(0,n.jsx)(W,{terminalId:e.id,title:e.title,initialCommand:e.initialCommand,visible:e.id===j,state:b,rpc:x,onEvent:g,onTerminalData:h,onTerminalReset:v,sendTerminalInput:w,keyOrder:ep,keybarHidden:ed,onKeyOrderChange:eu,onKeybarHiddenChange:ec,terminalTheme:ey,initialScrollLine:null!==(t=_[e.id])&&void 0!==t?t:null,onScrollLineChange:t=>Y(r=>r[e.id]===t?r:{...r,[e.id]:t}),onRegisterFill:t=>H(e.id,t),onCwdChange:t=>t&&S(r=>({...r,[e.id]:t}))})},e.id)})})}),G&&(0,n.jsx)("div",{className:"drawer-mask",onClick:()=>Q(!1)}),(0,n.jsxs)("aside",{className:"tree-col ".concat(G?"tree-col-open":""),style:Z.treeCol,children:[(0,n.jsxs)("div",{className:"tree-head",style:Z.treeHead,children:[(0,n.jsx)("button",{className:"files"===$?"drawer-tab-active":"",onClick:()=>ee("files"),children:"文件"}),(0,n.jsx)("button",{className:"history"===$?"drawer-tab-active":"",onClick:()=>ee("history"),children:"历史"}),(0,n.jsx)("span",{className:"tree-cwd",style:Z.treeCwd,children:null!=eD?eD:""}),(0,n.jsx)("button",{style:{...Z.iconBtn,marginLeft:"auto",flexShrink:0},onClick:()=>Q(!1),"aria-label":"close drawer",children:(0,n.jsx)(i.Z,{size:15,"aria-hidden":"true"})})]}),"files"===$?(0,n.jsx)(B,{ready:m>0,followCwd:!0,cwd:eD,rpc:x,onEvent:g,onOpenFile:eF,selectedPath:K,initialRoot:et,initialFollow:en,revealRequest:eo,onTreeStateChange:(e,t)=>{er(e),ea(t)}}):(0,n.jsx)(E,{csrfToken:f.csrfToken,terminalId:(null===(a=y.find(e=>e.id===j))||void 0===a?void 0:a.kind)==="webapp"?null:j,pinnedCommands:ef,onPinnedCommandsChange:eb,onFill:A,onExecute:eB}),(0,n.jsxs)("div",{style:Z.treeFoot,children:[(0,n.jsx)("span",{style:Z.treeFootDot}),(0,n.jsx)("span",{children:"实时同步"})]})]}),K&&(0,n.jsx)("section",{className:"preview-col",style:Z.previewCol,children:(0,n.jsx)(O,{path:K,rpc:x,onClose:()=>J(null)})})]}),!G&&(0,n.jsx)("button",{className:"fab-files",style:{...Z.fabFiles,left:"".concat(100*es.xRatio,"%"),top:"".concat(100*es.yRatio,"%"),right:"auto",bottom:"auto",transform:"translate(-50%,-50%)"},onPointerDown:e=>{ek.current={moved:!1,startX:e.clientX,startY:e.clientY},e.currentTarget.setPointerCapture(e.pointerId)},onPointerMove:e=>{let t=ek.current;if(!t||!t.moved&&4>Math.hypot(e.clientX-t.startX,e.clientY-t.startY))return;t.moved=!0;let r=window.visualViewport;el({xRatio:Math.max(.05,Math.min(.95,e.clientX/((null==r?void 0:r.width)||innerWidth))),yRatio:Math.max(.08,Math.min(.92,(e.clientY-((null==r?void 0:r.offsetTop)||0))/((null==r?void 0:r.height)||innerHeight))),anchor:e.clientX<((null==r?void 0:r.width)||innerWidth)/2?"left":"right"})},onPointerUp:e=>{var t;e.currentTarget.releasePointerCapture(e.pointerId),(null===(t=ek.current)||void 0===t?void 0:t.moved)||Q(!0),ek.current=null},"aria-label":"files",children:(0,n.jsx)(s.Z,{size:20,"aria-hidden":"true"})})]})}let X='\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 { position:relative; flex:0 0 100%; width:100%; height:100%; min-width:0; overflow:hidden; }\n .webapp-frame { display:block; width:100%; height:100%; border:0; background:var(--ui-term-col-bg, #101014); }\n .webapp-boot { position:absolute; inset:0; z-index:2; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:6px; padding:24px; box-sizing:border-box; background:var(--ui-term-col-bg, #101014); color:var(--ui-text, #e8e8ee); opacity:1; visibility:visible; pointer-events:none; transition:opacity .28s ease,visibility 0s linear 0s; }\n .webapp-boot.is-ready { opacity:0; visibility:hidden; transition:opacity .28s ease,visibility 0s linear .28s; }\n .webapp-boot strong { margin-top:15px; font-size:16px; line-height:1.25; font-weight:650; letter-spacing:0; }\n .webapp-boot > span { color:var(--ui-muted-text, #8f93a4); font-size:12px; line-height:1.5; letter-spacing:0; }\n .webapp-boot-mark { position:relative; width:66px; height:66px; color:var(--ui-tab-accent, #7aa2f7); }\n .webapp-boot-orbit { position:absolute; inset:3px; border:1px solid color-mix(in srgb,currentColor 34%,transparent); border-top-color:currentColor; border-right-color:transparent; border-radius:50%; animation:webapp-boot-spin 1.65s linear infinite; }\n .webapp-boot-diamond { position:absolute; top:19px; left:19px; width:26px; height:26px; border:2px solid currentColor; border-radius:4px; transform:rotate(45deg); animation:webapp-boot-breathe 1.35s ease-in-out infinite; }\n .webapp-boot-core { position:absolute; top:30px; left:30px; width:6px; height:6px; border-radius:50%; background:currentColor; box-shadow:0 0 0 6px color-mix(in srgb,currentColor 12%,transparent); }\n @keyframes webapp-boot-spin { to { transform:rotate(360deg); } }\n @keyframes webapp-boot-breathe { 0%,100% { opacity:.58; transform:rotate(45deg) scale(.9); } 50% { opacity:1; transform:rotate(45deg) scale(1); } }\n .terminal-surface { position:relative; flex:1; min-height:90px; overflow:hidden; }\n .terminal-screen { display:flex; flex-direction:column; width:100%; min-height:0; overflow:hidden; box-sizing:border-box; }\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 .terminal-boot { position:absolute; inset:0; z-index:46; display:flex; align-items:center; justify-content:center; gap:9px; pointer-events:auto; font-size:12px; line-height:1.4; letter-spacing:0; }\n .terminal-boot-spinner { width:16px; height:16px; box-sizing:border-box; border:2px solid color-mix(in srgb,currentColor 24%,transparent); border-top-color:currentColor; border-radius:50%; animation:terminal-boot-spin .8s linear infinite; }\n .terminal-boot-warning { position:absolute; top:9px; left:50%; z-index:45; transform:translateX(-50%); max-width:calc(100% - 24px); padding:5px 8px; border:1px solid; border-radius:6px; pointer-events:none; font-size:11px; line-height:1.35; letter-spacing:0; white-space:normal; text-align:center; }\n @keyframes terminal-boot-spin { to { transform:rotate(360deg); } }\n @media (prefers-reduced-motion: reduce) { .terminal-track,.terminal-tab,.webapp-boot { transition:none !important; } .webapp-boot-orbit,.webapp-boot-diamond,.terminal-boot-spinner { animation: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 .pinned-commands { position:sticky; top:0; z-index:3; margin:-1px -1px 7px; border:1px solid var(--ui-tabbar-border, #252832); border-radius:6px; background:var(--ui-tree-bg, #121218); box-shadow:0 7px 12px color-mix(in srgb, var(--ui-root-bg, #0b0b10) 58%, transparent); overflow:hidden; }\n .pinned-command-head { display:flex; align-items:center; min-height:30px; padding:0 6px 0 10px; border-bottom:1px solid var(--ui-tabbar-border, #252832); color:var(--ui-history-meta, #74798a); font-size:10px; }\n .pinned-command-head span { flex:1; }\n .pinned-command-row { display:flex; align-items:center; min-height:34px; border-bottom:1px solid color-mix(in srgb, var(--ui-tabbar-border, #252832) 76%, transparent); cursor:pointer; outline:none; }\n .pinned-command-row:last-child { border-bottom:0; }\n .pinned-command-row:hover,.pinned-command-row:focus-visible { background:color-mix(in srgb, var(--ui-tab-active-bg, #1f2430) 76%, transparent); }\n .pinned-command-row:focus-visible { box-shadow:inset 2px 0 var(--ui-tab-accent, #7aa2f7); }\n .pinned-command-dragging { opacity:.66; background:var(--ui-tab-active-bg, #1f2430); }\n .pinned-command-row code { flex:1; min-width:0; padding:0 5px; overflow:hidden; color:var(--ui-history-item-text, #d3d6df); font-size:11px; text-overflow:ellipsis; white-space:nowrap; }\n .pinned-command-grip { display:inline-flex; align-items:center; justify-content:center; width:28px; height:32px; padding:0; border:0; background:transparent; color:var(--ui-history-meta, #626777); cursor:grab; touch-action:none; }\n .pinned-command-grip:active { cursor:grabbing; }\n .pinned-command-actions { display:flex; align-items:center; padding-right:3px; opacity:.42; transition:opacity .15s ease; }\n .pinned-command-row:hover .pinned-command-actions,.pinned-command-row:focus-within .pinned-command-actions { opacity:1; }\n .pinned-command-editor { display:grid; grid-template-columns:minmax(0,1fr) 27px 27px; gap:4px; align-items:center; min-height:39px; padding:4px 5px 4px 8px; border-bottom:1px solid var(--ui-tabbar-border, #252832); }\n .pinned-command-editor input { min-width:0; height:27px; box-sizing:border-box; border:1px solid var(--ui-tab-accent, #536b9e); border-radius:5px; outline:none; padding:0 7px; background:var(--ui-panel-input-bg, #0f0f15); color:var(--ui-panel-input-text, #ddd); font-family:"SF Mono",Menlo,monospace; font-size:10.5px; }\n .pinned-command-editor small { grid-column:1 / -1; color:var(--ui-danger, #e06c75); font-size:9px; }\n .history-search { display:flex; gap:5px; padding:5px; background:var(--ui-tree-bg, #121218); }\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-icon-button { display:inline-flex; align-items:center; justify-content:center; width:27px; min-width:27px; height:27px; padding:0; border:1px solid var(--ui-panel-input-border, #30303a); border-radius:5px; background:var(--ui-tab-bg, #202029); color:var(--ui-connection-text, #999dab); }\n .history-icon-button:hover:not(:disabled) { color:var(--ui-drawer-tab-active, #e4e7ef); border-color:var(--ui-tab-accent, #536b9e); }\n .history-icon-button:disabled { cursor:not-allowed; opacity:.32; }\n .history-icon-danger:hover:not(:disabled) { color:var(--ui-danger, #e06c75); border-color:color-mix(in srgb, var(--ui-danger, #e06c75) 60%, var(--ui-panel-input-border, #30303a)); }\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 @media (pointer:coarse) { .pinned-command-actions { opacity:.78; } }\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 }\n .tree-col-open { transform: translateX(0); box-shadow: -12px 0 32px rgba(0,0,0,.5); }\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',Z={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}}}},function(e){e.O(0,[108,37,183,744],function(){return e(e.s=722)}),_N_E=e.O()}]);