pi-kot 0.1.24 → 0.1.25

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.
@@ -0,0 +1 @@
1
+ *,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--radius-xs:4px;--radius-sm:6px;--radius-md:10px;--radius:16px;--radius-lg:24px;--radius-pill:100px;--sidebar-width:260px;--ease:cubic-bezier(.4, 0, .2, 1);--spring:cubic-bezier(.34, 1.56, .64, 1);--duration:.2s;--blur:24px;--blur-heavy:48px;--success:#34d399;--error:#f87171;--warning:#fbbf24}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg-glass:#ffffff0a;--bg-glass-hover:#ffffff0f;--bg-glass-active:#ffffff17;--bg-glass-strong:#ffffff0d}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg-glass:#00000008;--bg-glass-hover:#0000000f;--bg-glass-active:#00000017;--bg-glass-strong:#0000000a}:root[data-theme=dark][data-accent=night]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg-solid:#212121;--header-bg:#37373cbf;--sidebar-bg:#282826f2;--bg-frosted:#212121d9;--text-primary:#ffffffe0;--text-secondary:#fff9;--text-dim:#fff6;--text-ghost:#ffffff1a;--accent:#a0a0a0;--accent-glow:#ffffff0f;--accent-subtle:#ffffff0a;--accent-text:silver;--user-bubble:#ffffff0f;--user-bubble-text:var(--text-primary);--user-bubble-border:#ffffff14;--tool-accent:#777;--tool-accent-text:#999;--tool-bg:#ffffff08;--tool-border:#ffffff0f;--thinking-accent:#666;--thinking-accent-text:#888;--thinking-bg:#ffffff05;--border:#ffffff0f;--border-hover:#ffffff1a;--border-bright:#ffffff24;--input-bg:#ffffff0a;--input-border:#ffffff14;--input-focus-border:var(--accent);--scrollbar-thumb:#ffffff1a;--scrollbar-thumb-hover:#ffffff24}:root[data-theme=dark][data-accent=midnight]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg-solid:#000;--header-bg:#19191cb8;--sidebar-bg:#121211f2;--bg-frosted:#000000e6;--text-primary:#ffffffd9;--text-secondary:#ffffff73;--text-dim:#ffffff52;--accent:#6a7a88;--accent-glow:#6a7a881a;--accent-subtle:#6a7a880f;--accent-text:#8a9aa8;--user-bubble:#ffffff14;--user-bubble-text:var(--text-primary);--user-bubble-border:#ffffff1a;--tool-accent:#4a5565;--tool-accent-text:#8a95a5;--tool-bg:#ffffff0f;--tool-border:#ffffff0a;--thinking-accent:#4a5a72;--thinking-accent-text:#8a9ab8;--thinking-bg:#3c4b6e1f;--border:#ffffff0a;--border-hover:#ffffff14;--border-bright:#ffffff1f;--input-bg:#ffffff08;--input-border:#ffffff0f;--input-focus-border:var(--accent);--scrollbar-thumb:#ffffff0f;--scrollbar-thumb-hover:#ffffff1a}:root[data-theme=dark][data-accent=dawn]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg-solid:#1a1d26;--header-bg:#2d3037b8;--sidebar-bg:#1e222cf2;--bg-frosted:#1a1d26c7;--text-primary:#ffffffe6;--text-secondary:#ffffff8c;--text-dim:#ffffff59;--accent:#7a8ab0;--accent-glow:#7a8ab033;--accent-subtle:#7a8ab01a;--accent-text:#a0b4d8;--user-bubble:#7a8ab01a;--user-bubble-text:var(--text-primary);--user-bubble-border:#7a8ab026;--tool-accent:#6a5a80;--tool-accent-text:#a090b8;--tool-bg:#6a5a8012;--tool-border:#6a5a801f;--thinking-accent:#5a7a9a;--thinking-accent-text:#8ab4d8;--thinking-bg:#5a7a9a12;--border:#ffffff14;--border-hover:#ffffff21;--border-bright:#ffffff30;--input-bg:#ffffff0d;--input-border:#ffffff14;--input-focus-border:var(--accent);--scrollbar-thumb:#ffffff1a;--scrollbar-thumb-hover:#ffffff26;--success:#34d399}:root[data-theme=dark][data-accent=flexoki-dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg-solid:#171515;--header-bg:#2a2826c7;--sidebar-bg:#1c1b1af2;--bg-frosted:#171515d1;--text-primary:#cecdc3eb;--text-secondary:#807e79d9;--text-dim:#807e7980;--text-ghost:#807e7933;--accent:#da702c;--accent-glow:#da702c2e;--accent-subtle:#da702c14;--accent-text:#f9ae77;--user-bubble:#f7f4ec;--user-bubble-text:#171515;--user-bubble-border:transparent;--tool-accent:#4385be;--tool-accent-text:#6aa4d4;--tool-bg:#4385be1a;--tool-border:#4385be33;--thinking-accent:#a0af54;--thinking-accent-text:#bccc6a;--thinking-bg:#a0af5414;--border:#343331cc;--border-hover:#403e3ce6;--border-bright:#cecdc31f;--input-bg:#00000040;--input-border:#cecdc30f;--input-focus-border:var(--accent);--scrollbar-thumb:#cecdc314;--scrollbar-thumb-hover:#cecdc324;--success:#a0af54}:root[data-theme=light][data-accent=flexoki-light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg-solid:#fffdf4;--header-bg:#f2f0e8b8;--sidebar-bg:#f6f5eef2;--bg-frosted:#fffdf4d1;--text-primary:#000000e6;--text-secondary:#000000b3;--text-dim:#0000006b;--accent:#bc5215;--accent-glow:#bc521526;--accent-subtle:#bc52150f;--accent-text:#da702c;--user-bubble:#f7f4ec;--user-bubble-text:#100f0f;--user-bubble-border:transparent;--tool-accent:#205ea6;--tool-accent-text:#4385be;--tool-bg:#205ea612;--tool-border:#205ea624;--thinking-accent:#66800b;--thinking-accent-text:#879a39;--thinking-bg:#66800b12;--border:#dad8cecc;--border-hover:#cecdc3e6;--border-bright:#100f0f1f;--input-bg:#00000008;--input-border:#100f0f14;--input-focus-border:var(--accent);--scrollbar-thumb:#100f0f1a;--scrollbar-thumb-hover:#100f0f29;--success:#879a39}:root[data-theme=light][data-accent=clean]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg-solid:#fff;--header-bg:#f0f0f4b8;--sidebar-bg:#f2f2f7f2;--bg-frosted:#ffffffd1;--text-primary:#000000e0;--text-secondary:#000000b3;--text-dim:#0006;--accent:#0580c4;--accent-glow:#0580c426;--accent-subtle:#0580c40f;--accent-text:#0470b0;--user-bubble:#2a96d6;--user-bubble-text:white;--user-bubble-border:transparent;--tool-accent:#007aff;--tool-accent-text:#007aff;--tool-bg:#007aff0d;--tool-border:#007aff1f;--thinking-accent:#5ac8fa;--thinking-accent-text:#2a8abf;--thinking-bg:#5ac8fa0f;--border:#00000014;--border-hover:#00000024;--border-bright:#0003;--input-bg:#00000008;--input-border:#0000001a;--input-focus-border:var(--accent);--scrollbar-thumb:#0000001f;--scrollbar-thumb-hover:#0000002e;--success:#34c759}:root[data-theme=light][data-accent=terracotta]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg-solid:#f4f1ec;--header-bg:#e8e4deb8;--sidebar-bg:#f0eae0f2;--bg-frosted:#f4f1eccc;--text-primary:#000000eb;--text-secondary:#000000b8;--text-dim:#0000006b;--accent:#b06a48;--accent-glow:#b06a4826;--accent-subtle:#b06a4814;--accent-text:#a05e3e;--user-bubble:#b06a48;--user-bubble-text:white;--user-bubble-border:transparent;--tool-accent:#5c2860;--tool-accent-text:#6b3570;--tool-bg:#5c28600f;--tool-border:#5c28601f;--thinking-accent:#3a6a9b;--thinking-accent-text:#4a80b0;--thinking-bg:#3a6a9b0f;--border:#0000000f;--border-hover:#0000001a;--border-bright:#00000026;--input-bg:#00000008;--input-border:#00000014;--input-focus-border:var(--accent);--scrollbar-thumb:#0000001a;--scrollbar-thumb-hover:#00000029;--success:#1a8a5a}:root[data-theme=light][data-accent=sage]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg-solid:#f0f2ec;--header-bg:#e4e6e0b8;--sidebar-bg:#e8eee2f2;--bg-frosted:#f0f2eccc;--text-primary:#000000e6;--text-secondary:#000000b3;--text-dim:#0000006b;--accent:#6a7d5a;--accent-glow:#6a7d5a26;--accent-subtle:#6a7d5a14;--accent-text:#5a6d4a;--user-bubble:#6a7d5a;--user-bubble-text:white;--user-bubble-border:transparent;--tool-accent:#4a3860;--tool-accent-text:#5c4870;--tool-bg:#4a38600f;--tool-border:#4a38601f;--thinking-accent:#3a6a7a;--thinking-accent-text:#4a808a;--thinking-bg:#3a6a7a0f;--border:#0000000f;--border-hover:#0000001a;--border-bright:#00000026;--input-bg:#00000008;--input-border:#00000014;--input-focus-border:var(--accent);--scrollbar-thumb:#0000001a;--scrollbar-thumb-hover:#00000029;--success:#2a8a52}:root[data-theme=dark][data-accent=monokai]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg-solid:#272822;--header-bg:#373830c7;--sidebar-bg:#1e1f1cf2;--bg-frosted:#272822d1;--text-primary:#f8f8f2eb;--text-secondary:#f8f8f28c;--text-dim:#f8f8f252;--text-ghost:#f8f8f21a;--accent:#ae81ff;--accent-glow:#ae81ff26;--accent-subtle:#ae81ff14;--accent-text:#c6a8ff;--user-bubble:#ae81ff;--user-bubble-text:#fff;--user-bubble-border:transparent;--tool-accent:#f92672;--tool-accent-text:#ff6b9d;--tool-bg:#f9267214;--tool-border:#f9267226;--thinking-accent:#a6e22e;--thinking-accent-text:#c4f066;--thinking-bg:#a6e22e14;--border:#ffffff0f;--border-hover:#ffffff1c;--border-bright:#ffffff29;--input-bg:#00000026;--input-border:#ffffff14;--input-focus-border:var(--accent);--scrollbar-thumb:#ffffff14;--scrollbar-thumb-hover:#ffffff21;--success:#a6e22e}:root[data-theme=dark][data-accent=dracula]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg-solid:#282a36;--header-bg:#373944bf;--sidebar-bg:#1e202cf2;--bg-frosted:#282a36d1;--text-primary:#f8f8f2eb;--text-secondary:#f8f8f28c;--text-dim:#f8f8f252;--text-ghost:#f8f8f21a;--accent:#bd93f9;--accent-glow:#bd93f926;--accent-subtle:#bd93f914;--accent-text:#d4b8ff;--user-bubble:#bd93f9;--user-bubble-text:#fff;--user-bubble-border:transparent;--tool-accent:#ff79c6;--tool-accent-text:#ffa8da;--tool-bg:#ff79c614;--tool-border:#ff79c626;--thinking-accent:#50fa7b;--thinking-accent-text:#7fffa2;--thinking-bg:#50fa7b14;--border:#ffffff0f;--border-hover:#ffffff1c;--border-bright:#ffffff29;--input-bg:#00000026;--input-border:#ffffff14;--input-focus-border:var(--accent);--scrollbar-thumb:#ffffff14;--scrollbar-thumb-hover:#ffffff21;--success:#50fa7b}:root[data-theme=dark][data-accent=nord]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg-solid:#2e3440;--header-bg:#3c414cbf;--sidebar-bg:#242a36f2;--bg-frosted:#2e3440d1;--text-primary:#eceff4eb;--text-secondary:#eceff48c;--text-dim:#eceff452;--text-ghost:#eceff41a;--accent:#88c0d0;--accent-glow:#88c0d026;--accent-subtle:#88c0d014;--accent-text:#a6d5e0;--user-bubble:#88c0d0;--user-bubble-text:#2e3440;--user-bubble-border:transparent;--tool-accent:#81a1c1;--tool-accent-text:#a5bfda;--tool-bg:#81a1c114;--tool-border:#81a1c124;--thinking-accent:#5e81ac;--thinking-accent-text:#7ea0c8;--thinking-bg:#5e81ac1a;--border:#ffffff0d;--border-hover:#ffffff17;--border-bright:#ffffff21;--input-bg:#0000001f;--input-border:#ffffff12;--input-focus-border:var(--accent);--scrollbar-thumb:#ffffff12;--scrollbar-thumb-hover:#ffffff1c;--success:#a3be8c}:root[data-theme=dark][data-accent=bourbon]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg-solid:#1a1410;--header-bg:#322823c7;--sidebar-bg:#1e1916f2;--bg-frosted:#1a1410d1;--text-primary:#e6d7c8eb;--text-secondary:#b4a091b3;--text-dim:#a08c7866;--text-ghost:#a08c7826;--accent:#d4a054;--accent-glow:#d4a05426;--accent-subtle:#d4a05414;--accent-text:#e8c078;--user-bubble:#d4a054;--user-bubble-text:#1a1410;--user-bubble-border:transparent;--tool-accent:#c07030;--tool-accent-text:#d49050;--tool-bg:#c070301a;--tool-border:#c070302e;--thinking-accent:#8b6914;--thinking-accent-text:#b09040;--thinking-bg:#8b69141a;--border:#ffffff0f;--border-hover:#ffffff1a;--border-bright:#ffffff24;--input-bg:#00000040;--input-border:#ffffff0f;--input-focus-border:var(--accent);--scrollbar-thumb:#ffffff14;--scrollbar-thumb-hover:#ffffff1f;--success:#7a9a4a}body{font-feature-settings:"cv02", "cv03", "cv04", "cv11";background:var(--bg-solid);color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,-apple-system,BlinkMacSystemFont,SF Pro Display,SF Pro Text,Helvetica Neue,sans-serif;font-size:16px;line-height:1.6}strong{letter-spacing:-.01em;font-weight:600}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover)}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}@keyframes pulse{0%,to{box-shadow:0 0 #f8717166}50%{box-shadow:0 0 0 8px #f8717100}}@keyframes msgIn{0%{opacity:0;transform:translateY(8px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes connection-pulse{0%,to{opacity:.5;transform:scale(.9)}50%{opacity:1;transform:scale(1.2)}}.app-layout{height:100dvh;display:flex;overflow:hidden}.sidebar-backdrop{z-index:99;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:fadeIn .2s var(--ease);background:#00000073;display:none;position:fixed;inset:0}@media (width<=600px){.sidebar-backdrop{display:block}}.sidebar{width:var(--sidebar-width);min-width:var(--sidebar-width);background:var(--sidebar-bg);-webkit-backdrop-filter:blur(var(--blur-heavy)) saturate(1.5);backdrop-filter:blur(var(--blur-heavy)) saturate(1.5);border-right:1px solid var(--border);z-index:100;will-change:transform;flex-direction:column;transition:transform .3s cubic-bezier(.16,1,.3,1);display:flex;position:fixed;top:50px;bottom:0;left:0;overflow:hidden;transform:translate(0);box-shadow:4px 0 32px #0000002e}.sidebar.collapsed{transform:translateX(calc(var(--sidebar-width) * -1));box-shadow:none}@media (width<=600px){.sidebar{transform:translateX(calc(var(--sidebar-width) * -1));box-shadow:none}.sidebar:not(.collapsed){transform:translate(0);box-shadow:4px 0 48px #00000080}.session-item{border-radius:var(--radius-xs)!important;padding:8px 12px!important;font-size:13px!important}.project-sublist .session-item{padding:6px 10px!important;font-size:12px!important}.project-row{padding:6px 8px!important;font-size:13px!important}.sidebar-header{padding:12px 12px 8px!important;font-size:14px!important}.add-project-toggle{padding:8px 10px!important;font-size:12px!important}.new-session-mini{padding:6px 10px!important;font-size:12px!important}}.sidebar-header{color:var(--accent-text);letter-spacing:-.02em;align-items:center;padding:10px 12px 6px;font-size:14px;font-weight:700;display:flex}.project-list{flex:1;padding:0 8px 4px;overflow-y:auto}.project-group{margin-bottom:2px}.project-row{z-index:2;border-radius:var(--radius);cursor:pointer;color:var(--text-secondary);background:var(--sidebar-bg);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:all var(--duration) var(--ease);-webkit-user-select:none;user-select:none;outline:none;align-items:center;gap:4px;padding:4px 6px;font-size:13px;font-weight:500;display:flex;position:sticky;top:0}.project-row:hover{background:var(--bg-glass-hover);color:var(--text-primary)}.project-row.active{background:var(--accent-subtle);color:var(--accent-text)}.project-icon{flex-shrink:0;justify-content:center;align-items:center;width:16px;height:16px;display:inline-flex}.project-icon-folder{display:block}.project-row:hover .project-icon-folder{display:none}.project-icon-arrow{opacity:.6;display:none}.project-row:hover .project-icon-arrow{display:block}.project-name{text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:13px;font-weight:500;overflow:hidden}.project-sublist{flex:unset;padding:0 0 2px 24px}.project-sublist .session-item{border-radius:var(--radius-xs);cursor:pointer;color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;transition:all var(--duration) var(--ease);margin-bottom:0;padding:3px 10px;font-size:12px;overflow:hidden}.project-sublist .session-item:hover{background:var(--bg-glass-hover);color:var(--text-primary)}.project-sublist .session-item.active{background:var(--accent-subtle);color:var(--accent-text);font-weight:600}.session-name{text-overflow:ellipsis;overflow:hidden}.session-rename-input{border-radius:var(--radius-sm);border:1px solid var(--accent);background:var(--input-bg);width:100%;color:var(--text-primary);box-sizing:border-box;outline:none;padding:2px 6px;font-family:inherit;font-size:12px}.session-rename-input:focus{border-color:var(--input-focus-border);box-shadow:0 0 0 2px var(--accent-glow)}.session-item{align-items:baseline;gap:4px;display:flex;position:relative}.session-archive-btn{opacity:.2;color:var(--text-dim);cursor:pointer;border-radius:var(--radius-xs);transition:opacity var(--duration) var(--ease), color var(--duration) var(--ease), background var(--duration) var(--ease);background:0 0;border:none;flex-shrink:0;margin-left:auto;padding:2px;font-size:11px;line-height:1}.session-archive-btn:hover{opacity:1;color:var(--error);background:var(--bg-glass-hover)}.session-item:hover .session-archive-btn{opacity:.6}.session-item:hover .session-archive-btn:hover{opacity:1}.session-fav-btn{opacity:.3;color:var(--text-dim);cursor:pointer;border-radius:var(--radius-xs);transition:opacity var(--duration) var(--ease), color var(--duration) var(--ease), transform var(--duration) var(--ease);background:0 0;border:none;flex-shrink:0;padding:0 2px;font-size:11px;line-height:1}.session-fav-btn.favorited{opacity:1;color:var(--warning,#fbbf24)}.session-fav-btn:hover{opacity:1;transform:scale(1.2)}.session-fav-btn.favorited:hover{color:var(--warning,#fbbf24)}.session-item:hover .session-fav-btn:not(.favorited){opacity:.7}.session-item:hover .session-fav-btn:not(.favorited):hover{opacity:1;color:var(--warning,#fbbf24)}.favorites-section-header{text-transform:uppercase;letter-spacing:.08em;color:var(--warning,#fbbf24);opacity:.7;align-items:center;margin-top:2px;padding:2px 10px 1px;font-size:9px;font-weight:700;display:flex}.favorites-section-divider{background:var(--border);opacity:.3;height:1px;margin:1px 10px 2px}.session-restore-btn{color:var(--accent);cursor:pointer;border-radius:var(--radius-xs);background:0 0;border:none;padding:2px 4px;font-size:14px;line-height:1;display:none;position:absolute;top:50%;right:4px;transform:translateY(-50%)}.session-item.archived:hover .session-restore-btn{display:inline-block}.archived-toggle{border-radius:var(--radius-sm);cursor:pointer;text-transform:uppercase;letter-spacing:.06em;color:var(--text-dim);transition:all var(--duration) var(--ease);-webkit-user-select:none;user-select:none;align-items:center;margin:6px 8px 2px;padding:3px 8px;font-size:10px;font-weight:600;display:flex}.archived-toggle:hover{background:var(--bg-glass-hover);color:var(--text-secondary)}.archived-list{border-bottom:1px solid var(--border);margin-bottom:2px;padding-bottom:4px}.archived-status{color:var(--text-dim);padding:3px 8px 3px 24px;font-size:10px}.new-session-mini{border-radius:var(--radius-sm);border:1px dashed var(--border);width:calc(100% - 8px);color:var(--text-tertiary);cursor:pointer;transition:all var(--duration) var(--ease);text-align:left;background:0 0;margin:4px 4px 0;padding:5px 10px;font-family:inherit;font-size:11px;font-weight:500;display:block}.new-session-mini:hover{background:var(--bg-glass-hover);border-color:var(--accent);color:var(--accent-text)}.project-actions-left{align-items:center;gap:2px;margin-left:auto;display:flex}.project-actions-right{align-items:center;display:flex}.project-action-btn{border-radius:var(--radius-xs);width:24px;height:24px;color:var(--text-dim);cursor:pointer;opacity:0;pointer-events:none;transition:opacity var(--duration) var(--ease), color var(--duration) var(--ease), background var(--duration) var(--ease);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.project-row:hover .project-action-btn,.project-row.active .project-action-btn{opacity:1;pointer-events:auto}.project-action-btn:hover{color:var(--text-primary);background:var(--bg-glass-hover)}@media (width<=600px){.project-row.active .project-action-btn{opacity:1;pointer-events:auto}.project-action-btn{width:28px;height:28px}}.new-session-row{border-radius:var(--radius-sm);border:1px dashed var(--border);color:var(--text-tertiary);cursor:pointer;text-align:left;width:100%;transition:all var(--duration) var(--ease);background:0 0;align-items:center;gap:6px;margin:4px 0;padding:4px 10px;font-family:inherit;font-size:11px;font-weight:500;display:flex}.new-session-row:hover{background:var(--accent-subtle);color:var(--accent-text);border-color:var(--accent)}@media (width<=600px){.new-session-row{padding:12px 14px;font-size:13px}}.sidebar-actions{display:none}.sidebar-footer{border-top:1px solid var(--border);padding:4px 6px}.add-project-toggle{border-radius:var(--radius-sm);border:1px dashed var(--border);width:100%;color:var(--text-tertiary);cursor:pointer;transition:all var(--duration) var(--ease);text-align:center;background:0 0;padding:5px 8px;font-family:inherit;font-size:11px;font-weight:500}.add-project-toggle:hover{background:var(--bg-glass-hover);border-color:var(--accent);color:var(--accent-text)}.add-project-settings-panel{flex-direction:column;width:560px;max-width:92vw;max-height:80vh;display:flex}.add-project-dialog-body{flex-direction:column;flex:1;gap:8px;padding:12px 16px 4px;display:flex;overflow-y:auto}.add-project-dialog-bar{gap:4px;margin-bottom:4px;display:flex}.add-project-dialog-tab{border-radius:var(--radius-sm);border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;transition:all var(--duration) var(--ease);background:0 0;flex:1;justify-content:center;align-items:center;gap:6px;padding:6px 10px;font-family:inherit;font-size:12px;font-weight:500;display:flex}.add-project-dialog-tab.active{background:var(--accent-subtle);border-color:var(--accent-subtle);color:var(--accent-text);font-weight:600}.add-project-dialog-tab:hover:not(.active){background:var(--bg-glass-hover);color:var(--text-primary)}.add-project-dialog-clone-row{align-items:center;gap:8px;display:flex}.add-project-dialog-clone-row .add-project-dialog-input{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-glass);color:var(--text-primary);transition:border-color var(--duration) var(--ease);outline:none;flex:1;padding:7px 10px 7px 6px;font-family:SF Mono,Menlo,Monaco,monospace;font-size:12px}.add-project-dialog-clone-row .add-project-dialog-input:focus{border-color:var(--accent)}.add-project-dialog-clone-row .add-project-dialog-icon{color:var(--text-dim);pointer-events:none;flex-shrink:0;margin-left:10px;position:absolute}.add-project-dialog-path-row{align-items:center;gap:8px;display:flex}.add-project-dialog-icon{color:var(--text-dim);flex-shrink:0}.add-project-dialog-path-row .add-project-dialog-input{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-glass);color:var(--text-primary);transition:border-color var(--duration) var(--ease);outline:none;flex:1;padding:7px 10px;font-family:SF Mono,Menlo,Monaco,monospace;font-size:12px}.add-project-dialog-path-row .add-project-dialog-input:focus{border-color:var(--accent)}.add-project-dialog-btn{border-radius:var(--radius-sm);background:var(--accent);color:var(--accent-text);cursor:pointer;white-space:nowrap;transition:opacity var(--duration) var(--ease);border:none;flex-shrink:0;padding:7px 14px;font-family:inherit;font-size:12px;font-weight:600}.add-project-dialog-btn:hover:not(:disabled){opacity:.85}.add-project-dialog-btn:disabled{opacity:.4;cursor:not-allowed}.add-project-dialog-tools{align-items:center;gap:4px;display:flex}.add-project-dialog-tool{border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;transition:all var(--duration) var(--ease);background:0 0;border:none;align-items:center;gap:4px;padding:4px 8px;font-family:inherit;font-size:11px;display:flex}.add-project-dialog-tool:hover:not(:disabled){background:var(--bg-glass-hover);color:var(--text-primary)}.add-project-dialog-tool:disabled{opacity:.3;cursor:not-allowed}.add-project-dialog-path-display{text-align:right;color:var(--text-dim);text-overflow:ellipsis;white-space:nowrap;flex:1;font-family:SF Mono,Menlo,Monaco,monospace;font-size:10px;overflow:hidden}.add-project-dialog-error{border-radius:var(--radius-sm);background:var(--bg-glass);border:1px solid var(--danger,#e53e3e);color:var(--danger,#e53e3e);padding:6px 10px;font-size:11px}.add-project-dialog-list{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-glass);max-height:280px;overflow-y:auto}.add-project-dialog-empty{text-align:center;color:var(--text-dim);padding:24px 12px;font-size:12px}.add-project-dialog-entries{flex-direction:column;display:flex}.add-project-dialog-entry{cursor:pointer;transition:background var(--duration) var(--ease);align-items:center;gap:6px;padding:6px 10px;font-size:12px;display:flex}.add-project-dialog-entry.highlighted{background:var(--bg-glass-active)}.add-project-dialog-entry:hover{background:var(--bg-glass-hover)}.add-project-dialog-entry-arrow{color:var(--text-dim);flex-shrink:0;width:14px}.add-project-dialog-entry-folder{color:var(--accent);flex-shrink:0}.add-project-dialog-entry-name{text-overflow:ellipsis;white-space:nowrap;color:var(--text-primary);flex:1;overflow:hidden}.add-project-dialog-entry-add{width:22px;height:22px;color:var(--text-dim);cursor:pointer;opacity:0;transition:all var(--duration) var(--ease);background:0 0;border:none;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.add-project-dialog-entry:hover .add-project-dialog-entry-add{opacity:1}.add-project-dialog-entry-add:hover{background:var(--accent);color:var(--accent-text)}.add-project-dialog-footer{color:var(--text-dim);text-align:center;border-top:1px solid var(--border);padding:6px 16px;font-size:10px}.add-project-dialog-clone-dest{align-items:center;padding:4px 16px 0;display:flex}.add-project-dialog-toggle{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;display:flex}.add-project-dialog-toggle input{display:none}.add-project-dialog-toggle-track{background:var(--bg-glass-hover);border:1px solid var(--text-dim);border-radius:10px;flex-shrink:0;width:36px;height:20px;transition:background .2s;position:relative}.add-project-dialog-toggle:hover .add-project-dialog-toggle-track{border-color:var(--text-secondary)}.add-project-dialog-toggle input:checked+.add-project-dialog-toggle-track{background:var(--accent);border-color:var(--accent)}.add-project-dialog-toggle-knob{background:var(--text-secondary);border-radius:50%;width:14px;height:14px;transition:transform .2s;position:absolute;top:2px;left:2px}.add-project-dialog-toggle input:checked+.add-project-dialog-toggle-track .add-project-dialog-toggle-knob{background:#fff;transform:translate(16px)}.add-project-dialog-toggle-label{color:var(--text-secondary);white-space:nowrap;font-size:12px;font-weight:500}.add-project-form{flex-direction:column;gap:6px;display:flex}.add-project-input{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-glass);width:100%;color:var(--text-primary);transition:border-color var(--duration) var(--ease);box-sizing:border-box;outline:none;padding:7px 10px;font-family:inherit;font-size:12px}.add-project-input:focus{border-color:var(--accent)}.add-project-input::placeholder{color:var(--text-dim)}.add-provider-steps{border-bottom:1px solid var(--border);background:var(--bg-glass);align-items:center;gap:0;padding:8px 16px;display:flex}.add-provider-step{color:var(--text-dim);align-items:center;gap:6px;font-size:11px;display:flex}.add-provider-step.active .add-provider-step-num,.add-provider-step.done .add-provider-step-num{background:var(--accent-text);color:#fff}.add-provider-step.active .add-provider-step-label{color:var(--text-primary);font-weight:600}.add-provider-step.done .add-provider-step-label{color:var(--accent-text)}.add-provider-step-num{background:var(--border);width:18px;height:18px;color:var(--text-dim);border-radius:50%;justify-content:center;align-items:center;font-size:10px;font-weight:700;line-height:1;display:inline-flex}.add-provider-step-arrow{color:var(--border);margin:0 4px}.add-provider-body{flex:1;padding:12px 16px;overflow-y:auto}.add-provider-form{flex-direction:column;gap:14px;display:flex}.add-provider-field{flex-direction:column;gap:4px;display:flex}.add-provider-label{color:var(--text-secondary);font-size:12px;font-weight:600}.add-provider-hint{color:var(--text-dim);margin:2px 0 0;font-size:10px}.add-provider-input-row{align-items:center;display:flex;position:relative}.add-provider-input-icon{color:var(--text-dim);pointer-events:none;flex-shrink:0;position:absolute;left:10px}.add-provider-input{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-glass);width:100%;color:var(--text-primary);transition:border-color var(--duration) var(--ease);outline:none;padding:7px 10px 7px 32px;font-family:inherit;font-size:12px}.add-provider-input:focus{border-color:var(--accent)}.add-provider-input::placeholder{color:var(--text-dim)}.add-provider-field .add-provider-input-row .add-provider-input:first-child:not(:has(~.add-provider-input-icon)){padding-left:10px}.add-provider-field .add-provider-input-row .add-provider-input{padding-left:10px}.add-provider-select{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-glass);width:100%;color:var(--text-primary);cursor:pointer;outline:none;padding:7px 10px;font-family:inherit;font-size:12px}.add-provider-select:focus{border-color:var(--accent)}.add-provider-toggle-btn{color:var(--text-dim);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;padding:4px 8px;font-size:10px;position:absolute;right:4px}.add-provider-toggle-btn:hover{color:var(--text-primary);background:var(--hover-bg)}.add-provider-error-row{border-radius:var(--radius-sm);color:#ef4444;background:#ef44441f;border:1px solid #ef444440;align-items:flex-start;gap:8px;padding:8px 10px;font-size:12px;display:flex}.add-provider-success-banner{border-radius:var(--radius-sm);color:var(--text-primary);background:#22c55e1f;border:1px solid #22c55e40;align-items:center;gap:8px;margin-bottom:12px;padding:8px 12px;font-size:12px;display:flex}.add-provider-success-banner strong{color:var(--accent-text)}.add-provider-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.add-provider-btn{border-radius:var(--radius-sm);border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;transition:all var(--duration) var(--ease);white-space:nowrap;background:0 0;align-items:center;gap:6px;padding:7px 14px;font-size:12px;display:inline-flex}.add-provider-btn:hover{background:var(--hover-bg);color:var(--text-primary)}.add-provider-btn-primary{border-radius:var(--radius-sm);background:var(--accent-text);color:#fff;cursor:pointer;transition:all var(--duration) var(--ease);white-space:nowrap;border:none;align-items:center;gap:6px;padding:7px 14px;font-size:12px;font-weight:600;display:inline-flex}.add-provider-btn-primary:hover:not(:disabled){opacity:.9}.add-provider-btn-primary:disabled{opacity:.4;cursor:not-allowed}.add-provider-testing{color:var(--text-secondary);flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:48px 0;font-size:13px;display:flex}.add-provider-model-review{flex-direction:column;gap:4px;display:flex}.add-provider-model-toolbar{align-items:center;gap:12px;padding:4px 0;display:flex}.add-provider-checkbox-label{color:var(--text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;font-size:12px;display:flex}.add-provider-checkbox{width:14px;height:14px;accent-color:var(--accent-text);cursor:pointer}.add-provider-model-list{flex-direction:column;gap:6px;max-height:260px;padding:4px 0;display:flex;overflow-y:auto}.add-provider-model-card{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-glass);padding:8px 10px}.add-provider-model-card.dimmed{opacity:.4}.add-provider-model-header{align-items:center;display:flex}.add-provider-model-id{font-family:var(--font-mono,monospace);color:var(--text-primary);font-size:12px}.add-provider-model-fields{border-top:1px solid var(--border);flex-wrap:wrap;gap:8px;margin-top:8px;padding-top:8px;display:flex}.add-provider-model-field{flex-direction:column;flex:1;gap:2px;min-width:100px;display:flex}.add-provider-model-field label{color:var(--text-dim);text-transform:uppercase;letter-spacing:.5px;font-size:10px;font-weight:600}.add-provider-small-input,.add-provider-small-select{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-glass);color:var(--text-primary);font-size:11px;font-family:var(--font-mono,monospace);outline:none;padding:4px 6px}.add-provider-small-input:focus,.add-provider-small-select:focus{border-color:var(--accent)}.add-provider-toggle-label{cursor:pointer;-webkit-user-select:none;user-select:none;color:var(--text-secondary);align-items:center;gap:4px;font-size:11px;display:inline-flex}.add-provider-empty-models{text-align:center;color:var(--text-secondary);flex-direction:column;gap:12px;padding:24px 12px;font-size:12px;display:flex}.add-provider-manual-model{align-items:center;gap:8px;max-width:400px;margin:0 auto;display:flex}.add-provider-manual-model .add-provider-input{padding-left:10px}.add-provider-saved{text-align:center;color:var(--text-primary);flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:48px 0;font-size:14px;display:flex}.add-provider-saved h3{margin:0;font-size:18px;font-weight:700}.add-provider-saved p{color:var(--text-secondary);margin:0;font-size:13px}.path-suggestions{z-index:100;background:var(--header-bg);-webkit-backdrop-filter:blur(40px)saturate(1.5);backdrop-filter:blur(40px)saturate(1.5);border:1px solid var(--border);border-radius:var(--radius-sm);max-height:240px;margin-bottom:4px;padding:4px 0;position:absolute;bottom:100%;left:0;right:0;overflow-y:auto;box-shadow:0 -4px 12px #0000004d}.path-suggestion-item{cursor:pointer;color:var(--text-secondary);padding:6px 10px;font-family:SF Mono,Menlo,Monaco,monospace;font-size:12px;transition:background .1s,color .1s}.path-suggestion-item:hover,.path-suggestion-item.highlighted{background:var(--bg-glass-active);color:var(--text-primary)}.add-project-actions{gap:6px;display:flex}.add-project-btn{border-radius:var(--radius-sm);background:var(--accent);color:var(--accent-text);cursor:pointer;transition:opacity var(--duration) var(--ease);border:none;flex:1;padding:6px 10px;font-family:inherit;font-size:12px;font-weight:600}.add-project-btn:hover{opacity:.85}.add-project-cancel{border-radius:var(--radius-sm);border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;transition:all var(--duration) var(--ease);background:0 0;padding:6px 10px;font-family:inherit;font-size:12px}.add-project-cancel:hover{background:var(--bg-glass-hover);color:var(--text-primary)}.clone-mode-toggle{gap:2px;margin-bottom:6px;display:flex}.clone-mode-btn{border-radius:var(--radius-sm);border:1px solid var(--border);color:var(--text-tertiary);cursor:pointer;transition:all var(--duration) var(--ease);background:0 0;flex:1;padding:5px 8px;font-family:inherit;font-size:11px;font-weight:500}.clone-mode-btn:hover{background:var(--bg-glass-hover);color:var(--text-primary)}.clone-mode-btn.active{background:var(--accent-subtle);border-color:var(--accent);color:var(--accent-text);font-weight:600}.clone-progress{border-radius:var(--radius-sm);background:#0003;max-height:120px;padding:6px 8px;font-family:SF Mono,Menlo,Monaco,monospace;font-size:10px;line-height:1.5;overflow-y:auto}.clone-progress-line{white-space:nowrap;text-overflow:ellipsis;color:var(--text-dim);overflow:hidden}.new-session-btn{border-radius:var(--radius-md);border:1px dashed var(--border-hover);background:var(--bg-glass);width:100%;color:var(--accent-text);cursor:pointer;transition:all var(--duration) var(--ease);padding:10px;font-family:inherit;font-size:13px;font-weight:600}.new-session-btn:hover{background:var(--bg-glass-hover);border-color:var(--accent)}.new-session-btn:active{transform:scale(.98)}.session-list{flex:1;padding:2px 8px;overflow-y:auto}.session-item{border-radius:var(--radius-xs);cursor:pointer;color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;transition:all var(--duration) var(--ease);margin-bottom:1px;padding:5px 10px;font-size:12px;overflow:hidden}.session-item:hover{background:var(--bg-glass-hover);color:var(--text-primary)}.session-item.active{background:var(--accent-subtle);color:var(--accent-text);font-weight:600}.main-area{flex-direction:column;flex:1;min-width:0;display:flex;position:relative}.header{background:var(--header-bg);-webkit-backdrop-filter:blur(40px)saturate(1.5);backdrop-filter:blur(40px)saturate(1.5);border-bottom:1px solid var(--border);z-index:200;will-change:transform;justify-content:space-between;align-items:center;height:50px;padding:8px 16px;display:flex;position:absolute;top:0;left:0;right:0;box-shadow:0 1px 8px #00000026}.header-left,.header-right{align-items:center;gap:10px;display:flex}@media (width<=600px){.desktop-only{display:none!important}.mobile-only{display:flex!important}.header-left>span{text-overflow:ellipsis;white-space:nowrap;max-width:100px;overflow:hidden}}.mobile-only{display:none}.mobile-overflow-btn{color:var(--text-dim);cursor:pointer;border-radius:var(--radius-sm);transition:color var(--duration) var(--ease), background var(--duration) var(--ease);background:0 0;border:none;justify-content:center;align-items:center;padding:3px 8px;font-size:20px;line-height:1}.mobile-overflow-btn:hover{color:var(--text-primary);background:var(--bg-glass-hover)}.header-overflow{align-items:center;gap:10px;display:flex}.mobile-overlay{z-index:300;animation:fadeIn .15s var(--ease);background:#00000059;position:fixed;inset:0}.mobile-overflow-menu{z-index:301;background:var(--bg-glass);-webkit-backdrop-filter:blur(40px)saturate(1.5);backdrop-filter:blur(40px)saturate(1.5);border:1px solid var(--border);border-radius:var(--radius);min-width:180px;animation:fadeIn .1s var(--ease);flex-direction:column;gap:2px;padding:6px;display:flex;position:absolute;top:50px;right:8px;box-shadow:0 8px 32px #00000040}.overflow-item-btn{width:100%;color:var(--text-primary);cursor:pointer;border-radius:var(--radius-sm);text-align:left;transition:background var(--duration) var(--ease);background:0 0;border:none;align-items:center;gap:8px;padding:10px 12px;font-family:inherit;font-size:13px;font-weight:500;display:flex}.overflow-item-btn:hover{background:var(--bg-glass-hover)}.overflow-item-btn svg{flex-shrink:0;width:16px;height:16px}.ctx-pill{border-radius:var(--radius-pill);background:var(--bg-glass);border:1px solid var(--border);height:32px;color:var(--text-dim);font-variant-numeric:tabular-nums;cursor:pointer;transition:all var(--duration) var(--ease);flex-shrink:0;align-items:center;gap:4px;padding:0 10px;font-size:10px;font-weight:600;line-height:1;display:flex}.ctx-pill:hover{background:var(--bg-glass-hover);color:var(--text-primary);border-color:var(--accent)}.ctx-pill-dot{background:var(--accent);border-radius:50%;flex-shrink:0;width:5px;height:5px}.ctx-modal-track{background:var(--bg-glass);border-radius:4px;height:8px;overflow:hidden}.ctx-modal-fill{border-radius:4px;min-width:2px;height:100%;transition:width .3s}.ctx-modal-labels{color:var(--text-dim);justify-content:space-between;font-size:11px;display:flex}.mcp-error{color:var(--error);border-radius:var(--radius-sm);background:#f871711a;border:1px solid #f8717133;margin-bottom:8px;padding:8px 12px;font-size:12px}.mcp-toggle{-webkit-user-select:none;user-select:none;align-items:center;gap:6px;display:flex}.mcp-toggle-track{background:var(--bg-glass);border:1px solid var(--border);width:32px;height:18px;transition:all var(--duration) var(--ease);border-radius:9px;display:inline-block;position:relative}.mcp-toggle-track[data-enabled=true]{background:var(--accent);border-color:var(--accent)}.mcp-toggle-thumb{background:var(--text-primary);width:14px;height:14px;transition:transform var(--duration) var(--ease);border-radius:50%;position:absolute;top:1px;left:1px}.mcp-toggle-track[data-enabled=true] .mcp-toggle-thumb{transform:translate(14px)}.mcp-add-btn{background:var(--bg-glass);border:1px solid var(--border);width:24px;height:24px;color:var(--text-secondary);cursor:pointer;transition:all var(--duration) var(--ease);border-radius:50%;justify-content:center;align-items:center;font-size:14px;line-height:1;display:flex}.mcp-add-btn:hover{background:var(--bg-glass-hover);color:var(--text-primary);border-color:var(--border-hover)}.mcp-server-list{border-top:1px solid var(--border)}.mcp-server-item{border-bottom:1px solid var(--border);cursor:pointer;transition:background var(--duration) var(--ease);padding:8px 12px}.mcp-server-item:last-child{border-bottom:none}.mcp-server-item:hover{background:var(--bg-glass-hover)}.mcp-server-header{align-items:center;gap:6px;display:flex}.mcp-server-state-dot{border-radius:50%;flex-shrink:0;width:6px;height:6px}.mcp-server-badge{text-transform:uppercase;letter-spacing:.3px;border-radius:var(--radius-pill);background:var(--bg-glass);color:var(--text-dim);border:1px solid var(--border);padding:1px 5px;font-size:9px;font-weight:700;line-height:1.4}.mcp-server-tools{color:var(--text-dim);flex-shrink:0;margin-left:auto;font-size:10px}.mcp-server-meta{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.mcp-tools-list{border-top:1px solid var(--border);padding:6px 0}.mcp-tools-header{text-transform:uppercase;letter-spacing:.5px;color:var(--text-dim);padding:0 0 4px;font-size:9px;font-weight:700}.mcp-tool-row{justify-content:space-between;align-items:center;gap:8px;padding:3px 0;display:flex}.mcp-tool-info{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.mcp-tool-name{color:var(--text-primary);font-family:monospace;font-size:12px;font-weight:600}.mcp-tool-fqn{color:var(--text-dim);text-overflow:ellipsis;white-space:nowrap;font-family:monospace;font-size:10px;overflow:hidden}.mcp-tool-desc{color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.mcp-server-chevron{color:var(--text-dim);flex-shrink:0;width:12px;font-size:10px}.mcp-server-name{color:var(--text-primary);font-size:13px;font-weight:600}.mcp-server-details{padding-top:8px}.mcp-server-actions{align-items:center;gap:6px;display:flex}.mcp-action-btn{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-glass);color:var(--text-secondary);cursor:pointer;transition:all var(--duration) var(--ease);padding:4px 10px;font-size:11px}.mcp-action-btn:hover:not(:disabled){background:var(--bg-glass-hover);color:var(--text-primary);border-color:var(--border-hover)}.mcp-action-btn:disabled{opacity:.5;cursor:default}.mcp-action-btn-primary{background:var(--accent);color:var(--accent-text);border-color:var(--accent)}.mcp-action-btn-primary:hover:not(:disabled){opacity:.9}.mcp-action-btn-danger:hover:not(:disabled){color:var(--error);border-color:var(--error)}.mcp-form{border-top:1px solid var(--border);flex-direction:column;gap:8px;padding:8px 12px;display:flex}.mcp-form-section-label{text-transform:uppercase;letter-spacing:.5px;color:var(--text-dim);padding-top:4px;font-size:10px;font-weight:700}.mcp-form-row{flex-direction:column;gap:3px;display:flex}.mcp-form-row-inline{flex-direction:row;align-items:center;gap:4px;display:flex}.mcp-form-label{color:var(--text-secondary);font-size:11px;font-weight:600}.mcp-form-input,.mcp-form-select{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--input-bg);width:100%;color:var(--text-primary);box-sizing:border-box;outline:none;padding:6px 8px;font-size:12px}.mcp-form-input-half{flex:1;width:auto;min-width:0}.mcp-form-input:focus,.mcp-form-select:focus{border-color:var(--border-bright);box-shadow:0 0 0 2px var(--accent-glow)}.mcp-form-error{color:var(--error);font-size:11px}.mcp-form-actions{justify-content:flex-end;gap:6px;padding-top:4px;display:flex}.mcp-tool-row-cascade{align-items:center;gap:6px;width:100%;display:flex}.mcp-tristate{border:1px solid var(--border);border-radius:4px;display:inline-flex;overflow:hidden}.mcp-tristate-btn{border:none;border-right:1px solid var(--border);cursor:pointer;color:var(--text-secondary);background:0 0;padding:2px 8px;font-size:10px;transition:background .1s,color .1s}.mcp-tristate-btn:last-child{border-right:none}.mcp-tristate-btn:disabled{cursor:default;opacity:.6}.mcp-tristate-btn-active{color:#fff;font-weight:600}.mcp-add-override-btn{padding:2px 6px;font-size:10px}.mcp-override-form{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.mcp-override-select{max-width:160px;padding:2px 4px;font-size:10px}.sidebar-toggle{color:var(--text-secondary);cursor:pointer;border-radius:var(--radius-md);transition:all var(--duration) var(--ease);background:0 0;border:none;justify-content:center;align-items:center;padding:6px;font-size:16px;line-height:1;display:flex}.sidebar-toggle:hover{color:var(--text-secondary);background:var(--bg-glass-hover)}.sidebar-toggle:active{opacity:.7}.model-dropdown{position:relative}.model-dropdown-btn{background:var(--bg-glass);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-primary);cursor:pointer;transition:all var(--duration) var(--ease);align-items:center;gap:6px;min-width:0;max-width:180px;padding:4px 10px;font-family:SF Mono,Menlo,Monaco,monospace;font-size:12px;display:flex}.model-dropdown-btn:hover{background:var(--bg-glass-hover);border-color:var(--border-hover)}.model-dropdown-chevron{opacity:.5;transition:transform var(--duration) var(--ease);flex-shrink:0}.model-dropdown-btn[aria-expanded=true] .model-dropdown-chevron{transform:rotate(180deg)}.model-dropdown-menu{background:var(--bg-solid);border:1px solid var(--border-hover);border-radius:var(--radius-md);z-index:1001;min-width:260px;max-width:calc(100vw - 32px);max-height:360px;animation:dropdownIn .15s var(--ease);padding:4px;position:absolute;top:calc(100% + 4px);right:0;overflow-y:auto;box-shadow:0 8px 32px #0006}@media (width<=600px){.model-dropdown-menu{border-radius:var(--radius-lg)!important;z-index:600!important;width:auto!important;max-height:60vh!important;position:fixed!important;inset:auto 8px 8px!important;box-shadow:0 8px 40px #0006!important}.model-dropdown-btn{padding:10px 12px!important}}@keyframes dropdownIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.model-dropdown-search{background:var(--bg-glass);border:1px solid var(--border);border-radius:var(--radius-md);width:100%;color:var(--text-primary);box-sizing:border-box;outline:none;margin-bottom:4px;padding:8px 12px;font-family:SF Mono,Menlo,Monaco,monospace;font-size:12px}.model-dropdown-search:focus{border-color:var(--accent)}.model-dropdown-search::placeholder{color:var(--text-dim)}.model-dropdown-item{border-radius:var(--radius-md);width:100%;color:var(--text-primary);cursor:pointer;text-align:left;transition:background var(--duration) var(--ease);background:0 0;border:none;justify-content:space-between;align-items:center;padding:6px 12px;font-family:SF Mono,Menlo,Monaco,monospace;font-size:12px;display:flex}.model-dropdown-item:hover{background:var(--bg-glass-hover)}.model-dropdown-active{background:var(--accent-subtle)!important;color:var(--accent-text)!important}.model-dropdown-item-main{flex:1;align-items:baseline;gap:8px;min-width:0;display:flex}.model-dropdown-provider{color:var(--text-dim);font-size:11px}.model-dropdown-name{word-break:break-word;flex:1;min-width:0;line-height:1.4}.model-dropdown-item-ctx{color:var(--text-dim);margin-left:8px;font-size:10px}.model-dropdown-empty{text-align:center;color:var(--text-dim);padding:16px;font-family:inherit;font-size:11px}.model-dropdown-list{max-height:288px;padding:4px 0;overflow-y:auto}.model-dropdown-footer{border-top:1px solid var(--border);color:var(--text-dim);padding:6px 12px;font-family:SF Mono,Menlo,Monaco,monospace;font-size:10px}.model-dropdown-warn{color:var(--warning);font-size:10px}.messages-container{scroll-behavior:smooth;scrollbar-width:none;flex-direction:column;flex:1;gap:6px;width:100%;max-width:800px;margin:0 auto;padding:60px 24px 24px;display:flex;overflow-y:auto}.messages-container::-webkit-scrollbar{display:none}.messages-container>*{width:100%}@media (width<=640px){.messages-container{padding:8px 0 1px}}.message-row{width:100%;animation:msgIn .25s var(--ease);align-items:flex-start;gap:8px;display:flex}.message-row.user{flex-direction:row-reverse;align-self:flex-end}.message-row.assistant{align-self:flex-start}.message-bubble{word-wrap:break-word;overflow-wrap:break-word;min-width:0;font-size:16px;line-height:1.3}.message-bubble.user{border-radius:var(--radius-lg);background:var(--user-bubble);color:var(--user-bubble-text);border:1px solid var(--border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);white-space:pre-wrap;border-bottom-right-radius:6px;max-width:80%;padding:10px 16px;font-weight:500}.message-bubble.assistant{color:var(--text-primary);background:0 0;border:none;padding:4px 0}.message-bubble.assistant .md-p{margin-bottom:8px}.message-bubble.assistant .md-p:last-child{margin-bottom:0}.message-bubble.assistant .md-strong{letter-spacing:-.01em;color:var(--text-primary);font-weight:600}.message-bubble.assistant .md-em{color:var(--text-secondary);font-style:italic}.message-bubble.assistant .md-link{color:var(--accent-text);border-bottom:1px solid var(--accent-subtle);text-decoration:none}.message-bubble.assistant .md-link:hover{border-color:var(--accent-text)}.message-bubble.assistant .md-ul,.message-bubble.assistant .md-ol{margin:6px 0;padding-left:20px}.message-bubble.assistant .md-li{margin-bottom:3px}.message-bubble.assistant .md-h1,.message-bubble.assistant .md-h2,.message-bubble.assistant .md-h3{color:var(--text-primary);letter-spacing:-.02em;margin:14px 0 6px}.message-bubble.assistant .md-h1{font-size:18px;font-weight:700}.message-bubble.assistant .md-h2{font-size:16px;font-weight:600}.message-bubble.assistant .md-h3{font-size:14px;font-weight:600}.message-bubble.assistant .md-hr{border:none;border-top:1px solid var(--border);margin:12px 0}.message-bubble.assistant .md-blockquote{border-left:2px solid var(--accent);color:var(--text-secondary);margin:8px 0;padding-left:12px;font-style:italic}.message-bubble.assistant .table-wrapper{margin:8px 0}.message-bubble.assistant .md-table{font-size:14px}.assistant-msg-footer{justify-content:flex-start;align-items:center;gap:8px;margin-top:2px;margin-bottom:8px;padding:0;display:flex}.assistant-msg-footer.user{justify-content:flex-end}.assistant-msg-model{color:var(--text-dim);letter-spacing:.02em;white-space:nowrap;text-overflow:ellipsis;align-items:center;max-width:260px;padding:4px 10px 4px 6px;font-size:11px;font-weight:500;display:inline-flex;overflow:hidden}.copy-msg-btn{color:var(--text-dim);border-radius:var(--radius-xs);cursor:pointer;transition:color var(--duration) var(--ease), background var(--duration) var(--ease);background:0 0;border:none;align-items:center;gap:4px;padding:4px 10px;font-family:inherit;font-size:12px;font-weight:500;line-height:1.5;display:inline-flex}.copy-msg-btn:hover{color:var(--text-primary);background:var(--bg-glass-hover)}.copy-msg-btn:active{color:var(--accent-text)}.rewind-btn{margin-left:2px}.tool-result{border-radius:var(--radius);background:var(--tool-bg);border:1px solid var(--tool-border);font-family:SF Mono,Menlo,Monaco,monospace;font-size:13px;line-height:1.4;animation:.25s ease-out toolFadeIn;overflow:hidden}.tool-result summary{cursor:pointer;color:var(--tool-accent-text);-webkit-user-select:none;user-select:none;transition:background var(--duration) var(--ease);padding:8px 12px;font-weight:600}.tool-result summary:hover{background:var(--bg-glass-hover)}.tool-result .tool-result-content{white-space:pre-wrap;word-break:break-word;color:var(--tool-accent-text);padding:0 12px 8px}.markdown-content p{margin-bottom:2px}.markdown-content p:last-child{margin-bottom:0}.markdown-content strong{font-weight:600}.markdown-content em{color:var(--text-secondary);font-style:italic}.markdown-content a{color:var(--accent-text);border-bottom:1px solid var(--accent-subtle);text-decoration:none}.markdown-content a:hover{border-color:var(--accent-text)}.markdown-content ul,.markdown-content ol{margin:2px 0;padding-left:16px}.markdown-content li{margin-bottom:0}.markdown-content li>p{margin:0}.markdown-content h1,.markdown-content h2,.markdown-content h3,.markdown-content h4{color:var(--text-primary);letter-spacing:-.02em;margin:6px 0 2px}.markdown-content h1{font-size:15px;font-weight:700}.markdown-content h2{font-size:14px;font-weight:600}.markdown-content h3{font-size:13px;font-weight:600}.markdown-content hr{border:none;border-top:1px solid var(--border);margin:4px 0}.markdown-content blockquote{border-left:2px solid var(--accent);color:var(--text-secondary);margin:2px 0;padding-left:8px;font-style:italic}.markdown-content .table-wrapper{border-radius:var(--radius-md);border:1px solid var(--border);margin:6px 0;overflow-x:auto}.markdown-content table{border-collapse:collapse;width:100%;font-size:12px}.markdown-content th{background:var(--bg-glass-strong);text-transform:uppercase;letter-spacing:.03em;color:var(--text-secondary);border-bottom:1px solid var(--border-hover);white-space:nowrap;padding:6px 10px;font-size:11px;font-weight:600}.markdown-content td{border-bottom:1px solid var(--border);color:var(--text-primary);padding:5px 10px}.markdown-content tr:last-child td{border-bottom:none}.markdown-content code{background:var(--bg-glass-strong);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--accent-text);padding:1px 5px;font-family:SF Mono,Menlo,Monaco,monospace;font-size:.88em}.markdown-content pre:not(.code-block){border-radius:var(--radius);border:1px solid var(--border);background:#00000040;margin:4px 0;padding:8px;font-family:SF Mono,Menlo,Monaco,monospace;font-size:12px;line-height:1.4;overflow-x:auto}.markdown-content pre code{font-size:inherit;color:var(--text-primary);background:0 0;border:none;padding:0}.pi-thinking-dots span{font-size:14px;line-height:1;animation:1.4s infinite thinkingDot}.pi-thinking-dots span:nth-child(2){animation-delay:.2s}.pi-thinking-dots span:nth-child(3){animation-delay:.4s}@keyframes thinkingDot{0%,80%,to{opacity:0}40%{opacity:1}}.code-group:hover .code-copy-btn{opacity:1!important}.error-banner{border-radius:var(--radius);color:var(--error);cursor:pointer;background:#f871711a;border:1px solid #f8717133;padding:8px 12px;font-size:13px}.welcome{text-align:center;color:var(--text-dim);animation:fadeIn .5s var(--ease);padding:40px 20px}.welcome-icon{opacity:.4;margin-bottom:8px;font-size:32px}.welcome-text{color:var(--text-secondary);margin-bottom:4px;font-size:15px}.welcome-hint{color:var(--text-dim);font-size:13px}.ti-area{background:var(--bg-solid);width:100%;padding:0 16px 14px}.ti-container{background:var(--input-bg);border:1px solid var(--border-hover);border-radius:var(--radius-lg);max-width:800px;transition:border-color var(--duration) var(--ease), box-shadow var(--duration) var(--ease);flex-direction:column;gap:8px;margin:0 auto;padding:12px 16px 10px;display:flex;position:relative}.ti-container:focus-within{border-color:var(--border-bright);box-shadow:0 0 0 3px var(--accent-glow)}.ti-input{width:100%;color:var(--text-primary);resize:none;scrollbar-width:none;background:0 0;border:none;outline:none;max-height:160px;padding:0;font-family:inherit;font-size:14px;line-height:1.5;overflow-y:auto}.ti-input::-webkit-scrollbar{display:none}.ti-input::placeholder{color:var(--text-dim)}.ti-input:disabled{opacity:.4;cursor:not-allowed}.ti-toolbar{justify-content:space-between;align-items:center;display:flex}.ti-toolbar-left{align-items:center;gap:4px;display:flex}.ti-toolbar-btn{background:var(--bg-glass);border:1px solid var(--border);width:32px;height:32px;color:var(--text-secondary);cursor:pointer;transition:all var(--duration) var(--ease);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex}.ti-toolbar-btn:hover{color:var(--text-primary);background:var(--bg-glass-hover);border-color:var(--border-hover)}.ti-toolbar-right{align-items:center;gap:4px;display:flex}.ti-toolbar-right .model-dropdown-btn{border-radius:var(--radius-pill);min-width:0;max-width:140px;height:32px;padding:0 10px}.ti-toolbar-right .model-dropdown-btn .model-dropdown-chevron{display:none}.ti-toolbar-right .model-dropdown-btn:hover{background:var(--bg-glass-hover);border-color:var(--border-hover)}.ti-toolbar-right .model-dropdown-menu{animation:dropdownUp .15s var(--ease);top:auto;bottom:calc(100% + 6px)}@keyframes dropdownUp{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.ti-send-btn{background:var(--text-primary);cursor:pointer;width:32px;height:32px;transition:all var(--duration) var(--ease);border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex}@media (width<=600px){.ti-send-btn,.ti-abort-btn,.ti-steer-send{width:44px!important;min-width:44px!important;height:44px!important}}.ti-send-btn:hover:not(:disabled){opacity:.85;transform:scale(1.05)}.ti-send-btn:active:not(:disabled){transform:scale(.9)}.ti-send-btn.pulsing{animation:1.4s ease-in-out infinite sendPulse}@keyframes sendPulse{0%,to{box-shadow:0 0 0 0 var(--accent)}50%{box-shadow:0 0 0 6px #fff0}}.ti-send-icon{color:var(--bg-solid);justify-content:center;align-items:center;display:flex}.ti-abort-btn{background:var(--text-primary);cursor:pointer;width:32px;height:32px;color:var(--bg-solid);transition:all var(--duration) var(--ease);border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;display:flex}.ti-abort-btn:hover:not(:disabled){opacity:.85}.ti-abort-btn:active:not(:disabled){transform:scale(.9)}.ti-slash-suggestions{background:var(--bg-solid);border:1px solid var(--border);border-radius:var(--radius-md);z-index:100;margin-bottom:4px;position:absolute;bottom:100%;left:0;right:0;overflow:hidden;box-shadow:0 4px 12px #00000026}.ti-slash-item{width:100%;color:var(--text-primary);cursor:pointer;text-align:left;transition:background var(--duration) var(--ease);background:0 0;border:none;flex-direction:column;align-items:flex-start;gap:2px;padding:8px 12px;font-size:12px;display:flex}.ti-slash-item:hover{background:var(--surface-2)}.ti-slash-item:disabled{opacity:.5;cursor:default}.ti-slash-name{font-weight:600;font-family:var(--font-mono);color:var(--accent)}.ti-slash-desc{color:var(--text-dim);font-size:11px}.ti-steer-badge{border-radius:var(--radius-md);background:var(--accent-subtle);max-width:800px;color:var(--accent-text);animation:fadeIn .2s var(--ease);justify-content:center;align-items:center;gap:6px;margin:0 auto 6px;padding:5px 10px;font-size:11px;line-height:1.4;display:flex}.ti-steer-send{background:var(--accent)!important}.ti-steer-send:hover:not(:disabled){filter:brightness(1.15)}.steer-tag{letter-spacing:.3px;text-transform:uppercase;color:var(--accent-text);background:var(--accent-subtle);vertical-align:middle;border-radius:3px;margin-right:6px;padding:1px 5px;font-size:10px;font-weight:600;line-height:1.4;display:inline-block}.queued-msgs{border-radius:var(--radius-md);background:var(--bg-frosted);border:1px solid var(--border);flex-direction:column;gap:4px;margin:4px 0 8px;padding:8px 16px;display:flex}.queued-msg-item{color:var(--text-primary);align-items:center;gap:8px;padding:3px 0;font-size:12px;line-height:1.4;display:flex}.queued-badge{text-transform:uppercase;letter-spacing:.3px;border-radius:3px;flex-shrink:0;padding:1px 5px;font-size:10px;font-weight:600;line-height:1.4}.queued-badge.steer{color:var(--accent-text);background:var(--accent-subtle)}.queued-badge.followUp{color:var(--text-dim);background:var(--bg-glass)}.queued-msg-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.settings-btn{border-radius:var(--radius-md);border:1px solid var(--border);background:var(--bg-glass);color:var(--text-primary);cursor:pointer;transition:all var(--duration) var(--ease);animation:fadeIn .2s var(--ease);outline:none;padding:8px 16px;font-family:inherit;font-size:12px}.settings-btn:hover{box-shadow:0 4px 12px var(--accent-glow);transform:translateY(-1px)}.centered{background:var(--bg-solid);height:100vh;color:var(--text-secondary);justify-content:center;align-items:center;font-family:system-ui,sans-serif;display:flex}.login-form{background:var(--bg-frosted);border-radius:var(--radius-lg);border:1px solid var(--border-hover);width:320px;max-width:90vw;-webkit-backdrop-filter:blur(var(--blur-heavy));backdrop-filter:blur(var(--blur-heavy));flex-direction:column;gap:12px;padding:32px;display:flex}.login-title{color:var(--text-primary);margin:0 0 4px;font-size:20px;font-weight:600}.login-input{border-radius:var(--radius-md);border:1px solid var(--input-border);background:var(--input-bg);color:var(--text-primary);transition:all var(--duration) var(--ease);outline:none;padding:10px 12px;font-family:inherit;font-size:14px}.login-input:focus{border-color:var(--input-focus-border);box-shadow:0 0 0 3px var(--accent-glow)}.login-input-error{border-color:var(--accent-red,#e06c75)!important}.login-input-error:focus{box-shadow:0 0 0 3px color-mix(in srgb, var(--accent-red,#e06c75) 40%, transparent)!important}.login-error{color:var(--accent-red,#e06c75);margin:-4px 0 0;font-size:12px;line-height:1.4}.login-btn{border-radius:var(--radius-md);background:var(--accent);color:var(--bg-solid);cursor:pointer;transition:all var(--duration) var(--ease);border:none;padding:10px;font-family:inherit;font-size:14px;font-weight:600}.login-btn:hover{opacity:.9}.login-btn:active{transform:scale(.97)}.streaming-cursor{color:var(--accent);animation:1s infinite blink}.tool-badge{border-radius:var(--radius-sm);background:var(--tool-bg);color:var(--tool-accent-text);margin-bottom:6px;padding:2px 8px;font-family:SF Mono,Menlo,Monaco,monospace;font-size:12px;font-weight:600;animation:.2s ease-out toolFadeIn;display:inline-block}.theme-select{border-radius:var(--radius-md);border:1px solid var(--border);background:var(--bg-glass);color:var(--text-primary);cursor:pointer;outline:none;padding:6px 10px;font-family:inherit;font-size:12px}.theme-select:focus{border-color:var(--accent)}.settings-overlay{z-index:500;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#00000080;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.settings-panel{background:var(--bg-frosted);-webkit-backdrop-filter:blur(40px)saturate(1.6);backdrop-filter:blur(40px)saturate(1.6);border:1px solid var(--border-hover);border-radius:var(--radius-lg);width:100%;max-width:760px;max-height:80vh;animation:sheetIn .25s var(--ease);flex-direction:column;display:flex;overflow:hidden;box-shadow:0 16px 48px #0006}@keyframes sheetIn{0%{opacity:0;transform:scale(.94)}to{opacity:1;transform:scale(1)}}@media (width<=600px){.settings-overlay{align-items:flex-end;padding:0}.settings-panel{animation:sheetUp .25s var(--ease);border-radius:var(--radius-lg) var(--radius-lg) 0 0!important;max-width:100%!important;max-height:90vh!important}@keyframes sheetUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.settings-header{padding:14px 16px}.settings-body{padding:12px}.settings-tab{padding:10px 14px;font-size:14px}.settings-close{width:40px;height:40px;font-size:16px}}.settings-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;display:flex}.settings-tabs{flex:1;gap:2px;min-width:0;display:flex;overflow-x:auto}.settings-tab{white-space:nowrap;border-radius:var(--radius-sm);color:var(--text-dim);cursor:pointer;transition:all var(--duration) var(--ease);background:0 0;border:none;flex-shrink:0;padding:6px 12px;font-family:inherit;font-size:13px}.settings-tab:hover{background:var(--bg-glass-hover);color:var(--text-secondary)}.settings-tab-active{background:var(--accent-subtle);color:var(--accent-text);font-weight:600}.settings-close{border-radius:var(--radius-md);border:1px solid var(--border);width:32px;height:32px;color:var(--text-dim);cursor:pointer;transition:all var(--duration) var(--ease);background:0 0;flex-shrink:0;justify-content:center;align-items:center;font-size:14px;display:flex}.settings-close:hover{background:var(--bg-glass-hover);color:var(--text-primary)}.settings-error{color:var(--error);background:#f871711a;border-bottom:1px solid #f8717133;padding:8px 16px;font-size:12px}.settings-body{flex:1;padding:16px;overflow-y:auto}.settings-fields{flex-direction:column;gap:16px;display:flex}.settings-field{flex-direction:column;gap:4px;display:flex}.settings-label{color:var(--text-primary);font-size:12px;font-weight:600}.settings-hint{color:var(--text-dim);font-size:11px;line-height:1.5}.settings-field-row{align-items:center;gap:8px;display:flex}.settings-input,.settings-select,.settings-textarea{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-glass);color:var(--text-primary);transition:border-color var(--duration) var(--ease);outline:none;flex:1;padding:8px 10px;font-family:inherit;font-size:13px}.settings-input:focus,.settings-select:focus,.settings-textarea:focus{border-color:var(--accent)}.settings-divider{border:none;border-top:1px solid var(--border);margin:16px 0}.settings-section-title{color:var(--accent-text);text-transform:uppercase;letter-spacing:.05em;margin:0 0 8px;font-size:12px;font-weight:700}.settings-textarea{resize:vertical;font-family:SF Mono,Menlo,Monaco,monospace;font-size:11px;line-height:1.5}.settings-btn{border-radius:var(--radius-sm);border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;transition:all var(--duration) var(--ease);white-space:nowrap;background:0 0;flex-shrink:0;padding:6px 14px;font-family:inherit;font-size:12px}.settings-btn:hover{background:var(--bg-glass-hover);color:var(--text-primary)}.settings-btn-primary{background:var(--accent-subtle);border-color:var(--accent);color:var(--accent-text)}.settings-btn-primary:hover{background:var(--accent-glow)}.settings-btn-primary:disabled{opacity:.5;cursor:not-allowed}.settings-btn-danger{color:var(--error);border-color:#f8717140}.settings-btn-danger:hover{background:#f871711a}.settings-btn-delete{border-radius:var(--radius-sm);color:var(--error);cursor:pointer;white-space:nowrap;background:#f871710f;border:1px solid #f8717133;align-items:center;gap:4px;padding:4px 10px;font-size:11px;line-height:1.4;transition:all .15s;display:inline-flex}.settings-btn-delete:hover:not(:disabled){color:#fca5a5;background:#f8717124;border-color:#f8717166}.settings-btn-delete:disabled{opacity:.35;cursor:not-allowed}.settings-card{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-glass);overflow:hidden}.settings-card-header{justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;display:flex}.settings-card-left{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.settings-card-actions{flex-shrink:0;align-items:center;gap:6px;display:flex}.settings-card-edit{align-items:center;gap:8px;padding:0 12px 10px;display:flex}.settings-badge{text-transform:uppercase;letter-spacing:.5px;border-radius:var(--radius-pill);padding:2px 8px;font-size:10px;font-weight:600}.settings-badge-on{color:var(--success);background:#34d39926;border:1px solid #34d39940}.settings-badge-off{background:var(--bg-glass);color:var(--text-dim);border:1px solid var(--border)}.settings-badge-custom{border-radius:var(--radius-pill);color:var(--warning);letter-spacing:.3px;background:#fbbf241a;border:1px solid #fbbf2433;align-items:center;padding:1px 7px;font-size:10px;font-weight:600;line-height:1.5;display:inline-flex}.settings-details{border-top:1px solid var(--border)}.settings-summary{color:var(--text-dim);cursor:pointer;-webkit-user-select:none;user-select:none;padding:6px 12px;font-size:11px}.settings-summary:hover{color:var(--text-secondary)}.settings-model-list{flex-direction:column;gap:2px;margin:0;padding:0 12px 8px 24px;list-style:none;display:flex}.settings-model-item{justify-content:space-between;font-family:SF Mono,Menlo,Monaco,monospace;font-size:11px;display:flex}.settings-raw-json{margin-top:8px}.settings-json-area{flex-direction:column;gap:8px;margin-top:8px;display:flex}.settings-json-actions{justify-content:flex-end;align-items:center;gap:8px;display:flex}.settings-theme-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.settings-theme-swatch{border-radius:var(--radius-md);border:1px solid var(--border);background:var(--bg-glass);color:var(--text-secondary);text-align:left;cursor:pointer;transition:all var(--duration) var(--ease);justify-content:space-between;align-items:center;gap:8px;padding:10px 14px;font-family:inherit;font-size:13px;display:flex}.settings-theme-swatch:hover{background:var(--bg-glass-hover);border-color:var(--accent)}.settings-theme-active{border-color:var(--accent);background:var(--accent-subtle);color:var(--accent-text);font-weight:600}.settings-theme-variant{color:var(--text-dim);text-transform:capitalize;font-size:10px}.space-y-3>*+*{margin-top:12px}.space-y-2>*+*{margin-top:8px}.space-y-4>*+*{margin-top:16px}.text-green{color:var(--success)}.text-dim{color:var(--text-dim)}.font-mono{font-family:SF Mono,Menlo,Monaco,monospace}.text-xs{font-size:11px}.text-sm{font-size:14px}.text-11{font-size:11px}.italic{font-style:italic}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.chat-scroll{overflow-anchor:auto;scroll-behavior:auto;flex:1;padding:4px 16px 2px;overflow-y:auto}.chat-message-list{flex-direction:column;gap:16px;width:100%;max-width:760px;margin:0 auto;display:flex}.assistant-blocks{flex-direction:column;gap:8px;display:flex}.streaming-row{opacity:.92}.streaming-bubble{flex-direction:column;gap:8px;display:flex}.streaming-text{align-items:center;gap:4px;display:flex}.thinking-bubble{align-items:center;gap:8px;padding:6px 0;display:flex}.thinking-running{align-items:center;gap:6px;display:inline-flex}.thinking-code{background:var(--bg-glass);border-radius:var(--radius-sm);padding:1px 6px;font-family:SF Mono,Menlo,Monaco,monospace;font-size:11px}.inline-code{background:var(--bg-glass-strong);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--accent-text);padding:1px 5px;font-family:SF Mono,Menlo,Monaco,monospace;font-size:.88em}.code-block-wrap{border-radius:var(--radius);border:1px solid var(--border);margin:8px 0;position:relative;overflow:hidden}.code-block-header{background:var(--bg-glass-strong);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:6px 12px;display:flex}.code-block-lang{color:var(--text-dim);text-transform:lowercase;font-family:SF Mono,Menlo,Monaco,monospace;font-size:11px}.code-copy-btn{border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-dim);cursor:pointer;transition:all var(--duration) var(--ease);background:0 0;padding:2px 8px;font-family:inherit;font-size:11px;position:absolute;top:8px;right:8px}.code-copy-btn:hover{background:var(--bg-glass-hover);color:var(--text-secondary);border-color:var(--border-hover)}.code-block{background:var(--bg-elevated);margin:0;padding:12px 48px 12px 12px;font-family:SF Mono,Menlo,Monaco,monospace;font-size:12px;line-height:1.55;overflow-x:auto}.code-line{white-space:pre;display:block}.md-h1{margin:10px 0 4px;font-size:15px;font-weight:700}.md-h2{margin:8px 0 3px;font-size:14px;font-weight:600}.md-h3{margin:6px 0 2px;font-size:13px;font-weight:600}.md-h4{margin:4px 0 2px;font-size:12px;font-weight:600}.md-p{margin:4px 0;line-height:1.5}.md-ul,.md-ol{margin:4px 0 8px;padding-left:18px}.md-li{margin:2px 0;line-height:1.45}.md-blockquote{border-left:2px solid var(--accent);color:var(--text-secondary);background:var(--bg-glass);border-radius:0 var(--radius-sm) var(--radius-sm) 0;margin:6px 0;padding:4px 10px;font-style:italic}.md-hr{border:none;border-top:1px solid var(--border);margin:8px 0}.md-link{color:var(--accent-text);border-bottom:1px solid var(--accent-subtle);text-decoration:none}.md-link:hover{border-color:var(--accent-text)}.table-wrapper{border-radius:var(--radius-md);border:1px solid var(--border);background:var(--bg-solid);margin:8px 0;overflow-x:auto}.md-table{border-collapse:collapse;width:100%;font-size:12px}.md-th{background:var(--bg-glass-strong);text-transform:uppercase;letter-spacing:.03em;color:var(--text-secondary);border-bottom:1px solid var(--border-hover);white-space:nowrap;padding:6px 10px;font-size:11px;font-weight:600}.md-td{border-bottom:1px solid var(--border);padding:4px 10px}@keyframes toolPulse{0%,to{opacity:1;box-shadow:0 0 0 0 var(--accent)}50%{opacity:.7;box-shadow:0 0 0 3px #0000}}@keyframes toolNodeIn{0%{opacity:0;transform:translate(-4px)}to{opacity:1;transform:translate(0)}}.tool-timeline{flex-direction:column;margin:4px 0;animation:.2s ease-out toolNodeIn;display:flex}.tool-timeline-track{flex-direction:column;padding-left:20px;display:flex;position:relative}.tool-timeline-track:before{content:"";background:var(--border);width:1px;position:absolute;top:0;bottom:0;left:7px}.tool-timeline-header{cursor:pointer;border-radius:var(--radius-sm);transition:background .15s var(--ease);-webkit-user-select:none;user-select:none;align-items:center;gap:7px;padding:4px 6px 4px 0;list-style:none;display:flex}.tool-timeline-header:hover{background:var(--bg-glass-hover)}.tool-timeline-header::-webkit-details-marker{display:none}.tool-timeline-chevron{color:var(--text-dim);width:10px;transition:transform .15s var(--ease);flex-shrink:0;font-size:9px}.tool-timeline-batch-label{color:var(--text-dim);font-family:SF Mono,Menlo,Monaco,monospace;font-size:11px;font-weight:600}.tool-timeline-batch-preview{color:var(--text-dim);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-family:SF Mono,Menlo,Monaco,monospace;font-size:10px;overflow:hidden}.tool-timeline-badge{border-radius:var(--radius-pill);letter-spacing:.4px;text-transform:uppercase;color:var(--accent);background:var(--bg-glass);padding:1px 5px;font-size:9px;font-weight:600}.tool-timeline-badge.error{color:var(--error);background:#f871711a}.tool-timeline-node{align-items:flex-start;gap:8px;padding:3px 0;animation:.18s ease-out toolNodeIn;display:flex;position:relative}.tool-timeline-icon{background:var(--bg-glass);border:1px solid var(--border);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:16px;height:16px;margin-top:1px;font-size:11px;line-height:1;display:flex}.tool-timeline-icon.running{border-color:var(--accent);animation:1.4s ease-in-out infinite toolPulse}.tool-timeline-icon.error{border-color:var(--error)}.tool-timeline-icon.success{border-color:var(--success)}.tool-timeline-content{flex:1;min-width:0;font-family:SF Mono,Menlo,Monaco,monospace;font-size:12px;line-height:1.4}.tool-timeline-row{flex-wrap:wrap;align-items:baseline;gap:6px;display:flex}.tool-timeline-name{color:var(--text-secondary);font-size:12px;font-weight:600}.tool-timeline-arg{color:var(--text-dim);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:11px;overflow:hidden}.tool-timeline-running{color:var(--accent);font-size:10px;animation:1.4s ease-in-out infinite toolPulse}.tool-timeline-output-preview{color:var(--text-dim);text-overflow:ellipsis;white-space:nowrap;max-width:100%;margin-top:1px;font-size:11px;overflow:hidden}.tool-timeline-details-btn{appearance:none;cursor:pointer;color:var(--text-dim);text-underline-offset:2px;background:0 0;border:none;outline:none;padding:0;font-family:inherit;font-size:10px;text-decoration:underline;transition:color .12s}.tool-timeline-details-btn:hover{color:var(--text-secondary)}.tool-timeline-details{flex-direction:column;gap:4px;margin-top:5px;display:flex}.tool-timeline-section-label{text-transform:uppercase;letter-spacing:.5px;color:var(--text-dim);margin-bottom:2px;font-size:9px}.tool-timeline-code{white-space:pre-wrap;word-break:break-word;color:var(--text-secondary);background:var(--bg-glass);border-radius:var(--radius-sm);border:1px solid var(--border);max-height:160px;padding:6px 8px;font-size:11px;overflow:auto}.thinking-block{border-radius:var(--radius-sm);border:1px solid var(--border);color:var(--text-dim);margin:2px 0;padding:3px 8px;font-size:12px}.thinking-block summary{cursor:pointer;-webkit-user-select:none;user-select:none;color:var(--text-secondary);list-style:none}.thinking-block summary::-webkit-details-marker{display:none}.thinking-content{white-space:pre-wrap;word-break:break-word;color:var(--text-dim);margin-top:4px;font-family:inherit;font-size:12px}.tool-badge{color:var(--accent);background:var(--bg-glass);border-radius:var(--radius-sm);text-transform:uppercase;letter-spacing:.5px;padding:1px 5px;font-size:9px}.tool-badge-error{color:var(--error);background:#f871711a}.session-children{border-left:1px solid var(--border-color);margin-top:1px;margin-bottom:1px;margin-left:6px;padding-left:12px}.session-worker-item{border-radius:var(--radius-sm);cursor:pointer;color:var(--text-secondary);transition:background-color var(--duration) var(--ease), color var(--duration) var(--ease);align-items:center;gap:8px;padding:6px 10px 6px 28px;font-size:13px;display:flex;position:relative}.session-worker-item:hover{background:var(--hover-bg)}.session-worker-item.active{background:var(--active-bg);color:var(--accent-text)}.session-worker-dot{border-radius:50%;flex-shrink:0;width:6px;height:6px;display:inline-block}.session-worker-dot.active{animation:1.5s ease-in-out infinite pulsate-dot}.session-worker-dot.idle{background:#56b6c2}.session-worker-dot.streaming{background:#98c379}@keyframes pulsate-dot{0%,to{box-shadow:0 0 #98c37966}50%{box-shadow:0 0 0 6px #98c37900}}.session-worker-name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.scope-picker-section{flex-direction:column;max-height:280px;display:flex;overflow:hidden}.scope-model-list{flex-direction:column;flex:1;gap:1px;padding-right:4px;display:flex;overflow-y:auto}.search-match-row:hover{background:var(--accent-subtle);color:var(--text-primary)!important}.file-explorer-resize-handle:hover{background:var(--accent-bg);opacity:.4}.file-tree-row{border-radius:var(--radius-xs);transition:background .1s}.file-tree-row:hover{background:var(--accent-subtle)}.file-tree-row-active{background:var(--accent-bg);opacity:.85}.context-menu-item:hover{background:var(--accent-subtle);color:var(--text-primary)!important}.context-menu-item:active{background:var(--accent-bg)}.file-row-actions{transition:opacity .1s;opacity:0!important}.file-tree-row:hover .file-row-actions{opacity:.7!important}.file-tree-row:hover .file-row-actions button:hover{opacity:1!important}@media (width<=600px){.file-explorer-panel{border-left:none!important;border-top:1px solid var(--border)!important;width:100%!important;min-width:0!important;max-width:100%!important;top:50px!important}.file-explorer-resize-handle{display:none!important}.fe-tab-bar button{padding:12px 16px!important;font-size:14px!important}}.git-action-btn{cursor:pointer;border-radius:var(--radius-sm);transition:background var(--duration) var(--ease), color var(--duration) var(--ease);background:0 0;border:none;justify-content:center;align-items:center;font-family:inherit;line-height:1;display:inline-flex}.git-file-action-btn{color:var(--accent-text);background:var(--accent-subtle);border:1px solid var(--border-bright);border-radius:var(--radius-sm);min-width:52px;padding:5px 10px;font-size:12px;font-weight:600}.git-file-action-btn:hover{background:var(--bg-glass-active)}.git-revert-btn{color:var(--text-dim);min-width:32px;padding:5px 8px;font-size:12px}.git-revert-btn:hover{color:var(--error);background:#f871711f}.git-revert-btn.pending{color:var(--error);background:#f871711f;font-weight:600}.git-group-action-btn{color:var(--accent-text);border:1px solid var(--border-bright);border-radius:var(--radius-sm);background:0 0;padding:4px 10px;font-size:11px;font-weight:600}.git-group-action-btn:hover{background:var(--accent-subtle)}.git-remote-btn{text-align:center;color:var(--text-primary);border:1px solid var(--border-bright);background:var(--bg-glass);border-radius:var(--radius-sm);flex:1;padding:9px 6px;font-size:13px;font-weight:600}.git-remote-btn:hover:not(:disabled){background:var(--bg-glass-hover);border-color:var(--accent);color:var(--accent-text)}.git-remote-btn:disabled{opacity:.4;cursor:default}.git-section-toggle{letter-spacing:.04em;text-transform:uppercase;width:100%;color:var(--text-secondary);cursor:pointer;text-align:left;transition:background var(--duration) var(--ease), color var(--duration) var(--ease);background:0 0;border:none;justify-content:space-between;align-items:center;padding:11px 14px;font-size:12px;font-weight:700;display:flex}.git-section-toggle:hover{background:var(--bg-glass-hover);color:var(--text-primary)}.git-section-chevron{opacity:.6;transition:transform .2s var(--ease);font-size:14px}.git-section-chevron.open{transform:rotate(180deg)}.git-refresh-btn{color:var(--text-dim);border-radius:var(--radius-sm);padding:6px 8px;font-size:15px}.git-refresh-btn:hover{background:var(--bg-glass-hover);color:var(--text-primary)}.git-commit-btn{border-radius:var(--radius-sm);border:1px solid var(--border);transition:all var(--duration) var(--ease);padding:8px 18px;font-size:13px;font-weight:600}.git-commit-btn.ready{background:var(--accent-bg);color:var(--accent-text);border-color:var(--accent-text)}.git-commit-btn.disabled{color:var(--text-dim);cursor:default;background:0 0}.git-try-btn{border:1px solid var(--border-bright);border-radius:var(--radius-sm);color:var(--accent-text);cursor:pointer;white-space:nowrap;transition:background var(--duration) var(--ease);background:0 0;padding:3px 9px;font-size:11px}.git-try-btn:hover:not(:disabled){background:var(--accent-subtle)}.git-try-btn:disabled{opacity:.4;cursor:default}.git-file-row{border-bottom:1px solid var(--border);align-items:center;gap:6px;padding:7px 12px;font-size:12px;display:flex}@media (width<=600px){.git-file-row{gap:8px;padding:9px 12px}.git-file-action-btn{min-width:60px;padding:6px 12px;font-size:13px}.git-revert-btn{min-width:36px;padding:6px 10px;font-size:13px}.git-remote-btn{padding:12px 6px;font-size:14px}.git-section-toggle{padding:13px 14px;font-size:13px}.git-commit-btn{padding:10px 20px;font-size:14px}}.session-search-input{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-glass);width:100%;color:var(--text-primary);box-sizing:border-box;transition:border-color var(--duration) var(--ease);appearance:none;outline:none;padding:6px 10px;font-family:inherit;font-size:12px}.session-search-input:focus{border-color:var(--border-bright);background:var(--bg-glass-hover)}.session-search-input::placeholder{color:var(--text-dim)}.session-search-input::-webkit-search-cancel-button{appearance:none;background:var(--text-dim);cursor:pointer;width:12px;height:12px;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M1 1l10 10M11 1L1 11' stroke='currentColor' stroke-width='2'/%3E%3C/svg%3E") 50% no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M1 1l10 10M11 1L1 11' stroke='currentColor' stroke-width='2'/%3E%3C/svg%3E") 50% no-repeat}.session-show-more-btn{text-align:left;width:100%;color:var(--accent-text);cursor:pointer;border-radius:var(--radius-sm);transition:background var(--duration) var(--ease), color var(--duration) var(--ease);opacity:.75;background:0 0;border:none;padding:6px 12px;font-family:inherit;font-size:11px;font-weight:600;display:block}.session-show-more-btn:hover{background:var(--bg-glass-hover);opacity:1}@media (width<=600px){.session-search-input{padding:6px 10px;font-size:13px}.session-show-more-btn{padding:8px 12px;font-size:12px}}.ti-image-preview-row{flex-wrap:wrap;gap:6px;padding:6px 12px 0;display:flex}.ti-image-preview-item{border-radius:var(--radius-sm);border:1px solid var(--border);width:64px;height:64px;animation:fadeIn .15s var(--ease);flex-shrink:0;position:relative;overflow:hidden}.ti-image-thumb{object-fit:cover;width:100%;height:100%;display:block}.ti-image-remove{color:#fff;cursor:pointer;opacity:0;width:18px;height:18px;transition:opacity .12s var(--ease);background:#0000008c;border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;display:flex;position:absolute;top:2px;right:2px}.ti-image-preview-item:hover .ti-image-remove{opacity:1}.user-images-row{flex-wrap:wrap;gap:6px;margin-bottom:6px;display:flex}.user-image-thumb{border-radius:var(--radius-sm);border:1px solid var(--border);object-fit:contain;background:var(--bg-elevated);max-width:100%;max-height:200px}.ti-toolbar-btn:disabled{opacity:.35;cursor:default}.sidebar-mobile-actions{flex-direction:column;gap:4px;margin-top:16px;padding-top:8px;display:flex}.sidebar-divider{background:var(--border);height:1px;margin:4px 0}.toast-overlay{z-index:500;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#00000080;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.toast-card{background:var(--bg-frosted);-webkit-backdrop-filter:blur(40px)saturate(1.6);backdrop-filter:blur(40px)saturate(1.6);border:1px solid var(--border-hover);border-radius:var(--radius-lg);flex-direction:column;width:100%;max-width:640px;max-height:70vh;display:flex;overflow:hidden;box-shadow:0 16px 48px #0006}.toast-card-enter{animation:sheetIn .25s var(--ease)}.toast-card-exit{animation:sheetOut .2s var(--ease) forwards}@keyframes sheetOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.94)}}.toast-card-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;display:flex}.toast-card-title{color:var(--text-primary);align-items:center;font-size:13px;font-weight:600;display:flex}.toast-card-close{border-radius:var(--radius-md);border:1px solid var(--border);width:32px;height:32px;color:var(--text-dim);cursor:pointer;transition:all var(--duration) var(--ease);background:0 0;flex-shrink:0;justify-content:center;align-items:center;font-size:14px;display:flex}.toast-card-close:hover{background:var(--bg-glass-hover);color:var(--text-primary)}.toast-card-body{flex:1;padding:16px;overflow-y:auto}.toast-card-content{color:var(--text-secondary);white-space:pre-wrap;word-break:break-word;margin:0;font-family:SF Mono,Menlo,Monaco,monospace;font-size:12px;line-height:1.6}@media (width<=600px){.toast-overlay{align-items:flex-end;padding:0}.toast-card{border-radius:var(--radius-lg) var(--radius-lg) 0 0!important;max-width:100%!important;max-height:90vh!important}.toast-card-enter{animation:sheetUp .25s var(--ease)}.toast-card-exit{animation:sheetDown .2s var(--ease) forwards}@keyframes sheetDown{0%{transform:translateY(0)}to{transform:translateY(100%)}}.toast-card-header{padding:14px 16px}.toast-card-body{padding:12px}.toast-card-close{width:40px;height:40px;font-size:16px}}.sidebar-mobile-action-btn{width:100%;color:var(--text-primary);cursor:pointer;border-radius:var(--radius-sm);transition:all var(--duration) var(--ease);background:0 0;border:none;align-items:center;gap:8px;padding:12px 14px;font-family:inherit;font-size:14px;font-weight:500;display:flex}.sidebar-mobile-action-btn:hover{background:var(--bg-glass-hover)}.sidebar-mobile-action-btn.sign-out{color:var(--text-secondary)}.modal-overlay{z-index:50;background:#0000008c;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal-dialog{border-radius:var(--radius-md);border:1px solid var(--border);background:var(--bg-solid);width:100%;max-width:28rem;box-shadow:0 8px 32px #0006}.modal-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:10px 14px;display:flex}.modal-title{color:var(--text-primary);font-size:13px;font-weight:600}.modal-close-btn{border-radius:var(--radius-sm);width:28px;height:28px;color:var(--text-dim);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;transition:all .15s;display:flex}.modal-close-btn:hover{background:var(--bg-glass-hover);color:var(--text-secondary)}.modal-body{padding:12px 14px}.confirm-message{color:var(--text-secondary);margin:0;font-size:12px;line-height:1.5}.confirm-footer{justify-content:flex-end;gap:8px;padding-top:8px;display:flex}.confirm-btn-cancel{border-radius:var(--radius-sm);border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;background:0 0;align-items:center;padding:6px 14px;font-size:12px;transition:all .15s;display:inline-flex}.confirm-btn-cancel:hover{background:var(--bg-glass-hover);color:var(--text-primary)}.confirm-btn-primary{border-radius:var(--radius-sm);background:var(--accent-text);color:var(--bg-solid);cursor:pointer;border:none;align-items:center;padding:6px 14px;font-size:12px;font-weight:600;transition:all .15s;display:inline-flex}.confirm-btn-primary:hover{opacity:.9}.confirm-btn-danger{border-radius:var(--radius-sm);background:var(--error);color:#fff;cursor:pointer;border:none;align-items:center;padding:6px 14px;font-size:12px;font-weight:600;transition:all .15s;display:inline-flex}.confirm-btn-danger:hover{background:#ef4444}.prompt-form{flex-direction:column;gap:10px;display:flex}.prompt-label{display:block}.prompt-label-text{color:var(--text-secondary);margin-bottom:6px;font-size:11px;display:block}.prompt-input{border-radius:var(--radius-sm);border:1px solid var(--input-border);background:var(--input-bg);width:100%;color:var(--text-primary);outline:none;padding:8px 10px;font-family:inherit;font-size:13px;transition:border-color .15s}.prompt-input:focus{border-color:var(--input-focus-border)}
@@ -12,7 +12,7 @@ Error generating stack: `+e.message+`
12
12
  `))!==-1;){let e=d.slice(0,n);d=d.slice(n+2);for(let t of e.split(`
