@polderlabs/bizar 5.4.0 → 5.5.0

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 (99) hide show
  1. package/bizar-dash/dist/assets/{EnvVarsSection-DqvB8ZcJ.js → EnvVarsSection-L413CQEI.js} +3 -3
  2. package/bizar-dash/dist/assets/{EnvVarsSection-DqvB8ZcJ.js.map → EnvVarsSection-L413CQEI.js.map} +1 -1
  3. package/bizar-dash/dist/assets/{MobileChat-DRXP2ERQ.js → MobileChat-0kGQb1S6.js} +1 -1
  4. package/bizar-dash/dist/assets/{MobileChat-DRXP2ERQ.js.map → MobileChat-0kGQb1S6.js.map} +1 -1
  5. package/bizar-dash/dist/assets/MobileSettings-Cq1oFIdO.js +1 -0
  6. package/bizar-dash/dist/assets/{MobileSettings-CVW9VhEo.js.map → MobileSettings-Cq1oFIdO.js.map} +1 -1
  7. package/bizar-dash/dist/assets/{Toast-CcZVVN4i.js → Toast-C6f1zFJ2.js} +1 -1
  8. package/bizar-dash/dist/assets/{Toast-CcZVVN4i.js.map → Toast-C6f1zFJ2.js.map} +1 -1
  9. package/bizar-dash/dist/assets/{icons-OMEGx5KA.js → icons-BsWXWkEF.js} +121 -126
  10. package/bizar-dash/dist/assets/icons-BsWXWkEF.js.map +1 -0
  11. package/bizar-dash/dist/assets/main-BklYy02e.css +1 -0
  12. package/bizar-dash/dist/assets/main-CBTgYSeG.js +18 -0
  13. package/bizar-dash/dist/assets/main-CBTgYSeG.js.map +1 -0
  14. package/bizar-dash/dist/assets/mobile-CsaN4CxH.js +1 -0
  15. package/bizar-dash/dist/assets/{mobile-XN2P7YfM.js.map → mobile-CsaN4CxH.js.map} +1 -1
  16. package/bizar-dash/dist/assets/{mobile-layout-D6V-7WnA.css → mobile-layout-CJnZNLy3.css} +1 -1
  17. package/bizar-dash/dist/assets/mobile-layout-iFBdjEE4.js +2 -0
  18. package/bizar-dash/dist/assets/mobile-layout-iFBdjEE4.js.map +1 -0
  19. package/bizar-dash/dist/assets/{useSlashCommands-iyoW95UB.js → useSlashCommands-DGJcC9iQ.js} +2 -2
  20. package/bizar-dash/dist/assets/{useSlashCommands-iyoW95UB.js.map → useSlashCommands-DGJcC9iQ.js.map} +1 -1
  21. package/bizar-dash/dist/index.html +8 -8
  22. package/bizar-dash/dist/mobile.html +4 -4
  23. package/bizar-dash/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  24. package/bizar-dash/src/server/backup-store.mjs +6 -1
  25. package/bizar-dash/src/server/bg-spawner.mjs +574 -0
  26. package/bizar-dash/src/server/memory-lightrag.mjs +242 -0
  27. package/bizar-dash/src/server/memory-store.mjs +43 -3
  28. package/bizar-dash/src/server/routes/background.mjs +143 -0
  29. package/bizar-dash/src/server/routes/lightrag.mjs +10 -0
  30. package/bizar-dash/src/server/routes/memory.mjs +8 -0
  31. package/bizar-dash/src/server/server.mjs +22 -0
  32. package/bizar-dash/src/web/App.tsx +3 -0
  33. package/bizar-dash/src/web/MobileApp.tsx +1 -10
  34. package/bizar-dash/src/web/components/InstallConfirmDialog.tsx +1 -1
  35. package/bizar-dash/src/web/components/SettingsNav.tsx +1 -10
  36. package/bizar-dash/src/web/lib/types.ts +39 -1
  37. package/bizar-dash/src/web/styles/main.css +43 -0
  38. package/bizar-dash/src/web/styles/mobile-layout.css +7 -5
  39. package/bizar-dash/src/web/styles/settings.css +46 -0
  40. package/bizar-dash/src/web/views/BackgroundAgents.tsx +399 -30
  41. package/bizar-dash/src/web/views/Settings.tsx +12 -12
  42. package/bizar-dash/src/web/views/SpawnAgentModal.tsx +221 -0
  43. package/bizar-dash/tests/BackgroundAgents.test.tsx +160 -0
  44. package/bizar-dash/tests/background-pause-resume.test.mjs +46 -0
  45. package/bizar-dash/tests/background-spawn-from-ui.test.mjs +36 -0
  46. package/bizar-dash/tests/background-steer.test.mjs +42 -0
  47. package/bizar-dash/tests/lightrag-startup-hook.test.mjs +206 -0
  48. package/bizar-dash/tests/memory-auto-reindex.test.mjs +196 -0
  49. package/bizar-dash/tests/memory-cli.test.mjs +1 -1
  50. package/bizar-dash/tests/memory-default-vault.test.mjs +90 -3
  51. package/bizar-dash/tests/memory-lightrag-extended.test.mjs +131 -0
  52. package/bizar-dash/tests/mobile-layout.test.tsx +36 -0
  53. package/bizar-dash/tests/settings-layout.test.tsx +3 -3
  54. package/bizar-dash/tests/settings-nav.test.tsx +7 -5
  55. package/cli/bin.mjs +16 -0
  56. package/cli/commands/deploy/docker.mjs +2 -1
  57. package/cli/commands/lightrag.mjs +171 -0
  58. package/cli/commands/service.mjs +7 -0
  59. package/cli/commands/util.mjs +8 -1
  60. package/cli/init.mjs +1 -1
  61. package/cli/post-install-smoke.mjs +230 -0
  62. package/cli/provision.mjs +177 -0
  63. package/cli/provision.test.mjs +180 -0
  64. package/cli/service-controller.mjs +378 -28
  65. package/cli/service-controller.test.mjs +100 -0
  66. package/cli/service-env.mjs +139 -0
  67. package/cli/service.mjs +23 -0
  68. package/config/agents/_shared/AGENT_BASELINE.md +6 -6
  69. package/install.sh +87 -6
  70. package/package.json +1 -1
  71. package/plugins/bizar/index.ts +147 -0
  72. package/plugins/bizar/src/background-state.ts +84 -5
  73. package/plugins/bizar/src/background.ts +388 -10
  74. package/plugins/bizar/src/hooks/memory-inject.ts +247 -0
  75. package/plugins/bizar/src/hooks/memory-write-on-end.ts +188 -0
  76. package/plugins/bizar/src/opencode-runner.ts +87 -1
  77. package/plugins/bizar/src/tools/bg-pause.ts +77 -0
  78. package/plugins/bizar/src/tools/bg-report-progress.ts +101 -0
  79. package/plugins/bizar/src/tools/bg-resume.ts +72 -0
  80. package/plugins/bizar/src/tools/bg-send-message.ts +105 -0
  81. package/plugins/bizar/src/tools/bg-spawn.ts +13 -6
  82. package/plugins/bizar/src/tools/bg-status.ts +10 -0
  83. package/plugins/bizar/src/tools/memory-list.ts +135 -0
  84. package/plugins/bizar/src/tools/memory-read.ts +142 -0
  85. package/plugins/bizar/src/tools/memory-search.ts +228 -0
  86. package/plugins/bizar/src/tools/memory-write.ts +183 -0
  87. package/plugins/bizar/tests/memory-write-on-end.test.ts +92 -0
  88. package/plugins/bizar/tests/tools/bg-pause.test.ts +64 -0
  89. package/plugins/bizar/tests/tools/bg-report-progress.test.ts +82 -0
  90. package/plugins/bizar/tests/tools/bg-resume.test.ts +43 -0
  91. package/plugins/bizar/tests/tools/bg-send-message.test.ts +46 -0
  92. package/bizar-dash/dist/assets/MobileSettings-CVW9VhEo.js +0 -1
  93. package/bizar-dash/dist/assets/icons-OMEGx5KA.js.map +0 -1
  94. package/bizar-dash/dist/assets/main-CMAGZouj.js +0 -16
  95. package/bizar-dash/dist/assets/main-CMAGZouj.js.map +0 -1
  96. package/bizar-dash/dist/assets/main-O2tZVdHm.css +0 -1
  97. package/bizar-dash/dist/assets/mobile-XN2P7YfM.js +0 -1
  98. package/bizar-dash/dist/assets/mobile-layout-DqTxvXZp.js +0 -2
  99. package/bizar-dash/dist/assets/mobile-layout-DqTxvXZp.js.map +0 -1
