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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/README.md +2 -2
  2. package/dist/cli.js +1 -1
  3. package/dist/cloudflared/bundled-asset.test.js +1 -1
  4. package/dist/cloudflared/manifest.js +1 -1
  5. package/dist/tunnel/public-readiness.js +1 -1
  6. package/package.json +2 -2
  7. package/runtime/.next/BUILD_ID +1 -1
  8. package/runtime/.next/app-build-manifest.json +4 -4
  9. package/runtime/.next/app-path-routes-manifest.json +1 -1
  10. package/runtime/.next/build-manifest.json +5 -5
  11. package/runtime/.next/prerender-manifest.json +1 -1
  12. package/runtime/.next/react-loadable-manifest.json +2 -2
  13. package/runtime/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  14. package/runtime/.next/server/app/_not-found.html +1 -1
  15. package/runtime/.next/server/app/_not-found.rsc +1 -1
  16. package/runtime/.next/server/app/api/agent/abort/route.js +2 -2
  17. package/runtime/.next/server/app/api/agent/abort/route.js.nft.json +1 -1
  18. package/runtime/.next/server/app/api/agent/answer/route.js +2 -2
  19. package/runtime/.next/server/app/api/agent/answer/route.js.nft.json +1 -1
  20. package/runtime/.next/server/app/api/agent/run/route.js +2 -2
  21. package/runtime/.next/server/app/api/agent/run/route.js.nft.json +1 -1
  22. package/runtime/.next/server/app/api/agent/runtime-health/route.js +1 -1
  23. package/runtime/.next/server/app/api/agent/runtime-health/route.js.nft.json +1 -1
  24. package/runtime/.next/server/app/api/agent/steer/route.js +2 -2
  25. package/runtime/.next/server/app/api/agent/steer/route.js.nft.json +1 -1
  26. package/runtime/.next/server/app/api/agent/stream/route.js +2 -2
  27. package/runtime/.next/server/app/api/agent/stream/route.js.nft.json +1 -1
  28. package/runtime/.next/server/app/api/sessions/[id]/changes/route.js +2 -2
  29. package/runtime/.next/server/app/api/sessions/[id]/changes/route.js.nft.json +1 -1
  30. package/runtime/.next/server/app/api/sessions/[id]/fork/route.js +1 -1
  31. package/runtime/.next/server/app/api/sessions/[id]/fork/route.js.nft.json +1 -1
  32. package/runtime/.next/server/app/api/sessions/[id]/handoff/route.js +1 -1
  33. package/runtime/.next/server/app/api/sessions/[id]/handoff/route.js.nft.json +1 -1
  34. package/runtime/.next/server/app/api/sessions/[id]/route.js +2 -2
  35. package/runtime/.next/server/app/api/sessions/[id]/route.js.nft.json +1 -1
  36. package/runtime/.next/server/app/api/sessions/route.js +2 -2
  37. package/runtime/.next/server/app/api/sessions/route.js.nft.json +1 -1
  38. package/runtime/.next/server/app/web/page.js +1 -1
  39. package/runtime/.next/server/app/web/page_client-reference-manifest.js +1 -1
  40. package/runtime/.next/server/app/web.html +1 -1
  41. package/runtime/.next/server/app/web.rsc +2 -2
  42. package/runtime/.next/server/app-paths-manifest.json +15 -15
  43. package/runtime/.next/server/chunks/{809.js → 988.js} +10 -10
  44. package/runtime/.next/server/middleware-build-manifest.js +1 -1
  45. package/runtime/.next/server/middleware-react-loadable-manifest.js +1 -1
  46. package/runtime/.next/server/pages/404.html +1 -1
  47. package/runtime/.next/server/pages/500.html +1 -1
  48. package/runtime/.next/server/server-reference-manifest.json +1 -1
  49. package/runtime/.next/static/chunks/404.829f96e7395dbd79.js +1 -0
  50. package/runtime/.next/static/chunks/app/web/page-8747e21600303a2a.js +1 -0
  51. package/runtime/.next/static/chunks/{webpack-8bcef6486c3ddc96.js → webpack-96381cef391af02d.js} +1 -1
  52. package/runtime/node_modules/@agent/core/dist/domain/web-console/WebArtifactBridge.d.ts +9 -0
  53. package/runtime/node_modules/@agent/core/dist/domain/web-console/WebArtifactBridge.d.ts.map +1 -0
  54. package/runtime/node_modules/@agent/core/dist/domain/web-console/WebArtifactBridge.test.d.ts +2 -0
  55. package/runtime/node_modules/@agent/core/dist/domain/web-console/WebArtifactBridge.test.d.ts.map +1 -0
  56. package/runtime/node_modules/@agent/core/dist/domain/web-console/index.d.ts +1 -0
  57. package/runtime/node_modules/@agent/core/dist/domain/web-console/index.d.ts.map +1 -1
  58. package/runtime/node_modules/@agent/core/dist/index.js +24 -1
  59. package/runtime/node_modules/@agent/core/dist/index.js.map +4 -3
  60. package/runtime/webapp/dist/assets/{App-XUxeDI8P.js → App-C4wiUXZC.js} +62 -62
  61. package/runtime/webapp/dist/assets/index-D7slQOD-.css +1 -0
  62. package/runtime/webapp/dist/assets/{index-BdHtZjnb.js → index-DhS2YvqH.js} +1 -1
  63. package/runtime/webapp/dist/index.html +2 -2
  64. package/runtime/.next/static/chunks/604.749f141c00996f2f.js +0 -1
  65. package/runtime/.next/static/chunks/app/web/page-7d24c8b46d41da35.js +0 -1
  66. package/runtime/webapp/dist/assets/index-DeGogWCH.css +0 -1
  67. /package/runtime/.next/static/{mZZGSYMLIZnVm0gc5PXky → HvOq-7Qqu9K-QSMSBbbdj}/_buildManifest.js +0 -0
  68. /package/runtime/.next/static/{mZZGSYMLIZnVm0gc5PXky → HvOq-7Qqu9K-QSMSBbbdj}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ @import"https://fonts.googleapis.com/css2?family=Inter:wght@300..700&family=IBM+Plex+Mono:wght@400;500&display=swap";:root,[data-skin=pearl]{--bg-deepest: #f5f6fa;--bg-deep: #eef0f6;--bg-surface: #ffffff;--bg-elevated: #ffffff;--bg-glass: rgba(255, 255, 255, .82);--bg-workspace: color-mix(in srgb, var(--bg-surface) 64%, var(--bg-deepest));--accent: #4f6ef7;--accent-glow: rgba(79, 110, 247, .16);--accent-dim: rgba(79, 110, 247, .09);--success: #059669;--danger: #dc2626;--status-error: #8b93a1;--warning: #d97706;--info: #0284c7;--text-primary: #111827;--text-secondary: #4b5563;--text-muted: #9ca3af;--text-inverse: #ffffff;--border-subtle: rgba(17, 24, 39, .07);--border-default: rgba(17, 24, 39, .13);--border-glow: rgba(79, 110, 247, .3);--shadow-sm: 0 1px 4px rgba(17, 24, 39, .07), 0 1px 2px rgba(17, 24, 39, .05);--shadow-md: 0 8px 24px rgba(17, 24, 39, .1), 0 2px 8px rgba(17, 24, 39, .06);--shadow-glow: 0 0 20px var(--accent-glow);--radius-sm: 7px;--radius-md: 12px;--radius-lg: 18px;--radius-xl: 24px;--font-display: "Inter", system-ui, sans-serif;--font-body: "Inter", system-ui, sans-serif;--font-mono: "IBM Plex Mono", monospace;--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--duration-fast: .15s;--duration-normal: .3s;--duration-slow: .6s;--hairline: var(--border-subtle);--control-hover: color-mix(in srgb, var(--accent) 8%, var(--bg-elevated));--control-active: var(--accent-dim);--focus-ring: 0 0 0 3px var(--accent);--active-edge: var(--accent)}.host-project-picker-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:24000;display:grid;place-items:center;padding:16px;background:#080a0e85}.host-project-picker{display:flex;flex-direction:column;width:min(560px,calc(100vw - 32px));height:min(620px,calc(100dvh - 32px));min-height:380px;overflow:hidden;border:1px solid var(--border-default);border-radius:8px;background:var(--bg-surface);color:var(--text-primary);box-shadow:var(--shadow-md)}.host-project-picker-header,.host-project-picker-nav,.host-project-picker-footer,.host-project-picker-root{flex-shrink:0}.host-project-picker-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:15px 16px 12px;border-bottom:1px solid var(--border-subtle)}.host-project-picker-header h2{margin:0;font-size:15px;line-height:1.3;letter-spacing:0}.host-project-picker-header p{margin:4px 0 0;color:var(--text-muted);font-size:11px;line-height:1.4}.host-project-picker-root{display:flex;align-items:center;gap:10px;padding:9px 12px 0;color:var(--text-muted);font-size:11px}.host-project-picker-root select{min-width:0;flex:1;height:30px;border:1px solid var(--border-default);border-radius:6px;background:var(--bg-deep);color:var(--text-primary)}.host-project-picker-nav{display:flex;align-items:center;gap:6px;padding:9px 12px;border-bottom:1px solid var(--border-subtle)}.host-project-picker-breadcrumbs{display:flex;min-width:0;flex:1;align-items:center;overflow-x:auto;white-space:nowrap;scrollbar-width:none}.host-project-picker-breadcrumbs span{display:inline-flex;align-items:center}.host-project-picker-breadcrumbs i{color:var(--text-muted);font-style:normal}.host-project-picker-breadcrumbs button{height:26px;padding:0 5px;border:0;background:transparent;color:var(--text-secondary);font-size:11px}.host-project-picker-warning{margin:0;padding:7px 13px;border-bottom:1px solid color-mix(in srgb,var(--warning) 25%,transparent);background:color-mix(in srgb,var(--warning) 8%,transparent);color:var(--warning);font-size:11px}.host-project-picker-list{min-height:0;flex:1;overflow-y:auto;padding:6px}.host-project-picker-row{display:grid;grid-template-columns:24px minmax(0,1fr) 20px;align-items:center;width:100%;min-height:38px;padding:4px 8px;border:0;border-radius:6px;background:transparent;color:var(--text-primary);text-align:left}.host-project-picker-row:hover,.host-project-picker-row:focus-visible{background:var(--bg-hover)}.host-project-picker-row.is-file{color:var(--text-secondary)}.host-project-picker-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.host-project-picker-entry-icon,.host-project-picker-chevron{display:inline-flex;align-items:center;justify-content:flex-start}.host-project-picker-entry-icon.is-folder{color:var(--accent)}.host-project-picker-entry-icon.is-code{color:color-mix(in srgb,#f59e0b 76%,var(--text-primary))}.host-project-picker-entry-icon.is-style{color:color-mix(in srgb,#3b82f6 78%,var(--text-primary))}.host-project-picker-entry-icon.is-image,.host-project-picker-entry-icon.is-spreadsheet{color:color-mix(in srgb,#10b981 76%,var(--text-primary))}.host-project-picker-entry-icon.is-video{color:color-mix(in srgb,#ec4899 72%,var(--text-primary))}.host-project-picker-entry-icon.is-audio{color:color-mix(in srgb,#8b5cf6 72%,var(--text-primary))}.host-project-picker-entry-icon.is-markdown{color:color-mix(in srgb,#0ea5e9 76%,var(--text-primary))}.host-project-picker-entry-icon.is-json,.host-project-picker-entry-icon.is-database{color:color-mix(in srgb,#14b8a6 74%,var(--text-primary))}.host-project-picker-entry-icon.is-archive{color:color-mix(in srgb,#f97316 75%,var(--text-primary))}.host-project-picker-entry-icon.is-presentation{color:color-mix(in srgb,#ef4444 72%,var(--text-primary))}.host-project-picker-entry-icon.is-text,.host-project-picker-entry-icon.is-file{color:var(--text-muted)}.host-project-picker-entry-icon svg,.host-project-picker-chevron svg{flex:none}.host-project-picker-chevron{color:var(--text-muted);justify-content:flex-end}.host-project-picker-state{display:grid;min-height:180px;place-items:center;padding:24px;color:var(--text-muted);font-size:12px;text-align:center}.host-project-picker-state.is-error{color:var(--danger)}.host-project-picker-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border-top:1px solid var(--border-subtle)}.host-project-picker-footer code{min-width:0;flex:1;overflow-wrap:anywhere;color:var(--text-muted);font-size:10px}.host-project-picker-footer>div{display:flex;flex-shrink:0;gap:8px}.host-project-picker-cancel,.host-project-picker-confirm{min-height:32px;padding:0 12px;border-radius:6px;font-size:12px}.host-project-picker-cancel{border:1px solid var(--border-default);background:transparent;color:var(--text-secondary)}.host-project-picker-confirm{border:1px solid var(--accent);background:var(--accent);color:var(--text-inverse)}@media (max-width: 640px){.host-project-picker-backdrop{padding:8px}.host-project-picker{width:calc(100vw - 16px);height:min(680px,calc(100dvh - 16px))}.host-project-picker-footer{align-items:stretch;flex-direction:column}.host-project-picker-footer>div{justify-content:flex-end}}[data-skin=scifi]{--bg-deepest: #050a14;--bg-deep: #0a1220;--bg-surface: #0d1626;--bg-elevated: #122036;--bg-glass: rgba(13, 22, 38, .82);--accent: #22d3ee;--accent-glow: rgba(34, 211, 238, .22);--accent-dim: rgba(34, 211, 238, .1);--success: #34d399;--danger: #fb7185;--status-error: #7b8794;--warning: #fbbf24;--info: #38bdf8;--text-primary: #e2f3ff;--text-secondary: #9fb8d0;--text-muted: #5c7893;--text-inverse: #04121a;--border-subtle: rgba(34, 211, 238, .1);--border-default: rgba(34, 211, 238, .22);--border-glow: rgba(34, 211, 238, .5);--shadow-sm: 0 1px 6px rgba(0, 0, 0, .5), 0 0 6px rgba(34, 211, 238, .08);--shadow-md: 0 10px 30px rgba(0, 0, 0, .55), 0 0 18px rgba(34, 211, 238, .12);--shadow-glow: 0 0 24px rgba(34, 211, 238, .35);--font-display: "IBM Plex Mono", monospace;--font-body: "Inter", system-ui, sans-serif;--font-mono: "IBM Plex Mono", monospace}[data-skin=scifi] html,[data-skin=scifi] body,html[data-skin=scifi] body{background:linear-gradient(rgba(34,211,238,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(34,211,238,.035) 1px,transparent 1px),radial-gradient(ellipse at 50% -20%,rgba(34,211,238,.14),transparent 55%),radial-gradient(ellipse at 90% 110%,rgba(168,85,247,.1),transparent 50%),var(--bg-deepest);background-size:44px 44px,44px 44px,100% 100%,100% 100%,100% 100%}[data-skin=noir]{--bg-deepest: #0f1115;--bg-deep: #14171d;--bg-surface: #191d24;--bg-elevated: #1f242d;--bg-glass: rgba(25, 29, 36, .85);--accent: #a78bfa;--accent-glow: rgba(167, 139, 250, .18);--accent-dim: rgba(167, 139, 250, .09);--success: #4ade80;--danger: #f87171;--status-error: #818a98;--warning: #fbbf24;--info: #60a5fa;--text-primary: #eceff4;--text-secondary: #aab2bf;--text-muted: #6b7280;--text-inverse: #0f1115;--border-subtle: rgba(255, 255, 255, .06);--border-default: rgba(255, 255, 255, .12);--border-glow: rgba(167, 139, 250, .4);--shadow-sm: 0 1px 4px rgba(0, 0, 0, .4);--shadow-md: 0 10px 28px rgba(0, 0, 0, .5);--shadow-glow: 0 0 20px rgba(167, 139, 250, .25)}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{height:100%;width:100%;overflow:hidden;background:radial-gradient(ellipse at 0% 0%,rgba(79,110,247,.05),transparent 40%),radial-gradient(ellipse at 100% 100%,rgba(5,150,105,.04),transparent 40%),var(--bg-deepest);color:var(--text-primary);font-family:var(--font-body);font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;letter-spacing:.01em}input:focus,button:focus,textarea:focus,select:focus{outline:none;box-shadow:none}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-default);border-radius:10px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.ui-icon-button,.ui-quiet-button,.settings-tab,.appearance-choice,.appearance-segment{border:0;color:var(--text-secondary);cursor:pointer;font-family:var(--font-body);transition:background-color var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out)}.ui-icon-button{width:32px;height:32px;padding:0;border-radius:var(--radius-sm);background:transparent;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.ui-icon-button--small{width:24px;height:24px}.ui-icon-button--medium{width:36px;height:36px}.ui-icon-button--close{width:28px;height:28px}.ui-quiet-button{min-height:36px;padding:9px 12px;border-radius:var(--radius-sm);background:transparent;display:inline-flex;align-items:center;justify-content:center;gap:6px;font-size:12px;font-weight:500}.ui-icon-button:hover:not(:disabled),.ui-quiet-button:hover:not(:disabled),.settings-tab:hover:not(:disabled),.appearance-choice:hover:not(:disabled),.appearance-segment:hover:not(:disabled){background:var(--control-hover);color:var(--text-primary)}.ui-icon-button.is-active,.ui-quiet-button.is-active{background:var(--control-active);color:var(--accent)}.ui-icon-button--danger:hover:not(:disabled){color:var(--danger)}.ui-icon-button:focus-visible,.ui-quiet-button:focus-visible,.settings-tab:focus-visible,.appearance-choice:focus-visible,.appearance-segment:focus-visible{outline:none;box-shadow:var(--focus-ring)}.ui-icon-button:disabled,.ui-quiet-button:disabled,.settings-tab:disabled,.appearance-choice:disabled,.appearance-segment:disabled{cursor:not-allowed;opacity:.45}.sidebar-row{position:relative;display:flex;align-items:center;border-radius:var(--radius-sm);background:transparent;transition:background-color var(--duration-fast) var(--ease-out)}.sidebar-row:hover,.sidebar-row:focus-within{background:var(--control-hover)}.sidebar-row-active:before{content:"";position:absolute;inset:5px auto 5px 0;width:2px;border-radius:0 2px 2px 0;background:var(--active-edge);pointer-events:none}.sidebar-row-action{opacity:0;pointer-events:none;transition:opacity .12s ease}.sidebar-row:hover .sidebar-row-action,.sidebar-row:focus-within .sidebar-row-action{opacity:1;pointer-events:auto}.sidebar-row-action--accent{color:var(--accent)}.sidebar-count{border:0}.app-sidebar-resizer{position:absolute;top:0;bottom:0;width:8px;transform:translate(-50%);z-index:15;cursor:col-resize;background:transparent}.app-sidebar-resizer:after{content:"";position:absolute;top:0;bottom:0;left:50%;width:1px;transform:translate(-50%);background:transparent;transition:background-color var(--duration-fast) var(--ease-out)}.app-sidebar-resizer:hover:after,.app-sidebar-resizer.is-dragging:after{background:var(--accent)}.sidebar-brand-row{display:flex;align-items:center;gap:10px;min-height:42px}.sidebar-brand-mark{width:38px;height:38px;display:grid;place-items:center;flex-shrink:0;border-radius:9px;color:var(--text-primary);background:color-mix(in srgb,var(--text-primary) 8%,var(--bg-surface));border:1px solid color-mix(in srgb,var(--text-primary) 18%,transparent)}.sidebar-brand-name{min-width:0;color:var(--text-primary);font-size:18px;font-weight:700;line-height:1;letter-spacing:0}.sidebar-project-toolbar{min-height:48px;margin:8px 14px;padding:0 6px 0 4px;display:flex;align-items:center;justify-content:space-between;gap:12px}.sidebar-project-title{color:var(--text-secondary);font-size:14px;font-weight:600;white-space:nowrap}.sidebar-project-actions{display:flex;align-items:center;gap:2px}.sidebar-project-actions .ui-icon-button{width:34px;height:34px;color:var(--text-muted)}.sidebar-project-block{margin-bottom:7px}.sidebar-project-row{min-height:40px;border-radius:8px}.sidebar-project-row .sidebar-project-button{min-width:0;min-height:40px;padding:8px!important;color:var(--text-primary)!important;font-size:14px!important;font-weight:650!important;letter-spacing:0}.sidebar-project-row--nested .sidebar-project-button{color:var(--text-secondary)!important;font-size:12px!important;font-weight:600!important}.sidebar-project-row .sidebar-row-action{width:30px;height:30px}.sidebar-project-row .sidebar-project-delete svg{width:16px;height:16px}.sidebar-project-add-action[aria-expanded=true]{opacity:1;pointer-events:auto}.sidebar-agent-group{width:100%;min-height:34px;padding:5px 8px 3px 22px!important;display:flex;align-items:center;gap:8px;border:0;background:transparent;color:var(--text-muted);font-family:var(--font-body);font-size:12px!important;font-weight:500!important;letter-spacing:0!important;text-transform:none!important;text-align:left;cursor:pointer}.sidebar-agent-group:hover{color:var(--text-secondary)}.sidebar-agent-group .sidebar-count,.sidebar-project-row .sidebar-count{padding:0!important;background:transparent!important;color:var(--text-muted)!important;font-size:10px!important;font-weight:500!important;line-height:1!important}.sidebar-session-row{min-height:38px;margin:1px 0;border-radius:8px}.sidebar-session-row .sidebar-session-button{min-width:0;min-height:38px;padding:6px 8px!important;gap:8px!important;font-size:13px!important;letter-spacing:0}.sidebar-project-sessions.is-grouped .sidebar-session-row .sidebar-session-button{padding-left:8px!important}.sidebar-project-sessions.is-grouped .sidebar-session-row{padding-left:28px}.sidebar-session-delete{width:28px;height:28px;margin-left:2px;flex:0 0 28px}.sidebar-session-row>.sidebar-runtime-mark{margin:0 8px 0 2px}.sidebar-session-disclosure{transform-origin:center;transition:transform var(--duration-fast) var(--ease-out)}.sidebar-session-disclosure.is-expanded{transform:rotate(90deg)}.sidebar-session-disclosure{flex-shrink:0;color:var(--text-muted)}@media (hover: none){.sidebar-project-add-action{opacity:1;pointer-events:auto}}.sidebar-row-active{background:var(--control-active)}.sidebar-row-active:before{display:none}.sidebar-status-dot{--sidebar-status-color: var(--accent);width:7px;height:7px;flex-shrink:0;border-radius:50%;background:var(--sidebar-status-color);opacity:1;transition:background-color var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out),opacity var(--duration-fast) var(--ease-out)}.sidebar-status-dot.is-completed{--sidebar-status-color: var(--accent)}.sidebar-status-dot.is-running{--sidebar-status-color: var(--success);animation:sidebarStatusBlink 1.15s ease-in-out infinite}.sidebar-status-dot.is-needs-input{--sidebar-status-color: var(--danger);animation:sidebarStatusBlink 1.15s ease-in-out infinite}.sidebar-status-dot.is-error{--sidebar-status-color: var(--status-error);animation:sidebarStatusBlink 1.15s ease-in-out infinite}@keyframes sidebarStatusBlink{0%,to{opacity:1;box-shadow:0 0 0 1px color-mix(in srgb,var(--sidebar-status-color) 30%,transparent)}50%{opacity:.24;box-shadow:0 0 0 4px transparent}}.sidebar-runtime-mark,.sidebar-occupancy-badge{min-width:28px;height:22px;padding:0 7px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;border-radius:6px;font-size:10px;font-weight:700;line-height:1;letter-spacing:0}.sidebar-runtime-mark--customer-agent{color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,var(--bg-surface))}.sidebar-runtime-mark--codex{color:var(--info);background:color-mix(in srgb,var(--info) 12%,var(--bg-surface))}.sidebar-runtime-mark--claude-code{color:var(--warning);background:color-mix(in srgb,var(--warning) 13%,var(--bg-surface))}.sidebar-occupancy-badge{min-width:auto;color:var(--warning);background:color-mix(in srgb,var(--warning) 12%,var(--bg-surface));font-weight:600}.settings-tab{position:relative;padding:6px 10px;border-radius:0;background:transparent;font-size:12px;font-weight:500}.settings-tab-active{color:var(--accent)}.settings-tab-active:after{content:"";position:absolute;right:10px;bottom:-8px;left:10px;height:2px;border-radius:2px 2px 0 0;background:var(--active-edge)}.appearance-panel{border-color:var(--hairline)!important}.appearance-choices{display:flex;flex-direction:column;gap:2px}.appearance-choice{width:100%;min-height:38px;padding:6px 8px;border-radius:var(--radius-sm);background:transparent;display:flex;align-items:center;gap:8px;text-align:left}.appearance-choice-active{background:var(--control-active);color:var(--accent)}.appearance-swatch{width:28px;height:18px;border:1px solid var(--hairline);border-radius:5px;flex-shrink:0}.appearance-choice-label{flex:1;min-width:0;font-size:12px}.appearance-choice-check{width:14px;height:14px;color:var(--accent);flex-shrink:0}.appearance-segmented{display:flex;overflow:hidden;border:1px solid var(--hairline);border-radius:var(--radius-sm)}.appearance-segment{min-width:0;flex:1;padding:7px 4px;border-radius:0;background:transparent;font-size:12px}.appearance-segment+.appearance-segment{border-left:1px solid var(--hairline)}.appearance-segment-active{background:var(--control-active);color:var(--accent);font-weight:600}.appearance-switch{width:32px;height:18px;margin:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--hairline);border-radius:999px;background:var(--bg-deep);cursor:pointer;position:relative;transition:background-color var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out)}.appearance-switch:after{content:"";position:absolute;top:2px;left:2px;width:12px;height:12px;border-radius:50%;background:var(--text-muted);transition:transform var(--duration-fast) var(--ease-out),background-color var(--duration-fast) var(--ease-out)}.appearance-switch:checked{border-color:var(--accent);background:var(--accent)}.appearance-switch:checked:after{transform:translate(14px);background:var(--text-inverse)}.appearance-switch:focus-visible{outline:none;box-shadow:var(--focus-ring)}.chat-header-actions{display:inline-flex;align-items:center;gap:2px;flex-shrink:0}.chat-header-action{color:var(--text-muted)}.agent-activity-indicator{min-height:24px;display:inline-flex;align-items:center;gap:7px;color:var(--text-muted);font-size:12px;font-weight:500}.agent-activity-dots{display:inline-flex;align-items:center;gap:3px}.agent-activity-dots>span{width:4px;height:4px;border-radius:50%;background:var(--accent);animation:wave 1.1s ease-in-out infinite}.composer-shell{border:1px solid var(--hairline)}.composer-shell:focus-within{border-color:var(--accent);box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 28%,transparent)}.composer-shell :focus-visible{outline:none;box-shadow:none}::selection{background:var(--accent-glow);color:var(--accent)}.noise-overlay{pointer-events:none;position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;opacity:.02;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E")}input,select,textarea{font-family:var(--font-body);transition:border-color var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out)}input:focus,select:focus,textarea:focus{border-color:var(--accent)!important;box-shadow:0 0 0 3px var(--accent-dim)}@keyframes fadeInUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes pulse-glow{0%,to{box-shadow:0 0 4px var(--accent-glow)}50%{box-shadow:0 0 16px var(--accent-glow)}}@keyframes slideIn{0%{transform:translate(-8px);opacity:0}to{transform:translate(0);opacity:1}}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.75)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}@keyframes wave{0%,60%,to{transform:translateY(0)}30%{transform:translateY(-4px)}}@keyframes statusBarPulse{0%,to{opacity:.4}50%{opacity:1}}@keyframes wakeRing{0%{transform:scale(.4);opacity:.9}to{transform:scale(1.9);opacity:0}}@keyframes wakeCore{0%,to{transform:scale(1);box-shadow:0 0 24px var(--accent-glow)}50%{transform:scale(1.12);box-shadow:0 0 60px var(--accent-glow)}}@keyframes wakeText{0%{opacity:0;transform:translateY(10px);letter-spacing:.4em}60%{opacity:1}to{opacity:1;transform:translateY(0);letter-spacing:.12em}}@keyframes micPulse{0%,to{box-shadow:0 0 #f43f5e59}50%{box-shadow:0 0 0 8px #f43f5e00}}.mic-recording{animation:micPulse 1.2s ease-out infinite}.message-card{position:relative;border:1px solid var(--hairline);background:var(--bg-surface);border-radius:var(--radius-md);box-shadow:none;transition:border-color var(--duration-fast) var(--ease-out)}.message-card:hover,.message-card:focus-within{border-color:var(--border-default)}.chat-message-content .msg-actions{opacity:0;transition:opacity var(--duration-fast) var(--ease-out)}.chat-message-content:hover .msg-actions,.chat-message-content:focus-within .msg-actions{opacity:1}@media (hover: none){.chat-message-content .msg-actions{opacity:1}}.msg-action-button{color:var(--text-muted)}.chat-view--codex-history{--chat-assistant-fade-end: var(--bg-workspace)}.chat-view--codex-history .chat-message-group{width:min(100%,860px);margin-left:auto;margin-right:auto}.chat-view--codex-history .chat-message-group--intermediate{margin-bottom:0!important}.chat-view--codex-history .chat-message-row{gap:0!important}.chat-view--codex-history .chat-message-avatar{display:none!important}.chat-view--codex-history .chat-message-activity{padding-left:0!important}.chat-view--codex-history .chat-message-content--assistant{width:100%;max-width:100%!important}.chat-view--codex-history .chat-message-bubble--assistant{width:100%}.chat-view--codex-history .chat-message-content--user{max-width:min(78%,680px)!important}.chat-view--codex-history .chat-message-bubble--assistant.message-card{width:100%;padding-right:0!important;padding-left:0!important;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important}.chat-message-link{color:var(--accent);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;cursor:pointer}.chat-message-link:hover{color:color-mix(in srgb,var(--accent) 76%,var(--text-primary))}.chat-message-link:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}.chat-message-artifact-link{display:inline-flex;max-width:100%;min-width:0;align-items:baseline;gap:5px;margin:0;padding:0;border:0;border-radius:3px;background:transparent;color:var(--accent);font:inherit;line-height:inherit;text-align:left;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;vertical-align:baseline;cursor:pointer}.chat-message-artifact-link svg{flex:0 0 auto;align-self:center}.chat-message-artifact-link span{min-width:0;overflow-wrap:anywhere}.chat-message-artifact-link:hover{color:color-mix(in srgb,var(--accent) 76%,var(--text-primary))}.chat-message-artifact-link:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.chat-message-long-content{position:relative}.chat-message-long-content__body{padding-right:28px}.chat-message-disclosure{position:absolute;top:0;right:0;z-index:1;width:24px;height:24px;margin:0;padding:0;display:grid;place-items:center;border:0;border-radius:6px;background:transparent;color:var(--text-muted);cursor:pointer}.chat-message-disclosure:hover{background:var(--accent-dim);color:var(--accent)}.chat-message-disclosure:focus-visible{outline:none;box-shadow:var(--focus-ring)}.chat-message-disclosure svg{transition:transform var(--duration-fast) var(--ease-out)}.chat-message-disclosure[aria-expanded=true] svg{transform:rotate(90deg)}.chat-message-attachments{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.chat-message-attachment-image{display:block;width:auto;max-width:min(220px,100%);max-height:180px;object-fit:cover;border:1px solid var(--border-subtle);border-radius:6px;cursor:zoom-in}.chat-message-attachment-unavailable{width:min(220px,100%);min-height:52px;padding:8px 10px;display:flex;flex-direction:column;justify-content:center;gap:2px;border-top:1px solid var(--border-subtle);border-bottom:1px solid var(--border-subtle);color:var(--text-muted);font-size:11px}.chat-message-attachment-name{overflow:hidden;color:var(--text-secondary);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.chat-message-raw-content{width:100%;margin-top:8px;color:var(--text-muted);font-size:11px}.chat-message-raw-content summary{width:fit-content;cursor:pointer;-webkit-user-select:none;user-select:none}.chat-message-raw-content summary:hover{color:var(--accent)}.chat-message-raw-content pre{max-width:100%;max-height:220px;margin:8px 0 0;padding:8px 10px;overflow:auto;border-left:2px solid var(--border-default);color:var(--text-secondary);font-family:var(--font-mono, monospace);font-size:11px;line-height:1.55;white-space:pre-wrap;word-break:break-word}.chat-view--codex-history .tool-call-shell{margin-top:2px!important;border:0!important;border-radius:0!important;background:transparent!important}.chat-view--codex-history .tool-call-shell__row{align-items:center!important}.chat-view--codex-history .tool-call-shell__status{display:none}.chat-view--codex-history .tool-call-shell__header{min-height:32px;padding:5px 2px!important;gap:7px!important;border-bottom:1px solid color-mix(in srgb,var(--border-subtle) 72%,transparent)!important;background:transparent!important}.chat-view--codex-history .tool-call-shell__header>div:first-child{width:18px!important;height:18px!important;border-radius:4px!important;background:transparent!important}.chat-view--codex-history .tool-call-shell__body-content{padding:8px 2px 10px!important;border-top:0!important}.chat-view--codex-history .tool-call-shell__chevron{width:11px;height:11px}.chat-view--codex-history .tool-call-group{min-width:0;margin-top:2px}.chat-view--codex-history .tool-call-group__summary{width:100%;min-width:0;min-height:32px;padding:5px 2px;display:flex;align-items:center;gap:7px;border:0;border-bottom:1px solid color-mix(in srgb,var(--border-subtle) 72%,transparent);background:transparent;color:var(--text-primary);font-family:var(--font-body);text-align:left;cursor:pointer}.chat-view--codex-history .tool-call-group__summary:hover{background:color-mix(in srgb,var(--text-primary) 4%,transparent)}.chat-view--codex-history .tool-call-group__summary:focus-visible{outline:none;box-shadow:inset var(--focus-ring)}.chat-view--codex-history .tool-call-group__icon{width:18px;height:18px;display:grid;place-items:center;flex:0 0 18px;color:var(--text-muted)}.chat-view--codex-history .tool-call-group__label{flex-shrink:0;font-size:11.5px;font-weight:600;white-space:nowrap}.chat-view--codex-history .tool-call-group__count,.chat-view--codex-history .tool-call-group__error{flex-shrink:0;color:var(--text-muted);font-size:10px;white-space:nowrap}.chat-view--codex-history .tool-call-group__error{color:var(--danger)}.chat-view--codex-history .tool-call-group__spacer{min-width:0;flex:1}.chat-view--codex-history .tool-call-group__chevron{flex:0 0 13px;color:var(--text-muted);transition:transform var(--duration-fast) var(--ease-out)}.chat-view--codex-history .tool-call-group__summary[aria-expanded=true] .tool-call-group__chevron{transform:rotate(90deg)}.chat-view--codex-history .tool-call-group__items{min-width:0;padding-left:24px}.chat-view{--chat-max-width: 880px;--chat-header-height: 52px;--chat-header-padding: 0 20px;--chat-messages-padding: 24px 40px 16px;--chat-input-padding: 12px 24px 18px;--chat-message-gap: 3px;--chat-turn-gap: 16px;--chat-row-gap: 10px;--chat-avatar-size: 30px;--chat-content-max-width: 76%;--chat-user-bubble-padding: 10px 14px;--chat-assistant-bubble-padding: 11px 15px;--chat-bubble-font-size: 14px;--chat-bubble-line-height: 1.75;--composer-row-padding: 6px 6px 6px 12px}.chat-messages{scrollbar-color:transparent transparent}.chat-messages::-webkit-scrollbar-thumb{background:transparent}.chat-messages.is-scrolling{scrollbar-color:var(--border-default) transparent}.chat-messages.is-scrolling::-webkit-scrollbar-thumb{background:var(--border-default)}.chat-messages.is-scrolling::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.layout-compact .chat-view{--chat-max-width: 1040px;--chat-header-height: 44px;--chat-header-padding: 0 16px;--chat-messages-padding: 12px 22px 8px;--chat-input-padding: 8px 18px 10px;--chat-message-gap: 1px;--chat-turn-gap: 10px;--chat-row-gap: 8px;--chat-avatar-size: 26px;--chat-content-max-width: 84%;--chat-user-bubble-padding: 7px 11px;--chat-assistant-bubble-padding: 8px 12px;--chat-bubble-font-size: 13px;--chat-bubble-line-height: 1.55;--composer-row-padding: 4px 4px 4px 8px;font-size:13px}.layout-compact .message-card,.layout-compact .composer-shell{border-radius:var(--radius-sm)!important}.layout-compact .composer-shell .ui-icon-button{width:28px;height:28px}.reasoning-summary{width:min(680px,100%);color:var(--text-secondary)}.reasoning-summary__toggle{display:inline-flex;align-items:center;gap:6px;min-height:26px;padding:2px 0;border:0;background:transparent;color:var(--text-muted);cursor:pointer;font:600 12px/1.4 var(--font-body);letter-spacing:0}.reasoning-summary__toggle svg{transition:transform .16s ease}.reasoning-summary__toggle[aria-expanded=true] svg{transform:rotate(90deg)}.reasoning-summary__live{color:var(--accent);font-size:10px;font-weight:500}.reasoning-summary__content{margin:3px 0 7px 6px;padding-left:12px;border-left:2px solid var(--border-default);color:var(--text-secondary);font-size:12.5px;line-height:1.65;white-space:pre-wrap;word-break:break-word}.runtime-progress-row{display:flex;align-items:center;gap:7px;min-height:28px;max-width:var(--chat-content-max-width);margin:4px 0 4px calc(var(--chat-avatar-size) + var(--chat-row-gap));color:var(--text-secondary);font-size:12px;line-height:1.4;letter-spacing:0}.chat-view--codex-history .runtime-progress-row:not(.runtime-progress-row--compact){width:min(100%,860px);max-width:860px;margin-left:auto;margin-right:auto}.runtime-progress-row--compact{min-height:22px;margin:2px 8px 0;font-size:11px}.runtime-progress-row__spinner{width:11px;height:11px;flex:0 0 11px;box-sizing:border-box;border:1.5px solid var(--border-default);border-top-color:var(--accent);border-radius:50%;animation:spin .9s linear infinite}.runtime-progress-row__label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.runtime-progress-row__detail{flex-shrink:0;color:var(--text-muted);font-family:var(--font-mono);font-size:10.5px}.tool-call-with-progress{width:100%;min-width:0}.native-subagent-activity{display:flex;min-width:0;flex-direction:column;gap:8px}.native-subagent-activity__meta{display:flex;flex-wrap:wrap;gap:6px 12px;color:var(--text-muted);font-family:var(--font-mono);font-size:10px}.native-subagent-activity__entry{display:flex;min-width:0;flex-direction:column;gap:6px}.native-subagent-activity__tool{display:flex;min-width:0;flex-direction:column;gap:4px}.native-subagent-activity__tool-result{box-sizing:border-box;max-height:160px;margin:0 0 0 8px;overflow:auto;border-left:2px solid var(--success);border-radius:5px;background:var(--bg-surface);padding:6px 9px;color:var(--text-secondary);font-family:var(--font-mono);font-size:10px;line-height:1.5;white-space:pre-wrap;word-break:break-word}.native-subagent-activity__tool-result--error{border-left-color:var(--danger);color:var(--danger)}.native-subagent-activity__text{box-sizing:border-box;max-height:240px;margin:0;overflow:auto;border-left:3px solid var(--accent);border-radius:6px;background:var(--bg-surface);padding:8px 10px;color:var(--text-secondary);font-family:var(--font-mono);font-size:11px;line-height:1.6;white-space:pre-wrap;word-break:break-word}.native-subagent-activity__waiting{display:flex;min-height:28px;align-items:center;gap:7px;color:var(--text-muted);font-size:11px}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}.sidebar-status-dot.is-running,.sidebar-status-dot.is-needs-input,.sidebar-status-dot.is-error{animation:none;opacity:1;box-shadow:none}}:root{--web-composer-control-size: 38px;--web-composer-icon-size: 20px}.chat-view--codex-history .composer-shell{border:1px solid var(--border-default);border-radius:24px!important;box-shadow:none}.chat-view--codex-history .composer-input-row{display:flex!important;flex-direction:column;align-items:stretch!important;gap:0!important;padding:6px 10px 8px!important}.web-native-add-wrap{position:relative;flex-shrink:0;width:var(--web-composer-control-size);height:var(--web-composer-control-size)}.web-native-composer-toolbar{width:100%;min-height:42px;display:flex;align-items:center;gap:6px}.web-native-composer-textarea{box-sizing:border-box;width:100%;min-height:76px;max-height:168px;padding:12px 14px 6px;resize:none;overflow-y:auto;border:0;outline:0;background:transparent;color:var(--text-primary);box-shadow:none;font:400 16px/1.5 var(--font-body);letter-spacing:0}.web-native-composer-textarea::placeholder{color:var(--text-muted);opacity:.62}.web-native-composer-textarea:disabled{cursor:not-allowed}.web-native-add-button,.web-native-send-button,.web-native-stop-button{width:var(--web-composer-control-size);height:var(--web-composer-control-size);padding:0;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.web-native-add-button{border:0;background:transparent;color:var(--text-primary)}.web-native-add-button[aria-expanded=true]{background:var(--control-active, rgba(79,110,247,.09))}.web-native-add-menu{position:absolute;left:0;bottom:calc(100% + 8px);z-index:1300;display:flex;flex-direction:column;min-width:150px;padding:6px;border:1px solid var(--border-default);border-radius:12px;background:var(--bg-elevated);box-shadow:var(--shadow-md)}.web-native-add-menu button{border:0;background:transparent;text-align:left;padding:10px 12px;border-radius:8px;font-size:14px;color:var(--text-primary);white-space:nowrap}@media (hover: hover){.web-native-add-menu button:hover{background:var(--control-hover)}}.web-native-add-menu button:focus-visible{background:var(--control-hover)}.web-native-add-menu button:active{background:var(--control-active)}.web-native-send-button{position:relative;border:0;background:transparent;color:var(--text-muted)}.web-native-send-button:before{content:"";position:absolute;top:2px;right:2px;bottom:2px;left:2px;border:1px solid var(--border-default);border-radius:9px;background:var(--bg-deep)}.web-native-send-button:not(:disabled){color:#fff;cursor:pointer}.web-native-send-button:not(:disabled):before{border-color:var(--text-primary);background:var(--text-primary)}.web-native-stop-button{border:0;background:#f43f5e1f;color:var(--danger)}.web-native-runtime-status,.web-native-agent-status{width:var(--web-composer-control-size);height:var(--web-composer-control-size);display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;color:var(--text-muted)}.web-native-permission-wrap{position:relative;width:var(--web-composer-control-size);height:var(--web-composer-control-size);flex:0 0 var(--web-composer-control-size)}.web-native-permission-button{padding:0;border:0;border-radius:999px;background:transparent;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.web-native-permission-button[aria-expanded=true]{background:var(--control-active, rgba(79,110,247,.09))}.web-native-permission-button:disabled{cursor:default;opacity:.48}.web-native-permission-button.mode-request-approval{color:var(--accent, #4f6ef7)}.web-native-permission-button.mode-auto-approval{color:#0f9f72}.web-native-permission-button.mode-full-access{color:#f59e0b}.web-native-permission-menu{position:absolute;left:0;bottom:calc(100% + 8px);z-index:1300;display:flex;flex-direction:column;width:min(304px,calc(100vw - 24px));padding:6px;border:1px solid var(--border-default);border-radius:12px;background:var(--bg-elevated);box-shadow:var(--shadow-md)}.web-native-permission-menu>button{min-height:54px;display:flex;align-items:flex-start;gap:8px;padding:9px 10px;border:0;border-radius:8px;background:transparent;color:var(--text-primary);text-align:left;cursor:pointer}.web-native-permission-check{width:16px;padding-top:1px;flex:0 0 16px;color:var(--accent, #4f6ef7);font-size:14px;font-weight:700}.web-native-permission-copy{min-width:0;display:flex;flex-direction:column;gap:2px}.web-native-permission-copy strong{font-size:14px;line-height:20px;font-weight:600}.web-native-permission-copy small{color:var(--text-muted);font-size:12px;line-height:17px}.web-native-permission-menu>button.is-active{background:var(--control-active, rgba(79,110,247,.09))}@media (hover: hover){.web-native-permission-menu>button:hover{background:var(--control-hover)}}.web-native-permission-menu>button:focus-visible,.web-native-permission-button:focus-visible{outline:2px solid var(--accent, #4f6ef7);outline-offset:2px}.web-native-runtime-status.is-ready{color:#f59e0b}.web-native-agent-status{gap:4px;color:var(--text-primary)}.web-native-agent-status>span{width:4px;height:18px;border-radius:999px;background:#10b981}.web-native-effort-wrap{position:relative;flex-shrink:0;width:var(--web-composer-control-size);height:var(--web-composer-control-size)}.web-native-effort-button{width:var(--web-composer-control-size);height:var(--web-composer-control-size);padding:0;border:0;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;background:transparent;color:var(--text-primary);cursor:pointer;flex-shrink:0;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.web-native-effort-button[aria-expanded=true]{background:var(--control-active, rgba(79,110,247,.09))}.web-native-effort-button>svg{width:var(--web-composer-icon-size);height:var(--web-composer-icon-size)}.web-native-effort-menu{position:absolute;right:0;bottom:calc(100% + 8px);z-index:1300;display:flex;flex-direction:column;min-width:128px;padding:6px;border:1px solid var(--border-default);border-radius:12px;background:var(--bg-elevated);box-shadow:var(--shadow-md)}.web-native-effort-menu button{display:flex;align-items:center;gap:8px;border:0;background:transparent;text-align:left;padding:10px 12px;border-radius:8px;font-size:14px;color:var(--text-primary);white-space:nowrap;cursor:pointer}.web-native-effort-check{display:inline-block;width:14px;flex:0 0 auto;color:var(--accent, #4f6ef7);font-weight:600}.web-native-effort-menu button.is-active{color:var(--accent, #4f6ef7);font-weight:600}@media (hover: hover){.web-native-effort-menu button:hover{background:var(--control-hover)}}.web-native-effort-menu button:focus-visible{background:var(--control-hover)}.web-native-effort-menu button:active{background:var(--control-active)}.web-native-context-control{width:var(--web-composer-control-size);height:var(--web-composer-control-size);flex:0 0 var(--web-composer-control-size)}.web-native-context-control .context-usage-ribbon{width:var(--web-composer-control-size);height:var(--web-composer-control-size);border:0!important}.web-native-context-control .context-usage-ribbon__button{width:var(--web-composer-control-size)!important;height:var(--web-composer-control-size);min-height:var(--web-composer-control-size)!important;padding:9px!important;gap:0!important;color:var(--text-muted)}.context-usage-ribbon__ring{width:var(--web-composer-icon-size);height:var(--web-composer-icon-size);flex:0 0 auto}.context-usage-ribbon__summary--compact{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.web-native-model-control{min-width:56px;flex:1 1 120px;height:var(--web-composer-control-size);display:flex;align-items:center;gap:2px;overflow:hidden;color:var(--text-primary)}.web-native-model-control select{box-sizing:border-box;min-width:0;width:100%;max-width:180px;height:var(--web-composer-control-size);padding:0 8px;border:0;outline:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;color:inherit;font:500 15px/normal var(--font-body);text-overflow:ellipsis}.web-native-model-control select:disabled{opacity:1}.web-native-runtime-status>svg,.web-native-agent-status>svg,.web-native-add-button>svg,.web-native-send-button>svg,.web-native-stop-button>svg{position:relative;z-index:1;width:var(--web-composer-icon-size);height:var(--web-composer-icon-size)}@media (max-width: 899px){.web-native-add-button,.web-native-send-button,.web-native-stop-button{width:var(--web-composer-control-size);height:var(--web-composer-control-size)}.web-native-add-button svg,.web-native-send-button svg{width:var(--web-composer-icon-size);height:var(--web-composer-icon-size)}.web-native-add-menu{left:0;bottom:calc(100% + 8px);min-width:176px;border-radius:8px}.web-native-add-menu button{min-height:44px}}@media (max-width: 359px){.web-native-composer-toolbar{gap:3px}.web-native-permission-menu{left:calc(-1 * (var(--web-composer-control-size) + 6px))}.web-native-model-control{flex-basis:98px}}html,body,#root{height:100%;margin:0;background:var(--bg-deepest, #f5f6fa);color:var(--text-primary, #111827);color-scheme:light}body[data-web-shell="1"]{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;overscroll-behavior:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation;--chat-content-max-width: 92%;--chat-header-height: 48px;--web-chat-lane-width: 92%}body[data-web-shell="1"] input,body[data-web-shell="1"] textarea{font-size:16px!important}body[data-web-shell="1"] .chat-top-bar{background:var(--bg-surface);padding-left:max(14px,env(safe-area-inset-left));padding-right:8px}@media (max-width: 899px){body[data-web-shell="1"] .chat-top-bar{padding-left:54px!important}}body[data-web-shell="1"] .chat-top-bar>span:first-child{font-size:15px!important;font-weight:600!important;letter-spacing:"-0.01em"}body[data-web-shell="1"] .chat-header-action--background,body[data-web-shell="1"] .chat-header-action--appearance{display:none!important}body[data-web-shell="1"] .composer-shell>div:has(button[title*=·]){display:none!important}body[data-web-shell="1"] .chat-view{width:100%;max-width:none!important;margin:0!important}body[data-web-shell="1"] .chat-messages,body[data-web-shell="1"] .chat-input-area{width:var(--web-chat-lane-width);margin-right:auto;margin-left:auto}body[data-web-shell="1"] .chat-messages{background:var(--bg-workspace);padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right))}body[data-web-shell="1"] .chat-input-area{padding-bottom:calc(env(safe-area-inset-bottom) + 10px)!important}body[data-web-shell="1"] [data-webapp-settings-overlay],body[data-web-shell="1"]>div:has(.settings-tab){padding:0!important;align-items:stretch!important}body[data-web-shell="1"] [data-webapp-settings-card],body[data-web-shell="1"]>div:has(.settings-tab)>div{width:100vw!important;height:100dvh!important;max-width:none!important;max-height:none!important;border:none!important;border-radius:0!important}body[data-web-shell="1"] [data-webapp-settings-card] div[style*="padding: 40px"],body[data-web-shell="1"]>div:has(.settings-tab)>div div[style*="padding: 40px"]{padding:16px 14px!important;max-width:100%!important}body[data-web-shell="1"] [data-webapp-settings-card] h2,body[data-web-shell="1"]>div:has(.settings-tab)>div h2{font-size:18px!important;margin-bottom:4px!important}body[data-web-shell="1"] [data-webapp-settings-card] h2+p,body[data-web-shell="1"]>div:has(.settings-tab)>div h2+p{font-size:12px!important;margin-bottom:14px!important}body[data-web-shell="1"] [data-webapp-settings-card] div[style*="border-radius: var(--radius-md)"],body[data-web-shell="1"] [data-webapp-settings-card] div[style*="border-radius:var(--radius-md)"],body[data-web-shell="1"]>div:has(.settings-tab)>div div[style*="border-radius: var(--radius-md)"],body[data-web-shell="1"]>div:has(.settings-tab)>div div[style*="border-radius:var(--radius-md)"]{padding:14px!important}body[data-web-shell="1"] [data-webapp-settings-card] div:has(>h3):not(.settings-head-row),body[data-web-shell="1"]>div:has(.settings-tab)>div div:has(>h3):not(.settings-head-row){flex-direction:column!important;align-items:stretch!important;gap:10px!important}body[data-web-shell="1"] [data-webapp-settings-card] div:has(>h3) h3,body[data-web-shell="1"]>div:has(.settings-tab)>div div:has(>h3) h3{white-space:nowrap}body[data-web-shell="1"] [data-webapp-settings-card] button,body[data-web-shell="1"]>div:has(.settings-tab)>div button{white-space:nowrap!important;min-width:max-content!important;flex-shrink:0!important;height:auto!important}body[data-web-shell="1"] [data-webapp-settings-card] div[style*="overflow: hidden"]>button,body[data-web-shell="1"]>div:has(.settings-tab)>div div[style*="overflow: hidden"]>button{padding:6px 10px!important;font-size:11px!important}body[data-web-shell="1"] [data-webapp-settings-card] div[style*="gap: 10px"]:not(.profile-row),body[data-web-shell="1"]>div:has(.settings-tab)>div div[style*="gap: 10px"]:not(.profile-row){flex-direction:column!important}body[data-web-shell="1"] [data-webapp-settings-card] .profile-row,body[data-web-shell="1"]>div:has(.settings-tab)>div .profile-row{flex-wrap:wrap!important;row-gap:8px!important}body[data-web-shell="1"] [data-webapp-settings-card] .profile-row-actions,body[data-web-shell="1"]>div:has(.settings-tab)>div .profile-row-actions{margin-left:auto}body[data-web-shell="1"] [data-webapp-settings-card] [style*="flex: 1"],body[data-web-shell="1"]>div:has(.settings-tab)>div [style*="flex: 1"]{min-width:0!important}body[data-web-shell="1"] [data-webapp-settings-card] div,body[data-web-shell="1"]>div:has(.settings-tab)>div div{max-width:100%}body[data-web-shell="1"] [data-webapp-settings-card] input,body[data-web-shell="1"] [data-webapp-settings-card] textarea,body[data-web-shell="1"]>div:has(.settings-tab)>div input,body[data-web-shell="1"]>div:has(.settings-tab)>div textarea{padding:9px 10px!important}body[data-web-shell="1"] [data-webapp-settings-card] div[style*="position: absolute"],body[data-web-shell="1"]>div:has(.settings-tab)>div div[style*="position: absolute"]{position:static!important;display:flex!important;gap:6px;margin-top:8px}body[data-web-shell="1"] [data-webapp-settings-card] [style*=grid-template-columns],body[data-web-shell="1"]>div:has(.settings-tab)>div [style*=grid-template-columns]{grid-template-columns:1fr!important}body[data-web-shell="1"] div:has(>.settings-tab){flex-wrap:nowrap!important;overflow-x:auto;scrollbar-width:none;flex:1;min-width:0}body[data-web-shell="1"] div:has(>.settings-tab)::-webkit-scrollbar{display:none}body[data-web-shell="1"]{--chat-messages-padding: 10px 12px 8px;--chat-message-gap: 2px;--chat-turn-gap: 12px;--chat-row-gap: 8px;--chat-avatar-size: 26px;--chat-assistant-bubble-padding: 9px 12px;--chat-user-bubble-padding: 8px 12px}@media (max-width: 899px){body[data-web-shell="1"]{font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Noto Sans SC,sans-serif;--web-chat-lane-width: 100%}body[data-web-shell="1"] .chat-view{--chat-header-height: 52px;--chat-messages-padding: 14px 12px 10px;--chat-message-gap: 4px;--chat-turn-gap: 14px;--chat-row-gap: 0px;--chat-content-max-width: 100%;--chat-user-bubble-padding: 9px 12px;--chat-assistant-bubble-padding: 11px 12px;--chat-bubble-font-size: 15px;--chat-bubble-line-height: 1.68;--composer-row-padding: 4px 6px;background:var(--bg-workspace)}body[data-web-shell="1"] .app-accent-glow{display:none}body[data-web-shell="1"] .app-main{min-width:0;touch-action:pan-y}body[data-web-shell="1"] .mobile-drawer-toggle{top:calc(env(safe-area-inset-top) + 5px)!important;left:max(8px,env(safe-area-inset-left))!important;width:42px!important;height:42px!important;border-radius:8px!important;border-color:transparent!important;background:transparent!important;box-shadow:none;transition:background-color var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out)}body[data-web-shell="1"] .mobile-drawer-scrim{background:#11182757!important;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}body[data-web-shell="1"] .app-sidebar{width:min(88vw,348px)!important;padding:calc(env(safe-area-inset-top) + 12px) 0 calc(env(safe-area-inset-bottom) + 12px)!important;border-right:1px solid var(--border-default)!important;box-shadow:10px 0 28px #1118272e!important}body[data-web-shell="1"] .app-sidebar-brand{margin-bottom:8px!important;padding:0 18px 10px!important}body[data-web-shell="1"] .app-sidebar-scroll{padding:0 8px 18px!important;overscroll-behavior:contain}body[data-web-shell="1"] .app-sidebar .sidebar-row{min-height:44px;margin:2px 0;border-radius:8px}body[data-web-shell="1"] .app-sidebar .sidebar-row>button:first-child{min-height:44px;padding-top:9px!important;padding-bottom:9px!important;font-size:14px!important}body[data-web-shell="1"] .app-sidebar .sidebar-row-action,body[data-web-shell="1"] .app-sidebar .ui-icon-button--small{width:42px;height:42px;opacity:.68}body[data-web-shell="1"] .app-sidebar .sidebar-row-active .sidebar-row-action,body[data-web-shell="1"] .app-sidebar .sidebar-row-action:focus-visible{opacity:1}body[data-web-shell="1"] .chat-top-bar{min-width:0;padding-left:max(58px,calc(env(safe-area-inset-left) + 54px))!important;padding-right:max(6px,env(safe-area-inset-right))!important;background:var(--bg-deepest)!important;border-bottom-color:transparent!important}body[data-web-shell="1"] .chat-top-bar>span:first-child{font-size:15px!important;font-weight:600!important;letter-spacing:0!important}body[data-web-shell="1"] .chat-header-actions{gap:2px}body[data-web-shell="1"] .chat-header-actions .chat-header-action{width:42px;height:42px}body[data-web-shell="1"] .chat-messages{padding:var(--chat-messages-padding)!important;overscroll-behavior:contain;scrollbar-width:none}body[data-web-shell="1"] .chat-messages::-webkit-scrollbar{display:none}body[data-web-shell="1"] .chat-message-content--user{max-width:88%!important}body[data-web-shell="1"] .chat-message-bubble--user{border-radius:8px 3px 8px 8px!important}body[data-web-shell="1"] .chat-message-content .msg-actions{opacity:1;gap:0!important}body[data-web-shell="1"] .msg-action-button{width:28px;height:32px;background:transparent}body[data-web-shell="1"] .chat-input-area{padding:0 max(10px,env(safe-area-inset-right)) calc(env(safe-area-inset-bottom) + 8px) max(10px,env(safe-area-inset-left))!important;background:var(--bg-workspace)!important;border-top:0!important}body[data-web-shell="1"] .composer-shell{border-color:var(--border-default);border-radius:24px!important;background:var(--bg-surface)!important;box-shadow:none}body[data-web-shell="1"] .composer-shell:focus-within{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 14%,transparent)}body[data-web-shell="1"] .context-usage-ribbon{background:transparent;border-bottom:0!important;border-radius:16px 16px 0 0}body[data-web-shell="1"] .context-usage-ribbon__button{min-height:30px;gap:10px!important;padding:8px 12px 2px!important}body[data-web-shell="1"] .context-usage-ribbon__label{opacity:.72}body[data-web-shell="1"] .context-usage-ribbon__meter{height:4px!important;background:color-mix(in srgb,var(--text-muted) 12%,transparent)!important}body[data-web-shell="1"] .context-usage-ribbon__summary{min-width:28px!important;opacity:.82}body[data-web-shell="1"] .composer-input-row{min-height:132px;gap:0!important;padding:6px 10px 8px!important}body[data-web-shell="1"] .composer-text-input{min-width:0;padding:12px 14px 6px!important;letter-spacing:0!important}body[data-web-shell="1"] .chat-composer-hint{display:none!important}}
@@ -55,4 +55,4 @@ Error generating stack: `+i.message+`
55
55
  *
56
56
  * This source code is licensed under the MIT license found in the
57
57
  * LICENSE file in the root directory of this source tree.
58
- */var Sl=at,Lp=Tp;function zp(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Ip=typeof Object.is=="function"?Object.is:zp,jp=Lp.useSyncExternalStore,Op=Sl.useRef,Dp=Sl.useEffect,Mp=Sl.useMemo,Up=Sl.useDebugValue;kc.useSyncExternalStoreWithSelector=function(e,t,n,r,l){var i=Op(null);if(i.current===null){var o={hasValue:!1,value:null};i.current=o}else o=i.current;i=Mp(function(){function s(v){if(!c){if(c=!0,h=v,v=r(v),l!==void 0&&o.hasValue){var g=o.value;if(l(g,v))return m=g}return m=v}if(g=m,Ip(h,v))return g;var y=r(v);return l!==void 0&&l(g,y)?(h=v,g):(h=v,m=y)}var c=!1,h,m,p=n===void 0?null:n;return[function(){return s(t())},p===null?void 0:function(){return s(p())}]},[t,n,r,l]);var u=jp(e,i[0],i[1]);return Dp(function(){o.hasValue=!0,o.value=u},[u]),Up(u),u};Sc.exports=kc;var Fp=Sc.exports;const $p=os(Fp),Cc={},{useDebugValue:Ap}=Kc,{useSyncExternalStoreWithSelector:Bp}=$p;let ns=!1;const Wp=e=>e;function Hp(e,t=Wp,n){(Cc?"production":void 0)!=="production"&&n&&!ns&&(console.warn("[DEPRECATED] Use `createWithEqualityFn` instead of `create` or use `useStoreWithEqualityFn` instead of `useStore`. They can be imported from 'zustand/traditional'. https://github.com/pmndrs/zustand/discussions/1937"),ns=!0);const r=Bp(e.subscribe,e.getState,e.getServerState||e.getInitialState,t,n);return Ap(r),r}const rs=e=>{(Cc?"production":void 0)!=="production"&&typeof e!="function"&&console.warn("[DEPRECATED] Passing a vanilla store will be unsupported in a future version. Instead use `import { useStore } from 'zustand'`.");const t=typeof e=="function"?wp(e):e,n=(r,l)=>Hp(t,r,l);return Object.assign(n,t),n},Vp=e=>e?rs(e):rs,Qp={};function Kp(e,t){let n;try{n=e()}catch{return}return{getItem:l=>{var i;const o=s=>s===null?null:JSON.parse(s,void 0),u=(i=n.getItem(l))!=null?i:null;return u instanceof Promise?u.then(o):o(u)},setItem:(l,i)=>n.setItem(l,JSON.stringify(i,void 0)),removeItem:l=>n.removeItem(l)}}const Xn=e=>t=>{try{const n=e(t);return n instanceof Promise?n:{then(r){return Xn(r)(n)},catch(r){return this}}}catch(n){return{then(r){return this},catch(r){return Xn(r)(n)}}}},Yp=(e,t)=>(n,r,l)=>{let i={getStorage:()=>localStorage,serialize:JSON.stringify,deserialize:JSON.parse,partialize:C=>C,version:0,merge:(C,f)=>({...f,...C}),...t},o=!1;const u=new Set,s=new Set;let c;try{c=i.getStorage()}catch{}if(!c)return e((...C)=>{console.warn(`[zustand persist middleware] Unable to update item '${i.name}', the given storage is currently unavailable.`),n(...C)},r,l);const h=Xn(i.serialize),m=()=>{const C=i.partialize({...r()});let f;const a=h({state:C,version:i.version}).then(d=>c.setItem(i.name,d)).catch(d=>{f=d});if(f)throw f;return a},p=l.setState;l.setState=(C,f)=>{p(C,f),m()};const v=e((...C)=>{n(...C),m()},r,l);let g;const y=()=>{var C;if(!c)return;o=!1,u.forEach(a=>a(r()));const f=((C=i.onRehydrateStorage)==null?void 0:C.call(i,r()))||void 0;return Xn(c.getItem.bind(c))(i.name).then(a=>{if(a)return i.deserialize(a)}).then(a=>{if(a)if(typeof a.version=="number"&&a.version!==i.version){if(i.migrate)return i.migrate(a.state,a.version);console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}else return a.state}).then(a=>{var d;return g=i.merge(a,(d=r())!=null?d:v),n(g,!0),m()}).then(()=>{f==null||f(g,void 0),o=!0,s.forEach(a=>a(g))}).catch(a=>{f==null||f(void 0,a)})};return l.persist={setOptions:C=>{i={...i,...C},C.getStorage&&(c=C.getStorage())},clearStorage:()=>{c==null||c.removeItem(i.name)},getOptions:()=>i,rehydrate:()=>y(),hasHydrated:()=>o,onHydrate:C=>(u.add(C),()=>{u.delete(C)}),onFinishHydration:C=>(s.add(C),()=>{s.delete(C)})},y(),g||v},Xp=(e,t)=>(n,r,l)=>{let i={storage:Kp(()=>localStorage),partialize:y=>y,version:0,merge:(y,C)=>({...C,...y}),...t},o=!1;const u=new Set,s=new Set;let c=i.storage;if(!c)return e((...y)=>{console.warn(`[zustand persist middleware] Unable to update item '${i.name}', the given storage is currently unavailable.`),n(...y)},r,l);const h=()=>{const y=i.partialize({...r()});return c.setItem(i.name,{state:y,version:i.version})},m=l.setState;l.setState=(y,C)=>{m(y,C),h()};const p=e((...y)=>{n(...y),h()},r,l);l.getInitialState=()=>p;let v;const g=()=>{var y,C;if(!c)return;o=!1,u.forEach(a=>{var d;return a((d=r())!=null?d:p)});const f=((C=i.onRehydrateStorage)==null?void 0:C.call(i,(y=r())!=null?y:p))||void 0;return Xn(c.getItem.bind(c))(i.name).then(a=>{if(a)if(typeof a.version=="number"&&a.version!==i.version){if(i.migrate)return[!0,i.migrate(a.state,a.version)];console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}else return[!1,a.state];return[!1,void 0]}).then(a=>{var d;const[w,k]=a;if(v=i.merge(k,(d=r())!=null?d:p),n(v,!0),w)return h()}).then(()=>{f==null||f(v,void 0),v=r(),o=!0,s.forEach(a=>a(v))}).catch(a=>{f==null||f(void 0,a)})};return l.persist={setOptions:y=>{i={...i,...y},y.storage&&(c=y.storage)},clearStorage:()=>{c==null||c.removeItem(i.name)},getOptions:()=>i,rehydrate:()=>g(),hasHydrated:()=>o,onHydrate:y=>(u.add(y),()=>{u.delete(y)}),onFinishHydration:y=>(s.add(y),()=>{s.delete(y)})},i.skipHydration||g(),v||p},Gp=(e,t)=>"getStorage"in t||"serialize"in t||"deserialize"in t?((Qp?"production":void 0)!=="production"&&console.warn("[DEPRECATED] `getStorage`, `serialize` and `deserialize` options are deprecated. Use `storage` option instead."),Yp(e,t)):Xp(e,t),Jp=Gp;function Zp(){return typeof document<"u"&&document.body.dataset.webShell==="1"}function Pc(){return typeof navigator>"u"?!1:Zp()||!/Electron\//i.test(navigator.userAgent)}function dh(e=900){const[t,n]=at.useState(()=>typeof window<"u"&&window.innerWidth<e);return at.useEffect(()=>{const r=window.matchMedia(`(max-width: ${e-1}px)`),l=i=>n(i.matches);return n(r.matches),r.addEventListener("change",l),()=>r.removeEventListener("change",l)},[e]),t}const ph=[{id:"pearl",label:"珍珠白",preview:["#f5f6fa","#4f6ef7"]},{id:"scifi",label:"科幻霓虹",preview:["#050a14","#22d3ee"]},{id:"noir",label:"暗夜黑",preview:["#0f1115","#a78bfa"]}],hh=[{id:"standard",label:"标准",description:"侧边栏 + 对话区"},{id:"focus",label:"专注",description:"隐藏侧边栏,居中沉浸对话"},{id:"compact",label:"紧凑",description:"更小间距与字号,信息密度优先"}],ls=2;function qp(e=Pc()){return!e}const bp=Vp()(Jp(e=>({skin:"pearl",layout:"standard",autoSpeak:!1,wakeEnabled:qp(),wakeWord:"小智",runningFirst:!1,groupByBot:!0,setSkin:t=>e({skin:t}),setLayout:t=>e({layout:t}),setAutoSpeak:t=>e({autoSpeak:t}),setWakeEnabled:t=>e({wakeEnabled:t}),setWakeWord:t=>e({wakeWord:t}),setRunningFirst:t=>e({runningFirst:t}),setGroupByBot:t=>e({groupByBot:t})}),{name:"agent-ui-prefs",version:ls,migrate:(e,t)=>({...e,...t<1?{groupByBot:!0}:{},...t<ls&&Pc()?{wakeEnabled:!1}:{}})})),eh="agent-web-shell:skin:v1",th=["pearl","scifi","noir"];function nh(){if(window.parent===window)return()=>{};const e=t=>{if(t.origin!==window.location.origin||t.source!==window.parent)return;const n=t.data;!n||typeof n!="object"||n.type!==eh||typeof n.skin!="string"||!th.includes(n.skin)||bp.getState().setSkin(n.skin)};return window.addEventListener("message",e),()=>window.removeEventListener("message",e)}const rh="agent-webapp:project-request:v1",lh="agent-web-shell:project-response:v1",ih=["project:list","project:get","project:create","project:rename","project:delete","project:roots","project:directories","project:check"];new Set(ih);function oh(e){if(!e||typeof e!="object")return null;const t=e;return t.type!==lh||!Number.isSafeInteger(t.id)||Number(t.id)<1||typeof t.ok!="boolean"||!t.ok&&typeof t.error!="string"?null:t}class uh{constructor(t=window,n=15e3){this.context=t,this.timeoutMs=n,this.sequence=0,this.pending=new Map,this.onMessage=r=>{if(r.origin!==this.context.location.origin||r.source!==this.context.parent)return;const l=oh(r.data);if(!l)return;const i=this.pending.get(l.id);i&&(this.pending.delete(l.id),clearTimeout(i.timer),l.ok?i.resolve(l.result):i.reject(Object.assign(new Error(l.error||"项目操作失败"),{code:l.code})))},this.context.addEventListener("message",this.onMessage)}request(t,n={}){if(this.context.parent===this.context)return Promise.reject(Object.assign(new Error("请从 AgentRoam Web 控制台打开项目"),{code:"WEB_SHELL_REQUIRED"}));const r=++this.sequence;return new Promise((l,i)=>{const o=setTimeout(()=>{this.pending.delete(r),i(Object.assign(new Error("项目操作超时"),{code:"WEB_SHELL_TIMEOUT"}))},this.timeoutMs);this.pending.set(r,{resolve:l,reject:i,timer:o}),this.context.parent.postMessage({type:rh,id:r,method:t,payload:n},this.context.location.origin)})}dispose(){this.context.removeEventListener("message",this.onMessage);for(const t of this.pending.values())clearTimeout(t.timer),t.reject(Object.assign(new Error("项目桥已关闭"),{code:"WEB_SHELL_CLOSED"}));this.pending.clear()}}pp();yp();nh();document.body.dataset.webShell="1";const sh=new up,ah=window.parent===window?void 0:new uh,is=new ap(sh,new cp,ah),xc=document.getElementById("root");if(!xc)throw new Error("#root missing");const ch=wc(xc);(async()=>{window.agentApi=is,await is.refreshServerModel();const{default:e}=await Lc(async()=>{const{default:t}=await import("./App-XUxeDI8P.js");return{default:t}},[],import.meta.url);ch.render(Ko.jsx(at.StrictMode,{children:Ko.jsx(e,{})})),fh()})();function fh(){const e=[...document.scripts].map(n=>n.src).join(",").match(/index-([^/]+)\.js/),t=e?e[1]:null;t&&setInterval(async()=>{try{const l=((await(await fetch("/api/agent/model",{credentials:"same-origin"})).json()).buildId||"").replace(/^index-|\.js$/g,"");l&&l!==t&&location.reload()}catch{}},6e4)}export{hh as L,Kc as R,ph as S,lp as a,dh as b,Vp as c,Zp as i,Ko as j,at as r,bp as u};
58
+ */var Sl=at,Lp=Tp;function zp(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Ip=typeof Object.is=="function"?Object.is:zp,jp=Lp.useSyncExternalStore,Op=Sl.useRef,Dp=Sl.useEffect,Mp=Sl.useMemo,Up=Sl.useDebugValue;kc.useSyncExternalStoreWithSelector=function(e,t,n,r,l){var i=Op(null);if(i.current===null){var o={hasValue:!1,value:null};i.current=o}else o=i.current;i=Mp(function(){function s(v){if(!c){if(c=!0,h=v,v=r(v),l!==void 0&&o.hasValue){var g=o.value;if(l(g,v))return m=g}return m=v}if(g=m,Ip(h,v))return g;var y=r(v);return l!==void 0&&l(g,y)?(h=v,g):(h=v,m=y)}var c=!1,h,m,p=n===void 0?null:n;return[function(){return s(t())},p===null?void 0:function(){return s(p())}]},[t,n,r,l]);var u=jp(e,i[0],i[1]);return Dp(function(){o.hasValue=!0,o.value=u},[u]),Up(u),u};Sc.exports=kc;var Fp=Sc.exports;const $p=os(Fp),Cc={},{useDebugValue:Ap}=Kc,{useSyncExternalStoreWithSelector:Bp}=$p;let ns=!1;const Wp=e=>e;function Hp(e,t=Wp,n){(Cc?"production":void 0)!=="production"&&n&&!ns&&(console.warn("[DEPRECATED] Use `createWithEqualityFn` instead of `create` or use `useStoreWithEqualityFn` instead of `useStore`. They can be imported from 'zustand/traditional'. https://github.com/pmndrs/zustand/discussions/1937"),ns=!0);const r=Bp(e.subscribe,e.getState,e.getServerState||e.getInitialState,t,n);return Ap(r),r}const rs=e=>{(Cc?"production":void 0)!=="production"&&typeof e!="function"&&console.warn("[DEPRECATED] Passing a vanilla store will be unsupported in a future version. Instead use `import { useStore } from 'zustand'`.");const t=typeof e=="function"?wp(e):e,n=(r,l)=>Hp(t,r,l);return Object.assign(n,t),n},Vp=e=>e?rs(e):rs,Qp={};function Kp(e,t){let n;try{n=e()}catch{return}return{getItem:l=>{var i;const o=s=>s===null?null:JSON.parse(s,void 0),u=(i=n.getItem(l))!=null?i:null;return u instanceof Promise?u.then(o):o(u)},setItem:(l,i)=>n.setItem(l,JSON.stringify(i,void 0)),removeItem:l=>n.removeItem(l)}}const Xn=e=>t=>{try{const n=e(t);return n instanceof Promise?n:{then(r){return Xn(r)(n)},catch(r){return this}}}catch(n){return{then(r){return this},catch(r){return Xn(r)(n)}}}},Yp=(e,t)=>(n,r,l)=>{let i={getStorage:()=>localStorage,serialize:JSON.stringify,deserialize:JSON.parse,partialize:C=>C,version:0,merge:(C,f)=>({...f,...C}),...t},o=!1;const u=new Set,s=new Set;let c;try{c=i.getStorage()}catch{}if(!c)return e((...C)=>{console.warn(`[zustand persist middleware] Unable to update item '${i.name}', the given storage is currently unavailable.`),n(...C)},r,l);const h=Xn(i.serialize),m=()=>{const C=i.partialize({...r()});let f;const a=h({state:C,version:i.version}).then(d=>c.setItem(i.name,d)).catch(d=>{f=d});if(f)throw f;return a},p=l.setState;l.setState=(C,f)=>{p(C,f),m()};const v=e((...C)=>{n(...C),m()},r,l);let g;const y=()=>{var C;if(!c)return;o=!1,u.forEach(a=>a(r()));const f=((C=i.onRehydrateStorage)==null?void 0:C.call(i,r()))||void 0;return Xn(c.getItem.bind(c))(i.name).then(a=>{if(a)return i.deserialize(a)}).then(a=>{if(a)if(typeof a.version=="number"&&a.version!==i.version){if(i.migrate)return i.migrate(a.state,a.version);console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}else return a.state}).then(a=>{var d;return g=i.merge(a,(d=r())!=null?d:v),n(g,!0),m()}).then(()=>{f==null||f(g,void 0),o=!0,s.forEach(a=>a(g))}).catch(a=>{f==null||f(void 0,a)})};return l.persist={setOptions:C=>{i={...i,...C},C.getStorage&&(c=C.getStorage())},clearStorage:()=>{c==null||c.removeItem(i.name)},getOptions:()=>i,rehydrate:()=>y(),hasHydrated:()=>o,onHydrate:C=>(u.add(C),()=>{u.delete(C)}),onFinishHydration:C=>(s.add(C),()=>{s.delete(C)})},y(),g||v},Xp=(e,t)=>(n,r,l)=>{let i={storage:Kp(()=>localStorage),partialize:y=>y,version:0,merge:(y,C)=>({...C,...y}),...t},o=!1;const u=new Set,s=new Set;let c=i.storage;if(!c)return e((...y)=>{console.warn(`[zustand persist middleware] Unable to update item '${i.name}', the given storage is currently unavailable.`),n(...y)},r,l);const h=()=>{const y=i.partialize({...r()});return c.setItem(i.name,{state:y,version:i.version})},m=l.setState;l.setState=(y,C)=>{m(y,C),h()};const p=e((...y)=>{n(...y),h()},r,l);l.getInitialState=()=>p;let v;const g=()=>{var y,C;if(!c)return;o=!1,u.forEach(a=>{var d;return a((d=r())!=null?d:p)});const f=((C=i.onRehydrateStorage)==null?void 0:C.call(i,(y=r())!=null?y:p))||void 0;return Xn(c.getItem.bind(c))(i.name).then(a=>{if(a)if(typeof a.version=="number"&&a.version!==i.version){if(i.migrate)return[!0,i.migrate(a.state,a.version)];console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}else return[!1,a.state];return[!1,void 0]}).then(a=>{var d;const[w,k]=a;if(v=i.merge(k,(d=r())!=null?d:p),n(v,!0),w)return h()}).then(()=>{f==null||f(v,void 0),v=r(),o=!0,s.forEach(a=>a(v))}).catch(a=>{f==null||f(void 0,a)})};return l.persist={setOptions:y=>{i={...i,...y},y.storage&&(c=y.storage)},clearStorage:()=>{c==null||c.removeItem(i.name)},getOptions:()=>i,rehydrate:()=>g(),hasHydrated:()=>o,onHydrate:y=>(u.add(y),()=>{u.delete(y)}),onFinishHydration:y=>(s.add(y),()=>{s.delete(y)})},i.skipHydration||g(),v||p},Gp=(e,t)=>"getStorage"in t||"serialize"in t||"deserialize"in t?((Qp?"production":void 0)!=="production"&&console.warn("[DEPRECATED] `getStorage`, `serialize` and `deserialize` options are deprecated. Use `storage` option instead."),Yp(e,t)):Xp(e,t),Jp=Gp;function Zp(){return typeof document<"u"&&document.body.dataset.webShell==="1"}function Pc(){return typeof navigator>"u"?!1:Zp()||!/Electron\//i.test(navigator.userAgent)}function dh(e=900){const[t,n]=at.useState(()=>typeof window<"u"&&window.innerWidth<e);return at.useEffect(()=>{const r=window.matchMedia(`(max-width: ${e-1}px)`),l=i=>n(i.matches);return n(r.matches),r.addEventListener("change",l),()=>r.removeEventListener("change",l)},[e]),t}const ph=[{id:"pearl",label:"珍珠白",preview:["#f5f6fa","#4f6ef7"]},{id:"scifi",label:"科幻霓虹",preview:["#050a14","#22d3ee"]},{id:"noir",label:"暗夜黑",preview:["#0f1115","#a78bfa"]}],hh=[{id:"standard",label:"标准",description:"侧边栏 + 对话区"},{id:"focus",label:"专注",description:"隐藏侧边栏,居中沉浸对话"},{id:"compact",label:"紧凑",description:"更小间距与字号,信息密度优先"}],ls=2;function qp(e=Pc()){return!e}const bp=Vp()(Jp(e=>({skin:"pearl",layout:"standard",autoSpeak:!1,wakeEnabled:qp(),wakeWord:"小智",runningFirst:!1,groupByBot:!0,setSkin:t=>e({skin:t}),setLayout:t=>e({layout:t}),setAutoSpeak:t=>e({autoSpeak:t}),setWakeEnabled:t=>e({wakeEnabled:t}),setWakeWord:t=>e({wakeWord:t}),setRunningFirst:t=>e({runningFirst:t}),setGroupByBot:t=>e({groupByBot:t})}),{name:"agent-ui-prefs",version:ls,migrate:(e,t)=>({...e,...t<1?{groupByBot:!0}:{},...t<ls&&Pc()?{wakeEnabled:!1}:{}})})),eh="agent-web-shell:skin:v1",th=["pearl","scifi","noir"];function nh(){if(window.parent===window)return()=>{};const e=t=>{if(t.origin!==window.location.origin||t.source!==window.parent)return;const n=t.data;!n||typeof n!="object"||n.type!==eh||typeof n.skin!="string"||!th.includes(n.skin)||bp.getState().setSkin(n.skin)};return window.addEventListener("message",e),()=>window.removeEventListener("message",e)}const rh="agent-webapp:project-request:v1",lh="agent-web-shell:project-response:v1",ih=["project:list","project:get","project:create","project:rename","project:delete","project:roots","project:directories","project:check"];new Set(ih);function oh(e){if(!e||typeof e!="object")return null;const t=e;return t.type!==lh||!Number.isSafeInteger(t.id)||Number(t.id)<1||typeof t.ok!="boolean"||!t.ok&&typeof t.error!="string"?null:t}class uh{constructor(t=window,n=15e3){this.context=t,this.timeoutMs=n,this.sequence=0,this.pending=new Map,this.onMessage=r=>{if(r.origin!==this.context.location.origin||r.source!==this.context.parent)return;const l=oh(r.data);if(!l)return;const i=this.pending.get(l.id);i&&(this.pending.delete(l.id),clearTimeout(i.timer),l.ok?i.resolve(l.result):i.reject(Object.assign(new Error(l.error||"项目操作失败"),{code:l.code})))},this.context.addEventListener("message",this.onMessage)}request(t,n={}){if(this.context.parent===this.context)return Promise.reject(Object.assign(new Error("请从 AgentRoam Web 控制台打开项目"),{code:"WEB_SHELL_REQUIRED"}));const r=++this.sequence;return new Promise((l,i)=>{const o=setTimeout(()=>{this.pending.delete(r),i(Object.assign(new Error("项目操作超时"),{code:"WEB_SHELL_TIMEOUT"}))},this.timeoutMs);this.pending.set(r,{resolve:l,reject:i,timer:o}),this.context.parent.postMessage({type:rh,id:r,method:t,payload:n},this.context.location.origin)})}dispose(){this.context.removeEventListener("message",this.onMessage);for(const t of this.pending.values())clearTimeout(t.timer),t.reject(Object.assign(new Error("项目桥已关闭"),{code:"WEB_SHELL_CLOSED"}));this.pending.clear()}}pp();yp();nh();document.body.dataset.webShell="1";const sh=new up,ah=window.parent===window?void 0:new uh,is=new ap(sh,new cp,ah),xc=document.getElementById("root");if(!xc)throw new Error("#root missing");const ch=wc(xc);(async()=>{window.agentApi=is,await is.refreshServerModel();const{default:e}=await Lc(async()=>{const{default:t}=await import("./App-C4wiUXZC.js");return{default:t}},[],import.meta.url);ch.render(Ko.jsx(at.StrictMode,{children:Ko.jsx(e,{})})),fh()})();function fh(){const e=[...document.scripts].map(n=>n.src).join(",").match(/index-([^/]+)\.js/),t=e?e[1]:null;t&&setInterval(async()=>{try{const l=((await(await fetch("/api/agent/model",{credentials:"same-origin"})).json()).buildId||"").replace(/^index-|\.js$/g,"");l&&l!==t&&location.reload()}catch{}},6e4)}export{hh as L,Kc as R,ph as S,lp as a,dh as b,Vp as c,Zp as i,Ko as j,at as r,bp as u};
@@ -8,8 +8,8 @@
8
8
  <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
9
9
  <meta name="theme-color" content="#f5f6fa" />
10
10
  <title>智能助手</title>
11
- <script type="module" crossorigin src="./assets/index-BdHtZjnb.js"></script>
12
- <link rel="stylesheet" crossorigin href="./assets/index-DeGogWCH.css">
11
+ <script type="module" crossorigin src="./assets/index-DhS2YvqH.js"></script>
12
+ <link rel="stylesheet" crossorigin href="./assets/index-D7slQOD-.css">
13
13
  </head>
14
14
  <body>
15
15
  <div id="root"></div>
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[604],{3604:function(e,a,t){t.r(a),t.d(a,{default:function(){return V}});var l=t(1996),n=t(6121);let r=[["style",new Set(["css","scss","sass","less","styl"])],["image",new Set(["png","jpg","jpeg","gif","webp","avif","bmp","ico","svg","tif","tiff"])],["video",new Set(["mp4","mov","m4v","webm","mkv","avi","wmv","flv","mpeg","mpg"])],["audio",new Set(["mp3","wav","m4a","aac","ogg","flac","opus"])],["markdown",new Set(["md","mdx","markdown"])],["json",new Set(["json","jsonc","geojson"])],["archive",new Set(["zip","tar","gz","tgz","bz2","xz","7z","rar"])],["spreadsheet",new Set(["csv","tsv","xls","xlsx","ods"])],["presentation",new Set(["ppt","pptx","key","odp"])],["database",new Set(["db","sqlite","sqlite3"])],["text",new Set(["txt","log","rtf","ini","cfg","conf","env","yaml","yml","toml","xml","pdf","doc","docx","odt"])],["code",new Set(["js","jsx","mjs","cjs","ts","tsx","vue","svelte","java","kt","kts","py","rb","go","rs","php","c","cc","cpp","h","hpp","cs","swift","scala","sh","bash","zsh","fish","sql","html"])]],i=new Map([["dockerfile","code"],["makefile","code"],["gemfile","code"],["rakefile","code"],["license","text"]]);var c=t(1806);let d=(0,c.Z)("FileCode2",[["path",{d:"M4 22h14a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v4",key:"1pf5j1"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"m5 12-3 3 3 3",key:"oke12k"}],["path",{d:"m9 18 3-3-3-3",key:"112psh"}]]),s=(0,c.Z)("Palette",[["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["path",{d:"M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10c.926 0 1.648-.746 1.648-1.688 0-.437-.18-.835-.437-1.125-.29-.289-.438-.652-.438-1.125a1.64 1.64 0 0 1 1.668-1.668h1.996c3.051 0 5.555-2.503 5.555-5.554C21.965 6.012 17.461 2 12 2z",key:"12rzf8"}]]),o=(0,c.Z)("FileImage",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["circle",{cx:"10",cy:"12",r:"2",key:"737tya"}],["path",{d:"m20 17-1.296-1.296a2.41 2.41 0 0 0-3.408 0L9 22",key:"wt3hpn"}]]),h=(0,c.Z)("FileVideo2",[["path",{d:"M4 22h14a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v4",key:"1pf5j1"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["rect",{width:"8",height:"6",x:"2",y:"12",rx:"1",key:"1a6c1e"}],["path",{d:"m10 15.5 4 2.5v-6l-4 2.5",key:"t7cp39"}]]),p=(0,c.Z)("FileAudio",[["path",{d:"M17.5 22h.5a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v3",key:"rslqgf"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M2 19a2 2 0 1 1 4 0v1a2 2 0 1 1-4 0v-4a6 6 0 0 1 12 0v4a2 2 0 1 1-4 0v-1a2 2 0 1 1 4 0",key:"9f7x3i"}]]),y=(0,c.Z)("NotebookText",[["path",{d:"M2 6h4",key:"aawbzj"}],["path",{d:"M2 10h4",key:"l0bgd4"}],["path",{d:"M2 14h4",key:"1gsvsf"}],["path",{d:"M2 18h4",key:"1bu2t1"}],["rect",{width:"16",height:"20",x:"4",y:"2",rx:"2",key:"1nb95v"}],["path",{d:"M9.5 8h5",key:"11mslq"}],["path",{d:"M9.5 12H16",key:"ktog6x"}],["path",{d:"M9.5 16H14",key:"p1seyn"}]]),u=(0,c.Z)("FileText",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]),v=(0,c.Z)("FileJson2",[["path",{d:"M4 22h14a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v4",key:"1pf5j1"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M4 12a1 1 0 0 0-1 1v1a1 1 0 0 1-1 1 1 1 0 0 1 1 1v1a1 1 0 0 0 1 1",key:"fq0c9t"}],["path",{d:"M8 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1",key:"4gibmv"}]]),k=(0,c.Z)("FileArchive",[["path",{d:"M10 12v-1",key:"v7bkov"}],["path",{d:"M10 18v-2",key:"1cjy8d"}],["path",{d:"M10 7V6",key:"dljcrl"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M15.5 22H18a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v16a2 2 0 0 0 .274 1.01",key:"gkbcor"}],["circle",{cx:"10",cy:"20",r:"2",key:"1xzdoj"}]]),x=(0,c.Z)("FileSpreadsheet",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M8 13h2",key:"yr2amv"}],["path",{d:"M14 13h2",key:"un5t4a"}],["path",{d:"M8 17h2",key:"2yhykz"}],["path",{d:"M14 17h2",key:"10kma7"}]]),f=(0,c.Z)("Presentation",[["path",{d:"M2 3h20",key:"91anmk"}],["path",{d:"M21 3v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V3",key:"2k9sn8"}],["path",{d:"m7 21 5-5 5 5",key:"bip4we"}]]),m=(0,c.Z)("Database",[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]]),b=(0,c.Z)("File",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}]]),j=(0,c.Z)("LoaderCircle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]),g=(0,c.Z)("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]),w=(0,c.Z)("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]),M=(0,c.Z)("FolderOpen",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]),z=(0,c.Z)("Folder",[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]]),C=(0,c.Z)("CornerDownLeft",[["polyline",{points:"9 10 4 15 9 20",key:"r3jprv"}],["path",{d:"M20 4v7a4 4 0 0 1-4 4H4",key:"6o5b7l"}]]),Z=(0,c.Z)("LocateFixed",[["line",{x1:"2",x2:"5",y1:"12",y2:"12",key:"bvdh0s"}],["line",{x1:"19",x2:"22",y1:"12",y2:"12",key:"1tbv5k"}],["line",{x1:"12",x2:"12",y1:"2",y2:"5",key:"11lu5j"}],["line",{x1:"12",x2:"12",y1:"19",y2:"22",key:"x3vr5v"}],["circle",{cx:"12",cy:"12",r:"7",key:"fim9np"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]),q=(0,c.Z)("Search",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]);var N=t(7317);let S={code:{icon:d,color:"#7aa2f7",label:"代码文件"},style:{icon:s,color:"#bb9af7",label:"样式文件"},image:{icon:o,color:"#9ece6a",label:"图片文件"},video:{icon:h,color:"#f7768e",label:"视频文件"},audio:{icon:p,color:"#c099ff",label:"音频文件"},markdown:{icon:y,color:"#73daca",label:"Markdown 文件"},text:{icon:u,color:"#a9b1d6",label:"文本文件"},json:{icon:v,color:"#e0af68",label:"JSON 文件"},archive:{icon:k,color:"#ff9e64",label:"压缩文件"},spreadsheet:{icon:x,color:"#9ece6a",label:"表格文件"},presentation:{icon:f,color:"#f7768e",label:"演示文件"},database:{icon:m,color:"#2ac3de",label:"数据库文件"},file:{icon:b,color:"#c8c8d0",label:"文件"}};function H(e){return e<1024?"".concat(e,"B"):e<1048576?"".concat((e/1024).toFixed(1),"K"):e<1073741824?"".concat((e/1024/1024).toFixed(1),"M"):"".concat((e/1024/1024/1024).toFixed(1),"G")}function V(e){let{rpc:a,onEvent:t,onOpenFile:c,selectedPath:d,ready:s,cwd:o,followCwd:h,initialRoot:p,initialFollow:y=!0,onTreeStateChange:u}=e,[v,k]=(0,n.useState)(null),[x,f]=(0,n.useState)(""),[m,b]=(0,n.useState)(""),[V,F]=(0,n.useState)(!y),[L,E]=(0,n.useState)(""),A=(0,n.useRef)(new Map),I=(0,n.useRef)(null),[,W]=(0,n.useState)(0),D=()=>W(e=>e+1),_=(0,n.useCallback)(async(e,t)=>{let l={path:e,depth:t,expanded:!0,children:null,loading:!0};A.current.set(e,l),D();try{let t=await a("fs:list",{path:e});l.children=t.entries,a("fs:watch",{path:e}).catch(()=>{})}catch(e){var n;l.children=[],l.error=null!==(n=null==e?void 0:e.message)&&void 0!==n?n:"read failed"}return l.loading=!1,D(),l},[a]),O=!!h&&!V,R=(0,n.useCallback)(e=>{let a=e.length>1?e.replace(/\/+$/,""):e;I.current=a,A.current.clear(),k({path:a,depth:0,expanded:!1,children:null,loading:!1}),b(a)},[]);(0,n.useEffect)(()=>{s&&o&&O&&I.current!==o&&(R(o),null==u||u(o,!0))},[s,o,O,R]),(0,n.useEffect)(()=>{s&&p&&!y&&!I.current&&(F(!0),R(p))},[s,p,y,R]),(0,n.useEffect)(()=>{s&&a("hello").then(e=>{E(e.home),!O||o||I.current||R(e.home)}).catch(()=>{})},[s,o,O,a,R]);let J=()=>{let e=m.trim();e&&("~"===e?e=L||o||"/":e.startsWith("~/")?e="".concat(L||o||"").concat(e.slice(1)):e.startsWith("/")||(e="".concat(o||(null==v?void 0:v.path)||L||"/","/").concat(e)),e=e.replace(/\/+/g,"/"),F(!0),R(e),null==u||u(e,!1))},K=(0,n.useCallback)(async e=>{let a=A.current.get(e);a||(a={path:e,depth:0,expanded:!1,children:null,loading:!1},A.current.set(e,a)),a.expanded?a.expanded=!1:(a.expanded=!0,a.children||a.loading||await _(e,a.depth)),D()},[_]);(0,n.useCallback)(async(e,a)=>{let t=A.current.get(e);t?t.children||t.loading||await _(e,a):t=await _(e,a),t.expanded=!0,D()},[_]),(0,n.useEffect)(()=>t("fs:event",e=>{var a;for(let t of null!==(a=e.events)&&void 0!==a?a:[]){let e=t.path;e===d&&window.dispatchEvent(new CustomEvent("file-changed",{detail:e}));let a=e.slice(0,e.lastIndexOf("/"))||"/",l=A.current.get(a);(null==l?void 0:l.expanded)&&l.children&&!l.loading&&_(a,l.depth).catch(()=>{})}}),[t,d,_]);let P=(e,a)=>e.endsWith("/")?e+a:"".concat(e,"/").concat(a),T=x.trim().toLowerCase(),B=(e,a)=>{var t,l;if(!T||a.name.toLowerCase().includes(T))return!0;if(!a.dir)return!1;let n=P(e,a.name),r=null===(t=A.current.get(n))||void 0===t?void 0:t.children;return null!==(l=null==r?void 0:r.some(e=>B(n,e)))&&void 0!==l&&l},G=(e,a,t)=>a.filter(a=>B(e,a)).map(a=>{let n=P(e,a.name);if(a.dir){var s;let e=A.current.get(n),r=null!==(s=null==e?void 0:e.expanded)&&void 0!==s&&s;return(0,l.jsxs)("div",{children:[(0,l.jsxs)("div",{className:"tree-row",onClick:()=>K(n),style:{paddingLeft:6+12*t},children:[(0,l.jsx)("span",{className:"tree-disclosure","aria-hidden":"true",children:(null==e?void 0:e.loading)?(0,l.jsx)(j,{className:"tree-spin",size:13}):r?(0,l.jsx)(g,{size:13}):(0,l.jsx)(w,{size:13})}),(0,l.jsx)("span",{className:"tree-entry-icon tree-folder-icon","aria-hidden":"true",children:r?(0,l.jsx)(M,{size:16}):(0,l.jsx)(z,{size:16})}),(0,l.jsx)("span",{className:"tree-entry-name",children:a.name})]}),r&&(e.children?G(n,e.children,t+1):(0,l.jsx)("div",{className:"tree-row",style:{paddingLeft:22+12*t,color:"#556"},children:"…"}))]},n)}let o=S[function(e){var a,t;let l=e.toLocaleLowerCase(),n=i.get(l);if(n)return n;if(l.startsWith(".env")||".gitignore"===l||".npmrc"===l)return"text";let c=l.includes(".")&&l.split(".").pop()||"";return null!==(t=null===(a=r.find(e=>{let[,a]=e;return a.has(c)}))||void 0===a?void 0:a[0])&&void 0!==t?t:"file"}(a.name)],h=o.icon;return(0,l.jsxs)("div",{className:"tree-row","data-selected":n===d?"1":void 0,onClick:()=>c(n),title:"".concat(o.label," \xb7 ").concat(n," \xb7 ").concat(H(a.size)),style:{paddingLeft:6+12*t},children:[(0,l.jsx)("span",{className:"tree-disclosure","aria-hidden":"true"}),(0,l.jsx)("span",{className:"tree-entry-icon",style:{color:o.color},"aria-hidden":"true",children:(0,l.jsx)(h,{size:16,strokeWidth:1.8})}),(0,l.jsx)("span",{className:"tree-entry-name",children:a.name}),(0,l.jsx)("span",{className:"tree-size",children:H(a.size)})]},n)});if(!v)return(0,l.jsx)("div",{style:{padding:14,fontSize:12,color:"#556"},children:O?s?"等待终端目录…":"连接中…":"…"});let $=A.current.get(v.path);return(0,l.jsxs)("div",{className:"tree-scroll",children:[(0,l.jsxs)("div",{className:"tree-location",children:[(0,l.jsx)("input",{value:m,onChange:e=>b(e.target.value),onKeyDown:e=>{"Enter"===e.key&&J()},placeholder:"输入目录路径","aria-label":"文件树目录路径",spellCheck:!1}),(0,l.jsx)("button",{tabIndex:-1,onClick:J,title:"定位目录","aria-label":"定位目录",children:(0,l.jsx)(C,{size:14,"aria-hidden":"true"})}),(0,l.jsx)("button",{tabIndex:-1,onClick:()=>{F(!1),o&&(R(o),null==u||u(o,!0))},title:"跟随终端目录","aria-label":"跟随终端目录","data-active":O?"1":void 0,children:(0,l.jsx)(Z,{size:14,"aria-hidden":"true"})})]}),(0,l.jsxs)("div",{className:"tree-filter",children:[(0,l.jsx)(q,{size:14,"aria-hidden":"true"}),(0,l.jsx)("input",{value:x,onChange:e=>f(e.target.value),placeholder:"筛选已加载文件","aria-label":"筛选文件树"}),x&&(0,l.jsx)("button",{tabIndex:-1,onClick:()=>f(""),"aria-label":"清除筛选",children:(0,l.jsx)(N.Z,{size:13,"aria-hidden":"true"})})]}),(0,l.jsxs)("div",{className:"tree-row",onClick:()=>K(v.path),children:[(0,l.jsx)("span",{className:"tree-disclosure","aria-hidden":"true",children:(null==$?void 0:$.loading)?(0,l.jsx)(j,{className:"tree-spin",size:13}):(null==$?void 0:$.expanded)?(0,l.jsx)(g,{size:13}):(0,l.jsx)(w,{size:13})}),(0,l.jsx)("span",{className:"tree-entry-icon tree-folder-icon","aria-hidden":"true",children:(null==$?void 0:$.expanded)?(0,l.jsx)(M,{size:16}):(0,l.jsx)(z,{size:16})}),(0,l.jsx)("span",{className:"tree-entry-name",style:{direction:"rtl",textAlign:"left"},children:v.path})]}),(null==$?void 0:$.expanded)&&($.children?G(v.path,$.children,1):(0,l.jsx)("div",{className:"tree-row",style:{paddingLeft:24,color:"#556"},children:"…"}))]})}}}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[541],{6736:function(e,t,n){Promise.resolve().then(n.bind(n,4479))},1806:function(e,t,n){"use strict";n.d(t,{Z:function(){return c}});var r=n(6121);let i=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),a=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.filter((e,t,n)=>!!e&&""!==e.trim()&&n.indexOf(e)===t).join(" ").trim()};var o={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let l=(0,r.forwardRef)((e,t)=>{let{color:n="currentColor",size:i=24,strokeWidth:l=2,absoluteStrokeWidth:c,className:s="",children:d,iconNode:u,...f}=e;return(0,r.createElement)("svg",{ref:t,...o,width:i,height:i,stroke:n,strokeWidth:c?24*Number(l)/Number(i):l,className:a("lucide",s),...f},[...u.map(e=>{let[t,n]=e;return(0,r.createElement)(t,n)}),...Array.isArray(d)?d:[d]])}),c=(e,t)=>{let n=(0,r.forwardRef)((n,o)=>{let{className:c,...s}=n;return(0,r.createElement)(l,{ref:o,iconNode:t,className:a("lucide-".concat(i(e)),c),...s})});return n.displayName="".concat(e),n}},7317:function(e,t,n){"use strict";n.d(t,{Z:function(){return r}});let r=(0,n(1806).Z)("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]])},6302:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return a}});let r=n(684);n(1996),n(6121);let i=r._(n(6729));function a(e,t){var n;let r={loading:e=>{let{error:t,isLoading:n,pastDelay:r}=e;return null}};"function"==typeof e&&(r.loader=e);let a={...r,...t};return(0,i.default)({...a,modules:null==(n=a.loadableGenerated)?void 0:n.modules})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4352:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"BailoutToCSR",{enumerable:!0,get:function(){return i}});let r=n(2723);function i(e){let{reason:t,children:n}=e;if("undefined"==typeof window)throw new r.BailoutToCSRError(t);return n}},6729:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return s}});let r=n(1996),i=n(6121),a=n(4352),o=n(5882);function l(e){return{default:e&&"default"in e?e.default:e}}let c={loader:()=>Promise.resolve(l(()=>null)),loading:null,ssr:!0},s=function(e){let t={...c,...e},n=(0,i.lazy)(()=>t.loader().then(l)),s=t.loading;function d(e){let l=s?(0,r.jsx)(s,{isLoading:!0,pastDelay:!0,error:null}):null,c=t.ssr?(0,r.jsxs)(r.Fragment,{children:["undefined"==typeof window?(0,r.jsx)(o.PreloadCss,{moduleIds:t.modules}):null,(0,r.jsx)(n,{...e})]}):(0,r.jsx)(a.BailoutToCSR,{reason:"next/dynamic",children:(0,r.jsx)(n,{...e})});return(0,r.jsx)(i.Suspense,{fallback:l,children:c})}return d.displayName="LoadableComponent",d}},5882:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"PreloadCss",{enumerable:!0,get:function(){return a}});let r=n(1996),i=n(7994);function a(e){let{moduleIds:t}=e;if("undefined"!=typeof window)return null;let n=(0,i.getExpectedRequestStore)("next/dynamic css"),a=[];if(n.reactLoadableManifest&&t){let e=n.reactLoadableManifest;for(let n of t){if(!e[n])continue;let t=e[n].files.filter(e=>e.endsWith(".css"));a.push(...t)}}return 0===a.length?null:(0,r.jsx)(r.Fragment,{children:a.map(e=>(0,r.jsx)("link",{precedence:"dynamic",rel:"stylesheet",href:n.assetPrefix+"/_next/"+encodeURI(e),as:"style"},e))})}},9532:function(e,t,n){"use strict";function r(e,t){var n,r,i,a;return{height:Math.round(null!==(n=null==e?void 0:e.height)&&void 0!==n?n:t.height),width:Math.round(null!==(r=null==e?void 0:e.width)&&void 0!==r?r:t.width),top:Math.round(null!==(i=null==e?void 0:e.offsetTop)&&void 0!==i?i:0),left:Math.round(null!==(a=null==e?void 0:e.offsetLeft)&&void 0!==a?a:0)}}function i(e){e&&(e.scrollLeft=0)}n.d(t,{i:function(){return i},x:function(){return r}})},4479:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return E}});var r=n(1996),i=n(6302),a=n.n(i),o=n(6121),l=n(7317);let c=(0,n(1806).Z)("FolderTree",[["path",{d:"M20 10a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1h-2.5a1 1 0 0 1-.8-.4l-.9-1.2A1 1 0 0 0 15 3h-2a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1Z",key:"hod4my"}],["path",{d:"M20 21a1 1 0 0 0 1-1v-3a1 1 0 0 0-1-1h-2.9a1 1 0 0 1-.88-.55l-.42-.85a1 1 0 0 0-.92-.6H13a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1Z",key:"w4yl2u"}],["path",{d:"M3 5a2 2 0 0 0 2 2h3",key:"f2jnh7"}],["path",{d:"M3 3v13a2 2 0 0 0 2 2h3",key:"k8epm1"}]]),s="agent-web-shell:project-response:v1",d=new Set(["project:list","project:get","project:create","project:rename","project:delete","project:roots","project:directories","project:check"]);function u(e){let{children:t}=e,n=function(){let[e,t]=(0,o.useState)("loading"),[n,r]=(0,o.useState)(null),[i]=(0,o.useState)(""),[a,l]=(0,o.useState)(null),c=(0,o.useCallback)(async()=>{t("loading"),l(null);try{let e=await fetch("/api/web-console/bootstrap",{credentials:"same-origin",cache:"no-store"});if(!e.ok)throw Error("HTTP ".concat(e.status));let n=await e.json();r(n.user),t("authenticated")}catch(e){l("无法连接远程控制台"),t("needsLogin")}},[]);(0,o.useEffect)(()=>{c()},[c]);let s=(0,o.useCallback)(async()=>{let e=await fetch("/api/web-console/bootstrap",{credentials:"same-origin",cache:"no-store"});if(!e.ok)throw Error("bootstrap failed");let n=await e.json();return r(n.user),t("authenticated"),n.wsNonce},[]),d=(0,o.useCallback)(async()=>!0,[]);return{status:e,user:n,error:a,csrfToken:i,setup:d,login:d,logout:c,refresh:c,getWsNonce:s}}();return"authenticated"===n.status?(0,r.jsx)(r.Fragment,{children:t(n)}):(0,r.jsx)("main",{style:f.page,children:(0,r.jsx)("div",{style:f.card,children:n.error||"正在连接远程控制台…"})})}let f={page:{minHeight:"100dvh",display:"grid",placeItems:"center",background:"#0b0b10",color:"#e8e8ee",fontFamily:'-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif'},card:{color:"#858999",fontSize:13}};function p(e){let{csrfToken:t,terminalId:n,onFill:i}=e,[a,l]=(0,o.useState)([]),[c,s]=(0,o.useState)(""),d=(0,o.useCallback)(async()=>{let e=new URLSearchParams({q:c,limit:"200"}),t=await fetch("/api/web-console/history?".concat(e),{credentials:"same-origin"});t.ok&&l((await t.json()).history)},[c]);(0,o.useEffect)(()=>{let e=setTimeout(d,200);return()=>clearTimeout(e)},[d]);let u=async e=>{await fetch("/api/web-console/history",{method:"DELETE",credentials:"same-origin",headers:{"content-type":"application/json","x-csrf-token":t},body:JSON.stringify({id:e})}),d()},f=e=>{n&&i(e)};return(0,r.jsxs)("div",{className:"history-panel",children:[(0,r.jsxs)("div",{className:"history-search",children:[(0,r.jsx)("input",{value:c,onChange:e=>s(e.target.value),placeholder:"搜索命令"}),(0,r.jsx)("button",{onClick:d,children:"刷新"})]}),a.map(e=>(0,r.jsxs)("div",{className:"history-item".concat(n?"":" history-item-disabled"),role:"button",tabIndex:n?0:-1,onClick:()=>f(e.command),onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&n&&(t.preventDefault(),f(e.command))},children:[(0,r.jsx)("code",{children:e.command}),(0,r.jsxs)("small",{children:[e.cwd," \xb7 ",new Date(e.executedAt).toLocaleString()]}),(0,r.jsxs)("div",{className:"history-item-actions",onClick:e=>e.stopPropagation(),onPointerDown:e=>e.stopPropagation(),children:[(0,r.jsx)("button",{onClick:()=>navigator.clipboard.writeText(e.command),children:"复制"}),(0,r.jsx)("button",{disabled:!n,onClick:()=>f(e.command),children:"填入"}),(0,r.jsx)("button",{onClick:()=>u(e.id),children:"删除"})]})]},e.id)),!a.length&&(0,r.jsx)("div",{className:"history-empty",children:"暂无 Shell 命令历史"}),!n&&!!a.length&&(0,r.jsx)("div",{className:"history-empty",children:"请先打开一个终端页签"})]})}var b=n(9149);let h=[{id:"pearl",label:"珍珠白",swatch:"#f5f6fa",preview:["#f5f6fa","#4f6ef7"],cssVars:{"--ui-root-bg":"#f5f6fa","--ui-text":"#111827","--ui-tabbar-bg":"#eef0f6","--ui-tabbar-border":"#dfe3ee","--ui-tab-bg":"#e6e9f4","--ui-tab-text":"#5b6472","--ui-tab-active-bg":"#ffffff","--ui-tab-active-text":"#111827","--ui-tab-accent":"#4f6ef7","--ui-connection-bg":"#eef0f6","--ui-connection-text":"#9ca3af","--ui-tree-bg":"#fbfcfe","--ui-tree-border":"#e5e8f0","--ui-term-col-bg":"#f5f6fa","--ui-fab-bg":"#ffffff","--ui-fab-border":"#d8dcea","--ui-muted-surface":"#eef0f6","--ui-muted-border":"#d8dcea","--ui-muted-text":"#6b7280","--ui-panel-input-bg":"#ffffff","--ui-panel-input-text":"#111827","--ui-panel-input-border":"#d8dcea","--ui-drawer-tab-text":"#6b7280","--ui-drawer-tab-active":"#111827","--ui-history-item-text":"#1f2937","--ui-history-meta":"#9ca3af","--ui-success":"#059669","--ui-error":"#dc2626"},termHostBg:"#ffffff",keybar:{bg:"#eef0f6",border:"#dfe3ee",keyBg:"#ffffff",keyBorder:"#d8dcea",keyText:"#4b5563",accent:"#4f6ef7",accentText:"#ffffff",drag:"#a5b4fc"},xterm:{background:"#ffffff",foreground:"#1f2937",cursor:"#4f6ef7",selectionBackground:"#c7d2fe",black:"#24292e",red:"#d73a49",green:"#22863a",yellow:"#b08800",blue:"#005cc5",magenta:"#6f42c1",cyan:"#1b7c83",white:"#6a737d",brightBlack:"#959da5",brightWhite:"#fafbfc"}},{id:"scifi",label:"科幻霓虹",swatch:"#050a14",preview:["#050a14","#22d3ee"],cssVars:{"--ui-root-bg":"#050a14","--ui-text":"#e2f3ff","--ui-tabbar-bg":"#0a1220","--ui-tabbar-border":"#10263c","--ui-tab-bg":"#0d1626","--ui-tab-text":"#5c7893","--ui-tab-active-bg":"#122036","--ui-tab-active-text":"#e2f3ff","--ui-tab-accent":"#22d3ee","--ui-connection-bg":"#0a1220","--ui-connection-text":"#5c7893","--ui-tree-bg":"#0d1626","--ui-tree-border":"#10263c","--ui-term-col-bg":"#050a14","--ui-fab-bg":"#122036","--ui-fab-border":"#155e75","--ui-muted-surface":"#0d1626","--ui-muted-border":"#164e63","--ui-muted-text":"#9fb8d0","--ui-panel-input-bg":"#0a1220","--ui-panel-input-text":"#e2f3ff","--ui-panel-input-border":"#164e63","--ui-drawer-tab-text":"#5c7893","--ui-drawer-tab-active":"#e2f3ff","--ui-history-item-text":"#d5ecfb","--ui-history-meta":"#5c7893","--ui-success":"#34d399","--ui-error":"#fb7185"},termHostBg:"#0a1220",keybar:{bg:"#0a1220",border:"#10263c",keyBg:"#0d1626",keyBorder:"#164e63",keyText:"#9fb8d0",accent:"#22d3ee",accentText:"#04121a",drag:"#155e75"},xterm:{background:"#0a1220",foreground:"#e2f3ff",cursor:"#22d3ee",selectionBackground:"#164e63",black:"#0d1626",red:"#fb7185",green:"#34d399",yellow:"#fbbf24",blue:"#38bdf8",magenta:"#e879f9",cyan:"#22d3ee",white:"#e2f3ff",brightBlack:"#5c7893",brightWhite:"#ffffff"}},{id:"noir",label:"暗夜黑",swatch:"#0f1115",preview:["#0f1115","#a78bfa"],cssVars:{"--ui-root-bg":"#0f1115","--ui-text":"#eceff4","--ui-tabbar-bg":"#14171d","--ui-tabbar-border":"#232833","--ui-tab-bg":"#191d24","--ui-tab-text":"#6b7280","--ui-tab-active-bg":"#1f242d","--ui-tab-active-text":"#eceff4","--ui-tab-accent":"#a78bfa","--ui-connection-bg":"#14171d","--ui-connection-text":"#6b7280","--ui-tree-bg":"#191d24","--ui-tree-border":"#232833","--ui-term-col-bg":"#0f1115","--ui-fab-bg":"#1f242d","--ui-fab-border":"#2a3040","--ui-muted-surface":"#191d24","--ui-muted-border":"#2a3040","--ui-muted-text":"#aab2bf","--ui-panel-input-bg":"#14171d","--ui-panel-input-text":"#eceff4","--ui-panel-input-border":"#2a3040","--ui-drawer-tab-text":"#6b7280","--ui-drawer-tab-active":"#eceff4","--ui-history-item-text":"#d7dce4","--ui-history-meta":"#6b7280","--ui-success":"#4ade80","--ui-error":"#f87171"},termHostBg:"#14171d",keybar:{bg:"#14171d",border:"#232833",keyBg:"#191d24",keyBorder:"#2a3040",keyText:"#aab2bf",accent:"#a78bfa",accentText:"#0f1115",drag:"#4b4470"},xterm:{background:"#14171d",foreground:"#eceff4",cursor:"#a78bfa",selectionBackground:"#3b3654",black:"#191d24",red:"#f87171",green:"#4ade80",yellow:"#fbbf24",blue:"#60a5fa",magenta:"#c084fc",cyan:"#67e8f9",white:"#eceff4",brightBlack:"#6b7280",brightWhite:"#ffffff"}}],v="pearl",m=Object.fromEntries(h.map(e=>[e.id,e])),g={dark:"noir",black:"noir",gray:"noir",blue:"noir",red:"noir",yellow:"noir",green:"noir",white:"pearl"};function x(e){if(e&&e in m)return m[e];let t=e?g[e]:void 0;return t?m[t]:m[v]}function w(e){var t;let{username:n,themeId:i,onThemeChange:a,accent:l,accentText:c}=e,[s,d]=(0,o.useState)(!1),u=(0,o.useRef)(null),f=(0,o.useRef)(null),p=(0,o.useRef)(null),[v,m]=(0,o.useState)(null),[g,x]=(0,o.useState)(null);(0,o.useEffect)(()=>{var e,t;x(null!==(t=null===(e=u.current)||void 0===e?void 0:e.closest(".web-root"))&&void 0!==t?t:document.body)},[]);let w=(null!==(t=n.trim()[0])&&void 0!==t?t:"?").toUpperCase(),y=()=>{let e=f.current;if(!e)return;let t=e.getBoundingClientRect(),n=Math.max(8,Math.min(window.innerWidth-176-8,t.right-176));m({top:t.bottom+6,left:n})};return(0,o.useLayoutEffect)(()=>{if(!s){m(null);return}return y(),window.addEventListener("resize",y),window.addEventListener("scroll",y,!0),()=>{window.removeEventListener("resize",y),window.removeEventListener("scroll",y,!0)}},[s]),(0,o.useEffect)(()=>{if(!s)return;let e=e=>{var t,n;let r=e.target;(null===(t=u.current)||void 0===t||!t.contains(r))&&(null!==(n=p.current)&&void 0!==n&&n.contains(r)||d(!1))},t=e=>{"Escape"===e.key&&d(!1)},n=window.setTimeout(()=>{window.addEventListener("pointerdown",e,!0)},0);return window.addEventListener("keydown",t),()=>{window.clearTimeout(n),window.removeEventListener("pointerdown",e,!0),window.removeEventListener("keydown",t)}},[s]),(0,r.jsxs)("div",{ref:u,className:"theme-picker",children:[(0,r.jsx)("button",{ref:f,type:"button",className:"theme-avatar","aria-label":"换肤(".concat(n,")"),title:n,"aria-expanded":s,onPointerDown:e=>e.stopPropagation(),onClick:e=>{e.preventDefault(),e.stopPropagation(),d(e=>!e)},style:{border:"1px solid ".concat(l),background:l,color:c},children:w}),s&&v&&g&&(0,b.createPortal)((0,r.jsxs)("div",{ref:p,className:"theme-popover",role:"dialog","aria-label":"选择皮肤",style:{position:"fixed",top:v.top,left:v.left,zIndex:200,width:176,padding:8,borderRadius:10,border:"1px solid var(--ui-tabbar-border, #282b36)",background:"var(--ui-tab-active-bg, #262b38)",boxShadow:"0 10px 28px rgba(0,0,0,.45)"},children:[(0,r.jsx)("div",{style:{fontSize:10,color:"var(--ui-connection-text, #777b8c)",margin:"2px 4px 6px",letterSpacing:.5},children:"皮肤"}),(0,r.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:2},children:h.map(e=>{let t=e.id===i;return(0,r.jsxs)("button",{type:"button",className:"theme-popover-item","aria-label":e.label,"aria-pressed":t,onPointerDown:e=>e.stopPropagation(),onClick:()=>{a(e.id),d(!1)},style:{background:t?"color-mix(in srgb, var(--ui-tab-accent, #7aa2f7) 14%, transparent)":"transparent"},children:[(0,r.jsx)("span",{style:{width:18,height:18,borderRadius:5,flexShrink:0,background:"linear-gradient(135deg, ".concat(e.preview[0]," 55%, ").concat(e.preview[1]," 55%)"),boxShadow:"inset 0 0 0 1px rgba(128,128,160,.25)"}}),(0,r.jsx)("span",{style:{flex:1,textAlign:"left",fontSize:12,fontWeight:t?600:400,color:t?"var(--ui-tab-active-text, #edf0f7)":"var(--ui-tab-text, #8f93a4)"},children:e.label}),t&&(0,r.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"var(--ui-tab-accent, #7aa2f7)",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:(0,r.jsx)("path",{d:"m5 12 4 4L19 6"})})]},e.id)})})]}),g)]})}var y=n(9532);let k=a()(()=>Promise.all([n.e(118),n.e(658),n.e(982)]).then(n.bind(n,3366)),{loadableGenerated:{webpack:()=>[3366]},ssr:!1}),j=a()(()=>n.e(604).then(n.bind(n,3604)),{loadableGenerated:{webpack:()=>[3604]},ssr:!1}),S=a()(()=>n.e(945).then(n.bind(n,1945)),{loadableGenerated:{webpack:()=>[1945]},ssr:!1});function E(){return(0,r.jsx)(u,{children:e=>(0,r.jsx)(T,{auth:e})})}let C={id:"webapp-agent",title:"智能助手",kind:"webapp"};function T(e){var t,n,i,a;let{auth:u}=e,{state:f,epoch:b,rpc:h,onEvent:m,onTerminalData:g,onTerminalReset:E,sendTerminalInput:T}=function(e,t,n){let[r,i]=(0,o.useState)({connected:!1,error:null}),[a,l]=(0,o.useState)(0),c=(0,o.useRef)(null),s=(0,o.useRef)(0),d=(0,o.useRef)(new Map),u=(0,o.useRef)([]),f=(0,o.useRef)(0),p=(0,o.useRef)(new Map),b=(0,o.useRef)(new Map),h=(0,o.useRef)(new Map),v=(0,o.useRef)(1e3),m=(0,o.useRef)(!1),g=(0,o.useRef)(null),x=(0,o.useRef)(e),w=(0,o.useRef)(t),y=(0,o.useRef)(n);x.current=e,w.current=t,y.current=n;let k=(0,o.useCallback)((e,t)=>{let n=p.current.get(e);return n||p.current.set(e,n=new Set),n.add(t),()=>n.delete(t)},[]),j=(0,o.useCallback)((e,t)=>{let n=b.current.get(e);return n||b.current.set(e,n=new Set),n.add(t),()=>n.delete(t)},[]),S=(0,o.useCallback)((e,t)=>{let n=h.current.get(e);return n||h.current.set(e,n=new Set),n.add(t),()=>n.delete(t)},[]),E=(0,o.useCallback)((e,t)=>{let n=c.current;if(!n||n.readyState!==WebSocket.OPEN)return!1;let r=new TextEncoder().encode(t),i=new Uint8Array(6+r.byteLength),a=new DataView(i.buffer);return i[0]=1,i[1]=1,a.setUint32(2,e),i.set(r,6),n.send(i),!0},[]),C=(0,o.useCallback)(e=>{let t=c.current;(null==t?void 0:t.readyState)===WebSocket.OPEN?t.send(e):u.current.push(e)},[]),T=(0,o.useCallback)(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:15e3;return new Promise((r,i)=>{let a=++f.current,o=setTimeout(()=>{d.current.delete(a),i(Error("".concat(e," timeout")))},n);d.current.set(a,{resolve:r,reject:i,timer:o}),C(JSON.stringify({type:e,_req:a,...t}))})},[C]),L=(0,o.useCallback)(async()=>{let e,t;m.current=!1;let n=++s.current;g.current&&(clearInterval(g.current),g.current=null);let r=c.current;if(r){r.onopen=r.onmessage=r.onerror=r.onclose=null;try{r.close()}catch(e){}}try{e=await w.current()}catch(e){n===s.current&&y.current();return}if(n===s.current&&!m.current){try{t=new WebSocket("".concat("".concat("https:"===location.protocol?"wss:":"ws:","//").concat(location.host,"/ws"),"?nonce=").concat(encodeURIComponent(e)))}catch(e){i({connected:!1,error:String(e)});return}t.binaryType="arraybuffer",c.current=t,t.onopen=()=>{if(n!==s.current||c.current!==t)return;for(let e of(v.current=1e3,i({connected:!0,error:null}),l(e=>e+1),u.current.splice(0)))t.send(e);let e=Date.now();g.current=setInterval(()=>{if(c.current!==t||t.readyState!==WebSocket.OPEN){clearInterval(g.current),g.current=null;return}if(Date.now()-e>25e3){try{t.close()}catch(e){}return}try{t.send(JSON.stringify({type:"ping"}))}catch(e){}},1e4);let r=()=>{e=Date.now()};t.addEventListener("message",r),t.addEventListener("close",()=>t.removeEventListener("message",r),{once:!0})},t.onmessage=e=>{var r,i,a;let o;if(n===s.current&&c.current===t){if("string"!=typeof e.data){let t=new Uint8Array(e.data);if(t.byteLength>=6&&1===t[0]&&2===t[1]){let e=new DataView(t.buffer,t.byteOffset,t.byteLength).getUint32(2);null===(i=b.current.get(e))||void 0===i||i.forEach(e=>e(t.subarray(6)))}else if(t.byteLength>=6&&1===t[0]&&3===t[1]){let e=new DataView(t.buffer,t.byteOffset,t.byteLength).getUint32(2);null===(a=h.current.get(e))||void 0===a||a.forEach(e=>e())}else x.current(t);return}try{o=JSON.parse(e.data)}catch(e){return}if("error"===o.type&&null!=o.id){let e=d.current.get(o.id);if(e){d.current.delete(o.id),clearTimeout(e.timer);let t=Object.assign(Error(o.error||"gateway error"),{code:o.code});e.reject(t)}return}if(null!=o.id&&"string"==typeof o.type&&o.type.endsWith(":result")){let e=d.current.get(o.id);e&&(d.current.delete(o.id),clearTimeout(e.timer),e.resolve(o));return}null===(r=p.current.get(o.type))||void 0===r||r.forEach(e=>e(o))}},t.onclose=e=>{if(n!==s.current||c.current!==t)return;if(g.current&&(clearInterval(g.current),g.current=null),c.current=null,i({connected:!1,error:null}),4001===e.code||4003===e.code){y.current();return}if(m.current)return;let r=v.current;v.current=Math.min(2*r,8e3),setTimeout(()=>{m.current||n!==s.current||L()},r)},t.onerror=()=>{}}},[]);return(0,o.useEffect)(()=>(L(),()=>{m.current=!0,s.current++,g.current&&(clearInterval(g.current),g.current=null);let e=c.current;if(c.current=null,e){e.onopen=e.onmessage=e.onerror=e.onclose=null;try{e.close()}catch(e){}}}),[L]),{state:r,epoch:a,rpc:T,onEvent:k,onTerminalData:j,onTerminalReset:S,sendTerminalInput:E,reconnect:L}}(()=>{},u.getWsNonce,u.refresh),[P,R]=(0,o.useState)([{...C}]),[z,N]=(0,o.useState)(C.id),[O,D]=(0,o.useState)({}),I=(0,o.useRef)(!1),W=(0,o.useRef)(null),F=(0,o.useRef)(new Map),B=(0,o.useCallback)((e,t)=>(F.current.set(e,t),()=>F.current.delete(e)),[]),H=(0,o.useCallback)(e=>{if(!z)return;let t=F.current.get(z);t?t(e):h("term:input",{id:z,data:"\x15".concat(e)}).catch(()=>{}),Y(!1)},[z,h]),[_,X]=(0,o.useState)(!1),[A,U]=(0,o.useState)({}),[V,q]=(0,o.useState)(null),[Z,Y]=(0,o.useState)(!1),[J,G]=(0,o.useState)("files"),[K,$]=(0,o.useState)(null),[Q,ee]=(0,o.useState)(!0),[et,en]=(0,o.useState)({xRatio:.94,yRatio:.65,anchor:"right"}),[er,ei]=(0,o.useState)(!1),[ea,eo]=(0,o.useState)([]),[el,ec]=(0,o.useState)(v),[es,ed]=(0,o.useState)(!1),eu=x(el),ef=(0,o.useRef)(null),ep=(0,o.useRef)(null),[eb,eh]=(0,o.useState)(0),[ev,em]=(0,o.useState)(!1),eg=(0,o.useRef)(null),ex=(0,o.useRef)(null),ew=(0,o.useRef)(null),ey=(0,o.useCallback)(e=>{var t,n;null===(n=ew.current)||void 0===n||null===(t=n.contentWindow)||void 0===t||t.postMessage({type:"agent-web-shell:skin:v1",skin:e},window.location.origin)},[]);(0,o.useEffect)(()=>{ey(el)},[el,ey]),(0,o.useEffect)(()=>{let e=e=>{var t,n,r,i,a;let o=(r=window.location.origin,i=null!==(n=null===(t=ew.current)||void 0===t?void 0:t.contentWindow)&&void 0!==n?n:null,e.origin!==r||e.source!==i?null:(a=e.data)&&"object"==typeof a?"agent-webapp:project-request:v1"!==a.type||!Number.isSafeInteger(a.id)||1>Number(a.id)||"string"!=typeof a.method||!d.has(a.method)||!a.payload||"object"!=typeof a.payload||Array.isArray(a.payload)?null:a:null);o&&h(o.method,o.payload).then(e=>{var t,n;null===(n=ew.current)||void 0===n||null===(t=n.contentWindow)||void 0===t||t.postMessage({type:s,id:o.id,ok:!0,result:e},window.location.origin)},e=>{var t,n;null===(n=ew.current)||void 0===n||null===(t=n.contentWindow)||void 0===t||t.postMessage({type:s,id:o.id,ok:!1,error:e.message||"项目操作失败",code:e.code},window.location.origin)})};return window.addEventListener("message",e),()=>window.removeEventListener("message",e)},[h]);let ek=(0,o.useRef)(0),ej=z&&null!==(i=O[z])&&void 0!==i?i:null;(0,o.useEffect)(()=>{let e=window.visualViewport,t=null,n="",r=()=>{let i=(0,y.x)(e,{height:window.innerHeight,width:window.innerWidth}),a="".concat(i.width,"x").concat(i.height,"+").concat(i.top,"+").concat(i.left);a!==n&&(n=a,document.documentElement.style.setProperty("--vv-height","".concat(i.height,"px")),document.documentElement.style.setProperty("--vv-width","".concat(i.width,"px")),document.documentElement.style.setProperty("--vv-top","".concat(i.top,"px")),document.documentElement.style.setProperty("--vv-left","".concat(i.left,"px")),t&&window.clearTimeout(t),t=window.setTimeout(r,250))};return r(),null==e||e.addEventListener("resize",r),null==e||e.addEventListener("scroll",r),window.addEventListener("orientationchange",r),window.addEventListener("resize",r),document.addEventListener("visibilitychange",r),window.addEventListener("pageshow",r),()=>{null==e||e.removeEventListener("resize",r),null==e||e.removeEventListener("scroll",r),window.removeEventListener("orientationchange",r),window.removeEventListener("resize",r),document.removeEventListener("visibilitychange",r),window.removeEventListener("pageshow",r),t&&window.clearTimeout(t),document.documentElement.style.removeProperty("--vv-height"),document.documentElement.style.removeProperty("--vv-width"),document.documentElement.style.removeProperty("--vv-top"),document.documentElement.style.removeProperty("--vv-left")}},[]),(0,o.useEffect)(()=>{fetch("/api/web-console/preferences",{credentials:"same-origin"}).then(e=>e.json()).then(e=>{var t,n,r,i;(null===(t=e.preferences)||void 0===t?void 0:t.fileButtonPosition)&&en(e.preferences.fileButtonPosition),"boolean"==typeof(null===(n=e.preferences)||void 0===n?void 0:n.keybarHidden)&&ei(e.preferences.keybarHidden),Array.isArray(null===(r=e.preferences)||void 0===r?void 0:r.keyOrder)&&eo(e.preferences.keyOrder),(null===(i=e.preferences)||void 0===i?void 0:i.theme)&&ec(x(e.preferences.theme).id)}).catch(()=>{}).finally(()=>ed(!0)),fetch("/api/web-console/device-state",{credentials:"same-origin"}).then(e=>e.json()).then(e=>{let t=e.deviceState;(null==t?void 0:t.drawerTab)&&G(t.drawerTab),(null==t?void 0:t.activeTerminalId)&&(W.current=t.activeTerminalId),"boolean"==typeof(null==t?void 0:t.drawerOpen)&&Y(t.drawerOpen),(null==t?void 0:t.fileTreeRoot)&&$(t.fileTreeRoot),"boolean"==typeof(null==t?void 0:t.fileTreeFollowMode)&&ee(t.fileTreeFollowMode),(null==t?void 0:t.selectedFile)&&q(t.selectedFile),(null==t?void 0:t.terminalScroll)&&"object"==typeof t.terminalScroll&&U(t.terminalScroll)}).catch(()=>{}).finally(()=>X(!0))},[]);let eS=(0,o.useCallback)(e=>{fetch("/api/web-console/preferences",{method:"PATCH",credentials:"same-origin",headers:{"content-type":"application/json","x-csrf-token":u.csrfToken},body:JSON.stringify(e)}).catch(()=>{})},[u.csrfToken]);(0,o.useEffect)(()=>{if(!es)return;let e=setTimeout(()=>eS({fileButtonPosition:et,keybarHidden:er,keyOrder:ea,theme:el}),500);return()=>clearTimeout(e)},[et,er,ea,el,es,eS]);let eE=(0,o.useCallback)(e=>{u.csrfToken&&fetch("/api/web-console/device-state",{method:"PUT",credentials:"same-origin",headers:{"content-type":"application/json","x-csrf-token":u.csrfToken},body:JSON.stringify(e)}).catch(()=>{})},[u.csrfToken]);(0,o.useEffect)(()=>{if(!u.csrfToken)return;let e=setTimeout(()=>eE({activeTerminalId:z,drawerOpen:Z,drawerTab:J,fileTreeRoot:K,fileTreeFollowMode:Q,selectedFile:V,terminalScroll:A}),500);return()=>clearTimeout(e)},[z,Z,J,K,Q,V,A,u.csrfToken,eE]),(0,o.useEffect)(()=>{if(!u.csrfToken)return;let e=()=>eE({activeTerminalId:z,drawerOpen:Z,drawerTab:J,fileTreeRoot:K,fileTreeFollowMode:Q,selectedFile:V,terminalScroll:A});return window.addEventListener("pagehide",e),()=>window.removeEventListener("pagehide",e)},[z,Z,J,K,Q,V,A,u.csrfToken,eE]);let eC=(0,o.useCallback)(e=>{q(e),Y(!1)},[]),eT=(0,o.useCallback)(()=>{let e=null;R(t=>t.length>=8?t:[...t,{id:e="t-web-".concat(Date.now().toString(36),"-").concat(Math.random().toString(36).slice(2,8)),title:"Terminal ".concat(t.length+1)}]),e&&N(e)},[]);(0,o.useEffect)(()=>{f.connected&&_&&!I.current&&(I.current=!0,h("term:list").then(e=>{let t=e.tabs.filter(e=>"active"===e.status||"detached"===e.status).map(e=>{let{id:t,title:n}=e;return{id:t,title:n}});R([C,...t]),N(e=>{let n=W.current||e||C.id;return n===C.id?C.id:t.some(e=>e.id===n)?n:C.id})}).catch(()=>{}))},[f.connected,_,h]);let eL=e=>{e!==C.id&&window.confirm("关闭页签会终止该终端进程,确认关闭?")&&(R(t=>{var n,r;let i=t.filter(t=>t.id!==e);return z===e&&N(null!==(r=null===(n=i[0])||void 0===n?void 0:n.id)&&void 0!==r?r:null),i}),h("term:kill",{id:e}).catch(()=>{}))};(0,o.useEffect)(()=>{let e=m("term:exited",e=>{let t=null==e?void 0:e.id;t&&(R(e=>{let n=e.filter(e=>e.id!==t);return N(e=>{var r,i;return e===t?null!==(i=null===(r=n[0])||void 0===r?void 0:r.id)&&void 0!==i?i:null:e}),n}),U(e=>{if(!(t in e))return e;let n={...e};return delete n[t],n}))});return()=>{e()}},[m]);let eM=(0,o.useCallback)(e=>{if(!z||P.length<2)return;let t=(P.findIndex(e=>e.id===z)+e+P.length)%P.length;N(P[t].id)},[z,P]),eP=Math.max(0,P.findIndex(e=>e.id===z)),eR=(null===(t=P[eP])||void 0===t?void 0:t.kind)==="webapp"?eu.cssVars["--ui-term-col-bg"]:eu.termHostBg,ez={...M.root,...eu.cssVars,"--ui-active-content-bg":eR,"--ui-terminal-bg":eu.termHostBg,background:"var(--ui-root-bg)",color:"var(--ui-text)"},eN=(0,o.useCallback)(()=>{ep.current=null,eh(0),em(!1)},[]),eO=(0,o.useCallback)(e=>{Math.abs(e)>=64&&P.length>1&&eM(e<0?1:-1),eN()},[P.length,eM,eN]),eD=e=>e instanceof Element&&!!e.closest(".terminal-screen");(0,o.useEffect)(()=>{let e=e=>{var t,n,r,i,a;if(z!==C.id)return;let o=(r=window.location.origin,i=null!==(n=null===(t=ew.current)||void 0===t?void 0:t.contentWindow)&&void 0!==n?n:null,e.origin!==r||e.source!==i?null:(a=e.data)&&"object"==typeof a&&"agent-webapp:tab-swipe:v1"===a.type&&("move"===a.phase||"end"===a.phase||"cancel"===a.phase)&&"number"==typeof a.deltaX&&Number.isFinite(a.deltaX)?a:null);o&&("move"===o.phase?(em(!0),eh(o.deltaX)):"end"===o.phase?eO(o.deltaX):eN())};return window.addEventListener("message",e),()=>window.removeEventListener("message",e)},[z,eO,eN]);let eI=(0,o.useCallback)(function(){var e;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"smooth",n=ex.current;if(!n||!z)return;let r=n.querySelector('[data-terminal-id="'.concat(z,'"]'));if(!r)return;if(r===n.querySelector("[data-terminal-id]")){(0,y.i)(n);return}let i=n.querySelector(".terminal-connection"),a=null!==(e=null==i?void 0:i.offsetWidth)&&void 0!==e?e:0,o=r.offsetLeft,l=o+r.offsetWidth,c=n.scrollLeft,s=c+n.clientWidth-a;o<c+8?n.scrollTo({left:Math.max(0,o-8),behavior:t}):l>s-8&&n.scrollTo({left:l-n.clientWidth+a+8,behavior:t})},[z]);return(0,o.useLayoutEffect)(()=>{if(!z)return;let e=P.length>ek.current;ek.current=P.length,eI(e?"auto":"smooth")},[z,P.length,eI]),(0,o.useEffect)(()=>{let e=()=>requestAnimationFrame(()=>eI("auto"));return window.addEventListener("pageshow",e),()=>window.removeEventListener("pageshow",e)},[eI]),(0,r.jsxs)("div",{className:"web-root",style:ez,children:[(0,r.jsx)("style",{dangerouslySetInnerHTML:{__html:L}}),(0,r.jsxs)("div",{className:"terminal-tabs",ref:ex,children:[P.map(e=>(0,r.jsxs)("div",{"data-terminal-id":e.id,draggable:!0,className:"terminal-tab ".concat(e.id===z?"active":""),onDragStart:()=>{eg.current=e.id},onDragOver:e=>e.preventDefault(),onDrop:t=>{t.preventDefault();let n=eg.current;eg.current=null,n&&n!==e.id&&R(t=>{let r=t.findIndex(e=>e.id===n),i=t.findIndex(t=>t.id===e.id);if(r<0||i<0)return t;let a=[...t],[o]=a.splice(r,1);return a.splice(i,0,o),h("term:reorder",{ids:a.map(e=>e.id).filter(e=>e!==C.id)}).catch(()=>{}),a})},onClick:()=>N(e.id),onDoubleClick:()=>{var t;if("webapp"===e.kind)return;let n=null===(t=window.prompt("页签名称",e.title))||void 0===t?void 0:t.trim();n&&h("term:rename",{id:e.id,title:n}).then(()=>R(t=>t.map(t=>t.id===e.id?{...t,title:n}:t))).catch(()=>{})},children:[(0,r.jsx)("span",{children:e.title}),"webapp"!==e.kind&&(0,r.jsx)("button",{tabIndex:-1,onClick:t=>{t.stopPropagation(),eL(e.id)},children:"\xd7"})]},e.id)),(0,r.jsx)("button",{className:"terminal-add",disabled:P.length>=8,onClick:eT,children:"+"}),(0,r.jsxs)("div",{className:"terminal-connection",children:[(0,r.jsx)("span",{style:{width:8,height:8,borderRadius:99,background:f.connected?"var(--ui-success)":"var(--ui-error)"}}),(0,r.jsx)(w,{username:null!==(a=null===(n=u.user)||void 0===n?void 0:n.username)&&void 0!==a?a:"?",themeId:el,onThemeChange:ec,accent:eu.keybar.accent,accentText:eu.keybar.accentText})]})]}),(0,r.jsxs)("main",{className:"workspace ".concat(Z?"show-tree":""," ").concat(V?"has-preview":""),style:M.workspace,children:[(0,r.jsx)("section",{className:"term-col",style:M.termCol,onPointerDownCapture:e=>{"touch"===e.pointerType&&eD(e.target)&&(ep.current={x:e.clientX,y:e.clientY,axis:"pending"})},onPointerMoveCapture:e=>{let t=ep.current;if(!t||"touch"!==e.pointerType)return;let n=e.clientX-t.x,r=e.clientY-t.y;if("pending"===t.axis){if(8>=Math.max(Math.abs(n),Math.abs(r)))return;if(Math.abs(r)>=1.2*Math.abs(n)){ep.current=null;return}t.axis="horizontal",em(!0)}"horizontal"===t.axis&&(e.preventDefault(),eh(n))},onPointerUpCapture:e=>{let t=ep.current;if(!t||"touch"!==e.pointerType)return;let n=e.clientX-t.x;"horizontal"===t.axis&&Math.abs(n)>=64?eO(n):eN()},onPointerCancelCapture:eN,children:(0,r.jsx)("div",{className:"terminal-track",style:{transform:"translate3d(calc(".concat(-(100*eP),"% + ").concat(eb,"px),0,0)"),transition:ev?"none":"transform 260ms cubic-bezier(.22,.8,.32,1)"},children:P.map(e=>{var t;return(0,r.jsx)("div",{className:"terminal-slide",children:"webapp"===e.kind?(0,r.jsx)("iframe",{ref:ew,src:"/app/",title:e.title,onLoad:()=>ey(el),style:{width:"100%",height:"100%",border:"0",background:"var(--ui-term-col-bg, #101014)"}}):(0,r.jsx)(k,{terminalId:e.id,title:e.title,visible:e.id===z,state:f,rpc:h,onEvent:m,onTerminalData:g,onTerminalReset:E,sendTerminalInput:T,keyOrder:ea,keybarHidden:er,onKeyOrderChange:eo,onKeybarHiddenChange:ei,terminalTheme:eu,initialScrollLine:null!==(t=A[e.id])&&void 0!==t?t:null,onScrollLineChange:t=>U(n=>n[e.id]===t?n:{...n,[e.id]:t}),onRegisterFill:t=>B(e.id,t),onCwdChange:t=>t&&D(n=>({...n,[e.id]:t}))})},e.id)})})}),Z&&(0,r.jsx)("div",{className:"drawer-mask",onClick:()=>Y(!1)}),(0,r.jsxs)("aside",{className:"tree-col ".concat(Z?"tree-col-open":""),style:M.treeCol,children:[(0,r.jsxs)("div",{className:"tree-head",style:M.treeHead,children:[(0,r.jsx)("button",{className:"files"===J?"drawer-tab-active":"",onClick:()=>G("files"),children:"文件"}),(0,r.jsx)("button",{className:"history"===J?"drawer-tab-active":"",onClick:()=>G("history"),children:"历史"}),(0,r.jsx)("span",{className:"tree-cwd",style:M.treeCwd,children:null!=ej?ej:""}),(0,r.jsx)("button",{style:{...M.iconBtn,marginLeft:"auto",flexShrink:0},onClick:()=>Y(!1),"aria-label":"close drawer",children:(0,r.jsx)(l.Z,{size:15,"aria-hidden":"true"})})]}),"files"===J?(0,r.jsx)(j,{ready:b>0,followCwd:!0,cwd:ej,rpc:h,onEvent:m,onOpenFile:eC,selectedPath:V,initialRoot:K,initialFollow:Q,onTreeStateChange:(e,t)=>{$(e),ee(t)}}):(0,r.jsx)(p,{csrfToken:u.csrfToken,terminalId:z,onFill:H}),(0,r.jsxs)("div",{style:M.treeFoot,children:[(0,r.jsx)("span",{style:M.treeFootDot}),(0,r.jsx)("span",{children:"实时同步"})]})]}),V&&(0,r.jsx)("section",{className:"preview-col",style:M.previewCol,children:(0,r.jsx)(S,{path:V,rpc:h,onClose:()=>q(null)})})]}),!Z&&(0,r.jsx)("button",{className:"fab-files",style:{...M.fabFiles,left:"".concat(100*et.xRatio,"%"),top:"".concat(100*et.yRatio,"%"),right:"auto",bottom:"auto",transform:"translate(-50%,-50%)"},onPointerDown:e=>{ef.current={moved:!1,startX:e.clientX,startY:e.clientY},e.currentTarget.setPointerCapture(e.pointerId)},onPointerMove:e=>{let t=ef.current;if(!t||!t.moved&&4>Math.hypot(e.clientX-t.startX,e.clientY-t.startY))return;t.moved=!0;let n=window.visualViewport;en({xRatio:Math.max(.05,Math.min(.95,e.clientX/((null==n?void 0:n.width)||innerWidth))),yRatio:Math.max(.08,Math.min(.92,(e.clientY-((null==n?void 0:n.offsetTop)||0))/((null==n?void 0:n.height)||innerHeight))),anchor:e.clientX<((null==n?void 0:n.width)||innerWidth)/2?"left":"right"})},onPointerUp:e=>{var t;e.currentTarget.releasePointerCapture(e.pointerId),(null===(t=ef.current)||void 0===t?void 0:t.moved)||Y(!0),ef.current=null},"aria-label":"files",children:(0,r.jsx)(c,{size:20,"aria-hidden":"true"})})]})}let L='\n html, body { width:100%; height:100%; margin:0; overflow:hidden; background:var(--ui-root-bg, #0b0b10); overscroll-behavior:none; color:var(--ui-text, #e8e8ee); }\n * { -webkit-tap-highlight-color: transparent; }\n .terminal-tabs { display:flex; align-items:end; gap:4px; min-height:38px; padding:0 8px; overflow-x:auto; overflow-y:hidden; touch-action:pan-x; overscroll-behavior-x:contain; -webkit-overflow-scrolling:touch; scroll-behavior:smooth; background:var(--ui-tabbar-bg, #12141b); border-bottom:0; scrollbar-width:none; flex-shrink:0; }\n .terminal-tab { display:flex; align-items:center; gap:7px; min-width:74px; max-width:130px; height:32px; padding:0 7px 0 10px; border-radius:7px 7px 0 0; background:var(--ui-tab-bg, #1b1e28); color:var(--ui-tab-text, #8f93a4); font-size:11px; cursor:pointer; box-sizing:border-box; transition:color .2s ease,box-shadow .2s ease; }\n .terminal-tab.active { color:var(--ui-tab-active-text, #edf0f7); background:var(--ui-active-content-bg, var(--ui-tab-active-bg, #262b38)); box-shadow:inset 0 2px var(--ui-tab-accent, #7aa2f7); }\n .terminal-tab span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; flex:1; }\n .terminal-tab button { width:18px; height:18px; border:0; border-radius:4px; background:transparent; color:var(--ui-tab-text, #707586); padding:0; }\n .terminal-add { min-width:30px; height:28px; margin-bottom:2px; border:1px solid var(--ui-tabbar-border, #303442); border-radius:6px; background:var(--ui-tab-bg, #1b1e28); color:var(--ui-tab-text, #9da2b2); }\n .terminal-connection { position:sticky; right:-8px; margin-left:auto; align-self:stretch; display:flex; align-items:center; gap:7px; padding:0 9px; background:var(--ui-connection-bg, #12141b); color:var(--ui-connection-text, #777b8c); font-size:10.5px; flex-shrink:0; z-index:5; box-shadow:-8px 0 12px color-mix(in srgb, var(--ui-connection-bg, #12141b) 90%, transparent); }\n .theme-picker { position:relative; flex-shrink:0; z-index:6; }\n .theme-avatar { position:relative; display:flex; align-items:center; justify-content:center; width:22px; height:22px; padding:0; border-radius:99px; font-size:10px; font-weight:700; cursor:pointer; flex-shrink:0; touch-action:manipulation; -webkit-tap-highlight-color:transparent; transition:transform .12s ease, filter .12s ease; }\n /* Hit-area padding: the 22px circle is far below the ~44px minimum touch\n target, so an invisible ::after extends the tap region. Keep the visual\n size unchanged — only the hit-test area grows. */\n .theme-avatar::after { content:""; position:absolute; inset:-6px; border-radius:99px; }\n .theme-avatar:active { transform:scale(.9); filter:brightness(1.15); }\n .theme-popover-item { display:flex; align-items:center; gap:8px; padding:7px 8px; border:none; border-radius:8px; cursor:pointer; touch-action:manipulation; -webkit-tap-highlight-color:transparent; }\n .theme-popover-item:active { background:color-mix(in srgb, var(--ui-tab-accent, #7aa2f7) 22%, transparent); }\n /* Touch devices: grow the avatar hit area to ~44px and the popover rows to\n ~40px tall. The tab bar must grow in step — it clips overflow-y, so an\n expanded hit area taller than the bar would get cut off. */\n @media (pointer: coarse) {\n .terminal-tabs { min-height:44px; }\n .theme-avatar::after { inset:-11px; }\n .theme-popover-item { padding-top:11px; padding-bottom:11px; }\n }\n @media (prefers-reduced-motion: reduce) { .theme-avatar { transition:none; } }\n .terminal-track { display:flex; width:100%; height:100%; will-change:transform; }\n .terminal-slide { flex:0 0 100%; width:100%; height:100%; min-width:0; }\n .terminal-screen { display:flex; flex-direction:column; min-height:0; overflow:hidden; }\n .terminal-screen .xterm { flex:1; height:100%; background:var(--ui-terminal-bg, #101014); }\n .terminal-screen .xterm .xterm-viewport { background-color:var(--ui-terminal-bg, #101014); }\n .terminal-screen .xterm-scrollable-element { touch-action:pan-y; -webkit-overflow-scrolling:touch; }\n @media (prefers-reduced-motion: reduce) { .terminal-track,.terminal-tab { transition:none !important; } }\n .web-root {\n position: fixed;\n top: var(--vv-top, 0px);\n left: var(--vv-left, 0px);\n width: var(--vv-width, 100vw);\n height: var(--vv-height, 100dvh) !important;\n }\n .tree-scroll {\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n overflow-x: hidden;\n overscroll-behavior: contain;\n touch-action: pan-y;\n -webkit-overflow-scrolling: touch;\n padding: 6px;\n }\n .tree-location {\n position: sticky;\n top: -6px;\n z-index: 3;\n display: flex;\n align-items: center;\n gap: 5px;\n margin: -1px -1px 0;\n padding: 7px 7px 5px;\n background: color-mix(in srgb, var(--ui-tree-bg, #121218) 98%, transparent);\n }\n .tree-location input {\n flex: 1;\n min-width: 0;\n height: 28px;\n border: 1px solid var(--ui-panel-input-border, #30303b);\n border-radius: 6px;\n outline: none;\n padding: 0 8px;\n background: var(--ui-panel-input-bg, #0f0f15);\n color: var(--ui-panel-input-text, #d8d8df);\n font-family: "SF Mono", Menlo, monospace;\n font-size: 10.5px;\n }\n .tree-location input:focus { border-color: var(--ui-tab-accent, #536b9e); }\n .tree-location button {\n width: 28px;\n height: 28px;\n flex-shrink: 0;\n border: 1px solid var(--ui-panel-input-border, #30303a);\n border-radius: 6px;\n background: var(--ui-tab-bg, #202029);\n color: var(--ui-tab-text, #aaaab8);\n font-size: 12px;\n }\n .tree-location button[data-active="1"] {\n border-color: var(--ui-success, #4f6f58);\n color: var(--ui-success, #9ece6a);\n background: color-mix(in srgb, var(--ui-success, #9ece6a) 12%, var(--ui-tree-bg, #18221b));\n }\n .tree-head button { height:26px; padding:0 10px; border:0; border-radius:6px 6px 0 0; background:transparent; color:var(--ui-drawer-tab-text, #74798a); font-size:11px; }\n .tree-head button.drawer-tab-active { color:var(--ui-drawer-tab-active, #e4e7ef); box-shadow:inset 0 -2px var(--ui-tab-accent, #7aa2f7); }\n .history-panel { flex:1; min-height:0; overflow:auto; padding:7px; }\n .history-search { position:sticky; top:0; display:flex; gap:5px; padding:5px; background:var(--ui-tree-bg, #121218); z-index:2; }\n .history-search input { flex:1; min-width:0; height:28px; border:1px solid var(--ui-panel-input-border, #30303a); border-radius:6px; padding:0 8px; background:var(--ui-panel-input-bg, #0f0f15); color:var(--ui-panel-input-text, #ddd); font-size:11px; }\n .history-search button,.history-item button { border:1px solid var(--ui-panel-input-border, #30303a); border-radius:5px; background:var(--ui-tab-bg, #202029); color:var(--ui-connection-text, #999dab); font-size:10px; }\n .history-item { padding:9px 7px; border-bottom:1px solid var(--ui-tabbar-border, #242731); cursor:pointer; border-radius:6px; }\n .history-item:hover { background:color-mix(in srgb, var(--ui-tab-active-bg, #181b24) 80%, transparent); }\n .history-item:active { background:var(--ui-tab-active-bg, #1f2430); }\n .history-item-disabled { cursor:not-allowed; opacity:.55; }\n .history-item-disabled:hover { background:transparent; }\n .history-item:focus-visible { outline:1px solid var(--ui-tab-accent, #536b9e); outline-offset:-1px; }\n .history-item code { display:block; color:var(--ui-history-item-text, #d3d6df); font-size:11px; overflow-wrap:anywhere; }\n .history-item small { display:block; margin:4px 0 7px; color:var(--ui-history-meta, #656a79); font-size:9.5px; }\n .history-item-actions { display:flex; gap:5px; }\n .history-empty { padding:18px; color:#5d6270; font-size:11px; text-align:center; }\n .keybar-scroll { scrollbar-width:none; }\n .keybar-scroll::-webkit-scrollbar { display:none; }\n .tree-filter {\n position: sticky;\n top: 34px;\n z-index: 2;\n display: flex;\n align-items: center;\n gap: 6px;\n margin: -1px -1px 7px;\n padding: 7px 8px;\n border-bottom: 1px solid var(--ui-tabbar-border, #25252e);\n background: color-mix(in srgb, var(--ui-tree-bg, #121218) 97%, transparent);\n color: var(--ui-history-meta, #666678);\n backdrop-filter: blur(8px);\n }\n .tree-filter input {\n flex: 1;\n min-width: 0;\n height: 27px;\n border: 1px solid var(--ui-panel-input-border, #30303a);\n border-radius: 6px;\n outline: none;\n padding: 0 8px;\n background: var(--ui-panel-input-bg, #0f0f15);\n color: var(--ui-panel-input-text, #d8d8df);\n font-size: 11px;\n }\n .tree-filter input:focus { border-color: var(--ui-tab-accent, #536b9e); }\n .tree-filter button {\n width: 25px;\n height: 25px;\n padding: 0;\n border: 0;\n border-radius: 5px;\n background: var(--ui-tab-bg, #24242d);\n color: var(--ui-connection-text, #9999a6);\n font-size: 10px;\n }\n .tree-row {\n display: flex;\n align-items: center;\n gap: 6px;\n min-height: 31px;\n padding-right: 7px;\n border-radius: 6px;\n font-size: 12px;\n white-space: nowrap;\n cursor: pointer;\n }\n .tree-disclosure {\n width: 13px;\n min-width: 13px;\n height: 16px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: var(--ui-history-meta, #777785);\n }\n .tree-entry-icon {\n width: 17px;\n min-width: 17px;\n height: 17px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n .tree-folder-icon { color: var(--ui-tab-accent, #7aa2f7); }\n .tree-entry-name { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }\n .tree-spin { animation:tree-spin .8s linear infinite; }\n @keyframes tree-spin { to { transform:rotate(360deg); } }\n @media (prefers-reduced-motion: reduce) { .tree-spin { animation:none; } }\n .tree-row[data-selected="1"] { background: color-mix(in srgb, var(--ui-tab-accent, #26304a) 24%, transparent); }\n .tree-size { margin-left: auto; color: var(--ui-history-meta, #555); font-size: 10px; flex-shrink: 0; }\n\n /* phone-first: terminal is THE screen */\n .workspace { display: grid !important; grid-template-columns: 1fr; }\n .tree-col {\n display: flex;\n position: fixed;\n top: var(--vv-top, 0px);\n height: var(--vv-height, 100dvh);\n right: calc(100vw - var(--vv-left, 0px) - var(--vv-width, 100vw));\n width: min(82vw, 320px); z-index: 40;\n transform: translateX(102%); transition: transform .22s ease;\n box-shadow: -12px 0 32px rgba(0,0,0,.5);\n }\n .tree-col-open { transform: translateX(0); }\n .drawer-mask { position:fixed; top:var(--vv-top, 0px); left:var(--vv-left, 0px); width:var(--vv-width, 100vw); height:var(--vv-height, 100dvh); background:rgba(0,0,0,.45); z-index:39; }\n .preview-col {\n position: fixed;\n top: var(--vv-top, 0px);\n left: var(--vv-left, 0px);\n width: var(--vv-width, 100vw);\n height: var(--vv-height, 100dvh);\n z-index: 50;\n background: var(--ui-term-col-bg, #101014);\n }\n .fab-files { display: grid; place-items: center; }\n .cwd-hint { max-width: 40vw; }\n\n @media (min-width: 900px) {\n .workspace.show-tree.has-preview { grid-template-columns: 46% 20% 34%; }\n .workspace.show-tree:not(.has-preview) { grid-template-columns: 80% 20%; }\n .workspace.has-preview:not(.show-tree) { grid-template-columns: 66% 34%; }\n /* desktop: the tree becomes a right column only while the drawer is open */\n .tree-col {\n position: static; top: auto; height: auto; width: auto; transform: none;\n box-shadow: none; border-left: 1px solid var(--ui-tree-border, #1e1e26);\n }\n .workspace:not(.show-tree) .tree-col { display: none; }\n .preview-col { position: relative; inset: auto; width: auto; height: auto; border-left: 1px solid var(--ui-tree-border, #1e1e26); }\n .drawer-mask { display: none; }\n }\n',M={root:{height:"100dvh",display:"flex",flexDirection:"column",fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", sans-serif',overflow:"hidden"},iconBtn:{minWidth:28,height:28,borderRadius:7,border:"1px solid var(--ui-tabbar-border, #303442)",background:"var(--ui-tab-bg, #202029)",color:"var(--ui-tab-text, #aaaab8)",fontSize:13},workspace:{flex:1,minHeight:0,display:"grid",position:"relative"},treeCol:{background:"var(--ui-tree-bg, #121218)",minHeight:0,flexDirection:"column"},treeHead:{display:"flex",alignItems:"center",gap:8,padding:"10px 12px 4px",fontSize:11,textTransform:"uppercase",letterSpacing:1,color:"#778",flexShrink:0},treeCwd:{fontSize:10,color:"#556",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:150,textTransform:"none",letterSpacing:0},treeFoot:{display:"flex",alignItems:"center",gap:7,minHeight:31,padding:"6px 11px calc(env(safe-area-inset-bottom) + 6px)",borderTop:"1px solid var(--ui-tabbar-border, #282832)",boxShadow:"0 -5px 16px rgba(0,0,0,.22)",background:"var(--ui-tab-bg, #15151c)",color:"var(--ui-connection-text, #777789)",fontSize:10.5,flexShrink:0},treeFootDot:{width:6,height:6,borderRadius:99,background:"var(--ui-success, #9ece6a)",boxShadow:"0 0 0 2px color-mix(in srgb, var(--ui-success, #9ece6a) 12%, transparent)",flexShrink:0},termCol:{minWidth:0,minHeight:0,display:"flex",flexDirection:"column",background:"var(--ui-term-col-bg, #101014)",gridColumn:1,overflow:"hidden"},previewCol:{minWidth:0,minHeight:0},fabFiles:{position:"absolute",right:14,bottom:"calc(env(safe-area-inset-bottom) + 64px)",width:44,height:44,borderRadius:99,border:"1px solid var(--ui-fab-border, #2c2c38)",background:"var(--ui-fab-bg, #1b1b26)",color:"var(--ui-text, #dde)",fontSize:18,zIndex:45,boxShadow:"0 4px 16px rgba(0,0,0,.45)"}}}},function(e){e.O(0,[37,183,744],function(){return e(e.s=6736)}),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- @import"https://fonts.googleapis.com/css2?family=Inter:wght@300..700&family=IBM+Plex+Mono:wght@400;500&display=swap";:root,[data-skin=pearl]{--bg-deepest: #f5f6fa;--bg-deep: #eef0f6;--bg-surface: #ffffff;--bg-elevated: #ffffff;--bg-glass: rgba(255, 255, 255, .82);--bg-workspace: color-mix(in srgb, var(--bg-surface) 64%, var(--bg-deepest));--accent: #4f6ef7;--accent-glow: rgba(79, 110, 247, .16);--accent-dim: rgba(79, 110, 247, .09);--success: #059669;--danger: #dc2626;--status-error: #8b93a1;--warning: #d97706;--info: #0284c7;--text-primary: #111827;--text-secondary: #4b5563;--text-muted: #9ca3af;--text-inverse: #ffffff;--border-subtle: rgba(17, 24, 39, .07);--border-default: rgba(17, 24, 39, .13);--border-glow: rgba(79, 110, 247, .3);--shadow-sm: 0 1px 4px rgba(17, 24, 39, .07), 0 1px 2px rgba(17, 24, 39, .05);--shadow-md: 0 8px 24px rgba(17, 24, 39, .1), 0 2px 8px rgba(17, 24, 39, .06);--shadow-glow: 0 0 20px var(--accent-glow);--radius-sm: 7px;--radius-md: 12px;--radius-lg: 18px;--radius-xl: 24px;--font-display: "Inter", system-ui, sans-serif;--font-body: "Inter", system-ui, sans-serif;--font-mono: "IBM Plex Mono", monospace;--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--duration-fast: .15s;--duration-normal: .3s;--duration-slow: .6s;--hairline: var(--border-subtle);--control-hover: color-mix(in srgb, var(--accent) 8%, var(--bg-elevated));--control-active: var(--accent-dim);--focus-ring: 0 0 0 3px var(--accent);--active-edge: var(--accent)}.host-project-picker-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:24000;display:grid;place-items:center;padding:16px;background:#080a0e85}.host-project-picker{display:flex;flex-direction:column;width:min(560px,calc(100vw - 32px));height:min(620px,calc(100dvh - 32px));min-height:380px;overflow:hidden;border:1px solid var(--border-default);border-radius:8px;background:var(--bg-surface);color:var(--text-primary);box-shadow:var(--shadow-md)}.host-project-picker-header,.host-project-picker-nav,.host-project-picker-footer,.host-project-picker-root{flex-shrink:0}.host-project-picker-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:15px 16px 12px;border-bottom:1px solid var(--border-subtle)}.host-project-picker-header h2{margin:0;font-size:15px;line-height:1.3;letter-spacing:0}.host-project-picker-header p{margin:4px 0 0;color:var(--text-muted);font-size:11px;line-height:1.4}.host-project-picker-root{display:flex;align-items:center;gap:10px;padding:9px 12px 0;color:var(--text-muted);font-size:11px}.host-project-picker-root select{min-width:0;flex:1;height:30px;border:1px solid var(--border-default);border-radius:6px;background:var(--bg-deep);color:var(--text-primary)}.host-project-picker-nav{display:flex;align-items:center;gap:6px;padding:9px 12px;border-bottom:1px solid var(--border-subtle)}.host-project-picker-breadcrumbs{display:flex;min-width:0;flex:1;align-items:center;overflow-x:auto;white-space:nowrap;scrollbar-width:none}.host-project-picker-breadcrumbs span{display:inline-flex;align-items:center}.host-project-picker-breadcrumbs i{color:var(--text-muted);font-style:normal}.host-project-picker-breadcrumbs button{height:26px;padding:0 5px;border:0;background:transparent;color:var(--text-secondary);font-size:11px}.host-project-picker-warning{margin:0;padding:7px 13px;border-bottom:1px solid color-mix(in srgb,var(--warning) 25%,transparent);background:color-mix(in srgb,var(--warning) 8%,transparent);color:var(--warning);font-size:11px}.host-project-picker-list{min-height:0;flex:1;overflow-y:auto;padding:6px}.host-project-picker-row{display:grid;grid-template-columns:24px minmax(0,1fr) 20px;align-items:center;width:100%;min-height:38px;padding:4px 8px;border:0;border-radius:6px;background:transparent;color:var(--text-primary);text-align:left}.host-project-picker-row:hover,.host-project-picker-row:focus-visible{background:var(--bg-hover)}.host-project-picker-row.is-file{color:var(--text-secondary)}.host-project-picker-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.host-project-picker-entry-icon,.host-project-picker-chevron{display:inline-flex;align-items:center;justify-content:flex-start}.host-project-picker-entry-icon.is-folder{color:var(--accent)}.host-project-picker-entry-icon.is-code{color:color-mix(in srgb,#f59e0b 76%,var(--text-primary))}.host-project-picker-entry-icon.is-style{color:color-mix(in srgb,#3b82f6 78%,var(--text-primary))}.host-project-picker-entry-icon.is-image,.host-project-picker-entry-icon.is-spreadsheet{color:color-mix(in srgb,#10b981 76%,var(--text-primary))}.host-project-picker-entry-icon.is-video{color:color-mix(in srgb,#ec4899 72%,var(--text-primary))}.host-project-picker-entry-icon.is-audio{color:color-mix(in srgb,#8b5cf6 72%,var(--text-primary))}.host-project-picker-entry-icon.is-markdown{color:color-mix(in srgb,#0ea5e9 76%,var(--text-primary))}.host-project-picker-entry-icon.is-json,.host-project-picker-entry-icon.is-database{color:color-mix(in srgb,#14b8a6 74%,var(--text-primary))}.host-project-picker-entry-icon.is-archive{color:color-mix(in srgb,#f97316 75%,var(--text-primary))}.host-project-picker-entry-icon.is-presentation{color:color-mix(in srgb,#ef4444 72%,var(--text-primary))}.host-project-picker-entry-icon.is-text,.host-project-picker-entry-icon.is-file{color:var(--text-muted)}.host-project-picker-entry-icon svg,.host-project-picker-chevron svg{flex:none}.host-project-picker-chevron{color:var(--text-muted);justify-content:flex-end}.host-project-picker-state{display:grid;min-height:180px;place-items:center;padding:24px;color:var(--text-muted);font-size:12px;text-align:center}.host-project-picker-state.is-error{color:var(--danger)}.host-project-picker-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border-top:1px solid var(--border-subtle)}.host-project-picker-footer code{min-width:0;flex:1;overflow-wrap:anywhere;color:var(--text-muted);font-size:10px}.host-project-picker-footer>div{display:flex;flex-shrink:0;gap:8px}.host-project-picker-cancel,.host-project-picker-confirm{min-height:32px;padding:0 12px;border-radius:6px;font-size:12px}.host-project-picker-cancel{border:1px solid var(--border-default);background:transparent;color:var(--text-secondary)}.host-project-picker-confirm{border:1px solid var(--accent);background:var(--accent);color:var(--text-inverse)}@media (max-width: 640px){.host-project-picker-backdrop{padding:8px}.host-project-picker{width:calc(100vw - 16px);height:min(680px,calc(100dvh - 16px))}.host-project-picker-footer{align-items:stretch;flex-direction:column}.host-project-picker-footer>div{justify-content:flex-end}}[data-skin=scifi]{--bg-deepest: #050a14;--bg-deep: #0a1220;--bg-surface: #0d1626;--bg-elevated: #122036;--bg-glass: rgba(13, 22, 38, .82);--accent: #22d3ee;--accent-glow: rgba(34, 211, 238, .22);--accent-dim: rgba(34, 211, 238, .1);--success: #34d399;--danger: #fb7185;--status-error: #7b8794;--warning: #fbbf24;--info: #38bdf8;--text-primary: #e2f3ff;--text-secondary: #9fb8d0;--text-muted: #5c7893;--text-inverse: #04121a;--border-subtle: rgba(34, 211, 238, .1);--border-default: rgba(34, 211, 238, .22);--border-glow: rgba(34, 211, 238, .5);--shadow-sm: 0 1px 6px rgba(0, 0, 0, .5), 0 0 6px rgba(34, 211, 238, .08);--shadow-md: 0 10px 30px rgba(0, 0, 0, .55), 0 0 18px rgba(34, 211, 238, .12);--shadow-glow: 0 0 24px rgba(34, 211, 238, .35);--font-display: "IBM Plex Mono", monospace;--font-body: "Inter", system-ui, sans-serif;--font-mono: "IBM Plex Mono", monospace}[data-skin=scifi] html,[data-skin=scifi] body,html[data-skin=scifi] body{background:linear-gradient(rgba(34,211,238,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(34,211,238,.035) 1px,transparent 1px),radial-gradient(ellipse at 50% -20%,rgba(34,211,238,.14),transparent 55%),radial-gradient(ellipse at 90% 110%,rgba(168,85,247,.1),transparent 50%),var(--bg-deepest);background-size:44px 44px,44px 44px,100% 100%,100% 100%,100% 100%}[data-skin=noir]{--bg-deepest: #0f1115;--bg-deep: #14171d;--bg-surface: #191d24;--bg-elevated: #1f242d;--bg-glass: rgba(25, 29, 36, .85);--accent: #a78bfa;--accent-glow: rgba(167, 139, 250, .18);--accent-dim: rgba(167, 139, 250, .09);--success: #4ade80;--danger: #f87171;--status-error: #818a98;--warning: #fbbf24;--info: #60a5fa;--text-primary: #eceff4;--text-secondary: #aab2bf;--text-muted: #6b7280;--text-inverse: #0f1115;--border-subtle: rgba(255, 255, 255, .06);--border-default: rgba(255, 255, 255, .12);--border-glow: rgba(167, 139, 250, .4);--shadow-sm: 0 1px 4px rgba(0, 0, 0, .4);--shadow-md: 0 10px 28px rgba(0, 0, 0, .5);--shadow-glow: 0 0 20px rgba(167, 139, 250, .25)}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{height:100%;width:100%;overflow:hidden;background:radial-gradient(ellipse at 0% 0%,rgba(79,110,247,.05),transparent 40%),radial-gradient(ellipse at 100% 100%,rgba(5,150,105,.04),transparent 40%),var(--bg-deepest);color:var(--text-primary);font-family:var(--font-body);font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;letter-spacing:.01em}input:focus,button:focus,textarea:focus,select:focus{outline:none;box-shadow:none}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-default);border-radius:10px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.ui-icon-button,.ui-quiet-button,.settings-tab,.appearance-choice,.appearance-segment{border:0;color:var(--text-secondary);cursor:pointer;font-family:var(--font-body);transition:background-color var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out)}.ui-icon-button{width:32px;height:32px;padding:0;border-radius:var(--radius-sm);background:transparent;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.ui-icon-button--small{width:24px;height:24px}.ui-icon-button--medium{width:36px;height:36px}.ui-icon-button--close{width:28px;height:28px}.ui-quiet-button{min-height:36px;padding:9px 12px;border-radius:var(--radius-sm);background:transparent;display:inline-flex;align-items:center;justify-content:center;gap:6px;font-size:12px;font-weight:500}.ui-icon-button:hover:not(:disabled),.ui-quiet-button:hover:not(:disabled),.settings-tab:hover:not(:disabled),.appearance-choice:hover:not(:disabled),.appearance-segment:hover:not(:disabled){background:var(--control-hover);color:var(--text-primary)}.ui-icon-button.is-active,.ui-quiet-button.is-active{background:var(--control-active);color:var(--accent)}.ui-icon-button--danger:hover:not(:disabled){color:var(--danger)}.ui-icon-button:focus-visible,.ui-quiet-button:focus-visible,.settings-tab:focus-visible,.appearance-choice:focus-visible,.appearance-segment:focus-visible{outline:none;box-shadow:var(--focus-ring)}.ui-icon-button:disabled,.ui-quiet-button:disabled,.settings-tab:disabled,.appearance-choice:disabled,.appearance-segment:disabled{cursor:not-allowed;opacity:.45}.sidebar-row{position:relative;display:flex;align-items:center;border-radius:var(--radius-sm);background:transparent;transition:background-color var(--duration-fast) var(--ease-out)}.sidebar-row:hover,.sidebar-row:focus-within{background:var(--control-hover)}.sidebar-row-active:before{content:"";position:absolute;inset:5px auto 5px 0;width:2px;border-radius:0 2px 2px 0;background:var(--active-edge);pointer-events:none}.sidebar-row-action{opacity:0;pointer-events:none;transition:opacity .12s ease}.sidebar-row:hover .sidebar-row-action,.sidebar-row:focus-within .sidebar-row-action{opacity:1;pointer-events:auto}.sidebar-row-action--accent{color:var(--accent)}.sidebar-count{border:0}.app-sidebar-resizer{position:absolute;top:0;bottom:0;width:8px;transform:translate(-50%);z-index:15;cursor:col-resize;background:transparent}.app-sidebar-resizer:after{content:"";position:absolute;top:0;bottom:0;left:50%;width:1px;transform:translate(-50%);background:transparent;transition:background-color var(--duration-fast) var(--ease-out)}.app-sidebar-resizer:hover:after,.app-sidebar-resizer.is-dragging:after{background:var(--accent)}.sidebar-brand-row{display:flex;align-items:center;gap:10px;min-height:42px}.sidebar-brand-mark{width:38px;height:38px;display:grid;place-items:center;flex-shrink:0;border-radius:9px;color:var(--text-primary);background:color-mix(in srgb,var(--text-primary) 8%,var(--bg-surface));border:1px solid color-mix(in srgb,var(--text-primary) 18%,transparent)}.sidebar-brand-name{min-width:0;color:var(--text-primary);font-size:18px;font-weight:700;line-height:1;letter-spacing:0}.sidebar-project-toolbar{min-height:48px;margin:8px 14px;padding:0 6px 0 4px;display:flex;align-items:center;justify-content:space-between;gap:12px}.sidebar-project-title{color:var(--text-secondary);font-size:14px;font-weight:600;white-space:nowrap}.sidebar-project-actions{display:flex;align-items:center;gap:2px}.sidebar-project-actions .ui-icon-button{width:34px;height:34px;color:var(--text-muted)}.sidebar-project-block{margin-bottom:7px}.sidebar-project-row{min-height:40px;border-radius:8px}.sidebar-project-row .sidebar-project-button{min-width:0;min-height:40px;padding:8px!important;color:var(--text-primary)!important;font-size:14px!important;font-weight:650!important;letter-spacing:0}.sidebar-project-row--nested .sidebar-project-button{color:var(--text-secondary)!important;font-size:12px!important;font-weight:600!important}.sidebar-project-row .sidebar-row-action{width:30px;height:30px}.sidebar-project-row .sidebar-project-delete svg{width:16px;height:16px}.sidebar-project-add-action[aria-expanded=true]{opacity:1;pointer-events:auto}.sidebar-agent-group{width:100%;min-height:34px;padding:5px 8px 3px 22px!important;display:flex;align-items:center;gap:8px;border:0;background:transparent;color:var(--text-muted);font-family:var(--font-body);font-size:12px!important;font-weight:500!important;letter-spacing:0!important;text-transform:none!important;text-align:left;cursor:pointer}.sidebar-agent-group:hover{color:var(--text-secondary)}.sidebar-agent-group .sidebar-count,.sidebar-project-row .sidebar-count{padding:0!important;background:transparent!important;color:var(--text-muted)!important;font-size:10px!important;font-weight:500!important;line-height:1!important}.sidebar-session-row{min-height:38px;margin:1px 0;border-radius:8px}.sidebar-session-row .sidebar-session-button{min-width:0;min-height:38px;padding:6px 8px!important;gap:8px!important;font-size:13px!important;letter-spacing:0}.sidebar-project-sessions.is-grouped .sidebar-session-row .sidebar-session-button{padding-left:8px!important}.sidebar-project-sessions.is-grouped .sidebar-session-row{padding-left:28px}.sidebar-session-delete{width:28px;height:28px;margin-left:2px;flex:0 0 28px}.sidebar-session-row>.sidebar-runtime-mark{margin:0 8px 0 2px}.sidebar-session-disclosure{transform-origin:center;transition:transform var(--duration-fast) var(--ease-out)}.sidebar-session-disclosure.is-expanded{transform:rotate(90deg)}.sidebar-session-disclosure{flex-shrink:0;color:var(--text-muted)}@media (hover: none){.sidebar-project-add-action{opacity:1;pointer-events:auto}}.sidebar-row-active{background:var(--control-active)}.sidebar-row-active:before{display:none}.sidebar-status-dot{--sidebar-status-color: var(--accent);width:7px;height:7px;flex-shrink:0;border-radius:50%;background:var(--sidebar-status-color);opacity:1;transition:background-color var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out),opacity var(--duration-fast) var(--ease-out)}.sidebar-status-dot.is-completed{--sidebar-status-color: var(--accent)}.sidebar-status-dot.is-running{--sidebar-status-color: var(--success);animation:sidebarStatusBlink 1.15s ease-in-out infinite}.sidebar-status-dot.is-needs-input{--sidebar-status-color: var(--danger);animation:sidebarStatusBlink 1.15s ease-in-out infinite}.sidebar-status-dot.is-error{--sidebar-status-color: var(--status-error);animation:sidebarStatusBlink 1.15s ease-in-out infinite}@keyframes sidebarStatusBlink{0%,to{opacity:1;box-shadow:0 0 0 1px color-mix(in srgb,var(--sidebar-status-color) 30%,transparent)}50%{opacity:.24;box-shadow:0 0 0 4px transparent}}.sidebar-runtime-mark,.sidebar-occupancy-badge{min-width:28px;height:22px;padding:0 7px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;border-radius:6px;font-size:10px;font-weight:700;line-height:1;letter-spacing:0}.sidebar-runtime-mark--customer-agent{color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,var(--bg-surface))}.sidebar-runtime-mark--codex{color:var(--info);background:color-mix(in srgb,var(--info) 12%,var(--bg-surface))}.sidebar-runtime-mark--claude-code{color:var(--warning);background:color-mix(in srgb,var(--warning) 13%,var(--bg-surface))}.sidebar-occupancy-badge{min-width:auto;color:var(--warning);background:color-mix(in srgb,var(--warning) 12%,var(--bg-surface));font-weight:600}.settings-tab{position:relative;padding:6px 10px;border-radius:0;background:transparent;font-size:12px;font-weight:500}.settings-tab-active{color:var(--accent)}.settings-tab-active:after{content:"";position:absolute;right:10px;bottom:-8px;left:10px;height:2px;border-radius:2px 2px 0 0;background:var(--active-edge)}.appearance-panel{border-color:var(--hairline)!important}.appearance-choices{display:flex;flex-direction:column;gap:2px}.appearance-choice{width:100%;min-height:38px;padding:6px 8px;border-radius:var(--radius-sm);background:transparent;display:flex;align-items:center;gap:8px;text-align:left}.appearance-choice-active{background:var(--control-active);color:var(--accent)}.appearance-swatch{width:28px;height:18px;border:1px solid var(--hairline);border-radius:5px;flex-shrink:0}.appearance-choice-label{flex:1;min-width:0;font-size:12px}.appearance-choice-check{width:14px;height:14px;color:var(--accent);flex-shrink:0}.appearance-segmented{display:flex;overflow:hidden;border:1px solid var(--hairline);border-radius:var(--radius-sm)}.appearance-segment{min-width:0;flex:1;padding:7px 4px;border-radius:0;background:transparent;font-size:12px}.appearance-segment+.appearance-segment{border-left:1px solid var(--hairline)}.appearance-segment-active{background:var(--control-active);color:var(--accent);font-weight:600}.appearance-switch{width:32px;height:18px;margin:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--hairline);border-radius:999px;background:var(--bg-deep);cursor:pointer;position:relative;transition:background-color var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out)}.appearance-switch:after{content:"";position:absolute;top:2px;left:2px;width:12px;height:12px;border-radius:50%;background:var(--text-muted);transition:transform var(--duration-fast) var(--ease-out),background-color var(--duration-fast) var(--ease-out)}.appearance-switch:checked{border-color:var(--accent);background:var(--accent)}.appearance-switch:checked:after{transform:translate(14px);background:var(--text-inverse)}.appearance-switch:focus-visible{outline:none;box-shadow:var(--focus-ring)}.chat-header-actions{display:inline-flex;align-items:center;gap:2px;flex-shrink:0}.chat-header-action{color:var(--text-muted)}.agent-activity-indicator{min-height:24px;display:inline-flex;align-items:center;gap:7px;color:var(--text-muted);font-size:12px;font-weight:500}.agent-activity-dots{display:inline-flex;align-items:center;gap:3px}.agent-activity-dots>span{width:4px;height:4px;border-radius:50%;background:var(--accent);animation:wave 1.1s ease-in-out infinite}.composer-shell{border:1px solid var(--hairline)}.composer-shell:focus-within{border-color:var(--accent);box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 28%,transparent)}.composer-shell :focus-visible{outline:none;box-shadow:none}::selection{background:var(--accent-glow);color:var(--accent)}.noise-overlay{pointer-events:none;position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;opacity:.02;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E")}input,select,textarea{font-family:var(--font-body);transition:border-color var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out)}input:focus,select:focus,textarea:focus{border-color:var(--accent)!important;box-shadow:0 0 0 3px var(--accent-dim)}@keyframes fadeInUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes pulse-glow{0%,to{box-shadow:0 0 4px var(--accent-glow)}50%{box-shadow:0 0 16px var(--accent-glow)}}@keyframes slideIn{0%{transform:translate(-8px);opacity:0}to{transform:translate(0);opacity:1}}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.75)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}@keyframes wave{0%,60%,to{transform:translateY(0)}30%{transform:translateY(-4px)}}@keyframes statusBarPulse{0%,to{opacity:.4}50%{opacity:1}}@keyframes wakeRing{0%{transform:scale(.4);opacity:.9}to{transform:scale(1.9);opacity:0}}@keyframes wakeCore{0%,to{transform:scale(1);box-shadow:0 0 24px var(--accent-glow)}50%{transform:scale(1.12);box-shadow:0 0 60px var(--accent-glow)}}@keyframes wakeText{0%{opacity:0;transform:translateY(10px);letter-spacing:.4em}60%{opacity:1}to{opacity:1;transform:translateY(0);letter-spacing:.12em}}@keyframes micPulse{0%,to{box-shadow:0 0 #f43f5e59}50%{box-shadow:0 0 0 8px #f43f5e00}}.mic-recording{animation:micPulse 1.2s ease-out infinite}.message-card{position:relative;border:1px solid var(--hairline);background:var(--bg-surface);border-radius:var(--radius-md);box-shadow:none;transition:border-color var(--duration-fast) var(--ease-out)}.message-card:hover,.message-card:focus-within{border-color:var(--border-default)}.chat-message-content .msg-actions{opacity:0;transition:opacity var(--duration-fast) var(--ease-out)}.chat-message-content:hover .msg-actions,.chat-message-content:focus-within .msg-actions{opacity:1}@media (hover: none){.chat-message-content .msg-actions{opacity:1}}.msg-action-button{color:var(--text-muted)}.chat-view--codex-history{--chat-assistant-fade-end: var(--bg-workspace)}.chat-view--codex-history .chat-message-group{width:min(100%,860px);margin-left:auto;margin-right:auto}.chat-view--codex-history .chat-message-group--intermediate{margin-bottom:0!important}.chat-view--codex-history .chat-message-row{gap:0!important}.chat-view--codex-history .chat-message-avatar{display:none!important}.chat-view--codex-history .chat-message-activity{padding-left:0!important}.chat-view--codex-history .chat-message-content--assistant{width:100%;max-width:100%!important}.chat-view--codex-history .chat-message-bubble--assistant{width:100%}.chat-view--codex-history .chat-message-content--user{max-width:min(78%,680px)!important}.chat-view--codex-history .chat-message-bubble--assistant.message-card{width:100%;padding-right:0!important;padding-left:0!important;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important}.chat-message-link{color:var(--accent);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;cursor:pointer}.chat-message-link:hover{color:color-mix(in srgb,var(--accent) 76%,var(--text-primary))}.chat-message-link:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}.chat-message-long-content{position:relative}.chat-message-long-content__body{padding-right:28px}.chat-message-disclosure{position:absolute;top:0;right:0;z-index:1;width:24px;height:24px;margin:0;padding:0;display:grid;place-items:center;border:0;border-radius:6px;background:transparent;color:var(--text-muted);cursor:pointer}.chat-message-disclosure:hover{background:var(--accent-dim);color:var(--accent)}.chat-message-disclosure:focus-visible{outline:none;box-shadow:var(--focus-ring)}.chat-message-disclosure svg{transition:transform var(--duration-fast) var(--ease-out)}.chat-message-disclosure[aria-expanded=true] svg{transform:rotate(90deg)}.chat-message-attachments{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.chat-message-attachment-image{display:block;width:auto;max-width:min(220px,100%);max-height:180px;object-fit:cover;border:1px solid var(--border-subtle);border-radius:6px;cursor:zoom-in}.chat-message-attachment-unavailable{width:min(220px,100%);min-height:52px;padding:8px 10px;display:flex;flex-direction:column;justify-content:center;gap:2px;border-top:1px solid var(--border-subtle);border-bottom:1px solid var(--border-subtle);color:var(--text-muted);font-size:11px}.chat-message-attachment-name{overflow:hidden;color:var(--text-secondary);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.chat-message-raw-content{width:100%;margin-top:8px;color:var(--text-muted);font-size:11px}.chat-message-raw-content summary{width:fit-content;cursor:pointer;-webkit-user-select:none;user-select:none}.chat-message-raw-content summary:hover{color:var(--accent)}.chat-message-raw-content pre{max-width:100%;max-height:220px;margin:8px 0 0;padding:8px 10px;overflow:auto;border-left:2px solid var(--border-default);color:var(--text-secondary);font-family:var(--font-mono, monospace);font-size:11px;line-height:1.55;white-space:pre-wrap;word-break:break-word}.chat-view--codex-history .tool-call-shell{margin-top:2px!important;border:0!important;border-radius:0!important;background:transparent!important}.chat-view--codex-history .tool-call-shell__row{align-items:center!important}.chat-view--codex-history .tool-call-shell__status{display:none}.chat-view--codex-history .tool-call-shell__header{min-height:32px;padding:5px 2px!important;gap:7px!important;border-bottom:1px solid color-mix(in srgb,var(--border-subtle) 72%,transparent)!important;background:transparent!important}.chat-view--codex-history .tool-call-shell__header>div:first-child{width:18px!important;height:18px!important;border-radius:4px!important;background:transparent!important}.chat-view--codex-history .tool-call-shell__body-content{padding:8px 2px 10px!important;border-top:0!important}.chat-view--codex-history .tool-call-shell__chevron{width:11px;height:11px}.chat-view--codex-history .tool-call-group{min-width:0;margin-top:2px}.chat-view--codex-history .tool-call-group__summary{width:100%;min-width:0;min-height:32px;padding:5px 2px;display:flex;align-items:center;gap:7px;border:0;border-bottom:1px solid color-mix(in srgb,var(--border-subtle) 72%,transparent);background:transparent;color:var(--text-primary);font-family:var(--font-body);text-align:left;cursor:pointer}.chat-view--codex-history .tool-call-group__summary:hover{background:color-mix(in srgb,var(--text-primary) 4%,transparent)}.chat-view--codex-history .tool-call-group__summary:focus-visible{outline:none;box-shadow:inset var(--focus-ring)}.chat-view--codex-history .tool-call-group__icon{width:18px;height:18px;display:grid;place-items:center;flex:0 0 18px;color:var(--text-muted)}.chat-view--codex-history .tool-call-group__label{flex-shrink:0;font-size:11.5px;font-weight:600;white-space:nowrap}.chat-view--codex-history .tool-call-group__count,.chat-view--codex-history .tool-call-group__error{flex-shrink:0;color:var(--text-muted);font-size:10px;white-space:nowrap}.chat-view--codex-history .tool-call-group__error{color:var(--danger)}.chat-view--codex-history .tool-call-group__spacer{min-width:0;flex:1}.chat-view--codex-history .tool-call-group__chevron{flex:0 0 13px;color:var(--text-muted);transition:transform var(--duration-fast) var(--ease-out)}.chat-view--codex-history .tool-call-group__summary[aria-expanded=true] .tool-call-group__chevron{transform:rotate(90deg)}.chat-view--codex-history .tool-call-group__items{min-width:0;padding-left:24px}.chat-view{--chat-max-width: 880px;--chat-header-height: 52px;--chat-header-padding: 0 20px;--chat-messages-padding: 24px 40px 16px;--chat-input-padding: 12px 24px 18px;--chat-message-gap: 3px;--chat-turn-gap: 16px;--chat-row-gap: 10px;--chat-avatar-size: 30px;--chat-content-max-width: 76%;--chat-user-bubble-padding: 10px 14px;--chat-assistant-bubble-padding: 11px 15px;--chat-bubble-font-size: 14px;--chat-bubble-line-height: 1.75;--composer-row-padding: 6px 6px 6px 12px}.chat-messages{scrollbar-color:transparent transparent}.chat-messages::-webkit-scrollbar-thumb{background:transparent}.chat-messages.is-scrolling{scrollbar-color:var(--border-default) transparent}.chat-messages.is-scrolling::-webkit-scrollbar-thumb{background:var(--border-default)}.chat-messages.is-scrolling::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.layout-compact .chat-view{--chat-max-width: 1040px;--chat-header-height: 44px;--chat-header-padding: 0 16px;--chat-messages-padding: 12px 22px 8px;--chat-input-padding: 8px 18px 10px;--chat-message-gap: 1px;--chat-turn-gap: 10px;--chat-row-gap: 8px;--chat-avatar-size: 26px;--chat-content-max-width: 84%;--chat-user-bubble-padding: 7px 11px;--chat-assistant-bubble-padding: 8px 12px;--chat-bubble-font-size: 13px;--chat-bubble-line-height: 1.55;--composer-row-padding: 4px 4px 4px 8px;font-size:13px}.layout-compact .message-card,.layout-compact .composer-shell{border-radius:var(--radius-sm)!important}.layout-compact .composer-shell .ui-icon-button{width:28px;height:28px}.reasoning-summary{width:min(680px,100%);color:var(--text-secondary)}.reasoning-summary__toggle{display:inline-flex;align-items:center;gap:6px;min-height:26px;padding:2px 0;border:0;background:transparent;color:var(--text-muted);cursor:pointer;font:600 12px/1.4 var(--font-body);letter-spacing:0}.reasoning-summary__toggle svg{transition:transform .16s ease}.reasoning-summary__toggle[aria-expanded=true] svg{transform:rotate(90deg)}.reasoning-summary__live{color:var(--accent);font-size:10px;font-weight:500}.reasoning-summary__content{margin:3px 0 7px 6px;padding-left:12px;border-left:2px solid var(--border-default);color:var(--text-secondary);font-size:12.5px;line-height:1.65;white-space:pre-wrap;word-break:break-word}.runtime-progress-row{display:flex;align-items:center;gap:7px;min-height:28px;max-width:var(--chat-content-max-width);margin:4px 0 4px calc(var(--chat-avatar-size) + var(--chat-row-gap));color:var(--text-secondary);font-size:12px;line-height:1.4;letter-spacing:0}.chat-view--codex-history .runtime-progress-row:not(.runtime-progress-row--compact){width:min(100%,860px);max-width:860px;margin-left:auto;margin-right:auto}.runtime-progress-row--compact{min-height:22px;margin:2px 8px 0;font-size:11px}.runtime-progress-row__spinner{width:11px;height:11px;flex:0 0 11px;box-sizing:border-box;border:1.5px solid var(--border-default);border-top-color:var(--accent);border-radius:50%;animation:spin .9s linear infinite}.runtime-progress-row__label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.runtime-progress-row__detail{flex-shrink:0;color:var(--text-muted);font-family:var(--font-mono);font-size:10.5px}.tool-call-with-progress{width:100%;min-width:0}.native-subagent-activity{display:flex;min-width:0;flex-direction:column;gap:8px}.native-subagent-activity__meta{display:flex;flex-wrap:wrap;gap:6px 12px;color:var(--text-muted);font-family:var(--font-mono);font-size:10px}.native-subagent-activity__entry{display:flex;min-width:0;flex-direction:column;gap:6px}.native-subagent-activity__tool{display:flex;min-width:0;flex-direction:column;gap:4px}.native-subagent-activity__tool-result{box-sizing:border-box;max-height:160px;margin:0 0 0 8px;overflow:auto;border-left:2px solid var(--success);border-radius:5px;background:var(--bg-surface);padding:6px 9px;color:var(--text-secondary);font-family:var(--font-mono);font-size:10px;line-height:1.5;white-space:pre-wrap;word-break:break-word}.native-subagent-activity__tool-result--error{border-left-color:var(--danger);color:var(--danger)}.native-subagent-activity__text{box-sizing:border-box;max-height:240px;margin:0;overflow:auto;border-left:3px solid var(--accent);border-radius:6px;background:var(--bg-surface);padding:8px 10px;color:var(--text-secondary);font-family:var(--font-mono);font-size:11px;line-height:1.6;white-space:pre-wrap;word-break:break-word}.native-subagent-activity__waiting{display:flex;min-height:28px;align-items:center;gap:7px;color:var(--text-muted);font-size:11px}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}.sidebar-status-dot.is-running,.sidebar-status-dot.is-needs-input,.sidebar-status-dot.is-error{animation:none;opacity:1;box-shadow:none}}:root{--web-composer-control-size: 38px;--web-composer-icon-size: 20px}.chat-view--codex-history .composer-shell{border:1px solid var(--border-default);border-radius:24px!important;box-shadow:none}.chat-view--codex-history .composer-input-row{display:flex!important;flex-direction:column;align-items:stretch!important;gap:0!important;padding:6px 10px 8px!important}.web-native-add-wrap{position:relative;flex-shrink:0;width:var(--web-composer-control-size);height:var(--web-composer-control-size)}.web-native-composer-toolbar{width:100%;min-height:42px;display:flex;align-items:center;gap:6px}.web-native-composer-textarea{box-sizing:border-box;width:100%;min-height:76px;max-height:168px;padding:12px 14px 6px;resize:none;overflow-y:auto;border:0;outline:0;background:transparent;color:var(--text-primary);box-shadow:none;font:400 16px/1.5 var(--font-body);letter-spacing:0}.web-native-composer-textarea::placeholder{color:var(--text-muted);opacity:.62}.web-native-composer-textarea:disabled{cursor:not-allowed}.web-native-add-button,.web-native-send-button,.web-native-stop-button{width:var(--web-composer-control-size);height:var(--web-composer-control-size);padding:0;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.web-native-add-button{border:0;background:transparent;color:var(--text-primary)}.web-native-add-button[aria-expanded=true]{background:var(--control-active, rgba(79,110,247,.09))}.web-native-add-menu{position:absolute;left:0;bottom:calc(100% + 8px);z-index:1300;display:flex;flex-direction:column;min-width:150px;padding:6px;border:1px solid var(--border-default);border-radius:12px;background:var(--bg-elevated);box-shadow:var(--shadow-md)}.web-native-add-menu button{border:0;background:transparent;text-align:left;padding:10px 12px;border-radius:8px;font-size:14px;color:var(--text-primary);white-space:nowrap}@media (hover: hover){.web-native-add-menu button:hover{background:var(--control-hover)}}.web-native-add-menu button:focus-visible{background:var(--control-hover)}.web-native-add-menu button:active{background:var(--control-active)}.web-native-send-button{position:relative;border:0;background:transparent;color:var(--text-muted)}.web-native-send-button:before{content:"";position:absolute;top:2px;right:2px;bottom:2px;left:2px;border:1px solid var(--border-default);border-radius:9px;background:var(--bg-deep)}.web-native-send-button:not(:disabled){color:#fff;cursor:pointer}.web-native-send-button:not(:disabled):before{border-color:var(--text-primary);background:var(--text-primary)}.web-native-stop-button{border:0;background:#f43f5e1f;color:var(--danger)}.web-native-runtime-status,.web-native-agent-status{width:var(--web-composer-control-size);height:var(--web-composer-control-size);display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;color:var(--text-muted)}.web-native-permission-wrap{position:relative;width:var(--web-composer-control-size);height:var(--web-composer-control-size);flex:0 0 var(--web-composer-control-size)}.web-native-permission-button{padding:0;border:0;border-radius:999px;background:transparent;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.web-native-permission-button[aria-expanded=true]{background:var(--control-active, rgba(79,110,247,.09))}.web-native-permission-button:disabled{cursor:default;opacity:.48}.web-native-permission-button.mode-request-approval{color:var(--accent, #4f6ef7)}.web-native-permission-button.mode-auto-approval{color:#0f9f72}.web-native-permission-button.mode-full-access{color:#f59e0b}.web-native-permission-menu{position:absolute;left:0;bottom:calc(100% + 8px);z-index:1300;display:flex;flex-direction:column;width:min(304px,calc(100vw - 24px));padding:6px;border:1px solid var(--border-default);border-radius:12px;background:var(--bg-elevated);box-shadow:var(--shadow-md)}.web-native-permission-menu>button{min-height:54px;display:flex;align-items:flex-start;gap:8px;padding:9px 10px;border:0;border-radius:8px;background:transparent;color:var(--text-primary);text-align:left;cursor:pointer}.web-native-permission-check{width:16px;padding-top:1px;flex:0 0 16px;color:var(--accent, #4f6ef7);font-size:14px;font-weight:700}.web-native-permission-copy{min-width:0;display:flex;flex-direction:column;gap:2px}.web-native-permission-copy strong{font-size:14px;line-height:20px;font-weight:600}.web-native-permission-copy small{color:var(--text-muted);font-size:12px;line-height:17px}.web-native-permission-menu>button.is-active{background:var(--control-active, rgba(79,110,247,.09))}@media (hover: hover){.web-native-permission-menu>button:hover{background:var(--control-hover)}}.web-native-permission-menu>button:focus-visible,.web-native-permission-button:focus-visible{outline:2px solid var(--accent, #4f6ef7);outline-offset:2px}.web-native-runtime-status.is-ready{color:#f59e0b}.web-native-agent-status{gap:4px;color:var(--text-primary)}.web-native-agent-status>span{width:4px;height:18px;border-radius:999px;background:#10b981}.web-native-effort-wrap{position:relative;flex-shrink:0;width:var(--web-composer-control-size);height:var(--web-composer-control-size)}.web-native-effort-button{width:var(--web-composer-control-size);height:var(--web-composer-control-size);padding:0;border:0;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;background:transparent;color:var(--text-primary);cursor:pointer;flex-shrink:0;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.web-native-effort-button[aria-expanded=true]{background:var(--control-active, rgba(79,110,247,.09))}.web-native-effort-button>svg{width:var(--web-composer-icon-size);height:var(--web-composer-icon-size)}.web-native-effort-menu{position:absolute;right:0;bottom:calc(100% + 8px);z-index:1300;display:flex;flex-direction:column;min-width:128px;padding:6px;border:1px solid var(--border-default);border-radius:12px;background:var(--bg-elevated);box-shadow:var(--shadow-md)}.web-native-effort-menu button{display:flex;align-items:center;gap:8px;border:0;background:transparent;text-align:left;padding:10px 12px;border-radius:8px;font-size:14px;color:var(--text-primary);white-space:nowrap;cursor:pointer}.web-native-effort-check{display:inline-block;width:14px;flex:0 0 auto;color:var(--accent, #4f6ef7);font-weight:600}.web-native-effort-menu button.is-active{color:var(--accent, #4f6ef7);font-weight:600}@media (hover: hover){.web-native-effort-menu button:hover{background:var(--control-hover)}}.web-native-effort-menu button:focus-visible{background:var(--control-hover)}.web-native-effort-menu button:active{background:var(--control-active)}.web-native-context-control{width:var(--web-composer-control-size);height:var(--web-composer-control-size);flex:0 0 var(--web-composer-control-size)}.web-native-context-control .context-usage-ribbon{width:var(--web-composer-control-size);height:var(--web-composer-control-size);border:0!important}.web-native-context-control .context-usage-ribbon__button{width:var(--web-composer-control-size)!important;height:var(--web-composer-control-size);min-height:var(--web-composer-control-size)!important;padding:9px!important;gap:0!important;color:var(--text-muted)}.context-usage-ribbon__ring{width:var(--web-composer-icon-size);height:var(--web-composer-icon-size);flex:0 0 auto}.context-usage-ribbon__summary--compact{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.web-native-model-control{min-width:56px;flex:1 1 120px;height:var(--web-composer-control-size);display:flex;align-items:center;gap:2px;overflow:hidden;color:var(--text-primary)}.web-native-model-control select{box-sizing:border-box;min-width:0;width:100%;max-width:180px;height:var(--web-composer-control-size);padding:0 8px;border:0;outline:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;color:inherit;font:500 15px/normal var(--font-body);text-overflow:ellipsis}.web-native-model-control select:disabled{opacity:1}.web-native-runtime-status>svg,.web-native-agent-status>svg,.web-native-add-button>svg,.web-native-send-button>svg,.web-native-stop-button>svg{position:relative;z-index:1;width:var(--web-composer-icon-size);height:var(--web-composer-icon-size)}@media (max-width: 899px){.web-native-add-button,.web-native-send-button,.web-native-stop-button{width:var(--web-composer-control-size);height:var(--web-composer-control-size)}.web-native-add-button svg,.web-native-send-button svg{width:var(--web-composer-icon-size);height:var(--web-composer-icon-size)}.web-native-add-menu{left:0;bottom:calc(100% + 8px);min-width:176px;border-radius:8px}.web-native-add-menu button{min-height:44px}}@media (max-width: 359px){.web-native-composer-toolbar{gap:3px}.web-native-permission-menu{left:calc(-1 * (var(--web-composer-control-size) + 6px))}.web-native-model-control{flex-basis:98px}}html,body,#root{height:100%;margin:0;background:var(--bg-deepest, #f5f6fa);color:var(--text-primary, #111827);color-scheme:light}body[data-web-shell="1"]{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;overscroll-behavior:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation;--chat-content-max-width: 92%;--chat-header-height: 48px;--web-chat-lane-width: 92%}body[data-web-shell="1"] input,body[data-web-shell="1"] textarea{font-size:16px!important}body[data-web-shell="1"] .chat-top-bar{background:var(--bg-surface);padding-left:max(14px,env(safe-area-inset-left));padding-right:8px}@media (max-width: 899px){body[data-web-shell="1"] .chat-top-bar{padding-left:54px!important}}body[data-web-shell="1"] .chat-top-bar>span:first-child{font-size:15px!important;font-weight:600!important;letter-spacing:"-0.01em"}body[data-web-shell="1"] .chat-header-action--background,body[data-web-shell="1"] .chat-header-action--appearance{display:none!important}body[data-web-shell="1"] .composer-shell>div:has(button[title*=·]){display:none!important}body[data-web-shell="1"] .chat-view{width:100%;max-width:none!important;margin:0!important}body[data-web-shell="1"] .chat-messages,body[data-web-shell="1"] .chat-input-area{width:var(--web-chat-lane-width);margin-right:auto;margin-left:auto}body[data-web-shell="1"] .chat-messages{background:var(--bg-workspace);padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right))}body[data-web-shell="1"] .chat-input-area{padding-bottom:calc(env(safe-area-inset-bottom) + 10px)!important}body[data-web-shell="1"] [data-webapp-settings-overlay],body[data-web-shell="1"]>div:has(.settings-tab){padding:0!important;align-items:stretch!important}body[data-web-shell="1"] [data-webapp-settings-card],body[data-web-shell="1"]>div:has(.settings-tab)>div{width:100vw!important;height:100dvh!important;max-width:none!important;max-height:none!important;border:none!important;border-radius:0!important}body[data-web-shell="1"] [data-webapp-settings-card] div[style*="padding: 40px"],body[data-web-shell="1"]>div:has(.settings-tab)>div div[style*="padding: 40px"]{padding:16px 14px!important;max-width:100%!important}body[data-web-shell="1"] [data-webapp-settings-card] h2,body[data-web-shell="1"]>div:has(.settings-tab)>div h2{font-size:18px!important;margin-bottom:4px!important}body[data-web-shell="1"] [data-webapp-settings-card] h2+p,body[data-web-shell="1"]>div:has(.settings-tab)>div h2+p{font-size:12px!important;margin-bottom:14px!important}body[data-web-shell="1"] [data-webapp-settings-card] div[style*="border-radius: var(--radius-md)"],body[data-web-shell="1"] [data-webapp-settings-card] div[style*="border-radius:var(--radius-md)"],body[data-web-shell="1"]>div:has(.settings-tab)>div div[style*="border-radius: var(--radius-md)"],body[data-web-shell="1"]>div:has(.settings-tab)>div div[style*="border-radius:var(--radius-md)"]{padding:14px!important}body[data-web-shell="1"] [data-webapp-settings-card] div:has(>h3):not(.settings-head-row),body[data-web-shell="1"]>div:has(.settings-tab)>div div:has(>h3):not(.settings-head-row){flex-direction:column!important;align-items:stretch!important;gap:10px!important}body[data-web-shell="1"] [data-webapp-settings-card] div:has(>h3) h3,body[data-web-shell="1"]>div:has(.settings-tab)>div div:has(>h3) h3{white-space:nowrap}body[data-web-shell="1"] [data-webapp-settings-card] button,body[data-web-shell="1"]>div:has(.settings-tab)>div button{white-space:nowrap!important;min-width:max-content!important;flex-shrink:0!important;height:auto!important}body[data-web-shell="1"] [data-webapp-settings-card] div[style*="overflow: hidden"]>button,body[data-web-shell="1"]>div:has(.settings-tab)>div div[style*="overflow: hidden"]>button{padding:6px 10px!important;font-size:11px!important}body[data-web-shell="1"] [data-webapp-settings-card] div[style*="gap: 10px"]:not(.profile-row),body[data-web-shell="1"]>div:has(.settings-tab)>div div[style*="gap: 10px"]:not(.profile-row){flex-direction:column!important}body[data-web-shell="1"] [data-webapp-settings-card] .profile-row,body[data-web-shell="1"]>div:has(.settings-tab)>div .profile-row{flex-wrap:wrap!important;row-gap:8px!important}body[data-web-shell="1"] [data-webapp-settings-card] .profile-row-actions,body[data-web-shell="1"]>div:has(.settings-tab)>div .profile-row-actions{margin-left:auto}body[data-web-shell="1"] [data-webapp-settings-card] [style*="flex: 1"],body[data-web-shell="1"]>div:has(.settings-tab)>div [style*="flex: 1"]{min-width:0!important}body[data-web-shell="1"] [data-webapp-settings-card] div,body[data-web-shell="1"]>div:has(.settings-tab)>div div{max-width:100%}body[data-web-shell="1"] [data-webapp-settings-card] input,body[data-web-shell="1"] [data-webapp-settings-card] textarea,body[data-web-shell="1"]>div:has(.settings-tab)>div input,body[data-web-shell="1"]>div:has(.settings-tab)>div textarea{padding:9px 10px!important}body[data-web-shell="1"] [data-webapp-settings-card] div[style*="position: absolute"],body[data-web-shell="1"]>div:has(.settings-tab)>div div[style*="position: absolute"]{position:static!important;display:flex!important;gap:6px;margin-top:8px}body[data-web-shell="1"] [data-webapp-settings-card] [style*=grid-template-columns],body[data-web-shell="1"]>div:has(.settings-tab)>div [style*=grid-template-columns]{grid-template-columns:1fr!important}body[data-web-shell="1"] div:has(>.settings-tab){flex-wrap:nowrap!important;overflow-x:auto;scrollbar-width:none;flex:1;min-width:0}body[data-web-shell="1"] div:has(>.settings-tab)::-webkit-scrollbar{display:none}body[data-web-shell="1"]{--chat-messages-padding: 10px 12px 8px;--chat-message-gap: 2px;--chat-turn-gap: 12px;--chat-row-gap: 8px;--chat-avatar-size: 26px;--chat-assistant-bubble-padding: 9px 12px;--chat-user-bubble-padding: 8px 12px}@media (max-width: 899px){body[data-web-shell="1"]{font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Noto Sans SC,sans-serif;--web-chat-lane-width: 100%}body[data-web-shell="1"] .chat-view{--chat-header-height: 52px;--chat-messages-padding: 14px 12px 10px;--chat-message-gap: 4px;--chat-turn-gap: 14px;--chat-row-gap: 0px;--chat-content-max-width: 100%;--chat-user-bubble-padding: 9px 12px;--chat-assistant-bubble-padding: 11px 12px;--chat-bubble-font-size: 15px;--chat-bubble-line-height: 1.68;--composer-row-padding: 4px 6px;background:var(--bg-workspace)}body[data-web-shell="1"] .app-accent-glow{display:none}body[data-web-shell="1"] .app-main{min-width:0;touch-action:pan-y}body[data-web-shell="1"] .mobile-drawer-toggle{top:calc(env(safe-area-inset-top) + 5px)!important;left:max(8px,env(safe-area-inset-left))!important;width:42px!important;height:42px!important;border-radius:8px!important;border-color:transparent!important;background:transparent!important;box-shadow:none;transition:background-color var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out)}body[data-web-shell="1"] .mobile-drawer-scrim{background:#11182757!important;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}body[data-web-shell="1"] .app-sidebar{width:min(88vw,348px)!important;padding:calc(env(safe-area-inset-top) + 12px) 0 calc(env(safe-area-inset-bottom) + 12px)!important;border-right:1px solid var(--border-default)!important;box-shadow:10px 0 28px #1118272e!important}body[data-web-shell="1"] .app-sidebar-brand{margin-bottom:8px!important;padding:0 18px 10px!important}body[data-web-shell="1"] .app-sidebar-scroll{padding:0 8px 18px!important;overscroll-behavior:contain}body[data-web-shell="1"] .app-sidebar .sidebar-row{min-height:44px;margin:2px 0;border-radius:8px}body[data-web-shell="1"] .app-sidebar .sidebar-row>button:first-child{min-height:44px;padding-top:9px!important;padding-bottom:9px!important;font-size:14px!important}body[data-web-shell="1"] .app-sidebar .sidebar-row-action,body[data-web-shell="1"] .app-sidebar .ui-icon-button--small{width:42px;height:42px;opacity:.68}body[data-web-shell="1"] .app-sidebar .sidebar-row-active .sidebar-row-action,body[data-web-shell="1"] .app-sidebar .sidebar-row-action:focus-visible{opacity:1}body[data-web-shell="1"] .chat-top-bar{min-width:0;padding-left:max(58px,calc(env(safe-area-inset-left) + 54px))!important;padding-right:max(6px,env(safe-area-inset-right))!important;background:var(--bg-deepest)!important;border-bottom-color:transparent!important}body[data-web-shell="1"] .chat-top-bar>span:first-child{font-size:15px!important;font-weight:600!important;letter-spacing:0!important}body[data-web-shell="1"] .chat-header-actions{gap:2px}body[data-web-shell="1"] .chat-header-actions .chat-header-action{width:42px;height:42px}body[data-web-shell="1"] .chat-messages{padding:var(--chat-messages-padding)!important;overscroll-behavior:contain;scrollbar-width:none}body[data-web-shell="1"] .chat-messages::-webkit-scrollbar{display:none}body[data-web-shell="1"] .chat-message-content--user{max-width:88%!important}body[data-web-shell="1"] .chat-message-bubble--user{border-radius:8px 3px 8px 8px!important}body[data-web-shell="1"] .chat-message-content .msg-actions{opacity:1;gap:0!important}body[data-web-shell="1"] .msg-action-button{width:28px;height:32px;background:transparent}body[data-web-shell="1"] .chat-input-area{padding:0 max(10px,env(safe-area-inset-right)) calc(env(safe-area-inset-bottom) + 8px) max(10px,env(safe-area-inset-left))!important;background:var(--bg-workspace)!important;border-top:0!important}body[data-web-shell="1"] .composer-shell{border-color:var(--border-default);border-radius:24px!important;background:var(--bg-surface)!important;box-shadow:none}body[data-web-shell="1"] .composer-shell:focus-within{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 14%,transparent)}body[data-web-shell="1"] .context-usage-ribbon{background:transparent;border-bottom:0!important;border-radius:16px 16px 0 0}body[data-web-shell="1"] .context-usage-ribbon__button{min-height:30px;gap:10px!important;padding:8px 12px 2px!important}body[data-web-shell="1"] .context-usage-ribbon__label{opacity:.72}body[data-web-shell="1"] .context-usage-ribbon__meter{height:4px!important;background:color-mix(in srgb,var(--text-muted) 12%,transparent)!important}body[data-web-shell="1"] .context-usage-ribbon__summary{min-width:28px!important;opacity:.82}body[data-web-shell="1"] .composer-input-row{min-height:132px;gap:0!important;padding:6px 10px 8px!important}body[data-web-shell="1"] .composer-text-input{min-width:0;padding:12px 14px 6px!important;letter-spacing:0!important}body[data-web-shell="1"] .chat-composer-hint{display:none!important}}