13
13
  `))if(t.startsWith(`data: `))try{let e=JSON.parse(t.slice(6));await r(e)}catch{}}}}catch(e){if(s||n?.aborted)break;let t=e instanceof Error?e.message:String(e);if(t.startsWith(`SSE terminated:`)||(c++,o>0&&c>o))break;let r=On(c);a?.({attempt:c,delayMs:r,reason:t});try{await kn(r,n)}catch{break}}i?.()}return u().catch(()=>{}),{close:()=>{s=!0,l.abort()}}}var jn=we((e,t)=>({pendingBySession:{},setPending:t=>e(e=>({pendingBySession:{...e.pendingBySession,[t.sessionId]:t}})),clearPending:(n,r)=>{let i=t().pendingBySession[n];i!==void 0&&(r!==void 0&&i.requestId!==r||e(e=>({pendingBySession:{...e.pendingBySession,[n]:void 0}})))}})),Mn=0,Nn=we(e=>({activeInteraction:void 0,commandRunning:!1,activeCommand:void 0,notifications:[],pushEvent:t=>{switch(t.type.replace(/^extension_ui_/,``)){case`select`:case`confirm`:case`input`:e({activeInteraction:t,commandRunning:!0});break;case`notify`:{let n=t,r=`ext-notif-${++Mn}`,i={id:r,message:n.message,type:n.notificationType,createdAt:Date.now()};e(e=>({notifications:[...e.notifications,i]})),setTimeout(()=>{e(e=>({notifications:e.notifications.filter(e=>e.id!==r)}))},8e3);break}case`done`:e({activeInteraction:void 0,commandRunning:!1,activeCommand:void 0});break}},clearInteraction:()=>{e({activeInteraction:void 0})},cancelCommand:()=>{e({activeInteraction:void 0,commandRunning:!1,activeCommand:void 0})},dismissNotification:t=>{e(e=>({notifications:e.notifications.filter(e=>e.id!==t)}))}})),Pn=`modulepreload`,Fn=function(e){return`/`+e},In={},Ln=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,new URL(`../../../src/node/plugins/importAnalysisBuild.ts`,import.meta.url)).href}r=o(t.map(t=>{if(t=Fn(t,n),t=s(t),t in In)return;In[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:Pn,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},Rn=[],zn=`pi-kot/active-project-id`,Bn=`pi-kot/active-session-id`;function Vn(){try{let e=window.location.hash.match(/^#\/project\/([^/]+)/);return e?e[1]:localStorage.getItem(zn)??void 0}catch{return}}function Hn(){try{let e=window.location.hash.match(/^#\/project\/[^/]+\/session\/([^/]+)/);return e?e[1]:localStorage.getItem(Bn)??void 0}catch{return}}var K=we((e,t)=>({projects:[],activeProjectId:Vn(),sessions:[],projectSessions:{},archivedSessions:{},activeSessionId:Hn(),messages:[],compactionsBySession:{},compactionEndCountBySession:{},queuedBySession:{},streamState:{text:``,activeToolName:void 0,isStreaming:!1},loading:!1,error:void 0,sseClient:void 0,connectionState:`disconnected`,loadProjects:async()=>{try{let{projects:n}=await qe(),r=t().activeProjectId;if(r!==void 0&&!n.some(e=>e.id===r)&&(r=void 0),r===void 0&&n.length>0&&(r=n[0].id),e({projects:n,activeProjectId:r}),r!==void 0){try{localStorage.setItem(zn,r)}catch{}await t().loadProjectSessions(r)}}catch(t){e({error:t instanceof Error?t.message:`Failed to load projects`})}},setActiveProject:async n=>{try{localStorage.setItem(zn,n),localStorage.removeItem(Bn)}catch{}e({activeProjectId:n,activeSessionId:void 0,messages:[]}),t().sseClient?.close(),e({sseClient:void 0,connectionState:`disconnected`}),await t().loadProjectSessions(n)},loadProjectSessions:async t=>{try{let{sessions:n}=await Le(t);e(e=>({projectSessions:{...e.projectSessions,[t]:n},sessions:n}))}catch(t){e({error:t instanceof Error?t.message:`Failed to load sessions`})}},refreshSessions:async()=>{let{activeProjectId:e}=t();e!==void 0&&await t().loadProjectSessions(e)},createAndActivate:async n=>{e({loading:!0,error:void 0});let r=n??t().activeProjectId??`default`;try{let n=await Ie({projectId:r}),i={sessionId:n.sessionId,projectId:n.projectId,isLive:!0,messageCount:0,lastActivityAt:n.createdAt,createdAt:n.createdAt};e(e=>({sessions:[i,...e.sessions],projectSessions:e.activeProjectId?{...e.projectSessions,[e.activeProjectId]:[i,...e.projectSessions[e.activeProjectId]??[]]}:e.projectSessions,activeSessionId:n.sessionId,messages:[],loading:!1}));try{localStorage.setItem(Bn,n.sessionId)}catch{}return t().connectSSE(n.sessionId),n.sessionId}catch(t){return e({loading:!1,error:t instanceof Error?t.message:`Failed to create session`}),``}},setActiveSession:async n=>{try{localStorage.setItem(Bn,n)}catch{}t().sseClient?.close(),e({activeSessionId:n,messages:[],streamState:{text:``,activeToolName:void 0,isStreaming:!1},queuedBySession:{},error:void 0});try{let{messages:t}=await Re(n);e({messages:t})}catch(t){e({error:t instanceof Error?t.message:`Failed to load messages`})}t().connectSSE(n)},connectSSE:n=>{t().sseClient?.close(),e({connectionState:`connecting`});let r=``,i,a=()=>{i=void 0;let t=r;t.length!==0&&(r=``,e(e=>({streamState:{...e.streamState,text:e.streamState.text+t}})))},o=!1,s=!1,c=()=>{if(o){s=!0;return}o=!0,Re(n).then(({messages:t})=>{e({messages:t})}).catch(()=>{}).finally(()=>{s?(s=!1,o=!1,c()):o=!1})};t().loadCompactions(n),e({sseClient:An(n,{onEvent:o=>{switch(e({connectionState:`connected`}),o.type){case`snapshot`:e({messages:o.messages??[],streamState:{text:``,activeToolName:void 0,isStreaming:o.isStreaming===!0}});break;case`agent_start`:e({streamState:{text:``,activeToolName:void 0,isStreaming:!0}});break;case`message_update`:{let e=o.assistantMessageEvent;if(e?.type===`text_delta`){let t=e.delta;t&&(r+=t,i===void 0&&(i=requestAnimationFrame(a)))}break}case`tool_execution_start`:e(e=>({streamState:{...e.streamState,activeToolName:o.toolName}})),c();break;case`tool_execution_end`:e(e=>({streamState:{...e.streamState,activeToolName:void 0}})),c();break;case`ask_user_question`:{let{requestId:e,questions:t}=o;jn.getState().setPending({requestId:e,sessionId:n,questions:t});break}case`ask_user_question_cancelled`:{let{requestId:e}=o;jn.getState().clearPending(n,e);break}case`compaction_start`:e(e=>({streamState:{...e.streamState,activeToolName:`compacting…`}}));break;case`compaction_end`:e(e=>({streamState:{...e.streamState,activeToolName:void 0},compactionEndCountBySession:{...e.compactionEndCountBySession,[n]:(e.compactionEndCountBySession[n]??0)+1}})),t().loadCompactions(n).then(()=>{c()});break;case`queued`:{let t=o,r=Array.isArray(t.steering)?t.steering.filter(e=>typeof e==`string`):[],i=Array.isArray(t.followUp)?t.followUp.filter(e=>typeof e==`string`):[];e(e=>({queuedBySession:{...e.queuedBySession,[n]:r.length===0&&i.length===0?void 0:{steering:r,followUp:i}}}));break}case`agent_end`:{i!==void 0&&(cancelAnimationFrame(i),i=void 0),a();let t=o;if(t.willRetry===!0)e(e=>({streamState:{...e.streamState,text:``}}));else{let r=t.errorMessage;if(!r){let e=t.messages;if(e&&e.length>0){let t=e[e.length-1];t?.role===`assistant`&&t?.stopReason===`error`&&(r=t.errorMessage)}}e({streamState:{text:``,activeToolName:void 0,isStreaming:!1}}),r&&e({error:r}),e(e=>({queuedBySession:{...e.queuedBySession,[n]:void 0}}))}c();break}case`message_end`:i!==void 0&&(cancelAnimationFrame(i),i=void 0),a(),e(e=>({streamState:{...e.streamState,text:``}})),c();break;case`auto_retry_start`:{let t=o;e({error:`Model error — retrying (${t.attempt??`?`}/${t.maxAttempts??`?`}): ${t.errorMessage??`Unknown error`}`});break}case`auto_retry_end`:{let t=o;if(t.success===!0)e({error:void 0});else{let n=t.finalError;n&&e({error:n})}break}case`tool_result`:i!==void 0&&(cancelAnimationFrame(i),i=void 0),a(),c();break;case`extension_ui_select`:case`extension_ui_confirm`:case`extension_ui_input`:case`extension_ui_notify`:case`extension_ui_done`:Nn.getState().pushEvent(o);break;case`exec_start`:{let{command:t,excludeFromContext:n}=o,r={role:`bashExecution`,command:t,output:``,exitCode:void 0,cancelled:!1,truncated:!1,excludeFromContext:n,timestamp:Date.now(),_pendingExec:!0};e(e=>({messages:[...e.messages,r]}));break}case`exec_update`:{let{output:t}=o;e(e=>{let n=[...e.messages],r=n[n.length-1];return r&&r._pendingExec&&(r.output=(r.output??``)+t),{messages:n}});break}case`exec_end`:{let{exitCode:n,output:r,error:i,cancelled:a}=o;e(e=>{let t=[...e.messages],o=t[t.length-1];if(o&&o._pendingExec){let e=o;a?(e.cancelled=!0,e.exitCode=n):(e.exitCode=n,e.cancelled=!1),e.output=i?`${e.output}${r}\n\n[error] ${i}`:r,e.truncated=!1}return{messages:t}});let s=t().activeSessionId;s!==void 0&&setTimeout(()=>t().reloadMessages(s),500);break}}},onReconnect:({attempt:t})=>{e({connectionState:`connecting`}),t>1&&e({error:`Reconnecting... (attempt ${t})`})},onClose:()=>{e({connectionState:`disconnected`})}})})},sendPrompt:async(n,r)=>{let{activeSessionId:i}=t();if(i===void 0)return;let a=[{type:`text`,text:n}];if(r!==void 0&&r.length>0)for(let e of r)a.push({type:`image`,mimeType:e.mimeType,data:`data:${e.mimeType};base64,${e.data}`,__blobUrl:!0});e(e=>({messages:[...e.messages,{role:`user`,content:a}]}));try{await Be(i,n,void 0,r)}catch(t){e(e=>({error:t instanceof Error?t.message:`Failed to send prompt`,streamState:e.streamState.isStreaming?{text:``,activeToolName:void 0,isStreaming:!1}:e.streamState}))}},sendSteer:async(n,r)=>{let{activeSessionId:i}=t();if(i===void 0)return;let a=[{type:`text`,text:n}];if(r!==void 0&&r.length>0)for(let e of r)a.push({type:`image`,mimeType:e.mimeType,data:`data:${e.mimeType};base64,${e.data}`,__blobUrl:!0});e(e=>({messages:[...e.messages,{role:`user`,content:a,metadata:{steer:!0}}]}));try{await He(i,n,`steer`,r)}catch(t){e(e=>({error:t instanceof Error?t.message:`Failed to steer`,streamState:e.streamState.isStreaming?{text:``,activeToolName:void 0,isStreaming:!1}:e.streamState}))}},abort:async()=>{let{activeSessionId:n}=t();if(n!==void 0){e({streamState:{text:``,activeToolName:void 0,isStreaming:!1}});try{await Ve(n)}catch{}}},renameSession:async(t,n)=>{try{await Ue(t,n),e(e=>({sessions:e.sessions.map(e=>e.sessionId===t?{...e,name:n}:e),projectSessions:Object.fromEntries(Object.entries(e.projectSessions).map(([e,r])=>[e,r.map(e=>e.sessionId===t?{...e,name:n}:e)]))}))}catch(t){e({error:t instanceof Error?t.message:`Failed to rename session`})}},archiveSession:async n=>{let r=t(),i=r.sessions.find(e=>e.sessionId===n)?.projectId??r.activeProjectId;try{await We(n,i);let r=t().activeSessionId===n;if(e(e=>({sessions:e.sessions.filter(e=>e.sessionId!==n),projectSessions:i?{...e.projectSessions,[i]:(e.projectSessions[i]??[]).filter(e=>e.sessionId!==n)}:e.projectSessions,activeSessionId:e.activeSessionId===n?void 0:e.activeSessionId})),r)try{localStorage.removeItem(Bn)}catch{}}catch(t){e({error:t instanceof Error?t.message:`Failed to archive session`})}},unarchiveSession:async(n,r)=>{try{await Ge(n,r),await t().loadProjectSessions(r),await t().loadArchivedSessions(r)}catch(t){e({error:t instanceof Error?t.message:`Failed to restore session`})}},loadArchivedSessions:async t=>{try{let{listArchivedSessions:n}=await Ln(async()=>{let{listArchivedSessions:e}=await Promise.resolve().then(()=>Ee);return{listArchivedSessions:e}},void 0),{sessions:r}=await n(t);e(e=>({archivedSessions:{...e.archivedSessions,[t]:r}}))}catch{}},loadCompactions:async t=>{try{let{compactions:n}=await kt(t);e(e=>({compactionsBySession:{...e.compactionsBySession,[t]:n}}))}catch{}},compactAndReload:async e=>{let n=await Ot(e);return await t().loadCompactions(e),await t().reloadMessages(e),n},reloadMessages:async t=>{try{let{getSessionMessages:n}=await Ln(async()=>{let{getSessionMessages:e}=await Promise.resolve().then(()=>Ee);return{getSessionMessages:e}},void 0),{messages:r}=await n(t);e({messages:r})}catch{}},clearError:()=>e({error:void 0}),deleteProject:async n=>{try{await Ye(n);let r=t();if(r.activeProjectId===n)try{localStorage.removeItem(zn),localStorage.removeItem(Bn)}catch{}let i=r.activeProjectId,a=r.sessions;r.activeProjectId===n&&(i=void 0,a=[]),t().sseClient?.close();let{projects:o}=await qe();if(i===void 0&&o.length>0){i=o[0].id;let{sessions:e}=await Le(i);a=e}e({projects:o,activeProjectId:i,activeSessionId:void 0,messages:[],sessions:a,projectSessions:i?{[i]:a}:{},sseClient:void 0,streamState:{text:``,activeToolName:void 0,isStreaming:!1},error:void 0})}catch(t){e({error:t instanceof Error?t.message:`Failed to delete project`})}},getSessionTree:async e=>{let{getSessionTree:t}=await Ln(async()=>{let{getSessionTree:e}=await Promise.resolve().then(()=>Ee);return{getSessionTree:e}},void 0);return t(e)},navigateSession:async(e,t,n)=>{let{navigateSession:r}=await Ln(async()=>{let{navigateSession:e}=await Promise.resolve().then(()=>Ee);return{navigateSession:e}},void 0);return r(e,t,n)},forkSession:async(e,t)=>{let{forkSession:n}=await Ln(async()=>{let{forkSession:e}=await Promise.resolve().then(()=>Ee);return{forkSession:e}},void 0);return n(e,t)}})),Un={rewind:!1,subagents:!1,orchestration:!1,loading:!0},Wn=null,Gn=null;function Kn(){let[e,t]=(0,U.useState)(Wn??Un),n=(0,U.useRef)(!0);return(0,U.useEffect)(()=>{if(n.current=!0,Wn!==null){t(Wn);return}return Gn===null&&(Gn=Gt().then(e=>{let r=e.detected.some(e=>e.name.includes(`rewind`)||e.name.includes(`pi-rewind`)||e.name.includes(`@ayulab/pi-rewind`)),i=e.recommended.some(e=>e.installed&&(e.id===`pi-rewind`||e.name===`@ayulab/pi-rewind`)),a=e.detected.some(e=>e.agentTypes?.includes(`scout`)||e.name.includes(`subagents`))||e.recommended.some(e=>e.installed&&(e.id===`pi-subagents`||e.id===`@ifi/pi-extension-subagents`)),o=e.detected.some(e=>e.name.includes(`orchestr`))||e.recommended.some(e=>e.id===`pi-orchestration`&&e.installed);Wn={rewind:r||i,subagents:a,orchestration:o,loading:!1},n.current&&t(Wn)}).catch(()=>{Wn={rewind:!1,subagents:!1,orchestration:!1,loading:!1},n.current&&t(Wn)})),Gn.then(()=>{n.current&&Wn!==null&&t(Wn)}),()=>{n.current=!1}},[]),e}function qn(e,t){if(e.match(/^[a-z]+:\/\//i))return e;if(e.match(/^\/\//))return window.location.protocol+e;if(e.match(/^[a-z]+:/i))return e;let n=document.implementation.createHTMLDocument(),r=n.createElement(`base`),i=n.createElement(`a`);return n.head.appendChild(r),n.body.appendChild(i),t&&(r.href=t),i.href=e,i.href}var Jn=(()=>{let e=0,t=()=>`0000${(Math.random()*36**4<<0).toString(36)}`.slice(-4);return()=>(e+=1,`u${t()}${e}`)})();function Yn(e){let t=[];for(let n=0,r=e.length;n<r;n++)t.push(e[n]);return t}var Xn=null;function Zn(e={}){return Xn||(e.includeStyleProperties?(Xn=e.includeStyleProperties,Xn):(Xn=Yn(window.getComputedStyle(document.documentElement)),Xn))}function Qn(e,t){let n=(e.ownerDocument.defaultView||window).getComputedStyle(e).getPropertyValue(t);return n?parseFloat(n.replace(`px`,``)):0}function $n(e){let t=Qn(e,`border-left-width`),n=Qn(e,`border-right-width`);return e.clientWidth+t+n}function er(e){let t=Qn(e,`border-top-width`),n=Qn(e,`border-bottom-width`);return e.clientHeight+t+n}function tr(e,t={}){return{width:t.width||$n(e),height:t.height||er(e)}}function nr(){let e,t;try{t=process}catch{}let n=t&&t.env?t.env.devicePixelRatio:null;return n&&(e=parseInt(n,10),Number.isNaN(e)&&(e=1)),e||window.devicePixelRatio||1}var rr=16384;function ir(e){(e.width>rr||e.height>rr)&&(e.width>rr&&e.height>rr?e.width>e.height?(e.height*=rr/e.width,e.width=rr):(e.width*=rr/e.height,e.height=rr):e.width>rr?(e.height*=rr/e.width,e.width=rr):(e.width*=rr/e.height,e.height=rr))}function ar(e){return new Promise((t,n)=>{let r=new Image;r.onload=()=>{r.decode().then(()=>{requestAnimationFrame(()=>t(r))})},r.onerror=n,r.crossOrigin=`anonymous`,r.decoding=`async`,r.src=e})}async function or(e){return Promise.resolve().then(()=>new XMLSerializer().serializeToString(e)).then(encodeURIComponent).then(e=>`data:image/svg+xml;charset=utf-8,${e}`)}async function sr(e,t,n){let r=`http://www.w3.org/2000/svg`,i=document.createElementNS(r,`svg`),a=document.createElementNS(r,`foreignObject`);return i.setAttribute(`width`,`${t}`),i.setAttribute(`height`,`${n}`),i.setAttribute(`viewBox`,`0 0 ${t} ${n}`),a.setAttribute(`width`,`100%`),a.setAttribute(`height`,`100%`),a.setAttribute(`x`,`0`),a.setAttribute(`y`,`0`),a.setAttribute(`externalResourcesRequired`,`true`),i.appendChild(a),a.appendChild(e),or(i)}var cr=(e,t)=>{if(e instanceof t)return!0;let n=Object.getPrototypeOf(e);return n===null?!1:n.constructor.name===t.name||cr(n,t)};function lr(e){let t=e.getPropertyValue(`content`);return`${e.cssText} content: '${t.replace(/'|"/g,``)}';`}function ur(e,t){return Zn(t).map(t=>`${t}: ${e.getPropertyValue(t)}${e.getPropertyPriority(t)?` !important`:``};`).join(` `)}function dr(e,t,n,r){let i=`.${e}:${t}`,a=n.cssText?lr(n):ur(n,r);return document.createTextNode(`${i}{${a}}`)}function fr(e,t,n,r){let i=window.getComputedStyle(e,n),a=i.getPropertyValue(`content`);if(a===``||a===`none`)return;let o=Jn();try{t.className=`${t.className} ${o}`}catch{return}let s=document.createElement(`style`);s.appendChild(dr(o,n,i,r)),t.appendChild(s)}function pr(e,t,n){fr(e,t,`:before`,n),fr(e,t,`:after`,n)}var mr=`application/font-woff`,hr=`image/jpeg`,gr={woff:mr,woff2:mr,ttf:`application/font-truetype`,eot:`application/vnd.ms-fontobject`,png:`image/png`,jpg:hr,jpeg:hr,gif:`image/gif`,tiff:`image/tiff`,svg:`image/svg+xml`,webp:`image/webp`};function _r(e){let t=/\.([^./]*?)$/g.exec(e);return t?t[1]:``}function vr(e){return gr[_r(e).toLowerCase()]||``}function yr(e){return e.split(/,/)[1]}function br(e){return e.search(/^(data:)/)!==-1}function xr(e,t){return`data:${t};base64,${e}`}async function Sr(e,t,n){let r=await fetch(e,t);if(r.status===404)throw Error(`Resource "${r.url}" not found`);let i=await r.blob();return new Promise((e,t)=>{let a=new FileReader;a.onerror=t,a.onloadend=()=>{try{e(n({res:r,result:a.result}))}catch(e){t(e)}},a.readAsDataURL(i)})}var Cr={};function wr(e,t,n){let r=e.replace(/\?.*/,``);return n&&(r=e),/ttf|otf|eot|woff2?/i.test(r)&&(r=r.replace(/.*\//,``)),t?`[${t}]${r}`:r}async function Tr(e,t,n){let r=wr(e,t,n.includeQueryParams);if(Cr[r]!=null)return Cr[r];n.cacheBust&&(e+=(/\?/.test(e)?`&`:`?`)+new Date().getTime());let i;try{i=xr(await Sr(e,n.fetchRequestInit,({res:e,result:n})=>(t||=e.headers.get(`Content-Type`)||``,yr(n))),t)}catch(t){i=n.imagePlaceholder||``;let r=`Failed to fetch resource: ${e}`;t&&(r=typeof t==`string`?t:t.message),r&&console.warn(r)}return Cr[r]=i,i}async function Er(e){let t=e.toDataURL();return t===`data:,`?e.cloneNode(!1):ar(t)}async function Dr(e,t){if(e.currentSrc){let t=document.createElement(`canvas`),n=t.getContext(`2d`);return t.width=e.clientWidth,t.height=e.clientHeight,n?.drawImage(e,0,0,t.width,t.height),ar(t.toDataURL())}let n=e.poster;return ar(await Tr(n,vr(n),t))}async function Or(e,t){try{if(e?.contentDocument?.body)return await Rr(e.contentDocument.body,t,!0)}catch{}return e.cloneNode(!1)}async function kr(e,t){return cr(e,HTMLCanvasElement)?Er(e):cr(e,HTMLVideoElement)?Dr(e,t):cr(e,HTMLIFrameElement)?Or(e,t):e.cloneNode(jr(e))}var Ar=e=>e.tagName!=null&&e.tagName.toUpperCase()===`SLOT`,jr=e=>e.tagName!=null&&e.tagName.toUpperCase()===`SVG`;async function Mr(e,t,n){if(jr(t))return t;let r=[];return r=Ar(e)&&e.assignedNodes?Yn(e.assignedNodes()):cr(e,HTMLIFrameElement)&&e.contentDocument?.body?Yn(e.contentDocument.body.childNodes):Yn((e.shadowRoot??e).childNodes),r.length===0||cr(e,HTMLVideoElement)||await r.reduce((e,r)=>e.then(()=>Rr(r,n)).then(e=>{e&&t.appendChild(e)}),Promise.resolve()),t}function Nr(e,t,n){let r=t.style;if(!r)return;let i=window.getComputedStyle(e);i.cssText?(r.cssText=i.cssText,r.transformOrigin=i.transformOrigin):Zn(n).forEach(n=>{let a=i.getPropertyValue(n);n===`font-size`&&a.endsWith(`px`)&&(a=`${Math.floor(parseFloat(a.substring(0,a.length-2)))-.1}px`),cr(e,HTMLIFrameElement)&&n===`display`&&a===`inline`&&(a=`block`),n===`d`&&t.getAttribute(`d`)&&(a=`path(${t.getAttribute(`d`)})`),r.setProperty(n,a,i.getPropertyPriority(n))})}function Pr(e,t){cr(e,HTMLTextAreaElement)&&(t.innerHTML=e.value),cr(e,HTMLInputElement)&&t.setAttribute(`value`,e.value)}function Fr(e,t){if(cr(e,HTMLSelectElement)){let n=t,r=Array.from(n.children).find(t=>e.value===t.getAttribute(`value`));r&&r.setAttribute(`selected`,``)}}function Ir(e,t,n){return cr(t,Element)&&(Nr(e,t,n),pr(e,t,n),Pr(e,t),Fr(e,t)),t}async function Lr(e,t){let n=e.querySelectorAll?e.querySelectorAll(`use`):[];if(n.length===0)return e;let r={};for(let i=0;i<n.length;i++){let a=n[i].getAttribute(`xlink:href`);if(a){let n=e.querySelector(a),i=document.querySelector(a);!n&&i&&!r[a]&&(r[a]=await Rr(i,t,!0))}}let i=Object.values(r);if(i.length){let t=`http://www.w3.org/1999/xhtml`,n=document.createElementNS(t,`svg`);n.setAttribute(`xmlns`,t),n.style.position=`absolute`,n.style.width=`0`,n.style.height=`0`,n.style.overflow=`hidden`,n.style.display=`none`;let r=document.createElementNS(t,`defs`);n.appendChild(r);for(let e=0;e<i.length;e++)r.appendChild(i[e]);e.appendChild(n)}return e}async function Rr(e,t,n){return!n&&t.filter&&!t.filter(e)?null:Promise.resolve(e).then(e=>kr(e,t)).then(n=>Mr(e,n,t)).then(n=>Ir(e,n,t)).then(e=>Lr(e,t))}var zr=/url\((['"]?)([^'"]+?)\1\)/g,Br=/url\([^)]+\)\s*format\((["']?)([^"']+)\1\)/g,Vr=/src:\s*(?:url\([^)]+\)\s*format\([^)]+\)[,;]\s*)+/g;function Hr(e){let t=e.replace(/([.*+?^${}()|\[\]\/\\])/g,`\\$1`);return RegExp(`(url\\(['"]?)(${t})(['"]?\\))`,`g`)}function Ur(e){let t=[];return e.replace(zr,(e,n,r)=>(t.push(r),e)),t.filter(e=>!br(e))}async function Wr(e,t,n,r,i){try{let a=n?qn(t,n):t,o=vr(t),s;return s=i?xr(await i(a),o):await Tr(a,o,r),e.replace(Hr(t),`$1${s}$3`)}catch{}return e}function Gr(e,{preferredFontFormat:t}){return t?e.replace(Vr,e=>{for(;;){let[n,,r]=Br.exec(e)||[];if(!r)return``;if(r===t)return`src: ${n};`}}):e}function Kr(e){return e.search(zr)!==-1}async function qr(e,t,n){if(!Kr(e))return e;let r=Gr(e,n);return Ur(r).reduce((e,r)=>e.then(e=>Wr(e,r,t,n)),Promise.resolve(r))}async function Jr(e,t,n){let r=t.style?.getPropertyValue(e);if(r){let i=await qr(r,null,n);return t.style.setProperty(e,i,t.style.getPropertyPriority(e)),!0}return!1}async function Yr(e,t){await Jr(`background`,e,t)||await Jr(`background-image`,e,t),await Jr(`mask`,e,t)||await Jr(`-webkit-mask`,e,t)||await Jr(`mask-image`,e,t)||await Jr(`-webkit-mask-image`,e,t)}async function Xr(e,t){let n=cr(e,HTMLImageElement);if(!(n&&!br(e.src))&&!(cr(e,SVGImageElement)&&!br(e.href.baseVal)))return;let r=n?e.src:e.href.baseVal,i=await Tr(r,vr(r),t);await new Promise((r,a)=>{e.onload=r,e.onerror=t.onImageErrorHandler?(...e)=>{try{r(t.onImageErrorHandler(...e))}catch(e){a(e)}}:a;let o=e;o.decode&&=r,o.loading===`lazy`&&(o.loading=`eager`),n?(e.srcset=``,e.src=i):e.href.baseVal=i})}async function Zr(e,t){let n=Yn(e.childNodes).map(e=>Qr(e,t));await Promise.all(n).then(()=>e)}async function Qr(e,t){cr(e,Element)&&(await Yr(e,t),await Xr(e,t),await Zr(e,t))}function $r(e,t){let{style:n}=e;t.backgroundColor&&(n.backgroundColor=t.backgroundColor),t.width&&(n.width=`${t.width}px`),t.height&&(n.height=`${t.height}px`);let r=t.style;return r!=null&&Object.keys(r).forEach(e=>{n[e]=r[e]}),e}var ei={};async function ti(e){let t=ei[e];return t??(t={url:e,cssText:await(await fetch(e)).text()},ei[e]=t,t)}async function ni(e,t){let n=e.cssText,r=/url\(["']?([^"')]+)["']?\)/g,i=(n.match(/url\([^)]+\)/g)||[]).map(async i=>{let a=i.replace(r,`$1`);return a.startsWith(`https://`)||(a=new URL(a,e.url).href),Sr(a,t.fetchRequestInit,({result:e})=>(n=n.replace(i,`url(${e})`),[i,e]))});return Promise.all(i).then(()=>n)}function ri(e){if(e==null)return[];let t=[],n=e.replace(/(\/\*[\s\S]*?\*\/)/gi,``),r=RegExp(`((@.*?keyframes [\\s\\S]*?){([\\s\\S]*?}\\s*?)})`,`gi`);for(;;){let e=r.exec(n);if(e===null)break;t.push(e[0])}n=n.replace(r,``);let i=/@import[\s\S]*?url\([^)]*\)[\s\S]*?;/gi,a=RegExp(`((\\s*?(?:\\/\\*[\\s\\S]*?\\*\\/)?\\s*?@media[\\s\\S]*?){([\\s\\S]*?)}\\s*?})|(([\\s\\S]*?){([\\s\\S]*?)})`,`gi`);for(;;){let e=i.exec(n);if(e===null){if(e=a.exec(n),e===null)break;i.lastIndex=a.lastIndex}else a.lastIndex=i.lastIndex;t.push(e[0])}return t}async function ii(e,t){let n=[],r=[];return e.forEach(n=>{if(`cssRules`in n)try{Yn(n.cssRules||[]).forEach((e,i)=>{if(e.type===CSSRule.IMPORT_RULE){let a=i+1,o=e.href,s=ti(o).then(e=>ni(e,t)).then(e=>ri(e).forEach(e=>{try{n.insertRule(e,e.startsWith(`@import`)?a+=1:n.cssRules.length)}catch(t){console.error(`Error inserting rule from remote css`,{rule:e,error:t})}})).catch(e=>{console.error(`Error loading remote css`,e.toString())});r.push(s)}})}catch(i){let a=e.find(e=>e.href==null)||document.styleSheets[0];n.href!=null&&r.push(ti(n.href).then(e=>ni(e,t)).then(e=>ri(e).forEach(e=>{a.insertRule(e,a.cssRules.length)})).catch(e=>{console.error(`Error loading remote stylesheet`,e)})),console.error(`Error inlining remote css file`,i)}}),Promise.all(r).then(()=>(e.forEach(e=>{if(`cssRules`in e)try{Yn(e.cssRules||[]).forEach(e=>{n.push(e)})}catch(t){console.error(`Error while reading CSS rules from ${e.href}`,t)}}),n))}function ai(e){return e.filter(e=>e.type===CSSRule.FONT_FACE_RULE).filter(e=>Kr(e.style.getPropertyValue(`src`)))}async function oi(e,t){if(e.ownerDocument==null)throw Error(`Provided element is not within a Document`);return ai(await ii(Yn(e.ownerDocument.styleSheets),t))}function si(e){return e.trim().replace(/["']/g,``)}function ci(e){let t=new Set;function n(e){(e.style.fontFamily||getComputedStyle(e).fontFamily).split(`,`).forEach(e=>{t.add(si(e))}),Array.from(e.children).forEach(e=>{e instanceof HTMLElement&&n(e)})}return n(e),t}async function li(e,t){let n=await oi(e,t),r=ci(e);return(await Promise.all(n.filter(e=>r.has(si(e.style.fontFamily))).map(e=>{let n=e.parentStyleSheet?e.parentStyleSheet.href:null;return qr(e.cssText,n,t)}))).join(`