@@ -0,0 +1 @@
1
+ import{M as r}from"./mobile-layout-iFBdjEE4.js";import{b as e,j as o,r as n}from"./react-vendor-Dn4wqh4Z.js";import"./icons-BsWXWkEF.js";const t=document.getElementById("root");if(!t)throw new Error("Root element #root not found");e(t).render(o.jsx(n.StrictMode,{children:o.jsx(r,{})}));
@@ -1 +1 @@
1
- {"version":3,"file":"mobile-XN2P7YfM.js","sources":["../../src/web/mobile.tsx"],"sourcesContent":["// src/mobile.tsx — entry point for mobile dashboard.\nimport { StrictMode } from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { MobileApp } from './MobileApp';\nimport './styles/mobile.css';\nimport './styles/mobile-layout.css';\n\nconst root = document.getElementById('root');\nif (!root) throw new Error('Root element #root not found');\ncreateRoot(root).render(\n <StrictMode>\n <MobileApp />\n </StrictMode>,\n);\n"],"names":["root","createRoot","jsx","StrictMode","MobileApp"],"mappings":"yIAOA,MAAMA,EAAO,SAAS,eAAe,MAAM,EAC3C,GAAI,CAACA,EAAM,MAAM,IAAI,MAAM,8BAA8B,EACzDC,EAAWD,CAAI,EAAE,OACfE,EAAAA,IAACC,EAAAA,WAAA,CACC,SAAAD,EAAAA,IAACE,EAAA,CAAA,CAAU,CAAA,CACb,CACF"}
1
+ {"version":3,"file":"mobile-CsaN4CxH.js","sources":["../../src/web/mobile.tsx"],"sourcesContent":["// src/mobile.tsx — entry point for mobile dashboard.\nimport { StrictMode } from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { MobileApp } from './MobileApp';\nimport './styles/mobile.css';\nimport './styles/mobile-layout.css';\n\nconst root = document.getElementById('root');\nif (!root) throw new Error('Root element #root not found');\ncreateRoot(root).render(\n <StrictMode>\n <MobileApp />\n </StrictMode>,\n);\n"],"names":["root","createRoot","jsx","StrictMode","MobileApp"],"mappings":"yIAOA,MAAMA,EAAO,SAAS,eAAe,MAAM,EAC3C,GAAI,CAACA,EAAM,MAAM,IAAI,MAAM,8BAA8B,EACzDC,EAAWD,CAAI,EAAE,OACfE,EAAAA,IAACC,EAAAA,WAAA,CACC,SAAAD,EAAAA,IAACE,EAAA,CAAA,CAAU,CAAA,CACb,CACF"}
@@ -1 +1 @@
1
- @media (max-width: 480px){.chat-composer-wrap{padding:.375rem .375rem .5rem}.chat-welcome-h1{font-size:1.875rem}}:root{--bg: #0b0e14;--bg-elev: #12161f;--bg-elev-2: #1a1f2b;--bg-elev-3: #232a39;--surface: var(--bg-elev);--surface-2: var(--bg-elev-2);--border: #232a39;--border-strong: #2d3648;--text: #c9d1d9;--text-muted: #6e7681;--text-dim: #484f58;--text-strong: #f0f6fc;--accent: #8b5cf6;--accent-bg: rgba(139, 92, 246, .12);--accent-border: rgba(139, 92, 246, .4);--accent-2: #a78bfa;--success: #3fb950;--warning: #d29922;--error: #f85149;--info: #58a6ff;--font-sans: "Inter var", "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", ui-monospace, monospace;--mobile-tap-target: 44px;--mobile-nav-height: 56px;--mobile-topbar-height: 48px;--mobile-padding: 16px;--mobile-font-base: 16px}*,*:before,*:after{box-sizing:border-box;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;touch-action:manipulation}html,body{margin:0;padding:0;height:100%;overflow:hidden}body{font-family:var(--font-sans);font-size:var(--mobile-font-base);line-height:1.5;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;overscroll-behavior:none}button,[role=button],a,input,select,textarea{touch-action:manipulation}input,textarea,select{user-select:text;-webkit-user-select:text;font-size:var(--mobile-font-base)}a{color:var(--accent);text-decoration:none}code,.mono{font-family:var(--font-mono)}.mobile-app{display:flex;flex-direction:column;height:100vh;height:100dvh;background:var(--bg);color:var(--text);font-family:var(--font-sans);padding-top:env(safe-area-inset-top,0);padding-bottom:env(safe-area-inset-bottom,0);overscroll-behavior:none}.mobile-topbar{height:var(--mobile-topbar-height);flex-shrink:0;display:flex;align-items:center;justify-content:space-between;padding:0 var(--mobile-padding);background:var(--surface);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:10}.mobile-topbar-left{display:flex;align-items:center;gap:8px}.mobile-logo{font-size:20px;line-height:1}.mobile-title{font-size:16px;font-weight:600;color:var(--text-strong)}.mobile-topbar-right{display:flex;align-items:center;gap:4px}.mobile-icon-btn{width:var(--mobile-tap-target);height:var(--mobile-tap-target);min-width:var(--mobile-tap-target);min-height:var(--mobile-tap-target);display:flex;align-items:center;justify-content:center;background:transparent;border:none;border-radius:8px;color:var(--text-muted);cursor:pointer;transition:background .12s ease,color .12s ease;padding:0}.mobile-icon-btn:hover{background:var(--bg-elev-2);color:var(--text)}.mobile-icon-btn:active{background:var(--bg-elev-3)}.mobile-icon-btn-danger{color:var(--error)}.mobile-content{flex:1;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;padding:var(--mobile-padding);padding-bottom:calc(var(--mobile-nav-height) + var(--mobile-padding) + env(safe-area-inset-bottom,0))}.mobile-view{max-width:100%;min-width:0}.mobile-view-footer{padding:24px 0;text-align:center}.mobile-bottom-nav{position:fixed;bottom:0;left:0;right:0;height:calc(var(--mobile-nav-height) + env(safe-area-inset-bottom,0));background:var(--surface);border-top:1px solid var(--border);display:flex;align-items:stretch;padding-bottom:env(safe-area-inset-bottom,0);z-index:50}.mobile-nav-btn{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;background:transparent;border:none;color:var(--text-muted);cursor:pointer;min-height:var(--mobile-tap-target);padding:8px 4px;transition:color .12s ease}.mobile-nav-btn-active{color:var(--accent)}.mobile-nav-label{font-size:10px;font-weight:500}.mobile-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100vh;height:100dvh;gap:12px;color:var(--text-muted)}.mobile-stats{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:20px}.mobile-stat{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:16px;text-align:center}.mobile-stat-value{font-size:28px;font-weight:700;color:var(--accent);line-height:1}.mobile-stat-label{font-size:12px;color:var(--text-muted);margin-top:4px}.mobile-section{margin-bottom:20px}.mobile-section-title{font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;margin:0 0 8px;display:flex;align-items:center;gap:6px}.mobile-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:14px;margin-bottom:12px}.mobile-card-list{display:flex;flex-direction:column;gap:6px}.mobile-agent-card{display:flex;align-items:center;gap:10px;padding:12px;background:var(--surface);border:1px solid var(--border);border-radius:10px}.mobile-agent-dot{width:8px;height:8px;border-radius:50%;background:var(--text-dim);flex-shrink:0}.mobile-agent-dot[data-status=working],.mobile-agent-dot[data-status=doing]{background:var(--success);animation:pulse-dot 1.6s ease-in-out infinite}.mobile-agent-dot[data-status=error],.mobile-agent-dot[data-status=stuck]{background:var(--error)}.mobile-agent-dot[data-status=idle]{background:var(--text-dim)}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.4}}.mobile-agent-info{flex:1;min-width:0}.mobile-agent-name{font-size:14px;font-weight:500;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;white-space:normal;overflow-wrap:anywhere}.mobile-agent-meta{font-size:12px;color:var(--text-muted);display:block;overflow-wrap:anywhere}.mobile-task-card{width:100%;padding:12px;background:var(--surface);border:1px solid var(--border);border-radius:10px;display:flex;align-items:center;gap:10px;text-align:left}.mobile-task-actions{display:flex;gap:2px;flex-shrink:0}.priority-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.task-content{flex:1;min-width:0}.task-title{font-size:14px;font-weight:500;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;white-space:normal;overflow-wrap:anywhere}.task-meta{font-size:12px;color:var(--text-muted);display:block;overflow-wrap:anywhere}.mobile-tasks-toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:16px}.mobile-search-input{flex:1;height:var(--mobile-tap-target);padding:0 14px;background:var(--surface);border:1px solid var(--border);border-radius:22px;color:var(--text);font-family:inherit;font-size:var(--mobile-font-base);outline:none}.mobile-search-input:focus{border-color:var(--accent)}.mobile-empty-inline{font-size:13px;color:var(--text-muted);padding:4px 0}.mobile-empty-compact{padding:24px 16px}.mobile-setting-row{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px solid var(--border)}.mobile-setting-row:last-child{border-bottom:none}.mobile-setting-label{font-size:14px;color:var(--text)}.mobile-setting-value{font-size:14px;color:var(--text-muted);text-align:right}.mobile-list-item{display:flex;align-items:center;gap:12px;padding:12px;background:var(--surface);border:1px solid var(--border);border-radius:10px}.mobile-list-icon{color:var(--text-muted);flex-shrink:0}.mobile-list-content{flex:1;min-width:0}.mobile-list-title{font-size:14px;font-weight:500;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;white-space:normal;overflow-wrap:anywhere}.mobile-list-meta{font-size:12px;color:var(--text-muted);display:block;overflow-wrap:anywhere}.mobile-list-badge{font-size:11px;padding:2px 8px;border-radius:12px;background:var(--bg-elev-3);color:var(--text-muted);flex-shrink:0}.mobile-list-badge[data-status=working],.mobile-list-badge[data-status=doing]{background:#3fb95026;color:var(--success)}.mobile-list-badge[data-status=error],.mobile-list-badge[data-status=stuck]{background:#f8514926;color:var(--error)}.badge-on{background:#3fb95026;color:var(--success)}.badge-off{background:var(--bg-elev-3);color:var(--text-dim)}.mobile-active-badge{font-size:11px;padding:2px 8px;border-radius:12px;background:var(--accent-bg);color:var(--accent);flex-shrink:0}.mobile-empty{text-align:center;padding:48px 20px;color:var(--text-muted)}.mobile-empty svg{margin-bottom:12px;opacity:.4}.mobile-empty p{margin:0 0 6px}.muted{color:var(--text-muted);font-size:13px}.mobile-btn{min-height:var(--mobile-tap-target);min-width:var(--mobile-tap-target);padding:12px 20px;border-radius:10px;font-size:15px;font-weight:500;border:none;background:var(--accent);color:#fff;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:opacity .12s ease;text-decoration:none}.mobile-btn:active{opacity:.7}.mobile-btn-secondary{background:var(--surface);border:1px solid var(--border);color:var(--text)}.mobile-more-footer{padding:16px 0;border-top:1px solid var(--border);margin-top:8px}.mobile-more-link{display:flex;align-items:center;justify-content:center;gap:4px;color:var(--accent);font-size:14px;text-decoration:none;min-height:var(--mobile-tap-target);padding:12px}[data-theme=dark] .mobile-app{background:#0d1117}[data-theme=light]{--bg: #ffffff;--bg-elev: #f6f8fa;--bg-elev-2: #eaeef2;--bg-elev-3: #d0d7de;--surface: var(--bg-elev);--surface-2: var(--bg-elev-2);--border: #d0d7de;--border-strong: #afb8c1;--text: #1f2328;--text-muted: #656d76;--text-dim: #8c959f;--text-strong: #1f2328;--accent: #7c3aed;--accent-2: #6d28d9;--accent-bg: rgba(124, 58, 237, .08);--accent-border: rgba(124, 58, 237, .3)}.mobile-sheet-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;z-index:100;display:flex;align-items:flex-end;animation:sheet-fade-in .15s ease}@keyframes sheet-fade-in{0%{opacity:0}to{opacity:1}}.mobile-sheet{width:100%;background:var(--surface);border-radius:16px 16px 0 0;max-height:85vh;overflow-y:auto;overflow-x:hidden;animation:sheet-slide-up .2s cubic-bezier(.32,.72,0,1);display:flex;flex-direction:column}@keyframes sheet-slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.mobile-sheet-handle{width:36px;height:4px;background:var(--border-strong);border-radius:2px;margin:10px auto 0;flex-shrink:0}.mobile-sheet-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px 8px;border-bottom:1px solid var(--border);flex-shrink:0}.mobile-sheet-title{font-size:16px;font-weight:600;color:var(--text-strong);margin:0}.mobile-sheet-content{flex:1;overflow-y:auto;padding:12px 16px}.mobile-sheet-actions{padding:12px 16px;border-top:1px solid var(--border);flex-shrink:0;display:flex;gap:8px}.mobile-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--bg);z-index:200;display:flex;flex-direction:column;animation:modal-fade-in .15s ease}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}.mobile-modal{flex:1;display:flex;flex-direction:column;overflow:hidden}.mobile-modal-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border);flex-shrink:0}.mobile-modal-title{font-size:18px;font-weight:600;color:var(--text-strong);margin:0}.mobile-modal-content{flex:1;overflow-y:auto;padding:16px}.mobile-modal-actions{padding:12px 16px;border-top:1px solid var(--border);flex-shrink:0;display:flex;gap:8px}.mobile-search-container{display:flex;flex-direction:column;gap:12px;height:100%}.mobile-search-input-row{display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:0 14px;height:var(--mobile-tap-target)}.mobile-search-field{flex:1;background:transparent;border:none;outline:none;color:var(--text);font-family:inherit;font-size:var(--mobile-font-base)}.mobile-search-scopes{display:flex;gap:6px;flex-wrap:wrap}.mobile-scope-chip{min-height:var(--mobile-tap-target);padding:10px 14px;border-radius:16px;font-size:13px;font-weight:500;background:var(--surface);border:1px solid var(--border);color:var(--text-muted);cursor:pointer;transition:all .12s ease}.mobile-scope-chip.active{background:var(--accent-bg);border-color:var(--accent-border);color:var(--accent)}.mobile-search-results{flex:1;overflow-y:auto}.mobile-search-group{margin-bottom:16px}.mobile-search-group-title{font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;margin:0 0 6px;display:flex;align-items:center;gap:4px}.mobile-search-result-item{padding:10px 12px;background:var(--surface);border:1px solid var(--border);border-radius:8px;margin-bottom:4px;cursor:pointer}.mobile-search-result-title{font-size:14px;font-weight:500;display:block;overflow-wrap:anywhere}.mobile-search-result-meta{font-size:12px;color:var(--text-muted);display:block;overflow-wrap:anywhere}.mobile-search-loading{text-align:center;padding:20px;color:var(--text-muted);font-size:14px}.mobile-notif-btn{position:relative}.mobile-notif-badge{position:absolute;top:4px;right:4px;min-width:16px;height:16px;background:var(--error);color:#fff;font-size:10px;font-weight:700;border-radius:8px;display:flex;align-items:center;justify-content:center;padding:0 4px}.mobile-notif-list{display:flex;flex-direction:column;gap:4px}.mobile-notif-item{width:100%;min-height:var(--mobile-tap-target);display:flex;align-items:flex-start;gap:12px;padding:12px;background:var(--surface);border:1px solid var(--border);border-radius:10px;cursor:pointer;position:relative}.mobile-notif-item.unread{border-color:var(--accent-border)}.mobile-notif-icon{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;flex-shrink:0}.mobile-notif-icon.severity-success{background:#3fb95026;color:var(--success)}.mobile-notif-icon.severity-error{background:#f8514926;color:var(--error)}.mobile-notif-icon.severity-warning{background:#d2992226;color:var(--warning)}.mobile-notif-icon.severity-info{background:#58a6ff26;color:var(--info)}.mobile-notif-body{flex:1;min-width:0}.mobile-notif-title{font-size:14px;font-weight:500;display:block;overflow-wrap:anywhere}.mobile-notif-text{font-size:13px;color:var(--text-muted);display:block;margin-top:2px}.mobile-notif-time{font-size:11px;color:var(--text-dim);display:block;margin-top:4px}.mobile-notif-dot{width:8px;height:8px;border-radius:50%;background:var(--accent);flex-shrink:0;margin-top:6px}.mobile-project-btn{display:flex;align-items:center;gap:4px;background:transparent;border:none;color:var(--text-muted);cursor:pointer;min-height:var(--mobile-tap-target);min-width:var(--mobile-tap-target);padding:10px 8px;border-radius:6px;font-size:14px;font-family:inherit}.mobile-project-btn:hover{background:var(--bg-elev-2);color:var(--text)}.mobile-project-name{max-width:120px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;white-space:normal}.mobile-project-list{display:flex;flex-direction:column;gap:6px}.mobile-project-item{display:flex;align-items:center;gap:12px;padding:12px;background:var(--surface);border:1px solid var(--border);border-radius:10px;cursor:pointer}.mobile-project-item.active{border-color:var(--accent-border)}.mobile-project-status{width:8px;height:8px;border-radius:50%;background:var(--text-dim);flex-shrink:0}.mobile-project-status[data-status=active]{background:var(--success)}.mobile-project-status[data-status=error]{background:var(--error)}.mobile-project-info{flex:1;min-width:0}.mobile-project-item-name{font-size:14px;font-weight:500;display:block}.mobile-project-item-path{font-size:11px;color:var(--text-muted);display:block;overflow-wrap:anywhere;font-family:var(--font-mono)}.mobile-back-btn{position:fixed;top:calc(var(--mobile-topbar-height) + 8px);left:12px;z-index:60;background:var(--surface);border:1px solid var(--border);color:var(--text);font-size:13px;font-weight:500;min-height:var(--mobile-tap-target);padding:10px 14px;border-radius:20px;cursor:pointer;display:flex;align-items:center;gap:4px;box-shadow:0 2px 8px #0000004d}.mobile-kanban-tabs{display:flex;gap:4px;margin-bottom:12px;overflow-x:auto;-webkit-overflow-scrolling:touch}.mobile-kanban-tab{min-height:var(--mobile-tap-target);padding:10px 14px;border-radius:20px;font-size:13px;font-weight:500;background:var(--surface);border:1px solid var(--border);color:var(--text-muted);cursor:pointer;white-space:nowrap;transition:all .12s ease;flex-shrink:0}.mobile-kanban-tab.active{background:var(--accent-bg);border-color:var(--accent-border);color:var(--accent)}.mobile-tasks-filters{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.mobile-filter-select{min-height:var(--mobile-tap-target);padding:0 10px;background:var(--surface);border:1px solid var(--border);border-radius:18px;color:var(--text);font-family:inherit;font-size:13px;cursor:pointer}.mobile-fab{position:fixed;bottom:calc(var(--mobile-nav-height) + 80px + env(safe-area-inset-bottom,0));right:20px;width:56px;height:56px;border-radius:50%;background:var(--accent);color:#fff;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 16px #8b5cf666;z-index:30;transition:transform .12s ease,box-shadow .12s ease}.mobile-fab:active{transform:scale(.94);box-shadow:0 2px 8px #8b5cf64d}.mobile-task-detail-actions{display:flex;gap:8px;flex-wrap:wrap}.mobile-task-detail{display:flex;flex-direction:column;gap:12px}.mobile-task-detail-header{display:flex;align-items:center;gap:8px}.mobile-task-status-badge{font-size:11px;font-weight:600;padding:3px 10px;border-radius:12px;text-transform:capitalize}.mobile-task-status-badge.status-queued{background:#58a6ff26;color:var(--info)}.mobile-task-status-badge.status-doing{background:#3fb95026;color:var(--success)}.mobile-task-status-badge.status-blocked{background:#f8514926;color:var(--error)}.mobile-task-status-badge.status-done{background:#3fb95026;color:var(--success)}.mobile-task-priority{font-size:11px;font-weight:600;padding:3px 10px;border-radius:12px;text-transform:capitalize}.mobile-task-priority.priority-high{background:#f8514926;color:var(--error)}.mobile-task-priority.priority-normal{background:#58a6ff26;color:var(--info)}.mobile-task-priority.priority-low{background:var(--bg-elev-3);color:var(--text-dim)}.mobile-task-detail-title{font-size:18px;font-weight:600;color:var(--text-strong);margin:0}.mobile-task-detail-desc{font-size:14px;color:var(--text-muted);line-height:1.5;margin:0;overflow-wrap:anywhere}.mobile-task-detail-meta{display:flex;flex-direction:column;gap:0}.mobile-task-detail-row{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid var(--border);font-size:13px}.mobile-task-detail-row:last-child{border-bottom:none}.mobile-task-detail-row span:first-child{color:var(--text-muted)}.mobile-task-detail-row span:last-child{color:var(--text);font-weight:500}.mobile-task-form{display:flex;flex-direction:column;gap:12px}.mobile-field-label{font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px;display:block}.mobile-input{width:100%;min-height:var(--mobile-tap-target);padding:10px 14px;background:var(--surface);border:1px solid var(--border);border-radius:10px;color:var(--text);font-family:inherit;font-size:var(--mobile-font-base);outline:none;transition:border-color .12s ease}.mobile-input:focus{border-color:var(--accent)}.mobile-input-sm{min-height:var(--mobile-tap-target);padding:8px 12px}.mobile-agent-detail{display:flex;flex-direction:column;gap:12px}.mobile-agent-detail-status{display:flex;align-items:center;gap:8px}.mobile-agent-detail-status-text{font-size:14px;font-weight:500;text-transform:capitalize}.mobile-agent-detail-desc{font-size:14px;color:var(--text-muted);line-height:1.5;margin:0;overflow-wrap:anywhere}.mobile-view-canvas{padding-bottom:80px}.mobile-canvas-bar{display:flex;align-items:center;justify-content:space-between;padding:0 0 12px;border-bottom:1px solid var(--border);margin-bottom:12px}.mobile-canvas-meta{display:flex;flex-direction:column;gap:2px}.mobile-canvas-title{font-size:16px;font-weight:600;color:var(--text-strong)}.mobile-canvas-status{font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px;text-transform:capitalize}.mobile-canvas-status[data-status=approved],.mobile-canvas-status[data-status=done]{background:#3fb95026;color:var(--success)}.mobile-canvas-status[data-status=in-progress],.mobile-canvas-status[data-status=doing]{background:#58a6ff26;color:var(--info)}.mobile-canvas-status[data-status=draft]{background:var(--bg-elev-3);color:var(--text-dim)}.mobile-canvas-actions{display:flex;align-items:center;gap:4px}.mobile-canvas-comment-count{position:absolute;top:2px;right:2px;background:var(--accent);color:#fff;font-size:9px;font-weight:700;border-radius:6px;padding:1px 4px;min-width:14px;text-align:center}.mobile-canvas-elements{display:flex;flex-direction:column;gap:10px}.mobile-canvas-element{background:var(--surface);border:2px solid var(--border);border-radius:12px;overflow:hidden;cursor:pointer}.mobile-canvas-element.selected{box-shadow:0 0 0 2px var(--accent)}.mobile-canvas-el-header{display:flex;align-items:center;gap:6px;padding:8px 12px}.mobile-canvas-el-type{font-size:11px;font-weight:600;text-transform:uppercase}.mobile-canvas-el-status{font-size:10px;padding:1px 6px;border-radius:8px;background:var(--bg-elev-3);color:var(--text-muted);margin-left:auto}.mobile-canvas-el-title{font-size:14px;font-weight:600;padding:8px 12px;color:var(--text-strong)}.mobile-canvas-el-content{font-size:13px;color:var(--text-muted);padding:0 12px 8px;line-height:1.4}.mobile-canvas-el-comments{display:flex;align-items:center;gap:4px;padding:6px 12px;border-top:1px solid var(--border);font-size:11px;color:var(--text-dim)}.mobile-canvas-comments{margin-top:16px;background:var(--surface);border:1px solid var(--border);border-radius:12px;overflow:hidden}.mobile-canvas-comments-header{display:flex;align-items:center;justify-content:space-between;padding:12px;border-bottom:1px solid var(--border)}.mobile-canvas-comments-header h4{margin:0;font-size:14px;font-weight:600}.mobile-canvas-comment-list{max-height:300px;overflow-y:auto;padding:12px}.mobile-canvas-comment{margin-bottom:12px}.mobile-canvas-comment-head{display:flex;align-items:center;gap:8px;margin-bottom:4px}.mobile-canvas-comment-head .mono{font-size:11px;font-weight:600}.mobile-canvas-comment-head .muted{font-size:11px;color:var(--text-dim);margin-left:auto}.mobile-canvas-comment-text{font-size:13px;color:var(--text-muted);line-height:1.4}.mobile-canvas-comment-input{display:flex;gap:8px;padding:12px;border-top:1px solid var(--border)}.mobile-canvas-comment-input .mobile-input{flex:1}.mobile-activity-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.mobile-event-item{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;background:var(--surface);border:1px solid var(--border);border-radius:10px;margin-bottom:4px;cursor:pointer}.mobile-event-kind{font-size:10px;font-weight:700;padding:2px 8px;border-radius:8px;background:var(--bg-elev-3);color:var(--text-muted);text-transform:uppercase;flex-shrink:0}.mobile-event-msg{flex:1;font-size:13px;color:var(--text);overflow-wrap:anywhere}.mobile-event-time{font-size:11px;color:var(--text-dim);flex-shrink:0}.mobile-submit-hero{background:linear-gradient(135deg,var(--accent-bg) 0%,var(--bg-elev) 100%);border:1px solid var(--accent-border);border-radius:16px;padding:16px;margin-bottom:16px}.mobile-submit-input{width:100%;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:12px;color:var(--text);font-family:inherit;font-size:var(--mobile-font-base);resize:none;outline:none;margin-bottom:12px}.mobile-submit-input:focus{border-color:var(--accent)}.mobile-submit-actions{display:flex;flex-direction:column;gap:10px}.mobile-submit-chips{display:flex;gap:6px;flex-wrap:wrap}.mobile-submit-chip{min-height:var(--mobile-tap-target);padding:10px 12px;border-radius:16px;font-size:12px;font-weight:500;background:var(--surface);border:1px solid var(--border);color:var(--text-muted);cursor:pointer;transition:all .12s ease}.mobile-submit-chip:hover{border-color:var(--accent-border);color:var(--accent)}.mobile-more-nav-item{display:flex;align-items:center;gap:14px;padding:14px 12px;background:var(--surface);border:1px solid var(--border);border-radius:12px;margin-bottom:6px;cursor:pointer;transition:all .12s ease}.mobile-more-nav-item:hover{border-color:var(--accent-border);background:var(--bg-elev-2)}.mobile-more-nav-icon{width:40px;height:40px;border-radius:10px;background:var(--bg-elev-2);color:var(--accent);display:flex;align-items:center;justify-content:center;flex-shrink:0}.mobile-more-nav-content{flex:1;min-width:0}.mobile-more-nav-label{font-size:15px;font-weight:600;color:var(--text-strong);display:flex;align-items:center;gap:8px}.mobile-more-nav-count{font-size:11px;font-weight:600;padding:1px 7px;border-radius:10px;background:var(--bg-elev-3);color:var(--text-muted)}.mobile-more-nav-desc{font-size:12px;color:var(--text-muted);display:block;margin-top:2px}.mobile-more-nav-arrow{color:var(--text-dim);flex-shrink:0}.mobile-config-list{display:flex;flex-direction:column;gap:0}.mobile-config-row{display:flex;align-items:flex-start;flex-wrap:wrap;gap:10px;padding:10px 0;border-bottom:1px solid var(--border)}.mobile-config-row:last-child{border-bottom:none}.mobile-config-key{flex:0 0 104px;display:flex;flex-direction:column;gap:2px}.mobile-config-key .mono{font-size:12px;font-weight:500;color:var(--text);word-break:break-all}.mobile-config-type{font-size:10px;color:var(--text-dim);text-transform:uppercase}.mobile-config-value{flex:1;min-width:0}.mobile-config-value .mobile-input{min-height:var(--mobile-tap-target);padding:6px 10px;font-size:13px}.mobile-toggle{position:relative;display:inline-flex;align-items:center;cursor:pointer;width:44px;height:24px}.mobile-toggle input{opacity:0;width:0;height:0;position:absolute}.mobile-toggle-slider{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--bg-elev-3);border-radius:12px;transition:background .2s ease}.mobile-toggle-slider:before{content:"";position:absolute;left:2px;top:2px;width:20px;height:20px;background:#fff;border-radius:50%;transition:transform .2s ease}.mobile-toggle input:checked+.mobile-toggle-slider{background:var(--accent)}.mobile-toggle input:checked+.mobile-toggle-slider:before{transform:translate(20px)}.mobile-theme-btns{display:flex;gap:6px}.mobile-theme-btn{display:flex;align-items:center;gap:4px;min-height:var(--mobile-tap-target);padding:10px 12px;border-radius:16px;font-size:12px;font-weight:500;background:var(--surface);border:1px solid var(--border);color:var(--text-muted);cursor:pointer;transition:all .12s ease}.mobile-theme-btn.active{background:var(--accent-bg);border-color:var(--accent-border);color:var(--accent)}.mobile-accent-swatches{display:flex;gap:8px;flex-wrap:wrap}.mobile-accent-swatch{width:var(--mobile-tap-target);height:var(--mobile-tap-target);border-radius:50%;border:2px solid transparent;cursor:pointer;transition:transform .12s ease}.mobile-accent-swatch:hover{transform:scale(1.1)}.mobile-accent-swatch.active{border-color:#fff;box-shadow:0 0 0 2px var(--accent)}.mobile-settings-save-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:10px 16px;background:var(--warning);color:#000;font-size:13px;font-weight:500;margin:calc(-1 * var(--mobile-padding));margin-bottom:12px}.mobile-list-item-interactive{cursor:pointer;transition:all .12s ease}.mobile-list-item-interactive:hover{border-color:var(--accent-border);background:var(--bg-elev-2)}.mobile-list-item-interactive:active{opacity:.8}.mobile-list-status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.mobile-list-status-dot[data-status=working],.mobile-list-status-dot[data-status=doing]{background:var(--success)}.mobile-list-status-dot[data-status=error],.mobile-list-status-dot[data-status=stuck]{background:var(--error)}.mobile-list-status-dot[data-status=idle]{background:var(--text-dim)}.mobile-list-badge.badge-accent{background:var(--accent-bg);color:var(--accent)}.mobile-list-badge.badge-warning{background:#d2992226;color:var(--warning)}.mobile-btn-danger{background:var(--error);color:#fff}.mobile-btn-danger:active{opacity:.8}.mobile-artifact-iframe{width:100%;min-height:min(70dvh,560px);border:1px solid var(--border);border-radius:12px;background:#fff}@media (max-width: 420px){.mobile-config-key,.mobile-config-value{flex-basis:100%}.mobile-task-detail-row{flex-direction:column}.mobile-task-detail-row span:first-child,.mobile-task-detail-row span:last-child{flex:none;text-align:left}}.mobile-overview{display:flex;flex-direction:column;gap:16px}.mobile-hero{padding:20px 16px;background:linear-gradient(135deg,#8b5cf626,#3b82f61a);border:1px solid var(--border);border-radius:14px}.mobile-hero h1{margin:0 0 8px;font-size:24px;font-weight:700;line-height:1.2}.mobile-hero p{margin:0 0 12px;font-size:13px;color:var(--text-dim);line-height:1.4}.mobile-hero-input{width:100%;background:var(--surface-2);border:1px solid var(--border);border-radius:8px;padding:10px 12px;color:var(--text);font-size:14px;font-family:inherit;resize:vertical;margin-bottom:8px;box-sizing:border-box}.mobile-hero-submit{width:100%;padding:10px;background:var(--accent, #8b5cf6);color:#fff;border:none;border-radius:8px;font-weight:600;font-size:14px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px}.mobile-hero-submit:disabled{opacity:.5;cursor:not-allowed}.mobile-stats-stack{display:flex;flex-direction:column;gap:8px}.mobile-stat-card{display:flex;align-items:center;gap:14px;padding:14px 16px;background:var(--surface-1);border:1px solid var(--border);border-radius:10px}.mobile-stat-card.is-blue{border-left:4px solid #58a6ff}.mobile-stat-card.is-purple{border-left:4px solid #8b5cf6}.mobile-stat-card.is-green{border-left:4px solid #3fb950}.mobile-stat-card.is-yellow{border-left:4px solid #d29922}.mobile-stat-icon{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:10px;background:var(--surface-2);color:var(--text);flex-shrink:0}.mobile-stat-body{flex:1;min-width:0}.mobile-stat-label{font-size:12px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.05em}.mobile-stat-value{font-size:24px;font-weight:700;margin-top:2px}.mobile-stat-subtext{font-size:11px;color:var(--text-dim);margin-top:2px}.mobile-activity-card,.mobile-quick-actions{padding:16px;background:var(--surface-1);border:1px solid var(--border);border-radius:10px}.mobile-activity-card h3{margin:0 0 12px;font-size:14px;font-weight:600}.mobile-activity-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}.mobile-activity-item{display:flex;gap:8px;padding:8px;border-radius:6px;background:var(--surface-2);font-size:12px}.mobile-activity-time{color:var(--text-dim);font-variant-numeric:tabular-nums;flex-shrink:0}.mobile-activity-text{word-break:break-word}.mobile-quick-actions{display:flex;flex-direction:column;gap:8px}.mobile-quick-action{display:flex;align-items:center;gap:8px;padding:12px;background:var(--surface-2);border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:14px;font-weight:500;text-align:left;cursor:pointer}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.mobile-layout{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh;background:var(--bg)}.mobile-header{position:sticky;top:0;z-index:100;display:flex;align-items:center;gap:12px;height:56px;padding:0 16px;background:var(--surface-1, var(--surface, var(--bg-elev)));border-bottom:1px solid transparent;transition:border-color .2s ease}.mobile-header.is-scrolled{border-bottom-color:var(--border)}.mobile-header-title{flex:1;font-size:18px;font-weight:600;margin:0;color:var(--text-strong, var(--text))}.mobile-menu-btn,.mobile-search-btn,.mobile-settings-exit{background:transparent;border:none;color:var(--text);padding:8px;border-radius:8px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .12s ease}.mobile-menu-btn:hover,.mobile-search-btn:hover,.mobile-settings-exit:hover{background:var(--bg-elev-2, var(--bg-elev))}.mobile-menu-btn:active,.mobile-search-btn:active,.mobile-settings-exit:active{background:var(--bg-elev-3)}.mobile-content{flex:1;overflow-y:auto;overflow-x:hidden;padding:16px 16px 80px;-webkit-overflow-scrolling:touch}.mobile-bottom-nav{position:fixed;bottom:0;left:0;right:0;display:flex;height:64px;background:var(--surface-1, var(--surface, var(--bg-elev)));border-top:1px solid var(--border);z-index:50;padding-bottom:env(safe-area-inset-bottom,0)}.mobile-nav-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;background:transparent;border:none;color:var(--text-dim, var(--text-muted));font-size:10px;font-family:inherit;cursor:pointer;padding:4px 0;transition:color .12s ease}.mobile-nav-item.is-active{color:var(--accent)}.mobile-nav-label{font-size:10px;font-weight:500;line-height:1}.mobile-drawer-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:60;animation:fadeIn .2s ease}.mobile-drawer{position:fixed;top:0;left:0;bottom:0;width:80%;max-width:320px;background:var(--surface-1, var(--surface, var(--bg-elev)));z-index:70;transform:translate(-100%);transition:transform .25s cubic-bezier(.4,0,.2,1);overflow-y:auto;-webkit-overflow-scrolling:touch;display:flex;flex-direction:column}.mobile-drawer.is-open{transform:translate(0)}.mobile-drawer-head{position:sticky;top:0;display:flex;align-items:center;justify-content:space-between;padding:16px;background:var(--surface-1, var(--surface, var(--bg-elev)));border-bottom:1px solid var(--border);flex-shrink:0}.mobile-drawer-head h2{font-size:18px;font-weight:600;margin:0;color:var(--text-strong, var(--text))}.mobile-drawer-close{background:transparent;border:none;color:var(--text);padding:8px;border-radius:8px;cursor:pointer;display:flex;align-items:center;justify-content:center}.mobile-drawer-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;padding:16px;flex:1}.mobile-drawer-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:16px 8px;background:var(--surface-2, var(--bg-elev-2));border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:12px;font-family:inherit;cursor:pointer;min-height:80px;transition:border-color .12s ease,background .12s ease}.mobile-drawer-item.is-active{border-color:var(--accent);background:#8b5cf61a}.mobile-drawer-item:active{opacity:.8}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@media (min-width: 1024px){.mobile-layout,.mobile-bottom-nav,.mobile-drawer,.mobile-header{display:none}}
1
+ @media (max-width: 480px){.chat-composer-wrap{padding:.375rem .375rem .5rem}.chat-welcome-h1{font-size:1.875rem}}:root{--bg: #0b0e14;--bg-elev: #12161f;--bg-elev-2: #1a1f2b;--bg-elev-3: #232a39;--surface: var(--bg-elev);--surface-2: var(--bg-elev-2);--border: #232a39;--border-strong: #2d3648;--text: #c9d1d9;--text-muted: #6e7681;--text-dim: #484f58;--text-strong: #f0f6fc;--accent: #8b5cf6;--accent-bg: rgba(139, 92, 246, .12);--accent-border: rgba(139, 92, 246, .4);--accent-2: #a78bfa;--success: #3fb950;--warning: #d29922;--error: #f85149;--info: #58a6ff;--font-sans: "Inter var", "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", ui-monospace, monospace;--mobile-tap-target: 44px;--mobile-nav-height: 56px;--mobile-topbar-height: 48px;--mobile-padding: 16px;--mobile-font-base: 16px}*,*:before,*:after{box-sizing:border-box;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;touch-action:manipulation}html,body{margin:0;padding:0;height:100%;overflow:hidden}body{font-family:var(--font-sans);font-size:var(--mobile-font-base);line-height:1.5;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;overscroll-behavior:none}button,[role=button],a,input,select,textarea{touch-action:manipulation}input,textarea,select{user-select:text;-webkit-user-select:text;font-size:var(--mobile-font-base)}a{color:var(--accent);text-decoration:none}code,.mono{font-family:var(--font-mono)}.mobile-app{display:flex;flex-direction:column;height:100vh;height:100dvh;background:var(--bg);color:var(--text);font-family:var(--font-sans);padding-top:env(safe-area-inset-top,0);padding-bottom:env(safe-area-inset-bottom,0);overscroll-behavior:none}.mobile-topbar{height:var(--mobile-topbar-height);flex-shrink:0;display:flex;align-items:center;justify-content:space-between;padding:0 var(--mobile-padding);background:var(--surface);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:10}.mobile-topbar-left{display:flex;align-items:center;gap:8px}.mobile-logo{font-size:20px;line-height:1}.mobile-title{font-size:16px;font-weight:600;color:var(--text-strong)}.mobile-topbar-right{display:flex;align-items:center;gap:4px}.mobile-icon-btn{width:var(--mobile-tap-target);height:var(--mobile-tap-target);min-width:var(--mobile-tap-target);min-height:var(--mobile-tap-target);display:flex;align-items:center;justify-content:center;background:transparent;border:none;border-radius:8px;color:var(--text-muted);cursor:pointer;transition:background .12s ease,color .12s ease;padding:0}.mobile-icon-btn:hover{background:var(--bg-elev-2);color:var(--text)}.mobile-icon-btn:active{background:var(--bg-elev-3)}.mobile-icon-btn-danger{color:var(--error)}.mobile-content{flex:1;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;padding:var(--mobile-padding);padding-bottom:calc(var(--mobile-nav-height) + var(--mobile-padding) + env(safe-area-inset-bottom,0))}.mobile-view{max-width:100%;min-width:0}.mobile-view-footer{padding:24px 0;text-align:center}.mobile-bottom-nav{position:fixed;bottom:0;left:0;right:0;height:calc(var(--mobile-nav-height) + env(safe-area-inset-bottom,0));background:var(--surface);border-top:1px solid var(--border);display:flex;align-items:stretch;padding-bottom:env(safe-area-inset-bottom,0);z-index:50}.mobile-nav-btn{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;background:transparent;border:none;color:var(--text-muted);cursor:pointer;min-height:var(--mobile-tap-target);padding:8px 4px;transition:color .12s ease}.mobile-nav-btn-active{color:var(--accent)}.mobile-nav-label{font-size:10px;font-weight:500}.mobile-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100vh;height:100dvh;gap:12px;color:var(--text-muted)}.mobile-stats{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:20px}.mobile-stat{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:16px;text-align:center}.mobile-stat-value{font-size:28px;font-weight:700;color:var(--accent);line-height:1}.mobile-stat-label{font-size:12px;color:var(--text-muted);margin-top:4px}.mobile-section{margin-bottom:20px}.mobile-section-title{font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;margin:0 0 8px;display:flex;align-items:center;gap:6px}.mobile-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:14px;margin-bottom:12px}.mobile-card-list{display:flex;flex-direction:column;gap:6px}.mobile-agent-card{display:flex;align-items:center;gap:10px;padding:12px;background:var(--surface);border:1px solid var(--border);border-radius:10px}.mobile-agent-dot{width:8px;height:8px;border-radius:50%;background:var(--text-dim);flex-shrink:0}.mobile-agent-dot[data-status=working],.mobile-agent-dot[data-status=doing]{background:var(--success);animation:pulse-dot 1.6s ease-in-out infinite}.mobile-agent-dot[data-status=error],.mobile-agent-dot[data-status=stuck]{background:var(--error)}.mobile-agent-dot[data-status=idle]{background:var(--text-dim)}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.4}}.mobile-agent-info{flex:1;min-width:0}.mobile-agent-name{font-size:14px;font-weight:500;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;white-space:normal;overflow-wrap:anywhere}.mobile-agent-meta{font-size:12px;color:var(--text-muted);display:block;overflow-wrap:anywhere}.mobile-task-card{width:100%;padding:12px;background:var(--surface);border:1px solid var(--border);border-radius:10px;display:flex;align-items:center;gap:10px;text-align:left}.mobile-task-actions{display:flex;gap:2px;flex-shrink:0}.priority-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.task-content{flex:1;min-width:0}.task-title{font-size:14px;font-weight:500;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;white-space:normal;overflow-wrap:anywhere}.task-meta{font-size:12px;color:var(--text-muted);display:block;overflow-wrap:anywhere}.mobile-tasks-toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:16px}.mobile-search-input{flex:1;height:var(--mobile-tap-target);padding:0 14px;background:var(--surface);border:1px solid var(--border);border-radius:22px;color:var(--text);font-family:inherit;font-size:var(--mobile-font-base);outline:none}.mobile-search-input:focus{border-color:var(--accent)}.mobile-empty-inline{font-size:13px;color:var(--text-muted);padding:4px 0}.mobile-empty-compact{padding:24px 16px}.mobile-setting-row{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px solid var(--border)}.mobile-setting-row:last-child{border-bottom:none}.mobile-setting-label{font-size:14px;color:var(--text)}.mobile-setting-value{font-size:14px;color:var(--text-muted);text-align:right}.mobile-list-item{display:flex;align-items:center;gap:12px;padding:12px;background:var(--surface);border:1px solid var(--border);border-radius:10px}.mobile-list-icon{color:var(--text-muted);flex-shrink:0}.mobile-list-content{flex:1;min-width:0}.mobile-list-title{font-size:14px;font-weight:500;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;white-space:normal;overflow-wrap:anywhere}.mobile-list-meta{font-size:12px;color:var(--text-muted);display:block;overflow-wrap:anywhere}.mobile-list-badge{font-size:11px;padding:2px 8px;border-radius:12px;background:var(--bg-elev-3);color:var(--text-muted);flex-shrink:0}.mobile-list-badge[data-status=working],.mobile-list-badge[data-status=doing]{background:#3fb95026;color:var(--success)}.mobile-list-badge[data-status=error],.mobile-list-badge[data-status=stuck]{background:#f8514926;color:var(--error)}.badge-on{background:#3fb95026;color:var(--success)}.badge-off{background:var(--bg-elev-3);color:var(--text-dim)}.mobile-active-badge{font-size:11px;padding:2px 8px;border-radius:12px;background:var(--accent-bg);color:var(--accent);flex-shrink:0}.mobile-empty{text-align:center;padding:48px 20px;color:var(--text-muted)}.mobile-empty svg{margin-bottom:12px;opacity:.4}.mobile-empty p{margin:0 0 6px}.muted{color:var(--text-muted);font-size:13px}.mobile-btn{min-height:var(--mobile-tap-target);min-width:var(--mobile-tap-target);padding:12px 20px;border-radius:10px;font-size:15px;font-weight:500;border:none;background:var(--accent);color:#fff;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:opacity .12s ease;text-decoration:none}.mobile-btn:active{opacity:.7}.mobile-btn-secondary{background:var(--surface);border:1px solid var(--border);color:var(--text)}.mobile-more-footer{padding:16px 0;border-top:1px solid var(--border);margin-top:8px}.mobile-more-link{display:flex;align-items:center;justify-content:center;gap:4px;color:var(--accent);font-size:14px;text-decoration:none;min-height:var(--mobile-tap-target);padding:12px}[data-theme=dark] .mobile-app{background:#0d1117}[data-theme=light]{--bg: #ffffff;--bg-elev: #f6f8fa;--bg-elev-2: #eaeef2;--bg-elev-3: #d0d7de;--surface: var(--bg-elev);--surface-2: var(--bg-elev-2);--border: #d0d7de;--border-strong: #afb8c1;--text: #1f2328;--text-muted: #656d76;--text-dim: #8c959f;--text-strong: #1f2328;--accent: #7c3aed;--accent-2: #6d28d9;--accent-bg: rgba(124, 58, 237, .08);--accent-border: rgba(124, 58, 237, .3)}.mobile-sheet-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;z-index:100;display:flex;align-items:flex-end;animation:sheet-fade-in .15s ease}@keyframes sheet-fade-in{0%{opacity:0}to{opacity:1}}.mobile-sheet{width:100%;background:var(--surface);border-radius:16px 16px 0 0;max-height:85vh;overflow-y:auto;overflow-x:hidden;animation:sheet-slide-up .2s cubic-bezier(.32,.72,0,1);display:flex;flex-direction:column}@keyframes sheet-slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.mobile-sheet-handle{width:36px;height:4px;background:var(--border-strong);border-radius:2px;margin:10px auto 0;flex-shrink:0}.mobile-sheet-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px 8px;border-bottom:1px solid var(--border);flex-shrink:0}.mobile-sheet-title{font-size:16px;font-weight:600;color:var(--text-strong);margin:0}.mobile-sheet-content{flex:1;overflow-y:auto;padding:12px 16px}.mobile-sheet-actions{padding:12px 16px;border-top:1px solid var(--border);flex-shrink:0;display:flex;gap:8px}.mobile-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--bg);z-index:200;display:flex;flex-direction:column;animation:modal-fade-in .15s ease}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}.mobile-modal{flex:1;display:flex;flex-direction:column;overflow:hidden}.mobile-modal-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border);flex-shrink:0}.mobile-modal-title{font-size:18px;font-weight:600;color:var(--text-strong);margin:0}.mobile-modal-content{flex:1;overflow-y:auto;padding:16px}.mobile-modal-actions{padding:12px 16px;border-top:1px solid var(--border);flex-shrink:0;display:flex;gap:8px}.mobile-search-container{display:flex;flex-direction:column;gap:12px;height:100%}.mobile-search-input-row{display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:0 14px;height:var(--mobile-tap-target)}.mobile-search-field{flex:1;background:transparent;border:none;outline:none;color:var(--text);font-family:inherit;font-size:var(--mobile-font-base)}.mobile-search-scopes{display:flex;gap:6px;flex-wrap:wrap}.mobile-scope-chip{min-height:var(--mobile-tap-target);padding:10px 14px;border-radius:16px;font-size:13px;font-weight:500;background:var(--surface);border:1px solid var(--border);color:var(--text-muted);cursor:pointer;transition:all .12s ease}.mobile-scope-chip.active{background:var(--accent-bg);border-color:var(--accent-border);color:var(--accent)}.mobile-search-results{flex:1;overflow-y:auto}.mobile-search-group{margin-bottom:16px}.mobile-search-group-title{font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;margin:0 0 6px;display:flex;align-items:center;gap:4px}.mobile-search-result-item{padding:10px 12px;background:var(--surface);border:1px solid var(--border);border-radius:8px;margin-bottom:4px;cursor:pointer}.mobile-search-result-title{font-size:14px;font-weight:500;display:block;overflow-wrap:anywhere}.mobile-search-result-meta{font-size:12px;color:var(--text-muted);display:block;overflow-wrap:anywhere}.mobile-search-loading{text-align:center;padding:20px;color:var(--text-muted);font-size:14px}.mobile-notif-btn{position:relative}.mobile-notif-badge{position:absolute;top:4px;right:4px;min-width:16px;height:16px;background:var(--error);color:#fff;font-size:10px;font-weight:700;border-radius:8px;display:flex;align-items:center;justify-content:center;padding:0 4px}.mobile-notif-list{display:flex;flex-direction:column;gap:4px}.mobile-notif-item{width:100%;min-height:var(--mobile-tap-target);display:flex;align-items:flex-start;gap:12px;padding:12px;background:var(--surface);border:1px solid var(--border);border-radius:10px;cursor:pointer;position:relative}.mobile-notif-item.unread{border-color:var(--accent-border)}.mobile-notif-icon{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;flex-shrink:0}.mobile-notif-icon.severity-success{background:#3fb95026;color:var(--success)}.mobile-notif-icon.severity-error{background:#f8514926;color:var(--error)}.mobile-notif-icon.severity-warning{background:#d2992226;color:var(--warning)}.mobile-notif-icon.severity-info{background:#58a6ff26;color:var(--info)}.mobile-notif-body{flex:1;min-width:0}.mobile-notif-title{font-size:14px;font-weight:500;display:block;overflow-wrap:anywhere}.mobile-notif-text{font-size:13px;color:var(--text-muted);display:block;margin-top:2px}.mobile-notif-time{font-size:11px;color:var(--text-dim);display:block;margin-top:4px}.mobile-notif-dot{width:8px;height:8px;border-radius:50%;background:var(--accent);flex-shrink:0;margin-top:6px}.mobile-project-btn{display:flex;align-items:center;gap:4px;background:transparent;border:none;color:var(--text-muted);cursor:pointer;min-height:var(--mobile-tap-target);min-width:var(--mobile-tap-target);padding:10px 8px;border-radius:6px;font-size:14px;font-family:inherit}.mobile-project-btn:hover{background:var(--bg-elev-2);color:var(--text)}.mobile-project-name{max-width:120px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;white-space:normal}.mobile-project-list{display:flex;flex-direction:column;gap:6px}.mobile-project-item{display:flex;align-items:center;gap:12px;padding:12px;background:var(--surface);border:1px solid var(--border);border-radius:10px;cursor:pointer}.mobile-project-item.active{border-color:var(--accent-border)}.mobile-project-status{width:8px;height:8px;border-radius:50%;background:var(--text-dim);flex-shrink:0}.mobile-project-status[data-status=active]{background:var(--success)}.mobile-project-status[data-status=error]{background:var(--error)}.mobile-project-info{flex:1;min-width:0}.mobile-project-item-name{font-size:14px;font-weight:500;display:block}.mobile-project-item-path{font-size:11px;color:var(--text-muted);display:block;overflow-wrap:anywhere;font-family:var(--font-mono)}.mobile-back-btn{position:fixed;top:calc(var(--mobile-topbar-height) + 8px);left:12px;z-index:60;background:var(--surface);border:1px solid var(--border);color:var(--text);font-size:13px;font-weight:500;min-height:var(--mobile-tap-target);padding:10px 14px;border-radius:20px;cursor:pointer;display:flex;align-items:center;gap:4px;box-shadow:0 2px 8px #0000004d}.mobile-kanban-tabs{display:flex;gap:4px;margin-bottom:12px;overflow-x:auto;-webkit-overflow-scrolling:touch}.mobile-kanban-tab{min-height:var(--mobile-tap-target);padding:10px 14px;border-radius:20px;font-size:13px;font-weight:500;background:var(--surface);border:1px solid var(--border);color:var(--text-muted);cursor:pointer;white-space:nowrap;transition:all .12s ease;flex-shrink:0}.mobile-kanban-tab.active{background:var(--accent-bg);border-color:var(--accent-border);color:var(--accent)}.mobile-tasks-filters{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.mobile-filter-select{min-height:var(--mobile-tap-target);padding:0 10px;background:var(--surface);border:1px solid var(--border);border-radius:18px;color:var(--text);font-family:inherit;font-size:13px;cursor:pointer}.mobile-fab{position:fixed;bottom:calc(var(--mobile-nav-height) + 80px + env(safe-area-inset-bottom,0));right:20px;width:56px;height:56px;border-radius:50%;background:var(--accent);color:#fff;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 16px #8b5cf666;z-index:30;transition:transform .12s ease,box-shadow .12s ease}.mobile-fab:active{transform:scale(.94);box-shadow:0 2px 8px #8b5cf64d}.mobile-task-detail-actions{display:flex;gap:8px;flex-wrap:wrap}.mobile-task-detail{display:flex;flex-direction:column;gap:12px}.mobile-task-detail-header{display:flex;align-items:center;gap:8px}.mobile-task-status-badge{font-size:11px;font-weight:600;padding:3px 10px;border-radius:12px;text-transform:capitalize}.mobile-task-status-badge.status-queued{background:#58a6ff26;color:var(--info)}.mobile-task-status-badge.status-doing{background:#3fb95026;color:var(--success)}.mobile-task-status-badge.status-blocked{background:#f8514926;color:var(--error)}.mobile-task-status-badge.status-done{background:#3fb95026;color:var(--success)}.mobile-task-priority{font-size:11px;font-weight:600;padding:3px 10px;border-radius:12px;text-transform:capitalize}.mobile-task-priority.priority-high{background:#f8514926;color:var(--error)}.mobile-task-priority.priority-normal{background:#58a6ff26;color:var(--info)}.mobile-task-priority.priority-low{background:var(--bg-elev-3);color:var(--text-dim)}.mobile-task-detail-title{font-size:18px;font-weight:600;color:var(--text-strong);margin:0}.mobile-task-detail-desc{font-size:14px;color:var(--text-muted);line-height:1.5;margin:0;overflow-wrap:anywhere}.mobile-task-detail-meta{display:flex;flex-direction:column;gap:0}.mobile-task-detail-row{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid var(--border);font-size:13px}.mobile-task-detail-row:last-child{border-bottom:none}.mobile-task-detail-row span:first-child{color:var(--text-muted)}.mobile-task-detail-row span:last-child{color:var(--text);font-weight:500}.mobile-task-form{display:flex;flex-direction:column;gap:12px}.mobile-field-label{font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px;display:block}.mobile-input{width:100%;min-height:var(--mobile-tap-target);padding:10px 14px;background:var(--surface);border:1px solid var(--border);border-radius:10px;color:var(--text);font-family:inherit;font-size:var(--mobile-font-base);outline:none;transition:border-color .12s ease}.mobile-input:focus{border-color:var(--accent)}.mobile-input-sm{min-height:var(--mobile-tap-target);padding:8px 12px}.mobile-agent-detail{display:flex;flex-direction:column;gap:12px}.mobile-agent-detail-status{display:flex;align-items:center;gap:8px}.mobile-agent-detail-status-text{font-size:14px;font-weight:500;text-transform:capitalize}.mobile-agent-detail-desc{font-size:14px;color:var(--text-muted);line-height:1.5;margin:0;overflow-wrap:anywhere}.mobile-view-canvas{padding-bottom:80px}.mobile-canvas-bar{display:flex;align-items:center;justify-content:space-between;padding:0 0 12px;border-bottom:1px solid var(--border);margin-bottom:12px}.mobile-canvas-meta{display:flex;flex-direction:column;gap:2px}.mobile-canvas-title{font-size:16px;font-weight:600;color:var(--text-strong)}.mobile-canvas-status{font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px;text-transform:capitalize}.mobile-canvas-status[data-status=approved],.mobile-canvas-status[data-status=done]{background:#3fb95026;color:var(--success)}.mobile-canvas-status[data-status=in-progress],.mobile-canvas-status[data-status=doing]{background:#58a6ff26;color:var(--info)}.mobile-canvas-status[data-status=draft]{background:var(--bg-elev-3);color:var(--text-dim)}.mobile-canvas-actions{display:flex;align-items:center;gap:4px}.mobile-canvas-comment-count{position:absolute;top:2px;right:2px;background:var(--accent);color:#fff;font-size:9px;font-weight:700;border-radius:6px;padding:1px 4px;min-width:14px;text-align:center}.mobile-canvas-elements{display:flex;flex-direction:column;gap:10px}.mobile-canvas-element{background:var(--surface);border:2px solid var(--border);border-radius:12px;overflow:hidden;cursor:pointer}.mobile-canvas-element.selected{box-shadow:0 0 0 2px var(--accent)}.mobile-canvas-el-header{display:flex;align-items:center;gap:6px;padding:8px 12px}.mobile-canvas-el-type{font-size:11px;font-weight:600;text-transform:uppercase}.mobile-canvas-el-status{font-size:10px;padding:1px 6px;border-radius:8px;background:var(--bg-elev-3);color:var(--text-muted);margin-left:auto}.mobile-canvas-el-title{font-size:14px;font-weight:600;padding:8px 12px;color:var(--text-strong)}.mobile-canvas-el-content{font-size:13px;color:var(--text-muted);padding:0 12px 8px;line-height:1.4}.mobile-canvas-el-comments{display:flex;align-items:center;gap:4px;padding:6px 12px;border-top:1px solid var(--border);font-size:11px;color:var(--text-dim)}.mobile-canvas-comments{margin-top:16px;background:var(--surface);border:1px solid var(--border);border-radius:12px;overflow:hidden}.mobile-canvas-comments-header{display:flex;align-items:center;justify-content:space-between;padding:12px;border-bottom:1px solid var(--border)}.mobile-canvas-comments-header h4{margin:0;font-size:14px;font-weight:600}.mobile-canvas-comment-list{max-height:300px;overflow-y:auto;padding:12px}.mobile-canvas-comment{margin-bottom:12px}.mobile-canvas-comment-head{display:flex;align-items:center;gap:8px;margin-bottom:4px}.mobile-canvas-comment-head .mono{font-size:11px;font-weight:600}.mobile-canvas-comment-head .muted{font-size:11px;color:var(--text-dim);margin-left:auto}.mobile-canvas-comment-text{font-size:13px;color:var(--text-muted);line-height:1.4}.mobile-canvas-comment-input{display:flex;gap:8px;padding:12px;border-top:1px solid var(--border)}.mobile-canvas-comment-input .mobile-input{flex:1}.mobile-activity-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.mobile-event-item{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;background:var(--surface);border:1px solid var(--border);border-radius:10px;margin-bottom:4px;cursor:pointer}.mobile-event-kind{font-size:10px;font-weight:700;padding:2px 8px;border-radius:8px;background:var(--bg-elev-3);color:var(--text-muted);text-transform:uppercase;flex-shrink:0}.mobile-event-msg{flex:1;font-size:13px;color:var(--text);overflow-wrap:anywhere}.mobile-event-time{font-size:11px;color:var(--text-dim);flex-shrink:0}.mobile-submit-hero{background:linear-gradient(135deg,var(--accent-bg) 0%,var(--bg-elev) 100%);border:1px solid var(--accent-border);border-radius:16px;padding:16px;margin-bottom:16px}.mobile-submit-input{width:100%;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:12px;color:var(--text);font-family:inherit;font-size:var(--mobile-font-base);resize:none;outline:none;margin-bottom:12px}.mobile-submit-input:focus{border-color:var(--accent)}.mobile-submit-actions{display:flex;flex-direction:column;gap:10px}.mobile-submit-chips{display:flex;gap:6px;flex-wrap:wrap}.mobile-submit-chip{min-height:var(--mobile-tap-target);padding:10px 12px;border-radius:16px;font-size:12px;font-weight:500;background:var(--surface);border:1px solid var(--border);color:var(--text-muted);cursor:pointer;transition:all .12s ease}.mobile-submit-chip:hover{border-color:var(--accent-border);color:var(--accent)}.mobile-more-nav-item{display:flex;align-items:center;gap:14px;padding:14px 12px;background:var(--surface);border:1px solid var(--border);border-radius:12px;margin-bottom:6px;cursor:pointer;transition:all .12s ease}.mobile-more-nav-item:hover{border-color:var(--accent-border);background:var(--bg-elev-2)}.mobile-more-nav-icon{width:40px;height:40px;border-radius:10px;background:var(--bg-elev-2);color:var(--accent);display:flex;align-items:center;justify-content:center;flex-shrink:0}.mobile-more-nav-content{flex:1;min-width:0}.mobile-more-nav-label{font-size:15px;font-weight:600;color:var(--text-strong);display:flex;align-items:center;gap:8px}.mobile-more-nav-count{font-size:11px;font-weight:600;padding:1px 7px;border-radius:10px;background:var(--bg-elev-3);color:var(--text-muted)}.mobile-more-nav-desc{font-size:12px;color:var(--text-muted);display:block;margin-top:2px}.mobile-more-nav-arrow{color:var(--text-dim);flex-shrink:0}.mobile-config-list{display:flex;flex-direction:column;gap:0}.mobile-config-row{display:flex;align-items:flex-start;flex-wrap:wrap;gap:10px;padding:10px 0;border-bottom:1px solid var(--border)}.mobile-config-row:last-child{border-bottom:none}.mobile-config-key{flex:0 0 104px;display:flex;flex-direction:column;gap:2px}.mobile-config-key .mono{font-size:12px;font-weight:500;color:var(--text);word-break:break-all}.mobile-config-type{font-size:10px;color:var(--text-dim);text-transform:uppercase}.mobile-config-value{flex:1;min-width:0}.mobile-config-value .mobile-input{min-height:var(--mobile-tap-target);padding:6px 10px;font-size:13px}.mobile-toggle{position:relative;display:inline-flex;align-items:center;cursor:pointer;width:44px;height:24px}.mobile-toggle input{opacity:0;width:0;height:0;position:absolute}.mobile-toggle-slider{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--bg-elev-3);border-radius:12px;transition:background .2s ease}.mobile-toggle-slider:before{content:"";position:absolute;left:2px;top:2px;width:20px;height:20px;background:#fff;border-radius:50%;transition:transform .2s ease}.mobile-toggle input:checked+.mobile-toggle-slider{background:var(--accent)}.mobile-toggle input:checked+.mobile-toggle-slider:before{transform:translate(20px)}.mobile-theme-btns{display:flex;gap:6px}.mobile-theme-btn{display:flex;align-items:center;gap:4px;min-height:var(--mobile-tap-target);padding:10px 12px;border-radius:16px;font-size:12px;font-weight:500;background:var(--surface);border:1px solid var(--border);color:var(--text-muted);cursor:pointer;transition:all .12s ease}.mobile-theme-btn.active{background:var(--accent-bg);border-color:var(--accent-border);color:var(--accent)}.mobile-accent-swatches{display:flex;gap:8px;flex-wrap:wrap}.mobile-accent-swatch{width:var(--mobile-tap-target);height:var(--mobile-tap-target);border-radius:50%;border:2px solid transparent;cursor:pointer;transition:transform .12s ease}.mobile-accent-swatch:hover{transform:scale(1.1)}.mobile-accent-swatch.active{border-color:#fff;box-shadow:0 0 0 2px var(--accent)}.mobile-settings-save-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:10px 16px;background:var(--warning);color:#000;font-size:13px;font-weight:500;margin:calc(-1 * var(--mobile-padding));margin-bottom:12px}.mobile-list-item-interactive{cursor:pointer;transition:all .12s ease}.mobile-list-item-interactive:hover{border-color:var(--accent-border);background:var(--bg-elev-2)}.mobile-list-item-interactive:active{opacity:.8}.mobile-list-status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.mobile-list-status-dot[data-status=working],.mobile-list-status-dot[data-status=doing]{background:var(--success)}.mobile-list-status-dot[data-status=error],.mobile-list-status-dot[data-status=stuck]{background:var(--error)}.mobile-list-status-dot[data-status=idle]{background:var(--text-dim)}.mobile-list-badge.badge-accent{background:var(--accent-bg);color:var(--accent)}.mobile-list-badge.badge-warning{background:#d2992226;color:var(--warning)}.mobile-btn-danger{background:var(--error);color:#fff}.mobile-btn-danger:active{opacity:.8}.mobile-artifact-iframe{width:100%;min-height:min(70dvh,560px);border:1px solid var(--border);border-radius:12px;background:#fff}@media (max-width: 420px){.mobile-config-key,.mobile-config-value{flex-basis:100%}.mobile-task-detail-row{flex-direction:column}.mobile-task-detail-row span:first-child,.mobile-task-detail-row span:last-child{flex:none;text-align:left}}.mobile-overview{display:flex;flex-direction:column;gap:16px}.mobile-hero{padding:20px 16px;background:linear-gradient(135deg,#8b5cf626,#3b82f61a);border:1px solid var(--border);border-radius:14px}.mobile-hero h1{margin:0 0 8px;font-size:24px;font-weight:700;line-height:1.2}.mobile-hero p{margin:0 0 12px;font-size:13px;color:var(--text-dim);line-height:1.4}.mobile-hero-input{width:100%;background:var(--surface-2);border:1px solid var(--border);border-radius:8px;padding:10px 12px;color:var(--text);font-size:14px;font-family:inherit;resize:vertical;margin-bottom:8px;box-sizing:border-box}.mobile-hero-submit{width:100%;padding:10px;background:var(--accent, #8b5cf6);color:#fff;border:none;border-radius:8px;font-weight:600;font-size:14px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px}.mobile-hero-submit:disabled{opacity:.5;cursor:not-allowed}.mobile-stats-stack{display:flex;flex-direction:column;gap:8px}.mobile-stat-card{display:flex;align-items:center;gap:14px;padding:14px 16px;background:var(--surface-1);border:1px solid var(--border);border-radius:10px}.mobile-stat-card.is-blue{border-left:4px solid #58a6ff}.mobile-stat-card.is-purple{border-left:4px solid #8b5cf6}.mobile-stat-card.is-green{border-left:4px solid #3fb950}.mobile-stat-card.is-yellow{border-left:4px solid #d29922}.mobile-stat-icon{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:10px;background:var(--surface-2);color:var(--text);flex-shrink:0}.mobile-stat-body{flex:1;min-width:0}.mobile-stat-label{font-size:12px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.05em}.mobile-stat-value{font-size:24px;font-weight:700;margin-top:2px}.mobile-stat-subtext{font-size:11px;color:var(--text-dim);margin-top:2px}.mobile-activity-card,.mobile-quick-actions{padding:16px;background:var(--surface-1);border:1px solid var(--border);border-radius:10px}.mobile-activity-card h3{margin:0 0 12px;font-size:14px;font-weight:600}.mobile-activity-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}.mobile-activity-item{display:flex;gap:8px;padding:8px;border-radius:6px;background:var(--surface-2);font-size:12px}.mobile-activity-time{color:var(--text-dim);font-variant-numeric:tabular-nums;flex-shrink:0}.mobile-activity-text{word-break:break-word}.mobile-quick-actions{display:flex;flex-direction:column;gap:8px}.mobile-quick-action{display:flex;align-items:center;gap:8px;padding:12px;background:var(--surface-2);border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:14px;font-weight:500;text-align:left;cursor:pointer}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.mobile-layout{display:flex;flex-direction:column;height:100vh;height:100dvh;overflow:hidden;background:var(--bg)}.mobile-header{position:sticky;top:0;z-index:100;display:flex;align-items:center;gap:12px;height:56px;padding:0 16px;background:var(--surface-1, var(--surface, var(--bg-elev)));border-bottom:1px solid transparent;transition:border-color .2s ease}.mobile-header.is-scrolled{border-bottom-color:var(--border)}.mobile-header-title{flex:1;font-size:18px;font-weight:600;margin:0;color:var(--text-strong, var(--text))}.mobile-menu-btn,.mobile-search-btn,.mobile-settings-exit{background:transparent;border:none;color:var(--text);padding:8px;border-radius:8px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .12s ease}.mobile-menu-btn:hover,.mobile-search-btn:hover,.mobile-settings-exit:hover{background:var(--bg-elev-2, var(--bg-elev))}.mobile-menu-btn:active,.mobile-search-btn:active,.mobile-settings-exit:active{background:var(--bg-elev-3)}.mobile-content{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;padding:12px 16px 80px;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.mobile-bottom-nav{position:fixed;bottom:0;left:0;right:0;display:flex;height:64px;background:var(--surface-1, var(--surface, var(--bg-elev)));border-top:1px solid var(--border);z-index:50;padding-bottom:env(safe-area-inset-bottom,0)}.mobile-nav-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;background:transparent;border:none;color:var(--text-dim, var(--text-muted));font-size:10px;font-family:inherit;cursor:pointer;padding:4px 0;transition:color .12s ease}.mobile-nav-item.is-active{color:var(--accent)}.mobile-nav-label{font-size:10px;font-weight:500;line-height:1}.mobile-drawer-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:60;animation:fadeIn .2s ease}.mobile-drawer{position:fixed;top:0;left:0;bottom:0;width:80%;max-width:320px;background:var(--surface-1, var(--surface, var(--bg-elev)));z-index:70;transform:translate(-100%);transition:transform .25s cubic-bezier(.4,0,.2,1);overflow-y:auto;-webkit-overflow-scrolling:touch;display:flex;flex-direction:column}.mobile-drawer.is-open{transform:translate(0)}.mobile-drawer-head{position:sticky;top:0;display:flex;align-items:center;justify-content:space-between;padding:16px;background:var(--surface-1, var(--surface, var(--bg-elev)));border-bottom:1px solid var(--border);flex-shrink:0}.mobile-drawer-head h2{font-size:18px;font-weight:600;margin:0;color:var(--text-strong, var(--text))}.mobile-drawer-close{background:transparent;border:none;color:var(--text);padding:8px;border-radius:8px;cursor:pointer;display:flex;align-items:center;justify-content:center}.mobile-drawer-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;padding:16px;flex:1}.mobile-drawer-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:16px 8px;background:var(--surface-2, var(--bg-elev-2));border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:12px;font-family:inherit;cursor:pointer;min-height:80px;transition:border-color .12s ease,background .12s ease}.mobile-drawer-item.is-active{border-color:var(--accent);background:#8b5cf61a}.mobile-drawer-item:active{opacity:.8}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@media (min-width: 1024px){.mobile-layout,.mobile-bottom-nav,.mobile-drawer,.mobile-header{display:none}}
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/MobileSettings-Cq1oFIdO.js","assets/react-vendor-Dn4wqh4Z.js","assets/EnvVarsSection-L413CQEI.js","assets/Toast-C6f1zFJ2.js","assets/icons-BsWXWkEF.js","assets/MobileChat-0kGQb1S6.js","assets/useSlashCommands-DGJcC9iQ.js","assets/markdown-C6mXtQxD.js","assets/vendor-CeHGtduv.js"])))=>i.map(i=>d[i]);
2
+ var Qe=Object.defineProperty;var Xe=(s,t,n)=>t in s?Qe(s,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):s[t]=n;var U=(s,t,n)=>Xe(s,typeof t!="symbol"?t+"":t,n);import{j as e,r as o,R as Oe}from"./react-vendor-Dn4wqh4Z.js";import{ba as Ze,X as G,r as de,O as et,a9 as ee,aq as tt,R as _,B as se,g as me,t as B,a0 as st,W as ae,a7 as at,q as J,aC as nt,m as ue,Y as Ue,J as H,l as he,aI as Be,e as ve,a3 as Fe,M as V,ab as ye,bb as lt,S as te,b as it,i as Ne,am as ot,bc as ct}from"./icons-BsWXWkEF.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const m of i)if(m.type==="childList")for(const b of m.addedNodes)b.tagName==="LINK"&&b.rel==="modulepreload"&&r(b)}).observe(document,{childList:!0,subtree:!0});function n(i){const m={};return i.integrity&&(m.integrity=i.integrity),i.referrerPolicy&&(m.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?m.credentials="include":i.crossOrigin==="anonymous"?m.credentials="omit":m.credentials="same-origin",m}function r(i){if(i.ep)return;i.ep=!0;const m=n(i);fetch(i.href,m)}})();function Q(...s){return s.filter(Boolean).join(" ")}function K(s){if(!s&&s!==0)return"";const t=typeof s=="number"?s:new Date(s).getTime();if(Number.isNaN(t))return"";const n=Date.now()-t;return n<0||n<6e4?"just now":n<36e5?`${Math.floor(n/6e4)}m ago`:n<864e5?`${Math.floor(n/36e5)}h ago`:n<7*864e5?`${Math.floor(n/864e5)}d ago`:new Date(t).toLocaleDateString()}function ns(s){if(!s)return"";const t=typeof s=="number"?new Date(s):new Date(s);return Number.isNaN(t.getTime())?"":t.toLocaleString()}function ls(s,t=160){return s?s.length>t?s.slice(0,t)+"…":s:""}const rt={low:"var(--text-dim)",normal:"var(--info)",high:"var(--error)"},Z="bizar-auth-token",ke="bizar-loopback-trusted";class we extends Error{constructor(n,r,i){super(n);U(this,"status");U(this,"data");this.name="ApiError",this.status=r,this.data=i}}class dt{constructor(){U(this,"base","/api")}getToken(){try{return localStorage.getItem(Z)||""}catch{return""}}setToken(t){try{t?localStorage.setItem(Z,t):localStorage.removeItem(Z)}catch{}}pickupTokenFromUrl(){try{const t=new URLSearchParams(window.location.search),n=t.get("token");if(!n)return!1;this.setToken(n),t.delete("token");const r=t.toString(),i=r?`${window.location.pathname}?${r}`:window.location.pathname;return history.replaceState(null,"",i),!0}catch{return!1}}urlWithToken(t){const n=this.base+t,r=this.getToken();if(!r)return n;const i=n.includes("?")?"&":"?";return`${n}${i}token=${encodeURIComponent(r)}`}async probeAuthStatus(){try{const t=await this.get("/auth/status");try{localStorage.setItem(ke,t.loopback?"1":"0")}catch{}return t}catch{return{required:!1,loopback:!0,peer:""}}}isLoopbackTrusted(){try{return localStorage.getItem(ke)!=="0"}catch{return!0}}async get(t,n){return this.req("GET",t,void 0,n)}async post(t,n,r){return this.req("POST",t,n,r)}async put(t,n,r){return this.req("PUT",t,n,r)}async patch(t,n,r){return this.req("PATCH",t,n,r)}async del(t,n){return this.req("DELETE",t,void 0,n)}async req(t,n,r,i){const m={"Content-Type":"application/json"},b=this.getToken();b&&(m.Authorization=`Bearer ${b}`);const d={method:t,headers:m};r!=null&&(d.body=typeof r=="string"?r:JSON.stringify(r)),i&&(d.signal=i);const x=await fetch(this.base+n,d);if((x.headers.get("content-type")||"").includes("application/json")){const j=await x.json();if(!x.ok){const v=(j&&typeof j=="object"&&"message"in j?j.message:void 0)||`${t} ${n}: ${x.status}`;throw new we(v,x.status,j)}return j}const a=await x.text();if(!x.ok)throw new we(`${t} ${n}: ${x.status} — ${a.slice(0,200)}`,x.status,a);try{return JSON.parse(a)}catch{return a}}}const C=new dt;C.pickupTokenFromUrl();async function is(s){return s}function mt(){if(typeof location>"u")return"ws://localhost/ws";const s=`${location.protocol==="https:"?"wss":"ws"}://${location.host}/ws`;let t="";try{t=localStorage.getItem(Z)||""}catch{}return t?`${s}?token=${encodeURIComponent(t)}`:s}class qe{constructor(t){U(this,"urlOverride");U(this,"handlers",new Set);U(this,"statusHandlers",new Set);U(this,"ws",null);U(this,"reconnectDelay",1e3);U(this,"maxReconnectDelay",15e3);U(this,"reconnectTimer",null);U(this,"_status","connecting");U(this,"pingTimer",null);U(this,"closed",!1);this.urlOverride=t,this.connect()}on(t){return this.handlers.add(t),()=>{this.handlers.delete(t)}}onStatus(t){return this.statusHandlers.add(t),t(this._status),()=>{this.statusHandlers.delete(t)}}get status(){return this._status}send(t){return this.ws&&this.ws.readyState===WebSocket.OPEN?(this.ws.send(JSON.stringify(t)),!0):!1}close(){var t;this.closed=!0,this.reconnectTimer&&clearTimeout(this.reconnectTimer),this.reconnectTimer=null,this.pingTimer&&clearInterval(this.pingTimer),this.pingTimer=null;try{(t=this.ws)==null||t.close()}catch{}this.ws=null,this.setStatus("disconnected")}connect(){if(this.closed)return;this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.setStatus("connecting");const t=this.urlOverride??mt();let n;try{n=new WebSocket(t),this.ws=n}catch(r){console.warn("[ws] construct failed:",r),this.scheduleReconnect();return}n.addEventListener("open",()=>{this.ws!==n||this.closed||(this.reconnectDelay=1e3,this.setStatus("connected"),this.pingTimer&&clearInterval(this.pingTimer),this.pingTimer=setInterval(()=>{this._status==="connected"&&this.send({type:"ping"})},3e4))}),n.addEventListener("close",()=>{this.ws===n&&(this.ws=null,this.setStatus("disconnected"),this.pingTimer&&(clearInterval(this.pingTimer),this.pingTimer=null),this.closed||this.scheduleReconnect())}),n.addEventListener("error",()=>{this.ws===n&&console.warn("[ws] error")}),n.addEventListener("message",r=>{let i;try{i=JSON.parse(r.data)}catch{console.warn("[ws] bad message");return}for(const m of this.handlers)try{m(i)}catch(b){console.error("[ws] handler error:",b)}})}scheduleReconnect(){this.closed||this.reconnectTimer||(this.reconnectTimer=setTimeout(()=>{this.reconnectTimer=null,this.connect()},this.reconnectDelay),this.reconnectDelay=Math.min(this.reconnectDelay*1.6,this.maxReconnectDelay))}setStatus(t){this._status=t;for(const n of this.statusHandlers)try{n(t)}catch(r){console.error("[ws] status handler error:",r)}}}const os=Object.freeze(Object.defineProperty({__proto__:null,Ws:qe},Symbol.toStringTag,{value:"Module"}));function Se(s){const t=typeof s=="string"?s:s.mode,n=t==="system"?typeof window<"u"&&window.matchMedia("(prefers-color-scheme: light)").matches?"light":"dark":t==="light"?"light":"dark";return typeof document<"u"&&(n==="light"?document.documentElement.setAttribute("data-theme","light"):document.documentElement.removeAttribute("data-theme")),n}function Ce(s){if(typeof document>"u")return;const t=document.documentElement;t.style.setProperty("--accent",s.accent),t.style.setProperty("--success",s.success),t.style.setProperty("--warning",s.warning),t.style.setProperty("--error",s.error),t.style.setProperty("--info",s.info),t.style.setProperty("--accent-bg",Te(s.accent,.12)),t.style.setProperty("--accent-border",Te(s.accent,.4)),s.fontFamily&&t.style.setProperty("--font-sans",`'${s.fontFamily}', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif`),s.fontSize&&t.style.setProperty("--base-font-size",`${s.fontSize}px`),t.dataset.compactMode=s.compactMode?"true":"false",t.dataset.animations=s.animations?"true":"false"}function Te(s,t){const n=/^#?([0-9a-f]{6})$/i.exec(s||"");if(!n)return`rgba(139, 92, 246, ${t})`;const r=parseInt(n[1],16),i=r>>16&255,m=r>>8&255,b=r&255;return`rgba(${i}, ${m}, ${b}, ${t})`}function oe({size:s="md",className:t,label:n}){return e.jsx("span",{className:Q("spinner",`spinner-${s}`,t),role:"status","aria-label":n||"Loading"})}const ut="modulepreload",ht=function(s){return"/"+s},Ae={},_e=function(t,n,r){let i=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const b=document.querySelector("meta[property=csp-nonce]"),d=(b==null?void 0:b.nonce)||(b==null?void 0:b.getAttribute("nonce"));i=Promise.allSettled(n.map(x=>{if(x=ht(x),x in Ae)return;Ae[x]=!0;const y=x.endsWith(".css"),a=y?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${x}"]${a}`))return;const j=document.createElement("link");if(j.rel=y?"stylesheet":ut,y||(j.as="script"),j.crossOrigin="",j.href=x,d&&j.setAttribute("nonce",d),document.head.appendChild(j),y)return new Promise((v,u)=>{j.addEventListener("load",v),j.addEventListener("error",()=>u(new Error(`Unable to preload CSS for ${x}`)))})}))}function m(b){const d=new Event("vite:preloadError",{cancelable:!0});if(d.payload=b,window.dispatchEvent(d),!d.defaultPrevented)throw b}return i.then(b=>{for(const d of b||[])d.status==="rejected"&&m(d.reason);return t().catch(m)})};function bt({onMenuClick:s,scrolled:t,activeTab:n,onSettings:r,onSearch:i}){return e.jsxs("header",{className:Q("mobile-header",t&&"is-scrolled"),children:[e.jsx("button",{onClick:s,className:"mobile-menu-btn","aria-label":"Open menu",type:"button",children:e.jsx(Ze,{size:20})}),e.jsx("h1",{className:"mobile-header-title",children:n==="settings"?"Settings":"Bizar"}),r?e.jsx("button",{onClick:r,className:"mobile-settings-exit","aria-label":"Exit settings",type:"button",children:e.jsx(G,{size:20})}):e.jsx("button",{onClick:i,className:"mobile-search-btn","aria-label":"Search",type:"button",children:e.jsx(de,{size:20})})]})}function pt({open:s,onClose:t,tabs:n,activeTab:r,onTabChange:i}){return e.jsxs(e.Fragment,{children:[s&&e.jsx("div",{className:"mobile-drawer-overlay",onClick:t,"aria-hidden":"true"}),e.jsxs("aside",{className:Q("mobile-drawer",s&&"is-open"),role:"dialog","aria-modal":"true","aria-label":"All views",children:[e.jsxs("div",{className:"mobile-drawer-head",children:[e.jsx("h2",{children:"All Views"}),e.jsx("button",{onClick:t,"aria-label":"Close menu",type:"button",className:"mobile-drawer-close",children:e.jsx(G,{size:20})})]}),e.jsx("div",{className:"mobile-drawer-grid",children:n.map(m=>{const b=m.icon;return e.jsxs("button",{role:"tab","aria-selected":r===m.id,className:Q("mobile-drawer-item",r===m.id&&"is-active"),onClick:()=>i(m.id),type:"button",children:[e.jsx(b,{size:22}),e.jsx("span",{children:m.label})]},m.id)})})]})]})}function ft({tabs:s,activeTab:t,onTabChange:n}){return e.jsx("nav",{className:"mobile-bottom-nav",role:"tablist","aria-label":"Primary navigation",children:s.map(r=>{const i=r.icon;return e.jsxs("button",{role:"tab","aria-selected":t===r.id,className:Q("mobile-nav-item",t===r.id&&"is-active"),onClick:()=>n(r.id),type:"button",children:[e.jsx(i,{size:20}),e.jsx("span",{className:"mobile-nav-label",children:r.label})]},r.id)})})}function xt({children:s,activeTab:t,onTabChange:n,tabs:r,fullTabs:i,onExitSettings:m,onSearch:b}){const[d,x]=o.useState(!1),[y,a]=o.useState(!1);return e.jsxs("div",{className:"mobile-layout",children:[e.jsx(bt,{onMenuClick:()=>x(!0),scrolled:y,activeTab:t,onSettings:t==="settings"?m:null,onSearch:b}),e.jsx(pt,{open:d,onClose:()=>x(!1),tabs:i,activeTab:t,onTabChange:j=>{n(j),x(!1)}}),e.jsx("main",{className:"mobile-content",onScroll:j=>a(j.currentTarget.scrollTop>10),children:s}),e.jsx(ft,{tabs:r,activeTab:t,onTabChange:n})]})}function q({open:s,onClose:t,title:n,children:r,actions:i,maxHeight:m="85vh"}){const b=o.useRef(null),d=o.useRef(null),x=o.useId(),y=o.useRef(null),a=o.useRef(null),j=o.useRef(0),v=o.useRef(0),u=()=>{var p;return((p=b.current)==null?void 0:p.querySelectorAll('button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])'))??[]};if(o.useEffect(()=>{if(!s)return;y.current=document.activeElement instanceof HTMLElement?document.activeElement:null;const p=g=>{var I;if(g.key==="Escape"&&t(),g.key!=="Tab")return;const A=Array.from(u());if(A.length===0){g.preventDefault(),(I=b.current)==null||I.focus();return}const S=A[0],R=A[A.length-1],D=document.activeElement;if(g.shiftKey){(!D||D===S||D===b.current)&&(g.preventDefault(),R==null||R.focus());return}D===R&&(g.preventDefault(),S==null||S.focus())};return window.addEventListener("keydown",p),requestAnimationFrame(()=>{var g,A;((g=d.current)==null?void 0:g.focus())??((A=b.current)==null||A.focus())}),()=>{var g;window.removeEventListener("keydown",p),(g=y.current)==null||g.focus()}},[s,t]),o.useEffect(()=>(s?(v.current=window.scrollY,document.documentElement.style.overflow="hidden",document.body.style.overflow="hidden",document.body.style.position="fixed",document.body.style.top=`-${v.current}px`,document.body.style.left="0",document.body.style.right="0",document.body.style.width="100%"):(document.documentElement.style.overflow="",document.body.style.overflow="",document.body.style.position="",document.body.style.top="",document.body.style.left="",document.body.style.right="",document.body.style.width=""),()=>{document.documentElement.style.overflow="",document.body.style.overflow="",document.body.style.position="",document.body.style.top="",document.body.style.left="",document.body.style.right="",document.body.style.width="",window.scrollTo(0,v.current)}),[s]),!s)return null;const c=p=>{var g;p.isPrimary&&(a.current=p.clientY,j.current=0,(g=b.current)==null||g.setPointerCapture(p.pointerId))},l=p=>{if(a.current==null||!b.current)return;const g=Math.max(0,p.clientY-a.current);j.current=g,b.current.style.transform=`translateY(${g}px)`},N=p=>{if(!b.current)return;p&&b.current.hasPointerCapture(p.pointerId)&&b.current.releasePointerCapture(p.pointerId);const g=j.current;b.current.style.transform="",a.current=null,j.current=0,g>72&&t()};return e.jsx("div",{className:"mobile-sheet-overlay",onClick:t,children:e.jsxs("div",{ref:b,className:"mobile-sheet",style:{maxHeight:m},onClick:p=>p.stopPropagation(),role:"dialog","aria-modal":!0,"aria-label":n?void 0:"Sheet","aria-labelledby":n?x:void 0,tabIndex:-1,children:[e.jsx("div",{className:"mobile-sheet-handle",onPointerDown:c,onPointerMove:l,onPointerUp:N,onPointerCancel:N,"aria-hidden":"true"}),e.jsxs("div",{className:"mobile-sheet-header",children:[n?e.jsx("h3",{id:x,className:"mobile-sheet-title",children:n}):e.jsx("div",{}),e.jsx("button",{ref:d,type:"button",className:"mobile-icon-btn",onClick:t,"aria-label":"Close",children:e.jsx(G,{size:18})})]}),e.jsx("div",{className:"mobile-sheet-content",children:r}),i&&e.jsx("div",{className:"mobile-sheet-actions",children:i})]})})}const jt=["all","tasks","agents","bg","artifacts","mods"],ce={all:"All",tasks:"Tasks",agents:"Agents",bg:"Background",artifacts:"Plans",mods:"Mods"};function gt({snapshot:s,onRefresh:t}){var P;const[n,r]=o.useState(((P=s.overview)==null?void 0:P.recentActivity)||[]),[i,m]=o.useState(!0),[b,d]=o.useState("all"),[x,y]=o.useState(!1),[a,j]=o.useState(null),[v,u]=o.useState(""),[c,l]=o.useState(!1);o.useEffect(()=>{var f;(f=s.overview)!=null&&f.recentActivity?(r(s.overview.recentActivity),m(!1)):N()},[s.overview]);const N=async()=>{var f;try{const L=await C.get("/snapshot");r(((f=L.overview)==null?void 0:f.recentActivity)||[])}catch{}finally{m(!1)}},p=b==="all"?n:n.filter(f=>{var L,h,w,T,E,M;return b==="tasks"?(L=f.kind)==null?void 0:L.startsWith("task"):b==="agents"?(h=f.kind)==null?void 0:h.startsWith("agent"):b==="bg"?((w=f.kind)==null?void 0:w.includes("bg"))||((T=f.kind)==null?void 0:T.includes("schedule")):b==="artifacts"?(E=f.kind)==null?void 0:E.includes("artifacts"):b==="mods"?(M=f.kind)==null?void 0:M.includes("mod"):!0}),g=s.agents||[],A=s.tasks||[],S=A.filter(f=>f.status==="doing"||f.status==="queued"),R=A.filter(f=>f.status==="done"),D=async()=>{if(!(!v.trim()||c)){l(!0);try{await C.post("/chat",{message:v.trim(),agent:"odin"}),u(""),await t().catch(()=>{}),await N()}catch{}finally{l(!1)}}},I=async()=>{await t().catch(()=>{}),await N()};return e.jsxs("div",{className:"mobile-view",children:[e.jsxs("div",{className:"mobile-submit-hero",children:[e.jsx("textarea",{className:"mobile-submit-input",placeholder:"What needs to be done? Describe a task, bug, or refactor for Odin to artifacts…",value:v,onChange:f=>u(f.target.value),rows:2}),e.jsxs("div",{className:"mobile-submit-actions",children:[e.jsx("div",{className:"mobile-submit-chips",children:["Implement feature","Fix bug","Refactor","Investigate","Write tests"].map(f=>e.jsx("button",{type:"button",className:"mobile-submit-chip",onClick:()=>u(L=>L?`${L} ${f}`:f),children:f},f))}),e.jsxs("button",{type:"button",className:"mobile-btn",disabled:!v.trim()||c,onClick:D,children:[e.jsx(et,{size:14})," Submit to Odin"]})]})]}),e.jsxs("div",{className:"mobile-stats",children:[e.jsxs("div",{className:"mobile-stat",children:[e.jsx("div",{className:"mobile-stat-value",children:g.length}),e.jsx("div",{className:"mobile-stat-label",children:"Agents"})]}),e.jsxs("div",{className:"mobile-stat",children:[e.jsx("div",{className:"mobile-stat-value",children:S.length}),e.jsx("div",{className:"mobile-stat-label",children:"Active"})]}),e.jsxs("div",{className:"mobile-stat",children:[e.jsx("div",{className:"mobile-stat-value",children:R.length}),e.jsx("div",{className:"mobile-stat-label",children:"Done"})]}),e.jsxs("div",{className:"mobile-stat",children:[e.jsx("div",{className:"mobile-stat-value",children:s.artifacts.length||0}),e.jsx("div",{className:"mobile-stat-label",children:"Plans"})]})]}),i&&n.length===0&&e.jsx("div",{className:"mobile-loading mobile-loading-inline",children:e.jsx("p",{children:"Loading activity…"})}),e.jsxs("div",{className:"mobile-activity-header",children:[e.jsx("h3",{className:"mobile-section-title",style:{margin:0},children:"Recent Activity"}),e.jsxs("div",{style:{display:"flex",gap:4},children:[e.jsx("button",{type:"button",className:"mobile-icon-btn",onClick:()=>y(f=>!f),"aria-label":x?"Resume":"Pause",children:x?e.jsx(ee,{size:14}):e.jsx(tt,{size:14})}),e.jsx("button",{type:"button",className:"mobile-icon-btn",onClick:I,"aria-label":"Refresh",children:e.jsx(_,{size:14})})]})]}),e.jsx("div",{className:"mobile-search-scopes",children:jt.map(f=>e.jsx("button",{type:"button",className:`mobile-scope-chip ${b===f?"active":""}`,onClick:()=>d(f),children:ce[f]},f))}),g.length>0&&e.jsxs("section",{className:"mobile-section",children:[e.jsxs("h3",{className:"mobile-section-title",children:[e.jsx(se,{size:14})," Agents"]}),e.jsx("div",{className:"mobile-card-list",children:g.slice(0,6).map(f=>e.jsxs("div",{className:"mobile-agent-card",children:[e.jsx("div",{className:"mobile-agent-dot","data-status":f.status||"idle"}),e.jsxs("div",{className:"mobile-agent-info",children:[e.jsx("span",{className:"mobile-agent-name",children:f.name}),e.jsx("span",{className:"mobile-agent-meta",children:f.status||"idle"})]})]},f.name))})]}),!x&&p.length>0&&e.jsx("section",{className:"mobile-section",children:e.jsx("div",{className:"mobile-card-list",children:p.slice(0,30).map((f,L)=>e.jsxs("button",{type:"button",className:"mobile-event-item",onClick:()=>j(f),children:[e.jsx("span",{className:"mobile-event-kind","data-kind":f.kind,children:ce[f.kind]||f.kind}),e.jsx("span",{className:"mobile-event-msg",children:vt(f)}),e.jsx("span",{className:"mobile-event-time",children:K(f.ts)})]},`${f.ts}-${f.kind}-${L}`))})}),!x&&p.length===0&&n.length>0&&e.jsxs("div",{className:"mobile-empty",children:[e.jsx(me,{size:40}),e.jsx("p",{children:"No matching activity."}),e.jsx("p",{className:"muted",children:"Try a different filter."})]}),a&&e.jsx(q,{open:!0,onClose:()=>j(null),title:ce[a.kind]||a.kind,children:e.jsxs("div",{className:"mobile-agent-detail-meta",children:[e.jsxs("div",{className:"mobile-task-detail-row",children:[e.jsx("span",{children:"Kind"}),e.jsx("span",{children:a.kind})]}),e.jsxs("div",{className:"mobile-task-detail-row",children:[e.jsx("span",{children:"Time"}),e.jsx("span",{children:new Date(a.ts).toLocaleString()})]}),Object.entries(a).filter(([f])=>!["ts","kind"].includes(f)).map(([f,L])=>e.jsxs("div",{className:"mobile-task-detail-row",children:[e.jsx("span",{children:f}),e.jsx("span",{style:{fontSize:12,maxWidth:200,wordBreak:"break-all"},children:typeof L=="object"?JSON.stringify(L):String(L)})]},f))]})}),g.length===0&&S.length===0&&e.jsxs("div",{className:"mobile-empty",children:[e.jsx(me,{size:40}),e.jsx("p",{children:"No activity yet."}),e.jsx("p",{className:"muted",children:"Start a task or chat to see things here."})]})]})}function vt(s){const t=s.kind||"";return t.includes("task")?`Task: ${s.title||s.id||"updated"}`:t.includes("agent")?`Agent: ${s.name||"status changed"}`:t.includes("artifacts")?`Plan: ${s.slug||"changed"}`:t.includes("mod")?`Mod: ${s.name||"changed"}`:t.includes("schedule")?`Schedule: ${s.name||"triggered"}`:JSON.stringify(s).slice(0,80)}function W({open:s,onClose:t,title:n,children:r,actions:i}){const m=o.useRef(null),b=o.useRef(null),d=o.useRef(null),x=o.useId(),y=o.useRef(0);return o.useEffect(()=>{if(!s)return;d.current=document.activeElement instanceof HTMLElement?document.activeElement:null;const a='button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])',j=v=>{var p,g;if(v.key==="Escape"&&t(),v.key!=="Tab")return;const u=Array.from(((p=m.current)==null?void 0:p.querySelectorAll(a))??[]);if(u.length===0){v.preventDefault(),(g=m.current)==null||g.focus();return}const c=u[0],l=u[u.length-1],N=document.activeElement;if(v.shiftKey){(!N||N===c||N===m.current)&&(v.preventDefault(),l==null||l.focus());return}N===l&&(v.preventDefault(),c==null||c.focus())};return window.addEventListener("keydown",j),y.current=window.scrollY,document.documentElement.style.overflow="hidden",document.body.style.overflow="hidden",document.body.style.position="fixed",document.body.style.top=`-${y.current}px`,document.body.style.left="0",document.body.style.right="0",document.body.style.width="100%",requestAnimationFrame(()=>{var v,u;((v=b.current)==null?void 0:v.focus())??((u=m.current)==null||u.focus())}),()=>{var v;window.removeEventListener("keydown",j),document.documentElement.style.overflow="",document.body.style.overflow="",document.body.style.position="",document.body.style.top="",document.body.style.left="",document.body.style.right="",document.body.style.width="",window.scrollTo(0,y.current),(v=d.current)==null||v.focus()}},[s,t]),s?e.jsx("div",{className:"mobile-modal-overlay",onClick:a=>{a.target===a.currentTarget&&t()},children:e.jsxs("div",{ref:m,className:"mobile-modal",onClick:a=>a.stopPropagation(),role:"dialog","aria-modal":!0,"aria-label":n?void 0:"Modal","aria-labelledby":n?x:void 0,tabIndex:-1,children:[e.jsxs("div",{className:"mobile-modal-header",children:[n?e.jsx("h2",{id:x,className:"mobile-modal-title",children:n}):e.jsx("div",{}),e.jsx("button",{ref:b,type:"button",className:"mobile-icon-btn",onClick:t,"aria-label":"Close",children:e.jsx(G,{size:20})})]}),e.jsx("div",{className:"mobile-modal-content",children:r}),i&&e.jsx("div",{className:"mobile-modal-actions",children:i})]})}):null}const We=["reasoning","code","design","planning","gitops","analysis"],Ee={reasoning:"var(--accent)",code:"var(--info)",design:"var(--success)",planning:"var(--warning)",gitops:"var(--error)",analysis:"var(--text-dim)"};function $e({snapshot:s,onBack:t,onOpenAgent:n,selectedAgent:r,onRefresh:i}){const[m,b]=o.useState(s.agents||[]),[d,x]=o.useState(!s.agents),[y,a]=o.useState(""),[j,v]=o.useState(""),[u,c]=o.useState(null),[l,N]=o.useState(!1),[p,g]=o.useState(""),[A,S]=o.useState(!1);o.useEffect(()=>{if(r){const h=m.find(w=>w.name===r);h&&c(h)}},[r,m]);const R=async()=>{try{const h=await C.get("/agents");b(h.agents||[])}catch{}finally{x(!1)}},D=m.filter(h=>{if(y&&h.category!==y)return!1;if(j){const w=j.toLowerCase();if(!h.name.toLowerCase().includes(w)&&!(h.description||"").toLowerCase().includes(w))return!1}return!0}),I=async(h,w)=>{try{await C.post(`/agents/${encodeURIComponent(h)}/invoke`,{prompt:w}),S(!1),g("")}catch{}},P=async h=>{try{await C.post(`/agents/${encodeURIComponent(h)}/restart`),await R()}catch{}},f=async h=>{if(confirm(`Delete agent "${h}"?`))try{await C.del(`/agents/${encodeURIComponent(h)}`),b(w=>w.filter(T=>T.name!==h)),c(null),i==null||i()}catch{}},L=async h=>{try{const w=await C.post("/agents",h);b(T=>[...T,w]),N(!1),i==null||i()}catch{}};return e.jsxs("div",{className:"mobile-view",children:[e.jsxs("div",{className:"mobile-tasks-toolbar",children:[e.jsx("input",{className:"mobile-search-input",type:"text",placeholder:"Search agents…",value:j,onChange:h=>v(h.target.value),style:{flex:1}}),e.jsx("button",{type:"button",className:"mobile-icon-btn",onClick:()=>R(),"aria-label":"Refresh",children:e.jsx(_,{size:16})}),e.jsx("button",{type:"button",className:"mobile-icon-btn",onClick:()=>N(!0),"aria-label":"New agent",children:e.jsx(B,{size:16})})]}),e.jsxs("div",{className:"mobile-search-scopes",children:[e.jsx("button",{type:"button",className:`mobile-scope-chip ${y?"":"active"}`,onClick:()=>a(""),children:"All"}),We.map(h=>e.jsx("button",{type:"button",className:`mobile-scope-chip ${y===h?"active":""}`,onClick:()=>a(h),children:h},h))]}),d?e.jsx("div",{className:"mobile-loading",children:e.jsx("p",{children:"Loading…"})}):D.length===0?e.jsxs("div",{className:"mobile-empty",children:[e.jsx(se,{size:40}),e.jsx("p",{children:"No agents found."})]}):e.jsx("div",{className:"mobile-card-list",children:D.map(h=>e.jsxs("button",{type:"button",className:"mobile-list-item mobile-list-item-interactive",onClick:()=>{c(h),n(h.name)},children:[e.jsx("div",{className:"mobile-agent-dot","data-status":h.status||"idle"}),e.jsxs("div",{className:"mobile-list-content",children:[e.jsx("span",{className:"mobile-list-title",children:h.name}),e.jsx("span",{className:"mobile-list-meta",children:h.model||h.mode||"—"})]}),h.category&&e.jsx("span",{className:"mobile-list-badge",style:{color:Ee[h.category]||"var(--text-dim)"},children:h.category}),e.jsx("span",{className:"mobile-list-badge","data-status":h.status||"idle",children:h.status||"idle"})]},h.name))}),u&&e.jsx(q,{open:!0,onClose:()=>c(null),title:u.name,actions:e.jsxs("div",{className:"mobile-task-detail-actions",children:[e.jsxs("button",{type:"button",className:"mobile-btn",onClick:()=>{g(""),S(!0)},children:[e.jsx(ee,{size:14})," Invoke"]}),(u.isStuck||u.status==="error"||u.status==="working")&&e.jsxs("button",{type:"button",className:"mobile-btn mobile-btn-secondary",onClick:()=>P(u.name),children:[e.jsx(st,{size:14})," Restart"]}),e.jsx("button",{type:"button",className:"mobile-btn mobile-btn-danger",onClick:()=>f(u.name),children:e.jsx(ae,{size:14})})]}),children:e.jsxs("div",{className:"mobile-agent-detail",children:[e.jsxs("div",{className:"mobile-agent-detail-status",children:[e.jsx("span",{className:"mobile-agent-dot","data-status":u.status||"idle"}),e.jsx("span",{className:"mobile-agent-detail-status-text",children:u.status||"idle"}),u.category&&e.jsx("span",{className:"mobile-list-badge",style:{color:Ee[u.category]},children:u.category})]}),e.jsx("p",{className:"mobile-agent-detail-desc",children:u.description||"No description."}),e.jsxs("div",{className:"mobile-agent-detail-meta",children:[e.jsxs("div",{className:"mobile-task-detail-row",children:[e.jsx("span",{children:"Model"}),e.jsx("span",{className:"mono",children:u.model||"—"})]}),e.jsxs("div",{className:"mobile-task-detail-row",children:[e.jsx("span",{children:"Mode"}),e.jsx("span",{children:u.mode||"subagent"})]}),e.jsxs("div",{className:"mobile-task-detail-row",children:[e.jsx("span",{children:"Path"}),e.jsx("span",{className:"mono",style:{fontSize:11},children:u.path})]}),u.lastError&&e.jsxs("div",{className:"mobile-task-detail-row",style:{color:"var(--error)"},children:[e.jsx("span",{children:"Last error"}),e.jsx("span",{children:u.lastError.message})]}),u.tasksTotal!=null&&u.tasksTotal>0&&e.jsxs("div",{className:"mobile-task-detail-row",children:[e.jsx("span",{children:"Success rate"}),e.jsxs("span",{children:[Math.round((u.successRate||0)*100),"%"]})]}),e.jsxs("div",{className:"mobile-task-detail-row",children:[e.jsx("span",{children:"Last modified"}),e.jsx("span",{children:K(u.mtime)})]})]})]})}),e.jsxs(W,{open:A,onClose:()=>S(!1),title:`Invoke ${u==null?void 0:u.name}`,actions:e.jsxs("button",{type:"button",className:"mobile-btn",style:{width:"100%"},disabled:!p.trim(),onClick:()=>{u&&I(u.name,p.trim())},children:[e.jsx(ee,{size:14})," Invoke"]}),children:[e.jsxs("p",{className:"muted",style:{marginBottom:12},children:["Model: ",e.jsx("span",{className:"mono",children:(u==null?void 0:u.model)||"—"})]}),e.jsx("textarea",{className:"mobile-input",rows:5,placeholder:"What should this agent do?",value:p,onChange:h=>g(h.target.value),autoFocus:!0})]}),e.jsx(yt,{open:l,onClose:()=>N(!1),onCreate:L})]})}function yt({open:s,onClose:t,onCreate:n}){const[r,i]=o.useState(""),[m,b]=o.useState(""),[d,x]=o.useState(""),[y,a]=o.useState("subagent"),[j,v]=o.useState("#8b5cf6"),[u,c]=o.useState(""),[l,N]=o.useState(""),[p,g]=o.useState(""),A=S=>{S.preventDefault(),r.trim()&&(n({name:r.trim(),description:m.trim(),model:d,mode:y,color:j,tools:[],tags:l.split(",").map(R=>R.trim()).filter(Boolean),category:u,prompt:p}),i(""),b(""),x(""),a("subagent"),v("#8b5cf6"),c(""),N(""),g(""))};return e.jsx(W,{open:s,onClose:t,title:"New Agent",actions:e.jsxs("button",{type:"submit",form:"new-agent-form",className:"mobile-btn",style:{width:"100%"},children:[e.jsx(B,{size:14})," Create"]}),children:e.jsxs("form",{id:"new-agent-form",onSubmit:A,className:"mobile-task-form",children:[e.jsx("label",{className:"mobile-field-label",children:"Name *"}),e.jsx("input",{className:"mobile-input",type:"text",placeholder:"my-agent",pattern:"[a-z0-9][a-z0-9-]{0,63}",value:r,onChange:S=>i(S.target.value),autoFocus:!0,required:!0}),e.jsx("label",{className:"mobile-field-label",children:"Description"}),e.jsx("input",{className:"mobile-input",type:"text",placeholder:"What does this agent do?",value:m,onChange:S=>b(S.target.value)}),e.jsx("label",{className:"mobile-field-label",children:"Model"}),e.jsx("input",{className:"mobile-input",type:"text",placeholder:"(provider default)",value:d,onChange:S=>x(S.target.value)}),e.jsx("label",{className:"mobile-field-label",children:"Category"}),e.jsxs("select",{className:"mobile-input",value:u,onChange:S=>c(S.target.value),children:[e.jsx("option",{value:"",children:"None"}),We.map(S=>e.jsx("option",{value:S,children:S},S))]}),e.jsx("label",{className:"mobile-field-label",children:"Tags (comma-separated)"}),e.jsx("input",{className:"mobile-input",type:"text",placeholder:"tag1, tag2",value:l,onChange:S=>N(S.target.value)})]})})}function Nt({onBack:s}){const[t,n]=o.useState([]),[r,i]=o.useState(!0),[m,b]=o.useState({}),[d,x]=o.useState(!1),y=async()=>{try{const l=await C.get("/config"),N=Object.entries(l).map(([p,g])=>({key:p,value:g,type:a(g)}));n(N),b(Object.fromEntries(Object.entries(l).map(([p,g])=>[p,g])))}catch{}finally{i(!1)}};o.useEffect(()=>{y()},[]);const a=l=>typeof l=="boolean"?"boolean":typeof l=="number"?"number":typeof l=="string"?"string":Array.isArray(l)?"array":l&&typeof l=="object"?"object":"unknown",j=(l,N)=>{b(p=>({...p,[l]:N}))},v=async()=>{x(!0);try{await C.patch("/config",m),await y()}catch{}finally{x(!1)}},u=(l,N)=>{b(p=>({...p,[l]:N}))},c=l=>{const N=m[l.key];switch(l.type){case"boolean":return e.jsxs("label",{className:"mobile-toggle",children:[e.jsx("input",{type:"checkbox",checked:!!N,onChange:p=>j(l.key,p.target.checked)}),e.jsx("span",{className:"mobile-toggle-slider"})]});case"number":return e.jsx("input",{className:"mobile-input mobile-input-sm",type:"number",inputMode:"numeric",value:String(N??""),onChange:p=>j(l.key,Number(p.target.value))});case"string":return e.jsx("input",{className:"mobile-input mobile-input-sm",type:"text",value:String(N??""),onChange:p=>j(l.key,p.target.value)});case"object":case"array":return e.jsx("textarea",{className:"mobile-input mobile-input-sm",rows:2,value:JSON.stringify(N??null,null,2),onChange:p=>{try{j(l.key,JSON.parse(p.target.value))}catch{}}});default:return e.jsx("span",{className:"mobile-setting-value mono",children:String(N??"null")})}};return e.jsxs("div",{className:"mobile-view",children:[e.jsxs("div",{className:"mobile-tasks-toolbar",children:[e.jsxs("span",{style:{fontSize:14,color:"var(--text-muted)",flex:1},children:[t.length," config entries"]}),e.jsx("button",{type:"button",className:"mobile-icon-btn",onClick:()=>y(),"aria-label":"Refresh",children:e.jsx(_,{size:16})}),e.jsxs("button",{type:"button",className:"mobile-btn",disabled:d,onClick:()=>v(),children:[e.jsx(at,{size:14})," ",d?"Saving…":"Save all"]})]}),r?e.jsx("div",{className:"mobile-loading",children:e.jsx("p",{children:"Loading…"})}):t.length===0?e.jsxs("div",{className:"mobile-empty",children:[e.jsx(J,{size:40}),e.jsx("p",{children:"No config entries."})]}):e.jsx("div",{className:"mobile-config-list",children:t.map(l=>e.jsxs("div",{className:"mobile-config-row",children:[e.jsxs("div",{className:"mobile-config-key",children:[e.jsx("span",{className:"mono",children:l.key}),e.jsx("span",{className:"mobile-config-type",children:l.type})]}),e.jsx("div",{className:"mobile-config-value",children:c(l)}),e.jsx("button",{type:"button",className:"mobile-icon-btn",onClick:()=>u(l.key,l.defaultValue),"aria-label":"Reset to default",title:"Reset",children:e.jsx(nt,{size:14})})]},l.key))})]})}function kt({onBack:s}){const[t,n]=o.useState([]),[r,i]=o.useState(!0),[m,b]=o.useState(null),[d,x]=o.useState(""),y=async()=>{try{const u=await C.get("/history");if(Array.isArray(u.history)){n(u.history);return}if(Array.isArray(u.projects)){const c=new Map;for(const l of u.events||[]){const N=l.projectId;if(!N)continue;const p=c.get(N);(!p||new Date(l.ts).getTime()>new Date(p.ts).getTime())&&c.set(N,l)}n(u.projects.map(l=>{const N=c.get(l.id);return{id:l.id,ts:l.lastAccessed||(N==null?void 0:N.ts)||new Date(0).toISOString(),agent:l.name,taskCount:l.tasks.total,summary:`${l.path} · ${l.tasks.done}/${l.tasks.total} done · ${l.plans} plan${l.plans===1?"":"s"}`,output:N?`${N.kind}${N.text?` — ${N.text}`:""}`:"No recent events."}}));return}n([])}catch{}finally{i(!1)}};o.useEffect(()=>{y()},[]);const a=u=>{if(!u)return"—";const c=Math.floor(u/1e3);if(c<60)return`${c}s`;const l=Math.floor(c/60),N=c%60;return`${l}m ${N}s`},j=u=>new Date(u).toLocaleString(),v=d.trim()?t.filter(u=>{const c=d.toLowerCase();return(u.agent||"session").toLowerCase().includes(c)||(u.summary||"").toLowerCase().includes(c)||(u.output||"").toLowerCase().includes(c)}):t;return e.jsxs("div",{className:"mobile-view",children:[e.jsxs("div",{className:"mobile-tasks-toolbar",children:[e.jsx("input",{className:"mobile-search-input",type:"text",placeholder:"Search history…",value:d,onChange:u=>x(u.target.value),style:{flex:1}}),e.jsx("button",{type:"button",className:"mobile-icon-btn",onClick:()=>y(),"aria-label":"Refresh",children:e.jsx(_,{size:16})})]}),r?e.jsx("div",{className:"mobile-loading",children:e.jsx("p",{children:"Loading…"})}):v.length===0?e.jsxs("div",{className:"mobile-empty",children:[e.jsx(ue,{size:40}),e.jsx("p",{children:t.length===0?"No history yet.":"No matching sessions."})]}):e.jsx("div",{className:"mobile-card-list",children:v.map(u=>e.jsxs("button",{type:"button",className:"mobile-list-item mobile-list-item-interactive",onClick:()=>b(u),children:[e.jsx("div",{className:"mobile-list-icon",children:e.jsx(ue,{size:16})}),e.jsxs("div",{className:"mobile-list-content",children:[e.jsx("span",{className:"mobile-list-title",children:u.agent||"Session"}),e.jsxs("span",{className:"mobile-list-meta",children:[j(u.ts),u.duration?` · ${a(u.duration)}`:"",u.taskCount?` · ${u.taskCount} tasks`:""]})]})]},u.id))}),m&&e.jsxs(q,{open:!0,onClose:()=>b(null),title:"Session Detail",children:[e.jsxs("div",{className:"mobile-agent-detail-meta",children:[e.jsxs("div",{className:"mobile-task-detail-row",children:[e.jsx("span",{children:"Agent"}),e.jsx("span",{children:m.agent||"—"})]}),e.jsxs("div",{className:"mobile-task-detail-row",children:[e.jsx("span",{children:"Started"}),e.jsx("span",{children:j(m.ts)})]}),e.jsxs("div",{className:"mobile-task-detail-row",children:[e.jsx("span",{children:"Duration"}),e.jsx("span",{children:a(m.duration)})]}),e.jsxs("div",{className:"mobile-task-detail-row",children:[e.jsx("span",{children:"Tasks"}),e.jsx("span",{children:m.taskCount||0})]})]}),m.summary&&e.jsxs("div",{style:{marginTop:12},children:[e.jsx("h4",{style:{fontSize:12,color:"var(--text-muted)",marginBottom:4},children:"Summary"}),e.jsx("p",{style:{fontSize:13},children:m.summary})]}),m.output&&e.jsxs("div",{style:{marginTop:12},children:[e.jsx("h4",{style:{fontSize:12,color:"var(--text-muted)",marginBottom:4},children:"Output"}),e.jsxs("pre",{className:"mono",style:{fontSize:11,whiteSpace:"pre-wrap",wordBreak:"break-all",background:"var(--bg-elev-2)",padding:8,borderRadius:6},children:[m.output.slice(0,1e3),m.output.length>1e3?"…":""]})]})]})]})}function wt({snapshot:s,onBack:t}){const[n,r]=o.useState(s.mods||[]),[i,m]=o.useState(!s.mods),[b,d]=o.useState(""),[x,y]=o.useState("all"),[a,j]=o.useState(null),v=async()=>{try{const l=await C.get("/mods");r(l.mods||[])}catch{}finally{m(!1)}};o.useEffect(()=>{s.mods?(r(s.mods),m(!1)):v()},[s.mods]);const u=async(l,N)=>{try{await C.patch(`/mods/${encodeURIComponent(l)}`,{enabled:N}),r(p=>p.map(g=>g.id===l?{...g,enabled:N}:g)),(a==null?void 0:a.id)===l&&j(p=>p&&{...p,enabled:N})}catch{}},c=n.filter(l=>{if(x==="enabled"&&!l.enabled||x==="disabled"&&l.enabled)return!1;if(b){const N=b.toLowerCase();return l.name.toLowerCase().includes(N)||l.description.toLowerCase().includes(N)}return!0});return e.jsxs("div",{className:"mobile-view",children:[e.jsxs("div",{className:"mobile-tasks-toolbar",children:[e.jsx("input",{className:"mobile-search-input",type:"text",placeholder:"Search mods…",value:b,onChange:l=>d(l.target.value),style:{flex:1}}),e.jsx("button",{type:"button",className:"mobile-icon-btn",onClick:()=>v(),"aria-label":"Refresh",children:e.jsx(_,{size:16})})]}),e.jsx("div",{className:"mobile-search-scopes",children:["all","enabled","disabled"].map(l=>e.jsx("button",{type:"button",className:`mobile-scope-chip ${x===l?"active":""}`,onClick:()=>y(l),children:l.charAt(0).toUpperCase()+l.slice(1)},l))}),i?e.jsx("div",{className:"mobile-loading",children:e.jsx("p",{children:"Loading…"})}):c.length===0?e.jsxs("div",{className:"mobile-empty",children:[e.jsx(J,{size:40}),e.jsx("p",{children:"No mods found."})]}):e.jsx("div",{className:"mobile-card-list",children:c.map(l=>e.jsxs("button",{type:"button",className:"mobile-list-item mobile-list-item-interactive",onClick:()=>j(l),children:[e.jsx("div",{className:"mobile-list-icon",children:e.jsx(J,{size:16})}),e.jsxs("div",{className:"mobile-list-content",children:[e.jsx("span",{className:"mobile-list-title",children:l.name}),e.jsxs("span",{className:"mobile-list-meta",children:["v",l.version," · ",l.author]})]}),e.jsx("span",{className:`mobile-list-badge ${l.enabled?"badge-on":"badge-off"}`,children:l.enabled?"on":"off"})]},l.id))}),a&&e.jsx(q,{open:!0,onClose:()=>j(null),title:a.name,actions:e.jsx("div",{className:"mobile-task-detail-actions",children:e.jsxs("button",{type:"button",className:"mobile-btn",style:{flex:1},onClick:()=>{a&&u(a.id,!a.enabled)},children:[e.jsx(Ue,{size:14})," ",a.enabled?"Disable":"Enable"]})}),children:e.jsxs("div",{className:"mobile-agent-detail",children:[e.jsx("p",{className:"mobile-agent-detail-desc",children:a.description||"No description."}),e.jsxs("div",{className:"mobile-agent-detail-meta",children:[e.jsxs("div",{className:"mobile-task-detail-row",children:[e.jsx("span",{children:"Version"}),e.jsx("span",{className:"mono",children:a.version})]}),e.jsxs("div",{className:"mobile-task-detail-row",children:[e.jsx("span",{children:"Author"}),e.jsx("span",{children:a.author})]}),e.jsxs("div",{className:"mobile-task-detail-row",children:[e.jsx("span",{children:"Bizar"}),e.jsx("span",{className:"mono",children:a.bizar})]}),e.jsxs("div",{className:"mobile-task-detail-row",children:[e.jsx("span",{children:"Type"}),e.jsx("span",{children:a.type})]}),e.jsxs("div",{className:"mobile-task-detail-row",children:[e.jsx("span",{children:"Permissions"}),e.jsx("span",{children:a.permissions.length})]}),a.installedAt&&e.jsxs("div",{className:"mobile-task-detail-row",children:[e.jsx("span",{children:"Installed"}),e.jsx("span",{children:new Date(a.installedAt).toLocaleDateString()})]})]})]})})]})}function St({snapshot:s,onNavigate:t}){var b,d,x;const[n,r]=o.useState(""),i=[{id:"artifacts",icon:H,label:"Plans",count:s.artifacts.length||0,desc:"Visual artifacts with elements & comments"},{id:"agents",icon:se,label:"Agents",count:((b=s.agents)==null?void 0:b.length)||0,desc:"The Norse pantheon"},{id:"skills",icon:J,label:"Skills",count:null,desc:"Agent capabilities & tools"},{id:"mods",icon:J,label:"Mods",count:((d=s.mods)==null?void 0:d.length)||0,desc:"Installed modifications"},{id:"schedules",icon:he,label:"Schedules",count:((x=s.schedules)==null?void 0:x.length)||0,desc:"Cron jobs & automated tasks"},{id:"history",icon:ue,label:"History",count:null,desc:"Past sessions & outputs"},{id:"config",icon:Be,label:"Config",count:null,desc:"Key-value configuration editor"}],m=n.trim()?i.filter(y=>y.label.toLowerCase().includes(n.toLowerCase())||y.desc.toLowerCase().includes(n.toLowerCase())):i;return e.jsxs("div",{className:"mobile-view",children:[e.jsx("div",{className:"mobile-tasks-toolbar",children:e.jsx("input",{className:"mobile-search-input",type:"text",placeholder:"Search…",value:n,onChange:y=>r(y.target.value),style:{flex:1}})}),e.jsx("div",{className:"mobile-card-list",children:m.map(y=>{const a=y.icon;return e.jsxs("button",{type:"button",className:"mobile-more-nav-item",onClick:()=>t(y.id),children:[e.jsx("div",{className:"mobile-more-nav-icon",children:e.jsx(a,{size:20})}),e.jsxs("div",{className:"mobile-more-nav-content",children:[e.jsxs("span",{className:"mobile-more-nav-label",children:[y.label,y.count!=null&&e.jsx("span",{className:"mobile-more-nav-count",children:y.count})]}),e.jsx("span",{className:"mobile-more-nav-desc",children:y.desc})]}),e.jsx(ve,{size:16,className:"mobile-more-nav-arrow"})]},y.id)})}),e.jsx("div",{className:"mobile-more-footer",children:e.jsxs("a",{href:"/?desktop=1",className:"mobile-more-link",children:["Switch to Desktop ",e.jsx(ve,{size:14})]})})]})}const be=[{id:"task",label:"Task",color:"var(--info)"},{id:"note",label:"Note",color:"var(--text-dim)"},{id:"decision",label:"Decision",color:"var(--accent)"},{id:"question",label:"Question",color:"var(--warning)"}];function re(s){var t;return((t=be.find(n=>n.id===s))==null?void 0:t.color)||"var(--text-dim)"}function Ct({type:s,size:t=12}){switch(s){case"task":return e.jsx(te,{size:t,style:{color:"var(--info)"}});case"note":return e.jsx(ye,{size:t,style:{color:"var(--text-dim)"}});case"decision":return e.jsx(te,{size:t,style:{color:"var(--accent)"}});case"question":return e.jsx(lt,{size:t,style:{color:"var(--warning)"}});default:return e.jsx(ye,{size:t})}}function Tt({slug:s,onBack:t}){const[n,r]=o.useState(null),[i,m]=o.useState(null),[b,d]=o.useState(!0),[x,y]=o.useState(!1),[a,j]=o.useState(null),[v,u]=o.useState(!1),[c,l]=o.useState(!1),[N,p]=o.useState(!1),[g,A]=o.useState(""),S=async()=>{d(!0);try{const f=await C.get(`/plans/${encodeURIComponent(s)}`);r(f.canvas),m(f.meta)}catch{}finally{d(!1)}};o.useEffect(()=>{S()},[s]);const R=async(f,L,h)=>{try{const w=((n==null?void 0:n.elements)||[]).reduce((E,M)=>Math.max(E,M.x||0),40),T=((n==null?void 0:n.elements)||[]).reduce((E,M)=>Math.max(E,M.y||0),40);await C.post(`/plans/${encodeURIComponent(s)}/elements`,{type:f,title:L,content:h,x:20+w,y:20+T,width:240,height:120}),await S(),l(!1)}catch{}},D=async(f,L)=>{try{await C.put(`/plans/${encodeURIComponent(s)}/elements/${encodeURIComponent(f)}`,L),await S(),j(null)}catch{}},I=async f=>{if(confirm("Delete this element?"))try{await C.del(`/plans/${encodeURIComponent(s)}/elements/${encodeURIComponent(f)}`),j(null),await S()}catch{}},P=async(f,L)=>{try{const h=L?`/plans/${encodeURIComponent(s)}/elements/${encodeURIComponent(L)}/comments`:`/plans/${encodeURIComponent(s)}/comments`;await C.post(h,{text:f,elementId:L}),await S(),A(""),p(!1)}catch{}};return b||!n||!i?e.jsx("div",{className:"mobile-view",children:e.jsx("div",{className:"mobile-loading",children:e.jsx("p",{children:"Loading canvas…"})})}):e.jsxs("div",{className:"mobile-view mobile-view-canvas",children:[e.jsxs("div",{className:"mobile-canvas-bar",children:[e.jsxs("div",{className:"mobile-canvas-meta",children:[e.jsx("span",{className:"mobile-canvas-title",children:i.title||s}),e.jsx("span",{className:"mobile-canvas-status","data-status":i.status,children:i.status})]}),e.jsxs("div",{className:"mobile-canvas-actions",children:[e.jsx("button",{type:"button",className:`mobile-icon-btn ${x?"active":""}`,onClick:()=>y(f=>!f),"aria-label":x?"Done editing":"Edit",children:e.jsx(Fe,{size:16})}),e.jsxs("button",{type:"button",className:"mobile-icon-btn",onClick:()=>u(f=>!f),"aria-label":"Comments",children:[e.jsx(V,{size:16}),n.comments.length>0&&e.jsx("span",{className:"mobile-canvas-comment-count",children:n.comments.length})]}),x&&e.jsx("button",{type:"button",className:"mobile-icon-btn",onClick:()=>l(!0),"aria-label":"Add element",children:e.jsx(B,{size:16})})]})]}),e.jsxs("div",{className:"mobile-canvas-elements",children:[n.elements.length===0&&e.jsxs("div",{className:"mobile-empty",children:[e.jsx("p",{children:"No elements yet."}),x&&e.jsxs("button",{type:"button",className:"mobile-btn",onClick:()=>l(!0),children:[e.jsx(B,{size:14})," Add Element"]})]}),n.elements.map(f=>e.jsxs("button",{type:"button",className:`mobile-canvas-element ${(a==null?void 0:a.id)===f.id?"selected":""}`,style:{borderColor:re(f.type)},onClick:()=>{x&&j(f)},"aria-pressed":(a==null?void 0:a.id)===f.id,children:[e.jsxs("div",{className:"mobile-canvas-el-header",style:{background:`${re(f.type)}18`},children:[e.jsx(Ct,{type:f.type,size:12}),e.jsx("span",{className:"mobile-canvas-el-type",style:{color:re(f.type)},children:f.type}),f.status&&f.status!=="open"&&e.jsx("span",{className:"mobile-canvas-el-status",children:f.status})]}),e.jsx("div",{className:"mobile-canvas-el-title",children:f.title||"Untitled"}),f.content&&e.jsxs("div",{className:"mobile-canvas-el-content",children:[f.content.slice(0,120),f.content.length>120?"…":""]}),e.jsxs("div",{className:"mobile-canvas-el-comments",children:[e.jsx(V,{size:10}),n.comments.filter(L=>L.elementId===f.id).length]})]},f.id))]}),v&&e.jsxs("div",{className:"mobile-canvas-comments",children:[e.jsxs("div",{className:"mobile-canvas-comments-header",children:[e.jsxs("h4",{children:["Comments (",n.comments.length,")"]}),e.jsx("button",{type:"button",className:"mobile-icon-btn",onClick:()=>u(!1),children:e.jsx(G,{size:16})})]}),e.jsxs("div",{className:"mobile-canvas-comment-list",children:[n.comments.length===0&&e.jsx("p",{className:"mobile-empty-inline",children:"No comments yet."}),n.comments.map(f=>e.jsxs("div",{className:"mobile-canvas-comment",children:[e.jsxs("div",{className:"mobile-canvas-comment-head",children:[e.jsx("span",{className:"mono",children:f.author}),e.jsx("span",{className:"muted",children:K(f.created)})]}),e.jsx("div",{className:"mobile-canvas-comment-text",children:f.text})]},f.id))]}),e.jsxs("div",{className:"mobile-canvas-comment-input",children:[e.jsx("textarea",{className:"mobile-input",rows:2,placeholder:"Add a comment…",value:g,onChange:f=>A(f.target.value)}),e.jsx("button",{type:"button",className:"mobile-btn",disabled:!g.trim(),onClick:()=>{P(g.trim(),null)},children:"Post"})]})]}),a&&e.jsx(q,{open:!0,onClose:()=>j(null),title:`Edit ${a.title||a.type}`,actions:e.jsxs("div",{className:"mobile-task-detail-actions",children:[e.jsxs("button",{type:"button",className:"mobile-btn mobile-btn-danger",onClick:()=>I(a.id),children:[e.jsx(ae,{size:14})," Delete"]}),e.jsxs("button",{type:"button",className:"mobile-btn",onClick:()=>p(!0),children:[e.jsx(V,{size:14})," Comment"]})]}),children:e.jsx(At,{element:a,onSave:f=>D(a.id,f),onClose:()=>j(null)})}),e.jsx(Et,{open:c,onClose:()=>l(!1),onAdd:R}),e.jsx(W,{open:N,onClose:()=>p(!1),title:"Add Comment",actions:e.jsxs("button",{type:"button",className:"mobile-btn",style:{width:"100%"},disabled:!g.trim(),onClick:()=>{P(g.trim(),(a==null?void 0:a.id)||null),p(!1)},children:[e.jsx(V,{size:14})," Post"]}),children:e.jsx("textarea",{className:"mobile-input",rows:3,placeholder:"Your comment…",value:g,onChange:f=>A(f.target.value),autoFocus:!0})})]})}function At({element:s,onSave:t,onClose:n}){const[r,i]=o.useState(s.type),[m,b]=o.useState(s.title||""),[d,x]=o.useState(s.content||""),[y,a]=o.useState(s.status||"open");return e.jsxs("form",{className:"mobile-task-form",onSubmit:j=>{j.preventDefault(),t({type:r,title:m,content:d,status:y}),n()},children:[e.jsx("label",{className:"mobile-field-label",children:"Type"}),e.jsx("select",{className:"mobile-input",value:r,onChange:j=>i(j.target.value),children:be.map(j=>e.jsx("option",{value:j.id,children:j.label},j.id))}),e.jsx("label",{className:"mobile-field-label",children:"Title"}),e.jsx("input",{className:"mobile-input",type:"text",value:m,onChange:j=>b(j.target.value)}),e.jsx("label",{className:"mobile-field-label",children:"Status"}),e.jsx("input",{className:"mobile-input",type:"text",value:y,onChange:j=>a(j.target.value),placeholder:"open / done / blocked"}),e.jsx("label",{className:"mobile-field-label",children:"Content (markdown)"}),e.jsx("textarea",{className:"mobile-input",rows:4,value:d,onChange:j=>x(j.target.value)}),e.jsx("button",{type:"submit",className:"mobile-btn",style:{width:"100%",marginTop:8},children:"Save"})]})}function Et({open:s,onClose:t,onAdd:n}){const[r,i]=o.useState("task"),[m,b]=o.useState(""),[d,x]=o.useState(""),y=a=>{a.preventDefault(),m.trim()&&(n(r,m.trim(),d.trim()),b(""),x(""))};return e.jsx(W,{open:s,onClose:t,title:"Add Element",actions:e.jsxs("button",{type:"submit",form:"add-el-form",className:"mobile-btn",style:{width:"100%"},children:[e.jsx(B,{size:14})," Add"]}),children:e.jsxs("form",{id:"add-el-form",onSubmit:y,className:"mobile-task-form",children:[e.jsx("label",{className:"mobile-field-label",children:"Type"}),e.jsx("select",{className:"mobile-input",value:r,onChange:a=>i(a.target.value),children:be.map(a=>e.jsx("option",{value:a.id,children:a.label},a.id))}),e.jsx("label",{className:"mobile-field-label",children:"Title *"}),e.jsx("input",{className:"mobile-input",type:"text",placeholder:"Element title",value:m,onChange:a=>b(a.target.value),autoFocus:!0,required:!0}),e.jsx("label",{className:"mobile-field-label",children:"Content (markdown)"}),e.jsx("textarea",{className:"mobile-input",rows:3,placeholder:"Description…",value:d,onChange:a=>x(a.target.value)})]})})}function $t({snapshot:s,onBack:t,onOpenArtifact:n}){const[r,i]=o.useState(s.artifacts||[]),[m,b]=o.useState(!s.artifacts),[d,x]=o.useState(""),[y,a]=o.useState(!1),[j,v]=o.useState(""),[u,c]=o.useState(""),l=async()=>{try{const g=await C.get("/artifacts");i(g.artifacts||[])}catch{}finally{b(!1)}},N=async()=>{if(j.trim())try{const g=await C.post("/artifacts",{slug:j.trim(),title:u.trim()||void 0});a(!1),v(""),c(""),n(g.slug)}catch{}},p=d.trim()?r.filter(g=>(g.title||g.slug||"").toLowerCase().includes(d.toLowerCase())):r;return e.jsxs("div",{className:"mobile-view",children:[e.jsxs("div",{className:"mobile-tasks-toolbar",children:[e.jsx("input",{className:"mobile-search-input",type:"text",placeholder:"Search artifacts…",value:d,onChange:g=>x(g.target.value),style:{flex:1}}),e.jsx("button",{type:"button",className:"mobile-icon-btn",onClick:()=>l(),"aria-label":"Refresh",children:e.jsx(_,{size:16})})]}),e.jsx("div",{style:{marginBottom:12},children:e.jsxs("button",{type:"button",className:"mobile-btn",style:{width:"100%"},onClick:()=>a(!0),children:[e.jsx(B,{size:14})," New Artifact"]})}),m?e.jsx("div",{className:"mobile-loading",children:e.jsx("p",{children:"Loading…"})}):p.length===0?e.jsxs("div",{className:"mobile-empty",children:[e.jsx(H,{size:40}),e.jsx("p",{children:"No artifacts yet."})]}):e.jsx("div",{className:"mobile-card-list",children:p.map(g=>e.jsxs("button",{type:"button",className:"mobile-list-item mobile-list-item-interactive",onClick:()=>n(g.slug),children:[e.jsx("div",{className:"mobile-list-icon",children:e.jsx(H,{size:16})}),e.jsxs("div",{className:"mobile-list-content",children:[e.jsx("span",{className:"mobile-list-title",children:g.title||g.slug}),e.jsxs("span",{className:"mobile-list-meta",children:[g.status," · ",g.source,g.elementCount!=null?` · ${g.elementCount} elements`:"",g.commentCount!=null?` · ${g.commentCount} comments`:""]})]}),e.jsx("span",{className:"mobile-list-badge","data-status":g.status,children:g.status})]},g.slug))}),e.jsx(W,{open:y,onClose:()=>a(!1),title:"New Artifact",actions:e.jsxs("button",{type:"submit",form:"new-plan-form",className:"mobile-btn",style:{width:"100%"},children:[e.jsx(B,{size:14})," Create"]}),children:e.jsxs("form",{id:"new-plan-form",onSubmit:g=>{g.preventDefault(),N()},className:"mobile-task-form",children:[e.jsx("label",{className:"mobile-field-label",children:"Slug *"}),e.jsx("input",{className:"mobile-input",type:"text",placeholder:"my-plan",pattern:"[a-z0-9][a-z0-9-]{0,63}",value:j,onChange:g=>v(g.target.value),autoFocus:!0,required:!0}),e.jsx("label",{className:"mobile-field-label",children:"Title (optional)"}),e.jsx("input",{className:"mobile-input",type:"text",placeholder:"My Artifact",value:u,onChange:g=>c(g.target.value)})]})})]})}const Lt=["cron","interval","once"],zt=["command","agent","webhook"],Le=["UTC","America/New_York","America/Los_Angeles","Europe/London","Europe/Berlin","Asia/Tokyo"],He=Array.from({length:24},(s,t)=>({value:t,label:t===0?"12 AM":t<12?`${t} AM`:t===12?"12 PM":`${t-12} PM`})),Rt=Array.from({length:12},(s,t)=>t*5),Ye=[{value:"*",label:"Every day"},{value:"0",label:"Sun"},{value:"1",label:"Mon"},{value:"2",label:"Tue"},{value:"3",label:"Wed"},{value:"4",label:"Thu"},{value:"5",label:"Fri"},{value:"6",label:"Sat"}],It=[{value:"s",label:"sec"},{value:"m",label:"min"},{value:"h",label:"hr"},{value:"d",label:"day"}];function Dt({snapshot:s}){var N;const[t,n]=o.useState(s.schedules||[]),[r,i]=o.useState(!s.schedules),[m,b]=o.useState(""),[d,x]=o.useState(null),[y,a]=o.useState({open:!1}),j=async()=>{try{const p=await C.get("/schedules");n(p.schedules||[])}catch{}finally{i(!1)}};o.useEffect(()=>{s.schedules?(n(s.schedules),i(!1)):j()},[s.schedules]);const v=async(p,g)=>{try{await C.patch(`/schedules/${encodeURIComponent(p)}`,{enabled:g}),n(A=>A.map(S=>S.id===p?{...S,enabled:g}:S)),(d==null?void 0:d.id)===p&&x(A=>A&&{...A,enabled:g})}catch{}},u=async p=>{if(confirm("Delete this schedule?"))try{await C.del(`/schedules/${encodeURIComponent(p)}`),n(g=>g.filter(A=>A.id!==p)),(d==null?void 0:d.id)===p&&x(null)}catch{}},c=async p=>{try{await C.post(`/schedules/${encodeURIComponent(p)}/trigger`)}catch{}},l=m.trim()?t.filter(p=>p.name.toLowerCase().includes(m.toLowerCase())):t;return e.jsxs("div",{className:"mobile-view",children:[e.jsxs("div",{className:"mobile-tasks-toolbar",children:[e.jsx("input",{className:"mobile-search-input",type:"text",placeholder:"Search schedules…",value:m,onChange:p=>b(p.target.value),style:{flex:1}}),e.jsx("button",{type:"button",className:"mobile-icon-btn",onClick:()=>j(),"aria-label":"Refresh",children:e.jsx(_,{size:16})}),e.jsx("button",{type:"button",className:"mobile-icon-btn",onClick:()=>a({open:!0}),"aria-label":"New schedule",children:e.jsx(B,{size:16})})]}),r?e.jsx("div",{className:"mobile-loading",children:e.jsx("p",{children:"Loading…"})}):l.length===0?e.jsxs("div",{className:"mobile-empty",children:[e.jsx(he,{size:40}),e.jsx("p",{children:"No schedules found."})]}):e.jsx("div",{className:"mobile-card-list",children:l.map(p=>e.jsxs("button",{type:"button",className:"mobile-list-item mobile-list-item-interactive",onClick:()=>x(p),children:[e.jsx("div",{className:"mobile-list-icon",children:e.jsx(he,{size:16})}),e.jsxs("div",{className:"mobile-list-content",children:[e.jsx("span",{className:"mobile-list-title",children:p.name}),e.jsxs("span",{className:"mobile-list-meta",children:[Ie(p)," ·"," ",p.nextRun?`next ${Re(p.nextRun,p.timezone)}`:"no next run"]})]}),e.jsx("span",{className:`mobile-list-badge ${p.enabled?"badge-on":"badge-off"}`,children:p.enabled?"on":"off"})]},p.id))}),d&&e.jsx(q,{open:!0,onClose:()=>x(null),title:d.name,actions:e.jsxs("div",{className:"mobile-task-detail-actions",children:[e.jsxs("button",{type:"button",className:"mobile-btn",onClick:()=>{d&&c(d.id)},children:[e.jsx(ee,{size:14})," Trigger now"]}),e.jsx("button",{type:"button",className:`mobile-btn ${d.enabled?"mobile-btn-secondary":""}`,onClick:()=>{d&&v(d.id,!d.enabled)},children:d.enabled?"Disable":"Enable"}),e.jsxs("button",{type:"button",className:"mobile-btn",onClick:()=>{d&&(a({open:!0,initial:d}),x(null))},children:[e.jsx(Fe,{size:14})," Edit"]}),e.jsx("button",{type:"button",className:"mobile-btn mobile-btn-danger",onClick:()=>{d&&u(d.id)},children:e.jsx(ae,{size:14})})]}),children:e.jsx("div",{className:"mobile-agent-detail",children:e.jsxs("div",{className:"mobile-agent-detail-meta",children:[e.jsxs("div",{className:"mobile-task-detail-row",children:[e.jsx("span",{children:"Type"}),e.jsx("span",{children:d.type})]}),e.jsxs("div",{className:"mobile-task-detail-row",children:[e.jsx("span",{children:"Schedule"}),e.jsx("span",{className:"mono",children:Ie(d)||d.schedule})]}),d.timezone&&e.jsxs("div",{className:"mobile-task-detail-row",children:[e.jsx("span",{children:"Timezone"}),e.jsx("span",{className:"mono",children:d.timezone})]}),e.jsxs("div",{className:"mobile-task-detail-row",children:[e.jsx("span",{children:"Action"}),e.jsxs("span",{children:[d.action.type,": ",d.action.target]})]}),d.action.type==="agent"&&d.action.prompt&&e.jsxs("div",{className:"mobile-task-detail-row",children:[e.jsx("span",{children:"Prompt"}),e.jsx("span",{style:{fontSize:12},children:d.action.prompt})]}),((N=d.budgetCheck)==null?void 0:N.skipIfBudgetLow)&&e.jsxs("div",{className:"mobile-task-detail-row",children:[e.jsx("span",{children:"Budget gate"}),e.jsxs("span",{children:["skip if ≥ ",d.budgetCheck.maxConcurrent??6," concurrent"]})]}),e.jsxs("div",{className:"mobile-task-detail-row",children:[e.jsx("span",{children:"Next run"}),e.jsx("span",{children:d.nextRun?Re(d.nextRun,d.timezone):"—"})]}),e.jsxs("div",{className:"mobile-task-detail-row",children:[e.jsx("span",{children:"Last run"}),e.jsx("span",{children:d.lastRun?Ot(d.lastRun):"—"})]}),d.lastResult&&e.jsxs("div",{className:"mobile-task-detail-row",children:[e.jsx("span",{children:"Last result"}),e.jsx("span",{style:{fontSize:12},children:d.lastResult})]}),d.lastError&&e.jsxs("div",{className:"mobile-task-detail-row",children:[e.jsx("span",{children:"Last error"}),e.jsx("span",{style:{fontSize:12},children:d.lastError})]})]})})}),e.jsx(Pt,{open:y.open,initial:y.initial,onClose:()=>a({open:!1}),onSaved:()=>{a({open:!1}),j()}})]})}function ze(s){var r,i;if(!s)return{name:"",type:"cron",cronMinute:0,cronHour:13,cronDow:"0",intervalN:30,intervalUnit:"m",onceAt:"",timezone:"UTC",actionType:"agent",actionTarget:"",actionPrompt:"",skipIfBudgetLow:!1,maxConcurrent:6,enabled:!0};const t=s.type==="cron"?Ve(s.schedule):null,n=s.type==="interval"?Ut(s.schedule):null;return{name:s.name||"",type:s.type,cronMinute:(t==null?void 0:t.minute)??0,cronHour:(t==null?void 0:t.hour)??9,cronDow:(t==null?void 0:t.dow)??"*",intervalN:(n==null?void 0:n.n)??30,intervalUnit:(n==null?void 0:n.unit)??"m",onceAt:s.type==="once"?Bt(s.schedule):"",timezone:s.timezone||"UTC",actionType:s.action.type,actionTarget:s.action.target||"",actionPrompt:s.action.prompt||"",skipIfBudgetLow:!!((r=s.budgetCheck)!=null&&r.skipIfBudgetLow),maxConcurrent:Number.isFinite((i=s.budgetCheck)==null?void 0:i.maxConcurrent)?s.budgetCheck.maxConcurrent:6,enabled:s.enabled!==!1}}function Mt(s){if(s.type==="cron")return`${s.cronMinute} ${s.cronHour} * * ${s.cronDow}`;if(s.type==="interval")return`${s.intervalN}${s.intervalUnit}`;if(!s.onceAt)return"";try{return new Date(s.onceAt).toISOString()}catch{return s.onceAt}}function Pt({open:s,initial:t,onClose:n,onSaved:r}){const[i,m]=o.useState(()=>ze(t)),[b,d]=o.useState(!1);o.useEffect(()=>{s&&m(ze(t))},[s,t]);const x=(a,j)=>{m(v=>({...v,[a]:j}))},y=async a=>{if(a.preventDefault(),!i.name.trim())return;const j=Mt(i);if(j){d(!0);try{const v={name:i.name.trim(),type:i.type,schedule:j,timezone:i.timezone,action:{type:i.actionType,target:i.actionTarget.trim(),...i.actionType==="agent"&&i.actionPrompt.trim()?{prompt:i.actionPrompt.trim()}:{}},budgetCheck:{maxConcurrent:i.maxConcurrent,skipIfBudgetLow:i.skipIfBudgetLow},enabled:i.enabled};t?await C.put(`/schedules/${encodeURIComponent(t.id)}`,v):await C.post("/schedules",v),r()}catch{}finally{d(!1)}}};return e.jsx(W,{open:s,onClose:n,title:t?`Edit ${t.name}`:"New schedule",actions:e.jsxs("button",{type:"submit",form:"mobile-schedule-form",className:"mobile-btn",style:{width:"100%"},disabled:b,children:[e.jsx(B,{size:14})," ",t?"Save":"Create"]}),children:e.jsxs("form",{id:"mobile-schedule-form",onSubmit:y,className:"mobile-task-form",children:[e.jsx("label",{className:"mobile-field-label",children:"Name *"}),e.jsx("input",{className:"mobile-input",type:"text",placeholder:"Weekly review",value:i.name,onChange:a=>x("name",a.target.value),autoFocus:!0,required:!0}),e.jsx("label",{className:"mobile-field-label",children:"Type"}),e.jsx("select",{className:"mobile-input",value:i.type,onChange:a=>x("type",a.target.value),children:Lt.map(a=>e.jsx("option",{value:a,children:a},a))}),i.type==="cron"&&e.jsxs(e.Fragment,{children:[e.jsx("label",{className:"mobile-field-label",children:"Day of week"}),e.jsx("select",{className:"mobile-input",value:i.cronDow,onChange:a=>x("cronDow",a.target.value),children:Ye.map(a=>e.jsx("option",{value:a.value,children:a.label},a.value))}),e.jsxs("div",{className:"mobile-form-row",children:[e.jsxs("div",{style:{flex:1},children:[e.jsx("label",{className:"mobile-field-label",children:"Hour"}),e.jsx("select",{className:"mobile-input",value:String(i.cronHour),onChange:a=>x("cronHour",parseInt(a.target.value,10)),children:He.map(a=>e.jsx("option",{value:String(a.value),children:a.label},a.value))})]}),e.jsxs("div",{style:{flex:1},children:[e.jsx("label",{className:"mobile-field-label",children:"Minute"}),e.jsx("select",{className:"mobile-input",value:String(i.cronMinute),onChange:a=>x("cronMinute",parseInt(a.target.value,10)),children:Rt.map(a=>e.jsx("option",{value:String(a),children:String(a).padStart(2,"0")},a))})]})]})]}),i.type==="interval"&&e.jsxs("div",{className:"mobile-form-row",children:[e.jsxs("div",{style:{flex:1},children:[e.jsx("label",{className:"mobile-field-label",children:"Every"}),e.jsx("input",{className:"mobile-input",type:"number",min:1,value:i.intervalN,onChange:a=>x("intervalN",parseInt(a.target.value,10)||1)})]}),e.jsxs("div",{style:{flex:1},children:[e.jsx("label",{className:"mobile-field-label",children:"Unit"}),e.jsx("select",{className:"mobile-input",value:i.intervalUnit,onChange:a=>x("intervalUnit",a.target.value),children:It.map(a=>e.jsx("option",{value:a.value,children:a.label},a.value))})]})]}),i.type==="once"&&e.jsxs(e.Fragment,{children:[e.jsx("label",{className:"mobile-field-label",children:"Run at"}),e.jsx("input",{className:"mobile-input",type:"datetime-local",value:i.onceAt,onChange:a=>x("onceAt",a.target.value)})]}),e.jsx("label",{className:"mobile-field-label",children:"Timezone"}),e.jsx("select",{className:"mobile-input",value:Le.includes(i.timezone)?i.timezone:"UTC",onChange:a=>x("timezone",a.target.value),children:Le.map(a=>e.jsx("option",{value:a,children:a},a))}),e.jsx("label",{className:"mobile-field-label",children:"Action type"}),e.jsx("select",{className:"mobile-input",value:i.actionType,onChange:a=>x("actionType",a.target.value),children:zt.map(a=>e.jsx("option",{value:a,children:a},a))}),e.jsx("label",{className:"mobile-field-label",children:"Target"}),e.jsx("input",{className:"mobile-input",type:"text",placeholder:i.actionType==="webhook"?"https://...":i.actionType==="agent"?"agent or task ref":"echo hello",value:i.actionTarget,onChange:a=>x("actionTarget",a.target.value)}),i.actionType==="agent"&&e.jsxs(e.Fragment,{children:[e.jsx("label",{className:"mobile-field-label",children:"Prompt"}),e.jsx("textarea",{className:"mobile-input",rows:3,placeholder:"What should the agent do?",value:i.actionPrompt,onChange:a=>x("actionPrompt",a.target.value)})]}),e.jsxs("fieldset",{className:"mobile-budget-card",children:[e.jsx("legend",{children:"Budget pre-flight"}),e.jsxs("label",{className:"mobile-checkbox-row",children:[e.jsx("input",{type:"checkbox",checked:i.skipIfBudgetLow,onChange:a=>x("skipIfBudgetLow",a.target.checked)}),e.jsx("span",{children:"Skip if too many bg tasks are running"})]}),e.jsx("label",{className:"mobile-field-label",children:"Cap"}),e.jsx("input",{className:"mobile-input",type:"number",min:1,max:64,value:i.maxConcurrent,onChange:a=>x("maxConcurrent",parseInt(a.target.value,10)||6),disabled:!i.skipIfBudgetLow})]}),e.jsxs("label",{className:"mobile-checkbox-row",children:[e.jsx("input",{type:"checkbox",checked:i.enabled,onChange:a=>x("enabled",a.target.checked)}),e.jsx("span",{children:"Enabled"})]})]})})}function Ot(s){const t=Date.now()-new Date(s).getTime();return t<6e4?"just now":t<36e5?`${Math.floor(t/6e4)}m ago`:t<864e5?`${Math.floor(t/36e5)}h ago`:new Date(s).toLocaleDateString()}function Re(s,t){try{return new Date(s).toLocaleString(void 0,{timeZone:t||void 0,weekday:"short",hour:"numeric",minute:"2-digit",month:"short",day:"numeric"})}catch{return new Date(s).toLocaleString()}}function Ve(s){if(typeof s!="string")return null;const t=s.trim().split(/\s+/);if(t.length!==5)return null;const[n,r,,,i]=t,m=parseInt(n,10),b=parseInt(r,10);return!Number.isFinite(m)||!Number.isFinite(b)||n!==String(m)||r!==String(b)?null:{minute:m,hour:b,dow:i==="*"?"*":Number.isFinite(parseInt(i,10))?i:"*"}}function Ut(s){if(typeof s!="string")return null;const t=/^(\d+)([smhd])$/i.exec(s.trim());return t?{n:parseInt(t[1],10),unit:t[2].toLowerCase()}:null}function Bt(s){if(!s)return"";try{const t=new Date(s);if(Number.isNaN(t.getTime()))return"";const n=r=>String(r).padStart(2,"0");return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())}T${n(t.getHours())}:${n(t.getMinutes())}`}catch{return""}}function Ie(s){var m,b;if(s.type!=="cron")return s.schedule;const t=Ve(s.schedule);if(!t)return s.schedule;const n=((m=Ye.find(d=>d.value===t.dow))==null?void 0:m.label)||t.dow,r=((b=He.find(d=>d.value===t.hour))==null?void 0:b.label)||`${t.hour}`,i=String(t.minute).padStart(2,"0");return n==="Every day"?`Every day ${r} :${i}`:`Every ${n} ${r} :${i}`}const Ft=["all","tasks","agents","artifacts","projects","settings"],qt={tasks:te,agents:se,plans:H,projects:it,settings:J};function _t({open:s,onClose:t,onNavigate:n}){const[r,i]=o.useState(""),[m,b]=o.useState("all"),[d,x]=o.useState([]),[y,a]=o.useState(!1),j=o.useRef(null);o.useEffect(()=>{s&&(i(""),x([]),requestAnimationFrame(()=>{var c;return(c=j.current)==null?void 0:c.focus()}))},[s]),o.useEffect(()=>{if(!r.trim()){x([]);return}const c=setTimeout(async()=>{a(!0);try{const l=await C.get(`/search?q=${encodeURIComponent(r)}&scope=${m}`);x(l.results||[])}catch{x([])}finally{a(!1)}},250);return()=>clearTimeout(c)},[r,m]);const v=c=>{const l=c.item,N=l.id||l.slug||l.name||"";n(c.type,N),t()},u=d.reduce((c,l)=>(c[l.type]||(c[l.type]=[]),c[l.type].push(l),c),{});return e.jsx(W,{open:s,onClose:t,title:"Search",children:e.jsxs("div",{className:"mobile-search-container",children:[e.jsxs("div",{className:"mobile-search-input-row",children:[e.jsx(de,{size:16,style:{color:"var(--text-muted)",flexShrink:0}}),e.jsx("input",{ref:j,className:"mobile-search-field",type:"text",placeholder:"Search…",value:r,onChange:c=>i(c.target.value),enterKeyHint:"search",onKeyDown:c=>{c.key==="Escape"&&t(),c.key==="Enter"&&d.length>0&&v(d[0])}}),r&&e.jsx("button",{type:"button",className:"mobile-icon-btn",onClick:()=>i(""),"aria-label":"Clear",children:e.jsx(G,{size:16})})]}),e.jsx("div",{className:"mobile-search-scopes",children:Ft.map(c=>e.jsx("button",{type:"button",className:`mobile-scope-chip ${m===c?"active":""}`,onClick:()=>b(c),children:c==="all"?"All":c.charAt(0).toUpperCase()+c.slice(1)},c))}),e.jsxs("div",{className:"mobile-search-results",children:[y&&e.jsx("div",{className:"mobile-search-loading",children:"Searching…"}),!y&&r&&d.length===0&&e.jsxs("div",{className:"mobile-empty",children:[e.jsx(de,{size:32}),e.jsx("p",{children:"No results found"})]}),!y&&!r&&e.jsx("div",{className:"mobile-empty",children:e.jsx("p",{children:"Type to search across tasks, agents, plans, and more."})}),Object.entries(u).map(([c,l])=>{const N=qt[c]||H;return e.jsxs("div",{className:"mobile-search-group",children:[e.jsxs("h4",{className:"mobile-search-group-title",children:[e.jsx(N,{size:12})," ",c.charAt(0).toUpperCase()+c.slice(1)," (",l.length,")"]}),l.map((p,g)=>{const A=p.item;return e.jsxs("button",{type:"button",className:"mobile-search-result-item",onClick:()=>v(p),children:[e.jsx("span",{className:"mobile-search-result-title",children:A.title||A.name||A.slug||"(unnamed)"}),A.description&&e.jsx("span",{className:"mobile-search-result-meta",children:A.description.slice(0,80)})]},g)})]},c)})]})]})})}const Wt=["languages","framework","design","testing","devops","data","security","integration"];function Ht({snapshot:s,onBack:t}){const[n,r]=o.useState([]),[i,m]=o.useState(!0),[b,d]=o.useState(""),[x,y]=o.useState(""),[a,j]=o.useState(null),v=async()=>{try{const l=await C.get("/skills");r(l.skills||[])}catch{}finally{m(!1)}};o.useEffect(()=>{v()},[]);const u=async(l,N)=>{try{await C.patch(`/skills/${encodeURIComponent(l)}`,{enabled:N}),r(p=>p.map(g=>g.id===l?{...g,enabled:N}:g)),(a==null?void 0:a.id)===l&&j(p=>p&&{...p,enabled:N})}catch{}},c=n.filter(l=>{if(x&&l.category!==x)return!1;if(b){const N=b.toLowerCase();return l.name.toLowerCase().includes(N)||l.description.toLowerCase().includes(N)}return!0});return e.jsxs("div",{className:"mobile-view",children:[e.jsxs("div",{className:"mobile-tasks-toolbar",children:[e.jsx("input",{className:"mobile-search-input",type:"text",placeholder:"Search skills…",value:b,onChange:l=>d(l.target.value),style:{flex:1}}),e.jsx("button",{type:"button",className:"mobile-icon-btn",onClick:()=>v(),"aria-label":"Refresh",children:e.jsx(_,{size:16})})]}),e.jsxs("div",{className:"mobile-search-scopes",children:[e.jsx("button",{type:"button",className:`mobile-scope-chip ${x?"":"active"}`,onClick:()=>y(""),children:"All"}),Wt.map(l=>e.jsx("button",{type:"button",className:`mobile-scope-chip ${x===l?"active":""}`,onClick:()=>y(l),children:l},l))]}),i?e.jsx("div",{className:"mobile-loading",children:e.jsx("p",{children:"Loading…"})}):c.length===0?e.jsxs("div",{className:"mobile-empty",children:[e.jsx(Ne,{size:40}),e.jsx("p",{children:"No skills found."})]}):e.jsx("div",{className:"mobile-card-list",children:c.map(l=>e.jsxs("button",{type:"button",className:"mobile-list-item mobile-list-item-interactive",onClick:()=>j(l),children:[e.jsx("div",{className:"mobile-list-icon",children:e.jsx(Ne,{size:16})}),e.jsxs("div",{className:"mobile-list-content",children:[e.jsx("span",{className:"mobile-list-title",children:l.name}),e.jsxs("span",{className:"mobile-list-meta",children:[l.category," · v",l.version]})]}),e.jsx("span",{className:`mobile-list-badge ${l.enabled?"badge-on":"badge-off"}`,children:l.enabled?"on":"off"})]},l.id))}),a&&e.jsx(q,{open:!0,onClose:()=>j(null),title:a.name,actions:e.jsxs("button",{type:"button",className:`mobile-btn ${a.enabled?"mobile-btn-secondary":""}`,style:{width:"100%"},onClick:()=>{a&&u(a.id,!a.enabled)},children:[e.jsx(Ue,{size:14})," ",a.enabled?"Disable":"Enable"]}),children:e.jsxs("div",{className:"mobile-agent-detail",children:[e.jsx("p",{className:"mobile-agent-detail-desc",children:a.description||"No description."}),e.jsxs("div",{className:"mobile-agent-detail-meta",children:[e.jsxs("div",{className:"mobile-task-detail-row",children:[e.jsx("span",{children:"Category"}),e.jsx("span",{children:a.category})]}),e.jsxs("div",{className:"mobile-task-detail-row",children:[e.jsx("span",{children:"Version"}),e.jsx("span",{className:"mono",children:a.version})]}),e.jsxs("div",{className:"mobile-task-detail-row",children:[e.jsx("span",{children:"Source"}),e.jsx("span",{children:a.source})]}),a.tags.length>0&&e.jsxs("div",{className:"mobile-task-detail-row",children:[e.jsx("span",{children:"Tags"}),e.jsx("span",{children:a.tags.join(", ")})]})]})]})})]})}const Yt=["queued","doing","blocked","done"],X={queued:"Queued",doing:"Doing",blocked:"Blocked",done:"Done"},De={queued:"doing",doing:"done",blocked:"queued",done:"queued"};function Vt(s){const t=s.metadata??{};return!!(t.sessionId||t.bgInstanceId)}function Kt(s){var n;const t=s.metadata??{};return!!((n=t.artifactIds)!=null&&n.length||t.artifactId)}function Me({snapshot:s,onRefresh:t,selectedTaskId:n,onCloseDetail:r,onOpenChat:i,onOpenArtifact:m}){var je,ge;const[b,d]=o.useState(s.tasks||[]),[x,y]=o.useState(!s.tasks),[a,j]=o.useState(""),[v,u]=o.useState("queued"),[c,l]=o.useState(null),[N,p]=o.useState(!1),[g,A]=o.useState(null),[S,R]=o.useState([]),[D,I]=o.useState(""),[P,f]=o.useState(null),[L,h]=o.useState(!1),[w,T]=o.useState(""),[E,M]=o.useState("updated");o.useEffect(()=>{var k;if(s.tasks&&(d(s.tasks),y(!1)),n){const z=(k=s.tasks)==null?void 0:k.find($=>$.id===n);z&&l(z)}},[s.tasks,n]),o.useEffect(()=>{if(n){const k=b.find(z=>z.id===n);k&&l(k)}},[n,b]);const F=async()=>{try{const k=await C.get("/tasks");d(Array.isArray(k)?k:[])}catch{}finally{y(!1)}},ne=async(k,z)=>{d($=>$.map(O=>O.id===k?{...O,status:z}:O)),(c==null?void 0:c.id)===k&&l($=>$&&{...$,status:z});try{await C.patch(`/tasks/${encodeURIComponent(k)}/status`,{status:z})}catch{await F()}},Y=async k=>{if(confirm("Delete this task?"))try{await C.del(`/tasks/${encodeURIComponent(k)}`),d(z=>z.filter($=>$.id!==k)),(c==null?void 0:c.id)===k&&l(null)}catch{await F()}},Ke=async k=>{try{await C.post(`/tasks/${encodeURIComponent(k)}/archive`),d(z=>z.filter($=>$.id!==k)),(c==null?void 0:c.id)===k&&l(null)}catch{}},pe=[...b.filter(k=>{var z,$;if(a.trim()){const O=a.toLowerCase();if(!(k.title||"").toLowerCase().includes(O)&&!(k.description||"").toLowerCase().includes(O))return!1}if(w.trim()){const O=w==="mine"?(($=(z=s.settings)==null?void 0:z.data)==null?void 0:$.defaultAgent)||Jt(s):w.replace(/^@/,"");if((k.assignee||"").toLowerCase()!==O.toLowerCase())return!1}return!0})].sort((k,z)=>{switch(E){case"priority":{const $={high:0,normal:1,low:2};return($[k.priority]??1)-($[z.priority]??1)}case"created":return new Date(z.createdAt).getTime()-new Date(k.createdAt).getTime();case"updated":default:return new Date(z.updatedAt).getTime()-new Date(k.updatedAt).getTime()}}),fe=pe.filter(k=>k.status===v),xe=s.agents||[],Je=async(k,z,$,O)=>{try{const le=await C.post("/tasks",{title:k,description:z,assignee:$||null,priority:O});d(ie=>[le,...ie]),p(!1)}catch{}},Ge=async k=>{h(!0),I(""),f(null),A(k);try{const $=((await C.get(`/tasks/${encodeURIComponent(k)}/artifacts`)).artifacts||[]).map(O=>O.id);if(R($),$.length>0){const[O,le]=await Promise.all([C.get(`/artifacts/${encodeURIComponent($[0])}`),fetch(C.urlWithToken(`/artifacts/${encodeURIComponent($[0])}/content`)).then(ie=>ie.text())]);f(O),I(le)}}catch{}finally{h(!1)}};return x?e.jsx("div",{className:"mobile-loading",children:e.jsx("p",{children:"Loading…"})}):e.jsxs("div",{className:"mobile-view mobile-view-tasks",children:[e.jsxs("div",{className:"mobile-tasks-toolbar",children:[e.jsx("input",{className:"mobile-search-input",type:"text",placeholder:"Search tasks…",value:a,onChange:k=>j(k.target.value),style:{flex:1}}),e.jsx("button",{type:"button",className:"mobile-icon-btn",onClick:()=>F(),"aria-label":"Refresh",children:e.jsx(_,{size:16})})]}),e.jsxs("div",{className:"mobile-tasks-filters",children:[e.jsxs("select",{className:"mobile-filter-select",value:w,onChange:k=>T(k.target.value),children:[e.jsx("option",{value:"",children:"All"}),e.jsx("option",{value:"mine",children:"Mine"}),xe.map(k=>e.jsxs("option",{value:`@${k.name}`,children:["@",k.name]},k.name))]}),e.jsxs("select",{className:"mobile-filter-select",value:E,onChange:k=>M(k.target.value),children:[e.jsx("option",{value:"updated",children:"Updated"}),e.jsx("option",{value:"created",children:"Created"}),e.jsx("option",{value:"priority",children:"Priority"})]})]}),e.jsx("div",{className:"mobile-kanban-tabs",children:Yt.map(k=>{const z=pe.filter($=>$.status===k).length;return e.jsxs("button",{type:"button",className:`mobile-kanban-tab ${v===k?"active":""}`,onClick:()=>u(k),children:[X[k]," (",z,")"]},k)})}),e.jsxs("div",{className:"mobile-card-list",children:[fe.length===0&&e.jsxs("div",{className:"mobile-empty mobile-empty-compact",children:[e.jsxs("p",{children:["No ",X[v].toLowerCase()," tasks."]}),e.jsx("p",{className:"muted",children:"Create one or switch columns."})]}),fe.map(k=>{var z;return e.jsxs("button",{type:"button",className:"mobile-task-card",onClick:()=>l(k),children:[e.jsx("div",{className:"priority-dot",style:{background:rt[k.priority]||"var(--info)"}}),e.jsxs("div",{className:"task-content",children:[e.jsx("div",{className:"task-title",children:k.title}),e.jsxs("div",{className:"task-meta",children:[k.assignee?`@${k.assignee}`:"unassigned"," · ",K(k.updatedAt||k.createdAt),(z=k.dependencies)!=null&&z.length?` · ${k.dependencies.length} deps`:""]})]})]},k.id)})]}),e.jsx("button",{type:"button",className:"mobile-fab",onClick:()=>p(!0),"aria-label":"Add task",children:e.jsx(B,{size:24})}),e.jsx(q,{open:!!c,onClose:()=>{l(null),r==null||r()},title:"Task Detail",actions:c&&e.jsxs("div",{className:"mobile-task-detail-actions",children:[c.status!=="done"&&e.jsxs("button",{type:"button",className:"mobile-btn",style:{flex:1},onClick:()=>{c&&ne(c.id,De[c.status])},children:["Move to ",X[De[c.status]||"queued"]]}),e.jsxs("button",{type:"button",className:"mobile-btn mobile-btn-secondary",onClick:()=>{c&&Ke(c.id)},children:[e.jsx(ot,{size:14})," Archive"]}),Vt(c)&&e.jsxs("button",{type:"button",className:"mobile-btn mobile-btn-secondary",onClick:()=>{i==null||i(c.id)},children:[e.jsx(V,{size:14})," Chat"]}),Kt(c)&&e.jsxs("button",{type:"button",className:"mobile-btn mobile-btn-secondary",onClick:()=>{Ge(c.id)},children:[e.jsx(H,{size:14})," Artifact"]}),e.jsx("button",{type:"button",className:"mobile-btn mobile-btn-danger",onClick:()=>{c&&Y(c.id)},children:e.jsx(ae,{size:14})})]}),children:c&&e.jsxs("div",{className:"mobile-task-detail",children:[e.jsxs("div",{className:"mobile-task-detail-header",children:[e.jsx("span",{className:`mobile-task-status-badge status-${c.status}`,children:X[c.status]||c.status}),e.jsx("span",{className:`mobile-task-priority priority-${c.priority}`,children:c.priority})]}),e.jsx("h3",{className:"mobile-task-detail-title",children:c.title}),c.description&&e.jsx("p",{className:"mobile-task-detail-desc",children:c.description}),e.jsxs("div",{className:"mobile-task-detail-meta",children:[c.assignee&&e.jsxs("div",{className:"mobile-task-detail-row",children:[e.jsx("span",{children:"Assignee"}),e.jsxs("span",{children:["@",c.assignee]})]}),c.dueDate&&e.jsxs("div",{className:"mobile-task-detail-row",children:[e.jsx("span",{children:"Due"}),e.jsx("span",{children:new Date(c.dueDate).toLocaleDateString()})]}),c.timeSpent!=null&&e.jsxs("div",{className:"mobile-task-detail-row",children:[e.jsx("span",{children:"Time spent"}),e.jsxs("span",{children:[Math.round(c.timeSpent/6e4),"min"]})]}),(je=c.dependencies)!=null&&je.length?e.jsxs("div",{className:"mobile-task-detail-row",children:[e.jsx("span",{children:"Dependencies"}),e.jsx("span",{children:c.dependencies.length})]}):null,(ge=c.comments)!=null&&ge.length?e.jsxs("div",{className:"mobile-task-detail-row",children:[e.jsx("span",{children:"Comments"}),e.jsx("span",{children:c.comments.length})]}):null,e.jsxs("div",{className:"mobile-task-detail-row",children:[e.jsx("span",{children:"Created"}),e.jsx("span",{children:K(c.createdAt)})]}),e.jsxs("div",{className:"mobile-task-detail-row",children:[e.jsx("span",{children:"Updated"}),e.jsx("span",{children:K(c.updatedAt)})]})]})]})}),e.jsx(Gt,{open:N,onClose:()=>p(!1),onCreate:Je,agents:xe}),e.jsx(q,{open:!!g,onClose:()=>{A(null),I(""),f(null)},title:(P==null?void 0:P.name)||"Artifact",actions:S.length>1?e.jsx("div",{className:"mobile-task-detail-actions",children:S.map((k,z)=>e.jsxs("button",{type:"button",className:"mobile-btn mobile-btn-secondary",style:{flex:1},onClick:()=>{h(!0),Promise.all([C.get(`/artifacts/${encodeURIComponent(k)}`),fetch(C.urlWithToken(`/artifacts/${encodeURIComponent(k)}/content`)).then($=>$.text())]).then(([$,O])=>{f($),I(O),h(!1)}).catch(()=>h(!1))},children:["Artifact ",z+1]},k))}):null,children:e.jsx("div",{className:"mobile-artifact-viewer",children:L?e.jsx("div",{className:"mobile-loading",children:e.jsx("p",{children:"Loading artifact…"})}):D?e.jsx("iframe",{srcDoc:D,className:"mobile-artifact-iframe",sandbox:"allow-scripts allow-forms allow-popups allow-same-origin",title:(P==null?void 0:P.name)||"Artifact",loading:"lazy"}):e.jsxs("div",{className:"mobile-empty",children:[e.jsx(H,{size:32}),e.jsx("p",{className:"muted",children:"No artifact content available."})]})})})]})}function Jt(s){var t,n;return((n=(t=s.settings)==null?void 0:t.data)==null?void 0:n.defaultAgent)||"odin"}function Gt({open:s,onClose:t,onCreate:n,agents:r}){const[i,m]=o.useState(""),[b,d]=o.useState(""),[x,y]=o.useState(""),[a,j]=o.useState("normal"),v=u=>{u.preventDefault(),i.trim()&&(n(i.trim(),b.trim(),x,a),m(""),d(""),y(""),j("normal"))};return e.jsx(W,{open:s,onClose:t,title:"New Task",actions:e.jsxs("button",{type:"submit",form:"new-task-form",className:"mobile-btn",style:{width:"100%"},children:[e.jsx(B,{size:14})," Create Task"]}),children:e.jsxs("form",{id:"new-task-form",onSubmit:v,className:"mobile-task-form",children:[e.jsx("label",{className:"mobile-field-label",children:"Title *"}),e.jsx("input",{className:"mobile-input",type:"text",placeholder:"Task title",value:i,onChange:u=>m(u.target.value),autoFocus:!0,required:!0}),e.jsx("label",{className:"mobile-field-label",children:"Description"}),e.jsx("textarea",{className:"mobile-input",rows:3,placeholder:"Optional description",value:b,onChange:u=>d(u.target.value)}),e.jsx("label",{className:"mobile-field-label",children:"Assignee"}),e.jsxs("select",{className:"mobile-input",value:x,onChange:u=>y(u.target.value),children:[e.jsx("option",{value:"",children:"Unassigned"}),r.map(u=>e.jsxs("option",{value:u.name,children:["@",u.name]},u.name))]}),e.jsx("label",{className:"mobile-field-label",children:"Priority"}),e.jsxs("select",{className:"mobile-input",value:a,onChange:u=>j(u.target.value),children:[e.jsx("option",{value:"low",children:"Low"}),e.jsx("option",{value:"normal",children:"Normal"}),e.jsx("option",{value:"high",children:"High"})]})]})})}const Qt=Oe.lazy(()=>_e(()=>import("./MobileSettings-Cq1oFIdO.js"),__vite__mapDeps([0,1,2,3,4])).then(s=>({default:s.MobileSettings}))),Xt=Oe.lazy(()=>_e(()=>import("./MobileChat-0kGQb1S6.js"),__vite__mapDeps([5,1,6,4,7,8,3])).then(s=>({default:s.MobileChat}))),Pe=[{id:"activity",label:"Activity",icon:me},{id:"chat",label:"Chat",icon:V},{id:"tasks",label:"Tasks",icon:te},{id:"settings",label:"Settings",icon:Be},{id:"more",label:"More",icon:ct}];function Zt(s){const t=s.meta??{},n=typeof t.taskId=="string"?t.taskId:null,r=typeof t.slug=="string"?t.slug:null,i=typeof t.agent=="string"?t.agent:null;if(n)return{id:"task-detail",taskId:n};if(r)return{id:"artifacts?-detail",slug:r};if(i)return{id:"agent-detail",name:i};const m=s.link??"";return m.startsWith("/artifacts?/")?{id:"artifacts?-detail",slug:decodeURIComponent(m.slice(12))}:m.startsWith("/tasks/")?{id:"task-detail",taskId:decodeURIComponent(m.slice(7))}:m.startsWith("/agents/")?{id:"agent-detail",name:decodeURIComponent(m.slice(8))}:null}function cs(){const[s,t]=o.useState("activity"),[n,r]=o.useState([]),[i,m]=o.useState(!1),[b,d]=o.useState(!1),[x,y]=o.useState(null),[a,j]=o.useState(null),[v,u]=o.useState(null),[c,l]=o.useState(null),[N,p]=o.useState(!0),[g,A]=o.useState(0);o.useMemo(()=>n[n.length-1]??{id:s},[s,n]);const S=o.useCallback(h=>{r(w=>[...w,h])},[]),R=o.useCallback(()=>{r(h=>h.slice(0,-1))},[]),D=o.useCallback(h=>{r([]),t(h)},[]),I=o.useCallback(async()=>{var h;try{const w=await C.get("/snapshot");j(w),(h=w.settings)!=null&&h.data&&u(w.settings.data),l(null)}catch(w){throw l(w.message||"Dashboard server unreachable."),w}},[]);o.useEffect(()=>{let h=!1;return Promise.all([C.get("/snapshot").catch(()=>null),C.get("/settings").catch(()=>null),C.probeAuthStatus().catch(()=>null)]).then(([w,T])=>{var M;if(h)return;const E=(T==null?void 0:T.data)??((M=w==null?void 0:w.settings)==null?void 0:M.data)??null;w&&j(w),E&&u(E),l(!w&&!E?"Dashboard server unreachable.":null)}).catch(w=>{h||l(w.message||"Dashboard server unreachable.")}).finally(()=>{h||p(!1)}),()=>{h=!0}},[]),o.useEffect(()=>{v!=null&&v.theme&&(Se(v.theme),Ce(v.theme))},[v==null?void 0:v.theme]),o.useEffect(()=>{var T;if(((T=v==null?void 0:v.theme)==null?void 0:T.mode)!=="system")return;const h=window.matchMedia("(prefers-color-scheme: light)"),w=()=>{v!=null&&v.theme&&(Se(v.theme),Ce(v.theme))};return h.addEventListener("change",w),()=>h.removeEventListener("change",w)},[v==null?void 0:v.theme]),o.useEffect(()=>{const h=()=>{A(T=>T+1),I().catch(()=>{})},w=()=>{document.visibilityState==="visible"&&h()};return window.addEventListener("online",h),window.addEventListener("pageshow",h),document.addEventListener("visibilitychange",w),()=>{window.removeEventListener("online",h),window.removeEventListener("pageshow",h),document.removeEventListener("visibilitychange",w)}},[I]),o.useEffect(()=>{const h=new qe,w=h.on(T=>{if(T.type==="snapshot"&&"data"in T&&T.data)j(E=>({...E??{},...T.data}));else if(T.type==="change")I().catch(()=>{});else if(T.type==="tasks:change"){const E=T.task;j(M=>{if(!M)return M;const F=(M.tasks||[]).map(Y=>Y.id===E.id?E:Y),ne=F.some(Y=>Y.id===E.id);return{...M,tasks:ne?F:[E,...F]}})}else T.type==="tasks:delete"?j(E=>E&&{...E,tasks:(E.tasks||[]).filter(M=>M.id!==T.id)}):T.type==="settings:change"?T.settings&&u(T.settings):T.type==="project:change"||T.type==="agents:change"||T.type==="schedules:change"||T.type==="artifact:change"?I().catch(()=>{}):(T.type==="agent:status"||T.type==="agent:restarted")&&j(E=>{if(!E)return E;const M=(E.agents||[]).map(F=>F.name===T.agent.name?T.agent:F);return{...E,agents:M}})});return()=>{w(),h.close()}},[I,g]);const P=o.useCallback(h=>{(h==="activity"||h==="chat"||h==="tasks"||h==="settings"||h==="more")&&D(h)},[D]),f=o.useCallback((h,w,T)=>{if(h==="notification"){const E=Zt({link:w||null,meta:T??null});E&&S(E);return}if(h==="task"&&w){S({id:"task-detail",taskId:w});return}if(h==="artifacts?"&&w){S({id:"artifacts?-detail",slug:w});return}if(h==="agent"&&w){S({id:"agent-detail",name:w});return}if(h==="project"){D("activity");return}h==="setting"&&D("settings")},[D,S]),L=()=>{if(!a||!v)return null;if(n.length>0){const h=n[n.length-1];switch(h.id){case"artifacts?":return e.jsx($t,{snapshot:a,onBack:R,onOpenArtifact:w=>S({id:"artifacts?-detail",slug:w})});case"agents":return e.jsx($e,{snapshot:a,onBack:R,onOpenAgent:w=>S({id:"agent-detail",name:w}),onRefresh:I});case"skills":return e.jsx(Ht,{snapshot:a,onBack:R});case"mods":return e.jsx(wt,{snapshot:a,onBack:R});case"schedules":return e.jsx(Dt,{snapshot:a,onBack:R});case"history":return e.jsx(kt,{onBack:R});case"config":return e.jsx(Nt,{onBack:R});case"artifacts?-detail":return e.jsx(Tt,{slug:h.slug,onBack:R});case"agent-detail":return e.jsx($e,{snapshot:a,onBack:R,onOpenAgent:()=>{},onRefresh:I,selectedAgent:h.name});case"task-detail":return e.jsx(Me,{snapshot:a,onRefresh:I,selectedTaskId:h.taskId,onCloseDetail:R,onOpenChat:w=>{y(w),D("chat")}});default:return null}}switch(s){case"activity":return e.jsx(gt,{snapshot:a,onRefresh:I});case"chat":return e.jsx(o.Suspense,{fallback:e.jsx("div",{className:"mobile-loading",children:e.jsx(oe,{size:"lg"})}),children:e.jsx(Xt,{snapshot:a,settings:v,initialTaskId:x,onClearTaskId:()=>y(null)})});case"tasks":return e.jsx(Me,{snapshot:a,onRefresh:I,onOpenChat:h=>{y(h),D("chat")}});case"settings":return e.jsx(o.Suspense,{fallback:e.jsx("div",{className:"mobile-loading",children:e.jsx(oe,{size:"lg"})}),children:e.jsx(Qt,{settings:v,snapshot:a,onRefresh:I})});case"more":return e.jsx(St,{snapshot:a,onNavigate:h=>{(h==="artifacts?"||h==="agents"||h==="skills"||h==="mods"||h==="schedules"||h==="history"||h==="config")&&S({id:h})}});default:return null}};return N?e.jsxs("div",{className:"mobile-loading",children:[e.jsx(oe,{size:"lg"}),e.jsx("p",{children:"Loading Bizar…"})]}):c||!a||!v?e.jsxs("div",{className:"mobile-loading",children:[e.jsx("h2",{children:"Dashboard unavailable"}),e.jsx("p",{children:c||"Dashboard server unreachable."}),e.jsx("p",{className:"muted",children:"Make sure the Bizar dashboard server is running."})]}):e.jsxs(e.Fragment,{children:[e.jsxs(xt,{activeTab:s,onTabChange:P,tabs:Pe,fullTabs:Pe,onExitSettings:()=>D("activity"),onSearch:()=>m(!0),children:[n.length>0&&e.jsx("button",{type:"button",className:"mobile-back-btn",onClick:R,"aria-label":"Go back",children:"← Back"}),L()]}),e.jsx(_t,{open:i,onClose:()=>m(!1),onNavigate:f})]})}export{we as A,cs as M,oe as S,qe as W,_e as _,C as a,ns as b,Q as c,Ce as d,is as e,K as f,Se as g,rt as p,ls as t,os as w};