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

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 (124) 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 +8 -8
  5. package/runtime/.next/app-path-routes-manifest.json +1 -1
  6. package/runtime/.next/build-manifest.json +6 -6
  7. package/runtime/.next/prerender-manifest.json +1 -1
  8. package/runtime/.next/react-loadable-manifest.json +1 -1
  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 -1
  19. package/runtime/.next/server/app/api/agent/run/route.js +1 -1
  20. package/runtime/.next/server/app/api/agent/runtime-health/route.js +1 -1
  21. package/runtime/.next/server/app/api/agent/steer/route.js +1 -1
  22. package/runtime/.next/server/app/api/agent/stream/route.js +4 -4
  23. package/runtime/.next/server/app/api/agent-workspaces/[workspaceId]/sessions/route.js +1 -1
  24. package/runtime/.next/server/app/api/agent-workspaces/route.js +1 -1
  25. package/runtime/.next/server/app/api/auth/verify/route.js +1 -1
  26. package/runtime/.next/server/app/api/mcp/connect/route.js +1 -1
  27. package/runtime/.next/server/app/api/mcp/disconnect/route.js +1 -1
  28. package/runtime/.next/server/app/api/mcp/servers/route.js +1 -1
  29. package/runtime/.next/server/app/api/memory/[key]/route.js +1 -1
  30. package/runtime/.next/server/app/api/memory/route.js +1 -1
  31. package/runtime/.next/server/app/api/plugins/load/route.js +1 -1
  32. package/runtime/.next/server/app/api/projects/[id]/route.js +1 -1
  33. package/runtime/.next/server/app/api/projects/check/route.js +1 -1
  34. package/runtime/.next/server/app/api/projects/directories/route.js +1 -1
  35. package/runtime/.next/server/app/api/projects/roots/route.js +1 -1
  36. package/runtime/.next/server/app/api/projects/route.js +1 -1
  37. package/runtime/.next/server/app/api/remote-tools/register/route.js +1 -1
  38. package/runtime/.next/server/app/api/sessions/[id]/changes/route.js +2 -2
  39. package/runtime/.next/server/app/api/sessions/[id]/fork/route.js +1 -1
  40. package/runtime/.next/server/app/api/sessions/[id]/goals/route.js +1 -1
  41. package/runtime/.next/server/app/api/sessions/[id]/handoff/route.js +1 -1
  42. package/runtime/.next/server/app/api/sessions/[id]/query-index/route.js +1 -1
  43. package/runtime/.next/server/app/api/sessions/[id]/release/route.js +1 -0
  44. package/runtime/.next/server/app/api/sessions/[id]/release/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/[id]/tool-result/route.js +1 -0
  47. package/runtime/.next/server/app/api/sessions/[id]/tool-result/route.js.nft.json +1 -0
  48. package/runtime/.next/server/app/api/sessions/route.js +1 -1
  49. package/runtime/.next/server/app/api/skills/route.js +1 -1
  50. package/runtime/.next/server/app/api/tools/route.js +1 -1
  51. package/runtime/.next/server/app/api/web-auth/login/route.js +1 -1
  52. package/runtime/.next/server/app/api/web-auth/logout/route.js +1 -1
  53. package/runtime/.next/server/app/api/web-auth/revoke-all/route.js +1 -1
  54. package/runtime/.next/server/app/api/web-auth/setup/route.js +1 -1
  55. package/runtime/.next/server/app/api/web-auth/status/route.js +1 -1
  56. package/runtime/.next/server/app/api/web-console/bootstrap/route.js +1 -1
  57. package/runtime/.next/server/app/api/web-console/device-state/route.js +1 -1
  58. package/runtime/.next/server/app/api/web-console/history/route.js +1 -1
  59. package/runtime/.next/server/app/api/web-console/preferences/route.js +1 -1
  60. package/runtime/.next/server/app/web/page.js +11 -8
  61. package/runtime/.next/server/app/web/page_client-reference-manifest.js +1 -1
  62. package/runtime/.next/server/app/web.html +1 -1
  63. package/runtime/.next/server/app/web.rsc +2 -2
  64. package/runtime/.next/server/app-paths-manifest.json +27 -25
  65. package/runtime/.next/server/chunks/1322.js +37 -37
  66. package/runtime/.next/server/chunks/2083.js +12 -12
  67. package/runtime/.next/server/chunks/5303.js +1 -1
  68. package/runtime/.next/server/chunks/7186.js +3 -3
  69. package/runtime/.next/server/middleware-build-manifest.js +1 -1
  70. package/runtime/.next/server/middleware-react-loadable-manifest.js +1 -1
  71. package/runtime/.next/server/pages/404.html +1 -1
  72. package/runtime/.next/server/pages/500.html +1 -1
  73. package/runtime/.next/server/server-reference-manifest.json +1 -1
  74. package/runtime/.next/static/chunks/137.e70970795c25de4f.js +1 -0
  75. package/runtime/.next/static/chunks/919-e3163c9448664f1a.js +1 -0
  76. package/runtime/.next/static/chunks/app/web/page-f8e555341da23177.js +1 -0
  77. package/runtime/.next/static/chunks/main-app-07d67f2d4e96ecb8.js +1 -0
  78. package/runtime/.next/static/chunks/{webpack-d22db940097662ef.js → webpack-819dfd677dd52477.js} +1 -1
  79. package/runtime/lib/file-preview-service.mjs +29 -0
  80. package/runtime/lib/markdown-preview.mjs +65 -0
  81. package/runtime/node_modules/.package-lock.json +23 -11
  82. package/runtime/node_modules/@agent/core/dist/domain/agent/entities.d.ts +3 -0
  83. package/runtime/node_modules/@agent/core/dist/domain/agent/entities.d.ts.map +1 -1
  84. package/runtime/node_modules/@agent/core/dist/domain/model/entities.d.ts +7 -0
  85. package/runtime/node_modules/@agent/core/dist/domain/model/entities.d.ts.map +1 -1
  86. package/runtime/node_modules/@agent/core/dist/domain/session/entities.d.ts +16 -0
  87. package/runtime/node_modules/@agent/core/dist/domain/session/entities.d.ts.map +1 -1
  88. package/runtime/node_modules/@agent/core/dist/domain/session/index.d.ts +2 -2
  89. package/runtime/node_modules/@agent/core/dist/domain/session/index.d.ts.map +1 -1
  90. package/runtime/node_modules/@agent/core/dist/index.js +2 -1
  91. package/runtime/node_modules/@agent/core/dist/index.js.map +1 -1
  92. package/runtime/node_modules/@anthropic-ai/claude-agent-sdk/bridge.mjs +39 -39
  93. package/runtime/node_modules/@anthropic-ai/claude-agent-sdk/browser-sdk.js +1 -1
  94. package/runtime/node_modules/@anthropic-ai/claude-agent-sdk/manifest.json +18 -20
  95. package/runtime/node_modules/@anthropic-ai/claude-agent-sdk/manifest.zst.json +23 -25
  96. package/runtime/node_modules/@anthropic-ai/claude-agent-sdk/package.json +10 -10
  97. package/runtime/node_modules/@anthropic-ai/claude-agent-sdk/sdk.mjs +41 -41
  98. package/runtime/node_modules/marked/LICENSE.md +44 -0
  99. package/runtime/node_modules/marked/README.md +106 -0
  100. package/runtime/node_modules/marked/bin/main.js +282 -0
  101. package/runtime/node_modules/marked/bin/marked.js +15 -0
  102. package/runtime/node_modules/marked/lib/marked.cjs +2211 -0
  103. package/runtime/node_modules/marked/lib/marked.d.cts +728 -0
  104. package/runtime/node_modules/marked/lib/marked.esm.js +2189 -0
  105. package/runtime/node_modules/marked/lib/marked.umd.js +2213 -0
  106. package/runtime/node_modules/marked/man/marked.1 +111 -0
  107. package/runtime/node_modules/marked/man/marked.1.md +92 -0
  108. package/runtime/node_modules/marked/marked.min.js +69 -0
  109. package/runtime/node_modules/marked/package.json +111 -0
  110. package/runtime/package-lock.json +48 -35
  111. package/runtime/package.json +1 -0
  112. package/runtime/webapp/dist/assets/App-u5-hbDMQ.js +285 -0
  113. package/runtime/webapp/dist/assets/index-3s0r60kD.css +1 -0
  114. package/runtime/webapp/dist/assets/{index-BAH3pT_c.js → index-jGt09xOx.js} +2 -2
  115. package/runtime/webapp/dist/index.html +2 -2
  116. package/runtime/ws-server.mjs +13 -0
  117. package/runtime/.next/static/chunks/108-bc4a0fe192dfff08.js +0 -1
  118. package/runtime/.next/static/chunks/137.261fab9d606d75d3.js +0 -1
  119. package/runtime/.next/static/chunks/app/web/page-8e4da33d77868123.js +0 -1
  120. package/runtime/.next/static/chunks/main-app-3596fd7d2841e9a3.js +0 -1
  121. package/runtime/webapp/dist/assets/App-CZspcejP.js +0 -275
  122. package/runtime/webapp/dist/assets/index-lt5J4xDf.css +0 -1
  123. /package/runtime/.next/static/{iaxCayE60RyqJY_Zj-OjS → 1LC7dx7c9RaWO6oZD2h4N}/_buildManifest.js +0 -0
  124. /package/runtime/.next/static/{iaxCayE60RyqJY_Zj-OjS → 1LC7dx7c9RaWO6oZD2h4N}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[541],{6736:function(e,t,r){Promise.resolve().then(r.bind(r,2407))},9532:function(e,t,r){"use strict";function a(e,t){var r,a,n,o;return{height:Math.round(null!==(r=null==e?void 0:e.height)&&void 0!==r?r:t.height),width:Math.round(null!==(a=null==e?void 0:e.width)&&void 0!==a?a:t.width),top:Math.round(null!==(n=null==e?void 0:e.offsetTop)&&void 0!==n?n:0),left:Math.round(null!==(o=null==e?void 0:e.offsetLeft)&&void 0!==o?o:0)}}function n(e){e&&(e.scrollLeft=0)}r.d(t,{i:function(){return n},x:function(){return a}})},2407:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return H}});var a=r(1996),n=r(7004),o=r(6121),i=r(1628),s=r(7317);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,a]=(0,o.useState)(null),[n]=(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();a(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 a(r.user),t("authenticated"),r.wsNonce},[]),c=(0,o.useCallback)(async()=>!0,[]);return{status:e,user:r,error:i,csrfToken:n,setup:c,login:c,logout:l,refresh:l,getWsNonce:d}}(),[n,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,a.jsx)(a.Fragment,{children:t(r)});let d=!r.error;return(0,a.jsxs)("main",{className:"jsx-3fdfcb7d409f1983 "+"remote-gate".concat(d?" is-connecting":" is-error"),children:[(0,a.jsx)("div",{"aria-hidden":"true",className:"jsx-3fdfcb7d409f1983 remote-grid"}),(0,a.jsx)("div",{"aria-hidden":"true",className:"jsx-3fdfcb7d409f1983 remote-stream remote-stream-left"}),(0,a.jsx)("div",{"aria-hidden":"true",className:"jsx-3fdfcb7d409f1983 remote-stream remote-stream-right"}),(0,a.jsxs)("div",{className:"jsx-3fdfcb7d409f1983 remote-content",children:[(0,a.jsxs)("div",{"aria-hidden":"true",className:"jsx-3fdfcb7d409f1983 remote-scene",children:[(0,a.jsx)("div",{className:"jsx-3fdfcb7d409f1983 remote-beam"}),(0,a.jsx)("div",{className:"jsx-3fdfcb7d409f1983 remote-pulse remote-pulse-one"}),(0,a.jsx)("div",{className:"jsx-3fdfcb7d409f1983 remote-pulse remote-pulse-two"}),(0,a.jsxs)("div",{className:"jsx-3fdfcb7d409f1983 remote-device",children:[(0,a.jsx)("div",{className:"jsx-3fdfcb7d409f1983 remote-device-back"}),(0,a.jsxs)("div",{className:"jsx-3fdfcb7d409f1983 remote-screen",children:[(0,a.jsx)("div",{className:"jsx-3fdfcb7d409f1983 remote-screen-scan"}),(0,a.jsx)(f.Z,{size:44,strokeWidth:1.25})]}),(0,a.jsx)("div",{className:"jsx-3fdfcb7d409f1983 remote-device-stand"})]})]}),(0,a.jsxs)("div",{role:d?"status":"alert","aria-label":d?"正在连接远程控制台":r.error||void 0,className:"jsx-3fdfcb7d409f1983 remote-status",children:[(0,a.jsx)(f.Z,{size:20,strokeWidth:1.8,"aria-hidden":"true"}),(0,a.jsx)("span",{className:"jsx-3fdfcb7d409f1983",children:r.error||"远程连接中"}),d&&(0,a.jsxs)("span",{"aria-hidden":"true",className:"jsx-3fdfcb7d409f1983 remote-elapsed",children:["\xb7 已持续 ",Math.max(0,Math.floor((s-n)/1e3))," 秒"]})]})]}),(0,a.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 a=e.findIndex(e=>e.id===t),n=e.findIndex(e=>e.id===r);if(a<0||n<0||a===n)return[...e];let o=[...e],[i]=o.splice(a,1);return o.splice(n,0,i),o}function C(e){let{commands:t,onChange:r,onExecute:n}=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 a;if(!u.current)return;let n=null===(a=document.elementFromPoint(e.clientX,e.clientY))||void 0===a?void 0:a.closest("[data-pinned-id]"),o=null==n?void 0:n.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,a)=>{if("ArrowUp"!==e.key&&"ArrowDown"!==e.key)return;e.preventDefault();let n=t.findIndex(e=>e.id===a),o=t[n+("ArrowUp"===e.key?-1:1)];o&&r(z(t,a,o.id))};return(0,a.jsxs)("section",{className:"pinned-commands","aria-labelledby":"pinned-command-title",children:[(0,a.jsxs)("div",{className:"pinned-command-head",children:[(0,a.jsx)("span",{id:"pinned-command-title",children:"置顶命令"}),(0,a.jsx)("button",{className:"history-icon-button",onClick:()=>{s({id:null,value:""}),d("")},"aria-label":"新增置顶命令",title:"新增置顶命令",children:(0,a.jsx)(w.Z,{size:14,"aria-hidden":"true"})})]}),t.map(e=>(null==i?void 0:i.id)===e.id?(0,a.jsx)(S,{editor:i,error:l,onChange:e=>{s({...i,value:e}),d("")},onSave:f,onCancel:()=>{s(null),d("")}},e.id):(0,a.jsxs)("div",{className:"pinned-command-row".concat(c===e.id?" pinned-command-dragging":""),"data-pinned-id":e.id,role:"button",tabIndex:0,onClick:()=>n(e.command),onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&(t.preventDefault(),n(e.command))},children:[(0,a.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,a.jsx)(y.Z,{size:14,"aria-hidden":"true"})}),(0,a.jsx)("code",{children:e.command}),(0,a.jsxs)("div",{className:"pinned-command-actions",onClick:e=>e.stopPropagation(),children:[(0,a.jsx)("button",{className:"history-icon-button",onClick:()=>{s({id:e.id,value:e.command}),d("")},"aria-label":"编辑 ".concat(e.command),title:"编辑",children:(0,a.jsx)(k.Z,{size:12,"aria-hidden":"true"})}),(0,a.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,a.jsx)(v.Z,{size:12,"aria-hidden":"true"})})]})]},e.id)),(null==i?void 0:i.id)===null&&(0,a.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:n,onSave:o,onCancel:i}=e;return(0,a.jsxs)("div",{className:"pinned-command-editor",children:[(0,a.jsx)("input",{autoFocus:!0,value:t.value,maxLength:1e3,onChange:e=>n(e.target.value),onKeyDown:e=>{"Enter"===e.key&&o(),"Escape"===e.key&&i()},"aria-label":t.id?"编辑置顶命令":"新增置顶命令"}),(0,a.jsx)("button",{className:"history-icon-button",onClick:o,"aria-label":"保存命令",title:"保存",children:(0,a.jsx)(j.Z,{size:13,"aria-hidden":"true"})}),(0,a.jsx)("button",{className:"history-icon-button",onClick:i,"aria-label":"取消编辑",title:"取消",children:(0,a.jsx)(s.Z,{size:13,"aria-hidden":"true"})}),r&&(0,a.jsx)("small",{role:"alert",children:r})]})}function E(e){let{csrfToken:t,terminalId:r,pinnedCommands:n,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||n.some(t=>t.command===e)||i([...n,{id:crypto.randomUUID(),command:e}])},[i,n]);return(0,a.jsxs)("div",{className:"history-panel",children:[(0,a.jsx)(C,{commands:n,onChange:i,onExecute:l}),(0,a.jsxs)("div",{className:"history-search",children:[(0,a.jsx)("input",{value:p,onChange:e=>u(e.target.value),placeholder:"搜索命令"}),(0,a.jsx)("button",{className:"history-icon-button",onClick:f,"aria-label":"刷新历史",title:"刷新历史",children:(0,a.jsx)(m.Z,{size:13,"aria-hidden":"true"})})]}),d.map(e=>(0,a.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,a.jsx)("code",{children:e.command}),(0,a.jsxs)("small",{children:[e.cwd," \xb7 ",new Date(e.executedAt).toLocaleString()]}),(0,a.jsxs)("div",{className:"history-item-actions",onClick:e=>e.stopPropagation(),onPointerDown:e=>e.stopPropagation(),children:[(0,a.jsx)("button",{className:"history-icon-button",onClick:()=>navigator.clipboard.writeText(e.command),"aria-label":"复制命令",title:"复制",children:(0,a.jsx)(x.Z,{size:12,"aria-hidden":"true"})}),(0,a.jsx)("button",{className:"history-icon-button",disabled:!r,onClick:()=>w(e.command),"aria-label":"填入命令",title:"填入",children:(0,a.jsx)(g.Z,{size:12,"aria-hidden":"true"})}),(0,a.jsx)("button",{className:"history-icon-button",disabled:"[REDACTED]"===e.command||n.some(t=>t.command===e.command),onClick:()=>y(e.command),"aria-label":"置顶命令",title:"置顶",children:(0,a.jsx)(h.Z,{size:12,"aria-hidden":"true"})}),(0,a.jsx)("button",{className:"history-icon-button history-icon-danger",onClick:()=>b(e.id),"aria-label":"删除历史",title:"删除",children:(0,a.jsx)(v.Z,{size:12,"aria-hidden":"true"})})]})]},e.id)),!d.length&&(0,a.jsx)("div",{className:"history-empty",children:"暂无 Shell 命令历史"}),!r&&!!d.length&&(0,a.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"}}],L="pearl",P=Object.fromEntries(T.map(e=>[e.id,e])),D={dark:"noir",black:"noir",gray:"noir",blue:"noir",red:"noir",yellow:"noir",green:"noir",white:"pearl"};function I(e){if(e&&e in P)return P[e];let t=e?D[e]:void 0;return t?P[t]:P[L]}function F(e){var t;let{username:r,themeId:n,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 a=e.target;(null===(t=p.current)||void 0===t||!t.contains(a))&&(null!==(r=f.current)&&void 0!==r&&r.contains(a)||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,a.jsxs)("div",{ref:p,className:"theme-picker",children:[(0,a.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,a.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,a.jsx)("div",{style:{fontSize:10,color:"var(--ui-connection-text, #777b8c)",margin:"2px 4px 6px",letterSpacing:.5},children:"皮肤"}),(0,a.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:2},children:T.map(e=>{let t=e.id===n;return(0,a.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,a.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,a.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,a.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,a.jsx)("path",{d:"m5 12 4 4L19 6"})})]},e.id)})})]}),x)]})}var R=r(9532);let M="agent-webapp:ready:v1",W=(0,n.default)(()=>Promise.all([r.e(118),r.e(658),r.e(366)]).then(r.bind(r,3366)),{loadableGenerated:{webpack:()=>[3366]},ssr:!1}),O=(0,n.default)(()=>r.e(196).then(r.bind(r,5196)),{loadableGenerated:{webpack:()=>[5196]},ssr:!1}),B=(0,n.default)(()=>r.e(137).then(r.bind(r,5137)),{loadableGenerated:{webpack:()=>[5137]},ssr:!1});function H(){return(0,a.jsx)(b,{children:e=>(0,a.jsx)(U,{auth:e})})}let A={id:"webapp-agent",title:"智能助手",kind:"webapp"};function U(e){var t,r,n,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[a,n]=(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 a=new TextEncoder().encode(t),n=new Uint8Array(6+a.byteLength),o=new DataView(n.buffer);return n[0]=1,n[1]=1,o.setUint32(2,e),n.set(a,6),r.send(n),!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((a,n)=>{let o=++u.current,i=setTimeout(()=>{c.current.delete(o),n(Error("".concat(e," timeout")))},r);c.current.set(o,{resolve:a,reject:n,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 a=l.current;if(a){a.onopen=a.onmessage=a.onerror=a.onclose=null;try{a.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){n({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,n({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 a=()=>{e=Date.now()};t.addEventListener("message",a),t.addEventListener("close",()=>t.removeEventListener("message",a),{once:!0})},t.onmessage=e=>{var a,n,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===(n=b.current.get(e))||void 0===n||n.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===(a=f.current.get(i.type))||void 0===a||a.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,n({connected:!1,error:null}),4001===e.code||4003===e.code){y.current();return}if(g.current)return;let a=x.current;x.current=Math.min(2*a,8e3),setTimeout(()=>{g.current||r!==d.current||N()},a)},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:a,epoch:i,rpc:E,onEvent:k,onTerminalData:j,onTerminalReset:z,sendTerminalInput:C,reconnect:N}}(()=>{},f.getWsNonce,f.refresh),[y,k]=(0,o.useState)([{...A}]),[j,z]=(0,o.useState)(A.id),[C,S]=(0,o.useState)({}),N=(0,o.useRef)(!1),T=(0,o.useRef)(null),P=(0,o.useRef)(new Map),D=(0,o.useRef)(new Map),H=(0,o.useCallback)((e,t)=>{P.current.set(e,t);let r=window.setTimeout(()=>{if(P.current.get(e)!==t)return;let r=D.current.get(e);r&&(D.current.delete(e),t(r,!0))},180);return()=>{window.clearTimeout(r),P.current.get(e)===t&&P.current.delete(e)}},[]),U=(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=P.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),[_,J]=(0,o.useState)({}),[K,G]=(0,o.useState)(null),[Y,Q]=(0,o.useState)(!1),[$,ee]=(0,o.useState)("files"),[et,er]=(0,o.useState)(null),[ea,en]=(0,o.useState)(!0),[eo,ei]=(0,o.useState)(null),[es,el]=(0,o.useState)(!1),[ed,ec]=(0,o.useState)([]),[ep,eu]=(0,o.useState)(l.map((e,t)=>({id:"default-".concat(t+1),command:e}))),[ef,eb]=(0,o.useState)(L),[em,ex]=(0,o.useState)(!1),[eg,eh]=(0,o.useState)(!1),ev=I(ef),ew=(0,o.useRef)(null),[ey,ek]=(0,o.useState)(0),[ej,ez]=(0,o.useState)(!1),eC=(0,o.useRef)(null),eS=(0,o.useRef)(null),eE=(0,o.useRef)(null),eN=(0,o.useCallback)(e=>{var t,r;null===(r=eE.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)(()=>{eN(ef)},[ef,eN]),(0,o.useEffect)(()=>{let e=e=>{var t,r,a,n,o,i,s,l,p,u,f,b,m,g,h,v;if(p=window.location.origin,u=null!==(n=null===(t=eE.current)||void 0===t?void 0:t.contentWindow)&&void 0!==n?n:null,e.origin!==p||e.source!==u?null:(f=e.data)&&"object"==typeof f?f.type!==M?null:{type:M}:null){eh(!0);return}let w=(s=window.location.origin,l=null!==(o=null===(r=eE.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),G(w.path),ei(w);return}let y=(g=window.location.origin,h=null!==(i=null===(a=eE.current)||void 0===a?void 0:a.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=eE.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=eE.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 eT=(0,o.useRef)(0),eL=j&&null!==(p=C[j])&&void 0!==p?p:null;(0,o.useEffect)(()=>{let e=window.visualViewport,t=null,r="",a=()=>{let n=(0,R.x)(e,{height:window.innerHeight,width:window.innerWidth}),o="".concat(n.width,"x").concat(n.height,"+").concat(n.top,"+").concat(n.left);o!==r&&(r=o,document.documentElement.style.setProperty("--vv-height","".concat(n.height,"px")),document.documentElement.style.setProperty("--vv-width","".concat(n.width,"px")),document.documentElement.style.setProperty("--vv-top","".concat(n.top,"px")),document.documentElement.style.setProperty("--vv-left","".concat(n.left,"px")),t&&window.clearTimeout(t),t=window.setTimeout(a,250))};return a(),null==e||e.addEventListener("resize",a),null==e||e.addEventListener("scroll",a),window.addEventListener("orientationchange",a),window.addEventListener("resize",a),document.addEventListener("visibilitychange",a),window.addEventListener("pageshow",a),()=>{null==e||e.removeEventListener("resize",a),null==e||e.removeEventListener("scroll",a),window.removeEventListener("orientationchange",a),window.removeEventListener("resize",a),document.removeEventListener("visibilitychange",a),window.removeEventListener("pageshow",a),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,a,n;"boolean"==typeof(null===(t=e.preferences)||void 0===t?void 0:t.keybarHidden)&&el(e.preferences.keybarHidden),Array.isArray(null===(r=e.preferences)||void 0===r?void 0:r.keyOrder)&&ec(e.preferences.keyOrder),Array.isArray(null===(a=e.preferences)||void 0===a?void 0:a.pinnedCommands)&&eu(e.preferences.pinnedCommands),(null===(n=e.preferences)||void 0===n?void 0:n.theme)&&eb(I(e.preferences.theme).id)}).catch(()=>{}).finally(()=>ex(!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)&&en(t.fileTreeFollowMode),(null==t?void 0:t.selectedFile)&&G(t.selectedFile),(null==t?void 0:t.terminalScroll)&&"object"==typeof t.terminalScroll&&J(t.terminalScroll)}).catch(()=>{}).finally(()=>V(!0))},[]);let eP=(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(!em)return;let e=setTimeout(()=>eP({keybarHidden:es,keyOrder:ed,pinnedCommands:ep,theme:ef}),500);return()=>clearTimeout(e)},[es,ed,ep,ef,em,eP]);let eD=(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(()=>eD({activeTerminalId:j,drawerOpen:Y,drawerTab:$,fileTreeRoot:et,fileTreeFollowMode:ea,selectedFile:K,terminalScroll:_}),500);return()=>clearTimeout(e)},[j,Y,$,et,ea,K,_,f.csrfToken,eD]),(0,o.useEffect)(()=>{if(!f.csrfToken)return;let e=()=>eD({activeTerminalId:j,drawerOpen:Y,drawerTab:$,fileTreeRoot:et,fileTreeFollowMode:ea,selectedFile:K,terminalScroll:_});return window.addEventListener("pagehide",e),()=>window.removeEventListener("pagehide",e)},[j,Y,$,et,ea,K,_,f.csrfToken,eD]);let eI=(0,o.useCallback)(e=>{G(e),Q(!1)},[]),eF=(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]),eR=(0,o.useCallback)(e=>{var t;let r=y.find(e=>e.id===j);if(r&&"webapp"!==r.kind){let t=P.current.get(r.id);t?t(e,!0):D.current.set(r.id,e),Q(!1);return}let a=y.length>=8?y.find(e=>"webapp"!==e.kind):null,n=null!==(t=null==a?void 0:a.id)&&void 0!==t?t:"t-web-".concat(Date.now().toString(36),"-").concat(Math.random().toString(36).slice(2,8));a?D.current.set(n,e):k(t=>[...t,{id:n,title:"Terminal ".concat(t.length+1),initialCommand:e}]),z(n),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([A,...t]),z(e=>{let r=T.current||e||A.id;return r===A.id?A.id:t.some(e=>e.id===r)?r:A.id})}).catch(()=>{}))},[b.connected,q,x]);let eM=e=>{e!==A.id&&window.confirm("关闭页签会终止该终端进程,确认关闭?")&&(k(t=>{var r,a;let n=t.filter(t=>t.id!==e);return j===e&&z(null!==(a=null===(r=n[0])||void 0===r?void 0:r.id)&&void 0!==a?a:null),n}),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 a,n;return e===t?null!==(n=null===(a=r[0])||void 0===a?void 0:a.id)&&void 0!==n?n:null:e}),r}),J(e=>{if(!(t in e))return e;let r={...e};return delete r[t],r}))});return()=>{e()}},[g]);let eW=(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]),eO=Math.max(0,y.findIndex(e=>e.id===j)),eB=(null===(t=y[eO])||void 0===t?void 0:t.kind)==="webapp"?ev.cssVars["--ui-term-col-bg"]:ev.termHostBg,eH={...X.root,...ev.cssVars,"--ui-active-content-bg":eB,"--ui-terminal-bg":ev.termHostBg,background:"var(--ui-root-bg)",color:"var(--ui-text)"},eA=(0,o.useCallback)(()=>{ew.current=null,ek(0),ez(!1)},[]),eU=(0,o.useCallback)(e=>{Math.abs(e)>=64&&y.length>1&&eW(e<0?1:-1),eA()},[y.length,eW,eA]),eZ=e=>e instanceof Element&&!!e.closest(".terminal-screen");(0,o.useEffect)(()=>{let e=e=>{var t,r,a,n,o;if(j!==A.id)return;let i=(a=window.location.origin,n=null!==(r=null===(t=eE.current)||void 0===t?void 0:t.contentWindow)&&void 0!==r?r:null,e.origin!==a||e.source!==n?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?(ez(!0),ek(i.deltaX)):"end"===i.phase?eU(i.deltaX):eA())};return window.addEventListener("message",e),()=>window.removeEventListener("message",e)},[j,eU,eA]);let eX=(0,o.useCallback)(function(){var e;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"smooth",r=eS.current;if(!r||!j)return;let a=r.querySelector('[data-terminal-id="'.concat(j,'"]'));if(!a)return;if(a===r.querySelector("[data-terminal-id]")){(0,R.i)(r);return}let n=r.querySelector(".terminal-connection"),o=null!==(e=null==n?void 0:n.offsetWidth)&&void 0!==e?e:0,i=a.offsetLeft,s=i+a.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>eT.current;eT.current=y.length,eX(e?"auto":"smooth")},[j,y.length,eX]),(0,o.useEffect)(()=>{let e=()=>requestAnimationFrame(()=>eX("auto"));return window.addEventListener("pageshow",e),()=>window.removeEventListener("pageshow",e)},[eX]),(0,a.jsxs)("div",{className:"web-root",style:eH,children:[(0,a.jsx)("style",{dangerouslySetInnerHTML:{__html:Z}}),(0,a.jsxs)("div",{className:"terminal-tabs",ref:eS,children:[y.map(e=>(0,a.jsxs)("div",{"data-terminal-id":e.id,draggable:!0,className:"terminal-tab ".concat(e.id===j?"active":""),onDragStart:()=>{eC.current=e.id},onDragOver:e=>e.preventDefault(),onDrop:t=>{t.preventDefault();let r=eC.current;eC.current=null,r&&r!==e.id&&k(t=>{let a=t.findIndex(e=>e.id===r),n=t.findIndex(t=>t.id===e.id);if(a<0||n<0)return t;let o=[...t],[i]=o.splice(a,1);return o.splice(n,0,i),x("term:reorder",{ids:o.map(e=>e.id).filter(e=>e!==A.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,a.jsx)("span",{children:e.title}),"webapp"!==e.kind&&(0,a.jsx)("button",{tabIndex:-1,onClick:t=>{t.stopPropagation(),eM(e.id)},children:"\xd7"})]},e.id)),(0,a.jsx)("button",{className:"terminal-add",disabled:y.length>=8,onClick:eF,children:"+"}),(0,a.jsxs)("div",{className:"terminal-connection",children:[(0,a.jsx)("button",{type:"button",className:"file-drawer-toggle","aria-label":Y?"关闭我的文件":"打开我的文件",title:"我的文件","aria-expanded":Y,onClick:()=>Q(e=>!e),children:(0,a.jsx)(i.Z,{size:17,"aria-hidden":"true"})}),(0,a.jsxs)("div",{className:"theme-avatar-with-status",children:[(0,a.jsx)(F,{username:null!==(u=null===(r=f.user)||void 0===r?void 0:r.username)&&void 0!==u?u:"?",themeId:ef,onThemeChange:eb,accent:ev.keybar.accent,accentText:ev.keybar.accentText}),(0,a.jsx)("span",{className:"theme-avatar-status","data-connected":b.connected,"aria-label":b.connected?"已连接":"未连接"})]})]})]}),(0,a.jsxs)("main",{className:"workspace ".concat(Y?"show-tree":""," ").concat(K?"has-preview":""),style:X.workspace,children:[(0,a.jsx)("section",{className:"term-col",style:X.termCol,onPointerDownCapture:e=>{"touch"===e.pointerType&&eZ(e.target)&&(eA(),ew.current={x:e.clientX,y:e.clientY,axis:"pending",pointerId:e.pointerId})},onPointerMoveCapture:e=>{let t=ew.current;if(!t||e.pointerId!==t.pointerId||"touch"!==e.pointerType)return;let r=e.clientX-t.x,a=e.clientY-t.y;if("pending"===t.axis){if(8>=Math.max(Math.abs(r),Math.abs(a)))return;if(Math.abs(a)>=1.2*Math.abs(r)){ew.current=null;return}t.axis="horizontal",ez(!0);let e=r=>{window.removeEventListener("pointerup",e),window.removeEventListener("pointercancel",e),ew.current===t&&eA()};window.addEventListener("pointerup",e),window.addEventListener("pointercancel",e)}"horizontal"===t.axis&&(e.preventDefault(),ek(r))},onPointerUpCapture:e=>{let t=ew.current;if(!t||e.pointerId!==t.pointerId)return;let r=e.clientX-t.x;"horizontal"===t.axis&&Math.abs(r)>=64?eU(r):eA()},onPointerCancelCapture:eA,children:(0,a.jsx)("div",{className:"terminal-track",style:{transform:"translate3d(calc(".concat(-(100*eO),"% + ").concat(ey,"px),0,0)"),transition:ej?"none":"transform 260ms cubic-bezier(.22,.8,.32,1)"},children:y.map(e=>{var t;return(0,a.jsx)("div",{className:"terminal-slide",children:"webapp"===e.kind?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("iframe",{ref:eE,className:"webapp-frame",src:"/app/",title:e.title,onLoad:()=>eN(ef)}),(0,a.jsxs)("div",{className:"webapp-boot".concat(eg?" is-ready":""),role:"status","aria-live":"polite","aria-hidden":eg,children:[(0,a.jsxs)("div",{className:"webapp-boot-mark","aria-hidden":"true",children:[(0,a.jsx)("span",{className:"webapp-boot-orbit"}),(0,a.jsx)("span",{className:"webapp-boot-diamond"}),(0,a.jsx)("span",{className:"webapp-boot-core"})]}),(0,a.jsx)("strong",{children:"AgentRoam"}),(0,a.jsx)("span",{children:"正在唤醒工作区"})]})]}):(0,a.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:ed,keybarHidden:es,onKeyOrderChange:ec,onKeybarHiddenChange:el,terminalTheme:ev,initialScrollLine:null!==(t=_[e.id])&&void 0!==t?t:null,onScrollLineChange:t=>J(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)})})}),Y&&(0,a.jsx)("div",{className:"drawer-mask",onClick:()=>Q(!1)}),(0,a.jsxs)("aside",{className:"tree-col ".concat(Y?"tree-col-open":""),style:X.treeCol,children:[(0,a.jsxs)("div",{className:"tree-head",style:X.treeHead,children:[(0,a.jsx)("button",{className:"files"===$?"drawer-tab-active":"",onClick:()=>ee("files"),children:"文件"}),(0,a.jsx)("button",{className:"history"===$?"drawer-tab-active":"",onClick:()=>ee("history"),children:"历史"}),(0,a.jsx)("span",{className:"tree-cwd",style:X.treeCwd,children:null!=eL?eL:""}),(0,a.jsx)("button",{style:{...X.iconBtn,marginLeft:"auto",flexShrink:0},onClick:()=>Q(!1),"aria-label":"close drawer",children:(0,a.jsx)(s.Z,{size:15,"aria-hidden":"true"})})]}),"files"===$?(0,a.jsx)(O,{ready:m>0,followCwd:!0,cwd:eL,rpc:x,onEvent:g,onOpenFile:eI,selectedPath:K,initialRoot:et,initialFollow:ea,revealRequest:eo,onTreeStateChange:(e,t)=>{er(e),en(t)}}):(0,a.jsx)(E,{csrfToken:f.csrfToken,terminalId:(null===(n=y.find(e=>e.id===j))||void 0===n?void 0:n.kind)==="webapp"?null:j,pinnedCommands:ep,onPinnedCommandsChange:eu,onFill:U,onExecute:eR}),(0,a.jsxs)("div",{style:X.treeFoot,children:[(0,a.jsx)("span",{style:X.treeFootDot}),(0,a.jsx)("span",{children:"实时同步"})]})]}),K&&(0,a.jsx)("section",{className:"preview-col",style:X.previewCol,children:(0,a.jsx)(B,{path:K,rpc:x,onClose:()=>G(null)})})]})]})}let Z='\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 .file-drawer-toggle { display:grid; place-items:center; width:28px; height:28px; padding:0; border:0; border-radius:6px; background:transparent; color:var(--ui-connection-text, #777b8c); cursor:pointer; flex-shrink:0; touch-action:manipulation; }\n .file-drawer-toggle:hover, .file-drawer-toggle[aria-expanded="true"] { background:color-mix(in srgb, var(--ui-tab-accent, #7aa2f7) 12%, transparent); color:var(--ui-tab-active-text, #edf0f7); }\n .file-drawer-toggle:focus-visible { outline:2px solid var(--ui-tab-accent, #7aa2f7); outline-offset:-2px; }\n .theme-avatar-with-status { position:relative; display:flex; flex-shrink:0; }\n .theme-avatar-status { position:absolute; right:-2px; bottom:-2px; z-index:7; width:6px; height:6px; box-sizing:border-box; border:1px solid var(--ui-connection-bg, #12141b); border-radius:50%; background:var(--ui-error); pointer-events:none; }\n .theme-avatar-status[data-connected="true"] { background:var(--ui-success); }\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:18px; height:18px; padding:0; border-radius:99px; font-size:9px; 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 keeps the compact visual circle easy to target. */\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:-9px; }\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 .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',X={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}}}},function(e){e.O(0,[919,37,183,744],function(){return e(e.s=6736)}),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[744],{701:function(e,n,t){Promise.resolve().then(t.t.bind(t,7709,23)),Promise.resolve().then(t.t.bind(t,5613,23)),Promise.resolve().then(t.t.bind(t,6554,23)),Promise.resolve().then(t.t.bind(t,1338,23)),Promise.resolve().then(t.t.bind(t,9011,23)),Promise.resolve().then(t.t.bind(t,1573,23))}},function(e){var n=function(n){return e(e.s=n)};e.O(0,[37,183],function(){return n(5130),n(701)}),_N_E=e.O()}]);
@@ -1 +1 @@
1
- !function(){"use strict";var e,t,n,r,o,u,i,f,c,a,l,s,d={},p={};function h(e){var t=p[e];if(void 0!==t)return t.exports;var n=p[e]={exports:{}},r=!0;try{d[e](n,n.exports,h),r=!1}finally{r&&delete p[e]}return n.exports}h.m=d,e=[],h.O=function(t,n,r,o){if(n){o=o||0;for(var u=e.length;u>0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[n,r,o];return}for(var i=1/0,u=0;u<e.length;u++){for(var n=e[u][0],r=e[u][1],o=e[u][2],f=!0,c=0;c<n.length;c++)i>=o&&Object.keys(h.O).every(function(e){return h.O[e](n[c])})?n.splice(c--,1):(f=!1,o<i&&(i=o));if(f){e.splice(u--,1);var a=r();void 0!==a&&(t=a)}}return t},h.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return h.d(t,{a:t}),t},n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},h.t=function(e,r){if(1&r&&(e=this(e)),8&r||"object"==typeof e&&e&&(4&r&&e.__esModule||16&r&&"function"==typeof e.then))return e;var o=Object.create(null);h.r(o);var u={};t=t||[null,n({}),n([]),n(n)];for(var i=2&r&&e;"object"==typeof i&&!~t.indexOf(i);i=n(i))Object.getOwnPropertyNames(i).forEach(function(t){u[t]=function(){return e[t]}});return u.default=function(){return e},h.d(o,u),o},h.d=function(e,t){for(var n in t)h.o(t,n)&&!h.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},h.f={},h.e=function(e){return Promise.all(Object.keys(h.f).reduce(function(t,n){return h.f[n](e,t),t},[]))},h.u=function(e){return"static/chunks/"+(658===e?"f3dd23f1":e)+"."+({118:"2a6035b13645ef2d",137:"261fab9d606d75d3",196:"b2ebc421e3d53309",366:"2332f424b0ce112a",658:"b423f4328b6ce988"})[e]+".js"},h.miniCssF=function(e){return"static/css/ac3c182a4b5bc5f1.css"},h.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),h.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},o="_N_E:",h.l=function(e,t,n,u){if(r[e]){r[e].push(t);return}if(void 0!==n)for(var i,f,c=document.getElementsByTagName("script"),a=0;a<c.length;a++){var l=c[a];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")==o+n){i=l;break}}i||(f=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,h.nc&&i.setAttribute("nonce",h.nc),i.setAttribute("data-webpack",o+n),i.src=h.tu(e)),r[e]=[t];var s=function(t,n){i.onerror=i.onload=null,clearTimeout(d);var o=r[e];if(delete r[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach(function(e){return e(n)}),t)return t(n)},d=setTimeout(s.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=s.bind(null,i.onerror),i.onload=s.bind(null,i.onload),f&&document.head.appendChild(i)},h.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},h.tt=function(){return void 0===u&&(u={createScriptURL:function(e){return e}},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(u=trustedTypes.createPolicy("nextjs#bundler",u))),u},h.tu=function(e){return h.tt().createScriptURL(e)},h.p="/_next/",i=function(e,t,n,r){var o=document.createElement("link");return o.rel="stylesheet",o.type="text/css",o.onerror=o.onload=function(u){if(o.onerror=o.onload=null,"load"===u.type)n();else{var i=u&&("load"===u.type?"missing":u.type),f=u&&u.target&&u.target.href||t,c=Error("Loading CSS chunk "+e+" failed.\n("+f+")");c.code="CSS_CHUNK_LOAD_FAILED",c.type=i,c.request=f,o.parentNode.removeChild(o),r(c)}},o.href=t,document.head.appendChild(o),o},f=function(e,t){for(var n=document.getElementsByTagName("link"),r=0;r<n.length;r++){var o=n[r],u=o.getAttribute("data-href")||o.getAttribute("href");if("stylesheet"===o.rel&&(u===e||u===t))return o}for(var i=document.getElementsByTagName("style"),r=0;r<i.length;r++){var o=i[r],u=o.getAttribute("data-href");if(u===e||u===t)return o}},c={272:0},h.f.miniCss=function(e,t){c[e]?t.push(c[e]):0!==c[e]&&({118:1})[e]&&t.push(c[e]=new Promise(function(t,n){var r=h.miniCssF(e),o=h.p+r;if(f(r,o))return t();i(e,o,t,n)}).then(function(){c[e]=0},function(t){throw delete c[e],t}))},a={272:0},h.f.j=function(e,t){var n=h.o(a,e)?a[e]:void 0;if(0!==n){if(n)t.push(n[2]);else if(/^(118|272)$/.test(e))a[e]=0;else{var r=new Promise(function(t,r){n=a[e]=[t,r]});t.push(n[2]=r);var o=h.p+h.u(e),u=Error();h.l(o,function(t){if(h.o(a,e)&&(0!==(n=a[e])&&(a[e]=void 0),n)){var r=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;u.message="Loading chunk "+e+" failed.\n("+r+": "+o+")",u.name="ChunkLoadError",u.type=r,u.request=o,n[1](u)}},"chunk-"+e,e)}}},h.O.j=function(e){return 0===a[e]},l=function(e,t){var n,r,o=t[0],u=t[1],i=t[2],f=0;if(o.some(function(e){return 0!==a[e]})){for(n in u)h.o(u,n)&&(h.m[n]=u[n]);if(i)var c=i(h)}for(e&&e(t);f<o.length;f++)r=o[f],h.o(a,r)&&a[r]&&a[r][0](),a[r]=0;return h.O(c)},(s=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).forEach(l.bind(null,0)),s.push=l.bind(null,s.push.bind(s))}();
1
+ !function(){"use strict";var e,t,n,r,o,u,i,f,c,a,l,s,d={},p={};function h(e){var t=p[e];if(void 0!==t)return t.exports;var n=p[e]={exports:{}},r=!0;try{d[e](n,n.exports,h),r=!1}finally{r&&delete p[e]}return n.exports}h.m=d,e=[],h.O=function(t,n,r,o){if(n){o=o||0;for(var u=e.length;u>0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[n,r,o];return}for(var i=1/0,u=0;u<e.length;u++){for(var n=e[u][0],r=e[u][1],o=e[u][2],f=!0,c=0;c<n.length;c++)i>=o&&Object.keys(h.O).every(function(e){return h.O[e](n[c])})?n.splice(c--,1):(f=!1,o<i&&(i=o));if(f){e.splice(u--,1);var a=r();void 0!==a&&(t=a)}}return t},h.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return h.d(t,{a:t}),t},n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},h.t=function(e,r){if(1&r&&(e=this(e)),8&r||"object"==typeof e&&e&&(4&r&&e.__esModule||16&r&&"function"==typeof e.then))return e;var o=Object.create(null);h.r(o);var u={};t=t||[null,n({}),n([]),n(n)];for(var i=2&r&&e;"object"==typeof i&&!~t.indexOf(i);i=n(i))Object.getOwnPropertyNames(i).forEach(function(t){u[t]=function(){return e[t]}});return u.default=function(){return e},h.d(o,u),o},h.d=function(e,t){for(var n in t)h.o(t,n)&&!h.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},h.f={},h.e=function(e){return Promise.all(Object.keys(h.f).reduce(function(t,n){return h.f[n](e,t),t},[]))},h.u=function(e){return"static/chunks/"+(658===e?"f3dd23f1":e)+"."+({118:"2a6035b13645ef2d",137:"e70970795c25de4f",196:"b2ebc421e3d53309",366:"2332f424b0ce112a",658:"b423f4328b6ce988"})[e]+".js"},h.miniCssF=function(e){return"static/css/ac3c182a4b5bc5f1.css"},h.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),h.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},o="_N_E:",h.l=function(e,t,n,u){if(r[e]){r[e].push(t);return}if(void 0!==n)for(var i,f,c=document.getElementsByTagName("script"),a=0;a<c.length;a++){var l=c[a];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")==o+n){i=l;break}}i||(f=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,h.nc&&i.setAttribute("nonce",h.nc),i.setAttribute("data-webpack",o+n),i.src=h.tu(e)),r[e]=[t];var s=function(t,n){i.onerror=i.onload=null,clearTimeout(d);var o=r[e];if(delete r[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach(function(e){return e(n)}),t)return t(n)},d=setTimeout(s.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=s.bind(null,i.onerror),i.onload=s.bind(null,i.onload),f&&document.head.appendChild(i)},h.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},h.tt=function(){return void 0===u&&(u={createScriptURL:function(e){return e}},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(u=trustedTypes.createPolicy("nextjs#bundler",u))),u},h.tu=function(e){return h.tt().createScriptURL(e)},h.p="/_next/",i=function(e,t,n,r){var o=document.createElement("link");return o.rel="stylesheet",o.type="text/css",o.onerror=o.onload=function(u){if(o.onerror=o.onload=null,"load"===u.type)n();else{var i=u&&("load"===u.type?"missing":u.type),f=u&&u.target&&u.target.href||t,c=Error("Loading CSS chunk "+e+" failed.\n("+f+")");c.code="CSS_CHUNK_LOAD_FAILED",c.type=i,c.request=f,o.parentNode.removeChild(o),r(c)}},o.href=t,document.head.appendChild(o),o},f=function(e,t){for(var n=document.getElementsByTagName("link"),r=0;r<n.length;r++){var o=n[r],u=o.getAttribute("data-href")||o.getAttribute("href");if("stylesheet"===o.rel&&(u===e||u===t))return o}for(var i=document.getElementsByTagName("style"),r=0;r<i.length;r++){var o=i[r],u=o.getAttribute("data-href");if(u===e||u===t)return o}},c={272:0},h.f.miniCss=function(e,t){c[e]?t.push(c[e]):0!==c[e]&&({118:1})[e]&&t.push(c[e]=new Promise(function(t,n){var r=h.miniCssF(e),o=h.p+r;if(f(r,o))return t();i(e,o,t,n)}).then(function(){c[e]=0},function(t){throw delete c[e],t}))},a={272:0},h.f.j=function(e,t){var n=h.o(a,e)?a[e]:void 0;if(0!==n){if(n)t.push(n[2]);else if(/^(118|272)$/.test(e))a[e]=0;else{var r=new Promise(function(t,r){n=a[e]=[t,r]});t.push(n[2]=r);var o=h.p+h.u(e),u=Error();h.l(o,function(t){if(h.o(a,e)&&(0!==(n=a[e])&&(a[e]=void 0),n)){var r=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;u.message="Loading chunk "+e+" failed.\n("+r+": "+o+")",u.name="ChunkLoadError",u.type=r,u.request=o,n[1](u)}},"chunk-"+e,e)}}},h.O.j=function(e){return 0===a[e]},l=function(e,t){var n,r,o=t[0],u=t[1],i=t[2],f=0;if(o.some(function(e){return 0!==a[e]})){for(n in u)h.o(u,n)&&(h.m[n]=u[n]);if(i)var c=i(h)}for(e&&e(t);f<o.length;f++)r=o[f],h.o(a,r)&&a[r]&&a[r][0](),a[r]=0;return h.O(c)},(s=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).forEach(l.bind(null,0)),s.push=l.bind(null,s.push.bind(s))}();
@@ -3,6 +3,10 @@ import { randomBytes } from "node:crypto";
3
3
  import { createReadStream } from "node:fs";
4
4
  import fsp from "node:fs/promises";
5
5
  import path from "node:path";
6
+ import {
7
+ MAX_MARKDOWN_PREVIEW_BYTES,
8
+ renderMarkdownPreviewDocument,
9
+ } from "./markdown-preview.mjs";
6
10
 
7
11
  export const MAX_EDITABLE_TEXT_BYTES = 8 * 1024 * 1024;
8
12
  const MAX_GIT_OUTPUT_BYTES = 16 * 1024 * 1024;
@@ -217,6 +221,31 @@ export async function servePreviewFile(request, response, filePath, mime = "appl
217
221
  stream.pipe(response);
218
222
  }
219
223
 
224
+ export async function serveMarkdownPreview(request, response, filePath, extraHeaders = {}) {
225
+ const canonicalPath = await fsp.realpath(filePath);
226
+ const stat = await fsp.stat(canonicalPath);
227
+ if (!stat.isFile()) throw fileError("EISDIR", "not a regular file");
228
+
229
+ const oversized = stat.size > MAX_MARKDOWN_PREVIEW_BYTES;
230
+ const source = oversized
231
+ ? "# 无法渲染此 Markdown\n\n文件超过 8 MiB,请退出眼睛预览后使用渐进式源码视图阅读。"
232
+ : await fsp.readFile(canonicalPath, "utf8");
233
+ const document = renderMarkdownPreviewDocument(source, { title: path.basename(canonicalPath) });
234
+ const length = Buffer.byteLength(document);
235
+ response.writeHead(oversized ? 413 : 200, {
236
+ "cache-control": "private, no-store",
237
+ "content-length": String(length),
238
+ "content-type": "text/html; charset=utf-8",
239
+ "x-content-type-options": "nosniff",
240
+ ...extraHeaders,
241
+ });
242
+ if (request.method === "HEAD") {
243
+ response.end();
244
+ return;
245
+ }
246
+ response.end(document);
247
+ }
248
+
220
249
  export function createPreviewTicketRegistry({
221
250
  ttlMs = DEFAULT_PREVIEW_TICKET_TTL_MS,
222
251
  maxTickets = DEFAULT_MAX_PREVIEW_TICKETS,
@@ -0,0 +1,65 @@
1
+ import { Marked } from "marked";
2
+
3
+ export const MAX_MARKDOWN_PREVIEW_BYTES = 8 * 1024 * 1024;
4
+
5
+ const MARKDOWN_EXTENSIONS = new Set(["md", "markdown", "mdown", "mkdn", "mdx"]);
6
+
7
+ function escapeHtml(value) {
8
+ return String(value)
9
+ .replaceAll("&", "&amp;")
10
+ .replaceAll("<", "&lt;")
11
+ .replaceAll(">", "&gt;")
12
+ .replaceAll('"', "&quot;")
13
+ .replaceAll("'", "&#39;");
14
+ }
15
+
16
+ const markdown = new Marked({
17
+ gfm: true,
18
+ renderer: {
19
+ html({ text }) {
20
+ return escapeHtml(text);
21
+ },
22
+ },
23
+ });
24
+
25
+ export function isMarkdownPreviewPath(filePath) {
26
+ const extension = String(filePath).split(".").pop()?.toLowerCase() ?? "";
27
+ return MARKDOWN_EXTENSIONS.has(extension);
28
+ }
29
+
30
+ export function renderMarkdownPreviewDocument(source, { title = "Markdown Preview" } = {}) {
31
+ const rendered = markdown.parse(String(source), { async: false });
32
+ return `<!doctype html>
33
+ <html lang="zh-CN">
34
+ <head>
35
+ <meta charset="utf-8">
36
+ <meta name="viewport" content="width=device-width, initial-scale=1">
37
+ <title>${escapeHtml(title)}</title>
38
+ <style>
39
+ :root { color-scheme: light dark; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; }
40
+ * { box-sizing: border-box; }
41
+ body { margin: 0; background: Canvas; color: CanvasText; line-height: 1.65; overflow-wrap: anywhere; }
42
+ main { width: min(100% - 32px, 860px); margin: 0 auto; padding: 28px 0 52px; }
43
+ h1, h2, h3, h4, h5, h6 { margin: 1.45em 0 0.55em; line-height: 1.25; }
44
+ h1 { margin-top: 0; padding-bottom: 0.35em; border-bottom: 1px solid color-mix(in srgb, CanvasText 18%, transparent); font-size: 2em; }
45
+ h2 { padding-bottom: 0.3em; border-bottom: 1px solid color-mix(in srgb, CanvasText 13%, transparent); font-size: 1.5em; }
46
+ p, ul, ol, blockquote, table, pre { margin: 0 0 1em; }
47
+ ul, ol { padding-left: 1.7em; }
48
+ blockquote { margin-left: 0; padding: 0.15em 1em; border-left: 4px solid #7aa2f7; color: color-mix(in srgb, CanvasText 72%, transparent); }
49
+ a { color: LinkText; text-underline-offset: 0.16em; }
50
+ img, video { display: block; max-width: 100%; height: auto; margin: 1em auto; }
51
+ pre { max-width: 100%; overflow: auto; padding: 14px 16px; border: 1px solid color-mix(in srgb, CanvasText 12%, transparent); border-radius: 6px; background: color-mix(in srgb, CanvasText 7%, Canvas); }
52
+ code { font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace; font-size: 0.9em; }
53
+ :not(pre) > code { padding: 0.14em 0.35em; border-radius: 4px; background: color-mix(in srgb, CanvasText 8%, Canvas); }
54
+ table { display: block; width: max-content; max-width: 100%; overflow-x: auto; border-spacing: 0; border-collapse: collapse; }
55
+ th, td { padding: 7px 12px; border: 1px solid color-mix(in srgb, CanvasText 16%, transparent); text-align: left; }
56
+ th { background: color-mix(in srgb, CanvasText 7%, Canvas); }
57
+ input[type="checkbox"] { margin: 0 0.45em 0.2em; }
58
+ .task-list-item { list-style: none; }
59
+ hr { height: 1px; margin: 1.5em 0; border: 0; background: color-mix(in srgb, CanvasText 16%, transparent); }
60
+ @media (max-width: 520px) { main { width: min(100% - 24px, 860px); padding-top: 20px; } h1 { font-size: 1.65em; } h2 { font-size: 1.3em; } }
61
+ </style>
62
+ </head>
63
+ <body><main>${rendered}</main></body>
64
+ </html>`;
65
+ }
@@ -4,22 +4,22 @@
4
4
  "requires": true,
5
5
  "packages": {
6
6
  "node_modules/@anthropic-ai/claude-agent-sdk": {
7
- "version": "0.3.261",
8
- "resolved": "http://nexus.17usoft.com/repository/npm-all/@anthropic-ai/claude-agent-sdk/-/claude-agent-sdk-0.3.261.tgz",
9
- "integrity": "sha512-CDG9z14JVKYRHjpp/g6zJ2k8xM5uSoRgjGdpTiK9woLDZxXtXcxV93ipCh55jQ3REj7M7H3GieMsETGZXB/ydw==",
7
+ "version": "0.3.263",
8
+ "resolved": "http://nexus.17usoft.com/repository/npm-all/@anthropic-ai/claude-agent-sdk/-/claude-agent-sdk-0.3.263.tgz",
9
+ "integrity": "sha512-0QWoHgWWlSmgXfEqZRbVYRoXT9p4tx/yKaZ4eLJ8l1MR65SIvMGR+cd5ZXUpGYZpj9RzbYiYU9LoFg90mdIjmw==",
10
10
  "license": "SEE LICENSE IN README.md",
11
11
  "engines": {
12
12
  "node": ">=18.0.0"
13
13
  },
14
14
  "optionalDependencies": {
15
- "@anthropic-ai/claude-agent-sdk-darwin-arm64": "0.3.261",
16
- "@anthropic-ai/claude-agent-sdk-darwin-x64": "0.3.261",
17
- "@anthropic-ai/claude-agent-sdk-linux-arm64": "0.3.261",
18
- "@anthropic-ai/claude-agent-sdk-linux-arm64-musl": "0.3.261",
19
- "@anthropic-ai/claude-agent-sdk-linux-x64": "0.3.261",
20
- "@anthropic-ai/claude-agent-sdk-linux-x64-musl": "0.3.261",
21
- "@anthropic-ai/claude-agent-sdk-win32-arm64": "0.3.261",
22
- "@anthropic-ai/claude-agent-sdk-win32-x64": "0.3.261"
15
+ "@anthropic-ai/claude-agent-sdk-darwin-arm64": "0.3.263",
16
+ "@anthropic-ai/claude-agent-sdk-darwin-x64": "0.3.263",
17
+ "@anthropic-ai/claude-agent-sdk-linux-arm64": "0.3.263",
18
+ "@anthropic-ai/claude-agent-sdk-linux-arm64-musl": "0.3.263",
19
+ "@anthropic-ai/claude-agent-sdk-linux-x64": "0.3.263",
20
+ "@anthropic-ai/claude-agent-sdk-linux-x64-musl": "0.3.263",
21
+ "@anthropic-ai/claude-agent-sdk-win32-arm64": "0.3.263",
22
+ "@anthropic-ai/claude-agent-sdk-win32-x64": "0.3.263"
23
23
  },
24
24
  "peerDependencies": {
25
25
  "@anthropic-ai/sdk": ">=0.93.0",
@@ -400,6 +400,18 @@
400
400
  "loose-envify": "cli.js"
401
401
  }
402
402
  },
403
+ "node_modules/marked": {
404
+ "version": "15.0.12",
405
+ "resolved": "http://nexus.17usoft.com/repository/npm-all/marked/-/marked-15.0.12.tgz",
406
+ "integrity": "sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA==",
407
+ "license": "MIT",
408
+ "bin": {
409
+ "marked": "bin/marked.js"
410
+ },
411
+ "engines": {
412
+ "node": ">= 18"
413
+ }
414
+ },
403
415
  "node_modules/mimic-response": {
404
416
  "version": "3.1.0",
405
417
  "resolved": "http://nexus.17usoft.com/repository/npm-all/mimic-response/-/mimic-response-3.1.0.tgz",
@@ -30,9 +30,11 @@ export type AgentEvent = {
30
30
  } | {
31
31
  type: "tool_call";
32
32
  toolCall: ToolCall;
33
+ turnId?: string;
33
34
  } | {
34
35
  type: "tool_result";
35
36
  result: ToolResult;
37
+ turnId?: string;
36
38
  } | {
37
39
  type: "text_chunk";
38
40
  text: string;
@@ -81,6 +83,7 @@ export type AgentEvent = {
81
83
  itemId: string;
82
84
  sectionIndex: number;
83
85
  delta: string;
86
+ turnId?: string;
84
87
  } | ({
85
88
  type: "runtime_progress";
86
89
  } & RuntimeProgress) | {
@@ -1 +1 @@
1
- {"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../../../src/domain/agent/entities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../../../src/domain/agent/entities.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { ReasoningSummarySection } from '../agent/entities.js';
2
+ import type { SessionToolResultRef } from '../session/entities.js';
2
3
  export interface Message {
3
4
  role: "system" | "user" | "assistant" | "tool";
4
5
  content: string;
@@ -11,6 +12,8 @@ export interface Message {
11
12
  name?: string;
12
13
  toolCallId?: string;
13
14
  toolCalls?: ToolCall[];
15
+ /** Revision-scoped pointer to a native tool result loaded only on expansion. */
16
+ toolResultRef?: SessionToolResultRef;
14
17
  }
15
18
  export interface NativeSubagentActivity {
16
19
  taskId: string;
@@ -36,6 +39,10 @@ export interface MessagePresentation {
36
39
  rawContent?: string;
37
40
  attachments?: MessageAttachment[];
38
41
  reasoning?: ReasoningSummarySection[];
42
+ /** Native Codex turn owning the execution details shown after this message. */
43
+ executionTrace?: {
44
+ turnId: string;
45
+ };
39
46
  /** Authoritative wall-clock duration for a successfully completed turn. */
40
47
  completionDurationMs?: number;
41
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../../../src/domain/model/entities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../../../src/domain/model/entities.ts"],"names":[],"mappings":"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"}
@@ -15,11 +15,26 @@ export interface Session {
15
15
  metadata: Record<string, unknown>;
16
16
  }
17
17
  /** Opaque backward cursor used to request an older session-history window. */
18
+ export type SessionHistoryView = "core" | "trace";
18
19
  export interface SessionHistoryQuery {
19
20
  before?: string;
20
21
  after?: string;
21
22
  anchor?: string;
22
23
  limit?: number;
24
+ view?: SessionHistoryView;
25
+ revision?: string;
26
+ /** Native turn selected for on-demand execution-trace hydration. */
27
+ turnId?: string;
28
+ }
29
+ export interface SessionToolResultRef {
30
+ turnId: string;
31
+ itemId: string;
32
+ revision: string;
33
+ byteSize: number;
34
+ isError?: boolean;
35
+ }
36
+ export interface SessionToolResultBody extends SessionToolResultRef {
37
+ content: string;
23
38
  }
24
39
  export interface SessionQueryIndexEntry {
25
40
  messageId: string;
@@ -42,6 +57,7 @@ export interface SessionHistoryWindow {
42
57
  newerCursor?: string | null;
43
58
  kind?: "latest" | "anchored";
44
59
  revision?: string;
60
+ delivery?: SessionHistoryView | "legacy-full";
45
61
  }
46
62
  export interface SessionHistoryPage {
47
63
  messages: Message[];
@@ -1 +1 @@
1
- {"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../../../src/domain/session/entities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../../../src/domain/session/entities.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- export { type SessionStatus, type Session, type SessionHistoryQuery, type SessionHistoryWindow, type SessionHistoryPage, type SessionQueryIndex, type SessionQueryIndexEntry, type ISessionStore, } from './entities.js';
1
+ export { type SessionStatus, type Session, type SessionHistoryQuery, type SessionHistoryView, type SessionHistoryWindow, type SessionHistoryPage, type SessionToolResultRef, type SessionToolResultBody, type SessionQueryIndex, type SessionQueryIndexEntry, type ISessionStore, } from './entities.js';
2
2
  export { paginateSessionHistory } from './SessionHistory.js';
3
- export { StaleSessionAnchorError, buildSessionQueryIndex, computeSessionHistoryRevision, sessionHistoryMessageId, } from './SessionQueryIndex.js';
3
+ export { StaleSessionAnchorError, buildSessionQueryIndex, computeSessionHistoryRevision, decodeSessionHistoryAnchor, sessionHistoryMessageId, } from './SessionQueryIndex.js';
4
4
  export { SessionQueryIndexCache } from './SessionQueryIndexCache.js';
5
5
  export * from './SessionTitle.js';
6
6
  export * from './SessionGoals.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/session/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,OAAO,EACZ,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,aAAa,GACnB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,6BAA6B,EAC7B,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/session/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,OAAO,EACZ,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,aAAa,GACnB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,6BAA6B,EAC7B,0BAA0B,EAC1B,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,6BAA6B,CAAC"}
@@ -12435,6 +12435,7 @@ export {
12435
12435
  enqueueSessionGoal,
12436
12436
  describeCron,
12437
12437
  defaultPinnedCommands,
12438
+ decodeSessionHistoryAnchor,
12438
12439
  consumePendingAutoTitle,
12439
12440
  computeSessionHistoryRevision,
12440
12441
  computeNextFireAt,
@@ -12528,4 +12529,4 @@ export {
12528
12529
  AUTO_TITLE_PENDING_METADATA_KEY
12529
12530
  };
12530
12531
 
12531
- //# debugId=06235227BBB1532064756E2164756E21
12532
+ //# debugId=E8AE2130FFDEAA9164756E2164756E21