14
14
  `)}async function ui(e,t){let n=t.fontEmbedCSS==null?t.skipFonts?null:await li(e,t):t.fontEmbedCSS;if(n){let t=document.createElement(`style`),r=document.createTextNode(n);t.appendChild(r),e.firstChild?e.insertBefore(t,e.firstChild):e.appendChild(t)}}async function di(e,t={}){let{width:n,height:r}=tr(e,t),i=await Rr(e,t,!0);return await ui(i,t),await Qr(i,t),$r(i,t),await sr(i,n,r)}async function fi(e,t={}){let{width:n,height:r}=tr(e,t),i=await ar(await di(e,t)),a=document.createElement(`canvas`),o=a.getContext(`2d`),s=t.pixelRatio||nr(),c=t.canvasWidth||n,l=t.canvasHeight||r;return a.width=c*s,a.height=l*s,t.skipAutoScale||ir(a),a.style.width=`${c}`,a.style.height=`${l}`,t.backgroundColor&&(o.fillStyle=t.backgroundColor,o.fillRect(0,0,a.width,a.height)),o.drawImage(i,0,0,a.width,a.height),a}async function pi(e,t={}){return(await fi(e,t)).toDataURL()}var q=N(),mi=/<proposed_plan>([\s\S]*?)<\/proposed_plan>/gi,hi=/^light|clean|terracotta|sage$/i;function gi({className:e,children:t,...n}){let[r,i]=(0,U.useState)(()=>{if(typeof window>`u`)return!1;try{let e=document.documentElement.getAttribute(`data-theme`);if(e&&hi.test(e))return!0}catch{}return window.matchMedia?.(`(prefers-color-scheme: light)`)?.matches??!1});(0,U.useEffect)(()=>{let e=document.documentElement,t=()=>{let t=e.getAttribute(`data-theme`);i(!!(t&&hi.test(t)))};t();let n=window.matchMedia?.(`(prefers-color-scheme: dark)`),r=()=>t();n?.addEventListener?.(`change`,r);let a=new MutationObserver(r);return e&&a.observe(e,{attributes:!0,attributeFilter:[`data-theme`]}),()=>{n?.removeEventListener?.(`change`,r),a.disconnect()}},[]);let a=/language-([\w-]+)/.exec(e??``),o=String(t??``).replace(/\n$/,``);if(!(a!==null||o.includes(`
15
- `)))return(0,q.jsx)(`code`,{className:`inline-code`,...n,children:t});let s=a?.[1]??`text`,c=r?O.vsLight:O.vsDark,l=r?`#f8fafc`:`#0d0d0d`;return(0,q.jsxs)(`div`,{className:`code-block-wrap`,children:[(0,q.jsx)(_i,{code:o}),(0,q.jsx)(k,{code:o,language:s,theme:c,children:({style:e,tokens:t,getLineProps:n,getTokenProps:r})=>(0,q.jsx)(`pre`,{className:`code-block`,style:{...e,background:l},children:t.map((e,t)=>(0,q.jsx)(`div`,{...n({line:e}),children:e.map((e,t)=>(0,q.jsx)(`span`,{...r({token:e})},t))},t))})})]})}function _i({code:e}){let[t,n]=(0,U.useState)(!1),i=()=>{n(!0),setTimeout(()=>n(!1),1200)},a=e=>{try{let t=document.createElement(`textarea`);t.value=e,t.style.position=`fixed`,t.style.opacity=`0`,document.body.appendChild(t),t.select(),document.execCommand(`copy`),document.body.removeChild(t),i()}catch{}};return(0,q.jsx)(`button`,{type:`button`,onClick:()=>{if(!e)return;let t=navigator.clipboard?.writeText?.bind(navigator.clipboard);t===void 0?a(e):t(e).then(i).catch(()=>a(e))},className:`code-copy-btn`,title:`Copy code block`,"aria-label":`Copy code block`,children:t?(0,q.jsx)(r,{size:13}):(0,q.jsx)(o,{size:13})})}var vi={h1:({children:e})=>(0,q.jsx)(`h1`,{className:`md-h1`,children:e}),h2:({children:e})=>(0,q.jsx)(`h2`,{className:`md-h2`,children:e}),h3:({children:e})=>(0,q.jsx)(`h3`,{className:`md-h3`,children:e}),h4:({children:e})=>(0,q.jsx)(`h4`,{className:`md-h4`,children:e}),p:({children:e})=>(0,q.jsx)(`p`,{className:`md-p`,children:e}),ul:({children:e})=>(0,q.jsx)(`ul`,{className:`md-ul`,children:e}),ol:({children:e})=>(0,q.jsx)(`ol`,{className:`md-ol`,children:e}),li:({children:e})=>(0,q.jsx)(`li`,{className:`md-li`,children:e}),blockquote:({children:e})=>(0,q.jsx)(`blockquote`,{className:`md-blockquote`,children:e}),hr:()=>(0,q.jsx)(`hr`,{className:`md-hr`}),a:({href:e,children:t})=>(0,q.jsx)(`a`,{href:e,target:`_blank`,rel:`noopener noreferrer`,className:`md-link`,children:t}),table:({children:e})=>(0,q.jsx)(`div`,{className:`table-wrapper`,children:(0,q.jsx)(`table`,{className:`md-table`,children:e})}),th:({children:e})=>(0,q.jsx)(`th`,{className:`md-th`,children:e}),td:({children:e})=>(0,q.jsx)(`td`,{className:`md-td`,children:e}),strong:({children:e})=>(0,q.jsx)(`strong`,{children:e}),em:({children:e})=>(0,q.jsx)(`em`,{children:e}),code:gi,pre:({children:e})=>(0,q.jsx)(q.Fragment,{children:e})};function yi({content:e}){return(0,q.jsxs)(`div`,{style:{border:`1px solid var(--accent-subtle, rgba(255,255,255,0.12))`,borderRadius:`var(--radius-md, 10px)`,padding:`16px 20px`,margin:`16px 0`,background:`var(--bg-glass-strong, rgba(255,255,255,0.04))`},children:[(0,q.jsx)(`div`,{style:{fontSize:`11px`,fontWeight:600,textTransform:`uppercase`,letterSpacing:`0.08em`,color:`var(--text-dim, rgba(255,255,255,0.3))`,marginBottom:`12px`},children:`Proposed Plan`}),(0,q.jsx)(xi,{text:e})]})}function bi(e){let t=[],n=0,r;for(mi.lastIndex=0;(r=mi.exec(e))!==null;)r.index>n&&t.push(e.slice(n,r.index)),t.push((0,q.jsx)(yi,{content:r[1].trim()},r.index)),n=r.index+r[0].length;return n<e.length&&t.push(e.slice(n)),t.length>0?t:[e]}function xi({text:e,chatStyleBreaks:t}){let n=t?[P,M,j]:[P,M],r=(0,U.useMemo)(()=>bi(e),[e]);return r.length===1&&typeof r[0]==`string`?(0,q.jsx)(`div`,{className:`md-root text-sm break-words`,style:{overflowWrap:`anywhere`},children:(0,q.jsx)(A,{remarkPlugins:n,rehypePlugins:[I],components:vi,children:e})}):(0,q.jsx)(`div`,{className:`md-root text-sm break-words`,style:{overflowWrap:`anywhere`},children:r.map((e,t)=>typeof e==`string`?(0,q.jsx)(A,{remarkPlugins:n,rehypePlugins:[I],components:vi,children:e},t):e)})}var Si=96;function Ci(e){return e.scrollHeight-e.scrollTop-e.clientHeight<=Si}function wi(e){let t=e;for(;t instanceof HTMLElement;){let e=window.getComputedStyle(t);if(/(auto|scroll)/.test(e.overflowY))return t;t=t.parentElement}}function Ti({event:e,renderArchived:t}){let[n,r]=(0,U.useState)(!1),a=new Date(e.timestamp),o=`${a.toLocaleDateString()} ${a.toLocaleTimeString()}`,s=e.archivedMessages.length,u=e.summary.replace(/^(Goal|Summary):\s*/i,``),d=(0,U.useRef)(null),f=e=>{let t=wi(d.current),n=t!==void 0&&Ci(t);r(e),e&&n&&window.requestAnimationFrame(()=>{t.scrollTop=t.scrollHeight})},p=e=>(0,q.jsxs)(`button`,{type:`button`,onClick:()=>f(!1),style:{display:`flex`,width:`100%`,alignItems:`center`,justifyContent:`center`,gap:`4px`,padding:`6px 8px`,fontSize:`10px`,textTransform:`uppercase`,letterSpacing:`0.05em`,color:`var(--text-dim)`,background:`transparent`,border:`none`,borderRadius:`var(--radius-sm)`,cursor:`pointer`},title:`Collapse archived messages`,"aria-label":`Collapse compaction summary from ${e}`,children:[(0,q.jsx)(i,{size:11}),`Collapse`]});return(0,q.jsxs)(`div`,{ref:d,style:{margin:`8px 0`,borderRadius:`var(--radius-sm)`,border:`1px solid var(--border)`,background:`var(--bg-glass)`,overflow:`hidden`},children:[n&&(0,q.jsxs)(`div`,{style:{borderBottom:`1px solid var(--border)`,padding:`12px`},children:[p(`top`),e.summary.length>0&&(0,q.jsx)(`div`,{style:{margin:`12px 0`,padding:`8px 10px`,borderRadius:`var(--radius-sm)`,background:`var(--bg-glass-strong)`,fontSize:`11px`,lineHeight:`1.6`,color:`var(--text-secondary)`,whiteSpace:`pre-wrap`},children:u}),(0,q.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`10px`,opacity:.85},children:t?.()}),(0,q.jsx)(`div`,{style:{marginTop:`12px`},children:p(`bottom`)})]}),(0,q.jsxs)(`button`,{type:`button`,onClick:()=>f(!n),style:{display:`flex`,width:`100%`,alignItems:`center`,gap:`8px`,padding:`8px 12px`,textAlign:`left`,fontSize:`12px`,color:`var(--text-secondary)`,background:`transparent`,border:`none`,cursor:`pointer`,transition:`background var(--duration) var(--ease)`},onMouseEnter:e=>{e.currentTarget.style.background=`var(--bg-glass-hover)`},onMouseLeave:e=>{e.currentTarget.style.background=`transparent`},title:n?`Hide archived messages`:`Expand ${s} archived message${s===1?``:`s`}`,children:[n?(0,q.jsx)(c,{size:12,style:{color:`var(--accent)`}}):(0,q.jsx)(E,{size:12,style:{color:`var(--accent)`}}),(0,q.jsx)(l,{size:12,style:{color:`var(--accent)`,flexShrink:0}}),(0,q.jsx)(`span`,{style:{flex:1,fontWeight:600,color:`var(--text-primary)`,fontFeatureSettings:`'tnum'`},children:`Compacted`}),(0,q.jsxs)(`span`,{style:{fontFamily:`monospace`,fontSize:`10px`,color:`var(--text-dim)`,fontVariantNumeric:`tabular-nums`,whiteSpace:`nowrap`},children:[`-`,s,` msg · -`,e.tokensBefore.toLocaleString(),` tok`,e.estimatedTokensAfter!==void 0&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`span`,{style:{margin:`0 2px`,color:`var(--border)`},children:`→`}),`~`,e.estimatedTokensAfter.toLocaleString(),` tok`]})]}),(0,q.jsx)(`span`,{style:{fontSize:`10px`,color:`var(--text-dim)`,fontVariantNumeric:`tabular-nums`,whiteSpace:`nowrap`},children:o})]}),!n&&e.summary.length>0&&(0,q.jsx)(`div`,{style:{padding:`0 12px 8px 12px`,fontSize:`11px`,lineHeight:`1.4`,color:`var(--text-dim)`,overflow:`hidden`,whiteSpace:`nowrap`,textOverflow:`ellipsis`},children:u})]})}var J=`pi-kot/sticky-user-header`,Ei=`pi-kot/show-token-usage`,Di=`pi-kot/compress-images`;function Oi(){if(typeof window>`u`)return!1;try{let e=localStorage.getItem(J);return e===null?!1:e===`true`}catch{return!1}}function ki(){if(typeof window>`u`)return!1;try{let e=localStorage.getItem(Ei);return e===null?!1:e===`true`}catch{return!1}}function Ai(){if(typeof window>`u`)return!0;try{let e=localStorage.getItem(Di);return e===null?!0:e===`true`}catch{return!0}}var ji=we(e=>({stickyUserHeader:Oi(),showTokenUsage:ki(),setStickyUserHeader:t=>{try{localStorage.setItem(J,String(t))}catch{}e({stickyUserHeader:t})},setShowTokenUsage:t=>{try{localStorage.setItem(Ei,String(t))}catch{}e({showTokenUsage:t})},compressImages:Ai(),setCompressImages:t=>{try{localStorage.setItem(Di,String(t))}catch{}e({compressImages:t})}}));function Mi(e){let t=new Map,n=new Set,r=new Set,i=new Set;for(let t of e)if(!(t.role!==`assistant`||!Array.isArray(t.content)))for(let e of t.content){if(!Pi(e))continue;let t=Fi(e);t!==void 0&&i.add(t)}for(let a of e)a.role!==`toolResult`||typeof a.toolCallId!=`string`||i.has(a.toolCallId)&&(t.set(a.toolCallId,a),n.add(a.toolCallId),r.add(a));return{toolResultsById:t,pairedIds:n,pairedResultMessages:r}}function Ni(e,t){return e.pairedResultMessages.has(t)}function Pi(e){return e?.type===`toolCall`}function Fi(e){return typeof e.id==`string`&&e.id.length>0?e.id:void 0}var Ii=new Set([`edit`,`write`]),Li=1/0;function Ri(e){return Pi(e)&&!Ii.has(String(e.name??``))}function zi(e){return e?.type===`thinking`}function Bi(e){return e?.type===`text`&&typeof e.text==`string`&&e.text.trim().length===0}function Vi(e){return Pi(e)}function Hi(e){let t=[];for(;e.length>0;){let n=e[e.length-1];if(Bi(n)){e.pop();continue}if(!zi(n))break;t.unshift({kind:`thinking`,block:n}),e.pop()}return t}function Ui(e){return e.filter(e=>e.kind===`tool`).length}function Wi(e,t){let n=[],r=[],i=!1,a=()=>{r.length!==0&&(n.push({kind:`assistant`,content:r}),r=[])},o=0;for(;o<e.length;){let s=e[o];if(!Vi(s)){r.push(s),o+=1;continue}let c=Hi(r);if(a(),i=!0,!Ri(s)){let e=Fi(s);n.push({kind:`tools`,batchable:!1,entries:[...c,{kind:`tool`,block:s,result:e===void 0?void 0:t?.get(e)}]}),o+=1;continue}let l=[...c];for(;o<e.length&&Ui(l)<Li;){let n=e[o];if(n===void 0)break;if(zi(n)){l.push({kind:`thinking`,block:n}),o+=1;continue}if(Bi(n)){o+=1;continue}if(!Ri(n))break;let r=Fi(n);l.push({kind:`tool`,block:n,result:r===void 0?void 0:t?.get(r)}),o+=1}n.push({kind:`tools`,batchable:!0,entries:l})}return a(),i?n:void 0}function Gi(e,t){let n=typeof t==`object`&&t?t:void 0;if(e===`bash`&&typeof n?.command==`string`)return n.command;if((e===`read`||e===`write`||e===`edit`)&&typeof n?.path==`string`)return n.path;if(e===`grep`&&typeof n?.pattern==`string`||e===`glob`&&typeof n?.pattern==`string`)return n.pattern;if(e===`web_search`&&typeof n?.query==`string`)return n.query;if(e===`web_fetch`&&typeof n?.url==`string`)return n.url}function Ki(e){return typeof e==`string`?e:Array.isArray(e)?e.map(e=>e.type===`text`?e.text??``:``).join(``):String(e??``)}function qi(e){return Array.isArray(e)?e.filter(e=>e.type===`image`).map(e=>({mimeType:e.mimeType??`image/png`,data:e.data??``,__blobUrl:e.__blobUrl})):[]}function Ji({images:e}){return e.length===0?null:(0,q.jsx)(`div`,{className:`user-images-row`,children:e.map((e,t)=>(0,q.jsx)(`img`,{src:e.__blobUrl?e.data:`data:${e.mimeType};base64,${e.data}`,alt:`Attached image ${t+1}`,className:`user-image-thumb`,loading:`lazy`,onError:e=>{e.target.style.display=`none`}},t))})}(0,U.memo)(function({messages:e}){return(0,q.jsx)(q.Fragment,{children:e.map((e,t)=>{let n=e,r=Ki(n.content),i=qi(n.content),a=n.role===`user`;return(0,q.jsx)(`div`,{style:{borderRadius:`var(--radius-sm)`,padding:`8px 10px`,fontSize:`12px`,lineHeight:`1.5`,color:`var(--text-primary)`,background:a?`var(--user-bubble)`:`transparent`,border:a?`1px solid var(--user-bubble-border)`:`none`,whiteSpace:a?`pre-wrap`:void 0},children:a?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(Ji,{images:i}),r]}):(0,q.jsx)(xi,{text:r})},t)})})});function Yi(e){let t=e.toLowerCase();return t.includes(`bash`)||t.includes(`shell`)||t.includes(`exec`)||t.includes(`run`)?`⚡`:t.includes(`read`)||t.includes(`cat`)||t.includes(`view`)||t.includes(`get`)?`📄`:t.includes(`write`)||t.includes(`create`)||t.includes(`save`)||t.includes(`put`)?`✏️`:t.includes(`edit`)||t.includes(`patch`)||t.includes(`update`)||t.includes(`replace`)?`🔧`:t.includes(`search`)||t.includes(`grep`)||t.includes(`find`)||t.includes(`ls`)||t.includes(`list`)?`🔍`:t.includes(`delete`)||t.includes(`remove`)||t.includes(`rm`)?`🗑️`:t.includes(`move`)||t.includes(`rename`)||t.includes(`mv`)?`📦`:t.includes(`git`)||t.includes(`commit`)||t.includes(`branch`)?`🌿`:t.includes(`web`)||t.includes(`fetch`)||t.includes(`http`)||t.includes(`url`)?`🌐`:t.includes(`test`)||t.includes(`spec`)?`🧪`:t.includes(`ask`)||t.includes(`question`)||t.includes(`prompt`)?`💬`:`🔩`}function Xi({text:e}){let[t,n]=(0,U.useState)(!1);return(0,q.jsxs)(`details`,{open:t,className:`thinking-block`,children:[(0,q.jsxs)(`summary`,{onClick:e=>{e.preventDefault(),n(e=>!e)},children:[t?`▾`:`▸`,` Thinking…`]}),t&&(0,q.jsx)(`pre`,{className:`thinking-content`,children:e})]})}function Zi({block:e,result:t}){let[n,r]=(0,U.useState)(!1),i=String(e.name??`tool`),a=e.arguments??e.input??{},o=typeof a==`string`?a:JSON.stringify(a,null,2),s=t?.isError===!0,c=t===void 0,l=(Array.isArray(t?.content)?t?.content:[]).filter(e=>{let t=e;return t.type===`text`&&typeof t.text==`string`}).map(e=>e.text).join(`
15
+ `)))return(0,q.jsx)(`code`,{className:`inline-code`,...n,children:t});let s=a?.[1]??`text`,c=r?O.vsLight:O.vsDark,l=r?`#f8fafc`:`#0d0d0d`;return(0,q.jsxs)(`div`,{className:`code-block-wrap`,children:[(0,q.jsx)(_i,{code:o}),(0,q.jsx)(k,{code:o,language:s,theme:c,children:({style:e,tokens:t,getLineProps:n,getTokenProps:r})=>(0,q.jsx)(`pre`,{className:`code-block`,style:{...e,background:l},children:t.map((e,t)=>(0,q.jsx)(`div`,{...n({line:e}),children:e.map((e,t)=>(0,q.jsx)(`span`,{...r({token:e})},t))},t))})})]})}function _i({code:e}){let[t,n]=(0,U.useState)(!1),i=()=>{n(!0),setTimeout(()=>n(!1),1200)},a=e=>{try{let t=document.createElement(`textarea`);t.value=e,t.style.position=`fixed`,t.style.opacity=`0`,document.body.appendChild(t),t.select(),document.execCommand(`copy`),document.body.removeChild(t),i()}catch{}};return(0,q.jsx)(`button`,{type:`button`,onClick:()=>{if(!e)return;let t=navigator.clipboard?.writeText?.bind(navigator.clipboard);t===void 0?a(e):t(e).then(i).catch(()=>a(e))},className:`code-copy-btn`,title:`Copy code block`,"aria-label":`Copy code block`,children:t?(0,q.jsx)(r,{size:13}):(0,q.jsx)(o,{size:13})})}var vi={h1:({children:e})=>(0,q.jsx)(`h1`,{className:`md-h1`,children:e}),h2:({children:e})=>(0,q.jsx)(`h2`,{className:`md-h2`,children:e}),h3:({children:e})=>(0,q.jsx)(`h3`,{className:`md-h3`,children:e}),h4:({children:e})=>(0,q.jsx)(`h4`,{className:`md-h4`,children:e}),p:({children:e})=>(0,q.jsx)(`p`,{className:`md-p`,children:e}),ul:({children:e})=>(0,q.jsx)(`ul`,{className:`md-ul`,children:e}),ol:({children:e})=>(0,q.jsx)(`ol`,{className:`md-ol`,children:e}),li:({children:e})=>(0,q.jsx)(`li`,{className:`md-li`,children:e}),blockquote:({children:e})=>(0,q.jsx)(`blockquote`,{className:`md-blockquote`,children:e}),hr:()=>(0,q.jsx)(`hr`,{className:`md-hr`}),a:({href:e,children:t})=>(0,q.jsx)(`a`,{href:e,target:`_blank`,rel:`noopener noreferrer`,className:`md-link`,children:t}),table:({children:e})=>(0,q.jsx)(`div`,{className:`table-wrapper`,children:(0,q.jsx)(`table`,{className:`md-table`,children:e})}),th:({children:e})=>(0,q.jsx)(`th`,{className:`md-th`,children:e}),td:({children:e})=>(0,q.jsx)(`td`,{className:`md-td`,children:e}),strong:({children:e})=>(0,q.jsx)(`strong`,{className:`md-strong`,children:e}),em:({children:e})=>(0,q.jsx)(`em`,{children:e}),code:gi,pre:({children:e})=>(0,q.jsx)(q.Fragment,{children:e})};function yi({content:e}){return(0,q.jsxs)(`div`,{style:{border:`1px solid var(--accent-subtle, rgba(255,255,255,0.12))`,borderRadius:`var(--radius-md, 10px)`,padding:`16px 20px`,margin:`16px 0`,background:`var(--bg-glass-strong, rgba(255,255,255,0.04))`},children:[(0,q.jsx)(`div`,{style:{fontSize:`11px`,fontWeight:600,textTransform:`uppercase`,letterSpacing:`0.08em`,color:`var(--text-dim, rgba(255,255,255,0.3))`,marginBottom:`12px`},children:`Proposed Plan`}),(0,q.jsx)(xi,{text:e})]})}function bi(e){let t=[],n=0,r;for(mi.lastIndex=0;(r=mi.exec(e))!==null;)r.index>n&&t.push(e.slice(n,r.index)),t.push((0,q.jsx)(yi,{content:r[1].trim()},r.index)),n=r.index+r[0].length;return n<e.length&&t.push(e.slice(n)),t.length>0?t:[e]}function xi({text:e,chatStyleBreaks:t}){let n=t?[P,M,j]:[P,M],r=(0,U.useMemo)(()=>bi(e),[e]);return r.length===1&&typeof r[0]==`string`?(0,q.jsx)(`div`,{className:`md-root text-sm break-words`,style:{overflowWrap:`anywhere`},children:(0,q.jsx)(A,{remarkPlugins:n,rehypePlugins:[I],components:vi,children:e})}):(0,q.jsx)(`div`,{className:`md-root text-sm break-words`,style:{overflowWrap:`anywhere`},children:r.map((e,t)=>typeof e==`string`?(0,q.jsx)(A,{remarkPlugins:n,rehypePlugins:[I],components:vi,children:e},t):e)})}var Si=96;function Ci(e){return e.scrollHeight-e.scrollTop-e.clientHeight<=Si}function wi(e){let t=e;for(;t instanceof HTMLElement;){let e=window.getComputedStyle(t);if(/(auto|scroll)/.test(e.overflowY))return t;t=t.parentElement}}function Ti({event:e,renderArchived:t}){let[n,r]=(0,U.useState)(!1),a=new Date(e.timestamp),o=`${a.toLocaleDateString()} ${a.toLocaleTimeString()}`,s=e.archivedMessages.length,u=e.summary.replace(/^(Goal|Summary):\s*/i,``),d=(0,U.useRef)(null),f=e=>{let t=wi(d.current),n=t!==void 0&&Ci(t);r(e),e&&n&&window.requestAnimationFrame(()=>{t.scrollTop=t.scrollHeight})},p=e=>(0,q.jsxs)(`button`,{type:`button`,onClick:()=>f(!1),style:{display:`flex`,width:`100%`,alignItems:`center`,justifyContent:`center`,gap:`4px`,padding:`6px 8px`,fontSize:`10px`,textTransform:`uppercase`,letterSpacing:`0.05em`,color:`var(--text-dim)`,background:`transparent`,border:`none`,borderRadius:`var(--radius-sm)`,cursor:`pointer`},title:`Collapse archived messages`,"aria-label":`Collapse compaction summary from ${e}`,children:[(0,q.jsx)(i,{size:11}),`Collapse`]});return(0,q.jsxs)(`div`,{ref:d,style:{margin:`8px 0`,borderRadius:`var(--radius-sm)`,border:`1px solid var(--border)`,background:`var(--bg-glass)`,overflow:`hidden`},children:[n&&(0,q.jsxs)(`div`,{style:{borderBottom:`1px solid var(--border)`,padding:`12px`},children:[p(`top`),e.summary.length>0&&(0,q.jsx)(`div`,{style:{margin:`12px 0`,padding:`8px 10px`,borderRadius:`var(--radius-sm)`,background:`var(--bg-glass-strong)`,fontSize:`11px`,lineHeight:`1.6`,color:`var(--text-secondary)`,whiteSpace:`pre-wrap`},children:u}),(0,q.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`10px`,opacity:.85},children:t?.()}),(0,q.jsx)(`div`,{style:{marginTop:`12px`},children:p(`bottom`)})]}),(0,q.jsxs)(`button`,{type:`button`,onClick:()=>f(!n),style:{display:`flex`,width:`100%`,alignItems:`center`,gap:`8px`,padding:`8px 12px`,textAlign:`left`,fontSize:`12px`,color:`var(--text-secondary)`,background:`transparent`,border:`none`,cursor:`pointer`,transition:`background var(--duration) var(--ease)`},onMouseEnter:e=>{e.currentTarget.style.background=`var(--bg-glass-hover)`},onMouseLeave:e=>{e.currentTarget.style.background=`transparent`},title:n?`Hide archived messages`:`Expand ${s} archived message${s===1?``:`s`}`,children:[n?(0,q.jsx)(c,{size:12,style:{color:`var(--accent)`}}):(0,q.jsx)(E,{size:12,style:{color:`var(--accent)`}}),(0,q.jsx)(l,{size:12,style:{color:`var(--accent)`,flexShrink:0}}),(0,q.jsx)(`span`,{style:{flex:1,fontWeight:600,color:`var(--text-primary)`,fontFeatureSettings:`'tnum'`},children:`Compacted`}),(0,q.jsxs)(`span`,{style:{fontFamily:`monospace`,fontSize:`10px`,color:`var(--text-dim)`,fontVariantNumeric:`tabular-nums`,whiteSpace:`nowrap`},children:[`-`,s,` msg · -`,e.tokensBefore.toLocaleString(),` tok`,e.estimatedTokensAfter!==void 0&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`span`,{style:{margin:`0 2px`,color:`var(--border)`},children:`→`}),`~`,e.estimatedTokensAfter.toLocaleString(),` tok`]})]}),(0,q.jsx)(`span`,{style:{fontSize:`10px`,color:`var(--text-dim)`,fontVariantNumeric:`tabular-nums`,whiteSpace:`nowrap`},children:o})]}),!n&&e.summary.length>0&&(0,q.jsx)(`div`,{style:{padding:`0 12px 8px 12px`,fontSize:`11px`,lineHeight:`1.4`,color:`var(--text-dim)`,overflow:`hidden`,whiteSpace:`nowrap`,textOverflow:`ellipsis`},children:u})]})}var J=`pi-kot/sticky-user-header`,Ei=`pi-kot/show-token-usage`,Di=`pi-kot/compress-images`;function Oi(){if(typeof window>`u`)return!1;try{let e=localStorage.getItem(J);return e===null?!1:e===`true`}catch{return!1}}function ki(){if(typeof window>`u`)return!1;try{let e=localStorage.getItem(Ei);return e===null?!1:e===`true`}catch{return!1}}function Ai(){if(typeof window>`u`)return!0;try{let e=localStorage.getItem(Di);return e===null?!0:e===`true`}catch{return!0}}var ji=we(e=>({stickyUserHeader:Oi(),showTokenUsage:ki(),setStickyUserHeader:t=>{try{localStorage.setItem(J,String(t))}catch{}e({stickyUserHeader:t})},setShowTokenUsage:t=>{try{localStorage.setItem(Ei,String(t))}catch{}e({showTokenUsage:t})},compressImages:Ai(),setCompressImages:t=>{try{localStorage.setItem(Di,String(t))}catch{}e({compressImages:t})}}));function Mi(e){let t=new Map,n=new Set,r=new Set,i=new Set;for(let t of e)if(!(t.role!==`assistant`||!Array.isArray(t.content)))for(let e of t.content){if(!Pi(e))continue;let t=Fi(e);t!==void 0&&i.add(t)}for(let a of e)a.role!==`toolResult`||typeof a.toolCallId!=`string`||i.has(a.toolCallId)&&(t.set(a.toolCallId,a),n.add(a.toolCallId),r.add(a));return{toolResultsById:t,pairedIds:n,pairedResultMessages:r}}function Ni(e,t){return e.pairedResultMessages.has(t)}function Pi(e){return e?.type===`toolCall`}function Fi(e){return typeof e.id==`string`&&e.id.length>0?e.id:void 0}var Ii=new Set([`edit`,`write`]),Li=1/0;function Ri(e){return Pi(e)&&!Ii.has(String(e.name??``))}function zi(e){return e?.type===`thinking`}function Bi(e){return e?.type===`text`&&typeof e.text==`string`&&e.text.trim().length===0}function Vi(e){return Pi(e)}function Hi(e){let t=[];for(;e.length>0;){let n=e[e.length-1];if(Bi(n)){e.pop();continue}if(!zi(n))break;t.unshift({kind:`thinking`,block:n}),e.pop()}return t}function Ui(e){return e.filter(e=>e.kind===`tool`).length}function Wi(e,t){let n=[],r=[],i=!1,a=()=>{r.length!==0&&(n.push({kind:`assistant`,content:r}),r=[])},o=0;for(;o<e.length;){let s=e[o];if(!Vi(s)){r.push(s),o+=1;continue}let c=Hi(r);if(a(),i=!0,!Ri(s)){let e=Fi(s);n.push({kind:`tools`,batchable:!1,entries:[...c,{kind:`tool`,block:s,result:e===void 0?void 0:t?.get(e)}]}),o+=1;continue}let l=[...c];for(;o<e.length&&Ui(l)<Li;){let n=e[o];if(n===void 0)break;if(zi(n)){l.push({kind:`thinking`,block:n}),o+=1;continue}if(Bi(n)){o+=1;continue}if(!Ri(n))break;let r=Fi(n);l.push({kind:`tool`,block:n,result:r===void 0?void 0:t?.get(r)}),o+=1}n.push({kind:`tools`,batchable:!0,entries:l})}return a(),i?n:void 0}function Gi(e,t){let n=typeof t==`object`&&t?t:void 0;if(e===`bash`&&typeof n?.command==`string`)return n.command;if((e===`read`||e===`write`||e===`edit`)&&typeof n?.path==`string`)return n.path;if(e===`grep`&&typeof n?.pattern==`string`||e===`glob`&&typeof n?.pattern==`string`)return n.pattern;if(e===`web_search`&&typeof n?.query==`string`)return n.query;if(e===`web_fetch`&&typeof n?.url==`string`)return n.url}function Ki(e){return typeof e==`string`?e:Array.isArray(e)?e.map(e=>e.type===`text`?e.text??``:``).join(``):String(e??``)}function qi(e){return Array.isArray(e)?e.filter(e=>e.type===`image`).map(e=>({mimeType:e.mimeType??`image/png`,data:e.data??``,__blobUrl:e.__blobUrl})):[]}function Ji({images:e}){return e.length===0?null:(0,q.jsx)(`div`,{className:`user-images-row`,children:e.map((e,t)=>(0,q.jsx)(`img`,{src:e.__blobUrl?e.data:`data:${e.mimeType};base64,${e.data}`,alt:`Attached image ${t+1}`,className:`user-image-thumb`,loading:`lazy`,onError:e=>{e.target.style.display=`none`}},t))})}(0,U.memo)(function({messages:e}){return(0,q.jsx)(q.Fragment,{children:e.map((e,t)=>{let n=e,r=Ki(n.content),i=qi(n.content),a=n.role===`user`;return(0,q.jsx)(`div`,{style:{borderRadius:`var(--radius-sm)`,padding:`8px 10px`,fontSize:`12px`,lineHeight:`1.5`,color:`var(--text-primary)`,background:a?`var(--user-bubble)`:`transparent`,border:a?`1px solid var(--user-bubble-border)`:`none`,whiteSpace:a?`pre-wrap`:void 0},children:a?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(Ji,{images:i}),r]}):(0,q.jsx)(xi,{text:r})},t)})})});function Yi(e){let t=e.toLowerCase();return t.includes(`bash`)||t.includes(`shell`)||t.includes(`exec`)||t.includes(`run`)?`⚡`:t.includes(`read`)||t.includes(`cat`)||t.includes(`view`)||t.includes(`get`)?`📄`:t.includes(`write`)||t.includes(`create`)||t.includes(`save`)||t.includes(`put`)?`✏️`:t.includes(`edit`)||t.includes(`patch`)||t.includes(`update`)||t.includes(`replace`)?`🔧`:t.includes(`search`)||t.includes(`grep`)||t.includes(`find`)||t.includes(`ls`)||t.includes(`list`)?`🔍`:t.includes(`delete`)||t.includes(`remove`)||t.includes(`rm`)?`🗑️`:t.includes(`move`)||t.includes(`rename`)||t.includes(`mv`)?`📦`:t.includes(`git`)||t.includes(`commit`)||t.includes(`branch`)?`🌿`:t.includes(`web`)||t.includes(`fetch`)||t.includes(`http`)||t.includes(`url`)?`🌐`:t.includes(`test`)||t.includes(`spec`)?`🧪`:t.includes(`ask`)||t.includes(`question`)||t.includes(`prompt`)?`💬`:`🔩`}function Xi({text:e}){let[t,n]=(0,U.useState)(!1);return(0,q.jsxs)(`details`,{open:t,className:`thinking-block`,children:[(0,q.jsxs)(`summary`,{onClick:e=>{e.preventDefault(),n(e=>!e)},children:[t?`▾`:`▸`,` Thinking…`]}),t&&(0,q.jsx)(`pre`,{className:`thinking-content`,children:e})]})}function Zi({block:e,result:t}){let[n,r]=(0,U.useState)(!1),i=String(e.name??`tool`),a=e.arguments??e.input??{},o=typeof a==`string`?a:JSON.stringify(a,null,2),s=t?.isError===!0,c=t===void 0,l=(Array.isArray(t?.content)?t?.content:[]).filter(e=>{let t=e;return t.type===`text`&&typeof t.text==`string`}).map(e=>e.text).join(`
16
16
  `),u=l.split(`
17
17
  `).find(e=>e.trim().length>0)??``,d=Gi(i,a),f=Yi(i);return(0,q.jsxs)(`div`,{className:`tool-timeline-node`,children:[(0,q.jsx)(`span`,{className:`tool-timeline-icon${c?` running`:s?` error`:` success`}`,"aria-hidden":`true`,children:f}),(0,q.jsxs)(`div`,{className:`tool-timeline-content`,children:[(0,q.jsxs)(`div`,{className:`tool-timeline-row`,children:[(0,q.jsx)(`span`,{className:`tool-timeline-name`,children:i}),d&&(0,q.jsx)(`span`,{className:`tool-timeline-arg`,title:d,children:d}),c&&(0,q.jsx)(`span`,{className:`tool-timeline-running`,"aria-label":`running`,children:`running…`}),!c&&l.length>0&&(0,q.jsx)(`button`,{type:`button`,className:`tool-timeline-details-btn`,onClick:()=>r(e=>!e),"aria-expanded":n,"aria-label":n?`Hide details`:`Show details`,children:n?`hide`:`details`})]}),!c&&!n&&u.length>0&&(0,q.jsxs)(`div`,{className:`tool-timeline-output-preview`,title:u,children:[s?`✖ `:`✓ `,u]}),n&&(0,q.jsxs)(`div`,{className:`tool-timeline-details`,children:[o.length>2&&(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`div`,{className:`tool-timeline-section-label`,children:`input`}),(0,q.jsx)(`pre`,{className:`tool-timeline-code`,children:o.length>2e3?o.slice(0,2e3)+`
18
18
  …(truncated)`:o})]}),l.length>0&&(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`div`,{className:`tool-timeline-section-label`,children:s?`error`:`output`}),(0,q.jsx)(`pre`,{className:`tool-timeline-code`,children:l.length>4e3?l.slice(0,4e3)+`
@@ -72,4 +72,4 @@ Error generating stack: `+e.message+`
72
72
  }
73
73
  `}),(0,q.jsx)(`button`,{className:`terminal-quick-key ${f?`active`:``}`,onPointerDown:e=>{e.preventDefault(),p(e=>!e)},children:`CTRL`}),(0,q.jsx)(`button`,{className:`terminal-quick-key`,onPointerDown:e=>{e.preventDefault(),y(``)},children:`^C`}),(0,q.jsx)(`button`,{className:`terminal-quick-key`,onPointerDown:e=>{e.preventDefault(),y(`\x1B`)},children:`ESC`}),(0,q.jsx)(`button`,{className:`terminal-quick-key`,onPointerDown:e=>{e.preventDefault(),y(` `)},children:`TAB`}),(0,q.jsx)(`div`,{style:{width:1,height:20,background:`var(--border-color, #313244)`,margin:`0 4px`}}),(0,q.jsx)(`button`,{className:`terminal-quick-key`,onPointerDown:e=>{e.preventDefault(),y(`\x1B[A`)},children:`↑`}),(0,q.jsx)(`button`,{className:`terminal-quick-key`,onPointerDown:e=>{e.preventDefault(),y(`\x1B[B`)},children:`↓`}),(0,q.jsx)(`button`,{className:`terminal-quick-key`,onPointerDown:e=>{e.preventDefault(),y(`\x1B[D`)},children:`←`}),(0,q.jsx)(`button`,{className:`terminal-quick-key`,onPointerDown:e=>{e.preventDefault(),y(`\x1B[C`)},children:`→`})]})]})}function Is({tab:e,visible:t,ctrlActive:n,setCtrlActive:r}){let i=(0,U.useRef)(null),a=(0,U.useRef)(n);return(0,U.useEffect)(()=>{a.current=n},[n]),(0,U.useEffect)(()=>{if(i.current===null)return;let t=i.current,n=ks.get(e.id);if(n!==void 0){try{let e=n.term.element;e!==void 0&&e.parentNode!==t?t.appendChild(e):n.term.open(t),As(t),Ms(n,!0)}catch{}let e=new ResizeObserver(()=>{try{Ms(n)}catch{}});e.observe(t);try{n.observer.disconnect()}catch{}return n.observer=e,requestAnimationFrame(()=>{try{Ms(n),n.term.focus()}catch{}}),()=>{try{e.disconnect()}catch{}}}let o=window.innerWidth<=600,s=new de({theme:{background:zs(`--bg-solid`,`#1e1e2e`),foreground:zs(`--text-primary`,`#cdd6f4`),cursor:zs(`--accent-text`,`#89b4fa`),selectionBackground:zs(`--accent`,`#89b4fa`),black:zs(`--ansi-black`,`#45475a`),red:zs(`--ansi-red`,`#f38ba8`),green:zs(`--ansi-green`,`#a6e3a1`),yellow:zs(`--ansi-yellow`,`#f9e2af`),blue:zs(`--ansi-blue`,`#89b4fa`),magenta:zs(`--ansi-magenta`,`#f5c2e7`),cyan:zs(`--ansi-cyan`,`#94e2d5`),white:zs(`--ansi-white`,`#bac2de`),brightBlack:zs(`--ansi-bright-black`,`#585b70`),brightRed:zs(`--ansi-bright-red`,`#f38ba8`),brightGreen:zs(`--ansi-bright-green`,`#a6e3a1`),brightYellow:zs(`--ansi-bright-yellow`,`#f9e2af`),brightBlue:zs(`--ansi-bright-blue`,`#89b4fa`),brightMagenta:zs(`--ansi-bright-magenta`,`#f5c2e7`),brightCyan:zs(`--ansi-bright-cyan`,`#94e2d5`),brightWhite:zs(`--ansi-bright-white`,`#a6adc8`)},fontFamily:`ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace`,fontSize:o?12:13,cursorBlink:!0,scrollback:5e3,allowTransparency:!0}),c=new fe;s.loadAddon(c),s.open(t),As(t),c.fit();let l={cols:s.cols,rows:s.rows},u=Ls(e.id,e.projectId,s,l,!1);s.onData(t=>{let n=ks.get(e.id)?.ws;if(n?.readyState===WebSocket.OPEN)if(a.current&&t.length===1){let e=t.charCodeAt(0),i=t;e>=97&&e<=122?i=String.fromCharCode(e-96):e>=65&&e<=90&&(i=String.fromCharCode(e-64)),n.send(JSON.stringify({type:`input`,data:i})),r(!1)}else n.send(JSON.stringify({type:`input`,data:t}))});let d=new ResizeObserver(()=>{try{let t=ks.get(e.id);if(t===void 0)return;Ms(t)}catch{}});d.observe(t);let f=null,p=null,m=null,h=0,g,_=!1,v,y=0,b=0,x=``,S=-1,C=0,w=[{minDist:0,interval:150},{minDist:100,interval:80},{minDist:200,interval:40}];function T(e){for(let t=w.length-1;t>=0;t--)if(e>=w[t].minDist)return t;return 0}function E(){v!==void 0&&(clearInterval(v),v=void 0),_=!1,x=``,S=-1,t.style.userSelect=``}function D(t,n){let r=t-y,i=n-b,a=Math.sqrt(r*r+i*i);if(a<15)return;let o=Math.abs(r)>Math.abs(i)?r>0?`right`:`left`:i>0?`down`:`up`,s=T(a);if(o!==x||s!==S){x=o,S=s,v!==void 0&&clearInterval(v);let t=o===`right`?`\x1B[C`:o===`left`?`\x1B[D`:o===`down`?`\x1B[B`:`\x1B[A`,n=ks.get(e.id)?.ws;n?.readyState===WebSocket.OPEN&&n.send(JSON.stringify({type:`input`,data:t})),v=setInterval(()=>{let n=ks.get(e.id)?.ws;n?.readyState===WebSocket.OPEN&&n.send(JSON.stringify({type:`input`,data:t}))},w[s].interval)}}let O=e=>{e.touches.length===1?(f=e.touches[0].clientX,p=e.touches[0].clientY,g!==void 0&&clearTimeout(g),g=setTimeout(()=>{y=f,b=p,_=!0,t.style.userSelect=`none`},150)):e.touches.length===2&&(g!==void 0&&(clearTimeout(g),g=void 0),m=(e.touches[0].clientY+e.touches[1].clientY)/2,h=0)},k=e=>{if(e.touches.length===2&&m!==null){g!==void 0&&(clearTimeout(g),g=void 0);let t=(e.touches[0].clientY+e.touches[1].clientY)/2,n=m-t;if(m=t,Math.abs(n)<1)return;e.preventDefault(),e.stopPropagation();let r=h+n,i=Math.trunc(r/16);h=r-i*16,i!==0&&s.scrollLines(i);return}if(e.touches.length===1&&_){e.preventDefault(),e.stopPropagation(),D(e.touches[0].clientX,e.touches[0].clientY);return}if(e.touches.length===1&&!_&&f!==null&&p!==null&&g!==void 0){let t=e.touches[0].clientX-f,n=e.touches[0].clientY-p;Math.max(Math.abs(t),Math.abs(n))>20&&(clearTimeout(g),g=void 0)}},A=t=>{if(t.changedTouches.length===3){E(),g!==void 0&&(clearTimeout(g),g=void 0),navigator.clipboard.readText().then(t=>{let n=ks.get(e.id)?.ws;n?.readyState===WebSocket.OPEN&&n.send(JSON.stringify({type:`input`,data:t}))}).catch(()=>{}),f=null,p=null,m=null;return}if(_){E(),f=null,p=null,m=null;return}if(g!==void 0){clearTimeout(g),g=void 0;let t=Date.now();if(f!==null&&p!==null)if(t-C<300){let t=ks.get(e.id)?.ws;t?.readyState===WebSocket.OPEN&&t.send(JSON.stringify({type:`input`,data:` `})),C=0}else C=t}s.focus(),f=null,p=null,m=null},j=()=>{E(),g!==void 0&&(clearTimeout(g),g=void 0),f=null,p=null,m=null};t.addEventListener(`touchstart`,O,{passive:!1}),t.addEventListener(`touchmove`,k,{passive:!1}),t.addEventListener(`touchend`,A),t.addEventListener(`touchcancel`,j);let M=e=>{e.preventDefault()},N=e=>{e.preventDefault()};return t.addEventListener(`contextmenu`,M),t.addEventListener(`selectstart`,N),t.style.setProperty(`-webkit-touch-callout`,`none`),ks.set(e.id,{term:s,fit:c,ws:u,observer:d,lastSize:l,reconnectAttempt:0,reconnectTimer:void 0,disposed:!1,ctrlActive:!1}),()=>{try{d.disconnect(),t.removeEventListener(`touchstart`,O),t.removeEventListener(`touchmove`,k),t.removeEventListener(`touchend`,A),t.removeEventListener(`touchcancel`,j),t.removeEventListener(`contextmenu`,M),t.removeEventListener(`selectstart`,N),t.style.setProperty(`-webkit-touch-callout`,``)}catch{}}},[e.id]),(0,U.useEffect)(()=>{if(!t)return;let n=ks.get(e.id);n!==void 0&&requestAnimationFrame(()=>{try{Ms(n),n.term.focus()}catch{}})},[t,e.id]),(0,q.jsx)(`div`,{ref:i,onClick:()=>{ks.get(e.id)?.term.focus()},className:`terminal-host`,style:{position:`absolute`,inset:0,visibility:t?`visible`:`hidden`,pointerEvents:t?`auto`:`none`,zIndex:+!!t,padding:`2px 4px 8px 4px`,touchAction:`none`,userSelect:`none`,WebkitUserSelect:`none`}})}function Ls(e,t,n,r,i){let a=window.location.protocol===`https:`?`wss`:`ws`,o=Me(),s=o===void 0?``:`&token=${encodeURIComponent(o)}`,c=`${a}://${window.location.host}/api/v1/terminal?projectId=${encodeURIComponent(t)}&tabId=${encodeURIComponent(e)}${s}`,l=new WebSocket(c);return l.binaryType=`arraybuffer`,l.onopen=()=>{let t=ks.get(e),n=t===void 0?r:{cols:t.term.cols,rows:t.term.rows};l.send(JSON.stringify({type:`resize`,cols:n.cols,rows:n.rows})),t!==void 0&&(t.lastSize=n,t.reconnectAttempt=0)},l.onmessage=e=>{if(typeof e.data==`string`)try{let t=JSON.parse(e.data);if(t.type===`open`){n.writeln(`\r\n\x1b[32mTerminal opened at ${t.cwd}\x1b[0m`);return}if(t.type===`exit`){n.writeln(`\r\n\x1b[31mProcess exited with code ${t.code}\x1b[0m`);return}if(t.type===`error`){n.writeln(`\r\n\x1b[31mError: ${t.message}\x1b[0m`);return}}catch{n.write(e.data)}else e.data instanceof ArrayBuffer&&n.write(new Uint8Array(e.data))},l.onclose=r=>{let i=ks.get(e);if(i===void 0||i.disposed)return;if(Ps(r.code)){let e=`[connection closed: ${String(r.code)}]`;r.code===4401?e=`[connection closed (4401): session expired — refresh the page after logging back in]`:r.code===4404&&(e=`[connection closed (4404): project no longer exists]`),n.write(`\r\n${e}\r\n`);return}let a=i.reconnectAttempt+1;i.reconnectAttempt=a;let o=Ns(a);n.write(`\r\n[connection lost (${String(r.code)}) — reconnecting in ${String(o/1e3)}s, attempt ${String(a)}]\r\n`),i.reconnectTimer=setTimeout(()=>{let r=ks.get(e);r===void 0||r.disposed||(r.reconnectTimer=void 0,r.ws=Ls(e,t,n,r.lastSize,!0))},o)},l}function Rs(e){let t=ks.get(e);if(t!==void 0){t.disposed=!0,t.reconnectTimer!==void 0&&clearTimeout(t.reconnectTimer),ks.delete(e);try{t.observer.disconnect()}catch{}try{(t.ws.readyState===WebSocket.OPEN||t.ws.readyState===WebSocket.CONNECTING)&&t.ws.close(1e3,`tab_closed`)}catch{}try{t.term.dispose()}catch{}}}function zs(e,t){return typeof document>`u`?t:getComputedStyle(document.documentElement).getPropertyValue(e).trim()||t}function Bs({sessionId:e}){let t=Nn(e=>e.activeInteraction);Nn(e=>e.clearInteraction);let n=Nn(e=>e.cancelCommand),r=Nn(e=>e.commandRunning),[i,a]=(0,U.useState)(``),[o,s]=(0,U.useState)(0),c=(0,U.useCallback)(()=>{let t=Nn.getState().activeInteraction;if(t&&`requestId`in t){let n=t.requestId;rn(e,n,``).catch(()=>{})}n()},[e,n]);if((0,U.useEffect)(()=>{a(``),s(0)},[t?.type]),t===void 0&&!r||!r&&t===void 0)return null;let l=t?.type??``;if(l===`extension_ui_select`){let n=t;return(0,q.jsx)(`div`,{className:`settings-overlay`,onClick:c,children:(0,q.jsxs)(`div`,{className:`settings-panel rewind-panel`,onClick:e=>e.stopPropagation(),style:{width:520,maxWidth:`92vw`,height:`auto`,maxHeight:`80vh`,display:`flex`,flexDirection:`column`},children:[(0,q.jsxs)(`header`,{className:`settings-header`,children:[(0,q.jsx)(`span`,{style:{fontSize:14,fontWeight:600},children:n.title}),(0,q.jsx)(`button`,{onClick:c,className:`settings-close`,title:`Cancel`,children:`✕`})]}),(0,q.jsx)(`div`,{className:`settings-body`,style:{padding:`12px 16px`,overflowY:`auto`,flex:1},children:(0,q.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:3},children:n.options.map((t,r)=>{let i=t.split(`
74
74
  `).filter(Boolean),a=i[0]??t,c=i.slice(1).join(` `).trim().replace(/\u001b\[[0-9;]*m/g,``);return(0,q.jsxs)(`button`,{onClick:async r=>{r.stopPropagation();try{await rn(e,n.requestId,t)}catch(e){console.error(`Extension UI respond failed:`,e)}},onMouseEnter:()=>s(r),style:{display:`flex`,width:`100%`,alignItems:`flex-start`,gap:10,padding:`8px 10px`,borderRadius:6,border:r===o?`1px solid var(--accent-border)`:`1px solid transparent`,background:r===o?`var(--accent-subtle)`:`none`,cursor:`pointer`,textAlign:`left`,fontSize:11,fontFamily:`inherit`,color:`var(--text-primary)`,transition:`background 0.15s`},children:[(0,q.jsx)(`span`,{style:{display:`inline-flex`,alignItems:`center`,justifyContent:`center`,width:22,height:22,borderRadius:`50%`,background:`var(--bg-glass-hover)`,color:`var(--text-dim)`,fontSize:10,fontWeight:700,flexShrink:0,marginTop:1},children:r+1}),(0,q.jsxs)(`div`,{style:{flex:1,minWidth:0},children:[(0,q.jsx)(`div`,{style:{fontSize:11,fontWeight:500,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},children:a}),c&&(0,q.jsx)(`div`,{style:{fontSize:10,color:`var(--text-dim)`,marginTop:2,fontFamily:`monospace`},children:c})]})]},r)})})}),(0,q.jsx)(`div`,{style:{padding:`8px 16px`,borderTop:`1px solid var(--border-color)`,fontSize:10,color:`var(--text-dim)`,textAlign:`center`},children:`Select an option above`})]})})}if(l===`extension_ui_confirm`){let n=t;return(0,q.jsx)(`div`,{className:`settings-overlay`,onClick:c,children:(0,q.jsxs)(`div`,{className:`settings-panel rewind-panel`,onClick:e=>e.stopPropagation(),style:{width:420,maxWidth:`92vw`,height:`auto`,minHeight:0},children:[(0,q.jsxs)(`header`,{className:`settings-header`,children:[(0,q.jsx)(`span`,{style:{fontSize:14,fontWeight:600},children:n.title}),(0,q.jsx)(`button`,{onClick:c,className:`settings-close`,title:`Cancel`,children:`✕`})]}),(0,q.jsxs)(`div`,{className:`settings-body`,style:{padding:`16px`},children:[(0,q.jsx)(`p`,{style:{fontSize:13,color:`var(--text-secondary)`,marginBottom:20,lineHeight:1.5},children:n.message}),(0,q.jsxs)(`div`,{style:{display:`flex`,gap:8,justifyContent:`flex-end`},children:[(0,q.jsx)(`button`,{onClick:async t=>{t.stopPropagation();try{await rn(e,n.requestId,!1)}catch(e){console.error(e)}},className:`settings-tab`,style:{padding:`6px 14px`,fontSize:12},children:`No`}),(0,q.jsx)(`button`,{onClick:async t=>{t.stopPropagation();try{await rn(e,n.requestId,!0)}catch(e){console.error(e)}},className:`settings-tab settings-tab-active`,style:{padding:`6px 14px`,fontSize:12},children:`Yes`})]})]})]})})}if(l===`extension_ui_input`){let n=t;return(0,q.jsx)(`div`,{className:`settings-overlay`,onClick:c,children:(0,q.jsxs)(`div`,{className:`settings-panel rewind-panel`,onClick:e=>e.stopPropagation(),style:{width:420,maxWidth:`92vw`,height:`auto`,minHeight:0},children:[(0,q.jsxs)(`header`,{className:`settings-header`,children:[(0,q.jsx)(`span`,{style:{fontSize:14,fontWeight:600},children:n.title}),(0,q.jsx)(`button`,{onClick:c,className:`settings-close`,title:`Cancel`,children:`✕`})]}),(0,q.jsxs)(`div`,{className:`settings-body`,style:{padding:`16px`},children:[(0,q.jsx)(`input`,{type:`text`,value:i,onChange:e=>a(e.target.value),placeholder:n.placeholder,autoFocus:!0,style:{width:`100%`,padding:`8px 10px`,fontSize:12,borderRadius:6,border:`1px solid var(--border-color)`,background:`var(--bg-glass)`,color:`var(--text-primary)`,outline:`none`,fontFamily:`inherit`,boxSizing:`border-box`,marginBottom:12},onKeyDown:async t=>{if(t.key===`Enter`){t.stopPropagation();try{await rn(e,n.requestId,i)}catch(e){console.error(e)}}t.key===`Escape`&&c()}}),(0,q.jsxs)(`div`,{style:{display:`flex`,gap:8,justifyContent:`flex-end`},children:[(0,q.jsx)(`button`,{onClick:c,className:`settings-tab`,style:{padding:`6px 14px`,fontSize:12},children:`Cancel`}),(0,q.jsx)(`button`,{onClick:async t=>{t.stopPropagation();try{await rn(e,n.requestId,i)}catch(e){console.error(e)}},className:`settings-tab settings-tab-active`,style:{padding:`6px 14px`,fontSize:12},children:`OK`})]})]})]})})}return r&&t===void 0?(0,q.jsx)(`div`,{className:`settings-overlay`,children:(0,q.jsx)(`div`,{className:`settings-panel rewind-panel`,onClick:e=>e.stopPropagation(),style:{width:300,maxWidth:`92vw`,height:`auto`,minHeight:0,textAlign:`center`},children:(0,q.jsx)(`div`,{className:`settings-body`,style:{padding:`20px`},children:(0,q.jsx)(`div`,{style:{fontSize:12,color:`var(--text-dim)`},children:`Extension command running…`})})})}):null}function Vs(){let e=Nn(e=>e.notifications),t=Nn(e=>e.dismissNotification),[n,r]=(0,U.useState)(null),[i,a]=(0,U.useState)(``),[o,s]=(0,U.useState)(`info`),[c,l]=(0,U.useState)(!1),u=e[e.length-1];(0,U.useEffect)(()=>{if(u&&u.id!==n){r(u.id),a(u.message),s(u.type),l(!0);let e=setTimeout(()=>{l(!1),setTimeout(()=>t(u.id),300)},15e3);return()=>clearTimeout(e)}},[u,n,t]);let d=()=>{n&&(l(!1),setTimeout(()=>{t(n),r(null)},250))};return!n||!i?null:(0,q.jsx)(`div`,{className:`toast-overlay`,onClick:d,children:(0,q.jsxs)(`div`,{className:`toast-card ${c?`toast-card-enter`:`toast-card-exit`}`,onClick:e=>e.stopPropagation(),role:`alert`,children:[(0,q.jsxs)(`header`,{className:`toast-card-header`,children:[(0,q.jsxs)(`span`,{className:`toast-card-title`,children:[o===`info`&&`ℹ️`,o===`warning`&&`⚠️`,o===`error`&&`❌`,(0,q.jsxs)(`span`,{style:{marginLeft:6},children:[o===`info`&&`Context Mode`,o===`warning`&&`Warning`,o===`error`&&`Error`]})]}),(0,q.jsx)(`button`,{className:`toast-card-close`,onClick:d,"aria-label":`Dismiss`,children:`✕`})]}),(0,q.jsx)(`div`,{className:`toast-card-body`,children:(0,q.jsx)(`pre`,{className:`toast-card-content`,children:i})})]})})}var Hs=`pi-kot/favorite-sessions`;function Us(){try{let e=localStorage.getItem(Hs);return e?JSON.parse(e):[]}catch{return[]}}function Ws(e){try{localStorage.setItem(Hs,JSON.stringify(e))}catch{}}var Gs=we((e,t)=>({favorites:Us(),toggle:n=>{let r=t().favorites,i=r.includes(n)?r.filter(e=>e!==n):[...r,n];Ws(i),e({favorites:i})}})),Ks=8,qs=10;function Js({projectId:e,sessions:t,activeSessionId:n,isStreaming:r,renamingSessionId:i,renameValue:a,renameInputRef:o,expandedWorkerGroups:s,onSelect:c,onRenameStart:l,onRenameChange:u,onRenameCommit:d,onRenameCancel:f,onToggleWorkerGroup:p,onNewSession:m}){let[h,g]=(0,U.useState)(``),[_,v]=(0,U.useState)(!1),y=(0,U.useMemo)(()=>t.filter(e=>!e.supervisorId),[t]),b=(0,U.useMemo)(()=>t.filter(e=>e.supervisorId),[t]),x=(0,U.useMemo)(()=>b.filter(e=>!y.some(t=>t.sessionId===e.supervisorId)),[b,y]),S=h.trim().toLowerCase(),C=(0,U.useMemo)(()=>S?y.filter(e=>(e.name??`Session ${e.sessionId.slice(0,8)}`).toLowerCase().includes(S)):y,[y,S]),w=!_&&!S&&C.length>Ks,T=w?C.slice(0,Ks).includes(C.find(e=>e.sessionId===n)??C[0])?C.slice(0,Ks):[...C.slice(0,Ks-1),C.find(e=>e.sessionId===n)??C[Ks-1]].filter(Boolean):C,E=C.length-T.length,{favorites:D,toggle:O}=Gs(),{favSessions:k,normalSessions:A}=(0,U.useMemo)(()=>{let e=[],t=[];for(let n of T)D.includes(n.sessionId)?e.push(n):t.push(n);return{favSessions:e,normalSessions:t}},[T,D]),j=t.length>=qs,M=e=>{let t=b.filter(t=>t.supervisorId===e.sessionId),m=s.has(e.sessionId),h=n===e.sessionId,g=e.name??`Session ${e.sessionId.slice(0,8)}`,_=D.includes(e.sessionId);return(0,q.jsxs)(`div`,{children:[(0,q.jsxs)(`div`,{onClick:t=>{i!==e.sessionId&&(t.stopPropagation(),c(e.sessionId))},className:`session-item${h?` active`:``}`,onDoubleClick:t=>{t.stopPropagation(),l(e.sessionId,g)},children:[t.length>0&&(0,q.jsx)(`span`,{className:`project-chevron`,onClick:t=>{t.stopPropagation(),p(e.sessionId)},style:{cursor:`pointer`,marginRight:`4px`},children:m?`▾`:`▶`}),i===e.sessionId?(0,q.jsx)(`input`,{ref:o,className:`session-rename-input`,value:a,onChange:e=>u(e.target.value),onBlur:()=>d(e.sessionId,g),onKeyDown:e=>{e.key===`Enter`?e.currentTarget.blur():e.key===`Escape`&&f()},onClick:e=>e.stopPropagation()}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`button`,{className:`session-fav-btn${_?` favorited`:``}`,onClick:t=>{t.stopPropagation(),O(e.sessionId)},title:_?`Remove from favorites`:`Add to favorites`,children:_?`★`:`☆`}),(0,q.jsx)(`span`,{className:`session-name`,children:g}),(0,q.jsx)(`button`,{className:`session-archive-btn`,title:`Archive session`,onClick:t=>{t.stopPropagation(),confirm(`Archive "${g}"?`)&&K.getState().archiveSession(e.sessionId)},children:`✕`})]})]}),t.length>0&&m&&(0,q.jsx)(`div`,{className:`session-children`,children:t.map(e=>(0,q.jsx)(Ys,{worker:e,isActive:n===e.sessionId,isStreaming:r&&n===e.sessionId,onSelect:c},e.sessionId))})]},e.sessionId)};return(0,q.jsxs)(`div`,{className:`session-list project-sublist`,children:[j&&(0,q.jsx)(`div`,{style:{padding:`2px 8px 3px`},children:(0,q.jsx)(`input`,{value:h,onChange:e=>{g(e.target.value),v(!1)},placeholder:`Search sessions…`,className:`session-search-input`,type:`search`})}),y.length===0&&b.length===0&&(0,q.jsx)(`div`,{style:{padding:`6px 12px 2px`,fontSize:`11px`,color:`var(--text-dim)`,fontStyle:`italic`},children:`No sessions yet`}),S&&C.length===0&&(0,q.jsxs)(`div`,{style:{padding:`6px 12px 2px`,fontSize:`11px`,color:`var(--text-dim)`,fontStyle:`italic`},children:[`No matches for "`,h,`"`]}),k.length>0&&!S&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`div`,{className:`favorites-section-header`,children:`★ Favorites`}),k.map(M),A.length>0&&(0,q.jsx)(`div`,{className:`favorites-section-divider`})]}),S?T.map(M):A.map(M),w&&E>0&&(0,q.jsxs)(`button`,{className:`session-show-more-btn`,onClick:()=>v(!0),type:`button`,children:[`↓ `,E,` more session`,E===1?``:`s`]}),_&&C.length>Ks&&(0,q.jsx)(`button`,{className:`session-show-more-btn`,onClick:()=>v(!1),type:`button`,children:`↑ Show less`}),x.map(e=>(0,q.jsx)(Ys,{worker:e,isActive:n===e.sessionId,isStreaming:r&&n===e.sessionId,onSelect:c},e.sessionId)),(0,q.jsxs)(`button`,{className:`new-session-row`,onClick:e=>{e.stopPropagation(),m()},type:`button`,children:[(0,q.jsx)(`span`,{style:{fontSize:`14px`,lineHeight:1},children:`+`}),`New session`]})]})}function Ys({worker:e,isActive:t,isStreaming:n,onSelect:r}){return(0,q.jsxs)(`div`,{onClick:t=>{t.stopPropagation(),r(e.sessionId)},className:`session-item session-worker-item${t?` active`:``}`,children:[(0,q.jsx)(`span`,{className:`session-worker-dot${n?` active`:``}`,style:{background:e.isLive&&!n?`#98c379`:e.isLive?void 0:`#56b6c2`}}),(0,q.jsx)(`span`,{className:`session-worker-name`,children:e.name??`Session ${e.sessionId.slice(0,8)}`})]})}function Xs(e,t){return e===`~`?t:e.startsWith(`~/`)?t+e.slice(1):e}function Zs(e){if(e.endsWith(`/`))return e;let t=e.lastIndexOf(`/`);return t>=0?e.slice(0,t+1):e}function Qs(e){if(e.endsWith(`/`))return``;let t=e.lastIndexOf(`/`);return t>=0?e.slice(t+1):e}function $s(e){try{let t=e.replace(/\.git$/,``).split(`/`).filter(Boolean).pop()||``;return t.split(`:`).filter(Boolean).pop()||t}catch{return``}}function ec({open:e,onClose:t}){let[n,r]=(0,U.useState)(``),[i,a]=(0,U.useState)(`~/`),[o,s]=(0,U.useState)([]),[c,l]=(0,U.useState)(!1),[f,m]=(0,U.useState)(),[h,b]=(0,U.useState)(0),[x,S]=(0,U.useState)(!1),[C,w]=(0,U.useState)(!1),[D,O]=(0,U.useState)(``),[k,A]=(0,U.useState)(!1),[j,M]=(0,U.useState)(!1),[N,P]=(0,U.useState)(!1),F=(0,U.useRef)(null),I=K(e=>e.loadProjects),ee=K(e=>e.setActiveProject);(0,U.useEffect)(()=>{if(!e)return;let t=!1;return a(`~/`),O(``),w(!1),S(!1),b(0),m(void 0),P(!1),M(!1),Xe().then(e=>{t||(r(e),requestAnimationFrame(()=>F.current?.focus()))}).catch(()=>{t||(r(`/`),requestAnimationFrame(()=>F.current?.focus()))}),()=>{t=!0}},[e]);let L=(0,U.useMemo)(()=>n?Xs(Zs(i),n):``,[i,n]);(0,U.useEffect)(()=>{if(!e||!L){s([]);return}let t=!1;return l(!0),m(void 0),Ze(L).then(e=>{t||s(e)}).catch(e=>{t||(s([]),m(e instanceof Error?e.message:`Failed to load directory`))}).finally(()=>{t||l(!1)}),()=>{t=!0}},[e,L]);let R=Qs(i),z=(0,U.useMemo)(()=>{let e=R.toLowerCase(),t=x||R.startsWith(`.`);return o.filter(n=>n.isDirectory&&(t||!n.name.startsWith(`.`))&&n.name.toLowerCase().startsWith(e))},[o,R,x]);(0,U.useEffect)(()=>{b(0)},[z.length]);let B=i!==`~/`&&i!==`/`,V=(0,U.useMemo)(()=>n?Xs(i.replace(/\/+$/,``),n):``,[i,n]),te=(0,U.useCallback)(e=>{let t=e.startsWith(n)?`~`+e.slice(n.length):e;a(t+`/`)},[n]),ne=(0,U.useCallback)(()=>{let e=Zs(i.replace(/\/+$/,``)).replace(/\/+$/,``);if(e===`~`||e===``){let e=n&&n.split(`/`).slice(0,-1).join(`/`)||`/`,t=e===`/`?`/`:`~`+e.slice(n.lastIndexOf(`/`));a(t.endsWith(`/`)?t:t+`/`);return}let t=e.lastIndexOf(`/`),r=t>=0?e.slice(0,t+1):`/`;a(r)},[i,n]),re=(0,U.useCallback)(async e=>{try{await Je(e.split(`/`).filter(Boolean).pop()||`unnamed`,e),await I();let n=K.getState(),r=n.projects[n.projects.length-1];r&&ee(r.id),t()}catch(e){m(e instanceof Error?e.message:`Failed to add project`)}},[I,ee,t]),ie=(0,U.useCallback)(async()=>{if(!(!V||N)){P(!0),m(void 0);try{await Je(V.split(`/`).filter(Boolean).pop()||`unnamed`,V),await I();let e=K.getState(),n=e.projects[e.projects.length-1];n&&ee(n.id),t()}catch(e){m(e instanceof Error?e.message:`Failed to add project`)}finally{P(!1)}}},[V,N,I,ee,t]),ae=(0,U.useCallback)(()=>{if(!D.trim()||!V||j)return;M(!0),m(void 0);let e=$s(D.trim())||`repo`,n={url:D.trim(),folderName:e,projectName:e};k&&(n.targetPath=V.replace(/\/+$/,``)+`/`+e),ct(n,e=>{switch(e.type){case`done`:I().then(()=>{let e=K.getState(),n=e.projects[e.projects.length-1];n&&ee(n.id),t()}),M(!1);break;case`error`:m(e.message),M(!1);break}},e=>{m(e.message),M(!1)})},[D,V,k,j,I,ee,t]),oe=(0,U.useCallback)(e=>{if(e.key===`ArrowDown`)e.preventDefault(),b(e=>Math.min(z.length-1,e+1));else if(e.key===`ArrowUp`)e.preventDefault(),b(e=>Math.max(0,e-1));else if(e.key===`Enter`){if(e.preventDefault(),z.length>0&&h>=0){let e=z[h];R&&!e.name.startsWith(R)?a(Zs(i)+e.name+`/`):te(e.path)}}else e.key===`Backspace`&&!i&&(e.preventDefault(),t())},[z,h,R,i,te,t]);return e?(0,q.jsx)(`div`,{className:`settings-overlay`,onClick:t,children:(0,q.jsxs)(`div`,{className:`settings-panel add-project-settings-panel`,onClick:e=>e.stopPropagation(),children:[(0,q.jsxs)(`header`,{className:`settings-header`,children:[(0,q.jsx)(`span`,{style:{fontSize:`14px`,fontWeight:700,color:`var(--accent-text)`},children:`Add Project`}),(0,q.jsx)(`button`,{className:`settings-close`,onClick:t,title:`Close`,children:(0,q.jsx)(_,{size:16})})]}),(0,q.jsxs)(`div`,{className:`add-project-dialog-body`,children:[(0,q.jsxs)(`div`,{className:`add-project-dialog-bar`,children:[(0,q.jsxs)(`button`,{className:`add-project-dialog-tab`+(C?``:` active`),onClick:()=>w(!1),children:[(0,q.jsx)(y,{size:14}),`Browse`]}),(0,q.jsxs)(`button`,{className:`add-project-dialog-tab`+(C?` active`:``),onClick:()=>w(!0),children:[(0,q.jsx)(d,{size:14}),`Clone`]})]}),C&&(0,q.jsxs)(`div`,{className:`add-project-dialog-clone-row`,children:[(0,q.jsx)(u,{size:14,className:`add-project-dialog-icon`}),(0,q.jsx)(`input`,{type:`text`,value:D,onChange:e=>O(e.target.value),placeholder:`https://github.com/user/repo.git`,className:`add-project-dialog-input`,style:{paddingLeft:`30px`},spellCheck:!1})]}),C&&(0,q.jsx)(`div`,{className:`add-project-dialog-clone-dest`,children:(0,q.jsxs)(`label`,{className:`add-project-dialog-toggle`,children:[(0,q.jsx)(`input`,{type:`checkbox`,checked:k,onChange:e=>A(e.target.checked)}),(0,q.jsx)(`span`,{className:`add-project-dialog-toggle-track`,children:(0,q.jsx)(`span`,{className:`add-project-dialog-toggle-knob`})}),(0,q.jsx)(`span`,{className:`add-project-dialog-toggle-label`,children:k?`Clone to custom path`:`Clone to workspace`})]})}),(0,q.jsxs)(`div`,{className:`add-project-dialog-path-row`,children:[(0,q.jsx)(y,{size:14,className:`add-project-dialog-icon`}),(0,q.jsx)(`input`,{ref:F,type:`text`,value:i,onChange:e=>a(e.target.value.replace(/\\/g,`/`)),onKeyDown:oe,placeholder:`~/`,className:`add-project-dialog-input`,spellCheck:!1}),(0,q.jsx)(`button`,{className:`add-project-dialog-btn`,disabled:C?!D.trim()||!V||j:!V||N,onClick:C?ae:ie,children:C?j?`Cloning…`:`Clone & Add`:N?`Adding…`:`Add`})]}),(0,q.jsxs)(`div`,{className:`add-project-dialog-tools`,children:[(0,q.jsxs)(`button`,{className:`add-project-dialog-tool`,onClick:ne,disabled:!B,title:`Go up`,children:[(0,q.jsx)(T,{size:14}),(0,q.jsx)(`span`,{children:`..`})]}),(0,q.jsxs)(`button`,{className:`add-project-dialog-tool`,onClick:()=>S(e=>!e),title:x?`Hide hidden files`:`Show hidden files`,children:[x?(0,q.jsx)(p,{size:14}):(0,q.jsx)(g,{size:14}),(0,q.jsx)(`span`,{children:x?`Hide hidden`:`Show hidden`})]}),(0,q.jsx)(`span`,{className:`add-project-dialog-path-display`,children:V})]}),f&&(0,q.jsx)(`div`,{className:`add-project-dialog-error`,children:f}),(0,q.jsx)(`div`,{className:`add-project-dialog-list`,children:c?(0,q.jsx)(`div`,{className:`add-project-dialog-empty`,children:`Loading…`}):z.length===0?(0,q.jsx)(`div`,{className:`add-project-dialog-empty`,children:R?`No matching directories`:`Empty directory`}):z.map((e,t)=>(0,q.jsxs)(`div`,{className:`add-project-dialog-entry`+(t===h?` highlighted`:``),onMouseEnter:()=>b(t),onClick:()=>te(e.path),children:[(0,q.jsx)(E,{size:14,className:`add-project-dialog-entry-arrow`}),(0,q.jsx)(y,{size:14,className:`add-project-dialog-entry-folder`}),(0,q.jsx)(`span`,{className:`add-project-dialog-entry-name`,children:e.name}),(0,q.jsx)(`button`,{className:`add-project-dialog-entry-add`,onClick:t=>{t.stopPropagation(),re(e.path)},title:`Add as project`,children:(0,q.jsx)(v,{size:14})})]},e.path))})]}),(0,q.jsx)(`div`,{className:`add-project-dialog-footer`,children:`↑↓ Navigate · Enter browse · + quick-add`})]})}):null}var tc=class extends U.Component{constructor(e){super(e),this.state={error:null}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){console.error(`[ErrorBoundary${this.props.label?`:${this.props.label}`:``}]`,e,t.componentStack)}handleRetry=()=>{this.setState({error:null})};render(){if(this.state.error===null)return this.props.children;let{error:e}=this.state,{compact:t}=this.props;return t?(0,q.jsxs)(`div`,{style:{padding:`12px`,margin:`8px`,borderRadius:`6px`,background:`var(--bg-glass, rgba(220,80,80,0.08))`,border:`1px solid var(--accent-red, #e06c75)`,fontSize:`12px`,color:`var(--text-secondary, #999)`,lineHeight:1.4},children:[(0,q.jsxs)(`div`,{style:{fontWeight:600,color:`var(--accent-red, #e06c75)`,marginBottom:4},children:[`⚠️ `,e.name??`Error`]}),(0,q.jsx)(`div`,{style:{marginBottom:8,wordBreak:`break-word`},children:e.message}),(0,q.jsx)(`button`,{onClick:this.handleRetry,style:{padding:`4px 10px`,fontSize:`11px`,borderRadius:`4px`,border:`1px solid var(--border, #444)`,background:`var(--bg-surface, #1e1e1e)`,color:`var(--text-primary, #ddd)`,cursor:`pointer`},children:`Retry`})]}):(0,q.jsx)(`div`,{style:{display:`flex`,flexDirection:`column`,alignItems:`center`,justifyContent:`center`,padding:`40px 24px`,height:`100%`,boxSizing:`border-box`},children:(0,q.jsxs)(`div`,{style:{maxWidth:480,width:`100%`,padding:`24px`,borderRadius:`8px`,background:`var(--bg-surface, #1e1e1e)`,border:`1px solid var(--border, #444)`},children:[(0,q.jsx)(`div`,{style:{fontSize:14,fontWeight:600,color:`var(--accent-red, #e06c75)`,marginBottom:8},children:`Something went wrong`}),(0,q.jsx)(`div`,{style:{fontSize:12,color:`var(--text-secondary, #999)`,marginBottom:4,fontFamily:`monospace`},children:e.name}),(0,q.jsx)(`div`,{style:{fontSize:13,color:`var(--text-primary, #ddd)`,marginBottom:20,lineHeight:1.5,wordBreak:`break-word`},children:e.message}),(0,q.jsxs)(`div`,{style:{display:`flex`,gap:8},children:[(0,q.jsx)(`button`,{onClick:this.handleRetry,style:{padding:`6px 16px`,fontSize:12,borderRadius:`6px`,border:`none`,background:`var(--accent-primary, #569cd6)`,color:`#fff`,cursor:`pointer`},children:`Retry`}),(0,q.jsx)(`button`,{onClick:()=>{this.setState({error:null}),window.location.reload()},style:{padding:`6px 16px`,fontSize:12,borderRadius:`6px`,border:`1px solid var(--border, #444)`,background:`transparent`,color:`var(--text-secondary, #999)`,cursor:`pointer`},children:`Reload page`})]})]})})}};function nc(e){let t=(0,U.useRef)(null),n=e.threshold||50;(0,U.useEffect)(()=>{let r=e=>{t.current={x:e.touches[0].clientX,y:e.touches[0].clientY}},i=r=>{if(!t.current)return;let i=t.current.x-r.changedTouches[0].clientX,a=t.current.y-r.changedTouches[0].clientY;Math.abs(i)>Math.abs(a)&&Math.abs(i)>n&&(i>0&&e.onSwipeLeft?e.onSwipeLeft():i<0&&e.onSwipeRight&&e.onSwipeRight()),t.current=null};return window.addEventListener(`touchstart`,r,{passive:!0}),window.addEventListener(`touchend`,i,{passive:!0}),()=>{window.removeEventListener(`touchstart`,r),window.removeEventListener(`touchend`,i)}},[e.onSwipeLeft,e.onSwipeRight,n])}var rc=we((e,t)=>({sidebarCollapsed:!1,showTreePanel:!1,showSettings:!1,showOrch:!1,showMCP:!1,showTerminal:!1,showAddProjectDialog:!1,explorerTab:void 0,isMobile:typeof window<`u`?window.innerWidth<=600:!1,toggleSidebar:()=>{let{sidebarCollapsed:n,setExplorerTab:r}=t();n&&r(void 0),e({sidebarCollapsed:!n})},setSidebarCollapsed:t=>e({sidebarCollapsed:t}),closeSidebarOnMobile:()=>{window.innerWidth<=600&&e({sidebarCollapsed:!0})},setShowTreePanel:t=>e({showTreePanel:t}),setShowSettings:t=>e({showSettings:t}),setShowOrch:t=>e({showOrch:t}),setShowMCP:t=>e({showMCP:t}),setShowTerminal:t=>e({showTerminal:t}),setShowAddProjectDialog:t=>e({showAddProjectDialog:t}),setExplorerTab:t=>e({explorerTab:t}),toggleExplorerTab:n=>{let{explorerTab:r}=t();e(r===n?{explorerTab:void 0}:{explorerTab:n,sidebarCollapsed:!0})},closeAllPanels:()=>e({showTreePanel:!1,showSettings:!1,showOrch:!1,showMCP:!1,showTerminal:!1,showAddProjectDialog:!1,explorerTab:void 0}),setIsMobile:t=>e({isMobile:t})})),ic=new Set,ac=!1,oc=[`var(--accent)`,`#d19a66`,`#56b6c2`,`#c678dd`,`#e5c07b`,`#98c379`,`#e06c75`,`#61afef`];function sc(e){let t=0;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n),t|=0;return oc[Math.abs(t)%oc.length]}function cc(){let e=K(e=>e.activeSessionId),t=K(e=>e.activeProjectId);K(e=>e.sessions);let n=K(e=>e.projects),r=K(e=>e.projectSessions),i=K(e=>e.loadProjects),a=K(e=>e.setActiveProject),o=K(e=>e.createAndActivate),s=K(e=>e.setActiveSession);K(e=>e.refreshSessions);let c=K(e=>e.streamState.isStreaming),l=K(e=>e.connectionState),[u,d]=(0,U.useState)(!1),[f,p]=(0,U.useState)(``),[m,h]=(0,U.useState)(),[g,_]=(0,U.useState)(!0),[v,y]=(0,U.useState)(``),[b,x]=(0,U.useState)(``),[S,C]=(0,U.useState)([]),[w,T]=(0,U.useState)(),[E,D]=(0,U.useState)(new Set),[O,k]=(0,U.useState)(),[A,j]=(0,U.useState)(``),[M,N]=(0,U.useState)(),[P,F]=(0,U.useState)(),[I,ee]=(0,U.useState)(void 0),[L,R]=(0,U.useState)(new Set),z=(0,U.useRef)(null),B=ba(e),{sidebarCollapsed:V,showTreePanel:te,showSettings:ne,showOrch:re,showMCP:ie,showTerminal:ae,showAddProjectDialog:oe,explorerTab:H,isMobile:se,toggleSidebar:ce,setSidebarCollapsed:le,closeSidebarOnMobile:ue,setShowTreePanel:de,setShowSettings:fe,setShowOrch:pe,setShowMCP:me,setShowTerminal:he,setShowAddProjectDialog:ge,setExplorerTab:_e,toggleExplorerTab:ve,setIsMobile:ye}=rc();(0,U.useEffect)(()=>{let e=()=>ye(window.innerWidth<=600);return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[]),nc({onSwipeLeft:()=>le(!0),onSwipeRight:()=>le(!1),threshold:60}),(0,U.useEffect)(()=>{(async()=>{try{let{authEnabled:e}=await Pe();if(e&&(typeof localStorage<`u`?localStorage.getItem(`pi-kot/auth-token`):null)===null){d(!0),_(!1);return}await i()}catch{}try{let e=await lt();C(e.providers);let t=e.providers.flatMap(e=>e.models),n=!1;try{let e=localStorage.getItem(`pi-kot-model`);if(e){let r=JSON.parse(e),i=t.find(e=>e.id===r.modelId&&e.hasAuth);i&&(y(i.id),x(r.provider),n=!0)}}catch{}if(!n){let n=t.find(e=>e.hasAuth);n?(y(n.id),x(e.providers.find(e=>e.models.some(e=>e.id===n.id))?.provider??``)):t.length>0&&(y(t[0].id),x(e.providers[0]?.provider??``))}}catch{}_(!1)})()},[]),(0,U.useEffect)(()=>{t!==void 0&&D(e=>new Set(e).add(t))},[t]),(0,U.useEffect)(()=>{if(g||u||n.length===0||t===void 0)return;let i=r[t];if(i!==void 0&&!ac){if(ac=!0,e!==void 0){if(!i.some(t=>t.sessionId===e)){try{localStorage.removeItem(`pi-kot/active-session-id`)}catch{}K.setState({activeSessionId:void 0});return}K.getState().sseClient===void 0&&s(e);return}i.length>0?s(i[0].sessionId):ic.has(t)||(ic.add(t),o(t))}},[g,u,t,r,e]),(0,U.useEffect)(()=>{e&&(async()=>{try{let t=await Tt(e);if(t.provider&&t.modelId){y(t.modelId),x(t.provider);try{localStorage.setItem(`pi-kot-model`,JSON.stringify({modelId:t.modelId,provider:t.provider}))}catch{}}}catch{}})()},[e]),(0,U.useEffect)(()=>{let n=t,r=e,i;i=n&&r?`#/project/${n}/session/${r}`:n?`#/project/${n}`:`#`,window.location.hash!==i&&history.replaceState(null,``,i)},[t,e]),(0,U.useEffect)(()=>{let e=()=>{let e=window.location.hash.match(/^#\/project\/([^/]+)(?:\/session\/([^/]+))?$/);if(!e)return;let t=e[1],n=e[2]??void 0,r=K.getState();n&&n!==r.activeSessionId&&Object.values(r.projectSessions).some(e=>e.some(e=>e.sessionId===n))&&(t===r.activeProjectId?r.setActiveSession(n):r.setActiveProject(t).then(()=>{r.setActiveSession(n)}))};return window.addEventListener(`hashchange`,e),()=>window.removeEventListener(`hashchange`,e)},[]),(0,U.useEffect)(()=>ke(()=>{p(``),h(void 0),d(!0)}),[]);let be=(0,U.useCallback)(()=>{Ne(),p(``),h(void 0),d(!0)},[]);(0,U.useEffect)(()=>{let e=Object.values(r).flat(),t=new Set(L);e.filter(e=>e.supervisorId&&e.isLive).forEach(e=>t.add(e.supervisorId)),R(t)},[r]);let xe=async()=>{try{await Fe(f),h(void 0),d(!1),await i()}catch{h(`Invalid password`)}},Se=(0,U.useCallback)((e,t)=>{y(e),x(t),T(void 0);try{localStorage.setItem(`pi-kot-model`,JSON.stringify({modelId:e,provider:t}))}catch{}},[]),Ce=(0,U.useCallback)(e=>{T(e)},[]),we=e=>{D(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})};return g?(0,q.jsx)(`div`,{className:`centered`,children:(0,q.jsxs)(`div`,{style:{width:`100%`,maxWidth:400,display:`flex`,flexDirection:`column`,gap:24},children:[(0,q.jsx)(va,{variant:`card`,count:2}),(0,q.jsx)(va,{variant:`list`,count:4})]})}):u?(0,q.jsx)(`div`,{className:`centered`,children:(0,q.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),xe()},className:`login-form`,children:[(0,q.jsx)(`h2`,{className:`login-title`,children:`pi-kot`}),(0,q.jsx)(`input`,{type:`password`,value:f,onChange:e=>{p(e.target.value),h(void 0)},placeholder:`Enter password`,autoFocus:!0,autoComplete:`new-password`,className:`login-input${m?` login-input-error`:``}`}),m&&(0,q.jsx)(`div`,{className:`login-error`,children:m}),(0,q.jsx)(`button`,{type:`submit`,className:`login-btn`,children:`Login`}),(0,q.jsx)(`button`,{type:`button`,onClick:be,className:`login-btn`,style:{background:`none`,border:`1px solid var(--border-color, #444)`,color:`var(--text-dim, #888)`,fontSize:`11px`,marginTop:`4px`},children:`Clear stored token`})]})}):(0,q.jsxs)(`div`,{className:`app-layout`,children:[!V&&(0,q.jsx)(`div`,{className:`sidebar-backdrop`,onClick:()=>le(!0),"aria-hidden":`true`}),(0,q.jsxs)(`div`,{className:`sidebar${V?` collapsed`:``}`,children:[(0,q.jsxs)(`div`,{className:`sidebar-header`,style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`},children:[(0,q.jsxs)(`span`,{style:{fontSize:`14px`,fontWeight:700,color:`var(--accent-text)`,display:`flex`,alignItems:`center`,gap:`6px`},children:[(0,q.jsx)(`span`,{title:l===`connected`?`Connected`:l===`connecting`?`Connecting…`:l===`error`?`Connection error`:`Disconnected`,style:{display:`inline-block`,width:8,height:8,borderRadius:`50%`,background:l===`connected`?`#4caf50`:l===`connecting`?`#f0c040`:l===`error`?`#e06c75`:`#666`,boxShadow:l===`connected`?`0 0 5px rgba(76, 175, 80, 0.6)`:`none`,transition:`all 0.3s`,animation:l===`connecting`?`connection-pulse 1.2s ease-in-out infinite`:`none`}}),`pi-kot`]}),(0,q.jsx)(`button`,{onClick:()=>ge(!0),title:`Add a new project`,style:{background:`transparent`,border:`1px solid var(--border)`,color:`var(--text-secondary)`,fontSize:`11px`,fontWeight:600,textTransform:`uppercase`,letterSpacing:`0.05em`,cursor:`pointer`,lineHeight:1,padding:`4px 8px`,borderRadius:`var(--radius-sm)`,transition:`all var(--duration) var(--ease)`},onMouseOver:e=>{e.currentTarget.style.color=`var(--text-primary)`,e.currentTarget.style.background=`var(--bg-glass-hover)`},onMouseOut:e=>{e.currentTarget.style.color=`var(--text-secondary)`,e.currentTarget.style.background=`transparent`},children:`Add Project`})]}),(0,q.jsx)(`div`,{className:`project-list`,children:n.map(n=>{let i=n.id===t,l=E.has(n.id),u=r[n.id]??[];return(0,q.jsxs)(`div`,{className:`project-group${i?` active`:``}`,children:[(0,q.jsxs)(`div`,{className:`project-row${i?` active`:``}`,onClick:()=>{i?we(n.id):a(n.id)},role:`button`,tabIndex:0,children:[(0,q.jsxs)(`span`,{className:`project-icon`,children:[(0,q.jsx)(`svg`,{className:`project-icon-folder`,width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,style:{color:sc(n.id)},children:(0,q.jsx)(`path`,{d:`M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z`})}),(0,q.jsx)(`svg`,{className:`project-icon-arrow`,width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,q.jsx)(`path`,{d:`M9 18l6-6-6-6`})})]}),(0,q.jsx)(`span`,{className:`project-name`,children:n.name.toLowerCase()}),(0,q.jsx)(`div`,{className:`project-actions-left`,children:n.name!==`Default`&&(0,q.jsx)(`button`,{onClick:e=>{e.stopPropagation(),F(n.id)},className:`project-action-btn`,title:`Remove from sidebar`,children:(0,q.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,q.jsx)(`polygon`,{points:`5 14 12 5 19 14`}),(0,q.jsx)(`line`,{x1:`4`,y1:`19`,x2:`20`,y2:`19`})]})})}),(0,q.jsx)(`div`,{className:`project-actions-right`,children:(0,q.jsx)(`button`,{onClick:e=>{e.stopPropagation(),o(n.id)},className:`project-action-btn`,title:`New draft session`,children:(0,q.jsxs)(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,q.jsx)(`line`,{x1:`12`,y1:`5`,x2:`12`,y2:`19`}),(0,q.jsx)(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`})]})})})]}),l&&(0,q.jsx)(Js,{projectId:n.id,sessions:u,activeSessionId:e,isStreaming:c,renamingSessionId:O,renameValue:A,renameInputRef:z,expandedWorkerGroups:L,onSelect:e=>{s(e),ue()},onRenameStart:(e,t)=>{k(e),j(t),setTimeout(()=>z.current?.focus(),50)},onRenameChange:j,onRenameCommit:(e,t)=>{let n=A.trim();n.length>0&&n!==t&&K.getState().renameSession(e,n),k(void 0)},onRenameCancel:()=>k(void 0),onToggleWorkerGroup:e=>{R(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},onNewSession:()=>{o(n.id),ue()}})]},n.id)})}),t!==void 0&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`div`,{className:`archived-toggle`,onClick:()=>{let e=M===t?void 0:t;e!==void 0&&K.getState().loadArchivedSessions(t),N(e)},children:[(0,q.jsx)(`span`,{className:`project-chevron`,children:M===t?`▾`:`▸`}),(0,q.jsx)(`span`,{className:`project-name`,style:{fontSize:`12px`},children:`Archived`})]}),M===t&&(()=>{let e=K.getState().archivedSessions[t];return e===void 0?(0,q.jsx)(`div`,{className:`archived-status`,children:(0,q.jsx)(va,{variant:`list`,count:2})}):e.length===0?(0,q.jsx)(`div`,{className:`archived-status`,children:`No archived sessions`}):(0,q.jsx)(`div`,{className:`session-list project-sublist archived-list`,children:e.map(e=>(0,q.jsxs)(`div`,{className:`session-item archived`,children:[(0,q.jsx)(`span`,{className:`session-name`,children:e.name??`Session ${e.sessionId.slice(0,8)}`}),(0,q.jsx)(`button`,{className:`session-restore-btn`,title:`Restore session`,onClick:n=>{n.stopPropagation(),K.getState().unarchiveSession(e.sessionId,t)},children:`↻`})]},e.sessionId))})})()]}),(0,q.jsx)(`div`,{className:`sidebar-footer`,children:(0,q.jsxs)(`div`,{className:`mobile-only`,style:{display:`flex`,flexDirection:`column`,gap:`4px`},children:[(0,q.jsxs)(`button`,{type:`button`,onClick:()=>{me(!0),le(!0)},className:`add-project-toggle`,style:{display:`flex`,alignItems:`center`,gap:`8px`},children:[(0,q.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,q.jsx)(`path`,{d:`M12 2L2 7l10 5 10-5-10-5z`}),(0,q.jsx)(`path`,{d:`M2 17l10 5 10-5`}),(0,q.jsx)(`path`,{d:`M2 12l10 5 10-5`})]}),`MCP Settings`]}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>{fe(!0),le(!0)},className:`add-project-toggle`,style:{display:`flex`,alignItems:`center`,gap:`8px`},children:`⚙ Settings`}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>{be(),le(!0)},className:`add-project-toggle`,style:{display:`flex`,alignItems:`center`,gap:`8px`,color:`var(--text-secondary)`},children:`Sign out`})]})})]}),(0,q.jsxs)(`div`,{className:`main-area`,children:[(0,q.jsxs)(`div`,{className:`header`,children:[(0,q.jsxs)(`div`,{className:`header-left`,children:[(0,q.jsx)(`button`,{type:`button`,onClick:ce,className:`sidebar-toggle`,title:V?`Show sidebar`:`Hide sidebar`,children:V?`☰`:`✕`}),e!==void 0&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`span`,{style:{fontSize:`13px`,fontWeight:500,color:`var(--text-secondary)`,marginLeft:`8px`},children:[`Session `,e.slice(0,8)]}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>de(!0),title:`Session tree (branching history)`,style:{background:`none`,border:`none`,color:`var(--text-dim)`,fontSize:`12px`,cursor:`pointer`,padding:`3px 6px`,borderRadius:`var(--radius-sm)`,lineHeight:1},children:`🌿`})]})]}),(0,q.jsxs)(`div`,{className:`header-right`,children:[(0,q.jsx)(xa,{data:B,onInspect:e=>ee(e)}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>ve(`files`),title:`File explorer`,style:{background:`none`,border:`none`,color:H===`files`?`var(--accent-text)`:`var(--text-dim)`,fontSize:`12px`,cursor:`pointer`,padding:`3px 6px`,borderRadius:`var(--radius-sm)`,lineHeight:1},children:`📂`}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>{he(!0),le(!0)},title:`Terminal`,style:{background:`none`,border:`none`,color:ae?`var(--accent-text)`:`var(--text-dim)`,fontSize:`12px`,cursor:`pointer`,padding:`3px 6px`,borderRadius:`var(--radius-sm)`,lineHeight:1},children:`>_`}),(0,q.jsxs)(`div`,{className:`header-overflow desktop-only`,children:[(0,q.jsx)(`button`,{type:`button`,onClick:()=>me(!0),title:`MCP Settings`,style:{background:`none`,border:`none`,color:ie?`var(--accent-text)`:`var(--text-dim)`,fontSize:`12px`,cursor:`pointer`,padding:`3px 6px`,borderRadius:`var(--radius-sm)`,lineHeight:1},children:(0,q.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,q.jsx)(`path`,{d:`M12 2L2 7l10 5 10-5-10-5z`}),(0,q.jsx)(`path`,{d:`M2 17l10 5 10-5`}),(0,q.jsx)(`path`,{d:`M2 12l10 5 10-5`})]})}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>fe(!0),title:`Settings`,style:{background:`none`,border:`none`,color:ne?`var(--accent-text)`:`var(--text-dim)`,fontSize:`14px`,cursor:`pointer`,padding:`3px 6px`,borderRadius:`var(--radius-sm)`,lineHeight:1},children:`⚙`}),(0,q.jsx)(`button`,{type:`button`,onClick:be,title:`Sign out (clear stored token)`,style:{background:`none`,border:`none`,color:`var(--text-dim)`,fontSize:`12px`,cursor:`pointer`,padding:`3px 6px`,borderRadius:`var(--radius-sm)`,lineHeight:1},children:`Sign out`})]})]})]}),w!==void 0&&(0,q.jsxs)(`div`,{onClick:()=>T(void 0),className:`error-banner`,style:{position:`absolute`,top:`52px`,left:`16px`,right:`16px`,zIndex:9,cursor:`pointer`},children:[w,` — click to dismiss`]}),e===void 0?(0,q.jsx)(`div`,{className:`centered`,style:{height:`100%`},children:(0,q.jsxs)(`div`,{className:`welcome`,children:[(0,q.jsx)(`div`,{className:`welcome-icon`,children:`⌨️`}),(0,q.jsx)(`div`,{className:`welcome-text`,children:`Select or create a session`}),(0,q.jsx)(`div`,{className:`welcome-hint`,children:`to start chatting with the coding agent`})]})}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(tc,{label:`ChatView`,compact:!0,children:(0,q.jsx)(ca,{sessionId:e,modelName:v||void 0,providerName:b||void 0})}),(0,q.jsx)(tc,{label:`OrchestrationPanel`,compact:!0,children:(0,q.jsx)(ya,{sessionId:e,open:re,onClose:()=>pe(!1)})}),(0,q.jsx)(pa,{sessionId:e}),(0,q.jsx)(fa,{sessionId:e,showOrch:re,setShowOrch:pe,selectedModel:v,onModelSelect:Se,onModelError:Ce})]})]}),e!==void 0&&t!==void 0&&(0,q.jsx)(tc,{label:`SessionTreePanel`,compact:!0,children:(0,q.jsx)(Va,{sessionId:e,projectId:t,open:te,onClose:()=>de(!1)})}),t!==void 0&&(0,q.jsx)(tc,{label:`FileExplorer`,compact:!0,children:(0,q.jsx)(bs,{projectId:t,open:H!==void 0,onClose:()=>_e(void 0),initialTab:H})}),P!==void 0&&(0,q.jsx)(`div`,{className:`settings-overlay`,onClick:()=>F(void 0),children:(0,q.jsxs)(`div`,{className:`settings-panel rewind-panel`,onClick:e=>e.stopPropagation(),style:{width:420,maxWidth:`90vw`,height:`auto`,minHeight:0},children:[(0,q.jsxs)(`header`,{className:`settings-header`,children:[(0,q.jsx)(`span`,{style:{fontSize:14,fontWeight:600},children:`Remove project?`}),(0,q.jsx)(`button`,{onClick:()=>F(void 0),className:`settings-close`,title:`Close`,children:`✕`})]}),(0,q.jsxs)(`div`,{className:`settings-body`,style:{padding:`16px`},children:[(0,q.jsxs)(`p`,{style:{fontSize:13,color:`var(--text-secondary)`,marginBottom:20,lineHeight:1.5},children:[`This removes `,(0,q.jsx)(`strong`,{children:n.find(e=>e.id===P)?.name??P}),` from the sidebar — all sessions stay safely on disk. You can add it back anytime.`]}),(0,q.jsxs)(`div`,{style:{display:`flex`,gap:8,justifyContent:`flex-end`},children:[(0,q.jsx)(`button`,{onClick:()=>F(void 0),className:`settings-tab`,style:{padding:`6px 14px`,fontSize:12},children:`Cancel`}),(0,q.jsx)(`button`,{onClick:()=>{K.getState().deleteProject(P),F(void 0)},className:`settings-tab settings-tab-active`,style:{padding:`6px 14px`,fontSize:12,background:`var(--accent-red, #e06c75)`,color:`#fff`,border:`none`},children:`Remove`})]})]})]})}),ne&&(0,q.jsx)(tc,{label:`SettingsPanel`,compact:!0,children:(0,q.jsx)(Uo,{onClose:()=>fe(!1)})}),I!==void 0&&(0,q.jsx)(Ca,{data:I,onClose:()=>ee(void 0),sessionId:e}),(0,q.jsx)(tc,{label:`TerminalPanel`,compact:!0,children:(0,q.jsx)(Fs,{open:ae,onClose:()=>he(!1)})}),ie&&(0,q.jsx)(tc,{label:`MCPPanel`,compact:!0,children:(0,q.jsx)(Na,{onClose:()=>me(!1)})}),e!==void 0&&(0,q.jsx)(Bs,{sessionId:e}),(0,q.jsx)(Vs,{}),oe&&(0,q.jsx)(ec,{open:oe,onClose:()=>ge(!1)})]})}lo(co());var lc=document.getElementById(`root`);if(lc===null)throw Error(`root element not found`);(0,Te.createRoot)(lc).render((0,q.jsx)(U.StrictMode,{children:(0,q.jsx)(cc,{})}));
75
- //# sourceMappingURL=index-CE_Na97I.js.map
75
+ //# sourceMappingURL=index-JjvNnqN_.js.map