diff --git a/.changeset/web-composer-mobile-shortcut-hints.md b/.changeset/web-composer-mobile-shortcut-hints.md
new file mode 100644
index 0000000000..151c369c43
--- /dev/null
+++ b/.changeset/web-composer-mobile-shortcut-hints.md
@@ -0,0 +1,5 @@
+---
+"@moonshot-ai/kimi-code": patch
+---
+
+Remove the Enter/Ctrl+S shortcut hints from the mobile web composer: touch-primary devices disable both shortcuts, so the running placeholder and the queued-message steer label no longer advertise them. Ships the fork web bundle.
diff --git a/.changeset/web-composer-mode-chips.md b/.changeset/web-composer-mode-chips.md
new file mode 100644
index 0000000000..6edfa75dac
--- /dev/null
+++ b/.changeset/web-composer-mode-chips.md
@@ -0,0 +1,5 @@
+---
+"@moonshot-ai/kimi-code": patch
+---
+
+Move the plan/goal mode pills out of the web composer's input row into the toolbar chip cluster next to swarm/supermoon, so typed text uses the full input width. Plan and goal stay mutually exclusive (arming one clears the other), and the mobile settings sheet gains a Goal mode toggle. Ships the fork web bundle.
diff --git a/apps/kimi-code/dist-web/assets/DesignSystemView-CgaL5VJY.css b/apps/kimi-code/dist-web/assets/DesignSystemView-CgaL5VJY.css
new file mode 100644
index 0000000000..c87b12572d
--- /dev/null
+++ b/apps/kimi-code/dist-web/assets/DesignSystemView-CgaL5VJY.css
@@ -0,0 +1 @@
+.ds-page[data-v-68e41541]{--d-bg: var(--color-bg);--d-surface: var(--color-surface);--d-surface-2: var(--color-surface-sunken);--d-surface-3: var(--color-line);--d-fg: var(--color-text);--d-fg-soft: var(--color-text-muted);--d-fg-muted: var(--color-text-muted);--d-fg-faint: var(--color-text-faint);--d-line: var(--color-line);--d-line-2: var(--color-line);--d-accent: var(--color-accent);--d-accent-2: var(--color-accent-hover);--d-accent-soft: var(--color-accent-soft);--d-accent-bd: var(--color-accent-bd);--d-green: var(--color-success);--d-green-soft: var(--color-success-soft);--d-amber: var(--color-warning);--d-amber-soft: var(--color-warning-soft);--d-red: var(--color-danger);--d-red-soft: var(--color-danger-soft);--d-violet: var(--color-done);--d-code-bg: var(--color-surface-sunken);--d-sidebar: var(--color-surface);--d-shadow-sm: var(--shadow-sm);--d-shadow-md: var(--shadow-md);--d-shadow-lg: var(--shadow-lg);--sidebar-w: var(--p-sidebar-w);--content-max: var(--p-content-wide)}.ds-page[data-v-68e41541] *,.ds-page[data-v-68e41541] *:before,.ds-page[data-v-68e41541] *:after{box-sizing:border-box}.ds-page[data-v-68e41541]{scroll-behavior:smooth}.ds-page[data-v-68e41541]{margin:0;background:var(--d-bg);color:var(--color-text);font-family:var(--font-ui);font-size:var(--text-base);line-height:1.65;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1[data-v-68e41541],h2[data-v-68e41541],h3[data-v-68e41541],h4[data-v-68e41541]{color:var(--d-fg);letter-spacing:-.01em;line-height:1.25;margin:0}p[data-v-68e41541]{margin:0 0 14px;color:var(--d-fg-soft)}a[data-v-68e41541]{color:var(--d-accent-2);text-decoration:none}a[data-v-68e41541]:hover{text-decoration:underline}code[data-v-68e41541],pre[data-v-68e41541],.mono[data-v-68e41541]{font-family:JetBrains Mono,ui-monospace,SF Mono,Menlo,Consolas,monospace}code[data-v-68e41541]{background:var(--d-code-bg);border:1px solid var(--d-line-2);border-radius:5px;padding:1px 6px;font-size:.88em;color:#1f2937;white-space:nowrap}.layout[data-v-68e41541]{display:grid;grid-template-columns:var(--sidebar-w) minmax(0,1fr);min-height:100vh}.sidebar[data-v-68e41541]{position:sticky;top:0;align-self:start;height:100vh;background:var(--d-sidebar);border-right:1px solid var(--d-line);padding:26px 22px;overflow-y:auto}.brand[data-v-68e41541]{display:flex;align-items:center;gap:10px;margin-bottom:6px}.brand-mark[data-v-68e41541]{width:26px;height:26px;border-radius:7px;flex:none;background:var(--d-fg);color:#fff;display:grid;place-items:center;font-weight:800;font-size:14px;letter-spacing:-.04em}.brand-name[data-v-68e41541]{font-weight:700;font-size:15px;letter-spacing:-.01em}.brand-sub[data-v-68e41541]{font-size:12px;color:var(--d-fg-faint);margin-bottom:26px;padding-left:36px}.nav-group[data-v-68e41541]{margin:22px 0 8px;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--d-fg-faint)}.p-section-label[data-v-68e41541]{font-size:12px;font-weight:400;text-transform:uppercase;color:var(--d-fg-faint)}.nav a[data-v-68e41541]{display:flex;align-items:center;gap:9px;padding:7px 10px;border-radius:7px;font-size:13.5px;font-weight:500;color:var(--d-fg-soft);margin:1px 0;transition:background .15s,color .15s}.nav a .num[data-v-68e41541]{font-family:JetBrains Mono,monospace;font-size:11px;color:var(--d-fg-faint);width:18px}.nav a[data-v-68e41541]:hover{background:var(--d-surface-2);color:var(--d-fg);text-decoration:none}.nav a.active[data-v-68e41541]{background:var(--d-accent-soft);color:var(--d-accent-2)}.nav a.active .num[data-v-68e41541]{color:var(--d-accent-2)}.content[data-v-68e41541]{min-width:0}.content-inner[data-v-68e41541]{max-width:var(--content-max);margin:0 auto;padding:64px 56px 120px}section[data-v-68e41541]{scroll-margin-top:32px;padding-top:8px}section+section[data-v-68e41541]{margin-top:72px}.hero[data-v-68e41541]{padding:8px 0 40px;border-bottom:1px solid var(--d-line);margin-bottom:56px}.eyebrow[data-v-68e41541]{display:inline-flex;align-items:center;gap:8px;font-family:JetBrains Mono,monospace;font-size:12px;font-weight:600;letter-spacing:.04em;color:var(--d-fg);background:#1783ff1a;border:none;padding:6px 12px;border-radius:8px;margin-bottom:22px}.hero h1[data-v-68e41541]{font-size:48px;font-weight:600;line-height:1.08;letter-spacing:-.025em;margin-bottom:18px}.hero h1 .grad[data-v-68e41541]{color:var(--d-accent)}.hero p.lead[data-v-68e41541]{font-size:18px;line-height:1.6;color:var(--d-fg-soft);max-width:680px}.hero-meta[data-v-68e41541]{display:flex;flex-wrap:wrap;gap:10px;margin-top:28px}.meta-chip[data-v-68e41541]{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;color:var(--d-fg-muted);background:var(--d-surface);border:1px solid var(--d-line);border-radius:8px;padding:7px 12px}.meta-chip b[data-v-68e41541]{color:var(--d-fg);font-weight:600}.meta-chip .dot[data-v-68e41541]{width:7px;height:7px;border-radius:50%;background:var(--d-green)}.sec-head[data-v-68e41541]{display:flex;align-items:baseline;gap:14px;margin-bottom:8px}.sec-num[data-v-68e41541]{font-family:JetBrains Mono,monospace;font-size:13px;font-weight:600;color:var(--d-accent-2)}.sec-title[data-v-68e41541]{font-size:26px;letter-spacing:-.02em}.sec-desc[data-v-68e41541]{font-size:15.5px;color:var(--d-fg-muted);max-width:720px;margin-bottom:28px}h3.sub[data-v-68e41541]{font-size:17px;margin:40px 0 14px;display:flex;align-items:center;gap:10px}h3.sub[data-v-68e41541]:before{content:"";width:4px;height:16px;border-radius:2px;background:var(--d-accent)}h4.mini[data-v-68e41541]{font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:var(--d-fg-muted);margin:24px 0 12px}.stat-grid[data-v-68e41541]{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:24px 0}.stat[data-v-68e41541]{background:var(--d-surface);border:1px solid var(--d-line);border-radius:14px;padding:18px 18px 16px}.stat .v[data-v-68e41541]{font-size:34px;font-weight:800;letter-spacing:-.03em;line-height:1;color:var(--d-fg)}.stat .v small[data-v-68e41541]{font-size:16px;color:var(--d-fg-muted);font-weight:600}.stat .l[data-v-68e41541]{font-size:12.5px;color:var(--d-fg-muted);margin-top:8px;line-height:1.4}.stat.warn[data-v-68e41541]{background:var(--d-amber-soft);border-color:#f0d9b8}.stat.warn .v[data-v-68e41541]{color:var(--d-amber)}.stat.bad[data-v-68e41541]{background:var(--d-red-soft);border-color:#f0cccc}.stat.bad .v[data-v-68e41541]{color:var(--d-red)}.stat.good[data-v-68e41541]{background:var(--d-green-soft);border-color:#bfe3cc}.stat.good .v[data-v-68e41541]{color:var(--d-green)}.panel[data-v-68e41541]{background:var(--d-bg);border:1px solid var(--d-line);border-radius:16px;box-shadow:var(--d-shadow-sm)}.panel-pad[data-v-68e41541]{padding:22px}.panel-soft[data-v-68e41541]{background:var(--d-surface);border:1px solid var(--d-line);border-radius:14px}.callout[data-v-68e41541]{display:flex;gap:12px;padding:14px 16px;border-radius:12px;font-size:14px;line-height:1.55;background:var(--d-surface);border:1px solid var(--d-line);color:var(--d-fg-soft);margin:18px 0}.callout .ico[data-v-68e41541]{flex:none;width:20px;height:20px;border-radius:6px;display:grid;place-items:center;font-size:12px;font-weight:800}.callout.info[data-v-68e41541]{background:var(--d-accent-soft);border-color:var(--d-accent-bd)}.callout.info .ico[data-v-68e41541]{background:var(--d-accent);color:#fff}.callout.warn[data-v-68e41541]{background:var(--d-amber-soft);border-color:#f0d9b8}.callout.warn .ico[data-v-68e41541]{background:var(--d-amber);color:#fff}.callout.good[data-v-68e41541]{background:var(--d-green-soft);border-color:#bfe3cc}.callout.good .ico[data-v-68e41541]{background:var(--d-green);color:#fff}table.dt[data-v-68e41541]{width:100%;border-collapse:collapse;font-size:13.5px;margin:16px 0}table.dt th[data-v-68e41541]{text-align:left;font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--d-fg-faint);font-weight:700;padding:10px 12px;border-bottom:1px solid var(--d-line)}table.dt td[data-v-68e41541]{padding:11px 12px;border-bottom:1px solid var(--d-line-2);color:var(--d-fg-soft);vertical-align:middle}table.dt tr:last-child td[data-v-68e41541]{border-bottom:none}table.dt td.tk[data-v-68e41541]{font-family:JetBrains Mono,monospace;font-size:12.5px;color:var(--d-fg);white-space:nowrap}table.dt td.val[data-v-68e41541]{font-family:JetBrains Mono,monospace;font-size:12px;color:var(--d-fg-muted)}.swatch[data-v-68e41541]{display:inline-block;width:16px;height:16px;border-radius:4px;border:1px solid rgba(0,0,0,.08);vertical-align:-3px;margin-right:8px}.palette[data-v-68e41541]{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:16px 0}.color-card[data-v-68e41541]{border:1px solid var(--d-line);border-radius:12px;overflow:hidden;background:var(--d-bg)}.color-chip[data-v-68e41541]{height:56px;border-bottom:1px solid var(--d-line)}.color-meta[data-v-68e41541]{padding:10px 12px 12px}.color-meta .cn[data-v-68e41541]{font-size:13px;font-weight:600;color:var(--d-fg)}.color-meta .cv[data-v-68e41541]{font-family:JetBrains Mono,monospace;font-size:11.5px;color:var(--d-fg-muted);margin-top:2px}.type-row[data-v-68e41541]{display:flex;align-items:baseline;gap:18px;padding:13px 0;border-bottom:1px solid var(--d-line-2)}.type-row[data-v-68e41541]:last-child{border-bottom:none}.type-sample[data-v-68e41541]{flex:1;color:var(--d-fg);line-height:1.2}.type-meta[data-v-68e41541]{width:190px;flex:none;text-align:right;font-family:JetBrains Mono,monospace;font-size:12px;color:var(--d-fg-muted)}.space-row[data-v-68e41541]{display:flex;align-items:center;gap:16px;padding:10px 0;border-bottom:1px solid var(--d-line-2)}.space-row[data-v-68e41541]:last-child{border-bottom:none}.space-bar[data-v-68e41541]{height:18px;border-radius:4px;background:linear-gradient(90deg,var(--d-accent),var(--d-accent-2));flex:none}.space-meta[data-v-68e41541]{font-family:JetBrains Mono,monospace;font-size:12.5px;color:var(--d-fg-soft);width:150px}.space-use[data-v-68e41541]{font-size:12.5px;color:var(--d-fg-muted)}.radius-grid[data-v-68e41541]{display:flex;flex-wrap:wrap;gap:22px;align-items:flex-end;margin:16px 0}.radius-item[data-v-68e41541]{display:flex;flex-direction:column;align-items:center;gap:10px}.radius-box[data-v-68e41541]{width:64px;height:64px;border:2px solid var(--d-accent);background:var(--d-accent-soft)}.radius-item .rl[data-v-68e41541]{font-family:JetBrains Mono,monospace;font-size:12px;color:var(--d-fg-soft)}.stage-wrap[data-v-68e41541]{border:1px solid var(--d-line);border-radius:16px;overflow:hidden;margin:18px 0;background:var(--d-bg);box-shadow:var(--d-shadow-sm)}.stage-bar[data-v-68e41541]{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--d-line);background:var(--d-surface)}.stage-bar .st[data-v-68e41541]{font-size:13px;font-weight:600;color:var(--d-fg);display:flex;align-items:center;gap:8px}.stage-bar .st .tag[data-v-68e41541]{font-size:10.5px;font-weight:700;letter-spacing:.04em;padding:2px 7px;border-radius:999px}.tag.after[data-v-68e41541]{background:var(--d-green-soft);color:var(--d-green)}.tag.before[data-v-68e41541]{background:var(--d-red-soft);color:var(--d-red)}.tag.spec[data-v-68e41541]{background:var(--d-accent-soft);color:var(--d-accent-2)}.stage-bar .sactions[data-v-68e41541]{display:flex;gap:6px}.tab[data-v-68e41541]{font-family:JetBrains Mono,monospace;font-size:11.5px;padding:4px 10px;border-radius:6px;color:var(--d-fg-muted);cursor:default}.tab.on[data-v-68e41541]{background:var(--d-bg);color:var(--d-fg);border:1px solid var(--d-line)}.stage[data-v-68e41541]{padding:32px;display:flex;flex-wrap:wrap;align-items:center;gap:16px;background:radial-gradient(circle at 1px 1px,rgba(0,0,0,.045) 1px,transparent 0) 0 0 / 18px 18px,var(--d-surface)}.stage.col[data-v-68e41541]{flex-direction:column;align-items:stretch}.stage.dark[data-v-68e41541]{background:radial-gradient(circle at 1px 1px,rgba(255,255,255,.06) 1px,transparent 0) 0 0 / 18px 18px,#0d1117}.stage-label[data-v-68e41541]{width:100%;font-size:11.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--d-fg-faint);margin-bottom:-6px}.stage.dark .stage-label[data-v-68e41541]{color:#6b7280}.ba[data-v-68e41541]{display:grid;grid-template-columns:1fr 1fr;gap:0;border:1px solid var(--d-line);border-radius:16px;overflow:hidden;margin:18px 0;box-shadow:var(--d-shadow-sm)}.ba-col[data-v-68e41541]{min-width:0}.ba-col+.ba-col[data-v-68e41541]{border-left:1px solid var(--d-line)}.ba-head[data-v-68e41541]{display:flex;align-items:center;justify-content:space-between;padding:11px 16px;border-bottom:1px solid var(--d-line)}.ba-head.before[data-v-68e41541]{background:var(--d-red-soft)}.ba-head.after[data-v-68e41541]{background:var(--d-green-soft)}.ba-head .bh[data-v-68e41541]{font-size:13px;font-weight:700}.ba-head.before .bh[data-v-68e41541]{color:var(--d-red)}.ba-head.after .bh[data-v-68e41541]{color:var(--d-green)}.ba-head .bh small[data-v-68e41541]{font-weight:500;opacity:.7;margin-left:6px}.ba-body[data-v-68e41541]{padding:24px;background:var(--d-surface);min-height:120px}.ba-col.after .ba-body[data-v-68e41541]{background:#fff}.code[data-v-68e41541]{background:#0d1117;border-radius:12px;overflow:hidden;margin:16px 0;border:1px solid #1c2128}.code-bar[data-v-68e41541]{display:flex;align-items:center;gap:8px;padding:9px 14px;background:#161b22;border-bottom:1px solid #1c2128}.code-bar .d[data-v-68e41541]{width:10px;height:10px;border-radius:50%;background:#30363d}.code-bar .fn[data-v-68e41541]{font-family:JetBrains Mono,monospace;font-size:11.5px;color:#8b949e;margin-left:4px}.code pre[data-v-68e41541]{margin:0;padding:18px;overflow-x:auto;font-size:12.5px;line-height:1.7;color:#c9d1d9}.code .c[data-v-68e41541]{color:#8b949e}.code .k[data-v-68e41541]{color:#ff7b72}.code .s[data-v-68e41541]{color:#a5d6ff}.code .p[data-v-68e41541]{color:#79c0ff}.code .n[data-v-68e41541]{color:#d2a8ff}.code .v[data-v-68e41541]{color:#ffa657}.pill[data-v-68e41541]{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;padding:3px 9px;border-radius:999px;border:1px solid var(--d-line);background:var(--d-surface);color:var(--d-fg-soft)}.pill.blue[data-v-68e41541]{background:var(--d-accent-soft);border-color:var(--d-accent-bd);color:var(--d-accent-2)}.pill.green[data-v-68e41541]{background:var(--d-green-soft);border-color:#bfe3cc;color:var(--d-green)}.pill.amber[data-v-68e41541]{background:var(--d-amber-soft);border-color:#f0d9b8;color:var(--d-amber)}.pill.red[data-v-68e41541]{background:var(--d-red-soft);border-color:#f0cccc;color:var(--d-red)}.pill.mono[data-v-68e41541]{font-family:JetBrains Mono,monospace}ul.clean[data-v-68e41541]{list-style:none;padding:0;margin:14px 0}ul.clean li[data-v-68e41541]{position:relative;padding:8px 0 8px 26px;color:var(--d-fg-soft);border-bottom:1px solid var(--d-line-2)}ul.clean li[data-v-68e41541]:last-child{border-bottom:none}ul.clean li[data-v-68e41541]:before{content:"";position:absolute;left:4px;top:17px;width:7px;height:7px;border-radius:50%;background:var(--d-accent)}ul.clean.check li[data-v-68e41541]:before{content:"✓";background:none;color:var(--d-green);font-weight:800;top:7px;left:0;font-size:14px}ul.clean.cross li[data-v-68e41541]:before{content:"✕";background:none;color:var(--d-red);font-weight:800;top:7px;left:0;font-size:13px}ul.clean li b[data-v-68e41541]{color:var(--d-fg)}ul.clean li .path[data-v-68e41541]{font-family:JetBrains Mono,monospace;font-size:12px;color:var(--d-fg-muted)}.roadmap[data-v-68e41541]{position:relative;margin:24px 0}.phase[data-v-68e41541]{position:relative;display:grid;grid-template-columns:120px 1fr;gap:24px;padding:0 0 32px}.phase[data-v-68e41541]:not(:last-child):after{content:"";position:absolute;left:59px;top:36px;bottom:0;width:2px;background:var(--d-line)}.phase-tag[data-v-68e41541]{text-align:right;padding-top:4px}.phase-tag .pt[data-v-68e41541]{display:inline-block;font-family:JetBrains Mono,monospace;font-size:12px;font-weight:700;color:var(--d-accent-2);background:var(--d-accent-soft);border:1px solid var(--d-accent-bd);padding:5px 10px;border-radius:8px}.phase-tag .pe[data-v-68e41541]{font-size:11.5px;color:var(--d-fg-faint);margin-top:8px}.phase-body[data-v-68e41541]{background:var(--d-bg);border:1px solid var(--d-line);border-radius:14px;padding:18px 20px;box-shadow:var(--d-shadow-sm)}.phase-body h4[data-v-68e41541]{font-size:16px;margin-bottom:8px}.phase-body p[data-v-68e41541]{font-size:14px;margin-bottom:12px}.phase-body ul[data-v-68e41541]{margin:0}.matrix[data-v-68e41541]{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:16px 0}.anti[data-v-68e41541]{border:1px solid var(--d-line);border-radius:12px;padding:16px;background:var(--d-bg)}.anti .ah[data-v-68e41541]{display:flex;align-items:center;gap:9px;font-size:14px;font-weight:700;margin-bottom:8px}.anti .ah .verdict[data-v-68e41541]{margin-left:auto;font-size:11px;font-weight:800;padding:2px 8px;border-radius:999px}.verdict.pass[data-v-68e41541]{background:var(--d-green-soft);color:var(--d-green)}.verdict.fail[data-v-68e41541]{background:var(--d-red-soft);color:var(--d-red)}.verdict.warn[data-v-68e41541]{background:var(--d-amber-soft);color:var(--d-amber)}.anti p[data-v-68e41541]{font-size:13px;margin:0;color:var(--d-fg-muted)}.footer[data-v-68e41541]{margin-top:80px;padding-top:28px;border-top:1px solid var(--d-line);font-size:13px;color:var(--d-fg-faint);display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px}.kbd[data-v-68e41541]{font-family:JetBrains Mono,monospace;font-size:11px;background:var(--d-surface-2);border:1px solid var(--d-line);border-bottom-width:2px;border-radius:5px;padding:1px 6px}@media(max-width:980px){.layout[data-v-68e41541]{grid-template-columns:1fr}.sidebar[data-v-68e41541]{position:static;height:auto}.nav[data-v-68e41541]{display:flex;flex-wrap:wrap;gap:4px}.content-inner[data-v-68e41541]{padding:40px 22px 80px}.stat-grid[data-v-68e41541]{grid-template-columns:repeat(2,1fr)}.ba[data-v-68e41541]{grid-template-columns:1fr}.ba-col+.ba-col[data-v-68e41541]{border-left:none;border-top:1px solid var(--d-line)}.palette[data-v-68e41541]{grid-template-columns:repeat(2,1fr)}.matrix[data-v-68e41541]{grid-template-columns:1fr}}.ds-page .p[data-v-68e41541],.ds-page .stage.p-skin[data-v-68e41541],.ds-page [data-p][data-v-68e41541]{--p-font-sans: var(--font-ui);--p-font-mono: var(--font-mono);--p-bg: var(--color-bg);--p-surface: var(--color-surface);--p-surface-raised: var(--color-surface-raised);--p-surface-sunken: var(--color-surface-sunken);--p-text: var(--color-text);--p-text-muted: var(--color-text-muted);--p-text-faint: var(--color-text-faint);--p-text-on-accent: var(--color-text-on-accent);--p-line: var(--color-line);--p-line-strong: var(--color-line-strong);--p-accent: var(--color-accent);--p-accent-hover: var(--color-accent-hover);--p-accent-soft: var(--color-accent-soft);--p-accent-bd: var(--color-accent-bd);--p-success: var(--color-success);--p-success-soft: var(--color-success-soft);--p-success-bd: var(--color-success-bd);--p-warning: var(--color-warning);--p-warning-soft: var(--color-warning-soft);--p-warning-bd: var(--color-warning-bd);--p-danger: var(--color-danger);--p-danger-soft: var(--color-danger-soft);--p-danger-bd: var(--color-danger-bd);--p-info: var(--color-info);--p-sp-1: var(--space-1);--p-sp-2: var(--space-2);--p-sp-3: var(--space-3);--p-sp-4: var(--space-4);--p-sp-5: var(--space-5);--p-sp-6: var(--space-6);--p-sp-8: var(--space-8);--p-r-xs: var(--radius-xs);--p-r-sm: var(--radius-sm);--p-r-md: var(--radius-md);--p-r-lg: var(--radius-lg);--p-r-xl: var(--radius-xl);--p-r-2xl: var(--radius-2xl);--p-r-full: var(--radius-full);--p-sh-xs: var(--shadow-xs);--p-sh-sm: var(--shadow-sm);--p-sh-md: var(--shadow-md);--p-sh-lg: var(--shadow-lg);--p-sh-xl: var(--shadow-xl);--p-font-size-xs: var(--text-xs);--p-font-size-sm: var(--text-sm);--p-font-size-base: var(--text-base);--p-font-size-md: var(--text-base);--p-font-size-lg: var(--text-lg);--p-font-size-xl: var(--text-xl);--p-font-size-2xl: var(--text-2xl);--p-leading-tight: var(--leading-tight);--p-leading-normal: var(--leading-normal);--p-leading-relaxed: var(--leading-relaxed);--p-ease: var(--ease-out);--p-ease-inout: var(--ease-in-out);--p-dur-fast: var(--duration-fast);--p-dur: var(--duration-base);--p-dur-slow: var(--duration-slow);font-family:var(--font-ui);color:var(--color-text);font-size:var(--text-base)}.ds-page [data-p=dark][data-v-68e41541]{--p-bg: #0d1117;--p-surface: #161b22;--p-surface-raised: #1c2128;--p-surface-sunken: #0d1117;--p-text: #c9cdd4;--p-text-muted: #9aa0a8;--p-text-faint: #6b7280;--p-text-on-accent: #ffffff;--p-line: #2d333b;--p-line-strong: #3d444d;--p-accent: #58a6ff;--p-accent-hover: #79b8ff;--p-accent-soft: rgba(88,166,255,.14);--p-accent-bd: rgba(88,166,255,.28);--p-success: #3fb950;--p-success-soft: rgba(63,185,80,.14);--p-success-bd: rgba(63,185,80,.28);--p-warning: #d29922;--p-warning-soft: rgba(210,153,34,.14);--p-warning-bd: rgba(210,153,34,.28);--p-danger: #f85149;--p-danger-soft: rgba(248,81,73,.14);--p-danger-bd: rgba(248,81,73,.28);--p-sh-sm: 0 1px 2px rgba(0,0,0,.4);--p-sh-md: 0 4px 12px rgba(0,0,0,.45);--p-sh-lg: 0 12px 32px rgba(0,0,0,.55);--p-selection: rgba(88,166,255,.32)}.p-ic[data-v-68e41541]{width:16px;height:16px;flex:none;display:inline-block;vertical-align:middle}.p-btn[data-v-68e41541]{--_h: 36px;--_px: 16px;--_fs: var(--p-font-size-base);--_r: var(--p-r-md);display:inline-flex;align-items:center;justify-content:center;gap:8px;height:var(--_h);padding:0 var(--_px);border-radius:var(--_r);font-family:var(--p-font-sans);font-size:var(--_fs);font-weight:600;line-height:1;border:1px solid transparent;cursor:pointer;white-space:nowrap;transition:background var(--p-dur) var(--p-ease),border-color var(--p-dur) var(--p-ease),color var(--p-dur) var(--p-ease),box-shadow var(--p-dur) var(--p-ease),transform var(--p-dur-fast) var(--p-ease)}.p-btn[data-v-68e41541]:active{transform:scale(.98)}.p-btn[data-v-68e41541]:focus-visible{outline:none;box-shadow:0 0 0 3px var(--p-accent-soft),0 0 0 1px var(--p-accent)}.p-btn .p-ic[data-v-68e41541]{width:16px;height:16px}.p-btn.sm[data-v-68e41541]{--_h: 30px;--_px: 12px;--_fs: var(--p-font-size-sm);--_r: var(--p-r-sm)}.p-btn.sm .p-ic[data-v-68e41541]{width:14px;height:14px}.p-btn.lg[data-v-68e41541]{--_h: 42px;--_px: 20px;--_fs: var(--p-font-size-md);--_r: var(--p-r-lg)}.p-btn.primary[data-v-68e41541]{background:var(--p-accent);color:var(--p-text-on-accent);border-color:var(--p-accent);box-shadow:var(--p-sh-xs)}.p-btn.primary[data-v-68e41541]:hover{background:var(--p-accent-hover);border-color:var(--p-accent-hover)}.p-btn.secondary[data-v-68e41541]{background:var(--p-surface-raised);color:var(--p-text);border-color:var(--p-line-strong);box-shadow:var(--p-sh-xs)}.p-btn.secondary[data-v-68e41541]:hover{background:var(--p-surface-sunken);border-color:var(--p-line-strong)}.p-btn.ghost[data-v-68e41541]{background:transparent;color:var(--p-text);border-color:transparent}.p-btn.ghost[data-v-68e41541]:hover{background:var(--p-surface-sunken);color:var(--p-text)}.p-btn.danger[data-v-68e41541]{background:var(--p-danger);color:#fff;border-color:var(--p-danger);box-shadow:var(--p-sh-xs)}.p-btn.danger[data-v-68e41541]:hover{filter:brightness(.96)}.p-btn.danger-soft[data-v-68e41541]{background:var(--p-danger-soft);color:var(--p-danger);border-color:var(--p-danger-bd)}.p-btn.danger-soft[data-v-68e41541]:hover{background:var(--p-danger);color:#fff;border-color:var(--p-danger)}.p-btn[disabled][data-v-68e41541],.p-btn.disabled[data-v-68e41541]{opacity:.5;cursor:not-allowed;box-shadow:none;transform:none}.p-icon-btn[data-v-68e41541]{--_s: 32px;display:inline-grid;place-items:center;width:var(--_s);height:var(--_s);flex:none;border-radius:var(--p-r-md);border:1px solid transparent;background:transparent;color:var(--p-text-muted);cursor:pointer;transition:background var(--p-dur) var(--p-ease),color var(--p-dur) var(--p-ease)}.p-icon-btn[data-v-68e41541]:hover{background:var(--p-surface-sunken);color:var(--p-text)}.p-icon-btn[data-v-68e41541]:focus-visible{outline:none;box-shadow:0 0 0 3px var(--p-accent-soft)}.p-icon-btn.sm[data-v-68e41541]{--_s: 26px;border-radius:var(--p-r-sm)}.p-icon-btn.lg[data-v-68e41541]{--_s: 44px}.p-icon-btn .p-ic[data-v-68e41541]{width:16px;height:16px}.p-icon-btn.lg .p-ic[data-v-68e41541]{width:20px;height:20px}.p-badge[data-v-68e41541]{display:inline-flex;align-items:center;gap:6px;height:22px;padding:0 9px;border-radius:var(--p-r-full);font-family:var(--p-font-sans);font-size:var(--p-font-size-xs);font-weight:600;line-height:1;border:1px solid var(--p-line);background:var(--p-surface);color:var(--p-text);white-space:nowrap}.p-badge.sm[data-v-68e41541]{height:18px;padding:0 7px;font-size:11px}.p-badge .bd[data-v-68e41541]{width:7px;height:7px;border-radius:50%;background:currentColor}.p-badge.neutral[data-v-68e41541]{background:var(--p-surface-sunken);border-color:var(--p-line);color:var(--p-text-muted)}.p-badge.info[data-v-68e41541]{background:var(--p-accent-soft);border-color:var(--p-accent-bd);color:var(--p-accent-hover)}.p-badge.success[data-v-68e41541]{background:var(--p-success-soft);border-color:var(--p-success-bd);color:var(--p-success)}.p-badge.warning[data-v-68e41541]{background:var(--p-warning-soft);border-color:var(--p-warning-bd);color:var(--p-warning)}.p-badge.danger[data-v-68e41541]{background:var(--p-danger-soft);border-color:var(--p-danger-bd);color:var(--p-danger)}.p-badge.solid[data-v-68e41541]{background:var(--p-text);color:var(--p-bg);border-color:var(--p-text)}.p-badge .p-ic[data-v-68e41541]{width:12px;height:12px}.p-kbd[data-v-68e41541]{display:inline-flex;align-items:center;gap:3px}.p-kbd kbd[data-v-68e41541]{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border:1px solid var(--p-line);border-bottom-width:2px;border-radius:var(--p-r-xs);background:var(--p-surface-sunken);color:var(--p-text-muted);font-family:var(--p-font-sans);font-size:11px;line-height:1}.p-pill[data-v-68e41541]{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px;border-radius:var(--p-r-md);border:1px solid transparent;background:transparent;font-family:var(--p-font-sans);font-size:var(--p-font-size-sm);font-weight:500;color:var(--p-text);cursor:pointer;transition:background var(--p-dur) var(--p-ease),color var(--p-dur) var(--p-ease)}.p-pill[data-v-68e41541]:hover{background:var(--p-surface-sunken);color:var(--p-text)}.p-pill .pp-strong[data-v-68e41541]{font-weight:700;color:var(--p-text)}.p-pill .pp-sub[data-v-68e41541]{color:var(--p-accent);font-weight:600}.p-pill .p-ic[data-v-68e41541]{width:14px;height:14px;color:var(--p-text-faint)}.p-card[data-v-68e41541]{background:var(--p-surface);border:1px solid var(--p-line);border-radius:var(--p-r-md);overflow:hidden;color:var(--p-text)}.p-card.interactive[data-v-68e41541]{transition:background var(--p-dur) var(--p-ease),border-color var(--p-dur) var(--p-ease);cursor:pointer}.p-card.interactive[data-v-68e41541]:hover{background:var(--p-surface);border-color:var(--p-line-strong)}.p-card-head[data-v-68e41541]{display:flex;align-items:center;gap:9px;padding:10px 14px;border-bottom:1px solid var(--p-line);background:var(--p-surface)}.p-card-title[data-v-68e41541]{font-size:var(--p-font-size-sm);font-weight:600;color:var(--p-text);font-family:var(--p-font-mono)}.p-card-body[data-v-68e41541]{padding:14px;font-size:var(--p-font-size-base);color:var(--p-text);line-height:var(--p-leading-normal)}.p-card-foot[data-v-68e41541]{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:10px 14px;border-top:1px solid var(--p-line);background:var(--p-surface)}.p-field[data-v-68e41541]{display:flex;flex-direction:column;gap:6px}.p-label[data-v-68e41541]{font-size:var(--p-font-size-sm);font-weight:600;color:var(--p-text)}.p-input[data-v-68e41541],.p-select[data-v-68e41541],.p-textarea[data-v-68e41541]{width:100%;height:38px;padding:0 12px;border-radius:var(--p-r-md);border:1px solid var(--p-line-strong);background:var(--p-surface-raised);font-family:var(--p-font-sans);font-size:var(--p-font-size-base);color:var(--p-text);box-shadow:var(--p-sh-xs);transition:border-color var(--p-dur) var(--p-ease),box-shadow var(--p-dur) var(--p-ease)}.p-textarea[data-v-68e41541]{height:auto;min-height:84px;padding:10px 12px;resize:vertical;line-height:var(--p-leading-normal)}.p-input[data-v-68e41541]:hover,.p-select[data-v-68e41541]:hover,.p-textarea[data-v-68e41541]:hover{border-color:var(--p-line-strong)}.p-input[data-v-68e41541]:focus,.p-select[data-v-68e41541]:focus,.p-textarea[data-v-68e41541]:focus{outline:none;border-color:var(--p-accent);box-shadow:0 0 0 3px var(--p-accent-soft)}.p-input[data-v-68e41541]::placeholder,.p-textarea[data-v-68e41541]::placeholder{color:var(--p-text-faint)}.p-input.sm[data-v-68e41541]{height:32px;font-size:var(--p-font-size-sm);border-radius:var(--p-r-sm)}.p-hint[data-v-68e41541]{font-size:var(--p-font-size-xs);color:var(--p-text-faint)}.p-dialog[data-v-68e41541]{width:480px;max-width:calc(100vw - 48px);background:var(--p-surface-raised);border:1px solid var(--p-line);border-radius:var(--p-r-xl);box-shadow:var(--p-sh-xl);overflow:hidden;color:var(--p-text)}.p-dialog-head[data-v-68e41541]{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:20px 22px 14px}.p-dialog-title[data-v-68e41541]{font-size:var(--p-font-size-lg);font-weight:700;letter-spacing:-.01em}.p-dialog-desc[data-v-68e41541]{font-size:var(--p-font-size-base);color:var(--p-text-muted);margin-top:4px;line-height:var(--p-leading-normal)}.p-dialog-body[data-v-68e41541]{padding:4px 22px 18px}.p-dialog-foot[data-v-68e41541]{display:flex;justify-content:flex-end;gap:10px;padding:14px 22px 20px}.p-toast[data-v-68e41541]{display:flex;align-items:flex-start;gap:11px;width:360px;padding:13px 14px;background:var(--p-surface-raised);border:1px solid var(--p-line);border-radius:var(--p-r-lg);box-shadow:var(--p-sh-md)}.p-toast .ti[data-v-68e41541]{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;flex:none;margin-top:1px}.p-toast.success .ti[data-v-68e41541]{background:var(--p-success-soft);color:var(--p-success)}.p-toast.warning .ti[data-v-68e41541]{background:var(--p-warning-soft);color:var(--p-warning)}.p-toast .tt[data-v-68e41541]{font-size:var(--p-font-size-base);font-weight:600;color:var(--p-text)}.p-toast .td[data-v-68e41541]{font-size:var(--p-font-size-sm);color:var(--p-text-muted);margin-top:2px;line-height:1.45}.p-spinner[data-v-68e41541]{width:18px;height:18px;animation:p-spin-68e41541 .85s linear infinite}.p-spinner.sm[data-v-68e41541]{width:14px;height:14px}.p-spinner circle[data-v-68e41541]{fill:none;stroke-width:2.2;stroke-linecap:round}.p-spinner .track[data-v-68e41541]{stroke:var(--p-line)}.p-spinner .arc[data-v-68e41541]{stroke:var(--p-accent);stroke-dasharray:56 56;stroke-dashoffset:38}@keyframes p-spin-68e41541{to{transform:rotate(360deg)}}.p-thinking[data-v-68e41541]{display:inline-flex;align-items:center;gap:9px;font-size:var(--p-font-size-sm);color:var(--p-text-muted);font-family:var(--p-font-sans)}.p-bubble-user[data-v-68e41541]{align-self:flex-end;max-width:78%;background:var(--p-accent-soft);border:1px solid var(--p-accent-bd);color:var(--p-text);border-radius:18px 18px 5px;padding:11px 15px;font-size:var(--p-font-size-md);line-height:var(--p-leading-normal);box-shadow:var(--p-sh-xs)}.p-msg[data-v-68e41541]{max-width:760px;font-size:var(--p-font-size-md);line-height:var(--p-leading-relaxed);color:var(--p-text)}.p-msg p[data-v-68e41541]{margin:0 0 10px;color:var(--p-text)}.p-msg code[data-v-68e41541]{font-family:var(--p-font-mono);background:var(--p-surface-sunken);border:1px solid var(--p-line);color:var(--p-accent-hover);padding:1px 6px;border-radius:5px;font-size:.9em}.p-agent[data-v-68e41541]{background:var(--p-surface-raised);border:1px solid var(--p-line);border-radius:var(--p-r-md);overflow:hidden}.p-agent-head[data-v-68e41541]{display:flex;align-items:center;gap:10px;padding:11px 14px}.p-agent-av[data-v-68e41541]{width:22px;height:22px;border-radius:7px;display:grid;place-items:center;background:var(--p-surface-sunken);border:1px solid var(--p-line);color:var(--p-text-muted);flex:none}.p-agent-name[data-v-68e41541]{font-size:var(--p-font-size-sm);font-weight:600;color:var(--p-text)}.p-agent-phase[data-v-68e41541]{font-size:var(--p-font-size-xs);color:var(--p-text-muted)}.p-agent-body[data-v-68e41541]{padding:0 14px 13px}.p-tool[data-v-68e41541]{background:var(--p-surface-raised);border:1px solid var(--p-line);border-radius:var(--p-r-md);overflow:hidden}.p-tool-head[data-v-68e41541]{display:flex;align-items:center;gap:9px;padding:9px 13px;background:var(--p-surface);border-bottom:1px solid var(--p-line)}.p-tool-ic[data-v-68e41541]{width:18px;height:18px;border-radius:5px;display:grid;place-items:center;background:var(--p-accent-soft);color:var(--p-accent);flex:none}.p-tool-name[data-v-68e41541]{font-family:var(--p-font-mono);font-size:var(--p-font-size-sm);font-weight:600;color:var(--p-text)}.p-tool-body[data-v-68e41541]{padding:12px 13px}.p-code[data-v-68e41541]{font-family:var(--p-font-mono);font-size:var(--p-font-size-sm);line-height:1.65;background:var(--p-surface-sunken);border:1px solid var(--p-line);border-radius:var(--p-r-md);padding:11px 13px;color:var(--p-text);overflow-x:auto}.p-action[data-v-68e41541]{border-radius:var(--p-r-md);overflow:hidden;border:1px solid var(--p-accent-bd);background:var(--p-surface)}.p-action.warn[data-v-68e41541]{border-color:var(--p-warning-bd)}.p-action-head[data-v-68e41541]{display:flex;align-items:center;gap:9px;padding:10px 14px;background:var(--p-accent-soft);border-bottom:1px solid var(--p-accent-bd)}.p-action.warn .p-action-head[data-v-68e41541]{background:var(--p-warning-soft);border-bottom-color:var(--p-warning-bd)}.p-action-title[data-v-68e41541]{font-size:var(--p-font-size-base);font-weight:600;color:var(--p-accent-hover)}.p-action.warn .p-action-title[data-v-68e41541]{color:var(--p-warning)}.p-action-body[data-v-68e41541]{padding:14px;font-size:var(--p-font-size-base);color:var(--p-text);line-height:var(--p-leading-normal)}.p-action-foot[data-v-68e41541]{display:flex;justify-content:flex-end;gap:8px;padding:11px 14px;border-top:1px solid var(--p-line);background:var(--p-surface)}.p-todo[data-v-68e41541]{background:var(--p-surface-raised);border:1px solid var(--p-line);border-radius:var(--p-r-md);padding:6px}.p-todo-row[data-v-68e41541]{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:var(--p-r-md);font-size:var(--p-font-size-base);color:var(--p-text)}.p-todo-row.done[data-v-68e41541]{color:var(--p-text-faint);text-decoration:line-through}.p-todo-row.active[data-v-68e41541]{background:var(--p-accent-soft);color:var(--p-text)}.p-todo-check[data-v-68e41541]{width:16px;flex:none;font-size:var(--p-font-size-base);line-height:1;text-align:center;user-select:none;color:var(--p-text-faint)}.p-todo-row.done .p-todo-check[data-v-68e41541]{color:var(--p-success)}.p-todo-row.active .p-todo-check[data-v-68e41541]{color:var(--p-accent);font-weight:500}.p-dot[data-v-68e41541]{width:7px;height:7px;border-radius:50%;flex:none;background:var(--p-text-faint)}.p-dot.done[data-v-68e41541]{background:var(--p-success)}.p-dot.error[data-v-68e41541]{background:var(--p-danger)}.p-dot.running[data-v-68e41541]{background:var(--p-accent);box-shadow:0 0 0 0 var(--p-accent-soft);animation:p-pulse-68e41541 1.4s ease-out infinite}@keyframes p-pulse-68e41541{0%{box-shadow:0 0 #1783ff66}to{box-shadow:0 0 0 6px #1783ff00}}.p-tool-group[data-v-68e41541]{border:1px solid var(--p-line);border-radius:var(--p-r-md);background:var(--p-surface);overflow:hidden}.p-tool-group-head[data-v-68e41541]{display:flex;align-items:center;gap:8px;height:32px;padding:0 11px;cursor:pointer;font-size:var(--p-font-size-sm);color:var(--p-text-muted);user-select:none}.p-tool-group-head[data-v-68e41541]:hover{background:var(--p-surface-sunken);color:var(--p-text)}.p-tool-group-head .tg-title[data-v-68e41541]{font-weight:600;color:var(--p-text)}.p-tool-group-head .tg-meta[data-v-68e41541]{color:var(--p-text-faint)}.p-tool-group-head .tg-car[data-v-68e41541]{margin-left:auto;width:14px;height:14px;color:var(--p-text-faint);transition:transform var(--p-dur) var(--p-ease)}.p-tool-group.open .p-tool-group-head .tg-car[data-v-68e41541]{transform:rotate(90deg)}.p-tool-row[data-v-68e41541]{display:flex;align-items:center;gap:8px;height:30px;padding:0 11px;border-top:1px solid var(--p-line-2, var(--p-line));cursor:pointer;font-family:var(--p-font-mono);font-size:var(--p-font-size-sm);color:var(--p-text)}.p-tool-row[data-v-68e41541]:hover{background:var(--p-surface-sunken)}.p-tool-row .tr-ic[data-v-68e41541]{width:14px;height:14px;color:var(--p-text-faint);flex:none}.p-tool-row .tr-name[data-v-68e41541]{font-weight:600;color:var(--p-text);flex:none}.p-tool-row .tr-arg[data-v-68e41541]{color:var(--p-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.p-tool-row .tr-time[data-v-68e41541]{margin-left:auto;color:var(--p-text-faint);font-size:var(--p-font-size-xs);flex:none}.p-tool-row .tr-car[data-v-68e41541]{width:13px;height:13px;color:var(--p-text-faint);flex:none;transition:transform var(--p-dur) var(--p-ease)}.p-tool-row.expanded[data-v-68e41541]{background:var(--p-surface-sunken)}.p-tool-row.expanded .tr-car[data-v-68e41541]{transform:rotate(90deg)}.p-tool-detail[data-v-68e41541]{padding:0 11px 11px;background:var(--p-surface-sunken);border-top:1px solid var(--p-line)}.p-tool-detail .p-code[data-v-68e41541]{margin-top:10px}.p-composer[data-v-68e41541]{background:var(--p-surface-raised);border:1px solid var(--p-line);border-radius:var(--p-r-xl);box-shadow:var(--p-sh-md);overflow:hidden}.p-composer[data-v-68e41541]:focus-within{border-color:var(--p-accent);box-shadow:var(--p-sh-md),0 0 0 3px var(--p-accent-soft)}.p-composer-ta[data-v-68e41541]{padding:14px 16px 8px;font-family:var(--p-font-sans);font-size:var(--p-font-size-md);color:var(--p-text);line-height:var(--p-leading-normal)}.p-composer-ta.ph[data-v-68e41541]{color:var(--p-text-faint)}.p-composer-bar[data-v-68e41541]{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 8px 8px}.p-composer-left[data-v-68e41541],.p-composer-right[data-v-68e41541]{display:flex;align-items:center;gap:2px}.p-send[data-v-68e41541]{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:var(--p-accent);color:var(--p-text-on-accent);border:none;cursor:pointer;box-shadow:var(--p-sh-xs);transition:transform var(--p-dur-fast) var(--p-ease),background var(--p-dur) var(--p-ease)}.p-send[data-v-68e41541]:hover{background:var(--p-accent-hover)}.p-send[data-v-68e41541]:active{transform:scale(.92)}.p-send .p-ic[data-v-68e41541]{width:16px;height:16px}.p[data-v-68e41541] ::selection,[data-p][data-v-68e41541] ::selection{background:var(--p-selection)}.p-link[data-v-68e41541]{color:var(--p-accent);text-decoration:none;font-family:var(--p-font-sans);transition:color var(--p-dur) var(--p-ease)}.p-link[data-v-68e41541]:hover{color:var(--p-accent-hover);text-decoration:underline}.p-link[data-v-68e41541]:focus-visible{outline:none;box-shadow:var(--p-focus-ring);border-radius:var(--p-r-xs)}.p-link.muted[data-v-68e41541]{color:var(--p-text-muted)}.p-link.muted[data-v-68e41541]:hover{color:var(--p-text)}.p-link .p-ic[data-v-68e41541]{width:var(--p-ic-sm);height:var(--p-ic-sm);vertical-align:-2px}.p-menu[data-v-68e41541]{background:var(--p-surface-raised);border:1px solid var(--p-line);border-radius:var(--p-r-lg);box-shadow:var(--p-sh-sm);padding:var(--p-sp-1);min-width:180px;font-family:var(--p-font-sans);color:var(--p-text)}.p-menu-item[data-v-68e41541]{display:flex;align-items:center;gap:8px;padding:6px 10px;border-radius:var(--p-r-sm);font-size:var(--p-font-size-sm);color:var(--p-text);cursor:pointer;transition:background var(--p-dur) var(--p-ease),color var(--p-dur) var(--p-ease)}.p-menu-item[data-v-68e41541]:hover{background:var(--p-surface-sunken);color:var(--p-text)}.p-menu-item.active[data-v-68e41541],.p-menu-item.active[data-v-68e41541]:hover{background:var(--p-accent-soft);color:var(--p-accent-hover)}.p-menu-item.danger[data-v-68e41541]{color:var(--p-danger)}.p-menu-item.danger[data-v-68e41541]:hover{background:var(--p-danger-soft);color:var(--p-danger)}.p-menu-item.disabled[data-v-68e41541]{opacity:.5;cursor:not-allowed}.p-menu-item.disabled[data-v-68e41541]:hover{background:transparent;color:var(--p-text)}.p-menu-item .p-ic[data-v-68e41541]{width:var(--p-ic-sm);height:var(--p-ic-sm)}.p-menu-item.lg[data-v-68e41541]{min-height:44px;padding:12px 14px;font-size:var(--p-font-size-base)}.p-menu-sep[data-v-68e41541]{height:1px;background:var(--p-line);margin:4px 0}.p-seg[data-v-68e41541]{display:inline-flex;gap:2px;padding:2px;background:var(--p-surface-sunken);border:1px solid var(--p-line);border-radius:var(--p-r-md);font-family:var(--p-font-sans)}.p-seg-item[data-v-68e41541]{padding:5px 12px;border-radius:var(--p-r-sm);font-size:var(--p-font-size-sm);font-weight:500;color:var(--p-text);cursor:pointer;white-space:nowrap;transition:background var(--p-dur) var(--p-ease),color var(--p-dur) var(--p-ease),box-shadow var(--p-dur) var(--p-ease)}.p-seg-item[data-v-68e41541]:hover{color:var(--p-text)}.p-seg-item.on[data-v-68e41541]{background:var(--p-surface-raised);color:var(--p-text);box-shadow:var(--p-sh-xs)}.p-tabs[data-v-68e41541]{display:flex;align-items:center;gap:0;border-bottom:1px solid var(--p-line);font-family:var(--p-font-sans)}.p-tab[data-v-68e41541]{padding:8px 14px;font-size:var(--p-font-size-sm);font-weight:500;color:var(--p-text-muted);cursor:pointer;white-space:nowrap;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color var(--p-dur) var(--p-ease),border-color var(--p-dur) var(--p-ease)}.p-tab[data-v-68e41541]:hover{color:var(--p-text)}.p-tab.on[data-v-68e41541]{color:var(--p-accent);border-bottom-color:var(--p-accent)}.p-switch[data-v-68e41541]{position:relative;display:inline-block;width:36px;height:20px;flex:none;border-radius:var(--p-r-full);background:var(--p-line-strong);cursor:pointer;transition:background var(--p-dur) var(--p-ease)}.p-switch[data-v-68e41541]:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:var(--p-r-full);background:var(--surface-light);box-shadow:var(--p-sh-xs);transition:transform var(--p-dur) var(--p-ease)}.p-switch.on[data-v-68e41541]{background:var(--p-accent)}.p-switch.on[data-v-68e41541]:after{background:var(--p-text-on-accent);transform:translate(16px)}.p-switch[data-v-68e41541]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.p-check[data-v-68e41541]{width:17px;height:17px;flex:none;display:inline-grid;place-items:center;border:1.5px solid var(--p-line-strong);border-radius:var(--p-r-sm);background:var(--p-surface-raised);color:var(--p-text-on-accent);cursor:pointer;transition:background var(--p-dur) var(--p-ease),border-color var(--p-dur) var(--p-ease)}.p-check.on[data-v-68e41541]{background:var(--p-accent);border-color:var(--p-accent)}.p-check[data-v-68e41541]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.p-check .p-ic[data-v-68e41541]{width:12px;height:12px}.p-avatar[data-v-68e41541]{width:32px;height:32px;flex:none;display:grid;place-items:center;border-radius:var(--p-r-md);background:var(--p-surface-sunken);border:1px solid var(--p-line);color:var(--p-text-muted);font-size:var(--p-font-size-sm);font-weight:600}.p-avatar.sm[data-v-68e41541]{width:24px;height:24px;border-radius:var(--p-r-sm);font-size:var(--p-font-size-xs)}.p-avatar .p-ic[data-v-68e41541]{width:16px;height:16px}.p-avatar.sm .p-ic[data-v-68e41541]{width:13px;height:13px}.p-empty[data-v-68e41541]{display:flex;flex-direction:column;align-items:center;gap:8px;padding:32px 16px;color:var(--p-text-muted);text-align:center}.p-empty .em-ic[data-v-68e41541]{width:48px;height:48px;color:var(--p-text-faint)}.p-empty .em-title[data-v-68e41541]{font-size:var(--p-font-size-base);font-weight:600;color:var(--p-text)}.p-empty .em-hint[data-v-68e41541]{font-size:var(--p-font-size-sm);color:var(--p-text-muted)}.p-divider[data-v-68e41541]{width:100%;height:1px;background:var(--p-line);border:none}.p-divider-v[data-v-68e41541]{width:1px;align-self:stretch;background:var(--p-line);border:none}.p-tip[data-v-68e41541]{position:relative;display:inline-flex}.p-tip .p-tooltip[data-v-68e41541]{position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);background:var(--p-text);color:var(--p-bg);font-size:var(--p-font-size-xs);padding:4px 8px;border-radius:var(--p-r-sm);white-space:nowrap;opacity:0;pointer-events:none;transition:opacity var(--p-dur-fast) var(--p-ease)}.p-tip:hover .p-tooltip[data-v-68e41541]{opacity:1}.p-banner[data-v-68e41541]{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:var(--p-r-md);border:1px solid var(--p-line);background:var(--p-surface);font-size:var(--p-font-size-sm);color:var(--p-text)}.p-banner .bn-ic[data-v-68e41541]{width:18px;height:18px;flex:none}.p-banner.info[data-v-68e41541]{background:var(--p-accent-soft);border-color:var(--p-accent-bd)}.p-banner.info .bn-ic[data-v-68e41541]{color:var(--p-accent)}.p-banner.warning[data-v-68e41541]{background:var(--p-warning-soft);border-color:var(--p-warning-bd)}.p-banner.warning .bn-ic[data-v-68e41541]{color:var(--p-warning)}.p-banner.danger[data-v-68e41541]{background:var(--p-danger-soft);border-color:var(--p-danger-bd)}.p-banner.danger .bn-ic[data-v-68e41541]{color:var(--p-danger)}.p-sheet[data-v-68e41541]{background:var(--p-surface-raised);border:1px solid var(--p-line);border-radius:var(--p-r-xl) var(--p-r-xl) 0 0;box-shadow:var(--p-sh-xl);padding:8px 16px 20px}.p-sheet-handle[data-v-68e41541]{width:36px;height:4px;border-radius:var(--p-r-full);background:var(--p-line-strong);margin:0 auto 8px}.p-skeleton[data-v-68e41541]{background:var(--p-surface-sunken);border-radius:var(--p-r-sm);animation:p-skel-68e41541 1.2s var(--p-ease-inout) infinite alternate}@keyframes p-skel-68e41541{0%{opacity:.5}to{opacity:1}}.p-cmdbar[data-v-68e41541]{display:flex;align-items:center;gap:8px;width:100%}.p-cmd[data-v-68e41541]{flex:1;min-width:0;height:38px;display:flex;align-items:center;gap:10px;padding:0 10px 0 14px;background:var(--p-surface-sunken);border:1px solid var(--p-line);border-radius:var(--p-r-md);font-family:var(--p-font-mono);font-size:var(--p-font-size-sm);color:var(--p-text-muted)}.p-cmd .cmd-text[data-v-68e41541]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.p-cmd .cmd-copy[data-v-68e41541]{margin-left:auto;flex:none;display:grid;place-items:center;width:26px;height:26px;border:none;background:transparent;border-radius:var(--p-r-sm);color:var(--p-text-faint);cursor:pointer;transition:background var(--p-dur) var(--p-ease),color var(--p-dur) var(--p-ease)}.p-cmd .cmd-copy[data-v-68e41541]:hover{background:var(--p-surface-raised);color:var(--p-text)}.p-cmd .cmd-copy .p-ic[data-v-68e41541]{width:15px;height:15px}.p-topbar[data-v-68e41541]{display:flex;align-items:center;justify-content:space-between;gap:12px;height:48px;padding:0 16px;background:var(--p-surface-raised);border:1px solid var(--p-line);border-radius:var(--p-r-lg)}.p-topbar .tb-title[data-v-68e41541]{font-size:var(--p-font-size-sm);font-weight:600;color:var(--p-text)}.p-topbar .tb-actions[data-v-68e41541]{display:flex;align-items:center;gap:4px}.p-topbar.frost[data-v-68e41541]{background:#ffffffb8;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-color:#fff9}[data-p=dark] .p-topbar.frost[data-v-68e41541]{background:#161b22b8;border-color:#ffffff14}.demo-family-black[data-v-68e41541]{--p-accent: #14171c;--p-accent-hover: #2f3540;--p-accent-soft: #f1f2f4;--p-accent-bd: #d8dbe0;--p-text-on-accent: #ffffff}.demo-row[data-v-68e41541]{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.demo-stack[data-v-68e41541]{display:flex;flex-direction:column;gap:12px;width:100%}.demo-col[data-v-68e41541]{display:flex;flex-direction:column;gap:10px}.demo-grow[data-v-68e41541]{flex:1;min-width:0}.demo-chat[data-v-68e41541]{display:flex;flex-direction:column;gap:14px;width:100%;max-width:560px}.icon-grid[data-v-68e41541]{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:8px;margin:14px 0}.icon-group-label[data-v-68e41541]{grid-column:1 / -1;margin-top:10px;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--d-fg-muted)}.icon-cell[data-v-68e41541]{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--d-line);border-radius:8px;background:var(--d-surface)}.icon-cell .kw-icon[data-v-68e41541]{width:20px;height:20px;color:var(--d-fg-soft)}.icon-cell .ic-name[data-v-68e41541]{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;color:var(--d-fg)}.icon-sizes[data-v-68e41541]{display:flex;align-items:end;gap:22px;flex-wrap:wrap}.icon-sizes .sz[data-v-68e41541]{display:flex;flex-direction:column;align-items:center;gap:8px;font-size:11px;color:var(--d-fg-muted);font-family:JetBrains Mono,ui-monospace,monospace}.p-code-inline[data-v-68e41541]{font-family:var(--p-font-mono);background:var(--p-surface-sunken);color:var(--p-text);padding:0 5px;border-radius:var(--p-r-sm);font-size:.9em}.p-code-block[data-v-68e41541]{border:1px solid var(--p-line);border-radius:var(--p-r-md);overflow:hidden;background:var(--p-surface-sunken)}.p-code-block-head[data-v-68e41541]{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:var(--p-surface);border-bottom:1px solid var(--p-line);font-family:var(--p-font-mono);font-size:var(--p-font-size-xs);color:var(--p-text-muted)}.p-code-block pre[data-v-68e41541]{margin:0;padding:12px 14px;font-family:var(--p-font-mono);font-size:var(--p-font-size-sm);line-height:1.65;color:var(--p-text);overflow-x:auto}.p-diff[data-v-68e41541]{border:1px solid var(--p-line);border-radius:var(--p-r-md);overflow:hidden;font-family:var(--p-font-mono);font-size:var(--p-font-size-sm)}.p-diff-head[data-v-68e41541]{padding:8px 12px;background:var(--p-surface);border-bottom:1px solid var(--p-line);font-size:var(--p-font-size-xs);color:var(--p-text-muted)}.p-diff-row[data-v-68e41541]{display:flex;gap:10px;padding:2px 12px;line-height:1.6}.p-diff-row .pm[data-v-68e41541]{width:14px;flex:none;color:var(--p-text-faint)}.p-diff-row.add[data-v-68e41541]{background:var(--p-success-soft)}.p-diff-row.add .pm[data-v-68e41541]{color:var(--p-success)}.p-diff-row.del[data-v-68e41541]{background:var(--p-danger-soft)}.p-diff-row.del .pm[data-v-68e41541]{color:var(--p-danger)}.p-diff-row .p-diff-code[data-v-68e41541]{color:var(--p-text)}.p-field-error[data-v-68e41541]{color:var(--p-danger);font-size:var(--p-font-size-xs)}.p-btn .p-spinner[data-v-68e41541]{vertical-align:middle}.p-btn .p-spinner .track[data-v-68e41541]{stroke:currentColor;opacity:.35}.p-btn .p-spinner .arc[data-v-68e41541]{stroke:currentColor}.ds-page[data-v-68e41541]{position:fixed;inset:0;z-index:var(--z-max);overflow-y:auto}.ds-topbar[data-v-68e41541]{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-4);background:var(--color-surface);border-bottom:1px solid var(--color-line)}.ds-back[data-v-68e41541]{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-3);border:1px solid var(--color-line);border-radius:var(--radius-md);background:var(--color-surface-raised);color:var(--color-text);font-family:var(--font-ui);font-size:var(--text-sm);cursor:pointer}.ds-back[data-v-68e41541]:hover{background:var(--color-surface-sunken)}.ds-topbar-title[data-v-68e41541]{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text-muted)}
diff --git a/apps/kimi-code/dist-web/assets/DesignSystemView-CsDeDsyo.js b/apps/kimi-code/dist-web/assets/DesignSystemView-CsDeDsyo.js
deleted file mode 100644
index 5bbb0f26cc..0000000000
--- a/apps/kimi-code/dist-web/assets/DesignSystemView-CsDeDsyo.js
+++ /dev/null
@@ -1,13 +0,0 @@
-import{_ as w,I as y,a as x}from"./index-pE-bC6n5.js";import{d as k,h as C,R as z,o as d,c as s,a as t,V as e,J as i,F as r,r as u,E as g,b as S,u as q}from"./vendor-ucnN-Sh8.js";import"./vendor-markstream-D6yjq9lL.js";import"./vendor-katex-Com_2SPi.js";const T={class:"ds-page"},B={class:"layout"},A={class:"content"},I={class:"content-inner"},M={id:"tokens"},H={class:"icon-sizes"},V={class:"sz"},L={class:"p-ic",style:{width:"14px",height:"14px"},viewBox:"0 0 24 24",fill:"currentColor"},D={class:"sz"},U={class:"p-ic",style:{width:"16px",height:"16px"},viewBox:"0 0 24 24",fill:"currentColor"},W={class:"sz"},R={class:"p-ic",style:{width:"20px",height:"20px"},viewBox:"0 0 24 24",fill:"currentColor"},P={class:"icon-grid"},N={class:"icon-group-label"},K={class:"ic-name"},O={id:"primitives"},E={class:"stage-wrap"},j={class:"stage p col"},_={class:"demo-row"},F={class:"p-btn primary disabled"},G={class:"p-spinner sm",viewBox:"0 0 24 24",style:{"--p-accent":"#fff","--p-line":"rgba(255,255,255,.35)"}},J={class:"stage-wrap"},Q={class:"stage p col",style:{gap:"0",background:"var(--p-surface)",padding:"0","max-width":"300px","align-items":"stretch"}},Y={style:{display:"flex","align-items":"center",gap:"8px",padding:"7px 10px",margin:"1px 6px","border-radius":"8px",color:"var(--p-text)","font-size":"13px"}},Z={style:{color:"var(--d-fg-faint)",flex:"none"},width:"14",height:"14",viewBox:"0 0 24 24",fill:"currentColor"},$={style:{display:"flex","align-items":"center",gap:"8px",padding:"7px 10px",margin:"1px 6px","border-radius":"8px",color:"var(--p-text)","font-size":"13px"}},X={style:{color:"var(--d-fg-faint)",flex:"none"},width:"14",height:"14",viewBox:"0 0 24 24",fill:"currentColor"},aa={id:"chat"},ta={class:"stage-wrap"},da={class:"stage p col",style:{"align-items":"center",background:"#fff"}},sa={class:"demo-chat"},ea={class:"p-action"},oa={class:"p-action-head"},ia={class:"p-ic",style:{color:"var(--p-accent)"},viewBox:"0 0 24 24",fill:"currentColor"},la={class:"p-action warn"},na={class:"p-action-head"},va={class:"p-ic",style:{color:"var(--p-warning)"},viewBox:"0 0 24 24",fill:"currentColor"},ca=k({__name:"DesignSystemView",emits:["close"],setup(ra,{emit:m}){const f=m;function b(){f("close")}let c=null;function p(v){v.key==="Escape"&&b()}return C(()=>{document.addEventListener("keydown",p);const v=Array.prototype.slice.call(document.querySelectorAll('#nav a[href^="#"]')),a=new Map;v.forEach(n=>{const o=n.getAttribute("href");if(!o)return;const h=document.getElementById(o.slice(1));h&&a.set(h,n)});let l=null;c=new IntersectionObserver(n=>{n.forEach(o=>{o.isIntersecting&&(l&&l.classList.remove("active"),l=a.get(o.target)??null,l&&l.classList.add("active"))})},{rootMargin:"-20% 0px -70% 0px",threshold:0}),a.forEach((n,o)=>c.observe(o)),v.length&&v[0].classList.add("active")}),z(()=>{document.removeEventListener("keydown",p),c&&(c.disconnect(),c=null)}),(v,a)=>(d(),s("div",T,[t("div",{class:"ds-topbar"},[t("button",{class:"ds-back",type:"button",onClick:b},"← Back"),a[0]||(a[0]=t("span",{class:"ds-topbar-title"},"Design system",-1))]),t("div",B,[a[38]||(a[38]=e('',1)),t("main",A,[t("div",I,[a[36]||(a[36]=e('● Design System · v1.0 Kimi Web Design System This document defines the visual language and component specification for Kimi Web — design tokens, component primitives, the chat interface, theming, and style rules. All UI work is grounded in it: unified, restrained, token-driven, and themeable.
Scope apps/kimi-web Component primitives Theme 1 set · 4 customizable colors Light / dark mode
i This spec is the single reference when changing the web UI. Before adding or modifying a component, style, layout, or theme, read this document first; color, font, radius, spacing, shadow, z-index, and motion always use the §02 tokens, components reuse the §03 primitives, and the §06 style rules are followed.
01
Design Principles
Every UI decision traces back to the following principles. Kimi Web is a local Agent tool for developers: quick scanning, long stretches of staring, often in the dark — the design serves the task, and is restrained, clinical, and density-first.
Consistency —— The same semantics use the same component. The primary button, dialog, input, and badge should each have exactly "one" correct way to be written across the entire site.Hierarchy —— Build a clear hierarchy through size, weight, color, and whitespace; emphasize through "restraint" rather than "bolder and bigger".Proximity —— Group related elements, leave whitespace between unrelated ones. A card's padding, line spacing, and group spacing all come from the same spacing scale.Feedback —— hover / active / focus / loading / success / error all have visible states, and the state language is unified.Breathing room —— Control density with the spacing scale rather than arbitrary pixels; prefer restrained whitespace over cramming controls together.Accessibility (A11y) —— Text contrast ≥ 4.5:1, visible focus rings, touch targets ≥ 32px, and states that don't rely on color alone.Reduction —— The number of colors, radii, shadow levels, and type sizes all converge to a finite set of tokens; delete stray values.✓ Brand tone (the do-not list) : calm, clinical, never exaggerated. Reject purple gradients, glassmorphism, glowing shadows, AI purple / blue glows, endlessly looping fussy micro-animations, "Boost your productivity"-style marketing copy, and using emoji as icons — the moon phases 🌑…🌘 are the sole exception , used only in the "waiting for the Agent to respond" chat state, as a brand signature. These are all common tells of AI-generated interfaces (an "AI tell"), deliberately avoided.
i Declare design intent first (Design Read) : before adding a component / page, write one sentence describing its scenario, audience, and tone (for example, "a lightweight tool card embedded in a conversation, for developers, calm and restrained"), then build. If the intent isn't clear, ask one question first rather than defaulting to the nearest existing style.
',2)),t("section",M,[a[7]||(a[7]=e(`02
Design Tokens Collapse every visual decision into tokens. Color tokens keep the existing short names and fill out the semantics (lowering migration cost), while spacing, z-index, motion, and font-weight fill in the scales that are currently missing. Every token has: name, light value, dark value, and usage.
i Naming convention : --<category>-<role>-<state>. For example --color-text-muted, --radius-md, --space-4. To reduce churn, the existing short names (--bg / --ink / --line / --blue …) are kept as compatibility aliases for one release cycle.
Color Semantic-first, in three layers: background / text / border + accent + status colors . All colors are defined in light / dark pairs, with contrast ≥ 4.5:1.
i The table below shows the derived semantic tokens . The neutrals and the accent are derived from the 4 color seeds in §05 — for example --color-accent comes from --accent-primary, and --color-bg comes from the current light / dark surface. The semantic status colors (success / warning / danger / info) are independent palettes paired with the seeds, one set each for light / dark; they are not auto-derived from the seeds. Day-to-day reskinning usually only needs the 4 seeds, with the status colors fine-tuned as needed.
Token Light Dark Usage --color-bg #ffffff #0d1117Page background --color-surface #fafbfc #161b22Panel / sidebar / card head --color-surface-raised #ffffff #1c2128Raised card / dialog / input --color-text #14171c #e8eaedBody text / headings --color-text-muted #6b7280 #9aa0a8Secondary text / placeholder --color-line #e7eaee #2d333bDivider / card border --color-selected #00000014 #ffffff14Neutral selected fill (sidebar rows, list pickers) — translucent, never accent-tinted --color-hover #0000000d #ffffff0dRow hover wash — lighter than the selected fill (hover < selected); translucent, sits on any surface --color-media-alpha-bg-1 ≈#858585 ≈#676b72Checkerboard square A of the <img> alpha canvas — color-mix of --color-bg/--color-text (52/48); applied via --media-alpha-canvas (16px period) --color-media-alpha-bg-2 ≈#6b6b6b ≈#7a7e85Checkerboard square B (42/58) — both squares stay ≥3:1 against white and black; opaque images cover the canvas --color-sidebar-bg #fbfaf9 #181817Sidebar surface — one step off --color-bg so the session column reads as its own plane --color-accent #1783ff #58a6ffPrimary action / link / focus --color-success #0e7a38 #3fb950Success / pass --color-warning #a9610a #d29922Warning / pending --color-danger #c0392b #f85149Danger / error / abort
Surface usage The four surface layers each have a role — choose by "raised layer / default flat layer / sunken layer / page background", and avoid treating --p-surface-raised as a universal background.
Token Light Dark Usage --p-surface-raised #ffffff #1c2128Raised card / dialog / input (raised layer) --p-surface #fafbfc #161b22Panel / sidebar / card head (default flat layer) --p-surface-sunken #f3f5f8 #0d1117Code block / inline input / recessed area (sunken layer) --p-bg #ffffff #0d1117Page background
Focus ring All focusable controls (button, input, link, menu item, switch, checkbox) use the focus-ring token uniformly; do not hand-write a box-shadow focus ring.
Token Value Usage --p-focus-ring 0 0 0 3px var(--p-accent-soft) Default focus ring (link, menu item, switch, checkbox) --p-focus-ring-strong 0 0 0 3px var(--p-accent-soft), 0 0 0 1px var(--p-accent) Strong focus ring (button, primary action)
Text selection The text-selection color uses --p-selection uniformly (light rgba(23,131,255,.18) / dark rgba(88,166,255,.32)), applied by the global ::selection rule; do not set a separate highlight background.
Disabled state All disabled controls use opacity:.5 + cursor:not-allowed uniformly; do not separately grey out or recolor.
Font families Kimi Web uses two font families: --font-ui (UI and body, Inter first) and --font-mono (code and monospace). Components always reference the variables; do not hard-code font names.
--font-ui · UI & body (Inter first) Body and UI use self-hosted Inter as the primary face. CJK and platform system UI fonts sit late in the fallback chain so Latin glyphs resolve to Inter while Chinese text can fall through to native CJK fonts:
--font-ui
--font-ui: "Inter Variable", "Inter", "Helvetica Neue", Arial,
- "PingFang SC", "Microsoft YaHei", "Noto Sans SC",
- -apple-system, BlinkMacSystemFont, "Segoe UI",
- Roboto, Ubuntu, sans-serif,
- "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji"; Inter first: self-hosted Latin UI and body text, loaded through the optical-size normal and italic variable faces. Western fallbacks next: Helvetica Neue / Arial for environments where Inter cannot load. CJK and system UI fallbacks late: PingFang SC / Microsoft YaHei / Noto Sans SC, then platform UI fonts and emoji fonts. --font-mono · Code & monospace Code, tool names, line numbers, diffs, etc. use JetBrains Mono (a self-hosted variable font), falling back to the system monospace:
--font-mono
--font-mono: "JetBrains Mono Variable", "JetBrains Mono",
- ui-monospace, "SF Mono", Menlo, Consolas, monospace; Loading strategy Font Source Bundled Usage JetBrains Mono @fontsource-variable/jetbrains-mono ✓ self-hosted monospace / code (--font-mono) Inter @fontsource-variable/inter/opsz.css + opsz-italic.css ✓ self-hosted UI / body / display (--font-ui, --font-display), wght 100-900, opsz 14-32, normal + italic System UI / CJK fonts operating system — late fallback for UI / body, not bundled
✓ Self-hosted Inter / JetBrains Mono: no external network requests, no FOUT, works offline; system fonts are not bundled, consistent with the local-first approach.
Usage rules Components always use var(--font-ui) / var(--font-mono); do not hard-code font names like 'Inter' / 'JetBrains Mono'. Body / UI use --font-ui (Inter first); code / monospace use --font-mono (JetBrains Mono). Inter is loaded from the complete optical-size variable faces, including normal and italic styles; font-optical-sizing: auto is enabled globally. CJK and platform system UI fonts stay late in the --font-ui fallback chain, after Inter and Western fallbacks. Type scale & weight The user font-size preference writes --base-ui-font-size. Compact UI chrome and the sidebar follow it through --ui-font-size, while chat reading surfaces derive one readable step above it through --content-font-size.
The fixed product type tokens still define component defaults: UI controls / buttons / forms use --text-base (14px); reading body — including chat Markdown, message bubbles, etc. stays one step larger than compact chrome for readability; the sidebar session list follows that same readable step while keeping list density. Drop stray font-weight: 650 / 750; converge on two weights, 400 / 500 (regular / emphasis).
Page Title
--text-2xl · 22 / 500
Section Title
--text-xl · 18 / 500
Chat body / card title
--text-lg · 16 / 400
UI control / button / form
--text-base · 14 / 500
Helper text / table
--text-sm · 13 / 400
Badge / timestamp / line number
--text-xs · 12 / 500
Token Value Usage --font-ui "Inter Variable", "Inter", "Helvetica Neue", Arial… UI & body (Inter first) --font-mono JetBrains Mono… code, tool names, line numbers, diffs --base-ui-font-size 14px user preference root setting that drives UI, reading body, and sidebar font sizes --content-font-size calc(base + 1px) chat Markdown, message bubbles, composer --leading-tight/normal/relaxed 1.25 / 1.5 / 1.7 headings / UI / long text --weight-regular/medium 400 / 500 body / emphasis
Icon size Icons use three size tokens uniformly. The global .p-ic default is 16px (--p-ic-md); components pick as needed, and random pixel sizes are forbidden.
Token Value Usage --p-ic-sm 14px small button, badge, menu item, inline link icon --p-ic-md 16px default (button, icon button, toolbar) --p-ic-lg 20px Toast status icon, empty-state illustration
Icon Icons always come from the centralized registry lib/icons.ts: in templates use the <Icon name size /> component (components/ui/Icon.vue); for v-html contexts (such as a tool glyph) use iconSvg(name, size). Do not hand-write <svg> — the scripts/check-style.mjs icon-from-registry rule flags stray SVGs. Icons come from Remix Icon (Apache-2.0), uniformly in a fill style (fill="currentColor", 24×24 source grid), with color following the text; size uses the three tokens below. The registry is bundled on demand by unplugin-icons at build time from @iconify-json/ri — only icons imported in lib/icons.ts end up in the production bundle, fully offline and tree-shaken. The whole site uses only this one icon family ; do not mix in other icon libraries, and never hand-write SVG paths . When an icon is missing, add it to the registry — two static ~icons/ri/* imports (component + ?raw string) plus one entry in ICONS in lib/icons.ts; the import names (e.g. RiFolderOpenLine / RawFolderOpenLine) show the ri: icon id. Do not draw it in a component.
Size scale `,43)),t("div",H,[t("div",V,[(d(),s("svg",L,[...a[1]||(a[1]=[t("path",{fill:"currentColor",d:"M11 11V5h2v6h6v2h-6v6h-2v-6H5v-2z"},null,-1)])])),a[2]||(a[2]=i("sm · 14",-1))]),t("div",D,[(d(),s("svg",U,[...a[3]||(a[3]=[t("path",{fill:"currentColor",d:"M11 11V5h2v6h6v2h-6v6h-2v-6H5v-2z"},null,-1)])])),a[4]||(a[4]=i("md · 16",-1))]),t("div",W,[(d(),s("svg",R,[...a[5]||(a[5]=[t("path",{fill:"currentColor",d:"M11 11V5h2v6h6v2h-6v6h-2v-6H5v-2z"},null,-1)])])),a[6]||(a[6]=i("lg · 20",-1))])]),a[8]||(a[8]=t("h4",{class:"mini"},"Icon library",-1)),a[9]||(a[9]=t("p",null,[i("Currently registered icons, grouped by purpose. The display order and grouping are defined by "),t("code",null,"ICON_GROUPS"),i(" in "),t("code",null,"lib/icons.ts"),i(" (a hand-maintained array covering the same icon names), and this catalog is rendered directly from that array so the registry and the document never drift.")],-1)),t("div",P,[(d(!0),s(r,null,u(q(y),([l,n])=>(d(),s(r,{key:l},[t("div",N,g(l),1),(d(!0),s(r,null,u(n,o=>(d(),s("div",{key:o,class:"icon-cell"},[S(w,{name:o},null,8,["name"]),t("span",K,g(o),1)]))),128))],64))),128))]),a[10]||(a[10]=e('Do not use emoji as functional icons (the sole exception is the moon phases 🌑…🌘, used only in the "waiting for the Agent to respond" chat state). The Kimi brand mark (the 32×22 eye logo) is a brand asset and is not part of this icon system.
A few special graphics are not in the registry; each has a dedicated component maintained in one place, and must not be copied by hand: <ContextRing :pct /> (the Composer context progress ring, data-driven), <AuthStateIcon kind /> (the success / expired / error colored illustrations in the login flow), <Spinner /> (loading state). Status dots (such as in the Provider list) always use CSS dots (border-radius:50%), not SVG. The scripts/check-style.mjs icon-from-registry rule exempts the above and the brand mark; all other hand-written <svg> is flagged.
Spacing A 4px base grid. All spacing, gaps, and padding inside and outside components come from this scale — no arbitrary pixels.
--space-1 · 4
icon gap, badge padding
--space-2 · 8
control gap, small padding
--space-3 · 12
button padding, form-item gap
--space-4 · 16
card padding, grid gap
--space-5 · 20
dialog padding
--space-6 · 24
section gap
--space-8 · 32
large section gap
Dense list (sidebar / file tree) High-density navigation lists like the sidebar share one rhythm, all on the 4px grid: in-row vertical padding --space-1 (4px), no margin between rows (the hover pill provides the separation); section gap (between logo / search / action buttons / group title / list) uniformly --space-2 (8px); between groups --space-2; the brand header is slightly looser at the top (--space-3). When building similar lists, reuse this scale — do not hand-write 1/6/7/10px.
Radius Merge the existing 14 values into the nearest of 7 scale steps. Rule: the component type determines the radius, not the author's feel.
Token Value Usage Merged from --radius-xs 4px small badge, inline tag 2/3/4px → --radius-sm 6px small button, icon button, menu item 5/6px → --radius-md 8px button, input, badge, card 7/8/9px → --radius-lg 12px dropdown panel 10/12px → --radius-xl 16px dialog, bottom Sheet, Composer 14/16px → --radius-2xl 20px accent container / large panel 20px --radius-full 999px pill badge, avatar, send button 999px / 50%
Elevation & z-index Shadows express only "elevation", never decoration (no colored glow). z-index is unified into a scale, eradicating 9999-style one-upping.
sm · dropdown menu / sticky Z-index Token Value Usage --z-base 0 normal flow --z-sticky 100 sticky header / sidebar --z-dropdown 200 dropdown menu / tooltip --z-overlay 300 overlay / bottom Sheet --z-modal 400 dialog --z-toast 600 toast --z-max 9999 reserved: only this tier for extreme fallback
Motion Token Value Usage --ease-out cubic-bezier(0.16, 1, 0.3, 1) enter, hover, expand --ease-in-out cubic-bezier(0.4, 0, 0.2, 1) panel width, layout changes --duration-fast 120ms press, focus --duration-base 160ms hover, show/hide --duration-slow 260ms dialog, Sheet, layout
Reduced motion i Under @media (prefers-reduced-motion: reduce), all animation and transition durations drop to about 0.001ms (effectively off), and the MoonSpinner moon phase pauses on the current frame. Components should not check this individually; it is handled uniformly in the global styles.
Layout & breakpoints Layout sizes and responsive breakpoints are tokenized too: sidebar width, content reading-column width, and two global breakpoints. Components should not hard-code pixels.
Token Value Usage --p-sidebar-w 264px left session sidebar width --p-content-max 760px chat reading-column max width (regular chat prose) --p-content-wide 920px wide content (settings / panel) --p-table-max 1040px desktop wide-table max width (see §04) --p-table-cell-max 700px max width of a single table column; longer cell content wraps (see §04) --p-bp-sm 640px mobile / desktop boundary --p-bp-md 980px narrow / wide screen boundary; consumed in JS as the NARROW_QUERY matchMedia constant (CSS media queries can't reference tokens)
i At ≤640px: dialogs become bottom Sheets, the sidebar collapses into an expandable drawer, and Composer toolbar controls are allowed to wrap. At 641–980px: the sidebar auto-collapses (user-expandable), right detail panels open as full-screen overlays, and composer menus clamp to the viewport.
',23))]),t("section",O,[a[21]||(a[21]=e(`03
Primitives Component primitives are the "smallest correct units" of the site UI. Each primitive exposes variants along only two dimensions — variant / size — with appearance driven by tokens, so it naturally supports light / dark mode and customizable theme colors.
i For every interactive primitive, the keyboard behavior, focus, and ARIA contract are in §08 Accessibility . New primitives must ship with a keyboard model — mouse-only interaction is not enough.
Component selection guide Scenario Use Primary action (submit / confirm) Button variant=primarySecondary action / cancel Button secondary / ghostDestructive action (delete / abort) Button danger / danger-softStatus marker BadgeToolbar filter / model switch Pill2–4 mutually exclusive options SegmentedControlTop tabs TabsSwitch / multi-select Switch / CheckboxFloating content card / list action menu Card / MenuInline notice / global toast Banner / ToastDialog / confirmation · bottom panel (mobile) Dialog / Sheet
Button 4 semantic variants × 3 sizes. The primary action primary takes its color from the current theme color (§05 can switch between the blue and black families). Radius uses --radius-md uniformly (small size --radius-sm), weight 600, with a visible focus ring.
Variant matrix light preview
medium · default Primary action Secondary action Ghost button Destructive (soft) Destructive action
small Confirm Cancel More
With icon / state Dark skin dark
Primary action Secondary action Ghost button Destructive action
API Button.vue · usage
<Button variant ="primary" size ="md" :loading ="submitting" > Save</Button>
- // variant: primary | secondary | ghost | danger | danger-soft
- // size: sm | md | lg States
Disabled primary SubmittingDisabled danger
IconButton Unified into three sizes — 26 / 32 / 44px — with a light-grey hover background and a visible focus ring. Replaces the ad-hoc icon + click areas scattered across components today.
i The desktop IconButton comes in sm 26 / md 32; on touch devices the tap target should be ≥ 44px, so use lg 44px, satisfying the §01 accessibility principle (the mobile three-piece set uses lg).
Badge · Chip · Pill Collapsed into two kinds: Badge (status badge, with an optional status dot) and Pill (the clickable pill in the composer toolbar). Radius, font size, and padding are all unified.
Badge · status badge
Semantic variants pending running completed needs confirmation failedKIMI
With icon / small size Pill · toolbar pill (composer)
kimi-k2 · thinking yolo 12k / 200kKbd · keyboard shortcut Kbd renders a shortcut as keycaps — one block per key, never inline text like (⌘K). Caps are 18px tall (Badge sm rhythm): sunken surface, 1px border with a 2px bottom edge, 11px UI font, muted text. Typical placement: pushed to the row's trailing edge, opposite the label (e.g. the sidebar search row).
Card / Surface All cards across the site share one shell : flat, 1px border, --radius-md radius, no shadow . The structure is split into three parts — head / body / foot. Cards differ only in the head — in two tiers by visual weight, while the shell stays consistent:
Operation card —— "process" content such as tool calls, Agent, Todo. The head is compact mono with no fill, low weight by default, not competing with the conversation.Attention card —— content that needs a user decision, such as Question / Approval. The head carries a semantic color band (accent / warning) to stand out from the message stream.Operation card · compact mono head (no fill)
read_file session.ts
The head uses mono + a neutral background to emphasize its "code / process" nature; the body uses sans for readability. Flat, radius-md, same shape as the tool group and Agent group.
Attention card · semantic color-band head (accent / warning)
A decision needs your confirmation question
The head uses a semantic light background (accent-soft / warning-soft) to stand out from the message stream, signaling that the user must step in. The shell is exactly the same as the operation card.
Group · the container owns the border, rows are separated by hairlines
Unified shell : all cards are flat + 1px border + radius-md, casting no shadow.Differences are intentional : only the head distinguishes the type (compact mono vs semantic color band); the shell stays consistent.Grouping : the outer container owns the border and radius; inner rows are separated by border-top hairlines, rather than each row being its own card.Status dots : running (pulsing blue) / done (green) / failed (red), sharing one color vocabulary (see §04 tool calls).Input / Select / Textarea Unified 38px height (32px small), --radius-md radius, --color-surface-raised background, and a unified blue focus ring (0 0 0 3px accent-soft).
Code / Diff Inline code, code blocks, and diffs all use the monospace font (--p-font-mono). Code blocks have a filename title bar and a copy button. Diffs use + / - row colors to express additions and deletions — additions use a success light background, deletions use a danger light background, with no gradients.
Code / Diff
inline code The server uses jwt.verify(token) to verify the signature, returning 401 on failure.
code block import { verify } from './jwt';
-
- export function auth(token: string) {
- return verify(token, process.env.JWT_SECRET!);
- } diff session.ts · +3 -1
import { verify } from './jwt';
- const secret = 'dev-secret';
+ const secret = process.env.JWT_SECRET!;
return verify(token, secret);
Dialog One dialog primitive replaces 6 hand-written implementations: unified --radius-xl radius, --shadow-xl shadow, 20px head padding, right-aligned footer actions, and an IconButton close button.
Dialog primitive
New chat
Create an independent Agent chat in the current workspace.
i Size & height : Dialog offers three widths — md 440 / lg 640 / xl 760 (--p-content-max) — chosen by content weight. Height comes in two kinds: auto (default, grows with content up to max-height) and fixed (constant height min(680px, 100vh - 64px), with overflow scrolled inside the body). Content / multi-tab dialogs (settings, model picker, provider manager, folder browser) always use fixed so the frame size stays constant and doesn't jump when switching tabs or content length; short confirmation dialogs keep auto.
Toast Unified information architecture: status icon + title + description. The status color appears only on the icon, avoiding large colored areas that create visual noise.
Toast
Connected to server
The local daemon is responding normally; you can start a new chat.
Context usage 82%
Consider running /compact to free up space.
Spinner Loaders fall into two categories by scenario — do not mix them :
Spinner (plain · SVG ring) —— the default loader. Used for button loading, app startup (GlobalLoading), and general inline waits — "everything else".MoonSpinner (moon phase · brand signature) —— used only for the chat waiting state of "message sent, waiting for the Agent's first response" (the sending placeholder in ChatPane, SideChatPanel, ActivityNotice).Spinner · plain loader (default) `,48)),t("div",E,[a[14]||(a[14]=t("div",{class:"stage-bar"},[t("span",{class:"st"},"Spinner · common scenarios")],-1)),t("div",j,[t("div",_,[a[13]||(a[13]=e(' Loading… ',2)),t("button",F,[(d(),s("svg",G,[...a[11]||(a[11]=[t("circle",{class:"track",cx:"12",cy:"12",r:"9"},null,-1),t("circle",{class:"arc",cx:"12",cy:"12",r:"9"},null,-1)])])),a[12]||(a[12]=i("Submitting",-1))])])])]),a[22]||(a[22]=e('MoonSpinner · moon phase (only "waiting for the Agent") MoonSpinner · chat waiting state only signature
Frame loop (8 frames) 🌑 🌒 🌓 🌔 🌕 🌖 🌗 🌘
Usage · only while the chat waits for a response 🌔 Thinking…🌕 Waiting for response…
i The moon phase is the sole exception to the emoji-as-icon rule, and is limited to the "waiting for the Agent's first response" scenario. It is currently implemented twice — in MoonSpinner.vue and ActivityNotice.vue — and should be merged into a single MoonSpinner component, sized via tokens and supporting prefers-reduced-motion. All other loading states use the plain Spinner.
Link Inline text link: the default is the accent color with no underline; on hover it shows an underline and darkens. The .muted variant uses the secondary text color. Used for in-text jumps, external links, "view all", and other lightweight actions.
Menu / Dropdown Dropdown menu panel: raised surface + border + light shadow (--shadow-sm, flat-leaning). Menu items support icons, the current (active) state, the danger state, and the disabled state, with separators grouping items. On touch / mobile, use lg (≥44px row height) for menu items.
SegmentedControl Mutually exclusive short option groups, commonly used for 2–4 option switches such as "light / dark / follow system". The current item is highlighted with a raised surface + subtle shadow.
Tabs Tabs with a bottom hairline, used for grouping and switching sibling content. The current tab is marked with accent text + an accent underline.
Switch A two-state switch for settings that take effect immediately. 36×20 track with full radius, 16px knob; when on, the track turns accent and the knob slides right, with the transition driven by tokens.
Checkbox A 17×17 checkbox. When checked it fills with the accent color and shows a white tick (inline SVG). Often paired with a text label.
Avatar A 32px default avatar with md radius; .sm is 24px. Can hold an initial or an icon; falls back to this placeholder when there is no image.
EmptyState A centered placeholder for empty lists / panels: a 48px faint icon + title + hint, avoiding blank pages.
EmptyState
No chats yet
Click "New chat" to start a conversation with Kimi
Divider A 1px horizontal divider (--p-line); .p-divider-v is the vertical divider, used between inline elements.
Divider
Content above
Content below
kimi-k2 thinking
Tooltip A CSS-only hover hint, wrapped in .p-tip. Inverted background (--p-text / --p-bg), single line, no wrapping — carries only short notes.
Tooltip (hover the button)
Banner An inline notice bar placed at the top of a content area. Three states — .info / .warning / .danger — each with a matching 18px icon.
Banner
Currently in yolo mode; tool calls will run automatically
Sheet / BottomSheet A mobile bottom slide-up panel: xl top radius + drag handle, xl shadow. At ≤640px, dialogs become bottom-anchored Sheets.
Skeleton A placeholder for loading content, using a breathing opacity animation (no gradients), following the no-gradient-text rule. Composed into titles / text lines / avatars.
Command Bar An inline combination of "primary action + command text + copy", sitting between a button and a code block — used for install / onboarding / one-click execution. The primary action reuses Button primary; the command area uses a mono light-grey background.
Command Bar
Install Kimi Code ▾ curl -fsSL https://code.kimi.com/install.sh | bash TopBar The application top bar. Solid by default; the .frost variant is translucent + background blur, used only for sticky navigation bars , and is the sole exception to the no-glassmorphism rule (see §06).
TopBar · solid / frosted glass
Frosted-glass TopBar · .frost SectionLabel A small group title for sidebar lists, used to section the content below (such as Workspaces in the sidebar). Spec: 13px / 700 / uppercase / letter-spacing .08em, color --color-fg-faint; left-aligned to the row's starting padding (--sb-pad-x), keeping the same indent as the group rows below. For scripts without case (such as Chinese), text-transform:uppercase simply has no effect — no special handling needed.
',50)),t("div",J,[a[20]||(a[20]=t("div",{class:"stage-bar"},[t("span",{class:"st"},"Sidebar · group title")],-1)),t("div",Q,[a[19]||(a[19]=t("div",{class:"p-section-label",style:{padding:"12px 16px 4px"}},"Workspaces",-1)),t("div",Y,[(d(),s("svg",Z,[...a[15]||(a[15]=[t("path",{fill:"currentColor",d:"M4 5v14h16V7h-8.414l-2-2zm8.414 0H21a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h7.414z"},null,-1)])])),a[16]||(a[16]=i(" kimi-code-web ",-1))]),t("div",$,[(d(),s("svg",X,[...a[17]||(a[17]=[t("path",{fill:"currentColor",d:"M4 5v14h16V7h-8.414l-2-2zm8.414 0H21a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h7.414z"},null,-1)])])),a[18]||(a[18]=i(" playground ",-1))])])])]),t("section",aa,[a[34]||(a[34]=e('04
Chat Interface Overhaul The message stream is the core of Kimi Web. The goal of the overhaul: have the 6 card types (Agent / Tool / Question / Approval / Swarm / Todo) share one card skeleton , distinguished only by the head icon and semantic color; and collapse the Composer into a single rounded container.
Unified message stream ',3)),t("div",ta,[a[33]||(a[33]=t("div",{class:"stage-bar"},[t("span",{class:"st"},"Conversation · 760px reading column")],-1)),t("div",da,[t("div",sa,[a[31]||(a[31]=e('Please change the login endpoint to JWT and add the corresponding unit tests.
🌔 Analyzing the auth module…I looked at the structure of src/auth; it is currently based on a session cookie. The scope of the change is below — once you confirm, I'll start.
',4)),t("div",ea,[t("div",oa,[(d(),s("svg",ia,[...a[23]||(a[23]=[t("path",{fill:"currentColor",d:"M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10s-4.477 10-10 10m0-2a8 8 0 1 0 0-16a8 8 0 0 0 0 16m-1-5h2v2h-2zm2-1.645V14h-2v-1.5a1 1 0 0 1 1-1a1.5 1.5 0 1 0-1.471-1.794l-1.962-.393A3.501 3.501 0 1 1 13 13.355"},null,-1)])])),a[24]||(a[24]=t("span",{class:"p-action-title"},"A decision needs your confirmation",-1))]),a[25]||(a[25]=t("div",{class:"p-action-body"},"How long should the JWT expiry be? Default 7 days, refresh token 30 days.",-1)),a[26]||(a[26]=t("div",{class:"p-action-foot"},[t("button",{class:"p-btn secondary sm"},"Customize"),t("button",{class:"p-btn primary sm"},"Use default")],-1))]),t("div",la,[t("div",na,[(d(),s("svg",va,[...a[27]||(a[27]=[t("path",{fill:"currentColor",d:"m12.866 3l9.526 16.5a1 1 0 0 1-.866 1.5H2.474a1 1 0 0 1-.866-1.5L11.134 3a1 1 0 0 1 1.732 0m-8.66 16h15.588L12 5.5zM11 16h2v2h-2zm0-7h2v5h-2z"},null,-1)])])),a[28]||(a[28]=t("span",{class:"p-action-title"},"Write permission required",-1)),a[29]||(a[29]=t("span",{class:"p-badge warning sm",style:{"margin-left":"auto"}},"write_file",-1))]),a[30]||(a[30]=e('About to modify src/auth/middleware.ts, 42 lines changed. Allow?
',2))]),a[32]||(a[32]=e('✓ Replace session with JWT signing
● Refactor the auth middleware
○ Add unit tests
',1))])])]),a[35]||(a[35]=e('Wide markdown tables (desktop): regular chat prose stays within the 760px reading column (--p-content-max). On desktop a wide table may grow naturally with its content up to 1040px (--p-table-max), centred within the conversation pane; beyond that the excess scrolls horizontally inside the table's own wrapper — the page and the chat area never scroll sideways. A single column is capped at 700px (--p-table-cell-max), so long cell content wraps inside the cell instead of stretching the table. The conversation outline (TOC) keeps its usual position just outside the reading column; when a table grows past it and scrolls under the rail, the TOC is hidden temporarily and returns as soon as the table leaves, without touching the user's TOC setting. On mobile a table never breaks out of the reading column.
Tool calls: compact by default, grouped, expand on demand High-frequency calls like read_file / bash / grep are "operational noise" — if each one took a full card, parallel triggers would quickly drown out the conversation. The new strategy splits tool calls into three tiers by visual weight , pushing them as light as possible:
Three visual-weight tiers
① Tool row · lightest (default) ② Tool group · medium (consecutive / parallel auto-merged; collapsed to one line) ③ Decision card · heavy (only question / approval, needs user input) Write permission required write_file
About to modify src/auth/middleware.ts, 42 lines changed.
Tool calls render as compact rows by default (30px single-line mono + status dot + key argument); no head / body / shadow. Consecutive or parallel calls auto-merge into one tool group ; when collapsed, the whole group takes one line (N tool calls · status). Clicking a row expands it in place to show details (code / output); click again to collapse — details don't grab attention by default. Status is expressed with a colored dot : running (pulsing blue) / done (green) / failed (red), taking no extra space. Only two types keep a full card : Question (needs an answer) and Approval (needs authorization) — they genuinely need the user's attention.Tool Call · compact row (expand on demand)
Composer Unified into a single rounded container: --radius-xl, with the whole border turning blue + a soft focus ring on focus. Toolbar controls all use the Pill / IconButton primitives, and the send button is a 32px circle.
Composer
Message Kimi, / to run a command, @ to reference a file…
i Site-wide consistency : the composer has only one radius (--radius-xl · 16px) and one height; toolbar controls all use the Pill / IconButton primitives, and the send button is a 32px circle — it no longer drifts with the theme.
Responsive See §02 --p-bp-sm for the breakpoint. This section only gives mobile-adaptation pointers for the chat interface; a full mobile mockup is out of scope for this spec.
i At ≤640px: dialogs anchor to the bottom as Sheets (xl top radius, top drag handle), the sidebar collapses into an expandable drawer, the Composer toolbar is allowed to wrap, and the chat reading column drops its max-width to fill the screen. At 641–980px: the sidebar auto-collapses (user-expandable), right detail panels open as full-screen overlays, and composer menus clamp to the viewport.
',13))]),a[37]||(a[37]=e(`05
Theming Kimi Web uses one unified theme : the same components, fonts, radii, shadows, and surfaces — "reskinning" only changes colors. Colors are collapsed into 4 seed tokens — two theme colors + one light surface + one dark surface; the neutrals and accent are derived from them, and the semantic status colors (success / warning / danger) ship as independent palettes paired with the seeds, one set each for light / dark.
Color seeds Day-to-day customization only needs these 4 seeds; the whole site's neutrals and accent change with them:
Theme color · primary
--accent-primary
Theme color · secondary
--accent-secondary
Light surface
--surface-light
Dark surface
--surface-dark
Accent families Within one theme, the theme color (accent) can switch among several color families . Two parallel families are provided today: blue (default, brand blue, carrying semantic emphasis) and black (neutral black, carrying the most restrained strong action). Both share the same components, fonts, radii, and surfaces — switching families only swaps the accent token set, with zero structural change; more families (green / purple, etc.) can be added later. The two cards below show the same primary button under the two families.
Family switch · same primary, different theme color
Blue family · default Primary action accent
--accent #1783ff · soft #e8f3ff Black family · neutral Primary action accent
--accent #14171c · soft #f1f2f4 Theme console · change 4 colors, light & dark change together Theme Console
Primary #1783ff Secondary #6b7280 Light surface #ffffff Dark surface #0d1117
Light surface preview Primary action White background + accent button + neutral text
Dark surface preview Primary action Dark background + same accent + derived text
Light / dark mode Driven by the two surfaces --surface-light / --surface-dark: whichever surface is current derives the corresponding foreground, border, shadow, and status colors. Switching light / dark simply swaps between these two sets of derived tokens, with zero structural change.
✓ Benefits of one theme : components, fonts, radii, and surfaces are consistent site-wide; reskinning only changes 4 color seeds; light / dark mode works out of the box; semantic status colors are independently tunable.
06
Style Rules Anti-pattern rules that all UI code must follow. These rules are also the basis of the check-style detection script, one-to-one with a warning.
Rule ID What it detects Action no-gradient-text gradient text / gradient background Forbidden no-glassmorphism backdrop-filter: blur (TopBar sticky nav bar is the sole exception)TopBar exempt no-color-glow colored / large-radius box-shadow glow Forbidden no-emoji-icon using emoji as a functional icon (the moon phases 🌑…🌘 are the sole exception , and only in the "waiting for the Agent to respond" chat state; all other loading states use the plain Spinner) Moon phase exempt no-hardcoded-hex unregistered hex color inside a component <style> Warning no-hardcoded-font hard-coded font-family in a component (e.g. 'Inter') instead of var(--font-ui) Warning radius-from-scale radius value not in {4,6,8,12,16,20,999} Warning z-from-scale z-index using an unregistered large number Warning weight-from-scale font-weight not in {400,500} Warning
State matrix Every interactive primitive should define the following states where applicable; missing ones are flagged by the style rules. focus-visible always uses --p-focus-ring (appears only on keyboard focus, see §08); disabled is uniformly opacity:.5.
State Button Input Card Menu item Switch default ✓ ✓ ✓ ✓ ✓ hover ✓ ✓ ✓ ✓ — active / pressed ✓ — — — — focus-visible ✓ ✓ — — ✓ disabled ✓ ✓ — ✓ — loading ✓ — — — — selected / active — — — ✓ ✓ error — ✓ — — — readonly — ✓ — — —
Moon phase exemption ✓ The "🌑…🌘" moon-phase emoji are a brand signature of Kimi Web, used only in the chat state of "message sent, waiting for the Agent's first response" , and are rendered uniformly by the MoonSpinner component; waiting states such as ActivityNotice reuse it rather than implementing their own moon phase. It is the sole exception to the no-emoji-icon rule; all other loading states use the plain Spinner.
Glassmorphism exemption ✓ backdrop-filter: blur is banned site-wide, with the sole exception of the .frost variant of TopBar — and only in the one place of the "sticky navigation bar", used to stay readable over scrolling content. No other component (card, dialog, Toast, panel) may use glassmorphism; violations are flagged under no-glassmorphism.
07
App Shell & Sidebar The structural spec for the app shell (three-column grid + right preview panel) and the left session sidebar. These are business-agnostic "skeletons" — components, fonts, radii, and surfaces are reused from §02 / §03, but layout and alignment have their own conventions.
Layout grid On desktop it is a single-row 5-track grid: the sidebar and the right panel each occupy a permanent auto track, with the conversation column in the middle; two 0-width tracks are for the ResizeHandles.
App.vue · .app
grid-template-columns: auto 0 minmax(0, 1fr) 0 auto;
- /* sidebar ↑ ↑handle ↑conversation ↑handle ↑right panel (auto) */ Token Value Usage sidebar width 270px default (adjustable) expanded sidebar width, changed by dragging the ResizeHandle; should approach §02's --p-sidebar-w (264px) --preview-w 460px width of the right preview panel when open --panel-head-h 48px unified height for all right panel heads + the conversation column head, so the hairline runs as one line --p-bp-sm 640px ≤640 switches to a mobile single column (top bar + conversation), no sidebar / handle / right panel --p-bp-md 980px 641–980 auto-collapses the sidebar (user-expandable) and opens right detail panels as full-screen overlays; composer menus clamp to the viewport
The right panel track exists permanently, with its width transitioning between 0 ↔ var(--preview-w) (when open it squeezes the conversation column, rather than switching templates). The sidebar collapses SYMMETRICALLY to the right panel: its container width animates to 0 while the content keeps its fixed width anchored to the right edge (clipped, sliding out left — no reflow, hairline stays on the clipped content). No rail remains. The collapse control differs by platform: on macOS desktop the toggle is a single resident floating IconButton pinned beside the traffic lights (rendered in both states, only the glyph swaps — the sidebar slides underneath it, never moves or flashes); on Windows / web the collapse button lives inside the sidebar header (right-aligned), and a floating expand button appears at the top-left only while collapsed. The conversation header pads left in step with the transition while collapsed. All grid children must have min-height:0; min-width:0, so only the inner scroll containers scroll and the page itself does not scroll. Sidebar alignment system (--sb-*) All sidebar rows (group head, session row, New chat button) share 4 custom properties, so the "session title" aligns precisely under the "workspace name".
Token Value Usage --sb-inset 12px row box (hover/selected pill) inset from the sidebar edges — matches the brand header's 12px padding --sb-pad-x 20px content start x (= --sb-inset + 8px row padding) --sb-gutter 16px leading icon slot width — matches the workspace folder icon so the session title aligns under the workspace name --sb-gap 6px gap between the icon slot and the text
i The session title's starting x = --sb-pad-x + --sb-gutter + --sb-gap. The group head has a folder icon and the session row has a status slot; both icons are the same width and position, so the titles align naturally.
Sidebar structure The sidebar from top to bottom: brand header → New chat → search → grouped list (workspace head + session rows) → settings footer. Controls reuse the §03 primitives as much as possible. The sidebar sits on --color-sidebar-bg (one step off --color-bg: warm off-white in light, near-black in dark — the session column reads as its own plane; the hairline still separates it from the conversation pane). Vertical rhythm: the brand header keeps 12px padding (on macOS desktop the left padding grows to 80px to clear the traffic lights); rows inside the actions group (New chat + search) stack flush (0 gap, same rhythm as the list rows); adjacent groups are separated by 12px. Row hover uses --sb-hover (= the global --color-hover wash); the selected row uses --color-selected — neutral, never the accent.
Block Use Note Brand header logo + name + collapse IconButton (right-aligned) on Windows / web the brand is left and the collapse IconButton sm is right-aligned inside the header; the logo is animated (a blinking eye). On macOS desktop the header is a bare drag strip (brand hidden, traffic lights + resident floating toggle over it) New chat full-width left-aligned button (custom) same rhythm as the session rows in the list (left-aligned, hover = --sb-hover). Do not use Button (centered, breaks the rhythm) Search bare search row (custom) no border, hover/focus shows a sunken background; icon + label, with the Kbd keycaps (⌘K / Ctrl K) pushed to the trailing edge — label and shortcut are justified apart. Do not use Input (the 38px bordered version is too heavy). Last fixed row above the list — its wrapper carries the scroll-linked seam Section label .p-section-labeluppercase muted small titles like "Workspaces" Workspace head / session row see next two sections share --sb-* alignment Settings footer full-width left-aligned button (custom) pinned row under the session list, separated by a 1px --line top border; icon + label, same list-style family as New chat
! Why New chat / search / inline rename don't use Button / Input: they are "list-style" controls (full-width, left-aligned, compact, borderless), while Button is centered and Input is a 38px bordered control — forcing them in would break the sidebar's visual density and alignment. This is an intentional custom exception, not an oversight.
Session row A session row is an inset rounded pill, structured as: status slot → title → time → attention Badge → kebab.
Part Rule Container padding: 8px 8px inside the list's --sb-inset gutter, radius-sm; no fixed/min height — row height is font-driven (title line-height: --leading-tight, ≈16px) → ≈32px total, the sidebar-wide row rhythm. The hover kebab is absolutely positioned so it never forces the row taller (no hover jitter). hover = --sb-hover (the global --color-hover wash); active = --color-selected — neutral, no accent tint, no border, no weight changeStatus slot (lead) fixed --sb-gutter width; running = Spinner sm, otherwise unread = 7px accent dot Title flex:1 with truncation; double-click enters inline rename (compact input, not Input) Time mono xs, fg-faint; yields to the kebab on hover Attention Badge Badge sm: info (needs answer) / warning (needs approval) / danger (aborted)kebab IconButton sm, shown on hover; dropdown uses Menu/MenuItemArchive confirmation replaces the title area, Button sm (danger confirm / secondary cancel)
Workspace group The group head and session rows share --sb-*: folder icon (open/closed) → name, with the kebab and "+" revealed on hover.
The folder icon leads the row (switching icons between open and closed states) with the plain --sb-gap before the name — it does not pad out the --sb-gutter slot. The name is quiet by design — regular weight, muted color (--color-text-muted, one step lighter than session titles), so group heads read as grouping labels. No path subtitle; hovering the name shows the full root path in a Tooltip. The kebab (menu) and "+" (new chat in this workspace) both use IconButton sm inside a floating actions layer anchored to the row's right edge — no reserved layout space, so the name uses the full row width when idle. Shown on hover, keyboard focus, or while the menu is open; the layer backs itself with the sidebar surface (container background) plus the row hover wash (an ::after shown only while the row is hovered), so its color exactly equals the row's current background and the overlapped name tail doesn't bleed through (hidden via opacity:0, staying in the tab order). The group is collapsible; when collapsed its session list is hidden. Show more & collapse The "load more / show less" control at the bottom of each workspace group is a session-row-shaped compact list control (same family as search, New chat, inline rename — not a Button). It doubles as the pagination trigger and the in-group expand / collapse toggle.
Part Rule Container session-row pill: display:flex; gap:--sb-gap; padding:8px …, no fixed/min height (font-driven, ≈32px like a session row), same padding as a session row, radius-sm; hover = --sb-hover (no text recolor); :focus-visible uses --p-focus-ring Lead slot empty, --sb-gutter wide, so the label's start x aligns with the session titles (--sb-pad-x + --sb-gutter + --sb-gap) Label font-ui, text-xs, --color-text; flex:1, truncatedBehavior "Load more" fetches the next page and auto-expands; once more than the first page is loaded, "Show less" appears and collapses back to the first page (view-layer trim — data is kept, no refetch); "Show all" re-expands
ResizeHandle A 4px vertical drag bar, layered over the 1px column border (margin: 0 -2px makes the whole 4px grabbable), turning accent on hover / drag.
Rule Value Width / cursor 4px / col-resize Normal / active transparent / accent fill Layer --z-dropdown, above pane-level sticky chrome (chat dock at --z-sticky) so the overhang stays visible and grabbableBehavior panel width follows the pointer 1:1 while dragging (the parent disables transitions to avoid lag); on release it is persisted to localStorage
Right panel The right panels (file preview / Diff / thinking / sub-agent / side chat) share one track and one head primitive.
The panel head uses the PanelHeader primitive (48px = --panel-head-h), the same height as the conversation column head, so the hairline runs as one line. Panel head: bold mono title + optional muted subtitle + middle slot (Badge / control / path) + close IconButton on the right. When opened, the panel width goes from 0 → var(--preview-w), smoothly squeezing the conversation column. At ≤640px the panel becomes a full-screen overlay (position:fixed; inset:0). i One-sentence principle: the sidebar / shell is a "list + grid" skeleton that reuses the §02 tokens and §03 primitives (Button / IconButton / Badge / Kbd / Menu / Spinner / PanelHeader); compact list controls that don't fit a primitive (search, New chat, inline rename, show-more) keep their custom form, governed by this section.
08
Accessibility (pragmatic edition) Kimi Web is a local developer tool; it does not target a specific WCAG conformance level , nor maintain a full screen-reader QA matrix. This section collects only the rules that are "low-cost, don't hurt the look, and directly benefit keyboard-heavy users", as the baseline contract for each primitive; the more expensive, lower-ROI parts (such as real-time announcement orchestration for streaming output) are not mandatory for now.
i On the "ugly" focus ring: the focus visibility required below always uses :focus-visible (not :focus). It appears only on keyboard focus ; mouse clicks don't trigger it, so it doesn't pollute the mouse-driven visual; the ring's strength is tuned uniformly with --p-focus-ring, not overridden per place.
1. Contrast & color Body text vs. background contrast ≥ 4.5:1 ; control borders, icons, and key graphics ≥ 3:1 . When changing theme colors / dark mode, verify against §05 together. Button text vs. button background , and form controls (input, placeholder, helper / error text) vs. their section background must all have contrast ≥ 4.5:1 (large text ≥ 3:1). White-on-white text, a transparent borderless button floating over the page background, and a light placeholder on a near-white background are all flagged by the style rules.State is not conveyed by color alone. Error, selected, and disabled states also carry text, an icon, or a shape change (for example an error state is not just red, but also carries text or an icon).2. Keyboard operable Anything doable with a mouse must also be doable with a keyboard; Tab order follows the DOM, with no invented skipping. Composite controls define their keyboard model per the table below; a missing model is treated as incomplete:
Control Keyboard behavior Dialog Tab cycles within the dialog (focus trap); Esc closes; focus returns to the trigger element after closing.Menu ↑ / ↓ move the highlight, Enter selects, Esc closes.Tabs ← / → switch tabs (roving tabindex); only the current tab is in the Tab sequence.Switch / Segmented ← / → or Space / Enter to toggle.Composer On touch-primary devices (pointer: coarse) Enter inserts a newline (send via the button) and Ctrl+S steer is disabled; a detected hardware keyboard restores both.
3. Focus visibility Every interactive element must have a visible focus indicator on keyboard focus, uniformly via :focus-visible + --p-focus-ring (primary actions may use --p-focus-ring-strong). Bare outline: none is forbidden. To remove the default outline, you must provide an equivalent replacement style. 4. Labels & semantics Semantic HTML first (button / a / input / dialog…); ARIA is added only when native semantics fall short.Icon-only buttons must have an aria-label — IconButton already enforces this with a required label prop. Dialog: role="dialog" + aria-modal="true", with the title as the dialog's accessible name. Purely decorative SVG / icons get aria-hidden="true" to avoid being read out by screen readers. 5. Target size Desktop click targets ≥ 32px ; touch devices ≥ 44px (consistent with the §01 principle and the IconButton lg tier).
6. Reduced motion Handled uniformly in the global styles per §02's @media (prefers-reduced-motion: reduce); components do not check this individually. The MoonSpinner moon phase pauses on the current frame.
7. Live announcements (non-mandatory) Screen-reader announcements are not a mandatory contract in this product. Short hints like Toast can use role="status" / aria-live; chat streaming output is currently not announced word-by-word, which is an acceptable trade-off, to be added later if a real need arises.
✓ Explicitly not mandatory for now: a WCAG conformance-level claim, a complete ARIA pattern table, a per-screen-reader QA matrix, and real-time announcement orchestration for streaming output — these are not written into the primitive contract, to avoid becoming slogans no one maintains.
`,4))])])])]))}}),ga=x(ca,[["__scopeId","data-v-40168b71"]]);export{ga as default};
diff --git a/apps/kimi-code/dist-web/assets/DesignSystemView-UYw_7SpS.js b/apps/kimi-code/dist-web/assets/DesignSystemView-UYw_7SpS.js
new file mode 100644
index 0000000000..9c2b9f5990
--- /dev/null
+++ b/apps/kimi-code/dist-web/assets/DesignSystemView-UYw_7SpS.js
@@ -0,0 +1,13 @@
+import{_ as w,I as y,a as x}from"./index-bE2IzaLg.js";import{d as k,h as C,R as z,o as t,c as s,a as e,V as d,J as i,F as r,r as b,E as g,b as S,u as q}from"./vendor-ucnN-Sh8.js";import"./vendor-markstream-D6yjq9lL.js";import"./vendor-katex-Com_2SPi.js";const T={class:"ds-page"},B={class:"layout"},A={class:"content"},I={class:"content-inner"},M={id:"tokens"},H={class:"icon-sizes"},L={class:"sz"},V={class:"p-ic",style:{width:"14px",height:"14px"},viewBox:"0 0 24 24",fill:"currentColor"},D={class:"sz"},U={class:"p-ic",style:{width:"16px",height:"16px"},viewBox:"0 0 24 24",fill:"currentColor"},W={class:"sz"},R={class:"p-ic",style:{width:"20px",height:"20px"},viewBox:"0 0 24 24",fill:"currentColor"},P={class:"icon-grid"},N={class:"icon-group-label"},K={class:"ic-name"},O={id:"primitives"},E={class:"stage-wrap"},j={class:"stage p col"},_={class:"demo-row"},F={class:"p-btn primary disabled"},G={class:"p-spinner sm",viewBox:"0 0 24 24",style:{"--p-accent":"#fff","--p-line":"rgba(255,255,255,.35)"}},J={class:"stage-wrap"},Q={class:"stage p col",style:{gap:"0",background:"var(--p-surface)",padding:"0","max-width":"300px","align-items":"stretch"}},Y={style:{display:"flex","align-items":"center",gap:"8px",padding:"7px 10px",margin:"1px 6px","border-radius":"8px",color:"var(--p-text)","font-size":"13px"}},Z={style:{color:"var(--d-fg-faint)",flex:"none"},width:"14",height:"14",viewBox:"0 0 24 24",fill:"currentColor"},$={style:{display:"flex","align-items":"center",gap:"8px",padding:"7px 10px",margin:"1px 6px","border-radius":"8px",color:"var(--p-text)","font-size":"13px"}},X={style:{color:"var(--d-fg-faint)",flex:"none"},width:"14",height:"14",viewBox:"0 0 24 24",fill:"currentColor"},aa={id:"chat"},ea={class:"stage-wrap"},ta={class:"stage p col",style:{"align-items":"center",background:"#fff"}},sa={class:"demo-chat"},da={class:"p-action"},oa={class:"p-action-head"},ia={class:"p-ic",style:{color:"var(--p-accent)"},viewBox:"0 0 24 24",fill:"currentColor"},la={class:"p-action warn"},na={class:"p-action-head"},ca={class:"p-ic",style:{color:"var(--p-warning)"},viewBox:"0 0 24 24",fill:"currentColor"},va=k({__name:"DesignSystemView",emits:["close"],setup(ra,{emit:m}){const f=m;function p(){f("close")}let v=null;function h(c){c.key==="Escape"&&p()}return C(()=>{document.addEventListener("keydown",h);const c=Array.prototype.slice.call(document.querySelectorAll('#nav a[href^="#"]')),a=new Map;c.forEach(n=>{const o=n.getAttribute("href");if(!o)return;const u=document.getElementById(o.slice(1));u&&a.set(u,n)});let l=null;v=new IntersectionObserver(n=>{n.forEach(o=>{o.isIntersecting&&(l&&l.classList.remove("active"),l=a.get(o.target)??null,l&&l.classList.add("active"))})},{rootMargin:"-20% 0px -70% 0px",threshold:0}),a.forEach((n,o)=>v.observe(o)),c.length&&c[0].classList.add("active")}),z(()=>{document.removeEventListener("keydown",h),v&&(v.disconnect(),v=null)}),(c,a)=>(t(),s("div",T,[e("div",{class:"ds-topbar"},[e("button",{class:"ds-back",type:"button",onClick:p},"← Back"),a[0]||(a[0]=e("span",{class:"ds-topbar-title"},"Design system",-1))]),e("div",B,[a[38]||(a[38]=d('',1)),e("main",A,[e("div",I,[a[36]||(a[36]=d('● Design System · v1.0 Kimi Web Design System This document defines the visual language and component specification for Kimi Web — design tokens, component primitives, the chat interface, theming, and style rules. All UI work is grounded in it: unified, restrained, token-driven, and themeable.
Scope apps/kimi-web Component primitives Theme 1 set · 4 customizable colors Light / dark mode
i This spec is the single reference when changing the web UI. Before adding or modifying a component, style, layout, or theme, read this document first; color, font, radius, spacing, shadow, z-index, and motion always use the §02 tokens, components reuse the §03 primitives, and the §06 style rules are followed.
01
Design Principles Every UI decision traces back to the following principles. Kimi Web is a local Agent tool for developers: quick scanning, long stretches of staring, often in the dark — the design serves the task, and is restrained, clinical, and density-first.
Consistency —— The same semantics use the same component. The primary button, dialog, input, and badge should each have exactly "one" correct way to be written across the entire site.Hierarchy —— Build a clear hierarchy through size, weight, color, and whitespace; emphasize through "restraint" rather than "bolder and bigger".Proximity —— Group related elements, leave whitespace between unrelated ones. A card's padding, line spacing, and group spacing all come from the same spacing scale.Feedback —— hover / active / focus / loading / success / error all have visible states, and the state language is unified.Breathing room —— Control density with the spacing scale rather than arbitrary pixels; prefer restrained whitespace over cramming controls together.Accessibility (A11y) —— Text contrast ≥ 4.5:1, visible focus rings, touch targets ≥ 32px, and states that don't rely on color alone.Reduction —— The number of colors, radii, shadow levels, and type sizes all converge to a finite set of tokens; delete stray values.✓ Brand tone (the do-not list) : calm, clinical, never exaggerated. Reject purple gradients, glassmorphism, glowing shadows, AI purple / blue glows, endlessly looping fussy micro-animations, "Boost your productivity"-style marketing copy, and using emoji as icons — the moon phases 🌑…🌘 are the sole exception , used only in the "waiting for the Agent to respond" chat state, as a brand signature. These are all common tells of AI-generated interfaces (an "AI tell"), deliberately avoided.
i Declare design intent first (Design Read) : before adding a component / page, write one sentence describing its scenario, audience, and tone (for example, "a lightweight tool card embedded in a conversation, for developers, calm and restrained"), then build. If the intent isn't clear, ask one question first rather than defaulting to the nearest existing style.
',2)),e("section",M,[a[7]||(a[7]=d(`02
Design Tokens Collapse every visual decision into tokens. Color tokens keep the existing short names and fill out the semantics (lowering migration cost), while spacing, z-index, motion, and font-weight fill in the scales that are currently missing. Every token has: name, light value, dark value, and usage.
i Naming convention : --<category>-<role>-<state>. For example --color-text-muted, --radius-md, --space-4. To reduce churn, the existing short names (--bg / --ink / --line / --blue …) are kept as compatibility aliases for one release cycle.
Color Semantic-first, in three layers: background / text / border + accent + status colors . All colors are defined in light / dark pairs, with contrast ≥ 4.5:1.
i The table below shows the derived semantic tokens . The neutrals and the accent are derived from the 4 color seeds in §05 — for example --color-accent comes from --accent-primary, and --color-bg comes from the current light / dark surface. The semantic status colors (success / warning / danger / info) are independent palettes paired with the seeds, one set each for light / dark; they are not auto-derived from the seeds. Day-to-day reskinning usually only needs the 4 seeds, with the status colors fine-tuned as needed.
Token Light Dark Usage --color-bg #ffffff #0d1117Page background --color-surface #fafbfc #161b22Panel / sidebar / card head --color-surface-raised #ffffff #1c2128Raised card / dialog / input --color-text #14171c #e8eaedBody text / headings --color-text-muted #6b7280 #9aa0a8Secondary text / placeholder --color-line #e7eaee #2d333bDivider / card border --color-selected #00000014 #ffffff14Neutral selected fill (sidebar rows, list pickers) — translucent, never accent-tinted --color-hover #0000000d #ffffff0dRow hover wash — lighter than the selected fill (hover < selected); translucent, sits on any surface --color-media-alpha-bg-1 ≈#858585 ≈#676b72Checkerboard square A of the <img> alpha canvas — color-mix of --color-bg/--color-text (52/48); applied via --media-alpha-canvas (16px period) --color-media-alpha-bg-2 ≈#6b6b6b ≈#7a7e85Checkerboard square B (42/58) — both squares stay ≥3:1 against white and black; opaque images cover the canvas --color-sidebar-bg #fbfaf9 #181817Sidebar surface — one step off --color-bg so the session column reads as its own plane --color-accent #1783ff #58a6ffPrimary action / link / focus --color-success #0e7a38 #3fb950Success / pass --color-warning #a9610a #d29922Warning / pending --color-danger #c0392b #f85149Danger / error / abort
Surface usage The four surface layers each have a role — choose by "raised layer / default flat layer / sunken layer / page background", and avoid treating --p-surface-raised as a universal background.
Token Light Dark Usage --p-surface-raised #ffffff #1c2128Raised card / dialog / input (raised layer) --p-surface #fafbfc #161b22Panel / sidebar / card head (default flat layer) --p-surface-sunken #f3f5f8 #0d1117Code block / inline input / recessed area (sunken layer) --p-bg #ffffff #0d1117Page background
Focus ring All focusable controls (button, input, link, menu item, switch, checkbox) use the focus-ring token uniformly; do not hand-write a box-shadow focus ring.
Token Value Usage --p-focus-ring 0 0 0 3px var(--p-accent-soft) Default focus ring (link, menu item, switch, checkbox) --p-focus-ring-strong 0 0 0 3px var(--p-accent-soft), 0 0 0 1px var(--p-accent) Strong focus ring (button, primary action)
Text selection The text-selection color uses --p-selection uniformly (light rgba(23,131,255,.18) / dark rgba(88,166,255,.32)), applied by the global ::selection rule; do not set a separate highlight background.
Disabled state All disabled controls use opacity:.5 + cursor:not-allowed uniformly; do not separately grey out or recolor.
Font families Kimi Web uses two font families: --font-ui (UI and body, Inter first) and --font-mono (code and monospace). Components always reference the variables; do not hard-code font names.
--font-ui · UI & body (Inter first) Body and UI use self-hosted Inter as the primary face. CJK and platform system UI fonts sit late in the fallback chain so Latin glyphs resolve to Inter while Chinese text can fall through to native CJK fonts:
--font-ui
--font-ui: "Inter Variable", "Inter", "Helvetica Neue", Arial,
+ "PingFang SC", "Microsoft YaHei", "Noto Sans SC",
+ -apple-system, BlinkMacSystemFont, "Segoe UI",
+ Roboto, Ubuntu, sans-serif,
+ "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji"; Inter first: self-hosted Latin UI and body text, loaded through the optical-size normal and italic variable faces. Western fallbacks next: Helvetica Neue / Arial for environments where Inter cannot load. CJK and system UI fallbacks late: PingFang SC / Microsoft YaHei / Noto Sans SC, then platform UI fonts and emoji fonts. --font-mono · Code & monospace Code, tool names, line numbers, diffs, etc. use JetBrains Mono (a self-hosted variable font), falling back to the system monospace:
--font-mono
--font-mono: "JetBrains Mono Variable", "JetBrains Mono",
+ ui-monospace, "SF Mono", Menlo, Consolas, monospace; Loading strategy Font Source Bundled Usage JetBrains Mono @fontsource-variable/jetbrains-mono ✓ self-hosted monospace / code (--font-mono) Inter @fontsource-variable/inter/opsz.css + opsz-italic.css ✓ self-hosted UI / body / display (--font-ui, --font-display), wght 100-900, opsz 14-32, normal + italic System UI / CJK fonts operating system — late fallback for UI / body, not bundled
✓ Self-hosted Inter / JetBrains Mono: no external network requests, no FOUT, works offline; system fonts are not bundled, consistent with the local-first approach.
Usage rules Components always use var(--font-ui) / var(--font-mono); do not hard-code font names like 'Inter' / 'JetBrains Mono'. Body / UI use --font-ui (Inter first); code / monospace use --font-mono (JetBrains Mono). Inter is loaded from the complete optical-size variable faces, including normal and italic styles; font-optical-sizing: auto is enabled globally. CJK and platform system UI fonts stay late in the --font-ui fallback chain, after Inter and Western fallbacks. Type scale & weight The user font-size preference writes --base-ui-font-size. Compact UI chrome and the sidebar follow it through --ui-font-size, while chat reading surfaces derive one readable step above it through --content-font-size.
The fixed product type tokens still define component defaults: UI controls / buttons / forms use --text-base (14px); reading body — including chat Markdown, message bubbles, etc. stays one step larger than compact chrome for readability; the sidebar session list follows that same readable step while keeping list density. Drop stray font-weight: 650 / 750; converge on two weights, 400 / 500 (regular / emphasis).
Page Title
--text-2xl · 22 / 500
Section Title
--text-xl · 18 / 500
Chat body / card title
--text-lg · 16 / 400
UI control / button / form
--text-base · 14 / 500
Helper text / table
--text-sm · 13 / 400
Badge / timestamp / line number
--text-xs · 12 / 500
Token Value Usage --font-ui "Inter Variable", "Inter", "Helvetica Neue", Arial… UI & body (Inter first) --font-mono JetBrains Mono… code, tool names, line numbers, diffs --base-ui-font-size 14px user preference root setting that drives UI, reading body, and sidebar font sizes --content-font-size calc(base + 1px) chat Markdown, message bubbles, composer --leading-tight/normal/relaxed 1.25 / 1.5 / 1.7 headings / UI / long text --weight-regular/medium 400 / 500 body / emphasis
Icon size Icons use three size tokens uniformly. The global .p-ic default is 16px (--p-ic-md); components pick as needed, and random pixel sizes are forbidden.
Token Value Usage --p-ic-sm 14px small button, badge, menu item, inline link icon --p-ic-md 16px default (button, icon button, toolbar) --p-ic-lg 20px Toast status icon, empty-state illustration
Icon Icons always come from the centralized registry lib/icons.ts: in templates use the <Icon name size /> component (components/ui/Icon.vue); for v-html contexts (such as a tool glyph) use iconSvg(name, size). Do not hand-write <svg> — the scripts/check-style.mjs icon-from-registry rule flags stray SVGs. Icons come from Remix Icon (Apache-2.0), uniformly in a fill style (fill="currentColor", 24×24 source grid), with color following the text; size uses the three tokens below. The registry is bundled on demand by unplugin-icons at build time from @iconify-json/ri — only icons imported in lib/icons.ts end up in the production bundle, fully offline and tree-shaken. The whole site uses only this one icon family ; do not mix in other icon libraries, and never hand-write SVG paths . When an icon is missing, add it to the registry — two static ~icons/ri/* imports (component + ?raw string) plus one entry in ICONS in lib/icons.ts; the import names (e.g. RiFolderOpenLine / RawFolderOpenLine) show the ri: icon id. Do not draw it in a component.
Size scale `,43)),e("div",H,[e("div",L,[(t(),s("svg",V,[...a[1]||(a[1]=[e("path",{fill:"currentColor",d:"M11 11V5h2v6h6v2h-6v6h-2v-6H5v-2z"},null,-1)])])),a[2]||(a[2]=i("sm · 14",-1))]),e("div",D,[(t(),s("svg",U,[...a[3]||(a[3]=[e("path",{fill:"currentColor",d:"M11 11V5h2v6h6v2h-6v6h-2v-6H5v-2z"},null,-1)])])),a[4]||(a[4]=i("md · 16",-1))]),e("div",W,[(t(),s("svg",R,[...a[5]||(a[5]=[e("path",{fill:"currentColor",d:"M11 11V5h2v6h6v2h-6v6h-2v-6H5v-2z"},null,-1)])])),a[6]||(a[6]=i("lg · 20",-1))])]),a[8]||(a[8]=e("h4",{class:"mini"},"Icon library",-1)),a[9]||(a[9]=e("p",null,[i("Currently registered icons, grouped by purpose. The display order and grouping are defined by "),e("code",null,"ICON_GROUPS"),i(" in "),e("code",null,"lib/icons.ts"),i(" (a hand-maintained array covering the same icon names), and this catalog is rendered directly from that array so the registry and the document never drift.")],-1)),e("div",P,[(t(!0),s(r,null,b(q(y),([l,n])=>(t(),s(r,{key:l},[e("div",N,g(l),1),(t(!0),s(r,null,b(n,o=>(t(),s("div",{key:o,class:"icon-cell"},[S(w,{name:o},null,8,["name"]),e("span",K,g(o),1)]))),128))],64))),128))]),a[10]||(a[10]=d('Do not use emoji as functional icons (the sole exception is the moon phases 🌑…🌘, used only in the "waiting for the Agent to respond" chat state). The Kimi brand mark (the 32×22 eye logo) is a brand asset and is not part of this icon system.
A few special graphics are not in the registry; each has a dedicated component maintained in one place, and must not be copied by hand: <ContextRing :pct /> (the Composer context progress ring, data-driven), <AuthStateIcon kind /> (the success / expired / error colored illustrations in the login flow), <Spinner /> (loading state). Status dots (such as in the Provider list) always use CSS dots (border-radius:50%), not SVG. The scripts/check-style.mjs icon-from-registry rule exempts the above and the brand mark; all other hand-written <svg> is flagged.
Spacing A 4px base grid. All spacing, gaps, and padding inside and outside components come from this scale — no arbitrary pixels.
--space-1 · 4
icon gap, badge padding
--space-2 · 8
control gap, small padding
--space-3 · 12
button padding, form-item gap
--space-4 · 16
card padding, grid gap
--space-5 · 20
dialog padding
--space-6 · 24
section gap
--space-8 · 32
large section gap
Dense list (sidebar / file tree) High-density navigation lists like the sidebar share one rhythm, all on the 4px grid: in-row vertical padding --space-1 (4px), no margin between rows (the hover pill provides the separation); section gap (between logo / search / action buttons / group title / list) uniformly --space-2 (8px); between groups --space-2; the brand header is slightly looser at the top (--space-3). When building similar lists, reuse this scale — do not hand-write 1/6/7/10px.
Radius Merge the existing 14 values into the nearest of 7 scale steps. Rule: the component type determines the radius, not the author's feel.
Token Value Usage Merged from --radius-xs 4px small badge, inline tag 2/3/4px → --radius-sm 6px small button, icon button, menu item 5/6px → --radius-md 8px button, input, badge, card 7/8/9px → --radius-lg 12px dropdown panel 10/12px → --radius-xl 16px dialog, bottom Sheet, Composer 14/16px → --radius-2xl 20px accent container / large panel 20px --radius-full 999px pill badge, avatar, send button 999px / 50%
Elevation & z-index Shadows express only "elevation", never decoration (no colored glow). z-index is unified into a scale, eradicating 9999-style one-upping.
sm · dropdown menu / sticky Z-index Token Value Usage --z-base 0 normal flow --z-sticky 100 sticky header / sidebar --z-dropdown 200 dropdown menu / tooltip --z-overlay 300 overlay / bottom Sheet --z-modal 400 dialog --z-toast 600 toast --z-max 9999 reserved: only this tier for extreme fallback
Motion Token Value Usage --ease-out cubic-bezier(0.16, 1, 0.3, 1) enter, hover, expand --ease-in-out cubic-bezier(0.4, 0, 0.2, 1) panel width, layout changes --duration-fast 120ms press, focus --duration-base 160ms hover, show/hide --duration-slow 260ms dialog, Sheet, layout
Reduced motion i Under @media (prefers-reduced-motion: reduce), all animation and transition durations drop to about 0.001ms (effectively off), and the MoonSpinner moon phase pauses on the current frame. Components should not check this individually; it is handled uniformly in the global styles.
Layout & breakpoints Layout sizes and responsive breakpoints are tokenized too: sidebar width, content reading-column width, and two global breakpoints. Components should not hard-code pixels.
Token Value Usage --p-sidebar-w 264px left session sidebar width --p-content-max 760px chat reading-column max width (regular chat prose) --p-content-wide 920px wide content (settings / panel) --p-table-max 1040px desktop wide-table max width (see §04) --p-table-cell-max 700px max width of a single table column; longer cell content wraps (see §04) --p-bp-sm 640px mobile / desktop boundary --p-bp-md 980px narrow / wide screen boundary; consumed in JS as the NARROW_QUERY matchMedia constant (CSS media queries can't reference tokens)
i At ≤640px: dialogs become bottom Sheets, the sidebar collapses into an expandable drawer, and Composer toolbar controls are allowed to wrap. At 641–980px: the sidebar auto-collapses (user-expandable), right detail panels open as full-screen overlays, and composer menus clamp to the viewport.
',23))]),e("section",O,[a[21]||(a[21]=d(`03
Primitives Component primitives are the "smallest correct units" of the site UI. Each primitive exposes variants along only two dimensions — variant / size — with appearance driven by tokens, so it naturally supports light / dark mode and customizable theme colors.
i For every interactive primitive, the keyboard behavior, focus, and ARIA contract are in §08 Accessibility . New primitives must ship with a keyboard model — mouse-only interaction is not enough.
Component selection guide Scenario Use Primary action (submit / confirm) Button variant=primarySecondary action / cancel Button secondary / ghostDestructive action (delete / abort) Button danger / danger-softStatus marker BadgeToolbar filter / model switch Pill2–4 mutually exclusive options SegmentedControlTop tabs TabsSwitch / multi-select Switch / CheckboxFloating content card / list action menu Card / MenuInline notice / global toast Banner / ToastDialog / confirmation · bottom panel (mobile) Dialog / Sheet
Button 4 semantic variants × 3 sizes. The primary action primary takes its color from the current theme color (§05 can switch between the blue and black families). Radius uses --radius-md uniformly (small size --radius-sm), weight 600, with a visible focus ring.
Variant matrix light preview
medium · default Primary action Secondary action Ghost button Destructive (soft) Destructive action
small Confirm Cancel More
With icon / state Dark skin dark
Primary action Secondary action Ghost button Destructive action
API Button.vue · usage
<Button variant ="primary" size ="md" :loading ="submitting" > Save</Button>
+ // variant: primary | secondary | ghost | danger | danger-soft
+ // size: sm | md | lg States
Disabled primary SubmittingDisabled danger
IconButton Unified into three sizes — 26 / 32 / 44px — with a light-grey hover background and a visible focus ring. Replaces the ad-hoc icon + click areas scattered across components today.
i The desktop IconButton comes in sm 26 / md 32; on touch devices the tap target should be ≥ 44px, so use lg 44px, satisfying the §01 accessibility principle (the mobile three-piece set uses lg).
Badge · Chip · Pill Collapsed into two kinds: Badge (status badge, with an optional status dot) and Pill (the clickable pill in the composer toolbar). Radius, font size, and padding are all unified.
Badge · status badge
Semantic variants pending running completed needs confirmation failedKIMI
With icon / small size Pill · toolbar pill (composer)
kimi-k2 · thinking yolo 12k / 200kKbd · keyboard shortcut Kbd renders a shortcut as keycaps — one block per key, never inline text like (⌘K). Caps are 18px tall (Badge sm rhythm): sunken surface, 1px border with a 2px bottom edge, 11px UI font, muted text. Typical placement: pushed to the row's trailing edge, opposite the label (e.g. the sidebar search row).
Card / Surface All cards across the site share one shell : flat, 1px border, --radius-md radius, no shadow . The structure is split into three parts — head / body / foot. Cards differ only in the head — in two tiers by visual weight, while the shell stays consistent:
Operation card —— "process" content such as tool calls, Agent, Todo. The head is compact mono with no fill, low weight by default, not competing with the conversation.Attention card —— content that needs a user decision, such as Question / Approval. The head carries a semantic color band (accent / warning) to stand out from the message stream.Operation card · compact mono head (no fill)
read_file session.ts
The head uses mono + a neutral background to emphasize its "code / process" nature; the body uses sans for readability. Flat, radius-md, same shape as the tool group and Agent group.
Attention card · semantic color-band head (accent / warning)
A decision needs your confirmation question
The head uses a semantic light background (accent-soft / warning-soft) to stand out from the message stream, signaling that the user must step in. The shell is exactly the same as the operation card.
Group · the container owns the border, rows are separated by hairlines
Unified shell : all cards are flat + 1px border + radius-md, casting no shadow.Differences are intentional : only the head distinguishes the type (compact mono vs semantic color band); the shell stays consistent.Grouping : the outer container owns the border and radius; inner rows are separated by border-top hairlines, rather than each row being its own card.Status dots : running (pulsing blue) / done (green) / failed (red), sharing one color vocabulary (see §04 tool calls).Input / Select / Textarea Unified 38px height (32px small), --radius-md radius, --color-surface-raised background, and a unified blue focus ring (0 0 0 3px accent-soft).
Code / Diff Inline code, code blocks, and diffs all use the monospace font (--p-font-mono). Code blocks have a filename title bar and a copy button. Diffs use + / - row colors to express additions and deletions — additions use a success light background, deletions use a danger light background, with no gradients.
Code / Diff
inline code The server uses jwt.verify(token) to verify the signature, returning 401 on failure.
code block import { verify } from './jwt';
+
+ export function auth(token: string) {
+ return verify(token, process.env.JWT_SECRET!);
+ } diff session.ts · +3 -1
import { verify } from './jwt';
- const secret = 'dev-secret';
+ const secret = process.env.JWT_SECRET!;
return verify(token, secret);
Dialog One dialog primitive replaces 6 hand-written implementations: unified --radius-xl radius, --shadow-xl shadow, 20px head padding, right-aligned footer actions, and an IconButton close button.
Dialog primitive
New chat
Create an independent Agent chat in the current workspace.
i Size & height : Dialog offers three widths — md 440 / lg 640 / xl 760 (--p-content-max) — chosen by content weight. Height comes in two kinds: auto (default, grows with content up to max-height) and fixed (constant height min(680px, 100vh - 64px), with overflow scrolled inside the body). Content / multi-tab dialogs (settings, model picker, provider manager, folder browser) always use fixed so the frame size stays constant and doesn't jump when switching tabs or content length; short confirmation dialogs keep auto.
Toast Unified information architecture: status icon + title + description. The status color appears only on the icon, avoiding large colored areas that create visual noise.
Toast
Connected to server
The local daemon is responding normally; you can start a new chat.
Context usage 82%
Consider running /compact to free up space.
Spinner Loaders fall into two categories by scenario — do not mix them :
Spinner (plain · SVG ring) —— the default loader. Used for button loading, app startup (GlobalLoading), and general inline waits — "everything else".MoonSpinner (moon phase · brand signature) —— used only for the chat waiting state of "message sent, waiting for the Agent's first response" (the sending placeholder in ChatPane, SideChatPanel, ActivityNotice).Spinner · plain loader (default) `,48)),e("div",E,[a[14]||(a[14]=e("div",{class:"stage-bar"},[e("span",{class:"st"},"Spinner · common scenarios")],-1)),e("div",j,[e("div",_,[a[13]||(a[13]=d(' Loading… ',2)),e("button",F,[(t(),s("svg",G,[...a[11]||(a[11]=[e("circle",{class:"track",cx:"12",cy:"12",r:"9"},null,-1),e("circle",{class:"arc",cx:"12",cy:"12",r:"9"},null,-1)])])),a[12]||(a[12]=i("Submitting",-1))])])])]),a[22]||(a[22]=d('MoonSpinner · moon phase (only "waiting for the Agent") MoonSpinner · chat waiting state only signature
Frame loop (8 frames) 🌑 🌒 🌓 🌔 🌕 🌖 🌗 🌘
Usage · only while the chat waits for a response 🌔 Thinking…🌕 Waiting for response…
i The moon phase is the sole exception to the emoji-as-icon rule, and is limited to the "waiting for the Agent's first response" scenario. It is currently implemented twice — in MoonSpinner.vue and ActivityNotice.vue — and should be merged into a single MoonSpinner component, sized via tokens and supporting prefers-reduced-motion. All other loading states use the plain Spinner.
Link Inline text link: the default is the accent color with no underline; on hover it shows an underline and darkens. The .muted variant uses the secondary text color. Used for in-text jumps, external links, "view all", and other lightweight actions.
Menu / Dropdown Dropdown menu panel: raised surface + border + light shadow (--shadow-sm, flat-leaning). Menu items support icons, the current (active) state, the danger state, and the disabled state, with separators grouping items. On touch / mobile, use lg (≥44px row height) for menu items.
SegmentedControl Mutually exclusive short option groups, commonly used for 2–4 option switches such as "light / dark / follow system". The current item is highlighted with a raised surface + subtle shadow.
Tabs Tabs with a bottom hairline, used for grouping and switching sibling content. The current tab is marked with accent text + an accent underline.
Switch A two-state switch for settings that take effect immediately. 36×20 track with full radius, 16px knob; when on, the track turns accent and the knob slides right, with the transition driven by tokens.
Checkbox A 17×17 checkbox. When checked it fills with the accent color and shows a white tick (inline SVG). Often paired with a text label.
Avatar A 32px default avatar with md radius; .sm is 24px. Can hold an initial or an icon; falls back to this placeholder when there is no image.
EmptyState A centered placeholder for empty lists / panels: a 48px faint icon + title + hint, avoiding blank pages.
EmptyState
No chats yet
Click "New chat" to start a conversation with Kimi
Divider A 1px horizontal divider (--p-line); .p-divider-v is the vertical divider, used between inline elements.
Divider
Content above
Content below
kimi-k2 thinking
Tooltip A CSS-only hover hint, wrapped in .p-tip. Inverted background (--p-text / --p-bg), single line, no wrapping — carries only short notes.
Tooltip (hover the button)
Banner An inline notice bar placed at the top of a content area. Three states — .info / .warning / .danger — each with a matching 18px icon.
Banner
Currently in yolo mode; tool calls will run automatically
Sheet / BottomSheet A mobile bottom slide-up panel: xl top radius + drag handle, xl shadow. At ≤640px, dialogs become bottom-anchored Sheets.
Skeleton A placeholder for loading content, using a breathing opacity animation (no gradients), following the no-gradient-text rule. Composed into titles / text lines / avatars.
Command Bar An inline combination of "primary action + command text + copy", sitting between a button and a code block — used for install / onboarding / one-click execution. The primary action reuses Button primary; the command area uses a mono light-grey background.
Command Bar
Install Kimi Code ▾ curl -fsSL https://code.kimi.com/install.sh | bash TopBar The application top bar. Solid by default; the .frost variant is translucent + background blur, used only for sticky navigation bars , and is the sole exception to the no-glassmorphism rule (see §06).
TopBar · solid / frosted glass
Frosted-glass TopBar · .frost SectionLabel A small group title for sidebar lists, used to section the content below (such as Workspaces in the sidebar). Spec: 13px / 700 / uppercase / letter-spacing .08em, color --color-fg-faint; left-aligned to the row's starting padding (--sb-pad-x), keeping the same indent as the group rows below. For scripts without case (such as Chinese), text-transform:uppercase simply has no effect — no special handling needed.
',50)),e("div",J,[a[20]||(a[20]=e("div",{class:"stage-bar"},[e("span",{class:"st"},"Sidebar · group title")],-1)),e("div",Q,[a[19]||(a[19]=e("div",{class:"p-section-label",style:{padding:"12px 16px 4px"}},"Workspaces",-1)),e("div",Y,[(t(),s("svg",Z,[...a[15]||(a[15]=[e("path",{fill:"currentColor",d:"M4 5v14h16V7h-8.414l-2-2zm8.414 0H21a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h7.414z"},null,-1)])])),a[16]||(a[16]=i(" kimi-code-web ",-1))]),e("div",$,[(t(),s("svg",X,[...a[17]||(a[17]=[e("path",{fill:"currentColor",d:"M4 5v14h16V7h-8.414l-2-2zm8.414 0H21a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h7.414z"},null,-1)])])),a[18]||(a[18]=i(" playground ",-1))])])])]),e("section",aa,[a[34]||(a[34]=d('04
Chat Interface Overhaul The message stream is the core of Kimi Web. The goal of the overhaul: have the 6 card types (Agent / Tool / Question / Approval / Swarm / Todo) share one card skeleton , distinguished only by the head icon and semantic color; and collapse the Composer into a single rounded container.
Unified message stream ',3)),e("div",ea,[a[33]||(a[33]=e("div",{class:"stage-bar"},[e("span",{class:"st"},"Conversation · 760px reading column")],-1)),e("div",ta,[e("div",sa,[a[31]||(a[31]=d('Please change the login endpoint to JWT and add the corresponding unit tests.
🌔 Analyzing the auth module…I looked at the structure of src/auth; it is currently based on a session cookie. The scope of the change is below — once you confirm, I'll start.
',4)),e("div",da,[e("div",oa,[(t(),s("svg",ia,[...a[23]||(a[23]=[e("path",{fill:"currentColor",d:"M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10s-4.477 10-10 10m0-2a8 8 0 1 0 0-16a8 8 0 0 0 0 16m-1-5h2v2h-2zm2-1.645V14h-2v-1.5a1 1 0 0 1 1-1a1.5 1.5 0 1 0-1.471-1.794l-1.962-.393A3.501 3.501 0 1 1 13 13.355"},null,-1)])])),a[24]||(a[24]=e("span",{class:"p-action-title"},"A decision needs your confirmation",-1))]),a[25]||(a[25]=e("div",{class:"p-action-body"},"How long should the JWT expiry be? Default 7 days, refresh token 30 days.",-1)),a[26]||(a[26]=e("div",{class:"p-action-foot"},[e("button",{class:"p-btn secondary sm"},"Customize"),e("button",{class:"p-btn primary sm"},"Use default")],-1))]),e("div",la,[e("div",na,[(t(),s("svg",ca,[...a[27]||(a[27]=[e("path",{fill:"currentColor",d:"m12.866 3l9.526 16.5a1 1 0 0 1-.866 1.5H2.474a1 1 0 0 1-.866-1.5L11.134 3a1 1 0 0 1 1.732 0m-8.66 16h15.588L12 5.5zM11 16h2v2h-2zm0-7h2v5h-2z"},null,-1)])])),a[28]||(a[28]=e("span",{class:"p-action-title"},"Write permission required",-1)),a[29]||(a[29]=e("span",{class:"p-badge warning sm",style:{"margin-left":"auto"}},"write_file",-1))]),a[30]||(a[30]=d('About to modify src/auth/middleware.ts, 42 lines changed. Allow?
',2))]),a[32]||(a[32]=d('✓ Replace session with JWT signing
● Refactor the auth middleware
○ Add unit tests
',1))])])]),a[35]||(a[35]=d('Wide markdown tables (desktop): regular chat prose stays within the 760px reading column (--p-content-max). On desktop a wide table may grow naturally with its content up to 1040px (--p-table-max), centred within the conversation pane; beyond that the excess scrolls horizontally inside the table's own wrapper — the page and the chat area never scroll sideways. A single column is capped at 700px (--p-table-cell-max), so long cell content wraps inside the cell instead of stretching the table. The conversation outline (TOC) keeps its usual position just outside the reading column; when a table grows past it and scrolls under the rail, the TOC is hidden temporarily and returns as soon as the table leaves, without touching the user's TOC setting. On mobile a table never breaks out of the reading column.
Tool calls: compact by default, grouped, expand on demand High-frequency calls like read_file / bash / grep are "operational noise" — if each one took a full card, parallel triggers would quickly drown out the conversation. The new strategy splits tool calls into three tiers by visual weight , pushing them as light as possible:
Three visual-weight tiers
① Tool row · lightest (default) ② Tool group · medium (consecutive / parallel auto-merged; collapsed to one line) ③ Decision card · heavy (only question / approval, needs user input) Write permission required write_file
About to modify src/auth/middleware.ts, 42 lines changed.
Tool calls render as compact rows by default (30px single-line mono + status dot + key argument); no head / body / shadow. Consecutive or parallel calls auto-merge into one tool group ; when collapsed, the whole group takes one line (N tool calls · status). Clicking a row expands it in place to show details (code / output); click again to collapse — details don't grab attention by default. Status is expressed with a colored dot : running (pulsing blue) / done (green) / failed (red), taking no extra space. Only two types keep a full card : Question (needs an answer) and Approval (needs authorization) — they genuinely need the user's attention.Tool Call · compact row (expand on demand)
Composer Unified into a single rounded container: --radius-xl, with the whole border turning blue + a soft focus ring on focus. Toolbar controls all use the Pill / IconButton primitives, and the send button is a 32px circle.
Composer
Message Kimi, / to run a command, @ to reference a file…
yolo plan goal swarm supermooni Site-wide consistency : the composer has only one radius (--radius-xl · 16px) and one height; toolbar controls all use the Pill / IconButton primitives, and the send button is a 32px circle — it no longer drifts with the theme.
Responsive See §02 --p-bp-sm for the breakpoint. This section only gives mobile-adaptation pointers for the chat interface; a full mobile mockup is out of scope for this spec.
i At ≤640px: dialogs anchor to the bottom as Sheets (xl top radius, top drag handle), the sidebar collapses into an expandable drawer, the Composer toolbar is allowed to wrap, and the chat reading column drops its max-width to fill the screen. At 641–980px: the sidebar auto-collapses (user-expandable), right detail panels open as full-screen overlays, and composer menus clamp to the viewport.
',13))]),a[37]||(a[37]=d(`05
Theming Kimi Web uses one unified theme : the same components, fonts, radii, shadows, and surfaces — "reskinning" only changes colors. Colors are collapsed into 4 seed tokens — two theme colors + one light surface + one dark surface; the neutrals and accent are derived from them, and the semantic status colors (success / warning / danger) ship as independent palettes paired with the seeds, one set each for light / dark.
Color seeds Day-to-day customization only needs these 4 seeds; the whole site's neutrals and accent change with them:
Theme color · primary
--accent-primary
Theme color · secondary
--accent-secondary
Light surface
--surface-light
Dark surface
--surface-dark
Accent families Within one theme, the theme color (accent) can switch among several color families . Two parallel families are provided today: blue (default, brand blue, carrying semantic emphasis) and black (neutral black, carrying the most restrained strong action). Both share the same components, fonts, radii, and surfaces — switching families only swaps the accent token set, with zero structural change; more families (green / purple, etc.) can be added later. The two cards below show the same primary button under the two families.
Family switch · same primary, different theme color
Blue family · default Primary action accent
--accent #1783ff · soft #e8f3ff Black family · neutral Primary action accent
--accent #14171c · soft #f1f2f4 Theme console · change 4 colors, light & dark change together Theme Console
Primary #1783ff Secondary #6b7280 Light surface #ffffff Dark surface #0d1117
Light surface preview Primary action White background + accent button + neutral text
Dark surface preview Primary action Dark background + same accent + derived text
Light / dark mode Driven by the two surfaces --surface-light / --surface-dark: whichever surface is current derives the corresponding foreground, border, shadow, and status colors. Switching light / dark simply swaps between these two sets of derived tokens, with zero structural change.
✓ Benefits of one theme : components, fonts, radii, and surfaces are consistent site-wide; reskinning only changes 4 color seeds; light / dark mode works out of the box; semantic status colors are independently tunable.
06
Style Rules Anti-pattern rules that all UI code must follow. These rules are also the basis of the check-style detection script, one-to-one with a warning.
Rule ID What it detects Action no-gradient-text gradient text / gradient background Forbidden no-glassmorphism backdrop-filter: blur (TopBar sticky nav bar is the sole exception)TopBar exempt no-color-glow colored / large-radius box-shadow glow Forbidden no-emoji-icon using emoji as a functional icon (the moon phases 🌑…🌘 are the sole exception , and only in the "waiting for the Agent to respond" chat state; all other loading states use the plain Spinner) Moon phase exempt no-hardcoded-hex unregistered hex color inside a component <style> Warning no-hardcoded-font hard-coded font-family in a component (e.g. 'Inter') instead of var(--font-ui) Warning radius-from-scale radius value not in {4,6,8,12,16,20,999} Warning z-from-scale z-index using an unregistered large number Warning weight-from-scale font-weight not in {400,500} Warning
State matrix Every interactive primitive should define the following states where applicable; missing ones are flagged by the style rules. focus-visible always uses --p-focus-ring (appears only on keyboard focus, see §08); disabled is uniformly opacity:.5.
State Button Input Card Menu item Switch default ✓ ✓ ✓ ✓ ✓ hover ✓ ✓ ✓ ✓ — active / pressed ✓ — — — — focus-visible ✓ ✓ — — ✓ disabled ✓ ✓ — ✓ — loading ✓ — — — — selected / active — — — ✓ ✓ error — ✓ — — — readonly — ✓ — — —
Moon phase exemption ✓ The "🌑…🌘" moon-phase emoji are a brand signature of Kimi Web, used only in the chat state of "message sent, waiting for the Agent's first response" , and are rendered uniformly by the MoonSpinner component; waiting states such as ActivityNotice reuse it rather than implementing their own moon phase. It is the sole exception to the no-emoji-icon rule; all other loading states use the plain Spinner.
Glassmorphism exemption ✓ backdrop-filter: blur is banned site-wide, with the sole exception of the .frost variant of TopBar — and only in the one place of the "sticky navigation bar", used to stay readable over scrolling content. No other component (card, dialog, Toast, panel) may use glassmorphism; violations are flagged under no-glassmorphism.
07
App Shell & Sidebar The structural spec for the app shell (three-column grid + right preview panel) and the left session sidebar. These are business-agnostic "skeletons" — components, fonts, radii, and surfaces are reused from §02 / §03, but layout and alignment have their own conventions.
Layout grid On desktop it is a single-row 5-track grid: the sidebar and the right panel each occupy a permanent auto track, with the conversation column in the middle; two 0-width tracks are for the ResizeHandles.
App.vue · .app
grid-template-columns: auto 0 minmax(0, 1fr) 0 auto;
+ /* sidebar ↑ ↑handle ↑conversation ↑handle ↑right panel (auto) */ Token Value Usage sidebar width 270px default (adjustable) expanded sidebar width, changed by dragging the ResizeHandle; should approach §02's --p-sidebar-w (264px) --preview-w 460px width of the right preview panel when open --panel-head-h 48px unified height for all right panel heads + the conversation column head, so the hairline runs as one line --p-bp-sm 640px ≤640 switches to a mobile single column (top bar + conversation), no sidebar / handle / right panel --p-bp-md 980px 641–980 auto-collapses the sidebar (user-expandable) and opens right detail panels as full-screen overlays; composer menus clamp to the viewport
The right panel track exists permanently, with its width transitioning between 0 ↔ var(--preview-w) (when open it squeezes the conversation column, rather than switching templates). The sidebar collapses SYMMETRICALLY to the right panel: its container width animates to 0 while the content keeps its fixed width anchored to the right edge (clipped, sliding out left — no reflow, hairline stays on the clipped content). No rail remains. The collapse control differs by platform: on macOS desktop the toggle is a single resident floating IconButton pinned beside the traffic lights (rendered in both states, only the glyph swaps — the sidebar slides underneath it, never moves or flashes); on Windows / web the collapse button lives inside the sidebar header (right-aligned), and a floating expand button appears at the top-left only while collapsed. The conversation header pads left in step with the transition while collapsed. All grid children must have min-height:0; min-width:0, so only the inner scroll containers scroll and the page itself does not scroll. Sidebar alignment system (--sb-*) All sidebar rows (group head, session row, New chat button) share 4 custom properties, so the "session title" aligns precisely under the "workspace name".
Token Value Usage --sb-inset 12px row box (hover/selected pill) inset from the sidebar edges — matches the brand header's 12px padding --sb-pad-x 20px content start x (= --sb-inset + 8px row padding) --sb-gutter 16px leading icon slot width — matches the workspace folder icon so the session title aligns under the workspace name --sb-gap 6px gap between the icon slot and the text
i The session title's starting x = --sb-pad-x + --sb-gutter + --sb-gap. The group head has a folder icon and the session row has a status slot; both icons are the same width and position, so the titles align naturally.
Sidebar structure The sidebar from top to bottom: brand header → New chat → search → grouped list (workspace head + session rows) → settings footer. Controls reuse the §03 primitives as much as possible. The sidebar sits on --color-sidebar-bg (one step off --color-bg: warm off-white in light, near-black in dark — the session column reads as its own plane; the hairline still separates it from the conversation pane). Vertical rhythm: the brand header keeps 12px padding (on macOS desktop the left padding grows to 80px to clear the traffic lights); rows inside the actions group (New chat + search) stack flush (0 gap, same rhythm as the list rows); adjacent groups are separated by 12px. Row hover uses --sb-hover (= the global --color-hover wash); the selected row uses --color-selected — neutral, never the accent.
Block Use Note Brand header logo + name + collapse IconButton (right-aligned) on Windows / web the brand is left and the collapse IconButton sm is right-aligned inside the header; the logo is animated (a blinking eye). On macOS desktop the header is a bare drag strip (brand hidden, traffic lights + resident floating toggle over it) New chat full-width left-aligned button (custom) same rhythm as the session rows in the list (left-aligned, hover = --sb-hover). Do not use Button (centered, breaks the rhythm) Search bare search row (custom) no border, hover/focus shows a sunken background; icon + label, with the Kbd keycaps (⌘K / Ctrl K) pushed to the trailing edge — label and shortcut are justified apart. Do not use Input (the 38px bordered version is too heavy). Last fixed row above the list — its wrapper carries the scroll-linked seam Section label .p-section-labeluppercase muted small titles like "Workspaces" Workspace head / session row see next two sections share --sb-* alignment Settings footer full-width left-aligned button (custom) pinned row under the session list, separated by a 1px --line top border; icon + label, same list-style family as New chat
! Why New chat / search / inline rename don't use Button / Input: they are "list-style" controls (full-width, left-aligned, compact, borderless), while Button is centered and Input is a 38px bordered control — forcing them in would break the sidebar's visual density and alignment. This is an intentional custom exception, not an oversight.
Session row A session row is an inset rounded pill, structured as: status slot → title → time → attention Badge → kebab.
Part Rule Container padding: 8px 8px inside the list's --sb-inset gutter, radius-sm; no fixed/min height — row height is font-driven (title line-height: --leading-tight, ≈16px) → ≈32px total, the sidebar-wide row rhythm. The hover kebab is absolutely positioned so it never forces the row taller (no hover jitter). hover = --sb-hover (the global --color-hover wash); active = --color-selected — neutral, no accent tint, no border, no weight changeStatus slot (lead) fixed --sb-gutter width; running = Spinner sm, otherwise unread = 7px accent dot Title flex:1 with truncation; double-click enters inline rename (compact input, not Input) Time mono xs, fg-faint; yields to the kebab on hover Attention Badge Badge sm: info (needs answer) / warning (needs approval) / danger (aborted)kebab IconButton sm, shown on hover; dropdown uses Menu/MenuItemArchive confirmation replaces the title area, Button sm (danger confirm / secondary cancel)
Workspace group The group head and session rows share --sb-*: folder icon (open/closed) → name, with the kebab and "+" revealed on hover.
The folder icon leads the row (switching icons between open and closed states) with the plain --sb-gap before the name — it does not pad out the --sb-gutter slot. The name is quiet by design — regular weight, muted color (--color-text-muted, one step lighter than session titles), so group heads read as grouping labels. No path subtitle; hovering the name shows the full root path in a Tooltip. The kebab (menu) and "+" (new chat in this workspace) both use IconButton sm inside a floating actions layer anchored to the row's right edge — no reserved layout space, so the name uses the full row width when idle. Shown on hover, keyboard focus, or while the menu is open; the layer backs itself with the sidebar surface (container background) plus the row hover wash (an ::after shown only while the row is hovered), so its color exactly equals the row's current background and the overlapped name tail doesn't bleed through (hidden via opacity:0, staying in the tab order). The group is collapsible; when collapsed its session list is hidden. Show more & collapse The "load more / show less" control at the bottom of each workspace group is a session-row-shaped compact list control (same family as search, New chat, inline rename — not a Button). It doubles as the pagination trigger and the in-group expand / collapse toggle.
Part Rule Container session-row pill: display:flex; gap:--sb-gap; padding:8px …, no fixed/min height (font-driven, ≈32px like a session row), same padding as a session row, radius-sm; hover = --sb-hover (no text recolor); :focus-visible uses --p-focus-ring Lead slot empty, --sb-gutter wide, so the label's start x aligns with the session titles (--sb-pad-x + --sb-gutter + --sb-gap) Label font-ui, text-xs, --color-text; flex:1, truncatedBehavior "Load more" fetches the next page and auto-expands; once more than the first page is loaded, "Show less" appears and collapses back to the first page (view-layer trim — data is kept, no refetch); "Show all" re-expands
ResizeHandle A 4px vertical drag bar, layered over the 1px column border (margin: 0 -2px makes the whole 4px grabbable), turning accent on hover / drag.
Rule Value Width / cursor 4px / col-resize Normal / active transparent / accent fill Layer --z-dropdown, above pane-level sticky chrome (chat dock at --z-sticky) so the overhang stays visible and grabbableBehavior panel width follows the pointer 1:1 while dragging (the parent disables transitions to avoid lag); on release it is persisted to localStorage
Right panel The right panels (file preview / Diff / thinking / sub-agent / side chat) share one track and one head primitive.
The panel head uses the PanelHeader primitive (48px = --panel-head-h), the same height as the conversation column head, so the hairline runs as one line. Panel head: bold mono title + optional muted subtitle + middle slot (Badge / control / path) + close IconButton on the right. When opened, the panel width goes from 0 → var(--preview-w), smoothly squeezing the conversation column. At ≤640px the panel becomes a full-screen overlay (position:fixed; inset:0). i One-sentence principle: the sidebar / shell is a "list + grid" skeleton that reuses the §02 tokens and §03 primitives (Button / IconButton / Badge / Kbd / Menu / Spinner / PanelHeader); compact list controls that don't fit a primitive (search, New chat, inline rename, show-more) keep their custom form, governed by this section.
08
Accessibility (pragmatic edition) Kimi Web is a local developer tool; it does not target a specific WCAG conformance level , nor maintain a full screen-reader QA matrix. This section collects only the rules that are "low-cost, don't hurt the look, and directly benefit keyboard-heavy users", as the baseline contract for each primitive; the more expensive, lower-ROI parts (such as real-time announcement orchestration for streaming output) are not mandatory for now.
i On the "ugly" focus ring: the focus visibility required below always uses :focus-visible (not :focus). It appears only on keyboard focus ; mouse clicks don't trigger it, so it doesn't pollute the mouse-driven visual; the ring's strength is tuned uniformly with --p-focus-ring, not overridden per place.
1. Contrast & color Body text vs. background contrast ≥ 4.5:1 ; control borders, icons, and key graphics ≥ 3:1 . When changing theme colors / dark mode, verify against §05 together. Button text vs. button background , and form controls (input, placeholder, helper / error text) vs. their section background must all have contrast ≥ 4.5:1 (large text ≥ 3:1). White-on-white text, a transparent borderless button floating over the page background, and a light placeholder on a near-white background are all flagged by the style rules.State is not conveyed by color alone. Error, selected, and disabled states also carry text, an icon, or a shape change (for example an error state is not just red, but also carries text or an icon).2. Keyboard operable Anything doable with a mouse must also be doable with a keyboard; Tab order follows the DOM, with no invented skipping. Composite controls define their keyboard model per the table below; a missing model is treated as incomplete:
Control Keyboard behavior Dialog Tab cycles within the dialog (focus trap); Esc closes; focus returns to the trigger element after closing.Menu ↑ / ↓ move the highlight, Enter selects, Esc closes.Tabs ← / → switch tabs (roving tabindex); only the current tab is in the Tab sequence.Switch / Segmented ← / → or Space / Enter to toggle.Composer On touch-primary devices (pointer: coarse) Enter inserts a newline (send via the button) and Ctrl+S steer is disabled; a detected hardware keyboard restores both.
3. Focus visibility Every interactive element must have a visible focus indicator on keyboard focus, uniformly via :focus-visible + --p-focus-ring (primary actions may use --p-focus-ring-strong). Bare outline: none is forbidden. To remove the default outline, you must provide an equivalent replacement style. 4. Labels & semantics Semantic HTML first (button / a / input / dialog…); ARIA is added only when native semantics fall short.Icon-only buttons must have an aria-label — IconButton already enforces this with a required label prop. Dialog: role="dialog" + aria-modal="true", with the title as the dialog's accessible name. Purely decorative SVG / icons get aria-hidden="true" to avoid being read out by screen readers. 5. Target size Desktop click targets ≥ 32px ; touch devices ≥ 44px (consistent with the §01 principle and the IconButton lg tier).
6. Reduced motion Handled uniformly in the global styles per §02's @media (prefers-reduced-motion: reduce); components do not check this individually. The MoonSpinner moon phase pauses on the current frame.
7. Live announcements (non-mandatory) Screen-reader announcements are not a mandatory contract in this product. Short hints like Toast can use role="status" / aria-live; chat streaming output is currently not announced word-by-word, which is an acceptable trade-off, to be added later if a real need arises.
✓ Explicitly not mandatory for now: a WCAG conformance-level claim, a complete ARIA pattern table, a per-screen-reader QA matrix, and real-time announcement orchestration for streaming output — these are not written into the primitive contract, to avoid becoming slogans no one maintains.
`,4))])])])]))}}),ga=x(va,[["__scopeId","data-v-68e41541"]]);export{ga as default};
diff --git a/apps/kimi-code/dist-web/assets/DesignSystemView-eIdeAonz.css b/apps/kimi-code/dist-web/assets/DesignSystemView-eIdeAonz.css
deleted file mode 100644
index c1e9de06dd..0000000000
--- a/apps/kimi-code/dist-web/assets/DesignSystemView-eIdeAonz.css
+++ /dev/null
@@ -1 +0,0 @@
-.ds-page[data-v-40168b71]{--d-bg: var(--color-bg);--d-surface: var(--color-surface);--d-surface-2: var(--color-surface-sunken);--d-surface-3: var(--color-line);--d-fg: var(--color-text);--d-fg-soft: var(--color-text-muted);--d-fg-muted: var(--color-text-muted);--d-fg-faint: var(--color-text-faint);--d-line: var(--color-line);--d-line-2: var(--color-line);--d-accent: var(--color-accent);--d-accent-2: var(--color-accent-hover);--d-accent-soft: var(--color-accent-soft);--d-accent-bd: var(--color-accent-bd);--d-green: var(--color-success);--d-green-soft: var(--color-success-soft);--d-amber: var(--color-warning);--d-amber-soft: var(--color-warning-soft);--d-red: var(--color-danger);--d-red-soft: var(--color-danger-soft);--d-violet: var(--color-done);--d-code-bg: var(--color-surface-sunken);--d-sidebar: var(--color-surface);--d-shadow-sm: var(--shadow-sm);--d-shadow-md: var(--shadow-md);--d-shadow-lg: var(--shadow-lg);--sidebar-w: var(--p-sidebar-w);--content-max: var(--p-content-wide)}.ds-page[data-v-40168b71] *,.ds-page[data-v-40168b71] *:before,.ds-page[data-v-40168b71] *:after{box-sizing:border-box}.ds-page[data-v-40168b71]{scroll-behavior:smooth}.ds-page[data-v-40168b71]{margin:0;background:var(--d-bg);color:var(--color-text);font-family:var(--font-ui);font-size:var(--text-base);line-height:1.65;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1[data-v-40168b71],h2[data-v-40168b71],h3[data-v-40168b71],h4[data-v-40168b71]{color:var(--d-fg);letter-spacing:-.01em;line-height:1.25;margin:0}p[data-v-40168b71]{margin:0 0 14px;color:var(--d-fg-soft)}a[data-v-40168b71]{color:var(--d-accent-2);text-decoration:none}a[data-v-40168b71]:hover{text-decoration:underline}code[data-v-40168b71],pre[data-v-40168b71],.mono[data-v-40168b71]{font-family:JetBrains Mono,ui-monospace,SF Mono,Menlo,Consolas,monospace}code[data-v-40168b71]{background:var(--d-code-bg);border:1px solid var(--d-line-2);border-radius:5px;padding:1px 6px;font-size:.88em;color:#1f2937;white-space:nowrap}.layout[data-v-40168b71]{display:grid;grid-template-columns:var(--sidebar-w) minmax(0,1fr);min-height:100vh}.sidebar[data-v-40168b71]{position:sticky;top:0;align-self:start;height:100vh;background:var(--d-sidebar);border-right:1px solid var(--d-line);padding:26px 22px;overflow-y:auto}.brand[data-v-40168b71]{display:flex;align-items:center;gap:10px;margin-bottom:6px}.brand-mark[data-v-40168b71]{width:26px;height:26px;border-radius:7px;flex:none;background:var(--d-fg);color:#fff;display:grid;place-items:center;font-weight:800;font-size:14px;letter-spacing:-.04em}.brand-name[data-v-40168b71]{font-weight:700;font-size:15px;letter-spacing:-.01em}.brand-sub[data-v-40168b71]{font-size:12px;color:var(--d-fg-faint);margin-bottom:26px;padding-left:36px}.nav-group[data-v-40168b71]{margin:22px 0 8px;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--d-fg-faint)}.p-section-label[data-v-40168b71]{font-size:12px;font-weight:400;text-transform:uppercase;color:var(--d-fg-faint)}.nav a[data-v-40168b71]{display:flex;align-items:center;gap:9px;padding:7px 10px;border-radius:7px;font-size:13.5px;font-weight:500;color:var(--d-fg-soft);margin:1px 0;transition:background .15s,color .15s}.nav a .num[data-v-40168b71]{font-family:JetBrains Mono,monospace;font-size:11px;color:var(--d-fg-faint);width:18px}.nav a[data-v-40168b71]:hover{background:var(--d-surface-2);color:var(--d-fg);text-decoration:none}.nav a.active[data-v-40168b71]{background:var(--d-accent-soft);color:var(--d-accent-2)}.nav a.active .num[data-v-40168b71]{color:var(--d-accent-2)}.content[data-v-40168b71]{min-width:0}.content-inner[data-v-40168b71]{max-width:var(--content-max);margin:0 auto;padding:64px 56px 120px}section[data-v-40168b71]{scroll-margin-top:32px;padding-top:8px}section+section[data-v-40168b71]{margin-top:72px}.hero[data-v-40168b71]{padding:8px 0 40px;border-bottom:1px solid var(--d-line);margin-bottom:56px}.eyebrow[data-v-40168b71]{display:inline-flex;align-items:center;gap:8px;font-family:JetBrains Mono,monospace;font-size:12px;font-weight:600;letter-spacing:.04em;color:var(--d-fg);background:#1783ff1a;border:none;padding:6px 12px;border-radius:8px;margin-bottom:22px}.hero h1[data-v-40168b71]{font-size:48px;font-weight:600;line-height:1.08;letter-spacing:-.025em;margin-bottom:18px}.hero h1 .grad[data-v-40168b71]{color:var(--d-accent)}.hero p.lead[data-v-40168b71]{font-size:18px;line-height:1.6;color:var(--d-fg-soft);max-width:680px}.hero-meta[data-v-40168b71]{display:flex;flex-wrap:wrap;gap:10px;margin-top:28px}.meta-chip[data-v-40168b71]{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;color:var(--d-fg-muted);background:var(--d-surface);border:1px solid var(--d-line);border-radius:8px;padding:7px 12px}.meta-chip b[data-v-40168b71]{color:var(--d-fg);font-weight:600}.meta-chip .dot[data-v-40168b71]{width:7px;height:7px;border-radius:50%;background:var(--d-green)}.sec-head[data-v-40168b71]{display:flex;align-items:baseline;gap:14px;margin-bottom:8px}.sec-num[data-v-40168b71]{font-family:JetBrains Mono,monospace;font-size:13px;font-weight:600;color:var(--d-accent-2)}.sec-title[data-v-40168b71]{font-size:26px;letter-spacing:-.02em}.sec-desc[data-v-40168b71]{font-size:15.5px;color:var(--d-fg-muted);max-width:720px;margin-bottom:28px}h3.sub[data-v-40168b71]{font-size:17px;margin:40px 0 14px;display:flex;align-items:center;gap:10px}h3.sub[data-v-40168b71]:before{content:"";width:4px;height:16px;border-radius:2px;background:var(--d-accent)}h4.mini[data-v-40168b71]{font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:var(--d-fg-muted);margin:24px 0 12px}.stat-grid[data-v-40168b71]{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:24px 0}.stat[data-v-40168b71]{background:var(--d-surface);border:1px solid var(--d-line);border-radius:14px;padding:18px 18px 16px}.stat .v[data-v-40168b71]{font-size:34px;font-weight:800;letter-spacing:-.03em;line-height:1;color:var(--d-fg)}.stat .v small[data-v-40168b71]{font-size:16px;color:var(--d-fg-muted);font-weight:600}.stat .l[data-v-40168b71]{font-size:12.5px;color:var(--d-fg-muted);margin-top:8px;line-height:1.4}.stat.warn[data-v-40168b71]{background:var(--d-amber-soft);border-color:#f0d9b8}.stat.warn .v[data-v-40168b71]{color:var(--d-amber)}.stat.bad[data-v-40168b71]{background:var(--d-red-soft);border-color:#f0cccc}.stat.bad .v[data-v-40168b71]{color:var(--d-red)}.stat.good[data-v-40168b71]{background:var(--d-green-soft);border-color:#bfe3cc}.stat.good .v[data-v-40168b71]{color:var(--d-green)}.panel[data-v-40168b71]{background:var(--d-bg);border:1px solid var(--d-line);border-radius:16px;box-shadow:var(--d-shadow-sm)}.panel-pad[data-v-40168b71]{padding:22px}.panel-soft[data-v-40168b71]{background:var(--d-surface);border:1px solid var(--d-line);border-radius:14px}.callout[data-v-40168b71]{display:flex;gap:12px;padding:14px 16px;border-radius:12px;font-size:14px;line-height:1.55;background:var(--d-surface);border:1px solid var(--d-line);color:var(--d-fg-soft);margin:18px 0}.callout .ico[data-v-40168b71]{flex:none;width:20px;height:20px;border-radius:6px;display:grid;place-items:center;font-size:12px;font-weight:800}.callout.info[data-v-40168b71]{background:var(--d-accent-soft);border-color:var(--d-accent-bd)}.callout.info .ico[data-v-40168b71]{background:var(--d-accent);color:#fff}.callout.warn[data-v-40168b71]{background:var(--d-amber-soft);border-color:#f0d9b8}.callout.warn .ico[data-v-40168b71]{background:var(--d-amber);color:#fff}.callout.good[data-v-40168b71]{background:var(--d-green-soft);border-color:#bfe3cc}.callout.good .ico[data-v-40168b71]{background:var(--d-green);color:#fff}table.dt[data-v-40168b71]{width:100%;border-collapse:collapse;font-size:13.5px;margin:16px 0}table.dt th[data-v-40168b71]{text-align:left;font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--d-fg-faint);font-weight:700;padding:10px 12px;border-bottom:1px solid var(--d-line)}table.dt td[data-v-40168b71]{padding:11px 12px;border-bottom:1px solid var(--d-line-2);color:var(--d-fg-soft);vertical-align:middle}table.dt tr:last-child td[data-v-40168b71]{border-bottom:none}table.dt td.tk[data-v-40168b71]{font-family:JetBrains Mono,monospace;font-size:12.5px;color:var(--d-fg);white-space:nowrap}table.dt td.val[data-v-40168b71]{font-family:JetBrains Mono,monospace;font-size:12px;color:var(--d-fg-muted)}.swatch[data-v-40168b71]{display:inline-block;width:16px;height:16px;border-radius:4px;border:1px solid rgba(0,0,0,.08);vertical-align:-3px;margin-right:8px}.palette[data-v-40168b71]{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:16px 0}.color-card[data-v-40168b71]{border:1px solid var(--d-line);border-radius:12px;overflow:hidden;background:var(--d-bg)}.color-chip[data-v-40168b71]{height:56px;border-bottom:1px solid var(--d-line)}.color-meta[data-v-40168b71]{padding:10px 12px 12px}.color-meta .cn[data-v-40168b71]{font-size:13px;font-weight:600;color:var(--d-fg)}.color-meta .cv[data-v-40168b71]{font-family:JetBrains Mono,monospace;font-size:11.5px;color:var(--d-fg-muted);margin-top:2px}.type-row[data-v-40168b71]{display:flex;align-items:baseline;gap:18px;padding:13px 0;border-bottom:1px solid var(--d-line-2)}.type-row[data-v-40168b71]:last-child{border-bottom:none}.type-sample[data-v-40168b71]{flex:1;color:var(--d-fg);line-height:1.2}.type-meta[data-v-40168b71]{width:190px;flex:none;text-align:right;font-family:JetBrains Mono,monospace;font-size:12px;color:var(--d-fg-muted)}.space-row[data-v-40168b71]{display:flex;align-items:center;gap:16px;padding:10px 0;border-bottom:1px solid var(--d-line-2)}.space-row[data-v-40168b71]:last-child{border-bottom:none}.space-bar[data-v-40168b71]{height:18px;border-radius:4px;background:linear-gradient(90deg,var(--d-accent),var(--d-accent-2));flex:none}.space-meta[data-v-40168b71]{font-family:JetBrains Mono,monospace;font-size:12.5px;color:var(--d-fg-soft);width:150px}.space-use[data-v-40168b71]{font-size:12.5px;color:var(--d-fg-muted)}.radius-grid[data-v-40168b71]{display:flex;flex-wrap:wrap;gap:22px;align-items:flex-end;margin:16px 0}.radius-item[data-v-40168b71]{display:flex;flex-direction:column;align-items:center;gap:10px}.radius-box[data-v-40168b71]{width:64px;height:64px;border:2px solid var(--d-accent);background:var(--d-accent-soft)}.radius-item .rl[data-v-40168b71]{font-family:JetBrains Mono,monospace;font-size:12px;color:var(--d-fg-soft)}.stage-wrap[data-v-40168b71]{border:1px solid var(--d-line);border-radius:16px;overflow:hidden;margin:18px 0;background:var(--d-bg);box-shadow:var(--d-shadow-sm)}.stage-bar[data-v-40168b71]{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--d-line);background:var(--d-surface)}.stage-bar .st[data-v-40168b71]{font-size:13px;font-weight:600;color:var(--d-fg);display:flex;align-items:center;gap:8px}.stage-bar .st .tag[data-v-40168b71]{font-size:10.5px;font-weight:700;letter-spacing:.04em;padding:2px 7px;border-radius:999px}.tag.after[data-v-40168b71]{background:var(--d-green-soft);color:var(--d-green)}.tag.before[data-v-40168b71]{background:var(--d-red-soft);color:var(--d-red)}.tag.spec[data-v-40168b71]{background:var(--d-accent-soft);color:var(--d-accent-2)}.stage-bar .sactions[data-v-40168b71]{display:flex;gap:6px}.tab[data-v-40168b71]{font-family:JetBrains Mono,monospace;font-size:11.5px;padding:4px 10px;border-radius:6px;color:var(--d-fg-muted);cursor:default}.tab.on[data-v-40168b71]{background:var(--d-bg);color:var(--d-fg);border:1px solid var(--d-line)}.stage[data-v-40168b71]{padding:32px;display:flex;flex-wrap:wrap;align-items:center;gap:16px;background:radial-gradient(circle at 1px 1px,rgba(0,0,0,.045) 1px,transparent 0) 0 0 / 18px 18px,var(--d-surface)}.stage.col[data-v-40168b71]{flex-direction:column;align-items:stretch}.stage.dark[data-v-40168b71]{background:radial-gradient(circle at 1px 1px,rgba(255,255,255,.06) 1px,transparent 0) 0 0 / 18px 18px,#0d1117}.stage-label[data-v-40168b71]{width:100%;font-size:11.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--d-fg-faint);margin-bottom:-6px}.stage.dark .stage-label[data-v-40168b71]{color:#6b7280}.ba[data-v-40168b71]{display:grid;grid-template-columns:1fr 1fr;gap:0;border:1px solid var(--d-line);border-radius:16px;overflow:hidden;margin:18px 0;box-shadow:var(--d-shadow-sm)}.ba-col[data-v-40168b71]{min-width:0}.ba-col+.ba-col[data-v-40168b71]{border-left:1px solid var(--d-line)}.ba-head[data-v-40168b71]{display:flex;align-items:center;justify-content:space-between;padding:11px 16px;border-bottom:1px solid var(--d-line)}.ba-head.before[data-v-40168b71]{background:var(--d-red-soft)}.ba-head.after[data-v-40168b71]{background:var(--d-green-soft)}.ba-head .bh[data-v-40168b71]{font-size:13px;font-weight:700}.ba-head.before .bh[data-v-40168b71]{color:var(--d-red)}.ba-head.after .bh[data-v-40168b71]{color:var(--d-green)}.ba-head .bh small[data-v-40168b71]{font-weight:500;opacity:.7;margin-left:6px}.ba-body[data-v-40168b71]{padding:24px;background:var(--d-surface);min-height:120px}.ba-col.after .ba-body[data-v-40168b71]{background:#fff}.code[data-v-40168b71]{background:#0d1117;border-radius:12px;overflow:hidden;margin:16px 0;border:1px solid #1c2128}.code-bar[data-v-40168b71]{display:flex;align-items:center;gap:8px;padding:9px 14px;background:#161b22;border-bottom:1px solid #1c2128}.code-bar .d[data-v-40168b71]{width:10px;height:10px;border-radius:50%;background:#30363d}.code-bar .fn[data-v-40168b71]{font-family:JetBrains Mono,monospace;font-size:11.5px;color:#8b949e;margin-left:4px}.code pre[data-v-40168b71]{margin:0;padding:18px;overflow-x:auto;font-size:12.5px;line-height:1.7;color:#c9d1d9}.code .c[data-v-40168b71]{color:#8b949e}.code .k[data-v-40168b71]{color:#ff7b72}.code .s[data-v-40168b71]{color:#a5d6ff}.code .p[data-v-40168b71]{color:#79c0ff}.code .n[data-v-40168b71]{color:#d2a8ff}.code .v[data-v-40168b71]{color:#ffa657}.pill[data-v-40168b71]{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;padding:3px 9px;border-radius:999px;border:1px solid var(--d-line);background:var(--d-surface);color:var(--d-fg-soft)}.pill.blue[data-v-40168b71]{background:var(--d-accent-soft);border-color:var(--d-accent-bd);color:var(--d-accent-2)}.pill.green[data-v-40168b71]{background:var(--d-green-soft);border-color:#bfe3cc;color:var(--d-green)}.pill.amber[data-v-40168b71]{background:var(--d-amber-soft);border-color:#f0d9b8;color:var(--d-amber)}.pill.red[data-v-40168b71]{background:var(--d-red-soft);border-color:#f0cccc;color:var(--d-red)}.pill.mono[data-v-40168b71]{font-family:JetBrains Mono,monospace}ul.clean[data-v-40168b71]{list-style:none;padding:0;margin:14px 0}ul.clean li[data-v-40168b71]{position:relative;padding:8px 0 8px 26px;color:var(--d-fg-soft);border-bottom:1px solid var(--d-line-2)}ul.clean li[data-v-40168b71]:last-child{border-bottom:none}ul.clean li[data-v-40168b71]:before{content:"";position:absolute;left:4px;top:17px;width:7px;height:7px;border-radius:50%;background:var(--d-accent)}ul.clean.check li[data-v-40168b71]:before{content:"✓";background:none;color:var(--d-green);font-weight:800;top:7px;left:0;font-size:14px}ul.clean.cross li[data-v-40168b71]:before{content:"✕";background:none;color:var(--d-red);font-weight:800;top:7px;left:0;font-size:13px}ul.clean li b[data-v-40168b71]{color:var(--d-fg)}ul.clean li .path[data-v-40168b71]{font-family:JetBrains Mono,monospace;font-size:12px;color:var(--d-fg-muted)}.roadmap[data-v-40168b71]{position:relative;margin:24px 0}.phase[data-v-40168b71]{position:relative;display:grid;grid-template-columns:120px 1fr;gap:24px;padding:0 0 32px}.phase[data-v-40168b71]:not(:last-child):after{content:"";position:absolute;left:59px;top:36px;bottom:0;width:2px;background:var(--d-line)}.phase-tag[data-v-40168b71]{text-align:right;padding-top:4px}.phase-tag .pt[data-v-40168b71]{display:inline-block;font-family:JetBrains Mono,monospace;font-size:12px;font-weight:700;color:var(--d-accent-2);background:var(--d-accent-soft);border:1px solid var(--d-accent-bd);padding:5px 10px;border-radius:8px}.phase-tag .pe[data-v-40168b71]{font-size:11.5px;color:var(--d-fg-faint);margin-top:8px}.phase-body[data-v-40168b71]{background:var(--d-bg);border:1px solid var(--d-line);border-radius:14px;padding:18px 20px;box-shadow:var(--d-shadow-sm)}.phase-body h4[data-v-40168b71]{font-size:16px;margin-bottom:8px}.phase-body p[data-v-40168b71]{font-size:14px;margin-bottom:12px}.phase-body ul[data-v-40168b71]{margin:0}.matrix[data-v-40168b71]{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:16px 0}.anti[data-v-40168b71]{border:1px solid var(--d-line);border-radius:12px;padding:16px;background:var(--d-bg)}.anti .ah[data-v-40168b71]{display:flex;align-items:center;gap:9px;font-size:14px;font-weight:700;margin-bottom:8px}.anti .ah .verdict[data-v-40168b71]{margin-left:auto;font-size:11px;font-weight:800;padding:2px 8px;border-radius:999px}.verdict.pass[data-v-40168b71]{background:var(--d-green-soft);color:var(--d-green)}.verdict.fail[data-v-40168b71]{background:var(--d-red-soft);color:var(--d-red)}.verdict.warn[data-v-40168b71]{background:var(--d-amber-soft);color:var(--d-amber)}.anti p[data-v-40168b71]{font-size:13px;margin:0;color:var(--d-fg-muted)}.footer[data-v-40168b71]{margin-top:80px;padding-top:28px;border-top:1px solid var(--d-line);font-size:13px;color:var(--d-fg-faint);display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px}.kbd[data-v-40168b71]{font-family:JetBrains Mono,monospace;font-size:11px;background:var(--d-surface-2);border:1px solid var(--d-line);border-bottom-width:2px;border-radius:5px;padding:1px 6px}@media(max-width:980px){.layout[data-v-40168b71]{grid-template-columns:1fr}.sidebar[data-v-40168b71]{position:static;height:auto}.nav[data-v-40168b71]{display:flex;flex-wrap:wrap;gap:4px}.content-inner[data-v-40168b71]{padding:40px 22px 80px}.stat-grid[data-v-40168b71]{grid-template-columns:repeat(2,1fr)}.ba[data-v-40168b71]{grid-template-columns:1fr}.ba-col+.ba-col[data-v-40168b71]{border-left:none;border-top:1px solid var(--d-line)}.palette[data-v-40168b71]{grid-template-columns:repeat(2,1fr)}.matrix[data-v-40168b71]{grid-template-columns:1fr}}.ds-page .p[data-v-40168b71],.ds-page .stage.p-skin[data-v-40168b71],.ds-page [data-p][data-v-40168b71]{--p-font-sans: var(--font-ui);--p-font-mono: var(--font-mono);--p-bg: var(--color-bg);--p-surface: var(--color-surface);--p-surface-raised: var(--color-surface-raised);--p-surface-sunken: var(--color-surface-sunken);--p-text: var(--color-text);--p-text-muted: var(--color-text-muted);--p-text-faint: var(--color-text-faint);--p-text-on-accent: var(--color-text-on-accent);--p-line: var(--color-line);--p-line-strong: var(--color-line-strong);--p-accent: var(--color-accent);--p-accent-hover: var(--color-accent-hover);--p-accent-soft: var(--color-accent-soft);--p-accent-bd: var(--color-accent-bd);--p-success: var(--color-success);--p-success-soft: var(--color-success-soft);--p-success-bd: var(--color-success-bd);--p-warning: var(--color-warning);--p-warning-soft: var(--color-warning-soft);--p-warning-bd: var(--color-warning-bd);--p-danger: var(--color-danger);--p-danger-soft: var(--color-danger-soft);--p-danger-bd: var(--color-danger-bd);--p-info: var(--color-info);--p-sp-1: var(--space-1);--p-sp-2: var(--space-2);--p-sp-3: var(--space-3);--p-sp-4: var(--space-4);--p-sp-5: var(--space-5);--p-sp-6: var(--space-6);--p-sp-8: var(--space-8);--p-r-xs: var(--radius-xs);--p-r-sm: var(--radius-sm);--p-r-md: var(--radius-md);--p-r-lg: var(--radius-lg);--p-r-xl: var(--radius-xl);--p-r-2xl: var(--radius-2xl);--p-r-full: var(--radius-full);--p-sh-xs: var(--shadow-xs);--p-sh-sm: var(--shadow-sm);--p-sh-md: var(--shadow-md);--p-sh-lg: var(--shadow-lg);--p-sh-xl: var(--shadow-xl);--p-font-size-xs: var(--text-xs);--p-font-size-sm: var(--text-sm);--p-font-size-base: var(--text-base);--p-font-size-md: var(--text-base);--p-font-size-lg: var(--text-lg);--p-font-size-xl: var(--text-xl);--p-font-size-2xl: var(--text-2xl);--p-leading-tight: var(--leading-tight);--p-leading-normal: var(--leading-normal);--p-leading-relaxed: var(--leading-relaxed);--p-ease: var(--ease-out);--p-ease-inout: var(--ease-in-out);--p-dur-fast: var(--duration-fast);--p-dur: var(--duration-base);--p-dur-slow: var(--duration-slow);font-family:var(--font-ui);color:var(--color-text);font-size:var(--text-base)}.ds-page [data-p=dark][data-v-40168b71]{--p-bg: #0d1117;--p-surface: #161b22;--p-surface-raised: #1c2128;--p-surface-sunken: #0d1117;--p-text: #c9cdd4;--p-text-muted: #9aa0a8;--p-text-faint: #6b7280;--p-text-on-accent: #ffffff;--p-line: #2d333b;--p-line-strong: #3d444d;--p-accent: #58a6ff;--p-accent-hover: #79b8ff;--p-accent-soft: rgba(88,166,255,.14);--p-accent-bd: rgba(88,166,255,.28);--p-success: #3fb950;--p-success-soft: rgba(63,185,80,.14);--p-success-bd: rgba(63,185,80,.28);--p-warning: #d29922;--p-warning-soft: rgba(210,153,34,.14);--p-warning-bd: rgba(210,153,34,.28);--p-danger: #f85149;--p-danger-soft: rgba(248,81,73,.14);--p-danger-bd: rgba(248,81,73,.28);--p-sh-sm: 0 1px 2px rgba(0,0,0,.4);--p-sh-md: 0 4px 12px rgba(0,0,0,.45);--p-sh-lg: 0 12px 32px rgba(0,0,0,.55);--p-selection: rgba(88,166,255,.32)}.p-ic[data-v-40168b71]{width:16px;height:16px;flex:none;display:inline-block;vertical-align:middle}.p-btn[data-v-40168b71]{--_h: 36px;--_px: 16px;--_fs: var(--p-font-size-base);--_r: var(--p-r-md);display:inline-flex;align-items:center;justify-content:center;gap:8px;height:var(--_h);padding:0 var(--_px);border-radius:var(--_r);font-family:var(--p-font-sans);font-size:var(--_fs);font-weight:600;line-height:1;border:1px solid transparent;cursor:pointer;white-space:nowrap;transition:background var(--p-dur) var(--p-ease),border-color var(--p-dur) var(--p-ease),color var(--p-dur) var(--p-ease),box-shadow var(--p-dur) var(--p-ease),transform var(--p-dur-fast) var(--p-ease)}.p-btn[data-v-40168b71]:active{transform:scale(.98)}.p-btn[data-v-40168b71]:focus-visible{outline:none;box-shadow:0 0 0 3px var(--p-accent-soft),0 0 0 1px var(--p-accent)}.p-btn .p-ic[data-v-40168b71]{width:16px;height:16px}.p-btn.sm[data-v-40168b71]{--_h: 30px;--_px: 12px;--_fs: var(--p-font-size-sm);--_r: var(--p-r-sm)}.p-btn.sm .p-ic[data-v-40168b71]{width:14px;height:14px}.p-btn.lg[data-v-40168b71]{--_h: 42px;--_px: 20px;--_fs: var(--p-font-size-md);--_r: var(--p-r-lg)}.p-btn.primary[data-v-40168b71]{background:var(--p-accent);color:var(--p-text-on-accent);border-color:var(--p-accent);box-shadow:var(--p-sh-xs)}.p-btn.primary[data-v-40168b71]:hover{background:var(--p-accent-hover);border-color:var(--p-accent-hover)}.p-btn.secondary[data-v-40168b71]{background:var(--p-surface-raised);color:var(--p-text);border-color:var(--p-line-strong);box-shadow:var(--p-sh-xs)}.p-btn.secondary[data-v-40168b71]:hover{background:var(--p-surface-sunken);border-color:var(--p-line-strong)}.p-btn.ghost[data-v-40168b71]{background:transparent;color:var(--p-text);border-color:transparent}.p-btn.ghost[data-v-40168b71]:hover{background:var(--p-surface-sunken);color:var(--p-text)}.p-btn.danger[data-v-40168b71]{background:var(--p-danger);color:#fff;border-color:var(--p-danger);box-shadow:var(--p-sh-xs)}.p-btn.danger[data-v-40168b71]:hover{filter:brightness(.96)}.p-btn.danger-soft[data-v-40168b71]{background:var(--p-danger-soft);color:var(--p-danger);border-color:var(--p-danger-bd)}.p-btn.danger-soft[data-v-40168b71]:hover{background:var(--p-danger);color:#fff;border-color:var(--p-danger)}.p-btn[disabled][data-v-40168b71],.p-btn.disabled[data-v-40168b71]{opacity:.5;cursor:not-allowed;box-shadow:none;transform:none}.p-icon-btn[data-v-40168b71]{--_s: 32px;display:inline-grid;place-items:center;width:var(--_s);height:var(--_s);flex:none;border-radius:var(--p-r-md);border:1px solid transparent;background:transparent;color:var(--p-text-muted);cursor:pointer;transition:background var(--p-dur) var(--p-ease),color var(--p-dur) var(--p-ease)}.p-icon-btn[data-v-40168b71]:hover{background:var(--p-surface-sunken);color:var(--p-text)}.p-icon-btn[data-v-40168b71]:focus-visible{outline:none;box-shadow:0 0 0 3px var(--p-accent-soft)}.p-icon-btn.sm[data-v-40168b71]{--_s: 26px;border-radius:var(--p-r-sm)}.p-icon-btn.lg[data-v-40168b71]{--_s: 44px}.p-icon-btn .p-ic[data-v-40168b71]{width:16px;height:16px}.p-icon-btn.lg .p-ic[data-v-40168b71]{width:20px;height:20px}.p-badge[data-v-40168b71]{display:inline-flex;align-items:center;gap:6px;height:22px;padding:0 9px;border-radius:var(--p-r-full);font-family:var(--p-font-sans);font-size:var(--p-font-size-xs);font-weight:600;line-height:1;border:1px solid var(--p-line);background:var(--p-surface);color:var(--p-text);white-space:nowrap}.p-badge.sm[data-v-40168b71]{height:18px;padding:0 7px;font-size:11px}.p-badge .bd[data-v-40168b71]{width:7px;height:7px;border-radius:50%;background:currentColor}.p-badge.neutral[data-v-40168b71]{background:var(--p-surface-sunken);border-color:var(--p-line);color:var(--p-text-muted)}.p-badge.info[data-v-40168b71]{background:var(--p-accent-soft);border-color:var(--p-accent-bd);color:var(--p-accent-hover)}.p-badge.success[data-v-40168b71]{background:var(--p-success-soft);border-color:var(--p-success-bd);color:var(--p-success)}.p-badge.warning[data-v-40168b71]{background:var(--p-warning-soft);border-color:var(--p-warning-bd);color:var(--p-warning)}.p-badge.danger[data-v-40168b71]{background:var(--p-danger-soft);border-color:var(--p-danger-bd);color:var(--p-danger)}.p-badge.solid[data-v-40168b71]{background:var(--p-text);color:var(--p-bg);border-color:var(--p-text)}.p-badge .p-ic[data-v-40168b71]{width:12px;height:12px}.p-kbd[data-v-40168b71]{display:inline-flex;align-items:center;gap:3px}.p-kbd kbd[data-v-40168b71]{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border:1px solid var(--p-line);border-bottom-width:2px;border-radius:var(--p-r-xs);background:var(--p-surface-sunken);color:var(--p-text-muted);font-family:var(--p-font-sans);font-size:11px;line-height:1}.p-pill[data-v-40168b71]{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px;border-radius:var(--p-r-md);border:1px solid transparent;background:transparent;font-family:var(--p-font-sans);font-size:var(--p-font-size-sm);font-weight:500;color:var(--p-text);cursor:pointer;transition:background var(--p-dur) var(--p-ease),color var(--p-dur) var(--p-ease)}.p-pill[data-v-40168b71]:hover{background:var(--p-surface-sunken);color:var(--p-text)}.p-pill .pp-strong[data-v-40168b71]{font-weight:700;color:var(--p-text)}.p-pill .pp-sub[data-v-40168b71]{color:var(--p-accent);font-weight:600}.p-pill .p-ic[data-v-40168b71]{width:14px;height:14px;color:var(--p-text-faint)}.p-card[data-v-40168b71]{background:var(--p-surface);border:1px solid var(--p-line);border-radius:var(--p-r-md);overflow:hidden;color:var(--p-text)}.p-card.interactive[data-v-40168b71]{transition:background var(--p-dur) var(--p-ease),border-color var(--p-dur) var(--p-ease);cursor:pointer}.p-card.interactive[data-v-40168b71]:hover{background:var(--p-surface);border-color:var(--p-line-strong)}.p-card-head[data-v-40168b71]{display:flex;align-items:center;gap:9px;padding:10px 14px;border-bottom:1px solid var(--p-line);background:var(--p-surface)}.p-card-title[data-v-40168b71]{font-size:var(--p-font-size-sm);font-weight:600;color:var(--p-text);font-family:var(--p-font-mono)}.p-card-body[data-v-40168b71]{padding:14px;font-size:var(--p-font-size-base);color:var(--p-text);line-height:var(--p-leading-normal)}.p-card-foot[data-v-40168b71]{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:10px 14px;border-top:1px solid var(--p-line);background:var(--p-surface)}.p-field[data-v-40168b71]{display:flex;flex-direction:column;gap:6px}.p-label[data-v-40168b71]{font-size:var(--p-font-size-sm);font-weight:600;color:var(--p-text)}.p-input[data-v-40168b71],.p-select[data-v-40168b71],.p-textarea[data-v-40168b71]{width:100%;height:38px;padding:0 12px;border-radius:var(--p-r-md);border:1px solid var(--p-line-strong);background:var(--p-surface-raised);font-family:var(--p-font-sans);font-size:var(--p-font-size-base);color:var(--p-text);box-shadow:var(--p-sh-xs);transition:border-color var(--p-dur) var(--p-ease),box-shadow var(--p-dur) var(--p-ease)}.p-textarea[data-v-40168b71]{height:auto;min-height:84px;padding:10px 12px;resize:vertical;line-height:var(--p-leading-normal)}.p-input[data-v-40168b71]:hover,.p-select[data-v-40168b71]:hover,.p-textarea[data-v-40168b71]:hover{border-color:var(--p-line-strong)}.p-input[data-v-40168b71]:focus,.p-select[data-v-40168b71]:focus,.p-textarea[data-v-40168b71]:focus{outline:none;border-color:var(--p-accent);box-shadow:0 0 0 3px var(--p-accent-soft)}.p-input[data-v-40168b71]::placeholder,.p-textarea[data-v-40168b71]::placeholder{color:var(--p-text-faint)}.p-input.sm[data-v-40168b71]{height:32px;font-size:var(--p-font-size-sm);border-radius:var(--p-r-sm)}.p-hint[data-v-40168b71]{font-size:var(--p-font-size-xs);color:var(--p-text-faint)}.p-dialog[data-v-40168b71]{width:480px;max-width:calc(100vw - 48px);background:var(--p-surface-raised);border:1px solid var(--p-line);border-radius:var(--p-r-xl);box-shadow:var(--p-sh-xl);overflow:hidden;color:var(--p-text)}.p-dialog-head[data-v-40168b71]{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:20px 22px 14px}.p-dialog-title[data-v-40168b71]{font-size:var(--p-font-size-lg);font-weight:700;letter-spacing:-.01em}.p-dialog-desc[data-v-40168b71]{font-size:var(--p-font-size-base);color:var(--p-text-muted);margin-top:4px;line-height:var(--p-leading-normal)}.p-dialog-body[data-v-40168b71]{padding:4px 22px 18px}.p-dialog-foot[data-v-40168b71]{display:flex;justify-content:flex-end;gap:10px;padding:14px 22px 20px}.p-toast[data-v-40168b71]{display:flex;align-items:flex-start;gap:11px;width:360px;padding:13px 14px;background:var(--p-surface-raised);border:1px solid var(--p-line);border-radius:var(--p-r-lg);box-shadow:var(--p-sh-md)}.p-toast .ti[data-v-40168b71]{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;flex:none;margin-top:1px}.p-toast.success .ti[data-v-40168b71]{background:var(--p-success-soft);color:var(--p-success)}.p-toast.warning .ti[data-v-40168b71]{background:var(--p-warning-soft);color:var(--p-warning)}.p-toast .tt[data-v-40168b71]{font-size:var(--p-font-size-base);font-weight:600;color:var(--p-text)}.p-toast .td[data-v-40168b71]{font-size:var(--p-font-size-sm);color:var(--p-text-muted);margin-top:2px;line-height:1.45}.p-spinner[data-v-40168b71]{width:18px;height:18px;animation:p-spin-40168b71 .85s linear infinite}.p-spinner.sm[data-v-40168b71]{width:14px;height:14px}.p-spinner circle[data-v-40168b71]{fill:none;stroke-width:2.2;stroke-linecap:round}.p-spinner .track[data-v-40168b71]{stroke:var(--p-line)}.p-spinner .arc[data-v-40168b71]{stroke:var(--p-accent);stroke-dasharray:56 56;stroke-dashoffset:38}@keyframes p-spin-40168b71{to{transform:rotate(360deg)}}.p-thinking[data-v-40168b71]{display:inline-flex;align-items:center;gap:9px;font-size:var(--p-font-size-sm);color:var(--p-text-muted);font-family:var(--p-font-sans)}.p-bubble-user[data-v-40168b71]{align-self:flex-end;max-width:78%;background:var(--p-accent-soft);border:1px solid var(--p-accent-bd);color:var(--p-text);border-radius:18px 18px 5px;padding:11px 15px;font-size:var(--p-font-size-md);line-height:var(--p-leading-normal);box-shadow:var(--p-sh-xs)}.p-msg[data-v-40168b71]{max-width:760px;font-size:var(--p-font-size-md);line-height:var(--p-leading-relaxed);color:var(--p-text)}.p-msg p[data-v-40168b71]{margin:0 0 10px;color:var(--p-text)}.p-msg code[data-v-40168b71]{font-family:var(--p-font-mono);background:var(--p-surface-sunken);border:1px solid var(--p-line);color:var(--p-accent-hover);padding:1px 6px;border-radius:5px;font-size:.9em}.p-agent[data-v-40168b71]{background:var(--p-surface-raised);border:1px solid var(--p-line);border-radius:var(--p-r-md);overflow:hidden}.p-agent-head[data-v-40168b71]{display:flex;align-items:center;gap:10px;padding:11px 14px}.p-agent-av[data-v-40168b71]{width:22px;height:22px;border-radius:7px;display:grid;place-items:center;background:var(--p-surface-sunken);border:1px solid var(--p-line);color:var(--p-text-muted);flex:none}.p-agent-name[data-v-40168b71]{font-size:var(--p-font-size-sm);font-weight:600;color:var(--p-text)}.p-agent-phase[data-v-40168b71]{font-size:var(--p-font-size-xs);color:var(--p-text-muted)}.p-agent-body[data-v-40168b71]{padding:0 14px 13px}.p-tool[data-v-40168b71]{background:var(--p-surface-raised);border:1px solid var(--p-line);border-radius:var(--p-r-md);overflow:hidden}.p-tool-head[data-v-40168b71]{display:flex;align-items:center;gap:9px;padding:9px 13px;background:var(--p-surface);border-bottom:1px solid var(--p-line)}.p-tool-ic[data-v-40168b71]{width:18px;height:18px;border-radius:5px;display:grid;place-items:center;background:var(--p-accent-soft);color:var(--p-accent);flex:none}.p-tool-name[data-v-40168b71]{font-family:var(--p-font-mono);font-size:var(--p-font-size-sm);font-weight:600;color:var(--p-text)}.p-tool-body[data-v-40168b71]{padding:12px 13px}.p-code[data-v-40168b71]{font-family:var(--p-font-mono);font-size:var(--p-font-size-sm);line-height:1.65;background:var(--p-surface-sunken);border:1px solid var(--p-line);border-radius:var(--p-r-md);padding:11px 13px;color:var(--p-text);overflow-x:auto}.p-action[data-v-40168b71]{border-radius:var(--p-r-md);overflow:hidden;border:1px solid var(--p-accent-bd);background:var(--p-surface)}.p-action.warn[data-v-40168b71]{border-color:var(--p-warning-bd)}.p-action-head[data-v-40168b71]{display:flex;align-items:center;gap:9px;padding:10px 14px;background:var(--p-accent-soft);border-bottom:1px solid var(--p-accent-bd)}.p-action.warn .p-action-head[data-v-40168b71]{background:var(--p-warning-soft);border-bottom-color:var(--p-warning-bd)}.p-action-title[data-v-40168b71]{font-size:var(--p-font-size-base);font-weight:600;color:var(--p-accent-hover)}.p-action.warn .p-action-title[data-v-40168b71]{color:var(--p-warning)}.p-action-body[data-v-40168b71]{padding:14px;font-size:var(--p-font-size-base);color:var(--p-text);line-height:var(--p-leading-normal)}.p-action-foot[data-v-40168b71]{display:flex;justify-content:flex-end;gap:8px;padding:11px 14px;border-top:1px solid var(--p-line);background:var(--p-surface)}.p-todo[data-v-40168b71]{background:var(--p-surface-raised);border:1px solid var(--p-line);border-radius:var(--p-r-md);padding:6px}.p-todo-row[data-v-40168b71]{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:var(--p-r-md);font-size:var(--p-font-size-base);color:var(--p-text)}.p-todo-row.done[data-v-40168b71]{color:var(--p-text-faint);text-decoration:line-through}.p-todo-row.active[data-v-40168b71]{background:var(--p-accent-soft);color:var(--p-text)}.p-todo-check[data-v-40168b71]{width:16px;flex:none;font-size:var(--p-font-size-base);line-height:1;text-align:center;user-select:none;color:var(--p-text-faint)}.p-todo-row.done .p-todo-check[data-v-40168b71]{color:var(--p-success)}.p-todo-row.active .p-todo-check[data-v-40168b71]{color:var(--p-accent);font-weight:500}.p-dot[data-v-40168b71]{width:7px;height:7px;border-radius:50%;flex:none;background:var(--p-text-faint)}.p-dot.done[data-v-40168b71]{background:var(--p-success)}.p-dot.error[data-v-40168b71]{background:var(--p-danger)}.p-dot.running[data-v-40168b71]{background:var(--p-accent);box-shadow:0 0 0 0 var(--p-accent-soft);animation:p-pulse-40168b71 1.4s ease-out infinite}@keyframes p-pulse-40168b71{0%{box-shadow:0 0 #1783ff66}to{box-shadow:0 0 0 6px #1783ff00}}.p-tool-group[data-v-40168b71]{border:1px solid var(--p-line);border-radius:var(--p-r-md);background:var(--p-surface);overflow:hidden}.p-tool-group-head[data-v-40168b71]{display:flex;align-items:center;gap:8px;height:32px;padding:0 11px;cursor:pointer;font-size:var(--p-font-size-sm);color:var(--p-text-muted);user-select:none}.p-tool-group-head[data-v-40168b71]:hover{background:var(--p-surface-sunken);color:var(--p-text)}.p-tool-group-head .tg-title[data-v-40168b71]{font-weight:600;color:var(--p-text)}.p-tool-group-head .tg-meta[data-v-40168b71]{color:var(--p-text-faint)}.p-tool-group-head .tg-car[data-v-40168b71]{margin-left:auto;width:14px;height:14px;color:var(--p-text-faint);transition:transform var(--p-dur) var(--p-ease)}.p-tool-group.open .p-tool-group-head .tg-car[data-v-40168b71]{transform:rotate(90deg)}.p-tool-row[data-v-40168b71]{display:flex;align-items:center;gap:8px;height:30px;padding:0 11px;border-top:1px solid var(--p-line-2, var(--p-line));cursor:pointer;font-family:var(--p-font-mono);font-size:var(--p-font-size-sm);color:var(--p-text)}.p-tool-row[data-v-40168b71]:hover{background:var(--p-surface-sunken)}.p-tool-row .tr-ic[data-v-40168b71]{width:14px;height:14px;color:var(--p-text-faint);flex:none}.p-tool-row .tr-name[data-v-40168b71]{font-weight:600;color:var(--p-text);flex:none}.p-tool-row .tr-arg[data-v-40168b71]{color:var(--p-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.p-tool-row .tr-time[data-v-40168b71]{margin-left:auto;color:var(--p-text-faint);font-size:var(--p-font-size-xs);flex:none}.p-tool-row .tr-car[data-v-40168b71]{width:13px;height:13px;color:var(--p-text-faint);flex:none;transition:transform var(--p-dur) var(--p-ease)}.p-tool-row.expanded[data-v-40168b71]{background:var(--p-surface-sunken)}.p-tool-row.expanded .tr-car[data-v-40168b71]{transform:rotate(90deg)}.p-tool-detail[data-v-40168b71]{padding:0 11px 11px;background:var(--p-surface-sunken);border-top:1px solid var(--p-line)}.p-tool-detail .p-code[data-v-40168b71]{margin-top:10px}.p-composer[data-v-40168b71]{background:var(--p-surface-raised);border:1px solid var(--p-line);border-radius:var(--p-r-xl);box-shadow:var(--p-sh-md);overflow:hidden}.p-composer[data-v-40168b71]:focus-within{border-color:var(--p-accent);box-shadow:var(--p-sh-md),0 0 0 3px var(--p-accent-soft)}.p-composer-ta[data-v-40168b71]{padding:14px 16px 8px;font-family:var(--p-font-sans);font-size:var(--p-font-size-md);color:var(--p-text);line-height:var(--p-leading-normal)}.p-composer-ta.ph[data-v-40168b71]{color:var(--p-text-faint)}.p-composer-bar[data-v-40168b71]{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 8px 8px}.p-composer-left[data-v-40168b71],.p-composer-right[data-v-40168b71]{display:flex;align-items:center;gap:2px}.p-send[data-v-40168b71]{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:var(--p-accent);color:var(--p-text-on-accent);border:none;cursor:pointer;box-shadow:var(--p-sh-xs);transition:transform var(--p-dur-fast) var(--p-ease),background var(--p-dur) var(--p-ease)}.p-send[data-v-40168b71]:hover{background:var(--p-accent-hover)}.p-send[data-v-40168b71]:active{transform:scale(.92)}.p-send .p-ic[data-v-40168b71]{width:16px;height:16px}.p[data-v-40168b71] ::selection,[data-p][data-v-40168b71] ::selection{background:var(--p-selection)}.p-link[data-v-40168b71]{color:var(--p-accent);text-decoration:none;font-family:var(--p-font-sans);transition:color var(--p-dur) var(--p-ease)}.p-link[data-v-40168b71]:hover{color:var(--p-accent-hover);text-decoration:underline}.p-link[data-v-40168b71]:focus-visible{outline:none;box-shadow:var(--p-focus-ring);border-radius:var(--p-r-xs)}.p-link.muted[data-v-40168b71]{color:var(--p-text-muted)}.p-link.muted[data-v-40168b71]:hover{color:var(--p-text)}.p-link .p-ic[data-v-40168b71]{width:var(--p-ic-sm);height:var(--p-ic-sm);vertical-align:-2px}.p-menu[data-v-40168b71]{background:var(--p-surface-raised);border:1px solid var(--p-line);border-radius:var(--p-r-lg);box-shadow:var(--p-sh-sm);padding:var(--p-sp-1);min-width:180px;font-family:var(--p-font-sans);color:var(--p-text)}.p-menu-item[data-v-40168b71]{display:flex;align-items:center;gap:8px;padding:6px 10px;border-radius:var(--p-r-sm);font-size:var(--p-font-size-sm);color:var(--p-text);cursor:pointer;transition:background var(--p-dur) var(--p-ease),color var(--p-dur) var(--p-ease)}.p-menu-item[data-v-40168b71]:hover{background:var(--p-surface-sunken);color:var(--p-text)}.p-menu-item.active[data-v-40168b71],.p-menu-item.active[data-v-40168b71]:hover{background:var(--p-accent-soft);color:var(--p-accent-hover)}.p-menu-item.danger[data-v-40168b71]{color:var(--p-danger)}.p-menu-item.danger[data-v-40168b71]:hover{background:var(--p-danger-soft);color:var(--p-danger)}.p-menu-item.disabled[data-v-40168b71]{opacity:.5;cursor:not-allowed}.p-menu-item.disabled[data-v-40168b71]:hover{background:transparent;color:var(--p-text)}.p-menu-item .p-ic[data-v-40168b71]{width:var(--p-ic-sm);height:var(--p-ic-sm)}.p-menu-item.lg[data-v-40168b71]{min-height:44px;padding:12px 14px;font-size:var(--p-font-size-base)}.p-menu-sep[data-v-40168b71]{height:1px;background:var(--p-line);margin:4px 0}.p-seg[data-v-40168b71]{display:inline-flex;gap:2px;padding:2px;background:var(--p-surface-sunken);border:1px solid var(--p-line);border-radius:var(--p-r-md);font-family:var(--p-font-sans)}.p-seg-item[data-v-40168b71]{padding:5px 12px;border-radius:var(--p-r-sm);font-size:var(--p-font-size-sm);font-weight:500;color:var(--p-text);cursor:pointer;white-space:nowrap;transition:background var(--p-dur) var(--p-ease),color var(--p-dur) var(--p-ease),box-shadow var(--p-dur) var(--p-ease)}.p-seg-item[data-v-40168b71]:hover{color:var(--p-text)}.p-seg-item.on[data-v-40168b71]{background:var(--p-surface-raised);color:var(--p-text);box-shadow:var(--p-sh-xs)}.p-tabs[data-v-40168b71]{display:flex;align-items:center;gap:0;border-bottom:1px solid var(--p-line);font-family:var(--p-font-sans)}.p-tab[data-v-40168b71]{padding:8px 14px;font-size:var(--p-font-size-sm);font-weight:500;color:var(--p-text-muted);cursor:pointer;white-space:nowrap;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color var(--p-dur) var(--p-ease),border-color var(--p-dur) var(--p-ease)}.p-tab[data-v-40168b71]:hover{color:var(--p-text)}.p-tab.on[data-v-40168b71]{color:var(--p-accent);border-bottom-color:var(--p-accent)}.p-switch[data-v-40168b71]{position:relative;display:inline-block;width:36px;height:20px;flex:none;border-radius:var(--p-r-full);background:var(--p-line-strong);cursor:pointer;transition:background var(--p-dur) var(--p-ease)}.p-switch[data-v-40168b71]:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:var(--p-r-full);background:var(--surface-light);box-shadow:var(--p-sh-xs);transition:transform var(--p-dur) var(--p-ease)}.p-switch.on[data-v-40168b71]{background:var(--p-accent)}.p-switch.on[data-v-40168b71]:after{background:var(--p-text-on-accent);transform:translate(16px)}.p-switch[data-v-40168b71]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.p-check[data-v-40168b71]{width:17px;height:17px;flex:none;display:inline-grid;place-items:center;border:1.5px solid var(--p-line-strong);border-radius:var(--p-r-sm);background:var(--p-surface-raised);color:var(--p-text-on-accent);cursor:pointer;transition:background var(--p-dur) var(--p-ease),border-color var(--p-dur) var(--p-ease)}.p-check.on[data-v-40168b71]{background:var(--p-accent);border-color:var(--p-accent)}.p-check[data-v-40168b71]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.p-check .p-ic[data-v-40168b71]{width:12px;height:12px}.p-avatar[data-v-40168b71]{width:32px;height:32px;flex:none;display:grid;place-items:center;border-radius:var(--p-r-md);background:var(--p-surface-sunken);border:1px solid var(--p-line);color:var(--p-text-muted);font-size:var(--p-font-size-sm);font-weight:600}.p-avatar.sm[data-v-40168b71]{width:24px;height:24px;border-radius:var(--p-r-sm);font-size:var(--p-font-size-xs)}.p-avatar .p-ic[data-v-40168b71]{width:16px;height:16px}.p-avatar.sm .p-ic[data-v-40168b71]{width:13px;height:13px}.p-empty[data-v-40168b71]{display:flex;flex-direction:column;align-items:center;gap:8px;padding:32px 16px;color:var(--p-text-muted);text-align:center}.p-empty .em-ic[data-v-40168b71]{width:48px;height:48px;color:var(--p-text-faint)}.p-empty .em-title[data-v-40168b71]{font-size:var(--p-font-size-base);font-weight:600;color:var(--p-text)}.p-empty .em-hint[data-v-40168b71]{font-size:var(--p-font-size-sm);color:var(--p-text-muted)}.p-divider[data-v-40168b71]{width:100%;height:1px;background:var(--p-line);border:none}.p-divider-v[data-v-40168b71]{width:1px;align-self:stretch;background:var(--p-line);border:none}.p-tip[data-v-40168b71]{position:relative;display:inline-flex}.p-tip .p-tooltip[data-v-40168b71]{position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);background:var(--p-text);color:var(--p-bg);font-size:var(--p-font-size-xs);padding:4px 8px;border-radius:var(--p-r-sm);white-space:nowrap;opacity:0;pointer-events:none;transition:opacity var(--p-dur-fast) var(--p-ease)}.p-tip:hover .p-tooltip[data-v-40168b71]{opacity:1}.p-banner[data-v-40168b71]{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:var(--p-r-md);border:1px solid var(--p-line);background:var(--p-surface);font-size:var(--p-font-size-sm);color:var(--p-text)}.p-banner .bn-ic[data-v-40168b71]{width:18px;height:18px;flex:none}.p-banner.info[data-v-40168b71]{background:var(--p-accent-soft);border-color:var(--p-accent-bd)}.p-banner.info .bn-ic[data-v-40168b71]{color:var(--p-accent)}.p-banner.warning[data-v-40168b71]{background:var(--p-warning-soft);border-color:var(--p-warning-bd)}.p-banner.warning .bn-ic[data-v-40168b71]{color:var(--p-warning)}.p-banner.danger[data-v-40168b71]{background:var(--p-danger-soft);border-color:var(--p-danger-bd)}.p-banner.danger .bn-ic[data-v-40168b71]{color:var(--p-danger)}.p-sheet[data-v-40168b71]{background:var(--p-surface-raised);border:1px solid var(--p-line);border-radius:var(--p-r-xl) var(--p-r-xl) 0 0;box-shadow:var(--p-sh-xl);padding:8px 16px 20px}.p-sheet-handle[data-v-40168b71]{width:36px;height:4px;border-radius:var(--p-r-full);background:var(--p-line-strong);margin:0 auto 8px}.p-skeleton[data-v-40168b71]{background:var(--p-surface-sunken);border-radius:var(--p-r-sm);animation:p-skel-40168b71 1.2s var(--p-ease-inout) infinite alternate}@keyframes p-skel-40168b71{0%{opacity:.5}to{opacity:1}}.p-cmdbar[data-v-40168b71]{display:flex;align-items:center;gap:8px;width:100%}.p-cmd[data-v-40168b71]{flex:1;min-width:0;height:38px;display:flex;align-items:center;gap:10px;padding:0 10px 0 14px;background:var(--p-surface-sunken);border:1px solid var(--p-line);border-radius:var(--p-r-md);font-family:var(--p-font-mono);font-size:var(--p-font-size-sm);color:var(--p-text-muted)}.p-cmd .cmd-text[data-v-40168b71]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.p-cmd .cmd-copy[data-v-40168b71]{margin-left:auto;flex:none;display:grid;place-items:center;width:26px;height:26px;border:none;background:transparent;border-radius:var(--p-r-sm);color:var(--p-text-faint);cursor:pointer;transition:background var(--p-dur) var(--p-ease),color var(--p-dur) var(--p-ease)}.p-cmd .cmd-copy[data-v-40168b71]:hover{background:var(--p-surface-raised);color:var(--p-text)}.p-cmd .cmd-copy .p-ic[data-v-40168b71]{width:15px;height:15px}.p-topbar[data-v-40168b71]{display:flex;align-items:center;justify-content:space-between;gap:12px;height:48px;padding:0 16px;background:var(--p-surface-raised);border:1px solid var(--p-line);border-radius:var(--p-r-lg)}.p-topbar .tb-title[data-v-40168b71]{font-size:var(--p-font-size-sm);font-weight:600;color:var(--p-text)}.p-topbar .tb-actions[data-v-40168b71]{display:flex;align-items:center;gap:4px}.p-topbar.frost[data-v-40168b71]{background:#ffffffb8;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-color:#fff9}[data-p=dark] .p-topbar.frost[data-v-40168b71]{background:#161b22b8;border-color:#ffffff14}.demo-family-black[data-v-40168b71]{--p-accent: #14171c;--p-accent-hover: #2f3540;--p-accent-soft: #f1f2f4;--p-accent-bd: #d8dbe0;--p-text-on-accent: #ffffff}.demo-row[data-v-40168b71]{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.demo-stack[data-v-40168b71]{display:flex;flex-direction:column;gap:12px;width:100%}.demo-col[data-v-40168b71]{display:flex;flex-direction:column;gap:10px}.demo-grow[data-v-40168b71]{flex:1;min-width:0}.demo-chat[data-v-40168b71]{display:flex;flex-direction:column;gap:14px;width:100%;max-width:560px}.icon-grid[data-v-40168b71]{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:8px;margin:14px 0}.icon-group-label[data-v-40168b71]{grid-column:1 / -1;margin-top:10px;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--d-fg-muted)}.icon-cell[data-v-40168b71]{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--d-line);border-radius:8px;background:var(--d-surface)}.icon-cell .kw-icon[data-v-40168b71]{width:20px;height:20px;color:var(--d-fg-soft)}.icon-cell .ic-name[data-v-40168b71]{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;color:var(--d-fg)}.icon-sizes[data-v-40168b71]{display:flex;align-items:end;gap:22px;flex-wrap:wrap}.icon-sizes .sz[data-v-40168b71]{display:flex;flex-direction:column;align-items:center;gap:8px;font-size:11px;color:var(--d-fg-muted);font-family:JetBrains Mono,ui-monospace,monospace}.p-code-inline[data-v-40168b71]{font-family:var(--p-font-mono);background:var(--p-surface-sunken);color:var(--p-text);padding:0 5px;border-radius:var(--p-r-sm);font-size:.9em}.p-code-block[data-v-40168b71]{border:1px solid var(--p-line);border-radius:var(--p-r-md);overflow:hidden;background:var(--p-surface-sunken)}.p-code-block-head[data-v-40168b71]{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:var(--p-surface);border-bottom:1px solid var(--p-line);font-family:var(--p-font-mono);font-size:var(--p-font-size-xs);color:var(--p-text-muted)}.p-code-block pre[data-v-40168b71]{margin:0;padding:12px 14px;font-family:var(--p-font-mono);font-size:var(--p-font-size-sm);line-height:1.65;color:var(--p-text);overflow-x:auto}.p-diff[data-v-40168b71]{border:1px solid var(--p-line);border-radius:var(--p-r-md);overflow:hidden;font-family:var(--p-font-mono);font-size:var(--p-font-size-sm)}.p-diff-head[data-v-40168b71]{padding:8px 12px;background:var(--p-surface);border-bottom:1px solid var(--p-line);font-size:var(--p-font-size-xs);color:var(--p-text-muted)}.p-diff-row[data-v-40168b71]{display:flex;gap:10px;padding:2px 12px;line-height:1.6}.p-diff-row .pm[data-v-40168b71]{width:14px;flex:none;color:var(--p-text-faint)}.p-diff-row.add[data-v-40168b71]{background:var(--p-success-soft)}.p-diff-row.add .pm[data-v-40168b71]{color:var(--p-success)}.p-diff-row.del[data-v-40168b71]{background:var(--p-danger-soft)}.p-diff-row.del .pm[data-v-40168b71]{color:var(--p-danger)}.p-diff-row .p-diff-code[data-v-40168b71]{color:var(--p-text)}.p-field-error[data-v-40168b71]{color:var(--p-danger);font-size:var(--p-font-size-xs)}.p-btn .p-spinner[data-v-40168b71]{vertical-align:middle}.p-btn .p-spinner .track[data-v-40168b71]{stroke:currentColor;opacity:.35}.p-btn .p-spinner .arc[data-v-40168b71]{stroke:currentColor}.ds-page[data-v-40168b71]{position:fixed;inset:0;z-index:var(--z-max);overflow-y:auto}.ds-topbar[data-v-40168b71]{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-4);background:var(--color-surface);border-bottom:1px solid var(--color-line)}.ds-back[data-v-40168b71]{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-3);border:1px solid var(--color-line);border-radius:var(--radius-md);background:var(--color-surface-raised);color:var(--color-text);font-family:var(--font-ui);font-size:var(--text-sm);cursor:pointer}.ds-back[data-v-40168b71]:hover{background:var(--color-surface-sunken)}.ds-topbar-title[data-v-40168b71]{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text-muted)}
diff --git a/apps/kimi-code/dist-web/assets/index-C6dIaEdv.css b/apps/kimi-code/dist-web/assets/index-C6dIaEdv.css
deleted file mode 100644
index 7fc68e4f00..0000000000
--- a/apps/kimi-code/dist-web/assets/index-C6dIaEdv.css
+++ /dev/null
@@ -1 +0,0 @@
-.ui-icon-button[data-v-c9e67023]{display:inline-flex;align-items:center;justify-content:center;flex:none;padding:0;border:1px solid transparent;border-radius:var(--radius-md);background:transparent;color:var(--color-text-muted);cursor:pointer;transition:background var(--duration-base) var(--ease-out),color var(--duration-base) var(--ease-out)}.ui-icon-button[data-v-c9e67023]:hover:not(:disabled){background:color-mix(in srgb,var(--color-text) 8%,transparent);color:var(--color-text)}.ui-icon-button[data-v-c9e67023]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.ui-icon-button[data-v-c9e67023]:disabled{opacity:.5;cursor:not-allowed}.ui-icon-button--sm[data-v-c9e67023]{width:26px;height:26px;border-radius:var(--radius-sm)}.ui-icon-button--md[data-v-c9e67023]{width:32px;height:32px}.ui-icon-button--lg[data-v-c9e67023]{width:44px;height:44px}.ui-icon-button[data-v-c9e67023] svg{width:var(--p-ic-md);height:var(--p-ic-md)}.ui-icon-button--sm[data-v-c9e67023] svg{width:var(--p-ic-md);height:var(--p-ic-md)}.ui-icon-button--lg[data-v-c9e67023] svg{width:var(--p-ic-lg);height:var(--p-ic-lg)}.ui-dialog__overlay[data-v-ee025dcb]{position:fixed;inset:0;z-index:var(--z-modal);display:flex;align-items:center;justify-content:center;padding:var(--space-6);background:#0d111773;animation:kimi-dialog-overlay-in-ee025dcb var(--duration-base) var(--ease-out)}@keyframes kimi-dialog-overlay-in-ee025dcb{0%{opacity:0}to{opacity:1}}.ui-dialog[data-v-ee025dcb]{max-height:calc(100vh - var(--space-8) * 2);display:flex;flex-direction:column;background:var(--color-surface-raised);border:1px solid var(--color-line);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);outline:none;overflow:hidden;animation:kimi-card-in var(--duration-slow) var(--ease-out)}.ui-dialog--md[data-v-ee025dcb]{width:min(440px,100%)}.ui-dialog--lg[data-v-ee025dcb]{width:min(640px,100%)}.ui-dialog--xl[data-v-ee025dcb]{width:min(var(--p-content-max),100%)}.ui-dialog--fixed-height[data-v-ee025dcb]{height:min(680px,calc(100vh - var(--space-8) * 2))}.ui-dialog--flush .ui-dialog__body[data-v-ee025dcb]{padding:0}.ui-dialog__head[data-v-ee025dcb]{display:flex;align-items:flex-start;gap:var(--space-3);padding:20px 22px 14px}.ui-dialog__titles[data-v-ee025dcb]{flex:1;min-width:0}.ui-dialog__title[data-v-ee025dcb]{font-size:var(--text-lg);font-weight:500;color:var(--color-text);line-height:var(--leading-tight)}.ui-dialog__desc[data-v-ee025dcb]{margin-top:4px;font-size:var(--text-base);color:var(--color-text-muted)}.ui-dialog__close[data-v-ee025dcb]{flex:none;margin-top:-2px}.ui-dialog__body[data-v-ee025dcb]{flex:1;min-height:0;padding:4px 22px 18px;color:var(--color-text);overflow:auto}.ui-dialog__foot[data-v-ee025dcb]{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:14px 22px 20px}.sd-head[data-v-ac47909f]{flex:1;min-width:0;display:flex;align-items:center;gap:var(--space-2)}.sd-search-icon[data-v-ac47909f]{flex:none;color:var(--color-text-muted)}.sd-input[data-v-ac47909f]{flex:1;min-width:0;font-family:var(--font-ui);font-size:var(--text-lg);color:var(--color-text);background:none;border:none;outline:none;padding:var(--space-1) 0}.sd-input[data-v-ac47909f]::placeholder{color:var(--color-text-muted)}.sd-list[data-v-ac47909f]{height:420px;overflow-y:auto;padding:var(--space-1) var(--space-2)}.sd-row[data-v-ac47909f]{display:flex;flex-direction:column;gap:2px;width:100%;padding:var(--space-2) var(--space-3);border:none;border-radius:var(--radius-md);background:none;cursor:pointer;text-align:left;font-family:var(--font-ui);color:var(--color-text)}.sd-row[data-v-ac47909f]:hover,.sd-row.on[data-v-ac47909f]{background:var(--color-surface-sunken)}.sd-row.active .sd-title[data-v-ac47909f]{color:var(--color-accent-hover)}.sd-meta[data-v-ac47909f]{display:flex;align-items:center;gap:var(--space-1);min-width:0;font-size:var(--text-xs);color:var(--color-text-muted)}.sd-folder[data-v-ac47909f]{flex:none;color:var(--color-text-muted)}.sd-ws[data-v-ac47909f]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sd-time[data-v-ac47909f]{flex:none;font-family:var(--font-mono);color:var(--color-text-faint)}.sd-title[data-v-ac47909f]{min-width:0;font-size:var(--text-base);color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sd-snippet[data-v-ac47909f]{min-width:0;font-size:var(--text-sm);color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sd-title[data-v-ac47909f] mark,.sd-snippet[data-v-ac47909f] mark{background:var(--color-accent);color:var(--color-bg);font-weight:var(--weight-semibold);border-radius:var(--radius-xs);padding:0 2px}.sd-empty[data-v-ac47909f]{padding:var(--space-6) var(--space-4);text-align:center;color:var(--color-text-muted);font-size:var(--text-sm)}.sd-hint[data-v-ac47909f]{font-size:var(--text-xs);color:var(--color-text-muted)}.ui-spinner[data-v-e5c5b17d]{display:inline-flex;flex:none;color:var(--color-accent)}.ui-spinner--sm[data-v-e5c5b17d]{width:14px;height:14px}.ui-spinner--md[data-v-e5c5b17d]{width:18px;height:18px}.ui-spinner--lg[data-v-e5c5b17d]{width:28px;height:28px}.ui-spinner__svg[data-v-e5c5b17d]{width:100%;height:100%;animation:ui-spinner-rotate-e5c5b17d .85s linear infinite}.ui-spinner__track[data-v-e5c5b17d]{fill:none;stroke:var(--color-line);stroke-width:2.2}.ui-spinner__arc[data-v-e5c5b17d]{fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-dasharray:56 56;stroke-dashoffset:38}@keyframes ui-spinner-rotate-e5c5b17d{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.ui-spinner__svg[data-v-e5c5b17d]{animation-duration:1.8s}}.ui-badge[data-v-5bc5cd6d]{display:inline-flex;align-items:center;gap:6px;border-radius:var(--radius-full);font-family:var(--font-ui);font-weight:var(--weight-medium);line-height:1;white-space:nowrap;border:1px solid transparent}.ui-badge--md[data-v-5bc5cd6d]{height:22px;padding:0 9px;font-size:var(--text-xs)}.ui-badge--sm[data-v-5bc5cd6d]{height:18px;padding:0 7px;font-size:11px}.ui-badge__dot[data-v-5bc5cd6d]{width:6px;height:6px;border-radius:var(--radius-full);background:currentColor;flex:none}.ui-badge--neutral[data-v-5bc5cd6d]{background:var(--color-surface-sunken);color:var(--color-text-muted);border-color:var(--color-line)}.ui-badge--info[data-v-5bc5cd6d]{background:var(--color-accent-soft);color:var(--color-accent-hover);border-color:var(--color-accent-bd)}.ui-badge--success[data-v-5bc5cd6d]{background:var(--color-success-soft);color:var(--color-success);border-color:var(--color-success-bd)}.ui-badge--warning[data-v-5bc5cd6d]{background:var(--color-warning-soft);color:var(--color-warning);border-color:var(--color-warning-bd)}.ui-badge--danger[data-v-5bc5cd6d]{background:var(--color-danger-soft);color:var(--color-danger);border-color:var(--color-danger-bd)}.ui-badge--solid[data-v-5bc5cd6d]{background:var(--color-text);color:var(--color-bg)}.ui-menu[data-v-60e6cd8d]{min-width:180px;padding:var(--space-1);background:var(--color-surface-raised);border:1px solid var(--color-line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);display:flex;flex-direction:column}.ui-menu-item[data-v-f940771a]{display:flex;align-items:center;gap:var(--space-2);width:100%;padding:6px 10px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-text);font-family:var(--font-ui);font-size:var(--text-base);text-align:left;cursor:pointer;transition:background var(--duration-base),color var(--duration-base)}.ui-menu-item[data-v-f940771a]:hover:not(:disabled){background:var(--color-surface-sunken)}.ui-menu-item[data-v-f940771a]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.ui-menu-item[data-v-f940771a]:disabled{opacity:.5;cursor:not-allowed}.ui-menu-item.is-active[data-v-f940771a]{background:var(--color-accent-soft);color:var(--color-accent-hover)}.ui-menu-item.is-danger[data-v-f940771a]{color:var(--color-danger)}.ui-menu-item.is-danger[data-v-f940771a]:hover:not(:disabled){background:var(--color-danger-soft)}.ui-menu-item[data-v-f940771a] svg{width:14px;height:14px;flex:none}.ui-menu-item--lg[data-v-f940771a]{min-height:44px;padding:12px 14px;font-size:var(--text-base)}.ui-menu-sep[data-v-f940771a]{height:1px;margin:4px 0;background:var(--color-line)}.ui-tip[data-v-98697f45]{display:contents}.ui-tip__bubble[data-v-98697f45]{position:fixed;z-index:var(--z-tooltip);display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:var(--tip-lines);max-width:280px;padding:4px 8px;border-radius:var(--radius-sm);background:var(--color-text);color:var(--color-bg);font-family:var(--font-ui);font-size:var(--text-xs);line-height:1.35;overflow:hidden;overflow-wrap:anywhere;pointer-events:none;opacity:0;transition:opacity var(--duration-fast) var(--ease-out)}.ui-tip__bubble.positioned[data-v-98697f45]{opacity:1}.se[data-v-1c24e83d]{display:block;margin:0;padding:8px var(--space-2);border-radius:var(--radius-sm);font-family:var(--font-ui);color:var(--color-text);cursor:pointer;position:relative}.se[data-v-1c24e83d]:hover{background:var(--sb-hover, var(--color-surface-sunken));color:var(--color-text)}.se.on[data-v-1c24e83d]{background:var(--color-selected);color:var(--color-text)}.row[data-v-1c24e83d]{display:flex;align-items:center;gap:var(--sb-gap, 6px);min-width:0}.left[data-v-1c24e83d]{display:flex;align-items:center;flex:1;min-width:0}.lead[data-v-1c24e83d]{width:var(--sb-gutter, 16px);flex:none;display:inline-flex;align-items:center;justify-content:center}.unread-dot[data-v-1c24e83d]{width:7px;height:7px;border-radius:var(--radius-full);background:var(--color-accent)}.t[data-v-1c24e83d]{color:inherit;font-size:var(--ui-font-size-sm);font-weight:var(--weight-medium);line-height:var(--leading-tight);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.t-emoji[data-v-1c24e83d]{margin-right:4px;font-size:var(--text-base)}.ts[data-v-1c24e83d]{color:var(--color-text-faint);font-size:var(--text-xs);font-family:var(--font-ui);font-weight:var(--weight-medium);line-height:var(--leading-tight);font-variant-numeric:tabular-nums;text-align:right}.pr[data-v-1c24e83d]{display:inline-flex;align-items:center;gap:var(--space-1);flex:none;padding:1px var(--space-1);border:1px solid var(--color-line);border-radius:var(--radius-sm);background:var(--color-surface-sunken);color:var(--color-text-muted);font-family:var(--font-ui);font-size:var(--text-xs);font-weight:var(--weight-medium);line-height:1;cursor:pointer}.pr[data-v-1c24e83d]:hover{border-color:var(--color-line-strong)}.pr[data-v-1c24e83d]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.pr--open[data-v-1c24e83d],.pr--open[data-v-1c24e83d]:hover{background:var(--color-success-soft);border-color:var(--color-success-bd);color:var(--color-success)}.pr--merged[data-v-1c24e83d],.pr--merged[data-v-1c24e83d]:hover{background:var(--color-done-soft);border-color:var(--color-done-bd);color:var(--color-done)}.act[data-v-1c24e83d]{position:relative;flex:none;display:inline-flex;align-items:center;justify-content:flex-end;min-width:78px}.se.has-gen .act[data-v-1c24e83d]{min-width:104px}.act .btn[data-v-1c24e83d]{position:absolute;top:50%;transform:translateY(-50%);visibility:hidden}.act .kebab[data-v-1c24e83d]{right:0}.act .pin[data-v-1c24e83d]{right:26px}.act .emoji-btn[data-v-1c24e83d]{right:52px}.act .gen-title[data-v-1c24e83d]{right:78px}.act .pin.on[data-v-1c24e83d]{visibility:visible;color:var(--color-accent)}.se:hover .act .btn[data-v-1c24e83d],.act:has(.btn.open) .btn[data-v-1c24e83d]{visibility:visible}.se:hover .act .ts[data-v-1c24e83d],.act:has(.btn.open) .ts[data-v-1c24e83d]{visibility:hidden}.btn.open[data-v-1c24e83d]{color:var(--color-text);background:var(--sb-hover, var(--color-surface-sunken))}.emoji-glyph[data-v-1c24e83d]{font-size:var(--text-base);line-height:1}.emoji-picker[data-v-1c24e83d]{position:fixed;top:0;left:0;z-index:var(--z-dropdown);min-width:172px;padding:var(--space-2);background:var(--color-surface-raised);border:1px solid var(--color-line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.emoji-grid[data-v-1c24e83d]{display:grid;grid-template-columns:repeat(5,28px);gap:var(--space-1)}.emoji-cell[data-v-1c24e83d]{width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;border:none;border-radius:var(--radius-sm);background:transparent;font-size:var(--text-base);line-height:1;cursor:pointer;transition:background var(--duration-fast) var(--ease-out)}.emoji-cell[data-v-1c24e83d]:hover{background:var(--color-surface-sunken)}.emoji-cell[data-v-1c24e83d]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.emoji-cell.on[data-v-1c24e83d]{background:var(--color-accent-soft)}.emoji-clear[data-v-1c24e83d]{margin-top:var(--space-1);width:100%;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-muted);font-family:var(--font-ui);font-size:var(--text-xs);line-height:var(--leading-tight);padding:4px 8px;cursor:pointer}.emoji-clear[data-v-1c24e83d]:hover{background:var(--color-surface-sunken);color:var(--color-text)}.menu[data-v-1c24e83d]{position:fixed;top:0;left:0;z-index:var(--z-dropdown)}.menu-time[data-v-1c24e83d]{padding:6px 10px;color:var(--color-text-faint);font-family:var(--font-mono);font-size:var(--text-xs);cursor:default;user-select:text}.rename-input[data-v-1c24e83d]{flex:1;font-family:var(--font-ui);font-size:var(--text-sm);color:var(--color-text);background:var(--color-bg);border:1px solid var(--color-accent);border-radius:var(--radius-xs);padding:1px 4px;outline:none;min-width:0}.sessions .se[data-v-1c24e83d]{margin:0;border-radius:var(--radius-sm);padding:8px calc(var(--sb-pad-x, 20px) - var(--sb-inset, 12px))}.sessions .se .rename-input[data-v-1c24e83d]{border-radius:var(--radius-sm);font-family:var(--sans)}.sessions .se .btn[data-v-1c24e83d]{border-radius:var(--radius-sm)}.group.dragging[data-v-ec29996e]{opacity:.45}.group-sessions[data-v-ec29996e]{height:auto;overflow:hidden;transition:height var(--duration-base) var(--ease-out)}.group-sessions.collapsed[data-v-ec29996e]{height:0}.gh[data-v-ec29996e]{display:flex;flex-direction:column;margin:0;padding:8px calc(var(--sb-pad-x) - var(--sb-inset));border-radius:var(--radius-sm);font-family:var(--font-ui);font-size:var(--text-xs);color:var(--color-text);user-select:none;position:relative;cursor:grab}.gh[data-v-ec29996e]:active{cursor:grabbing}.gh.renaming[data-v-ec29996e],.gh.renaming[data-v-ec29996e]:active{cursor:auto}.gh[data-v-ec29996e]:hover{background:var(--sb-hover, var(--color-surface-sunken))}.gh-top[data-v-ec29996e]{position:relative;display:flex;align-items:center;gap:var(--sb-gap)}.gh-folder[data-v-ec29996e]{flex:none;color:var(--color-text-muted)}.gh-name[data-v-ec29996e]{font-size:var(--ui-font-size-sm);line-height:var(--leading-tight);color:var(--color-text-muted);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.gh-actions[data-v-ec29996e]{position:absolute;right:0;top:50%;transform:translateY(-50%);display:flex;align-items:center;gap:var(--space-1);padding-left:var(--space-1);border-radius:var(--radius-sm);isolation:isolate;background:var(--color-sidebar-bg);opacity:0;pointer-events:none}.gh-actions[data-v-ec29996e]:after{content:"";position:absolute;inset:0;z-index:0;border-radius:var(--radius-sm);background:transparent}.gh:hover .gh-actions[data-v-ec29996e]:after{background:var(--sb-hover, var(--color-surface-sunken))}.gh-actions[data-v-ec29996e]>*{position:relative;z-index:1}.gh:hover .gh-actions[data-v-ec29996e],.gh:focus-within .gh-actions[data-v-ec29996e],.gh-actions.open[data-v-ec29996e]{opacity:1;pointer-events:auto}.gh-more.open[data-v-ec29996e]{color:var(--color-text);background:var(--color-line)}.group-empty[data-v-ec29996e]{padding:var(--space-1) var(--space-2) var(--space-1) calc(var(--sb-pad-x) - var(--sb-inset) + var(--sb-gutter) + var(--sb-gap));font-size:var(--text-xs);color:var(--color-text-faint);font-family:var(--font-ui)}.show-more[data-v-ec29996e]{display:flex;align-items:center;gap:var(--sb-gap);width:100%;margin:0;padding:8px calc(var(--sb-pad-x) - var(--sb-inset));border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-muted);font-family:var(--font-ui);font-size:var(--text-xs);line-height:var(--leading-tight);text-align:left;cursor:pointer}.show-more[data-v-ec29996e]:hover{background:var(--sb-hover, var(--color-surface-sunken))}.show-more[data-v-ec29996e]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.show-more-lead[data-v-ec29996e]{width:var(--sb-gutter);flex:none}.show-more-label[data-v-ec29996e]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gh-rename[data-v-ec29996e]{flex:1;min-width:0;font-family:var(--font-ui);font-size:var(--text-sm);font-weight:var(--weight-regular);color:var(--color-text);background:var(--color-bg);border:1px solid var(--color-accent);border-radius:var(--radius-xs);padding:2px 5px;outline:none}.gh-rename[data-v-ec29996e]{border-radius:var(--radius-sm);font-family:var(--sans)}.gh-add[data-v-ec29996e]{color:var(--faint)}.gh-add[data-v-ec29996e]:hover{color:var(--dim)}.ui-kbd[data-v-32292ed8]{display:inline-flex;align-items:center;gap:3px;flex:none}.ui-kbd__key[data-v-32292ed8]{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border:1px solid var(--color-line);border-bottom-width:2px;border-radius:var(--radius-xs);background:var(--color-surface-sunken);color:var(--color-text-muted);font-family:var(--font-ui);font-size:11px;line-height:1}.kimi-mascot[data-v-6634dad2]{display:inline-flex;align-items:center;justify-content:center;flex:none;width:24px;height:24px;border-radius:var(--radius-full);background:var(--color-accent-soft);color:var(--color-accent);user-select:none}.kimi-mascot--pulse[data-v-6634dad2]{animation:kimi-mascot-pulse-6634dad2 2.6s var(--ease-out) infinite}@keyframes kimi-mascot-pulse-6634dad2{0%,to{box-shadow:0 0 color-mix(in srgb,var(--color-accent) 0%,transparent)}50%{box-shadow:0 0 0 3px color-mix(in srgb,var(--color-accent) 25%,transparent)}}@media(prefers-reduced-motion:reduce){.kimi-mascot--pulse[data-v-6634dad2]{animation:none}}.ui-pill[data-v-317ace1a]{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px;border:1px solid transparent;border-radius:var(--radius-md);background:transparent;color:var(--color-text-muted);font-family:var(--font-ui);font-size:var(--text-sm);font-weight:var(--weight-medium);line-height:1;white-space:nowrap;cursor:default;transition:background var(--duration-base) var(--ease-out),color var(--duration-base) var(--ease-out)}button.ui-pill[data-v-317ace1a]{cursor:pointer}button.ui-pill[data-v-317ace1a]:hover:not(:disabled){background:var(--color-surface-sunken);color:var(--color-text)}button.ui-pill[data-v-317ace1a]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}button.ui-pill[data-v-317ace1a]:disabled{opacity:.5;cursor:not-allowed}.ui-pill.is-active[data-v-317ace1a]{background:var(--color-accent-soft);color:var(--color-accent)}.ui-pill[data-v-317ace1a] svg{width:var(--p-ic-sm);height:var(--p-ic-sm);flex:none;color:var(--color-text-faint)}.side[data-v-7e5a3931]{background:var(--color-sidebar-bg);display:flex;flex-direction:row;justify-content:flex-end;overflow:hidden;min-width:0;height:100%;transition:width .28s cubic-bezier(.4,0,.2,1),visibility .28s;--sb-inset: var(--space-3);--sb-pad-x: var(--space-5);--sb-gutter: 16px;--sb-gap: var(--space-2);--sb-hover: var(--color-hover)}.side.no-anim[data-v-7e5a3931]{transition:none}.side.collapsed[data-v-7e5a3931]{visibility:hidden}.col[data-v-7e5a3931]{flex:none;min-width:0;display:flex;flex-direction:column;min-height:0;width:100%;box-sizing:border-box;border-right:1px solid var(--line);container-type:inline-size;container-name:sidebar-col}.ch[data-v-7e5a3931]{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:var(--space-3);min-height:calc(26px + 2 * var(--space-3));width:100%;box-sizing:border-box}.side.macos-desktop .ch[data-v-7e5a3931]{padding-left:80px;-webkit-app-region:drag}.side.macos-desktop .ch-brand[data-v-7e5a3931]{display:none}.ch-logo[data-v-7e5a3931]{height:22px;width:32px;flex:none;display:block;cursor:pointer;user-select:none;touch-action:none;transition:transform .18s ease}.ch-logo[data-v-7e5a3931]:hover{transform:scale(1.08)}.ch-logo.is-dev[data-v-7e5a3931]{--logo: var(--color-logo-dev)}.ch-brand[data-v-7e5a3931]{display:flex;align-items:center;gap:8px;min-width:0;flex:1;user-select:none;touch-action:none}.ch-name[data-v-7e5a3931]{font-size:var(--ui-font-size);font-weight:500;line-height:22px;color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ch-backend[data-v-7e5a3931]{flex:none;min-width:0}.ch-backend-kind[data-v-7e5a3931]{font-family:var(--mono);font-weight:500;color:var(--color-text-muted)}.ch-backend-kind.is-v2[data-v-7e5a3931]{color:var(--color-accent)}.ch-backend-ep[data-v-7e5a3931]{font-family:var(--mono);color:var(--color-text-faint);overflow:hidden;text-overflow:ellipsis}@container sidebar-col (max-width: 320px){.ch-backend-ep[data-v-7e5a3931]{display:none}}@container sidebar-col (max-width: 250px){.ch-name[data-v-7e5a3931]{display:none}}.btn-wrap[data-v-7e5a3931]{display:flex;align-items:center;gap:8px;padding:0 var(--sb-inset)}.btn-new-chat[data-v-7e5a3931]{display:flex;align-items:center;gap:12px;flex:1;min-width:0;padding:8px calc(var(--sb-pad-x) - var(--sb-inset));border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-text);font-family:var(--font-ui);font-size:var(--ui-font-size-sm);line-height:var(--leading-tight);cursor:pointer;text-align:left}.btn-new-chat[data-v-7e5a3931]:hover{background:var(--sb-hover)}.btn-new-chat[data-v-7e5a3931]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.btn-new-chat svg[data-v-7e5a3931]{flex:none}.btn-new-chat span[data-v-7e5a3931]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.search-wrap[data-v-7e5a3931]{padding:0 var(--sb-inset);position:relative;z-index:1;background:var(--color-sidebar-bg);border-bottom:1px solid transparent;transition:border-color var(--duration-base) var(--ease-out),box-shadow var(--duration-base) var(--ease-out)}.search-wrap--scrolled[data-v-7e5a3931]{border-bottom-color:var(--line);box-shadow:var(--shadow-sm)}.search[data-v-7e5a3931]{display:flex;align-items:center;gap:12px;width:100%;margin:0;padding:8px calc(var(--sb-pad-x) - var(--sb-inset));border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-text);font:inherit;text-align:left;cursor:pointer}.search[data-v-7e5a3931]:hover{background:var(--sb-hover)}.search[data-v-7e5a3931]:focus-visible{background:var(--sb-hover);color:var(--color-text);outline:2px solid var(--color-accent-bd);outline-offset:-2px}.search-icon[data-v-7e5a3931]{flex:none}.search-input[data-v-7e5a3931]{flex:1;min-width:0;color:var(--color-text);font-family:var(--font-ui);font-size:var(--ui-font-size-sm);line-height:var(--leading-tight);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sessions[data-v-7e5a3931]{flex:1;overflow-y:auto;padding:var(--space-3) var(--sb-inset);min-height:0}.sessions[data-v-7e5a3931]::-webkit-scrollbar{width:4px}.sessions[data-v-7e5a3931]::-webkit-scrollbar-track{background:transparent}.sessions[data-v-7e5a3931]::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--color-text) 12%,transparent);border-radius:var(--radius-full)}.sessions[data-v-7e5a3931]::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--color-text) 25%,transparent)}.side-footer[data-v-7e5a3931]{display:flex;align-items:center;gap:8px;flex:none;padding:var(--space-2) var(--sb-inset);border-top:1px solid var(--line)}.btn-settings[data-v-7e5a3931]{display:flex;align-items:center;gap:12px;flex:1;min-width:0;padding:8px calc(var(--sb-pad-x) - var(--sb-inset));border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-text);font-family:var(--font-ui);font-size:var(--ui-font-size-sm);line-height:var(--leading-tight);cursor:pointer;text-align:left}.btn-settings[data-v-7e5a3931]:hover{background:var(--sb-hover)}.btn-settings[data-v-7e5a3931]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.btn-settings svg[data-v-7e5a3931]{flex:none}.btn-settings span[data-v-7e5a3931]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.side-mascot[data-v-7e5a3931]{flex:none}.side-section-label[data-v-7e5a3931]{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 var(--space-3) var(--space-1) var(--space-2);font-family:var(--font-ui);font-size:var(--text-xs);font-weight:var(--weight-regular);text-transform:uppercase;color:var(--faint);user-select:none}.side-section-title[data-v-7e5a3931]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.side-section-toggle[data-v-7e5a3931]{color:var(--faint);opacity:0;transition:opacity var(--duration-base) var(--ease-out)}.side-section-label:hover .side-section-toggle[data-v-7e5a3931],.side-section-label:focus-within .side-section-toggle[data-v-7e5a3931]{opacity:1}.side-section-toggle[data-v-7e5a3931]:hover{color:var(--dim)}.side-section-toggle svg[data-v-7e5a3931]{width:13px;height:13px}.side-section-actions[data-v-7e5a3931]{display:flex;align-items:center;gap:2px}.ws-drop-target.drop-before[data-v-7e5a3931]{box-shadow:inset 0 2px 0 var(--color-accent)}.ws-drop-target.drop-after[data-v-7e5a3931]{box-shadow:inset 0 -2px 0 var(--color-accent)}.empty[data-v-7e5a3931]{padding:var(--space-6) var(--space-3);text-align:center;color:var(--faint);font-size:calc(var(--ui-font-size) - 3px);line-height:1.6}.ws-menu[data-v-7e5a3931],.gh-menu[data-v-7e5a3931],.section-menu[data-v-7e5a3931],.backend-menu[data-v-7e5a3931]{position:fixed;top:0;left:0;z-index:var(--z-dropdown)}.section-menu-check[data-v-7e5a3931]{display:inline-flex;flex:none;width:14px}.backend-menu-name[data-v-7e5a3931]{font-family:var(--mono);font-weight:500}.backend-menu-url[data-v-7e5a3931]{margin-left:8px;font-family:var(--mono);color:var(--color-text-muted)}.rh[data-v-48fd0a6d]{width:4px;flex:none;cursor:col-resize;position:relative;align-self:stretch;background:transparent;touch-action:none;margin:0 -2px;z-index:var(--z-dropdown)}.rh-bar[data-v-48fd0a6d]{position:absolute;inset:0;background:transparent;transition:background .12s}.rh:hover .rh-bar[data-v-48fd0a6d],.rh.dragging .rh-bar[data-v-48fd0a6d]{background:var(--color-accent)}.kw-dot[data-v-e36198e5]{width:7px;height:7px;border-radius:var(--radius-full);background:var(--color-text-faint);flex:none}.kw-dot--ok[data-v-e36198e5]{background:var(--color-success)}.kw-dot--error[data-v-e36198e5]{background:var(--color-danger)}.kw-dot--suspended[data-v-e36198e5]{background:var(--color-warning)}.kw-dot--running[data-v-e36198e5]{background:var(--color-accent);animation:kw-dot-pulse-e36198e5 1.4s var(--ease-out) infinite}@keyframes kw-dot-pulse-e36198e5{0%{box-shadow:0 0 color-mix(in srgb,var(--color-accent) 40%,transparent)}to{box-shadow:0 0 0 6px transparent}}.box[data-v-fef8aad2]{margin:0;background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-md);overflow:hidden;transition:border-color var(--duration-base) var(--ease-out)}.box.err[data-v-fef8aad2]{border-color:color-mix(in srgb,var(--color-danger) 25%,var(--bg))}.box.stacked[data-v-fef8aad2]{border:none;border-radius:0}.box.stacked .bh[data-v-fef8aad2]{border-radius:0}.box.stack-middle[data-v-fef8aad2],.box.stack-last[data-v-fef8aad2]{border-top:1px solid var(--color-line)}.bh[data-v-fef8aad2]{display:flex;align-items:center;gap:8px;min-height:30px;padding:0 11px;cursor:pointer;font:var(--text-sm) var(--font-mono);color:var(--color-text)}.box.open .bh[data-v-fef8aad2],.bh[data-v-fef8aad2]:hover{background:var(--color-surface-sunken)}.box.err .bh[data-v-fef8aad2]{background:color-mix(in srgb,var(--color-danger) 4%,var(--bg))}.box.err .bh[data-v-fef8aad2]:hover{background:color-mix(in srgb,var(--color-danger) 7%,var(--bg))}.gl[data-v-fef8aad2]{display:inline-flex;align-items:center;color:var(--color-text-faint);flex:none}.bh-text[data-v-fef8aad2]{display:flex;align-items:baseline;gap:inherit;flex:1;min-width:0}.a[data-v-fef8aad2]{color:var(--color-text);font-weight:var(--weight-medium);flex:none}.p[data-v-fef8aad2]{color:var(--color-text-muted);font-size:var(--text-xs);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.rt[data-v-fef8aad2]{margin-left:auto;color:var(--color-text-muted);font-size:var(--text-xs);display:flex;align-items:center;gap:6px;flex:none}.tm[data-v-fef8aad2]{color:var(--color-text-faint)}.chip[data-v-fef8aad2-s]{color:var(--color-text-muted);font-family:var(--font-ui);font-size:var(--text-xs);flex:none}.status[data-v-fef8aad2]{display:inline-flex;align-items:center;flex:none}.status.ok[data-v-fef8aad2]{color:var(--color-success)}.status.error[data-v-fef8aad2]{color:var(--color-danger)}.bb[data-v-fef8aad2]{display:grid;grid-template-rows:minmax(0,0fr);overflow:hidden;transition:grid-template-rows var(--duration-base) var(--ease-out)}.bb.open[data-v-fef8aad2]{grid-template-rows:minmax(0,1fr)}.bb-pad[data-v-fef8aad2]{min-height:0;overflow:hidden;padding:var(--space-2) var(--space-3) var(--space-3);background:var(--color-surface-sunken);border-top:1px solid var(--color-line);color:var(--color-text);font:var(--text-sm)/1.65 var(--font-mono);white-space:pre-wrap;word-break:break-word}.box.mob[data-v-fef8aad2]{margin:0}.at-open[data-v-72115ae1]{flex:none;background:none;border:1px solid var(--color-line);border-radius:var(--radius-xs);color:var(--color-text-muted);font:var(--text-xs) var(--font-ui);padding:1px 7px;cursor:pointer}.at-open[data-v-72115ae1]:hover{color:var(--color-text);background:var(--color-surface-sunken)}.at-type[data-v-72115ae1]{font:var(--text-xs) var(--font-mono);color:var(--color-text-muted);margin-bottom:6px}.at-type-sep[data-v-72115ae1]{margin:0 6px;color:var(--color-text-faint)}.at-task[data-v-72115ae1]{color:var(--color-text);white-space:pre-wrap;word-break:break-word}.at-task+.bb-code[data-v-72115ae1]{margin-top:10px}.bb-code[data-v-72115ae1]{padding:11px 13px;border:1px solid var(--color-line);border-radius:var(--radius-md)}.chip[data-v-a9a0f259]{color:var(--color-text-muted);font-size:var(--text-xs);flex:none}.au-dismissed[data-v-a9a0f259]{color:var(--color-text-muted);font:italic var(--text-sm)/var(--leading-normal) var(--font-ui)}.au-list[data-v-a9a0f259]{display:flex;flex-direction:column;font:var(--text-sm)/var(--leading-normal) var(--font-ui)}.au-block[data-v-a9a0f259]{padding:4px 0}.au-block+.au-block[data-v-a9a0f259]{margin-top:4px;padding-top:10px;border-top:1px dashed var(--color-line)}.au-q[data-v-a9a0f259]{display:flex;align-items:baseline;gap:8px;margin-bottom:6px}.au-hdr[data-v-a9a0f259]{font:var(--text-xs) var(--font-mono);color:var(--color-text-muted);background:var(--color-surface-raised);border:1px solid var(--color-line);border-radius:var(--radius-sm);padding:0 6px;flex:none}.au-qtext[data-v-a9a0f259]{color:var(--color-text);font-weight:var(--weight-medium)}.au-opts[data-v-a9a0f259]{display:flex;flex-direction:column;gap:4px}.au-opt[data-v-a9a0f259]{display:flex;align-items:center;gap:8px;padding:5px 10px;border:1px solid var(--color-line);border-radius:var(--radius-md);color:var(--color-text-faint)}.au-opt.sel[data-v-a9a0f259]{border-color:var(--color-accent-bd);background:var(--color-accent-soft);color:var(--color-text)}.au-glyph[data-v-a9a0f259]{font:var(--text-base) var(--font-mono);color:var(--color-text-faint);width:14px;text-align:center;flex:none}.au-opt.sel .au-glyph[data-v-a9a0f259]{color:var(--color-accent-hover)}.au-label[data-v-a9a0f259]{color:inherit}.au-desc[data-v-a9a0f259]{color:var(--color-text-faint);font-size:var(--text-xs);margin-left:2px}.au-opt.sel .au-desc[data-v-a9a0f259]{color:var(--color-text-muted)}.au-raw[data-v-a9a0f259]{padding:11px 13px;border:1px solid var(--color-line);border-radius:var(--radius-md);background:var(--color-surface-raised);font:var(--text-sm)/1.65 var(--font-mono);white-space:pre-wrap;word-break:break-word}.tool-output-block[data-v-262bbea0]{margin-top:var(--space-2);padding:var(--space-3);border:1px solid var(--color-line);border-radius:var(--radius-md);background:var(--color-surface-raised)}.tool-output-block.scroll[data-v-262bbea0]{max-height:calc(var(--tool-output-visible-lines) * 1lh);overflow-y:auto;scrollbar-gutter:stable}.bb-empty[data-v-262bbea0]{color:var(--color-text-muted);font-style:italic}.chip[data-v-74e1da99]{color:var(--color-text-muted);font-size:var(--text-xs);flex:none}.bb-summary[data-v-74e1da99],.bb-summary[data-v-aa4edcb0]{color:var(--color-text);border-bottom:1px dashed var(--color-line);padding-bottom:6px;margin-bottom:6px;word-break:break-all}.chip[data-v-aa4edcb0]{color:var(--color-text-muted);font-size:var(--text-xs);flex:none}.media-tool[data-v-04192531]{display:inline-flex;flex-direction:column;gap:6px;max-width:320px}.media-title[data-v-04192531]{font-size:var(--text-xs);color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.media-image-button[data-v-04192531]{padding:0;border:none;background:transparent;cursor:pointer;border-radius:var(--radius-md);overflow:hidden}.media-image[data-v-04192531]{display:block;max-width:100%;border-radius:var(--radius-md);background:var(--media-alpha-canvas)}.media-video[data-v-04192531],.media-audio[data-v-04192531]{max-width:100%;border-radius:var(--radius-md)}.media-video-button[data-v-04192531]{position:relative;display:inline-flex;padding:0;border:none;background:transparent;cursor:pointer;border-radius:var(--radius-md);overflow:hidden}.media-video-button .media-video[data-v-04192531]{display:block;max-width:320px}.media-play-badge[data-v-04192531]{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--color-surface-raised);background:#0d111773;opacity:.9;transition:opacity .12s ease;pointer-events:none}.media-video-button:hover .media-play-badge[data-v-04192531]{opacity:.7}.chip[data-v-c851b016]{color:var(--color-text-muted);font-size:var(--text-xs);flex:none}.bb-summary[data-v-c851b016]{color:var(--color-text);border-bottom:1px dashed var(--color-line);padding-bottom:6px;margin-bottom:6px;word-break:break-all}.plan-path[data-v-c851b016]{display:block;width:100%;margin-bottom:var(--space-2);padding:0;border:none;background:none;color:var(--color-accent);font:var(--text-xs) var(--font-mono);text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.plan-path[data-v-c851b016]:hover{color:var(--color-accent-hover);text-decoration:underline}.plan-body[data-v-c851b016]{font:var(--text-base)/var(--leading-normal) var(--font-ui);white-space:normal;max-height:50vh;overflow-y:auto}.plan-review[data-v-c851b016]{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;margin-top:var(--space-2);font:var(--text-xs) var(--font-ui)}.plan-state[data-v-c851b016]{color:var(--color-text-muted);font-weight:var(--weight-medium)}.plan-option[data-v-c851b016]{color:var(--color-accent)}.plan-feedback[data-v-c851b016]{color:var(--color-text-muted)}.plan-loading[data-v-c851b016],.plan-empty[data-v-c851b016]{margin-top:var(--space-2);color:var(--color-text-muted);font:var(--text-xs) var(--font-ui);font-style:italic}.swarm-card[data-v-4b58e128]{margin:0;background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-md);overflow:hidden;transition:border-color var(--duration-base) var(--ease-out)}.swarm-card.err[data-v-4b58e128]{border-color:color-mix(in srgb,var(--color-danger) 25%,var(--bg))}.head[data-v-4b58e128]{display:flex;align-items:center;gap:8px;width:100%;min-height:32px;padding:0 11px;border:none;background:transparent;color:var(--color-text-muted);font-family:var(--font-ui);font-size:var(--text-sm);text-align:left;cursor:pointer;user-select:none}.head[data-v-4b58e128]:hover,.swarm-card.open>.head[data-v-4b58e128]{background:var(--color-surface-sunken);color:var(--color-text)}.swarm-card.err>.head[data-v-4b58e128]{background:color-mix(in srgb,var(--color-danger) 4%,var(--bg))}.swarm-card.err>.head[data-v-4b58e128]:hover{background:color-mix(in srgb,var(--color-danger) 7%,var(--bg))}.head[data-v-4b58e128]:focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--color-accent-soft)}.ic[data-v-4b58e128]{color:var(--color-text-faint);flex:none}.title[data-v-4b58e128]{font-weight:var(--weight-medium);color:var(--color-text);flex:none}.meta[data-v-4b58e128]{color:var(--color-text-faint);flex:none}.sum-txt[data-v-4b58e128]{color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.rt[data-v-4b58e128]{margin-left:auto;display:flex;align-items:center;gap:8px;flex:none;color:var(--color-text-muted);font-size:var(--text-xs)}.status[data-v-4b58e128]{display:inline-flex;align-items:center;flex:none}.status[data-v-4b58e128]:has(>svg){color:var(--color-success)}.err .status[data-v-4b58e128]:has(>svg){color:var(--color-danger)}.chip[data-v-4b58e128]{color:var(--color-text-muted);font-family:var(--font-mono)}.tm[data-v-4b58e128]{color:var(--color-text-faint);font-family:var(--font-mono)}.car[data-v-4b58e128]{margin-left:2px;color:var(--color-text-faint);flex:none}.body[data-v-4b58e128]{border-top:1px solid var(--color-line);background:var(--color-surface-sunken)}.overview[data-v-4b58e128]{padding:9px 11px 8px;border-bottom:1px solid color-mix(in srgb,var(--color-line) 70%,transparent)}.overview-line[data-v-4b58e128]{display:flex;align-items:baseline;gap:8px}.big[data-v-4b58e128]{font-family:var(--font-mono);font-weight:var(--weight-medium);color:var(--color-text);font-size:15px}.lbl[data-v-4b58e128]{color:var(--color-text-muted);font-size:var(--text-xs)}.seg[data-v-4b58e128]{display:flex;height:5px;border-radius:var(--radius-full);overflow:hidden;margin:8px 0 4px;gap:2px}.seg>span[data-v-4b58e128]{height:100%;border-radius:var(--radius-full);min-width:3px}.s-ok[data-v-4b58e128]{background:var(--color-success)}.s-run[data-v-4b58e128]{background:var(--color-accent)}.s-warn[data-v-4b58e128]{background:var(--color-warning)}.s-fail[data-v-4b58e128]{background:var(--color-danger)}.s-queue[data-v-4b58e128]{background:var(--color-line)}.legend[data-v-4b58e128]{display:flex;flex-wrap:wrap;gap:10px}.legend span[data-v-4b58e128]{display:inline-flex;align-items:center;gap:5px;font:var(--text-xs) var(--font-mono);color:var(--color-text-muted)}.lg-dot[data-v-4b58e128]{width:6px;height:6px;border-radius:var(--radius-full)}.member[data-v-4b58e128]{border-bottom:1px solid color-mix(in srgb,var(--color-line) 70%,transparent)}.member[data-v-4b58e128]:last-child{border-bottom:none}.member-head[data-v-4b58e128]{display:flex;align-items:center;gap:8px;width:100%;min-height:32px;padding:0 11px;border:none;background:transparent;color:var(--color-text);font-family:var(--font-ui);font-size:var(--text-sm);text-align:left;cursor:pointer;user-select:none}.member-head[data-v-4b58e128]:hover,.member.open .member-head[data-v-4b58e128]{background:color-mix(in srgb,var(--color-surface) 55%,var(--bg))}.member-head[data-v-4b58e128]:focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--color-accent-soft)}.row-dot[data-v-4b58e128]{flex:none}.mname[data-v-4b58e128]{flex:none;min-width:0;max-width:46%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:var(--weight-medium);color:var(--color-text)}.mact[data-v-4b58e128]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--color-text-muted);font-size:var(--text-xs)}.mphase[data-v-4b58e128]{flex:none;margin-left:auto;font:var(--text-xs) var(--font-mono);color:var(--color-text-faint)}.phase-completed .mphase[data-v-4b58e128]{color:var(--color-success)}.phase-failed .mphase[data-v-4b58e128]{color:var(--color-danger)}.phase-working .mphase[data-v-4b58e128]{color:var(--color-accent)}.phase-suspended .mphase[data-v-4b58e128]{color:var(--color-warning)}.mcar[data-v-4b58e128]{margin-left:4px;color:var(--color-text-faint);flex:none}.member-body[data-v-4b58e128]{padding:4px 11px 10px 31px;color:var(--color-text-muted);font-size:var(--text-xs);line-height:1.65;white-space:pre-wrap;word-break:break-word}.waiting[data-v-4b58e128]{padding:6px 11px 10px;color:var(--color-text-muted);font-size:var(--text-xs)}.fallback-output[data-v-4b58e128]{padding:9px 11px 10px;color:var(--color-text);font:var(--text-xs)/1.6 var(--font-mono);white-space:pre-wrap;word-break:break-word}.tool-group[data-v-37eb334f]{display:flex;flex-direction:column;background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-md);overflow:hidden}.tool-group-head[data-v-37eb334f]{display:flex;align-items:center;gap:8px;width:100%;height:32px;padding:0 11px;border:none;background:transparent;color:var(--color-text-muted);font-family:var(--font-ui);font-size:var(--text-sm);text-align:left;cursor:pointer;user-select:none}.tool-group-head[data-v-37eb334f]:hover{background:var(--color-surface-sunken);color:var(--color-text)}.tool-group-head[data-v-37eb334f]:focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--color-accent-soft)}.tg-ic[data-v-37eb334f]{color:var(--color-text-faint);flex:none}.tg-title[data-v-37eb334f]{font-weight:var(--weight-medium);color:var(--color-text)}.tg-meta[data-v-37eb334f]{color:var(--color-text-faint)}.tg-car[data-v-37eb334f]{margin-left:auto;color:var(--color-text-faint);flex:none;transition:transform var(--duration-base) var(--ease-out)}.tool-group.open .tg-car[data-v-37eb334f]{transform:rotate(90deg)}.tool-group-body[data-v-37eb334f]{display:grid;grid-template-rows:minmax(0,0fr);overflow:hidden;transition:grid-template-rows var(--duration-base) var(--ease-out)}.tool-group-body.open[data-v-37eb334f]{grid-template-rows:minmax(0,1fr)}.tool-group-body-inner[data-v-37eb334f]{min-height:0;overflow:hidden;display:flex;flex-direction:column}.md[data-v-9ccdd7fa]{font:400 15px/1.6 var(--font-ui);color:var(--color-text);word-break:break-word}.md[data-v-9ccdd7fa] .markdown-renderer{font:400 15px/1.6 var(--font-ui);color:var(--color-text)}.md[data-v-9ccdd7fa] .markstream-vue,.md[data-v-9ccdd7fa] .markdown-renderer{--code-bg: var(--color-surface-sunken);--code-fg: var(--color-text);--code-border: var(--color-line);--code-header-bg: var(--color-surface);--code-action-fg: var(--color-text-muted);--code-action-hover-fg: var(--color-accent);--markstream-code-fallback-bg: var(--color-surface-sunken);--markstream-code-fallback-fg: var(--color-text);--markstream-code-border-color: var(--color-line);--inline-code-bg: var(--color-surface-sunken);--inline-code-fg: var(--color-fg);--inline-code-border: transparent}.md[data-v-9ccdd7fa] .md-file-link{appearance:none;display:inline;border:0;padding:0;background:transparent;color:var(--color-accent-hover);font:inherit;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px;cursor:pointer}.md[data-v-9ccdd7fa] .md-file-link:hover{color:var(--color-accent)}.md[data-v-9ccdd7fa] .markdown-renderer p,.md[data-v-9ccdd7fa] .markdown-renderer li,.md[data-v-9ccdd7fa] .markdown-renderer blockquote,.md[data-v-9ccdd7fa] .markdown-renderer td,.md[data-v-9ccdd7fa] .markdown-renderer th{font-size:var(--content-font-size)}.md[data-v-9ccdd7fa] .markdown-renderer img{background:var(--media-alpha-canvas)}.md[data-v-9ccdd7fa] strong{color:color-mix(in srgb,var(--color-text) 86%,var(--color-text-muted));font-weight:var(--weight-semibold)}.md[data-v-9ccdd7fa] h1,.md[data-v-9ccdd7fa] h2,.md[data-v-9ccdd7fa] h3,.md[data-v-9ccdd7fa] h4{color:var(--color-text);font-optical-sizing:auto;font-weight:var(--weight-semibold);margin:.85em 0 .35em;line-height:var(--leading-tight)}.md[data-v-9ccdd7fa] h1{font-size:max(var(--text-xl),calc(var(--content-font-size) + 3px));border-bottom:1px solid var(--color-line);padding-bottom:4px}.md[data-v-9ccdd7fa] h2{font-size:max(var(--text-lg),calc(var(--content-font-size) + 2px))}.md[data-v-9ccdd7fa] h3{font-size:max(var(--text-lg),calc(var(--content-font-size) + 1px))}.md[data-v-9ccdd7fa] h4{font-size:max(var(--text-base),calc(var(--content-font-size) + 1px));color:var(--color-text-muted)}.md[data-v-9ccdd7fa] p{margin:.8rem 0}.md[data-v-9ccdd7fa] .node-slot+.node-slot{margin-top:.8rem}.md[data-v-9ccdd7fa] ul,.md[data-v-9ccdd7fa] ol{padding-left:1.4em;margin:.6em 0}.md[data-v-9ccdd7fa] li{margin:.3em 0}.md[data-v-9ccdd7fa] :not(pre)>code,.md[data-v-9ccdd7fa] .inline-code{font:.9em var(--font-mono);background:var(--color-surface-sunken);color:var(--color-fg);padding:0 4px;border-radius:var(--radius-sm)}.md[data-v-9ccdd7fa] strong code,.md[data-v-9ccdd7fa] strong .inline-code,.md[data-v-9ccdd7fa] b code,.md[data-v-9ccdd7fa] b .inline-code{font-weight:var(--weight-semibold)}.md[data-v-9ccdd7fa] .code-block-container{margin:.6em 0;border:1px solid var(--color-line);border-radius:var(--radius-md);background:var(--color-surface-sunken);box-shadow:var(--shadow-xs);overflow:hidden;--vscode-editor-font-size: var(--text-sm);--vscode-editor-line-height: calc(var(--text-sm) * 1.65)}.md[data-v-9ccdd7fa] .code-block-header{background:var(--color-surface);border-bottom:1px solid var(--color-line);padding:4px 12px;color:var(--color-text-muted);font:var(--text-xs) var(--font-mono)}.md[data-v-9ccdd7fa] .code-block-header *{color:var(--color-text-muted);font:var(--text-xs) var(--font-mono)}.md[data-v-9ccdd7fa] .code-block-header .code-header-main{font-family:var(--font-ui)}.md[data-v-9ccdd7fa] .code-block-header .code-action-btn{color:var(--color-text-muted);background:transparent;border:none;border-radius:var(--radius-sm);cursor:pointer;transition:background var(--duration-base) var(--ease-out),color var(--duration-base) var(--ease-out)}.md[data-v-9ccdd7fa] .code-block-header .code-action-btn:hover{background:var(--color-surface-sunken);color:var(--color-text)}.md[data-v-9ccdd7fa] .code-block-header .code-action-btn:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.md[data-v-9ccdd7fa] .code-block-header .code-action-btn *{pointer-events:none}.md[data-v-9ccdd7fa] .code-block-shell-content,.md[data-v-9ccdd7fa] .markstream-pre{background:var(--color-surface-sunken)}.md[data-v-9ccdd7fa] .code-editor-container{line-height:1.65;--diffs-gap-block: var(--space-3)}.md[data-v-9ccdd7fa] .code-editor-container diffs-container{--diffs-line-height: 1.65em}.md[data-v-9ccdd7fa] .code-pre-fallback>.markstream-pre__line-numbers{display:none}.md[data-v-9ccdd7fa] .code-block-container .code-pre-fallback{padding-left:1ch;line-height:1.65!important}.md[data-v-9ccdd7fa] .code-block-container pre:not(.code-pre-fallback):not(.markstream-pre--line-numbers),.md[data-v-9ccdd7fa] .markstream-pre:not(.code-pre-fallback):not(.markstream-pre--line-numbers){margin:0;padding:12px 14px;overflow-x:auto;font:var(--text-sm)/1.65 var(--font-mono)}.md[data-v-9ccdd7fa] .code-block-container pre code{font:inherit;color:var(--color-text);background:none;border:none;padding:0;border-radius:0}.md[data-v-9ccdd7fa] .markstream-pre,.md[data-v-9ccdd7fa] .code-pre-fallback,.md[data-v-9ccdd7fa] .code-block-shell-content pre:not(.shiki),.md[data-v-9ccdd7fa] .code-block-shell-content pre:not(.shiki) code{color:var(--color-text)}.md[data-v-9ccdd7fa] a{color:var(--color-accent);text-decoration:none}.md[data-v-9ccdd7fa] a:hover{text-decoration:underline}.md[data-v-9ccdd7fa] .katex-display{overflow-x:auto;overflow-y:hidden;padding:2px 0 6px;margin:.6em 0}.md[data-v-9ccdd7fa] blockquote{margin:.5em 0;padding:4px 12px;border-left:3px solid var(--color-line);color:var(--color-text-muted)}.md[data-v-9ccdd7fa] hr{border:none;border-top:1px solid var(--color-line);margin:.8em 0}.md[data-v-9ccdd7fa] table:not(.table-node){border-collapse:collapse;font-size:var(--text-lg);margin:.5em 0}.md[data-v-9ccdd7fa] table:not(.table-node) th,.md[data-v-9ccdd7fa] table:not(.table-node) td{border:1px solid var(--color-line);padding:4px 10px;text-align:left}.md[data-v-9ccdd7fa] table:not(.table-node) th{background:var(--color-surface);color:var(--color-text);font-weight:var(--weight-medium)}.md[data-v-9ccdd7fa] .table-node-wrapper{width:100%;max-width:100%!important;min-width:0;overflow-x:auto!important}.md[data-v-9ccdd7fa] .table-node{--table-border: var(--color-line);--table-header-bg: var(--color-surface);font-size:var(--text-lg);margin:.5em 0;width:max-content!important;min-width:100%;max-width:none!important;table-layout:auto!important}.md[data-v-9ccdd7fa] .table-node th,.md[data-v-9ccdd7fa] .table-node td{text-align:left;vertical-align:top;max-width:var(--p-table-cell-max)}.md[data-v-9ccdd7fa] .table-node .text-node{display:inline-block;max-width:var(--p-table-cell-max);vertical-align:top}.md[data-v-9ccdd7fa] .table-node tbody tr:hover{background-color:transparent!important}.diff-wrap[data-v-9ccdd7fa]{margin:.6em 0;border:1px solid var(--color-line);border-radius:var(--radius-md);background:var(--color-surface-sunken);box-shadow:var(--shadow-xs);overflow:hidden}.diff-bar[data-v-9ccdd7fa]{display:flex;align-items:center;gap:6px;padding:4px 12px;background:var(--color-surface);border-bottom:1px solid var(--color-line);color:var(--color-text-muted);font:var(--text-xs) var(--font-mono)}.diff-lang[data-v-9ccdd7fa]{margin-right:auto}.diff-copy[data-v-9ccdd7fa]{display:inline-flex;align-items:center;justify-content:center;color:var(--color-text-muted);background:transparent;border:none;border-radius:var(--radius-sm);cursor:pointer;padding:2px 6px;transition:background var(--duration-base) var(--ease-out),color var(--duration-base) var(--ease-out)}.diff-copy[data-v-9ccdd7fa]:hover{background:var(--color-surface-sunken);color:var(--color-text)}.diff-copy[data-v-9ccdd7fa]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.diff-pre[data-v-9ccdd7fa]{margin:0;padding:12px 0;overflow-x:auto;background:var(--color-surface-sunken)}.diff-pre code[data-v-9ccdd7fa]{display:block;width:max-content;min-width:100%;font:var(--text-sm)/1.65 var(--font-mono);color:var(--color-text)}.diff-line[data-v-9ccdd7fa]{display:block;width:100%;padding:0 14px}.diff-sign[data-v-9ccdd7fa]{display:inline-block;width:14px;text-align:center;color:var(--color-text-muted);user-select:none}.diff-text[data-v-9ccdd7fa]{color:var(--color-text)}.diff-add[data-v-9ccdd7fa]{background:var(--color-success-soft);box-shadow:inset 2px 0 color-mix(in srgb,var(--color-success) 55%,transparent)}.diff-add .diff-sign[data-v-9ccdd7fa]{color:var(--color-success)}.diff-del[data-v-9ccdd7fa]{background:var(--color-danger-soft);box-shadow:inset 2px 0 color-mix(in srgb,var(--color-danger) 55%,transparent)}.diff-del .diff-sign[data-v-9ccdd7fa]{color:var(--color-danger)}.diff-hunk[data-v-9ccdd7fa]{background:var(--color-surface)}.diff-hunk .diff-text[data-v-9ccdd7fa]{color:var(--color-text-muted)}.md[data-v-9ccdd7fa],.md .markdown-renderer[data-v-9ccdd7fa]{font-family:var(--sans)}.md .code-block-container[data-v-9ccdd7fa],.md .diff-wrap[data-v-9ccdd7fa]{border-radius:var(--radius-md)}.md :not(pre)>code[data-v-9ccdd7fa],.md .inline-code[data-v-9ccdd7fa]{border-radius:var(--radius-sm)}.think[data-v-0b3b873f]{margin:0}.tc-wrap[data-v-0b3b873f]{display:grid;grid-template-rows:1fr 0fr;transition:grid-template-rows var(--duration-slow) var(--ease-out);cursor:pointer}.tc-wrap.is-collapsed[data-v-0b3b873f]{grid-template-rows:0fr 1fr}.tc-anim[data-v-0b3b873f],.prev-anim[data-v-0b3b873f]{overflow:hidden;min-height:0}.tc-wrap.is-collapsed:hover .prev[data-v-0b3b873f]{color:var(--color-text)}.tc-wrap:not(.is-collapsed):hover .tc[data-v-0b3b873f]{color:var(--color-text-muted)}.prev[data-v-0b3b873f]{color:var(--color-text-faint);font:var(--text-base)/var(--leading-relaxed) var(--font-ui);font-weight:var(--weight-regular);white-space:pre-wrap;word-break:break-word;display:block}.tc[data-v-0b3b873f]{font:var(--text-base)/var(--leading-relaxed) var(--font-ui);font-weight:var(--weight-regular);color:var(--color-text-muted);white-space:pre-wrap;word-break:break-word;margin:0;max-height:calc(var(--leading-relaxed) * 1em * 5);overflow-y:auto}.mob[data-v-0b3b873f]{margin:0}.mob .tc[data-v-0b3b873f]{color:var(--color-text-faint);line-height:var(--leading-normal);max-height:calc(var(--leading-normal) * 1em * 5)}.mob .prev[data-v-0b3b873f]{color:var(--color-text-faint);line-height:var(--leading-normal)}.activity-notice[data-v-0d497074]{display:inline-flex;align-items:center;gap:9px;align-self:flex-start;margin:0;font:var(--text-sm)/var(--leading-normal) var(--font-ui);color:var(--color-text-muted)}.msg-time[data-v-9672fbd5]{display:inline-flex;align-items:center;min-height:22px;box-sizing:border-box;padding:2px 5px;background:none;border:none;border-radius:var(--radius-sm);color:var(--muted);font:inherit;font-size:var(--text-base);line-height:1;cursor:pointer;opacity:.7;transition:opacity .12s,color .12s,background-color .12s;white-space:nowrap}.msg-time[data-v-9672fbd5]:hover{opacity:1;color:var(--color-accent);background:var(--hover)}.cn[data-v-a62a6587]{margin:0;align-self:flex-end;max-width:78%;display:flex;flex-direction:column;align-items:flex-end}.cn-bubble[data-v-a62a6587]{box-sizing:border-box;max-width:100%;padding:8px 14px;background:var(--color-accent-soft);border:1px solid var(--color-accent-bd);border-radius:var(--radius-xl) var(--radius-xl) var(--radius-sm) var(--radius-xl);box-shadow:var(--shadow-xs);color:var(--color-text);font-size:var(--content-font-size);line-height:var(--leading-normal);white-space:pre-wrap;overflow-wrap:anywhere}.cn-title[data-v-a62a6587]{font-weight:var(--weight-medium)}.cn-meta[data-v-a62a6587]{display:flex;align-items:center;gap:6px;margin-top:4px;padding:0 4px;color:var(--color-text-faint);font-size:var(--text-base);line-height:var(--leading-normal)}.cn-meta-ico[data-v-a62a6587]{flex:none;color:var(--color-text-faint)}.cn-meta-item[data-v-a62a6587]{white-space:nowrap}.cn-status[data-v-a62a6587]{display:inline-flex;align-items:center}.cn-status.ok[data-v-a62a6587]{color:var(--color-success)}.cn-status.error[data-v-a62a6587]{color:var(--color-danger)}.att-chip[data-v-12ec975b]{display:inline-flex;align-items:center;gap:6px;max-width:220px;padding:4px 9px 4px 5px;background:var(--color-bg);border:1px solid var(--color-line);border-radius:999px;font-size:var(--ui-font-size-sm);transition:border-color var(--duration-fast) ease}.att-chip[data-v-12ec975b]:hover{border-color:var(--color-line-strong)}.att-activate[data-v-12ec975b]{display:inline-flex;align-items:center;gap:6px;min-width:0;padding:0;border:none;background:transparent;color:inherit;font:inherit;cursor:pointer}.att-activate[data-v-12ec975b]:focus-visible{outline:none;box-shadow:var(--p-focus-ring);border-radius:999px}.att-tile[data-v-12ec975b]{width:20px;height:20px;border-radius:50%;flex:none;display:flex;align-items:center;justify-content:center;overflow:hidden;color:var(--color-text-muted);background:var(--color-surface-sunken)}.att-tile[data-v-12ec975b] .att-thumb{width:100%;height:100%;object-fit:cover;display:block}.att-name[data-v-12ec975b]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--color-text);font-weight:var(--weight-medium)}.att-chip.is-error[data-v-12ec975b]{border-color:var(--color-danger-bd)}.att-chip.is-error .att-err[data-v-12ec975b]{flex:none;display:flex;align-items:center;color:var(--color-danger)}.att-rm[data-v-12ec975b]{flex:none;display:flex;align-items:center;justify-content:center;width:18px;height:18px;padding:0;border:none;border-radius:50%;background:transparent;color:var(--color-text-faint);cursor:pointer}.att-rm[data-v-12ec975b]:hover{background:var(--color-hover);color:var(--color-text)}.att-rm[data-v-12ec975b]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.ui-moon[data-v-a6b7ec07]{display:inline-block;position:relative;line-height:1;user-select:none;flex:none}.ui-moon--sm[data-v-a6b7ec07]{width:14px;height:14px;font-size:14px}.ui-moon--md[data-v-a6b7ec07]{width:18px;height:18px;font-size:18px}.ui-moon--lg[data-v-a6b7ec07]{width:24px;height:24px;font-size:24px}.ui-moon__frame[data-v-a6b7ec07]{position:absolute;inset:0;display:block;text-align:center;opacity:0;animation-name:ui-moon-frame-a6b7ec07;animation-duration:.96s;animation-timing-function:steps(1,end);animation-iteration-count:infinite;animation-delay:var(--moon-frame-delay)}.ui-moon--fast .ui-moon__frame[data-v-a6b7ec07]{animation-duration:.48s;animation-delay:var(--moon-frame-fast-delay)}@keyframes ui-moon-frame-a6b7ec07{0%,12.49%{opacity:1}12.5%,to{opacity:0}}@media(prefers-reduced-motion:reduce){.ui-moon__frame[data-v-a6b7ec07]{animation:none;opacity:0}.ui-moon__frame[data-v-a6b7ec07]:nth-child(4){opacity:1}}.ui-banner[data-v-b0afda1c]{display:flex;align-items:center;gap:10px;padding:10px 14px;border:1px solid var(--color-line);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text-muted);font-family:var(--font-ui);font-size:var(--text-sm);line-height:var(--leading-normal)}.ui-banner__icon[data-v-b0afda1c]{display:inline-flex;flex:none}.ui-banner__icon svg[data-v-b0afda1c]{width:18px;height:18px}.ui-banner--info[data-v-b0afda1c]{background:var(--color-accent-soft);border-color:var(--color-accent-bd)}.ui-banner--warning[data-v-b0afda1c]{background:var(--color-warning-soft);border-color:var(--color-warning-bd)}.ui-banner--danger[data-v-b0afda1c]{background:var(--color-danger-soft);border-color:var(--color-danger-bd)}.ui-banner--info .ui-banner__icon[data-v-b0afda1c]{color:var(--color-accent)}.ui-banner--warning .ui-banner__icon[data-v-b0afda1c]{color:var(--color-warning)}.ui-banner--danger .ui-banner__icon[data-v-b0afda1c]{color:var(--color-danger)}.ui-button[data-v-556ea0b6]{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);border:1px solid transparent;border-radius:var(--radius-md);font-family:var(--font-ui);font-weight:var(--weight-medium);line-height:1;cursor:pointer;white-space:nowrap;transition:background var(--duration-base) var(--ease-out),border-color var(--duration-base) var(--ease-out),color var(--duration-base) var(--ease-out),box-shadow var(--duration-base) var(--ease-out),transform var(--duration-fast) var(--ease-out)}.ui-button[data-v-556ea0b6]:focus-visible{outline:none;box-shadow:var(--p-focus-ring-strong)}.ui-button[data-v-556ea0b6]:not(:disabled):active{transform:scale(.98)}.ui-button[data-v-556ea0b6]:disabled{opacity:.5;cursor:not-allowed;box-shadow:none;transform:none}.ui-button--sm[data-v-556ea0b6]{height:30px;padding:0 var(--space-3);font-size:var(--text-sm);border-radius:var(--radius-sm)}.ui-button--md[data-v-556ea0b6]{height:36px;padding:0 var(--space-4);font-size:var(--text-base)}.ui-button--lg[data-v-556ea0b6]{height:42px;padding:0 var(--space-5);font-size:15px;border-radius:var(--radius-lg)}.ui-button__content[data-v-556ea0b6]{display:inline-flex;align-items:center;gap:var(--space-2)}.ui-button__content[data-v-556ea0b6] svg{flex:none}.ui-button__content[data-v-556ea0b6] svg:not([width]){width:1em;height:1em}.ui-button--primary[data-v-556ea0b6]{background:var(--color-accent);color:var(--color-text-on-accent);border-color:var(--color-accent);box-shadow:var(--shadow-xs)}.ui-button--primary[data-v-556ea0b6]:not(:disabled):hover{background:var(--color-accent-hover);border-color:var(--color-accent-hover)}.ui-button--secondary[data-v-556ea0b6]{background:var(--color-surface-raised);color:var(--color-text);border-color:var(--color-line-strong);box-shadow:var(--shadow-xs)}.ui-button--secondary[data-v-556ea0b6]:not(:disabled):hover{border-color:var(--color-line-strong);background:var(--color-surface-sunken)}.ui-button--ghost[data-v-556ea0b6]{background:transparent;color:var(--color-text-muted);border-color:transparent}.ui-button--ghost[data-v-556ea0b6]:not(:disabled):hover{background:var(--color-surface-sunken);color:var(--color-text)}.ui-button--danger[data-v-556ea0b6]{background:var(--color-danger);color:var(--surface-light);border-color:var(--color-danger);box-shadow:var(--shadow-xs)}.ui-button--danger[data-v-556ea0b6]:not(:disabled):hover{filter:brightness(.96)}.ui-button--danger-soft[data-v-556ea0b6]{background:var(--color-danger-soft);color:var(--color-danger);border-color:var(--color-danger-bd)}.ui-button--danger-soft[data-v-556ea0b6]:not(:disabled):hover{background:var(--color-danger);color:var(--surface-light);border-color:var(--color-danger)}.ui-button.is-loading .ui-button__content[data-v-556ea0b6]{opacity:.7}.ui-button .ui-button__spinner[data-v-556ea0b6]{flex:none;color:inherit}.ui-button__spinner[data-v-556ea0b6] .ui-spinner__track{opacity:.35}.chat-empty[data-v-38800964]{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:24px 16px;color:var(--faint);text-align:center}.chat-empty-text[data-v-38800964]{font-size:var(--ui-font-size-sm)}.chat-loading[data-v-38800964]{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;padding:24px 16px;color:var(--muted)}.chat-loading-text[data-v-38800964]{font-size:var(--ui-font-size-sm)}.chat[data-v-38800964]{--chat-turn-gap: 16px;--chat-block-gap: 10px;--chat-section-gap: 18px;display:flex;flex-direction:column;gap:0;padding:16px 14px 20px;flex:1;min-height:0;position:relative}.chat .chat-empty[data-v-38800964]{align-self:stretch}.open-unsupported[data-v-38800964]{position:absolute;bottom:16px;left:50%;transform:translate(-50%);max-width:min(90%,480px);padding:6px 12px;border-radius:var(--radius-md);border:1px solid var(--color-line);background:var(--color-surface-raised);color:var(--color-text-muted);font-size:var(--ui-font-size-sm);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;z-index:1}.chat>.u-turn[data-v-38800964],.chat>.a-msg[data-v-38800964],.chat>.compact-divider[data-v-38800964],.chat>.cron-notice[data-v-38800964],.chat>.sending-placeholder[data-v-38800964],.chat[data-v-38800964]>.activity-notice{margin-top:var(--chat-turn-gap)}.chat>.a-msg[data-v-38800964]{margin-top:10px}.chat>.u-turn[data-v-38800964]:first-child,.chat>.a-msg[data-v-38800964]:first-child,.chat>.compact-divider[data-v-38800964]:first-child,.chat>.cron-notice[data-v-38800964]:first-child,.chat>.sending-placeholder[data-v-38800964]:first-child,.chat[data-v-38800964]>.activity-notice:first-child{margin-top:0}.u-turn[data-v-38800964]{display:flex;flex-direction:column;align-items:flex-end;align-self:flex-start;width:100%}.u-bub[data-v-38800964]{align-self:flex-end;max-width:78%;background:var(--color-accent-soft);border:1px solid var(--color-accent-bd);color:var(--color-text);border-radius:var(--radius-xl) var(--radius-xl) var(--radius-sm) var(--radius-xl);padding:11px 15px;font-size:var(--content-font-size);line-height:var(--leading-normal);box-shadow:var(--shadow-xs)}.u-meta[data-v-38800964]{align-self:flex-end;display:flex;justify-content:flex-end;align-items:center;max-width:78%;margin-top:2px;margin-right:4px}.u-meta .u-edit[data-v-38800964]{min-height:22px;box-sizing:border-box}.u-text[data-v-38800964]{white-space:pre-wrap;overflow-wrap:anywhere}.u-edit[data-v-38800964]{display:inline-flex;align-items:center;justify-content:center;padding:2px 5px;background:none;border:none;border-radius:var(--radius-sm);color:var(--muted);font:inherit;font-size:var(--text-base);line-height:1;cursor:pointer;opacity:.7;transition:opacity .12s,color .12s,background-color .12s}.u-edit svg[data-v-38800964]{display:block;flex:none}.u-edit[data-v-38800964]:hover{opacity:1;color:var(--color-accent);background:var(--hover)}.u-copy[data-v-38800964]{display:inline-flex;align-items:center;justify-content:center;padding:2px 5px;background:none;border:none;border-radius:var(--radius-sm);color:var(--muted);font:inherit;font-size:var(--text-base);line-height:1;cursor:pointer;opacity:.7;transition:opacity .12s,color .12s,background-color .12s;min-height:22px;box-sizing:border-box}.u-copy svg[data-v-38800964]{display:block;flex:none}.u-copy[data-v-38800964]:hover{opacity:1;color:var(--color-accent);background:var(--hover)}.u-edit-wrap[data-v-38800964]{display:flex;justify-content:flex-end}.chat>.u-edit-wrap[data-v-38800964]{margin-top:4px}.chat>.u-edit-wrap+.a-msg[data-v-38800964]{margin-top:8px}.compact-divider[data-v-38800964]{display:flex;align-items:center;gap:10px;align-self:stretch;width:100%;margin:var(--chat-section-gap) 0 0}.chat>.compact-divider[data-v-38800964]:first-child{margin-top:0}.cd-line[data-v-38800964]{flex:1;height:1px;background:var(--line)}.cd-label[data-v-38800964]{flex:none;display:inline-flex;align-items:center;gap:8px;max-width:80%;font-size:var(--text-base);color:var(--muted);white-space:nowrap}.cd-btn[data-v-38800964]{background:none;border:none;padding:0;cursor:pointer;font:inherit;font-size:var(--text-base);color:var(--muted)}.cd-view[data-v-38800964]{color:var(--color-accent)}.cd-btn:hover .cd-view[data-v-38800964]{text-decoration:underline}.a-msg[data-v-38800964]{align-self:flex-start;max-width:94%;width:94%}.a-msg-ft[data-v-38800964]{display:flex;justify-content:flex-start;align-items:center;gap:8px;height:auto;margin-top:var(--chat-block-gap);overflow:visible}.a-cpbtn[data-v-38800964]{display:inline-flex;align-items:center;justify-content:center;padding:2px 5px;background:none;border:none;border-radius:var(--radius-sm);color:var(--muted);font:inherit;font-size:var(--text-base);line-height:1;cursor:pointer;opacity:.7;transition:opacity .12s,color .12s,background-color .12s;min-height:22px;box-sizing:border-box}.a-cpbtn[data-v-38800964]:hover{opacity:1;color:var(--color-accent);background:var(--hover)}.a-cpbtn svg[data-v-38800964]{display:block;flex:none}@media(hover:none){.a-msg-ft[data-v-38800964]{height:auto;margin-top:var(--chat-block-gap);opacity:1;pointer-events:auto}.a-cpbtn[data-v-38800964]{font-size:var(--ui-font-size-sm);padding:8px 10px;margin:-4px -6px}}.a-msg .msg[data-v-38800964]{font-size:var(--ui-font-size);line-height:1.6;color:var(--color-text);font-weight:500}.a-msg .msg[data-v-38800964] p{margin:0}.a-msg .msg[data-v-38800964] p+p{margin-top:8px}.a-msg>.msg[data-v-38800964],.a-msg[data-v-38800964]>.think,.a-msg[data-v-38800964]>.tool-group,.a-msg[data-v-38800964]>.agent-card,.a-msg[data-v-38800964]>.agent-group,.a-msg[data-v-38800964]>.box,.a-msg[data-v-38800964]>.swarm-card,.a-msg[data-v-38800964]>.media-tool,.a-msg[data-v-38800964]>.ui-banner{margin-top:var(--chat-block-gap)}.a-msg>.msg[data-v-38800964]:first-child,.a-msg[data-v-38800964]>.think:first-child,.a-msg[data-v-38800964]>.tool-group:first-child,.a-msg[data-v-38800964]>.agent-card:first-child,.a-msg[data-v-38800964]>.agent-group:first-child,.a-msg[data-v-38800964]>.box:first-child,.a-msg[data-v-38800964]>.swarm-card:first-child,.a-msg[data-v-38800964]>.media-tool:first-child,.a-msg[data-v-38800964]>.ui-banner:first-child{margin-top:0}.a-msg[data-v-38800964] code{font:.9em var(--font-mono);background:var(--color-surface-sunken);border:1px solid var(--color-line);border-radius:var(--radius-sm);padding:1px 6px;color:var(--color-accent-hover)}@container (min-width: 760px){.a-msg .msg[data-v-38800964] .markstream-vue.markdown-renderer:has(.table-node-wrapper){content-visibility:visible}.a-msg .msg[data-v-38800964] .table-node-wrapper{position:relative;left:50%;width:max-content;min-width:100%;max-width:min(var(--p-table-max),calc(100cqi - var(--space-5) - var(--space-5)))!important;transform:translate(-50%)}}.u-atts[data-v-38800964]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.sending-placeholder[data-v-38800964]{align-self:flex-start;padding:10px 0}.turn-error[data-v-38800964]{flex-wrap:wrap}.turn-error-text[data-v-38800964]{flex:1;min-width:0;white-space:pre-wrap;overflow-wrap:anywhere}.turn-error-resume[data-v-38800964]{margin-left:auto;flex:none}.skill-act[data-v-38800964]{display:flex;flex-direction:column;gap:2px}.skill-act-head[data-v-38800964]{font-size:var(--ui-font-size-sm);font-weight:500;color:var(--color-accent-hover);display:flex;align-items:center;gap:6px}.skill-act-arrow[data-v-38800964]{color:var(--color-accent);font-size:var(--text-base)}.skill-act-args[data-v-38800964]{font-size:var(--text-base);color:var(--muted);padding-left:17px;white-space:pre-wrap;overflow-wrap:anywhere}@media(max-width:640px){.chat[data-v-38800964]{box-sizing:border-box;width:100%;padding:14px max(12px,var(--safe-right)) 18px max(12px,var(--safe-left))}.u-bub[data-v-38800964]{max-width:min(88%,calc(100vw - 52px))}.a-msg[data-v-38800964]{width:100%;max-width:100%}.u-bub .u-text[data-v-38800964],.a-msg .msg[data-v-38800964]{font-size:var(--ui-font-size-xl)}.a-msg[data-v-38800964] .md,.a-msg[data-v-38800964] .markdown-renderer,.a-msg[data-v-38800964] .code-block-container,.a-msg[data-v-38800964] .diff-wrap,.a-msg[data-v-38800964] pre{max-width:100%}.a-msg[data-v-38800964] .code-block-container pre,.a-msg[data-v-38800964] .diff-pre{overflow-x:auto;-webkit-overflow-scrolling:touch}.a-msg[data-v-38800964] .media-tool.mob{width:min(44vw,160px)}.cd-label[data-v-38800964]{min-width:0;max-width:calc(100% - 48px);overflow:hidden;text-overflow:ellipsis}.u-edit-confirm[data-v-38800964]{flex-wrap:wrap;justify-content:flex-end;max-width:calc(100vw - 28px)}.ts[data-v-38800964]{font-size:var(--ui-font-size-sm)}.chat-empty-text[data-v-38800964],.chat-loading-text[data-v-38800964]{font-size:var(--ui-font-size-lg)}.cd-label[data-v-38800964],.cd-btn[data-v-38800964]{font-size:var(--ui-font-size)}}.top-sentinel[data-v-38800964]{display:flex;align-items:center;justify-content:center;padding:12px 0;min-height:28px}.top-sentinel-loading[data-v-38800964]{opacity:.8}.top-sentinel-btn[data-v-38800964]{appearance:none;border:1px solid var(--border);background:transparent;color:var(--muted);font-size:var(--ui-font-size-sm);padding:4px 12px;border-radius:999px;cursor:pointer;transition:color .15s ease,border-color .15s ease}.top-sentinel-btn[data-v-38800964]:hover{color:var(--fg);border-color:var(--fg)}.top-sentinel-text[data-v-38800964]{display:inline-flex;align-items:center;gap:8px;color:var(--muted);font-size:var(--ui-font-size-sm)}.chat[data-v-38800964]{background:transparent}.chat[data-v-38800964]{gap:0;padding:22px 20px 26px}.u-bub[data-v-38800964]{background:var(--color-accent-soft);border-color:var(--color-accent-bd);border-radius:var(--radius-xl) var(--radius-xl) var(--radius-sm) var(--radius-xl);padding:11px 15px;box-shadow:var(--shc)}.a-msg[data-v-38800964]{max-width:100%;width:100%}.chat>.q-stack[data-v-38800964]{margin-top:var(--chat-turn-gap)}.chat>.q-stack[data-v-38800964]:first-child{margin-top:0}.q-stack[data-v-38800964]{align-self:flex-end;width:100%;display:flex;flex-direction:column;gap:8px}.q-head[data-v-38800964]{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:0 6px;color:var(--color-text-faint);font-size:var(--ui-font-size-xs)}.q-title[data-v-38800964]{display:inline-flex;align-items:center;gap:6px}.q-title b[data-v-38800964]{color:var(--color-accent-hover);font-weight:var(--weight-medium)}.q-hint[data-v-38800964]{color:var(--color-text-faint)}.q-turn[data-v-38800964]{position:relative}.q-bub[data-v-38800964]{display:flex;align-items:center;gap:8px;width:fit-content;background:var(--color-surface-raised);border:1px dashed var(--color-accent-bd);padding:8px 8px 8px 6px;transition:border-color .12s ease,background .12s ease}.q-bub[data-v-38800964]:hover{border-color:var(--color-accent);background:var(--color-accent-soft)}.q-grip[data-v-38800964]{flex:none;display:inline-flex;align-items:center;padding:2px;color:var(--color-text-faint);cursor:grab;opacity:.7}.q-grip[data-v-38800964]:hover{opacity:1}.q-grip[data-v-38800964]:active{cursor:grabbing}.q-body[data-v-38800964]{flex:1;min-width:0;background:none;border:none;padding:0;margin:0;font:inherit;color:var(--color-text);text-align:left;cursor:pointer;opacity:.82}.q-bub:hover .q-body[data-v-38800964]{opacity:1}.q-body[data-v-38800964]:disabled{cursor:default}.q-text[data-v-38800964]{white-space:pre-wrap;overflow-wrap:anywhere}.q-text-placeholder[data-v-38800964]{display:inline-flex;align-items:center;gap:4px;color:var(--color-text-muted)}.q-imgs[data-v-38800964]{display:flex;gap:4px;flex:none}.q-img[data-v-38800964]{width:28px;height:28px;object-fit:cover;border-radius:var(--radius-sm);border:1px solid var(--color-line)}.q-file[data-v-38800964]{display:inline-flex;align-items:center;gap:4px;height:28px;padding:0 6px;border-radius:var(--radius-sm);border:1px solid var(--color-line);color:var(--color-text-muted);font-size:calc(var(--ui-font-size) - 3px);max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.q-tag[data-v-38800964]{flex:none;padding:1px 6px;border-radius:var(--radius-full);font-size:var(--ui-font-size-xs);font-weight:var(--weight-medium);line-height:1.4;white-space:nowrap}.q-tag-next[data-v-38800964]{color:var(--color-accent-hover);background:var(--color-accent-soft);border:1px solid var(--color-accent-bd)}.q-tag-idx[data-v-38800964]{color:var(--color-text-faint);background:var(--color-surface-sunken);border:1px solid var(--color-line)}.q-steer[data-v-38800964],.q-rm[data-v-38800964]{flex:none;width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;background:none;border:none;border-radius:var(--radius-sm);color:var(--color-text-faint);cursor:pointer;opacity:0;transition:opacity .12s ease,background .12s ease,color .12s ease}.q-steer[data-v-38800964]{position:relative;touch-action:manipulation}.q-steer[data-v-38800964]:after{content:"";position:absolute;inset:-11px}.q-bub:hover .q-steer[data-v-38800964],.q-bub:focus-within .q-steer[data-v-38800964],.q-steer[data-v-38800964]:focus-visible,.q-bub:hover .q-rm[data-v-38800964],.q-bub:focus-within .q-rm[data-v-38800964],.q-rm[data-v-38800964]:focus-visible{opacity:1}.q-steer[data-v-38800964]:hover{background:var(--color-accent-soft);color:var(--color-accent)}.q-rm[data-v-38800964]:hover{background:var(--color-danger-soft);color:var(--color-danger)}.q-turn.q-dragging .q-bub[data-v-38800964]{opacity:.45}.q-turn.drop-before[data-v-38800964]:before,.q-turn.drop-after[data-v-38800964]:after{content:"";position:absolute;left:0;right:0;height:2px;background:var(--color-accent);border-radius:var(--radius-full);z-index:1}.q-turn.drop-before[data-v-38800964]:before{top:-5px}.q-turn.drop-after[data-v-38800964]:after{bottom:-5px}.chat[data-v-38800964] .chat-search-hit{background:var(--color-accent-soft);border-radius:var(--radius-xs);box-shadow:inset 0 0 0 1px var(--color-accent-bd);padding:0 1px}.chat[data-v-38800964] .chat-search-hit--active{background:var(--color-accent);color:var(--color-bg);box-shadow:inset 0 0 0 1px var(--color-accent)}.chat-header[data-v-a3848f6a]{flex:none;display:flex;align-items:center;gap:14px;height:48px;padding:0 16px;border-bottom:1px solid var(--color-line);background:var(--color-bg);font-family:var(--font-ui);min-width:0}.chat-header.macos-desktop[data-v-a3848f6a]{-webkit-app-region:drag}.chat-header.macos-desktop button[data-v-a3848f6a],.chat-header.macos-desktop input[data-v-a3848f6a]{-webkit-app-region:no-drag}.ch-id[data-v-a3848f6a]{display:flex;align-items:center;gap:6px;min-width:0;flex:none;max-width:46%}.ch-ws[data-v-a3848f6a]{color:var(--color-text-muted);font-size:var(--text-base);font-weight:var(--weight-medium);flex:none}.ch-sep[data-v-a3848f6a]{color:var(--color-text-faint);flex:none}.ch-ses[data-v-a3848f6a]{color:var(--color-text);font-size:var(--text-base);font-weight:var(--weight-medium);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ch-rename[data-v-a3848f6a]{flex:1;min-width:0;font-size:var(--text-base);font-weight:var(--weight-medium);color:var(--color-text);background:var(--color-bg);border:1px solid var(--color-accent);border-radius:var(--radius-xs);padding:2px 5px;outline:none}.ch-git[data-v-a3848f6a]{display:flex;align-items:center;gap:4px;border:none;background:transparent;padding:0;color:var(--muted);font-family:var(--mono);font-size:calc(var(--ui-font-size) - 2px);flex:0 1 auto;max-width:none;min-width:0;cursor:pointer}.ch-git:hover .ch-branch[data-v-a3848f6a]{color:var(--color-text)}.ch-branch[data-v-a3848f6a]{color:var(--dim);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-right:4px}.ch-detached[data-v-a3848f6a]{color:var(--muted);font-style:italic}.ch-pill[data-v-a3848f6a]{display:inline-flex;align-items:center;gap:3px;padding:1px 5px;border-radius:999px;background:var(--panel);border:1px solid var(--line);font-size:calc(var(--ui-font-size) - 3px)}.ch-sync-pill[data-v-a3848f6a]{border-color:var(--line)}.ch-diff-pill[data-v-a3848f6a]{border-color:color-mix(in srgb,var(--color-success) 20%,var(--line))}.ch-ahead[data-v-a3848f6a]{color:var(--color-warning);flex:none}.ch-behind[data-v-a3848f6a]{color:var(--color-accent-hover);flex:none}.ch-add[data-v-a3848f6a]{color:var(--color-success);flex:none}.ch-del[data-v-a3848f6a]{color:var(--color-danger);flex:none}.ch-spacer[data-v-a3848f6a]{flex:1;min-width:0}.ch-act-more.open[data-v-a3848f6a],.ch-act-search.active[data-v-a3848f6a]{background:var(--color-surface-sunken);color:var(--color-text)}.ch-pr[data-v-a3848f6a]{display:inline-flex;align-items:center;gap:4px;height:22px;padding:0 9px;flex:none;border:1px solid var(--color-line);border-radius:var(--radius-full);background:var(--color-surface-sunken);color:var(--color-text-muted);font-size:var(--text-xs);font-weight:500;cursor:pointer}.ch-pr svg[data-v-a3848f6a]{flex:none}.ch-pr.pr-open[data-v-a3848f6a]{color:var(--color-success);border-color:var(--color-success-bd);background:var(--color-success-soft)}.ch-pr.pr-merged[data-v-a3848f6a]{color:var(--color-done);border-color:var(--color-done-bd);background:var(--color-done-soft)}.ch-pr.pr-closed[data-v-a3848f6a]{color:var(--color-danger);border-color:var(--color-danger-bd);background:var(--color-danger-soft)}.ch-pr.pr-draft[data-v-a3848f6a],.ch-pr.pr-unknown[data-v-a3848f6a]{color:var(--color-text-muted);border-color:var(--color-line-strong);background:var(--color-surface-sunken)}.ch-pr[data-v-a3848f6a]:hover{border-color:var(--color-line-strong)}.ch-menu[data-v-a3848f6a]{position:fixed;top:0;left:0;z-index:var(--z-dropdown)}@media(max-width:980px){.ch-act-label[data-v-a3848f6a]{display:none}}@media(max-width:640px){.chat-header[data-v-a3848f6a]{display:none}}.slash-menu[data-v-3f12a9ed]{position:absolute;bottom:calc(100% + 4px);left:0;right:0;padding:var(--space-1);background:var(--color-surface-raised);border:1px solid var(--color-line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);z-index:var(--z-dropdown);--menu-scrollbar-track-inset: 4px;--menu-scrollbar-thumb-min: 24px;--menu-fade-top: linear-gradient(to bottom, var(--color-surface-raised) 0%, transparent 100%);--menu-fade-bottom: linear-gradient(to top, var(--color-surface-raised) 0%, transparent 100%)}.slash-scroller[data-v-3f12a9ed]{position:relative}.slash-list[data-v-3f12a9ed]{max-height:240px;overflow-y:auto}.slash-item[data-v-3f12a9ed]{display:grid;grid-template-columns:minmax(90px,32%) minmax(0,1fr);align-items:start;gap:10px;padding:6px 10px;cursor:pointer;font-family:var(--font-ui);font-size:var(--text-sm);border-radius:var(--radius-sm)}.slash-item[data-v-3f12a9ed]:hover{background:var(--color-surface-sunken)}.slash-item.active[data-v-3f12a9ed]{background:var(--color-accent-soft)}.slash-item.active .slash-name[data-v-3f12a9ed]{color:var(--color-accent-hover)}.slash-name[data-v-3f12a9ed]{color:var(--color-accent);font-weight:500;min-width:0;line-height:var(--leading-normal);overflow-wrap:anywhere}.slash-match[data-v-3f12a9ed]{font-weight:var(--weight-semibold)}.slash-desc-match[data-v-3f12a9ed]{font-weight:var(--weight-semibold);color:var(--color-text)}.slash-desc[data-v-3f12a9ed]{color:var(--color-text-muted);font-size:var(--text-xs);min-width:0;line-height:var(--leading-normal);overflow-wrap:anywhere}.slash-empty[data-v-3f12a9ed]{padding:8px 12px;font-family:var(--font-ui);font-size:var(--text-sm);color:var(--color-text-muted)}.menu-scroll-thumb[data-v-3f12a9ed]{position:absolute;right:2px;width:4px;border-radius:var(--radius-xs);background:var(--color-line-strong);cursor:pointer;touch-action:none;transition:background var(--duration-fast) ease}.menu-scroll-thumb[data-v-3f12a9ed]:hover,.menu-scroll-thumb[data-v-3f12a9ed]:active{background:var(--color-text-faint)}.menu-scroll-fade[data-v-3f12a9ed]{position:absolute;left:0;right:0;height:12px;pointer-events:none;transition:opacity var(--duration-fast) ease}.menu-scroll-fade-top[data-v-3f12a9ed]{top:var(--space-1);background:var(--menu-fade-top)}.menu-scroll-fade-bottom[data-v-3f12a9ed]{bottom:var(--space-1);background:var(--menu-fade-bottom)}@media(max-width:520px){.slash-item[data-v-3f12a9ed]{grid-template-columns:minmax(0,1fr);gap:2px}}.slash-menu[data-v-3f12a9ed]{border-radius:var(--radius-lg);box-shadow:var(--sh)}.slash-desc[data-v-3f12a9ed]{font-family:var(--sans)}.mention-menu[data-v-b8578b17]{position:absolute;bottom:calc(100% + 4px);left:0;right:0;padding:var(--space-1);background:var(--color-surface-raised);border:1px solid var(--color-line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);z-index:var(--z-dropdown);--menu-scrollbar-track-inset: 4px;--menu-scrollbar-thumb-min: 24px;--menu-fade-top: linear-gradient(to bottom, var(--color-surface-raised) 0%, transparent 100%);--menu-fade-bottom: linear-gradient(to top, var(--color-surface-raised) 0%, transparent 100%)}.mention-scroller[data-v-b8578b17]{position:relative}.mention-list[data-v-b8578b17]{max-height:220px;overflow-y:auto}.mention-state[data-v-b8578b17]{padding:8px 12px;font-family:var(--font-ui);font-size:var(--text-sm)}.dim[data-v-b8578b17]{color:var(--color-text-muted)}.mention-item[data-v-b8578b17]{display:flex;align-items:center;gap:8px;padding:6px 10px;cursor:pointer;font-family:var(--font-ui);font-size:var(--text-sm);border-radius:var(--radius-sm)}.mention-icon[data-v-b8578b17]{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;color:var(--color-text-faint);flex-shrink:0}.mention-icon[data-v-b8578b17] svg{width:13px;height:13px;display:block}.mention-item:hover .mention-icon[data-v-b8578b17],.mention-item.active .mention-icon[data-v-b8578b17]{color:var(--color-text-muted)}.mention-item[data-v-b8578b17]:hover{background:var(--color-surface-sunken)}.mention-item.active[data-v-b8578b17]{background:var(--color-accent-soft)}.mention-name[data-v-b8578b17]{color:var(--color-text);font-weight:500;min-width:80px;flex-shrink:0}.mention-path[data-v-b8578b17]{color:var(--color-text-muted);font-size:var(--text-xs);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.menu-scroll-thumb[data-v-b8578b17]{position:absolute;right:2px;width:4px;border-radius:var(--radius-xs);background:var(--color-line-strong);cursor:pointer;touch-action:none;transition:background var(--duration-fast) ease}.menu-scroll-thumb[data-v-b8578b17]:hover,.menu-scroll-thumb[data-v-b8578b17]:active{background:var(--color-text-faint)}.menu-scroll-fade[data-v-b8578b17]{position:absolute;left:0;right:0;height:12px;pointer-events:none;transition:opacity var(--duration-fast) ease}.menu-scroll-fade-top[data-v-b8578b17]{top:var(--space-1);background:var(--menu-fade-top)}.menu-scroll-fade-bottom[data-v-b8578b17]{bottom:var(--space-1);background:var(--menu-fade-bottom)}.mention-menu[data-v-b8578b17]{border-radius:var(--radius-lg);box-shadow:var(--sh)}.mention-state[data-v-b8578b17]{font-family:var(--sans)}.ctx-ring[data-v-a364f1f1]{width:16px;height:16px;flex:none;transform:rotate(-90deg)}.ctx-ring-track[data-v-a364f1f1]{stroke:var(--line)}.ctx-ring-fill[data-v-a364f1f1]{stroke:var(--color-accent);transition:stroke-dashoffset .3s ease,stroke .3s ease}.composer[data-v-35d707a6]{padding:7px var(--dock-inline-right, 16px) 12px var(--dock-inline-left, 16px);background:transparent;transition:background .12s}.composer.drag-over[data-v-35d707a6]{background:var(--color-accent-soft)}.drop-overlay[data-v-35d707a6]{position:fixed;inset:0;z-index:var(--z-modal);display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--color-bg) 72%,transparent);pointer-events:none;opacity:0;visibility:hidden;transition:opacity var(--duration-base) ease,visibility var(--duration-base)}.drop-overlay.show[data-v-35d707a6]{opacity:1;visibility:visible}.drop-card[data-v-35d707a6]{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-6);border-radius:var(--radius-lg);border:1.5px dashed var(--color-accent);background:var(--color-bg);color:var(--color-accent);font-size:var(--ui-font-size-lg);font-weight:var(--weight-medium);box-shadow:var(--shadow-md)}.composer-card[data-v-35d707a6]{--composer-send-size: 32px;--composer-send-inset: var(--space-2);position:relative;border:1px solid var(--line);border-radius:var(--radius-xl);background:var(--bg);box-shadow:var(--shadow-md);transition:border-color .15s,box-shadow .15s}.composer-card[data-v-35d707a6]:focus-within{border-color:var(--color-accent);box-shadow:var(--shadow-md),0 0 0 3px var(--color-accent-soft)}.att-strip[data-v-35d707a6]{display:flex;flex-wrap:wrap;gap:6px;padding:4px 0 6px}.att-lightbox[data-v-35d707a6]{position:fixed;inset:0;z-index:var(--z-overlay);display:flex;align-items:center;justify-content:center;padding:24px;background:#14171c9e}.att-lightbox-card[data-v-35d707a6]{position:relative;display:flex;flex-direction:column;align-items:center;gap:10px;max-width:min(960px,calc(100vw - 48px));max-height:calc(100vh - 48px)}.att-lightbox-media[data-v-35d707a6]{max-width:100%;max-height:calc(100vh - 96px);border-radius:6px;background:var(--bg);box-shadow:var(--shadow-xl);object-fit:contain}.att-lightbox-name[data-v-35d707a6]{max-width:100%;color:var(--surface-light);font-family:var(--mono);font-size:calc(var(--ui-font-size) - 2px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.att-lightbox-close[data-v-35d707a6]{position:absolute;top:-14px;right:-14px;width:28px;height:28px;border:1px solid rgba(255,255,255,.45);border-radius:50%;background:#14171cd1;color:var(--surface-light);cursor:pointer}.file-input-hidden[data-v-35d707a6]{display:none}.cin-wrap[data-v-35d707a6]{position:relative;padding:14px 16px 8px}.input-row[data-v-35d707a6]{position:relative;display:flex;align-items:flex-start;gap:var(--space-2)}.expand-btn[data-v-35d707a6]{width:22px;height:22px;display:flex;align-items:center;justify-content:center;border:none;border-radius:6px;background:transparent;color:var(--dim);cursor:pointer;padding:0;transition:background .12s,color .12s}.expand-btn[data-v-35d707a6]:hover{background:var(--panel2);color:var(--color-text)}.expand-btn[data-v-35d707a6]:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.ph[data-v-35d707a6]{color:var(--faint);caret-color:var(--color-text);padding-left:var(--wm-pill-w, 0px);transition:padding-left .12s ease;flex:1;border:none;outline:none;resize:none;font-family:var(--font-ui);font-size:var(--content-font-size);background:transparent;min-height:36px;max-height:25vh;overflow-y:auto;line-height:1.5;margin-bottom:6px}.ph[data-v-35d707a6]::placeholder{color:var(--muted)}.ph[data-v-35d707a6]:not(:placeholder-shown){color:var(--color-text)}.composer.expanded .ph[data-v-35d707a6]{min-height:70vh;max-height:70vh}.compact-chip[data-v-35d707a6]{background:none;border:1px solid var(--line);border-radius:var(--radius-xs);color:var(--color-warning);font-family:var(--mono);font-size:var(--ui-font-size);padding:0 4px;cursor:pointer;height:19px;line-height:17px;flex:none}.compact-chip[data-v-35d707a6]:hover{background:var(--panel2)}.send[data-v-35d707a6]{width:var(--composer-send-size);height:var(--composer-send-size);border-radius:50%;background:var(--color-accent);color:var(--color-text-on-accent);border:none;box-shadow:var(--shadow-xs);padding:0;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;margin-left:var(--space-2);transition:background .25s ease,transform .12s ease;position:relative}.send[data-v-35d707a6]:hover{background:var(--color-accent-hover)}.send[data-v-35d707a6]:active{transform:scale(.92)}.send[data-v-35d707a6]:disabled{cursor:not-allowed;opacity:.88}.send[data-v-35d707a6]:disabled:active{transform:none}.send.is-starting[data-v-35d707a6] .ui-spinner{color:var(--color-text-on-accent)}.send.is-starting[data-v-35d707a6] .ui-spinner__track{stroke:color-mix(in srgb,var(--color-text-on-accent) 32%,transparent)}.send svg[data-v-35d707a6]{flex:none;width:var(--p-ic-lg);height:var(--p-ic-lg)}.stop[data-v-35d707a6]{width:var(--composer-send-size);height:var(--composer-send-size);border-radius:50%;background:var(--color-danger-soft);color:var(--color-danger);border:1px solid var(--color-danger-bd);box-shadow:var(--shadow-xs);padding:0;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;margin-left:var(--space-2);transition:background .16s ease,color .16s ease,border-color .16s ease,transform .12s ease}.stop[data-v-35d707a6]:hover{background:var(--color-danger);color:var(--surface-light);border-color:var(--color-danger)}.stop[data-v-35d707a6]:active{transform:scale(.92)}.stop svg[data-v-35d707a6]{flex:none;width:var(--p-ic-lg);height:var(--p-ic-lg)}.toolbar[data-v-35d707a6]{display:flex;align-items:center;justify-content:space-between;padding:6px var(--composer-send-inset) var(--composer-send-inset);position:relative}.menu-measure[data-v-35d707a6]{position:absolute;width:max-content;height:0;overflow:hidden;visibility:hidden;pointer-events:none}.toolbar-left[data-v-35d707a6],.toolbar-right[data-v-35d707a6]{display:flex;align-items:center;gap:2px;min-width:0;overflow:hidden}.perm-pill[data-v-35d707a6]{display:inline-flex;align-items:center;gap:4px;padding:2px 7px;border-radius:6px;font-size:var(--ui-font-size);color:var(--color-text);cursor:pointer;user-select:none;transition:background .1s,color .15s;font-family:var(--font-ui);font-weight:var(--weight-medium)}.perm-pill[data-v-35d707a6]:hover{background:var(--color-surface-sunken)}.perm-pill.open[data-v-35d707a6]{background:var(--color-accent-soft)}.perm-pill.perm-manual[data-v-35d707a6]{color:var(--dim)}.perm-pill.perm-yolo[data-v-35d707a6]{color:var(--color-warning)}.perm-pill.perm-auto[data-v-35d707a6]{color:var(--color-danger)}.ctx-group[data-v-35d707a6]{display:flex;align-items:center;gap:4px;flex-shrink:0;padding:2px 4px;border-radius:var(--radius-xs)}.ctx-group[data-v-35d707a6]:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.model-pill[data-v-35d707a6]{display:inline-flex;align-items:center;gap:3px;padding:2px 7px;border-radius:6px;font-size:var(--ui-font-size);line-height:var(--leading-normal);color:var(--dim);font-family:var(--font-ui);font-weight:var(--weight-medium);cursor:pointer;user-select:none;transition:background .1s;position:relative;overflow:hidden}.model-pill[data-v-35d707a6]:hover{background:var(--color-surface-sunken);color:var(--color-text)}.model-pill.open[data-v-35d707a6]{background:var(--color-accent-soft)}.model-pill b[data-v-35d707a6]{font-weight:500;color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:280px}.model-pill .think-suffix[data-v-35d707a6]{color:var(--color-accent);font-weight:500;flex-shrink:0}.model-pill .cv[data-v-35d707a6]{color:var(--faint);flex:none}.model-pill:hover .cv[data-v-35d707a6],.model-pill.open .cv[data-v-35d707a6]{color:var(--color-accent-hover)}.model-dropdown[data-v-35d707a6]{position:absolute;bottom:calc(100% + 4px);right:10px;z-index:var(--z-dropdown);min-width:200px;background:var(--color-surface-raised);border:1px solid var(--color-line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:5px;max-height:min(520px,calc(100vh - 96px));max-height:min(520px,calc(100dvh - 96px));overflow-y:auto;display:flex;flex-direction:column;gap:1px;font-family:var(--font-ui)}.md-section[data-v-35d707a6]{padding:4px 7px 2px;font-size:var(--text-xs);color:var(--muted);text-transform:uppercase;letter-spacing:0;font-weight:var(--weight-semibold)}.md-row[data-v-35d707a6]{display:flex;align-items:center;gap:7px;width:100%;background:none;border:none;cursor:pointer;font-family:var(--font-ui);font-size:var(--ui-font-size);color:var(--color-text);padding:5px 7px;border-radius:6px;text-align:left}.md-row[data-v-35d707a6]:hover{background:var(--color-surface-sunken)}.md-row[data-v-35d707a6]:disabled{cursor:default;opacity:.58}.md-row[data-v-35d707a6]:disabled:hover{background:none}.md-row.is-current[data-v-35d707a6]{color:var(--color-text);background:var(--color-accent-soft)}.md-row.is-on[data-v-35d707a6]{color:var(--color-accent)}.md-note[data-v-35d707a6]{margin-left:auto;color:var(--muted);font-size:var(--ui-font-size-xs)}.md-row-more[data-v-35d707a6]{color:var(--color-accent);font-weight:500}.md-row-more[data-v-35d707a6]:hover{background:var(--color-accent-soft)}.md-check[data-v-35d707a6]{width:14px;flex:none;color:var(--color-accent);font-weight:500;display:flex;justify-content:center}.md-name[data-v-35d707a6]{flex:1}.md-provider[data-v-35d707a6]{color:var(--muted);font-size:var(--ui-font-size-xs);flex:none}.md-star[data-v-35d707a6]{color:var(--star);flex:none;margin-left:auto}.md-divider[data-v-35d707a6]{height:1px;background:var(--line);margin:3px 0}.md-thinking[data-v-35d707a6]{display:flex;align-items:center;gap:8px;padding:6px 7px;border-radius:var(--radius-sm)}.md-thinking .md-name[data-v-35d707a6]{font-family:var(--font-ui);font-size:var(--ui-font-size);color:var(--color-text);flex:none}.md-thinking .md-note[data-v-35d707a6]{margin-left:auto}.effort-segments[data-v-35d707a6]{margin-left:auto;display:inline-flex;align-items:center;gap:1px;padding:2px;background:var(--color-surface-sunken);border:1px solid var(--color-line);border-radius:var(--radius-md)}.effort-seg[data-v-35d707a6]{appearance:none;border:none;background:none;cursor:pointer;font-family:var(--font-ui);font-size:var(--ui-font-size-xs);line-height:1;color:var(--color-text-muted);padding:4px 9px;border-radius:var(--radius-sm);white-space:nowrap;transition:background .12s,color .12s,box-shadow .12s}.effort-seg[data-v-35d707a6]:hover:not(:disabled):not(.is-active){background:var(--color-surface-raised);color:var(--color-text)}.effort-seg[data-v-35d707a6]:focus-visible{outline:2px solid var(--color-accent);outline-offset:-2px}.effort-seg.is-active[data-v-35d707a6]{background:var(--color-accent);color:var(--color-text-on-accent);box-shadow:var(--shadow-xs);font-weight:500}.effort-seg[data-v-35d707a6]:disabled{cursor:default}.md-thinking.is-readonly .effort-segments[data-v-35d707a6]{opacity:.62}.md-cache-note[data-v-35d707a6]{width:0;min-width:100%;padding:2px 7px 4px;color:var(--muted);font-size:var(--ui-font-size-xs);line-height:1.4}.md-thinking.is-readonly .effort-seg.is-active[data-v-35d707a6]{background:var(--color-surface-raised);color:var(--color-text-muted);box-shadow:none}.perm-dropdown[data-v-35d707a6]{position:absolute;bottom:calc(100% + 4px);left:10px;z-index:var(--z-dropdown);min-width:220px;width:max-content;max-width:min(calc(100vw - var(--space-8)),calc(100% - 20px));background:var(--color-surface-raised);border:1px solid var(--color-line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:5px;display:flex;flex-direction:column;gap:1px}.pd-row[data-v-35d707a6]{display:grid;grid-template-columns:14px var(--composer-menu-desc-width, max-content);column-gap:7px;row-gap:2px;align-items:start;width:100%;background:none;border:none;cursor:pointer;padding:6px 7px;border-radius:6px;text-align:left}.pd-row[data-v-35d707a6]:hover{background:var(--color-surface-sunken)}.pd-row.is-current[data-v-35d707a6]{background:var(--color-accent-soft)}.pd-check[data-v-35d707a6]{grid-column:1;grid-row:1;width:14px;min-height:1lh;color:var(--color-accent);font-size:var(--ui-font-size);font-weight:var(--weight-medium);display:flex;align-items:center;justify-content:center;line-height:var(--leading-normal)}.pd-info[data-v-35d707a6]{display:contents}.pd-name[data-v-35d707a6]{grid-column:2;grid-row:1;font-family:var(--font-ui);font-size:var(--ui-font-size);font-weight:var(--weight-medium);line-height:var(--leading-normal)}.pd-desc[data-v-35d707a6]{grid-column:2;grid-row:2;width:var(--composer-menu-desc-width, auto);font-family:var(--font-ui);font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--muted);line-height:var(--leading-normal)}.wm-pill[data-v-35d707a6]{position:absolute;left:0;top:0;z-index:var(--z-sticky);display:inline-flex;align-items:center;gap:4px;padding:2px 6px 2px 8px;border:1px solid var(--color-accent-bd);border-radius:999px;background:var(--color-accent-soft);color:var(--color-accent-hover);font-family:var(--font-ui);font-size:var(--ui-font-size);font-weight:var(--weight-medium);line-height:var(--leading-normal);white-space:nowrap;user-select:none}.wm-pill .kw-icon[data-v-35d707a6]{flex:none}.wm-x[data-v-35d707a6]{display:inline-flex;align-items:center;justify-content:center;border:none;background:none;color:inherit;opacity:.6;cursor:pointer;padding:0 2px;border-radius:var(--radius-sm)}.wm-x[data-v-35d707a6]:hover{opacity:1}.wm-x[data-v-35d707a6]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.add-menu-anchor[data-v-35d707a6]{display:inline-flex;flex:none}.add-menu-anchor .ui-icon-button.is-open[data-v-35d707a6]{background:var(--color-accent-soft);color:var(--color-accent-hover)}.add-menu[data-v-35d707a6]{position:fixed;z-index:var(--z-dropdown);min-width:220px;width:max-content;max-width:calc(100vw - var(--space-8));background:var(--color-surface-raised);border:1px solid var(--color-line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:5px;display:flex;flex-direction:column;gap:1px;font-family:var(--font-ui)}.add-menu .pd-check[data-v-35d707a6]{color:var(--muted)}.add-menu .pd-row.is-current .pd-check[data-v-35d707a6],.add-menu .pd-row.is-current .pd-name[data-v-35d707a6]{color:var(--color-accent-hover)}.mode-chip[data-v-35d707a6]{display:inline-flex;align-items:center;flex:none;border:1px solid var(--line);border-radius:var(--radius-sm);background:transparent;overflow:hidden;transition:background .1s,border-color .1s,color .15s}.mode-chip[data-v-35d707a6]:hover{background:var(--color-surface-sunken)}.mode-chip.on[data-v-35d707a6]{background:var(--color-accent-soft);border-color:var(--color-accent-bd)}.mode-chip-main[data-v-35d707a6]{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border:none;background:none;color:var(--color-text-muted);font-family:var(--font-ui);font-size:var(--ui-font-size);font-weight:var(--weight-medium);line-height:var(--leading-normal);cursor:pointer;user-select:none}.mode-chip-main[data-v-35d707a6]:hover{color:var(--color-text)}.mode-chip.on .mode-chip-main[data-v-35d707a6]{color:var(--color-accent-hover)}.mode-chip-x[data-v-35d707a6]{display:inline-flex;align-items:center;justify-content:center;padding:0 4px;border:none;background:none;color:inherit;cursor:pointer}.mode-chip-x[data-v-35d707a6]:hover{color:var(--color-text)}.mode-chip.on .mode-chip-x[data-v-35d707a6]:hover{color:var(--color-accent-hover)}.mode-chip-x[data-v-35d707a6]:focus-visible{outline:2px solid var(--color-accent);outline-offset:-2px}@media(max-width:980px){.model-pill b[data-v-35d707a6]{max-width:130px}.perm-pill[data-v-35d707a6]{max-width:104px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}@media(max-width:640px){.composer[data-v-35d707a6]{padding:9px var(--dock-inline-right, max(12px, var(--safe-right))) max(24px,var(--safe-bottom)) var(--dock-inline-left, max(12px, var(--safe-left)))}.composer-card[data-v-35d707a6]{--composer-send-size: 36px;max-width:100%}.input-row[data-v-35d707a6]{gap:6px;min-width:0}.send[data-v-35d707a6]{width:var(--composer-send-size);height:var(--composer-send-size);min-width:var(--composer-send-size);padding:0;border-radius:50%;font-size:0;align-self:flex-end;position:relative}.send svg[data-v-35d707a6]{display:none}.send[data-v-35d707a6]:after{content:"↑";font-size:17px;line-height:1;color:var(--bg)}.stop[data-v-35d707a6]{width:var(--composer-send-size);height:var(--composer-send-size);min-width:var(--composer-send-size);padding:0;border-radius:50%;font-size:0;align-self:flex-end;position:relative}.stop svg[data-v-35d707a6]{display:none}.stop[data-v-35d707a6]:after{content:"■";font-size:17px;line-height:1}.perm-pill[data-v-35d707a6],.add-menu-anchor[data-v-35d707a6],.mode-chip[data-v-35d707a6]{display:none}.model-dropdown[data-v-35d707a6]{right:10px;left:auto;min-width:180px;max-width:calc(100vw - 24px)}.ph[data-v-35d707a6]{font-size:16px}.model-pill[data-v-35d707a6],.attach-btn[data-v-35d707a6]{font-size:var(--ui-font-size)}.toolbar[data-v-35d707a6]{gap:6px;min-width:0}.toolbar-left[data-v-35d707a6],.toolbar-right[data-v-35d707a6]{min-width:0}.model-pill[data-v-35d707a6]{max-width:min(52vw,220px)}.model-pill b[data-v-35d707a6]{max-width:min(40vw,170px)}.md-row[data-v-35d707a6],.md-section[data-v-35d707a6]{font-size:var(--ui-font-size)}.md-thinking[data-v-35d707a6]{flex-wrap:wrap;row-gap:6px}.md-thinking .effort-segments[data-v-35d707a6]{margin-left:0;width:100%;justify-content:space-between}.md-thinking .effort-seg[data-v-35d707a6]{flex:1;padding:5px 6px}.pd-name[data-v-35d707a6]{font-size:var(--ui-font-size)}.pd-desc[data-v-35d707a6]{font-size:var(--text-xs)}}.ui-card[data-v-9c9f9a9a]{background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-md);overflow:hidden}.ui-card.is-elevated[data-v-9c9f9a9a]{box-shadow:var(--shadow-md);border-color:transparent}.ui-card__head[data-v-9c9f9a9a]{display:flex;align-items:center;gap:var(--space-2);padding:10px 14px;border-bottom:1px solid var(--color-line);background:var(--color-surface);font-family:var(--font-mono);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text)}.ui-card__body[data-v-9c9f9a9a]{padding:14px;color:var(--color-text-muted)}.ui-card__foot[data-v-9c9f9a9a]{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-2);padding:10px 14px;border-top:1px solid var(--color-line);background:var(--color-surface)}.goal-strip[data-v-9e444f61]{--composer-send-size: 32px;--composer-send-inset: var(--space-2);--goal-corner-radius: calc((var(--composer-send-size) / 2) + var(--composer-send-inset) + var(--space-3));margin:var(--space-2) var(--space-4) 0;box-shadow:var(--shadow-md)}.goal-strip.ui-card[data-v-9e444f61]{border-radius:var(--goal-corner-radius);corner-shape:superellipse(1.5)}.goal-strip:not(.expanded).ui-card[data-v-9e444f61]{border-radius:var(--radius-full);corner-shape:round}.goal-strip[data-v-9e444f61] .ui-card__foot{padding:var(--composer-send-inset)}.goal-strip[data-v-9e444f61] .ui-card__head,.goal-strip[data-v-9e444f61] .ui-card__body,.goal-strip[data-v-9e444f61] .ui-card__foot{padding-left:calc((var(--composer-send-inset) + var(--composer-send-size)) / 2)}.goal-strip[data-v-9e444f61] .ui-card__body{background:var(--color-surface-raised);max-height:480px;overflow:hidden;opacity:1;transition:max-height var(--duration-slow) var(--ease-out),padding-top var(--duration-slow) var(--ease-out),padding-bottom var(--duration-slow) var(--ease-out),opacity var(--duration-base) var(--ease-out)}.goal-strip[data-v-9e444f61]:not(.expanded) .ui-card__body{max-height:0;padding-top:0;padding-bottom:0;opacity:0}.goal-strip[data-v-9e444f61] .ui-card__head{border-bottom-color:var(--color-line);transition:border-bottom-color var(--duration-base) var(--ease-out)}.goal-strip[data-v-9e444f61]:not(.expanded) .ui-card__head{border-bottom-color:transparent}.goal-row[data-v-9e444f61]{width:100%;display:flex;align-items:center;gap:var(--space-2);padding:0;border:none;background:transparent;color:var(--color-text);font:var(--text-base)/var(--leading-normal) var(--font-ui);text-align:left;cursor:pointer}.goal-kicker[data-v-9e444f61]{flex:none;color:var(--color-success);font:var(--text-base)/var(--leading-normal) var(--font-ui);font-weight:var(--weight-semibold)}.goal-icon[data-v-9e444f61]{flex:none;color:var(--color-success);margin-right:calc(-1 * var(--space-1))}.goal-objective[data-v-9e444f61]{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--color-text);font-size:var(--text-base);text-align:left}.goal-objective.expanded-hidden[data-v-9e444f61]{visibility:hidden;pointer-events:none}.goal-status[data-v-9e444f61]{flex:none}.goal-progress[data-v-9e444f61]{width:54px;height:4px;border-radius:var(--radius-full);background:var(--color-line);overflow:hidden;flex:none}.goal-progress-fill[data-v-9e444f61]{display:block;height:100%;border-radius:var(--radius-sm);background:var(--color-success)}.goal-chevron[data-v-9e444f61]{width:var(--p-ic-sm);height:var(--p-ic-sm);color:var(--color-text-muted);transition:transform var(--duration-fast) var(--ease-out);flex:none}.goal-chevron.open[data-v-9e444f61]{transform:rotate(90deg)}.goal-full[data-v-9e444f61]{color:var(--color-text);font-size:var(--text-base);line-height:var(--leading-normal);white-space:pre-wrap;overflow-wrap:anywhere}.goal-criterion[data-v-9e444f61]{margin-top:var(--space-3);color:var(--color-text-muted);font:var(--text-xs) var(--font-mono);text-transform:uppercase}.goal-criterion p[data-v-9e444f61]{margin:var(--space-1) 0 0;color:var(--color-text-muted);font:var(--text-xs)/var(--leading-normal) var(--font-ui);text-transform:none}.goal-footer[data-v-9e444f61]{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);width:100%;min-width:0}.goal-strip[data-v-9e444f61] .ui-card__foot{max-height:100px;overflow:hidden;opacity:1;transition:max-height var(--duration-slow) var(--ease-out),padding-top var(--duration-slow) var(--ease-out),padding-bottom var(--duration-slow) var(--ease-out),opacity var(--duration-base) var(--ease-out),border-top-color var(--duration-base) var(--ease-out)}.goal-strip[data-v-9e444f61]:not(.expanded) .ui-card__foot{max-height:0;padding-top:0;padding-bottom:0;border-top-color:transparent;opacity:0}.goal-meta[data-v-9e444f61]{min-width:0;display:flex;flex-wrap:wrap;gap:var(--space-2);color:var(--color-text-muted);font:var(--text-xs)/var(--leading-normal) var(--font-ui);font-weight:var(--weight-medium);font-variant-numeric:tabular-nums}.goal-actions[data-v-9e444f61]{display:flex;gap:var(--space-2);justify-content:flex-end;flex:none}.goal-action[data-v-9e444f61]{flex:none;min-width:0;height:var(--composer-send-size);border-radius:var(--radius-full);padding-inline:var(--space-4)}.goal-action[data-v-9e444f61] .ui-button__content{gap:var(--space-1)}@media(max-width:640px){.goal-strip[data-v-9e444f61]{--composer-send-size: 36px;margin:var(--space-2) var(--space-3) 0}.goal-progress[data-v-9e444f61]{display:none}}@media(prefers-reduced-motion:reduce){.goal-strip[data-v-9e444f61] .ui-card__head,.goal-strip[data-v-9e444f61] .ui-card__body,.goal-strip[data-v-9e444f61] .ui-card__foot{transition:none}}.qcard[data-v-2af45fec]{margin:var(--space-2) 0}.qcard.ui-card[data-v-2af45fec]{border-color:var(--color-accent-bd)}.qcard[data-v-2af45fec] .ui-card__head{background:var(--color-accent-soft);border-bottom-color:var(--color-accent-bd)}.qcard.minimized[data-v-2af45fec] .ui-card__body{display:none}.qcard.minimized[data-v-2af45fec] .ui-card__head{border-bottom:none}.qh[data-v-2af45fec]{display:flex;align-items:center;gap:var(--space-2);width:100%;font:var(--text-sm)/var(--leading-normal) var(--font-ui)}.qh-ic[data-v-2af45fec]{width:var(--p-ic-md);height:var(--p-ic-md);display:inline-flex;align-items:center;justify-content:center;color:var(--color-accent);font-weight:var(--weight-semibold);font-size:15px;line-height:1;flex:none}.qtitle[data-v-2af45fec]{color:var(--color-accent-hover);font-size:var(--text-base);font-weight:var(--weight-semibold)}.qstep[data-v-2af45fec]{color:var(--color-text-muted);font:var(--text-xs) var(--font-ui);margin-left:var(--space-1)}.qmin[data-v-2af45fec]{margin-left:auto}.qmin-peek[data-v-2af45fec]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--color-text-muted);font:var(--text-xs) var(--font-ui)}.qbody[data-v-2af45fec]{color:var(--color-text);font:var(--text-base)/var(--leading-normal) var(--font-ui)}.qsteps[data-v-2af45fec]{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-3);font-family:var(--font-ui)}.qstep-dot[data-v-2af45fec]{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:var(--radius-full);border:1px solid var(--color-line);background:var(--color-surface);color:var(--color-text-muted);font:var(--text-xs) var(--font-ui);cursor:pointer;padding:0;transition:background var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out)}.qstep-dot[data-v-2af45fec]:hover:not(.active){background:var(--color-surface-sunken)}.qstep-dot.active[data-v-2af45fec]{border-color:var(--color-accent);background:var(--color-accent);color:var(--color-text-on-accent);font-weight:var(--weight-medium)}.qstep-dot.answered[data-v-2af45fec]:not(.active){border-color:var(--color-accent);color:var(--color-accent)}.qheader-chip[data-v-2af45fec]{margin-bottom:var(--space-2)}.qtext[data-v-2af45fec]{font-size:var(--text-base);color:var(--color-text);font-weight:var(--weight-medium);margin-bottom:var(--space-2);line-height:var(--leading-normal)}.qmdbody[data-v-2af45fec]{margin-bottom:var(--space-2)}.qopts[data-v-2af45fec]{display:flex;flex-direction:column;gap:var(--space-1);margin-top:var(--space-2)}.qopt[data-v-2af45fec]{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border:1px solid var(--color-line);border-radius:var(--radius-md);cursor:pointer;font:var(--text-sm)/var(--leading-normal) var(--font-ui);color:var(--color-text);transition:background var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out);user-select:none}.qopt[data-v-2af45fec]:hover{background:var(--color-surface-sunken)}.qopt.selected[data-v-2af45fec]{border-color:var(--color-accent-bd);background:var(--color-accent-soft);color:var(--color-text)}.qopt-key[data-v-2af45fec]{color:var(--color-text-muted);font:var(--text-xs) var(--font-ui);font-weight:var(--weight-medium);width:12px;flex:none;text-align:center}.qopt-glyph[data-v-2af45fec]{color:var(--color-accent-hover);font-size:var(--text-base);flex:none}.qopt-text[data-v-2af45fec]{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.qopt-label[data-v-2af45fec]{color:var(--color-text);font-size:var(--text-base);font-weight:var(--weight-medium)}.qopt-desc[data-v-2af45fec]{color:var(--color-text-muted);font:var(--text-xs)/var(--leading-normal) var(--font-ui);font-weight:var(--weight-medium)}.chk[data-v-2af45fec],.rad[data-v-2af45fec]{font:var(--text-base) var(--font-mono)}.other-input[data-v-2af45fec]{flex:1;font:var(--text-base) var(--font-ui);border:none;border-bottom:1px solid var(--color-line);outline:none;padding:2px var(--space-1);color:var(--color-text);background:transparent;min-width:0}.other-input[data-v-2af45fec]:focus-visible{border-bottom-color:var(--color-accent);box-shadow:0 1px 0 0 var(--color-accent)}.qfoot[data-v-2af45fec]{display:flex;justify-content:flex-end;gap:var(--space-2);width:100%}@media(max-width:640px){.qh[data-v-2af45fec]{flex-wrap:wrap;row-gap:var(--space-1)}.qtext[data-v-2af45fec]{font-size:var(--text-lg)}.qstep-dot[data-v-2af45fec]{width:28px;height:28px;font:var(--text-xs) var(--font-ui)}.qopt[data-v-2af45fec]{min-height:44px;padding:var(--space-3);font-size:var(--text-base);border-radius:var(--radius-md)}.qopt-desc[data-v-2af45fec]{font-size:var(--text-xs)}.other-input[data-v-2af45fec]{flex-basis:100%;min-height:28px}.qfoot[data-v-2af45fec]{flex-direction:column}.qfoot-btn[data-v-2af45fec]{width:100%;min-height:46px}.qfoot-main[data-v-2af45fec]{order:-1}}.appr[data-v-458a9d7d]{margin:var(--space-2) 0}.appr.ui-card[data-v-458a9d7d]{border-color:var(--color-warning-bd)}.appr[data-v-458a9d7d] .ui-card__head{background:var(--color-warning-soft);border-bottom-color:var(--color-warning-bd)}.appr.minimized[data-v-458a9d7d] .ui-card__body{display:none}.appr.minimized[data-v-458a9d7d] .ui-card__head{border-bottom:none}.ah[data-v-458a9d7d]{display:flex;align-items:center;gap:var(--space-2);width:100%;font:var(--text-sm)/var(--leading-normal) var(--font-ui);flex-wrap:nowrap}.ah-ic[data-v-458a9d7d]{width:var(--p-ic-md);height:var(--p-ic-md);display:inline-flex;align-items:center;justify-content:center;color:var(--color-warning);font-weight:var(--weight-semibold);font-size:15px;line-height:1;flex:none}.akind[data-v-458a9d7d]{color:var(--color-warning);font-size:var(--text-base);font-weight:var(--weight-semibold);white-space:nowrap;flex:none}.apath[data-v-458a9d7d]{color:var(--color-text);font:var(--text-sm) var(--font-mono);flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ah-path[data-v-458a9d7d]{margin-bottom:var(--space-2);color:var(--color-text-muted);font:var(--text-xs) var(--font-mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.aw[data-v-458a9d7d],.minimized .amin[data-v-458a9d7d]{margin-left:auto}.diff[data-v-458a9d7d]{border:1px solid var(--color-line);border-radius:var(--radius-md);background:var(--color-surface-sunken);overflow:hidden;font:var(--text-sm)/1.85 var(--font-mono)}.dl[data-v-458a9d7d]{display:flex;padding:0 var(--space-3)}.dg[data-v-458a9d7d]{width:30px;color:var(--color-text-muted);text-align:right;padding-right:var(--space-3);user-select:none}.dc[data-v-458a9d7d]{white-space:pre;font:inherit}.del[data-v-458a9d7d]{background:var(--color-danger-soft)}.del .dc[data-v-458a9d7d]{color:var(--color-danger)}.add[data-v-458a9d7d]{background:var(--color-success-soft)}.add .dc[data-v-458a9d7d]{color:var(--color-success)}.shell-cmd[data-v-458a9d7d]{font:var(--text-sm) var(--font-mono);background:var(--color-surface-sunken);border:1px solid var(--color-line);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);white-space:pre-wrap;word-break:break-all;max-height:160px;overflow-y:auto;color:var(--color-text)}.shell-dollar[data-v-458a9d7d]{color:var(--color-accent-hover);font-weight:var(--weight-medium);margin-right:var(--space-2)}.shell-cwd[data-v-458a9d7d]{font:var(--text-xs) var(--font-mono);color:var(--color-text-muted);margin-top:var(--space-1)}.shell-danger[data-v-458a9d7d]{margin-top:var(--space-2);padding:var(--space-1) var(--space-3);border:1px solid var(--color-danger-bd);border-radius:var(--radius-sm);color:var(--color-danger);font:var(--text-sm) var(--font-ui);background:var(--color-danger-soft)}.body-file[data-v-458a9d7d]{border:1px solid var(--color-line);border-radius:var(--radius-md);overflow:hidden}.file-bar[data-v-458a9d7d]{padding:var(--space-1) var(--space-3);background:var(--color-surface);border-bottom:1px solid var(--color-line);font:var(--text-xs) var(--font-mono);color:var(--color-text-muted)}.file-lang[data-v-458a9d7d]{letter-spacing:.04em}.file-content[data-v-458a9d7d]{padding:var(--space-2) 0;font:var(--text-sm)/1.7 var(--font-mono);background:var(--color-surface-sunken);max-height:240px;overflow-y:auto}.file-line[data-v-458a9d7d]{display:flex;padding:0 var(--space-3)}.file-ln[data-v-458a9d7d]{width:30px;color:var(--color-text-muted);text-align:right;padding-right:var(--space-3);user-select:none;flex:none}.file-text[data-v-458a9d7d]{white-space:pre;font:inherit}.body-chip[data-v-458a9d7d]{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;font:var(--text-base)/var(--leading-normal) var(--font-ui);color:var(--color-text)}.chip-label[data-v-458a9d7d]{background:var(--color-surface-sunken);border:1px solid var(--color-line);border-radius:var(--radius-sm);padding:2px var(--space-2);font:var(--weight-semibold) var(--text-xs) var(--font-mono);color:var(--color-text-muted);white-space:nowrap}.chip-value[data-v-458a9d7d]{font:var(--text-sm) var(--font-mono);color:var(--color-text);word-break:break-all}.chip-detail[data-v-458a9d7d]{font:var(--text-xs) var(--font-ui);color:var(--color-text-muted)}.todo-item[data-v-458a9d7d]{display:flex;align-items:flex-start;gap:var(--space-2);padding:var(--space-1) 0;font:var(--text-base)/var(--leading-normal) var(--font-ui);color:var(--color-text)}.todo-glyph[data-v-458a9d7d]{color:var(--color-accent);font-size:var(--text-sm);flex:none;width:14px}.todo-title[data-v-458a9d7d]{color:var(--color-text)}.todo-done[data-v-458a9d7d]{color:var(--color-text-muted);text-decoration:line-through}.body-generic[data-v-458a9d7d]{font:var(--text-base)/var(--leading-normal) var(--font-ui);color:var(--color-text);word-break:break-word}.body-plan[data-v-458a9d7d]{max-height:50vh;overflow-y:auto}.feedback-wrap[data-v-458a9d7d]{margin-top:var(--space-3)}.feedback-ta[data-v-458a9d7d]{width:100%;box-sizing:border-box;font:var(--text-sm) var(--font-ui);padding:var(--space-2) var(--space-2);border:1px solid var(--color-line);border-radius:var(--radius-sm);resize:none;outline:none;color:var(--color-text);background:var(--color-surface-raised)}.feedback-ta[data-v-458a9d7d]:focus-visible{border-color:var(--color-accent);box-shadow:var(--p-focus-ring)}.feedback-hint[data-v-458a9d7d]{font:var(--text-xs) var(--font-ui);color:var(--color-text-muted);margin-top:var(--space-1)}.abtn[data-v-458a9d7d],.plan-actions[data-v-458a9d7d]{display:flex;justify-content:flex-end;gap:var(--space-2);width:100%}.plan-actions[data-v-458a9d7d]{flex-wrap:wrap}.k[data-v-458a9d7d]{opacity:.75}@media(max-width:640px){.diff[data-v-458a9d7d],.file-content[data-v-458a9d7d]{overflow-x:auto;-webkit-overflow-scrolling:touch}.file-content[data-v-458a9d7d]{max-height:50vh}.abtn[data-v-458a9d7d],.plan-actions[data-v-458a9d7d]{flex-direction:column}.kbtn[data-v-458a9d7d]{width:100%;min-height:46px}}.ui-seg[data-v-d1aaccd7]{display:inline-flex;gap:2px;padding:2px;background:var(--color-surface-sunken);border:1px solid var(--color-line);border-radius:var(--radius-md)}.ui-seg__item[data-v-d1aaccd7]{border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-muted);font-family:var(--font-ui);font-weight:var(--weight-medium);cursor:pointer;line-height:1;transition:background var(--duration-base) var(--ease-out),color var(--duration-base) var(--ease-out),box-shadow var(--duration-base) var(--ease-out)}.ui-seg--md .ui-seg__item[data-v-d1aaccd7]{padding:5px var(--space-3);font-size:var(--text-sm)}.ui-seg--sm .ui-seg__item[data-v-d1aaccd7]{height:24px;padding:0 var(--space-2);font-size:var(--text-sm)}.ui-seg__item[data-v-d1aaccd7]:hover:not(.is-on){color:var(--color-text)}.ui-seg__item.is-on[data-v-d1aaccd7]{background:var(--color-surface-raised);color:var(--color-text);box-shadow:var(--shadow-xs)}.ui-seg__item[data-v-d1aaccd7]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.status-glyph[data-v-f595d935]{flex:none;width:16px;font-size:var(--text-base);line-height:1;text-align:center;user-select:none}.status-glyph.s-run[data-v-f595d935]{color:var(--color-accent);font-weight:500}.status-glyph.s-done[data-v-f595d935]{color:var(--color-success)}.status-glyph.s-fail[data-v-f595d935]{color:var(--color-danger)}.status-glyph.s-pending[data-v-f595d935]{color:var(--color-text-faint)}.taskspane[data-v-30ebee08]{padding:14px 18px 10px;flex:1;min-height:0;display:flex;flex-direction:column}.tp-head[data-v-30ebee08]{border-top:1px solid var(--line);padding-top:10px;margin-bottom:8px;display:flex;align-items:baseline;gap:8px}.tp-title[data-v-30ebee08]{color:var(--color-accent-hover);font-weight:500;font-size:var(--text-base);text-transform:capitalize}.tp-count[data-v-30ebee08]{color:var(--muted);font-size:var(--text-base)}.tp-filter[data-v-30ebee08]{padding-bottom:8px}.tp-body[data-v-30ebee08]{flex:1;min-height:0;display:flex;gap:10px}.tp-list-col[data-v-30ebee08]{flex:1;min-width:0;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:2px}.tp-row[data-v-30ebee08]{padding:4px 0}.tp-row.done .tp-name[data-v-30ebee08],.tp-card.done .tp-card-name[data-v-30ebee08]{color:var(--muted);text-decoration:line-through}.tp-row.fail .tp-name[data-v-30ebee08],.tp-card.fail .tp-card-name[data-v-30ebee08]{color:var(--color-danger)}.tp-main[data-v-30ebee08]{display:flex;align-items:center;gap:7px;font-size:var(--text-base)}.tp-row.expandable>.tp-main[data-v-30ebee08]{cursor:pointer;border-radius:4px}.tp-row.expandable>.tp-main[data-v-30ebee08]:hover{background:var(--panel2)}.tp-row.selected>.tp-main[data-v-30ebee08]{background:var(--panel2)}.tp-chevron[data-v-30ebee08]{flex:none;color:var(--muted);transition:transform .12s}.tp-chevron.open[data-v-30ebee08]{transform:rotate(90deg)}.tp-name[data-v-30ebee08]{color:var(--color-text);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tp-time[data-v-30ebee08]{flex:none;font-size:var(--text-base);color:var(--muted)}.tp-stop[data-v-30ebee08]{flex:none;background:none;border:1px solid color-mix(in srgb,var(--color-danger) 22%,var(--bg));border-radius:var(--radius-xs);color:var(--color-danger);font-size:max(9px,calc(var(--ui-font-size) - 3.5px));padding:1px 8px;cursor:pointer;font-family:var(--mono)}.tp-stop[data-v-30ebee08]:hover{background:var(--panel)}.tp-detail[data-v-30ebee08]{margin:4px 0 0 23px;display:flex;flex-direction:column;gap:4px}.tp-detail-col[data-v-30ebee08]{flex:0 0 44%;min-width:0;min-height:0;overflow-y:auto;border-left:1px solid var(--line);padding-left:10px;display:flex;flex-direction:column;gap:6px}.tp-detail-head[data-v-30ebee08]{flex:none;padding-bottom:2px}.tp-detail-empty[data-v-30ebee08]{padding:18px 6px;text-align:center;color:var(--faint);font-size:var(--ui-font-size-sm)}.tp-codebox[data-v-30ebee08]{position:relative;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-xs)}.tp-copy[data-v-30ebee08]{position:absolute;top:4px;right:6px;z-index:1;opacity:0;visibility:hidden;transition:opacity .12s ease,visibility .12s ease;background:var(--panel2);border:1px solid var(--line);border-radius:var(--radius-xs);color:var(--dim);font-size:max(9px,calc(var(--ui-font-size) - 3.5px));padding:1px 7px;cursor:pointer;font-family:var(--sans)}.tp-codebox:hover .tp-copy[data-v-30ebee08],.tp-copy[data-v-30ebee08]:focus-visible{opacity:1;visibility:visible}.tp-copy[data-v-30ebee08]:hover{background:var(--panel)}.tp-copy.copied[data-v-30ebee08]{color:var(--color-success);border-color:color-mix(in srgb,var(--color-success) 30%,var(--line))}.tp-pre[data-v-30ebee08]{margin:0;padding:6px 10px;max-height:320px;overflow:auto;contain:layout paint}.tp-pre code[data-v-30ebee08]{display:block;font-family:var(--mono);font-size:var(--text-base);line-height:1.55;color:var(--dim);white-space:pre-wrap;word-break:break-word}.tp-cmd[data-v-30ebee08]{display:block;color:var(--muted)}.tp-line[data-v-30ebee08]{display:block}.tp-grid[data-v-30ebee08]{flex:1;min-height:0;overflow-y:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;align-content:start}.tp-card[data-v-30ebee08]{display:flex;flex-direction:column;gap:6px;padding:8px 10px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--color-text);font-family:var(--sans);font-size:var(--text-base);text-align:left;cursor:pointer;transition:border-color .12s ease,background .12s ease}.tp-card[data-v-30ebee08]:hover{background:var(--panel2);border-color:color-mix(in srgb,var(--color-accent-hover) 40%,var(--line))}.tp-card[data-v-30ebee08]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.tp-card-line[data-v-30ebee08]{display:flex;align-items:center;gap:7px;min-width:0}.tp-card-name[data-v-30ebee08]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tp-card-meta[data-v-30ebee08]{justify-content:space-between}.tp-empty[data-v-30ebee08]{padding:24px 0;text-align:center;color:var(--faint);font-size:var(--ui-font-size-sm)}@media(max-width:640px){.taskspane[data-v-30ebee08]{padding:14px 14px 16px}.tp-body[data-v-30ebee08]{flex-direction:column;overflow-y:auto;gap:8px}.tp-list-col[data-v-30ebee08]{flex:none;overflow:visible}.tp-detail-col[data-v-30ebee08]{flex:none;border-left:none;border-top:1px solid var(--line);padding-left:0;padding-top:8px;overflow:visible}.tp-main[data-v-30ebee08]{flex-wrap:wrap;row-gap:4px}.tp-name[data-v-30ebee08]{font-size:var(--ui-font-size-sm)}.tp-stop[data-v-30ebee08]{min-height:32px;display:inline-flex;align-items:center;padding:4px 12px;border-radius:6px;font-size:var(--ui-font-size-xs)}.tp-detail[data-v-30ebee08]{margin-left:0}.tp-pre[data-v-30ebee08]{font-size:var(--ui-font-size-xs)}}.tp-stop[data-v-30ebee08]{border-radius:var(--radius-md);font-family:var(--sans)}.todo-card[data-v-4f8e45d2]{display:flex;flex-direction:column;gap:var(--space-1);font-size:var(--text-base)}.tc-progress[data-v-4f8e45d2]{display:flex;align-items:center;gap:var(--space-1);padding:0 var(--space-1) var(--space-1);color:var(--color-text-muted);font-size:var(--text-sm);font-weight:var(--weight-medium)}.tc-progress-ico[data-v-4f8e45d2]{color:var(--color-success)}.tc-row[data-v-4f8e45d2]{display:flex;align-items:center;gap:7px;padding:var(--space-2) var(--space-3);background:var(--color-surface-sunken);border:1px solid var(--color-line);border-radius:var(--radius-sm);color:var(--color-text)}.tc-name[data-v-4f8e45d2]{flex:1;min-width:0;overflow-wrap:anywhere;line-height:1.4}.tc-row.s-in_progress[data-v-4f8e45d2]{border-color:var(--color-accent-bd)}.tc-row.s-in_progress .tc-name[data-v-4f8e45d2]{font-weight:var(--weight-medium)}.tc-row.s-done .tc-name[data-v-4f8e45d2]{color:var(--color-text-faint);text-decoration:line-through}.tc-empty[data-v-4f8e45d2]{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);padding:var(--space-6) var(--space-4);color:var(--color-text-faint);font-size:var(--text-sm)}.tc-empty-ico[data-v-4f8e45d2]{width:28px;height:28px;color:var(--color-line-strong)}@media(max-width:640px){.todo-card[data-v-4f8e45d2]{font-size:var(--text-lg)}}.terminal-panel[data-v-4d134005]{display:flex;flex-direction:column;height:300px;min-height:0}.term-state[data-v-4d134005]{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-3);color:var(--color-text-muted);font-size:var(--text-sm);text-align:center}.term-toolbar[data-v-4d134005]{flex:none;display:flex;align-items:center;gap:var(--space-2);padding-bottom:var(--space-2);border-bottom:1px solid var(--color-line)}.term-tabs[data-v-4d134005]{flex:1;min-width:0;display:flex;align-items:center;gap:var(--space-1);overflow-x:auto}.term-tab[data-v-4d134005]{flex:none;display:inline-flex;align-items:center;gap:var(--space-2);height:28px;padding:0 4px 0 var(--space-2);border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-muted);font-family:var(--font-ui);font-size:var(--text-xs);cursor:pointer}.term-tab[data-v-4d134005]:hover{background:var(--color-surface-sunken);color:var(--color-text)}.term-tab.active[data-v-4d134005]{background:var(--color-accent-soft);color:var(--color-text)}.term-tab-label[data-v-4d134005]{font-weight:500}.term-add[data-v-4d134005]{flex:none}.term-add[data-v-4d134005] svg{width:var(--p-ic-sm);height:var(--p-ic-sm)}.term-error[data-v-4d134005]{flex:none;padding:var(--space-2);color:var(--color-danger);font-size:var(--text-xs);border-bottom:1px solid var(--color-line)}.term-exit[data-v-4d134005]{flex:none;padding:var(--space-2);color:var(--color-warning);font-family:var(--font-mono);font-size:var(--text-xs);border-bottom:1px solid var(--color-line)}.term-output[data-v-4d134005]{flex:1;min-height:0;margin:var(--space-2) 0;padding:var(--space-2);overflow-y:auto;background:var(--color-bg);border:1px solid var(--color-line);border-radius:var(--radius-md);color:var(--color-text);font-family:var(--font-mono);font-size:var(--text-xs);line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere}.term-input-row[data-v-4d134005]{flex:none;display:flex;align-items:center;gap:var(--space-2)}.term-prompt[data-v-4d134005]{flex:none;color:var(--color-accent);font-family:var(--font-mono);font-size:var(--text-xs)}.term-input[data-v-4d134005]{flex:1;min-width:0;background:transparent;border:none;outline:none;padding:var(--space-1) 0;color:var(--color-text);font-family:var(--font-mono);font-size:var(--text-xs)}.term-input[data-v-4d134005]::placeholder{color:var(--color-text-faint)}.term-input[data-v-4d134005]:disabled{opacity:.5}.ui-empty[data-v-38e00944]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-8) var(--space-4);text-align:center;color:var(--color-text-muted)}.ui-empty__icon[data-v-38e00944]{color:var(--color-text-faint)}.ui-empty__icon[data-v-38e00944] svg{width:48px;height:48px}.ui-empty__title[data-v-38e00944]{font-size:var(--text-base);font-weight:var(--weight-medium);color:var(--color-text-muted)}.ui-empty__hint[data-v-38e00944]{font-size:var(--text-sm);color:var(--color-text-muted)}.goal-panel[data-v-d3a415b3]{min-width:260px;max-width:420px}.gp-head[data-v-d3a415b3]{display:flex;flex-direction:column;gap:var(--space-2)}.gp-title-row[data-v-d3a415b3]{display:flex;align-items:center;gap:var(--space-2);min-width:0}.gp-icon[data-v-d3a415b3]{flex:none;color:var(--color-success)}.gp-kicker[data-v-d3a415b3]{flex:none;color:var(--color-success);font:var(--text-base)/var(--leading-normal) var(--font-ui);font-weight:var(--weight-semibold)}.gp-objective[data-v-d3a415b3]{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--color-text);font:var(--text-base)/var(--leading-normal) var(--font-ui);font-weight:var(--weight-medium)}.gp-status[data-v-d3a415b3]{flex:none}.gp-elapsed[data-v-d3a415b3]{flex:none;display:inline-flex;align-items:center;gap:var(--space-1);color:var(--color-text-muted);font:var(--text-xs)/var(--leading-normal) var(--font-ui);font-weight:var(--weight-medium);font-variant-numeric:tabular-nums}.gp-actions[data-v-d3a415b3]{flex:none;display:flex;align-items:center;gap:var(--space-1);margin-left:var(--space-1)}.gp-action[data-v-d3a415b3]{width:28px;height:28px}.gp-criterion[data-v-d3a415b3]{display:flex;flex-direction:column;gap:var(--space-1);border-top:1px solid var(--color-line);padding-top:var(--space-2)}.gp-criterion-label[data-v-d3a415b3]{color:var(--color-text-muted);font:var(--text-xs) var(--font-mono);text-transform:uppercase}.gp-criterion-text[data-v-d3a415b3]{margin:0;color:var(--color-text-muted);font:var(--text-sm)/var(--leading-normal) var(--font-ui)}.plan-panel[data-v-9073f2b6]{min-width:300px;max-width:460px;display:flex;flex-direction:column;gap:var(--space-2)}.pp-loading[data-v-9073f2b6]{display:flex;align-items:center;gap:var(--space-2);color:var(--color-text-muted);font:var(--text-sm) var(--font-ui)}.pp-plan-wrap[data-v-9073f2b6]{display:flex;flex-direction:column;gap:var(--space-2);min-height:0}.pp-path[data-v-9073f2b6]{margin:0;color:var(--color-text-muted);font:var(--text-xs) var(--font-mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pp-plan[data-v-9073f2b6]{margin:0;max-height:300px;overflow-y:auto;padding:var(--space-2) var(--space-3);border:1px solid var(--color-line);border-radius:var(--radius-md);background:var(--color-surface-sunken);color:var(--color-text);font:var(--text-sm)/var(--leading-normal) var(--font-mono);white-space:pre-wrap;overflow-wrap:anywhere}.pp-review[data-v-9073f2b6]{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;color:var(--color-text-muted);font:var(--text-xs) var(--font-ui)}.pp-state[data-v-9073f2b6]{font-weight:var(--weight-medium)}.pp-option[data-v-9073f2b6]{color:var(--color-accent)}.pp-feedback[data-v-9073f2b6]{color:var(--color-text-muted)}.chat-dock[data-v-bda6bf1b]{--dock-inline-left: 16px;--dock-inline-right: 16px;box-sizing:border-box;width:100%;max-width:calc(var(--read-max) + var(--panes-scrollbar-width, 0px));padding-right:var(--panes-scrollbar-width, 0px);flex:none;position:relative;background:var(--color-bg);z-index:var(--z-sticky)}.chat-dock.align-center[data-v-bda6bf1b]{margin-left:auto;margin-right:auto}.chat-dock.align-left[data-v-bda6bf1b]{margin-left:0;margin-right:auto}.chat-dock.align-mobile[data-v-bda6bf1b]{max-width:none}.dock-work-panel[data-v-bda6bf1b]{position:absolute;left:16px;right:calc(16px + var(--panes-scrollbar-width, 0px));bottom:100%;background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-md);margin-bottom:7px;max-height:min(360px,50vh);display:flex;flex-direction:column;overflow:hidden}.dock-work-head[data-v-bda6bf1b]{display:flex;align-items:center;gap:8px;padding:8px 10px;border-bottom:1px solid var(--color-line)}.dock-work-tab[data-v-bda6bf1b]{font-size:var(--text-base);font-weight:500;color:var(--color-text);padding:3px 8px;border-radius:var(--radius-sm);background:var(--color-surface-sunken);border:1px solid var(--color-line)}.dock-work-tab.static[data-v-bda6bf1b]{background:transparent;border-color:transparent;padding-left:2px}.dock-work-body[data-v-bda6bf1b]{display:flex;flex-direction:column;padding:8px 10px;overflow-y:auto;min-height:0}.dock-work-body[data-v-bda6bf1b] .taskspane{border:none;background:transparent;padding:0}.dock-work-body[data-v-bda6bf1b] .taskspane .tp-head{display:none}.dock-workbar[data-v-bda6bf1b]{display:flex;align-items:center;gap:6px;padding:4px var(--dock-inline-right) 2px var(--dock-inline-left)}.dock-workbar .dw-count[data-v-bda6bf1b]{margin-left:1px}.dock-workbar .dw-count b[data-v-bda6bf1b]{font-weight:500}.dock-approval[data-v-bda6bf1b]{margin-top:8px}.chat-dock.has-approval[data-v-bda6bf1b]{max-height:calc(100dvh - 72px)}.chat-dock.has-approval>.dock-workbar[data-v-bda6bf1b]{flex:none}.chat-dock.has-approval>.dock-approval[data-v-bda6bf1b]{min-height:0}@media(max-width:640px){.chat-dock[data-v-bda6bf1b]{--dock-inline-left: max(12px, var(--safe-left));--dock-inline-right: max(12px, var(--safe-right))}.dock-work-panel[data-v-bda6bf1b]{left:10px;right:calc(10px + var(--panes-scrollbar-width, 0px))}}.chat-dock[data-v-bda6bf1b]:not(.align-mobile) .composer{padding-bottom:14px}.dock-panel-enter-active[data-v-bda6bf1b],.dock-panel-leave-active[data-v-bda6bf1b]{transition:opacity .16s ease,transform .16s ease}.dock-panel-enter-from[data-v-bda6bf1b],.dock-panel-leave-to[data-v-bda6bf1b]{opacity:0;transform:translateY(8px)}.ui-input[data-v-340f0da2]{width:100%;border:1px solid var(--color-line-strong);border-radius:var(--radius-md);background:var(--color-surface-raised);box-shadow:var(--shadow-xs);color:var(--color-text);font-family:var(--font-ui);font-size:var(--text-base);line-height:var(--leading-normal);padding:0 var(--space-3);transition:border-color var(--duration-base) var(--ease-out),box-shadow var(--duration-base) var(--ease-out)}.ui-input--md[data-v-340f0da2]{height:38px}.ui-input--sm[data-v-340f0da2]{height:32px;font-size:var(--text-sm);border-radius:var(--radius-sm)}.ui-input[data-v-340f0da2]::placeholder{color:var(--color-text-faint)}.ui-input[data-v-340f0da2]:hover:not(:disabled):not(:focus){border-color:var(--color-line-strong)}.ui-input[data-v-340f0da2]:focus{outline:none;border-color:var(--color-accent);box-shadow:var(--p-focus-ring)}.ui-input[data-v-340f0da2]:disabled{opacity:.5;cursor:not-allowed}.ui-input[readonly][data-v-340f0da2]{background:var(--color-surface-sunken)}.ui-input.has-error[data-v-340f0da2]{border-color:var(--color-danger)}.ui-input.has-error[data-v-340f0da2]:focus{box-shadow:0 0 0 3px var(--color-danger-soft)}.conv-search[data-v-c521ac2e]{flex:none;display:flex;align-items:center;gap:6px;padding:6px 16px;border-bottom:1px solid var(--color-line);background:var(--color-bg);font-family:var(--font-ui)}.conv-search-icon[data-v-c521ac2e]{flex:none;color:var(--color-text-muted)}.conv-search-input[data-v-c521ac2e]{flex:1;min-width:0}.conv-search-count[data-v-c521ac2e]{flex:none;min-width:56px;text-align:center;font-size:var(--text-xs);font-family:var(--font-mono);color:var(--color-text-muted);white-space:nowrap}.conv-search-none[data-v-c521ac2e]{color:var(--color-text-faint)}.conversation-toc[data-v-3f1c1f66]{position:absolute;z-index:var(--z-sticky);top:50%;transform:translateY(-50%);--toc-content-max: min( var(--p-content-max), calc(100cqi - var(--space-5) - var(--space-5)) );left:calc(50% + (var(--toc-content-max) / 2) + 14px);display:flex;flex-direction:column;justify-content:center;opacity:.5;transition:opacity var(--duration-base) var(--ease-out)}.conversation-toc[data-v-3f1c1f66]:before{content:"";position:absolute;inset:0 -48px 0 -14px;z-index:0}.conversation-toc[data-v-3f1c1f66]:hover,.conversation-toc[data-v-3f1c1f66]:focus-within{opacity:1}.toc-scroll[data-v-3f1c1f66]{position:relative;z-index:1;display:flex;flex-direction:column;gap:7px;padding:8px 0;max-height:calc(100vh - 200px);overflow-y:auto;scrollbar-width:none}.toc-scroll[data-v-3f1c1f66]::-webkit-scrollbar{display:none}.toc-row[data-v-3f1c1f66]{display:flex;align-items:center;gap:10px;height:18px;padding:0;border:none;background:transparent;color:var(--color-text-muted);font-family:var(--font-ui);font-size:var(--text-sm);text-align:left;cursor:pointer;white-space:nowrap}.toc-row[data-v-3f1c1f66]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.toc-bar[data-v-3f1c1f66]{flex:none;width:3px;height:14px;border-radius:var(--radius-full);background:var(--color-accent);opacity:.3;transition:opacity var(--duration-fast) var(--ease-out),height var(--duration-fast) var(--ease-out)}.toc-label[data-v-3f1c1f66]{display:block;max-width:0;overflow:hidden;opacity:0;text-overflow:ellipsis;transition:max-width .22s var(--ease-out),opacity var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out)}.conversation-toc:hover .toc-bar[data-v-3f1c1f66],.conversation-toc:focus-within .toc-bar[data-v-3f1c1f66]{height:18px;opacity:.5}.conversation-toc:hover .toc-label[data-v-3f1c1f66],.conversation-toc:focus-within .toc-label[data-v-3f1c1f66]{max-width:220px;opacity:1}.toc-row.active .toc-bar[data-v-3f1c1f66]{opacity:1;height:18px}.toc-row.active .toc-label[data-v-3f1c1f66]{color:var(--color-accent);font-weight:var(--weight-medium)}.toc-row:hover .toc-bar[data-v-3f1c1f66]{opacity:1}.toc-row:hover .toc-label[data-v-3f1c1f66]{color:var(--color-text)}.conversation-toc.toc-clipped[data-v-3f1c1f66]{visibility:hidden;pointer-events:none}.con[data-v-fad3cc77]{--read-max: 760px;display:flex;flex-direction:column;min-width:0;height:100%;position:relative;container-type:inline-size}.panes[data-v-fad3cc77]{flex:1;min-height:0;overflow-y:auto;overflow-anchor:auto;scrollbar-gutter:stable}.panes.is-following[data-v-fad3cc77],.panes.history-prepending[data-v-fad3cc77]{overflow-anchor:none}.chat-layout[data-v-fad3cc77]{display:flex;flex-direction:column;height:100%;min-height:0;position:relative}.chat-scroll[data-v-fad3cc77]{flex:1;min-height:0;position:relative}.content-wrap[data-v-fad3cc77]{width:100%;max-width:var(--read-max);min-height:100%;display:flex;flex-direction:column;flex-shrink:0}.content-wrap.align-center[data-v-fad3cc77]{margin-left:auto;margin-right:auto}.content-wrap.align-left[data-v-fad3cc77]{margin-left:0;margin-right:auto}.content-wrap.align-mobile[data-v-fad3cc77]{max-width:none}@media(max-width:640px){.con.mobile[data-v-fad3cc77]{min-width:0;overflow:hidden}.con.mobile .panes[data-v-fad3cc77]{scrollbar-gutter:auto;-webkit-overflow-scrolling:touch}.content-wrap.align-mobile[data-v-fad3cc77]{width:100%;min-width:0}}.empty-spacer[data-v-fad3cc77]{flex:1}.empty-hint[data-v-fad3cc77]{flex:none;display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;padding:0 16px 16px;color:var(--color-text);font-family:var(--font-ui)}.empty-hint-title[data-v-fad3cc77]{font-size:calc(var(--ui-font-size) + 16px);font-optical-sizing:auto;font-weight:var(--weight-semibold)}.empty-hint-title.is-starting[data-v-fad3cc77]{display:inline-flex;align-items:center;gap:9px;color:var(--dim);font-weight:400}.empty-hint-text[data-v-fad3cc77]{display:inline-block;font-size:var(--text-base);color:var(--dim);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.empty-add-workspace[data-v-fad3cc77]{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:34px;padding:7px 12px;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--dim);font-family:var(--mono);font-size:var(--ui-font-size-sm);cursor:pointer}.empty-add-workspace[data-v-fad3cc77]:hover{border-color:var(--color-accent-bd);color:var(--color-text)}.empty-add-workspace[data-v-fad3cc77]:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.empty-add-workspace svg[data-v-fad3cc77]{flex:none}.ws-pick[data-v-fad3cc77]{position:relative;font-family:var(--font-ui)}.ws-pick-btn[data-v-fad3cc77]{display:inline-flex;align-items:center;gap:7px;width:max-content;max-width:min(100%,calc(100vw - var(--space-8)));padding:5px 10px;background:var(--panel);border:1px solid var(--line);border-radius:8px;color:var(--dim);font-family:inherit;font-size:var(--ui-font-size-sm);cursor:pointer}.ws-pick-btn[data-v-fad3cc77]:hover{border-color:var(--color-accent-bd);color:var(--color-text)}.ws-pick-name[data-v-fad3cc77]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ws-pick-chev[data-v-fad3cc77]{flex:none;color:var(--muted);transition:transform .15s}.ws-pick-chev.open[data-v-fad3cc77]{transform:rotate(180deg)}.ws-pick-backdrop[data-v-fad3cc77]{position:fixed;inset:0;z-index:var(--z-sticky)}.ws-pick-menu[data-v-fad3cc77]{position:absolute;display:grid;grid-template-columns:minmax(0,1fr);left:50%;transform:translate(-50%);top:calc(100% + 6px);z-index:var(--z-dropdown);width:max-content;min-width:min(180px,calc(100cqw - var(--space-8)));max-width:calc(100cqw - var(--space-8));max-height:50vh;overflow:hidden auto;background:var(--color-surface-raised);border:1px solid var(--color-line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:4px}.ws-pick-item[data-v-fad3cc77]{display:flex;flex-direction:column;align-items:flex-start;gap:1px;width:100%;text-align:left;background:none;border:none;border-radius:6px;padding:6px 10px;cursor:pointer;font-family:var(--font-ui)}.ws-pick-item[data-v-fad3cc77]:hover{background:var(--panel2)}.ws-pick-item.on[data-v-fad3cc77]{background:var(--color-accent-soft)}.ws-pick-item-name[data-v-fad3cc77]{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-base);font-weight:var(--weight-medium);color:var(--color-text)}.ws-pick-item.on .ws-pick-item-name[data-v-fad3cc77]{color:var(--color-accent-hover)}.ws-pick-item-path[data-v-fad3cc77]{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--muted)}.ws-pick-item.ws-pick-more[data-v-fad3cc77]{flex-direction:row;align-items:center;justify-content:flex-start;font-size:var(--text-base);font-weight:var(--weight-medium);color:var(--dim)}.ws-pick-item.ws-pick-more[data-v-fad3cc77]:hover{color:var(--color-text)}.ws-pick-item.ws-pick-more span[data-v-fad3cc77],.ws-pick-action span[data-v-fad3cc77]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ws-pick-divider[data-v-fad3cc77]{height:1px;margin:4px 6px;background:var(--line)}.ws-pick-action[data-v-fad3cc77]{display:flex;align-items:center;gap:7px;width:100%;text-align:left;background:none;border:none;border-radius:6px;padding:7px 10px;cursor:pointer;font-family:var(--font-ui);font-size:var(--text-base);font-weight:var(--weight-medium);color:var(--dim)}.ws-pick-action[data-v-fad3cc77]:hover{background:var(--panel2);color:var(--color-text)}.ws-pick-action svg[data-v-fad3cc77]{flex:none}.chat-scroll[data-v-fad3cc77]{display:flex;flex-direction:column}.mobile .panes[data-v-fad3cc77]:has(>.chat-layout){overflow:hidden;scrollbar-gutter:auto}.newmsg-pill[data-v-fad3cc77]{position:absolute;left:50%;bottom:12px;transform:translate(-50%);display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;border:1px solid var(--line);background:var(--panel);color:var(--color-text);font-size:var(--ui-font-size-sm);cursor:pointer;box-shadow:var(--shadow-sm);z-index:var(--z-base)}.newmsg-pill[data-v-fad3cc77]:hover{background:var(--panel2)}.pill-chevron[data-v-fad3cc77]{width:12px;height:12px}.pill-enter-active[data-v-fad3cc77],.pill-leave-active[data-v-fad3cc77]{transition:opacity .2s ease,transform .2s ease}.pill-enter-from[data-v-fad3cc77],.pill-leave-to[data-v-fad3cc77]{opacity:0;transform:translate(-50%) translateY(8px)}.abort-toast[data-v-fad3cc77]{position:absolute;left:50%;top:60px;transform:translate(-50%);padding:8px 14px;border-radius:var(--radius-sm);background:var(--color-text);color:var(--bg);font-size:var(--ui-font-size-sm);z-index:var(--z-sticky);box-shadow:var(--shadow-sm)}.abort-toast-text[data-v-fad3cc77]{display:flex;align-items:center;gap:8px}.abort-toast-enter-active[data-v-fad3cc77],.abort-toast-leave-active[data-v-fad3cc77]{transition:opacity .15s ease,transform .15s ease}.abort-toast-enter-from[data-v-fad3cc77],.abort-toast-leave-to[data-v-fad3cc77]{opacity:0;transform:translate(-50%) translateY(-6px)}.con[data-v-fad3cc77]{background:var(--bg)}.newmsg-pill[data-v-fad3cc77]{font-family:var(--sans)}.ui-panel-header[data-v-c47879ad]{flex:none;display:flex;align-items:center;gap:var(--space-2);height:var(--panel-head-h, 48px);padding:0 6px 0 var(--space-3);box-sizing:border-box;min-width:0;border-bottom:1px solid var(--color-line);background:var(--color-surface)}.ui-panel-header__title[data-v-c47879ad]{flex:none;font:var(--weight-semibold) var(--text-xs) var(--font-mono);letter-spacing:.04em;color:var(--color-text)}.ui-panel-header__sub[data-v-c47879ad]{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:var(--text-xs) var(--font-mono);color:var(--color-text-muted)}.ui-panel-header__close[data-v-c47879ad]{flex:none;margin-left:auto}.ui-panel-header.wrap[data-v-c47879ad]{flex-wrap:wrap;height:auto;min-height:var(--panel-head-h, 48px);padding-top:3px;padding-bottom:3px;gap:4px 6px}.ui-panel-header.wrap .ui-panel-header__close[data-v-c47879ad]{margin-left:0}.file-preview[data-v-ded222d2]{display:flex;flex-direction:column;height:100%;background:var(--bg);font-family:var(--mono);min-width:0;container-type:inline-size}.fp-empty[data-v-ded222d2],.fp-loading[data-v-ded222d2]{flex:1;display:flex;align-items:center;justify-content:center;gap:10px;color:var(--muted);font-size:var(--ui-font-size)}.fp-path[data-v-ded222d2]{flex:1 1 60px;min-width:40px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;direction:rtl;text-align:left;font-size:var(--ui-font-size-xs);color:var(--muted);font-weight:400}.fp-meta[data-v-ded222d2]{display:flex;align-items:center;gap:8px;flex:none}@container (max-width: 539px){.fp-meta[data-v-ded222d2]{display:none}}.fp-lines[data-v-ded222d2],.fp-size[data-v-ded222d2]{font-size:max(9px,calc(var(--ui-font-size) - 3.5px));color:var(--muted);white-space:nowrap}.fp-search[data-v-ded222d2]{display:flex;align-items:center;gap:4px;flex:1 1 110px;min-width:70px;max-width:200px}.fp-search-input[data-v-ded222d2]{flex:1;min-width:0;height:26px;border:1px solid var(--color-line);border-radius:var(--radius-sm);padding:2px 7px;background:var(--color-surface-raised);color:var(--color-text);font:var(--text-xs) var(--font-mono)}.fp-search-count[data-v-ded222d2]{color:var(--muted);font-size:max(9px,calc(var(--ui-font-size) - 3.5px));min-width:18px;text-align:right}.fp-download[data-v-ded222d2]{display:inline-grid;place-items:center;width:26px;height:26px;flex:none;border-radius:var(--radius-sm);color:var(--color-text-muted)}.fp-download[data-v-ded222d2]:hover{background:var(--color-surface-sunken);color:var(--color-text)}.fp-download[data-v-ded222d2]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.fp-download svg[data-v-ded222d2]{width:var(--p-ic-sm);height:var(--p-ic-sm)}.fp-check[data-v-ded222d2]{color:var(--color-success)}.fp-body[data-v-ded222d2]{--fp-search-hit-bg: color-mix(in srgb, var(--star) 22%, var(--bg));--fp-search-active-bg: color-mix(in srgb, var(--star) 36%, var(--bg));--fp-token-keyword: color-mix(in srgb, var(--color-accent) 68%, var(--color-danger));--fp-token-string: var(--color-success);--fp-token-literal: var(--color-accent-hover);--fp-token-tag: var(--color-warning);flex:1;min-height:0;overflow:auto}.fp-markdown[data-v-ded222d2]{padding:16px 20px}.fp-code[data-v-ded222d2]{background:var(--bg)}.fp-line-table[data-v-ded222d2]{display:table;width:100%;border-collapse:collapse;font-size:var(--ui-font-size);line-height:1.6}.fp-line-row[data-v-ded222d2]{display:table-row}.fp-line-row.hit .fp-line-text[data-v-ded222d2],.fp-table tr.hit td[data-v-ded222d2]{background:var(--fp-search-hit-bg)}.fp-line-row.active .fp-line-text[data-v-ded222d2],.fp-table tr.active td[data-v-ded222d2]{background:var(--fp-search-active-bg)}.fp-line-row.target .fp-gutter[data-v-ded222d2],.fp-line-row.target .fp-line-text[data-v-ded222d2],.fp-table tr.target th[data-v-ded222d2],.fp-table tr.target td[data-v-ded222d2]{background:var(--color-accent-soft)}.fp-gutter[data-v-ded222d2]{display:table-cell;width:44px;padding:0 10px 0 12px;text-align:right;color:var(--faint);user-select:none;font-size:var(--text-base);white-space:nowrap;border-right:1px solid var(--line2);vertical-align:top}.fp-line-text[data-v-ded222d2]{display:table-cell;padding:0 12px;color:var(--color-text);white-space:pre;vertical-align:top}.fp-line-text[data-v-ded222d2] .tok-key,.fp-line-text[data-v-ded222d2] .tok-keyword{color:var(--fp-token-keyword);font-weight:500}.fp-line-text[data-v-ded222d2] .tok-string{color:var(--fp-token-string)}.fp-line-text[data-v-ded222d2] .tok-number,.fp-line-text[data-v-ded222d2] .tok-literal{color:var(--fp-token-literal)}.fp-line-text[data-v-ded222d2] .tok-comment{color:var(--muted);font-style:italic}.fp-line-text[data-v-ded222d2] .tok-tag{color:var(--fp-token-tag);font-weight:500}.fp-line-text[data-v-ded222d2] .tok-attr{color:var(--fp-token-literal)}.fp-html-frame[data-v-ded222d2],.fp-pdf-frame[data-v-ded222d2]{width:100%;height:100%;border:0;background:var(--color-surface-raised)}.fp-pdf-wrap[data-v-ded222d2]{background:var(--panel2)}.fp-table-wrap[data-v-ded222d2]{background:var(--bg)}.fp-table[data-v-ded222d2]{border-collapse:collapse;min-width:100%;font:12px/1.5 var(--mono)}.fp-table th[data-v-ded222d2]{position:sticky;left:0;z-index:1;width:44px;min-width:44px;padding:2px 8px;text-align:right;color:var(--faint);background:var(--panel);border-right:1px solid var(--line2);user-select:none}.fp-table td[data-v-ded222d2]{padding:2px 10px;border-right:1px solid var(--line2);border-bottom:1px solid var(--line2);white-space:pre}.fp-image-wrap[data-v-ded222d2]{display:flex;align-items:center;justify-content:center;padding:24px;background:var(--panel2)}.fp-image[data-v-ded222d2]{max-width:100%;max-height:100%;object-fit:contain;border:1px solid var(--line);border-radius:4px;background:var(--media-alpha-canvas)}.fp-image.actual[data-v-ded222d2]{max-width:none;max-height:none}.fp-binary-wrap[data-v-ded222d2]{display:flex;align-items:center;justify-content:center}.fp-binary-card[data-v-ded222d2]{display:flex;align-items:center;gap:12px;padding:20px 24px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--muted);font-size:var(--ui-font-size);margin:32px auto;max-width:480px}.fp-binary-icon[data-v-ded222d2]{color:var(--faint);flex:none}.fp-error[data-v-ded222d2]{flex-direction:column;padding:24px;text-align:center}@keyframes spin-ded222d2{to{transform:rotate(360deg)}}.spinner[data-v-ded222d2]{display:inline-block;width:14px;height:14px;border:1.5px solid var(--line);border-top-color:var(--color-accent);border-radius:50%;animation:spin-ded222d2 .7s linear infinite}@media(max-width:640px){.fp-lines[data-v-ded222d2]{display:none}.fp-markdown[data-v-ded222d2]{padding:14px 16px}.fp-body.fp-code[data-v-ded222d2]{-webkit-overflow-scrolling:touch}}.fp-empty[data-v-ded222d2],.fp-loading[data-v-ded222d2]{font-family:var(--sans)}.fp-binary-card[data-v-ded222d2]{border:1px solid var(--color-line);border-radius:var(--radius-md)}.fp-binary-label[data-v-ded222d2]{font-family:var(--sans)}.fp-image[data-v-ded222d2]{border-radius:var(--radius-md)}.seg-btn[data-v-ded222d2]{font-family:var(--sans)}.tp[data-v-98c343f3]{height:100%;display:flex;flex-direction:column;min-height:0;background:var(--color-bg)}.tp-body[data-v-98c343f3]{flex:1;min-height:0;overflow-y:auto;margin:0;padding:12px 14px;font:var(--text-base)/var(--leading-relaxed) var(--font-ui);font-weight:var(--weight-regular);color:var(--color-text-muted);white-space:pre-wrap;word-break:break-word}.ap[data-v-59df0789]{height:100%;display:flex;flex-direction:column;min-height:0;background:var(--color-bg)}.ap-phase[data-v-59df0789]{flex:none}.ap-body[data-v-59df0789]{flex:1;min-height:0;overflow-y:auto;padding:12px 14px;font:var(--text-base)/var(--leading-normal) var(--font-ui);color:var(--color-text-muted)}.ap-type[data-v-59df0789]{font:var(--text-xs) var(--font-mono);color:var(--color-text-muted);margin-bottom:8px}.ap-reason[data-v-59df0789]{color:var(--color-warning);margin-bottom:8px}.ap-field+.ap-field[data-v-59df0789]{margin-top:12px}.ap-field-label[data-v-59df0789]{display:block;color:var(--color-text-muted);font:var(--text-xs) var(--font-mono);text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px}.ap-field-body[data-v-59df0789]{white-space:pre-wrap;overflow-wrap:anywhere}.ap-progress[data-v-59df0789]{display:flex;flex-direction:column;gap:6px;font:var(--text-base)/var(--leading-relaxed) var(--font-mono);color:var(--color-text);min-width:0}.ap-live[data-v-59df0789]{font:var(--text-base)/var(--leading-relaxed) var(--font-mono);color:var(--color-text);white-space:pre-wrap;overflow-wrap:anywhere}.ap-group[data-v-59df0789]{min-width:0}.ap-call[data-v-59df0789]{display:flex;align-items:baseline;gap:6px;min-width:0;font-weight:var(--weight-medium);color:var(--color-text);overflow-wrap:anywhere;white-space:pre-wrap}.ap-glyph[data-v-59df0789]{flex:none;color:var(--color-accent);font-size:.85em}.ap-output[data-v-59df0789]{margin:2px 0 0 16px;padding-left:8px;color:var(--color-text-muted);font-size:var(--text-sm);line-height:var(--leading-normal);border-left:2px solid var(--color-line);min-width:0}.ap-out-line[data-v-59df0789]{min-width:0;overflow-wrap:anywhere;white-space:pre-wrap}.ap-fold[data-v-59df0789]{display:inline-block;margin:2px 0;padding:0;background:none;border:none;color:var(--color-accent);font:inherit;cursor:pointer}.ap-fold[data-v-59df0789]:hover{text-decoration:underline}.ap-fold[data-v-59df0789]:focus-visible{outline:2px solid var(--color-accent);outline-offset:1px}.diff-lines[data-v-26e24204]{padding:4px 0 12px;font-size:var(--ui-font-size);line-height:1.5;-webkit-overflow-scrolling:touch;width:max-content;min-width:100%}.dl[data-v-26e24204]{display:flex;align-items:flex-start;min-height:18px;white-space:pre;width:100%}.dl-gutter[data-v-26e24204]{flex:none;width:40px;padding:0 6px;text-align:right;color:var(--faint, #aeb4bc);background:var(--panel, #fafbfc);user-select:none;border-right:1px solid var(--line2, #eef1f4);font-variant-numeric:tabular-nums}.dl-gutter.new[data-v-26e24204]{border-right:1px solid var(--line, #e7eaee)}.dl-sign[data-v-26e24204]{flex:none;width:16px;text-align:center;color:var(--muted);user-select:none}.dl-text[data-v-26e24204]{flex:none;padding-right:14px;white-space:pre;color:var(--color-text)}.dl-add[data-v-26e24204]{background:var(--color-success-soft);box-shadow:inset 2px 0 color-mix(in srgb,var(--color-success) 55%,transparent)}.dl-add .dl-sign[data-v-26e24204]{color:var(--color-success)}.dl-del[data-v-26e24204]{background:var(--color-danger-soft);box-shadow:inset 2px 0 color-mix(in srgb,var(--color-danger) 55%,transparent)}.dl-del .dl-sign[data-v-26e24204]{color:var(--color-danger)}.diff-lines[data-theme] .dl-add[data-v-26e24204]{background:var(--dl-add-soft);box-shadow:inset 2px 0 color-mix(in srgb,var(--dl-add) 55%,transparent)}.diff-lines[data-theme] .dl-add .dl-sign[data-v-26e24204]{color:var(--dl-add)}.diff-lines[data-theme] .dl-del[data-v-26e24204]{background:var(--dl-del-soft);box-shadow:inset 2px 0 color-mix(in srgb,var(--dl-del) 55%,transparent)}.diff-lines[data-theme] .dl-del .dl-sign[data-v-26e24204]{color:var(--dl-del)}.dl-hunk[data-v-26e24204]{background:var(--panel2, #f3f5f8)}.dl-hunk .hunk-text[data-v-26e24204]{flex:1;padding:1px 12px;color:var(--muted, #8b929b);font-style:normal}@media(max-width:640px){.diff-lines[data-v-26e24204]{overflow-x:auto;font-size:var(--ui-font-size)}}.tdp[data-v-76f2fbca]{height:100%;display:flex;flex-direction:column;min-height:0;background:var(--bg)}.tdp-body[data-v-76f2fbca]{flex:1;min-height:0;overflow:auto;font-family:var(--mono)}.tdp-output[data-v-76f2fbca]{padding:8px 12px;color:var(--dim);font-size:var(--text-base);line-height:1.7;white-space:pre-wrap;word-break:break-word}.tdp-empty[data-v-76f2fbca]{padding:32px 20px;color:var(--muted, #9098a0);font-size:var(--ui-font-size);text-align:center}.sc[data-v-867ab366]{height:100%;display:flex;flex-direction:column;min-height:0;background:var(--bg)}.sc-body[data-v-867ab366]{flex:1;min-height:0;overflow-y:auto}.sc-empty[data-v-867ab366]{padding:24px 16px;text-align:center;color:var(--muted);font-size:var(--ui-font-size)}.sc-composer[data-v-867ab366]{flex:none;display:flex;align-items:flex-end;gap:6px;padding:8px 10px;border-top:1px solid var(--line);background:var(--panel)}.sc-input[data-v-867ab366]{flex:1;min-width:0;resize:none;border:1px solid var(--line);border-radius:var(--radius-md);padding:7px 9px;background:var(--bg);color:var(--color-text);font:var(--ui-font-size)/1.5 var(--sans);outline:none;max-height:160px}.sc-input[data-v-867ab366]:focus{border-color:var(--color-accent-bd)}.sc-send[data-v-867ab366]{flex:none;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;border-radius:var(--radius-md);background:var(--color-accent);color:var(--color-text-on-accent);cursor:pointer}.sc-send[data-v-867ab366]:disabled{opacity:.4;cursor:default}.sc-send[data-v-867ab366]:not(:disabled):hover{background:var(--color-accent-hover)}.sc-loading[data-v-867ab366]{flex:none;padding:8px 12px 12px}.sc-body[data-v-867ab366] .sending-placeholder,.sc-body[data-v-867ab366] .sending-line{display:none}.changes-pane[data-v-6591e558]{display:flex;flex-direction:column;height:100%;background:var(--bg);font-family:var(--mono)}.dv-path[data-v-6591e558],.dv-change-count[data-v-6591e558]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--mono);font-size:var(--ui-font-size-xs);color:var(--muted)}.dv-change-count[data-v-6591e558]{flex:1}.ch-head[data-v-6591e558]{display:flex;align-items:center;gap:8px;padding:8px 16px;border-bottom:1px solid var(--line);background:var(--panel);font-size:var(--text-base);color:var(--dim);flex:none;white-space:nowrap;overflow:hidden}.br-label[data-v-6591e558]{color:var(--muted);font-size:max(9px,calc(var(--ui-font-size) - 3.5px))}.br-name[data-v-6591e558]{color:var(--color-accent);font-weight:500;font-size:var(--ui-font-size)}.sync-info[data-v-6591e558]{display:flex;align-items:center;gap:4px}.ahead[data-v-6591e558]{color:var(--color-accent);font-size:var(--text-base)}.behind[data-v-6591e558]{color:var(--color-warning);font-size:var(--text-base)}.empty-head[data-v-6591e558]{color:var(--muted);font-size:var(--text-base)}.ch-list[data-v-6591e558]{flex:1;overflow-y:auto;padding:4px 0}.ch-row[data-v-6591e558]{display:flex;align-items:center;gap:10px;padding:6px 16px;cursor:pointer;font-size:var(--ui-font-size);line-height:1.6;width:100%;background:none;border:none;text-align:left;font-family:inherit;color:inherit}.ch-row[data-v-6591e558]:hover{background:var(--panel2, #f5f6f8)}.ch-row[data-v-6591e558]:focus-visible{outline:2px solid var(--color-accent);outline-offset:-2px}.ch-tree[data-v-6591e558]{padding:4px 0}.tree-list[data-v-6591e558]{list-style:none;margin:0;padding:0}.tree-row[data-v-6591e558]{display:flex;align-items:center;gap:8px;width:100%;padding:5px 16px;background:none;border:none;text-align:left;font-family:inherit;font-size:var(--ui-font-size);color:inherit;cursor:pointer}.tree-row[data-v-6591e558]:hover{background:var(--panel2, #f5f6f8)}.tree-row[data-v-6591e558]:focus-visible{outline:2px solid var(--color-accent);outline-offset:-2px}.tree-folder[data-v-6591e558]{color:var(--color-text);font-weight:500}.tree-file[data-v-6591e558]{color:var(--color-text)}.tree-icon[data-v-6591e558]{flex:none;color:var(--muted)}.tree-name[data-v-6591e558]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.badge[data-v-6591e558]{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:var(--radius-xs);font-size:max(9px,calc(var(--ui-font-size) - 4px));font-weight:500;flex:none;user-select:none}.badge.modified[data-v-6591e558]{background:color-mix(in srgb,var(--color-accent) 12%,var(--bg));color:var(--color-accent)}.badge.added[data-v-6591e558]{background:color-mix(in srgb,var(--color-success) 10%,var(--bg));color:var(--color-success)}.badge.deleted[data-v-6591e558]{background:color-mix(in srgb,var(--color-danger) 10%,var(--bg));color:var(--color-danger)}.badge.renamed[data-v-6591e558]{background:color-mix(in srgb,var(--color-warning) 12%,var(--bg));color:var(--color-warning)}.badge.untracked[data-v-6591e558]{background:var(--color-surface-sunken);color:var(--muted, #9098a0)}.badge.conflicted[data-v-6591e558]{background:color-mix(in srgb,var(--color-danger) 10%,var(--bg));color:var(--color-danger);font-size:max(9px,calc(var(--ui-font-size) - 5px))}.badge.ignored[data-v-6591e558]{background:var(--color-surface-sunken);color:var(--faint, #c0c5cc)}.badge.clean[data-v-6591e558]{background:transparent;color:var(--faint, #c0c5cc)}.badge.unknown[data-v-6591e558]{background:var(--color-surface-sunken);color:var(--muted, #9098a0)}.fpath[data-v-6591e558]{color:var(--color-text);font-size:var(--ui-font-size);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;direction:rtl;text-align:left;min-width:0}.empty-state[data-v-6591e558]{padding:32px 20px;color:var(--muted, #9098a0);font-size:var(--ui-font-size);text-align:center}.diff-head[data-v-6591e558]{display:flex;align-items:center;gap:10px;flex-wrap:wrap;row-gap:6px;padding:6px 12px;border-bottom:1px solid var(--line);background:var(--panel);flex:none;white-space:nowrap;overflow:hidden}.dv-cb-label[data-v-6591e558]{color:var(--muted);font-size:var(--ui-font-size-xs);font-family:var(--sans);white-space:nowrap}.dv-cb-toggle[data-v-6591e558]{margin-left:auto}.dv-lines-wrap[data-v-6591e558]{flex:1;min-height:0;overflow:auto}@media(max-width:640px){.ch-head[data-v-6591e558]{padding:10px 14px}.ch-list[data-v-6591e558]{padding:2px 0 12px}.ch-row[data-v-6591e558]{min-height:44px;padding:8px 14px;gap:12px;font-size:var(--ui-font-size-sm)}.ch-row[data-v-6591e558]:active{background:var(--panel2, #f5f6f8)}.badge[data-v-6591e558]{width:18px;height:18px}.fpath[data-v-6591e558]{font-size:var(--ui-font-size-sm)}.tree-row[data-v-6591e558]{min-height:40px;padding:8px 14px}.diff-head[data-v-6591e558]{padding:8px 12px;gap:10px}.dv-cb-label[data-v-6591e558]{display:none}.diff-path[data-v-6591e558]{font-size:var(--text-base)}}.changes-pane .empty-state[data-v-6591e558],.br-label[data-v-6591e558],.empty-head[data-v-6591e558]{font-family:var(--sans)}.ch-row[data-v-6591e558],.ct-row[data-v-6591e558]{margin:1px 6px;width:calc(100% - 12px);border-radius:var(--radius-md)}.changes-pane .badge[data-v-6591e558],.changed-tree .badge[data-v-6591e558]{border-radius:var(--radius-sm)}.change-count[data-v-6591e558]{font-family:var(--sans);border-radius:999px}.mp[data-v-56cefe51]{display:flex;flex-direction:column;gap:var(--space-2)}.search-wrap[data-v-56cefe51]{padding-bottom:var(--space-1)}.tab-strip[data-v-56cefe51]{display:flex;gap:var(--space-1);overflow-x:auto}.model-list[data-v-56cefe51]{display:flex;flex-direction:column;padding:var(--space-1) 0}.model-row[data-v-56cefe51]{display:flex;align-items:flex-start;gap:var(--space-2);padding:var(--space-2) var(--space-2);border-radius:var(--radius-md);cursor:pointer;color:var(--color-text);min-width:0;transition:background var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out)}.model-row[data-v-56cefe51]:hover,.model-row.is-selected[data-v-56cefe51]{background:var(--color-surface-sunken)}.model-row.is-current[data-v-56cefe51]{background:var(--color-accent-soft);box-shadow:inset 0 0 0 1px var(--color-accent-bd)}.check[data-v-56cefe51]{width:14px;height:14px;color:var(--color-accent);flex:none;display:flex;align-items:center;justify-content:center}.model-main[data-v-56cefe51]{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.model-name[data-v-56cefe51]{font-family:var(--font-ui);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.model-id[data-v-56cefe51]{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.model-provider[data-v-56cefe51]{flex:none;max-width:110px;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.model-ctx[data-v-56cefe51]{flex:none;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-muted)}.caps[data-v-56cefe51]{display:flex;flex-wrap:wrap;gap:4px;margin-top:2px}.state-row[data-v-56cefe51]{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-5) 0;color:var(--color-text-muted);font-family:var(--font-ui);font-size:var(--text-base)}.state-row.unavail[data-v-56cefe51]{color:var(--color-warning)}.empty[data-v-56cefe51]{padding:var(--space-5) 0;color:var(--color-text-muted);font-family:var(--font-ui);font-size:var(--text-base)}.footer-hint[data-v-56cefe51]{padding-top:var(--space-2);font-family:var(--font-ui);font-size:var(--text-xs);color:var(--color-text-faint);border-top:1px solid var(--color-line)}@media(max-width:640px){.model-provider[data-v-56cefe51],.caps[data-v-56cefe51]{display:none}}.ui-field[data-v-49bce958]{display:flex;flex-direction:column;gap:6px}.ui-field__label[data-v-49bce958]{font-family:var(--font-ui);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text-muted)}.ui-field__hint[data-v-49bce958]{font-size:var(--text-xs);color:var(--color-text-faint)}.ui-field__error[data-v-49bce958]{font-size:var(--text-xs);color:var(--color-danger)}.ui-select[data-v-92a040fd]{appearance:none;-webkit-appearance:none;-moz-appearance:none;width:100%;border:1px solid var(--color-line-strong);border-radius:var(--radius-md);background-color:var(--color-surface-raised);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%236b7280' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 6l4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--space-3) center;background-size:16px 16px;box-shadow:var(--shadow-xs);color:var(--color-text);font-family:var(--font-ui);font-size:var(--text-base);line-height:var(--leading-normal);padding:0 var(--space-3);padding-right:calc(var(--space-3) + 16px + var(--space-2));cursor:pointer;transition:border-color var(--duration-base) var(--ease-out),box-shadow var(--duration-base) var(--ease-out)}.ui-select--md[data-v-92a040fd]{height:38px}.ui-select--sm[data-v-92a040fd]{height:32px;font-size:var(--text-sm)}.ui-select[data-v-92a040fd]:hover:not(:disabled):not(:focus){border-color:var(--color-line-strong)}.ui-select[data-v-92a040fd]:focus{outline:none;border-color:var(--color-accent);box-shadow:var(--p-focus-ring)}.ui-select[data-v-92a040fd]:disabled{opacity:.5;cursor:not-allowed}.ui-select.has-error[data-v-92a040fd]{border-color:var(--color-danger)}.ui-select.has-error[data-v-92a040fd]:focus{box-shadow:0 0 0 3px var(--color-danger-soft)}html[data-color-scheme=dark] .ui-select[data-v-92a040fd]{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%239aa0a8' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 6l4 4 4-4'/%3E%3C/svg%3E")}@media(prefers-color-scheme:dark){html[data-color-scheme=system] .ui-select[data-v-92a040fd]{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%239aa0a8' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 6l4 4 4-4'/%3E%3C/svg%3E")}}.pm[data-v-b1859ac1]{display:flex;flex-direction:column;gap:var(--space-4)}.prov-list[data-v-b1859ac1]{display:flex;flex-direction:column;gap:var(--space-1)}.state-row[data-v-b1859ac1]{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-4) 0;color:var(--color-text-muted);font-family:var(--font-ui);font-size:var(--text-base)}.state-row.unavail[data-v-b1859ac1]{color:var(--color-warning)}.empty[data-v-b1859ac1]{padding:var(--space-4) 0;color:var(--color-text-muted);font-family:var(--font-ui);font-size:var(--text-base)}.prov-row[data-v-b1859ac1]{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) 0;border-bottom:1px solid var(--color-line);transition:background var(--duration-fast) var(--ease-out)}.prov-row[data-v-b1859ac1]:last-child{border-bottom:none}.status-dot[data-v-b1859ac1]{width:8px;height:8px;flex:none;border-radius:50%;box-sizing:border-box}.status-dot--empty[data-v-b1859ac1]{background:transparent;border:1.5px solid var(--color-text-faint)}.prov-info[data-v-b1859ac1]{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--space-1)}.prov-type[data-v-b1859ac1]{font-family:var(--font-ui);font-size:var(--text-base);font-weight:var(--weight-medium);color:var(--color-text)}.prov-url[data-v-b1859ac1]{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.prov-meta[data-v-b1859ac1]{display:flex;align-items:center;gap:var(--space-2);font-family:var(--font-ui);font-size:var(--text-xs);color:var(--color-text-muted)}.prov-actions[data-v-b1859ac1]{display:flex;gap:var(--space-2);flex:none;align-items:center;flex-wrap:wrap}.add-section[data-v-b1859ac1]{border-top:1px solid var(--color-line);padding-top:var(--space-4)}.add-btns[data-v-b1859ac1]{display:flex;flex-wrap:wrap;gap:var(--space-2)}.add-form[data-v-b1859ac1]{display:flex;flex-direction:column;gap:var(--space-3)}.add-error[data-v-b1859ac1]{font-family:var(--font-ui);font-size:var(--text-sm);color:var(--color-danger)}.form-btns[data-v-b1859ac1]{display:flex;flex-wrap:wrap;gap:var(--space-2)}.import-form[data-v-b1859ac1]{display:flex;flex-direction:column;gap:var(--space-3)}.import-head[data-v-b1859ac1]{display:flex;align-items:center;gap:var(--space-2)}.import-title[data-v-b1859ac1]{font-family:var(--font-ui);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text)}.import-error[data-v-b1859ac1]{font-family:var(--font-ui);font-size:var(--text-sm);color:var(--color-danger)}.catalog-list[data-v-b1859ac1]{display:flex;flex-direction:column;gap:2px;max-height:260px;overflow-y:auto;padding:var(--space-1) 0}.catalog-row[data-v-b1859ac1]{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-2);border-radius:var(--radius-md);cursor:pointer;min-width:0;transition:background var(--duration-fast) var(--ease-out)}.catalog-row[data-v-b1859ac1]:hover,.catalog-row.is-selected[data-v-b1859ac1]{background:var(--color-surface-sunken)}.catalog-row.is-rejected[data-v-b1859ac1]{opacity:.55;cursor:not-allowed}.catalog-check[data-v-b1859ac1]{width:14px;height:14px;flex:none;color:var(--color-accent);display:flex;align-items:center;justify-content:center}.catalog-main[data-v-b1859ac1]{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.catalog-name[data-v-b1859ac1]{font-family:var(--font-ui);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.catalog-id[data-v-b1859ac1]{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.catalog-wire[data-v-b1859ac1]{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-faint)}.catalog-meta[data-v-b1859ac1]{flex:none;display:flex;align-items:center;gap:var(--space-2);max-width:40%}.catalog-count[data-v-b1859ac1]{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-muted);white-space:nowrap}.catalog-selected[data-v-b1859ac1]{padding-top:var(--space-1)}.footer-hint[data-v-b1859ac1]{padding-top:var(--space-2);font-family:var(--font-ui);font-size:var(--text-xs);color:var(--color-text-faint);border-top:1px solid var(--color-line)}@media(max-width:640px){.prov-row[data-v-b1859ac1]{align-items:flex-start;flex-wrap:wrap}.prov-actions[data-v-b1859ac1]{flex:1 1 100%;justify-content:flex-end}}.center-body[data-v-8308a28f]{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);padding:var(--space-8) 0 var(--space-4);text-align:center}.center-text[data-v-8308a28f]{font-size:var(--text-base);font-weight:var(--weight-medium);color:var(--color-text)}.success-text[data-v-8308a28f]{color:var(--color-success)}.err-text[data-v-8308a28f]{color:var(--color-danger)}.warn-text[data-v-8308a28f]{color:var(--color-warning);font-size:var(--text-base)}.center-hint[data-v-8308a28f]{font-size:var(--text-sm);color:var(--color-text-muted)}.nb[data-v-8308a28f]{display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-2) 0 var(--space-4)}.nb-lead[data-v-8308a28f]{font-size:var(--text-base);color:var(--color-text);line-height:var(--leading-normal)}.nb-primary[data-v-8308a28f]{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);width:100%;min-height:40px;padding:0 var(--space-4);background:var(--color-accent);color:var(--color-text-on-accent);border:1px solid var(--color-accent);border-radius:var(--radius-md);font-family:var(--font-ui);font-size:var(--text-base);font-weight:var(--weight-medium);cursor:pointer;text-decoration:none;transition:background var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out)}.nb-primary[data-v-8308a28f]:hover{background:var(--color-accent-hover);border-color:var(--color-accent-hover)}.nb-or[data-v-8308a28f]{display:flex;align-items:center;gap:var(--space-3);color:var(--color-text-muted);font-size:var(--text-xs);letter-spacing:.06em}.nb-or[data-v-8308a28f]:before,.nb-or[data-v-8308a28f]:after{content:"";flex:1;height:1px;background:var(--color-line)}.nb-fallback[data-v-8308a28f]{display:flex;flex-direction:column;gap:var(--space-2)}.nb-fb-text[data-v-8308a28f]{font-size:var(--text-sm);color:var(--color-text-muted);line-height:var(--leading-normal)}.nb-fb-link[data-v-8308a28f]{color:var(--color-accent);text-decoration:none;border-bottom:1px solid var(--color-accent-bd)}.nb-fb-link[data-v-8308a28f]:hover{border-bottom-color:var(--color-accent)}.nb-code-row[data-v-8308a28f]{display:flex;align-items:center;gap:var(--space-3);background:var(--color-surface-sunken);border:1px solid var(--color-line);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3)}.nb-code[data-v-8308a28f]{flex:1;font-family:var(--font-mono);font-size:var(--text-xl);font-weight:var(--weight-medium);color:var(--color-text);letter-spacing:.14em}.nb-copy.is-copied[data-v-8308a28f]{color:var(--color-success);border-color:var(--color-success-bd)}.nb-status[data-v-8308a28f]{display:flex;align-items:center;gap:var(--space-2);padding-top:var(--space-3);border-top:1px solid var(--color-line)}.nb-status-text[data-v-8308a28f]{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--color-text-muted);flex:1}.nb-countdown[data-v-8308a28f]{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-muted);font-variant-numeric:tabular-nums}.actions[data-v-8308a28f]{display:flex;justify-content:flex-end;gap:var(--space-3);padding-top:var(--space-4)}@media(max-width:640px){.center-body[data-v-8308a28f],.nb[data-v-8308a28f]{overflow-y:auto;-webkit-overflow-scrolling:touch}.nb-code-row[data-v-8308a28f],.nb-status[data-v-8308a28f],.actions[data-v-8308a28f]{flex-wrap:wrap}.nb-code[data-v-8308a28f]{min-width:0;overflow-wrap:anywhere;letter-spacing:.08em}.nb-copy[data-v-8308a28f]{min-height:34px}.nb-primary[data-v-8308a28f]{min-height:44px}.nb-status-text[data-v-8308a28f]{min-width:0}}.media-lightbox[data-v-0ff39638]{position:fixed;inset:0;z-index:var(--z-modal);display:flex;align-items:center;justify-content:center;outline:none}.ml-backdrop[data-v-0ff39638]{position:absolute;inset:0;background:#0d1117cc}.ml-close[data-v-0ff39638]{position:absolute;top:var(--space-4);right:var(--space-4);z-index:1;display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--radius-full);border:none;background:var(--color-surface-raised);color:var(--color-text);cursor:pointer;box-shadow:var(--shadow-md)}.ml-close[data-v-0ff39638]:hover{background:var(--color-surface-sunken)}.ml-loading[data-v-0ff39638]{position:relative;z-index:1}.ml-viewport[data-v-0ff39638]{position:relative;z-index:1;width:100%;height:100%;display:flex;align-items:center;justify-content:center;overflow:hidden;cursor:grab;touch-action:none}.ml-viewport[data-v-0ff39638]:active{cursor:grabbing}.ml-image[data-v-0ff39638]{max-width:92%;max-height:92%;object-fit:contain;user-select:none;transform-origin:center center;transition:transform .08s ease-out}.ml-zoom-hint[data-v-0ff39638]{position:absolute;bottom:var(--space-6);left:50%;transform:translate(-50%);padding:var(--space-2) var(--space-3);border-radius:var(--radius-full);background:var(--color-surface-raised);color:var(--color-text-muted);font-size:var(--text-xs);box-shadow:var(--shadow-sm);pointer-events:none}.ml-video[data-v-0ff39638]{position:relative;z-index:1;max-width:94%;max-height:94%;border-radius:var(--radius-lg);background:var(--color-surface-sunken)}.ml-error[data-v-0ff39638]{position:relative;z-index:1;padding:var(--space-4);border-radius:var(--radius-lg);background:var(--color-surface-raised);color:var(--color-text-muted)}.ml-toolbar[data-v-0ff39638]{position:absolute;bottom:var(--space-5);left:50%;transform:translate(-50%);z-index:1;display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2);border-radius:var(--radius-full);background:var(--color-surface-raised);box-shadow:var(--shadow-md)}.ml-btn[data-v-0ff39638]{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border:none;border-radius:var(--radius-full);background:transparent;color:var(--color-text);cursor:pointer}.ml-btn[data-v-0ff39638]:hover:not(:disabled){background:var(--color-surface-sunken)}.ml-btn[data-v-0ff39638]:disabled{opacity:.4;cursor:default}.ml-zoom-label[data-v-0ff39638]{min-width:48px;text-align:center;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-muted)}.ui-link[data-v-645e7d4e]{color:var(--color-accent);text-decoration:none;cursor:pointer;font:inherit;transition:color var(--duration-base) var(--ease-out)}.ui-link[data-v-645e7d4e]:hover{color:var(--color-accent-hover);text-decoration:underline}.ui-link[data-v-645e7d4e]:focus-visible{outline:none;box-shadow:var(--p-focus-ring);border-radius:var(--radius-xs)}.ui-link--muted[data-v-645e7d4e]{color:var(--color-text-muted)}.ui-link--muted[data-v-645e7d4e]:hover{color:var(--color-text)}.ui-switch[data-v-e5aecc8e]{position:relative;width:36px;height:20px;flex:none;padding:0;border:none;border-radius:var(--radius-full);background:var(--color-line-strong);cursor:pointer;transition:background var(--duration-base) var(--ease-out)}.ui-switch.is-on[data-v-e5aecc8e]{background:var(--color-accent)}.ui-switch[data-v-e5aecc8e]:disabled{opacity:.5;cursor:not-allowed}.ui-switch[data-v-e5aecc8e]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.ui-switch__thumb[data-v-e5aecc8e]{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:var(--radius-full);background:var(--surface-light);box-shadow:var(--shadow-xs);transition:transform var(--duration-base) var(--ease-out)}.ui-switch.is-on .ui-switch__thumb[data-v-e5aecc8e]{background:var(--color-text-on-accent);transform:translate(16px)}.ps[data-v-8c64da0f]{display:flex;flex-direction:column;gap:var(--space-4)}.ext-hint[data-v-8c64da0f] .ui-banner__text{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap}.ext-hint-title[data-v-8c64da0f]{color:var(--color-text);font-weight:var(--weight-medium)}.ext-hint-dismiss[data-v-8c64da0f]{margin-left:auto}.action-error[data-v-8c64da0f]{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);background:var(--color-danger-soft);color:var(--color-danger);font-family:var(--font-ui);font-size:var(--text-sm)}.plug-sec[data-v-8c64da0f]{display:flex;flex-direction:column;gap:var(--space-3)}.plug-sec-head[data-v-8c64da0f]{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.plug-title[data-v-8c64da0f]{margin:0;font-family:var(--font-ui);font-size:var(--text-xs);font-weight:var(--weight-medium);letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-muted)}.plug-state[data-v-8c64da0f]{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) 0;color:var(--color-text-muted);font-family:var(--font-ui);font-size:var(--text-sm)}.plug-state.is-error[data-v-8c64da0f]{color:var(--color-danger)}.plug-list[data-v-8c64da0f]{display:flex;flex-direction:column;border:1px solid var(--color-line);border-radius:var(--radius-xl);overflow:hidden;background:var(--color-bg)}.plug-row[data-v-8c64da0f]{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-top:1px solid var(--color-line)}.plug-row[data-v-8c64da0f]:first-child{border-top:none}.plug-row[data-v-8c64da0f]:hover{background:var(--color-surface-sunken)}.plug-info[data-v-8c64da0f]{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--space-1)}.plug-name[data-v-8c64da0f]{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;min-width:0}.plug-display[data-v-8c64da0f]{font-family:var(--font-ui);font-size:var(--text-base);font-weight:var(--weight-medium);color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.plug-version[data-v-8c64da0f]{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-faint)}.plug-counts[data-v-8c64da0f]{font-family:var(--font-ui);font-size:var(--text-xs);color:var(--color-text-muted)}.plug-desc[data-v-8c64da0f]{margin:0;font-family:var(--font-ui);font-size:var(--text-sm);line-height:var(--leading-normal);color:var(--color-text-muted)}.plug-home[data-v-8c64da0f]{font-family:var(--font-ui);font-size:var(--text-xs)}.plug-actions[data-v-8c64da0f]{display:flex;align-items:center;gap:var(--space-2);flex:none}.cap-progress[data-v-8c64da0f]{display:flex;flex-direction:column;gap:var(--space-1);max-width:420px}.cap-progress-text[data-v-8c64da0f]{font-family:var(--font-ui);font-size:var(--text-xs);color:var(--color-text-muted)}.cap-progress-track[data-v-8c64da0f]{display:block;height:4px;border-radius:var(--radius-full);background:var(--color-surface-sunken);overflow:hidden}.cap-progress-fill[data-v-8c64da0f]{display:block;height:100%;border-radius:var(--radius-full);background:var(--color-accent);transition:width var(--duration-base) var(--ease-out)}.cap-error[data-v-8c64da0f]{display:flex;align-items:center;gap:var(--space-1);font-family:var(--font-ui);font-size:var(--text-xs);color:var(--color-danger)}.cap-steps[data-v-8c64da0f]{display:flex;flex-direction:column;gap:var(--space-1);margin:0;padding:0;list-style:none}.cap-step[data-v-8c64da0f]{display:flex;align-items:center;gap:var(--space-2);min-width:0}.cap-step-ok[data-v-8c64da0f]{color:var(--color-success);flex:none}.cap-step-bad[data-v-8c64da0f]{color:var(--color-danger);flex:none}.cap-step-missing[data-v-8c64da0f]{width:14px;height:14px;flex:none;border-radius:50%;border:1.5px solid var(--color-text-faint);box-sizing:border-box}.cap-step-label[data-v-8c64da0f]{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:640px){.plug-row[data-v-8c64da0f]{align-items:flex-start;flex-wrap:wrap}.plug-actions[data-v-8c64da0f]{flex:1 1 100%;justify-content:flex-end}.ext-hint-dismiss[data-v-8c64da0f]{margin-left:0}}.sd[data-v-ace56012]{display:flex;flex-direction:row;min-height:0;height:100%}.settings-tabs[data-v-ace56012]{display:flex;flex-direction:column;flex:none;width:148px;padding:var(--space-2);gap:2px;overflow-y:auto}.tab[data-v-ace56012]{text-align:left;padding:8px 10px;border:none;border-radius:var(--radius-md);background:transparent;color:var(--color-text-muted);font-family:var(--font-ui);font-size:var(--text-base);cursor:pointer;transition:background var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out)}.tab[data-v-ace56012]:hover{background:var(--color-surface-sunken);color:var(--color-text)}.tab.on[data-v-ace56012]{background:var(--color-accent-soft);color:var(--color-accent);font-weight:var(--weight-medium)}.tab[data-v-ace56012]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.body[data-v-ace56012]{display:flex;flex-direction:column;overflow-y:auto;padding:var(--space-2) var(--space-5) var(--space-5) var(--space-6);flex:1;min-width:0}.panel[data-v-ace56012]{display:block}.sec[data-v-ace56012]{padding:var(--space-4) 0;border-bottom:1px solid var(--color-line)}.sec[data-v-ace56012]:last-child{border-bottom:none}.sec-head[data-v-ace56012]{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-3)}.sec-title[data-v-ace56012]{margin:0 0 var(--space-3);font-family:var(--font-ui);font-size:var(--text-xs);font-weight:var(--weight-medium);letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-muted)}.sec-head .sec-title[data-v-ace56012]{margin-bottom:0}.saving[data-v-ace56012]{flex:none;font-family:var(--font-ui);font-size:var(--text-xs);color:var(--color-text-muted)}.row[data-v-ace56012]{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);min-height:38px;padding:var(--space-1) 0}.rlabel[data-v-ace56012]{font-family:var(--font-ui);font-size:var(--text-base);color:var(--color-text);display:flex;flex-direction:column;gap:var(--space-1)}.rvalue[data-v-ace56012]{font-family:var(--font-ui);font-size:var(--text-sm);color:var(--color-text-muted);max-width:60%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rvalue.mono[data-v-ace56012]{font-family:var(--font-mono);font-size:var(--text-xs)}.hint[data-v-ace56012]{font-family:var(--font-ui);font-size:var(--text-xs);color:var(--color-text-faint)}.num-field[data-v-ace56012]{display:inline-flex;align-items:center;gap:var(--space-2);flex:none;padding:0 var(--space-3);height:38px;border:1px solid var(--color-line);border-radius:var(--radius-md);background:var(--color-surface-raised);transition:border-color var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out)}.num-field[data-v-ace56012]:hover{border-color:var(--color-line-strong)}.num-field[data-v-ace56012]:focus-within{border-color:var(--color-accent);box-shadow:var(--p-focus-ring)}.num-input[data-v-ace56012]{width:48px;border:none;outline:none;background:transparent;color:var(--color-text);font-family:var(--font-mono);font-size:var(--text-base);text-align:right}.num-unit[data-v-ace56012]{color:var(--color-text-muted);font-family:var(--font-mono);font-size:var(--text-xs)}.select-wrap[data-v-ace56012]{min-width:220px;max-width:min(320px,50vw);flex:none}.empty-config[data-v-ace56012]{font-family:var(--font-ui);font-size:var(--text-base);color:var(--color-text-muted);padding:var(--space-1) 0}.plugins-panel[data-v-ace56012]{padding-top:var(--space-4)}.actions[data-v-ace56012]{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-2)}@media(max-width:640px){.sd[data-v-ace56012]{flex-direction:column}.settings-tabs[data-v-ace56012]{flex-direction:row;width:auto;padding:var(--space-2) var(--space-3);gap:var(--space-1);overflow-x:auto}.tab[data-v-ace56012]{white-space:nowrap;flex:none}.row[data-v-ace56012]{align-items:flex-start;flex-direction:column}.select-wrap[data-v-ace56012]{width:100%;max-width:none}}.setting-card[data-v-ace56012]{border:1px solid var(--color-line);border-radius:var(--radius-xl);overflow:hidden;background:var(--color-bg)}.panel-head[data-v-ace56012]{margin-bottom:var(--space-4)}.panel-kicker[data-v-ace56012]{font-size:var(--text-xs);letter-spacing:.05em;text-transform:uppercase;color:var(--color-text-faint);margin-bottom:var(--space-1)}.panel-title[data-v-ace56012]{margin:0 0 var(--space-2);font-family:var(--font-ui);font-size:var(--text-2xl);font-weight:var(--weight-semibold);letter-spacing:-.01em;color:var(--color-text)}.panel-desc[data-v-ace56012]{margin:0;font-family:var(--font-ui);font-size:var(--text-sm);line-height:var(--leading-normal);color:var(--color-text-muted);max-width:560px}.archive-toolbar[data-v-ace56012]{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-4);flex-wrap:wrap}.archive-search[data-v-ace56012]{flex:1;min-width:200px;height:36px;display:flex;align-items:center;gap:var(--space-2);padding:0 var(--space-3);border-radius:var(--radius-md);border:1px solid var(--color-line);color:var(--color-text-faint);font-size:var(--text-sm);background:var(--color-surface-raised);transition:border-color var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out)}.archive-search[data-v-ace56012]:focus-within{border-color:var(--color-accent);box-shadow:var(--p-focus-ring);color:var(--color-text-muted)}.archive-search svg[data-v-ace56012]{width:15px;height:15px;flex:none}.archive-search input[data-v-ace56012]{width:100%;border:none;outline:none;background:transparent;font:inherit;color:var(--color-text)}.archive-list[data-v-ace56012]{display:flex;flex-direction:column;gap:var(--space-4)}.archive-card .setting-card[data-v-ace56012]{margin-bottom:0}.archive-workspace[data-v-ace56012]{display:flex;align-items:center;gap:var(--space-2);margin:0 2px var(--space-2);color:var(--color-text-muted);font-size:var(--text-sm);font-weight:var(--weight-medium)}.archive-workspace svg[data-v-ace56012]{width:16px;height:16px;color:var(--color-text-faint);flex:none}.archive-workspace .path[data-v-ace56012]{font-family:var(--font-mono);font-size:var(--text-xs);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.archive-workspace .count[data-v-ace56012]{margin-left:auto;color:var(--color-text-faint);font-weight:var(--weight-regular);font-size:var(--text-xs);flex:none}.archive-row[data-v-ace56012]{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--space-3);align-items:center;padding:var(--space-3) var(--space-4);border-top:1px solid var(--color-line)}.archive-row[data-v-ace56012]:first-child{border-top:none}.archive-row[data-v-ace56012]:hover{background:var(--color-surface-sunken)}.archive-meta[data-v-ace56012]{min-width:0}.archive-name[data-v-ace56012]{font-size:var(--text-base);font-weight:var(--weight-medium);color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.archive-time[data-v-ace56012]{margin-top:2px;font-size:var(--text-xs);color:var(--color-text-faint);font-family:var(--font-mono)}.archive-draining[data-v-ace56012]{margin-bottom:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);background:var(--color-accent-soft);color:var(--color-accent-hover);font-size:var(--text-sm)}.archive-empty[data-v-ace56012]{padding:var(--space-6) var(--space-4);border:1px solid var(--color-line);border-radius:var(--radius-xl);color:var(--color-text-faint);font-size:var(--text-sm);text-align:center;background:var(--color-bg)}.archive-load-more[data-v-ace56012]{align-self:center;margin-top:var(--space-2);padding:6px 18px;border:1px solid var(--color-line);border-radius:var(--radius-md);background:var(--color-surface-raised);color:var(--color-text-muted);font-family:var(--font-ui);font-size:var(--text-sm);cursor:pointer;transition:border-color var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out)}.archive-load-more[data-v-ace56012]:hover:not(:disabled){border-color:var(--color-line-strong);color:var(--color-text)}.archive-load-more[data-v-ace56012]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.archive-load-more[data-v-ace56012]:disabled{opacity:.5;cursor:not-allowed}@media(max-width:640px){.archive-toolbar[data-v-ace56012]{flex-direction:column;align-items:stretch}.archive-search[data-v-ace56012]{min-width:0}}[data-v-ace56012] .ui-dialog{width:min(980px,96vw)}[data-v-ace56012] .ui-dialog--fixed-height{height:min(780px,calc(100vh - var(--space-8) * 2))}.aw[data-v-a2c2e0eb]{margin-left:calc(-1 * var(--space-5));margin-right:calc(-1 * var(--space-5));margin-bottom:calc(-1 * var(--space-4))}.crumbbar[data-v-a2c2e0eb]{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-5);border-bottom:1px solid var(--color-line)}.crumbs[data-v-a2c2e0eb]{display:flex;align-items:center;flex-wrap:wrap;gap:1px;min-width:0;font-size:var(--text-sm)}.crumb-sep[data-v-a2c2e0eb]{color:var(--color-text-muted)}.crumb[data-v-a2c2e0eb]{background:none;border:none;cursor:pointer;font-family:var(--font-ui);font-size:var(--text-sm);color:var(--color-text-muted);padding:1px var(--space-1);border-radius:var(--radius-xs)}.crumb[data-v-a2c2e0eb]:hover{color:var(--color-accent);background:var(--color-surface-sunken)}.crumb.last[data-v-a2c2e0eb]{color:var(--color-text);font-weight:var(--weight-medium)}.filterbar[data-v-a2c2e0eb]{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-5);border-bottom:1px solid var(--color-line)}.filter-icon[data-v-a2c2e0eb]{flex:none;width:var(--p-ic-sm);height:var(--p-ic-sm);color:var(--color-text-muted)}.filter-input[data-v-a2c2e0eb]{flex:1;min-width:0;font-family:var(--font-ui);font-size:var(--text-base);padding:var(--space-1) 0;border:none;background:none;color:var(--color-text);outline:none}.filter-input[data-v-a2c2e0eb]::placeholder{color:var(--color-text-muted)}.search-rel[data-v-a2c2e0eb]{color:var(--color-text)}.filterbar.has-error[data-v-a2c2e0eb]{border-bottom-color:var(--color-danger)}.filterbar.has-error .filter-icon[data-v-a2c2e0eb]{color:var(--color-danger)}.folder-list[data-v-a2c2e0eb]{height:300px;overflow-y:auto;padding:var(--space-1) var(--space-2)}.fl-loading[data-v-a2c2e0eb],.fl-empty[data-v-a2c2e0eb]{padding:var(--space-6) var(--space-4);text-align:center;color:var(--color-text-muted);font-size:var(--text-sm)}.fl-note[data-v-a2c2e0eb]{padding:var(--space-2) var(--space-4);font-size:var(--text-sm);color:var(--color-text-muted)}.fl-error[data-v-a2c2e0eb]{color:var(--color-danger)}.folder-row[data-v-a2c2e0eb]{display:flex;align-items:center;gap:var(--space-2);width:100%;background:none;border:none;cursor:pointer;font-family:var(--font-ui);font-size:var(--text-base);color:var(--color-text);text-align:left;padding:var(--space-1) var(--space-4);border-radius:var(--radius-md)}.folder-row[data-v-a2c2e0eb]:hover{background:var(--color-surface-sunken)}.dir-icon[data-v-a2c2e0eb]{flex:none;width:var(--p-ic-sm);height:var(--p-ic-sm);color:var(--color-text-muted)}.folder-row:hover .dir-icon[data-v-a2c2e0eb]{color:var(--color-accent)}.folder-name[data-v-a2c2e0eb]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--color-text)}.degraded-hint[data-v-a2c2e0eb]{padding:var(--space-6) var(--space-5);text-align:center;color:var(--color-text-muted);font-size:var(--text-sm)}.add-error[data-v-a2c2e0eb]{margin:0 14px 8px;padding:6px 10px;font-family:var(--mono);font-size:var(--ui-font-size-xs);color:var(--color-danger);background:#b3261e14;border:1px solid rgba(179,38,30,.25);border-radius:var(--radius-xs)}.actions[data-v-a2c2e0eb]{display:flex;justify-content:flex-end;gap:var(--space-3);padding:var(--space-4) var(--space-5)}.footer-hint[data-v-a2c2e0eb]{padding:var(--space-2) var(--space-5);font-size:var(--text-xs);color:var(--color-text-muted);border-top:1px solid var(--color-line)}@media(max-width:640px){.folder-row[data-v-a2c2e0eb]{min-height:44px}.crumbbar[data-v-a2c2e0eb]{align-items:flex-start}.actions[data-v-a2c2e0eb]{flex-wrap:wrap}}.confirm-dialog__message[data-v-2e719024]{margin:0;font-size:var(--text-base);line-height:var(--leading-normal);color:var(--color-text-muted)}.rows[data-v-5ba9ba29]{margin:0;padding:0}.row[data-v-5ba9ba29]{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) 0;font-size:var(--text-base)}.row dt[data-v-5ba9ba29]{width:96px;flex:none;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em;font-size:var(--text-xs)}.row dd[data-v-5ba9ba29]{margin:0;color:var(--color-text);font-weight:var(--weight-medium);display:flex;align-items:center;gap:var(--space-2);min-width:0}.row dd.plan-on[data-v-5ba9ba29],.row dd.swarm-on[data-v-5ba9ba29],.row dd.supermoon-on[data-v-5ba9ba29]{color:var(--color-accent)}.ctx-text[data-v-5ba9ba29]{flex:none}.bar[data-v-5ba9ba29]{width:80px;height:5px;border-radius:var(--radius-full);background:var(--color-line);overflow:hidden;flex:none}.bar i[data-v-5ba9ba29]{display:block;height:100%;background:var(--color-accent)}@media(max-width:640px){.rows[data-v-5ba9ba29]{overflow-y:auto;-webkit-overflow-scrolling:touch}.row[data-v-5ba9ba29]{align-items:flex-start;flex-direction:column;gap:var(--space-1);min-height:48px}.row dt[data-v-5ba9ba29]{width:auto}.row dd[data-v-5ba9ba29]{max-width:100%;flex-wrap:wrap}}.ui-toast[data-v-adc6f346]{display:flex;align-items:flex-start;gap:11px;width:360px;max-width:100%;padding:13px 14px;background:var(--color-surface-raised);border:1px solid var(--color-line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);font-family:var(--font-ui);line-height:1.45}.ui-toast__icon[data-v-adc6f346]{flex:none;width:20px;height:20px;margin-top:1px;border-radius:var(--radius-full);display:grid;place-items:center;background:var(--color-accent-soft);color:var(--color-accent)}.ui-toast__icon svg[data-v-adc6f346]{width:12px;height:12px}.ui-toast--success .ui-toast__icon[data-v-adc6f346]{background:var(--color-success-soft);color:var(--color-success)}.ui-toast--warning .ui-toast__icon[data-v-adc6f346]{background:var(--color-warning-soft);color:var(--color-warning)}.ui-toast--danger .ui-toast__icon[data-v-adc6f346]{background:var(--color-danger-soft);color:var(--color-danger)}.ui-toast--danger[data-v-adc6f346]{border-color:color-mix(in srgb,var(--color-danger) 35%,transparent)}.ui-toast__body[data-v-adc6f346]{flex:1;min-width:0}.ui-toast__title[data-v-adc6f346]{font-size:var(--text-base);font-weight:500;color:var(--color-text);overflow-wrap:anywhere}.ui-toast__msg[data-v-adc6f346]{margin-top:2px;font-size:var(--text-sm);color:var(--color-text-muted);overflow-wrap:anywhere}.ui-toast--danger .ui-toast__msg[data-v-adc6f346]{color:var(--color-danger)}.ui-toast__close[data-v-adc6f346]{flex:none;margin:-3px -4px 0 0}.toasts[data-v-c92be17a]{position:fixed;right:16px;bottom:84px;display:flex;flex-direction:column;gap:var(--space-2);z-index:var(--z-toast);width:min(440px,calc(100vw - 32px));max-height:56vh;overflow-y:auto}.toast-enter-active[data-v-c92be17a],.toast-leave-active[data-v-c92be17a]{transition:opacity var(--duration-base) var(--ease-out),transform var(--duration-base) var(--ease-out)}.toast-enter-from[data-v-c92be17a],.toast-leave-to[data-v-c92be17a]{opacity:0;transform:translate(16px)}.toast-move[data-v-c92be17a]{transition:transform var(--duration-base) var(--ease-out)}.actions[data-v-c92be17a]{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-2)}.link[data-v-c92be17a]{border:0;padding:0;background:none;color:var(--color-accent);cursor:pointer;font:inherit;font-size:var(--ui-font-size-xs)}.link[data-v-c92be17a]:hover{text-decoration:underline}.details[data-v-c92be17a]{display:grid;gap:5px;margin:8px 0 0;padding:8px;border:1px solid var(--color-line);border-radius:var(--radius-sm);background:var(--color-surface-sunken)}.detail-row[data-v-c92be17a]{display:grid;grid-template-columns:minmax(88px,.34fr) minmax(0,1fr);gap:8px}.detail-row dt[data-v-c92be17a]{color:var(--color-text-muted)}.detail-row dd[data-v-c92be17a]{margin:0;color:var(--color-text);overflow-wrap:anywhere;white-space:pre-wrap}@media(max-width:640px){.toasts[data-v-c92be17a]{left:12px;right:12px;bottom:calc(var(--dock-h, 76px) + 8px);width:auto;max-height:50vh}.detail-row[data-v-c92be17a]{grid-template-columns:1fr;gap:2px}}.topbar[data-v-6b4b901f]{display:flex;align-items:center;gap:10px;height:calc(50px + var(--safe-top));flex:none;padding:var(--safe-top) max(12px,var(--safe-right)) 0 max(12px,var(--safe-left));border-bottom:1px solid var(--color-line);background:var(--color-bg);font-family:var(--font-ui)}.wsq[data-v-6b4b901f]{flex:none;width:28px;height:28px;border-radius:var(--radius-md);background:var(--color-text);color:var(--color-bg);display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-weight:var(--weight-medium);font-size:var(--ui-font-size-sm)}.tb-mid[data-v-6b4b901f]{flex:1;min-width:0;height:100%;display:flex;flex-direction:column;justify-content:center;gap:1px;background:none;border:none;padding:0;cursor:pointer;text-align:left}.tb-path[data-v-6b4b901f]{display:flex;align-items:center;gap:5px;font-size:var(--ui-font-size-sm);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tb-path .ws[data-v-6b4b901f]{color:var(--color-text)}.tb-path .sl[data-v-6b4b901f]{color:var(--color-text-faint)}.tb-path .se[data-v-6b4b901f]{color:var(--color-text);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tb-path .cv[data-v-6b4b901f]{color:var(--color-text-faint);flex:none}.tb-sub[data-v-6b4b901f]{display:flex;align-items:center;gap:5px;font-size:max(9px,calc(var(--ui-font-size) - 3.5px));color:var(--color-text-faint);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tb-sub .rd[data-v-6b4b901f]{flex:none;width:6px;height:6px;border-radius:var(--radius-full);background:var(--color-text-faint)}.tb-sub .rd.on[data-v-6b4b901f]{background:var(--color-success)}.topbar .tb-path[data-v-6b4b901f]{font-family:var(--sans)}.sheet-root[data-v-745ee5a2]{position:fixed;inset:0;z-index:var(--z-overlay);display:flex;flex-direction:column;justify-content:flex-end}.sheet-scrim[data-v-745ee5a2]{position:absolute;inset:0;background:#0d111773}.sheet-panel[data-v-745ee5a2]{position:relative;background:var(--color-surface-raised);border:1px solid var(--color-line);border-bottom:none;border-radius:var(--radius-xl) var(--radius-xl) 0 0;box-shadow:var(--shadow-xl);max-height:86vh;display:flex;flex-direction:column;min-height:0;font-family:var(--font-ui);color:var(--color-text)}.sheet-grab[data-v-745ee5a2]{flex:none;align-self:center;width:56px;height:18px;padding:0;border:none;background:none;cursor:pointer;position:relative;margin-top:4px}.sheet-grab[data-v-745ee5a2]:after{content:"";position:absolute;left:50%;top:7px;transform:translate(-50%);width:38px;height:5px;border-radius:var(--radius-full);background:var(--color-line)}.sheet-head[data-v-745ee5a2]{flex:none;display:flex;align-items:center;justify-content:space-between;padding:6px 16px 10px}.sheet-title[data-v-745ee5a2]{font-size:var(--text-base);font-weight:var(--weight-medium);color:var(--color-text)}.sheet-body[data-v-745ee5a2]{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding-bottom:max(16px,var(--safe-bottom))}.sheet-enter-active[data-v-745ee5a2],.sheet-leave-active[data-v-745ee5a2]{transition:opacity var(--duration-slow) var(--ease-out)}.sheet-enter-active .sheet-panel[data-v-745ee5a2],.sheet-leave-active .sheet-panel[data-v-745ee5a2]{transition:transform var(--duration-slow) var(--ease-out)}.sheet-enter-from[data-v-745ee5a2],.sheet-leave-to[data-v-745ee5a2]{opacity:0}.sheet-enter-from .sheet-panel[data-v-745ee5a2],.sheet-leave-to .sheet-panel[data-v-745ee5a2]{transform:translateY(102%)}.newrow[data-v-53fda211]{display:flex;align-items:center;gap:10px;width:100%;padding:var(--space-3) var(--space-4);background:none;border:none;border-radius:var(--radius-md);color:var(--color-accent);font-weight:500;font-size:var(--text-base);cursor:pointer;text-align:left}.newrow[data-v-53fda211]:hover,.newrow[data-v-53fda211]:active{background:var(--color-surface-sunken)}.newrow.secondary[data-v-53fda211]{padding-top:var(--space-2);padding-bottom:var(--space-2);color:var(--color-text-muted);font-weight:400}.newrow.secondary[data-v-53fda211]:hover{background:var(--color-surface-sunken)}.newrow.secondary[data-v-53fda211]:active{background:var(--color-surface-sunken);color:var(--color-text)}.mlist[data-v-53fda211]{--m-pad: 16px;--m-gutter: 15px;--m-gap: 8px;--m-indent: calc(var(--m-pad) + var(--m-gutter) + var(--m-gap));padding-bottom:var(--space-1)}.mempty[data-v-53fda211]{padding:var(--space-6) var(--space-4);text-align:center;color:var(--color-text-faint);font-size:var(--ui-font-size)}.mempty.small[data-v-53fda211]{padding:10px 16px 12px var(--m-indent);text-align:left;font-size:var(--ui-font-size-xs)}.mgroup[data-v-53fda211]{padding-top:2px}.mgh[data-v-53fda211]{display:flex;align-items:center;gap:var(--m-gap);padding:10px var(--m-pad) 6px;border-radius:var(--radius-md);cursor:pointer;user-select:none;position:relative}.mgh[data-v-53fda211]:hover,.mgh[data-v-53fda211]:active{background:var(--color-surface-sunken)}.mgh-folder[data-v-53fda211]{flex:none;color:var(--color-text-muted)}.mgh-main[data-v-53fda211]{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}.mgh-name[data-v-53fda211]{font-size:var(--ui-font-size-lg);font-weight:var(--weight-medium);color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mgh-path[data-v-53fda211]{font-size:var(--text-base);font-weight:var(--weight-regular);color:var(--color-text-faint);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mgh-add[data-v-53fda211]{margin:-10px -12px -10px 0}.mgh-add[data-v-53fda211]:active{color:var(--color-text);background:var(--color-surface-sunken)}.mgh-more[data-v-53fda211]{margin:-10px -8px}.mgh-more[data-v-53fda211]:active{color:var(--color-text);background:var(--color-surface-sunken)}.srow[data-v-53fda211]{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--m-pad) var(--space-3) var(--m-indent);border-radius:var(--radius-md);cursor:pointer;position:relative}.srow[data-v-53fda211]:hover,.srow[data-v-53fda211]:active{background:var(--color-surface-sunken)}.srow.cur[data-v-53fda211]{background:var(--color-accent-soft);box-shadow:inset 0 0 0 1px var(--color-accent-bd)}.srow .m[data-v-53fda211]{flex:1;min-width:0}.srow .m .t[data-v-53fda211]{font-size:var(--text-base);font-weight:var(--weight-medium);line-height:var(--leading-tight);color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.srow.cur .m .t[data-v-53fda211]{color:var(--color-accent-hover)}.srow .m .t.run[data-v-53fda211]{position:relative}.srow .m .t.run[data-v-53fda211]:before{content:"";position:absolute;left:-14px;top:50%;transform:translateY(-50%);width:6px;height:6px;border-radius:var(--radius-full);background:var(--color-accent);animation:mRunPulse-53fda211 1.4s ease-in-out infinite}@keyframes mRunPulse-53fda211{0%,to{opacity:1}50%{opacity:.35}}.srow .m .t.aborted[data-v-53fda211]{position:relative}.srow .m .t.aborted[data-v-53fda211]:before{content:"";position:absolute;left:-14px;top:50%;transform:translateY(-50%);width:6px;height:6px;border-radius:var(--radius-full);background:var(--color-danger)}.srow .m .s[data-v-53fda211]{font-size:var(--text-base);font-weight:var(--weight-medium);font-variant-numeric:tabular-nums;color:var(--color-text-faint);margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.att[data-v-53fda211]{flex:none;font-family:var(--font-mono);font-size:max(9px,calc(var(--ui-font-size) - 4px));color:var(--surface-light);background:var(--color-warning);border-radius:var(--radius-full);padding:1px 7px}.srow .kb[data-v-53fda211]:active{color:var(--color-text);background:var(--color-surface-sunken)}.kmenu[data-v-53fda211]{position:absolute;right:12px;top:44px;z-index:var(--z-dropdown);min-width:96px;overflow:hidden}.wsmenu[data-v-53fda211]{top:calc(100% - 4px);right:var(--m-pad);min-width:132px}.mshow-more[data-v-53fda211]{display:flex;align-items:center;width:100%;min-height:44px;padding:var(--space-1) var(--m-pad) var(--space-1) var(--m-indent);background:none;border:none;color:var(--color-text-muted);font-size:var(--text-base);cursor:pointer;text-align:left}.mshow-more[data-v-53fda211]:active{color:var(--color-accent-hover);background:var(--color-surface-sunken)}.newrow[data-v-53fda211]{font-family:var(--sans)}.mlist .srow[data-v-53fda211]{margin:1px 8px;border-radius:var(--radius-md);border-bottom:none;padding:12px calc(var(--m-pad, 16px) - 8px) 12px calc(var(--m-indent, 39px) - 8px)}.mlist .srow.cur[data-v-53fda211]{box-shadow:inset 0 0 0 1px var(--color-accent-bd)}.group-title[data-v-5ba9962c]{padding:var(--space-3) var(--space-3) var(--space-1);font-family:var(--font-ui);font-size:var(--text-xs);font-weight:var(--weight-medium);letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-faint)}.srow[data-v-5ba9962c]{display:flex;align-items:center;gap:var(--space-3);width:100%;min-height:52px;padding:var(--space-3);background:none;border:none;border-radius:var(--radius-md);cursor:pointer;text-align:left;color:var(--color-text)}.srow[data-v-5ba9962c]:hover:not(.read-only){background:var(--color-surface-sunken)}.srow[data-v-5ba9962c]:active:not(.read-only){background:var(--color-surface-sunken)}.srow.read-only[data-v-5ba9962c]{cursor:default}.srow-main[data-v-5ba9962c]{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}.srow-label[data-v-5ba9962c]{font-size:var(--text-base);color:var(--color-text)}.srow-sub[data-v-5ba9962c]{font-size:var(--text-base);color:var(--color-text-faint);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.srow-val[data-v-5ba9962c]{flex:none;font-family:var(--font-mono);font-size:var(--ui-font-size);font-weight:500;color:var(--color-accent-hover)}.srow-val.dim[data-v-5ba9962c]{font-weight:400;color:var(--color-text-muted)}.cache-note[data-v-5ba9962c]{padding:0 var(--space-3) var(--space-2);font-size:var(--text-xs);color:var(--color-text-faint);line-height:1.4}.chev[data-v-5ba9962c]{flex:none;color:var(--color-text-faint);font-size:17px;line-height:1}.toggle[data-v-5ba9962c]{flex:none;width:44px;height:26px;border-radius:var(--radius-full);background:var(--color-line);position:relative;transition:background .18s}.toggle.on[data-v-5ba9962c]{background:var(--color-accent)}.toggle[data-v-5ba9962c]:after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:var(--radius-full);box-sizing:border-box;background:var(--color-bg);border:1px solid var(--color-line);box-shadow:var(--shadow-xs);transition:left .18s}.toggle.on[data-v-5ba9962c]:after{left:21px}.srow.pref[data-v-5ba9962c]{cursor:default}.num-field[data-v-5ba9962c]{display:inline-flex;align-items:center;gap:6px;flex:none;height:34px;padding:0 9px;border:1px solid var(--color-line);border-radius:var(--radius-md);background:var(--color-bg)}.num-input[data-v-5ba9962c]{width:50px;border:none;outline:none;background:transparent;color:var(--color-text);font-family:var(--font-mono);font-size:var(--ui-font-size);text-align:right}.num-unit[data-v-5ba9962c]{color:var(--color-text-muted);font-family:var(--font-mono);font-size:var(--ui-font-size-xs)}.srow.acct.in .srow-label[data-v-5ba9962c]{color:var(--color-accent-hover);font-weight:500}.srow.acct.out .srow-label[data-v-5ba9962c]{color:var(--color-danger)}.ctx-meter[data-v-5ba9962c]{flex:none;width:96px;height:7px;border-radius:var(--radius-full);background:var(--color-surface-sunken);overflow:hidden}.ctx-meter i[data-v-5ba9962c]{display:block;height:100%;background:var(--color-accent)}@media(max-width:640px){.srow[data-v-5ba9962c]{align-items:flex-start;gap:10px;min-width:0;padding:14px max(14px,var(--safe-right)) 14px max(14px,var(--safe-left))}.group-title[data-v-5ba9962c],.cache-note[data-v-5ba9962c]{padding-left:max(14px,var(--safe-left));padding-right:max(14px,var(--safe-right))}.srow-main[data-v-5ba9962c]{flex:1 1 auto}.srow-sub[data-v-5ba9962c]{white-space:normal;overflow-wrap:anywhere}.srow.pref[data-v-5ba9962c]{flex-wrap:wrap}.srow.pref .srow-main[data-v-5ba9962c]{flex:1 0 100%}.num-field[data-v-5ba9962c]{margin-left:auto}.srow-val[data-v-5ba9962c],.chev[data-v-5ba9962c],.toggle[data-v-5ba9962c],.ctx-meter[data-v-5ba9962c]{margin-top:2px}}.srow[data-v-5ba9962c],.srow-sub[data-v-5ba9962c],.srow-val[data-v-5ba9962c],.cache-note[data-v-5ba9962c]{font-family:var(--sans)}.arch-subhead[data-v-5ba9962c]{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-2) var(--space-3) var(--space-1)}.arch-back[data-v-5ba9962c]{display:inline-flex;align-items:center;gap:2px;border:none;background:none;padding:var(--space-1) var(--space-2) var(--space-1) 0;font-family:var(--font-ui);font-size:var(--text-base);color:var(--color-accent-hover);cursor:pointer}.chev.back[data-v-5ba9962c]{font-size:20px}.arch-count[data-v-5ba9962c]{font-family:var(--font-ui);font-size:var(--text-sm);color:var(--color-text-faint)}.arch-tools[data-v-5ba9962c]{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);flex-wrap:wrap}.arch-search-input[data-v-5ba9962c]{flex:1;min-width:160px}.arch-row[data-v-5ba9962c]{display:flex;align-items:center;gap:var(--space-3);min-height:56px;padding:var(--space-2) var(--space-3);border-top:1px solid var(--color-line)}.arch-row[data-v-5ba9962c]:first-of-type{border-top:none}.arch-meta[data-v-5ba9962c]{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}.arch-name[data-v-5ba9962c]{font-family:var(--font-ui);font-size:var(--text-base);color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.arch-time[data-v-5ba9962c]{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-faint)}.arch-empty[data-v-5ba9962c]{padding:var(--space-6) var(--space-4);text-align:center;font-family:var(--font-ui);font-size:var(--text-sm);color:var(--color-text-faint)}.ob-brand[data-v-fbdd3eab]{flex:1;display:flex;align-items:center;gap:var(--space-3);min-width:0}.ob-brand-text[data-v-fbdd3eab]{min-width:0}.ob-logo[data-v-fbdd3eab]{width:52px;height:36px;flex:none}.ob-title[data-v-fbdd3eab]{color:var(--color-text);font-size:var(--text-xl);font-weight:var(--weight-medium)}.ob-sub[data-v-fbdd3eab]{color:var(--color-text-muted);font-size:var(--text-base);margin-top:1px}.ob-sec[data-v-fbdd3eab]{margin-bottom:var(--space-4)}.ob-label[data-v-fbdd3eab]{color:var(--color-text);font-size:var(--text-sm);font-weight:var(--weight-medium);margin-bottom:var(--space-2)}.ob-start[data-v-fbdd3eab]{width:100%}.ob-eyes[data-v-fbdd3eab]{animation:ob-eye-look-fbdd3eab 6s ease-in-out infinite}.ob-eye[data-v-fbdd3eab]{transform-box:fill-box;transform-origin:center;animation:ob-eye-blink-fbdd3eab 4s ease-in-out infinite}@keyframes ob-eye-look-fbdd3eab{0%,42%{transform:translate(0)}47%,53%{transform:translate(2px)}58%,80%{transform:translate(0)}84%,90%{transform:translate(-2px)}95%,to{transform:translate(0)}}@keyframes ob-eye-blink-fbdd3eab{0%,94%,to{transform:scaleY(1)}96.5%,98%{transform:scaleY(.12)}}@media(prefers-reduced-motion:reduce){.ob-eyes[data-v-fbdd3eab],.ob-eye[data-v-fbdd3eab]{animation:none}}.gload[data-v-0b6dec6a]{position:fixed;top:0;left:0;width:100vw;height:100vh;height:100dvh;min-width:100vw;min-height:100dvh;z-index:var(--z-toast);display:flex;align-items:center;justify-content:center;background:var(--bg)}.gload-box[data-v-0b6dec6a]{display:flex;flex-direction:column;align-items:center;gap:22px;transform:translateY(-6%)}.gload-logo[data-v-0b6dec6a]{width:128px;height:auto;color:var(--color-text);animation:gload-pop-0b6dec6a .55s cubic-bezier(.22,1,.36,1) both}.gload-text[data-v-0b6dec6a]{font-family:var(--mono);font-size:var(--text-base);color:var(--muted);letter-spacing:.04em}.gload-issue[data-v-0b6dec6a]{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);max-width:min(480px,80vw);font-family:var(--sans);font-size:var(--text-sm);color:var(--muted);text-align:center}.gload-issue-detail[data-v-0b6dec6a]{font-family:var(--mono);font-size:var(--text-xs);color:var(--muted);opacity:.8;word-break:break-word}@keyframes gload-pop-0b6dec6a{0%{opacity:0;transform:translateY(6px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@media(prefers-reduced-motion:reduce){.gload-logo[data-v-0b6dec6a]{animation:none}}.gload-text[data-v-0b6dec6a]{font-family:var(--sans)}.kap-root[data-v-3cda6fe3]{height:100vh;display:flex;flex-direction:column;background:var(--bg);font-family:var(--mono);font-size:calc(var(--ui-font-size) - 2.5px);color:var(--color-text)}.kap-head[data-v-3cda6fe3]{flex:none;display:flex;align-items:center;gap:8px;padding:10px 14px;border-bottom:1px solid var(--line);background:var(--panel)}.kap-count[data-v-3cda6fe3]{color:var(--muted)}.kap-head-actions[data-v-3cda6fe3]{margin-left:auto;display:flex;gap:6px}.kap-head-actions button[data-v-3cda6fe3],.kap-view-toggle button[data-v-3cda6fe3]{padding:3px 8px;border:1px solid var(--line);border-radius:6px;background:var(--bg);color:var(--muted);font:inherit;cursor:pointer}.kap-head-actions button[data-v-3cda6fe3]:hover,.kap-view-toggle button[data-v-3cda6fe3]:hover{color:var(--color-text)}.kap-head-actions button.on[data-v-3cda6fe3],.kap-view-toggle button.on[data-v-3cda6fe3]{color:var(--color-accent-hover);border-color:var(--color-accent-bd);background:var(--color-accent-soft)}.kap-filters[data-v-3cda6fe3]{flex:none;display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:7px 10px;border-bottom:1px solid var(--line)}.kap-filters select[data-v-3cda6fe3],.kap-filters input[type=text][data-v-3cda6fe3]{padding:3px 6px;border:1px solid var(--line);border-radius:6px;background:var(--bg);color:var(--color-text);font:inherit;min-width:0}.kap-filters input[type=text][data-v-3cda6fe3]{flex:1;min-width:120px}.kap-check[data-v-3cda6fe3]{display:inline-flex;align-items:center;gap:4px;color:var(--muted);white-space:nowrap}.kap-view-toggle[data-v-3cda6fe3]{display:flex;gap:0}.kap-view-toggle button[data-v-3cda6fe3]:first-child{border-radius:6px 0 0 6px;border-right:none}.kap-view-toggle button[data-v-3cda6fe3]:last-child{border-radius:0 6px 6px 0}.kap-list[data-v-3cda6fe3]{flex:1;min-height:0;overflow-y:auto}.kap-empty[data-v-3cda6fe3]{padding:18px 12px;color:var(--muted);text-align:center}.kap-row[data-v-3cda6fe3]{display:flex;align-items:baseline;gap:7px;width:100%;padding:3px 10px;border:none;border-bottom:1px solid var(--line);background:transparent;color:var(--color-text);font:inherit;text-align:left;cursor:pointer}.kap-row[data-v-3cda6fe3]:hover{background:var(--panel2)}.kap-row.expanded[data-v-3cda6fe3]{background:var(--color-accent-soft)}.kap-ts[data-v-3cda6fe3]{flex:none;color:var(--muted)}.kap-badge[data-v-3cda6fe3]{flex:none;padding:0 5px;border-radius:var(--radius-sm);font-size:max(9px,calc(var(--ui-font-size) - 4.5px));font-weight:500;line-height:1.7}.b-rest[data-v-3cda6fe3]{background:var(--color-accent-soft);color:var(--color-accent-hover)}.b-in[data-v-3cda6fe3]{background:var(--color-accent-soft);color:var(--color-success)}.b-out[data-v-3cda6fe3]{background:var(--color-accent-soft);color:var(--color-warning)}.b-life[data-v-3cda6fe3]{background:var(--panel2);color:var(--muted)}.b-err[data-v-3cda6fe3]{background:var(--color-warning);color:var(--bg)}.kap-label[data-v-3cda6fe3]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kap-detail[data-v-3cda6fe3]{border-bottom:1px solid var(--line);background:var(--bg);padding:6px 10px 10px}.kap-detail-actions[data-v-3cda6fe3]{display:flex;justify-content:flex-end;margin-bottom:4px}.kap-detail-actions button[data-v-3cda6fe3]{padding:2px 8px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--muted);font:inherit;cursor:pointer}.kap-detail-actions button[data-v-3cda6fe3]:hover{color:var(--color-text)}.kap-detail pre[data-v-3cda6fe3]{margin:0;max-height:320px;overflow:auto;white-space:pre-wrap;word-break:break-word;font-size:calc(var(--ui-font-size) - 3px);line-height:1.45}.kap-agg[data-v-3cda6fe3]{flex:1;min-height:0;overflow-y:auto;padding:8px 10px}.kap-agg h4[data-v-3cda6fe3]{margin:8px 0 4px;font-size:calc(var(--ui-font-size) - 2.5px);color:var(--muted)}.kap-agg table[data-v-3cda6fe3]{width:100%;border-collapse:collapse}.kap-agg th[data-v-3cda6fe3],.kap-agg td[data-v-3cda6fe3]{padding:3px 6px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.kap-agg th[data-v-3cda6fe3]{color:var(--muted);font-weight:500}.kap-agg .num[data-v-3cda6fe3]{text-align:right}.kap-agg .err[data-v-3cda6fe3]{color:var(--color-warning);font-weight:500}.kap-agg .mono[data-v-3cda6fe3]{word-break:break-all}.kap-fab[data-v-21346738]{position:fixed;right:10px;bottom:10px;z-index:var(--z-overlay);padding:5px 9px;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--muted);font-family:var(--mono);font-size:calc(var(--ui-font-size) - 3px);font-weight:500;letter-spacing:.04em;cursor:pointer;opacity:.75}.kap-fab[data-v-21346738]:hover{opacity:1;color:var(--color-accent)}.server-auth-overlay[data-v-469e14bc]{position:fixed;inset:0;z-index:var(--z-max);display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--color-bg) 70%,transparent)}.server-auth-card[data-v-469e14bc]{width:480px;max-width:calc(100vw - 48px);background:var(--color-surface-raised);border:1px solid var(--color-line);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);overflow:hidden;color:var(--color-text);font-family:var(--font-ui)}.server-auth-head[data-v-469e14bc]{display:flex;flex-direction:column;padding:20px 22px 14px}.server-auth-title[data-v-469e14bc]{margin:0;font-size:var(--text-lg);font-weight:var(--weight-medium);letter-spacing:-.01em;color:var(--color-text)}.server-auth-hint[data-v-469e14bc]{margin:4px 0 0;font-size:var(--text-base);line-height:var(--leading-normal);color:var(--color-text-muted)}.server-auth-hint code[data-v-469e14bc]{padding:1px 5px;font-family:var(--font-mono);font-size:var(--text-xs);background:var(--color-surface-sunken);border-radius:var(--radius-xs)}.server-auth-body[data-v-469e14bc]{padding:4px 22px 18px}.server-auth-foot[data-v-469e14bc]{display:flex;justify-content:flex-end;gap:10px;padding:14px 22px 20px}.internal-build-tag[data-v-086c00dc]{flex:none;display:inline-flex;align-items:center;gap:4px;padding:2px 7px;border-radius:999px;background:var(--color-logo-dev);color:var(--color-on-logo-dev);font-size:11px;font-weight:var(--weight-semibold);letter-spacing:.01em;line-height:1.4;white-space:nowrap;user-select:none}.gload-fade-leave-active[data-v-489f3058]{transition:opacity .28s ease}.gload-fade-leave-to[data-v-489f3058]{opacity:0}.app-shell[data-v-489f3058]{position:fixed;top:var(--app-top, 0px);left:0;right:0;height:100vh;height:100dvh;height:var(--app-height, 100dvh);display:flex;flex-direction:column;overflow:hidden;box-sizing:border-box}.auth-page[data-v-489f3058]{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:32px;background:var(--bg);color:var(--color-text);box-sizing:border-box}.auth-page-inner[data-v-489f3058]{width:min(420px,100%);display:flex;flex-direction:column;align-items:flex-start;gap:18px}.auth-page-logo[data-v-489f3058]{width:64px;height:44px;flex:none;cursor:pointer;user-select:none;-webkit-user-select:none;transition:transform .18s ease}.auth-page-logo[data-v-489f3058]:hover{transform:scale(1.06)}.auth-page-copy[data-v-489f3058]{display:flex;flex-direction:column;gap:8px}.auth-page-copy h1[data-v-489f3058]{margin:0;font-family:var(--sans);font-size:30px;line-height:1.15;font-weight:500;letter-spacing:0;color:var(--color-text)}.auth-page-copy p[data-v-489f3058]{margin:0;font-family:var(--sans);font-size:var(--ui-font-size-lg);line-height:1.55;color:var(--dim)}.app[data-v-489f3058]{--preview-w: 460px;flex:1;min-height:0;position:relative;display:grid;grid-template-columns:auto 0 minmax(0,1fr) 0 auto;background:var(--bg);color:var(--color-text);overflow:hidden;box-sizing:border-box}.app[data-v-489f3058]>*{min-height:0;min-width:0}.app>.side[data-v-489f3058]{grid-column:1}.side-handle[data-v-489f3058]{grid-column:2}.app:not(.mobile)>.con[data-v-489f3058]{grid-column:3}.preview-handle[data-v-489f3058]{grid-column:4}.sidebar-toggle-btn[data-v-489f3058]{position:absolute;top:11px;left:16px;z-index:var(--z-sticky);animation:sidebar-toggle-btn-in-489f3058 .18s var(--ease-out) .12s backwards;-webkit-app-region:no-drag}.app.macos-desktop .sidebar-toggle-btn[data-v-489f3058]{left:72px;animation:none}@keyframes sidebar-toggle-btn-in-489f3058{0%{opacity:0}}.internal-build-fab[data-v-489f3058]{position:absolute;right:var(--space-3);bottom:var(--space-3);z-index:var(--z-sticky);pointer-events:none}.app.mobile[data-v-489f3058]{grid-template-columns:1fr;grid-template-rows:auto 1fr}.global-preview[data-v-489f3058]{grid-column:5;min-width:0;min-height:0;width:0;background:var(--bg);overflow:hidden;transition:width .28s cubic-bezier(.4,0,.2,1)}.global-preview.open[data-v-489f3058]{width:var(--preview-w)}.global-preview.no-anim[data-v-489f3058]{transition:none}.global-preview[data-v-489f3058]:not(.overlay)>*{width:var(--preview-w);height:100%;box-sizing:border-box;border-left:1px solid var(--line)}.global-preview.overlay[data-v-489f3058]{position:fixed;inset:0;z-index:var(--z-sticky);width:auto;transition:none;border-top:2px solid var(--color-text)}@media(max-width:640px){.auth-page[data-v-489f3058]{align-items:flex-start;padding:max(48px,var(--safe-top)) max(20px,var(--safe-right)) max(24px,var(--safe-bottom)) max(20px,var(--safe-left))}.auth-page-copy h1[data-v-489f3058]{font-size:26px}.auth-page-btn[data-v-489f3058]{width:100%}}:root{--panel-head-h: 48px}.app:not(.mobile) .chat-header{transition:padding-left .28s cubic-bezier(.4,0,.2,1)}.app.sidebar-collapsed .chat-header{padding-left:52px}.app.sidebar-collapsed.macos-desktop .chat-header{padding-left:108px}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;tab-size:4}body{margin:0}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit;margin:0}p,blockquote,dl,dd,figure,pre{margin:0}ol,ul,menu{list-style:none;margin:0;padding:0}a{color:inherit;text-decoration:inherit}b,strong{font-weight:var(--weight-medium)}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}button,input,optgroup,select,textarea{margin:0;padding:0;font-family:inherit;font-size:100%;line-height:inherit;color:inherit}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background:transparent;background-image:none}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block}img,video{max-width:100%;height:auto}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1}table{border-collapse:collapse;border-color:inherit;text-indent:0}hr{height:0;color:inherit;border-top-width:1px}fieldset{margin:0;padding:0}legend{padding:0}dialog{padding:0}summary{display:list-item}[hidden]{display:none}@supports (interpolate-size: allow-keywords){:root{interpolate-size:allow-keywords}}:root{--dim: #595959;--muted: #8a8a8a;--faint: #b5b5b5;--line: #e9edf3;--line2: #f1f4f8;--canvas: #f4f6fa;--sh: 0 1px 3px rgba(28, 40, 66, .05), 0 6px 18px rgba(28, 40, 66, .06);--shc: 0 1px 2px rgba(28, 40, 66, .05);--panel: #fafbfc;--panel2: #f3f5f8;--bg: #ffffff;--blue: #1783ff;--blue2: #0f6fe0;--soft: #e8f3ff;--bd: #cfe6ff;--logo: #1783ff;--bluebg: #e8f3ff;--blueln: #cfe6ff;--ok: #0e7a38;--warn: #a9610a;--star: #eab308;--err: #c0392b;--hover: rgba(0, 0, 0, .05);--r-xs: var(--radius-sm);--r-sm: var(--radius-md);--r-md: var(--radius-lg);--r-lg: var(--radius-xl);--base-ui-font-size: 14px;--ui-font-size: var(--base-ui-font-size);--ui-font-size-sm: calc(var(--ui-font-size) - 1px);--ui-font-size-xs: calc(var(--ui-font-size) - 2px);--ui-font-size-lg: calc(var(--ui-font-size) + 1px);--ui-font-size-xl: calc(var(--ui-font-size) + 2px);--content-font-size: calc(var(--base-ui-font-size) + 1px);--mono: "JetBrains Mono Variable", "JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--sans: var(--font-ui);color-scheme:light dark}:root{--safe-top: env(safe-area-inset-top, 0px);--safe-right: env(safe-area-inset-right, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px)}.kw-icon{display:inline-block;flex:none;vertical-align:-.15em}code,pre,kbd,samp,tt{font-feature-settings:"liga" 0,"calt" 0,"ss01" 0;font-variant-ligatures:none}html[data-color-scheme=light]{color-scheme:light}html[data-color-scheme=system]{color-scheme:light dark}html[data-color-scheme=dark]{color-scheme:dark;--dim: #9aa0a8;--muted: #727983;--faint: #525960;--line: #2d333b;--line2: #22272e;--panel: #1c2128;--panel2: #161b22;--bg: #0d1117;--blue: #58a6ff;--blue2: #79b8ff;--soft: #1f2937;--bd: #1f6feb;--logo: #58a6ff;--bluebg: #1c2a3a;--blueln: #1f4f7a;--ok: #3fb950;--warn: #d29922;--star: #facc15;--err: #f85149;--hover: rgba(255, 255, 255, .07);--canvas: #161b22;--sh: 0 1px 3px rgba(0, 0, 0, .35), 0 6px 18px rgba(0, 0, 0, .4);--shc: 0 1px 2px rgba(0, 0, 0, .35)}@media(prefers-color-scheme:dark){html[data-color-scheme=system]{--dim: #9aa0a8;--muted: #727983;--faint: #525960;--line: #2d333b;--line2: #22272e;--panel: #1c2128;--panel2: #161b22;--bg: #0d1117;--blue: #58a6ff;--blue2: #79b8ff;--soft: #1f2937;--bd: #1f6feb;--logo: #58a6ff;--bluebg: #1c2a3a;--blueln: #1f4f7a;--ok: #3fb950;--warn: #d29922;--star: #facc15;--err: #f85149;--hover: rgba(255, 255, 255, .07);--canvas: #161b22;--sh: 0 1px 3px rgba(0, 0, 0, .35), 0 6px 18px rgba(0, 0, 0, .4);--shc: 0 1px 2px rgba(0, 0, 0, .35)}}html[data-accent=mono]{--accent-primary: #171717;--color-accent: #171717;--color-accent-hover: #383838;--color-accent-soft: #f1f1f2;--color-accent-bd: #d4d4d8;--blue: #171717;--blue2: #383838;--soft: #f1f1f2;--bd: #d4d4d8;--bluebg: #f4f4f5;--blueln: #e4e4e7;--logo: #171717}html[data-color-scheme=dark][data-accent=mono]{--accent-primary: #e8eaed;--color-accent: #e8eaed;--color-accent-hover: #c9cdd4;--color-accent-soft: #21262d;--color-accent-bd: #444c56;--color-text-on-accent: var(--color-bg);--blue: #e8eaed;--blue2: #c9cdd4;--soft: #21262d;--bd: #444c56;--bluebg: #21262d;--blueln: #30363d;--logo: #e8eaed}@media(prefers-color-scheme:dark){html[data-color-scheme=system][data-accent=mono]{--accent-primary: #e8eaed;--color-accent: #e8eaed;--color-accent-hover: #c9cdd4;--color-accent-soft: #21262d;--color-accent-bd: #444c56;--color-text-on-accent: var(--color-bg);--blue: #e8eaed;--blue2: #c9cdd4;--soft: #21262d;--bd: #444c56;--bluebg: #21262d;--blueln: #30363d;--logo: #e8eaed}}:root{--accent-primary: #1783ff;--accent-secondary: #6b7280;--surface-light: #ffffff;--surface-dark: #0d1117;--color-bg: #ffffff;--color-surface: #fafbfc;--color-surface-raised: #ffffff;--color-surface-sunken: #f3f5f8;--color-media-alpha-bg-1: color-mix(in srgb, var(--color-bg) 52%, var(--color-text) 48%);--color-media-alpha-bg-2: color-mix(in srgb, var(--color-bg) 42%, var(--color-text) 58%);--media-alpha-canvas: conic-gradient( var(--color-media-alpha-bg-1) 25%, var(--color-media-alpha-bg-2) 0 50%, var(--color-media-alpha-bg-1) 0 75%, var(--color-media-alpha-bg-2) 0 ) 0 0 / 16px 16px;--color-text: rgba(0, 0, 0, .9);--color-text-muted: #6b7280;--color-text-faint: #9aa3af;--color-text-on-accent: #ffffff;--color-line: #e7eaee;--color-line-strong: #d4d9e0;--color-selected: #00000014;--color-hover: #0000000d;--color-sidebar-bg: #fbfaf9;--color-accent: var(--accent-primary);--color-accent-hover: #0f6fe0;--color-accent-soft: #e8f3ff;--color-accent-bd: #cfe6ff;--color-success: #0e7a38;--color-success-soft: #e7f6ee;--color-success-bd: #bfe3cc;--color-warning: #a9610a;--color-warning-soft: #fbf1e0;--color-warning-bd: #f0d9b8;--color-danger: #c0392b;--color-danger-soft: #fbeaea;--color-danger-bd: #f0cccc;--color-done: #8250df;--color-done-soft: #f3e8ff;--color-done-bd: #e0ccff;--color-info: var(--accent-primary);--color-logo-dev: #f5b301;--color-on-logo-dev: #3a2a00;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--radius-xs: 4px;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-2xl: 20px;--radius-full: 999px;--z-base: 0;--z-sticky: 100;--z-dropdown: 200;--z-tooltip: 250;--z-overlay: 300;--z-modal: 400;--z-toast: 600;--z-max: 9999;--shadow-xs: 0 1px 2px rgba(16, 24, 40, .04);--shadow-sm: 0 1px 2px rgba(16, 24, 40, .05), 0 1px 3px rgba(16, 24, 40, .06);--shadow-md: 0 4px 12px rgba(16, 24, 40, .07), 0 2px 4px rgba(16, 24, 40, .05);--shadow-lg: 0 12px 32px rgba(16, 24, 40, .12), 0 4px 10px rgba(16, 24, 40, .08);--shadow-xl: 0 24px 64px rgba(16, 24, 40, .18), 0 8px 20px rgba(16, 24, 40, .1);--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-in-out: cubic-bezier(.4, 0, .2, 1);--duration-fast: .12s;--duration-base: .16s;--duration-slow: .26s;--font-ui: "Inter Variable", "Inter", "Helvetica Neue", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Source Han Sans SC", "Noto Sans SC", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-display: var(--font-ui);--font-mono: "JetBrains Mono Variable", "JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--text-xs: 12px;--text-sm: 13px;--text-base: 14px;--text-lg: 16px;--text-xl: 18px;--text-2xl: 22px;--leading-tight: 1.25;--leading-normal: 1.5;--leading-relaxed: 1.7;--weight-regular: 400;--weight-medium: 500;--weight-semibold: 700;--p-focus-ring: 0 0 0 3px var(--color-accent-soft);--p-focus-ring-strong: 0 0 0 3px var(--color-accent-soft), 0 0 0 1px var(--color-accent);--p-selection: rgba(23, 131, 255, .18);--p-ic-sm: 14px;--p-ic-md: 16px;--p-ic-lg: 20px;--p-sidebar-w: 264px;--p-content-max: 760px;--p-content-wide: 920px;--p-table-max: 1040px;--p-table-cell-max: 700px;--p-bp-sm: 640px;--p-bp-md: 980px}html[data-color-scheme=dark]{--accent-primary: #58a6ff;--color-bg: #0d1117;--color-surface: #161b22;--color-surface-raised: #1c2128;--color-surface-sunken: #0d1117;--color-text: #c9cdd4;--color-text-muted: #9aa0a8;--color-text-faint: #6b7280;--color-line: #2d333b;--color-line-strong: #3d444d;--color-selected: #ffffff14;--color-hover: #ffffff0d;--color-sidebar-bg: #181817;--color-accent: #58a6ff;--color-accent-hover: #79b8ff;--color-accent-soft: rgba(88, 166, 255, .14);--p-selection: rgba(88, 166, 255, .32);--color-accent-bd: rgba(88, 166, 255, .28);--color-success: #3fb950;--color-success-soft: rgba(63, 185, 80, .14);--color-success-bd: rgba(63, 185, 80, .28);--color-warning: #d29922;--color-warning-soft: rgba(210, 153, 34, .14);--color-warning-bd: rgba(210, 153, 34, .28);--color-danger: #f85149;--color-danger-soft: rgba(248, 81, 73, .14);--color-danger-bd: rgba(248, 81, 73, .28);--color-done: #a371f7;--color-done-soft: rgba(163, 113, 247, .14);--color-done-bd: rgba(163, 113, 247, .28);--color-info: #58a6ff;--shadow-xs: 0 1px 2px rgba(0, 0, 0, .2);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .22), 0 1px 3px rgba(0, 0, 0, .18);--shadow-md: 0 4px 12px rgba(0, 0, 0, .3), 0 2px 4px rgba(0, 0, 0, .24);--shadow-lg: 0 12px 32px rgba(0, 0, 0, .34), 0 4px 10px rgba(0, 0, 0, .28);--shadow-xl: 0 24px 64px rgba(0, 0, 0, .42), 0 8px 20px rgba(0, 0, 0, .32)}@media(prefers-color-scheme:dark){html[data-color-scheme=system]{--accent-primary: #58a6ff;--color-bg: #0d1117;--color-surface: #161b22;--color-surface-raised: #1c2128;--color-surface-sunken: #0d1117;--color-text: #c9cdd4;--color-text-muted: #9aa0a8;--color-text-faint: #6b7280;--color-line: #2d333b;--color-line-strong: #3d444d;--color-selected: #ffffff14;--color-hover: #ffffff0d;--color-sidebar-bg: #181817;--color-accent: #58a6ff;--color-accent-hover: #79b8ff;--color-accent-soft: rgba(88, 166, 255, .14);--p-selection: rgba(88, 166, 255, .32);--color-accent-bd: rgba(88, 166, 255, .28);--color-success: #3fb950;--color-success-soft: rgba(63, 185, 80, .14);--color-success-bd: rgba(63, 185, 80, .28);--color-warning: #d29922;--color-warning-soft: rgba(210, 153, 34, .14);--color-warning-bd: rgba(210, 153, 34, .28);--color-danger: #f85149;--color-danger-soft: rgba(248, 81, 73, .14);--color-danger-bd: rgba(248, 81, 73, .28);--color-done: #a371f7;--color-done-soft: rgba(163, 113, 247, .14);--color-done-bd: rgba(163, 113, 247, .28);--color-info: #58a6ff;--shadow-xs: 0 1px 2px rgba(0, 0, 0, .2);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .22), 0 1px 3px rgba(0, 0, 0, .18);--shadow-md: 0 4px 12px rgba(0, 0, 0, .3), 0 2px 4px rgba(0, 0, 0, .24);--shadow-lg: 0 12px 32px rgba(0, 0, 0, .34), 0 4px 10px rgba(0, 0, 0, .28);--shadow-xl: 0 24px 64px rgba(0, 0, 0, .42), 0 8px 20px rgba(0, 0, 0, .32)}}html,body,#app{height:100%;margin:0;background:var(--bg)}#app{position:fixed;inset:0}html,body{overflow:hidden}@supports not selector(::-webkit-scrollbar){*{scrollbar-width:thin;scrollbar-color:rgba(128,128,128,.3) transparent}}*::-webkit-scrollbar{width:6px;height:6px}*::-webkit-scrollbar-track{background:transparent}*::-webkit-scrollbar-thumb{background:#8080804d;border-radius:999px}*::-webkit-scrollbar-thumb:hover{background:#80808080}*::-webkit-scrollbar-corner{background:transparent}body{font-family:var(--sans);color:var(--color-text);background:var(--bg);font-size:var(--ui-font-size);font-weight:400;line-height:1.6;font-optical-sizing:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:auto;font-synthesis:none;text-size-adjust:100%;-webkit-hyphens:none;hyphens:none}@media(max-width:640px){.backdrop{align-items:flex-end;justify-content:stretch}.backdrop .dialog{width:100%;max-width:100%;max-height:88vh;border-radius:16px 16px 0 0;border-left:none;border-right:none;border-bottom:none;border-top:1px solid var(--line);box-shadow:0 -10px 30px #0000002e;animation:kimi-sheet-up .26s cubic-bezier(.4,0,.2,1)}}@keyframes kimi-sheet-up{0%{transform:translateY(101%)}to{transform:translateY(0)}}.backdrop,.ob-backdrop{min-width:100vw!important;min-height:100vh!important;min-height:100dvh!important}@keyframes kimi-card-in{0%{opacity:0;transform:translateY(8px) scale(.995)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes kimi-check-in{0%{opacity:0;transform:scale(.4)}60%{opacity:1;transform:scale(1.15)}to{opacity:1;transform:scale(1)}}@media(prefers-reduced-motion:reduce){*{animation-duration:.001ms!important;animation-delay:0ms!important;transition-duration:.001ms!important}}.ch-eyes{animation:kimi-eye-look 16s ease-in-out infinite}.ch-eye{transform-box:fill-box;transform-origin:center;animation:kimi-eye-blink 11s ease-in-out infinite}@keyframes kimi-eye-look{0%,42%{transform:translate(0)}47%,53%{transform:translate(2px)}58%,80%{transform:translate(0)}84%,90%{transform:translate(-2px)}95%,to{transform:translate(0)}}@keyframes kimi-eye-blink{0%,94%,to{transform:scaleY(1)}96.5%,98%{transform:scaleY(.12)}}@media(prefers-reduced-motion:reduce){.ch-eyes,.ch-eye{animation:none}}.ch-logo.blink-now .ch-eye{animation:kimi-eye-blink-once .24s ease-in-out}@keyframes kimi-eye-blink-once{0%,to{transform:scaleY(1)}50%{transform:scaleY(.1)}}.md .markdown-renderer img{min-width:0;min-height:0}.app{font-size:var(--ui-font-size)}.md,.md .markdown-renderer,.md .markdown-renderer p,.md .markdown-renderer li,.md .markdown-renderer blockquote,.md .markdown-renderer td,.md .markdown-renderer th,.u-bub,.u-bub .u-text,.a-msg .msg,.box .bb,.ph{font-size:var(--content-font-size)}.md .code-block-container pre,.md .markstream-pre,.md .code-block-container pre code,.md .diff-pre code,.box .bh,.queue-item,.queue-text,.ctx-num,.model-pill,.perm-pill,.mode-pill,.compact-chip,.qcard,.qtext,.qopt,.qbtn,.srow,.srow-val{font-size:var(--ui-font-size)}.md :not(pre)>code,.md .inline-code,.a-msg code,.qopt-desc,.srow-label{font-size:var(--ui-font-size-sm)}.code-block-header,.code-block-header *,.diff-lang,.queue-label,.qopt-key,.qstep,.srow-sub{font-size:var(--ui-font-size-xs)}@media(max-width:640px){.u-bub .u-text,.a-msg .msg,.ph{font-size:max(16px,var(--ui-font-size-xl))}}
diff --git a/apps/kimi-code/dist-web/assets/index-CABDay0b.css b/apps/kimi-code/dist-web/assets/index-CABDay0b.css
new file mode 100644
index 0000000000..d0697f0462
--- /dev/null
+++ b/apps/kimi-code/dist-web/assets/index-CABDay0b.css
@@ -0,0 +1 @@
+.ui-icon-button[data-v-c9e67023]{display:inline-flex;align-items:center;justify-content:center;flex:none;padding:0;border:1px solid transparent;border-radius:var(--radius-md);background:transparent;color:var(--color-text-muted);cursor:pointer;transition:background var(--duration-base) var(--ease-out),color var(--duration-base) var(--ease-out)}.ui-icon-button[data-v-c9e67023]:hover:not(:disabled){background:color-mix(in srgb,var(--color-text) 8%,transparent);color:var(--color-text)}.ui-icon-button[data-v-c9e67023]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.ui-icon-button[data-v-c9e67023]:disabled{opacity:.5;cursor:not-allowed}.ui-icon-button--sm[data-v-c9e67023]{width:26px;height:26px;border-radius:var(--radius-sm)}.ui-icon-button--md[data-v-c9e67023]{width:32px;height:32px}.ui-icon-button--lg[data-v-c9e67023]{width:44px;height:44px}.ui-icon-button[data-v-c9e67023] svg{width:var(--p-ic-md);height:var(--p-ic-md)}.ui-icon-button--sm[data-v-c9e67023] svg{width:var(--p-ic-md);height:var(--p-ic-md)}.ui-icon-button--lg[data-v-c9e67023] svg{width:var(--p-ic-lg);height:var(--p-ic-lg)}.ui-dialog__overlay[data-v-ee025dcb]{position:fixed;inset:0;z-index:var(--z-modal);display:flex;align-items:center;justify-content:center;padding:var(--space-6);background:#0d111773;animation:kimi-dialog-overlay-in-ee025dcb var(--duration-base) var(--ease-out)}@keyframes kimi-dialog-overlay-in-ee025dcb{0%{opacity:0}to{opacity:1}}.ui-dialog[data-v-ee025dcb]{max-height:calc(100vh - var(--space-8) * 2);display:flex;flex-direction:column;background:var(--color-surface-raised);border:1px solid var(--color-line);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);outline:none;overflow:hidden;animation:kimi-card-in var(--duration-slow) var(--ease-out)}.ui-dialog--md[data-v-ee025dcb]{width:min(440px,100%)}.ui-dialog--lg[data-v-ee025dcb]{width:min(640px,100%)}.ui-dialog--xl[data-v-ee025dcb]{width:min(var(--p-content-max),100%)}.ui-dialog--fixed-height[data-v-ee025dcb]{height:min(680px,calc(100vh - var(--space-8) * 2))}.ui-dialog--flush .ui-dialog__body[data-v-ee025dcb]{padding:0}.ui-dialog__head[data-v-ee025dcb]{display:flex;align-items:flex-start;gap:var(--space-3);padding:20px 22px 14px}.ui-dialog__titles[data-v-ee025dcb]{flex:1;min-width:0}.ui-dialog__title[data-v-ee025dcb]{font-size:var(--text-lg);font-weight:500;color:var(--color-text);line-height:var(--leading-tight)}.ui-dialog__desc[data-v-ee025dcb]{margin-top:4px;font-size:var(--text-base);color:var(--color-text-muted)}.ui-dialog__close[data-v-ee025dcb]{flex:none;margin-top:-2px}.ui-dialog__body[data-v-ee025dcb]{flex:1;min-height:0;padding:4px 22px 18px;color:var(--color-text);overflow:auto}.ui-dialog__foot[data-v-ee025dcb]{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:14px 22px 20px}.sd-head[data-v-ac47909f]{flex:1;min-width:0;display:flex;align-items:center;gap:var(--space-2)}.sd-search-icon[data-v-ac47909f]{flex:none;color:var(--color-text-muted)}.sd-input[data-v-ac47909f]{flex:1;min-width:0;font-family:var(--font-ui);font-size:var(--text-lg);color:var(--color-text);background:none;border:none;outline:none;padding:var(--space-1) 0}.sd-input[data-v-ac47909f]::placeholder{color:var(--color-text-muted)}.sd-list[data-v-ac47909f]{height:420px;overflow-y:auto;padding:var(--space-1) var(--space-2)}.sd-row[data-v-ac47909f]{display:flex;flex-direction:column;gap:2px;width:100%;padding:var(--space-2) var(--space-3);border:none;border-radius:var(--radius-md);background:none;cursor:pointer;text-align:left;font-family:var(--font-ui);color:var(--color-text)}.sd-row[data-v-ac47909f]:hover,.sd-row.on[data-v-ac47909f]{background:var(--color-surface-sunken)}.sd-row.active .sd-title[data-v-ac47909f]{color:var(--color-accent-hover)}.sd-meta[data-v-ac47909f]{display:flex;align-items:center;gap:var(--space-1);min-width:0;font-size:var(--text-xs);color:var(--color-text-muted)}.sd-folder[data-v-ac47909f]{flex:none;color:var(--color-text-muted)}.sd-ws[data-v-ac47909f]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sd-time[data-v-ac47909f]{flex:none;font-family:var(--font-mono);color:var(--color-text-faint)}.sd-title[data-v-ac47909f]{min-width:0;font-size:var(--text-base);color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sd-snippet[data-v-ac47909f]{min-width:0;font-size:var(--text-sm);color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sd-title[data-v-ac47909f] mark,.sd-snippet[data-v-ac47909f] mark{background:var(--color-accent);color:var(--color-bg);font-weight:var(--weight-semibold);border-radius:var(--radius-xs);padding:0 2px}.sd-empty[data-v-ac47909f]{padding:var(--space-6) var(--space-4);text-align:center;color:var(--color-text-muted);font-size:var(--text-sm)}.sd-hint[data-v-ac47909f]{font-size:var(--text-xs);color:var(--color-text-muted)}.ui-spinner[data-v-e5c5b17d]{display:inline-flex;flex:none;color:var(--color-accent)}.ui-spinner--sm[data-v-e5c5b17d]{width:14px;height:14px}.ui-spinner--md[data-v-e5c5b17d]{width:18px;height:18px}.ui-spinner--lg[data-v-e5c5b17d]{width:28px;height:28px}.ui-spinner__svg[data-v-e5c5b17d]{width:100%;height:100%;animation:ui-spinner-rotate-e5c5b17d .85s linear infinite}.ui-spinner__track[data-v-e5c5b17d]{fill:none;stroke:var(--color-line);stroke-width:2.2}.ui-spinner__arc[data-v-e5c5b17d]{fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-dasharray:56 56;stroke-dashoffset:38}@keyframes ui-spinner-rotate-e5c5b17d{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.ui-spinner__svg[data-v-e5c5b17d]{animation-duration:1.8s}}.ui-badge[data-v-5bc5cd6d]{display:inline-flex;align-items:center;gap:6px;border-radius:var(--radius-full);font-family:var(--font-ui);font-weight:var(--weight-medium);line-height:1;white-space:nowrap;border:1px solid transparent}.ui-badge--md[data-v-5bc5cd6d]{height:22px;padding:0 9px;font-size:var(--text-xs)}.ui-badge--sm[data-v-5bc5cd6d]{height:18px;padding:0 7px;font-size:11px}.ui-badge__dot[data-v-5bc5cd6d]{width:6px;height:6px;border-radius:var(--radius-full);background:currentColor;flex:none}.ui-badge--neutral[data-v-5bc5cd6d]{background:var(--color-surface-sunken);color:var(--color-text-muted);border-color:var(--color-line)}.ui-badge--info[data-v-5bc5cd6d]{background:var(--color-accent-soft);color:var(--color-accent-hover);border-color:var(--color-accent-bd)}.ui-badge--success[data-v-5bc5cd6d]{background:var(--color-success-soft);color:var(--color-success);border-color:var(--color-success-bd)}.ui-badge--warning[data-v-5bc5cd6d]{background:var(--color-warning-soft);color:var(--color-warning);border-color:var(--color-warning-bd)}.ui-badge--danger[data-v-5bc5cd6d]{background:var(--color-danger-soft);color:var(--color-danger);border-color:var(--color-danger-bd)}.ui-badge--solid[data-v-5bc5cd6d]{background:var(--color-text);color:var(--color-bg)}.ui-menu[data-v-60e6cd8d]{min-width:180px;padding:var(--space-1);background:var(--color-surface-raised);border:1px solid var(--color-line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);display:flex;flex-direction:column}.ui-menu-item[data-v-f940771a]{display:flex;align-items:center;gap:var(--space-2);width:100%;padding:6px 10px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-text);font-family:var(--font-ui);font-size:var(--text-base);text-align:left;cursor:pointer;transition:background var(--duration-base),color var(--duration-base)}.ui-menu-item[data-v-f940771a]:hover:not(:disabled){background:var(--color-surface-sunken)}.ui-menu-item[data-v-f940771a]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.ui-menu-item[data-v-f940771a]:disabled{opacity:.5;cursor:not-allowed}.ui-menu-item.is-active[data-v-f940771a]{background:var(--color-accent-soft);color:var(--color-accent-hover)}.ui-menu-item.is-danger[data-v-f940771a]{color:var(--color-danger)}.ui-menu-item.is-danger[data-v-f940771a]:hover:not(:disabled){background:var(--color-danger-soft)}.ui-menu-item[data-v-f940771a] svg{width:14px;height:14px;flex:none}.ui-menu-item--lg[data-v-f940771a]{min-height:44px;padding:12px 14px;font-size:var(--text-base)}.ui-menu-sep[data-v-f940771a]{height:1px;margin:4px 0;background:var(--color-line)}.ui-tip[data-v-98697f45]{display:contents}.ui-tip__bubble[data-v-98697f45]{position:fixed;z-index:var(--z-tooltip);display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:var(--tip-lines);max-width:280px;padding:4px 8px;border-radius:var(--radius-sm);background:var(--color-text);color:var(--color-bg);font-family:var(--font-ui);font-size:var(--text-xs);line-height:1.35;overflow:hidden;overflow-wrap:anywhere;pointer-events:none;opacity:0;transition:opacity var(--duration-fast) var(--ease-out)}.ui-tip__bubble.positioned[data-v-98697f45]{opacity:1}.se[data-v-1c24e83d]{display:block;margin:0;padding:8px var(--space-2);border-radius:var(--radius-sm);font-family:var(--font-ui);color:var(--color-text);cursor:pointer;position:relative}.se[data-v-1c24e83d]:hover{background:var(--sb-hover, var(--color-surface-sunken));color:var(--color-text)}.se.on[data-v-1c24e83d]{background:var(--color-selected);color:var(--color-text)}.row[data-v-1c24e83d]{display:flex;align-items:center;gap:var(--sb-gap, 6px);min-width:0}.left[data-v-1c24e83d]{display:flex;align-items:center;flex:1;min-width:0}.lead[data-v-1c24e83d]{width:var(--sb-gutter, 16px);flex:none;display:inline-flex;align-items:center;justify-content:center}.unread-dot[data-v-1c24e83d]{width:7px;height:7px;border-radius:var(--radius-full);background:var(--color-accent)}.t[data-v-1c24e83d]{color:inherit;font-size:var(--ui-font-size-sm);font-weight:var(--weight-medium);line-height:var(--leading-tight);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.t-emoji[data-v-1c24e83d]{margin-right:4px;font-size:var(--text-base)}.ts[data-v-1c24e83d]{color:var(--color-text-faint);font-size:var(--text-xs);font-family:var(--font-ui);font-weight:var(--weight-medium);line-height:var(--leading-tight);font-variant-numeric:tabular-nums;text-align:right}.pr[data-v-1c24e83d]{display:inline-flex;align-items:center;gap:var(--space-1);flex:none;padding:1px var(--space-1);border:1px solid var(--color-line);border-radius:var(--radius-sm);background:var(--color-surface-sunken);color:var(--color-text-muted);font-family:var(--font-ui);font-size:var(--text-xs);font-weight:var(--weight-medium);line-height:1;cursor:pointer}.pr[data-v-1c24e83d]:hover{border-color:var(--color-line-strong)}.pr[data-v-1c24e83d]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.pr--open[data-v-1c24e83d],.pr--open[data-v-1c24e83d]:hover{background:var(--color-success-soft);border-color:var(--color-success-bd);color:var(--color-success)}.pr--merged[data-v-1c24e83d],.pr--merged[data-v-1c24e83d]:hover{background:var(--color-done-soft);border-color:var(--color-done-bd);color:var(--color-done)}.act[data-v-1c24e83d]{position:relative;flex:none;display:inline-flex;align-items:center;justify-content:flex-end;min-width:78px}.se.has-gen .act[data-v-1c24e83d]{min-width:104px}.act .btn[data-v-1c24e83d]{position:absolute;top:50%;transform:translateY(-50%);visibility:hidden}.act .kebab[data-v-1c24e83d]{right:0}.act .pin[data-v-1c24e83d]{right:26px}.act .emoji-btn[data-v-1c24e83d]{right:52px}.act .gen-title[data-v-1c24e83d]{right:78px}.act .pin.on[data-v-1c24e83d]{visibility:visible;color:var(--color-accent)}.se:hover .act .btn[data-v-1c24e83d],.act:has(.btn.open) .btn[data-v-1c24e83d]{visibility:visible}.se:hover .act .ts[data-v-1c24e83d],.act:has(.btn.open) .ts[data-v-1c24e83d]{visibility:hidden}.btn.open[data-v-1c24e83d]{color:var(--color-text);background:var(--sb-hover, var(--color-surface-sunken))}.emoji-glyph[data-v-1c24e83d]{font-size:var(--text-base);line-height:1}.emoji-picker[data-v-1c24e83d]{position:fixed;top:0;left:0;z-index:var(--z-dropdown);min-width:172px;padding:var(--space-2);background:var(--color-surface-raised);border:1px solid var(--color-line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.emoji-grid[data-v-1c24e83d]{display:grid;grid-template-columns:repeat(5,28px);gap:var(--space-1)}.emoji-cell[data-v-1c24e83d]{width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;border:none;border-radius:var(--radius-sm);background:transparent;font-size:var(--text-base);line-height:1;cursor:pointer;transition:background var(--duration-fast) var(--ease-out)}.emoji-cell[data-v-1c24e83d]:hover{background:var(--color-surface-sunken)}.emoji-cell[data-v-1c24e83d]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.emoji-cell.on[data-v-1c24e83d]{background:var(--color-accent-soft)}.emoji-clear[data-v-1c24e83d]{margin-top:var(--space-1);width:100%;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-muted);font-family:var(--font-ui);font-size:var(--text-xs);line-height:var(--leading-tight);padding:4px 8px;cursor:pointer}.emoji-clear[data-v-1c24e83d]:hover{background:var(--color-surface-sunken);color:var(--color-text)}.menu[data-v-1c24e83d]{position:fixed;top:0;left:0;z-index:var(--z-dropdown)}.menu-time[data-v-1c24e83d]{padding:6px 10px;color:var(--color-text-faint);font-family:var(--font-mono);font-size:var(--text-xs);cursor:default;user-select:text}.rename-input[data-v-1c24e83d]{flex:1;font-family:var(--font-ui);font-size:var(--text-sm);color:var(--color-text);background:var(--color-bg);border:1px solid var(--color-accent);border-radius:var(--radius-xs);padding:1px 4px;outline:none;min-width:0}.sessions .se[data-v-1c24e83d]{margin:0;border-radius:var(--radius-sm);padding:8px calc(var(--sb-pad-x, 20px) - var(--sb-inset, 12px))}.sessions .se .rename-input[data-v-1c24e83d]{border-radius:var(--radius-sm);font-family:var(--sans)}.sessions .se .btn[data-v-1c24e83d]{border-radius:var(--radius-sm)}.group.dragging[data-v-ec29996e]{opacity:.45}.group-sessions[data-v-ec29996e]{height:auto;overflow:hidden;transition:height var(--duration-base) var(--ease-out)}.group-sessions.collapsed[data-v-ec29996e]{height:0}.gh[data-v-ec29996e]{display:flex;flex-direction:column;margin:0;padding:8px calc(var(--sb-pad-x) - var(--sb-inset));border-radius:var(--radius-sm);font-family:var(--font-ui);font-size:var(--text-xs);color:var(--color-text);user-select:none;position:relative;cursor:grab}.gh[data-v-ec29996e]:active{cursor:grabbing}.gh.renaming[data-v-ec29996e],.gh.renaming[data-v-ec29996e]:active{cursor:auto}.gh[data-v-ec29996e]:hover{background:var(--sb-hover, var(--color-surface-sunken))}.gh-top[data-v-ec29996e]{position:relative;display:flex;align-items:center;gap:var(--sb-gap)}.gh-folder[data-v-ec29996e]{flex:none;color:var(--color-text-muted)}.gh-name[data-v-ec29996e]{font-size:var(--ui-font-size-sm);line-height:var(--leading-tight);color:var(--color-text-muted);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.gh-actions[data-v-ec29996e]{position:absolute;right:0;top:50%;transform:translateY(-50%);display:flex;align-items:center;gap:var(--space-1);padding-left:var(--space-1);border-radius:var(--radius-sm);isolation:isolate;background:var(--color-sidebar-bg);opacity:0;pointer-events:none}.gh-actions[data-v-ec29996e]:after{content:"";position:absolute;inset:0;z-index:0;border-radius:var(--radius-sm);background:transparent}.gh:hover .gh-actions[data-v-ec29996e]:after{background:var(--sb-hover, var(--color-surface-sunken))}.gh-actions[data-v-ec29996e]>*{position:relative;z-index:1}.gh:hover .gh-actions[data-v-ec29996e],.gh:focus-within .gh-actions[data-v-ec29996e],.gh-actions.open[data-v-ec29996e]{opacity:1;pointer-events:auto}.gh-more.open[data-v-ec29996e]{color:var(--color-text);background:var(--color-line)}.group-empty[data-v-ec29996e]{padding:var(--space-1) var(--space-2) var(--space-1) calc(var(--sb-pad-x) - var(--sb-inset) + var(--sb-gutter) + var(--sb-gap));font-size:var(--text-xs);color:var(--color-text-faint);font-family:var(--font-ui)}.show-more[data-v-ec29996e]{display:flex;align-items:center;gap:var(--sb-gap);width:100%;margin:0;padding:8px calc(var(--sb-pad-x) - var(--sb-inset));border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-muted);font-family:var(--font-ui);font-size:var(--text-xs);line-height:var(--leading-tight);text-align:left;cursor:pointer}.show-more[data-v-ec29996e]:hover{background:var(--sb-hover, var(--color-surface-sunken))}.show-more[data-v-ec29996e]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.show-more-lead[data-v-ec29996e]{width:var(--sb-gutter);flex:none}.show-more-label[data-v-ec29996e]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gh-rename[data-v-ec29996e]{flex:1;min-width:0;font-family:var(--font-ui);font-size:var(--text-sm);font-weight:var(--weight-regular);color:var(--color-text);background:var(--color-bg);border:1px solid var(--color-accent);border-radius:var(--radius-xs);padding:2px 5px;outline:none}.gh-rename[data-v-ec29996e]{border-radius:var(--radius-sm);font-family:var(--sans)}.gh-add[data-v-ec29996e]{color:var(--faint)}.gh-add[data-v-ec29996e]:hover{color:var(--dim)}.ui-kbd[data-v-32292ed8]{display:inline-flex;align-items:center;gap:3px;flex:none}.ui-kbd__key[data-v-32292ed8]{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border:1px solid var(--color-line);border-bottom-width:2px;border-radius:var(--radius-xs);background:var(--color-surface-sunken);color:var(--color-text-muted);font-family:var(--font-ui);font-size:11px;line-height:1}.kimi-mascot[data-v-6634dad2]{display:inline-flex;align-items:center;justify-content:center;flex:none;width:24px;height:24px;border-radius:var(--radius-full);background:var(--color-accent-soft);color:var(--color-accent);user-select:none}.kimi-mascot--pulse[data-v-6634dad2]{animation:kimi-mascot-pulse-6634dad2 2.6s var(--ease-out) infinite}@keyframes kimi-mascot-pulse-6634dad2{0%,to{box-shadow:0 0 color-mix(in srgb,var(--color-accent) 0%,transparent)}50%{box-shadow:0 0 0 3px color-mix(in srgb,var(--color-accent) 25%,transparent)}}@media(prefers-reduced-motion:reduce){.kimi-mascot--pulse[data-v-6634dad2]{animation:none}}.ui-pill[data-v-317ace1a]{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px;border:1px solid transparent;border-radius:var(--radius-md);background:transparent;color:var(--color-text-muted);font-family:var(--font-ui);font-size:var(--text-sm);font-weight:var(--weight-medium);line-height:1;white-space:nowrap;cursor:default;transition:background var(--duration-base) var(--ease-out),color var(--duration-base) var(--ease-out)}button.ui-pill[data-v-317ace1a]{cursor:pointer}button.ui-pill[data-v-317ace1a]:hover:not(:disabled){background:var(--color-surface-sunken);color:var(--color-text)}button.ui-pill[data-v-317ace1a]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}button.ui-pill[data-v-317ace1a]:disabled{opacity:.5;cursor:not-allowed}.ui-pill.is-active[data-v-317ace1a]{background:var(--color-accent-soft);color:var(--color-accent)}.ui-pill[data-v-317ace1a] svg{width:var(--p-ic-sm);height:var(--p-ic-sm);flex:none;color:var(--color-text-faint)}.side[data-v-7e5a3931]{background:var(--color-sidebar-bg);display:flex;flex-direction:row;justify-content:flex-end;overflow:hidden;min-width:0;height:100%;transition:width .28s cubic-bezier(.4,0,.2,1),visibility .28s;--sb-inset: var(--space-3);--sb-pad-x: var(--space-5);--sb-gutter: 16px;--sb-gap: var(--space-2);--sb-hover: var(--color-hover)}.side.no-anim[data-v-7e5a3931]{transition:none}.side.collapsed[data-v-7e5a3931]{visibility:hidden}.col[data-v-7e5a3931]{flex:none;min-width:0;display:flex;flex-direction:column;min-height:0;width:100%;box-sizing:border-box;border-right:1px solid var(--line);container-type:inline-size;container-name:sidebar-col}.ch[data-v-7e5a3931]{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:var(--space-3);min-height:calc(26px + 2 * var(--space-3));width:100%;box-sizing:border-box}.side.macos-desktop .ch[data-v-7e5a3931]{padding-left:80px;-webkit-app-region:drag}.side.macos-desktop .ch-brand[data-v-7e5a3931]{display:none}.ch-logo[data-v-7e5a3931]{height:22px;width:32px;flex:none;display:block;cursor:pointer;user-select:none;touch-action:none;transition:transform .18s ease}.ch-logo[data-v-7e5a3931]:hover{transform:scale(1.08)}.ch-logo.is-dev[data-v-7e5a3931]{--logo: var(--color-logo-dev)}.ch-brand[data-v-7e5a3931]{display:flex;align-items:center;gap:8px;min-width:0;flex:1;user-select:none;touch-action:none}.ch-name[data-v-7e5a3931]{font-size:var(--ui-font-size);font-weight:500;line-height:22px;color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ch-backend[data-v-7e5a3931]{flex:none;min-width:0}.ch-backend-kind[data-v-7e5a3931]{font-family:var(--mono);font-weight:500;color:var(--color-text-muted)}.ch-backend-kind.is-v2[data-v-7e5a3931]{color:var(--color-accent)}.ch-backend-ep[data-v-7e5a3931]{font-family:var(--mono);color:var(--color-text-faint);overflow:hidden;text-overflow:ellipsis}@container sidebar-col (max-width: 320px){.ch-backend-ep[data-v-7e5a3931]{display:none}}@container sidebar-col (max-width: 250px){.ch-name[data-v-7e5a3931]{display:none}}.btn-wrap[data-v-7e5a3931]{display:flex;align-items:center;gap:8px;padding:0 var(--sb-inset)}.btn-new-chat[data-v-7e5a3931]{display:flex;align-items:center;gap:12px;flex:1;min-width:0;padding:8px calc(var(--sb-pad-x) - var(--sb-inset));border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-text);font-family:var(--font-ui);font-size:var(--ui-font-size-sm);line-height:var(--leading-tight);cursor:pointer;text-align:left}.btn-new-chat[data-v-7e5a3931]:hover{background:var(--sb-hover)}.btn-new-chat[data-v-7e5a3931]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.btn-new-chat svg[data-v-7e5a3931]{flex:none}.btn-new-chat span[data-v-7e5a3931]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.search-wrap[data-v-7e5a3931]{padding:0 var(--sb-inset);position:relative;z-index:1;background:var(--color-sidebar-bg);border-bottom:1px solid transparent;transition:border-color var(--duration-base) var(--ease-out),box-shadow var(--duration-base) var(--ease-out)}.search-wrap--scrolled[data-v-7e5a3931]{border-bottom-color:var(--line);box-shadow:var(--shadow-sm)}.search[data-v-7e5a3931]{display:flex;align-items:center;gap:12px;width:100%;margin:0;padding:8px calc(var(--sb-pad-x) - var(--sb-inset));border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-text);font:inherit;text-align:left;cursor:pointer}.search[data-v-7e5a3931]:hover{background:var(--sb-hover)}.search[data-v-7e5a3931]:focus-visible{background:var(--sb-hover);color:var(--color-text);outline:2px solid var(--color-accent-bd);outline-offset:-2px}.search-icon[data-v-7e5a3931]{flex:none}.search-input[data-v-7e5a3931]{flex:1;min-width:0;color:var(--color-text);font-family:var(--font-ui);font-size:var(--ui-font-size-sm);line-height:var(--leading-tight);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sessions[data-v-7e5a3931]{flex:1;overflow-y:auto;padding:var(--space-3) var(--sb-inset);min-height:0}.sessions[data-v-7e5a3931]::-webkit-scrollbar{width:4px}.sessions[data-v-7e5a3931]::-webkit-scrollbar-track{background:transparent}.sessions[data-v-7e5a3931]::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--color-text) 12%,transparent);border-radius:var(--radius-full)}.sessions[data-v-7e5a3931]::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--color-text) 25%,transparent)}.side-footer[data-v-7e5a3931]{display:flex;align-items:center;gap:8px;flex:none;padding:var(--space-2) var(--sb-inset);border-top:1px solid var(--line)}.btn-settings[data-v-7e5a3931]{display:flex;align-items:center;gap:12px;flex:1;min-width:0;padding:8px calc(var(--sb-pad-x) - var(--sb-inset));border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-text);font-family:var(--font-ui);font-size:var(--ui-font-size-sm);line-height:var(--leading-tight);cursor:pointer;text-align:left}.btn-settings[data-v-7e5a3931]:hover{background:var(--sb-hover)}.btn-settings[data-v-7e5a3931]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.btn-settings svg[data-v-7e5a3931]{flex:none}.btn-settings span[data-v-7e5a3931]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.side-mascot[data-v-7e5a3931]{flex:none}.side-section-label[data-v-7e5a3931]{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 var(--space-3) var(--space-1) var(--space-2);font-family:var(--font-ui);font-size:var(--text-xs);font-weight:var(--weight-regular);text-transform:uppercase;color:var(--faint);user-select:none}.side-section-title[data-v-7e5a3931]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.side-section-toggle[data-v-7e5a3931]{color:var(--faint);opacity:0;transition:opacity var(--duration-base) var(--ease-out)}.side-section-label:hover .side-section-toggle[data-v-7e5a3931],.side-section-label:focus-within .side-section-toggle[data-v-7e5a3931]{opacity:1}.side-section-toggle[data-v-7e5a3931]:hover{color:var(--dim)}.side-section-toggle svg[data-v-7e5a3931]{width:13px;height:13px}.side-section-actions[data-v-7e5a3931]{display:flex;align-items:center;gap:2px}.ws-drop-target.drop-before[data-v-7e5a3931]{box-shadow:inset 0 2px 0 var(--color-accent)}.ws-drop-target.drop-after[data-v-7e5a3931]{box-shadow:inset 0 -2px 0 var(--color-accent)}.empty[data-v-7e5a3931]{padding:var(--space-6) var(--space-3);text-align:center;color:var(--faint);font-size:calc(var(--ui-font-size) - 3px);line-height:1.6}.ws-menu[data-v-7e5a3931],.gh-menu[data-v-7e5a3931],.section-menu[data-v-7e5a3931],.backend-menu[data-v-7e5a3931]{position:fixed;top:0;left:0;z-index:var(--z-dropdown)}.section-menu-check[data-v-7e5a3931]{display:inline-flex;flex:none;width:14px}.backend-menu-name[data-v-7e5a3931]{font-family:var(--mono);font-weight:500}.backend-menu-url[data-v-7e5a3931]{margin-left:8px;font-family:var(--mono);color:var(--color-text-muted)}.rh[data-v-48fd0a6d]{width:4px;flex:none;cursor:col-resize;position:relative;align-self:stretch;background:transparent;touch-action:none;margin:0 -2px;z-index:var(--z-dropdown)}.rh-bar[data-v-48fd0a6d]{position:absolute;inset:0;background:transparent;transition:background .12s}.rh:hover .rh-bar[data-v-48fd0a6d],.rh.dragging .rh-bar[data-v-48fd0a6d]{background:var(--color-accent)}.kw-dot[data-v-e36198e5]{width:7px;height:7px;border-radius:var(--radius-full);background:var(--color-text-faint);flex:none}.kw-dot--ok[data-v-e36198e5]{background:var(--color-success)}.kw-dot--error[data-v-e36198e5]{background:var(--color-danger)}.kw-dot--suspended[data-v-e36198e5]{background:var(--color-warning)}.kw-dot--running[data-v-e36198e5]{background:var(--color-accent);animation:kw-dot-pulse-e36198e5 1.4s var(--ease-out) infinite}@keyframes kw-dot-pulse-e36198e5{0%{box-shadow:0 0 color-mix(in srgb,var(--color-accent) 40%,transparent)}to{box-shadow:0 0 0 6px transparent}}.box[data-v-fef8aad2]{margin:0;background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-md);overflow:hidden;transition:border-color var(--duration-base) var(--ease-out)}.box.err[data-v-fef8aad2]{border-color:color-mix(in srgb,var(--color-danger) 25%,var(--bg))}.box.stacked[data-v-fef8aad2]{border:none;border-radius:0}.box.stacked .bh[data-v-fef8aad2]{border-radius:0}.box.stack-middle[data-v-fef8aad2],.box.stack-last[data-v-fef8aad2]{border-top:1px solid var(--color-line)}.bh[data-v-fef8aad2]{display:flex;align-items:center;gap:8px;min-height:30px;padding:0 11px;cursor:pointer;font:var(--text-sm) var(--font-mono);color:var(--color-text)}.box.open .bh[data-v-fef8aad2],.bh[data-v-fef8aad2]:hover{background:var(--color-surface-sunken)}.box.err .bh[data-v-fef8aad2]{background:color-mix(in srgb,var(--color-danger) 4%,var(--bg))}.box.err .bh[data-v-fef8aad2]:hover{background:color-mix(in srgb,var(--color-danger) 7%,var(--bg))}.gl[data-v-fef8aad2]{display:inline-flex;align-items:center;color:var(--color-text-faint);flex:none}.bh-text[data-v-fef8aad2]{display:flex;align-items:baseline;gap:inherit;flex:1;min-width:0}.a[data-v-fef8aad2]{color:var(--color-text);font-weight:var(--weight-medium);flex:none}.p[data-v-fef8aad2]{color:var(--color-text-muted);font-size:var(--text-xs);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.rt[data-v-fef8aad2]{margin-left:auto;color:var(--color-text-muted);font-size:var(--text-xs);display:flex;align-items:center;gap:6px;flex:none}.tm[data-v-fef8aad2]{color:var(--color-text-faint)}.chip[data-v-fef8aad2-s]{color:var(--color-text-muted);font-family:var(--font-ui);font-size:var(--text-xs);flex:none}.status[data-v-fef8aad2]{display:inline-flex;align-items:center;flex:none}.status.ok[data-v-fef8aad2]{color:var(--color-success)}.status.error[data-v-fef8aad2]{color:var(--color-danger)}.bb[data-v-fef8aad2]{display:grid;grid-template-rows:minmax(0,0fr);overflow:hidden;transition:grid-template-rows var(--duration-base) var(--ease-out)}.bb.open[data-v-fef8aad2]{grid-template-rows:minmax(0,1fr)}.bb-pad[data-v-fef8aad2]{min-height:0;overflow:hidden;padding:var(--space-2) var(--space-3) var(--space-3);background:var(--color-surface-sunken);border-top:1px solid var(--color-line);color:var(--color-text);font:var(--text-sm)/1.65 var(--font-mono);white-space:pre-wrap;word-break:break-word}.box.mob[data-v-fef8aad2]{margin:0}.at-open[data-v-72115ae1]{flex:none;background:none;border:1px solid var(--color-line);border-radius:var(--radius-xs);color:var(--color-text-muted);font:var(--text-xs) var(--font-ui);padding:1px 7px;cursor:pointer}.at-open[data-v-72115ae1]:hover{color:var(--color-text);background:var(--color-surface-sunken)}.at-type[data-v-72115ae1]{font:var(--text-xs) var(--font-mono);color:var(--color-text-muted);margin-bottom:6px}.at-type-sep[data-v-72115ae1]{margin:0 6px;color:var(--color-text-faint)}.at-task[data-v-72115ae1]{color:var(--color-text);white-space:pre-wrap;word-break:break-word}.at-task+.bb-code[data-v-72115ae1]{margin-top:10px}.bb-code[data-v-72115ae1]{padding:11px 13px;border:1px solid var(--color-line);border-radius:var(--radius-md)}.chip[data-v-a9a0f259]{color:var(--color-text-muted);font-size:var(--text-xs);flex:none}.au-dismissed[data-v-a9a0f259]{color:var(--color-text-muted);font:italic var(--text-sm)/var(--leading-normal) var(--font-ui)}.au-list[data-v-a9a0f259]{display:flex;flex-direction:column;font:var(--text-sm)/var(--leading-normal) var(--font-ui)}.au-block[data-v-a9a0f259]{padding:4px 0}.au-block+.au-block[data-v-a9a0f259]{margin-top:4px;padding-top:10px;border-top:1px dashed var(--color-line)}.au-q[data-v-a9a0f259]{display:flex;align-items:baseline;gap:8px;margin-bottom:6px}.au-hdr[data-v-a9a0f259]{font:var(--text-xs) var(--font-mono);color:var(--color-text-muted);background:var(--color-surface-raised);border:1px solid var(--color-line);border-radius:var(--radius-sm);padding:0 6px;flex:none}.au-qtext[data-v-a9a0f259]{color:var(--color-text);font-weight:var(--weight-medium)}.au-opts[data-v-a9a0f259]{display:flex;flex-direction:column;gap:4px}.au-opt[data-v-a9a0f259]{display:flex;align-items:center;gap:8px;padding:5px 10px;border:1px solid var(--color-line);border-radius:var(--radius-md);color:var(--color-text-faint)}.au-opt.sel[data-v-a9a0f259]{border-color:var(--color-accent-bd);background:var(--color-accent-soft);color:var(--color-text)}.au-glyph[data-v-a9a0f259]{font:var(--text-base) var(--font-mono);color:var(--color-text-faint);width:14px;text-align:center;flex:none}.au-opt.sel .au-glyph[data-v-a9a0f259]{color:var(--color-accent-hover)}.au-label[data-v-a9a0f259]{color:inherit}.au-desc[data-v-a9a0f259]{color:var(--color-text-faint);font-size:var(--text-xs);margin-left:2px}.au-opt.sel .au-desc[data-v-a9a0f259]{color:var(--color-text-muted)}.au-raw[data-v-a9a0f259]{padding:11px 13px;border:1px solid var(--color-line);border-radius:var(--radius-md);background:var(--color-surface-raised);font:var(--text-sm)/1.65 var(--font-mono);white-space:pre-wrap;word-break:break-word}.tool-output-block[data-v-262bbea0]{margin-top:var(--space-2);padding:var(--space-3);border:1px solid var(--color-line);border-radius:var(--radius-md);background:var(--color-surface-raised)}.tool-output-block.scroll[data-v-262bbea0]{max-height:calc(var(--tool-output-visible-lines) * 1lh);overflow-y:auto;scrollbar-gutter:stable}.bb-empty[data-v-262bbea0]{color:var(--color-text-muted);font-style:italic}.chip[data-v-74e1da99]{color:var(--color-text-muted);font-size:var(--text-xs);flex:none}.bb-summary[data-v-74e1da99],.bb-summary[data-v-aa4edcb0]{color:var(--color-text);border-bottom:1px dashed var(--color-line);padding-bottom:6px;margin-bottom:6px;word-break:break-all}.chip[data-v-aa4edcb0]{color:var(--color-text-muted);font-size:var(--text-xs);flex:none}.media-tool[data-v-04192531]{display:inline-flex;flex-direction:column;gap:6px;max-width:320px}.media-title[data-v-04192531]{font-size:var(--text-xs);color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.media-image-button[data-v-04192531]{padding:0;border:none;background:transparent;cursor:pointer;border-radius:var(--radius-md);overflow:hidden}.media-image[data-v-04192531]{display:block;max-width:100%;border-radius:var(--radius-md);background:var(--media-alpha-canvas)}.media-video[data-v-04192531],.media-audio[data-v-04192531]{max-width:100%;border-radius:var(--radius-md)}.media-video-button[data-v-04192531]{position:relative;display:inline-flex;padding:0;border:none;background:transparent;cursor:pointer;border-radius:var(--radius-md);overflow:hidden}.media-video-button .media-video[data-v-04192531]{display:block;max-width:320px}.media-play-badge[data-v-04192531]{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--color-surface-raised);background:#0d111773;opacity:.9;transition:opacity .12s ease;pointer-events:none}.media-video-button:hover .media-play-badge[data-v-04192531]{opacity:.7}.chip[data-v-c851b016]{color:var(--color-text-muted);font-size:var(--text-xs);flex:none}.bb-summary[data-v-c851b016]{color:var(--color-text);border-bottom:1px dashed var(--color-line);padding-bottom:6px;margin-bottom:6px;word-break:break-all}.plan-path[data-v-c851b016]{display:block;width:100%;margin-bottom:var(--space-2);padding:0;border:none;background:none;color:var(--color-accent);font:var(--text-xs) var(--font-mono);text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.plan-path[data-v-c851b016]:hover{color:var(--color-accent-hover);text-decoration:underline}.plan-body[data-v-c851b016]{font:var(--text-base)/var(--leading-normal) var(--font-ui);white-space:normal;max-height:50vh;overflow-y:auto}.plan-review[data-v-c851b016]{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;margin-top:var(--space-2);font:var(--text-xs) var(--font-ui)}.plan-state[data-v-c851b016]{color:var(--color-text-muted);font-weight:var(--weight-medium)}.plan-option[data-v-c851b016]{color:var(--color-accent)}.plan-feedback[data-v-c851b016]{color:var(--color-text-muted)}.plan-loading[data-v-c851b016],.plan-empty[data-v-c851b016]{margin-top:var(--space-2);color:var(--color-text-muted);font:var(--text-xs) var(--font-ui);font-style:italic}.swarm-card[data-v-4b58e128]{margin:0;background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-md);overflow:hidden;transition:border-color var(--duration-base) var(--ease-out)}.swarm-card.err[data-v-4b58e128]{border-color:color-mix(in srgb,var(--color-danger) 25%,var(--bg))}.head[data-v-4b58e128]{display:flex;align-items:center;gap:8px;width:100%;min-height:32px;padding:0 11px;border:none;background:transparent;color:var(--color-text-muted);font-family:var(--font-ui);font-size:var(--text-sm);text-align:left;cursor:pointer;user-select:none}.head[data-v-4b58e128]:hover,.swarm-card.open>.head[data-v-4b58e128]{background:var(--color-surface-sunken);color:var(--color-text)}.swarm-card.err>.head[data-v-4b58e128]{background:color-mix(in srgb,var(--color-danger) 4%,var(--bg))}.swarm-card.err>.head[data-v-4b58e128]:hover{background:color-mix(in srgb,var(--color-danger) 7%,var(--bg))}.head[data-v-4b58e128]:focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--color-accent-soft)}.ic[data-v-4b58e128]{color:var(--color-text-faint);flex:none}.title[data-v-4b58e128]{font-weight:var(--weight-medium);color:var(--color-text);flex:none}.meta[data-v-4b58e128]{color:var(--color-text-faint);flex:none}.sum-txt[data-v-4b58e128]{color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.rt[data-v-4b58e128]{margin-left:auto;display:flex;align-items:center;gap:8px;flex:none;color:var(--color-text-muted);font-size:var(--text-xs)}.status[data-v-4b58e128]{display:inline-flex;align-items:center;flex:none}.status[data-v-4b58e128]:has(>svg){color:var(--color-success)}.err .status[data-v-4b58e128]:has(>svg){color:var(--color-danger)}.chip[data-v-4b58e128]{color:var(--color-text-muted);font-family:var(--font-mono)}.tm[data-v-4b58e128]{color:var(--color-text-faint);font-family:var(--font-mono)}.car[data-v-4b58e128]{margin-left:2px;color:var(--color-text-faint);flex:none}.body[data-v-4b58e128]{border-top:1px solid var(--color-line);background:var(--color-surface-sunken)}.overview[data-v-4b58e128]{padding:9px 11px 8px;border-bottom:1px solid color-mix(in srgb,var(--color-line) 70%,transparent)}.overview-line[data-v-4b58e128]{display:flex;align-items:baseline;gap:8px}.big[data-v-4b58e128]{font-family:var(--font-mono);font-weight:var(--weight-medium);color:var(--color-text);font-size:15px}.lbl[data-v-4b58e128]{color:var(--color-text-muted);font-size:var(--text-xs)}.seg[data-v-4b58e128]{display:flex;height:5px;border-radius:var(--radius-full);overflow:hidden;margin:8px 0 4px;gap:2px}.seg>span[data-v-4b58e128]{height:100%;border-radius:var(--radius-full);min-width:3px}.s-ok[data-v-4b58e128]{background:var(--color-success)}.s-run[data-v-4b58e128]{background:var(--color-accent)}.s-warn[data-v-4b58e128]{background:var(--color-warning)}.s-fail[data-v-4b58e128]{background:var(--color-danger)}.s-queue[data-v-4b58e128]{background:var(--color-line)}.legend[data-v-4b58e128]{display:flex;flex-wrap:wrap;gap:10px}.legend span[data-v-4b58e128]{display:inline-flex;align-items:center;gap:5px;font:var(--text-xs) var(--font-mono);color:var(--color-text-muted)}.lg-dot[data-v-4b58e128]{width:6px;height:6px;border-radius:var(--radius-full)}.member[data-v-4b58e128]{border-bottom:1px solid color-mix(in srgb,var(--color-line) 70%,transparent)}.member[data-v-4b58e128]:last-child{border-bottom:none}.member-head[data-v-4b58e128]{display:flex;align-items:center;gap:8px;width:100%;min-height:32px;padding:0 11px;border:none;background:transparent;color:var(--color-text);font-family:var(--font-ui);font-size:var(--text-sm);text-align:left;cursor:pointer;user-select:none}.member-head[data-v-4b58e128]:hover,.member.open .member-head[data-v-4b58e128]{background:color-mix(in srgb,var(--color-surface) 55%,var(--bg))}.member-head[data-v-4b58e128]:focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--color-accent-soft)}.row-dot[data-v-4b58e128]{flex:none}.mname[data-v-4b58e128]{flex:none;min-width:0;max-width:46%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:var(--weight-medium);color:var(--color-text)}.mact[data-v-4b58e128]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--color-text-muted);font-size:var(--text-xs)}.mphase[data-v-4b58e128]{flex:none;margin-left:auto;font:var(--text-xs) var(--font-mono);color:var(--color-text-faint)}.phase-completed .mphase[data-v-4b58e128]{color:var(--color-success)}.phase-failed .mphase[data-v-4b58e128]{color:var(--color-danger)}.phase-working .mphase[data-v-4b58e128]{color:var(--color-accent)}.phase-suspended .mphase[data-v-4b58e128]{color:var(--color-warning)}.mcar[data-v-4b58e128]{margin-left:4px;color:var(--color-text-faint);flex:none}.member-body[data-v-4b58e128]{padding:4px 11px 10px 31px;color:var(--color-text-muted);font-size:var(--text-xs);line-height:1.65;white-space:pre-wrap;word-break:break-word}.waiting[data-v-4b58e128]{padding:6px 11px 10px;color:var(--color-text-muted);font-size:var(--text-xs)}.fallback-output[data-v-4b58e128]{padding:9px 11px 10px;color:var(--color-text);font:var(--text-xs)/1.6 var(--font-mono);white-space:pre-wrap;word-break:break-word}.tool-group[data-v-37eb334f]{display:flex;flex-direction:column;background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-md);overflow:hidden}.tool-group-head[data-v-37eb334f]{display:flex;align-items:center;gap:8px;width:100%;height:32px;padding:0 11px;border:none;background:transparent;color:var(--color-text-muted);font-family:var(--font-ui);font-size:var(--text-sm);text-align:left;cursor:pointer;user-select:none}.tool-group-head[data-v-37eb334f]:hover{background:var(--color-surface-sunken);color:var(--color-text)}.tool-group-head[data-v-37eb334f]:focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--color-accent-soft)}.tg-ic[data-v-37eb334f]{color:var(--color-text-faint);flex:none}.tg-title[data-v-37eb334f]{font-weight:var(--weight-medium);color:var(--color-text)}.tg-meta[data-v-37eb334f]{color:var(--color-text-faint)}.tg-car[data-v-37eb334f]{margin-left:auto;color:var(--color-text-faint);flex:none;transition:transform var(--duration-base) var(--ease-out)}.tool-group.open .tg-car[data-v-37eb334f]{transform:rotate(90deg)}.tool-group-body[data-v-37eb334f]{display:grid;grid-template-rows:minmax(0,0fr);overflow:hidden;transition:grid-template-rows var(--duration-base) var(--ease-out)}.tool-group-body.open[data-v-37eb334f]{grid-template-rows:minmax(0,1fr)}.tool-group-body-inner[data-v-37eb334f]{min-height:0;overflow:hidden;display:flex;flex-direction:column}.md[data-v-9ccdd7fa]{font:400 15px/1.6 var(--font-ui);color:var(--color-text);word-break:break-word}.md[data-v-9ccdd7fa] .markdown-renderer{font:400 15px/1.6 var(--font-ui);color:var(--color-text)}.md[data-v-9ccdd7fa] .markstream-vue,.md[data-v-9ccdd7fa] .markdown-renderer{--code-bg: var(--color-surface-sunken);--code-fg: var(--color-text);--code-border: var(--color-line);--code-header-bg: var(--color-surface);--code-action-fg: var(--color-text-muted);--code-action-hover-fg: var(--color-accent);--markstream-code-fallback-bg: var(--color-surface-sunken);--markstream-code-fallback-fg: var(--color-text);--markstream-code-border-color: var(--color-line);--inline-code-bg: var(--color-surface-sunken);--inline-code-fg: var(--color-fg);--inline-code-border: transparent}.md[data-v-9ccdd7fa] .md-file-link{appearance:none;display:inline;border:0;padding:0;background:transparent;color:var(--color-accent-hover);font:inherit;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px;cursor:pointer}.md[data-v-9ccdd7fa] .md-file-link:hover{color:var(--color-accent)}.md[data-v-9ccdd7fa] .markdown-renderer p,.md[data-v-9ccdd7fa] .markdown-renderer li,.md[data-v-9ccdd7fa] .markdown-renderer blockquote,.md[data-v-9ccdd7fa] .markdown-renderer td,.md[data-v-9ccdd7fa] .markdown-renderer th{font-size:var(--content-font-size)}.md[data-v-9ccdd7fa] .markdown-renderer img{background:var(--media-alpha-canvas)}.md[data-v-9ccdd7fa] strong{color:color-mix(in srgb,var(--color-text) 86%,var(--color-text-muted));font-weight:var(--weight-semibold)}.md[data-v-9ccdd7fa] h1,.md[data-v-9ccdd7fa] h2,.md[data-v-9ccdd7fa] h3,.md[data-v-9ccdd7fa] h4{color:var(--color-text);font-optical-sizing:auto;font-weight:var(--weight-semibold);margin:.85em 0 .35em;line-height:var(--leading-tight)}.md[data-v-9ccdd7fa] h1{font-size:max(var(--text-xl),calc(var(--content-font-size) + 3px));border-bottom:1px solid var(--color-line);padding-bottom:4px}.md[data-v-9ccdd7fa] h2{font-size:max(var(--text-lg),calc(var(--content-font-size) + 2px))}.md[data-v-9ccdd7fa] h3{font-size:max(var(--text-lg),calc(var(--content-font-size) + 1px))}.md[data-v-9ccdd7fa] h4{font-size:max(var(--text-base),calc(var(--content-font-size) + 1px));color:var(--color-text-muted)}.md[data-v-9ccdd7fa] p{margin:.8rem 0}.md[data-v-9ccdd7fa] .node-slot+.node-slot{margin-top:.8rem}.md[data-v-9ccdd7fa] ul,.md[data-v-9ccdd7fa] ol{padding-left:1.4em;margin:.6em 0}.md[data-v-9ccdd7fa] li{margin:.3em 0}.md[data-v-9ccdd7fa] :not(pre)>code,.md[data-v-9ccdd7fa] .inline-code{font:.9em var(--font-mono);background:var(--color-surface-sunken);color:var(--color-fg);padding:0 4px;border-radius:var(--radius-sm)}.md[data-v-9ccdd7fa] strong code,.md[data-v-9ccdd7fa] strong .inline-code,.md[data-v-9ccdd7fa] b code,.md[data-v-9ccdd7fa] b .inline-code{font-weight:var(--weight-semibold)}.md[data-v-9ccdd7fa] .code-block-container{margin:.6em 0;border:1px solid var(--color-line);border-radius:var(--radius-md);background:var(--color-surface-sunken);box-shadow:var(--shadow-xs);overflow:hidden;--vscode-editor-font-size: var(--text-sm);--vscode-editor-line-height: calc(var(--text-sm) * 1.65)}.md[data-v-9ccdd7fa] .code-block-header{background:var(--color-surface);border-bottom:1px solid var(--color-line);padding:4px 12px;color:var(--color-text-muted);font:var(--text-xs) var(--font-mono)}.md[data-v-9ccdd7fa] .code-block-header *{color:var(--color-text-muted);font:var(--text-xs) var(--font-mono)}.md[data-v-9ccdd7fa] .code-block-header .code-header-main{font-family:var(--font-ui)}.md[data-v-9ccdd7fa] .code-block-header .code-action-btn{color:var(--color-text-muted);background:transparent;border:none;border-radius:var(--radius-sm);cursor:pointer;transition:background var(--duration-base) var(--ease-out),color var(--duration-base) var(--ease-out)}.md[data-v-9ccdd7fa] .code-block-header .code-action-btn:hover{background:var(--color-surface-sunken);color:var(--color-text)}.md[data-v-9ccdd7fa] .code-block-header .code-action-btn:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.md[data-v-9ccdd7fa] .code-block-header .code-action-btn *{pointer-events:none}.md[data-v-9ccdd7fa] .code-block-shell-content,.md[data-v-9ccdd7fa] .markstream-pre{background:var(--color-surface-sunken)}.md[data-v-9ccdd7fa] .code-editor-container{line-height:1.65;--diffs-gap-block: var(--space-3)}.md[data-v-9ccdd7fa] .code-editor-container diffs-container{--diffs-line-height: 1.65em}.md[data-v-9ccdd7fa] .code-pre-fallback>.markstream-pre__line-numbers{display:none}.md[data-v-9ccdd7fa] .code-block-container .code-pre-fallback{padding-left:1ch;line-height:1.65!important}.md[data-v-9ccdd7fa] .code-block-container pre:not(.code-pre-fallback):not(.markstream-pre--line-numbers),.md[data-v-9ccdd7fa] .markstream-pre:not(.code-pre-fallback):not(.markstream-pre--line-numbers){margin:0;padding:12px 14px;overflow-x:auto;font:var(--text-sm)/1.65 var(--font-mono)}.md[data-v-9ccdd7fa] .code-block-container pre code{font:inherit;color:var(--color-text);background:none;border:none;padding:0;border-radius:0}.md[data-v-9ccdd7fa] .markstream-pre,.md[data-v-9ccdd7fa] .code-pre-fallback,.md[data-v-9ccdd7fa] .code-block-shell-content pre:not(.shiki),.md[data-v-9ccdd7fa] .code-block-shell-content pre:not(.shiki) code{color:var(--color-text)}.md[data-v-9ccdd7fa] a{color:var(--color-accent);text-decoration:none}.md[data-v-9ccdd7fa] a:hover{text-decoration:underline}.md[data-v-9ccdd7fa] .katex-display{overflow-x:auto;overflow-y:hidden;padding:2px 0 6px;margin:.6em 0}.md[data-v-9ccdd7fa] blockquote{margin:.5em 0;padding:4px 12px;border-left:3px solid var(--color-line);color:var(--color-text-muted)}.md[data-v-9ccdd7fa] hr{border:none;border-top:1px solid var(--color-line);margin:.8em 0}.md[data-v-9ccdd7fa] table:not(.table-node){border-collapse:collapse;font-size:var(--text-lg);margin:.5em 0}.md[data-v-9ccdd7fa] table:not(.table-node) th,.md[data-v-9ccdd7fa] table:not(.table-node) td{border:1px solid var(--color-line);padding:4px 10px;text-align:left}.md[data-v-9ccdd7fa] table:not(.table-node) th{background:var(--color-surface);color:var(--color-text);font-weight:var(--weight-medium)}.md[data-v-9ccdd7fa] .table-node-wrapper{width:100%;max-width:100%!important;min-width:0;overflow-x:auto!important}.md[data-v-9ccdd7fa] .table-node{--table-border: var(--color-line);--table-header-bg: var(--color-surface);font-size:var(--text-lg);margin:.5em 0;width:max-content!important;min-width:100%;max-width:none!important;table-layout:auto!important}.md[data-v-9ccdd7fa] .table-node th,.md[data-v-9ccdd7fa] .table-node td{text-align:left;vertical-align:top;max-width:var(--p-table-cell-max)}.md[data-v-9ccdd7fa] .table-node .text-node{display:inline-block;max-width:var(--p-table-cell-max);vertical-align:top}.md[data-v-9ccdd7fa] .table-node tbody tr:hover{background-color:transparent!important}.diff-wrap[data-v-9ccdd7fa]{margin:.6em 0;border:1px solid var(--color-line);border-radius:var(--radius-md);background:var(--color-surface-sunken);box-shadow:var(--shadow-xs);overflow:hidden}.diff-bar[data-v-9ccdd7fa]{display:flex;align-items:center;gap:6px;padding:4px 12px;background:var(--color-surface);border-bottom:1px solid var(--color-line);color:var(--color-text-muted);font:var(--text-xs) var(--font-mono)}.diff-lang[data-v-9ccdd7fa]{margin-right:auto}.diff-copy[data-v-9ccdd7fa]{display:inline-flex;align-items:center;justify-content:center;color:var(--color-text-muted);background:transparent;border:none;border-radius:var(--radius-sm);cursor:pointer;padding:2px 6px;transition:background var(--duration-base) var(--ease-out),color var(--duration-base) var(--ease-out)}.diff-copy[data-v-9ccdd7fa]:hover{background:var(--color-surface-sunken);color:var(--color-text)}.diff-copy[data-v-9ccdd7fa]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.diff-pre[data-v-9ccdd7fa]{margin:0;padding:12px 0;overflow-x:auto;background:var(--color-surface-sunken)}.diff-pre code[data-v-9ccdd7fa]{display:block;width:max-content;min-width:100%;font:var(--text-sm)/1.65 var(--font-mono);color:var(--color-text)}.diff-line[data-v-9ccdd7fa]{display:block;width:100%;padding:0 14px}.diff-sign[data-v-9ccdd7fa]{display:inline-block;width:14px;text-align:center;color:var(--color-text-muted);user-select:none}.diff-text[data-v-9ccdd7fa]{color:var(--color-text)}.diff-add[data-v-9ccdd7fa]{background:var(--color-success-soft);box-shadow:inset 2px 0 color-mix(in srgb,var(--color-success) 55%,transparent)}.diff-add .diff-sign[data-v-9ccdd7fa]{color:var(--color-success)}.diff-del[data-v-9ccdd7fa]{background:var(--color-danger-soft);box-shadow:inset 2px 0 color-mix(in srgb,var(--color-danger) 55%,transparent)}.diff-del .diff-sign[data-v-9ccdd7fa]{color:var(--color-danger)}.diff-hunk[data-v-9ccdd7fa]{background:var(--color-surface)}.diff-hunk .diff-text[data-v-9ccdd7fa]{color:var(--color-text-muted)}.md[data-v-9ccdd7fa],.md .markdown-renderer[data-v-9ccdd7fa]{font-family:var(--sans)}.md .code-block-container[data-v-9ccdd7fa],.md .diff-wrap[data-v-9ccdd7fa]{border-radius:var(--radius-md)}.md :not(pre)>code[data-v-9ccdd7fa],.md .inline-code[data-v-9ccdd7fa]{border-radius:var(--radius-sm)}.think[data-v-0b3b873f]{margin:0}.tc-wrap[data-v-0b3b873f]{display:grid;grid-template-rows:1fr 0fr;transition:grid-template-rows var(--duration-slow) var(--ease-out);cursor:pointer}.tc-wrap.is-collapsed[data-v-0b3b873f]{grid-template-rows:0fr 1fr}.tc-anim[data-v-0b3b873f],.prev-anim[data-v-0b3b873f]{overflow:hidden;min-height:0}.tc-wrap.is-collapsed:hover .prev[data-v-0b3b873f]{color:var(--color-text)}.tc-wrap:not(.is-collapsed):hover .tc[data-v-0b3b873f]{color:var(--color-text-muted)}.prev[data-v-0b3b873f]{color:var(--color-text-faint);font:var(--text-base)/var(--leading-relaxed) var(--font-ui);font-weight:var(--weight-regular);white-space:pre-wrap;word-break:break-word;display:block}.tc[data-v-0b3b873f]{font:var(--text-base)/var(--leading-relaxed) var(--font-ui);font-weight:var(--weight-regular);color:var(--color-text-muted);white-space:pre-wrap;word-break:break-word;margin:0;max-height:calc(var(--leading-relaxed) * 1em * 5);overflow-y:auto}.mob[data-v-0b3b873f]{margin:0}.mob .tc[data-v-0b3b873f]{color:var(--color-text-faint);line-height:var(--leading-normal);max-height:calc(var(--leading-normal) * 1em * 5)}.mob .prev[data-v-0b3b873f]{color:var(--color-text-faint);line-height:var(--leading-normal)}.activity-notice[data-v-0d497074]{display:inline-flex;align-items:center;gap:9px;align-self:flex-start;margin:0;font:var(--text-sm)/var(--leading-normal) var(--font-ui);color:var(--color-text-muted)}.msg-time[data-v-9672fbd5]{display:inline-flex;align-items:center;min-height:22px;box-sizing:border-box;padding:2px 5px;background:none;border:none;border-radius:var(--radius-sm);color:var(--muted);font:inherit;font-size:var(--text-base);line-height:1;cursor:pointer;opacity:.7;transition:opacity .12s,color .12s,background-color .12s;white-space:nowrap}.msg-time[data-v-9672fbd5]:hover{opacity:1;color:var(--color-accent);background:var(--hover)}.cn[data-v-a62a6587]{margin:0;align-self:flex-end;max-width:78%;display:flex;flex-direction:column;align-items:flex-end}.cn-bubble[data-v-a62a6587]{box-sizing:border-box;max-width:100%;padding:8px 14px;background:var(--color-accent-soft);border:1px solid var(--color-accent-bd);border-radius:var(--radius-xl) var(--radius-xl) var(--radius-sm) var(--radius-xl);box-shadow:var(--shadow-xs);color:var(--color-text);font-size:var(--content-font-size);line-height:var(--leading-normal);white-space:pre-wrap;overflow-wrap:anywhere}.cn-title[data-v-a62a6587]{font-weight:var(--weight-medium)}.cn-meta[data-v-a62a6587]{display:flex;align-items:center;gap:6px;margin-top:4px;padding:0 4px;color:var(--color-text-faint);font-size:var(--text-base);line-height:var(--leading-normal)}.cn-meta-ico[data-v-a62a6587]{flex:none;color:var(--color-text-faint)}.cn-meta-item[data-v-a62a6587]{white-space:nowrap}.cn-status[data-v-a62a6587]{display:inline-flex;align-items:center}.cn-status.ok[data-v-a62a6587]{color:var(--color-success)}.cn-status.error[data-v-a62a6587]{color:var(--color-danger)}.att-chip[data-v-12ec975b]{display:inline-flex;align-items:center;gap:6px;max-width:220px;padding:4px 9px 4px 5px;background:var(--color-bg);border:1px solid var(--color-line);border-radius:999px;font-size:var(--ui-font-size-sm);transition:border-color var(--duration-fast) ease}.att-chip[data-v-12ec975b]:hover{border-color:var(--color-line-strong)}.att-activate[data-v-12ec975b]{display:inline-flex;align-items:center;gap:6px;min-width:0;padding:0;border:none;background:transparent;color:inherit;font:inherit;cursor:pointer}.att-activate[data-v-12ec975b]:focus-visible{outline:none;box-shadow:var(--p-focus-ring);border-radius:999px}.att-tile[data-v-12ec975b]{width:20px;height:20px;border-radius:50%;flex:none;display:flex;align-items:center;justify-content:center;overflow:hidden;color:var(--color-text-muted);background:var(--color-surface-sunken)}.att-tile[data-v-12ec975b] .att-thumb{width:100%;height:100%;object-fit:cover;display:block}.att-name[data-v-12ec975b]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--color-text);font-weight:var(--weight-medium)}.att-chip.is-error[data-v-12ec975b]{border-color:var(--color-danger-bd)}.att-chip.is-error .att-err[data-v-12ec975b]{flex:none;display:flex;align-items:center;color:var(--color-danger)}.att-rm[data-v-12ec975b]{flex:none;display:flex;align-items:center;justify-content:center;width:18px;height:18px;padding:0;border:none;border-radius:50%;background:transparent;color:var(--color-text-faint);cursor:pointer}.att-rm[data-v-12ec975b]:hover{background:var(--color-hover);color:var(--color-text)}.att-rm[data-v-12ec975b]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.ui-moon[data-v-a6b7ec07]{display:inline-block;position:relative;line-height:1;user-select:none;flex:none}.ui-moon--sm[data-v-a6b7ec07]{width:14px;height:14px;font-size:14px}.ui-moon--md[data-v-a6b7ec07]{width:18px;height:18px;font-size:18px}.ui-moon--lg[data-v-a6b7ec07]{width:24px;height:24px;font-size:24px}.ui-moon__frame[data-v-a6b7ec07]{position:absolute;inset:0;display:block;text-align:center;opacity:0;animation-name:ui-moon-frame-a6b7ec07;animation-duration:.96s;animation-timing-function:steps(1,end);animation-iteration-count:infinite;animation-delay:var(--moon-frame-delay)}.ui-moon--fast .ui-moon__frame[data-v-a6b7ec07]{animation-duration:.48s;animation-delay:var(--moon-frame-fast-delay)}@keyframes ui-moon-frame-a6b7ec07{0%,12.49%{opacity:1}12.5%,to{opacity:0}}@media(prefers-reduced-motion:reduce){.ui-moon__frame[data-v-a6b7ec07]{animation:none;opacity:0}.ui-moon__frame[data-v-a6b7ec07]:nth-child(4){opacity:1}}.ui-banner[data-v-b0afda1c]{display:flex;align-items:center;gap:10px;padding:10px 14px;border:1px solid var(--color-line);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text-muted);font-family:var(--font-ui);font-size:var(--text-sm);line-height:var(--leading-normal)}.ui-banner__icon[data-v-b0afda1c]{display:inline-flex;flex:none}.ui-banner__icon svg[data-v-b0afda1c]{width:18px;height:18px}.ui-banner--info[data-v-b0afda1c]{background:var(--color-accent-soft);border-color:var(--color-accent-bd)}.ui-banner--warning[data-v-b0afda1c]{background:var(--color-warning-soft);border-color:var(--color-warning-bd)}.ui-banner--danger[data-v-b0afda1c]{background:var(--color-danger-soft);border-color:var(--color-danger-bd)}.ui-banner--info .ui-banner__icon[data-v-b0afda1c]{color:var(--color-accent)}.ui-banner--warning .ui-banner__icon[data-v-b0afda1c]{color:var(--color-warning)}.ui-banner--danger .ui-banner__icon[data-v-b0afda1c]{color:var(--color-danger)}.ui-button[data-v-556ea0b6]{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);border:1px solid transparent;border-radius:var(--radius-md);font-family:var(--font-ui);font-weight:var(--weight-medium);line-height:1;cursor:pointer;white-space:nowrap;transition:background var(--duration-base) var(--ease-out),border-color var(--duration-base) var(--ease-out),color var(--duration-base) var(--ease-out),box-shadow var(--duration-base) var(--ease-out),transform var(--duration-fast) var(--ease-out)}.ui-button[data-v-556ea0b6]:focus-visible{outline:none;box-shadow:var(--p-focus-ring-strong)}.ui-button[data-v-556ea0b6]:not(:disabled):active{transform:scale(.98)}.ui-button[data-v-556ea0b6]:disabled{opacity:.5;cursor:not-allowed;box-shadow:none;transform:none}.ui-button--sm[data-v-556ea0b6]{height:30px;padding:0 var(--space-3);font-size:var(--text-sm);border-radius:var(--radius-sm)}.ui-button--md[data-v-556ea0b6]{height:36px;padding:0 var(--space-4);font-size:var(--text-base)}.ui-button--lg[data-v-556ea0b6]{height:42px;padding:0 var(--space-5);font-size:15px;border-radius:var(--radius-lg)}.ui-button__content[data-v-556ea0b6]{display:inline-flex;align-items:center;gap:var(--space-2)}.ui-button__content[data-v-556ea0b6] svg{flex:none}.ui-button__content[data-v-556ea0b6] svg:not([width]){width:1em;height:1em}.ui-button--primary[data-v-556ea0b6]{background:var(--color-accent);color:var(--color-text-on-accent);border-color:var(--color-accent);box-shadow:var(--shadow-xs)}.ui-button--primary[data-v-556ea0b6]:not(:disabled):hover{background:var(--color-accent-hover);border-color:var(--color-accent-hover)}.ui-button--secondary[data-v-556ea0b6]{background:var(--color-surface-raised);color:var(--color-text);border-color:var(--color-line-strong);box-shadow:var(--shadow-xs)}.ui-button--secondary[data-v-556ea0b6]:not(:disabled):hover{border-color:var(--color-line-strong);background:var(--color-surface-sunken)}.ui-button--ghost[data-v-556ea0b6]{background:transparent;color:var(--color-text-muted);border-color:transparent}.ui-button--ghost[data-v-556ea0b6]:not(:disabled):hover{background:var(--color-surface-sunken);color:var(--color-text)}.ui-button--danger[data-v-556ea0b6]{background:var(--color-danger);color:var(--surface-light);border-color:var(--color-danger);box-shadow:var(--shadow-xs)}.ui-button--danger[data-v-556ea0b6]:not(:disabled):hover{filter:brightness(.96)}.ui-button--danger-soft[data-v-556ea0b6]{background:var(--color-danger-soft);color:var(--color-danger);border-color:var(--color-danger-bd)}.ui-button--danger-soft[data-v-556ea0b6]:not(:disabled):hover{background:var(--color-danger);color:var(--surface-light);border-color:var(--color-danger)}.ui-button.is-loading .ui-button__content[data-v-556ea0b6]{opacity:.7}.ui-button .ui-button__spinner[data-v-556ea0b6]{flex:none;color:inherit}.ui-button__spinner[data-v-556ea0b6] .ui-spinner__track{opacity:.35}.chat-empty[data-v-3ca41c3a]{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:24px 16px;color:var(--faint);text-align:center}.chat-empty-text[data-v-3ca41c3a]{font-size:var(--ui-font-size-sm)}.chat-loading[data-v-3ca41c3a]{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;padding:24px 16px;color:var(--muted)}.chat-loading-text[data-v-3ca41c3a]{font-size:var(--ui-font-size-sm)}.chat[data-v-3ca41c3a]{--chat-turn-gap: 16px;--chat-block-gap: 10px;--chat-section-gap: 18px;display:flex;flex-direction:column;gap:0;padding:16px 14px 20px;flex:1;min-height:0;position:relative}.chat .chat-empty[data-v-3ca41c3a]{align-self:stretch}.open-unsupported[data-v-3ca41c3a]{position:absolute;bottom:16px;left:50%;transform:translate(-50%);max-width:min(90%,480px);padding:6px 12px;border-radius:var(--radius-md);border:1px solid var(--color-line);background:var(--color-surface-raised);color:var(--color-text-muted);font-size:var(--ui-font-size-sm);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;z-index:1}.chat>.u-turn[data-v-3ca41c3a],.chat>.a-msg[data-v-3ca41c3a],.chat>.compact-divider[data-v-3ca41c3a],.chat>.cron-notice[data-v-3ca41c3a],.chat>.sending-placeholder[data-v-3ca41c3a],.chat[data-v-3ca41c3a]>.activity-notice{margin-top:var(--chat-turn-gap)}.chat>.a-msg[data-v-3ca41c3a]{margin-top:10px}.chat>.u-turn[data-v-3ca41c3a]:first-child,.chat>.a-msg[data-v-3ca41c3a]:first-child,.chat>.compact-divider[data-v-3ca41c3a]:first-child,.chat>.cron-notice[data-v-3ca41c3a]:first-child,.chat>.sending-placeholder[data-v-3ca41c3a]:first-child,.chat[data-v-3ca41c3a]>.activity-notice:first-child{margin-top:0}.u-turn[data-v-3ca41c3a]{display:flex;flex-direction:column;align-items:flex-end;align-self:flex-start;width:100%}.u-bub[data-v-3ca41c3a]{align-self:flex-end;max-width:78%;background:var(--color-accent-soft);border:1px solid var(--color-accent-bd);color:var(--color-text);border-radius:var(--radius-xl) var(--radius-xl) var(--radius-sm) var(--radius-xl);padding:11px 15px;font-size:var(--content-font-size);line-height:var(--leading-normal);box-shadow:var(--shadow-xs)}.u-meta[data-v-3ca41c3a]{align-self:flex-end;display:flex;justify-content:flex-end;align-items:center;max-width:78%;margin-top:2px;margin-right:4px}.u-meta .u-edit[data-v-3ca41c3a]{min-height:22px;box-sizing:border-box}.u-text[data-v-3ca41c3a]{white-space:pre-wrap;overflow-wrap:anywhere}.u-edit[data-v-3ca41c3a]{display:inline-flex;align-items:center;justify-content:center;padding:2px 5px;background:none;border:none;border-radius:var(--radius-sm);color:var(--muted);font:inherit;font-size:var(--text-base);line-height:1;cursor:pointer;opacity:.7;transition:opacity .12s,color .12s,background-color .12s}.u-edit svg[data-v-3ca41c3a]{display:block;flex:none}.u-edit[data-v-3ca41c3a]:hover{opacity:1;color:var(--color-accent);background:var(--hover)}.u-copy[data-v-3ca41c3a]{display:inline-flex;align-items:center;justify-content:center;padding:2px 5px;background:none;border:none;border-radius:var(--radius-sm);color:var(--muted);font:inherit;font-size:var(--text-base);line-height:1;cursor:pointer;opacity:.7;transition:opacity .12s,color .12s,background-color .12s;min-height:22px;box-sizing:border-box}.u-copy svg[data-v-3ca41c3a]{display:block;flex:none}.u-copy[data-v-3ca41c3a]:hover{opacity:1;color:var(--color-accent);background:var(--hover)}.u-edit-wrap[data-v-3ca41c3a]{display:flex;justify-content:flex-end}.chat>.u-edit-wrap[data-v-3ca41c3a]{margin-top:4px}.chat>.u-edit-wrap+.a-msg[data-v-3ca41c3a]{margin-top:8px}.compact-divider[data-v-3ca41c3a]{display:flex;align-items:center;gap:10px;align-self:stretch;width:100%;margin:var(--chat-section-gap) 0 0}.chat>.compact-divider[data-v-3ca41c3a]:first-child{margin-top:0}.cd-line[data-v-3ca41c3a]{flex:1;height:1px;background:var(--line)}.cd-label[data-v-3ca41c3a]{flex:none;display:inline-flex;align-items:center;gap:8px;max-width:80%;font-size:var(--text-base);color:var(--muted);white-space:nowrap}.cd-btn[data-v-3ca41c3a]{background:none;border:none;padding:0;cursor:pointer;font:inherit;font-size:var(--text-base);color:var(--muted)}.cd-view[data-v-3ca41c3a]{color:var(--color-accent)}.cd-btn:hover .cd-view[data-v-3ca41c3a]{text-decoration:underline}.a-msg[data-v-3ca41c3a]{align-self:flex-start;max-width:94%;width:94%}.a-msg-ft[data-v-3ca41c3a]{display:flex;justify-content:flex-start;align-items:center;gap:8px;height:auto;margin-top:var(--chat-block-gap);overflow:visible}.a-cpbtn[data-v-3ca41c3a]{display:inline-flex;align-items:center;justify-content:center;padding:2px 5px;background:none;border:none;border-radius:var(--radius-sm);color:var(--muted);font:inherit;font-size:var(--text-base);line-height:1;cursor:pointer;opacity:.7;transition:opacity .12s,color .12s,background-color .12s;min-height:22px;box-sizing:border-box}.a-cpbtn[data-v-3ca41c3a]:hover{opacity:1;color:var(--color-accent);background:var(--hover)}.a-cpbtn svg[data-v-3ca41c3a]{display:block;flex:none}@media(hover:none){.a-msg-ft[data-v-3ca41c3a]{height:auto;margin-top:var(--chat-block-gap);opacity:1;pointer-events:auto}.a-cpbtn[data-v-3ca41c3a]{font-size:var(--ui-font-size-sm);padding:8px 10px;margin:-4px -6px}}.a-msg .msg[data-v-3ca41c3a]{font-size:var(--ui-font-size);line-height:1.6;color:var(--color-text);font-weight:500}.a-msg .msg[data-v-3ca41c3a] p{margin:0}.a-msg .msg[data-v-3ca41c3a] p+p{margin-top:8px}.a-msg>.msg[data-v-3ca41c3a],.a-msg[data-v-3ca41c3a]>.think,.a-msg[data-v-3ca41c3a]>.tool-group,.a-msg[data-v-3ca41c3a]>.agent-card,.a-msg[data-v-3ca41c3a]>.agent-group,.a-msg[data-v-3ca41c3a]>.box,.a-msg[data-v-3ca41c3a]>.swarm-card,.a-msg[data-v-3ca41c3a]>.media-tool,.a-msg[data-v-3ca41c3a]>.ui-banner{margin-top:var(--chat-block-gap)}.a-msg>.msg[data-v-3ca41c3a]:first-child,.a-msg[data-v-3ca41c3a]>.think:first-child,.a-msg[data-v-3ca41c3a]>.tool-group:first-child,.a-msg[data-v-3ca41c3a]>.agent-card:first-child,.a-msg[data-v-3ca41c3a]>.agent-group:first-child,.a-msg[data-v-3ca41c3a]>.box:first-child,.a-msg[data-v-3ca41c3a]>.swarm-card:first-child,.a-msg[data-v-3ca41c3a]>.media-tool:first-child,.a-msg[data-v-3ca41c3a]>.ui-banner:first-child{margin-top:0}.a-msg[data-v-3ca41c3a] code{font:.9em var(--font-mono);background:var(--color-surface-sunken);border:1px solid var(--color-line);border-radius:var(--radius-sm);padding:1px 6px;color:var(--color-accent-hover)}@container (min-width: 760px){.a-msg .msg[data-v-3ca41c3a] .markstream-vue.markdown-renderer:has(.table-node-wrapper){content-visibility:visible}.a-msg .msg[data-v-3ca41c3a] .table-node-wrapper{position:relative;left:50%;width:max-content;min-width:100%;max-width:min(var(--p-table-max),calc(100cqi - var(--space-5) - var(--space-5)))!important;transform:translate(-50%)}}.u-atts[data-v-3ca41c3a]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.sending-placeholder[data-v-3ca41c3a]{align-self:flex-start;padding:10px 0}.turn-error[data-v-3ca41c3a]{flex-wrap:wrap}.turn-error-text[data-v-3ca41c3a]{flex:1;min-width:0;white-space:pre-wrap;overflow-wrap:anywhere}.turn-error-resume[data-v-3ca41c3a]{margin-left:auto;flex:none}.skill-act[data-v-3ca41c3a]{display:flex;flex-direction:column;gap:2px}.skill-act-head[data-v-3ca41c3a]{font-size:var(--ui-font-size-sm);font-weight:500;color:var(--color-accent-hover);display:flex;align-items:center;gap:6px}.skill-act-arrow[data-v-3ca41c3a]{color:var(--color-accent);font-size:var(--text-base)}.skill-act-args[data-v-3ca41c3a]{font-size:var(--text-base);color:var(--muted);padding-left:17px;white-space:pre-wrap;overflow-wrap:anywhere}@media(max-width:640px){.chat[data-v-3ca41c3a]{box-sizing:border-box;width:100%;padding:14px max(12px,var(--safe-right)) 18px max(12px,var(--safe-left))}.u-bub[data-v-3ca41c3a]{max-width:min(88%,calc(100vw - 52px))}.a-msg[data-v-3ca41c3a]{width:100%;max-width:100%}.u-bub .u-text[data-v-3ca41c3a],.a-msg .msg[data-v-3ca41c3a]{font-size:var(--ui-font-size-xl)}.a-msg[data-v-3ca41c3a] .md,.a-msg[data-v-3ca41c3a] .markdown-renderer,.a-msg[data-v-3ca41c3a] .code-block-container,.a-msg[data-v-3ca41c3a] .diff-wrap,.a-msg[data-v-3ca41c3a] pre{max-width:100%}.a-msg[data-v-3ca41c3a] .code-block-container pre,.a-msg[data-v-3ca41c3a] .diff-pre{overflow-x:auto;-webkit-overflow-scrolling:touch}.a-msg[data-v-3ca41c3a] .media-tool.mob{width:min(44vw,160px)}.cd-label[data-v-3ca41c3a]{min-width:0;max-width:calc(100% - 48px);overflow:hidden;text-overflow:ellipsis}.u-edit-confirm[data-v-3ca41c3a]{flex-wrap:wrap;justify-content:flex-end;max-width:calc(100vw - 28px)}.ts[data-v-3ca41c3a]{font-size:var(--ui-font-size-sm)}.chat-empty-text[data-v-3ca41c3a],.chat-loading-text[data-v-3ca41c3a]{font-size:var(--ui-font-size-lg)}.cd-label[data-v-3ca41c3a],.cd-btn[data-v-3ca41c3a]{font-size:var(--ui-font-size)}}.top-sentinel[data-v-3ca41c3a]{display:flex;align-items:center;justify-content:center;padding:12px 0;min-height:28px}.top-sentinel-loading[data-v-3ca41c3a]{opacity:.8}.top-sentinel-btn[data-v-3ca41c3a]{appearance:none;border:1px solid var(--border);background:transparent;color:var(--muted);font-size:var(--ui-font-size-sm);padding:4px 12px;border-radius:999px;cursor:pointer;transition:color .15s ease,border-color .15s ease}.top-sentinel-btn[data-v-3ca41c3a]:hover{color:var(--fg);border-color:var(--fg)}.top-sentinel-text[data-v-3ca41c3a]{display:inline-flex;align-items:center;gap:8px;color:var(--muted);font-size:var(--ui-font-size-sm)}.chat[data-v-3ca41c3a]{background:transparent}.chat[data-v-3ca41c3a]{gap:0;padding:22px 20px 26px}.u-bub[data-v-3ca41c3a]{background:var(--color-accent-soft);border-color:var(--color-accent-bd);border-radius:var(--radius-xl) var(--radius-xl) var(--radius-sm) var(--radius-xl);padding:11px 15px;box-shadow:var(--shc)}.a-msg[data-v-3ca41c3a]{max-width:100%;width:100%}.chat>.q-stack[data-v-3ca41c3a]{margin-top:var(--chat-turn-gap)}.chat>.q-stack[data-v-3ca41c3a]:first-child{margin-top:0}.q-stack[data-v-3ca41c3a]{align-self:flex-end;width:100%;display:flex;flex-direction:column;gap:8px}.q-head[data-v-3ca41c3a]{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:0 6px;color:var(--color-text-faint);font-size:var(--ui-font-size-xs)}.q-title[data-v-3ca41c3a]{display:inline-flex;align-items:center;gap:6px}.q-title b[data-v-3ca41c3a]{color:var(--color-accent-hover);font-weight:var(--weight-medium)}.q-hint[data-v-3ca41c3a]{color:var(--color-text-faint)}.q-turn[data-v-3ca41c3a]{position:relative}.q-bub[data-v-3ca41c3a]{display:flex;align-items:center;gap:8px;width:fit-content;background:var(--color-surface-raised);border:1px dashed var(--color-accent-bd);padding:8px 8px 8px 6px;transition:border-color .12s ease,background .12s ease}.q-bub[data-v-3ca41c3a]:hover{border-color:var(--color-accent);background:var(--color-accent-soft)}.q-grip[data-v-3ca41c3a]{flex:none;display:inline-flex;align-items:center;padding:2px;color:var(--color-text-faint);cursor:grab;opacity:.7}.q-grip[data-v-3ca41c3a]:hover{opacity:1}.q-grip[data-v-3ca41c3a]:active{cursor:grabbing}.q-body[data-v-3ca41c3a]{flex:1;min-width:0;background:none;border:none;padding:0;margin:0;font:inherit;color:var(--color-text);text-align:left;cursor:pointer;opacity:.82}.q-bub:hover .q-body[data-v-3ca41c3a]{opacity:1}.q-body[data-v-3ca41c3a]:disabled{cursor:default}.q-text[data-v-3ca41c3a]{white-space:pre-wrap;overflow-wrap:anywhere}.q-text-placeholder[data-v-3ca41c3a]{display:inline-flex;align-items:center;gap:4px;color:var(--color-text-muted)}.q-imgs[data-v-3ca41c3a]{display:flex;gap:4px;flex:none}.q-img[data-v-3ca41c3a]{width:28px;height:28px;object-fit:cover;border-radius:var(--radius-sm);border:1px solid var(--color-line)}.q-file[data-v-3ca41c3a]{display:inline-flex;align-items:center;gap:4px;height:28px;padding:0 6px;border-radius:var(--radius-sm);border:1px solid var(--color-line);color:var(--color-text-muted);font-size:calc(var(--ui-font-size) - 3px);max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.q-tag[data-v-3ca41c3a]{flex:none;padding:1px 6px;border-radius:var(--radius-full);font-size:var(--ui-font-size-xs);font-weight:var(--weight-medium);line-height:1.4;white-space:nowrap}.q-tag-next[data-v-3ca41c3a]{color:var(--color-accent-hover);background:var(--color-accent-soft);border:1px solid var(--color-accent-bd)}.q-tag-idx[data-v-3ca41c3a]{color:var(--color-text-faint);background:var(--color-surface-sunken);border:1px solid var(--color-line)}.q-steer[data-v-3ca41c3a],.q-rm[data-v-3ca41c3a]{flex:none;width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;background:none;border:none;border-radius:var(--radius-sm);color:var(--color-text-faint);cursor:pointer;opacity:0;transition:opacity .12s ease,background .12s ease,color .12s ease}.q-steer[data-v-3ca41c3a]{position:relative;touch-action:manipulation}.q-steer[data-v-3ca41c3a]:after{content:"";position:absolute;inset:-11px}.q-bub:hover .q-steer[data-v-3ca41c3a],.q-bub:focus-within .q-steer[data-v-3ca41c3a],.q-steer[data-v-3ca41c3a]:focus-visible,.q-bub:hover .q-rm[data-v-3ca41c3a],.q-bub:focus-within .q-rm[data-v-3ca41c3a],.q-rm[data-v-3ca41c3a]:focus-visible{opacity:1}.q-steer[data-v-3ca41c3a]:hover{background:var(--color-accent-soft);color:var(--color-accent)}.q-rm[data-v-3ca41c3a]:hover{background:var(--color-danger-soft);color:var(--color-danger)}.q-turn.q-dragging .q-bub[data-v-3ca41c3a]{opacity:.45}.q-turn.drop-before[data-v-3ca41c3a]:before,.q-turn.drop-after[data-v-3ca41c3a]:after{content:"";position:absolute;left:0;right:0;height:2px;background:var(--color-accent);border-radius:var(--radius-full);z-index:1}.q-turn.drop-before[data-v-3ca41c3a]:before{top:-5px}.q-turn.drop-after[data-v-3ca41c3a]:after{bottom:-5px}.chat[data-v-3ca41c3a] .chat-search-hit{background:var(--color-accent-soft);border-radius:var(--radius-xs);box-shadow:inset 0 0 0 1px var(--color-accent-bd);padding:0 1px}.chat[data-v-3ca41c3a] .chat-search-hit--active{background:var(--color-accent);color:var(--color-bg);box-shadow:inset 0 0 0 1px var(--color-accent)}.chat-header[data-v-a3848f6a]{flex:none;display:flex;align-items:center;gap:14px;height:48px;padding:0 16px;border-bottom:1px solid var(--color-line);background:var(--color-bg);font-family:var(--font-ui);min-width:0}.chat-header.macos-desktop[data-v-a3848f6a]{-webkit-app-region:drag}.chat-header.macos-desktop button[data-v-a3848f6a],.chat-header.macos-desktop input[data-v-a3848f6a]{-webkit-app-region:no-drag}.ch-id[data-v-a3848f6a]{display:flex;align-items:center;gap:6px;min-width:0;flex:none;max-width:46%}.ch-ws[data-v-a3848f6a]{color:var(--color-text-muted);font-size:var(--text-base);font-weight:var(--weight-medium);flex:none}.ch-sep[data-v-a3848f6a]{color:var(--color-text-faint);flex:none}.ch-ses[data-v-a3848f6a]{color:var(--color-text);font-size:var(--text-base);font-weight:var(--weight-medium);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ch-rename[data-v-a3848f6a]{flex:1;min-width:0;font-size:var(--text-base);font-weight:var(--weight-medium);color:var(--color-text);background:var(--color-bg);border:1px solid var(--color-accent);border-radius:var(--radius-xs);padding:2px 5px;outline:none}.ch-git[data-v-a3848f6a]{display:flex;align-items:center;gap:4px;border:none;background:transparent;padding:0;color:var(--muted);font-family:var(--mono);font-size:calc(var(--ui-font-size) - 2px);flex:0 1 auto;max-width:none;min-width:0;cursor:pointer}.ch-git:hover .ch-branch[data-v-a3848f6a]{color:var(--color-text)}.ch-branch[data-v-a3848f6a]{color:var(--dim);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-right:4px}.ch-detached[data-v-a3848f6a]{color:var(--muted);font-style:italic}.ch-pill[data-v-a3848f6a]{display:inline-flex;align-items:center;gap:3px;padding:1px 5px;border-radius:999px;background:var(--panel);border:1px solid var(--line);font-size:calc(var(--ui-font-size) - 3px)}.ch-sync-pill[data-v-a3848f6a]{border-color:var(--line)}.ch-diff-pill[data-v-a3848f6a]{border-color:color-mix(in srgb,var(--color-success) 20%,var(--line))}.ch-ahead[data-v-a3848f6a]{color:var(--color-warning);flex:none}.ch-behind[data-v-a3848f6a]{color:var(--color-accent-hover);flex:none}.ch-add[data-v-a3848f6a]{color:var(--color-success);flex:none}.ch-del[data-v-a3848f6a]{color:var(--color-danger);flex:none}.ch-spacer[data-v-a3848f6a]{flex:1;min-width:0}.ch-act-more.open[data-v-a3848f6a],.ch-act-search.active[data-v-a3848f6a]{background:var(--color-surface-sunken);color:var(--color-text)}.ch-pr[data-v-a3848f6a]{display:inline-flex;align-items:center;gap:4px;height:22px;padding:0 9px;flex:none;border:1px solid var(--color-line);border-radius:var(--radius-full);background:var(--color-surface-sunken);color:var(--color-text-muted);font-size:var(--text-xs);font-weight:500;cursor:pointer}.ch-pr svg[data-v-a3848f6a]{flex:none}.ch-pr.pr-open[data-v-a3848f6a]{color:var(--color-success);border-color:var(--color-success-bd);background:var(--color-success-soft)}.ch-pr.pr-merged[data-v-a3848f6a]{color:var(--color-done);border-color:var(--color-done-bd);background:var(--color-done-soft)}.ch-pr.pr-closed[data-v-a3848f6a]{color:var(--color-danger);border-color:var(--color-danger-bd);background:var(--color-danger-soft)}.ch-pr.pr-draft[data-v-a3848f6a],.ch-pr.pr-unknown[data-v-a3848f6a]{color:var(--color-text-muted);border-color:var(--color-line-strong);background:var(--color-surface-sunken)}.ch-pr[data-v-a3848f6a]:hover{border-color:var(--color-line-strong)}.ch-menu[data-v-a3848f6a]{position:fixed;top:0;left:0;z-index:var(--z-dropdown)}@media(max-width:980px){.ch-act-label[data-v-a3848f6a]{display:none}}@media(max-width:640px){.chat-header[data-v-a3848f6a]{display:none}}.slash-menu[data-v-3f12a9ed]{position:absolute;bottom:calc(100% + 4px);left:0;right:0;padding:var(--space-1);background:var(--color-surface-raised);border:1px solid var(--color-line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);z-index:var(--z-dropdown);--menu-scrollbar-track-inset: 4px;--menu-scrollbar-thumb-min: 24px;--menu-fade-top: linear-gradient(to bottom, var(--color-surface-raised) 0%, transparent 100%);--menu-fade-bottom: linear-gradient(to top, var(--color-surface-raised) 0%, transparent 100%)}.slash-scroller[data-v-3f12a9ed]{position:relative}.slash-list[data-v-3f12a9ed]{max-height:240px;overflow-y:auto}.slash-item[data-v-3f12a9ed]{display:grid;grid-template-columns:minmax(90px,32%) minmax(0,1fr);align-items:start;gap:10px;padding:6px 10px;cursor:pointer;font-family:var(--font-ui);font-size:var(--text-sm);border-radius:var(--radius-sm)}.slash-item[data-v-3f12a9ed]:hover{background:var(--color-surface-sunken)}.slash-item.active[data-v-3f12a9ed]{background:var(--color-accent-soft)}.slash-item.active .slash-name[data-v-3f12a9ed]{color:var(--color-accent-hover)}.slash-name[data-v-3f12a9ed]{color:var(--color-accent);font-weight:500;min-width:0;line-height:var(--leading-normal);overflow-wrap:anywhere}.slash-match[data-v-3f12a9ed]{font-weight:var(--weight-semibold)}.slash-desc-match[data-v-3f12a9ed]{font-weight:var(--weight-semibold);color:var(--color-text)}.slash-desc[data-v-3f12a9ed]{color:var(--color-text-muted);font-size:var(--text-xs);min-width:0;line-height:var(--leading-normal);overflow-wrap:anywhere}.slash-empty[data-v-3f12a9ed]{padding:8px 12px;font-family:var(--font-ui);font-size:var(--text-sm);color:var(--color-text-muted)}.menu-scroll-thumb[data-v-3f12a9ed]{position:absolute;right:2px;width:4px;border-radius:var(--radius-xs);background:var(--color-line-strong);cursor:pointer;touch-action:none;transition:background var(--duration-fast) ease}.menu-scroll-thumb[data-v-3f12a9ed]:hover,.menu-scroll-thumb[data-v-3f12a9ed]:active{background:var(--color-text-faint)}.menu-scroll-fade[data-v-3f12a9ed]{position:absolute;left:0;right:0;height:12px;pointer-events:none;transition:opacity var(--duration-fast) ease}.menu-scroll-fade-top[data-v-3f12a9ed]{top:var(--space-1);background:var(--menu-fade-top)}.menu-scroll-fade-bottom[data-v-3f12a9ed]{bottom:var(--space-1);background:var(--menu-fade-bottom)}@media(max-width:520px){.slash-item[data-v-3f12a9ed]{grid-template-columns:minmax(0,1fr);gap:2px}}.slash-menu[data-v-3f12a9ed]{border-radius:var(--radius-lg);box-shadow:var(--sh)}.slash-desc[data-v-3f12a9ed]{font-family:var(--sans)}.mention-menu[data-v-b8578b17]{position:absolute;bottom:calc(100% + 4px);left:0;right:0;padding:var(--space-1);background:var(--color-surface-raised);border:1px solid var(--color-line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);z-index:var(--z-dropdown);--menu-scrollbar-track-inset: 4px;--menu-scrollbar-thumb-min: 24px;--menu-fade-top: linear-gradient(to bottom, var(--color-surface-raised) 0%, transparent 100%);--menu-fade-bottom: linear-gradient(to top, var(--color-surface-raised) 0%, transparent 100%)}.mention-scroller[data-v-b8578b17]{position:relative}.mention-list[data-v-b8578b17]{max-height:220px;overflow-y:auto}.mention-state[data-v-b8578b17]{padding:8px 12px;font-family:var(--font-ui);font-size:var(--text-sm)}.dim[data-v-b8578b17]{color:var(--color-text-muted)}.mention-item[data-v-b8578b17]{display:flex;align-items:center;gap:8px;padding:6px 10px;cursor:pointer;font-family:var(--font-ui);font-size:var(--text-sm);border-radius:var(--radius-sm)}.mention-icon[data-v-b8578b17]{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;color:var(--color-text-faint);flex-shrink:0}.mention-icon[data-v-b8578b17] svg{width:13px;height:13px;display:block}.mention-item:hover .mention-icon[data-v-b8578b17],.mention-item.active .mention-icon[data-v-b8578b17]{color:var(--color-text-muted)}.mention-item[data-v-b8578b17]:hover{background:var(--color-surface-sunken)}.mention-item.active[data-v-b8578b17]{background:var(--color-accent-soft)}.mention-name[data-v-b8578b17]{color:var(--color-text);font-weight:500;min-width:80px;flex-shrink:0}.mention-path[data-v-b8578b17]{color:var(--color-text-muted);font-size:var(--text-xs);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.menu-scroll-thumb[data-v-b8578b17]{position:absolute;right:2px;width:4px;border-radius:var(--radius-xs);background:var(--color-line-strong);cursor:pointer;touch-action:none;transition:background var(--duration-fast) ease}.menu-scroll-thumb[data-v-b8578b17]:hover,.menu-scroll-thumb[data-v-b8578b17]:active{background:var(--color-text-faint)}.menu-scroll-fade[data-v-b8578b17]{position:absolute;left:0;right:0;height:12px;pointer-events:none;transition:opacity var(--duration-fast) ease}.menu-scroll-fade-top[data-v-b8578b17]{top:var(--space-1);background:var(--menu-fade-top)}.menu-scroll-fade-bottom[data-v-b8578b17]{bottom:var(--space-1);background:var(--menu-fade-bottom)}.mention-menu[data-v-b8578b17]{border-radius:var(--radius-lg);box-shadow:var(--sh)}.mention-state[data-v-b8578b17]{font-family:var(--sans)}.ctx-ring[data-v-a364f1f1]{width:16px;height:16px;flex:none;transform:rotate(-90deg)}.ctx-ring-track[data-v-a364f1f1]{stroke:var(--line)}.ctx-ring-fill[data-v-a364f1f1]{stroke:var(--color-accent);transition:stroke-dashoffset .3s ease,stroke .3s ease}.composer[data-v-e7022649]{padding:7px var(--dock-inline-right, 16px) 12px var(--dock-inline-left, 16px);background:transparent;transition:background .12s}.composer.drag-over[data-v-e7022649]{background:var(--color-accent-soft)}.drop-overlay[data-v-e7022649]{position:fixed;inset:0;z-index:var(--z-modal);display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--color-bg) 72%,transparent);pointer-events:none;opacity:0;visibility:hidden;transition:opacity var(--duration-base) ease,visibility var(--duration-base)}.drop-overlay.show[data-v-e7022649]{opacity:1;visibility:visible}.drop-card[data-v-e7022649]{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-6);border-radius:var(--radius-lg);border:1.5px dashed var(--color-accent);background:var(--color-bg);color:var(--color-accent);font-size:var(--ui-font-size-lg);font-weight:var(--weight-medium);box-shadow:var(--shadow-md)}.composer-card[data-v-e7022649]{--composer-send-size: 32px;--composer-send-inset: var(--space-2);position:relative;border:1px solid var(--line);border-radius:var(--radius-xl);background:var(--bg);box-shadow:var(--shadow-md);transition:border-color .15s,box-shadow .15s}.composer-card[data-v-e7022649]:focus-within{border-color:var(--color-accent);box-shadow:var(--shadow-md),0 0 0 3px var(--color-accent-soft)}.att-strip[data-v-e7022649]{display:flex;flex-wrap:wrap;gap:6px;padding:4px 0 6px}.att-lightbox[data-v-e7022649]{position:fixed;inset:0;z-index:var(--z-overlay);display:flex;align-items:center;justify-content:center;padding:24px;background:#14171c9e}.att-lightbox-card[data-v-e7022649]{position:relative;display:flex;flex-direction:column;align-items:center;gap:10px;max-width:min(960px,calc(100vw - 48px));max-height:calc(100vh - 48px)}.att-lightbox-media[data-v-e7022649]{max-width:100%;max-height:calc(100vh - 96px);border-radius:6px;background:var(--bg);box-shadow:var(--shadow-xl);object-fit:contain}.att-lightbox-name[data-v-e7022649]{max-width:100%;color:var(--surface-light);font-family:var(--mono);font-size:calc(var(--ui-font-size) - 2px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.att-lightbox-close[data-v-e7022649]{position:absolute;top:-14px;right:-14px;width:28px;height:28px;border:1px solid rgba(255,255,255,.45);border-radius:50%;background:#14171cd1;color:var(--surface-light);cursor:pointer}.file-input-hidden[data-v-e7022649]{display:none}.cin-wrap[data-v-e7022649]{position:relative;padding:14px 16px 8px}.input-row[data-v-e7022649]{position:relative;display:flex;align-items:flex-start;gap:var(--space-2)}.expand-btn[data-v-e7022649]{width:22px;height:22px;display:flex;align-items:center;justify-content:center;border:none;border-radius:6px;background:transparent;color:var(--dim);cursor:pointer;padding:0;transition:background .12s,color .12s}.expand-btn[data-v-e7022649]:hover{background:var(--panel2);color:var(--color-text)}.expand-btn[data-v-e7022649]:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.ph[data-v-e7022649]{color:var(--faint);caret-color:var(--color-text);flex:1;border:none;outline:none;resize:none;font-family:var(--font-ui);font-size:var(--content-font-size);background:transparent;min-height:36px;max-height:25vh;overflow-y:auto;line-height:1.5;margin-bottom:6px}.ph[data-v-e7022649]::placeholder{color:var(--muted)}.ph[data-v-e7022649]:not(:placeholder-shown){color:var(--color-text)}.composer.expanded .ph[data-v-e7022649]{min-height:70vh;max-height:70vh}.compact-chip[data-v-e7022649]{background:none;border:1px solid var(--line);border-radius:var(--radius-xs);color:var(--color-warning);font-family:var(--mono);font-size:var(--ui-font-size);padding:0 4px;cursor:pointer;height:19px;line-height:17px;flex:none}.compact-chip[data-v-e7022649]:hover{background:var(--panel2)}.send[data-v-e7022649]{width:var(--composer-send-size);height:var(--composer-send-size);border-radius:50%;background:var(--color-accent);color:var(--color-text-on-accent);border:none;box-shadow:var(--shadow-xs);padding:0;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;margin-left:var(--space-2);transition:background .25s ease,transform .12s ease;position:relative}.send[data-v-e7022649]:hover{background:var(--color-accent-hover)}.send[data-v-e7022649]:active{transform:scale(.92)}.send[data-v-e7022649]:disabled{cursor:not-allowed;opacity:.88}.send[data-v-e7022649]:disabled:active{transform:none}.send.is-starting[data-v-e7022649] .ui-spinner{color:var(--color-text-on-accent)}.send.is-starting[data-v-e7022649] .ui-spinner__track{stroke:color-mix(in srgb,var(--color-text-on-accent) 32%,transparent)}.send svg[data-v-e7022649]{flex:none;width:var(--p-ic-lg);height:var(--p-ic-lg)}.stop[data-v-e7022649]{width:var(--composer-send-size);height:var(--composer-send-size);border-radius:50%;background:var(--color-danger-soft);color:var(--color-danger);border:1px solid var(--color-danger-bd);box-shadow:var(--shadow-xs);padding:0;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;margin-left:var(--space-2);transition:background .16s ease,color .16s ease,border-color .16s ease,transform .12s ease}.stop[data-v-e7022649]:hover{background:var(--color-danger);color:var(--surface-light);border-color:var(--color-danger)}.stop[data-v-e7022649]:active{transform:scale(.92)}.stop svg[data-v-e7022649]{flex:none;width:var(--p-ic-lg);height:var(--p-ic-lg)}.toolbar[data-v-e7022649]{display:flex;align-items:center;justify-content:space-between;padding:6px var(--composer-send-inset) var(--composer-send-inset);position:relative}.menu-measure[data-v-e7022649]{position:absolute;width:max-content;height:0;overflow:hidden;visibility:hidden;pointer-events:none}.toolbar-left[data-v-e7022649],.toolbar-right[data-v-e7022649]{display:flex;align-items:center;gap:2px;min-width:0;overflow:hidden}.toolbar-left[data-v-e7022649]{flex-wrap:wrap;row-gap:4px}.perm-pill[data-v-e7022649]{display:inline-flex;align-items:center;gap:4px;padding:2px 7px;border-radius:6px;font-size:var(--ui-font-size);color:var(--color-text);cursor:pointer;user-select:none;transition:background .1s,color .15s;font-family:var(--font-ui);font-weight:var(--weight-medium)}.perm-pill[data-v-e7022649]:hover{background:var(--color-surface-sunken)}.perm-pill.open[data-v-e7022649]{background:var(--color-accent-soft)}.perm-pill.perm-manual[data-v-e7022649]{color:var(--dim)}.perm-pill.perm-yolo[data-v-e7022649]{color:var(--color-warning)}.perm-pill.perm-auto[data-v-e7022649]{color:var(--color-danger)}.ctx-group[data-v-e7022649]{display:flex;align-items:center;gap:4px;flex-shrink:0;padding:2px 4px;border-radius:var(--radius-xs)}.ctx-group[data-v-e7022649]:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.model-pill[data-v-e7022649]{display:inline-flex;align-items:center;gap:3px;padding:2px 7px;border-radius:6px;font-size:var(--ui-font-size);line-height:var(--leading-normal);color:var(--dim);font-family:var(--font-ui);font-weight:var(--weight-medium);cursor:pointer;user-select:none;transition:background .1s;position:relative;overflow:hidden}.model-pill[data-v-e7022649]:hover{background:var(--color-surface-sunken);color:var(--color-text)}.model-pill.open[data-v-e7022649]{background:var(--color-accent-soft)}.model-pill b[data-v-e7022649]{font-weight:500;color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:280px}.model-pill .think-suffix[data-v-e7022649]{color:var(--color-accent);font-weight:500;flex-shrink:0}.model-pill .cv[data-v-e7022649]{color:var(--faint);flex:none}.model-pill:hover .cv[data-v-e7022649],.model-pill.open .cv[data-v-e7022649]{color:var(--color-accent-hover)}.model-dropdown[data-v-e7022649]{position:absolute;bottom:calc(100% + 4px);right:10px;z-index:var(--z-dropdown);min-width:200px;background:var(--color-surface-raised);border:1px solid var(--color-line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:5px;max-height:min(520px,calc(100vh - 96px));max-height:min(520px,calc(100dvh - 96px));overflow-y:auto;display:flex;flex-direction:column;gap:1px;font-family:var(--font-ui)}.md-section[data-v-e7022649]{padding:4px 7px 2px;font-size:var(--text-xs);color:var(--muted);text-transform:uppercase;letter-spacing:0;font-weight:var(--weight-semibold)}.md-row[data-v-e7022649]{display:flex;align-items:center;gap:7px;width:100%;background:none;border:none;cursor:pointer;font-family:var(--font-ui);font-size:var(--ui-font-size);color:var(--color-text);padding:5px 7px;border-radius:6px;text-align:left}.md-row[data-v-e7022649]:hover{background:var(--color-surface-sunken)}.md-row[data-v-e7022649]:disabled{cursor:default;opacity:.58}.md-row[data-v-e7022649]:disabled:hover{background:none}.md-row.is-current[data-v-e7022649]{color:var(--color-text);background:var(--color-accent-soft)}.md-row.is-on[data-v-e7022649]{color:var(--color-accent)}.md-note[data-v-e7022649]{margin-left:auto;color:var(--muted);font-size:var(--ui-font-size-xs)}.md-row-more[data-v-e7022649]{color:var(--color-accent);font-weight:500}.md-row-more[data-v-e7022649]:hover{background:var(--color-accent-soft)}.md-check[data-v-e7022649]{width:14px;flex:none;color:var(--color-accent);font-weight:500;display:flex;justify-content:center}.md-name[data-v-e7022649]{flex:1}.md-provider[data-v-e7022649]{color:var(--muted);font-size:var(--ui-font-size-xs);flex:none}.md-star[data-v-e7022649]{color:var(--star);flex:none;margin-left:auto}.md-divider[data-v-e7022649]{height:1px;background:var(--line);margin:3px 0}.md-thinking[data-v-e7022649]{display:flex;align-items:center;gap:8px;padding:6px 7px;border-radius:var(--radius-sm)}.md-thinking .md-name[data-v-e7022649]{font-family:var(--font-ui);font-size:var(--ui-font-size);color:var(--color-text);flex:none}.md-thinking .md-note[data-v-e7022649]{margin-left:auto}.effort-segments[data-v-e7022649]{margin-left:auto;display:inline-flex;align-items:center;gap:1px;padding:2px;background:var(--color-surface-sunken);border:1px solid var(--color-line);border-radius:var(--radius-md)}.effort-seg[data-v-e7022649]{appearance:none;border:none;background:none;cursor:pointer;font-family:var(--font-ui);font-size:var(--ui-font-size-xs);line-height:1;color:var(--color-text-muted);padding:4px 9px;border-radius:var(--radius-sm);white-space:nowrap;transition:background .12s,color .12s,box-shadow .12s}.effort-seg[data-v-e7022649]:hover:not(:disabled):not(.is-active){background:var(--color-surface-raised);color:var(--color-text)}.effort-seg[data-v-e7022649]:focus-visible{outline:2px solid var(--color-accent);outline-offset:-2px}.effort-seg.is-active[data-v-e7022649]{background:var(--color-accent);color:var(--color-text-on-accent);box-shadow:var(--shadow-xs);font-weight:500}.effort-seg[data-v-e7022649]:disabled{cursor:default}.md-thinking.is-readonly .effort-segments[data-v-e7022649]{opacity:.62}.md-cache-note[data-v-e7022649]{width:0;min-width:100%;padding:2px 7px 4px;color:var(--muted);font-size:var(--ui-font-size-xs);line-height:1.4}.md-thinking.is-readonly .effort-seg.is-active[data-v-e7022649]{background:var(--color-surface-raised);color:var(--color-text-muted);box-shadow:none}.perm-dropdown[data-v-e7022649]{position:absolute;bottom:calc(100% + 4px);left:10px;z-index:var(--z-dropdown);min-width:220px;width:max-content;max-width:min(calc(100vw - var(--space-8)),calc(100% - 20px));background:var(--color-surface-raised);border:1px solid var(--color-line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:5px;display:flex;flex-direction:column;gap:1px}.pd-row[data-v-e7022649]{display:grid;grid-template-columns:14px var(--composer-menu-desc-width, max-content);column-gap:7px;row-gap:2px;align-items:start;width:100%;background:none;border:none;cursor:pointer;padding:6px 7px;border-radius:6px;text-align:left}.pd-row[data-v-e7022649]:hover{background:var(--color-surface-sunken)}.pd-row.is-current[data-v-e7022649]{background:var(--color-accent-soft)}.pd-check[data-v-e7022649]{grid-column:1;grid-row:1;width:14px;min-height:1lh;color:var(--color-accent);font-size:var(--ui-font-size);font-weight:var(--weight-medium);display:flex;align-items:center;justify-content:center;line-height:var(--leading-normal)}.pd-info[data-v-e7022649]{display:contents}.pd-name[data-v-e7022649]{grid-column:2;grid-row:1;font-family:var(--font-ui);font-size:var(--ui-font-size);font-weight:var(--weight-medium);line-height:var(--leading-normal)}.pd-desc[data-v-e7022649]{grid-column:2;grid-row:2;width:var(--composer-menu-desc-width, auto);font-family:var(--font-ui);font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--muted);line-height:var(--leading-normal)}.add-menu-anchor[data-v-e7022649]{display:inline-flex;flex:none}.add-menu-anchor .ui-icon-button.is-open[data-v-e7022649]{background:var(--color-accent-soft);color:var(--color-accent-hover)}.add-menu[data-v-e7022649]{position:fixed;z-index:var(--z-dropdown);min-width:220px;width:max-content;max-width:calc(100vw - var(--space-8));background:var(--color-surface-raised);border:1px solid var(--color-line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:5px;display:flex;flex-direction:column;gap:1px;font-family:var(--font-ui)}.add-menu .pd-check[data-v-e7022649]{color:var(--muted)}.add-menu .pd-row.is-current .pd-check[data-v-e7022649],.add-menu .pd-row.is-current .pd-name[data-v-e7022649]{color:var(--color-accent-hover)}.mode-chip[data-v-e7022649]{display:inline-flex;align-items:center;flex:none;border:1px solid var(--line);border-radius:var(--radius-sm);background:transparent;overflow:hidden;transition:background .1s,border-color .1s,color .15s}.mode-chip[data-v-e7022649]:hover{background:var(--color-surface-sunken)}.mode-chip.on[data-v-e7022649]{background:var(--color-accent-soft);border-color:var(--color-accent-bd)}.mode-chip-main[data-v-e7022649]{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border:none;background:none;color:var(--color-text-muted);font-family:var(--font-ui);font-size:var(--ui-font-size);font-weight:var(--weight-medium);line-height:var(--leading-normal);cursor:pointer;user-select:none}.mode-chip-main[data-v-e7022649]:hover{color:var(--color-text)}.mode-chip.on .mode-chip-main[data-v-e7022649]{color:var(--color-accent-hover)}.mode-chip-x[data-v-e7022649]{display:inline-flex;align-items:center;justify-content:center;padding:0 4px;border:none;background:none;color:inherit;cursor:pointer}.mode-chip-x[data-v-e7022649]:hover{color:var(--color-text)}.mode-chip.on .mode-chip-x[data-v-e7022649]:hover{color:var(--color-accent-hover)}.mode-chip-x[data-v-e7022649]:focus-visible{outline:2px solid var(--color-accent);outline-offset:-2px}@media(max-width:980px){.model-pill b[data-v-e7022649]{max-width:130px}.perm-pill[data-v-e7022649]{max-width:104px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}@media(max-width:640px){.composer[data-v-e7022649]{padding:9px var(--dock-inline-right, max(12px, var(--safe-right))) max(24px,var(--safe-bottom)) var(--dock-inline-left, max(12px, var(--safe-left)))}.composer-card[data-v-e7022649]{--composer-send-size: 36px;max-width:100%}.input-row[data-v-e7022649]{gap:6px;min-width:0}.send[data-v-e7022649]{width:var(--composer-send-size);height:var(--composer-send-size);min-width:var(--composer-send-size);padding:0;border-radius:50%;font-size:0;align-self:flex-end;position:relative}.send svg[data-v-e7022649]{display:none}.send[data-v-e7022649]:after{content:"↑";font-size:17px;line-height:1;color:var(--bg)}.stop[data-v-e7022649]{width:var(--composer-send-size);height:var(--composer-send-size);min-width:var(--composer-send-size);padding:0;border-radius:50%;font-size:0;align-self:flex-end;position:relative}.stop svg[data-v-e7022649]{display:none}.stop[data-v-e7022649]:after{content:"■";font-size:17px;line-height:1}.perm-pill[data-v-e7022649],.add-menu-anchor[data-v-e7022649],.mode-chip[data-v-e7022649]{display:none}.model-dropdown[data-v-e7022649]{right:10px;left:auto;min-width:180px;max-width:calc(100vw - 24px)}.ph[data-v-e7022649]{font-size:16px}.model-pill[data-v-e7022649],.attach-btn[data-v-e7022649]{font-size:var(--ui-font-size)}.toolbar[data-v-e7022649]{gap:6px;min-width:0}.toolbar-left[data-v-e7022649],.toolbar-right[data-v-e7022649]{min-width:0}.model-pill[data-v-e7022649]{max-width:min(52vw,220px)}.model-pill b[data-v-e7022649]{max-width:min(40vw,170px)}.md-row[data-v-e7022649],.md-section[data-v-e7022649]{font-size:var(--ui-font-size)}.md-thinking[data-v-e7022649]{flex-wrap:wrap;row-gap:6px}.md-thinking .effort-segments[data-v-e7022649]{margin-left:0;width:100%;justify-content:space-between}.md-thinking .effort-seg[data-v-e7022649]{flex:1;padding:5px 6px}.pd-name[data-v-e7022649]{font-size:var(--ui-font-size)}.pd-desc[data-v-e7022649]{font-size:var(--text-xs)}}.ui-card[data-v-9c9f9a9a]{background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-md);overflow:hidden}.ui-card.is-elevated[data-v-9c9f9a9a]{box-shadow:var(--shadow-md);border-color:transparent}.ui-card__head[data-v-9c9f9a9a]{display:flex;align-items:center;gap:var(--space-2);padding:10px 14px;border-bottom:1px solid var(--color-line);background:var(--color-surface);font-family:var(--font-mono);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text)}.ui-card__body[data-v-9c9f9a9a]{padding:14px;color:var(--color-text-muted)}.ui-card__foot[data-v-9c9f9a9a]{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-2);padding:10px 14px;border-top:1px solid var(--color-line);background:var(--color-surface)}.goal-strip[data-v-9e444f61]{--composer-send-size: 32px;--composer-send-inset: var(--space-2);--goal-corner-radius: calc((var(--composer-send-size) / 2) + var(--composer-send-inset) + var(--space-3));margin:var(--space-2) var(--space-4) 0;box-shadow:var(--shadow-md)}.goal-strip.ui-card[data-v-9e444f61]{border-radius:var(--goal-corner-radius);corner-shape:superellipse(1.5)}.goal-strip:not(.expanded).ui-card[data-v-9e444f61]{border-radius:var(--radius-full);corner-shape:round}.goal-strip[data-v-9e444f61] .ui-card__foot{padding:var(--composer-send-inset)}.goal-strip[data-v-9e444f61] .ui-card__head,.goal-strip[data-v-9e444f61] .ui-card__body,.goal-strip[data-v-9e444f61] .ui-card__foot{padding-left:calc((var(--composer-send-inset) + var(--composer-send-size)) / 2)}.goal-strip[data-v-9e444f61] .ui-card__body{background:var(--color-surface-raised);max-height:480px;overflow:hidden;opacity:1;transition:max-height var(--duration-slow) var(--ease-out),padding-top var(--duration-slow) var(--ease-out),padding-bottom var(--duration-slow) var(--ease-out),opacity var(--duration-base) var(--ease-out)}.goal-strip[data-v-9e444f61]:not(.expanded) .ui-card__body{max-height:0;padding-top:0;padding-bottom:0;opacity:0}.goal-strip[data-v-9e444f61] .ui-card__head{border-bottom-color:var(--color-line);transition:border-bottom-color var(--duration-base) var(--ease-out)}.goal-strip[data-v-9e444f61]:not(.expanded) .ui-card__head{border-bottom-color:transparent}.goal-row[data-v-9e444f61]{width:100%;display:flex;align-items:center;gap:var(--space-2);padding:0;border:none;background:transparent;color:var(--color-text);font:var(--text-base)/var(--leading-normal) var(--font-ui);text-align:left;cursor:pointer}.goal-kicker[data-v-9e444f61]{flex:none;color:var(--color-success);font:var(--text-base)/var(--leading-normal) var(--font-ui);font-weight:var(--weight-semibold)}.goal-icon[data-v-9e444f61]{flex:none;color:var(--color-success);margin-right:calc(-1 * var(--space-1))}.goal-objective[data-v-9e444f61]{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--color-text);font-size:var(--text-base);text-align:left}.goal-objective.expanded-hidden[data-v-9e444f61]{visibility:hidden;pointer-events:none}.goal-status[data-v-9e444f61]{flex:none}.goal-progress[data-v-9e444f61]{width:54px;height:4px;border-radius:var(--radius-full);background:var(--color-line);overflow:hidden;flex:none}.goal-progress-fill[data-v-9e444f61]{display:block;height:100%;border-radius:var(--radius-sm);background:var(--color-success)}.goal-chevron[data-v-9e444f61]{width:var(--p-ic-sm);height:var(--p-ic-sm);color:var(--color-text-muted);transition:transform var(--duration-fast) var(--ease-out);flex:none}.goal-chevron.open[data-v-9e444f61]{transform:rotate(90deg)}.goal-full[data-v-9e444f61]{color:var(--color-text);font-size:var(--text-base);line-height:var(--leading-normal);white-space:pre-wrap;overflow-wrap:anywhere}.goal-criterion[data-v-9e444f61]{margin-top:var(--space-3);color:var(--color-text-muted);font:var(--text-xs) var(--font-mono);text-transform:uppercase}.goal-criterion p[data-v-9e444f61]{margin:var(--space-1) 0 0;color:var(--color-text-muted);font:var(--text-xs)/var(--leading-normal) var(--font-ui);text-transform:none}.goal-footer[data-v-9e444f61]{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);width:100%;min-width:0}.goal-strip[data-v-9e444f61] .ui-card__foot{max-height:100px;overflow:hidden;opacity:1;transition:max-height var(--duration-slow) var(--ease-out),padding-top var(--duration-slow) var(--ease-out),padding-bottom var(--duration-slow) var(--ease-out),opacity var(--duration-base) var(--ease-out),border-top-color var(--duration-base) var(--ease-out)}.goal-strip[data-v-9e444f61]:not(.expanded) .ui-card__foot{max-height:0;padding-top:0;padding-bottom:0;border-top-color:transparent;opacity:0}.goal-meta[data-v-9e444f61]{min-width:0;display:flex;flex-wrap:wrap;gap:var(--space-2);color:var(--color-text-muted);font:var(--text-xs)/var(--leading-normal) var(--font-ui);font-weight:var(--weight-medium);font-variant-numeric:tabular-nums}.goal-actions[data-v-9e444f61]{display:flex;gap:var(--space-2);justify-content:flex-end;flex:none}.goal-action[data-v-9e444f61]{flex:none;min-width:0;height:var(--composer-send-size);border-radius:var(--radius-full);padding-inline:var(--space-4)}.goal-action[data-v-9e444f61] .ui-button__content{gap:var(--space-1)}@media(max-width:640px){.goal-strip[data-v-9e444f61]{--composer-send-size: 36px;margin:var(--space-2) var(--space-3) 0}.goal-progress[data-v-9e444f61]{display:none}}@media(prefers-reduced-motion:reduce){.goal-strip[data-v-9e444f61] .ui-card__head,.goal-strip[data-v-9e444f61] .ui-card__body,.goal-strip[data-v-9e444f61] .ui-card__foot{transition:none}}.qcard[data-v-2af45fec]{margin:var(--space-2) 0}.qcard.ui-card[data-v-2af45fec]{border-color:var(--color-accent-bd)}.qcard[data-v-2af45fec] .ui-card__head{background:var(--color-accent-soft);border-bottom-color:var(--color-accent-bd)}.qcard.minimized[data-v-2af45fec] .ui-card__body{display:none}.qcard.minimized[data-v-2af45fec] .ui-card__head{border-bottom:none}.qh[data-v-2af45fec]{display:flex;align-items:center;gap:var(--space-2);width:100%;font:var(--text-sm)/var(--leading-normal) var(--font-ui)}.qh-ic[data-v-2af45fec]{width:var(--p-ic-md);height:var(--p-ic-md);display:inline-flex;align-items:center;justify-content:center;color:var(--color-accent);font-weight:var(--weight-semibold);font-size:15px;line-height:1;flex:none}.qtitle[data-v-2af45fec]{color:var(--color-accent-hover);font-size:var(--text-base);font-weight:var(--weight-semibold)}.qstep[data-v-2af45fec]{color:var(--color-text-muted);font:var(--text-xs) var(--font-ui);margin-left:var(--space-1)}.qmin[data-v-2af45fec]{margin-left:auto}.qmin-peek[data-v-2af45fec]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--color-text-muted);font:var(--text-xs) var(--font-ui)}.qbody[data-v-2af45fec]{color:var(--color-text);font:var(--text-base)/var(--leading-normal) var(--font-ui)}.qsteps[data-v-2af45fec]{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-3);font-family:var(--font-ui)}.qstep-dot[data-v-2af45fec]{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:var(--radius-full);border:1px solid var(--color-line);background:var(--color-surface);color:var(--color-text-muted);font:var(--text-xs) var(--font-ui);cursor:pointer;padding:0;transition:background var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out)}.qstep-dot[data-v-2af45fec]:hover:not(.active){background:var(--color-surface-sunken)}.qstep-dot.active[data-v-2af45fec]{border-color:var(--color-accent);background:var(--color-accent);color:var(--color-text-on-accent);font-weight:var(--weight-medium)}.qstep-dot.answered[data-v-2af45fec]:not(.active){border-color:var(--color-accent);color:var(--color-accent)}.qheader-chip[data-v-2af45fec]{margin-bottom:var(--space-2)}.qtext[data-v-2af45fec]{font-size:var(--text-base);color:var(--color-text);font-weight:var(--weight-medium);margin-bottom:var(--space-2);line-height:var(--leading-normal)}.qmdbody[data-v-2af45fec]{margin-bottom:var(--space-2)}.qopts[data-v-2af45fec]{display:flex;flex-direction:column;gap:var(--space-1);margin-top:var(--space-2)}.qopt[data-v-2af45fec]{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border:1px solid var(--color-line);border-radius:var(--radius-md);cursor:pointer;font:var(--text-sm)/var(--leading-normal) var(--font-ui);color:var(--color-text);transition:background var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out);user-select:none}.qopt[data-v-2af45fec]:hover{background:var(--color-surface-sunken)}.qopt.selected[data-v-2af45fec]{border-color:var(--color-accent-bd);background:var(--color-accent-soft);color:var(--color-text)}.qopt-key[data-v-2af45fec]{color:var(--color-text-muted);font:var(--text-xs) var(--font-ui);font-weight:var(--weight-medium);width:12px;flex:none;text-align:center}.qopt-glyph[data-v-2af45fec]{color:var(--color-accent-hover);font-size:var(--text-base);flex:none}.qopt-text[data-v-2af45fec]{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.qopt-label[data-v-2af45fec]{color:var(--color-text);font-size:var(--text-base);font-weight:var(--weight-medium)}.qopt-desc[data-v-2af45fec]{color:var(--color-text-muted);font:var(--text-xs)/var(--leading-normal) var(--font-ui);font-weight:var(--weight-medium)}.chk[data-v-2af45fec],.rad[data-v-2af45fec]{font:var(--text-base) var(--font-mono)}.other-input[data-v-2af45fec]{flex:1;font:var(--text-base) var(--font-ui);border:none;border-bottom:1px solid var(--color-line);outline:none;padding:2px var(--space-1);color:var(--color-text);background:transparent;min-width:0}.other-input[data-v-2af45fec]:focus-visible{border-bottom-color:var(--color-accent);box-shadow:0 1px 0 0 var(--color-accent)}.qfoot[data-v-2af45fec]{display:flex;justify-content:flex-end;gap:var(--space-2);width:100%}@media(max-width:640px){.qh[data-v-2af45fec]{flex-wrap:wrap;row-gap:var(--space-1)}.qtext[data-v-2af45fec]{font-size:var(--text-lg)}.qstep-dot[data-v-2af45fec]{width:28px;height:28px;font:var(--text-xs) var(--font-ui)}.qopt[data-v-2af45fec]{min-height:44px;padding:var(--space-3);font-size:var(--text-base);border-radius:var(--radius-md)}.qopt-desc[data-v-2af45fec]{font-size:var(--text-xs)}.other-input[data-v-2af45fec]{flex-basis:100%;min-height:28px}.qfoot[data-v-2af45fec]{flex-direction:column}.qfoot-btn[data-v-2af45fec]{width:100%;min-height:46px}.qfoot-main[data-v-2af45fec]{order:-1}}.appr[data-v-458a9d7d]{margin:var(--space-2) 0}.appr.ui-card[data-v-458a9d7d]{border-color:var(--color-warning-bd)}.appr[data-v-458a9d7d] .ui-card__head{background:var(--color-warning-soft);border-bottom-color:var(--color-warning-bd)}.appr.minimized[data-v-458a9d7d] .ui-card__body{display:none}.appr.minimized[data-v-458a9d7d] .ui-card__head{border-bottom:none}.ah[data-v-458a9d7d]{display:flex;align-items:center;gap:var(--space-2);width:100%;font:var(--text-sm)/var(--leading-normal) var(--font-ui);flex-wrap:nowrap}.ah-ic[data-v-458a9d7d]{width:var(--p-ic-md);height:var(--p-ic-md);display:inline-flex;align-items:center;justify-content:center;color:var(--color-warning);font-weight:var(--weight-semibold);font-size:15px;line-height:1;flex:none}.akind[data-v-458a9d7d]{color:var(--color-warning);font-size:var(--text-base);font-weight:var(--weight-semibold);white-space:nowrap;flex:none}.apath[data-v-458a9d7d]{color:var(--color-text);font:var(--text-sm) var(--font-mono);flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ah-path[data-v-458a9d7d]{margin-bottom:var(--space-2);color:var(--color-text-muted);font:var(--text-xs) var(--font-mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.aw[data-v-458a9d7d],.minimized .amin[data-v-458a9d7d]{margin-left:auto}.diff[data-v-458a9d7d]{border:1px solid var(--color-line);border-radius:var(--radius-md);background:var(--color-surface-sunken);overflow:hidden;font:var(--text-sm)/1.85 var(--font-mono)}.dl[data-v-458a9d7d]{display:flex;padding:0 var(--space-3)}.dg[data-v-458a9d7d]{width:30px;color:var(--color-text-muted);text-align:right;padding-right:var(--space-3);user-select:none}.dc[data-v-458a9d7d]{white-space:pre;font:inherit}.del[data-v-458a9d7d]{background:var(--color-danger-soft)}.del .dc[data-v-458a9d7d]{color:var(--color-danger)}.add[data-v-458a9d7d]{background:var(--color-success-soft)}.add .dc[data-v-458a9d7d]{color:var(--color-success)}.shell-cmd[data-v-458a9d7d]{font:var(--text-sm) var(--font-mono);background:var(--color-surface-sunken);border:1px solid var(--color-line);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);white-space:pre-wrap;word-break:break-all;max-height:160px;overflow-y:auto;color:var(--color-text)}.shell-dollar[data-v-458a9d7d]{color:var(--color-accent-hover);font-weight:var(--weight-medium);margin-right:var(--space-2)}.shell-cwd[data-v-458a9d7d]{font:var(--text-xs) var(--font-mono);color:var(--color-text-muted);margin-top:var(--space-1)}.shell-danger[data-v-458a9d7d]{margin-top:var(--space-2);padding:var(--space-1) var(--space-3);border:1px solid var(--color-danger-bd);border-radius:var(--radius-sm);color:var(--color-danger);font:var(--text-sm) var(--font-ui);background:var(--color-danger-soft)}.body-file[data-v-458a9d7d]{border:1px solid var(--color-line);border-radius:var(--radius-md);overflow:hidden}.file-bar[data-v-458a9d7d]{padding:var(--space-1) var(--space-3);background:var(--color-surface);border-bottom:1px solid var(--color-line);font:var(--text-xs) var(--font-mono);color:var(--color-text-muted)}.file-lang[data-v-458a9d7d]{letter-spacing:.04em}.file-content[data-v-458a9d7d]{padding:var(--space-2) 0;font:var(--text-sm)/1.7 var(--font-mono);background:var(--color-surface-sunken);max-height:240px;overflow-y:auto}.file-line[data-v-458a9d7d]{display:flex;padding:0 var(--space-3)}.file-ln[data-v-458a9d7d]{width:30px;color:var(--color-text-muted);text-align:right;padding-right:var(--space-3);user-select:none;flex:none}.file-text[data-v-458a9d7d]{white-space:pre;font:inherit}.body-chip[data-v-458a9d7d]{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;font:var(--text-base)/var(--leading-normal) var(--font-ui);color:var(--color-text)}.chip-label[data-v-458a9d7d]{background:var(--color-surface-sunken);border:1px solid var(--color-line);border-radius:var(--radius-sm);padding:2px var(--space-2);font:var(--weight-semibold) var(--text-xs) var(--font-mono);color:var(--color-text-muted);white-space:nowrap}.chip-value[data-v-458a9d7d]{font:var(--text-sm) var(--font-mono);color:var(--color-text);word-break:break-all}.chip-detail[data-v-458a9d7d]{font:var(--text-xs) var(--font-ui);color:var(--color-text-muted)}.todo-item[data-v-458a9d7d]{display:flex;align-items:flex-start;gap:var(--space-2);padding:var(--space-1) 0;font:var(--text-base)/var(--leading-normal) var(--font-ui);color:var(--color-text)}.todo-glyph[data-v-458a9d7d]{color:var(--color-accent);font-size:var(--text-sm);flex:none;width:14px}.todo-title[data-v-458a9d7d]{color:var(--color-text)}.todo-done[data-v-458a9d7d]{color:var(--color-text-muted);text-decoration:line-through}.body-generic[data-v-458a9d7d]{font:var(--text-base)/var(--leading-normal) var(--font-ui);color:var(--color-text);word-break:break-word}.body-plan[data-v-458a9d7d]{max-height:50vh;overflow-y:auto}.feedback-wrap[data-v-458a9d7d]{margin-top:var(--space-3)}.feedback-ta[data-v-458a9d7d]{width:100%;box-sizing:border-box;font:var(--text-sm) var(--font-ui);padding:var(--space-2) var(--space-2);border:1px solid var(--color-line);border-radius:var(--radius-sm);resize:none;outline:none;color:var(--color-text);background:var(--color-surface-raised)}.feedback-ta[data-v-458a9d7d]:focus-visible{border-color:var(--color-accent);box-shadow:var(--p-focus-ring)}.feedback-hint[data-v-458a9d7d]{font:var(--text-xs) var(--font-ui);color:var(--color-text-muted);margin-top:var(--space-1)}.abtn[data-v-458a9d7d],.plan-actions[data-v-458a9d7d]{display:flex;justify-content:flex-end;gap:var(--space-2);width:100%}.plan-actions[data-v-458a9d7d]{flex-wrap:wrap}.k[data-v-458a9d7d]{opacity:.75}@media(max-width:640px){.diff[data-v-458a9d7d],.file-content[data-v-458a9d7d]{overflow-x:auto;-webkit-overflow-scrolling:touch}.file-content[data-v-458a9d7d]{max-height:50vh}.abtn[data-v-458a9d7d],.plan-actions[data-v-458a9d7d]{flex-direction:column}.kbtn[data-v-458a9d7d]{width:100%;min-height:46px}}.ui-seg[data-v-d1aaccd7]{display:inline-flex;gap:2px;padding:2px;background:var(--color-surface-sunken);border:1px solid var(--color-line);border-radius:var(--radius-md)}.ui-seg__item[data-v-d1aaccd7]{border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-muted);font-family:var(--font-ui);font-weight:var(--weight-medium);cursor:pointer;line-height:1;transition:background var(--duration-base) var(--ease-out),color var(--duration-base) var(--ease-out),box-shadow var(--duration-base) var(--ease-out)}.ui-seg--md .ui-seg__item[data-v-d1aaccd7]{padding:5px var(--space-3);font-size:var(--text-sm)}.ui-seg--sm .ui-seg__item[data-v-d1aaccd7]{height:24px;padding:0 var(--space-2);font-size:var(--text-sm)}.ui-seg__item[data-v-d1aaccd7]:hover:not(.is-on){color:var(--color-text)}.ui-seg__item.is-on[data-v-d1aaccd7]{background:var(--color-surface-raised);color:var(--color-text);box-shadow:var(--shadow-xs)}.ui-seg__item[data-v-d1aaccd7]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.status-glyph[data-v-f595d935]{flex:none;width:16px;font-size:var(--text-base);line-height:1;text-align:center;user-select:none}.status-glyph.s-run[data-v-f595d935]{color:var(--color-accent);font-weight:500}.status-glyph.s-done[data-v-f595d935]{color:var(--color-success)}.status-glyph.s-fail[data-v-f595d935]{color:var(--color-danger)}.status-glyph.s-pending[data-v-f595d935]{color:var(--color-text-faint)}.taskspane[data-v-30ebee08]{padding:14px 18px 10px;flex:1;min-height:0;display:flex;flex-direction:column}.tp-head[data-v-30ebee08]{border-top:1px solid var(--line);padding-top:10px;margin-bottom:8px;display:flex;align-items:baseline;gap:8px}.tp-title[data-v-30ebee08]{color:var(--color-accent-hover);font-weight:500;font-size:var(--text-base);text-transform:capitalize}.tp-count[data-v-30ebee08]{color:var(--muted);font-size:var(--text-base)}.tp-filter[data-v-30ebee08]{padding-bottom:8px}.tp-body[data-v-30ebee08]{flex:1;min-height:0;display:flex;gap:10px}.tp-list-col[data-v-30ebee08]{flex:1;min-width:0;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:2px}.tp-row[data-v-30ebee08]{padding:4px 0}.tp-row.done .tp-name[data-v-30ebee08],.tp-card.done .tp-card-name[data-v-30ebee08]{color:var(--muted);text-decoration:line-through}.tp-row.fail .tp-name[data-v-30ebee08],.tp-card.fail .tp-card-name[data-v-30ebee08]{color:var(--color-danger)}.tp-main[data-v-30ebee08]{display:flex;align-items:center;gap:7px;font-size:var(--text-base)}.tp-row.expandable>.tp-main[data-v-30ebee08]{cursor:pointer;border-radius:4px}.tp-row.expandable>.tp-main[data-v-30ebee08]:hover{background:var(--panel2)}.tp-row.selected>.tp-main[data-v-30ebee08]{background:var(--panel2)}.tp-chevron[data-v-30ebee08]{flex:none;color:var(--muted);transition:transform .12s}.tp-chevron.open[data-v-30ebee08]{transform:rotate(90deg)}.tp-name[data-v-30ebee08]{color:var(--color-text);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tp-time[data-v-30ebee08]{flex:none;font-size:var(--text-base);color:var(--muted)}.tp-stop[data-v-30ebee08]{flex:none;background:none;border:1px solid color-mix(in srgb,var(--color-danger) 22%,var(--bg));border-radius:var(--radius-xs);color:var(--color-danger);font-size:max(9px,calc(var(--ui-font-size) - 3.5px));padding:1px 8px;cursor:pointer;font-family:var(--mono)}.tp-stop[data-v-30ebee08]:hover{background:var(--panel)}.tp-detail[data-v-30ebee08]{margin:4px 0 0 23px;display:flex;flex-direction:column;gap:4px}.tp-detail-col[data-v-30ebee08]{flex:0 0 44%;min-width:0;min-height:0;overflow-y:auto;border-left:1px solid var(--line);padding-left:10px;display:flex;flex-direction:column;gap:6px}.tp-detail-head[data-v-30ebee08]{flex:none;padding-bottom:2px}.tp-detail-empty[data-v-30ebee08]{padding:18px 6px;text-align:center;color:var(--faint);font-size:var(--ui-font-size-sm)}.tp-codebox[data-v-30ebee08]{position:relative;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-xs)}.tp-copy[data-v-30ebee08]{position:absolute;top:4px;right:6px;z-index:1;opacity:0;visibility:hidden;transition:opacity .12s ease,visibility .12s ease;background:var(--panel2);border:1px solid var(--line);border-radius:var(--radius-xs);color:var(--dim);font-size:max(9px,calc(var(--ui-font-size) - 3.5px));padding:1px 7px;cursor:pointer;font-family:var(--sans)}.tp-codebox:hover .tp-copy[data-v-30ebee08],.tp-copy[data-v-30ebee08]:focus-visible{opacity:1;visibility:visible}.tp-copy[data-v-30ebee08]:hover{background:var(--panel)}.tp-copy.copied[data-v-30ebee08]{color:var(--color-success);border-color:color-mix(in srgb,var(--color-success) 30%,var(--line))}.tp-pre[data-v-30ebee08]{margin:0;padding:6px 10px;max-height:320px;overflow:auto;contain:layout paint}.tp-pre code[data-v-30ebee08]{display:block;font-family:var(--mono);font-size:var(--text-base);line-height:1.55;color:var(--dim);white-space:pre-wrap;word-break:break-word}.tp-cmd[data-v-30ebee08]{display:block;color:var(--muted)}.tp-line[data-v-30ebee08]{display:block}.tp-grid[data-v-30ebee08]{flex:1;min-height:0;overflow-y:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;align-content:start}.tp-card[data-v-30ebee08]{display:flex;flex-direction:column;gap:6px;padding:8px 10px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--color-text);font-family:var(--sans);font-size:var(--text-base);text-align:left;cursor:pointer;transition:border-color .12s ease,background .12s ease}.tp-card[data-v-30ebee08]:hover{background:var(--panel2);border-color:color-mix(in srgb,var(--color-accent-hover) 40%,var(--line))}.tp-card[data-v-30ebee08]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.tp-card-line[data-v-30ebee08]{display:flex;align-items:center;gap:7px;min-width:0}.tp-card-name[data-v-30ebee08]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tp-card-meta[data-v-30ebee08]{justify-content:space-between}.tp-empty[data-v-30ebee08]{padding:24px 0;text-align:center;color:var(--faint);font-size:var(--ui-font-size-sm)}@media(max-width:640px){.taskspane[data-v-30ebee08]{padding:14px 14px 16px}.tp-body[data-v-30ebee08]{flex-direction:column;overflow-y:auto;gap:8px}.tp-list-col[data-v-30ebee08]{flex:none;overflow:visible}.tp-detail-col[data-v-30ebee08]{flex:none;border-left:none;border-top:1px solid var(--line);padding-left:0;padding-top:8px;overflow:visible}.tp-main[data-v-30ebee08]{flex-wrap:wrap;row-gap:4px}.tp-name[data-v-30ebee08]{font-size:var(--ui-font-size-sm)}.tp-stop[data-v-30ebee08]{min-height:32px;display:inline-flex;align-items:center;padding:4px 12px;border-radius:6px;font-size:var(--ui-font-size-xs)}.tp-detail[data-v-30ebee08]{margin-left:0}.tp-pre[data-v-30ebee08]{font-size:var(--ui-font-size-xs)}}.tp-stop[data-v-30ebee08]{border-radius:var(--radius-md);font-family:var(--sans)}.todo-card[data-v-4f8e45d2]{display:flex;flex-direction:column;gap:var(--space-1);font-size:var(--text-base)}.tc-progress[data-v-4f8e45d2]{display:flex;align-items:center;gap:var(--space-1);padding:0 var(--space-1) var(--space-1);color:var(--color-text-muted);font-size:var(--text-sm);font-weight:var(--weight-medium)}.tc-progress-ico[data-v-4f8e45d2]{color:var(--color-success)}.tc-row[data-v-4f8e45d2]{display:flex;align-items:center;gap:7px;padding:var(--space-2) var(--space-3);background:var(--color-surface-sunken);border:1px solid var(--color-line);border-radius:var(--radius-sm);color:var(--color-text)}.tc-name[data-v-4f8e45d2]{flex:1;min-width:0;overflow-wrap:anywhere;line-height:1.4}.tc-row.s-in_progress[data-v-4f8e45d2]{border-color:var(--color-accent-bd)}.tc-row.s-in_progress .tc-name[data-v-4f8e45d2]{font-weight:var(--weight-medium)}.tc-row.s-done .tc-name[data-v-4f8e45d2]{color:var(--color-text-faint);text-decoration:line-through}.tc-empty[data-v-4f8e45d2]{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);padding:var(--space-6) var(--space-4);color:var(--color-text-faint);font-size:var(--text-sm)}.tc-empty-ico[data-v-4f8e45d2]{width:28px;height:28px;color:var(--color-line-strong)}@media(max-width:640px){.todo-card[data-v-4f8e45d2]{font-size:var(--text-lg)}}.terminal-panel[data-v-4d134005]{display:flex;flex-direction:column;height:300px;min-height:0}.term-state[data-v-4d134005]{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-3);color:var(--color-text-muted);font-size:var(--text-sm);text-align:center}.term-toolbar[data-v-4d134005]{flex:none;display:flex;align-items:center;gap:var(--space-2);padding-bottom:var(--space-2);border-bottom:1px solid var(--color-line)}.term-tabs[data-v-4d134005]{flex:1;min-width:0;display:flex;align-items:center;gap:var(--space-1);overflow-x:auto}.term-tab[data-v-4d134005]{flex:none;display:inline-flex;align-items:center;gap:var(--space-2);height:28px;padding:0 4px 0 var(--space-2);border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-muted);font-family:var(--font-ui);font-size:var(--text-xs);cursor:pointer}.term-tab[data-v-4d134005]:hover{background:var(--color-surface-sunken);color:var(--color-text)}.term-tab.active[data-v-4d134005]{background:var(--color-accent-soft);color:var(--color-text)}.term-tab-label[data-v-4d134005]{font-weight:500}.term-add[data-v-4d134005]{flex:none}.term-add[data-v-4d134005] svg{width:var(--p-ic-sm);height:var(--p-ic-sm)}.term-error[data-v-4d134005]{flex:none;padding:var(--space-2);color:var(--color-danger);font-size:var(--text-xs);border-bottom:1px solid var(--color-line)}.term-exit[data-v-4d134005]{flex:none;padding:var(--space-2);color:var(--color-warning);font-family:var(--font-mono);font-size:var(--text-xs);border-bottom:1px solid var(--color-line)}.term-output[data-v-4d134005]{flex:1;min-height:0;margin:var(--space-2) 0;padding:var(--space-2);overflow-y:auto;background:var(--color-bg);border:1px solid var(--color-line);border-radius:var(--radius-md);color:var(--color-text);font-family:var(--font-mono);font-size:var(--text-xs);line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere}.term-input-row[data-v-4d134005]{flex:none;display:flex;align-items:center;gap:var(--space-2)}.term-prompt[data-v-4d134005]{flex:none;color:var(--color-accent);font-family:var(--font-mono);font-size:var(--text-xs)}.term-input[data-v-4d134005]{flex:1;min-width:0;background:transparent;border:none;outline:none;padding:var(--space-1) 0;color:var(--color-text);font-family:var(--font-mono);font-size:var(--text-xs)}.term-input[data-v-4d134005]::placeholder{color:var(--color-text-faint)}.term-input[data-v-4d134005]:disabled{opacity:.5}.ui-empty[data-v-38e00944]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-8) var(--space-4);text-align:center;color:var(--color-text-muted)}.ui-empty__icon[data-v-38e00944]{color:var(--color-text-faint)}.ui-empty__icon[data-v-38e00944] svg{width:48px;height:48px}.ui-empty__title[data-v-38e00944]{font-size:var(--text-base);font-weight:var(--weight-medium);color:var(--color-text-muted)}.ui-empty__hint[data-v-38e00944]{font-size:var(--text-sm);color:var(--color-text-muted)}.goal-panel[data-v-d3a415b3]{min-width:260px;max-width:420px}.gp-head[data-v-d3a415b3]{display:flex;flex-direction:column;gap:var(--space-2)}.gp-title-row[data-v-d3a415b3]{display:flex;align-items:center;gap:var(--space-2);min-width:0}.gp-icon[data-v-d3a415b3]{flex:none;color:var(--color-success)}.gp-kicker[data-v-d3a415b3]{flex:none;color:var(--color-success);font:var(--text-base)/var(--leading-normal) var(--font-ui);font-weight:var(--weight-semibold)}.gp-objective[data-v-d3a415b3]{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--color-text);font:var(--text-base)/var(--leading-normal) var(--font-ui);font-weight:var(--weight-medium)}.gp-status[data-v-d3a415b3]{flex:none}.gp-elapsed[data-v-d3a415b3]{flex:none;display:inline-flex;align-items:center;gap:var(--space-1);color:var(--color-text-muted);font:var(--text-xs)/var(--leading-normal) var(--font-ui);font-weight:var(--weight-medium);font-variant-numeric:tabular-nums}.gp-actions[data-v-d3a415b3]{flex:none;display:flex;align-items:center;gap:var(--space-1);margin-left:var(--space-1)}.gp-action[data-v-d3a415b3]{width:28px;height:28px}.gp-criterion[data-v-d3a415b3]{display:flex;flex-direction:column;gap:var(--space-1);border-top:1px solid var(--color-line);padding-top:var(--space-2)}.gp-criterion-label[data-v-d3a415b3]{color:var(--color-text-muted);font:var(--text-xs) var(--font-mono);text-transform:uppercase}.gp-criterion-text[data-v-d3a415b3]{margin:0;color:var(--color-text-muted);font:var(--text-sm)/var(--leading-normal) var(--font-ui)}.plan-panel[data-v-9073f2b6]{min-width:300px;max-width:460px;display:flex;flex-direction:column;gap:var(--space-2)}.pp-loading[data-v-9073f2b6]{display:flex;align-items:center;gap:var(--space-2);color:var(--color-text-muted);font:var(--text-sm) var(--font-ui)}.pp-plan-wrap[data-v-9073f2b6]{display:flex;flex-direction:column;gap:var(--space-2);min-height:0}.pp-path[data-v-9073f2b6]{margin:0;color:var(--color-text-muted);font:var(--text-xs) var(--font-mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pp-plan[data-v-9073f2b6]{margin:0;max-height:300px;overflow-y:auto;padding:var(--space-2) var(--space-3);border:1px solid var(--color-line);border-radius:var(--radius-md);background:var(--color-surface-sunken);color:var(--color-text);font:var(--text-sm)/var(--leading-normal) var(--font-mono);white-space:pre-wrap;overflow-wrap:anywhere}.pp-review[data-v-9073f2b6]{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;color:var(--color-text-muted);font:var(--text-xs) var(--font-ui)}.pp-state[data-v-9073f2b6]{font-weight:var(--weight-medium)}.pp-option[data-v-9073f2b6]{color:var(--color-accent)}.pp-feedback[data-v-9073f2b6]{color:var(--color-text-muted)}.chat-dock[data-v-c24c01d4]{--dock-inline-left: 16px;--dock-inline-right: 16px;box-sizing:border-box;width:100%;max-width:calc(var(--read-max) + var(--panes-scrollbar-width, 0px));padding-right:var(--panes-scrollbar-width, 0px);flex:none;position:relative;background:var(--color-bg);z-index:var(--z-sticky)}.chat-dock.align-center[data-v-c24c01d4]{margin-left:auto;margin-right:auto}.chat-dock.align-left[data-v-c24c01d4]{margin-left:0;margin-right:auto}.chat-dock.align-mobile[data-v-c24c01d4]{max-width:none}.dock-work-panel[data-v-c24c01d4]{position:absolute;left:16px;right:calc(16px + var(--panes-scrollbar-width, 0px));bottom:100%;background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-md);margin-bottom:7px;max-height:min(360px,50vh);display:flex;flex-direction:column;overflow:hidden}.dock-work-head[data-v-c24c01d4]{display:flex;align-items:center;gap:8px;padding:8px 10px;border-bottom:1px solid var(--color-line)}.dock-work-tab[data-v-c24c01d4]{font-size:var(--text-base);font-weight:500;color:var(--color-text);padding:3px 8px;border-radius:var(--radius-sm);background:var(--color-surface-sunken);border:1px solid var(--color-line)}.dock-work-tab.static[data-v-c24c01d4]{background:transparent;border-color:transparent;padding-left:2px}.dock-work-body[data-v-c24c01d4]{display:flex;flex-direction:column;padding:8px 10px;overflow-y:auto;min-height:0}.dock-work-body[data-v-c24c01d4] .taskspane{border:none;background:transparent;padding:0}.dock-work-body[data-v-c24c01d4] .taskspane .tp-head{display:none}.dock-workbar[data-v-c24c01d4]{display:flex;align-items:center;flex-wrap:wrap;row-gap:4px;gap:6px;padding:4px var(--dock-inline-right) 2px var(--dock-inline-left)}.dock-workbar .dw-count[data-v-c24c01d4]{margin-left:1px}.dock-workbar .dw-count b[data-v-c24c01d4]{font-weight:500}.dock-approval[data-v-c24c01d4]{margin-top:8px}.chat-dock.has-approval[data-v-c24c01d4]{max-height:calc(100dvh - 72px)}.chat-dock.has-approval>.dock-workbar[data-v-c24c01d4]{flex:none}.chat-dock.has-approval>.dock-approval[data-v-c24c01d4]{min-height:0}@media(max-width:640px){.chat-dock[data-v-c24c01d4]{--dock-inline-left: max(12px, var(--safe-left));--dock-inline-right: max(12px, var(--safe-right))}.dock-work-panel[data-v-c24c01d4]{left:10px;right:calc(10px + var(--panes-scrollbar-width, 0px))}}.chat-dock[data-v-c24c01d4]:not(.align-mobile) .composer{padding-bottom:14px}.dock-panel-enter-active[data-v-c24c01d4],.dock-panel-leave-active[data-v-c24c01d4]{transition:opacity .16s ease,transform .16s ease}.dock-panel-enter-from[data-v-c24c01d4],.dock-panel-leave-to[data-v-c24c01d4]{opacity:0;transform:translateY(8px)}.ui-input[data-v-340f0da2]{width:100%;border:1px solid var(--color-line-strong);border-radius:var(--radius-md);background:var(--color-surface-raised);box-shadow:var(--shadow-xs);color:var(--color-text);font-family:var(--font-ui);font-size:var(--text-base);line-height:var(--leading-normal);padding:0 var(--space-3);transition:border-color var(--duration-base) var(--ease-out),box-shadow var(--duration-base) var(--ease-out)}.ui-input--md[data-v-340f0da2]{height:38px}.ui-input--sm[data-v-340f0da2]{height:32px;font-size:var(--text-sm);border-radius:var(--radius-sm)}.ui-input[data-v-340f0da2]::placeholder{color:var(--color-text-faint)}.ui-input[data-v-340f0da2]:hover:not(:disabled):not(:focus){border-color:var(--color-line-strong)}.ui-input[data-v-340f0da2]:focus{outline:none;border-color:var(--color-accent);box-shadow:var(--p-focus-ring)}.ui-input[data-v-340f0da2]:disabled{opacity:.5;cursor:not-allowed}.ui-input[readonly][data-v-340f0da2]{background:var(--color-surface-sunken)}.ui-input.has-error[data-v-340f0da2]{border-color:var(--color-danger)}.ui-input.has-error[data-v-340f0da2]:focus{box-shadow:0 0 0 3px var(--color-danger-soft)}.conv-search[data-v-c521ac2e]{flex:none;display:flex;align-items:center;gap:6px;padding:6px 16px;border-bottom:1px solid var(--color-line);background:var(--color-bg);font-family:var(--font-ui)}.conv-search-icon[data-v-c521ac2e]{flex:none;color:var(--color-text-muted)}.conv-search-input[data-v-c521ac2e]{flex:1;min-width:0}.conv-search-count[data-v-c521ac2e]{flex:none;min-width:56px;text-align:center;font-size:var(--text-xs);font-family:var(--font-mono);color:var(--color-text-muted);white-space:nowrap}.conv-search-none[data-v-c521ac2e]{color:var(--color-text-faint)}.conversation-toc[data-v-3f1c1f66]{position:absolute;z-index:var(--z-sticky);top:50%;transform:translateY(-50%);--toc-content-max: min( var(--p-content-max), calc(100cqi - var(--space-5) - var(--space-5)) );left:calc(50% + (var(--toc-content-max) / 2) + 14px);display:flex;flex-direction:column;justify-content:center;opacity:.5;transition:opacity var(--duration-base) var(--ease-out)}.conversation-toc[data-v-3f1c1f66]:before{content:"";position:absolute;inset:0 -48px 0 -14px;z-index:0}.conversation-toc[data-v-3f1c1f66]:hover,.conversation-toc[data-v-3f1c1f66]:focus-within{opacity:1}.toc-scroll[data-v-3f1c1f66]{position:relative;z-index:1;display:flex;flex-direction:column;gap:7px;padding:8px 0;max-height:calc(100vh - 200px);overflow-y:auto;scrollbar-width:none}.toc-scroll[data-v-3f1c1f66]::-webkit-scrollbar{display:none}.toc-row[data-v-3f1c1f66]{display:flex;align-items:center;gap:10px;height:18px;padding:0;border:none;background:transparent;color:var(--color-text-muted);font-family:var(--font-ui);font-size:var(--text-sm);text-align:left;cursor:pointer;white-space:nowrap}.toc-row[data-v-3f1c1f66]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.toc-bar[data-v-3f1c1f66]{flex:none;width:3px;height:14px;border-radius:var(--radius-full);background:var(--color-accent);opacity:.3;transition:opacity var(--duration-fast) var(--ease-out),height var(--duration-fast) var(--ease-out)}.toc-label[data-v-3f1c1f66]{display:block;max-width:0;overflow:hidden;opacity:0;text-overflow:ellipsis;transition:max-width .22s var(--ease-out),opacity var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out)}.conversation-toc:hover .toc-bar[data-v-3f1c1f66],.conversation-toc:focus-within .toc-bar[data-v-3f1c1f66]{height:18px;opacity:.5}.conversation-toc:hover .toc-label[data-v-3f1c1f66],.conversation-toc:focus-within .toc-label[data-v-3f1c1f66]{max-width:220px;opacity:1}.toc-row.active .toc-bar[data-v-3f1c1f66]{opacity:1;height:18px}.toc-row.active .toc-label[data-v-3f1c1f66]{color:var(--color-accent);font-weight:var(--weight-medium)}.toc-row:hover .toc-bar[data-v-3f1c1f66]{opacity:1}.toc-row:hover .toc-label[data-v-3f1c1f66]{color:var(--color-text)}.conversation-toc.toc-clipped[data-v-3f1c1f66]{visibility:hidden;pointer-events:none}.con[data-v-fad3cc77]{--read-max: 760px;display:flex;flex-direction:column;min-width:0;height:100%;position:relative;container-type:inline-size}.panes[data-v-fad3cc77]{flex:1;min-height:0;overflow-y:auto;overflow-anchor:auto;scrollbar-gutter:stable}.panes.is-following[data-v-fad3cc77],.panes.history-prepending[data-v-fad3cc77]{overflow-anchor:none}.chat-layout[data-v-fad3cc77]{display:flex;flex-direction:column;height:100%;min-height:0;position:relative}.chat-scroll[data-v-fad3cc77]{flex:1;min-height:0;position:relative}.content-wrap[data-v-fad3cc77]{width:100%;max-width:var(--read-max);min-height:100%;display:flex;flex-direction:column;flex-shrink:0}.content-wrap.align-center[data-v-fad3cc77]{margin-left:auto;margin-right:auto}.content-wrap.align-left[data-v-fad3cc77]{margin-left:0;margin-right:auto}.content-wrap.align-mobile[data-v-fad3cc77]{max-width:none}@media(max-width:640px){.con.mobile[data-v-fad3cc77]{min-width:0;overflow:hidden}.con.mobile .panes[data-v-fad3cc77]{scrollbar-gutter:auto;-webkit-overflow-scrolling:touch}.content-wrap.align-mobile[data-v-fad3cc77]{width:100%;min-width:0}}.empty-spacer[data-v-fad3cc77]{flex:1}.empty-hint[data-v-fad3cc77]{flex:none;display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;padding:0 16px 16px;color:var(--color-text);font-family:var(--font-ui)}.empty-hint-title[data-v-fad3cc77]{font-size:calc(var(--ui-font-size) + 16px);font-optical-sizing:auto;font-weight:var(--weight-semibold)}.empty-hint-title.is-starting[data-v-fad3cc77]{display:inline-flex;align-items:center;gap:9px;color:var(--dim);font-weight:400}.empty-hint-text[data-v-fad3cc77]{display:inline-block;font-size:var(--text-base);color:var(--dim);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.empty-add-workspace[data-v-fad3cc77]{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:34px;padding:7px 12px;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--dim);font-family:var(--mono);font-size:var(--ui-font-size-sm);cursor:pointer}.empty-add-workspace[data-v-fad3cc77]:hover{border-color:var(--color-accent-bd);color:var(--color-text)}.empty-add-workspace[data-v-fad3cc77]:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.empty-add-workspace svg[data-v-fad3cc77]{flex:none}.ws-pick[data-v-fad3cc77]{position:relative;font-family:var(--font-ui)}.ws-pick-btn[data-v-fad3cc77]{display:inline-flex;align-items:center;gap:7px;width:max-content;max-width:min(100%,calc(100vw - var(--space-8)));padding:5px 10px;background:var(--panel);border:1px solid var(--line);border-radius:8px;color:var(--dim);font-family:inherit;font-size:var(--ui-font-size-sm);cursor:pointer}.ws-pick-btn[data-v-fad3cc77]:hover{border-color:var(--color-accent-bd);color:var(--color-text)}.ws-pick-name[data-v-fad3cc77]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ws-pick-chev[data-v-fad3cc77]{flex:none;color:var(--muted);transition:transform .15s}.ws-pick-chev.open[data-v-fad3cc77]{transform:rotate(180deg)}.ws-pick-backdrop[data-v-fad3cc77]{position:fixed;inset:0;z-index:var(--z-sticky)}.ws-pick-menu[data-v-fad3cc77]{position:absolute;display:grid;grid-template-columns:minmax(0,1fr);left:50%;transform:translate(-50%);top:calc(100% + 6px);z-index:var(--z-dropdown);width:max-content;min-width:min(180px,calc(100cqw - var(--space-8)));max-width:calc(100cqw - var(--space-8));max-height:50vh;overflow:hidden auto;background:var(--color-surface-raised);border:1px solid var(--color-line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:4px}.ws-pick-item[data-v-fad3cc77]{display:flex;flex-direction:column;align-items:flex-start;gap:1px;width:100%;text-align:left;background:none;border:none;border-radius:6px;padding:6px 10px;cursor:pointer;font-family:var(--font-ui)}.ws-pick-item[data-v-fad3cc77]:hover{background:var(--panel2)}.ws-pick-item.on[data-v-fad3cc77]{background:var(--color-accent-soft)}.ws-pick-item-name[data-v-fad3cc77]{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-base);font-weight:var(--weight-medium);color:var(--color-text)}.ws-pick-item.on .ws-pick-item-name[data-v-fad3cc77]{color:var(--color-accent-hover)}.ws-pick-item-path[data-v-fad3cc77]{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--muted)}.ws-pick-item.ws-pick-more[data-v-fad3cc77]{flex-direction:row;align-items:center;justify-content:flex-start;font-size:var(--text-base);font-weight:var(--weight-medium);color:var(--dim)}.ws-pick-item.ws-pick-more[data-v-fad3cc77]:hover{color:var(--color-text)}.ws-pick-item.ws-pick-more span[data-v-fad3cc77],.ws-pick-action span[data-v-fad3cc77]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ws-pick-divider[data-v-fad3cc77]{height:1px;margin:4px 6px;background:var(--line)}.ws-pick-action[data-v-fad3cc77]{display:flex;align-items:center;gap:7px;width:100%;text-align:left;background:none;border:none;border-radius:6px;padding:7px 10px;cursor:pointer;font-family:var(--font-ui);font-size:var(--text-base);font-weight:var(--weight-medium);color:var(--dim)}.ws-pick-action[data-v-fad3cc77]:hover{background:var(--panel2);color:var(--color-text)}.ws-pick-action svg[data-v-fad3cc77]{flex:none}.chat-scroll[data-v-fad3cc77]{display:flex;flex-direction:column}.mobile .panes[data-v-fad3cc77]:has(>.chat-layout){overflow:hidden;scrollbar-gutter:auto}.newmsg-pill[data-v-fad3cc77]{position:absolute;left:50%;bottom:12px;transform:translate(-50%);display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;border:1px solid var(--line);background:var(--panel);color:var(--color-text);font-size:var(--ui-font-size-sm);cursor:pointer;box-shadow:var(--shadow-sm);z-index:var(--z-base)}.newmsg-pill[data-v-fad3cc77]:hover{background:var(--panel2)}.pill-chevron[data-v-fad3cc77]{width:12px;height:12px}.pill-enter-active[data-v-fad3cc77],.pill-leave-active[data-v-fad3cc77]{transition:opacity .2s ease,transform .2s ease}.pill-enter-from[data-v-fad3cc77],.pill-leave-to[data-v-fad3cc77]{opacity:0;transform:translate(-50%) translateY(8px)}.abort-toast[data-v-fad3cc77]{position:absolute;left:50%;top:60px;transform:translate(-50%);padding:8px 14px;border-radius:var(--radius-sm);background:var(--color-text);color:var(--bg);font-size:var(--ui-font-size-sm);z-index:var(--z-sticky);box-shadow:var(--shadow-sm)}.abort-toast-text[data-v-fad3cc77]{display:flex;align-items:center;gap:8px}.abort-toast-enter-active[data-v-fad3cc77],.abort-toast-leave-active[data-v-fad3cc77]{transition:opacity .15s ease,transform .15s ease}.abort-toast-enter-from[data-v-fad3cc77],.abort-toast-leave-to[data-v-fad3cc77]{opacity:0;transform:translate(-50%) translateY(-6px)}.con[data-v-fad3cc77]{background:var(--bg)}.newmsg-pill[data-v-fad3cc77]{font-family:var(--sans)}.ui-panel-header[data-v-c47879ad]{flex:none;display:flex;align-items:center;gap:var(--space-2);height:var(--panel-head-h, 48px);padding:0 6px 0 var(--space-3);box-sizing:border-box;min-width:0;border-bottom:1px solid var(--color-line);background:var(--color-surface)}.ui-panel-header__title[data-v-c47879ad]{flex:none;font:var(--weight-semibold) var(--text-xs) var(--font-mono);letter-spacing:.04em;color:var(--color-text)}.ui-panel-header__sub[data-v-c47879ad]{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:var(--text-xs) var(--font-mono);color:var(--color-text-muted)}.ui-panel-header__close[data-v-c47879ad]{flex:none;margin-left:auto}.ui-panel-header.wrap[data-v-c47879ad]{flex-wrap:wrap;height:auto;min-height:var(--panel-head-h, 48px);padding-top:3px;padding-bottom:3px;gap:4px 6px}.ui-panel-header.wrap .ui-panel-header__close[data-v-c47879ad]{margin-left:0}.file-preview[data-v-ded222d2]{display:flex;flex-direction:column;height:100%;background:var(--bg);font-family:var(--mono);min-width:0;container-type:inline-size}.fp-empty[data-v-ded222d2],.fp-loading[data-v-ded222d2]{flex:1;display:flex;align-items:center;justify-content:center;gap:10px;color:var(--muted);font-size:var(--ui-font-size)}.fp-path[data-v-ded222d2]{flex:1 1 60px;min-width:40px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;direction:rtl;text-align:left;font-size:var(--ui-font-size-xs);color:var(--muted);font-weight:400}.fp-meta[data-v-ded222d2]{display:flex;align-items:center;gap:8px;flex:none}@container (max-width: 539px){.fp-meta[data-v-ded222d2]{display:none}}.fp-lines[data-v-ded222d2],.fp-size[data-v-ded222d2]{font-size:max(9px,calc(var(--ui-font-size) - 3.5px));color:var(--muted);white-space:nowrap}.fp-search[data-v-ded222d2]{display:flex;align-items:center;gap:4px;flex:1 1 110px;min-width:70px;max-width:200px}.fp-search-input[data-v-ded222d2]{flex:1;min-width:0;height:26px;border:1px solid var(--color-line);border-radius:var(--radius-sm);padding:2px 7px;background:var(--color-surface-raised);color:var(--color-text);font:var(--text-xs) var(--font-mono)}.fp-search-count[data-v-ded222d2]{color:var(--muted);font-size:max(9px,calc(var(--ui-font-size) - 3.5px));min-width:18px;text-align:right}.fp-download[data-v-ded222d2]{display:inline-grid;place-items:center;width:26px;height:26px;flex:none;border-radius:var(--radius-sm);color:var(--color-text-muted)}.fp-download[data-v-ded222d2]:hover{background:var(--color-surface-sunken);color:var(--color-text)}.fp-download[data-v-ded222d2]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.fp-download svg[data-v-ded222d2]{width:var(--p-ic-sm);height:var(--p-ic-sm)}.fp-check[data-v-ded222d2]{color:var(--color-success)}.fp-body[data-v-ded222d2]{--fp-search-hit-bg: color-mix(in srgb, var(--star) 22%, var(--bg));--fp-search-active-bg: color-mix(in srgb, var(--star) 36%, var(--bg));--fp-token-keyword: color-mix(in srgb, var(--color-accent) 68%, var(--color-danger));--fp-token-string: var(--color-success);--fp-token-literal: var(--color-accent-hover);--fp-token-tag: var(--color-warning);flex:1;min-height:0;overflow:auto}.fp-markdown[data-v-ded222d2]{padding:16px 20px}.fp-code[data-v-ded222d2]{background:var(--bg)}.fp-line-table[data-v-ded222d2]{display:table;width:100%;border-collapse:collapse;font-size:var(--ui-font-size);line-height:1.6}.fp-line-row[data-v-ded222d2]{display:table-row}.fp-line-row.hit .fp-line-text[data-v-ded222d2],.fp-table tr.hit td[data-v-ded222d2]{background:var(--fp-search-hit-bg)}.fp-line-row.active .fp-line-text[data-v-ded222d2],.fp-table tr.active td[data-v-ded222d2]{background:var(--fp-search-active-bg)}.fp-line-row.target .fp-gutter[data-v-ded222d2],.fp-line-row.target .fp-line-text[data-v-ded222d2],.fp-table tr.target th[data-v-ded222d2],.fp-table tr.target td[data-v-ded222d2]{background:var(--color-accent-soft)}.fp-gutter[data-v-ded222d2]{display:table-cell;width:44px;padding:0 10px 0 12px;text-align:right;color:var(--faint);user-select:none;font-size:var(--text-base);white-space:nowrap;border-right:1px solid var(--line2);vertical-align:top}.fp-line-text[data-v-ded222d2]{display:table-cell;padding:0 12px;color:var(--color-text);white-space:pre;vertical-align:top}.fp-line-text[data-v-ded222d2] .tok-key,.fp-line-text[data-v-ded222d2] .tok-keyword{color:var(--fp-token-keyword);font-weight:500}.fp-line-text[data-v-ded222d2] .tok-string{color:var(--fp-token-string)}.fp-line-text[data-v-ded222d2] .tok-number,.fp-line-text[data-v-ded222d2] .tok-literal{color:var(--fp-token-literal)}.fp-line-text[data-v-ded222d2] .tok-comment{color:var(--muted);font-style:italic}.fp-line-text[data-v-ded222d2] .tok-tag{color:var(--fp-token-tag);font-weight:500}.fp-line-text[data-v-ded222d2] .tok-attr{color:var(--fp-token-literal)}.fp-html-frame[data-v-ded222d2],.fp-pdf-frame[data-v-ded222d2]{width:100%;height:100%;border:0;background:var(--color-surface-raised)}.fp-pdf-wrap[data-v-ded222d2]{background:var(--panel2)}.fp-table-wrap[data-v-ded222d2]{background:var(--bg)}.fp-table[data-v-ded222d2]{border-collapse:collapse;min-width:100%;font:12px/1.5 var(--mono)}.fp-table th[data-v-ded222d2]{position:sticky;left:0;z-index:1;width:44px;min-width:44px;padding:2px 8px;text-align:right;color:var(--faint);background:var(--panel);border-right:1px solid var(--line2);user-select:none}.fp-table td[data-v-ded222d2]{padding:2px 10px;border-right:1px solid var(--line2);border-bottom:1px solid var(--line2);white-space:pre}.fp-image-wrap[data-v-ded222d2]{display:flex;align-items:center;justify-content:center;padding:24px;background:var(--panel2)}.fp-image[data-v-ded222d2]{max-width:100%;max-height:100%;object-fit:contain;border:1px solid var(--line);border-radius:4px;background:var(--media-alpha-canvas)}.fp-image.actual[data-v-ded222d2]{max-width:none;max-height:none}.fp-binary-wrap[data-v-ded222d2]{display:flex;align-items:center;justify-content:center}.fp-binary-card[data-v-ded222d2]{display:flex;align-items:center;gap:12px;padding:20px 24px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--muted);font-size:var(--ui-font-size);margin:32px auto;max-width:480px}.fp-binary-icon[data-v-ded222d2]{color:var(--faint);flex:none}.fp-error[data-v-ded222d2]{flex-direction:column;padding:24px;text-align:center}@keyframes spin-ded222d2{to{transform:rotate(360deg)}}.spinner[data-v-ded222d2]{display:inline-block;width:14px;height:14px;border:1.5px solid var(--line);border-top-color:var(--color-accent);border-radius:50%;animation:spin-ded222d2 .7s linear infinite}@media(max-width:640px){.fp-lines[data-v-ded222d2]{display:none}.fp-markdown[data-v-ded222d2]{padding:14px 16px}.fp-body.fp-code[data-v-ded222d2]{-webkit-overflow-scrolling:touch}}.fp-empty[data-v-ded222d2],.fp-loading[data-v-ded222d2]{font-family:var(--sans)}.fp-binary-card[data-v-ded222d2]{border:1px solid var(--color-line);border-radius:var(--radius-md)}.fp-binary-label[data-v-ded222d2]{font-family:var(--sans)}.fp-image[data-v-ded222d2]{border-radius:var(--radius-md)}.seg-btn[data-v-ded222d2]{font-family:var(--sans)}.tp[data-v-98c343f3]{height:100%;display:flex;flex-direction:column;min-height:0;background:var(--color-bg)}.tp-body[data-v-98c343f3]{flex:1;min-height:0;overflow-y:auto;margin:0;padding:12px 14px;font:var(--text-base)/var(--leading-relaxed) var(--font-ui);font-weight:var(--weight-regular);color:var(--color-text-muted);white-space:pre-wrap;word-break:break-word}.ap[data-v-59df0789]{height:100%;display:flex;flex-direction:column;min-height:0;background:var(--color-bg)}.ap-phase[data-v-59df0789]{flex:none}.ap-body[data-v-59df0789]{flex:1;min-height:0;overflow-y:auto;padding:12px 14px;font:var(--text-base)/var(--leading-normal) var(--font-ui);color:var(--color-text-muted)}.ap-type[data-v-59df0789]{font:var(--text-xs) var(--font-mono);color:var(--color-text-muted);margin-bottom:8px}.ap-reason[data-v-59df0789]{color:var(--color-warning);margin-bottom:8px}.ap-field+.ap-field[data-v-59df0789]{margin-top:12px}.ap-field-label[data-v-59df0789]{display:block;color:var(--color-text-muted);font:var(--text-xs) var(--font-mono);text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px}.ap-field-body[data-v-59df0789]{white-space:pre-wrap;overflow-wrap:anywhere}.ap-progress[data-v-59df0789]{display:flex;flex-direction:column;gap:6px;font:var(--text-base)/var(--leading-relaxed) var(--font-mono);color:var(--color-text);min-width:0}.ap-live[data-v-59df0789]{font:var(--text-base)/var(--leading-relaxed) var(--font-mono);color:var(--color-text);white-space:pre-wrap;overflow-wrap:anywhere}.ap-group[data-v-59df0789]{min-width:0}.ap-call[data-v-59df0789]{display:flex;align-items:baseline;gap:6px;min-width:0;font-weight:var(--weight-medium);color:var(--color-text);overflow-wrap:anywhere;white-space:pre-wrap}.ap-glyph[data-v-59df0789]{flex:none;color:var(--color-accent);font-size:.85em}.ap-output[data-v-59df0789]{margin:2px 0 0 16px;padding-left:8px;color:var(--color-text-muted);font-size:var(--text-sm);line-height:var(--leading-normal);border-left:2px solid var(--color-line);min-width:0}.ap-out-line[data-v-59df0789]{min-width:0;overflow-wrap:anywhere;white-space:pre-wrap}.ap-fold[data-v-59df0789]{display:inline-block;margin:2px 0;padding:0;background:none;border:none;color:var(--color-accent);font:inherit;cursor:pointer}.ap-fold[data-v-59df0789]:hover{text-decoration:underline}.ap-fold[data-v-59df0789]:focus-visible{outline:2px solid var(--color-accent);outline-offset:1px}.diff-lines[data-v-26e24204]{padding:4px 0 12px;font-size:var(--ui-font-size);line-height:1.5;-webkit-overflow-scrolling:touch;width:max-content;min-width:100%}.dl[data-v-26e24204]{display:flex;align-items:flex-start;min-height:18px;white-space:pre;width:100%}.dl-gutter[data-v-26e24204]{flex:none;width:40px;padding:0 6px;text-align:right;color:var(--faint, #aeb4bc);background:var(--panel, #fafbfc);user-select:none;border-right:1px solid var(--line2, #eef1f4);font-variant-numeric:tabular-nums}.dl-gutter.new[data-v-26e24204]{border-right:1px solid var(--line, #e7eaee)}.dl-sign[data-v-26e24204]{flex:none;width:16px;text-align:center;color:var(--muted);user-select:none}.dl-text[data-v-26e24204]{flex:none;padding-right:14px;white-space:pre;color:var(--color-text)}.dl-add[data-v-26e24204]{background:var(--color-success-soft);box-shadow:inset 2px 0 color-mix(in srgb,var(--color-success) 55%,transparent)}.dl-add .dl-sign[data-v-26e24204]{color:var(--color-success)}.dl-del[data-v-26e24204]{background:var(--color-danger-soft);box-shadow:inset 2px 0 color-mix(in srgb,var(--color-danger) 55%,transparent)}.dl-del .dl-sign[data-v-26e24204]{color:var(--color-danger)}.diff-lines[data-theme] .dl-add[data-v-26e24204]{background:var(--dl-add-soft);box-shadow:inset 2px 0 color-mix(in srgb,var(--dl-add) 55%,transparent)}.diff-lines[data-theme] .dl-add .dl-sign[data-v-26e24204]{color:var(--dl-add)}.diff-lines[data-theme] .dl-del[data-v-26e24204]{background:var(--dl-del-soft);box-shadow:inset 2px 0 color-mix(in srgb,var(--dl-del) 55%,transparent)}.diff-lines[data-theme] .dl-del .dl-sign[data-v-26e24204]{color:var(--dl-del)}.dl-hunk[data-v-26e24204]{background:var(--panel2, #f3f5f8)}.dl-hunk .hunk-text[data-v-26e24204]{flex:1;padding:1px 12px;color:var(--muted, #8b929b);font-style:normal}@media(max-width:640px){.diff-lines[data-v-26e24204]{overflow-x:auto;font-size:var(--ui-font-size)}}.tdp[data-v-76f2fbca]{height:100%;display:flex;flex-direction:column;min-height:0;background:var(--bg)}.tdp-body[data-v-76f2fbca]{flex:1;min-height:0;overflow:auto;font-family:var(--mono)}.tdp-output[data-v-76f2fbca]{padding:8px 12px;color:var(--dim);font-size:var(--text-base);line-height:1.7;white-space:pre-wrap;word-break:break-word}.tdp-empty[data-v-76f2fbca]{padding:32px 20px;color:var(--muted, #9098a0);font-size:var(--ui-font-size);text-align:center}.sc[data-v-867ab366]{height:100%;display:flex;flex-direction:column;min-height:0;background:var(--bg)}.sc-body[data-v-867ab366]{flex:1;min-height:0;overflow-y:auto}.sc-empty[data-v-867ab366]{padding:24px 16px;text-align:center;color:var(--muted);font-size:var(--ui-font-size)}.sc-composer[data-v-867ab366]{flex:none;display:flex;align-items:flex-end;gap:6px;padding:8px 10px;border-top:1px solid var(--line);background:var(--panel)}.sc-input[data-v-867ab366]{flex:1;min-width:0;resize:none;border:1px solid var(--line);border-radius:var(--radius-md);padding:7px 9px;background:var(--bg);color:var(--color-text);font:var(--ui-font-size)/1.5 var(--sans);outline:none;max-height:160px}.sc-input[data-v-867ab366]:focus{border-color:var(--color-accent-bd)}.sc-send[data-v-867ab366]{flex:none;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;border-radius:var(--radius-md);background:var(--color-accent);color:var(--color-text-on-accent);cursor:pointer}.sc-send[data-v-867ab366]:disabled{opacity:.4;cursor:default}.sc-send[data-v-867ab366]:not(:disabled):hover{background:var(--color-accent-hover)}.sc-loading[data-v-867ab366]{flex:none;padding:8px 12px 12px}.sc-body[data-v-867ab366] .sending-placeholder,.sc-body[data-v-867ab366] .sending-line{display:none}.changes-pane[data-v-6591e558]{display:flex;flex-direction:column;height:100%;background:var(--bg);font-family:var(--mono)}.dv-path[data-v-6591e558],.dv-change-count[data-v-6591e558]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--mono);font-size:var(--ui-font-size-xs);color:var(--muted)}.dv-change-count[data-v-6591e558]{flex:1}.ch-head[data-v-6591e558]{display:flex;align-items:center;gap:8px;padding:8px 16px;border-bottom:1px solid var(--line);background:var(--panel);font-size:var(--text-base);color:var(--dim);flex:none;white-space:nowrap;overflow:hidden}.br-label[data-v-6591e558]{color:var(--muted);font-size:max(9px,calc(var(--ui-font-size) - 3.5px))}.br-name[data-v-6591e558]{color:var(--color-accent);font-weight:500;font-size:var(--ui-font-size)}.sync-info[data-v-6591e558]{display:flex;align-items:center;gap:4px}.ahead[data-v-6591e558]{color:var(--color-accent);font-size:var(--text-base)}.behind[data-v-6591e558]{color:var(--color-warning);font-size:var(--text-base)}.empty-head[data-v-6591e558]{color:var(--muted);font-size:var(--text-base)}.ch-list[data-v-6591e558]{flex:1;overflow-y:auto;padding:4px 0}.ch-row[data-v-6591e558]{display:flex;align-items:center;gap:10px;padding:6px 16px;cursor:pointer;font-size:var(--ui-font-size);line-height:1.6;width:100%;background:none;border:none;text-align:left;font-family:inherit;color:inherit}.ch-row[data-v-6591e558]:hover{background:var(--panel2, #f5f6f8)}.ch-row[data-v-6591e558]:focus-visible{outline:2px solid var(--color-accent);outline-offset:-2px}.ch-tree[data-v-6591e558]{padding:4px 0}.tree-list[data-v-6591e558]{list-style:none;margin:0;padding:0}.tree-row[data-v-6591e558]{display:flex;align-items:center;gap:8px;width:100%;padding:5px 16px;background:none;border:none;text-align:left;font-family:inherit;font-size:var(--ui-font-size);color:inherit;cursor:pointer}.tree-row[data-v-6591e558]:hover{background:var(--panel2, #f5f6f8)}.tree-row[data-v-6591e558]:focus-visible{outline:2px solid var(--color-accent);outline-offset:-2px}.tree-folder[data-v-6591e558]{color:var(--color-text);font-weight:500}.tree-file[data-v-6591e558]{color:var(--color-text)}.tree-icon[data-v-6591e558]{flex:none;color:var(--muted)}.tree-name[data-v-6591e558]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.badge[data-v-6591e558]{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:var(--radius-xs);font-size:max(9px,calc(var(--ui-font-size) - 4px));font-weight:500;flex:none;user-select:none}.badge.modified[data-v-6591e558]{background:color-mix(in srgb,var(--color-accent) 12%,var(--bg));color:var(--color-accent)}.badge.added[data-v-6591e558]{background:color-mix(in srgb,var(--color-success) 10%,var(--bg));color:var(--color-success)}.badge.deleted[data-v-6591e558]{background:color-mix(in srgb,var(--color-danger) 10%,var(--bg));color:var(--color-danger)}.badge.renamed[data-v-6591e558]{background:color-mix(in srgb,var(--color-warning) 12%,var(--bg));color:var(--color-warning)}.badge.untracked[data-v-6591e558]{background:var(--color-surface-sunken);color:var(--muted, #9098a0)}.badge.conflicted[data-v-6591e558]{background:color-mix(in srgb,var(--color-danger) 10%,var(--bg));color:var(--color-danger);font-size:max(9px,calc(var(--ui-font-size) - 5px))}.badge.ignored[data-v-6591e558]{background:var(--color-surface-sunken);color:var(--faint, #c0c5cc)}.badge.clean[data-v-6591e558]{background:transparent;color:var(--faint, #c0c5cc)}.badge.unknown[data-v-6591e558]{background:var(--color-surface-sunken);color:var(--muted, #9098a0)}.fpath[data-v-6591e558]{color:var(--color-text);font-size:var(--ui-font-size);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;direction:rtl;text-align:left;min-width:0}.empty-state[data-v-6591e558]{padding:32px 20px;color:var(--muted, #9098a0);font-size:var(--ui-font-size);text-align:center}.diff-head[data-v-6591e558]{display:flex;align-items:center;gap:10px;flex-wrap:wrap;row-gap:6px;padding:6px 12px;border-bottom:1px solid var(--line);background:var(--panel);flex:none;white-space:nowrap;overflow:hidden}.dv-cb-label[data-v-6591e558]{color:var(--muted);font-size:var(--ui-font-size-xs);font-family:var(--sans);white-space:nowrap}.dv-cb-toggle[data-v-6591e558]{margin-left:auto}.dv-lines-wrap[data-v-6591e558]{flex:1;min-height:0;overflow:auto}@media(max-width:640px){.ch-head[data-v-6591e558]{padding:10px 14px}.ch-list[data-v-6591e558]{padding:2px 0 12px}.ch-row[data-v-6591e558]{min-height:44px;padding:8px 14px;gap:12px;font-size:var(--ui-font-size-sm)}.ch-row[data-v-6591e558]:active{background:var(--panel2, #f5f6f8)}.badge[data-v-6591e558]{width:18px;height:18px}.fpath[data-v-6591e558]{font-size:var(--ui-font-size-sm)}.tree-row[data-v-6591e558]{min-height:40px;padding:8px 14px}.diff-head[data-v-6591e558]{padding:8px 12px;gap:10px}.dv-cb-label[data-v-6591e558]{display:none}.diff-path[data-v-6591e558]{font-size:var(--text-base)}}.changes-pane .empty-state[data-v-6591e558],.br-label[data-v-6591e558],.empty-head[data-v-6591e558]{font-family:var(--sans)}.ch-row[data-v-6591e558],.ct-row[data-v-6591e558]{margin:1px 6px;width:calc(100% - 12px);border-radius:var(--radius-md)}.changes-pane .badge[data-v-6591e558],.changed-tree .badge[data-v-6591e558]{border-radius:var(--radius-sm)}.change-count[data-v-6591e558]{font-family:var(--sans);border-radius:999px}.mp[data-v-56cefe51]{display:flex;flex-direction:column;gap:var(--space-2)}.search-wrap[data-v-56cefe51]{padding-bottom:var(--space-1)}.tab-strip[data-v-56cefe51]{display:flex;gap:var(--space-1);overflow-x:auto}.model-list[data-v-56cefe51]{display:flex;flex-direction:column;padding:var(--space-1) 0}.model-row[data-v-56cefe51]{display:flex;align-items:flex-start;gap:var(--space-2);padding:var(--space-2) var(--space-2);border-radius:var(--radius-md);cursor:pointer;color:var(--color-text);min-width:0;transition:background var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out)}.model-row[data-v-56cefe51]:hover,.model-row.is-selected[data-v-56cefe51]{background:var(--color-surface-sunken)}.model-row.is-current[data-v-56cefe51]{background:var(--color-accent-soft);box-shadow:inset 0 0 0 1px var(--color-accent-bd)}.check[data-v-56cefe51]{width:14px;height:14px;color:var(--color-accent);flex:none;display:flex;align-items:center;justify-content:center}.model-main[data-v-56cefe51]{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.model-name[data-v-56cefe51]{font-family:var(--font-ui);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.model-id[data-v-56cefe51]{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.model-provider[data-v-56cefe51]{flex:none;max-width:110px;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.model-ctx[data-v-56cefe51]{flex:none;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-muted)}.caps[data-v-56cefe51]{display:flex;flex-wrap:wrap;gap:4px;margin-top:2px}.state-row[data-v-56cefe51]{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-5) 0;color:var(--color-text-muted);font-family:var(--font-ui);font-size:var(--text-base)}.state-row.unavail[data-v-56cefe51]{color:var(--color-warning)}.empty[data-v-56cefe51]{padding:var(--space-5) 0;color:var(--color-text-muted);font-family:var(--font-ui);font-size:var(--text-base)}.footer-hint[data-v-56cefe51]{padding-top:var(--space-2);font-family:var(--font-ui);font-size:var(--text-xs);color:var(--color-text-faint);border-top:1px solid var(--color-line)}@media(max-width:640px){.model-provider[data-v-56cefe51],.caps[data-v-56cefe51]{display:none}}.ui-field[data-v-49bce958]{display:flex;flex-direction:column;gap:6px}.ui-field__label[data-v-49bce958]{font-family:var(--font-ui);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text-muted)}.ui-field__hint[data-v-49bce958]{font-size:var(--text-xs);color:var(--color-text-faint)}.ui-field__error[data-v-49bce958]{font-size:var(--text-xs);color:var(--color-danger)}.ui-select[data-v-92a040fd]{appearance:none;-webkit-appearance:none;-moz-appearance:none;width:100%;border:1px solid var(--color-line-strong);border-radius:var(--radius-md);background-color:var(--color-surface-raised);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%236b7280' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 6l4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--space-3) center;background-size:16px 16px;box-shadow:var(--shadow-xs);color:var(--color-text);font-family:var(--font-ui);font-size:var(--text-base);line-height:var(--leading-normal);padding:0 var(--space-3);padding-right:calc(var(--space-3) + 16px + var(--space-2));cursor:pointer;transition:border-color var(--duration-base) var(--ease-out),box-shadow var(--duration-base) var(--ease-out)}.ui-select--md[data-v-92a040fd]{height:38px}.ui-select--sm[data-v-92a040fd]{height:32px;font-size:var(--text-sm)}.ui-select[data-v-92a040fd]:hover:not(:disabled):not(:focus){border-color:var(--color-line-strong)}.ui-select[data-v-92a040fd]:focus{outline:none;border-color:var(--color-accent);box-shadow:var(--p-focus-ring)}.ui-select[data-v-92a040fd]:disabled{opacity:.5;cursor:not-allowed}.ui-select.has-error[data-v-92a040fd]{border-color:var(--color-danger)}.ui-select.has-error[data-v-92a040fd]:focus{box-shadow:0 0 0 3px var(--color-danger-soft)}html[data-color-scheme=dark] .ui-select[data-v-92a040fd]{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%239aa0a8' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 6l4 4 4-4'/%3E%3C/svg%3E")}@media(prefers-color-scheme:dark){html[data-color-scheme=system] .ui-select[data-v-92a040fd]{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%239aa0a8' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 6l4 4 4-4'/%3E%3C/svg%3E")}}.pm[data-v-b1859ac1]{display:flex;flex-direction:column;gap:var(--space-4)}.prov-list[data-v-b1859ac1]{display:flex;flex-direction:column;gap:var(--space-1)}.state-row[data-v-b1859ac1]{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-4) 0;color:var(--color-text-muted);font-family:var(--font-ui);font-size:var(--text-base)}.state-row.unavail[data-v-b1859ac1]{color:var(--color-warning)}.empty[data-v-b1859ac1]{padding:var(--space-4) 0;color:var(--color-text-muted);font-family:var(--font-ui);font-size:var(--text-base)}.prov-row[data-v-b1859ac1]{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) 0;border-bottom:1px solid var(--color-line);transition:background var(--duration-fast) var(--ease-out)}.prov-row[data-v-b1859ac1]:last-child{border-bottom:none}.status-dot[data-v-b1859ac1]{width:8px;height:8px;flex:none;border-radius:50%;box-sizing:border-box}.status-dot--empty[data-v-b1859ac1]{background:transparent;border:1.5px solid var(--color-text-faint)}.prov-info[data-v-b1859ac1]{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--space-1)}.prov-type[data-v-b1859ac1]{font-family:var(--font-ui);font-size:var(--text-base);font-weight:var(--weight-medium);color:var(--color-text)}.prov-url[data-v-b1859ac1]{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.prov-meta[data-v-b1859ac1]{display:flex;align-items:center;gap:var(--space-2);font-family:var(--font-ui);font-size:var(--text-xs);color:var(--color-text-muted)}.prov-actions[data-v-b1859ac1]{display:flex;gap:var(--space-2);flex:none;align-items:center;flex-wrap:wrap}.add-section[data-v-b1859ac1]{border-top:1px solid var(--color-line);padding-top:var(--space-4)}.add-btns[data-v-b1859ac1]{display:flex;flex-wrap:wrap;gap:var(--space-2)}.add-form[data-v-b1859ac1]{display:flex;flex-direction:column;gap:var(--space-3)}.add-error[data-v-b1859ac1]{font-family:var(--font-ui);font-size:var(--text-sm);color:var(--color-danger)}.form-btns[data-v-b1859ac1]{display:flex;flex-wrap:wrap;gap:var(--space-2)}.import-form[data-v-b1859ac1]{display:flex;flex-direction:column;gap:var(--space-3)}.import-head[data-v-b1859ac1]{display:flex;align-items:center;gap:var(--space-2)}.import-title[data-v-b1859ac1]{font-family:var(--font-ui);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text)}.import-error[data-v-b1859ac1]{font-family:var(--font-ui);font-size:var(--text-sm);color:var(--color-danger)}.catalog-list[data-v-b1859ac1]{display:flex;flex-direction:column;gap:2px;max-height:260px;overflow-y:auto;padding:var(--space-1) 0}.catalog-row[data-v-b1859ac1]{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-2);border-radius:var(--radius-md);cursor:pointer;min-width:0;transition:background var(--duration-fast) var(--ease-out)}.catalog-row[data-v-b1859ac1]:hover,.catalog-row.is-selected[data-v-b1859ac1]{background:var(--color-surface-sunken)}.catalog-row.is-rejected[data-v-b1859ac1]{opacity:.55;cursor:not-allowed}.catalog-check[data-v-b1859ac1]{width:14px;height:14px;flex:none;color:var(--color-accent);display:flex;align-items:center;justify-content:center}.catalog-main[data-v-b1859ac1]{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.catalog-name[data-v-b1859ac1]{font-family:var(--font-ui);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.catalog-id[data-v-b1859ac1]{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.catalog-wire[data-v-b1859ac1]{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-faint)}.catalog-meta[data-v-b1859ac1]{flex:none;display:flex;align-items:center;gap:var(--space-2);max-width:40%}.catalog-count[data-v-b1859ac1]{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-muted);white-space:nowrap}.catalog-selected[data-v-b1859ac1]{padding-top:var(--space-1)}.footer-hint[data-v-b1859ac1]{padding-top:var(--space-2);font-family:var(--font-ui);font-size:var(--text-xs);color:var(--color-text-faint);border-top:1px solid var(--color-line)}@media(max-width:640px){.prov-row[data-v-b1859ac1]{align-items:flex-start;flex-wrap:wrap}.prov-actions[data-v-b1859ac1]{flex:1 1 100%;justify-content:flex-end}}.center-body[data-v-8308a28f]{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);padding:var(--space-8) 0 var(--space-4);text-align:center}.center-text[data-v-8308a28f]{font-size:var(--text-base);font-weight:var(--weight-medium);color:var(--color-text)}.success-text[data-v-8308a28f]{color:var(--color-success)}.err-text[data-v-8308a28f]{color:var(--color-danger)}.warn-text[data-v-8308a28f]{color:var(--color-warning);font-size:var(--text-base)}.center-hint[data-v-8308a28f]{font-size:var(--text-sm);color:var(--color-text-muted)}.nb[data-v-8308a28f]{display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-2) 0 var(--space-4)}.nb-lead[data-v-8308a28f]{font-size:var(--text-base);color:var(--color-text);line-height:var(--leading-normal)}.nb-primary[data-v-8308a28f]{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);width:100%;min-height:40px;padding:0 var(--space-4);background:var(--color-accent);color:var(--color-text-on-accent);border:1px solid var(--color-accent);border-radius:var(--radius-md);font-family:var(--font-ui);font-size:var(--text-base);font-weight:var(--weight-medium);cursor:pointer;text-decoration:none;transition:background var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out)}.nb-primary[data-v-8308a28f]:hover{background:var(--color-accent-hover);border-color:var(--color-accent-hover)}.nb-or[data-v-8308a28f]{display:flex;align-items:center;gap:var(--space-3);color:var(--color-text-muted);font-size:var(--text-xs);letter-spacing:.06em}.nb-or[data-v-8308a28f]:before,.nb-or[data-v-8308a28f]:after{content:"";flex:1;height:1px;background:var(--color-line)}.nb-fallback[data-v-8308a28f]{display:flex;flex-direction:column;gap:var(--space-2)}.nb-fb-text[data-v-8308a28f]{font-size:var(--text-sm);color:var(--color-text-muted);line-height:var(--leading-normal)}.nb-fb-link[data-v-8308a28f]{color:var(--color-accent);text-decoration:none;border-bottom:1px solid var(--color-accent-bd)}.nb-fb-link[data-v-8308a28f]:hover{border-bottom-color:var(--color-accent)}.nb-code-row[data-v-8308a28f]{display:flex;align-items:center;gap:var(--space-3);background:var(--color-surface-sunken);border:1px solid var(--color-line);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3)}.nb-code[data-v-8308a28f]{flex:1;font-family:var(--font-mono);font-size:var(--text-xl);font-weight:var(--weight-medium);color:var(--color-text);letter-spacing:.14em}.nb-copy.is-copied[data-v-8308a28f]{color:var(--color-success);border-color:var(--color-success-bd)}.nb-status[data-v-8308a28f]{display:flex;align-items:center;gap:var(--space-2);padding-top:var(--space-3);border-top:1px solid var(--color-line)}.nb-status-text[data-v-8308a28f]{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--color-text-muted);flex:1}.nb-countdown[data-v-8308a28f]{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-muted);font-variant-numeric:tabular-nums}.actions[data-v-8308a28f]{display:flex;justify-content:flex-end;gap:var(--space-3);padding-top:var(--space-4)}@media(max-width:640px){.center-body[data-v-8308a28f],.nb[data-v-8308a28f]{overflow-y:auto;-webkit-overflow-scrolling:touch}.nb-code-row[data-v-8308a28f],.nb-status[data-v-8308a28f],.actions[data-v-8308a28f]{flex-wrap:wrap}.nb-code[data-v-8308a28f]{min-width:0;overflow-wrap:anywhere;letter-spacing:.08em}.nb-copy[data-v-8308a28f]{min-height:34px}.nb-primary[data-v-8308a28f]{min-height:44px}.nb-status-text[data-v-8308a28f]{min-width:0}}.media-lightbox[data-v-0ff39638]{position:fixed;inset:0;z-index:var(--z-modal);display:flex;align-items:center;justify-content:center;outline:none}.ml-backdrop[data-v-0ff39638]{position:absolute;inset:0;background:#0d1117cc}.ml-close[data-v-0ff39638]{position:absolute;top:var(--space-4);right:var(--space-4);z-index:1;display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--radius-full);border:none;background:var(--color-surface-raised);color:var(--color-text);cursor:pointer;box-shadow:var(--shadow-md)}.ml-close[data-v-0ff39638]:hover{background:var(--color-surface-sunken)}.ml-loading[data-v-0ff39638]{position:relative;z-index:1}.ml-viewport[data-v-0ff39638]{position:relative;z-index:1;width:100%;height:100%;display:flex;align-items:center;justify-content:center;overflow:hidden;cursor:grab;touch-action:none}.ml-viewport[data-v-0ff39638]:active{cursor:grabbing}.ml-image[data-v-0ff39638]{max-width:92%;max-height:92%;object-fit:contain;user-select:none;transform-origin:center center;transition:transform .08s ease-out}.ml-zoom-hint[data-v-0ff39638]{position:absolute;bottom:var(--space-6);left:50%;transform:translate(-50%);padding:var(--space-2) var(--space-3);border-radius:var(--radius-full);background:var(--color-surface-raised);color:var(--color-text-muted);font-size:var(--text-xs);box-shadow:var(--shadow-sm);pointer-events:none}.ml-video[data-v-0ff39638]{position:relative;z-index:1;max-width:94%;max-height:94%;border-radius:var(--radius-lg);background:var(--color-surface-sunken)}.ml-error[data-v-0ff39638]{position:relative;z-index:1;padding:var(--space-4);border-radius:var(--radius-lg);background:var(--color-surface-raised);color:var(--color-text-muted)}.ml-toolbar[data-v-0ff39638]{position:absolute;bottom:var(--space-5);left:50%;transform:translate(-50%);z-index:1;display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2);border-radius:var(--radius-full);background:var(--color-surface-raised);box-shadow:var(--shadow-md)}.ml-btn[data-v-0ff39638]{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border:none;border-radius:var(--radius-full);background:transparent;color:var(--color-text);cursor:pointer}.ml-btn[data-v-0ff39638]:hover:not(:disabled){background:var(--color-surface-sunken)}.ml-btn[data-v-0ff39638]:disabled{opacity:.4;cursor:default}.ml-zoom-label[data-v-0ff39638]{min-width:48px;text-align:center;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-muted)}.ui-link[data-v-645e7d4e]{color:var(--color-accent);text-decoration:none;cursor:pointer;font:inherit;transition:color var(--duration-base) var(--ease-out)}.ui-link[data-v-645e7d4e]:hover{color:var(--color-accent-hover);text-decoration:underline}.ui-link[data-v-645e7d4e]:focus-visible{outline:none;box-shadow:var(--p-focus-ring);border-radius:var(--radius-xs)}.ui-link--muted[data-v-645e7d4e]{color:var(--color-text-muted)}.ui-link--muted[data-v-645e7d4e]:hover{color:var(--color-text)}.ui-switch[data-v-e5aecc8e]{position:relative;width:36px;height:20px;flex:none;padding:0;border:none;border-radius:var(--radius-full);background:var(--color-line-strong);cursor:pointer;transition:background var(--duration-base) var(--ease-out)}.ui-switch.is-on[data-v-e5aecc8e]{background:var(--color-accent)}.ui-switch[data-v-e5aecc8e]:disabled{opacity:.5;cursor:not-allowed}.ui-switch[data-v-e5aecc8e]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.ui-switch__thumb[data-v-e5aecc8e]{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:var(--radius-full);background:var(--surface-light);box-shadow:var(--shadow-xs);transition:transform var(--duration-base) var(--ease-out)}.ui-switch.is-on .ui-switch__thumb[data-v-e5aecc8e]{background:var(--color-text-on-accent);transform:translate(16px)}.ps[data-v-8c64da0f]{display:flex;flex-direction:column;gap:var(--space-4)}.ext-hint[data-v-8c64da0f] .ui-banner__text{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap}.ext-hint-title[data-v-8c64da0f]{color:var(--color-text);font-weight:var(--weight-medium)}.ext-hint-dismiss[data-v-8c64da0f]{margin-left:auto}.action-error[data-v-8c64da0f]{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);background:var(--color-danger-soft);color:var(--color-danger);font-family:var(--font-ui);font-size:var(--text-sm)}.plug-sec[data-v-8c64da0f]{display:flex;flex-direction:column;gap:var(--space-3)}.plug-sec-head[data-v-8c64da0f]{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.plug-title[data-v-8c64da0f]{margin:0;font-family:var(--font-ui);font-size:var(--text-xs);font-weight:var(--weight-medium);letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-muted)}.plug-state[data-v-8c64da0f]{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) 0;color:var(--color-text-muted);font-family:var(--font-ui);font-size:var(--text-sm)}.plug-state.is-error[data-v-8c64da0f]{color:var(--color-danger)}.plug-list[data-v-8c64da0f]{display:flex;flex-direction:column;border:1px solid var(--color-line);border-radius:var(--radius-xl);overflow:hidden;background:var(--color-bg)}.plug-row[data-v-8c64da0f]{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-top:1px solid var(--color-line)}.plug-row[data-v-8c64da0f]:first-child{border-top:none}.plug-row[data-v-8c64da0f]:hover{background:var(--color-surface-sunken)}.plug-info[data-v-8c64da0f]{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--space-1)}.plug-name[data-v-8c64da0f]{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;min-width:0}.plug-display[data-v-8c64da0f]{font-family:var(--font-ui);font-size:var(--text-base);font-weight:var(--weight-medium);color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.plug-version[data-v-8c64da0f]{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-faint)}.plug-counts[data-v-8c64da0f]{font-family:var(--font-ui);font-size:var(--text-xs);color:var(--color-text-muted)}.plug-desc[data-v-8c64da0f]{margin:0;font-family:var(--font-ui);font-size:var(--text-sm);line-height:var(--leading-normal);color:var(--color-text-muted)}.plug-home[data-v-8c64da0f]{font-family:var(--font-ui);font-size:var(--text-xs)}.plug-actions[data-v-8c64da0f]{display:flex;align-items:center;gap:var(--space-2);flex:none}.cap-progress[data-v-8c64da0f]{display:flex;flex-direction:column;gap:var(--space-1);max-width:420px}.cap-progress-text[data-v-8c64da0f]{font-family:var(--font-ui);font-size:var(--text-xs);color:var(--color-text-muted)}.cap-progress-track[data-v-8c64da0f]{display:block;height:4px;border-radius:var(--radius-full);background:var(--color-surface-sunken);overflow:hidden}.cap-progress-fill[data-v-8c64da0f]{display:block;height:100%;border-radius:var(--radius-full);background:var(--color-accent);transition:width var(--duration-base) var(--ease-out)}.cap-error[data-v-8c64da0f]{display:flex;align-items:center;gap:var(--space-1);font-family:var(--font-ui);font-size:var(--text-xs);color:var(--color-danger)}.cap-steps[data-v-8c64da0f]{display:flex;flex-direction:column;gap:var(--space-1);margin:0;padding:0;list-style:none}.cap-step[data-v-8c64da0f]{display:flex;align-items:center;gap:var(--space-2);min-width:0}.cap-step-ok[data-v-8c64da0f]{color:var(--color-success);flex:none}.cap-step-bad[data-v-8c64da0f]{color:var(--color-danger);flex:none}.cap-step-missing[data-v-8c64da0f]{width:14px;height:14px;flex:none;border-radius:50%;border:1.5px solid var(--color-text-faint);box-sizing:border-box}.cap-step-label[data-v-8c64da0f]{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:640px){.plug-row[data-v-8c64da0f]{align-items:flex-start;flex-wrap:wrap}.plug-actions[data-v-8c64da0f]{flex:1 1 100%;justify-content:flex-end}.ext-hint-dismiss[data-v-8c64da0f]{margin-left:0}}.sd[data-v-ace56012]{display:flex;flex-direction:row;min-height:0;height:100%}.settings-tabs[data-v-ace56012]{display:flex;flex-direction:column;flex:none;width:148px;padding:var(--space-2);gap:2px;overflow-y:auto}.tab[data-v-ace56012]{text-align:left;padding:8px 10px;border:none;border-radius:var(--radius-md);background:transparent;color:var(--color-text-muted);font-family:var(--font-ui);font-size:var(--text-base);cursor:pointer;transition:background var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out)}.tab[data-v-ace56012]:hover{background:var(--color-surface-sunken);color:var(--color-text)}.tab.on[data-v-ace56012]{background:var(--color-accent-soft);color:var(--color-accent);font-weight:var(--weight-medium)}.tab[data-v-ace56012]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.body[data-v-ace56012]{display:flex;flex-direction:column;overflow-y:auto;padding:var(--space-2) var(--space-5) var(--space-5) var(--space-6);flex:1;min-width:0}.panel[data-v-ace56012]{display:block}.sec[data-v-ace56012]{padding:var(--space-4) 0;border-bottom:1px solid var(--color-line)}.sec[data-v-ace56012]:last-child{border-bottom:none}.sec-head[data-v-ace56012]{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-3)}.sec-title[data-v-ace56012]{margin:0 0 var(--space-3);font-family:var(--font-ui);font-size:var(--text-xs);font-weight:var(--weight-medium);letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-muted)}.sec-head .sec-title[data-v-ace56012]{margin-bottom:0}.saving[data-v-ace56012]{flex:none;font-family:var(--font-ui);font-size:var(--text-xs);color:var(--color-text-muted)}.row[data-v-ace56012]{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);min-height:38px;padding:var(--space-1) 0}.rlabel[data-v-ace56012]{font-family:var(--font-ui);font-size:var(--text-base);color:var(--color-text);display:flex;flex-direction:column;gap:var(--space-1)}.rvalue[data-v-ace56012]{font-family:var(--font-ui);font-size:var(--text-sm);color:var(--color-text-muted);max-width:60%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rvalue.mono[data-v-ace56012]{font-family:var(--font-mono);font-size:var(--text-xs)}.hint[data-v-ace56012]{font-family:var(--font-ui);font-size:var(--text-xs);color:var(--color-text-faint)}.num-field[data-v-ace56012]{display:inline-flex;align-items:center;gap:var(--space-2);flex:none;padding:0 var(--space-3);height:38px;border:1px solid var(--color-line);border-radius:var(--radius-md);background:var(--color-surface-raised);transition:border-color var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out)}.num-field[data-v-ace56012]:hover{border-color:var(--color-line-strong)}.num-field[data-v-ace56012]:focus-within{border-color:var(--color-accent);box-shadow:var(--p-focus-ring)}.num-input[data-v-ace56012]{width:48px;border:none;outline:none;background:transparent;color:var(--color-text);font-family:var(--font-mono);font-size:var(--text-base);text-align:right}.num-unit[data-v-ace56012]{color:var(--color-text-muted);font-family:var(--font-mono);font-size:var(--text-xs)}.select-wrap[data-v-ace56012]{min-width:220px;max-width:min(320px,50vw);flex:none}.empty-config[data-v-ace56012]{font-family:var(--font-ui);font-size:var(--text-base);color:var(--color-text-muted);padding:var(--space-1) 0}.plugins-panel[data-v-ace56012]{padding-top:var(--space-4)}.actions[data-v-ace56012]{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-2)}@media(max-width:640px){.sd[data-v-ace56012]{flex-direction:column}.settings-tabs[data-v-ace56012]{flex-direction:row;width:auto;padding:var(--space-2) var(--space-3);gap:var(--space-1);overflow-x:auto}.tab[data-v-ace56012]{white-space:nowrap;flex:none}.row[data-v-ace56012]{align-items:flex-start;flex-direction:column}.select-wrap[data-v-ace56012]{width:100%;max-width:none}}.setting-card[data-v-ace56012]{border:1px solid var(--color-line);border-radius:var(--radius-xl);overflow:hidden;background:var(--color-bg)}.panel-head[data-v-ace56012]{margin-bottom:var(--space-4)}.panel-kicker[data-v-ace56012]{font-size:var(--text-xs);letter-spacing:.05em;text-transform:uppercase;color:var(--color-text-faint);margin-bottom:var(--space-1)}.panel-title[data-v-ace56012]{margin:0 0 var(--space-2);font-family:var(--font-ui);font-size:var(--text-2xl);font-weight:var(--weight-semibold);letter-spacing:-.01em;color:var(--color-text)}.panel-desc[data-v-ace56012]{margin:0;font-family:var(--font-ui);font-size:var(--text-sm);line-height:var(--leading-normal);color:var(--color-text-muted);max-width:560px}.archive-toolbar[data-v-ace56012]{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-4);flex-wrap:wrap}.archive-search[data-v-ace56012]{flex:1;min-width:200px;height:36px;display:flex;align-items:center;gap:var(--space-2);padding:0 var(--space-3);border-radius:var(--radius-md);border:1px solid var(--color-line);color:var(--color-text-faint);font-size:var(--text-sm);background:var(--color-surface-raised);transition:border-color var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out)}.archive-search[data-v-ace56012]:focus-within{border-color:var(--color-accent);box-shadow:var(--p-focus-ring);color:var(--color-text-muted)}.archive-search svg[data-v-ace56012]{width:15px;height:15px;flex:none}.archive-search input[data-v-ace56012]{width:100%;border:none;outline:none;background:transparent;font:inherit;color:var(--color-text)}.archive-list[data-v-ace56012]{display:flex;flex-direction:column;gap:var(--space-4)}.archive-card .setting-card[data-v-ace56012]{margin-bottom:0}.archive-workspace[data-v-ace56012]{display:flex;align-items:center;gap:var(--space-2);margin:0 2px var(--space-2);color:var(--color-text-muted);font-size:var(--text-sm);font-weight:var(--weight-medium)}.archive-workspace svg[data-v-ace56012]{width:16px;height:16px;color:var(--color-text-faint);flex:none}.archive-workspace .path[data-v-ace56012]{font-family:var(--font-mono);font-size:var(--text-xs);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.archive-workspace .count[data-v-ace56012]{margin-left:auto;color:var(--color-text-faint);font-weight:var(--weight-regular);font-size:var(--text-xs);flex:none}.archive-row[data-v-ace56012]{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--space-3);align-items:center;padding:var(--space-3) var(--space-4);border-top:1px solid var(--color-line)}.archive-row[data-v-ace56012]:first-child{border-top:none}.archive-row[data-v-ace56012]:hover{background:var(--color-surface-sunken)}.archive-meta[data-v-ace56012]{min-width:0}.archive-name[data-v-ace56012]{font-size:var(--text-base);font-weight:var(--weight-medium);color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.archive-time[data-v-ace56012]{margin-top:2px;font-size:var(--text-xs);color:var(--color-text-faint);font-family:var(--font-mono)}.archive-draining[data-v-ace56012]{margin-bottom:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);background:var(--color-accent-soft);color:var(--color-accent-hover);font-size:var(--text-sm)}.archive-empty[data-v-ace56012]{padding:var(--space-6) var(--space-4);border:1px solid var(--color-line);border-radius:var(--radius-xl);color:var(--color-text-faint);font-size:var(--text-sm);text-align:center;background:var(--color-bg)}.archive-load-more[data-v-ace56012]{align-self:center;margin-top:var(--space-2);padding:6px 18px;border:1px solid var(--color-line);border-radius:var(--radius-md);background:var(--color-surface-raised);color:var(--color-text-muted);font-family:var(--font-ui);font-size:var(--text-sm);cursor:pointer;transition:border-color var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out)}.archive-load-more[data-v-ace56012]:hover:not(:disabled){border-color:var(--color-line-strong);color:var(--color-text)}.archive-load-more[data-v-ace56012]:focus-visible{outline:none;box-shadow:var(--p-focus-ring)}.archive-load-more[data-v-ace56012]:disabled{opacity:.5;cursor:not-allowed}@media(max-width:640px){.archive-toolbar[data-v-ace56012]{flex-direction:column;align-items:stretch}.archive-search[data-v-ace56012]{min-width:0}}[data-v-ace56012] .ui-dialog{width:min(980px,96vw)}[data-v-ace56012] .ui-dialog--fixed-height{height:min(780px,calc(100vh - var(--space-8) * 2))}.aw[data-v-a2c2e0eb]{margin-left:calc(-1 * var(--space-5));margin-right:calc(-1 * var(--space-5));margin-bottom:calc(-1 * var(--space-4))}.crumbbar[data-v-a2c2e0eb]{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-5);border-bottom:1px solid var(--color-line)}.crumbs[data-v-a2c2e0eb]{display:flex;align-items:center;flex-wrap:wrap;gap:1px;min-width:0;font-size:var(--text-sm)}.crumb-sep[data-v-a2c2e0eb]{color:var(--color-text-muted)}.crumb[data-v-a2c2e0eb]{background:none;border:none;cursor:pointer;font-family:var(--font-ui);font-size:var(--text-sm);color:var(--color-text-muted);padding:1px var(--space-1);border-radius:var(--radius-xs)}.crumb[data-v-a2c2e0eb]:hover{color:var(--color-accent);background:var(--color-surface-sunken)}.crumb.last[data-v-a2c2e0eb]{color:var(--color-text);font-weight:var(--weight-medium)}.filterbar[data-v-a2c2e0eb]{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-5);border-bottom:1px solid var(--color-line)}.filter-icon[data-v-a2c2e0eb]{flex:none;width:var(--p-ic-sm);height:var(--p-ic-sm);color:var(--color-text-muted)}.filter-input[data-v-a2c2e0eb]{flex:1;min-width:0;font-family:var(--font-ui);font-size:var(--text-base);padding:var(--space-1) 0;border:none;background:none;color:var(--color-text);outline:none}.filter-input[data-v-a2c2e0eb]::placeholder{color:var(--color-text-muted)}.search-rel[data-v-a2c2e0eb]{color:var(--color-text)}.filterbar.has-error[data-v-a2c2e0eb]{border-bottom-color:var(--color-danger)}.filterbar.has-error .filter-icon[data-v-a2c2e0eb]{color:var(--color-danger)}.folder-list[data-v-a2c2e0eb]{height:300px;overflow-y:auto;padding:var(--space-1) var(--space-2)}.fl-loading[data-v-a2c2e0eb],.fl-empty[data-v-a2c2e0eb]{padding:var(--space-6) var(--space-4);text-align:center;color:var(--color-text-muted);font-size:var(--text-sm)}.fl-note[data-v-a2c2e0eb]{padding:var(--space-2) var(--space-4);font-size:var(--text-sm);color:var(--color-text-muted)}.fl-error[data-v-a2c2e0eb]{color:var(--color-danger)}.folder-row[data-v-a2c2e0eb]{display:flex;align-items:center;gap:var(--space-2);width:100%;background:none;border:none;cursor:pointer;font-family:var(--font-ui);font-size:var(--text-base);color:var(--color-text);text-align:left;padding:var(--space-1) var(--space-4);border-radius:var(--radius-md)}.folder-row[data-v-a2c2e0eb]:hover{background:var(--color-surface-sunken)}.dir-icon[data-v-a2c2e0eb]{flex:none;width:var(--p-ic-sm);height:var(--p-ic-sm);color:var(--color-text-muted)}.folder-row:hover .dir-icon[data-v-a2c2e0eb]{color:var(--color-accent)}.folder-name[data-v-a2c2e0eb]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--color-text)}.degraded-hint[data-v-a2c2e0eb]{padding:var(--space-6) var(--space-5);text-align:center;color:var(--color-text-muted);font-size:var(--text-sm)}.add-error[data-v-a2c2e0eb]{margin:0 14px 8px;padding:6px 10px;font-family:var(--mono);font-size:var(--ui-font-size-xs);color:var(--color-danger);background:#b3261e14;border:1px solid rgba(179,38,30,.25);border-radius:var(--radius-xs)}.actions[data-v-a2c2e0eb]{display:flex;justify-content:flex-end;gap:var(--space-3);padding:var(--space-4) var(--space-5)}.footer-hint[data-v-a2c2e0eb]{padding:var(--space-2) var(--space-5);font-size:var(--text-xs);color:var(--color-text-muted);border-top:1px solid var(--color-line)}@media(max-width:640px){.folder-row[data-v-a2c2e0eb]{min-height:44px}.crumbbar[data-v-a2c2e0eb]{align-items:flex-start}.actions[data-v-a2c2e0eb]{flex-wrap:wrap}}.confirm-dialog__message[data-v-2e719024]{margin:0;font-size:var(--text-base);line-height:var(--leading-normal);color:var(--color-text-muted)}.rows[data-v-5ba9ba29]{margin:0;padding:0}.row[data-v-5ba9ba29]{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) 0;font-size:var(--text-base)}.row dt[data-v-5ba9ba29]{width:96px;flex:none;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em;font-size:var(--text-xs)}.row dd[data-v-5ba9ba29]{margin:0;color:var(--color-text);font-weight:var(--weight-medium);display:flex;align-items:center;gap:var(--space-2);min-width:0}.row dd.plan-on[data-v-5ba9ba29],.row dd.swarm-on[data-v-5ba9ba29],.row dd.supermoon-on[data-v-5ba9ba29]{color:var(--color-accent)}.ctx-text[data-v-5ba9ba29]{flex:none}.bar[data-v-5ba9ba29]{width:80px;height:5px;border-radius:var(--radius-full);background:var(--color-line);overflow:hidden;flex:none}.bar i[data-v-5ba9ba29]{display:block;height:100%;background:var(--color-accent)}@media(max-width:640px){.rows[data-v-5ba9ba29]{overflow-y:auto;-webkit-overflow-scrolling:touch}.row[data-v-5ba9ba29]{align-items:flex-start;flex-direction:column;gap:var(--space-1);min-height:48px}.row dt[data-v-5ba9ba29]{width:auto}.row dd[data-v-5ba9ba29]{max-width:100%;flex-wrap:wrap}}.ui-toast[data-v-adc6f346]{display:flex;align-items:flex-start;gap:11px;width:360px;max-width:100%;padding:13px 14px;background:var(--color-surface-raised);border:1px solid var(--color-line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);font-family:var(--font-ui);line-height:1.45}.ui-toast__icon[data-v-adc6f346]{flex:none;width:20px;height:20px;margin-top:1px;border-radius:var(--radius-full);display:grid;place-items:center;background:var(--color-accent-soft);color:var(--color-accent)}.ui-toast__icon svg[data-v-adc6f346]{width:12px;height:12px}.ui-toast--success .ui-toast__icon[data-v-adc6f346]{background:var(--color-success-soft);color:var(--color-success)}.ui-toast--warning .ui-toast__icon[data-v-adc6f346]{background:var(--color-warning-soft);color:var(--color-warning)}.ui-toast--danger .ui-toast__icon[data-v-adc6f346]{background:var(--color-danger-soft);color:var(--color-danger)}.ui-toast--danger[data-v-adc6f346]{border-color:color-mix(in srgb,var(--color-danger) 35%,transparent)}.ui-toast__body[data-v-adc6f346]{flex:1;min-width:0}.ui-toast__title[data-v-adc6f346]{font-size:var(--text-base);font-weight:500;color:var(--color-text);overflow-wrap:anywhere}.ui-toast__msg[data-v-adc6f346]{margin-top:2px;font-size:var(--text-sm);color:var(--color-text-muted);overflow-wrap:anywhere}.ui-toast--danger .ui-toast__msg[data-v-adc6f346]{color:var(--color-danger)}.ui-toast__close[data-v-adc6f346]{flex:none;margin:-3px -4px 0 0}.toasts[data-v-c92be17a]{position:fixed;right:16px;bottom:84px;display:flex;flex-direction:column;gap:var(--space-2);z-index:var(--z-toast);width:min(440px,calc(100vw - 32px));max-height:56vh;overflow-y:auto}.toast-enter-active[data-v-c92be17a],.toast-leave-active[data-v-c92be17a]{transition:opacity var(--duration-base) var(--ease-out),transform var(--duration-base) var(--ease-out)}.toast-enter-from[data-v-c92be17a],.toast-leave-to[data-v-c92be17a]{opacity:0;transform:translate(16px)}.toast-move[data-v-c92be17a]{transition:transform var(--duration-base) var(--ease-out)}.actions[data-v-c92be17a]{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-2)}.link[data-v-c92be17a]{border:0;padding:0;background:none;color:var(--color-accent);cursor:pointer;font:inherit;font-size:var(--ui-font-size-xs)}.link[data-v-c92be17a]:hover{text-decoration:underline}.details[data-v-c92be17a]{display:grid;gap:5px;margin:8px 0 0;padding:8px;border:1px solid var(--color-line);border-radius:var(--radius-sm);background:var(--color-surface-sunken)}.detail-row[data-v-c92be17a]{display:grid;grid-template-columns:minmax(88px,.34fr) minmax(0,1fr);gap:8px}.detail-row dt[data-v-c92be17a]{color:var(--color-text-muted)}.detail-row dd[data-v-c92be17a]{margin:0;color:var(--color-text);overflow-wrap:anywhere;white-space:pre-wrap}@media(max-width:640px){.toasts[data-v-c92be17a]{left:12px;right:12px;bottom:calc(var(--dock-h, 76px) + 8px);width:auto;max-height:50vh}.detail-row[data-v-c92be17a]{grid-template-columns:1fr;gap:2px}}.topbar[data-v-6b4b901f]{display:flex;align-items:center;gap:10px;height:calc(50px + var(--safe-top));flex:none;padding:var(--safe-top) max(12px,var(--safe-right)) 0 max(12px,var(--safe-left));border-bottom:1px solid var(--color-line);background:var(--color-bg);font-family:var(--font-ui)}.wsq[data-v-6b4b901f]{flex:none;width:28px;height:28px;border-radius:var(--radius-md);background:var(--color-text);color:var(--color-bg);display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-weight:var(--weight-medium);font-size:var(--ui-font-size-sm)}.tb-mid[data-v-6b4b901f]{flex:1;min-width:0;height:100%;display:flex;flex-direction:column;justify-content:center;gap:1px;background:none;border:none;padding:0;cursor:pointer;text-align:left}.tb-path[data-v-6b4b901f]{display:flex;align-items:center;gap:5px;font-size:var(--ui-font-size-sm);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tb-path .ws[data-v-6b4b901f]{color:var(--color-text)}.tb-path .sl[data-v-6b4b901f]{color:var(--color-text-faint)}.tb-path .se[data-v-6b4b901f]{color:var(--color-text);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tb-path .cv[data-v-6b4b901f]{color:var(--color-text-faint);flex:none}.tb-sub[data-v-6b4b901f]{display:flex;align-items:center;gap:5px;font-size:max(9px,calc(var(--ui-font-size) - 3.5px));color:var(--color-text-faint);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tb-sub .rd[data-v-6b4b901f]{flex:none;width:6px;height:6px;border-radius:var(--radius-full);background:var(--color-text-faint)}.tb-sub .rd.on[data-v-6b4b901f]{background:var(--color-success)}.topbar .tb-path[data-v-6b4b901f]{font-family:var(--sans)}.sheet-root[data-v-745ee5a2]{position:fixed;inset:0;z-index:var(--z-overlay);display:flex;flex-direction:column;justify-content:flex-end}.sheet-scrim[data-v-745ee5a2]{position:absolute;inset:0;background:#0d111773}.sheet-panel[data-v-745ee5a2]{position:relative;background:var(--color-surface-raised);border:1px solid var(--color-line);border-bottom:none;border-radius:var(--radius-xl) var(--radius-xl) 0 0;box-shadow:var(--shadow-xl);max-height:86vh;display:flex;flex-direction:column;min-height:0;font-family:var(--font-ui);color:var(--color-text)}.sheet-grab[data-v-745ee5a2]{flex:none;align-self:center;width:56px;height:18px;padding:0;border:none;background:none;cursor:pointer;position:relative;margin-top:4px}.sheet-grab[data-v-745ee5a2]:after{content:"";position:absolute;left:50%;top:7px;transform:translate(-50%);width:38px;height:5px;border-radius:var(--radius-full);background:var(--color-line)}.sheet-head[data-v-745ee5a2]{flex:none;display:flex;align-items:center;justify-content:space-between;padding:6px 16px 10px}.sheet-title[data-v-745ee5a2]{font-size:var(--text-base);font-weight:var(--weight-medium);color:var(--color-text)}.sheet-body[data-v-745ee5a2]{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding-bottom:max(16px,var(--safe-bottom))}.sheet-enter-active[data-v-745ee5a2],.sheet-leave-active[data-v-745ee5a2]{transition:opacity var(--duration-slow) var(--ease-out)}.sheet-enter-active .sheet-panel[data-v-745ee5a2],.sheet-leave-active .sheet-panel[data-v-745ee5a2]{transition:transform var(--duration-slow) var(--ease-out)}.sheet-enter-from[data-v-745ee5a2],.sheet-leave-to[data-v-745ee5a2]{opacity:0}.sheet-enter-from .sheet-panel[data-v-745ee5a2],.sheet-leave-to .sheet-panel[data-v-745ee5a2]{transform:translateY(102%)}.newrow[data-v-53fda211]{display:flex;align-items:center;gap:10px;width:100%;padding:var(--space-3) var(--space-4);background:none;border:none;border-radius:var(--radius-md);color:var(--color-accent);font-weight:500;font-size:var(--text-base);cursor:pointer;text-align:left}.newrow[data-v-53fda211]:hover,.newrow[data-v-53fda211]:active{background:var(--color-surface-sunken)}.newrow.secondary[data-v-53fda211]{padding-top:var(--space-2);padding-bottom:var(--space-2);color:var(--color-text-muted);font-weight:400}.newrow.secondary[data-v-53fda211]:hover{background:var(--color-surface-sunken)}.newrow.secondary[data-v-53fda211]:active{background:var(--color-surface-sunken);color:var(--color-text)}.mlist[data-v-53fda211]{--m-pad: 16px;--m-gutter: 15px;--m-gap: 8px;--m-indent: calc(var(--m-pad) + var(--m-gutter) + var(--m-gap));padding-bottom:var(--space-1)}.mempty[data-v-53fda211]{padding:var(--space-6) var(--space-4);text-align:center;color:var(--color-text-faint);font-size:var(--ui-font-size)}.mempty.small[data-v-53fda211]{padding:10px 16px 12px var(--m-indent);text-align:left;font-size:var(--ui-font-size-xs)}.mgroup[data-v-53fda211]{padding-top:2px}.mgh[data-v-53fda211]{display:flex;align-items:center;gap:var(--m-gap);padding:10px var(--m-pad) 6px;border-radius:var(--radius-md);cursor:pointer;user-select:none;position:relative}.mgh[data-v-53fda211]:hover,.mgh[data-v-53fda211]:active{background:var(--color-surface-sunken)}.mgh-folder[data-v-53fda211]{flex:none;color:var(--color-text-muted)}.mgh-main[data-v-53fda211]{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}.mgh-name[data-v-53fda211]{font-size:var(--ui-font-size-lg);font-weight:var(--weight-medium);color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mgh-path[data-v-53fda211]{font-size:var(--text-base);font-weight:var(--weight-regular);color:var(--color-text-faint);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mgh-add[data-v-53fda211]{margin:-10px -12px -10px 0}.mgh-add[data-v-53fda211]:active{color:var(--color-text);background:var(--color-surface-sunken)}.mgh-more[data-v-53fda211]{margin:-10px -8px}.mgh-more[data-v-53fda211]:active{color:var(--color-text);background:var(--color-surface-sunken)}.srow[data-v-53fda211]{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--m-pad) var(--space-3) var(--m-indent);border-radius:var(--radius-md);cursor:pointer;position:relative}.srow[data-v-53fda211]:hover,.srow[data-v-53fda211]:active{background:var(--color-surface-sunken)}.srow.cur[data-v-53fda211]{background:var(--color-accent-soft);box-shadow:inset 0 0 0 1px var(--color-accent-bd)}.srow .m[data-v-53fda211]{flex:1;min-width:0}.srow .m .t[data-v-53fda211]{font-size:var(--text-base);font-weight:var(--weight-medium);line-height:var(--leading-tight);color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.srow.cur .m .t[data-v-53fda211]{color:var(--color-accent-hover)}.srow .m .t.run[data-v-53fda211]{position:relative}.srow .m .t.run[data-v-53fda211]:before{content:"";position:absolute;left:-14px;top:50%;transform:translateY(-50%);width:6px;height:6px;border-radius:var(--radius-full);background:var(--color-accent);animation:mRunPulse-53fda211 1.4s ease-in-out infinite}@keyframes mRunPulse-53fda211{0%,to{opacity:1}50%{opacity:.35}}.srow .m .t.aborted[data-v-53fda211]{position:relative}.srow .m .t.aborted[data-v-53fda211]:before{content:"";position:absolute;left:-14px;top:50%;transform:translateY(-50%);width:6px;height:6px;border-radius:var(--radius-full);background:var(--color-danger)}.srow .m .s[data-v-53fda211]{font-size:var(--text-base);font-weight:var(--weight-medium);font-variant-numeric:tabular-nums;color:var(--color-text-faint);margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.att[data-v-53fda211]{flex:none;font-family:var(--font-mono);font-size:max(9px,calc(var(--ui-font-size) - 4px));color:var(--surface-light);background:var(--color-warning);border-radius:var(--radius-full);padding:1px 7px}.srow .kb[data-v-53fda211]:active{color:var(--color-text);background:var(--color-surface-sunken)}.kmenu[data-v-53fda211]{position:absolute;right:12px;top:44px;z-index:var(--z-dropdown);min-width:96px;overflow:hidden}.wsmenu[data-v-53fda211]{top:calc(100% - 4px);right:var(--m-pad);min-width:132px}.mshow-more[data-v-53fda211]{display:flex;align-items:center;width:100%;min-height:44px;padding:var(--space-1) var(--m-pad) var(--space-1) var(--m-indent);background:none;border:none;color:var(--color-text-muted);font-size:var(--text-base);cursor:pointer;text-align:left}.mshow-more[data-v-53fda211]:active{color:var(--color-accent-hover);background:var(--color-surface-sunken)}.newrow[data-v-53fda211]{font-family:var(--sans)}.mlist .srow[data-v-53fda211]{margin:1px 8px;border-radius:var(--radius-md);border-bottom:none;padding:12px calc(var(--m-pad, 16px) - 8px) 12px calc(var(--m-indent, 39px) - 8px)}.mlist .srow.cur[data-v-53fda211]{box-shadow:inset 0 0 0 1px var(--color-accent-bd)}.group-title[data-v-2ff34053]{padding:var(--space-3) var(--space-3) var(--space-1);font-family:var(--font-ui);font-size:var(--text-xs);font-weight:var(--weight-medium);letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-faint)}.srow[data-v-2ff34053]{display:flex;align-items:center;gap:var(--space-3);width:100%;min-height:52px;padding:var(--space-3);background:none;border:none;border-radius:var(--radius-md);cursor:pointer;text-align:left;color:var(--color-text)}.srow[data-v-2ff34053]:hover:not(.read-only){background:var(--color-surface-sunken)}.srow[data-v-2ff34053]:active:not(.read-only){background:var(--color-surface-sunken)}.srow.read-only[data-v-2ff34053]{cursor:default}.srow-main[data-v-2ff34053]{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}.srow-label[data-v-2ff34053]{font-size:var(--text-base);color:var(--color-text)}.srow-sub[data-v-2ff34053]{font-size:var(--text-base);color:var(--color-text-faint);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.srow-val[data-v-2ff34053]{flex:none;font-family:var(--font-mono);font-size:var(--ui-font-size);font-weight:500;color:var(--color-accent-hover)}.srow-val.dim[data-v-2ff34053]{font-weight:400;color:var(--color-text-muted)}.cache-note[data-v-2ff34053]{padding:0 var(--space-3) var(--space-2);font-size:var(--text-xs);color:var(--color-text-faint);line-height:1.4}.chev[data-v-2ff34053]{flex:none;color:var(--color-text-faint);font-size:17px;line-height:1}.toggle[data-v-2ff34053]{flex:none;width:44px;height:26px;border-radius:var(--radius-full);background:var(--color-line);position:relative;transition:background .18s}.toggle.on[data-v-2ff34053]{background:var(--color-accent)}.toggle[data-v-2ff34053]:after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:var(--radius-full);box-sizing:border-box;background:var(--color-bg);border:1px solid var(--color-line);box-shadow:var(--shadow-xs);transition:left .18s}.toggle.on[data-v-2ff34053]:after{left:21px}.srow.pref[data-v-2ff34053]{cursor:default}.num-field[data-v-2ff34053]{display:inline-flex;align-items:center;gap:6px;flex:none;height:34px;padding:0 9px;border:1px solid var(--color-line);border-radius:var(--radius-md);background:var(--color-bg)}.num-input[data-v-2ff34053]{width:50px;border:none;outline:none;background:transparent;color:var(--color-text);font-family:var(--font-mono);font-size:var(--ui-font-size);text-align:right}.num-unit[data-v-2ff34053]{color:var(--color-text-muted);font-family:var(--font-mono);font-size:var(--ui-font-size-xs)}.srow.acct.in .srow-label[data-v-2ff34053]{color:var(--color-accent-hover);font-weight:500}.srow.acct.out .srow-label[data-v-2ff34053]{color:var(--color-danger)}.ctx-meter[data-v-2ff34053]{flex:none;width:96px;height:7px;border-radius:var(--radius-full);background:var(--color-surface-sunken);overflow:hidden}.ctx-meter i[data-v-2ff34053]{display:block;height:100%;background:var(--color-accent)}@media(max-width:640px){.srow[data-v-2ff34053]{align-items:flex-start;gap:10px;min-width:0;padding:14px max(14px,var(--safe-right)) 14px max(14px,var(--safe-left))}.group-title[data-v-2ff34053],.cache-note[data-v-2ff34053]{padding-left:max(14px,var(--safe-left));padding-right:max(14px,var(--safe-right))}.srow-main[data-v-2ff34053]{flex:1 1 auto}.srow-sub[data-v-2ff34053]{white-space:normal;overflow-wrap:anywhere}.srow.pref[data-v-2ff34053]{flex-wrap:wrap}.srow.pref .srow-main[data-v-2ff34053]{flex:1 0 100%}.num-field[data-v-2ff34053]{margin-left:auto}.srow-val[data-v-2ff34053],.chev[data-v-2ff34053],.toggle[data-v-2ff34053],.ctx-meter[data-v-2ff34053]{margin-top:2px}}.srow[data-v-2ff34053],.srow-sub[data-v-2ff34053],.srow-val[data-v-2ff34053],.cache-note[data-v-2ff34053]{font-family:var(--sans)}.arch-subhead[data-v-2ff34053]{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-2) var(--space-3) var(--space-1)}.arch-back[data-v-2ff34053]{display:inline-flex;align-items:center;gap:2px;border:none;background:none;padding:var(--space-1) var(--space-2) var(--space-1) 0;font-family:var(--font-ui);font-size:var(--text-base);color:var(--color-accent-hover);cursor:pointer}.chev.back[data-v-2ff34053]{font-size:20px}.arch-count[data-v-2ff34053]{font-family:var(--font-ui);font-size:var(--text-sm);color:var(--color-text-faint)}.arch-tools[data-v-2ff34053]{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);flex-wrap:wrap}.arch-search-input[data-v-2ff34053]{flex:1;min-width:160px}.arch-row[data-v-2ff34053]{display:flex;align-items:center;gap:var(--space-3);min-height:56px;padding:var(--space-2) var(--space-3);border-top:1px solid var(--color-line)}.arch-row[data-v-2ff34053]:first-of-type{border-top:none}.arch-meta[data-v-2ff34053]{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}.arch-name[data-v-2ff34053]{font-family:var(--font-ui);font-size:var(--text-base);color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.arch-time[data-v-2ff34053]{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-faint)}.arch-empty[data-v-2ff34053]{padding:var(--space-6) var(--space-4);text-align:center;font-family:var(--font-ui);font-size:var(--text-sm);color:var(--color-text-faint)}.ob-brand[data-v-fbdd3eab]{flex:1;display:flex;align-items:center;gap:var(--space-3);min-width:0}.ob-brand-text[data-v-fbdd3eab]{min-width:0}.ob-logo[data-v-fbdd3eab]{width:52px;height:36px;flex:none}.ob-title[data-v-fbdd3eab]{color:var(--color-text);font-size:var(--text-xl);font-weight:var(--weight-medium)}.ob-sub[data-v-fbdd3eab]{color:var(--color-text-muted);font-size:var(--text-base);margin-top:1px}.ob-sec[data-v-fbdd3eab]{margin-bottom:var(--space-4)}.ob-label[data-v-fbdd3eab]{color:var(--color-text);font-size:var(--text-sm);font-weight:var(--weight-medium);margin-bottom:var(--space-2)}.ob-start[data-v-fbdd3eab]{width:100%}.ob-eyes[data-v-fbdd3eab]{animation:ob-eye-look-fbdd3eab 6s ease-in-out infinite}.ob-eye[data-v-fbdd3eab]{transform-box:fill-box;transform-origin:center;animation:ob-eye-blink-fbdd3eab 4s ease-in-out infinite}@keyframes ob-eye-look-fbdd3eab{0%,42%{transform:translate(0)}47%,53%{transform:translate(2px)}58%,80%{transform:translate(0)}84%,90%{transform:translate(-2px)}95%,to{transform:translate(0)}}@keyframes ob-eye-blink-fbdd3eab{0%,94%,to{transform:scaleY(1)}96.5%,98%{transform:scaleY(.12)}}@media(prefers-reduced-motion:reduce){.ob-eyes[data-v-fbdd3eab],.ob-eye[data-v-fbdd3eab]{animation:none}}.gload[data-v-0b6dec6a]{position:fixed;top:0;left:0;width:100vw;height:100vh;height:100dvh;min-width:100vw;min-height:100dvh;z-index:var(--z-toast);display:flex;align-items:center;justify-content:center;background:var(--bg)}.gload-box[data-v-0b6dec6a]{display:flex;flex-direction:column;align-items:center;gap:22px;transform:translateY(-6%)}.gload-logo[data-v-0b6dec6a]{width:128px;height:auto;color:var(--color-text);animation:gload-pop-0b6dec6a .55s cubic-bezier(.22,1,.36,1) both}.gload-text[data-v-0b6dec6a]{font-family:var(--mono);font-size:var(--text-base);color:var(--muted);letter-spacing:.04em}.gload-issue[data-v-0b6dec6a]{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);max-width:min(480px,80vw);font-family:var(--sans);font-size:var(--text-sm);color:var(--muted);text-align:center}.gload-issue-detail[data-v-0b6dec6a]{font-family:var(--mono);font-size:var(--text-xs);color:var(--muted);opacity:.8;word-break:break-word}@keyframes gload-pop-0b6dec6a{0%{opacity:0;transform:translateY(6px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@media(prefers-reduced-motion:reduce){.gload-logo[data-v-0b6dec6a]{animation:none}}.gload-text[data-v-0b6dec6a]{font-family:var(--sans)}.kap-root[data-v-3cda6fe3]{height:100vh;display:flex;flex-direction:column;background:var(--bg);font-family:var(--mono);font-size:calc(var(--ui-font-size) - 2.5px);color:var(--color-text)}.kap-head[data-v-3cda6fe3]{flex:none;display:flex;align-items:center;gap:8px;padding:10px 14px;border-bottom:1px solid var(--line);background:var(--panel)}.kap-count[data-v-3cda6fe3]{color:var(--muted)}.kap-head-actions[data-v-3cda6fe3]{margin-left:auto;display:flex;gap:6px}.kap-head-actions button[data-v-3cda6fe3],.kap-view-toggle button[data-v-3cda6fe3]{padding:3px 8px;border:1px solid var(--line);border-radius:6px;background:var(--bg);color:var(--muted);font:inherit;cursor:pointer}.kap-head-actions button[data-v-3cda6fe3]:hover,.kap-view-toggle button[data-v-3cda6fe3]:hover{color:var(--color-text)}.kap-head-actions button.on[data-v-3cda6fe3],.kap-view-toggle button.on[data-v-3cda6fe3]{color:var(--color-accent-hover);border-color:var(--color-accent-bd);background:var(--color-accent-soft)}.kap-filters[data-v-3cda6fe3]{flex:none;display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:7px 10px;border-bottom:1px solid var(--line)}.kap-filters select[data-v-3cda6fe3],.kap-filters input[type=text][data-v-3cda6fe3]{padding:3px 6px;border:1px solid var(--line);border-radius:6px;background:var(--bg);color:var(--color-text);font:inherit;min-width:0}.kap-filters input[type=text][data-v-3cda6fe3]{flex:1;min-width:120px}.kap-check[data-v-3cda6fe3]{display:inline-flex;align-items:center;gap:4px;color:var(--muted);white-space:nowrap}.kap-view-toggle[data-v-3cda6fe3]{display:flex;gap:0}.kap-view-toggle button[data-v-3cda6fe3]:first-child{border-radius:6px 0 0 6px;border-right:none}.kap-view-toggle button[data-v-3cda6fe3]:last-child{border-radius:0 6px 6px 0}.kap-list[data-v-3cda6fe3]{flex:1;min-height:0;overflow-y:auto}.kap-empty[data-v-3cda6fe3]{padding:18px 12px;color:var(--muted);text-align:center}.kap-row[data-v-3cda6fe3]{display:flex;align-items:baseline;gap:7px;width:100%;padding:3px 10px;border:none;border-bottom:1px solid var(--line);background:transparent;color:var(--color-text);font:inherit;text-align:left;cursor:pointer}.kap-row[data-v-3cda6fe3]:hover{background:var(--panel2)}.kap-row.expanded[data-v-3cda6fe3]{background:var(--color-accent-soft)}.kap-ts[data-v-3cda6fe3]{flex:none;color:var(--muted)}.kap-badge[data-v-3cda6fe3]{flex:none;padding:0 5px;border-radius:var(--radius-sm);font-size:max(9px,calc(var(--ui-font-size) - 4.5px));font-weight:500;line-height:1.7}.b-rest[data-v-3cda6fe3]{background:var(--color-accent-soft);color:var(--color-accent-hover)}.b-in[data-v-3cda6fe3]{background:var(--color-accent-soft);color:var(--color-success)}.b-out[data-v-3cda6fe3]{background:var(--color-accent-soft);color:var(--color-warning)}.b-life[data-v-3cda6fe3]{background:var(--panel2);color:var(--muted)}.b-err[data-v-3cda6fe3]{background:var(--color-warning);color:var(--bg)}.kap-label[data-v-3cda6fe3]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kap-detail[data-v-3cda6fe3]{border-bottom:1px solid var(--line);background:var(--bg);padding:6px 10px 10px}.kap-detail-actions[data-v-3cda6fe3]{display:flex;justify-content:flex-end;margin-bottom:4px}.kap-detail-actions button[data-v-3cda6fe3]{padding:2px 8px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--muted);font:inherit;cursor:pointer}.kap-detail-actions button[data-v-3cda6fe3]:hover{color:var(--color-text)}.kap-detail pre[data-v-3cda6fe3]{margin:0;max-height:320px;overflow:auto;white-space:pre-wrap;word-break:break-word;font-size:calc(var(--ui-font-size) - 3px);line-height:1.45}.kap-agg[data-v-3cda6fe3]{flex:1;min-height:0;overflow-y:auto;padding:8px 10px}.kap-agg h4[data-v-3cda6fe3]{margin:8px 0 4px;font-size:calc(var(--ui-font-size) - 2.5px);color:var(--muted)}.kap-agg table[data-v-3cda6fe3]{width:100%;border-collapse:collapse}.kap-agg th[data-v-3cda6fe3],.kap-agg td[data-v-3cda6fe3]{padding:3px 6px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.kap-agg th[data-v-3cda6fe3]{color:var(--muted);font-weight:500}.kap-agg .num[data-v-3cda6fe3]{text-align:right}.kap-agg .err[data-v-3cda6fe3]{color:var(--color-warning);font-weight:500}.kap-agg .mono[data-v-3cda6fe3]{word-break:break-all}.kap-fab[data-v-21346738]{position:fixed;right:10px;bottom:10px;z-index:var(--z-overlay);padding:5px 9px;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--muted);font-family:var(--mono);font-size:calc(var(--ui-font-size) - 3px);font-weight:500;letter-spacing:.04em;cursor:pointer;opacity:.75}.kap-fab[data-v-21346738]:hover{opacity:1;color:var(--color-accent)}.server-auth-overlay[data-v-469e14bc]{position:fixed;inset:0;z-index:var(--z-max);display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--color-bg) 70%,transparent)}.server-auth-card[data-v-469e14bc]{width:480px;max-width:calc(100vw - 48px);background:var(--color-surface-raised);border:1px solid var(--color-line);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);overflow:hidden;color:var(--color-text);font-family:var(--font-ui)}.server-auth-head[data-v-469e14bc]{display:flex;flex-direction:column;padding:20px 22px 14px}.server-auth-title[data-v-469e14bc]{margin:0;font-size:var(--text-lg);font-weight:var(--weight-medium);letter-spacing:-.01em;color:var(--color-text)}.server-auth-hint[data-v-469e14bc]{margin:4px 0 0;font-size:var(--text-base);line-height:var(--leading-normal);color:var(--color-text-muted)}.server-auth-hint code[data-v-469e14bc]{padding:1px 5px;font-family:var(--font-mono);font-size:var(--text-xs);background:var(--color-surface-sunken);border-radius:var(--radius-xs)}.server-auth-body[data-v-469e14bc]{padding:4px 22px 18px}.server-auth-foot[data-v-469e14bc]{display:flex;justify-content:flex-end;gap:10px;padding:14px 22px 20px}.internal-build-tag[data-v-086c00dc]{flex:none;display:inline-flex;align-items:center;gap:4px;padding:2px 7px;border-radius:999px;background:var(--color-logo-dev);color:var(--color-on-logo-dev);font-size:11px;font-weight:var(--weight-semibold);letter-spacing:.01em;line-height:1.4;white-space:nowrap;user-select:none}.gload-fade-leave-active[data-v-59580251]{transition:opacity .28s ease}.gload-fade-leave-to[data-v-59580251]{opacity:0}.app-shell[data-v-59580251]{position:fixed;top:var(--app-top, 0px);left:0;right:0;height:100vh;height:100dvh;height:var(--app-height, 100dvh);display:flex;flex-direction:column;overflow:hidden;box-sizing:border-box}.auth-page[data-v-59580251]{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:32px;background:var(--bg);color:var(--color-text);box-sizing:border-box}.auth-page-inner[data-v-59580251]{width:min(420px,100%);display:flex;flex-direction:column;align-items:flex-start;gap:18px}.auth-page-logo[data-v-59580251]{width:64px;height:44px;flex:none;cursor:pointer;user-select:none;-webkit-user-select:none;transition:transform .18s ease}.auth-page-logo[data-v-59580251]:hover{transform:scale(1.06)}.auth-page-copy[data-v-59580251]{display:flex;flex-direction:column;gap:8px}.auth-page-copy h1[data-v-59580251]{margin:0;font-family:var(--sans);font-size:30px;line-height:1.15;font-weight:500;letter-spacing:0;color:var(--color-text)}.auth-page-copy p[data-v-59580251]{margin:0;font-family:var(--sans);font-size:var(--ui-font-size-lg);line-height:1.55;color:var(--dim)}.app[data-v-59580251]{--preview-w: 460px;flex:1;min-height:0;position:relative;display:grid;grid-template-columns:auto 0 minmax(0,1fr) 0 auto;background:var(--bg);color:var(--color-text);overflow:hidden;box-sizing:border-box}.app[data-v-59580251]>*{min-height:0;min-width:0}.app>.side[data-v-59580251]{grid-column:1}.side-handle[data-v-59580251]{grid-column:2}.app:not(.mobile)>.con[data-v-59580251]{grid-column:3}.preview-handle[data-v-59580251]{grid-column:4}.sidebar-toggle-btn[data-v-59580251]{position:absolute;top:11px;left:16px;z-index:var(--z-sticky);animation:sidebar-toggle-btn-in-59580251 .18s var(--ease-out) .12s backwards;-webkit-app-region:no-drag}.app.macos-desktop .sidebar-toggle-btn[data-v-59580251]{left:72px;animation:none}@keyframes sidebar-toggle-btn-in-59580251{0%{opacity:0}}.internal-build-fab[data-v-59580251]{position:absolute;right:var(--space-3);bottom:var(--space-3);z-index:var(--z-sticky);pointer-events:none}.app.mobile[data-v-59580251]{grid-template-columns:1fr;grid-template-rows:auto 1fr}.global-preview[data-v-59580251]{grid-column:5;min-width:0;min-height:0;width:0;background:var(--bg);overflow:hidden;transition:width .28s cubic-bezier(.4,0,.2,1)}.global-preview.open[data-v-59580251]{width:var(--preview-w)}.global-preview.no-anim[data-v-59580251]{transition:none}.global-preview[data-v-59580251]:not(.overlay)>*{width:var(--preview-w);height:100%;box-sizing:border-box;border-left:1px solid var(--line)}.global-preview.overlay[data-v-59580251]{position:fixed;inset:0;z-index:var(--z-sticky);width:auto;transition:none;border-top:2px solid var(--color-text)}@media(max-width:640px){.auth-page[data-v-59580251]{align-items:flex-start;padding:max(48px,var(--safe-top)) max(20px,var(--safe-right)) max(24px,var(--safe-bottom)) max(20px,var(--safe-left))}.auth-page-copy h1[data-v-59580251]{font-size:26px}.auth-page-btn[data-v-59580251]{width:100%}}:root{--panel-head-h: 48px}.app:not(.mobile) .chat-header{transition:padding-left .28s cubic-bezier(.4,0,.2,1)}.app.sidebar-collapsed .chat-header{padding-left:52px}.app.sidebar-collapsed.macos-desktop .chat-header{padding-left:108px}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;tab-size:4}body{margin:0}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit;margin:0}p,blockquote,dl,dd,figure,pre{margin:0}ol,ul,menu{list-style:none;margin:0;padding:0}a{color:inherit;text-decoration:inherit}b,strong{font-weight:var(--weight-medium)}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}button,input,optgroup,select,textarea{margin:0;padding:0;font-family:inherit;font-size:100%;line-height:inherit;color:inherit}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background:transparent;background-image:none}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block}img,video{max-width:100%;height:auto}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1}table{border-collapse:collapse;border-color:inherit;text-indent:0}hr{height:0;color:inherit;border-top-width:1px}fieldset{margin:0;padding:0}legend{padding:0}dialog{padding:0}summary{display:list-item}[hidden]{display:none}@supports (interpolate-size: allow-keywords){:root{interpolate-size:allow-keywords}}:root{--dim: #595959;--muted: #8a8a8a;--faint: #b5b5b5;--line: #e9edf3;--line2: #f1f4f8;--canvas: #f4f6fa;--sh: 0 1px 3px rgba(28, 40, 66, .05), 0 6px 18px rgba(28, 40, 66, .06);--shc: 0 1px 2px rgba(28, 40, 66, .05);--panel: #fafbfc;--panel2: #f3f5f8;--bg: #ffffff;--blue: #1783ff;--blue2: #0f6fe0;--soft: #e8f3ff;--bd: #cfe6ff;--logo: #1783ff;--bluebg: #e8f3ff;--blueln: #cfe6ff;--ok: #0e7a38;--warn: #a9610a;--star: #eab308;--err: #c0392b;--hover: rgba(0, 0, 0, .05);--r-xs: var(--radius-sm);--r-sm: var(--radius-md);--r-md: var(--radius-lg);--r-lg: var(--radius-xl);--base-ui-font-size: 14px;--ui-font-size: var(--base-ui-font-size);--ui-font-size-sm: calc(var(--ui-font-size) - 1px);--ui-font-size-xs: calc(var(--ui-font-size) - 2px);--ui-font-size-lg: calc(var(--ui-font-size) + 1px);--ui-font-size-xl: calc(var(--ui-font-size) + 2px);--content-font-size: calc(var(--base-ui-font-size) + 1px);--mono: "JetBrains Mono Variable", "JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--sans: var(--font-ui);color-scheme:light dark}:root{--safe-top: env(safe-area-inset-top, 0px);--safe-right: env(safe-area-inset-right, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px)}.kw-icon{display:inline-block;flex:none;vertical-align:-.15em}code,pre,kbd,samp,tt{font-feature-settings:"liga" 0,"calt" 0,"ss01" 0;font-variant-ligatures:none}html[data-color-scheme=light]{color-scheme:light}html[data-color-scheme=system]{color-scheme:light dark}html[data-color-scheme=dark]{color-scheme:dark;--dim: #9aa0a8;--muted: #727983;--faint: #525960;--line: #2d333b;--line2: #22272e;--panel: #1c2128;--panel2: #161b22;--bg: #0d1117;--blue: #58a6ff;--blue2: #79b8ff;--soft: #1f2937;--bd: #1f6feb;--logo: #58a6ff;--bluebg: #1c2a3a;--blueln: #1f4f7a;--ok: #3fb950;--warn: #d29922;--star: #facc15;--err: #f85149;--hover: rgba(255, 255, 255, .07);--canvas: #161b22;--sh: 0 1px 3px rgba(0, 0, 0, .35), 0 6px 18px rgba(0, 0, 0, .4);--shc: 0 1px 2px rgba(0, 0, 0, .35)}@media(prefers-color-scheme:dark){html[data-color-scheme=system]{--dim: #9aa0a8;--muted: #727983;--faint: #525960;--line: #2d333b;--line2: #22272e;--panel: #1c2128;--panel2: #161b22;--bg: #0d1117;--blue: #58a6ff;--blue2: #79b8ff;--soft: #1f2937;--bd: #1f6feb;--logo: #58a6ff;--bluebg: #1c2a3a;--blueln: #1f4f7a;--ok: #3fb950;--warn: #d29922;--star: #facc15;--err: #f85149;--hover: rgba(255, 255, 255, .07);--canvas: #161b22;--sh: 0 1px 3px rgba(0, 0, 0, .35), 0 6px 18px rgba(0, 0, 0, .4);--shc: 0 1px 2px rgba(0, 0, 0, .35)}}html[data-accent=mono]{--accent-primary: #171717;--color-accent: #171717;--color-accent-hover: #383838;--color-accent-soft: #f1f1f2;--color-accent-bd: #d4d4d8;--blue: #171717;--blue2: #383838;--soft: #f1f1f2;--bd: #d4d4d8;--bluebg: #f4f4f5;--blueln: #e4e4e7;--logo: #171717}html[data-color-scheme=dark][data-accent=mono]{--accent-primary: #e8eaed;--color-accent: #e8eaed;--color-accent-hover: #c9cdd4;--color-accent-soft: #21262d;--color-accent-bd: #444c56;--color-text-on-accent: var(--color-bg);--blue: #e8eaed;--blue2: #c9cdd4;--soft: #21262d;--bd: #444c56;--bluebg: #21262d;--blueln: #30363d;--logo: #e8eaed}@media(prefers-color-scheme:dark){html[data-color-scheme=system][data-accent=mono]{--accent-primary: #e8eaed;--color-accent: #e8eaed;--color-accent-hover: #c9cdd4;--color-accent-soft: #21262d;--color-accent-bd: #444c56;--color-text-on-accent: var(--color-bg);--blue: #e8eaed;--blue2: #c9cdd4;--soft: #21262d;--bd: #444c56;--bluebg: #21262d;--blueln: #30363d;--logo: #e8eaed}}:root{--accent-primary: #1783ff;--accent-secondary: #6b7280;--surface-light: #ffffff;--surface-dark: #0d1117;--color-bg: #ffffff;--color-surface: #fafbfc;--color-surface-raised: #ffffff;--color-surface-sunken: #f3f5f8;--color-media-alpha-bg-1: color-mix(in srgb, var(--color-bg) 52%, var(--color-text) 48%);--color-media-alpha-bg-2: color-mix(in srgb, var(--color-bg) 42%, var(--color-text) 58%);--media-alpha-canvas: conic-gradient( var(--color-media-alpha-bg-1) 25%, var(--color-media-alpha-bg-2) 0 50%, var(--color-media-alpha-bg-1) 0 75%, var(--color-media-alpha-bg-2) 0 ) 0 0 / 16px 16px;--color-text: rgba(0, 0, 0, .9);--color-text-muted: #6b7280;--color-text-faint: #9aa3af;--color-text-on-accent: #ffffff;--color-line: #e7eaee;--color-line-strong: #d4d9e0;--color-selected: #00000014;--color-hover: #0000000d;--color-sidebar-bg: #fbfaf9;--color-accent: var(--accent-primary);--color-accent-hover: #0f6fe0;--color-accent-soft: #e8f3ff;--color-accent-bd: #cfe6ff;--color-success: #0e7a38;--color-success-soft: #e7f6ee;--color-success-bd: #bfe3cc;--color-warning: #a9610a;--color-warning-soft: #fbf1e0;--color-warning-bd: #f0d9b8;--color-danger: #c0392b;--color-danger-soft: #fbeaea;--color-danger-bd: #f0cccc;--color-done: #8250df;--color-done-soft: #f3e8ff;--color-done-bd: #e0ccff;--color-info: var(--accent-primary);--color-logo-dev: #f5b301;--color-on-logo-dev: #3a2a00;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--radius-xs: 4px;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-2xl: 20px;--radius-full: 999px;--z-base: 0;--z-sticky: 100;--z-dropdown: 200;--z-tooltip: 250;--z-overlay: 300;--z-modal: 400;--z-toast: 600;--z-max: 9999;--shadow-xs: 0 1px 2px rgba(16, 24, 40, .04);--shadow-sm: 0 1px 2px rgba(16, 24, 40, .05), 0 1px 3px rgba(16, 24, 40, .06);--shadow-md: 0 4px 12px rgba(16, 24, 40, .07), 0 2px 4px rgba(16, 24, 40, .05);--shadow-lg: 0 12px 32px rgba(16, 24, 40, .12), 0 4px 10px rgba(16, 24, 40, .08);--shadow-xl: 0 24px 64px rgba(16, 24, 40, .18), 0 8px 20px rgba(16, 24, 40, .1);--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-in-out: cubic-bezier(.4, 0, .2, 1);--duration-fast: .12s;--duration-base: .16s;--duration-slow: .26s;--font-ui: "Inter Variable", "Inter", "Helvetica Neue", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Source Han Sans SC", "Noto Sans SC", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-display: var(--font-ui);--font-mono: "JetBrains Mono Variable", "JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--text-xs: 12px;--text-sm: 13px;--text-base: 14px;--text-lg: 16px;--text-xl: 18px;--text-2xl: 22px;--leading-tight: 1.25;--leading-normal: 1.5;--leading-relaxed: 1.7;--weight-regular: 400;--weight-medium: 500;--weight-semibold: 700;--p-focus-ring: 0 0 0 3px var(--color-accent-soft);--p-focus-ring-strong: 0 0 0 3px var(--color-accent-soft), 0 0 0 1px var(--color-accent);--p-selection: rgba(23, 131, 255, .18);--p-ic-sm: 14px;--p-ic-md: 16px;--p-ic-lg: 20px;--p-sidebar-w: 264px;--p-content-max: 760px;--p-content-wide: 920px;--p-table-max: 1040px;--p-table-cell-max: 700px;--p-bp-sm: 640px;--p-bp-md: 980px}html[data-color-scheme=dark]{--accent-primary: #58a6ff;--color-bg: #0d1117;--color-surface: #161b22;--color-surface-raised: #1c2128;--color-surface-sunken: #0d1117;--color-text: #c9cdd4;--color-text-muted: #9aa0a8;--color-text-faint: #6b7280;--color-line: #2d333b;--color-line-strong: #3d444d;--color-selected: #ffffff14;--color-hover: #ffffff0d;--color-sidebar-bg: #181817;--color-accent: #58a6ff;--color-accent-hover: #79b8ff;--color-accent-soft: rgba(88, 166, 255, .14);--p-selection: rgba(88, 166, 255, .32);--color-accent-bd: rgba(88, 166, 255, .28);--color-success: #3fb950;--color-success-soft: rgba(63, 185, 80, .14);--color-success-bd: rgba(63, 185, 80, .28);--color-warning: #d29922;--color-warning-soft: rgba(210, 153, 34, .14);--color-warning-bd: rgba(210, 153, 34, .28);--color-danger: #f85149;--color-danger-soft: rgba(248, 81, 73, .14);--color-danger-bd: rgba(248, 81, 73, .28);--color-done: #a371f7;--color-done-soft: rgba(163, 113, 247, .14);--color-done-bd: rgba(163, 113, 247, .28);--color-info: #58a6ff;--shadow-xs: 0 1px 2px rgba(0, 0, 0, .2);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .22), 0 1px 3px rgba(0, 0, 0, .18);--shadow-md: 0 4px 12px rgba(0, 0, 0, .3), 0 2px 4px rgba(0, 0, 0, .24);--shadow-lg: 0 12px 32px rgba(0, 0, 0, .34), 0 4px 10px rgba(0, 0, 0, .28);--shadow-xl: 0 24px 64px rgba(0, 0, 0, .42), 0 8px 20px rgba(0, 0, 0, .32)}@media(prefers-color-scheme:dark){html[data-color-scheme=system]{--accent-primary: #58a6ff;--color-bg: #0d1117;--color-surface: #161b22;--color-surface-raised: #1c2128;--color-surface-sunken: #0d1117;--color-text: #c9cdd4;--color-text-muted: #9aa0a8;--color-text-faint: #6b7280;--color-line: #2d333b;--color-line-strong: #3d444d;--color-selected: #ffffff14;--color-hover: #ffffff0d;--color-sidebar-bg: #181817;--color-accent: #58a6ff;--color-accent-hover: #79b8ff;--color-accent-soft: rgba(88, 166, 255, .14);--p-selection: rgba(88, 166, 255, .32);--color-accent-bd: rgba(88, 166, 255, .28);--color-success: #3fb950;--color-success-soft: rgba(63, 185, 80, .14);--color-success-bd: rgba(63, 185, 80, .28);--color-warning: #d29922;--color-warning-soft: rgba(210, 153, 34, .14);--color-warning-bd: rgba(210, 153, 34, .28);--color-danger: #f85149;--color-danger-soft: rgba(248, 81, 73, .14);--color-danger-bd: rgba(248, 81, 73, .28);--color-done: #a371f7;--color-done-soft: rgba(163, 113, 247, .14);--color-done-bd: rgba(163, 113, 247, .28);--color-info: #58a6ff;--shadow-xs: 0 1px 2px rgba(0, 0, 0, .2);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .22), 0 1px 3px rgba(0, 0, 0, .18);--shadow-md: 0 4px 12px rgba(0, 0, 0, .3), 0 2px 4px rgba(0, 0, 0, .24);--shadow-lg: 0 12px 32px rgba(0, 0, 0, .34), 0 4px 10px rgba(0, 0, 0, .28);--shadow-xl: 0 24px 64px rgba(0, 0, 0, .42), 0 8px 20px rgba(0, 0, 0, .32)}}html,body,#app{height:100%;margin:0;background:var(--bg)}#app{position:fixed;inset:0}html,body{overflow:hidden}@supports not selector(::-webkit-scrollbar){*{scrollbar-width:thin;scrollbar-color:rgba(128,128,128,.3) transparent}}*::-webkit-scrollbar{width:6px;height:6px}*::-webkit-scrollbar-track{background:transparent}*::-webkit-scrollbar-thumb{background:#8080804d;border-radius:999px}*::-webkit-scrollbar-thumb:hover{background:#80808080}*::-webkit-scrollbar-corner{background:transparent}body{font-family:var(--sans);color:var(--color-text);background:var(--bg);font-size:var(--ui-font-size);font-weight:400;line-height:1.6;font-optical-sizing:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:auto;font-synthesis:none;text-size-adjust:100%;-webkit-hyphens:none;hyphens:none}@media(max-width:640px){.backdrop{align-items:flex-end;justify-content:stretch}.backdrop .dialog{width:100%;max-width:100%;max-height:88vh;border-radius:16px 16px 0 0;border-left:none;border-right:none;border-bottom:none;border-top:1px solid var(--line);box-shadow:0 -10px 30px #0000002e;animation:kimi-sheet-up .26s cubic-bezier(.4,0,.2,1)}}@keyframes kimi-sheet-up{0%{transform:translateY(101%)}to{transform:translateY(0)}}.backdrop,.ob-backdrop{min-width:100vw!important;min-height:100vh!important;min-height:100dvh!important}@keyframes kimi-card-in{0%{opacity:0;transform:translateY(8px) scale(.995)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes kimi-check-in{0%{opacity:0;transform:scale(.4)}60%{opacity:1;transform:scale(1.15)}to{opacity:1;transform:scale(1)}}@media(prefers-reduced-motion:reduce){*{animation-duration:.001ms!important;animation-delay:0ms!important;transition-duration:.001ms!important}}.ch-eyes{animation:kimi-eye-look 16s ease-in-out infinite}.ch-eye{transform-box:fill-box;transform-origin:center;animation:kimi-eye-blink 11s ease-in-out infinite}@keyframes kimi-eye-look{0%,42%{transform:translate(0)}47%,53%{transform:translate(2px)}58%,80%{transform:translate(0)}84%,90%{transform:translate(-2px)}95%,to{transform:translate(0)}}@keyframes kimi-eye-blink{0%,94%,to{transform:scaleY(1)}96.5%,98%{transform:scaleY(.12)}}@media(prefers-reduced-motion:reduce){.ch-eyes,.ch-eye{animation:none}}.ch-logo.blink-now .ch-eye{animation:kimi-eye-blink-once .24s ease-in-out}@keyframes kimi-eye-blink-once{0%,to{transform:scaleY(1)}50%{transform:scaleY(.1)}}.md .markdown-renderer img{min-width:0;min-height:0}.app{font-size:var(--ui-font-size)}.md,.md .markdown-renderer,.md .markdown-renderer p,.md .markdown-renderer li,.md .markdown-renderer blockquote,.md .markdown-renderer td,.md .markdown-renderer th,.u-bub,.u-bub .u-text,.a-msg .msg,.box .bb,.ph{font-size:var(--content-font-size)}.md .code-block-container pre,.md .markstream-pre,.md .code-block-container pre code,.md .diff-pre code,.box .bh,.queue-item,.queue-text,.ctx-num,.model-pill,.perm-pill,.mode-pill,.compact-chip,.qcard,.qtext,.qopt,.qbtn,.srow,.srow-val{font-size:var(--ui-font-size)}.md :not(pre)>code,.md .inline-code,.a-msg code,.qopt-desc,.srow-label{font-size:var(--ui-font-size-sm)}.code-block-header,.code-block-header *,.diff-lang,.queue-label,.qopt-key,.qstep,.srow-sub{font-size:var(--ui-font-size-xs)}@media(max-width:640px){.u-bub .u-text,.a-msg .msg,.ph{font-size:max(16px,var(--ui-font-size-xl))}}
diff --git a/apps/kimi-code/dist-web/assets/index-bE2IzaLg.js b/apps/kimi-code/dist-web/assets/index-bE2IzaLg.js
new file mode 100644
index 0000000000..23ff96a1d7
--- /dev/null
+++ b/apps/kimi-code/dist-web/assets/index-bE2IzaLg.js
@@ -0,0 +1,100 @@
+const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/DesignSystemView-UYw_7SpS.js","assets/vendor-ucnN-Sh8.js","assets/vendor-4gi77x_E.css","assets/vendor-markstream-D6yjq9lL.js","assets/vendor-markstream-Boo68so5.css","assets/vendor-katex-Com_2SPi.js","assets/vendor-katex-Cp579UoJ.css","assets/DesignSystemView-CgaL5VJY.css"])))=>i.map(i=>d[i]);
+import{g as I,d as Ie,o as a,c,n as fe,K as yt,m as Ne,a as r,v as G,A as vu,z as A,B as $,bD as Ue,w as Oe,k as Ke,l as Ln,Q as lo,b as M,u as l,x as H,E as d,h as ht,F as he,r as Pe,G as gt,bE as qn,bF as Ad,s as Td,C as Bn,H as Jn,e as rt,R as kt,bG as En,U as Re,J as re,V as sl,N as hu,bH as Wo,i as mo,bI as Pd,S as gu,T as Yo,p as Io,bJ as Ed,bK as Dl,bL as zl,bM as yu,j as Ld}from"./vendor-ucnN-Sh8.js";import{_ as ku,O as Bd,P as Rd,W as Od,x as Dd,a as zd,b as Fd,y as Nd,h as qd,g as Wd,p as Hd,m as Ud}from"./vendor-markstream-D6yjq9lL.js";import"./vendor-katex-Com_2SPi.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))s(o);new MutationObserver(o=>{for(const i of o)if(i.type==="childList")for(const u of i.addedNodes)u.tagName==="LINK"&&u.rel==="modulepreload"&&s(u)}).observe(document,{childList:!0,subtree:!0});function n(o){const i={};return o.integrity&&(i.integrity=o.integrity),o.referrerPolicy&&(i.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?i.credentials="include":o.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function s(o){if(o.ep)return;o.ep=!0;const i=n(o);fetch(o.href,i)}})();const We={permission:"kimi-web.permission",activeWorkspace:"kimi-active-workspace",planMode:"kimi-web.plan-mode",planArmed:"kimi-web.plan-armed",swarmMode:"kimi-web.swarm-mode",supermoonMode:"kimi-web.supermoon-mode",goalMode:"kimi-web.goal-mode",uiFontSize:"kimi-web.ui-font-size",starredModels:"kimi-web.starred-models",unread:"kimi-web.unread",onboarded:"kimi-web.onboarded",accent:"kimi-web.accent",colorScheme:"kimi-web.color-scheme",hiddenWorkspaces:"kimi-web.hidden-workspaces",collapsedWorkspaces:"kimi-web.collapsed-workspaces",workspaceOrder:"kimi-web.workspace-order",workspaceNameOverrides:"kimi-web.workspace-name-overrides",workspaceSort:"kimi-web.workspace-sort",workspaceRecencyFloor:"kimi-web.workspace-recency-floor",pinnedSessions:"kimi-web.pinned-sessions",sessionEmoji:"kimi-web.session-emoji",conversationToc:"kimi-web.beta-toc",notifyOnComplete:"kimi-web.notify-on-complete",notifyOnQuestion:"kimi-web.notify-on-question",notifyOnApproval:"kimi-web.notify-on-approval",soundOnComplete:"kimi-web.sound-on-complete",inputHistory:"kimi-web.input-history",pluginExtensionHintDismissed:"kimi-web.plugins.extension-hint-dismissed",locale:"kimi-locale",diffColorblind:"kimi-web.diff-colorblind",clientId:"kimi-web.client-id",debug:"kimi-web.debug",openInLastTarget:"kimi-web.open-in.last-target",sidebarCollapsed:"kimi-web.sidebar-collapsed",sidebarWidth:"kimi-web.sidebar-width",sidebarViewMode:"kimi-web.sidebar-view-mode",codeFont:"kimi-web.code-font",contentAlign:"kimi-web.content-align",theme:"kimi-web.theme",thinking:"kimi-web.thinking"};function Fl(e){return`kimi-web.draft.${e&&e.length>0?e:"__new__"}`}function It(e){try{return globalThis.localStorage.getItem(e)}catch{return null}}function Bt(e,t){try{globalThis.localStorage.setItem(e,t)}catch{}}function ro(e){try{globalThis.localStorage.removeItem(e)}catch{}}function vo(e){const t=It(e);if(t===null)return null;try{return JSON.parse(t)}catch{return null}}function Vs(e,t){try{globalThis.localStorage.setItem(e,JSON.stringify(t))}catch{}}function ol(){const e=It(We.unread);if(!e)return{};try{const t=JSON.parse(e);if(!t||typeof t!="object")return{};const n={};for(const[s,o]of Object.entries(t))o===!0&&(n[s]=!0);return n}catch{return{}}}function il(e){const n={...ol()};for(const[s,o]of Object.entries(e))o?n[s]=!0:delete n[s];Bt(We.unread,JSON.stringify(n))}function Vd(){const e=vo(We.collapsedWorkspaces);return Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}function ta(e){Vs(We.collapsedWorkspaces,Array.from(e))}function jd(){const e=vo(We.workspaceOrder);return Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}function bu(e){Vs(We.workspaceOrder,Array.from(e))}function pi(){const e=vo(We.workspaceNameOverrides);if(!e||typeof e!="object")return{};const t={};for(const[n,s]of Object.entries(e))typeof s=="string"&&(t[n]=s);return t}function Nl(e){Vs(We.workspaceNameOverrides,e)}function Kd(){return It(We.workspaceSort)}function wu(e){Bt(We.workspaceSort,e)}function Gd(){const e=vo(We.workspaceRecencyFloor);if(!e||typeof e!="object")return{};const t={};for(const[n,s]of Object.entries(e))typeof s=="number"&&Number.isFinite(s)&&(t[n]=s);return t}function Su(e){Vs(We.workspaceRecencyFloor,e)}const ql=We.clientId,Qd="kimi-code-web",Yd="web";function Cu(){return{serverHttpUrl:Xd(),clientId:np(),clientName:Qd,clientVersion:sp(),clientUiMode:Yd}}function Zd(){return typeof window<"u"&&window.location?.origin?window.location.origin:"http://127.0.0.1:58627"}function Xd(e){const t=Zd(),n=new URL(t);return n.pathname=n.pathname.replace(/\/v1\/?$/,"").replace(/\/$/,""),n.search="",n.hash="",n.toString().replace(/\/$/,"")}function Jd(e){return e.replace(/^https?:\/\//,"").replace(/\/$/,"")}function ep(){const e=typeof window<"u"&&window.location?.origin?window.location.origin:"";return Jd(e)}function oo(e,t){return`${e}/api/v1${t.startsWith("/")?t:`/${t}`}`}function tp(e,t){const n=new URL(`${e}/api/v1/ws`);return n.protocol=n.protocol==="https:"?"wss:":"ws:",n.searchParams.set("client_id",t),n.toString()}function np(){const e=It(ql);if(e)return e;const t=`web_${globalThis.crypto?.randomUUID?.()||Math.random().toString(36).slice(2)}`;return Bt(ql,t),t}function sp(){return"0.1.2".trim()?"0.1.2":"0.0.0-dev"}async function op(e){try{const t=await fetch("/__kimi-dev/backend",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:e})});return t.ok?await t.json():null}catch{return null}}function ip(e){return e.replace(/^https?:\/\//,"").replace(/\/$/,"")}async function un(e){const t=typeof navigator<"u"?navigator.clipboard:void 0;if(t&&typeof t.writeText=="function")try{return await t.writeText(e),!0}catch{}return lp(e)}function ap(e){if(typeof e!="string")return;const t=typeof navigator<"u"?navigator.clipboard:void 0;t&&typeof t.writeText=="function"||un(e)}function lp(e){if(typeof document>"u"||typeof document.execCommand!="function")return!1;const t=document.createElement("textarea");t.value=e,t.setAttribute("readonly",""),t.style.position="fixed",t.style.top="-9999px",t.style.left="-9999px",t.style.opacity="0",document.body.appendChild(t);let n=!1;try{t.focus(),t.select(),n=document.execCommand("copy")}catch{n=!1}finally{document.body.removeChild(t)}return n}function rp(){const e=vo(We.pinnedSessions);return Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}function up(e){Vs(We.pinnedSessions,Array.from(e))}function cp(e,t){return e.includes(t)?e.filter(n=>n!==t):[...e,t]}function _u(e,t){const n=new Set(t),s=e.filter(i=>n.has(i.id)),o=e.filter(i=>!n.has(i.id));return[...s,...o]}function dp(e){return e==="grouped"||e==="flat"}function pp(){const e=It(We.sidebarViewMode);return dp(e)?e:"grouped"}function fp(e){Bt(We.sidebarViewMode,e)}function mp(e,t){const n=e.flatMap(i=>i.sessions),s=i=>{if(!i)return Number.NEGATIVE_INFINITY;const u=new Date(i).getTime();return Number.isNaN(u)?Number.NEGATIVE_INFINITY:u},o=n.toSorted((i,u)=>s(u.updatedAt)-s(i.updatedAt));return _u(o,t)}function vp(e,t,n){if(e.length===0)return null;const s=new Set(e),o=t.filter(u=>s.has(u)),i=e.filter(u=>!t.includes(u));return i.length===0&&o.length===t.length?null:t.length===0&&n!==void 0?i.toSorted((u,p)=>(n.get(p)??Number.NEGATIVE_INFINITY)-(n.get(u)??Number.NEGATIVE_INFINITY)):[...i,...o]}function hp(e,t){const n=new Map(t.map((s,o)=>[s,o]));return e.toSorted((s,o)=>(n.get(s.id)??-1)-(n.get(o.id)??-1))}function gp(e,t,n,s="before"){const o=e.indexOf(t),i=e.indexOf(n);if(o===-1||i===-1||o===i)return e;const u=[...e];u.splice(o,1);const p=o(t.get(s.id)??Number.NEGATIVE_INFINITY)-(t.get(n.id)??Number.NEGATIVE_INFINITY))}function kp(e,t){const n=new Map;for(const s of e){if(s.parentSessionId||s.archived)continue;const o=new Date(s.updatedAt).getTime();if(Number.isNaN(o))continue;const i=t(s);o>(n.get(i)??Number.NEGATIVE_INFINITY)&&n.set(i,o)}return n}function bp(e,t){let n=!1;const s={...e};for(const[o,i]of t)i>(s[o]??Number.NEGATIVE_INFINITY)&&(s[o]=i,n=!0);return{next:s,changed:n}}function wp(e,t){const n=Object.keys(e);if(!n.some(o=>!t.has(o)))return{next:e,changed:!1};const s={};for(const o of n)t.has(o)&&(s[o]=e[o]);return{next:s,changed:!0}}function Sp(e,t){const n=t===void 0?Number.NaN:Date.parse(t),s=Number.isNaN(n)?Number.NEGATIVE_INFINITY:n;return Math.max(e??Number.NEGATIVE_INFINITY,s)}function $u(e,t){const n=new Map;for(const s of e)n.set(s.id,Sp(t[s.id],s.lastOpenedAt));return n}const Cp={"&":"&","<":"<",">":">",'"':""","'":"'"};function Wl(e){return e.replace(/[&<>"']/g,t=>Cp[t]??t)}function _p(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function $p(e,t,n=40){const s=e.replace(/\s+/g," ").trim();if(s.length===0)return"";const o=t.trim();if(o.length===0)return Hl(s,n*2);const i=s.toLowerCase().indexOf(o.toLowerCase());if(i<0)return Hl(s,n*2);const u=Math.max(0,i-n),p=Math.min(s.length,i+o.length+n),f=u>0,v=p`${i} `)}const Co=I(0),Mp=["type","disabled","aria-label"],xp=Ie({__name:"IconButton",props:{size:{default:"md"},disabled:{type:Boolean},label:{},type:{default:"button"}},setup(e,{expose:t}){const n=I();return t({el:n}),(s,o)=>(a(),c("button",{ref_key:"el",ref:n,class:fe(["ui-icon-button",`ui-icon-button--${e.size}`]),type:e.type,disabled:e.disabled,"aria-label":e.label},[yt(s.$slots,"default",{},void 0,!0)],10,Mp))}}),Ee=(e,t)=>{const n=e.__vccOpts||e;for(const[s,o]of t)n[s]=o;return n},nt=Ee(xp,[["__scopeId","data-v-c9e67023"]]),Ip={width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function Ap(e,t){return a(),c("svg",Ip,[...t[0]||(t[0]=[r("path",{d:"M11.1 12.9001V15.0909C11.1 15.593 11.5029 16 12 16C12.4971 16 12.9 15.593 12.9 15.0909V12.9001H15.0909C15.593 12.9001 16 12.4972 16 12.0001C16 11.5031 15.593 11.1001 15.0909 11.1001H12.9V8.90909C12.9 8.40701 12.4971 8 12 8C11.5029 8 11.1 8.40701 11.1 8.90909V11.1001H8.90909C8.40701 11.1001 8 11.5031 8 12.0001C8 12.4972 8.40701 12.9001 8.90909 12.9001H11.1Z",fill:"currentColor"},null,-1),r("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M11.9996 2.1001C6.53199 2.1001 2.09961 6.53248 2.09961 12.0001C2.09961 13.9226 2.64847 15.7192 3.59804 17.2391L2.517 19.8207C2.10313 20.8091 2.82908 21.9001 3.90059 21.9001H11.9996C17.4672 21.9001 21.8996 17.4677 21.8996 12.0001C21.8996 6.53248 17.4672 2.1001 11.9996 2.1001ZM3.89961 12.0001C3.89961 7.52659 7.5261 3.9001 11.9996 3.9001C16.4731 3.9001 20.0996 7.52659 20.0996 12.0001C20.0996 16.4736 16.4724 20.1001 11.9989 20.1001H4.35146L5.63494 17.0351L5.35165 16.6291C4.43632 15.3172 3.89961 13.7227 3.89961 12.0001Z",fill:"currentColor"},null,-1)])])}const Tp=Ne({name:"kimi-add-conversation",render:Ap}),Pp={width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function Ep(e,t){return a(),c("svg",Pp,[...t[0]||(t[0]=[r("path",{d:"M9.2373 3.7002C10.4169 3.7002 11.5297 4.24779 12.249 5.18262L12.4424 5.43359H18C20.0987 5.43359 21.7998 7.13472 21.7998 9.2334V16.5C21.7998 18.5987 20.0987 20.2998 18 20.2998H6C3.90132 20.2998 2.2002 18.5987 2.2002 16.5V7.5C2.2002 5.40132 3.90132 3.7002 6 3.7002H9.2373ZM6 5.5C4.89543 5.5 4 6.39543 4 7.5V16.5C4 17.6046 4.89543 18.5 6 18.5H18C19.0357 18.5 19.887 17.7128 19.9893 16.7041L20 16.5V9.2334C20 8.19775 19.2128 7.34641 18.2041 7.24414L18 7.2334H12.0479L11.9326 7.22656C11.666 7.19561 11.4205 7.05812 11.2549 6.84277L10.8223 6.28027C10.4437 5.78834 9.85808 5.5 9.2373 5.5H6ZM16 9.59961C16.4971 9.59961 16.9004 10.0029 16.9004 10.5C16.9004 10.9971 16.4971 11.4004 16 11.4004H8C7.50294 11.4004 7.09961 10.9971 7.09961 10.5C7.09961 10.0029 7.50294 9.59961 8 9.59961H16Z",fill:"currentColor"},null,-1)])])}const Lp=Ne({name:"kimi-folder",render:Ep}),Bp={width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},Rp=["clip-path"],Op=["id"];function Dp(e,t){return a(),c("svg",Bp,[r("g",{"clip-path":"url(#"+e.idMap.clip0_4626_2033+")"},[...t[0]||(t[0]=[r("path",{d:"M18.3623 9.99976L18.209 8.48999C18.2031 8.43161 18.2004 8.37289 18.2002 8.31421C18.1988 8.31196 18.1956 8.30842 18.1904 8.30347C18.1718 8.28559 18.1302 8.26245 18.0713 8.26245H11C10.261 8.26245 9.59753 7.81016 9.32617 7.1228L8.9082 6.06421C8.88101 5.9953 8.85737 5.92501 8.83887 5.85327C8.83778 5.85099 8.833 5.84268 8.81836 5.83179C8.79454 5.81475 8.7549 5.79939 8.70605 5.80054H3.92871C3.86986 5.80054 3.82825 5.82368 3.80957 5.84155C3.80816 5.8429 3.80675 5.84428 3.80566 5.84546L4.47559 14.0955L3.62109 17.5154L5.12109 11.5154C5.34367 10.6251 6.1438 9.99977 7.06152 9.99976H18.3623ZM7.06152 11.7996C6.96976 11.7996 6.88944 11.8629 6.86719 11.9519L5.36719 17.9519C5.33598 18.078 5.43158 18.1999 5.56152 18.2H19.4385C19.5302 18.1999 19.6106 18.1376 19.6328 18.0486L21.1328 12.0486C21.1644 11.9224 21.0686 11.7996 20.9385 11.7996H7.06152ZM20.9385 9.99976C22.2396 9.99977 23.1945 11.2228 22.8789 12.4851L21.3789 18.4851C21.1563 19.3754 20.3562 19.9997 19.4385 19.9998H4.92871C4.41722 19.9998 3.92613 19.8059 3.56445 19.4597C3.20281 19.1135 3.00004 18.6436 3 18.1541L2 5.84644C2.00006 5.35711 2.20311 4.88786 2.56445 4.54175C2.92613 4.19554 3.41722 4.00073 3.92871 4.00073H8.66406C9.10133 3.99051 9.5296 4.1225 9.87793 4.37573C10.2285 4.63118 10.4767 4.99457 10.582 5.40405L11 6.46167H18.0713C18.5828 6.46167 19.0739 6.65648 19.4355 7.00269C19.7971 7.34888 20 7.81883 20 8.30835L20.1719 9.99976H20.9385Z",fill:"currentColor"},null,-1)])],8,Rp),r("defs",null,[r("clipPath",{id:e.idMap.clip0_4626_2033},[...t[1]||(t[1]=[r("rect",{width:"24",height:"24",fill:"white"},null,-1)])],8,Op)])])}const zp=Ne({name:"kimi-folder-open",render:Dp,setup(){return{idMap:{clip0_4626_2033:"uicons-"+Math.random().toString(36).substr(2,10)}}}}),Fp={width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function Np(e,t){return a(),c("svg",Fp,[...t[0]||(t[0]=[r("path",{d:"M6 12C6 12.8283 5.32834 13.5 4.5 13.5C3.67166 13.5 3 12.8283 3 12C3 11.1717 3.67166 10.5 4.5 10.5C5.32834 10.5 6 11.1717 6 12Z",fill:"currentColor"},null,-1),r("path",{d:"M13.5 12C13.5 12.8283 12.8283 13.5 12 13.5C11.1717 13.5 10.5 12.8283 10.5 12C10.5 11.1717 11.1717 10.5 12 10.5C12.8283 10.5 13.5 11.1717 13.5 12Z",fill:"currentColor"},null,-1),r("path",{d:"M19.5002 13.5C20.3287 13.5 21 12.8287 21 12.0002C21 11.1718 20.3287 10.5 19.5002 10.5C18.6718 10.5 18 11.1718 18 12.0002C18 12.8287 18.6718 13.5 19.5002 13.5Z",fill:"currentColor"},null,-1)])])}const qp=Ne({name:"kimi-more",render:Np}),Wp={width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function Hp(e,t){return a(),c("svg",Wp,[...t[0]||(t[0]=[r("path",{d:"M11.5 3C16.1944 3 20 6.80558 20 11.5C20 13.523 19.2933 15.381 18.1132 16.8404L21.1364 19.8636C21.4879 20.2151 21.4879 20.7849 21.1364 21.1364C20.7849 21.4879 20.2151 21.4879 19.8636 21.1364L16.8404 18.1132C15.381 19.2933 13.523 20 11.5 20C6.80558 20 3 16.1944 3 11.5C3 6.80558 6.80558 3 11.5 3ZM11.5 18.2C15.2003 18.2 18.2 15.2003 18.2 11.5C18.2 7.79969 15.2003 4.8 11.5 4.8C7.79969 4.8 4.8 7.79969 4.8 11.5C4.8 15.2003 7.79969 18.2 11.5 18.2Z",fill:"currentColor"},null,-1)])])}const Up=Ne({name:"kimi-search",render:Hp}),Vp={width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function jp(e,t){return a(),c("svg",Vp,[...t[0]||(t[0]=[r("path",{d:"M16.0404 12C16.0404 9.76874 14.2313 7.9596 12.0001 7.9596C9.76883 7.9596 7.95972 9.76874 7.95972 12C7.95972 14.2313 9.76883 16.0404 12.0001 16.0404C14.2313 16.0404 16.0404 14.2313 16.0404 12ZM14.2222 12C14.2222 13.2271 13.2271 14.2222 12 14.2222C10.7729 14.2222 9.77783 13.2271 9.77783 12C9.77783 10.7729 10.7729 9.77778 12 9.77778C13.2271 9.77778 14.2222 10.7729 14.2222 12Z",fill:"currentColor"},null,-1),r("path",{d:"M9.91145 21.8009C9.29001 21.6797 8.76914 21.2612 8.50632 20.6922L8.07372 19.7556C7.88838 19.3544 7.43553 19.1048 6.95371 19.1549L5.89572 19.2647C5.2733 19.3293 4.64823 19.114 4.22298 18.6611C3.74343 18.1504 3.32454 17.6037 2.97033 17.0181C2.61571 16.4318 2.32839 15.8106 2.10407 15.1566C1.89769 14.5549 2.02148 13.8954 2.4089 13.3902L3.0376 12.5704C3.30043 12.2277 3.30042 11.7722 3.03758 11.4295L2.40413 10.6035C2.01474 10.0958 1.891 9.43198 2.10208 8.82826C2.55037 7.54612 3.27017 6.35997 4.22 5.34259C4.64518 4.8872 5.27275 4.67067 5.89701 4.73544L6.95383 4.84514C7.43561 4.89515 7.88844 4.6456 8.07377 4.24441L8.50266 3.31593C8.76494 2.74818 9.28448 2.33019 9.90423 2.20761C11.2916 1.9332 12.7148 1.93127 14.0885 2.19913C14.7099 2.32029 15.2308 2.73881 15.4937 3.3078L15.9263 4.24441C16.1116 4.6456 16.5644 4.89514 17.0462 4.84514L18.1043 4.73532C18.7267 4.67072 19.3518 4.88603 19.777 5.33886C20.2566 5.84953 20.6755 6.3963 21.0297 6.98193C21.3843 7.56823 21.6716 8.18942 21.8959 8.84339C22.1023 9.44509 21.9785 10.1046 21.5911 10.6098L20.9624 11.4295C20.6996 11.7722 20.6996 12.2278 20.9624 12.5705L21.5959 13.3964C21.9853 13.9042 22.109 14.568 21.8979 15.1717C21.4497 16.4538 20.7299 17.6399 19.7801 18.6573C19.3549 19.1128 18.7273 19.3294 18.103 19.2646L17.0462 19.1549C16.5645 19.1049 16.1116 19.3544 15.9263 19.7556L15.4974 20.6841C15.2351 21.2518 14.7156 21.6698 14.0958 21.7924C12.7083 22.0668 11.2852 22.0687 9.91145 21.8009ZM13.7432 20.0088C13.7844 20.0006 13.8259 19.9673 13.847 19.9216L14.2758 18.9931C14.7915 17.8768 15.9886 17.2171 17.2341 17.3464L18.2909 17.4561C18.3649 17.4638 18.4272 17.4423 18.4512 17.4166C19.2296 16.5828 19.8171 15.6146 20.1817 14.5716C20.1845 14.5636 20.1796 14.5373 20.1532 14.5029L19.5198 13.677C18.7564 12.6815 18.7564 11.3185 19.5198 10.323L20.1485 9.5033C20.1746 9.46927 20.1795 9.4429 20.1762 9.43327C19.9932 8.89965 19.7603 8.39623 19.4741 7.92293C19.1873 7.4489 18.846 7.00333 18.4517 6.58351C18.4272 6.55739 18.3656 6.53616 18.2921 6.54378L17.234 6.65361C15.9886 6.78287 14.7915 6.12317 14.2758 5.00689L13.8432 4.07027C13.822 4.02448 13.7811 3.9916 13.7406 3.98371C12.5983 3.76097 11.4132 3.76258 10.2571 3.99124C10.2158 3.99941 10.1744 4.03271 10.1533 4.07842L9.72441 5.00689C9.20875 6.12317 8.01164 6.7829 6.76619 6.6536L5.70942 6.54391C5.63535 6.53623 5.573 6.55774 5.54905 6.5834C4.77067 7.41713 4.18312 8.38534 3.81845 9.42835C3.81564 9.43637 3.82054 9.46265 3.84693 9.49706L4.48038 10.323C5.24381 11.3185 5.24383 12.6815 4.48041 13.6769L3.85171 14.4967C3.82561 14.5307 3.82066 14.5571 3.82396 14.5667C4.00701 15.1004 4.23986 15.6038 4.52613 16.0771C4.81284 16.5511 5.15421 16.9967 5.54845 17.4165C5.57298 17.4426 5.63461 17.4638 5.70811 17.4562L6.76608 17.3464C8.01157 17.2171 9.20871 17.8768 9.72438 18.9932L10.157 19.9297C10.1781 19.9755 10.2191 20.0084 10.2595 20.0163C11.4018 20.239 12.587 20.2374 13.7432 20.0088Z",fill:"currentColor"},null,-1)])])}const Kp=Ne({name:"kimi-setting",render:jp}),Gp={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Qp(e,t){return a(),c("svg",Gp,[...t[0]||(t[0]=[r("g",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"},[r("path",{d:"M4 6a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2zm5-2v16"}),r("path",{d:"m15 10l-2 2l2 2"})],-1)])])}const Yp=Ne({name:"tabler-layout-sidebar-left-collapse",render:Qp}),Zp={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Xp(e,t){return a(),c("svg",Zp,[...t[0]||(t[0]=[r("g",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"},[r("path",{d:"M4 6a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2zm5-2v16"}),r("path",{d:"m14 10l2 2l-2 2"})],-1)])])}const Jp=Ne({name:"tabler-layout-sidebar-left-expand",render:Xp}),ef={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function tf(e,t){return a(),c("svg",ef,[...t[0]||(t[0]=[r("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"m15 7l-6.5 6.5a1.5 1.5 0 0 0 3 3L18 10a3 3 0 0 0-6-6l-6.5 6.5a4.5 4.5 0 0 0 9 9L21 13"},null,-1)])])}const nf=Ne({name:"tabler-paperclip",render:tf}),sf={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function of(e,t){return a(),c("svg",sf,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M11 11V5h2v6h6v2h-6v6h-2v-6H5v-2z"},null,-1)])])}const af=Ne({name:"ri-add-line",render:of}),lf={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function rf(e,t){return a(),c("svg",lf,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"m12.866 3l9.526 16.5a1 1 0 0 1-.866 1.5H2.474a1 1 0 0 1-.866-1.5L11.134 3a1 1 0 0 1 1.732 0m-8.66 16h15.588L12 5.5zM11 16h2v2h-2zm0-7h2v5h-2z"},null,-1)])])}const uf=Ne({name:"ri-alert-line",render:rf}),cf={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function df(e,t){return a(),c("svg",cf,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M3 10H2V4.003C2 3.449 2.455 3 2.992 3h18.016A.99.99 0 0 1 22 4.003V10h-1v10.002a.996.996 0 0 1-.993.998H3.993A.996.996 0 0 1 3 20.002zm16 0H5v9h14zM4 5v3h16V5zm5 7h6v2H9z"},null,-1)])])}const pf=Ne({name:"ri-archive-line",render:df}),ff={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function mf(e,t){return a(),c("svg",ff,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"m13 16.172l5.364-5.364l1.414 1.414L12 20l-7.778-7.778l1.414-1.414L11 16.172V4h2z"},null,-1)])])}const vf=Ne({name:"ri-arrow-down-line",render:mf}),hf={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function gf(e,t){return a(),c("svg",hf,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"m12 13.171l4.95-4.95l1.414 1.415L12 16L5.636 9.636L7.05 8.222z"},null,-1)])])}const yf=Ne({name:"ri-arrow-down-s-line",render:gf}),kf={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function bf(e,t){return a(),c("svg",kf,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"m5.828 7l2.536 2.535L6.95 10.95L2 6l4.95-4.95l1.414 1.415L5.828 5H13a8 8 0 1 1 0 16H4v-2h9a6 6 0 0 0 0-12z"},null,-1)])])}const wf=Ne({name:"ri-arrow-go-back-line",render:bf}),Sf={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Cf(e,t){return a(),c("svg",Sf,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"m16.172 11l-5.364-5.364l1.414-1.414L20 12l-7.778 7.778l-1.414-1.414L16.172 13H4v-2z"},null,-1)])])}const _f=Ne({name:"ri-arrow-right-line",render:Cf}),$f={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Mf(e,t){return a(),c("svg",$f,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"m13.172 12l-4.95-4.95l1.414-1.413L16 12l-6.364 6.364l-1.414-1.415z"},null,-1)])])}const xf=Ne({name:"ri-arrow-right-s-line",render:Mf}),If={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Af(e,t){return a(),c("svg",If,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M13 7.828V20h-2V7.828l-5.364 5.364l-1.414-1.414L12 4l7.778 7.778l-1.414 1.414z"},null,-1)])])}const Ul=Ne({name:"ri-arrow-up-line",render:Af}),Tf={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Pf(e,t){return a(),c("svg",Tf,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"m12 10.828l-4.95 4.95l-1.414-1.414L12 8l6.364 6.364l-1.414 1.414z"},null,-1)])])}const Ef=Ne({name:"ri-arrow-up-s-line",render:Pf}),Lf={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Bf(e,t){return a(),c("svg",Lf,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M4 18v-3.7a1.5 1.5 0 0 0-1.5-1.5H2v-1.6h.5A1.5 1.5 0 0 0 4 9.7V6a3 3 0 0 1 3-3h1v2H7a1 1 0 0 0-1 1v4.1A2 2 0 0 1 4.626 12A2 2 0 0 1 6 13.9V18a1 1 0 0 0 1 1h1v2H7a3 3 0 0 1-3-3m16-3.7V18a3 3 0 0 1-3 3h-1v-2h1a1 1 0 0 0 1-1v-4.1a2 2 0 0 1 1.374-1.9A2 2 0 0 1 18 10.1V6a1 1 0 0 0-1-1h-1V3h1a3 3 0 0 1 3 3v3.7a1.5 1.5 0 0 0 1.5 1.5h.5v1.6h-.5a1.5 1.5 0 0 0-1.5 1.5"},null,-1)])])}const Rf=Ne({name:"ri-braces-line",render:Bf}),Of={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Df(e,t){return a(),c("svg",Of,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M9 3V1H7v2H3a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h18a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1h-4V1h-2v2zm-5 7h16v9H4zm0-5h3v1h2V5h6v1h2V5h3v3H4zm5.879 5.964L12 13.086l2.121-2.122l1.415 1.415l-2.122 2.121l2.121 2.121l-1.414 1.414L12 15.915l-2.121 2.12l-1.415-1.414l2.122-2.12l-2.122-2.122z"},null,-1)])])}const zf=Ne({name:"ri-calendar-close-line",render:Df}),Ff={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Nf(e,t){return a(),c("svg",Ff,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M7 3V1h2v2h6V1h2v2h4a1 1 0 0 1 1 1v5h-2V5h-3v2h-2V5H9v2H7V5H4v14h6v2H3a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zm10 9a4 4 0 1 0 0 8a4 4 0 0 0 0-8m-6 4a6 6 0 1 1 12 0a6 6 0 0 1-12 0m5-3v3.414l2.293 2.293l1.414-1.414L18 15.586V13z"},null,-1)])])}const qf=Ne({name:"ri-calendar-schedule-line",render:Nf}),Wf={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Hf(e,t){return a(),c("svg",Wf,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M9 1v2h6V1h2v2h4a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h4V1zm11 10H4v8h16zM8 14v2H6v-2zm10 0v2h-8v-2zM7 5H4v4h16V5h-3v2h-2V5H9v2H7z"},null,-1)])])}const Uf=Ne({name:"ri-calendar-todo-line",render:Hf}),Vf={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function jf(e,t){return a(),c("svg",Vf,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"m10 15.17l9.192-9.191l1.414 1.414L10 17.999l-6.364-6.364l1.414-1.414z"},null,-1)])])}const Kf=Ne({name:"ri-check-line",render:jf}),Gf={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Qf(e,t){return a(),c("svg",Gf,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"m12 10.587l4.95-4.95l1.414 1.414l-4.95 4.95l4.95 4.95l-1.415 1.414l-4.95-4.95l-4.949 4.95l-1.414-1.415l4.95-4.95l-4.95-4.95L7.05 5.638z"},null,-1)])])}const Yf=Ne({name:"ri-close-line",render:Qf}),Zf={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Xf(e,t){return a(),c("svg",Zf,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"m23 12l-7.071 7.071l-1.414-1.414L20.172 12l-5.657-5.657l1.414-1.414zM3.828 12l5.657 5.657l-1.414 1.414L1 12l7.071-7.071l1.414 1.414z"},null,-1)])])}const Jf=Ne({name:"ri-code-line",render:Xf}),em={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function tm(e,t){return a(),c("svg",em,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M15 4h-2v7h7V9h-3.586l4.293-4.293l-1.414-1.414L15 7.586zM4 15h3.586l-4.293 4.293l1.414 1.414L9 16.414V20h2v-7H4z"},null,-1)])])}const nm=Ne({name:"ri-collapse-diagonal-line",render:tm}),sm={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function om(e,t){return a(),c("svg",sm,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M3 19h18v2H3zm10-5.828L19.071 7.1l1.414 1.414L12 17L3.515 8.515L4.929 7.1L11 13.173V2h2z"},null,-1)])])}const im=Ne({name:"ri-download-line",render:om}),am={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function lm(e,t){return a(),c("svg",am,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M8.5 7a1.5 1.5 0 1 0 0-3a1.5 1.5 0 0 0 0 3m0 6.5a1.5 1.5 0 1 0 0-3a1.5 1.5 0 0 0 0 3m1.5 5a1.5 1.5 0 1 1-3 0a1.5 1.5 0 0 1 3 0M15.5 7a1.5 1.5 0 1 0 0-3a1.5 1.5 0 0 0 0 3m1.5 5a1.5 1.5 0 1 1-3 0a1.5 1.5 0 0 1 3 0m-1.5 8a1.5 1.5 0 1 0 0-3a1.5 1.5 0 0 0 0 3"},null,-1)])])}const rm=Ne({name:"ri-draggable",render:lm}),um={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function cm(e,t){return a(),c("svg",um,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M6.17 18a3.001 3.001 0 0 1 5.66 0H22v2H11.83a3.001 3.001 0 0 1-5.66 0H2v-2zm6-7a3.001 3.001 0 0 1 5.66 0H22v2h-4.17a3.001 3.001 0 0 1-5.66 0H2v-2zm-6-7a3.001 3.001 0 0 1 5.66 0H22v2H11.83a3.001 3.001 0 0 1-5.66 0H2V4zM9 6a1 1 0 1 0 0-2a1 1 0 0 0 0 2m6 7a1 1 0 1 0 0-2a1 1 0 0 0 0 2m-6 7a1 1 0 1 0 0-2a1 1 0 0 0 0 2"},null,-1)])])}const dm=Ne({name:"ri-equalizer-line",render:cm}),pm={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function fm(e,t){return a(),c("svg",pm,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M17.586 5H14V3h7v7h-2V6.414l-4.293 4.293l-1.414-1.414zM3 14h2v3.586l4.293-4.293l1.414 1.414L6.414 19H10v2H3z"},null,-1)])])}const mm=Ne({name:"ri-expand-diagonal-line",render:fm}),vm={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function hm(e,t){return a(),c("svg",vm,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M10 6v2H5v11h11v-5h2v6a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1zm11-3v8h-2V6.413l-7.793 7.794l-1.414-1.414L17.585 5H13V3z"},null,-1)])])}const gm=Ne({name:"ri-external-link-line",render:hm}),ym={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function km(e,t){return a(),c("svg",ym,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M15 4H5v16h14V8h-4zM3 2.992C3 2.444 3.447 2 3.999 2H16l5 5v13.993A1 1 0 0 1 20.007 22H3.993A1 1 0 0 1 3 21.008zM11 11V8h2v3h3v2h-3v3h-2v-3H8v-2z"},null,-1)])])}const bm=Ne({name:"ri-file-add-line",render:km}),wm={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Sm(e,t){return a(),c("svg",wm,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M7 6V3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1h-3v3c0 .552-.45 1-1.007 1H4.007A1 1 0 0 1 3 21l.003-14c0-.552.45-1 1.006-1zM5.002 8L5 20h10V8zM9 6h8v10h2V4H9z"},null,-1)])])}const Cm=Ne({name:"ri-file-copy-line",render:Sm}),_m={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function $m(e,t){return a(),c("svg",_m,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"m21 6.757l-2 2V4h-9v5H5v11h14v-2.757l2-2v5.765a.993.993 0 0 1-.993.992H3.993A1 1 0 0 1 3 20.993V8l6.003-6h10.995C20.55 2 21 2.455 21 2.992zm.778 2.05l1.414 1.415L15.414 18l-1.416-.002l.002-1.412z"},null,-1)])])}const Mm=Ne({name:"ri-file-edit-line",render:$m}),xm={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Im(e,t){return a(),c("svg",xm,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M9 2.003V2h10.998C20.55 2 21 2.455 21 2.992v18.016a.993.993 0 0 1-.993.992H3.993A1 1 0 0 1 3 20.993V8zM5.83 8H9V4.83zM11 4v5a1 1 0 0 1-1 1H5v10h14V4z"},null,-1)])])}const Vl=Ne({name:"ri-file-line",render:Im}),Am={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Tm(e,t){return a(),c("svg",Am,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M21 8v12.993A1 1 0 0 1 20.007 22H3.993A.993.993 0 0 1 3 21.008V2.992C3 2.455 3.449 2 4.002 2h10.995zm-2 1h-5V4H5v16h14zM8 7h3v2H8zm0 4h8v2H8zm0 4h8v2H8z"},null,-1)])])}const Pm=Ne({name:"ri-file-text-line",render:Tm}),Em={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Lm(e,t){return a(),c("svg",Em,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M13 9h8L11 24v-9H4l9-15zm-2 2V7.22L7.532 13H13v4.394L17.263 11z"},null,-1)])])}const Bm=Ne({name:"ri-flashlight-line",render:Lm}),Rm={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Om(e,t){return a(),c("svg",Rm,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M12.414 5H21a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h7.414zM4 5v14h16V7h-8.414l-2-2zm7 7V9h2v3h3v2h-3v3h-2v-3H8v-2z"},null,-1)])])}const Dm=Ne({name:"ri-folder-add-line",render:Om}),zm={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Fm(e,t){return a(),c("svg",zm,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M12.414 5H21a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h7.414z"},null,-1)])])}const Nm=Ne({name:"ri-folder-fill",render:Fm}),qm={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Wm(e,t){return a(),c("svg",qm,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M6 5a1 1 0 1 0 0 2a1 1 0 0 0 0-2M3 6a3 3 0 1 1 4 2.83V9a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2v-.17a3.001 3.001 0 1 1 2 0V9a4 4 0 0 1-4 4h-2v2.17a3.001 3.001 0 1 1-2 0V13H9a4 4 0 0 1-4-4v-.17A3 3 0 0 1 3 6m15-1a1 1 0 1 0 0 2a1 1 0 0 0 0-2m-6 12a1 1 0 1 0 0 2a1 1 0 0 0 0-2"},null,-1)])])}const Hm=Ne({name:"ri-git-fork-line",render:Wm}),Um={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Vm(e,t){return a(),c("svg",Um,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M15 5h2a2 2 0 0 1 2 2v8.17a3.001 3.001 0 1 1-2 0V7h-2v3l-4.5-4L15 2zM5 8.83a3.001 3.001 0 1 1 2 0v6.34a3.001 3.001 0 1 1-2 0zM6 7a1 1 0 1 0 0-2a1 1 0 0 0 0 2m0 12a1 1 0 1 0 0-2a1 1 0 0 0 0 2m12 0a1 1 0 1 0 0-2a1 1 0 0 0 0 2"},null,-1)])])}const jm=Ne({name:"ri-git-pull-request-line",render:Vm}),Km={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Gm(e,t){return a(),c("svg",Km,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10s-4.477 10-10 10m-2.29-2.333A17.9 17.9 0 0 1 8.027 13H4.062a8.01 8.01 0 0 0 5.648 6.667M10.03 13c.151 2.439.848 4.73 1.97 6.752A15.9 15.9 0 0 0 13.97 13zm9.908 0h-3.965a17.9 17.9 0 0 1-1.683 6.667A8.01 8.01 0 0 0 19.938 13M4.062 11h3.965A17.9 17.9 0 0 1 9.71 4.333A8.01 8.01 0 0 0 4.062 11m5.969 0h3.938A15.9 15.9 0 0 0 12 4.248A15.9 15.9 0 0 0 10.03 11m4.259-6.667A17.9 17.9 0 0 1 15.973 11h3.965a8.01 8.01 0 0 0-5.648-6.667"},null,-1)])])}const Qm=Ne({name:"ri-global-line",render:Gm}),Ym={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Zm(e,t){return a(),c("svg",Ym,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M2.992 21A.993.993 0 0 1 2 20.007V3.993A1 1 0 0 1 2.992 3h18.016c.548 0 .992.445.992.993v16.014a1 1 0 0 1-.992.993zM20 15V5H4v14L14 9zm0 2.828l-6-6L6.828 19H20zM8 11a2 2 0 1 1 0-4a2 2 0 0 1 0 4"},null,-1)])])}const jl=Ne({name:"ri-image-line",render:Zm}),Xm={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Jm(e,t){return a(),c("svg",Xm,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10s-4.477 10-10 10m0-2a8 8 0 1 0 0-16a8 8 0 0 0 0 16M11 7h2v2h-2zm0 4h2v6h-2z"},null,-1)])])}const ev=Ne({name:"ri-information-line",render:Jm}),tv={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function nv(e,t){return a(),c("svg",tv,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"m13.06 8.111l1.415 1.414a7 7 0 0 1 0 9.9l-.354.353a7 7 0 1 1-9.9-9.9l1.415 1.415a5 5 0 1 0 7.071 7.071l.354-.354a5 5 0 0 0 0-7.07l-1.415-1.415zm6.718 6.01l-1.414-1.414a5 5 0 0 0-7.071-7.07l-.354.353a5 5 0 0 0 0 7.07l1.415 1.415l-1.415 1.414l-1.414-1.414a7 7 0 0 1 0-9.9l.354-.353a7 7 0 1 1 9.9 9.9"},null,-1)])])}const sv=Ne({name:"ri-links-line",render:nv}),ov={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function iv(e,t){return a(),c("svg",ov,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M8 4h13v2H8zm-5-.5h3v3H3zm0 7h3v3H3zm0 7h3v3H3zM8 11h13v2H8zm0 7h13v2H8z"},null,-1)])])}const av=Ne({name:"ri-list-check",render:iv}),lv={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function rv(e,t){return a(),c("svg",lv,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M8 4h13v2H8zM4.5 6.5a1.5 1.5 0 1 1 0-3a1.5 1.5 0 0 1 0 3m0 7a1.5 1.5 0 1 1 0-3a1.5 1.5 0 0 1 0 3m0 6.9a1.5 1.5 0 1 1 0-3a1.5 1.5 0 0 1 0 3M8 11h13v2H8zm0 7h13v2H8z"},null,-1)])])}const uv=Ne({name:"ri-list-unordered",render:rv}),cv={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function dv(e,t){return a(),c("svg",cv,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M4 15h2v5h12V4H6v5H4V3a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1zm6-4V8l5 4l-5 4v-3H2v-2z"},null,-1)])])}const pv=Ne({name:"ri-login-box-line",render:dv}),fv={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function mv(e,t){return a(),c("svg",fv,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M3 3h18a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1m17 4.238l-7.928 7.1L4 7.216V19h16zM4.511 5l7.55 6.662L19.502 5z"},null,-1)])])}const vv=Ne({name:"ri-mail-line",render:mv}),hv={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function gv(e,t){return a(),c("svg",hv,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M6.455 19L2 22.5V4a1 1 0 0 1 1-1h18a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1zm-.692-2H20V5H4v13.385zM8 10h8v2H8z"},null,-1)])])}const yv=Ne({name:"ri-message-line",render:gv}),kv={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function bv(e,t){return a(),c("svg",kv,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M6 5h2v14H6zm10 0h2v14h-2z"},null,-1)])])}const wv=Ne({name:"ri-pause-fill",render:bv}),Sv={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Cv(e,t){return a(),c("svg",Sv,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"m15.728 9.576l-1.414-1.414L5 17.476v1.414h1.414zm1.414-1.414l1.414-1.414l-1.414-1.414l-1.414 1.414zm-9.9 12.728H3v-4.243L16.435 3.212a1 1 0 0 1 1.414 0l2.829 2.829a1 1 0 0 1 0 1.414z"},null,-1)])])}const _v=Ne({name:"ri-pencil-line",render:Cv}),$v={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Mv(e,t){return a(),c("svg",$v,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M19.376 12.416L8.777 19.482A.5.5 0 0 1 8 19.066V4.934a.5.5 0 0 1 .777-.416l10.599 7.066a.5.5 0 0 1 0 .832"},null,-1)])])}const xv=Ne({name:"ri-play-fill",render:Mv}),Iv={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Av(e,t){return a(),c("svg",Iv,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"m22.313 10.175l-1.415 1.414l-.707-.707l-4.242 4.243l-.707 3.536l-1.415 1.414l-4.242-4.243l-4.95 4.95l-1.414-1.414l4.95-4.95l-4.243-4.243l1.414-1.414l3.536-.707l4.242-4.243l-.707-.707l1.414-1.414z"},null,-1)])])}const Tv=Ne({name:"ri-pushpin-fill",render:Av}),Pv={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Ev(e,t){return a(),c("svg",Pv,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"m13.827 1.69l8.486 8.485l-1.415 1.414l-.707-.707l-4.242 4.243l-.707 3.536l-1.415 1.414l-4.242-4.243l-4.95 4.95l-1.414-1.414l4.95-4.95l-4.243-4.243l1.414-1.414l3.536-.707l4.242-4.243l-.707-.707zm.707 3.536l-4.67 4.67l-2.822.565l6.5 6.5l.564-2.822l4.671-4.67z"},null,-1)])])}const Lv=Ne({name:"ri-pushpin-line",render:Ev}),Bv={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Rv(e,t){return a(),c("svg",Bv,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10s-4.477 10-10 10m0-2a8 8 0 1 0 0-16a8 8 0 0 0 0 16m-1-5h2v2h-2zm2-1.645V14h-2v-1.5a1 1 0 0 1 1-1a1.5 1.5 0 1 0-1.471-1.794l-1.962-.393A3.501 3.501 0 1 1 13 13.355"},null,-1)])])}const Ov=Ne({name:"ri-question-line",render:Rv}),Dv={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function zv(e,t){return a(),c("svg",Dv,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10s-4.477 10-10 10m0-2a8 8 0 1 0 0-16a8 8 0 0 0 0 16m-4-7h8a4 4 0 0 1-8 0m0-2a1.5 1.5 0 1 1 0-3a1.5 1.5 0 0 1 0 3m8 0a1.5 1.5 0 1 1 0-3a1.5 1.5 0 0 1 0 3"},null,-1)])])}const Fv=Ne({name:"ri-emotion-line",render:zv}),Nv={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function qv(e,t){return a(),c("svg",Nv,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M20 4v12h3l-4 5l-4-5h3V4zm-8 14v2H3v-2zm2-7v2H3v-2zm0-7v2H3V4z"},null,-1)])])}const Wv=Ne({name:"ri-sort-desc",render:qv}),Hv={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Uv(e,t){return a(),c("svg",Hv,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M14 4.438A2.437 2.437 0 0 0 16.438 2h1.125A2.437 2.437 0 0 0 20 4.438v1.125A2.437 2.437 0 0 0 17.563 8h-1.125A2.437 2.437 0 0 0 14 5.563zM1 11a6 6 0 0 0 6-6h2a6 6 0 0 0 6 6v2a6 6 0 0 0-6 6H7a6 6 0 0 0-6-6zm3.876 1A8.04 8.04 0 0 1 8 15.124A8.04 8.04 0 0 1 11.124 12A8.04 8.04 0 0 1 8 8.876A8.04 8.04 0 0 1 4.876 12m12.374 2A3.25 3.25 0 0 1 14 17.25v1.5A3.25 3.25 0 0 1 17.25 22h1.5A3.25 3.25 0 0 1 22 18.75v-1.5A3.25 3.25 0 0 1 18.75 14z"},null,-1)])])}const Vv=Ne({name:"ri-sparkling-line",render:Uv}),jv={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Kv(e,t){return a(),c("svg",jv,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"m12 18.26l-7.053 3.948l1.575-7.928L.588 8.792l8.027-.952L12 .5l3.385 7.34l8.027.952l-5.934 5.488l1.575 7.928z"},null,-1)])])}const Gv=Ne({name:"ri-star-fill",render:Kv}),Qv={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Yv(e,t){return a(),c("svg",Qv,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"m12 18.26l-7.053 3.948l1.575-7.928L.588 8.792l8.027-.952L12 .5l3.385 7.34l8.027.952l-5.934 5.488l1.575 7.928zm0-2.292l4.247 2.377l-.948-4.773l3.573-3.305l-4.833-.573l-2.038-4.419l-2.039 4.42l-4.833.572l3.573 3.305l-.948 4.773z"},null,-1)])])}const Zv=Ne({name:"ri-star-line",render:Yv}),Xv={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Jv(e,t){return a(),c("svg",Xv,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M6 5h12a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1"},null,-1)])])}const e1=Ne({name:"ri-stop-fill",render:Jv}),t1={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function n1(e,t){return a(),c("svg",t1,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M5 11v2h14v-2z"},null,-1)])])}const s1=Ne({name:"ri-subtract-line",render:n1}),o1={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function i1(e,t){return a(),c("svg",o1,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M12 2a1 1 0 1 1 0 2a8 8 0 1 0 8 8a1 1 0 1 1 2 0c0 5.523-4.477 10-10 10S2 17.523 2 12S6.477 2 12 2m0 4a1 1 0 1 1 0 2a4 4 0 1 0 4 4a1 1 0 1 1 2 0a6 6 0 1 1-6-6m5.656-3.9a1.001 1.001 0 0 1 1.415 1.415l-.708.706h.001a1 1 0 1 0 1.414 1.415l.707-.707A1 1 0 0 1 21.9 6.343l-2.12 2.122a1 1 0 0 1-.708.292h-2.414l-3.95 3.95a1 1 0 0 1-1.414-1.414l3.95-3.95V4.93a1 1 0 0 1 .292-.707z"},null,-1)])])}const a1=Ne({name:"ri-target-line",render:i1}),l1={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function r1(e,t){return a(),c("svg",l1,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M3 3h18a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1m1 2v14h16V5zm8 10h6v2h-6zm-3.333-3L5.838 9.172l1.415-1.415L11.495 12l-4.242 4.243l-1.415-1.415z"},null,-1)])])}const u1=Ne({name:"ri-terminal-box-line",render:r1}),c1={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function d1(e,t){return a(),c("svg",c1,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10s-4.477 10-10 10m0-2a8 8 0 1 0 0-16a8 8 0 0 0 0 16m1-8h4v2h-6V7h2z"},null,-1)])])}const p1=Ne({name:"ri-time-line",render:d1}),f1={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function m1(e,t){return a(),c("svg",f1,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M5.33 3.272a3.5 3.5 0 0 1 4.254 4.962l10.709 10.71l-1.414 1.414l-10.71-10.71a3.502 3.502 0 0 1-4.962-4.255L5.444 7.63a1.5 1.5 0 0 0 2.121-2.121zm10.367 1.883l3.182-1.768l1.414 1.415l-1.768 3.182l-1.768.353l-2.12 2.121l-1.415-1.414l2.121-2.121zm-6.718 8.132l1.415 1.414l-5.304 5.303a1 1 0 0 1-1.492-1.327l.078-.087z"},null,-1)])])}const v1=Ne({name:"ri-tools-line",render:m1}),h1={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function g1(e,t){return a(),c("svg",h1,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M4 22a8 8 0 1 1 16 0h-2a6 6 0 0 0-12 0zm8-9c-3.315 0-6-2.685-6-6s2.685-6 6-6s6 2.685 6 6s-2.685 6-6 6m0-2c2.21 0 4-1.79 4-4s-1.79-4-4-4s-4 1.79-4 4s1.79 4 4 4"},null,-1)])])}const y1=Ne({name:"ri-user-line",render:g1}),k1={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function b1(e,t){return a(),c("svg",k1,[...t[0]||(t[0]=[r("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 3h.393a7.5 7.5 0 0 0 7.92 12.446A9 9 0 1 1 12 2.992zm5 1a2 2 0 0 0 2 2a2 2 0 0 0-2 2a2 2 0 0 0-2-2a2 2 0 0 0 2-2m2 7h2m-1-1v2"},null,-1)])])}const w1=Ne({name:"tabler-moon-stars",render:b1}),S1=`
+
+
+
+`,C1=`
+
+
+`,_1=`
+
+
+
+
+
+
+
+
+
+`,$1=`
+
+
+
+
+`,M1=`
+
+
+`,x1=`
+
+
+
+`,I1=' ',A1=' ',T1=' ',P1=' ',E1=' ',L1=' ',B1=' ',R1=' ',O1=' ',D1=' ',z1=' ',F1=' ',Kl=' ',N1=' ',q1=' ',W1=' ',H1=' ',U1=' ',V1=' ',j1=' ',K1=' ',G1=' ',Q1=' ',Y1=' ',Z1=' ',X1=' ',J1=' ',eh=' ',th=' ',nh=' ',Gl=' ',sh=' ',oh=' ',ih=' ',ah=' ',lh=' ',rh=' ',uh=' ',Ql=' ',ch=' ',dh=' ',ph=' ',fh=' ',mh=' ',vh=' ',hh=' ',gh=' ',yh=' ',kh=' ',bh=' ',wh=' ',Sh=' ',Ch=' ',_h=' ',$h=' ',Mh=' ',xh=' ',Ih=' ',Ah=' ',Th=' ',Ph=' ',Eh=' ',Lh=' ',Bh=' ',Mu={sm:14,md:16,lg:20};function ze(e,t){return{component:e,svg:t}}const xu={plus:ze(af,E1),"chat-new":ze(Tp,S1),"calendar-close":ze(zf,W1),"calendar-schedule":ze(qf,H1),"calendar-todo":ze(Uf,U1),close:ze(Yf,j1),check:ze(Kf,V1),archive:ze(pf,B1),search:ze(Up,M1),copy:ze(Cm,th),link:ze(sv,dh),"external-link":ze(gm,J1),download:ze(im,Q1),undo:ze(wf,D1),send:ze(Ul,Kl),image:ze(jl,Ql),settings:ze(Kp,x1),sliders:ze(dm,Z1),"log-in":ze(pv,mh),"chevron-down":ze(yf,O1),"chevron-right":ze(xf,F1),"chevron-up":ze(Ef,N1),"arrow-up":ze(Ul,Kl),"arrow-down":ze(vf,R1),"arrow-right":ze(_f,z1),minus:ze(s1,Ah),"panel-collapse":ze(Yp,I1),"panel-expand":ze(Jp,A1),expand:ze(mm,X1),collapse:ze(nm,G1),list:ze(uv,fh),sort:ze(Wv,_h),grip:ze(rm,Y1),folder:ze(zp,_1),"folder-closed":ze(Lp,C1),"folder-plus":ze(Dm,ih),"folder-solid":ze(Nm,ah),file:ze(Vl,Gl),"file-text":ze(Pm,sh),"file-edit":ze(Mm,nh),"file-plus":ze(bm,eh),"file-off":ze(Vl,Gl),attachment:ze(nf,T1),"image-off":ze(jl,Ql),code:ze(Jf,K1),terminal:ze(u1,Ph),pencil:ze(_v,yh),tool:ze(v1,Lh),glob:ze(Rf,q1),globe:ze(Qm,uh),"check-list":ze(av,ph),bolt:ze(Bm,oh),"git-fork":ze(Hm,lh),"git-pull-request":ze(jm,rh),message:ze(yv,hh),mail:ze(vv,vh),user:ze(y1,Bh),info:ze(ev,ch),"help-circle":ze(Ov,Sh),"alert-triangle":ze(uf,L1),clock:ze(p1,Eh),sparkles:ze(Vv,$h),"moon-stars":ze(w1,P1),target:ze(a1,Th),pause:ze(wv,gh),play:ze(xv,kh),stop:ze(e1,Ih),star:ze(Gv,Mh),"star-outline":ze(Zv,xh),pin:ze(Lv,wh),"pin-fill":ze(Tv,bh),emotion:ze(Fv,Ch),"dots-horizontal":ze(qp,$1)};function Rh(e){return xu[e]}function Oh(e,t){return e.replace(/\s(?:width|height)="[^"]*"/g,"").replace(/^Rh(t.name)),s=$(()=>Mu[t.size]);return(o,i)=>n.value?(a(),G(vu(n.value.component),{key:0,class:"kw-icon",width:s.value,height:s.value,"aria-label":e.label,"aria-hidden":e.label?void 0:!0},null,8,["width","height","aria-label","aria-hidden"])):A("",!0)}}),Dh={key:0,class:"ui-dialog__head"},zh={class:"ui-dialog__titles"},Fh={key:0,class:"ui-dialog__title"},Nh={key:1,class:"ui-dialog__desc"},qh={class:"ui-dialog__body"},Wh={key:1,class:"ui-dialog__foot"},Hh='a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])',Uh=Ie({__name:"Dialog",props:{open:{type:Boolean},title:{},description:{},closeOnOverlay:{type:Boolean,default:!0},closeOnEsc:{type:Boolean,default:!0},size:{default:"md"},height:{default:"auto"},padded:{type:Boolean,default:!0},initialFocus:{}},emits:["update:open","close"],setup(e,{emit:t}){const{t:n}=Ue(),s=e,o=t,i=I(null);let u=null;function p(){o("update:open",!1),o("close")}function f(){return i.value?Array.from(i.value.querySelectorAll(Hh)):[]}function v(){const{initialFocus:h}=s;return h?typeof h=="function"?h()??null:typeof h=="string"?i.value?.querySelector(h)??null:i.value?.contains(h)?h:null:null}function w(h){if(!s.open)return;if(h.key==="Escape"&&s.closeOnEsc){h.preventDefault(),p();return}if(h.key!=="Tab")return;const m=f(),_=m[0],y=m[m.length-1];if(!_||!y){h.preventDefault(),i.value?.focus();return}const g=document.activeElement;h.shiftKey&&g===_?(h.preventDefault(),y.focus()):!h.shiftKey&&g===y&&(h.preventDefault(),_.focus())}function x(h){s.closeOnOverlay&&h.target===h.currentTarget&&p()}return Oe(()=>s.open,async h=>{if(h){Co.value+=1,u=document.activeElement,await Ke();const m=v(),_=f();(m??_[0]??i.value)?.focus()}else Co.value=Math.max(0,Co.value-1),u instanceof HTMLElement&&(u.focus(),u=null)},{immediate:!0}),typeof window<"u"&&window.addEventListener("keydown",w),Ln(()=>{typeof window<"u"&&window.removeEventListener("keydown",w),s.open&&(Co.value=Math.max(0,Co.value-1))}),(h,m)=>(a(),G(lo,{to:"body"},[e.open?(a(),c("div",{key:0,class:"ui-dialog__overlay",onMousedown:x},[r("div",{ref_key:"panel",ref:i,class:fe(["ui-dialog",[`ui-dialog--${e.size}`,{"ui-dialog--flush":!e.padded,"ui-dialog--fixed-height":e.height==="fixed"}]]),role:"dialog","aria-modal":"true",tabindex:"-1"},[e.title||h.$slots.head?(a(),c("div",Dh,[yt(h.$slots,"head",{},()=>[r("div",zh,[e.title?(a(),c("div",Fh,d(e.title),1)):A("",!0),e.description?(a(),c("div",Nh,d(e.description),1)):A("",!0)])],!0),M(nt,{class:"ui-dialog__close",size:"sm",label:l(n)("common.close"),onClick:p},{default:H(()=>[M(se,{name:"close",size:"md"})]),_:1},8,["label"])])):A("",!0),r("div",qh,[yt(h.$slots,"default",{},void 0,!0)]),h.$slots.foot?(a(),c("div",Wh,[yt(h.$slots,"foot",{},void 0,!0)])):A("",!0)],2)],32)):A("",!0)]))}}),vs=Ee(Uh,[["__scopeId","data-v-ee025dcb"]]),Vh={class:"sd-head"},jh=["placeholder","aria-label"],Kh=["aria-selected","onClick","onMousemove"],Gh={class:"sd-meta"},Qh=["innerHTML"],Yh={class:"sd-time"},Zh=["innerHTML"],Xh=["innerHTML"],Jh={key:1,class:"sd-empty"},eg={class:"sd-hint"},tg=200,ng=Ie({__name:"SearchSessionsDialog",props:{sessions:{},activeId:{}},emits:["select","close"],setup(e,{emit:t}){const{t:n}=Ue(),s=e,o=t,i=I(!0),u=I(""),p=I(null),f=I(null),v=$(()=>{const k=u.value.trim().toLowerCase(),T=[];for(const S of s.sessions){const O=S.title??"",D=S.lastPrompt??"",E=S.workspaceName??"",B=k.length>0&&O.toLowerCase().includes(k),q=k.length>0&&D.toLowerCase().includes(k),V=k.length>0&&E.toLowerCase().includes(k);if(!(k.length>0&&!B&&!q&&!V)&&(T.push({session:S,inTitle:B,inWorkspace:V,snippetText:D?$p(D,u.value):""}),T.length>=tg))break}return T}),w=I(0);Oe(u,()=>{w.value=0});function x(k){const T=v.value.length;return T===0?0:Math.max(0,Math.min(T-1,k))}async function h(){await Ke(),f.value?.querySelector('[aria-selected="true"]')?.scrollIntoView({block:"nearest"})}function m(k){w.value=x(w.value+k),h()}function _(k){o("select",k),o("close")}function y(){const k=v.value[w.value];k&&_(k.session.id)}function g(k){k.key==="ArrowDown"?(k.preventDefault(),m(1)):k.key==="ArrowUp"?(k.preventDefault(),m(-1)):k.key==="Enter"&&(k.preventDefault(),y())}return ht(()=>{p.value?.focus()}),(k,T)=>(a(),G(vs,{open:i.value,"onUpdate:open":T[1]||(T[1]=S=>i.value=S),size:"lg",height:"fixed",padded:!1,onClose:T[2]||(T[2]=S=>o("close"))},{head:H(()=>[r("div",Vh,[M(se,{class:"sd-search-icon",name:"search",size:"md"}),gt(r("input",{ref_key:"inputRef",ref:p,"onUpdate:modelValue":T[0]||(T[0]=S=>u.value=S),class:"sd-input",type:"text",placeholder:l(n)("sidebar.searchPlaceholder"),"aria-label":l(n)("sidebar.searchPlaceholder"),autocomplete:"off",spellcheck:"false",onKeydown:g},null,40,jh),[[qn,u.value]])])]),foot:H(()=>[r("span",eg,d(l(n)("sidebar.searchHint")),1)]),default:H(()=>[r("div",{ref_key:"listRef",ref:f,class:"sd-list",role:"listbox"},[v.value.length>0?(a(!0),c(he,{key:0},Pe(v.value,(S,O)=>(a(),c("button",{key:S.session.id,class:fe(["sd-row",{on:O===w.value,active:S.session.id===e.activeId}]),role:"option","aria-selected":O===w.value,onClick:D=>_(S.session.id),onMousemove:D=>w.value=O},[r("span",Gh,[M(se,{class:"sd-folder",name:"folder-closed",size:"sm"}),r("span",{class:"sd-ws",innerHTML:l(na)(S.session.workspaceName??S.session.workspaceId??"",S.inWorkspace?u.value:"")},null,8,Qh),r("span",Yh,d(S.session.time),1)]),r("span",{class:"sd-title",innerHTML:l(na)(S.session.title,S.inTitle?u.value:"")},null,8,Zh),S.snippetText?(a(),c("span",{key:0,class:"sd-snippet",innerHTML:l(na)(S.snippetText,u.value)},null,8,Xh)):A("",!0)],42,Kh))),128)):(a(),c("div",Jh,d(l(n)("sidebar.searchNoResults")),1))],512)]),_:1},8,["open"]))}}),sg=Ee(ng,[["__scopeId","data-v-ac47909f"]]);function Ti(e){return e.isComposing===!0||e.keyCode===229}function Iu(e){return e.lastTurnReason==="failed"}const Au=["⚡","🔥","✅","❌","📌","⭐","🚀","💡","📝","🎯","🧠","🤖","🔧","📦","🌱","🎨","🔍","📈","🕐","🎉"];function og(e){return Au.includes(e)}function ig(){const e=vo(We.sessionEmoji);if(!e||typeof e!="object"||Array.isArray(e))return{};const t={};for(const[n,s]of Object.entries(e))typeof s=="string"&&og(s)&&(t[n]=s);return t}function ag(e){Vs(We.sessionEmoji,e)}function lg(e,t,n){const s={...e};return n===null||n===""?delete s[t]:s[t]=n,s}const rg={preview:"Preview",confirm:"Confirm",cancel:"Cancel",close:"Close",copy:"Copy"},ug={authBannerMessage:"Not signed in · Sign in to Kimi Code to start a conversation",authBannerLogin:"Sign in",authPageTitle:"Sign in to Kimi Code",authPageMessage:"Connect your Kimi Code account before starting or continuing conversations.",authPageLogin:"Sign in",connecting:"Connecting…",connectRetrying:"Cannot reach the server — retrying…",internalBuildBanner:"Internal testing only"},cg={workspaceMeta:"workspace · {branch}",sessionsHeader:"sessions",workspaces:"Workspaces",sortWorkspaces:"Sort workspaces",sortManual:"Manual",sortRecent:"Recent activity",collapseAll:"Collapse all workspaces",expandAll:"Expand all workspaces",newSession:"New Session",newChat:"New Chat",newWorkspace:"New Workspace",emptyState:"No sessions yet · click New Session to start",archiveConfirm:"Archive this session? You can restore it later from Settings.",options:"Options",pin:"Pin session",unpin:"Unpin session",emoji:"Set emoji",emojiRemove:"Remove emoji",rename:"Rename",genTitle:"Gen Title",genTitleUnavailable:"Title generation unavailable — needs a managed Kimi Code login and at least one message",prTag:"PR #{number}",copyPath:"Copy path",copySessionId:"Copy session ID",copied:"Copied ✓",copyFailed:"Copy failed",archive:"Archive",fork:"Fork session",export:"Export session",delete:"Delete",removeWorkspace:"Remove workspace",brand:"Kimi Code",signedIn:"Signed in",signOut:"Sign out",notSignedIn:"Not signed in",signIn:"Sign in",language:"Language",daemon:"Daemon",backendTitle:"Backend {backend} · {endpoint} — click to switch",noSessions:"No conversations yet",showMore:"Load {count} more conversations",showLess:"Show less",showAll:"Show {count} more conversations",loadingMore:"Loading…",collapseSidebar:"Collapse sidebar",expandSidebar:"Expand sidebar",viewModeFlat:"Show sessions as a flat list",viewModeGrouped:"Group sessions by workspace",mascot:"Kimi mascot",searchPlaceholder:"Search sessions",search:"Search",searchHint:"↑↓ navigate · ↵ open · Esc close",searchNoResults:"No matching sessions"},dg={switcherTitle:"Switch workspace",switchTooltip:"Switch workspace",eyebrow:"Workspace",branchLabel:"branch: {branch}",noBranch:"no branch",sessionCount:"{count} session | {count} sessions",allWorkspaces:"All workspaces",currentWorkspace:"Current workspace only",addWorkspace:"Add workspace…",noWorkspace:"No workspace",deleteHasSessions:"This workspace still has sessions — archive them before deleting it",removeWorkspaceConfirm:'Remove workspace "{name}"?',swarmEnableConfirm:"Enable swarm mode? The agent will run multiple sub-agents in parallel.",goalStartConfirm:'Start goal: "{objective}"? The agent will run autonomously toward it.',doneWhen:"Done when",scopeCurrent:"this workspace",scopeAll:"all workspaces",newInGroup:"New session in this workspace",addTitle:"Add workspace",recentLabel:"Recent folders",cancel:"Cancel",addFailed:"Couldn't open this folder. Check the path and try again.",openThisFolder:"Open this folder",up:"Up",browsing:"Browsing…",filterPlaceholder:"Filter subfolders…",searchPlaceholder:"Fuzzy-search subfolders, or paste an absolute path…",searching:"Searching…",noFilterMatch:"No subfolders match “{q}”",noSubfolders:"No subfolders here",browseHint:'Click a folder to enter it, then "Open this folder" to add it as a workspace.',checkingPath:"Checking path…",pathPickHint:"Path not found — did you mean:",noPathMatch:"Path not found — no matching folders under {parent}",badParent:"Parent directory does not exist: {parent}",pathFollowHint:'Folder located — press Enter or "Open this folder" to add it.',degradedPlaceholder:"Type an absolute path, press Enter to add…",degradedHint:"File browsing is unavailable — type an absolute path and press Enter to add.",attentionTitle:"{count} item needs your attention | {count} items need your attention",awaitingAnswer:"Answer",awaitingAnswerTitle:"A question is waiting for your answer",awaitingPermission:"Approve",awaitingPermissionTitle:"An action is waiting for your approval",aborted:"Stopped",abortedTitle:"This session was interrupted before finishing"},pg={jumpToLatestAria:"Jump to latest message",toc:"Conversation outline",newMessages:"Latest messages",loading:"Loading…",starting:"Starting conversation…",emptyWorkspaceHint:"Send in {name}",switchWorkspace:"Switch workspace",addWorkspace:"New workspace",moreWorkspaces:"More workspaces ({count})",compacting:"Compacting context…",compactedPlain:"Context compacted",compactedAuto:"Context auto-compacted",compactedTokens:" ({before} → {after} tokens)",viewSummary:"View summary",summaryTitle:"Compaction summary",manuallyAborted:"Manually stopped",activatedSkill:"Activated skill: {name}",undo:"Undo",undoTooltip:"Undoing the conversation will not roll back code changes",undoConfirm:"Undo last message?",yesterday:"Yesterday",loadOlder:"Load earlier messages",loadingOlder:"Loading earlier messages…",searchPlaceholder:"Search this conversation",searchNoResults:"No matches",searchPosition:"{current} / {total}",searchPrev:"Previous match",searchNext:"Next match",searchClose:"Close search",cron:{fired:"Scheduled reminder fired",missed:"Missed scheduled reminders",job:"job {id}",oneShot:"one-shot",coalesced:"{n} fires coalesced",missedCount:"{n} missed",finalDelivery:"final delivery",everyMinute:"Every minute",everyNMinutes:"Every {n} minutes",everyHour:"Every hour",everyNHours:"Every {n} hours",dailyAt:"Daily at {time}",weekdaysAt:"Weekdays at {time}",expand:"Show more",collapse:"Show less"},waitingForResponse:"Waiting for response…",turnFailedResume:"Continue",workingRetry:"Model request failed — retrying ({n}/{max})…"},fg={connectionConnected:"Connected",connectionConnecting:"Connecting…",connectionDisconnected:"Disconnected",ctxTooltip:"Used {used} / {max} tokens ({pct}%)",modelLabel:"Model",permissionManual:"Manual",permissionAuto:"Auto",permissionYolo:"YOLO",permissionManualDesc:"Ask for approval on every tool action",permissionAutoDesc:"Fully autonomous — agent decides everything without asking",permissionYoloDesc:"Auto-approve tool actions, but agent may still ask questions",planLabel:"Plan",planDesc:"Have the agent make a plan before changing files",planOn:"on",planOff:"off",planTooltip:"Toggle plan mode (research before editing)",planPlaceholder:"What should the agent plan for?",workModeDismiss:"Dismiss {mode}",modesLabel:"Mode",goalLabel:"Goal",goalDesc:"Track one objective until it is complete",swarmLabel:"Swarm",swarmDesc:"Run parallel agents for broader exploration",supermoonLabel:"Supermoon",supermoonDesc:"Plan deeply and run at the highest thinking effort",modeOff:"Off",goalPlaceholder:"What should the agent achieve?",goalStart:"Start",goalPause:"Pause",goalResume:"Resume",goalCancel:"Cancel",goalCancelConfirm:"Cancel this goal? It cannot be resumed afterwards.",goalCancelConfirmYes:"Yes",goalCancelConfirmNo:"No",goalStatusActive:"Active",goalStatusPaused:"Paused",goalStatusBlocked:"Blocked",goalStatusComplete:"Complete",goalEmptyTitle:"No goal yet",goalEmptyHint:"Turn goal mode on and describe what the agent should achieve.",planModeOn:"Plan mode on",planArmed:"armed",planEmptyArmed:"Plan mode is on — the plan the agent writes will show up here.",planEmptyIdle:"No plan yet — turn plan mode on and the agent's plan will show up here.",modeNotSupported:"Not supported",thinkingLabel:"thinking",thinkingTooltip:"Toggle thinking mode",thinkingOn:"On",thinkingOff:"Off",cacheNote:"Note: Switching models or thinking effort invalidates the existing prompt cache. Start a new chat to avoid extra token costs.",starredModels:"Starred",moreModels:"More models…",statusPanelTitle:"Session status",statusPanelClose:"Close",statusModel:"Model",statusThinking:"Thinking",statusPermission:"Permission",statusPlanMode:"Plan mode",statusGoalMode:"Goal mode",statusSwarmMode:"Swarm mode",statusSupermoonMode:"Supermoon mode",swarmOn:"on",swarmOff:"off",supermoonOn:"on",supermoonOff:"off",statusContext:"Context",statusCost:"Cost",statusContextValue:"{used} / {max} ({pct}%)",statusNone:"—",activityRunning:"Running…",activityAwaitingApproval:"Awaiting approval",activityAwaitingQuestion:"Awaiting answer",interrupt:"Interrupt",runningShort:"in progress"},mg={placeholder:"Type a message…",send:"Send ↵",queueLabel:"Queue",placeholderRunning:"Press Enter to queue · Ctrl+S to inject into the running turn",placeholderRunningTouch:"Queued messages send when the current turn ends",starting:"Sending…",queueAutoDrain:"sends automatically when the current turn ends",queueNext:"Up next",queueDragTitle:"Drag to reorder",editQueued:"Edit (load back into the input)",queuedAttachments:"attachment ×{n}",queuedHasImage:"Contains {n} image(s) — remove only, not editable",attachmentImage:"Image",attachmentVideo:"Video",attachmentFile:"File",attachmentOpenUnsupported:"Can’t open {name} — this file type isn’t supported",dropToAttach:"Drop files to attach",remove:"Remove",removeNamed:"Remove {name}",uploading:"Uploading",uploadFailed:"Upload failed",attachFile:"Attach file",addMenu:"Add",addPlanDesc:"Have the agent make a plan before changing files",addGoalDesc:"Track one objective until it is complete",addSwarmDesc:"Run parallel agents for broader exploration",addSupermoonDesc:"Plan deeply and run at the highest thinking effort",slashEmpty:"No matching commands",previewAttachment:"Preview {name}",interrupt:"Interrupt",interruptTitle:"Interrupt current operation",expandTitle:"Expand input for multi-line editing",collapseTitle:"Collapse input",emptyConversationTitle:"Kimi Code",emptyConversation:"No messages yet — type below to start the conversation",quickStartPlaceholder:"Type a message to start a new conversation…",thinkingSuffix:" · thinking",thinkingSuffixEffort:" · {level}",queueSteer:"Send now (Ctrl+S)",queueSteerTouch:"Send now"},vg={title:"Sign in to Kimi Code",close:"Close (Esc)",starting:"Starting authorization flow…",lead:"Click the button below to authorize in a new browser tab.",authorizeInBrowser:"Authorize in browser",orDivider:"or",fallbackPrefix:"On another device? Open ",fallbackSuffix:" and enter the device code:",copy:"Copy",copied:"Copied",waitingAuth:"Waiting for authorization",waitingAutoClose:"Waiting for authorization, signs in automatically…",success:"Authorized",successHint:"Loading, will close automatically…",expiredTitle:"Authorization code expired",expiredHint:"Please restart the authorization flow",retry:"Retry",closeBtn:"Close",errorTitle:"The current daemon does not support login yet",errorHint:"Please upgrade kimi-code and try again",pollErrorTitle:"Lost connection to the daemon",pollErrorHint:"Authorization polling failed repeatedly. Check the kimi-code process and try again."},hg={dialogLabel:"Manage providers",title:"Provider management",close:"Close (Esc)",loading:"Loading providers…",unavailable:"The daemon does not support provider management yet",empty:"No providers yet",status:{connected:"Connected",error:"Error",unconfigured:"Not configured"},keySet:"key set",keyNotSet:"key not set",modelCount:"{count} models",confirmDelete:"Confirm delete?",refresh:"Refresh",delete:"Delete",refreshTitle:"Refresh {type}",deleteTitle:"Delete {type}",loginKimi:"Sign in to Kimi",loginAnthropic:"Sign in to Anthropic",enterApiKey:"Enter API Key",fieldType:"Type",fieldApiKey:"API Key",fieldBaseUrl:"Base URL",fieldDefaultModel:"Default model",baseUrlPlaceholder:"https://… (optional)",optional:"Optional",apiKeyRequired:"API Key cannot be empty",add:"Add",escClose:"Esc to close",import:{fromCatalog:"Import from catalog",fromRegistry:"Import registry",back:"Back",catalogTitle:"Import from models.dev catalog",catalogSearchLabel:"Search",catalogSearchPlaceholder:"Search providers…",catalogLoading:"Loading catalog…",catalogEmpty:"No providers match",catalogLoadError:"Could not load the catalog",catalogRejected:"Cannot import: {reason}",catalogNeedsBaseUrl:"Needs base URL",catalogBaseUrlHint:"Required for this provider",importAction:"Import",registryTitle:"Import registry",registryUrlLabel:"Registry URL",registryUrlPlaceholder:"https://…/api.json",registryApiKeyLabel:"API key (optional)",registryUrlRequired:"Registry URL cannot be empty"}},gg={dialogLabel:"Switch model",title:"Switch model",close:"Close (Esc)",allTab:"All",providerTabs:"Model providers",searchPlaceholder:"Search models or providers…",loading:"Loading models…",unavailable:"The daemon does not support model listing yet",contextSuffix:"{size} ctx",emptyNoModels:"The daemon offers no selectable models",emptyNoMatch:"No matching models",starTitle:"Add to favorites",unstarTitle:"Remove from favorites",footerHint:"↑↓ Navigate · Enter Select · Esc Close"},yg={justNow:"just now"},kg={title:{shell:"Run command?",diff:"Apply changes?",file:"Write file?",fileop:"File operation?",url:"Fetch URL?",search:"Search?",invocation:"Invoke?",todo:"Update todo?",plan_review:"Ready to build with this plan?",generic:"Approve action?"},subagentBadge:"sub agent · {name}",required:"APPROVAL REQUIRED",danger:"Danger: {detail}",searchQueryLabel:"query",searchScope:"scope: {scope}",feedbackPlaceholder:"Explain why you are rejecting… (Enter to submit, Esc to cancel)",feedbackHint:"Enter to submit · Esc to cancel",approve:"Approve",approveSession:"Approve for session",reject:"Reject",feedback:"+Feedback",approvePlan:"Approve plan",revise:"Revise",rejectAndExit:"Reject and Exit"},bg={title:"Question",step:"Q{current}/{total}",back:"‹ Back",nextQuestion:"Next question ›",otherDefault:"Other…",submit:"Submit",dismiss:"Dismiss",minimize:"Minimize",expand:"Expand"},wg={tag:"tasks",summary:"{run} running · {done} done",stop:"stop",defaultDescription:"Background task",dockTasks:"Background tasks",dockBash:"Bash",dockSubagent:"Sub Agent",dockTodos:"Todos",thinkingEffort:"thinking {effort}",running:"running",closePanel:"Close panel",timingRunning:"Running · {time}",timingDone:"Done · {sec}s",emptyTasks:"No background tasks running",emptyBash:"No bash tasks running",emptySubagent:"No sub agent tasks running",emptyTodo:"No todos yet",todoProgress:"{done}/{total} done",filterRecent:"Recent",filterRunning:"Running",filterDone:"Done",filterAll:"All",emptyRecent:"No recent tasks",emptyRunning:"No running tasks",emptyDone:"No completed tasks",detailPlaceholder:"Select a task to view its command and output",noOutput:"No output yet",openTab:"Open the tasks tab",openDetail:"Open",collapse:"Collapse",expand:"Expand",fieldTask:"Task",fieldOutput:"Output",fieldProgress:"Progress",fieldResult:"Result"},Sg={panelTitle:"Thinking",close:"Close"},Cg={title:"Changes",branch:"branch",aheadTitle:"ahead of remote",behindTitle:"behind remote",changeCount:"{count} changes",empty:"No git changes / not provided by daemon",clean:"Working tree clean, no changes",back:"Back",loading:"Loading diff…",noDiff:"No line changes for this file",list:"List",tree:"Tree",close:"Close",colorblind:"Colorblind",colorblindOff:"Default",colorblindRedGreen:"Red–green",colorblindBlueYellow:"Blue–yellow"},_g={},$g={empty:"Select a file on the left to preview",loading:"Loading…",lineCount:"{count} lines",copy:"Copy",copied:"Copied",copyPath:"Copy path",openInEditor:"Open",reveal:"Reveal",download:"Download",close:"Close",videoFallback:"Video",imageFallback:"Image",search:"Search",prevMatch:"Previous match",nextMatch:"Next match",htmlMode:"HTML preview mode",markdownMode:"Markdown preview mode",preview:"Preview",source:"Source",imageFit:"Image sizing",fit:"Fit",actual:"Actual",pdfNoPreview:"This PDF cannot be embedded here. Download it to view.",imageNoPreview:"Image file · {mime} · {size} · preview unavailable",videoNoPreview:"Video file · {mime} · {size} · preview unavailable",binaryNoPreview:"Binary file · {mime} · {size} bytes · preview unavailable",unknownType:"unknown type",copyCode:"Copy code",enlargeImage:"Enlarge image",errors:{emptyPath:"File path is empty",unsupportedPath:"URLs and remote paths cannot be previewed",outsideWorkspace:"Only files inside the current workspace can be previewed",isDirectory:"Select a file instead of a directory",loadFailed:"Unable to read this file"}},Mg={searching:"Searching…",noMatch:"No matches"},xg={dismiss:"Close",errorLabel:"Error",noteLabel:"Note",agentError:{title:"Model request failed",connection:"Cannot connect to the model service",auth:"Model authentication failed",rateLimit:"Model rate limit reached",overloaded:"Model overloaded",filtered:"Response filtered by the provider",api:"Model API error",usageLimit:"Usage limit reached",contextOverflow:"Context size exceeded"},details:{cause:"Cause",code:"Error code",connection:"Connection",contentType:"Content type",details:"Server details",duration:"Duration",endpoint:"Endpoint",errorName:"Error type",message:"Message",operation:"Operation",phase:"Failure phase",request:"Request",requestId:"Request ID",responsePreview:"Response preview",sessionId:"Session ID",stack:"Stack",status:"HTTP status",timeout:"Timeout",timestamp:"Time"},daemonApiTitle:"Kimi daemon returned an error",daemonNetworkMessage:"Web did not receive a response from the local service. Check that Kimi daemon is still running, or refresh the page.",daemonNetworkTitle:"Cannot connect to Kimi daemon",daemonTimeoutMessage:"Kimi server did not respond within the wait limit. The operation may still complete in the background — refresh later to check, or try again.",daemonTimeoutTitle:"Kimi server response timed out",diagnostics:"Diagnostics",hideDetails:"Hide details",operationFailedMessage:"The last operation did not finish. Try again later.",operationFailedTitle:"Operation failed",sessionSnapshotMessage:"Web could not load the current conversation. Check that Kimi daemon is still running, or refresh the page.",sessionSnapshotTitle:"Cannot load current conversation",showDetails:"Show details",copyDetails:"Copy diagnostics",copied:"Copied",wsTitle:"Realtime connection error",goal:{alreadyExists:"This session already has an active goal. Cancel it before starting a new one.",notFound:"No goal to act on — it may have already finished or been cancelled.",statusInvalid:"The current goal state does not allow this action.",notResumable:"This goal cannot be resumed (it may be cancelled or completed).",objectiveTooLong:"The objective is too long. Please shorten it and try again."}},Ig={new:{desc:"Create a new session"},clear:{desc:"Clear and start a new session"},login:{desc:"Sign in to Kimi in the browser"},plan:{desc:"Toggle plan mode on/off"},swarm:{desc:"Toggle swarm mode; /swarm runs a task in swarm"},goal:{desc:"Create/control a goal: /goal , /goal pause|resume|cancel"},btw:{desc:"Side chat: /btw asks a forked side session"},yolo:{desc:"Auto-approve tool actions; the agent may still ask questions"},auto:{desc:"Fully autonomous — the agent never asks questions"},thinking:{desc:"Set the thinking level"},compact:{desc:"Compact the conversation history"},fork:{desc:"Fork this session into a new one"},export:{desc:"Download this session and troubleshooting logs as a ZIP",done:"Session exported.",noSession:"Open a session before exporting it.",started:"Exporting session…",tooLarge:"Session too large to export…"},status:{desc:"View session status"},undo:{desc:"Undo the last message"}},Ag={label:{read:"Read",bash:"Run",edit:"Edit",write:"Write",grep:"Search",glob:"Find",ls:"List",web_fetch:"Fetch",search:"Search",todo:"Todo",task:"Task",swarm:"Swarm",ask_user:"Question",goal_create:"Start Goal",goal_get:"Read Goal",goal_budget:"Set Goal Budget",goal_update:"Update Goal"},swarm:{progress:"{done} / {total}",runningSub:"{count} in progress",doneSub:"{completed} completed · {failed} failed",phaseQueued:"Queued",phaseWorking:"Working",phaseSuspended:"Suspended",phaseCompleted:"Completed",phaseFailed:"Failed",waiting:"Waiting for subagents…"},chip:{lines:"{count} lines",results:"{count} results",edited:"edited",created:"created",todos:"{count} items"},goal:{objectiveWithCriterion:"{objective} · {criterion}",status:"Status: {status}",budget:"{value} {unit}",turns:"{value} turns",tokens:"{value} tokens",milliseconds:"{value} ms",seconds:"{value} sec",minutes:"{value} min",hours:"{value} hr"},group:{title:"{count} tool call | {count} tool calls",running:"running",error:"failed",done:"done"},ask:{dismissed:"Dismissed",answer:"{count} answer",answers:"{count} answers",answered:"Answered",more:"(+{count} more)"},plan:{loading:"Loading plan…",unavailable:"Plan unavailable",pending:"Pending review",approved:"Approved",rejected:"Rejected",cancelled:"Cancelled"}},Tg={resizeHandleAria:"Resize sidebar width",resizePreviewAria:"Resize preview panel width",detailPanelAria:"Detail panel"},Pg={zoomIn:"Zoom in",zoomOut:"Zoom out",resetZoom:"Reset zoom",dragHint:"Drag to pan",noPreview:"No preview available"},Eg={openSwitcher:"Switch session / workspace",openSettings:"Session settings",settingsTitle:"Session settings",groupSession:"Current session",groupApp:"App preferences",sheetLabel:"Sheet",closeSheet:"Close",tapToCycle:"tap to cycle",running:"running",idle:"idle",sessionCount:"{n} sessions",newSession:"New session",permManualSub:"confirm every tool",permAutoSub:"fully autonomous, never asks",permYoloSub:"auto-approve tools, may still ask",planModeSub:"Plan mode",goalModeSub:"Goal mode",swarmModeSub:"Swarm mode",supermoonModeSub:"Supermoon mode",archivedSessions:"Archived sessions",archivedSessionsSub:"Browse and restore archived sessions",archivedBack:"Back"},Lg={colorSchemeLabel:"Light/Dark",light:"Moon Bright",dark:"Moon Dark",system:"System",accentLabel:"Accent",accentBlue:"Blue",accentBlack:"Black"},Bg={preview:"预览",confirm:"确认",cancel:"取消",close:"关闭",copy:"复制"},Rg={authBannerMessage:"未登录 · 需要登录 Kimi Code 才能开始对话",authBannerLogin:"登录",authPageTitle:"登录 Kimi Code",authPageMessage:"先连接 Kimi Code 账号,然后再开始或继续对话。",authPageLogin:"登录",connecting:"连接中…",connectRetrying:"无法连接服务器,正在重试…",internalBuildBanner:"仅供内部测试"},Og={workspaceMeta:"workspace · {branch}",sessionsHeader:"sessions",workspaces:"工作区",sortWorkspaces:"工作区排序",sortManual:"手动排序",sortRecent:"按最近活动",collapseAll:"折叠全部工作区",expandAll:"展开全部工作区",newSession:"新建会话",newChat:"新建对话",newWorkspace:"新建工作区",emptyState:"还没有会话 · 点击 新建会话 开始",archiveConfirm:"确认归档会话?归档后可以从「设置」中恢复",options:"选项",pin:"置顶会话",unpin:"取消置顶",emoji:"设置表情",emojiRemove:"移除表情",rename:"重命名",genTitle:"生成标题",genTitleUnavailable:"无法生成标题:需要登录 Kimi Code 托管账号,且会话中已有消息",prTag:"PR #{number}",copyPath:"复制路径",copySessionId:"复制 Session ID",copied:"已复制 ✓",copyFailed:"复制失败",archive:"归档",fork:"分叉会话",export:"导出会话",delete:"删除",removeWorkspace:"移除工作区",brand:"Kimi Code",signedIn:"已登录",signOut:"退出登录",notSignedIn:"未登录",signIn:"登录",language:"语言",daemon:"后台",backendTitle:"后端 {backend} · {endpoint} — 点击切换",noSessions:"暂无对话",showMore:"加载更多 {count} 个对话",showLess:"收起",showAll:"展开剩余 {count} 个对话",loadingMore:"加载中…",collapseSidebar:"收起侧边栏",expandSidebar:"展开侧边栏",viewModeFlat:"将会话显示为平铺列表",viewModeGrouped:"按工作区分组显示会话",mascot:"Kimi 吉祥物",searchPlaceholder:"搜索会话",search:"搜索",searchHint:"↑↓ 选择 · ↵ 打开 · Esc 关闭",searchNoResults:"没有匹配的会话"},Dg={switcherTitle:"切换工作区",switchTooltip:"切换工作区",eyebrow:"工作区",branchLabel:"分支: {branch}",noBranch:"无分支",sessionCount:"{count} 个会话",allWorkspaces:"全部工作区",currentWorkspace:"仅当前工作区",addWorkspace:"添加工作区…",noWorkspace:"暂无工作区",deleteHasSessions:"工作区内还有会话,请先归档这些会话再删除",removeWorkspaceConfirm:"移除工作区「{name}」?",swarmEnableConfirm:"启用 swarm 模式?Agent 将并行运行多个子 agent。",goalStartConfirm:"启动 goal:「{objective}」?Agent 将自主执行。",doneWhen:"完成条件",scopeCurrent:"当前工作区",scopeAll:"全部工作区",newInGroup:"在此工作区新建会话",addTitle:"添加工作区",recentLabel:"最近的文件夹",cancel:"取消",addFailed:"无法打开此文件夹,请检查路径后重试。",openThisFolder:"打开此文件夹",up:"上一级",browsing:"加载中…",filterPlaceholder:"过滤子文件夹…",searchPlaceholder:"模糊搜索子文件夹,或粘贴绝对路径…",searching:"搜索中…",noFilterMatch:"没有匹配「{q}」的子文件夹",noSubfolders:"此处没有子文件夹",browseHint:'点击文件夹进入,再点"打开此文件夹"将其添加为工作区。',checkingPath:"检查路径…",pathPickHint:"此路径不存在,你是不是想找:",noPathMatch:"此路径不存在,「{parent}」下没有匹配的文件夹",badParent:"上级目录不存在:{parent}",pathFollowHint:'已定位到目标文件夹,按回车或点击"打开此文件夹"完成添加。',degradedPlaceholder:"输入绝对路径,回车添加…",degradedHint:"守护进程无法浏览文件系统,请直接输入绝对路径后回车添加。",attentionTitle:"{count} 项待处理",awaitingAnswer:"待回答",awaitingAnswerTitle:"有提问等待你回答",awaitingPermission:"待授权",awaitingPermissionTitle:"有操作等待你授权",aborted:"已中断",abortedTitle:"此会话在完成前被中断"},zg={jumpToLatestAria:"跳到最新消息",toc:"对话目录",newMessages:"最新消息",loading:"加载中…",starting:"正在创建对话…",emptyWorkspaceHint:"在 {name} 中发送",switchWorkspace:"切换工作区",addWorkspace:"添加工作区",moreWorkspaces:"更多工作区 ({count})",compacting:"正在压缩上下文…",compactedPlain:"上下文已压缩",compactedAuto:"已自动压缩上下文",compactedTokens:"({before} → {after} tokens)",viewSummary:"查看摘要",summaryTitle:"压缩摘要",manuallyAborted:"您已手动终止",activatedSkill:"已激活技能: {name}",undo:"撤销",undoTooltip:"撤销对话不会回滚代码",undoConfirm:"撤销上一条消息?",yesterday:"昨天",loadOlder:"加载更早的消息",loadingOlder:"正在加载更早的消息…",searchPlaceholder:"搜索当前对话",searchNoResults:"无匹配结果",searchPosition:"{current} / {total}",searchPrev:"上一个匹配",searchNext:"下一个匹配",searchClose:"关闭搜索",cron:{fired:"定时任务已触发",missed:"错过的定时提醒",job:"任务 {id}",oneShot:"单次",coalesced:"已合并 {n} 次触发",missedCount:"错过 {n} 次",finalDelivery:"最后一次投递",everyMinute:"每分钟",everyNMinutes:"每 {n} 分钟",everyHour:"每小时",everyNHours:"每 {n} 小时",dailyAt:"每天 {time}",weekdaysAt:"工作日 {time}",expand:"展开",collapse:"收起"},waitingForResponse:"等待响应…",turnFailedResume:"继续",workingRetry:"模型请求失败,正在重试({n}/{max})…"},Fg={connectionConnected:"已连接",connectionConnecting:"连接中…",connectionDisconnected:"未连接",ctxTooltip:"使用 {used} / {max} tokens ({pct}%)",modelLabel:"模型",permissionManual:"逐条确认",permissionAuto:"完全自主",permissionYolo:"自动通过",permissionManualDesc:"每个工具操作都需要你手动确认",permissionAutoDesc:"完全自主运行,智能体自己做决定,不再询问",permissionYoloDesc:"自动批准工具操作,但遇到关键问题仍会询问",planLabel:"计划",planDesc:"先让智能体梳理计划,再修改文件",planOn:"开",planOff:"关",planTooltip:"切换计划模式(先调研再修改)",planPlaceholder:"让智能体规划什么?",workModeDismiss:"取消{mode}",modesLabel:"模式",goalLabel:"目标",goalDesc:"持续跟踪一个目标,直到任务完成",swarmLabel:"Swarm",swarmDesc:"并行运行多个智能体,适合大范围探索",supermoonLabel:"Supermoon",supermoonDesc:"深度规划,并以最高思考强度运行",modeOff:"未启用",goalPlaceholder:"让智能体完成什么目标?",goalStart:"开始",goalPause:"暂停",goalResume:"继续",goalCancel:"取消",goalCancelConfirm:"是否需要取消当前目标?取消后将无法恢复。",goalCancelConfirmYes:"是",goalCancelConfirmNo:"否",goalStatusActive:"进行中",goalStatusPaused:"已暂停",goalStatusBlocked:"已阻塞",goalStatusComplete:"已完成",goalEmptyTitle:"暂无目标",goalEmptyHint:"开启目标模式,告诉智能体要实现什么。",planModeOn:"计划模式已开启",planArmed:"已预备",planEmptyArmed:"计划模式已开启 — 智能体写下的计划会显示在这里。",planEmptyIdle:"暂无计划 — 开启计划模式后,智能体的计划会显示在这里。",modeNotSupported:"暂不支持",thinkingLabel:"思考",thinkingTooltip:"切换思考模式",thinkingOn:"开",thinkingOff:"关",cacheNote:"提示:切换模型或思考程度会使已有的提示词缓存失效。建议新建对话,避免额外的 token 消耗。",starredModels:"收藏",moreModels:"更多模型…",statusPanelTitle:"会话状态",statusPanelClose:"关闭",statusModel:"模型",statusThinking:"思考强度",statusPermission:"权限",statusPlanMode:"计划模式",statusGoalMode:"目标模式",statusSwarmMode:"Swarm 模式",statusSupermoonMode:"Supermoon 模式",swarmOn:"开",swarmOff:"关",supermoonOn:"开",supermoonOff:"关",statusContext:"上下文",statusCost:"花费",statusContextValue:"{used} / {max} ({pct}%)",statusNone:"—",activityRunning:"运行中…",activityAwaitingApproval:"等待批准",activityAwaitingQuestion:"等待回答",interrupt:"中断",runningShort:"进行中"},Ng={placeholder:"输入消息…",send:"发送 ↵",queueLabel:"队列",placeholderRunning:"输入会加入队列 · Ctrl+S 立即插入运行中的回合",placeholderRunningTouch:"消息将在当前回合结束后发送",starting:"正在发送…",queueAutoDrain:"当前回合结束后自动逐条发送",queueNext:"下一条",queueDragTitle:"拖拽排序",editQueued:"编辑(载入到输入框)",queuedAttachments:"附件 ×{n}",queuedHasImage:"包含 {n} 张图片 — 只能移除,不能编辑",attachmentImage:"图片",attachmentVideo:"视频",attachmentFile:"文件",attachmentOpenUnsupported:"无法打开 {name}:暂不支持此文件类型",dropToAttach:"松开鼠标添加附件",remove:"移除",removeNamed:"移除 {name}",uploading:"上传中",uploadFailed:"上传失败",attachFile:"添加附件",addMenu:"添加",addPlanDesc:"先让智能体梳理计划,再修改文件",addGoalDesc:"持续跟踪一个目标,直到任务完成",addSwarmDesc:"并行运行多个智能体,适合大范围探索",addSupermoonDesc:"深度规划,并以最高思考强度运行",slashEmpty:"没有匹配的命令",previewAttachment:"预览 {name}",interrupt:"中断",interruptTitle:"中断当前操作",expandTitle:"展开输入框进行多行编辑",collapseTitle:"收起输入框",emptyConversationTitle:"Kimi Code",emptyConversation:"还没有消息 —— 在下方输入开始对话",quickStartPlaceholder:"输入消息开始新对话…",thinkingSuffix:" · 思考",thinkingSuffixEffort:" · {level}",queueSteer:"立即发送 (Ctrl+S)",queueSteerTouch:"立即发送"},qg={title:"登录 Kimi Code",close:"关闭 (Esc)",starting:"正在启动授权流程…",lead:"点击下方按钮,在新标签页中完成授权。",authorizeInBrowser:"在浏览器中授权",orDivider:"或者",fallbackPrefix:"换个设备?在浏览器打开 ",fallbackSuffix:" 输入设备码:",copy:"复制",copied:"已复制",waitingAuth:"等待授权",waitingAutoClose:"等待授权,完成后自动登录…",success:"已授权",successHint:"正在加载,稍后自动关闭…",expiredTitle:"授权码已过期",expiredHint:"请重新开始授权流程",retry:"重试",closeBtn:"关闭",errorTitle:"当前 daemon 暂不支持登录",errorHint:"请升级 kimi-code 后重试",pollErrorTitle:"与 daemon 的连接已断开",pollErrorHint:"授权轮询连续失败,请检查 kimi-code 进程后重试"},Wg={dialogLabel:"管理提供商",title:"提供商管理",close:"关闭 (Esc)",loading:"加载提供商中…",unavailable:"daemon 暂不支持提供商管理",empty:"暂无提供商",status:{connected:"已连接",error:"错误",unconfigured:"未配置"},keySet:"key 已设置",keyNotSet:"未设置 key",modelCount:"{count} 个模型",confirmDelete:"确认删除?",refresh:"刷新",delete:"删除",refreshTitle:"刷新 {type}",deleteTitle:"删除 {type}",loginKimi:"登录 Kimi",loginAnthropic:"登录 Anthropic",enterApiKey:"填写 API Key",fieldType:"类型",fieldApiKey:"API Key",fieldBaseUrl:"Base URL",fieldDefaultModel:"默认模型",baseUrlPlaceholder:"https://… (可选)",optional:"可选",apiKeyRequired:"API Key 不能为空",add:"添加",escClose:"Esc 关闭",import:{fromCatalog:"从目录导入",fromRegistry:"导入 registry",back:"返回",catalogTitle:"从 models.dev 目录导入",catalogSearchLabel:"搜索",catalogSearchPlaceholder:"搜索提供商…",catalogLoading:"加载目录中…",catalogEmpty:"没有匹配的提供商",catalogLoadError:"无法加载目录",catalogRejected:"无法导入:{reason}",catalogNeedsBaseUrl:"需要 base URL",catalogBaseUrlHint:"该提供商必填",importAction:"导入",registryTitle:"导入 registry",registryUrlLabel:"Registry URL",registryUrlPlaceholder:"https://…/api.json",registryApiKeyLabel:"API Key(可选)",registryUrlRequired:"Registry URL 不能为空"}},Hg={dialogLabel:"切换模型",title:"切换模型",close:"关闭 (Esc)",allTab:"全部",providerTabs:"模型提供商",searchPlaceholder:"搜索模型或提供商…",loading:"加载模型中…",unavailable:"daemon 暂不支持模型列表",contextSuffix:"{size} ctx",emptyNoModels:"daemon 未提供可选模型",emptyNoMatch:"无匹配模型",starTitle:"添加到收藏",unstarTitle:"取消收藏",footerHint:"↑↓ 导航 · Enter 选择 · Esc 关闭"},Ug={justNow:"刚刚"},Vg={title:{shell:"运行命令?",diff:"应用修改?",file:"写入文件?",fileop:"文件操作?",url:"抓取 URL?",search:"搜索?",invocation:"调用?",todo:"更新 todo?",plan_review:"按这份 plan 开始实现?",generic:"批准操作?"},subagentBadge:"子 agent · {name}",required:"APPROVAL REQUIRED",danger:"危险: {detail}",searchQueryLabel:"查询",searchScope:"范围:{scope}",feedbackPlaceholder:"说明拒绝原因… (Enter 提交, Esc 取消)",feedbackHint:"Enter 提交 · Esc 取消",approve:"批准",approveSession:"本会话内批准",reject:"拒绝",feedback:"+反馈",approvePlan:"批准 plan",revise:"修改",rejectAndExit:"拒绝并退出"},jg={title:"提问",step:"Q{current}/{total}",back:"‹ 返回",nextQuestion:"下一题 ›",otherDefault:"其他…",submit:"提交",dismiss:"放弃",minimize:"最小化",expand:"展开"},Kg={tag:"任务",summary:"{run} 运行中 · {done} 完成",stop:"stop",defaultDescription:"后台任务",dockTasks:"后台任务",dockBash:"后台 Bash",dockSubagent:"子 Agent",dockTodos:"待办",thinkingEffort:"思考 {effort}",running:"运行中",closePanel:"关闭面板",timingRunning:"运行中 · {time}",timingDone:"完成 · {sec}s",emptyTasks:"暂无后台任务",emptyBash:"暂无后台 Bash 任务",emptySubagent:"暂无子 Agent 任务",emptyTodo:"暂无待办事项",todoProgress:"已完成 {done}/{total}",filterRecent:"最近",filterRunning:"运行中",filterDone:"已完成",filterAll:"全部",emptyRecent:"暂无最近任务",emptyRunning:"暂无运行中的任务",emptyDone:"暂无已完成的任务",detailPlaceholder:"选择任务以查看命令与输出",noOutput:"暂无输出",openTab:"查看全部后台任务",openDetail:"查看",collapse:"折叠",expand:"展开",fieldTask:"任务",fieldOutput:"输出",fieldProgress:"进度",fieldResult:"结果"},Gg={panelTitle:"思考过程",close:"关闭"},Qg={title:"改动",branch:"分支",aheadTitle:"领先远程",behindTitle:"落后远程",changeCount:"{count} 改动",empty:"无 git 改动 / daemon 未提供",clean:"工作区干净,无改动",back:"返回",loading:"正在加载 diff…",noDiff:"该文件没有行级改动",list:"列表",tree:"树形",close:"关闭",colorblind:"色盲配色",colorblindOff:"默认",colorblindRedGreen:"红绿色盲",colorblindBlueYellow:"蓝黄色盲"},Yg={},Zg={empty:"选择左侧文件预览",loading:"加载中…",lineCount:"{count} 行",copy:"复制",copied:"已复制",copyPath:"复制路径",openInEditor:"打开",reveal:"显示",download:"下载",close:"关闭",videoFallback:"视频",imageFallback:"图片",search:"搜索",prevMatch:"上一个匹配",nextMatch:"下一个匹配",htmlMode:"HTML 预览模式",markdownMode:"Markdown 预览模式",preview:"预览",source:"源码",imageFit:"图片缩放",fit:"适应",actual:"原始",pdfNoPreview:"无法内嵌预览此 PDF,可以下载后查看",imageNoPreview:"图片文件 · {mime} · {size} · 暂不预览",videoNoPreview:"视频文件 · {mime} · {size} · 暂不预览",binaryNoPreview:"二进制文件 · {mime} · {size} 字节 · 暂不预览",unknownType:"未知类型",copyCode:"复制代码",enlargeImage:"放大图片",errors:{emptyPath:"文件路径为空",unsupportedPath:"不支持预览 URL 或远程路径",outsideWorkspace:"只能预览当前 workspace 内的文件",isDirectory:"请选择具体文件,而不是目录",loadFailed:"无法读取这个文件"}},Xg={searching:"搜索中…",noMatch:"无匹配"},Jg={dismiss:"关闭",errorLabel:"错误",noteLabel:"提示",agentError:{title:"模型请求失败",connection:"无法连接模型服务",auth:"模型认证失败",rateLimit:"模型请求被限流",overloaded:"模型服务过载",filtered:"响应被提供方过滤",api:"模型接口返回错误",usageLimit:"用量已达上限",contextOverflow:"上下文超出模型限制"},details:{cause:"底层原因",code:"错误码",connection:"连接状态",contentType:"响应类型",details:"服务端详情",duration:"耗时",endpoint:"请求地址",errorName:"错误类型",message:"错误信息",operation:"操作",phase:"失败阶段",request:"请求",requestId:"Request ID",responsePreview:"响应预览",sessionId:"Session ID",stack:"堆栈",status:"HTTP 状态",timeout:"超时设置",timestamp:"时间"},daemonApiTitle:"Kimi daemon 返回错误",daemonNetworkMessage:"Web 没有拿到本地服务的响应。请确认 Kimi daemon 仍在运行,或刷新页面重试。",daemonNetworkTitle:"无法连接到 Kimi daemon",daemonTimeoutMessage:"Kimi 服务器没有在规定时间内响应。操作可能仍在后台继续,稍后刷新查看,或重试一次。",daemonTimeoutTitle:"Kimi 服务器响应超时",diagnostics:"诊断信息",hideDetails:"收起详情",operationFailedMessage:"刚才的操作没有完成,请稍后重试。",operationFailedTitle:"操作失败",sessionSnapshotMessage:"Web 没能加载当前会话内容。请确认 Kimi daemon 仍在运行,或刷新页面重试。",sessionSnapshotTitle:"无法加载当前会话内容",showDetails:"查看详情",copyDetails:"复制诊断信息",copied:"已复制",wsTitle:"实时连接出错",goal:{alreadyExists:"当前会话已有一个进行中的目标,请先取消它再创建新目标。",notFound:"没有找到可操作的目标,可能它已经结束或被取消。",statusInvalid:"当前目标状态不支持这个操作。",notResumable:"这个目标无法恢复(可能已取消或已完成)。",objectiveTooLong:"目标描述太长了,请精简后重试。"}},e0={new:{desc:"创建新会话"},clear:{desc:"清空并新建会话"},login:{desc:"在浏览器中登录 Kimi"},plan:{desc:"切换计划模式 开/关"},swarm:{desc:"切换 swarm 模式;/swarm <任务> 直接在 swarm 下执行"},goal:{desc:"创建/控制目标:/goal <目标>、/goal pause|resume|cancel"},btw:{desc:"侧边聊天:/btw <问题> 向 fork 的侧边会话提问"},yolo:{desc:"自动批准工具操作,Agent 仍可能提问"},auto:{desc:"完全自主,Agent 不再提问"},thinking:{desc:"设置思考强度"},compact:{desc:"压缩会话历史"},fork:{desc:"把当前会话 fork 出一个新会话"},export:{desc:"将当前会话和排障日志下载为 ZIP 压缩包",done:"会话已导出。",noSession:"请先打开一个会话再导出。",started:"正在导出会话…",tooLarge:"会话过大,无法导出…"},status:{desc:"查看会话状态"},undo:{desc:"撤销上一条消息"}},t0={label:{read:"读取",bash:"运行",edit:"编辑",write:"写入",grep:"搜索",glob:"查找",ls:"列目录",web_fetch:"抓取",search:"搜索",todo:"待办",task:"任务",swarm:"Swarm",ask_user:"提问",goal_create:"启动目标",goal_get:"读取目标",goal_budget:"设置目标预算",goal_update:"更新目标"},swarm:{progress:"{done} / {total}",runningSub:"{count} 个进行中",doneSub:"完成 {completed} · 失败 {failed}",phaseQueued:"排队",phaseWorking:"运行中",phaseSuspended:"暂停",phaseCompleted:"完成",phaseFailed:"失败",waiting:"等待子任务加入…"},chip:{lines:"{count} 行",results:"{count} 结果",edited:"已编辑",created:"已创建",todos:"{count} 项"},goal:{objectiveWithCriterion:"{objective} · {criterion}",status:"状态:{status}",budget:"{value} {unit}",turns:"{value} 轮",tokens:"{value} token",milliseconds:"{value} 毫秒",seconds:"{value} 秒",minutes:"{value} 分钟",hours:"{value} 小时"},group:{title:"{count} 个工具调用",running:"运行中",error:"有失败",done:"已完成"},ask:{dismissed:"已忽略",answer:"{count} 个回答",answers:"{count} 个回答",answered:"已回答",more:"(还有 {count} 个)"},plan:{loading:"正在加载 plan…",unavailable:"无法获取 plan",pending:"等待审核",approved:"已批准",rejected:"已拒绝",cancelled:"已取消"}},n0={resizeHandleAria:"调整侧栏宽度",resizePreviewAria:"调整预览面板宽度",detailPanelAria:"详情面板"},s0={zoomIn:"放大",zoomOut:"缩小",resetZoom:"重置缩放",dragHint:"拖拽平移",noPreview:"无预览"},o0={openSwitcher:"切换会话 / 工作区",openSettings:"会话设置",settingsTitle:"会话设置",groupSession:"当前会话",groupApp:"应用偏好",sheetLabel:"面板",closeSheet:"关闭",tapToCycle:"点击切换",running:"运行中",idle:"空闲",sessionCount:"{n} 个会话",newSession:"新建会话",permManualSub:"每个工具都确认",permAutoSub:"完全自主,不再提问",permYoloSub:"自动批准工具,仍可能提问",planModeSub:"计划模式",goalModeSub:"目标模式",swarmModeSub:"Swarm 模式",supermoonModeSub:"Supermoon 模式",archivedSessions:"已归档会话",archivedSessionsSub:"查看并恢复已归档会话",archivedBack:"返回"},i0={colorSchemeLabel:"明暗",light:"月之亮面",dark:"月之暗面",system:"跟随系统",accentLabel:"主题色",accentBlue:"蓝色",accentBlack:"黑色"},a0={title:"Welcome to Kimi Web",subtitle:"Pick a few preferences — you can change them anytime in Settings.",languageLabel:"Language",start:"Get started",skip:"Skip",reopen:"Preferences / onboarding"},l0={title:"欢迎来使用 Kimi Web",subtitle:"来选择一些你的偏好 —— 之后也可以在设置里随时修改。",languageLabel:"语言",start:"开始使用",skip:"跳过",reopen:"偏好 / 引导"},r0={title:"Settings",close:"Close (Esc)",tabs:{general:"General",agent:"Agent",account:"Account",advanced:"Advanced",archived:"Archived",plugins:"Plugins"},appearance:"Appearance",notifications:"Notifications",notifyOnComplete:"Notify when a turn completes",notifyOnQuestion:"Notify when a question needs an answer",notifyOnApproval:"Notify when a tool needs approval",soundOnComplete:"Play a sound when a turn completes, needs an answer, or needs approval",notifyDenied:"Blocked in browser settings",notifyTitle:"Kimi Code · Turn finished",notifyQuestionTitle:"Kimi Code · Needs answer",notifyApprovalTitle:"Kimi Code · Approval required",notifyFallback:"View result",notifyQuestionFallback:"A question is waiting for your answer",notifyApprovalFallback:"A tool needs your approval",account:"Account",uiFontSize:"Font size",agentDefaults:"Agent defaults",providers:"Providers",providersHint:"Add, remove, or refresh providers",manageProviders:"Manage",saving:"Saving",defaultModel:"Default model",defaultModelHint:"New sessions prefer this model",noDefaultModel:"No default model",defaultPermission:"Default permission",defaultPermissionHint:"Only affects newly-created sessions",defaultThinking:"Thinking by default",defaultThinkingHint:"Whether new sessions start with thinking enabled",defaultPlanMode:"Plan mode by default",defaultPlanModeHint:"Whether new sessions start in plan mode",mergeSkills:"Merge all available skills",mergeSkillsHint:"Show project, plugin, and user skills together",telemetry:"Improve product with usage data",telemetryHint:"When on, we collect anonymous interaction data (such as clicks, interruptions, and feature usage) to improve the product experience. You can turn it off at any time.",telemetryRestartHint:"Takes effect after restarting the service.",credentialReady:"Credential configured",credentialMissing:"Missing credential",configUnavailable:"The server did not return config yet. These settings are unavailable.",advanced:"Advanced",build:"Build",serverVersion:"Server version",backend:"Backend",exportLog:"Troubleshooting log",logHint:"Enable with ?debug=1 to capture",exportLogBtn:"Export log",conversationToc:"Show conversation outline",conversationTocHint:"Show a clickable outline in the right margin to jump between messages",archivedTitle:"Archived sessions",archivedDesc:"Browse archived sessions, see their workspace path, name, and archive time, and restore them to the session list.",archivedSearch:"Search archived sessions",archivedAllWorkspaces:"All workspaces",archivedSortLabel:"Sort by",archivedSortArchived:"Archive time",archivedSortCreated:"Created time",archivedSortName:"Name",archivedRestore:"Restore",archivedEmpty:"No archived sessions yet",archivedNoMatch:"No matching archived sessions",archivedSessionsCount:"{count} sessions",archivedAt:"Archived {time}",archivedLoadMore:"Load more",archivedLoading:"Loading…",archivedLoadingAll:"Loading all archived sessions…",plugins:{retry:"Retry",builtIn:"Built-in",official:"Official",thirdParty:"Third-party",installed:"Installed",install:"Install",update:"Update",remove:"Remove",enabled:"Enabled",homepage:"Homepage",empty:"No plugins found",hasErrors:"Error",customInstall:"Install custom plugin",customInstallPlaceholder:"https://… or /path/to/plugin",customInstallHint:"Accepts an https zip URL, a GitHub repo URL, or a local directory path.",extensionHintTitle:"One step left: install the browser extension",extensionGuide:"Manual install",dismissHint:"Dismiss",catalogUnavailable:"The marketplace catalog is currently unreachable; installed plugins remain manageable below.",source:{"local-path":"Local","zip-url":"ZIP",github:"GitHub"},counts:{skill:"1 skill | {n} skills",mcp:"1 MCP server | {n} MCP servers",mcpEnabled:"{n} on",hook:"1 hook | {n} hooks",command:"1 command | {n} commands"},sections:{installed:"Installed plugins",marketplace:"Marketplace",capabilities:"Capabilities"},confirmRemove:"Remove this plugin and all of its skills and hooks?",loadFailed:"Failed to load plugins",loading:"Loading plugins…",capabilitiesUnavailable:"Capabilities are unavailable right now",installing:"Installing…",capabilityStates:{not_installed:"Not installed",partial:"Partial",ready:"Ready",unsupported:"Unsupported"},steps:{ok:"Done",missing:"Missing",failed:"Failed"}}},u0={title:"设置",close:"关闭 (Esc)",tabs:{general:"通用",agent:"Agent",account:"账户",advanced:"高级",archived:"已归档",plugins:"插件"},appearance:"外观",notifications:"通知",notifyOnComplete:"会话完成时通知",notifyOnQuestion:"待回答时通知",notifyOnApproval:"待审批时通知",soundOnComplete:"会话完成、待回答或待审批时播放提示音",notifyDenied:"已在浏览器设置中被阻止",notifyTitle:"Kimi Code · 回合完成",notifyQuestionTitle:"Kimi Code · 待回答",notifyApprovalTitle:"Kimi Code · 等待审批",notifyFallback:"点击查看结果",notifyQuestionFallback:"有提问等待你回答",notifyApprovalFallback:"有工具等待你审批",account:"账户",uiFontSize:"字体大小",agentDefaults:"Agent 默认值",providers:"提供商",providersHint:"添加、删除或刷新提供商",manageProviders:"管理",saving:"保存中",defaultModel:"默认模型",defaultModelHint:"新会话会优先使用这个模型",noDefaultModel:"未设置默认模型",defaultPermission:"默认权限",defaultPermissionHint:"只影响之后新建的会话",defaultThinking:"默认开启思考",defaultThinkingHint:"新会话默认是否开启 thinking",defaultPlanMode:"默认计划模式",defaultPlanModeHint:"新会话默认进入 plan mode",mergeSkills:"合并所有可用 Skills",mergeSkillsHint:"让项目、插件和用户 Skills 一起出现在可用列表中",telemetry:"使用数据改进产品",telemetryHint:"开启后,我们会收集您的匿名交互数据(如点击、打断、功能使用等),用于改进产品体验。您可以随时关闭。",telemetryRestartHint:"更改后需重启服务生效。",credentialReady:"凭据已配置",credentialMissing:"缺少凭据",configUnavailable:"当前服务端没有返回 config,设置项暂不可用。",advanced:"高级",build:"构建",serverVersion:"服务端版本",backend:"后端",exportLog:"故障排查日志",logHint:"加 ?debug=1 开启采集",exportLogBtn:"导出日志",conversationToc:"显示对话目录",conversationTocHint:"在右侧显示可点击跳转的对话目录",archivedTitle:"已归档会话",archivedDesc:"查看已归档会话,确认其所属工作区路径、会话名称和归档时间,并可恢复到会话列表。",archivedSearch:"搜索已归档会话",archivedAllWorkspaces:"所有工作区",archivedSortLabel:"排序方式",archivedSortArchived:"归档时间",archivedSortCreated:"创建时间",archivedSortName:"按字母顺序",archivedRestore:"恢复",archivedEmpty:"还没有归档的会话",archivedNoMatch:"没有匹配的已归档会话",archivedSessionsCount:"{count} 个会话",archivedAt:"归档于 {time}",archivedLoadMore:"加载更多",archivedLoading:"加载中…",archivedLoadingAll:"正在加载全部归档会话…",plugins:{retry:"重试",builtIn:"内置",official:"官方",thirdParty:"第三方",installed:"已安装",install:"安装",update:"更新",remove:"移除",enabled:"启用",homepage:"主页",empty:"没有找到插件",hasErrors:"错误",customInstall:"安装自定义插件",customInstallPlaceholder:"https://… 或 /本地/目录",customInstallHint:"支持 https zip 链接、GitHub 仓库地址或本地目录路径。",extensionHintTitle:"还差一步:安装浏览器扩展",extensionGuide:"手动安装",dismissHint:"知道了",catalogUnavailable:"插件市场目录暂时不可达;已安装的插件仍可正常管理。",source:{"local-path":"本地","zip-url":"ZIP",github:"GitHub"},counts:{skill:"{n} 个技能",mcp:"{n} 个 MCP 服务",mcpEnabled:"启用 {n} 个",hook:"{n} 个钩子",command:"{n} 个命令"},sections:{installed:"已安装插件",marketplace:"插件市场",capabilities:"能力"},confirmRemove:"要移除该插件及其全部技能和钩子吗?",loadFailed:"插件加载失败",loading:"正在加载插件…",capabilitiesUnavailable:"能力列表暂时不可用",installing:"安装中…",capabilityStates:{not_installed:"未安装",partial:"部分安装",ready:"已就绪",unsupported:"不支持"},steps:{ok:"已完成",missing:"缺失",failed:"失败"}}},c0={openInEditor:"Open in editor",openInEditorShort:"Open",chooseOpenApp:"Choose application",copyAll:"Copy all as Markdown",copyFinalSummary:"Copy final summary",copied:"Copied",copyPath:"Copy path",changed:"{n} changed",gitTooltip:"Open Files > Changed",detached:"detached",openPr:"Open pull request",prStatusOpen:"open",prStatusClosed:"closed",prStatusMerged:"merged",prStatusDraft:"draft",prStatusUnknown:"unknown",options:"Options",search:"Search conversation",copySessionId:"Copy Session ID",renameSession:"Rename",forkSession:"Fork session",archiveSession:"Archive",exportSession:"Export session"},d0={openInEditor:"在编辑器中打开",openInEditorShort:"打开",chooseOpenApp:"选择应用",copyAll:"复制全部对话为 Markdown",copyFinalSummary:"仅复制最终总结",copied:"已复制",copyPath:"复制路径",changed:"{n} 处改动",gitTooltip:"打开「文件 > 改动」",detached:"游离",openPr:"打开 Pull Request",prStatusOpen:"已打开",prStatusClosed:"已关闭",prStatusMerged:"已合并",prStatusDraft:"草稿",prStatusUnknown:"未知",options:"选项",search:"搜索对话",copySessionId:"复制 Session ID",renameSession:"重命名",forkSession:"分叉会话",archiveSession:"归档",exportSession:"导出会话"},p0={title:"Side chat",subtitle:"forked from this session",empty:"Ask a quick question on the side — it shares this session’s context.",placeholder:"Ask the side chat…",send:"Send"},f0={title:"侧边聊天",subtitle:"从当前会话 fork",empty:"在侧边随手问一句 —— 它共享当前会话的上下文。",placeholder:"问问侧边聊天…",send:"发送"},m0={title:"Server token required",hint:"This server is protected. Enter the bearer token printed when the server started (or the password set via {password}).",placeholder:"Token",connect:"Connect",connecting:"Connecting…"},v0={dockTerminal:"Terminal",newTerminal:"New terminal",inputPlaceholder:"Type a command and press Enter",loading:"Loading terminals…",empty:"No terminals yet — create one to get a shell in this session",listFailed:"Failed to load terminals",createFailed:"Failed to create terminal",closeFailed:"Failed to close terminal",closeTerminal:"Close terminal",exited:"Process exited with code {code}"},h0={title:"需要服务器令牌",hint:"此服务器受保护。请输入服务器启动时打印的 bearer token(或通过 {password} 设置的密码)。",placeholder:"令牌",connect:"连接",connecting:"连接中…"},g0={dockTerminal:"终端",newTerminal:"新建终端",inputPlaceholder:"输入命令后按回车",loading:"正在加载终端…",empty:"暂无终端 — 创建一个即可在此会话中使用 shell",listFailed:"加载终端失败",createFailed:"创建终端失败",closeFailed:"关闭终端失败",closeTerminal:"关闭终端",exited:"进程已退出,退出码 {code}"},y0={en:{common:rg,app:ug,sidebar:cg,workspace:dg,conversation:pg,status:fg,composer:mg,login:vg,providers:hg,model:gg,sessions:yg,approval:kg,question:bg,tasks:wg,thinking:Sg,diff:Cg,fileTree:_g,filePreview:$g,mention:Mg,warnings:xg,commands:Ig,tools:Ag,layout:Tg,mobile:Eg,theme:Lg,onboarding:a0,settings:r0,header:c0,sideChat:p0,serverAuth:m0,terminal:v0,media:Pg},zh:{common:Bg,app:Rg,sidebar:Og,workspace:Dg,conversation:zg,status:Fg,composer:Ng,login:qg,providers:Wg,model:Hg,sessions:Ug,approval:Vg,question:jg,tasks:Kg,thinking:Gg,diff:Qg,fileTree:Yg,filePreview:Zg,mention:Xg,warnings:Jg,commands:e0,tools:t0,layout:n0,mobile:o0,theme:i0,onboarding:l0,settings:u0,header:d0,sideChat:f0,serverAuth:h0,terminal:g0,media:s0}},Tu=[{code:"en",label:"English"},{code:"zh",label:"中文"}];function k0(){const e=It(We.locale);return e==="en"||e==="zh"?e:globalThis.navigator?.language?.toLowerCase().startsWith("zh")?"zh":"en"}const pt=Ad({legacy:!1,locale:k0(),fallbackLocale:"en",messages:y0});function Pu(e){pt.global.locale.value=e,Bt(We.locale,e)}const b0=["app:load:start","app:load:complete","export:start","export:accepted","export:failed","prompt:start","prompt:accepted","prompt:failed","session:snapshot:start","session:snapshot:accepted","session:snapshot:failed","operation:failed","window:error","window:unhandled-rejection","ws:connection","ws:error","ws:resync","ws:stale-reconnect"],Eu=500,Pi=256*1024,Yl=200,sa=16384,oa=500,ia=50,aa=50,w0=6,S0=/api[_-]?key|authorization|token|secret|password|cookie|credential/i,C0=/^[A-Za-z0-9+/=_-]{200,}$/;let la=null;function ts(){if(la!==null)return la;let e=!1;try{if(typeof location<"u"){const t=new URLSearchParams(location.search).get("debug");(t==="1"||t==="true")&&(e=!0)}}catch{}return e||(e=It(We.debug)==="1"),la=e,e}const Us=[],xo=[];let Ho=0;const to=[];let Uo=0,_0=1;const Ei=new TextEncoder,$0=new Set(b0),al=I(0),Vo=Td(!1);function M0(){return Us}function x0(){Us.length=0,xo.length=0,Ho=0,to.length=0,Uo=0,al.value++}function Ps(e){if(!Vo.value){try{const t={id:_0++,ts:Date.now(),source:e.source,kind:String(Ao(e.kind)),label:String(Ao(e.label)),sessionId:e.sessionId===void 0?void 0:String(Ao(e.sessionId)),method:e.method,path:e.path,eventType:e.eventType,seq:e.seq,offset:e.offset,status:e.status,code:e.code,requestId:e.requestId,durationMs:e.durationMs,detail:js(e.detail)},n=JSON.stringify(t),s=Ei.encode(n).byteLength;if(s>Pi)return;for(Us.push(t),xo.push(n),Ho+=s+(xo.length>1?1:0);Us.length>Eu||Ho>Pi;){const o=xo.shift();Us.shift(),o!==void 0&&(Ho-=Ei.encode(o).byteLength,xo.length>0&&(Ho-=1))}}catch{return}al.value++}}function Ys(e){if(typeof e=="string")return e.length<=Yl?e:e.slice(0,Yl)}function Un(e){return typeof e=="number"&&Number.isFinite(e)?e:void 0}function I0(e,t){if($0.has(e))try{const n={ts:Date.now(),event:e,sessionId:Ys(t?.sessionId),status:Ys(t?.status),operation:Ys(t?.operation),seq:Un(t?.seq),durationMs:Un(t?.durationMs),messageCount:Un(t?.messageCount),contentCount:Un(t?.contentCount),mediaCount:Un(t?.mediaCount),sessionCount:Un(t?.sessionCount),workspaceCount:Un(t?.workspaceCount),promptId:Ys(t?.promptId),zipBytes:Un(t?.zipBytes),errorName:Ys(t?.errorName),errorCode:Un(t?.errorCode),requestId:Ys(t?.requestId),phase:Ys(t?.phase),httpStatus:Un(t?.httpStatus),fatal:typeof t?.fatal=="boolean"?t.fatal:void 0,line:Un(t?.line),col:Un(t?.col)},s=JSON.stringify(n),o=Ei.encode(s).byteLength;if(o>Pi)return;for(to.push(s),Uo+=o+(to.length>1?1:0);to.length>Eu||Uo>Pi;){const i=to.shift();i!==void 0&&(Uo-=Ei.encode(i).byteLength,to.length>0&&(Uo-=1))}}catch{return}}function Ao(e,t=0){if(e==null)return e;const n=typeof e;if(n==="number"||n==="boolean")return e;if(n==="string"){const i=e;return C0.test(i)?`[base64-like, ${i.length} chars omitted]`:i.length>oa?`${i.slice(0,oa)}… [+${i.length-oa} chars]`:i}if(n!=="object")return String(e);if(t>=w0)return"[max depth]";if(Array.isArray(e)){const i=e.slice(0,ia).map(u=>Ao(u,t+1));return e.length>ia&&i.push(`[+${e.length-ia} more items]`),i}const s={},o=Object.entries(e);for(const[i,u]of o.slice(0,aa))s[i]=S0.test(i)?"[redacted]":Ao(u,t+1);return o.length>aa&&(s._truncatedKeys=o.length-aa),s}function js(e){if(e===void 0)return;const t=Ao(e);try{const n=JSON.stringify(t);if(n!==void 0&&n.length>sa)return{_truncated:`detail JSON was ${n.length} chars; first ${sa} kept`,preview:n.slice(0,sa)}}catch{return"[unserializable detail]"}return t}const Lu=/^\/(oauth\/login|auth|providers|config|files)(\/|$)/i;function fi(e){ts()&&Ps({source:"rest",kind:"rest:request",label:`→ ${e.method} ${e.path}`,method:e.method,path:e.path,requestId:e.requestId,detail:{url:e.url,body:Lu.test(e.path)?void 0:js(e.body)}})}function ko(e){if(!ts())return;const t=e.code!==0;Ps({source:"rest",kind:t?"rest:error":"rest:response",label:`← ${e.method} ${e.path} ${e.status} code=${e.code}${t?` "${e.msg}"`:""} ${Math.round(e.durationMs)}ms`,method:e.method,path:e.path,requestId:e.requestId,status:e.status,code:e.code,durationMs:e.durationMs,detail:{envelope:{code:e.code,msg:e.msg,request_id:e.envelopeRequestId},data:Lu.test(e.path)?void 0:js(e.data)}})}function Os(e){ts()&&Ps({source:"rest",kind:"rest:error",label:`✕ ${e.method} ${e.path} ${e.phase} error${e.status!==void 0?` (HTTP ${e.status})`:""} ${Math.round(e.durationMs)}ms`,method:e.method,path:e.path,requestId:e.requestId,status:e.status,durationMs:e.durationMs,detail:{phase:e.phase,error:String(e.error)}})}function bo(e,t){ts()&&Ps({source:"ws",kind:"ws:lifecycle",eventType:e,label:`ws ${e}`,detail:js(t)})}function A0(e){if(!ts())return;const t=e??{},n=typeof t.type=="string"?t.type:"(unknown)",s=t.payload,o=typeof s?.session_id=="string"?s.session_id:void 0;Ps({source:"ws",kind:"ws:out",eventType:n,sessionId:o,label:`→ ${n}`,detail:js(e)})}function T0(e){if(!ts())return;const t=e??{},n=typeof t.type=="string"?t.type:"(unknown)",s=typeof t.session_id=="string"?t.session_id:typeof t.payload?.session_id=="string"?t.payload.session_id:void 0,o=typeof t.seq=="number"?t.seq:void 0,i=typeof t.offset=="number"?t.offset:void 0,u=[s,o!==void 0?`seq=${o}`:void 0,i!==void 0?`offset=${i}`:void 0,t.volatile===!0?"volatile":void 0].filter(Boolean);Ps({source:"ws",kind:"ws:in",eventType:n,sessionId:s,seq:o,offset:i,label:`← ${n}${u.length>0?` (${u.join(" ")})`:""}`,detail:js(t.payload)})}const P0={error:"✕",warn:"⚠",info:"ℹ",debug:"·",log:"·"};function E0(e,t,n){ts()&&Ps({source:"client",kind:`client:${e}`,label:`${P0[e]} ${t}`,detail:js(n)})}function As(e,t){ts()&&Ps({source:"client",kind:"client:event",label:`· ${e}`,detail:js(t)})}function Yt(e,t){I0(e,t),Ps({source:"client",kind:"client:key",label:e,sessionId:typeof t?.sessionId=="string"?t.sessionId:void 0,seq:typeof t?.seq=="number"?t.seq:void 0,durationMs:typeof t?.durationMs=="number"?t.durationMs:void 0,detail:t})}let ra=!1,mi=null;function L0(){if(ra)return()=>mi?.();ra=!0;const e=[];try{if(typeof window<"u"){const n=o=>{Yt("window:error",{status:"failed",errorName:o.error instanceof Error?o.error.name:"Error",line:o.lineno,col:o.colno})},s=o=>{const i=o.reason;Yt("window:unhandled-rejection",{status:"failed",errorName:i instanceof Error?i.name:typeof i})};window.addEventListener("error",n),window.addEventListener("unhandledrejection",s),e.push(()=>{window.removeEventListener("error",n)}),e.push(()=>{window.removeEventListener("unhandledrejection",s)})}}catch{}if(ts())for(const n of["error","warn","log","info","debug"]){const s=console[n];if(typeof s!="function")continue;const o=(...i)=>{try{E0(n,i.map(B0).join(" "),i.length>1?i:i[0])}catch{}s.apply(console,i)};console[n]=o,e.push(()=>{console[n]===o&&(console[n]=s)})}const t=()=>{if(mi===t){for(const n of e.toReversed())n();mi=null,ra=!1}};return mi=t,t}function B0(e){if(typeof e=="string")return e;if(e instanceof Error)return`${e.name}: ${e.message}`;try{return JSON.stringify(e)}catch{return String(e)}}function Bu(e=Us){if(typeof document>"u")return;const t=new Blob([R0(e)],{type:"application/x-ndjson"}),n=URL.createObjectURL(t);let s;try{s=document.createElement("a"),s.href=n,s.download=`kimi-web-log-${new Date().toISOString().replaceAll(/[:.]/g,"-")}.jsonl`,document.body.append(s),s.click()}finally{s?.remove(),setTimeout(()=>{try{URL.revokeObjectURL(n)}catch{}},0)}}function R0(e=Us){return e===Us?xo.join(`
+`):e.map(t=>JSON.stringify(t)).join(`
+`)}function O0(){return to.join(`
+`)}const Ru="kimiWeb.compaction",Ou="kimiWeb.turnError",hn=pt.global.t,D0={read:"tools.label.read",bash:"tools.label.bash",edit:"tools.label.edit",multi_edit:"tools.label.edit",write:"tools.label.write",grep:"tools.label.grep",glob:"tools.label.glob",ls:"tools.label.ls",web_fetch:"tools.label.web_fetch",search:"tools.label.search",todo:"tools.label.todo",task:"tools.label.task",agentswarm:"tools.label.swarm",askuserquestion:"tools.label.ask_user",creategoal:"tools.label.goal_create",getgoal:"tools.label.goal_get",setgoalbudget:"tools.label.goal_budget",updategoal:"tools.label.goal_update"},z0={multiedit:"multi_edit",multiedits:"multi_edit",shell:"bash",run:"bash",exec:"bash",ripgrep:"grep",rg:"grep",find:"glob",fetch:"web_fetch",webfetch:"web_fetch",url_fetch:"web_fetch",urlfetch:"web_fetch",list:"ls",listdir:"ls",list_dir:"ls",todowrite:"todo",todo_write:"todo",todoread:"todo",todolist:"todo",todo_list:"todo",agent:"task",subagent:"task",websearch:"search",web_search:"search",create_goal:"creategoal",get_goal:"getgoal",set_goal_budget:"setgoalbudget",update_goal:"updategoal"};function ho(e){const t=(e??"").trim().toLowerCase().replace(/[\s-]+/g,"_");return z0[t]??t}function Ks(e){const t=D0[ho(e)];return t?hn(t):e}const F0={read:"file-text",bash:"terminal",edit:"pencil",multi_edit:"pencil",write:"file-plus",grep:"search",search:"search",glob:"glob",ls:"folder",web_fetch:"globe",todo:"check-list",task:"sparkles",agentswarm:"git-pull-request",askuserquestion:"help-circle",creategoal:"target",getgoal:"target",setgoalbudget:"target",updategoal:"target",croncreate:"calendar-schedule",cronlist:"calendar-todo",crondelete:"calendar-close"};function ni(e){const t=ho(e);let n=F0[t];return!n&&(e??"").trim().toLowerCase().includes("skill")&&(n="bolt"),n||(n="tool"),_o(n,"sm")}const Du=80;function N0(e,t=Du){const n=e.trim();return n.length>t?n.slice(0,t-1)+"…":n}function q0(e,t){const n=e.trim();return!!(n===""||n==="{}"||n==="[]"||n==="null"||t&&Object.keys(t).length===0)}function W0(e){const t=e.trim();if(!t.startsWith("{"))return null;try{const n=JSON.parse(t);return n&&typeof n=="object"&&!Array.isArray(n)?n:null}catch{return null}}function st(e){return typeof e=="string"&&e.length>0?e:void 0}function Ns(e){return typeof e=="number"&&Number.isFinite(e)?e:void 0}function H0(e){try{const t=new URL(e),n=t.pathname.split("/").filter(Boolean)[0];return n?`${t.host}/${n}`:t.host}catch{return e.replace(/^https?:\/\//,"")}}function ua(e){return st(e.path)??st(e.file_path)??st(e.filePath)??st(e.filename)}const U0={active:"status.goalStatusActive",blocked:"status.goalStatusBlocked",complete:"status.goalStatusComplete"};function V0(e){const t=st(e);if(!t)return;const n=U0[t];return n?hn(n):t}function j0(e){const t=Ns(e.value),n=st(e.unit);if(!(t===void 0||!n))switch(n){case"turns":return hn("tools.goal.turns",{value:t});case"tokens":return hn("tools.goal.tokens",{value:t});case"milliseconds":return hn("tools.goal.milliseconds",{value:t});case"seconds":return hn("tools.goal.seconds",{value:t});case"minutes":return hn("tools.goal.minutes",{value:t});case"hours":return hn("tools.goal.hours",{value:t});default:return hn("tools.goal.budget",{value:t,unit:n})}}const K0=64;function uo(e,t,n=!1){const s=(o,i=Du)=>n?o.trim():N0(o,i);try{const o=W0(t);if(!n&&q0(t,o))return"";const i=()=>s(t.replace(/^·\s*/,""));if(!o)return i();switch(ho(e)){case"read":{const u=ua(o);if(!u)return i();const p=Ns(o.offset)??Ns(o.line_start)??Ns(o.start_line),f=Ns(o.limit)??Ns(o.length),v=Ns(o.line_end)??Ns(o.end_line)??(p!==void 0&&f!==void 0?p+f:void 0);return s(p!==void 0&&v!==void 0?`${u}:${p}-${v}`:p!==void 0?`${u}:${p}`:u)}case"write":{const u=ua(o);return u?s(`${u} ${hn("tools.chip.created")}`):i()}case"edit":case"multi_edit":{const u=ua(o);return u?s(u):i()}case"bash":{const u=st(o.command)??st(o.cmd)??st(o.script);return u?s(u,K0):i()}case"grep":case"search":{const u=st(o.pattern)??st(o.query)??st(o.regex),p=st(o.path)??st(o.glob)??st(o.include);return u&&p?s(`${u} in ${p}`):u?s(u):i()}case"glob":{const u=st(o.pattern)??st(o.glob)??st(o.query),p=st(o.path)??st(o.cwd);return u&&p?s(`${u} in ${p}`):u?s(u):st(o.path)?s(st(o.path)):i()}case"ls":{const u=st(o.path)??st(o.dir)??st(o.directory)??st(o.cwd);return u?s(u):i()}case"web_fetch":{const u=st(o.url)??st(o.uri);return u?s(H0(u)):i()}case"todo":case"task":{const u=st(o.description)??st(o.title)??st(o.prompt)??st(o.name)??st(o.subagent_type);if(u)return s(u);const p=Array.isArray(o.todos)?o.todos:Array.isArray(o.items)?o.items:void 0;return p?s(hn("tools.chip.todos",{count:p.length})):i()}case"creategoal":{if(n)return i();const u=st(o.objective),p=st(o.completionCriterion);return u&&p?s(hn("tools.goal.objectiveWithCriterion",{objective:u,criterion:p})):u?s(u):i()}case"getgoal":return n?i():"";case"setgoalbudget":{if(n)return i();const u=j0(o);return u?s(u):i()}case"updategoal":{if(n)return i();const u=V0(o.status);return u?s(hn("tools.goal.status",{status:u})):i()}default:return i()}}catch{return t}}function zu(e){try{switch(ho(e.name)){case"bash":return e.timing?e.timing:"";case"read":{if(e.output&&e.output.length>0){const t=e.output.length;return hn("tools.chip.lines",{count:t})}return""}case"edit":case"multi_edit":case"write":{if(e.output){for(const n of e.output){const s=n.match(/\+(\d+).*[-−](\d+)/);if(s)return`+${s[1]} −${s[2]}`}const t=e.output.find(n=>/\d+/.test(n));if(t){const n=t.match(/\+(\d+)/),s=t.match(/[-−](\d+)/);if(n||s)return`${n?`+${n[1]}`:""} ${s?`−${s[1]}`:""}`.trim()}if(e.status!=="error")return hn("tools.chip.edited")}return""}case"grep":case"search":return e.output&&e.output.length>0?hn("tools.chip.results",{count:e.output.length}):"";default:return""}}catch{return""}}const G0=["local-path","zip-url","github"];function Lt(e,t){const n=e[t];return typeof n=="string"&&n.length>0?n:void 0}function qs(e,t,n){return Lt(e,t)??Lt(e,n)}function zo(e,t,n){const s=e[t];if(typeof s=="number"&&Number.isFinite(s))return s;const o=e[n];return typeof o=="number"&&Number.isFinite(o)?o:0}function Fu(e,t,n){return e[t]===!0||e[n]===!0}function Q0(e){const t=e!==null&&typeof e=="object"?e:{},n=Lt(t,"source"),s=t.github,o=s!==null&&typeof s=="object"?s:void 0,i=o!==void 0&&o.ref!==null&&typeof o.ref=="object"?o.ref:void 0,u=i!==void 0?Lt(i,"kind"):void 0;return{id:Lt(t,"id")??"",displayName:qs(t,"display_name","displayName")??"",version:qs(t,"version","version"),enabled:t.enabled===!0,state:t.state==="error"?"error":"ok",skillCount:zo(t,"skill_count","skillCount"),mcpServerCount:zo(t,"mcp_server_count","mcpServerCount"),enabledMcpServerCount:zo(t,"enabled_mcp_server_count","enabledMcpServerCount"),hookCount:zo(t,"hook_count","hookCount"),commandCount:zo(t,"command_count","commandCount"),hasErrors:Fu(t,"has_errors","hasErrors"),source:G0.includes(n??"")?n:"local-path",originalSource:qs(t,"original_source","originalSource"),github:o!==void 0&&i!==void 0&&(u==="branch"||u==="tag"||u==="sha")?{owner:Lt(o,"owner")??"",repo:Lt(o,"repo")??"",ref:{kind:u,value:Lt(i,"value")??""},installedSha:qs(o,"installed_sha","installedSha")}:void 0}}const Y0=["official","curated","third-party"],Z0=["not_installed","partial","ready","unsupported"],X0=["ok","missing","failed"];function J0(e){const t=e!==null&&typeof e=="object"?e:{},n=Lt(t,"tier"),s=t.installed,o=s!==null&&typeof s=="object"?s:void 0;return{id:Lt(t,"id")??"",tier:Y0.includes(n??"")?n:"third-party",displayName:qs(t,"display_name","displayName")??"",description:Lt(t,"description"),homepage:Lt(t,"homepage"),keywords:Array.isArray(t.keywords)?t.keywords.filter(i=>typeof i=="string"):void 0,version:Lt(t,"version"),source:Lt(t,"source")??"",installed:o===void 0?void 0:{version:Lt(o,"version"),enabled:o.enabled===!0},updateAvailable:Fu(t,"update_available","updateAvailable"),capabilityId:qs(t,"capability_id","capabilityId")}}function ey(e){const t=e!==null&&typeof e=="object"?e:{},n=Lt(t,"state"),o=(Array.isArray(t.steps)?t.steps:[]).filter(u=>u!==null&&typeof u=="object").map(u=>({id:Lt(u,"id")??"",state:X0.includes(Lt(u,"state")??"")?Lt(u,"state"):"missing",detail:Lt(u,"detail"),optional:u.optional===!0})),i=t.install;return{id:Lt(t,"id")??"",pluginId:qs(t,"plugin_id","pluginId"),displayName:qs(t,"display_name","displayName")??"",description:Lt(t,"description")??"",supported:t.supported===!0,state:Z0.includes(n??"")?n:"unsupported",version:Lt(t,"version"),steps:o,install:Nu(void 0,i!==null&&typeof i=="object"?i:{running:!1})}}function ty(e){const t=e.trim();return t.length===0?!1:/^https:\/\/\S+$/i.test(t)?!0:/^(\/|~\/|\.{1,2}\/|[A-Za-z]:[\\/])/.test(t)}function ny(e,t){return e===void 0?{phase:t==="ready"?"done":"idle"}:e.running?{phase:"installing",step:e.step,percent:e.percent,note:e.note}:e.error!==void 0&&e.error.length>0?{phase:"error",error:e.error,step:e.step,percent:e.percent}:{phase:t==="ready"?"done":"idle",step:e.step}}function Nu(e,t){return{running:t.running,step:t.step??e?.step,percent:t.percent??e?.percent,error:t.error??e?.error,note:t.note??e?.note}}function qu(e){return{inputTokens:e.input_tokens,outputTokens:e.output_tokens,cacheReadTokens:e.cache_read_tokens,cacheCreationTokens:e.cache_creation_tokens,totalCostUsd:e.total_cost_usd,contextTokens:e.context_tokens,contextLimit:e.context_limit,turnCount:e.turn_count}}function Pa(e){return e.contextTokens===0&&e.contextLimit===0&&e.inputTokens===0&&e.outputTokens===0&&e.turnCount===0}function Zn(e){return{id:e.id,title:e.title,createdAt:e.created_at,updatedAt:e.updated_at,busy:e.busy,mainTurnActive:e.main_turn_active,pendingInteraction:e.pending_interaction,lastTurnReason:e.last_turn_reason,archived:e.archived??!1,currentPromptId:e.current_prompt_id,lastPrompt:e.last_prompt,cwd:e.metadata.cwd,model:e.agent_config.model,usage:qu(e.usage),messageCount:e.message_count,lastSeq:e.last_seq,workspaceId:e.workspace_id,parentSessionId:typeof e.metadata.parent_session_id=="string"?e.metadata.parent_session_id:void 0}}function Go(e){return{id:e.id,root:e.root,name:e.name,lastOpenedAt:e.last_opened_at,sessionCount:e.session_count}}function Zl(e){return e.kind==="base64"?{kind:"base64",mediaType:e.media_type,data:e.data}:e.kind==="file"?{kind:"file",fileId:e.file_id}:{kind:"url",url:e.url,id:e.id}}function ll(e){switch(e.type){case"text":return{type:"text",text:e.text};case"tool_use":return{type:"toolUse",toolCallId:e.tool_call_id,toolName:e.tool_name,input:e.input};case"tool_result":return{type:"toolResult",toolCallId:e.tool_call_id,output:e.output,isError:e.is_error};case"image":return{type:"image",source:Zl(e.source)};case"video":return{type:"video",source:Zl(e.source)};case"file":return{type:"file",fileId:e.file_id,name:e.name,mediaType:e.media_type,size:e.size};case"thinking":return{type:"thinking",thinking:e.thinking,signature:e.signature};default:return{type:"unknown",raw:e}}}function Ea(e){return{id:e.id,sessionId:e.session_id,role:e.role,content:e.content.map(ll),createdAt:e.created_at,promptId:e.prompt_id,parentMessageId:e.parent_message_id,metadata:e.metadata}}function sy(e){switch(e.type){case"text":return{type:"text",text:e.text};case"toolUse":return{type:"tool_use",tool_call_id:e.toolCallId,tool_name:e.toolName,input:e.input};case"toolResult":return{type:"tool_result",tool_call_id:e.toolCallId,output:e.output,is_error:e.isError};case"image":case"video":{const t=e.source;let n;return t.kind==="base64"?n={kind:"base64",media_type:t.mediaType,data:t.data}:t.kind==="file"?n={kind:"file",file_id:t.fileId}:n={kind:"url",url:t.url,id:t.id},{type:e.type,source:n}}case"file":return{type:"file",file_id:e.fileId,name:e.name,media_type:e.mediaType,size:e.size};case"thinking":return{type:"thinking",thinking:e.thinking,signature:e.signature};case"unknown":return e.raw}}function oy(e){return{content:e.content.map(sy),metadata:e.metadata,agent_id:e.agentId,model:e.model,thinking:e.thinking,permission_mode:e.permissionMode,plan_mode:e.planMode,swarm_mode:e.swarmMode,supermoon_mode:e.supermoonMode,goal_objective:e.goalObjective,goal_control:e.goalControl}}function iy(e){return{decision:e.decision,scope:e.scope,feedback:e.feedback,selected_label:e.selectedLabel}}function Wu(e){return{approvalId:e.approval_id,sessionId:e.session_id,turnId:e.turn_id,toolCallId:e.tool_call_id,toolName:e.tool_name,action:e.action,display:e.tool_input_display??e.display,expiresAt:e.expires_at,createdAt:e.created_at}}function ay(e){return{id:e.id,label:e.label,description:e.description,recommended:e.recommended===!0||e.is_recommended===!0}}function ly(e){return{id:e.id,question:e.question,header:e.header,body:e.body,options:e.options.map(ay),multiSelect:e.multi_select,allowOther:e.allow_other,otherLabel:e.other_label,otherDescription:e.other_description}}function Hu(e){return{questionId:e.question_id,sessionId:e.session_id,turnId:e.turn_id,toolCallId:e.tool_call_id,questions:e.questions.map(ly),createdAt:e.created_at}}function ry(e){switch(e.kind){case"single":return{kind:"single",option_id:e.optionId};case"multi":return{kind:"multi",option_ids:e.optionIds};case"other":return{kind:"other",text:e.text};case"multiWithOther":return{kind:"multi_with_other",option_ids:e.optionIds,other_text:e.otherText};case"skipped":return{kind:"skipped"}}}function uy(e){const t={};for(const[n,s]of Object.entries(e.answers))t[n]=ry(s);return{answers:t,method:e.method,note:e.note}}function _i(e){return{id:e.id,sessionId:e.session_id,kind:e.kind,description:e.description,status:e.status,command:e.command,createdAt:e.created_at,startedAt:e.started_at,completedAt:e.completed_at,outputPreview:e.output_preview,outputBytes:e.output_bytes,subagentPhase:e.subagent_phase,subagentType:e.subagent_type,model:e.model,thinkingEffort:e.thinking_effort,parentToolCallId:e.parent_tool_call_id,suspendedReason:e.suspended_reason,swarmIndex:e.swarm_index,runInBackground:e.run_in_background??(e.kind==="subagent"?!0:void 0)}}function Xl(e){return{path:e.path,name:e.name,kind:e.kind,size:e.size,modifiedAt:e.modified_at,etag:e.etag,mime:e.mime,languageId:e.language_id,isBinary:e.is_binary,isSymlinkTo:e.is_symlink_to,gitStatus:e.git_status,childCount:e.child_count}}function Ds(e,t){const n=e[t];return typeof n=="string"?n:void 0}function wo(e,t){const n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:void 0}function Vn(e,t){const n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:null}function Uu(e){if(!e||typeof e!="object")return null;const t=e,n=Ds(t,"status");if(n!=="active"&&n!=="paused"&&n!=="blocked"&&n!=="complete")return null;const s=t.budget,o=s&&typeof s=="object"?s:{};return{goalId:Ds(t,"goalId")??Ds(t,"goal_id")??"goal",objective:Ds(t,"objective")??"",completionCriterion:Ds(t,"completionCriterion")??Ds(t,"completion_criterion"),status:n,turnsUsed:wo(t,"turnsUsed")??wo(t,"turns_used")??0,tokensUsed:wo(t,"tokensUsed")??wo(t,"tokens_used")??0,wallClockMs:wo(t,"wallClockMs")??wo(t,"wall_clock_ms")??0,terminalReason:Ds(t,"terminalReason")??Ds(t,"terminal_reason"),budget:{tokenBudget:Vn(o,"tokenBudget")??Vn(o,"token_budget"),remainingTokens:Vn(o,"remainingTokens")??Vn(o,"remaining_tokens"),turnBudget:Vn(o,"turnBudget")??Vn(o,"turn_budget"),remainingTurns:Vn(o,"remainingTurns")??Vn(o,"remaining_turns"),wallClockBudgetMs:Vn(o,"wallClockBudgetMs")??Vn(o,"wall_clock_budget_ms"),remainingWallClockMs:Vn(o,"remainingWallClockMs")??Vn(o,"remaining_wall_clock_ms"),overBudget:o.overBudget===!0||o.over_budget===!0}}}function cy(e){const t=e;switch(e.type){case"event.session.created":return{type:"sessionCreated",session:Zn(t.payload.session)};case"event.session.updated":return{type:"sessionUpdated",session:Zn(t.payload.session),changedFields:t.payload.changed_fields};case"event.session.deleted":return{type:"sessionDeleted",sessionId:t.session_id};case"event.workspace.created":return{type:"workspaceCreated",workspace:Go(t.payload.workspace)};case"event.workspace.updated":return{type:"workspaceUpdated",workspace:Go(t.payload.workspace)};case"event.workspace.deleted":return{type:"workspaceDeleted",workspaceId:t.payload.workspace_id,root:t.payload.root};case"event.session.work_changed":return{type:"sessionWorkChanged",sessionId:t.session_id,busy:t.payload.busy,mainTurnActive:t.payload.main_turn_active,pendingInteraction:t.payload.pending_interaction,lastTurnReason:t.payload.last_turn_reason};case"event.session.status_changed":return{type:"sessionWorkChanged",sessionId:t.session_id,busy:t.payload.status!=="idle"&&t.payload.status!=="aborted",mainTurnActive:t.payload.status!=="idle"&&t.payload.status!=="aborted",pendingInteraction:t.payload.status==="awaiting_approval"?"approval":t.payload.status==="awaiting_question"?"question":"none",lastTurnReason:t.payload.status==="aborted"?"cancelled":void 0};case"event.session.usage_updated":return{type:"sessionUsageUpdated",sessionId:t.session_id,usage:qu(t.payload.usage)};case"event.session.history_compacted":return{type:"historyCompacted",sessionId:t.session_id,beforeSeq:t.payload.before_seq,reason:t.payload.reason,summaryMessageId:t.payload.summary_message_id};case"event.goal.updated":{const n=Uu(t.payload.snapshot??null);return{type:"goalUpdated",sessionId:t.session_id,goal:n?.status==="complete"?null:n}}case"event.message.created":return{type:"messageCreated",message:Ea(t.payload.message)};case"event.message.updated":return{type:"messageUpdated",sessionId:t.session_id,messageId:t.payload.message_id,content:t.payload.content.map(ll),status:t.payload.status};case"event.assistant.delta":return{type:"assistantDelta",sessionId:t.session_id,messageId:t.payload.message_id,contentIndex:t.payload.content_index,delta:t.payload.delta};case"event.assistant.tool_use_started":case"event.assistant.tool_use_delta":case"event.assistant.tool_use_completed":case"event.assistant.completed":case"event.tool.started":return{type:"unknown",raw:{_noop:!0,_wireType:t.type}};case"event.tool.output":return{type:"toolOutput",sessionId:t.session_id,toolCallId:t.payload.tool_call_id,outputChunk:t.payload.chunk,stream:t.payload.stream};case"event.tool.progress":return typeof t.payload.message=="string"&&t.payload.message.length>0?{type:"toolOutput",sessionId:t.session_id,toolCallId:t.payload.tool_call_id,outputChunk:t.payload.message,stream:"stdout"}:{type:"unknown",raw:{_noop:!0,_wireType:t.type}};case"event.tool.completed":return{type:"unknown",raw:{_noop:!0,_wireType:t.type}};case"event.approval.requested":return{type:"approvalRequested",sessionId:t.session_id,approval:Wu(t.payload)};case"event.approval.resolved":return{type:"approvalResolved",sessionId:t.session_id,approvalId:t.payload.approval_id,decision:t.payload.decision,resolvedAt:t.payload.resolved_at};case"event.approval.expired":return{type:"approvalExpired",sessionId:t.session_id,approvalId:t.payload.approval_id};case"event.question.requested":return{type:"questionRequested",sessionId:t.session_id,question:Hu(t.payload)};case"event.question.answered":return{type:"questionAnswered",sessionId:t.session_id,questionId:t.payload.question_id,resolvedAt:t.payload.resolved_at};case"event.question.dismissed":return{type:"questionDismissed",sessionId:t.session_id,questionId:t.payload.question_id,dismissedAt:t.payload.dismissed_at};case"event.task.created":return{type:"taskCreated",sessionId:t.session_id,task:_i(t.payload.task)};case"event.task.progress":return{type:"taskProgress",sessionId:t.session_id,taskId:t.payload.task_id,outputChunk:t.payload.output_chunk,stream:t.payload.stream};case"event.task.completed":return{type:"taskCompleted",sessionId:t.session_id,taskId:t.payload.task_id,status:t.payload.status,outputPreview:t.payload.output_preview,outputBytes:t.payload.output_bytes};case"event.config.changed":return{type:"configChanged",changedFields:t.payload.changed_fields,config:La(t.payload.config)};case"event.model_catalog.changed":return{type:"modelCatalogChanged",changed:t.payload.changed.map(n=>({providerId:n.provider_id,providerName:n.provider_name,added:n.added,removed:n.removed})),unchanged:t.payload.unchanged,failed:t.payload.failed};case"event.plugin.changed":return{type:"pluginsChanged"};case"event.capability.changed":return{type:"capabilityChanged",capabilityId:t.payload.capability_id,install:vy(t.payload.install)};default:return{type:"unknown",raw:e}}}function dy(e){return{id:e.model,provider:e.provider,model:e.model,displayName:e.display_name,maxContextSize:e.max_context_size,capabilities:e.capabilities,supportEfforts:e.support_efforts,defaultEffort:e.default_effort}}function vi(e){return{id:e.id,type:e.type,baseUrl:e.base_url,defaultModel:e.default_model,hasApiKey:e.has_api_key,status:e.status,models:e.models}}function py(e){return{id:e.id,name:e.name,maxContextSize:e.max_context_size,capabilities:e.capabilities,reasoning:e.reasoning}}function fy(e){return{id:e.id,name:e.name,wireType:e.wire_type,guessed:e.guessed,needsBaseUrl:e.needs_base_url,rejected:e.rejected,rejectReason:e.reject_reason,envKey:e.env_key,models:e.models.map(py)}}function La(e){const t={};for(const[n,s]of Object.entries(e.providers))t[n]={type:s.type,baseUrl:s.base_url,defaultModel:s.default_model,hasApiKey:s.has_api_key};return{providers:t,defaultProvider:e.default_provider,defaultModel:e.default_model,models:e.models,thinking:e.thinking,planMode:e.plan_mode,yolo:e.yolo,defaultPermissionMode:e.default_permission_mode,defaultPlanMode:e.default_plan_mode,permission:e.permission,hooks:e.hooks,services:e.services,mergeAllAvailableSkills:e.merge_all_available_skills,extraSkillDirs:e.extra_skill_dirs,loopControl:e.loop_control,background:e.background,experimental:e.experimental,telemetry:e.telemetry,raw:e.raw}}function Jl(e){return Q0(e)}function my(e){return J0(e)}function vy(e){return{running:e.running===!0,step:e.step,percent:typeof e.percent=="number"&&Number.isFinite(e.percent)?e.percent:void 0,error:e.error,note:e.note}}function er(e){return ey(e)}function hy(e){return e.session_id}function gy(e){return e.seq}const yy="main",ky=new Set(["turn.started","turn.step.started","turn.step.completed","turn.step.retrying","turn.step.interrupted","turn.ended","thinking.delta","assistant.delta","tool.use","tool.call.started","tool.call.delta","tool.progress","tool.result","agent.status.updated","prompt.completed","prompt.aborted","error"]);function Ms(e="msg_"){const t=Date.now().toString(36).padStart(10,"0"),n=Math.random().toString(36).slice(2,12).padEnd(10,"0");return`${e}${t}${n}`}function by(e){if(!e||typeof e!="object")return{input:0,output:0,cacheRead:0,cacheCreate:0};const t=e;return{input:t.inputOther??t.input_tokens??0,output:t.output??t.output_tokens??0,cacheRead:t.inputCacheRead??t.cache_read_input_tokens??0,cacheCreate:t.inputCacheCreation??t.cache_creation_input_tokens??0}}function tr(){return{turnPromptId:new Map,currentPromptId:void 0,currentAssistantMsgId:void 0,turnTextLen:0,turnThinkLen:0,toolStartTimes:new Map,totalInput:0,totalOutput:0,totalCacheRead:0,totalCacheCreate:0,contextTokens:0,contextLimit:0,turnCount:0,model:"",messages:[],subagentMeta:new Map,retryReuseMsgId:void 0}}function _n(e,t){const n=e[t];return typeof n=="string"?n:void 0}function Xs(e,t){const n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:void 0}function jn(e,t){const n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:null}function wy(e){if(!e||typeof e!="object")return null;const t=e,n=t.budget,s=n&&typeof n=="object"?n:{},o=_n(t,"status");if(o!=="active"&&o!=="paused"&&o!=="blocked"&&o!=="complete")return null;const i=_n(t,"goalId")??_n(t,"goal_id")??"goal",u=_n(t,"objective")??"";return{goalId:i,objective:u,completionCriterion:_n(t,"completionCriterion")??_n(t,"completion_criterion"),status:o,turnsUsed:Xs(t,"turnsUsed")??Xs(t,"turns_used")??0,tokensUsed:Xs(t,"tokensUsed")??Xs(t,"tokens_used")??0,wallClockMs:Xs(t,"wallClockMs")??Xs(t,"wall_clock_ms")??0,terminalReason:_n(t,"terminalReason")??_n(t,"terminal_reason"),budget:{tokenBudget:jn(s,"tokenBudget")??jn(s,"token_budget"),remainingTokens:jn(s,"remainingTokens")??jn(s,"remaining_tokens"),turnBudget:jn(s,"turnBudget")??jn(s,"turn_budget"),remainingTurns:jn(s,"remainingTurns")??jn(s,"remaining_turns"),wallClockBudgetMs:jn(s,"wallClockBudgetMs")??jn(s,"wall_clock_budget_ms"),remainingWallClockMs:jn(s,"remainingWallClockMs")??jn(s,"remaining_wall_clock_ms"),overBudget:s.overBudget===!0||s.over_budget===!0}}}function no(e,t,n,s){if(typeof n!="string"||n.length===0)return null;const i={...e.subagentMeta.get(n)??{id:n,sessionId:t,kind:"subagent",description:"Sub Agent",status:"running",createdAt:new Date().toISOString(),subagentPhase:"queued"},...s,id:n,sessionId:t,kind:"subagent"};return e.subagentMeta.set(n,i),i}function Sy(e,t){if(e==="turn.step.started")return null;if(e==="tool.use"||e==="tool.call.started"){const n=_n(t,"name")??_n(t,"toolName")??"tool",s=Ks(Cy(n)),o=_y(n,t.args??t.input);return o?`Calling ${s}: ${o}`:`Calling ${s}`}if(e==="tool.progress"){const n=t.update;if(n&&typeof n=="object"){const o=_n(n,"text");if(o)return ca(o);const i=_n(n,"message");if(i)return ca(i)}const s=_n(t,"message");if(s)return ca(s)}return null}function Cy(e){return e.replace(/_\d+$/,"")}const nr=2e3;function ca(e){return e.length>nr?`${e.slice(0,nr)}…`:e}function _y(e,t){if(t==null)return"";const n=typeof t=="string"?t:JSON.stringify(t);return uo(e,n)}function $y(e,t,n,s,o,i){if(i.has(n)&&s==="turn.step.started")return[];if(s==="assistant.delta"){const w=_n(o,"delta");if(!w)return[];const x=e.subagentMeta.get(n),h=no(e,t,n,{status:"running",subagentPhase:"working",startedAt:x?.startedAt??new Date().toISOString()}),m=[];return h&&m.push({type:"taskCreated",sessionId:t,task:h}),m.push({type:"taskProgress",sessionId:t,taskId:n,outputChunk:w,stream:"stdout",kind:"text"}),m}const u=Sy(s,o);if(u===null||u.length===0)return[];const p=e.subagentMeta.get(n),f=no(e,t,n,{status:"running",subagentPhase:"working",startedAt:p?.startedAt??new Date().toISOString()}),v=[];return f&&v.push({type:"taskCreated",sessionId:t,task:f}),v.push({type:"taskProgress",sessionId:t,taskId:n,outputChunk:u,stream:"stdout"}),v}function Fo(e){return{...e,content:e.content.map(t=>({...t}))}}function sr(e,t,n){const s={id:Ms("msg_"),sessionId:t,role:"assistant",content:[],createdAt:new Date().toISOString(),promptId:n};return e.messages.push(s),s}function My(e,t,n,s,o,i){const u={id:s,sessionId:t,role:"user",content:o,createdAt:i,promptId:n};return e.messages.push(u),u}function xy(e){return Array.isArray(e)?e.map(t=>ll(t)):[]}function or(e,t,n,s){const o=e.messages.find(u=>u.id===t);if(!o)return-1;const i=o.content.at(-1);return i&&i.type===n?(n==="text"?i.text+=s:i.thinking+=s,o.content.length-1):(o.content.push(n==="text"?{type:"text",text:s}:{type:"thinking",thinking:s}),o.content.length-1)}function Iy(e,t,n,s,o,i){const u=e.messages.find(p=>p.id===t);u&&u.content.push({type:"toolUse",toolCallId:n,toolName:s,input:o,outputLines:i})}function Ay(e){const t=e.update,n=t&&typeof t=="object"?t:null,o=(n?.stream??n?.kind??e.stream)==="stderr"?"stderr":"stdout",i=typeof n?.text=="string"&&n.text||typeof n?.message=="string"&&n.message||typeof e.chunk=="string"&&e.chunk||typeof e.output=="string"&&e.output||typeof e.message=="string"&&e.message||"";return i.length>0?{outputChunk:i,stream:o}:null}function ir(e,t){e.messages.find(n=>n.id===t)}function Ty(e,t,n,s,o,i){const u={id:Ms("msg_"),sessionId:t,role:"tool",content:[{type:"toolResult",toolCallId:n,output:s,isError:o}],createdAt:new Date().toISOString(),promptId:i};return e.messages.push(u),u}function No(e,t){return e.messages.find(n=>n.id===t)}function ar(e){return{inputTokens:e.totalInput,outputTokens:e.totalOutput,cacheReadTokens:e.totalCacheRead,cacheCreationTokens:e.totalCacheCreate,totalCostUsd:0,contextTokens:e.contextTokens,contextLimit:e.contextLimit,turnCount:e.turnCount}}function Py(){const e=new Map,t=new Set;function n(x){let h=e.get(x);return h||(h=tr(),e.set(x,h)),h}function s(x){e.set(x,tr())}function o(x){e.delete(x)}function i(x){t.add(x)}function u(x,h){const m=n(x);m.currentPromptId=h}function p(x,h){s(x);const m=n(x),_=h.promptId??Ms("pr_");m.currentPromptId=_,m.turnPromptId.set(h.turnId,_);const y=sr(m,x,_);h.thinkingText.length>0&&y.content.push({type:"thinking",thinking:h.thinkingText}),h.assistantText.length>0&&y.content.push({type:"text",text:h.assistantText});for(const g of h.runningTools){const k=typeof g.lastProgress?.text=="string"&&g.lastProgress.text.length>0?[g.lastProgress.text]:void 0;y.content.push({type:"toolUse",toolCallId:g.toolCallId,toolName:g.name,input:g.args??{},outputLines:k}),m.toolStartTimes.set(g.toolCallId,Date.now())}return m.currentAssistantMsgId=y.id,m.turnTextLen=h.assistantText.length,m.turnThinkLen=h.thinkingText.length,[{type:"messageCreated",message:Fo(y)}]}function f(x,h,m,_){try{return w(x,h,m,_)}catch(y){return console.error("[agentProjector] Error projecting event:",x,y instanceof Error?y.message:y),[]}}function v(x,h){return h===void 0?"append":hx?"gap":"append"}function w(x,h,m,_){const y=n(m),g=h,k=[],T=g?.agentId;if(typeof T=="string"&&T!==yy){const S=t.has(T);if(S&&(x==="thinking.delta"||x==="assistant.delta")){const O=g?.delta??"";return O?[{type:"agentDelta",sessionId:m,agentId:T,delta:{[x==="thinking.delta"?"thinking":"text"]:O}}]:[]}if(S&&x==="turn.ended")return[{type:"agentTurnEnded",sessionId:m,agentId:T,reason:g?.reason}];if(ky.has(x))return $y(y,m,T,x,g??{},t)}switch(x){case"session.meta.updated":{const S=g?.patch?.title??g?.title,O=g?.patch?.lastPrompt,D={};typeof S=="string"&&S.length>0&&(D.title=S),typeof O=="string"&&(D.lastPrompt=O),(D.title!==void 0||D.lastPrompt!==void 0)&&k.push({type:"sessionMetaUpdated",sessionId:m,...D});break}case"prompt.submitted":{const S=g?.promptId,O=g?.userMessageId;if(!S||!O)break;const D=xy(g?.content);if(D.length===0)break;y.currentPromptId=S;const E=My(y,m,S,O,D,typeof g?.createdAt=="string"?g.createdAt:new Date().toISOString());k.push({type:"messageCreated",message:Fo(E)});break}case"turn.started":{const S=g?.turnId,O=y.currentPromptId??Ms("pr_");y.currentPromptId=O,S!==void 0&&y.turnPromptId.set(S,O),y.turnTextLen=0,y.turnThinkLen=0,k.push({type:"turnActiveChanged",sessionId:m,active:!0});break}case"turn.step.started":{const S=g?.turnId;let O=y.turnPromptId.get(S)??y.currentPromptId;if(O||(O=Ms("pr_"),y.currentPromptId=O,S!==void 0&&y.turnPromptId.set(S,O)),y.turnTextLen=0,y.turnThinkLen=0,y.retryReuseMsgId!==void 0){const E=y.retryReuseMsgId;if(y.retryReuseMsgId=void 0,No(y,E)!==void 0){y.currentAssistantMsgId=E;break}}const D=sr(y,m,O);y.currentAssistantMsgId=D.id,k.push({type:"messageCreated",message:Fo(D)});break}case"thinking.delta":{const S=y.currentAssistantMsgId;if(!S)break;const O=g?.delta??"";if(!O)break;_?.offset===0&&y.turnThinkLen>0&&(y.turnThinkLen=0);const D=v(y.turnThinkLen,_?.offset);if(D==="skip")break;if(D==="gap"){k.push({type:"historyCompacted",sessionId:m,beforeSeq:0,reason:"delta_gap"});break}const E=or(y,S,"thinking",O);if(E<0)break;y.turnThinkLen+=O.length,k.push({type:"assistantDelta",sessionId:m,messageId:S,contentIndex:E,delta:{thinking:O}});break}case"assistant.delta":{const S=y.currentAssistantMsgId;if(!S)break;const O=g?.delta??"";if(!O)break;_?.offset===0&&y.turnTextLen>0&&(y.turnTextLen=0);const D=v(y.turnTextLen,_?.offset);if(D==="skip")break;if(D==="gap"){k.push({type:"historyCompacted",sessionId:m,beforeSeq:0,reason:"delta_gap"});break}const E=or(y,S,"text",O);if(E<0)break;y.turnTextLen+=O.length,k.push({type:"assistantDelta",sessionId:m,messageId:S,contentIndex:E,delta:{text:O}});break}case"tool.use":case"tool.call.started":{const S=y.currentAssistantMsgId,O=g?.turnId,D=y.turnPromptId.get(O)??y.currentPromptId;if(!S||!D)break;const E=g?.toolCallId,B=g?.name??g?.toolName??"",q=g?.args??g?.input??{};Iy(y,S,E,B,q);const V=No(y,S);V&&V.content.length-1,y.toolStartTimes.set(E,Date.now()),V&&k.push({type:"messageUpdated",sessionId:m,messageId:S,content:V.content.map(b=>({...b})),status:"pending"});break}case"tool.call.delta":break;case"tool.progress":{const S=g?.toolCallId,O=Ay(g??{});S&&O&&k.push({type:"toolOutput",sessionId:m,toolCallId:S,outputChunk:O.outputChunk,stream:O.stream});break}case"tool.result":{const S=g?.turnId;let O=y.turnPromptId.get(S)??y.currentPromptId;O||(O=Ms("pr_"),y.currentPromptId=O,S!==void 0&&y.turnPromptId.set(S,O));const D=g?.toolCallId,E=g?.output,B=g?.isError??!1;y.toolStartTimes.get(D)??Date.now(),y.toolStartTimes.delete(D);const q=Ty(y,m,D,E,B,O);k.push({type:"messageCreated",message:Fo(q)}),y.currentAssistantMsgId=void 0;break}case"turn.step.completed":{const S=y.currentAssistantMsgId,O=by(g?.usage);if(y.totalInput+=O.input,y.totalOutput+=O.output,y.totalCacheRead+=O.cacheRead,y.totalCacheCreate+=O.cacheCreate,S){ir(y,S);const D=No(y,S);D&&k.push({type:"messageUpdated",sessionId:m,messageId:S,content:D.content.map(E=>({...E})),status:"completed"})}break}case"agent.status.updated":{g?.model&&(y.model=g.model),g?.contextTokens!==void 0&&(y.contextTokens=g.contextTokens),g?.maxContextTokens!==void 0&&(y.contextLimit=g.maxContextTokens),k.push({type:"sessionUsageUpdated",sessionId:m,usage:ar(y),model:y.model||void 0,swarmMode:g?.swarmMode===!0?!0:g?.swarmMode===!1?!1:void 0,planMode:g?.planMode===!0?!0:g?.planMode===!1?!1:void 0,supermoonMode:g?.supermoonMode===!0?!0:g?.supermoonMode===!1?!1:void 0,thinking:typeof g?.thinkingEffort=="string"&&g.thinkingEffort.length>0?g.thinkingEffort:void 0});break}case"turn.ended":{const S=y.currentAssistantMsgId,O=g?.reason??"completed",D=Xs(g??{},"durationMs");if(k.push({type:"turnActiveChanged",sessionId:m,active:!1,reason:g?.reason}),S){ir(y,S);const q=No(y,S);q&&k.push({type:"messageUpdated",sessionId:m,messageId:S,content:q.content.map(V=>({...V})),status:O==="failed"||O==="blocked"?"error":"completed",durationMs:D})}y.turnCount++;const E=ar(y);k.push({type:"sessionUsageUpdated",sessionId:m,usage:E});const B=g?.error;if(O==="failed"&&B!==void 0&&typeof B.message=="string"&&B.message.length>0){const q=typeof g?.turnId=="number"?g.turnId:void 0,V=(q!==void 0?y.turnPromptId.get(q):void 0)??y.currentPromptId;k.push({type:"messageCreated",message:{id:`turnerror_${m}_${q??"unknown"}`,sessionId:m,role:"assistant",content:[{type:"text",text:B.message}],createdAt:new Date().toISOString(),promptId:V,metadata:{[Ou]:{code:typeof B.code=="string"?B.code:void 0,message:B.message}}}})}y.currentAssistantMsgId=void 0,y.currentPromptId=void 0,y.turnTextLen=0,y.turnThinkLen=0,y.retryReuseMsgId=void 0;break}case"prompt.completed":{const S=g?.promptId;typeof S=="string"&&S.length>0&&k.push({type:"promptCompleted",sessionId:m,promptId:S,reason:g?.reason??"completed"});break}case"prompt.aborted":{const S=g?.promptId;typeof S=="string"&&S.length>0&&k.push({type:"promptAborted",sessionId:m,promptId:S});break}case"turn.step.retrying":{const S=y.currentAssistantMsgId;if(S!==void 0){const O=No(y,S);O!==void 0&&(O.content=O.content.filter(D=>D.type!=="text"&&D.type!=="thinking"&&D.type!=="toolUse"),k.push({type:"messageUpdated",sessionId:m,messageId:S,content:O.content.map(D=>({...D})),status:"pending"}),y.retryReuseMsgId=S)}y.turnTextLen=0,y.turnThinkLen=0,y.toolStartTimes.clear();break}case"turn.step.interrupted":{y.currentAssistantMsgId=void 0,y.retryReuseMsgId=void 0;break}case"subagent.spawned":{const O={id:typeof g?.subagentId=="string"&&g.subagentId.length>0?g.subagentId:Ms("task_"),sessionId:m,kind:"subagent",description:typeof g?.description=="string"?g.description:g?.subagentName??"Sub Agent",status:"running",createdAt:new Date().toISOString(),subagentPhase:"queued",subagentType:typeof g?.subagentName=="string"?g.subagentName:void 0,parentToolCallId:typeof g?.parentToolCallId=="string"?g.parentToolCallId:void 0,swarmIndex:typeof g?.swarmIndex=="number"?g.swarmIndex:void 0,runInBackground:g?.runInBackground===!0};y.subagentMeta.set(O.id,O),k.push({type:"taskCreated",sessionId:m,task:O});break}case"subagent.started":{const S=no(y,m,g?.subagentId,{subagentPhase:"working",status:"running",startedAt:new Date().toISOString()});S&&k.push({type:"taskCreated",sessionId:m,task:S});break}case"subagent.suspended":{const S=no(y,m,g?.subagentId,{subagentPhase:"suspended",status:"running",suspendedReason:typeof g?.reason=="string"?g.reason:void 0});S&&k.push({type:"taskCreated",sessionId:m,task:S});break}case"subagent.completed":{const S=typeof g?.resultSummary=="string"?g.resultSummary:void 0,O=no(y,m,g?.subagentId,{subagentPhase:"completed",status:"completed",completedAt:new Date().toISOString(),outputPreview:S});O&&k.push({type:"taskCreated",sessionId:m,task:O}),k.push({type:"taskCompleted",sessionId:m,taskId:g?.subagentId??"",status:"completed",outputPreview:S});break}case"subagent.failed":{const S=typeof g?.error=="string"?g.error:void 0,O=no(y,m,g?.subagentId,{subagentPhase:"failed",status:"failed",completedAt:new Date().toISOString(),outputPreview:S});O&&k.push({type:"taskCreated",sessionId:m,task:O}),k.push({type:"taskCompleted",sessionId:m,taskId:g?.subagentId??"",status:"failed",outputPreview:S});break}case"error":{k.push({type:"unknown",raw:{_agentError:!0,code:g?.code,message:g?.message,name:g?.name,details:g?.details,retryable:g?.retryable}});break}case"warning":{k.push({type:"unknown",raw:{_agentWarning:!0,message:g?.message}});break}case"task.started":{const S=g?.info??{},O=typeof S.startedAt=="number"?new Date(S.startedAt).toISOString():void 0,D=typeof S.taskId=="string"?S.taskId:typeof S.taskId=="number"?String(S.taskId):Ms("task_"),E=typeof S.description=="string"?S.description:typeof S.command=="string"?S.command:pt.global.t("tasks.defaultDescription");if(S.kind==="agent"){const q=typeof S.agentId=="string"&&S.agentId.length>0?S.agentId:void 0;if(q!==void 0){const V=no(y,m,q,{description:E,backgroundTaskId:D,runInBackground:!0});V&&k.push({type:"taskCreated",sessionId:m,task:V})}else k.push({type:"taskCreated",sessionId:m,task:{id:D,sessionId:m,kind:"subagent",description:E,status:"running",createdAt:O??new Date().toISOString(),startedAt:O,subagentPhase:"queued",runInBackground:!0}});break}const B=typeof S.command=="string"?S.command:void 0;k.push({type:"taskCreated",sessionId:m,task:{id:D,sessionId:m,kind:"bash",description:E,command:B,status:"running",createdAt:O??new Date().toISOString(),startedAt:O,outputPreview:B!==void 0?`$ ${B}`:void 0}});break}case"task.terminated":{const S=g?.info??{},O=S.status==="failed"||typeof S.exitCode=="number"&&S.exitCode!==0;k.push({type:"taskCompleted",sessionId:m,taskId:typeof S.taskId=="string"?S.taskId:typeof S.taskId=="number"?String(S.taskId):"",status:O?"failed":"completed"});break}case"compaction.completed":{const S=g?.result??{};k.push({type:"compactionCompleted",sessionId:m,tokensBefore:typeof S.tokensBefore=="number"?S.tokensBefore:void 0,tokensAfter:typeof S.tokensAfter=="number"?S.tokensAfter:void 0,summary:typeof S.summary=="string"?S.summary:void 0}),k.push({type:"historyCompacted",sessionId:m,beforeSeq:0,reason:"auto_compact"});break}case"compaction.started":{k.push({type:"compactionStarted",sessionId:m,trigger:g?.trigger==="manual"?"manual":"auto",instruction:typeof g?.instruction=="string"?g.instruction:void 0});break}case"compaction.cancelled":{k.push({type:"compactionCancelled",sessionId:m});break}case"goal.updated":{const S=wy(g?.snapshot??null);k.push({type:"goalUpdated",sessionId:m,goal:S?.status==="complete"?null:S});break}case"cron.fired":{const S=g?.origin,O=_n(g??{},"prompt");if(S&&typeof S=="object"&&S.kind==="cron_job"&&O){const D={id:Ms("cron_"),sessionId:m,role:"user",content:[{type:"text",text:O}],createdAt:new Date().toISOString(),metadata:{origin:S}};y.messages.push(D),k.push({type:"messageCreated",message:Fo(D)})}break}}return k}return{project:f,bindNextPromptId:u,seedInFlight:p,reset:s,disposeSession:o,markSideChannelAgent:i}}const Ey=new Set(["server_hello","ack","ping","resync_required","error","pong"]),lr=new Set(["turn.started","turn.step.started","turn.step.completed","turn.step.retrying","turn.step.interrupted","turn.ended","thinking.delta","assistant.delta","tool.call.started","tool.use","tool.call.delta","tool.progress","tool.result","agent.status.updated","prompt.submitted","prompt.completed","prompt.aborted","session.meta.updated","compaction.started","compaction.completed","compaction.cancelled","goal.updated","error","warning","subagent.spawned","subagent.started","subagent.suspended","subagent.completed","subagent.failed","task.started","task.terminated","background.task.started","background.task.terminated","cron.fired"]),Ly=new Set(["session.created","session.updated","session.deleted","session.status_changed","session.usage_updated","session.history_compacted","message.created","message.updated","approval.requested","approval.resolved","approval.expired","question.requested","question.answered","question.dismissed","task.created","task.progress","task.completed","assistant.tool_use_started","assistant.tool_use_delta","assistant.tool_use_completed","assistant.completed","tool.started","tool.output","tool.completed","plugin.changed","capability.changed"]),By=new Set(["assistant.delta","thinking.delta"]);function Ry(e,t){if(Ey.has(e))return{route:"ignore"};const n=e.startsWith("event."),s=n?e.slice(6):e;return By.has(s)?Oy(t)?{route:"agent",agentType:s}:{route:"protocol"}:n?Ly.has(s)?{route:"protocol"}:lr.has(s)?{route:"agent",agentType:s}:{route:"protocol"}:lr.has(s)?{route:"agent",agentType:s}:{route:"agent",agentType:s}}function Oy(e){if(!e||typeof e!="object")return!1;const t=e;return"message_id"in t||"content_index"in t?!1:typeof t.delta=="string"}class jo extends Error{code;requestId;details;timestamp;durationMs;constructor(t){super(t.msg),this.name="DaemonApiError",this.code=t.code,this.requestId=t.requestId,this.details=t.details,this.timestamp=t.timestamp,this.durationMs=t.durationMs}}class Cs extends Error{cause;method;path;url;requestId;phase;timeoutMs;status;statusText;contentType;bodyPreview;timestamp;durationMs;constructor(t){super(t.message),this.name="DaemonNetworkError",this.cause=t.cause,this.method=t.method,this.path=t.path,this.url=t.url,this.requestId=t.requestId,this.phase=t.phase,this.timeoutMs=t.timeoutMs,this.status=t.status,this.statusText=t.statusText,this.contentType=t.contentType,this.bodyPreview=t.bodyPreview,this.timestamp=t.timestamp,this.durationMs=t.durationMs}}function Mn(e){return e instanceof jo||typeof e=="object"&&e!==null&&e.name==="DaemonApiError"&&typeof e.code=="number"}function rl(e){return e instanceof Cs||typeof e=="object"&&e!==null&&e.name==="DaemonNetworkError"&&typeof e.method=="string"&&typeof e.path=="string"}const rn="kimi-web.server-credential",Dy="token",zy=10080*60*1e3;let Ts;const Ba=new Set;function Fy(){if(typeof window>"u")return;const e=window.location.hash??"";if(!e.startsWith("#"))return;const n=new URLSearchParams(e.slice(1)).get(Dy);if(!n)return;const s=new URL(window.location.href);return s.hash="",window.history.replaceState(window.history.state,"",`${s.pathname}${s.search}`),n}function Ra(e){return{version:1,credential:e,expiresAt:Date.now()+zy}}function Ny(e){return JSON.stringify(e)}function ul(e){try{const t=JSON.parse(e);if(typeof t!="object"||t===null)return;const n=t;return n.version!==1||typeof n.credential!="string"||n.credential.length===0||typeof n.expiresAt!="number"||!Number.isFinite(n.expiresAt)?void 0:{version:1,credential:n.credential,expiresAt:n.expiresAt}}catch{return}}function Oa(e){globalThis.localStorage?.setItem(rn,Ny(e))}function qy(){try{const e=globalThis.localStorage?.getItem(rn);if(e){const n=ul(e);if(n===void 0){const s=Ra(e);let o=!1;try{Oa(s),o=!0}catch{}if(!o)try{globalThis.localStorage?.getItem(rn)===e&&globalThis.localStorage?.removeItem(rn),o=!0}catch{}try{globalThis.sessionStorage?.removeItem(rn)}catch{}return o?s:void 0}if(n.expiresAt>Date.now())return n;globalThis.sessionStorage?.removeItem(rn),globalThis.localStorage?.getItem(rn)===e&&globalThis.localStorage?.removeItem(rn);return}const t=globalThis.sessionStorage?.getItem(rn);if(t){const n=Ra(t);let s=!1;try{Oa(n),s=!0}catch{}try{globalThis.sessionStorage?.removeItem(rn),s=!0}catch{}return s?n:void 0}return}catch{return}}function Wy(){if(Ts=qy(),si()!==void 0)return!0;const e=Fy();return e?(Vu(e),!0):!1}function si(){if(Ts!==void 0){if(Ts.expiresAt<=Date.now()){Hy(Ts);return}return Ts.credential}}function Hy(e){Ts=void 0;try{globalThis.sessionStorage?.removeItem(rn);const t=globalThis.localStorage?.getItem(rn),n=t==null?void 0:ul(t);(n===void 0?t===e.credential:n.credential===e.credential&&n.expiresAt===e.expiresAt)&&globalThis.localStorage?.removeItem(rn)}catch{}}function Vu(e){const t=Ra(e);Ts=t;try{Oa(t)}catch{}try{globalThis.sessionStorage?.removeItem(rn)}catch{}}function Uy(){const e=Ts;Ts=void 0;try{const t=globalThis.localStorage?.getItem(rn),s=(t==null?void 0:ul(t))?.credential??t;e!==void 0&&s===e.credential&&globalThis.localStorage?.removeItem(rn),globalThis.sessionStorage?.removeItem(rn)}catch{}}function Vy(e){return Ba.add(e),()=>{Ba.delete(e)}}function jy(){Uy();for(const e of Ba)try{e()}catch{}}const Ko=3e4,hi=5*6e4,Ky=5*6e4,ju="0123456789ABCDEFGHJKMNPQRSTVWXYZ",rr=500,Ku=40101;function gi(e=Ko){try{return AbortSignal.timeout(e)}catch{return}}function Gy(e,t){let n="",s=e;for(let o=0;oju[n%32]).join("")}function yi(){return`${Gy(Date.now(),10)}${Qy(16)}`}function Yy(e){try{const t=[];return e.forEach((n,s)=>{typeof n=="string"?t.push({field:s,value:n}):t.push({field:s,file:n.name,size:n.size,type:n.type})}),{formData:t}}catch{return"[FormData]"}}async function da(e){try{const t=await e.text();return t?t.length>rr?`${t.slice(0,rr)}...`:t:void 0}catch{return}}class Zy{constructor(t,n){this.origin=t,this.identity=n}async get(t,n){return this.request("GET",t,void 0,n)}async getBlob(t){const n=oo(this.origin,t),s=yi(),o={"X-Request-Id":s};this.addClientHeaders(o);const i=Date.now();fi({method:"GET",path:t,url:n,requestId:s});let u;try{u=await fetch(n,{method:"GET",headers:o,signal:gi()})}catch(f){throw Os({method:"GET",path:t,requestId:s,phase:"fetch",durationMs:Date.now()-i,error:f}),new Cs({message:`Network error calling GET ${t}`,cause:f,method:"GET",path:t,url:n,requestId:s,phase:"fetch",timeoutMs:Ko,timestamp:Date.now(),durationMs:Date.now()-i})}if(u.ok)return ko({method:"GET",path:t,requestId:s,status:u.status,durationMs:Date.now()-i,code:0,msg:""}),u.blob();let p;try{p=await u.clone().json()}catch{}throw this.checkAuthRequired(u,p?.code??0),ko({method:"GET",path:t,requestId:s,status:u.status,durationMs:Date.now()-i,code:p?.code??u.status,msg:p?.msg??u.statusText,envelopeRequestId:p?.request_id}),new jo({code:p?.code??u.status,msg:p?.msg??u.statusText,requestId:p?.request_id??s,details:p?.details,timestamp:Date.now(),durationMs:Date.now()-i})}async post(t,n,s){return this.request("POST",t,n,void 0,s?.allowCodes,s?.timeoutMs)}async postZip(t,n,s){const o="POST",i=oo(this.origin,t),u=yi(),p={"X-Request-Id":u,"Content-Type":"application/json; charset=utf-8"};this.addClientHeaders(p);const f=Date.now();fi({method:o,path:t,url:i,requestId:u,body:s});let v;try{v=await fetch(i,{method:o,headers:p,body:JSON.stringify(n),signal:gi(hi)})}catch(m){throw Os({method:o,path:t,requestId:u,phase:"fetch",durationMs:Date.now()-f,error:m}),new Cs({message:`Network error calling ${o} ${t}`,cause:m,method:o,path:t,url:i,requestId:u,phase:"fetch",timeoutMs:hi,timestamp:Date.now(),durationMs:Date.now()-f})}const w=v.headers.get("content-type")??void 0,x=w?.split(";",1)[0]?.trim().toLowerCase();if(!v.ok||x!=="application/zip"){let m;try{m=await v.clone().json()}catch{}if(this.checkAuthRequired(v,m?.code??0),!v.ok||m!==void 0&&m.code!==0){const g=m?.code??v.status,k=m?.msg??v.statusText;throw ko({method:o,path:t,requestId:u,status:v.status,durationMs:Date.now()-f,code:g,msg:k,envelopeRequestId:m?.request_id}),new jo({code:g,msg:k,requestId:m?.request_id??u,details:m?.details,timestamp:Date.now(),durationMs:Date.now()-f})}const _=v.clone(),y=new TypeError(`Expected application/zip, received ${w??"no content type"}`);throw Os({method:o,path:t,requestId:u,phase:"parse",durationMs:Date.now()-f,status:v.status,error:y}),new Cs({message:`Invalid ZIP response from ${o} ${t}`,cause:y,method:o,path:t,url:i,requestId:u,phase:"parse",timeoutMs:hi,status:v.status,statusText:v.statusText,contentType:w,bodyPreview:await da(_),timestamp:Date.now(),durationMs:Date.now()-f})}let h;try{h=await v.blob()}catch(m){throw Os({method:o,path:t,requestId:u,phase:"parse",durationMs:Date.now()-f,status:v.status,error:m}),new Cs({message:`Failed to read ZIP response from ${o} ${t}`,cause:m,method:o,path:t,url:i,requestId:u,phase:"parse",timeoutMs:hi,status:v.status,statusText:v.statusText,contentType:w,timestamp:Date.now(),durationMs:Date.now()-f})}return ko({method:o,path:t,requestId:u,status:v.status,durationMs:Date.now()-f,code:0,msg:""}),{blob:h,contentDisposition:v.headers.get("content-disposition")??void 0}}async postForm(t,n){const s=oo(this.origin,t),o=yi(),i={"X-Request-Id":o};this.addClientHeaders(i);const u=Date.now();fi({method:"POST",path:t,url:s,requestId:o,body:Yy(n)});let p;try{p=await fetch(s,{method:"POST",headers:i,body:n,signal:gi()})}catch(w){throw Os({method:"POST",path:t,requestId:o,phase:"fetch",durationMs:Date.now()-u,error:w}),new Cs({message:`Network error calling POST ${t}`,cause:w,method:"POST",path:t,url:s,requestId:o,phase:"fetch",timeoutMs:Ko,timestamp:Date.now(),durationMs:Date.now()-u})}let f;const v=p.clone();try{f=await p.json()}catch(w){throw Os({method:"POST",path:t,requestId:o,phase:"parse",durationMs:Date.now()-u,status:p.status,error:w}),new Cs({message:`Failed to parse JSON response from POST ${t}`,cause:w,method:"POST",path:t,url:s,requestId:o,phase:"parse",timeoutMs:Ko,status:p.status,statusText:p.statusText,contentType:p.headers.get("content-type")??void 0,bodyPreview:await da(v),timestamp:Date.now(),durationMs:Date.now()-u})}if(ko({method:"POST",path:t,requestId:o,status:p.status,durationMs:Date.now()-u,code:f.code,msg:f.msg,envelopeRequestId:f.request_id,data:f.data}),this.checkAuthRequired(p,f.code),f.code!==0)throw new jo({code:f.code,msg:f.msg,requestId:f.request_id,details:f.details,timestamp:Date.now(),durationMs:Date.now()-u});return f.data}async patch(t,n){return this.request("PATCH",t,n)}async delete(t){return this.request("DELETE",t)}async request(t,n,s,o,i=[],u){let p=oo(this.origin,n);if(o){const y=new URLSearchParams;for(const[k,T]of Object.entries(o))T!==void 0&&y.set(k,String(T));const g=y.toString();g&&(p=`${p}?${g}`)}const f=yi(),v={"X-Request-Id":f};this.addClientHeaders(v),s!==void 0&&(v["Content-Type"]="application/json; charset=utf-8");const w=Date.now();fi({method:t,path:n,url:p,requestId:f,body:s});const x=u??Ko;let h;try{h=await fetch(p,{method:t,headers:v,body:s!==void 0?JSON.stringify(s):void 0,signal:gi(x)})}catch(y){throw Os({method:t,path:n,requestId:f,phase:"fetch",durationMs:Date.now()-w,error:y}),new Cs({message:`Network error calling ${t} ${n}`,cause:y,method:t,path:n,url:p,requestId:f,phase:"fetch",timeoutMs:x,timestamp:Date.now(),durationMs:Date.now()-w})}let m;const _=h.clone();try{m=await h.json()}catch(y){throw Os({method:t,path:n,requestId:f,phase:"parse",durationMs:Date.now()-w,status:h.status,error:y}),new Cs({message:`Failed to parse JSON response from ${t} ${n}`,cause:y,method:t,path:n,url:p,requestId:f,phase:"parse",timeoutMs:x,status:h.status,statusText:h.statusText,contentType:h.headers.get("content-type")??void 0,bodyPreview:await da(_),timestamp:Date.now(),durationMs:Date.now()-w})}if(ko({method:t,path:n,requestId:f,status:h.status,durationMs:Date.now()-w,code:m.code,msg:m.msg,envelopeRequestId:m.request_id,data:m.data}),this.checkAuthRequired(h,m.code),m.code!==0&&!i.includes(m.code))throw new jo({code:m.code,msg:m.msg,requestId:m.request_id,details:m.details,timestamp:Date.now(),durationMs:Date.now()-w});return m.data}addClientHeaders(t){const n=si();n!==void 0&&(t.Authorization=`Bearer ${n}`),this.identity!==void 0&&(t["X-Kimi-Client-Id"]=this.identity.clientId,t["X-Kimi-Client-Name"]=this.identity.clientName,t["X-Kimi-Client-Version"]=this.identity.clientVersion,t["X-Kimi-Client-Ui-Mode"]=this.identity.clientUiMode)}checkAuthRequired(t,n){(t.status===401||n===Ku)&&jy()}}function Xy(e){const t={catalog_id:e.catalogId};return e.localId!==void 0&&(t.id=e.localId),e.baseUrl!==void 0&&(t.base_url=e.baseUrl),e.apiKey!==void 0&&(t.api_key=e.apiKey),t}function Jy(e){const t={url:e.url};return e.apiKey!==void 0&&(t.api_key=e.apiKey),t}function ur(e){return{id:e.id,name:e.name,wireType:e.wireType,modelCount:e.models.length,needsBaseUrl:e.needsBaseUrl,envKey:e.envKey,rejected:e.rejected,rejectReason:e.rejectReason}}function ek(e,t){const n=t.trim().toLowerCase();return!!(n===""||e.name.toLowerCase().includes(n)||e.id.toLowerCase().includes(n)||e.wireType!==null&&e.wireType.toLowerCase().includes(n))}function tk(e,t){return e.filter(n=>ek(n,t))}function nk(e){if(!(!e||e.length===0))return e.map(t=>({file_id:t.fileId,name:t.name,media_type:t.mediaType,size:t.size}))}function sk(e,t){return{type:"subscribe_v2",id:t,payload:{session_id:e.sessionId,transcript:e.grades,transcript_since:e.sinceSeq??void 0}}}function ok(e,t,n){return{type:"unsubscribe_v2",id:t,payload:{session_id:e,...n?{agent_ids:n}:{}}}}class ik{byKey=new Map;get(t,n){return this.byKey.get(`${t}:${n}`)??0}set(t,n,s){this.byKey.set(`${t}:${n}`,s)}clear(t){for(const n of this.byKey.keys())n.startsWith(`${t}:`)&&this.byKey.delete(n)}advance(t,n,s){const o=`${t}:${n}`,i=this.byKey.get(o)??0;return i===0||s===i+1?(this.byKey.set(o,s),!1):!0}}async function ak(e){const t=new URLSearchParams({agent_id:e.agentId,since_seq:String(e.sinceSeq)}),n={};e.token!==void 0&&e.token!==""&&(n.authorization=`Bearer ${e.token}`);const i=await(await(e.fetchImpl??fetch)(`${e.baseUrl}/api/v1/sessions/${encodeURIComponent(e.sessionId)}/transcript/ops?${t.toString()}`,{headers:n})).json();if(i.code!==0)throw new Error(`transcript ops failed (${String(i.code)}): ${String(i.msg??"")}`);const u=i.data;if(!u||typeof u.agent_id!="string"||!Array.isArray(u.batches)||typeof u.latest_seq!="number"||typeof u.complete!="boolean")throw new Error("transcript ops: unexpected response shape");const p=u.batches.flatMap(f=>{const v=f;return!v||typeof v.seq!="number"||!Array.isArray(v.ops)?[]:[{seq:v.seq,ops:v.ops}]});return{agentId:u.agent_id,batches:p,latestSeq:u.latest_seq,complete:u.complete}}function lk(e){let t=new Map;function n(h){const m=t.get(h);if(m!==void 0)return m;const _=rk();return t.set(h,_),_}function s(h){if(!Array.isArray(h))return[];const m=[];for(const _ of h)try{m.push(...i(_))}catch(y){console.error("[transcriptProjector] error projecting op:",y instanceof Error?y.message:y)}return m}function o(){t=new Map}function i(h){const m=So(h);switch(xt(m,"op")){case"turn.upsert":return u(m);case"step.upsert":return p(m);case"frame.upsert":return f(m);case"append":return v(m);default:return[]}}function u(h){const m=So(h.turn),_=xt(m,"turnId"),y=xt(m,"state");if(_===void 0||!pk(y))return[];const g=n(_);g.state=y;const k=xt(m,"prompt");k!==void 0&&(g.prompt=k);const T=dk(m,"startedAt");T!==void 0&&(g.startedAt=T);const S=ck(m,"durationMs");S!==void 0&&(g.durationMs=S);const O=[];return y==="queued"?O:y==="running"?(g.prompt!==void 0&&g.prompt.length>0&&!g.userEmitted&&(O.push({type:"messageCreated",message:{id:`usr_${_}`,sessionId:e,role:"user",content:[{type:"text",text:g.prompt}],createdAt:g.startedAt??new Date().toISOString()}}),g.userEmitted=!0),O):(g.endEmitted||(g.assistantEmitted&&O.push({type:"messageUpdated",sessionId:e,messageId:`asst_${_}`,content:cr(g.content),status:"completed",...g.durationMs!==void 0?{durationMs:g.durationMs}:{}}),O.push({type:"sessionWorkChanged",sessionId:e,busy:!1,mainTurnActive:!1,lastTurnReason:y}),g.endEmitted=!0),O)}function p(h){const m=So(h.step),_=xt(h,"turnId")??xt(m,"turnId"),y=m.frames;if(_===void 0||!Array.isArray(y))return[];const g=n(_),k=[];for(const T of y){const S=So(T),O=xt(S,"frameId");O!==void 0&&(g.seenFrames.has(O)||k.push(...w(g,_,S)))}return k}function f(h){const m=xt(h,"turnId"),_=So(h.frame),y=xt(_,"frameId");if(m===void 0||y===void 0)return[];const g=n(m),k=xt(_,"kind");return(k==="text"||k==="thinking")&&g.seenFrames.has(y)?[]:w(g,m,_)}function v(h){const m=So(h.target),_=xt(h,"text");if(_===void 0)return[];const y=xt(m,"type");if(y==="task"){const B=xt(m,"taskId");return B===void 0?[]:[{type:"taskProgress",sessionId:e,taskId:B,outputChunk:_,stream:"stdout"}]}if(y!=="frame")return[];const g=xt(m,"turnId"),k=xt(m,"frameId");if(g===void 0||k===void 0)return[];const T=n(g),S=[];x(T,g,S);const O=Da(T,k),D=T.content[O];(D===void 0||D.type!=="text"&&D.type!=="thinking")&&(T.content[O]={type:"text",text:""});const E=T.content[O];return E!==void 0&&(E.type==="text"?(E.text+=_,S.push({type:"assistantDelta",sessionId:e,messageId:`asst_${g}`,contentIndex:O,delta:{text:_}})):E.type==="thinking"&&(E.thinking+=_,S.push({type:"assistantDelta",sessionId:e,messageId:`asst_${g}`,contentIndex:O,delta:{thinking:_}}))),T.seenFrames.add(k),S}function w(h,m,_){const y=xt(_,"frameId");if(y===void 0)return[];const g=[];switch(h.seenFrames.add(y),xt(_,"kind")){case"text":{if(xt(_,"role")!=="assistant")break;const S=xt(_,"text");if(S===void 0)break;x(h,m,g);const{index:O,part:D}=dr(h,y,"text");D.type==="text"&&(D.text+=S),g.push({type:"assistantDelta",sessionId:e,messageId:`asst_${m}`,contentIndex:O,delta:{text:S}});break}case"thinking":{const T=xt(_,"text");if(T===void 0)break;x(h,m,g);const{index:S,part:O}=dr(h,y,"thinking");O.type==="thinking"&&(O.thinking+=T),g.push({type:"assistantDelta",sessionId:e,messageId:`asst_${m}`,contentIndex:S,delta:{thinking:T}});break}case"tool":{const T=xt(_,"toolCallId");if(T===void 0)break;if(x(h,m,g),!h.content.some(D=>D.type==="toolUse"&&D.toolCallId===T)){const D=Da(h,y);h.content[D]={type:"toolUse",toolCallId:T,toolName:xt(_,"name")??"",input:_.input??{},outputLines:[]}}g.push({type:"messageUpdated",sessionId:e,messageId:`asst_${m}`,content:cr(h.content),status:"pending"});const S=_.progress;uk(S)&&g.push({type:"toolOutput",sessionId:e,toolCallId:T,outputChunk:xt(S,"text")??"",stream:S.kind==="stderr"?"stderr":"stdout"});const O=xt(_,"state");(O==="done"||O==="error")&&!h.emittedToolResults.has(T)&&(h.emittedToolResults.add(T),g.push({type:"messageCreated",message:{id:`tool_${T}`,sessionId:e,role:"tool",content:[{type:"toolResult",toolCallId:T,output:_.output??_.display??{},isError:O==="error"}],createdAt:new Date().toISOString()}}));break}}return g}function x(h,m,_){h.assistantEmitted||(h.assistantEmitted=!0,_.push({type:"messageCreated",message:{id:`asst_${m}`,sessionId:e,role:"assistant",content:[],createdAt:new Date().toISOString()}}))}return{project:s,reset:o}}function rk(){return{state:"running",prompt:void 0,startedAt:void 0,durationMs:void 0,userEmitted:!1,assistantEmitted:!1,endEmitted:!1,content:[],frameIndex:new Map,nextIndex:0,seenFrames:new Set,emittedToolResults:new Set}}function So(e){return e===null||typeof e!="object"||Array.isArray(e)?{}:e}function uk(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function xt(e,t){const n=e[t];return typeof n=="string"?n:void 0}function ck(e,t){const n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:void 0}function dk(e,t){const n=e[t];if(typeof n=="string")return n;if(typeof n=="number"&&Number.isFinite(n))return new Date(n).toISOString()}function pk(e){return e==="queued"||e==="running"||e==="completed"||e==="failed"||e==="cancelled"}function cr(e){return e.map(t=>t.type==="toolUse"&&t.outputLines!==void 0?{...t,outputLines:[...t.outputLines]}:{...t})}function Da(e,t){const n=e.frameIndex.get(t);if(n!==void 0)return n;const s=e.nextIndex;return e.nextIndex+=1,e.frameIndex.set(t,s),s}function dr(e,t,n){const s=Da(e,t),o=e.content[s];if(o!==void 0&&o.type===n)return{index:s,part:o};const i=n==="text"?{type:"text",text:""}:{type:"thinking",thinking:""};return e.content[s]=i,{index:s,part:i}}const fk=new Set(["turn.started","turn.ended","turn.step.started","turn.step.completed","turn.step.retrying","turn.step.interrupted","thinking.delta","assistant.delta","tool.use","tool.call.started","tool.call.delta","tool.progress","tool.result","tool.list.updated","task.started","task.terminated","subagent.spawned","subagent.started","subagent.suspended","subagent.completed","subagent.failed","prompt.submitted","prompt.completed","prompt.aborted"]);function mk(e){return fk.has(e)}function vk(e,t){if(!Array.isArray(e))return[];const n=[];for(const s of e)try{n.push(...hk(s,t))}catch(o){console.error("[transcriptOpsToAppEvents] error mapping op:",o instanceof Error?o.message:o)}return n}function Ws(e){return e===null||typeof e!="object"||Array.isArray(e)?{}:e}function Xn(e,t){const n=e[t];return typeof n=="string"?n:void 0}function pr(e,t){const n=e[t];if(typeof n=="string")return n;if(typeof n=="number"&&Number.isFinite(n))return new Date(n).toISOString()}function Gu(e,t){for(const n of e)for(const s of t){const o=n[s];if(typeof o=="number"&&Number.isFinite(o))return o}}function hk(e,t){if(e===null||typeof e!="object"||Array.isArray(e))return[];const n=e,s=n.op;if(typeof s!="string")return[];switch(s){case"prompt.upsert":return gk(n.prompt,t);case"task.upsert":return bk(n.task,t);case"meta.merge":return Ck(n.meta,t);default:return[]}}function gk(e,t){const n=Ws(e),s=Xn(n,"prompt");if(s===void 0||s.trim().length===0)return[];const o=Xn(n,"createdAt")??new Date().toISOString();return[{type:"messageCreated",message:{id:Xn(n,"promptId")??`pr_${t}-${o}`,sessionId:t,role:"user",content:[{type:"text",text:s}],createdAt:o}}]}const yk={shell:"bash",subagent:"subagent",tool:"tool"};function kk(e){switch(e){case"created":case"pending":return{eventKind:"taskCreated",status:"running"};case"running":case"in_progress":return{eventKind:"taskProgress",status:"running"};case"completed":case"succeeded":return{eventKind:"taskCompleted",status:"completed"};case"failed":case"timed_out":case"lost":return{eventKind:"taskCompleted",status:"failed"};case"killed":return{eventKind:"taskCompleted",status:"cancelled"};default:return}}function bk(e,t){const n=Ws(e),s=Xn(n,"taskId");if(s===void 0||s.length===0)return[];const o=n.kind,i=typeof o=="string"?yk[o]:void 0;if(i===void 0)return[];const u=Xn(n,"state");if(u===void 0)return[];const p=kk(u);if(p===void 0)return[];const f=pr(n,"startedAt"),v=pr(n,"endedAt"),w=Xn(n,"description")??Xn(n,"name")??Xn(n,"title")??"",x={id:s,sessionId:t,kind:i,description:w,status:p.status,createdAt:f??new Date().toISOString(),...f!==void 0?{startedAt:f}:{},...v!==void 0?{completedAt:v}:{}};switch(p.eventKind){case"taskCreated":return[{type:"taskCreated",sessionId:t,task:x}];case"taskProgress":return[{type:"taskProgress",sessionId:t,taskId:s,outputChunk:Xn(n,"outputTail")??"",stream:"stdout"}];case"taskCompleted":{const h=Xn(n,"error")??Xn(n,"stateReason");return[{type:"taskCompleted",sessionId:t,taskId:s,status:p.status,...p.status==="failed"&&h!==void 0?{outputPreview:h}:{}}]}}}function wk(e){if(e.usage!==void 0&&e.usage!==null||Object.keys(e).some(n=>n.startsWith("tokens_")))return!0;const t=Ws(e.agent);return t.usage!==void 0&&t.usage!==null?!0:Gu([t],["contextTokens","maxContextTokens"])!==void 0}function Sk(e){const t=Ws(e.usage),n=Ws(e.agent),s=Ws(Ws(n.usage).total),o=(i,u)=>Gu(i,u)??0;return{inputTokens:o([t,s,e],["inputTokens","input_tokens","inputOther","tokens_input"]),outputTokens:o([t,s,e],["outputTokens","output_tokens","output","tokens_output"]),cacheReadTokens:o([t,s,e],["cacheReadTokens","cache_read_input_tokens","inputCacheRead","tokens_cache_read"]),cacheCreationTokens:o([t,s,e],["cacheCreationTokens","cache_creation_input_tokens","inputCacheCreation","tokens_cache_creation"]),totalCostUsd:o([t,s,e],["totalCostUsd","cost","tokens_cost"]),contextTokens:o([t,n,e],["contextTokens","tokens_context"]),contextLimit:o([t,n,e],["contextLimit","maxContextTokens","tokens_context_limit"]),turnCount:o([t,e],["turnCount","tokens_turn_count"])}}function Ck(e,t){const n=Ws(e);return wk(n)?[{type:"sessionUsageUpdated",sessionId:t,usage:Sk(n)}]:[]}const _k="kimi-code.bearer.",$k=3e4;class Mk{constructor(t,n,s){this.wsUrl=t,this.clientId=n,this.handlers=s}ws=null;connected=!1;closed=!1;subscriptions=new Map;pendingSubscriptions=[];terminalAttachments=new Map;transcriptSubscriptions=new Map;msgSeq=0;reconnectAttempts=0;reconnectTimer=null;heartbeatMs=3e4;lastActivityAt=0;connect(){if(this.ws!==null||this.closed)return;this.lastActivityAt=Date.now(),bo("connect",{url:this.wsUrl,attempt:this.reconnectAttempts});const t=si(),n=t!==void 0?[`${_k}${t}`]:void 0,s=new WebSocket(this.wsUrl,n);this.ws=s,s.onopen=()=>{bo("open")},s.onmessage=o=>{this.lastActivityAt=Date.now();try{const i=JSON.parse(String(o.data));T0(i),this.handleFrame(i)}catch(i){bo("parse-error",{error:String(i)}),this.handlers.onError(0,`Failed to parse WS frame: ${String(i)}`,!1)}},s.onerror=()=>{bo("error"),this.handlers.onError(0,"WebSocket error",!1)},s.onclose=o=>{bo("close",o?{code:o.code,reason:o.reason,wasClean:o.wasClean}:void 0),this.connected=!1,this.ws=null,this.handlers.onConnectionState(!1),this.scheduleReconnect()}}scheduleReconnect(){if(this.closed||this.reconnectTimer!==null)return;const n=Math.min(3e4,1e3*2**this.reconnectAttempts)+Math.floor(Math.random()*250);this.reconnectAttempts+=1,bo("reconnect-scheduled",{delayMs:n,attempt:this.reconnectAttempts}),this.reconnectTimer=setTimeout(()=>{this.reconnectTimer=null,this.connect()},n)}subscribe(t,n={seq:0}){if(this.subscriptions.set(t,{...n}),this.connected)this.sendSubscribe([t],{[t]:n});else{const s=this.pendingSubscriptions.findIndex(o=>o.sessionId===t);s!==-1&&this.pendingSubscriptions.splice(s,1),this.pendingSubscriptions.push({sessionId:t,cursor:{...n}})}}unsubscribe(t){this.subscriptions.delete(t);const n=this.pendingSubscriptions.findIndex(s=>s.sessionId===t);n!==-1&&this.pendingSubscriptions.splice(n,1),this.connected&&this.ws&&this.send({type:"unsubscribe",id:this.nextId(),payload:{session_ids:[t]}})}subscribeTranscript(t,n,s){const o=this.transcriptSubscriptions.get(t);this.transcriptSubscriptions.set(t,{grades:n,sinceSeq:{...o?.sinceSeq??{},...s??{}}}),this.connected&&this.sendTranscriptSubscribe(t)}updateTranscriptSince(t,n,s){const o=this.transcriptSubscriptions.get(t);o&&(o.sinceSeq[n]=s)}unsubscribeTranscript(t,n){this.transcriptSubscriptions.delete(t),this.connected&&this.ws&&this.send(ok(t,this.nextId(),n))}transcriptSubscribedSessionIds(){return Array.from(this.transcriptSubscriptions.keys())}sendTranscriptSubscribe(t){const n=this.transcriptSubscriptions.get(t);n&&this.send(sk({sessionId:t,grades:n.grades,sinceSeq:n.sinceSeq},this.nextId()))}abort(t,n){!this.connected||!this.ws||this.send({type:"abort",id:this.nextId(),payload:{session_id:t,prompt_id:n}})}terminalAttach(t,n,s){const o=ki(t,n),i=this.terminalAttachments.get(o),u=s??i?.lastSeq??0;this.terminalAttachments.set(o,{sessionId:t,terminalId:n,lastSeq:u}),!(!this.connected||!this.ws)&&this.sendTerminalAttach(t,n,u)}terminalInput(t,n,s){!this.connected||!this.ws||this.send({type:"terminal_input",id:this.nextId(),payload:{session_id:t,terminal_id:n,data:s}})}terminalResize(t,n,s,o){!this.connected||!this.ws||this.send({type:"terminal_resize",id:this.nextId(),payload:{session_id:t,terminal_id:n,cols:s,rows:o}})}terminalDetach(t,n){this.terminalAttachments.delete(ki(t,n)),!(!this.connected||!this.ws)&&this.send({type:"terminal_detach",id:this.nextId(),payload:{session_id:t,terminal_id:n}})}terminalClose(t,n){this.terminalAttachments.delete(ki(t,n)),!(!this.connected||!this.ws)&&this.send({type:"terminal_close",id:this.nextId(),payload:{session_id:t,terminal_id:n}})}close(){this.closed=!0,this.connected=!1,this.reconnectTimer!==null&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.ws&&(this.ws.close(1e3),this.ws=null)}health(){const t=this.ws!==null&&this.ws.readyState===WebSocket.OPEN,n=Math.max(this.heartbeatMs*2,$k),s=this.lastActivityAt>0&&Date.now()-this.lastActivityAt>n;return{connected:this.connected,open:t,stale:s}}reconnect(){if(this.closed)return;this.reconnectTimer!==null&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null);const t=this.ws;if(t!==null){t.onopen=null,t.onmessage=null,t.onerror=null,t.onclose=null;try{t.close(1e3,"reconnect")}catch{}}const n=this.connected;this.ws=null,this.connected=!1,n&&this.handlers.onConnectionState(!1),this.connect()}handleFrame(t){const n=t;switch(t.type){case"server_hello":{const s=n.payload?.heartbeat_ms;typeof s=="number"&&s>0&&(this.heartbeatMs=s),this.onServerHello();break}case"ping":this.send({type:"pong",payload:{nonce:n.payload.nonce}});break;case"resync_required":{const s=n.payload.session_id,o=n.payload.epoch;this.subscriptions.set(s,{seq:n.payload.current_seq,epoch:o}),this.handlers.onResync(s,n.payload.current_seq,o);break}case"transcript.ops":{const s=n.session_id;typeof s=="string"&&this.handlers.onTranscriptOps?.(n.payload,s);break}case"transcript.reset":{const s=n.session_id;typeof s=="string"&&this.handlers.onTranscriptReset?.(n.payload,s);break}case"error":{const s=n.session_id;typeof s=="string"&&this.handlers.onRawAgentEvent?this.handlers.onRawAgentEvent({type:"error",seq:n.seq,session_id:s,timestamp:n.timestamp,payload:n.payload}):this.handlers.onError(n.payload.code,n.payload.msg,n.payload.fatal);break}case"ack":break;case"terminal_output":{const s=n.session_id,o=n.terminal_id,i=n.seq,u=ki(s,o),p=this.terminalAttachments.get(u);p&&this.terminalAttachments.set(u,{...p,lastSeq:Math.max(p.lastSeq,i)});const f=typeof n.payload?.data=="string"?n.payload.data:"";this.handlers.onTerminalOutput?.(s,o,f,i);break}case"terminal_exit":{const s=n.session_id,o=n.terminal_id,i=n.payload?.exit_code,u=typeof i=="number"?i:null;this.handlers.onTerminalExit?.(s,o,u);break}default:{this.trackCursor(n);const s=n.type,o=Ry(s,n.payload);if(o.route==="protocol"){this.handlers.onWireEvent(n);break}if(o.route==="agent"){if(this.handlers.onRawAgentEvent&&typeof n.session_id=="string"){const i=n,u=n;this.handlers.onRawAgentEvent({type:o.agentType,seq:i.seq,session_id:i.session_id,timestamp:i.timestamp,payload:i.payload,...u.volatile!==void 0?{volatile:u.volatile}:{},...u.offset!==void 0?{offset:u.offset}:{}})}break}break}}}onServerHello(){this.connected=!0,this.reconnectAttempts=0,this.handlers.onConnectionState(!0);const t=Array.from(this.subscriptions.keys());for(const s of this.pendingSubscriptions)this.subscriptions.set(s.sessionId,s.cursor),t.includes(s.sessionId)||t.push(s.sessionId);this.pendingSubscriptions.length=0;const n={};for(const[s,o]of this.subscriptions.entries())n[s]=o;this.send({type:"client_hello",id:this.nextId(),payload:{client_id:this.clientId,subscriptions:t,cursors:n}});for(const s of this.terminalAttachments.values())this.sendTerminalAttach(s.sessionId,s.terminalId,s.lastSeq);for(const s of this.transcriptSubscriptions.keys())this.sendTranscriptSubscribe(s)}sendSubscribe(t,n){this.send({type:"subscribe",id:this.nextId(),payload:{session_ids:t,cursors:n}})}sendTerminalAttach(t,n,s){this.send({type:"terminal_attach",id:this.nextId(),payload:{session_id:t,terminal_id:n,since_seq:s>0?s:void 0}})}trackCursor(t){if(t.volatile===!0)return;const n=t.session_id,s=t.seq;if(typeof n!="string"||typeof s!="number")return;const o=this.subscriptions.get(n);if(!o||s<=o.seq&&o.epoch!==void 0)return;const i=typeof t.epoch=="string"?t.epoch:o.epoch;this.subscriptions.set(n,{seq:Math.max(s,o.seq),epoch:i})}send(t){if(!(!this.ws||this.ws.readyState!==WebSocket.OPEN))try{this.ws.send(JSON.stringify(t)),A0(t)}catch{}}nextId(){return`c_${++this.msgSeq}`}}function ki(e,t){return`${e}\0${t}`}function xk(e,t){if(e===void 0)return t;let n;const s=/filename\*\s*=\s*UTF-8''([^;]+)/i.exec(e)?.[1]?.trim();if(s!==void 0)try{n=decodeURIComponent(s.replaceAll(/^"|"$/g,""))}catch{return t}else n=/filename\s*=\s*"([^"]*)"/i.exec(e)?.[1]??/filename\s*=\s*([^;]+)/i.exec(e)?.[1]?.trim();return n===void 0||n.length===0||n.length>200||n==="."||n===".."||/[\u0000-\u001F\u007F/\\]/.test(n)||!n.toLowerCase().endsWith(".zip")?t:n}function fr(e){if(typeof e!="object"||e===null)return{errorName:typeof e};const t=e;return{errorName:typeof t.name=="string"?t.name:"Error",errorCode:typeof t.code=="number"?t.code:void 0,requestId:typeof t.requestId=="string"?t.requestId:void 0,phase:typeof t.phase=="string"?t.phase:void 0,httpStatus:typeof t.status=="number"?t.status:void 0}}const Ik=40924,Ak=40925,Tk=600,Pk=2*6e4;function Ek(e){return new Promise(t=>setTimeout(t,e))}function pa(e){return{id:e.id,sessionId:e.session_id,cwd:e.cwd,shell:e.shell,cols:e.cols,rows:e.rows,status:e.status,createdAt:e.created_at,exitedAt:e.exited_at,exitCode:e.exit_code}}function mr(e){return e==="auto_compact"||e==="manual_compact"}class Lk{http;config;constructor(t){this.config=t,this.http=new Zy(t.serverHttpUrl,{clientId:t.clientId,clientName:t.clientName,clientVersion:t.clientVersion,clientUiMode:t.clientUiMode})}async getHealth(){return{status:"ok",uptimeSec:(await this.http.get("/healthz")).uptime_sec??0}}async getMeta(){const t=await this.http.get("/meta");return{serverVersion:t.server_version,serverId:t.server_id,startedAt:t.started_at,capabilities:t.capabilities,openInApps:Array.isArray(t.open_in_apps)?t.open_in_apps:[],dangerousBypassAuth:t.dangerous_bypass_auth===!0,backend:t.backend==="v2"?"v2":"v1"}}async listSessions(t){const n={before_id:t?.beforeId,after_id:t?.afterId,page_size:t?.pageSize,busy:t?.busy,include_archive:t?.includeArchive,archived_only:t?.archivedOnly,exclude_empty:t?.excludeEmpty,workspace_id:t?.workspaceId},s=await this.http.get("/sessions",n);return{items:s.items.map(Zn),hasMore:s.has_more}}async createSession(t){const n={metadata:t.cwd!==void 0?{cwd:t.cwd}:{}};t.workspaceId!==void 0&&(n.workspace_id=t.workspaceId),t.title!==void 0&&(n.title=t.title),t.model!==void 0&&(n.agent_config={model:t.model});const s=await this.http.post("/sessions",n);return Zn(s)}async getSession(t){const n=await this.http.get(`/sessions/${encodeURIComponent(t)}`);return Zn(n)}async updateSession(t,n){const s={};n.title!==void 0&&(s.title=n.title),n.cwd!==void 0&&(s.metadata={cwd:n.cwd});const o={};n.model!==void 0&&(o.model=n.model),n.permissionMode!==void 0&&(o.permission_mode=n.permissionMode),n.planMode!==void 0&&(o.plan_mode=n.planMode),n.swarmMode!==void 0&&(o.swarm_mode=n.swarmMode),n.supermoonMode!==void 0&&(o.supermoon_mode=n.supermoonMode),n.goalObjective!==void 0&&(o.goal_objective=n.goalObjective),n.goalControl!==void 0&&(o.goal_control=n.goalControl),n.thinking!==void 0&&(o.thinking=n.thinking),Object.keys(o).length>0&&(s.agent_config=o);const i=await this.http.post(`/sessions/${encodeURIComponent(t)}/profile`,s);return Zn(i)}async getSessionStatus(t){const n=await this.http.get(`/sessions/${encodeURIComponent(t)}/status`);return{model:n.model&&n.model.length>0?n.model:null,thinkingEffort:n.thinking_level,permission:n.permission,planMode:n.plan_mode===!0,swarmMode:n.swarm_mode===!0,supermoonMode:n.supermoon_mode===!0,contextTokens:n.context_tokens??0,maxContextTokens:n.max_context_tokens??0,contextUsage:n.context_usage??0}}async getSessionGoal(t){const n=await this.http.get(`/sessions/${encodeURIComponent(t)}/goal`);return Uu(n)}async getSessionWarnings(t){return(await this.http.get(`/sessions/${encodeURIComponent(t)}/warnings`)).warnings??[]}async archiveSession(t){return await this.http.post(`/sessions/${encodeURIComponent(t)}:archive`,{})}async restoreSession(t){const n=await this.http.post(`/sessions/${encodeURIComponent(t)}:restore`,{});return Zn(n)}async generateSessionTitle(t,n){try{const s={};n?.force===!0&&(s.force=!0),n?.source!==void 0&&(s.source=n.source);const o=await this.http.post(`/sessions/${encodeURIComponent(t)}/title/generate`,s);return typeof o?.title=="string"&&o.title.length>0?o.title:null}catch{return null}}async listMessages(t,n){const s={before_id:n?.beforeId,after_id:n?.afterId,page_size:n?.pageSize,role:n?.role},o=await this.http.get(`/sessions/${encodeURIComponent(t)}/messages`,s);return{items:o.items.map(Ea),hasMore:o.has_more}}async getSessionSnapshot(t){const n=Date.now();Yt("session:snapshot:start",{sessionId:t});try{const s=await this.http.get(`/sessions/${encodeURIComponent(t)}/snapshot`),o={asOfSeq:s.as_of_seq,epoch:s.epoch,session:Zn(s.session),messages:s.messages.items.map(Ea),hasMoreMessages:s.messages.has_more,inFlightTurn:s.in_flight_turn===null?null:{turnId:s.in_flight_turn.turn_id,assistantText:s.in_flight_turn.assistant_text,thinkingText:s.in_flight_turn.thinking_text,runningTools:s.in_flight_turn.running_tools.map(i=>({toolCallId:i.tool_call_id,name:i.name,args:i.args,description:i.description,lastProgress:i.last_progress})),promptId:s.in_flight_turn.current_prompt_id},pendingApprovals:s.pending_approvals.map(Wu),pendingQuestions:s.pending_questions.map(Hu),subagents:(s.subagents??[]).map(_i)};return Yt("session:snapshot:accepted",{sessionId:t,busy:o.session.busy,seq:o.asOfSeq,messageCount:o.messages.length,durationMs:Date.now()-n}),o}catch(s){throw Yt("session:snapshot:failed",{sessionId:t,status:"failed",durationMs:Date.now()-n,...fr(s)}),s}}async exportSession(t,n){const s=n===void 0?0:new TextEncoder().encode(n).byteLength,o=n===void 0||n.length===0?0:n.split(`
+`).length,i=await this.http.postZip(`/sessions/${encodeURIComponent(t)}/export`,{web_log:n},{web_log_bytes:s,web_log_entries:o}),u=`${t}.zip`;return{blob:i.blob,fileName:xk(i.contentDisposition,u)}}async submitPrompt(t,n){const s=Date.now();Yt("prompt:start",{sessionId:t,contentCount:n.content.length,mediaCount:n.content.filter(o=>o.type==="image"||o.type==="video"||o.type==="file").length});try{const o=await this.http.post(`/sessions/${encodeURIComponent(t)}/prompts`,oy(n));return Yt("prompt:accepted",{sessionId:t,promptId:o.prompt_id,status:o.status,durationMs:Date.now()-s}),{promptId:o.prompt_id,userMessageId:o.user_message_id,status:o.status}}catch(o){throw Yt("prompt:failed",{sessionId:t,status:"failed",durationMs:Date.now()-s,...fr(o)}),o}}async steerPrompts(t,n){const s=await this.http.post(`/sessions/${encodeURIComponent(t)}/prompts:steer`,{prompt_ids:n});return{steered:s.steered,promptIds:s.prompt_ids}}async abortPrompt(t,n){const s=await this.http.post(`/sessions/${encodeURIComponent(t)}/prompts/${encodeURIComponent(n)}:abort`,void 0,{allowCodes:[40903]});return{aborted:s.aborted,atSeq:s.at_seq}}async abortSession(t){return{aborted:(await this.http.post(`/sessions/${encodeURIComponent(t)}:abort`,{})).aborted}}async compactSession(t,n){await this.http.post(`/sessions/${encodeURIComponent(t)}:compact`,n?{instruction:n}:{})}async undoSession(t,n=1){await this.http.post(`/sessions/${encodeURIComponent(t)}:undo`,{count:n})}async forkSession(t,n){const s={};n?.title!==void 0&&(s.title=n.title);const o=await this.http.post(`/sessions/${encodeURIComponent(t)}:fork`,s,{timeoutMs:Ky});return Zn(o)}async createChildSession(t,n){const s={};n?.title!==void 0&&(s.title=n.title);const o=await this.http.post(`/sessions/${encodeURIComponent(t)}/children`,s);return Zn(o)}async listChildSessions(t){return(await this.http.get(`/sessions/${encodeURIComponent(t)}/children`)).items.map(Zn)}async startBtw(t){return{agentId:(await this.http.post(`/sessions/${encodeURIComponent(t)}:btw`,{})).agent_id}}async respondApproval(t,n,s){const o=await this.http.post(`/sessions/${encodeURIComponent(t)}/approvals/${encodeURIComponent(n)}`,iy(s));return{resolved:o.resolved,resolvedAt:o.resolved_at}}async respondQuestion(t,n,s){const o=await this.http.post(`/sessions/${encodeURIComponent(t)}/questions/${encodeURIComponent(n)}`,uy(s));return{resolved:o.resolved,resolvedAt:o.resolved_at}}async dismissQuestion(t,n){return{dismissed:!0,dismissedAt:(await this.http.post(`/sessions/${encodeURIComponent(t)}/questions/${encodeURIComponent(n)}:dismiss`,void 0,{allowCodes:[40909]})).dismissed_at}}async listTasks(t,n){const s={status:n};return(await this.http.get(`/sessions/${encodeURIComponent(t)}/tasks`,s)).items.map(_i)}async getTask(t,n,s){const o={with_output:s?.withOutput,output_bytes:s?.outputBytes},i=await this.http.get(`/sessions/${encodeURIComponent(t)}/tasks/${encodeURIComponent(n)}`,o);return _i(i)}async cancelTask(t,n){return await this.http.post(`/sessions/${encodeURIComponent(t)}/tasks/${encodeURIComponent(n)}:cancel`)}async listTerminals(t){return(await this.http.get(`/sessions/${encodeURIComponent(t)}/terminals`)).items.map(pa)}async createTerminal(t,n={}){const s={cwd:n.cwd,shell:n.shell,cols:n.cols,rows:n.rows},o=await this.http.post(`/sessions/${encodeURIComponent(t)}/terminals`,s);return pa(o)}async getTerminal(t,n){const s=await this.http.get(`/sessions/${encodeURIComponent(t)}/terminals/${encodeURIComponent(n)}`);return pa(s)}async closeTerminal(t,n){return this.http.post(`/sessions/${encodeURIComponent(t)}/terminals/${encodeURIComponent(n)}:close`)}async listSkills(t){return((await this.http.get(`/sessions/${encodeURIComponent(t)}/skills`)).skills??[]).map(s=>({name:s.name,description:s.description,source:s.source}))}async listSkillsForWorkspace(t){return((await this.http.get(`/workspaces/${encodeURIComponent(t)}/skills`)).skills??[]).map(s=>({name:s.name,description:s.description,source:s.source}))}async activateSkill(t,n,s,o){const i=nk(o),u=await this.http.post(`/sessions/${encodeURIComponent(t)}/skills/${encodeURIComponent(n)}:activate`,{...s!==void 0&&s.length>0?{args:s}:{},...i!==void 0?{attachments:i}:{}});return{activated:u.activated,skillName:u.skill_name}}async listPlugins(){return((await this.http.get("/plugins")).plugins??[]).map(Jl)}async listPluginMarketplace(){return((await this.http.get("/plugins/marketplace")).entries??[]).map(my)}async installPlugin(t){const n=await this.http.post("/plugins",{source:t});return Jl(n)}async setPluginEnabled(t,n){await this.http.post(`/plugins/${encodeURIComponent(t)}:${n?"enable":"disable"}`,{})}async removePlugin(t){await this.http.post(`/plugins/${encodeURIComponent(t)}:remove`,{})}async listCapabilities(){return((await this.http.get("/capabilities")).capabilities??[]).map(er)}async getCapability(t){const n=await this.http.get(`/capabilities/${encodeURIComponent(t)}`);return er(n)}async installCapability(t,n){await this.http.post(`/capabilities/${encodeURIComponent(t)}:install`,{},{allowCodes:[Ik]});const s=Date.now()+Pk;let o=await this.getCapability(t);for(n?.(o);o.install.running&&Date.now()[u,p.map(Xl)])):void 0;return{items:o.items.map(Xl),childrenByPath:i,truncated:o.truncated}}async readFile(t,n){const s={path:n.path};n.offset!==void 0&&(s.offset=n.offset),n.length!==void 0&&(s.length=n.length);const o=await this.http.post(`/sessions/${encodeURIComponent(t)}/fs:read`,s);return{path:o.path,content:o.content,encoding:o.encoding,size:o.size,truncated:o.truncated,etag:o.etag,mime:o.mime,languageId:o.language_id,lineCount:o.line_count,isBinary:o.is_binary}}async searchFiles(t,n){const s={workspace:t,query:n.query};n.limit!==void 0&&(s.limit=n.limit);const o=await this.http.post("/workspace/fs:search",s);return{items:o.items.map(i=>({path:i.path,name:i.name,kind:i.kind,score:i.score,matchPositions:i.match_positions})),truncated:o.truncated}}async grepFiles(t,n){const s={pattern:n.pattern};n.regex!==void 0&&(s.regex=n.regex),n.caseSensitive!==void 0&&(s.case_sensitive=n.caseSensitive);const o=await this.http.post(`/sessions/${encodeURIComponent(t)}/fs:grep`,s);return{files:o.files,filesScanned:o.files_scanned,truncated:o.truncated,elapsedMs:o.elapsed_ms}}async getGitStatus(t,n){const s={};n!==void 0&&(s.paths=n);const o=await this.http.post(`/sessions/${encodeURIComponent(t)}/fs:git_status`,s);return{branch:o.branch,ahead:o.ahead,behind:o.behind,entries:o.entries,additions:o.additions,deletions:o.deletions,pullRequest:o.pullRequest??null}}async getFileDiff(t,n){const s=await this.http.post(`/sessions/${encodeURIComponent(t)}/fs:diff`,{path:n});return{path:s.path,diff:s.diff}}getFileDownloadUrl(t,n){const s=n.split("/").map(o=>encodeURIComponent(o)).join("/");return oo(this.config.serverHttpUrl,`/sessions/${encodeURIComponent(t)}/fs/${s}:download`)}async openFile(t,n){const s={path:n.path};return n.line!==void 0&&(s.line=n.line),this.http.post(`/sessions/${encodeURIComponent(t)}/fs:open`,s)}async revealFile(t,n){return this.http.post(`/sessions/${encodeURIComponent(t)}/fs:reveal`,{path:n.path})}async openInApp(t,n,s,o){const i={app_id:n,path:s};o!==void 0&&(i.line=o),await this.http.post(`/sessions/${encodeURIComponent(t)}/fs:open-in`,i)}async listWorkspaces(){try{return((await this.http.get("/workspaces")).items??[]).map(Go)}catch{return[]}}async addWorkspace(t){const n={root:t.root};t.name!==void 0&&(n.name=t.name);const s=await this.http.post("/workspaces",n);return Go(s)}async deleteWorkspace(t){await this.http.delete(`/workspaces/${encodeURIComponent(t)}`)}async updateWorkspace(t,n){const s=await this.http.patch(`/workspaces/${encodeURIComponent(t)}`,{name:n.name});return Go(s)}async browseFs(t){try{const n=await this.http.get("/fs:browse",{path:t});return{path:n.path,parent:n.parent,entries:(n.entries??[]).map(s=>({name:s.name,path:s.path,isDir:s.is_dir}))}}catch{return{path:"",parent:null,entries:[]}}}async getFsHome(){try{const t=await this.http.get("/fs:home");return{home:t.home,recentRoots:t.recent_roots??[]}}catch{return{home:"",recentRoots:[]}}}async listModels(){return(await this.http.get("/models")).items.map(dy)}async listProviders(){return(await this.http.get("/providers")).items.map(vi)}async addProvider(t){const n={type:t.type};t.apiKey!==void 0&&(n.api_key=t.apiKey),t.baseUrl!==void 0&&(n.base_url=t.baseUrl),t.defaultModel!==void 0&&(n.default_model=t.defaultModel);const s=await this.http.post("/providers",n);return vi(s)}async deleteProvider(t){return this.http.delete(`/providers/${encodeURIComponent(t)}`)}async refreshProvider(t){const n=await this.http.post(`/providers/${encodeURIComponent(t)}:refresh`);return fa(n)}async refreshAllProviders(){const t=await this.http.post("/providers:refresh");return fa(t)}async refreshOAuthProviderModels(){const t=await this.http.post("/providers:refresh_oauth");return fa(t)}async browseCatalogProviders(t){return(await this.http.get("/catalog/providers",{query:t})).items.map(fy)}async importCatalogProvider(t){const n=await this.http.post("/providers:import_catalog",Xy(t));return{provider:vi(n.provider),modelsImported:n.models_imported}}async importRegistry(t){const n=await this.http.post("/providers:import_registry",Jy(t));return{providers:n.providers.map(vi),modelsImported:n.models_imported}}async getConfig(){const t=await this.http.get("/config");return La(t)}async setConfig(t){const n={},s={providers:"providers",defaultProvider:"default_provider",defaultModel:"default_model",models:"models",thinking:"thinking",planMode:"plan_mode",yolo:"yolo",defaultPermissionMode:"default_permission_mode",defaultPlanMode:"default_plan_mode",permission:"permission",hooks:"hooks",services:"services",mergeAllAvailableSkills:"merge_all_available_skills",extraSkillDirs:"extra_skill_dirs",loopControl:"loop_control",background:"background",experimental:"experimental",telemetry:"telemetry",raw:"raw"};for(const[i,u]of Object.entries(t)){const p=s[i];p!==void 0&&(n[p]=u)}const o=await this.http.post("/config",n);return La(o)}async getAuth(){const t=await this.http.get("/auth");return{ready:t.ready,providersCount:t.providers_count,defaultModel:t.default_model,managedProvider:t.managed_provider?{status:t.managed_provider.status}:null}}async startOAuthLogin(){const t=await this.http.post("/oauth/login",{});return t.status==="authenticated"?{flowId:t.flow_id,provider:t.provider,status:"authenticated"}:{flowId:t.flow_id,provider:t.provider,status:"pending",verificationUri:t.verification_uri,verificationUriComplete:t.verification_uri_complete,userCode:t.user_code,expiresIn:t.expires_in,interval:t.interval,expiresAt:t.expires_at}}async pollOAuthLogin(){const t=await this.http.get("/oauth/login");return t?{flowId:t.flow_id,status:t.status,resolvedAt:t.resolved_at}:null}async cancelOAuthLogin(){const t=await this.http.delete("/oauth/login");return{cancelled:t.cancelled,status:t.status}}async logout(){return{loggedOut:(await this.http.post("/oauth/logout",{})).logged_out}}async uploadFile(t){const n=new FormData;n.append("file",t.file,t.name??(t.file instanceof File?t.file.name:"upload")),t.name!==void 0&&n.append("name",t.name);const s=await this.http.postForm("/files",n);return{id:s.id,name:s.name,mediaType:s.media_type,size:s.size}}getFileUrl(t){return oo(this.config.serverHttpUrl,`/files/${encodeURIComponent(t)}`)}async getFileBlob(t){return this.http.getBlob(`/files/${encodeURIComponent(t)}`)}connectEvents(t){const n=tp(this.config.serverHttpUrl,this.config.clientId),s=Py();let o=!1;const i=new Map;function u(h){let m=i.get(h);return m||(m={projector:lk(h),watermarks:new ik,armed:!1},i.set(h,m)),m}function p(h,m){const _=u(h),y=[];for(const g of m)y.push(...vk([g],h)),y.push(..._.projector.project([g]));return y}const f=(h,m,_)=>{(async()=>{try{const y=await ak({baseUrl:this.config.serverHttpUrl,sessionId:h,agentId:m,sinceSeq:_.watermarks.get(h,m),token:si()});for(const g of y.batches){_.watermarks.set(h,m,g.seq);for(const k of p(h,g.ops))t.onEvent(k,{sessionId:h,seq:g.seq})}y.complete||(_.projector.reset(),t.onResync(h,0))}catch{_.projector.reset(),t.onResync(h,0)}})()};function v(h,m){const _=h;if(!_||typeof _.agent_id!="string"||!Array.isArray(_.ops))return;const y=_.agent_id,g=u(m);g.armed=!0;const k=typeof _.seq=="number"?_.seq:void 0;if(k!==void 0&&g.watermarks.advance(m,y,k)){f(m,y,g);return}for(const T of p(m,_.ops))t.onEvent(T,{sessionId:m,seq:k??0});k!==void 0&&(g.watermarks.set(m,y,k),x.updateTranscriptSince(m,y,k))}function w(h,m){const _=u(m);_.armed=!0,_.projector.reset(),_.watermarks.clear(m),t.onResync(m,0)}const x=new Mk(n,this.config.clientId,{onWireEvent:h=>{const m=hy(h),_=gy(h),y=cy(h);y.type==="historyCompacted"&&!mr(y.reason)&&t.onResync(y.sessionId,y.beforeSeq),t.onEvent(y,{sessionId:m,seq:_})},onRawAgentEvent:h=>{if(o&&i.get(h.session_id)?.armed===!0&&mk(h.type))return;const{type:m,seq:_,session_id:y,payload:g,offset:k}=h,T=s.project(m,g,y,{offset:k});for(const S of T){const O=g?.turnId,D=S.type==="assistantDelta"&&typeof O=="number"&&typeof k=="number"&&(m==="assistant.delta"||m==="thinking.delta")?{turnId:O,offset:k,kind:m==="assistant.delta"?"text":"thinking"}:void 0;S.type==="historyCompacted"&&!mr(S.reason)&&t.onResync(y,_),t.onEvent(S,{sessionId:y,seq:_,stream:D})}},onResync:(h,m,_)=>{s.reset(h),t.onResync(h,m,_)},onTranscriptOps:(h,m)=>{v(h,m)},onTranscriptReset:(h,m)=>{w(h,m)},onConnectionState:h=>{t.onConnectionChange(h)},onError:(h,m,_)=>{t.onError(h,m,_)},onTerminalOutput:(h,m,_,y)=>{t.onTerminalOutput?.(h,m,_,y)},onTerminalExit:(h,m,_)=>{t.onTerminalExit?.(h,m,_)}});return x.connect(),{subscribe(h,m){if(x.subscribe(h,m??{seq:0}),o){const _=u(h);x.subscribeTranscript(h,{main:"delta"},{main:_.watermarks.get(h,"main")})}},unsubscribe(h){x.unsubscribe(h),x.unsubscribeTranscript(h),s.disposeSession(h),i.delete(h)},setTranscriptMode(h){if(o!==h&&(o=h,!!h))for(const m of x.transcriptSubscribedSessionIds()){const _=u(m);x.subscribeTranscript(m,{main:"delta"},{main:_.watermarks.get(m,"main")})}},seedSnapshot(h,m){if(m.inFlightTurn===null){s.reset(h);return}const _=s.seedInFlight(h,m.inFlightTurn);for(const y of _)t.onEvent(y,{sessionId:h,seq:m.asOfSeq})},bindNextPromptId(h,m){s.bindNextPromptId(h,m)},abort(h,m){x.abort(h,m)},terminalAttach(h,m,_){x.terminalAttach(h,m,_)},terminalInput(h,m,_){x.terminalInput(h,m,_)},terminalResize(h,m,_,y){x.terminalResize(h,m,_,y)},terminalDetach(h,m){x.terminalDetach(h,m)},terminalClose(h,m){x.terminalClose(h,m)},markSideChannelAgent(h){s.markSideChannelAgent(h)},health(){return x.health()},reconnect(){x.reconnect()},close(){x.close()}}}}function fa(e){return{changed:e.changed.map(t=>({providerId:t.provider_id,providerName:t.provider_name,added:t.added,removed:t.removed})),unchanged:e.unchanged,failed:e.failed}}let vr;function Te(){return vr??=new Lk(Cu()),vr}function hr(e){if(typeof e!="object"||e===null)return!1;const t=e.name;return t==="TimeoutError"||t==="AbortError"}function Qu(e){return hr(e)?!0:typeof e!="object"||e===null?!1:hr(e.cause)}const za=new Set;function Bk(e){return za.add(e),()=>{za.delete(e)}}function Rk(e){for(const t of za)try{t(e)}catch(n){console.warn("pluginEvent listener failed",n)}}const Ok=3;function Dk(e){return e===void 0||!e.done&&e.attempts0?t[t.length-1]:e}const qk=/^(?:[A-Za-z]:[\\/]|\\\\|\/\/)/;function es(e){const t=e.replaceAll("\\","/"),n=qk.test(t),s=t.replace(/\/+$/,"");return n?s.toLowerCase():s}function Wk(e,t){const n=es(t.cwd);return e.find(s=>es(s.root)===n)?.id??t.workspaceId??t.cwd}function Hk(e){const{workspaces:t,sessions:n,hiddenWorkspaceRoots:s,sessionsHasMoreByWorkspace:o}=e,i=new Set(s.map(es)),u=new Map;for(const x of t){const h=es(x.root);i.has(h)||u.has(h)||u.set(h,{...x})}for(const x of n){const h=x.cwd;if(!h)continue;const m=es(h);i.has(m)||u.has(m)||u.set(m,{id:x.workspaceId??h,root:h,name:Nk(h),sessionCount:0})}const p=new Map;for(const x of n){const h=Wk(t,x);p.set(h,(p.get(h)??0)+1)}const f=[];for(const x of t){const h=es(x.root);!i.has(h)&&!f.includes(h)&&f.push(h)}const v=[...u.keys()].filter(x=>!f.includes(x));v.sort((x,h)=>u.get(x).root.localeCompare(u.get(h).root));const w=[];for(const x of[...f,...v]){const h=u.get(x),m=p.get(h.id)??p.get(h.root)??0,_=o[h.id]===!1?m:Math.max(h.sessionCount,m);w.push({...h,sessionCount:_})}return w}function cs(e,t){e.modeVersionBySession={...e.modeVersionBySession??{},[t]:(e.modeVersionBySession?.[t]??0)+1}}function Uk(e,t,n){return(e.modeVersionBySession?.[t]??0)===n}function Vk(e,t){if(t.length===0||e.length===0)return t;const n=Date.parse(t[0].createdAt);if(Number.isNaN(n))return t;const s=new Set(t.map(u=>u.id)),o=new Set(t.filter(u=>u.role==="user").map(u=>u.id)),i=e.filter(u=>{const p=Date.parse(u.createdAt);return!(Number.isNaN(p)||p>=n||s.has(u.id)||u.role==="user"&&u.promptId!==void 0&&o.has(u.promptId))});return i.length>0?[...i,...t]:t}function gr(e,t){const n=new Set(e.map(f=>f.id)),s=t.filter(f=>f.kind==="subagent"&&!n.has(f.id));if(s.length===0)return e;const o=new Map(e.map(f=>[f.id,f])),i=new Set,u=s.map(f=>{const v=f.backgroundTaskId!==void 0?o.get(f.backgroundTaskId):void 0;if(v===void 0)return f;i.add(v.id);const w=f.status==="running"&&v.status!=="running";return{...f,status:f.status==="running"?v.status:f.status,subagentPhase:w?v.status==="completed"?"completed":"failed":f.subagentPhase,completedAt:f.completedAt??v.completedAt,outputPreview:v.outputPreview??f.outputPreview,outputBytes:v.outputBytes??f.outputBytes}});return[...e.filter(f=>!i.has(f.id)),...u]}function jk(e,t){if(e.length===0)return t;const n=new Map(t.map(u=>[u.id,u])),s=new Set(e.map(u=>u.id)),o=e.map(u=>{const p=n.get(u.id);return p?{...u,outputLines:p.outputLines,text:p.text}:u}),i=t.filter(u=>!s.has(u.id));return i.length===0?o:[...o,...i]}function Kk(e){const t=new Map,n=new Set;function s(i){const u=t.get(i);if(u!==void 0)return u;const p=(async()=>e(i))().finally(()=>{t.delete(i),n.delete(i)&&s(i)});return t.set(i,p),p}function o(i){if(t.has(i)){n.add(i);return}s(i)}return{run:s,request:o}}const yr=2e3,kr=100,Yu=80,Zu=24;function br(e){return{...e,lines:[],history:[],attached:!1,pendingTail:"",lastSeq:0}}function Gk(e){return e.replace(/[\u001b\u009b][[\]()#;?]*(?:(?:(?:[a-zA-Z\d]*(?:;[-a-zA-Z\d/#&.:=?%@~_]*)*)?\u0007)|(?:(?:\d{1,4}(?:[;:]\d{0,4})*)?[\dA-PR-TZcf-nq-uy=><~]))/g,"")}function Qk(){const e=I(void 0),t=I([]),n=I({}),s=I(null),o=I(!1),i=I(null);let u=null;const p=$(()=>{const E=s.value;return E===null?null:n.value[E]??null}),f=$(()=>p.value?.lines.join(`
+`)??"");function v(E){const B=n.value[E];if(B!==void 0)return B;const q=t.value.find(b=>b.id===E),V=br(q??{id:E,sessionId:e.value??"",cwd:"",shell:"",cols:Yu,rows:Zu,status:"running",createdAt:""});return n.value[E]=V,V}function w(E){if(e.value===E)return;const B=e.value;if(B!==void 0&&u!==null)for(const q of Object.values(n.value))q.attached&&u.terminalDetach(B,q.id);e.value=E,t.value=[],n.value={},s.value=null,o.value=!1,i.value=null}function x(E){t.value=E;const B=new Set(E.map(q=>q.id));for(const[q,V]of Object.entries(n.value)){if(!B.has(q)){delete n.value[q];continue}const b=E.find(P=>P.id===q);b&&Object.assign(V,b)}s.value!==null&&!B.has(s.value)&&(s.value=E[0]?.id??null)}function h(E){const B=t.value.findIndex(V=>V.id===E.id);B===-1?t.value.push(E):t.value.splice(B,1,E);const q=n.value[E.id];q!==void 0?Object.assign(q,E):n.value[E.id]=br(E)}function m(E){n.value[E]?.attached&&e.value!==void 0&&u!==null&&u.terminalDetach(e.value,E),delete n.value[E];const q=t.value.findIndex(V=>V.id===E);if(q!==-1&&t.value.splice(q,1),s.value===E){const V=t.value[q]??t.value[t.value.length-1];s.value=V?.id??null}}function _(E){const B=v(E);if(B.attached)return;B.attached=!0;const q=e.value;q!==void 0&&u!==null&&u.terminalAttach(q,E,B.lastSeq)}function y(E){const B=n.value[E];if(B===void 0||!B.attached)return;B.attached=!1;const q=e.value;q!==void 0&&u!==null&&u.terminalDetach(q,E)}function g(E,B){const q=Gk(B).split(`
+`),V=q[0]??"";E.pendingTail+=V;for(let b=1;byr&&E.lines.splice(0,E.lines.length-yr)}function k(E,B,q,V){if(e.value===void 0||e.value!==E)return;const b=v(B);V<=b.lastSeq||(b.lastSeq=V,g(b,q))}function T(E,B,q){if(e.value===void 0||e.value!==E)return;const V=v(B);V.status!=="exited"&&(V.status="exited",V.exitCode=q)}function S(E,B){const q=B.trim();if(q.length===0)return"";const V=v(E);V.history.at(-1)!==q&&(V.history.push(q),V.history.length>kr&&V.history.splice(0,V.history.length-kr));const b=e.value;return b!==void 0&&u!==null&&V.status!=="exited"&&u.terminalInput(b,E,`${q}
+`),q}function O(E,B,q){const V=v(E);V.cols=B,V.rows=q;const b=e.value;b!==void 0&&u!==null&&u.terminalResize(b,E,B,q)}function D(E){u=E;const B=e.value;if(B!==void 0)for(const q of Object.values(n.value))q.attached&&E.terminalAttach(B,q.id,q.lastSeq)}return{sessionId:e,terminals:t,activeId:s,loading:o,error:i,active:p,activeLines:f,entryOf:v,setSession:w,setLoading:E=>{o.value=E},setError:E=>{i.value=E},syncTerminals:x,upsertTerminal:h,removeTerminal:m,setActive:E=>{s.value=E},attach:_,detach:y,handleOutput:k,handleExit:T,submitInput:S,resize:O,bindTransport:D}}const Yk=new Set(["assistantDelta","agentDelta","toolOutput","taskProgress"]);function Zk(e){return Yk.has(e.type)}const Xk=50,Jk=100,Fa=32*1024,e2={requestFrame(e){return typeof requestAnimationFrame=="function"?requestAnimationFrame(e):null},cancelFrame(e){typeof cancelAnimationFrame=="function"&&cancelAnimationFrame(e)},requestTask(e){return setTimeout(e,Xk)},cancelTask(e){clearTimeout(e)}};function t2(e,t,n={}){const s=n.scheduler??e2,o=Math.max(1,Math.floor(n.maxItemsPerSlice??Jk)),i=[];let u=0,p=null,f=null,v=0,w=!1;const x=()=>i.length-u,h=()=>{v+=1,p!==null&&(s.cancelFrame(p),p=null),f!==null&&(s.cancelTask(f),f=null)},m=()=>{u===i.length?(i.length=0,u=0):u>=1024&&(i.splice(0,u),u=0)};let _;const y=()=>{if(w||p!==null||f!==null||x()===0)return;const k=++v,T=()=>{k===v&&_()};p=s.requestFrame(T),f=s.requestTask(T)};_=()=>{h();let k=0;for(;!w&&k{if(!w){if(t(k)){const T=i.length>u?i.at(-1):void 0,S=T===void 0?void 0:n.coalesce?.(T,k);S===void 0?i.push(k):i[i.length-1]=S,y();return}if(x()===0){e(k);return}i.push(k),_()}});return g.flush=()=>{if(!w){for(h();!w&&u{if(w||x()===0)return;let T=u;for(let S=u;S{w||(w=!0,h(),i.length=0,u=0)},g}function Na(e){if(e.type==="assistantDelta"){if(e.delta.text!==void 0&&e.delta.thinking===void 0)return{kind:"text",value:e.delta.text};if(e.delta.thinking!==void 0&&e.delta.text===void 0)return{kind:"thinking",value:e.delta.thinking}}}function n2(e){if(e.appEvent.type!=="assistantDelta")return[e];const t=e.appEvent,n=e.meta.stream,s=Na(t);if(n===void 0||s===void 0||n.kind!==s.kind||s.value.length<=Fa)return[e];const o=[];let i=0;for(;ii&&/[\uD800-\uDBFF]/u.test(s.value[u-1])&&/[\uDC00-\uDFFF]/u.test(s.value[u])&&(u-=1);const p=s.value.slice(i,u);o.push({appEvent:{...t,delta:s.kind==="text"?{text:p}:{thinking:p}},meta:{...e.meta,stream:{...n,offset:n.offset+i}}}),i=u}return o}function s2(e,t){if(e.appEvent.type!=="assistantDelta"||t.appEvent.type!=="assistantDelta")return;const n=e.meta.stream,s=t.meta.stream,o=Na(e.appEvent),i=Na(t.appEvent);if(n===void 0||s===void 0||o===void 0||i===void 0||e.meta.sessionId!==t.meta.sessionId||e.appEvent.sessionId!==t.appEvent.sessionId||e.appEvent.messageId!==t.appEvent.messageId||e.appEvent.contentIndex!==t.appEvent.contentIndex||n.turnId!==s.turnId||n.kind!==s.kind||o.kind!==i.kind||n.kind!==o.kind||s.kind!==i.kind||s.offset!==n.offset+o.value.length||o.value.length+i.value.length>Fa)return;const u=o.value+i.value;return{appEvent:{...e.appEvent,delta:o.kind==="text"?{text:u}:{thinking:u}},meta:{...t.meta,stream:{...n}}}}const Xu=["blue","mono"],Ju=["light","dark","system"],ec=14,o2=12,i2=20;function a2(){const e=It(We.accent);return e&&Xu.includes(e)?e:"blue"}function l2(e){typeof document>"u"||!document.documentElement||(document.documentElement.dataset.accent=e)}function r2(){const e=It(We.colorScheme);return e&&Ju.includes(e)?e:"system"}function u2(e){if(typeof document>"u"||!document.documentElement)return;document.documentElement.dataset.colorScheme=e;const t=document.querySelectorAll('meta[name="theme-color"]');if(t.length===0)return;const n=e==="dark"?"#0d1117":e==="light"?"#ffffff":null;t.forEach(s=>{const i=(s.getAttribute("media")??"").includes("dark")?"#0d1117":"#ffffff";s.setAttribute("content",n??i)})}function cl(e){return Number.isFinite(e)?Math.min(i2,Math.max(o2,Math.round(e))):ec}function c2(){const e=It(We.uiFontSize);return e===null?ec:cl(Number(e))}function d2(e){typeof document>"u"||!document.documentElement||document.documentElement.style.setProperty("--base-ui-font-size",`${cl(e)}px`)}const dl=I(r2()),pl=I(a2()),fl=I(c2());Oe(dl,u2,{immediate:!0});Oe(pl,l2,{immediate:!0});Oe(fl,d2,{immediate:!0});function p2(e){Ju.includes(e)&&(dl.value=e,Bt(We.colorScheme,e))}function f2(e){Xu.includes(e)&&(pl.value=e,Bt(We.accent,e))}function m2(e){const t=cl(e);fl.value=t,Bt(We.uiFontSize,String(t))}const v2=600,h2=250,ji=250,g2=1e3,y2=160,Li=I(!1);let so=[],io=null,Bi=-ji;function k2(){so=[],Bi=-ji,Li.value=!1,io!==null&&(clearTimeout(io),io=null)}function b2(){Li.value=!0,io!==null&&clearTimeout(io),io=setTimeout(()=>{io=null,so=[],Bi=-ji,Li.value=!1},g2)}function w2(e){if(e<=0)return;const t=Date.now();so.push({time:t,chars:e});const n=t-v2;if(so=so.filter(p=>p.time>=n),t-Bip+f.chars,0)/o*1e3>=y2&&b2()}function tc(){return{colorScheme:dl,accent:pl,uiFontSize:fl,fastMoon:Li,setColorScheme:p2,setAccent:f2,setUiFontSize:m2,resetFastMoon:k2,recordMoonDelta:w2}}function S2(e,t,n){return e==="idle"&&!t&&!n}function ml(e,t){const n=It(e);return n===null?t:n==="1"}const vl=I(ml(We.notifyOnComplete,!0)),hl=I(ml(We.notifyOnQuestion,!1)),gl=I(ml(We.notifyOnApproval,!1)),yl=I(typeof Notification<"u"?Notification.permission:"denied"),C2="/favicon.ico";async function kl(e,t,n){if(!n){e.value=!1,Bt(t,"0");return}if(typeof Notification>"u")return;let s=Notification.permission;if(s==="default")try{s=await Notification.requestPermission()}catch{}yl.value=s,s==="granted"&&(e.value=!0,Bt(t,"1"))}function _2(e){return kl(vl,We.notifyOnComplete,e)}function $2(e){return kl(hl,We.notifyOnQuestion,e)}function M2(e){return kl(gl,We.notifyOnApproval,e)}function bl(...e){for(const t of e){const n=t?.trim();if(n)return n}return""}function x2(e){return{title:pt.global.t("settings.notifyTitle"),body:bl(e,pt.global.t("settings.notifyFallback"))}}function I2(e,t){return{title:pt.global.t("settings.notifyQuestionTitle"),body:bl(t,e,pt.global.t("settings.notifyQuestionFallback"))}}function A2(e,t){return{title:pt.global.t("settings.notifyApprovalTitle"),body:bl(t,e,pt.global.t("settings.notifyApprovalFallback"))}}function wl(e,t,n,s){if(!e||typeof Notification>"u")return;const o=Notification.permission;if(o!=="denied"){if(o==="default"){Notification.requestPermission().then(i=>{yl.value=i,i==="granted"&&wr(t,n,s)});return}wr(t,n,s)}}function wr(e,t,n){if(!e.isUserWatching)try{const s=new Notification(t.title,{body:t.body,tag:n,icon:C2});s.onclick=()=>{try{window.focus()}catch{}e.onClick(),s.close()}}catch{}}function T2(e,t){wl(vl.value,t,x2(t.sessionTitle),`kimi-complete-${e}-${t.promptId??Date.now()}`)}function P2(e){wl(hl.value,e,I2(e.sessionTitle,e.questionPreview),`kimi-question-${e.questionId}`)}function E2(e){wl(gl.value,e,A2(e.sessionTitle,e.toolName),`kimi-approval-${e.approvalId}`)}function L2(){return{notifyOnComplete:vl,notifyOnQuestion:hl,notifyOnApproval:gl,notifyPermission:yl,setNotifyOnComplete:_2,setNotifyOnQuestion:$2,setNotifyOnApproval:M2,maybeNotifyCompletion:T2,maybeNotifyQuestion:P2,maybeNotifyApproval:E2}}function B2(){return It(We.soundOnComplete)==="1"}const Oo=I(B2());function R2(){if(typeof window>"u")return;const e=window;return window.AudioContext??e.webkitAudioContext}let ma=null;function nc(){const e=R2();if(!e)return null;if(ma===null)try{ma=new e}catch{return null}return ma}function sc(){if(!Oo.value)return;const e=nc();e!==null&&e.state==="suspended"&&e.resume().then(()=>{As("sound: audio context resumed",{state:e.state})},t=>{As("sound: audio context resume rejected",{error:String(t)})})}let Sr=!1;function O2(){if(Sr||typeof window>"u")return;Sr=!0;const e=()=>{sc()};window.addEventListener("pointerdown",e,{capture:!0}),window.addEventListener("keydown",e,{capture:!0})}O2();function D2(e){Oo.value=e,Bt(We.soundOnComplete,e?"1":"0"),e&&sc()}function Cr(e,t,n,s,o){const i=e.createOscillator(),u=e.createGain();i.type="sine",i.frequency.value=t,i.connect(u),u.connect(e.destination);const p=e.currentTime+n;u.gain.setValueAtTime(1e-4,p),u.gain.exponentialRampToValueAtTime(o,p+.01),u.gain.exponentialRampToValueAtTime(1e-4,p+s),i.start(p),i.stop(p+s+.02)}function Sl(){const e=nc();if(e===null){As("sound: skipped, AudioContext unavailable");return}if(e.state!=="running"){As("sound: skipped, context not running",{state:e.state}),e.state==="suspended"&&e.resume().then(()=>{As("sound: context resumed for next time",{state:e.state})},t=>{As("sound: resume rejected",{error:String(t)})});return}try{Cr(e,880,0,.16,.18),Cr(e,1320,.1,.22,.16),As("sound: chime scheduled",{state:e.state})}catch(t){As("sound: failed to play",{error:String(t)})}}function z2(){Oo.value&&Sl()}function F2(){Oo.value&&Sl()}function N2(){Oo.value&&Sl()}function q2(){return{soundOnComplete:Oo,setSoundOnComplete:D2,maybePlayCompletionSound:z2,maybePlayQuestionSound:F2,maybePlayApprovalSound:N2}}const W2=1e3,H2=4096,_r=32*1024;function U2(e,t){let n=null,s;const o=new Set;async function i(h){try{const _=await Te().listTasks(h);e.tasksBySession={...e.tasksBySession,[h]:gr(_,e.tasksBySession[h]??[])},await u(h,_)}catch{}}async function u(h,m){if(e.activeSessionId!==h)return;const _=m??e.tasksBySession[h]??[],y=Te(),g=new Map;if(await Promise.all(_.map(async T=>{if((T.status==="completed"||T.status==="failed"||T.status==="cancelled")&&!o.has(T.id)&&!((T.outputLines?.length??0)>0))try{const O=await y.getTask(h,T.id,{withOutput:!0,outputBytes:_r});O.outputPreview!==void 0&&g.set(T.id,{preview:O.outputPreview,bytes:O.outputBytes}),o.add(T.id)}catch{}})),g.size===0)return;const k=e.tasksBySession[h]??[];e.tasksBySession={...e.tasksBySession,[h]:k.map(T=>{const S=g.get(T.id)??(T.backgroundTaskId!==void 0?g.get(T.backgroundTaskId):void 0);return S?{...T,outputPreview:S.preview,outputBytes:S.bytes}:T})}}async function p(h){if(e.activeSessionId!==h)return;const m=Te();let _;try{_=await m.listTasks(h)}catch{return}const y=new Map;await Promise.all(_.map(async S=>{const O=S.status==="running",D=S.status==="completed"||S.status==="failed"||S.status==="cancelled";if(!(!O&&!D)&&!(D&&(o.has(S.id)||(S.outputLines?.length??0)>0)))try{const E=await m.getTask(h,S.id,{withOutput:!0,outputBytes:O?H2:_r});E.outputPreview!==void 0&&y.set(S.id,{preview:E.outputPreview,bytes:E.outputBytes}),D&&o.add(S.id)}catch{}}));const g=e.tasksBySession[h]??[],k=new Map(g.map(S=>[S.id,S])),T=_.map(S=>{const O=k.get(S.id),D=y.get(S.id);return{...S,outputLines:O?.outputLines,text:O?.text,outputPreview:D?.preview??O?.outputPreview,outputBytes:D?.bytes??O?.outputBytes}});e.tasksBySession={...e.tasksBySession,[h]:gr(T,g)}}function f(h){n!==null&&s===h||(v(),s=h,p(h),n=setInterval(()=>{typeof document<"u"&&document.visibilityState==="hidden"||(e.activeSessionId===h?p(h):v())},W2))}function v(){n!==null&&(clearInterval(n),n=null),s=void 0,o.clear()}const w=I(0);let x=null;return Oe(()=>t.value.some(h=>h.status==="running"),h=>{h&&x===null?x=setInterval(()=>{w.value=(w.value+1)%Number.MAX_SAFE_INTEGER},1e3):!h&&x!==null&&(clearInterval(x),x=null)},{immediate:!0}),Oe(()=>{const h=e.activeSessionId;if(!h)return{sid:void 0,hasRunning:!1};const m=e.tasksBySession[h]??[];return{sid:h,hasRunning:m.some(_=>_.status==="running")}},({sid:h,hasRunning:m},_,y)=>{let g;m&&h!==void 0?f(h):h!==void 0?g=setTimeout(()=>{(e.tasksBySession[h]??[]).some(T=>T.status==="running")||v()},1500):v(),y(()=>{g!==void 0&&clearTimeout(g)})},{deep:!0,immediate:!0}),{taskClock:$(()=>w.value),loadTasksForSession:i}}function Ki(e){if(e===void 0)return"toggle";const t=e.capabilities??[];return t.includes("always_thinking")?"always-on":t.includes("thinking")||e.adaptiveThinking===!0?"toggle":"unsupported"}function oc(e){return e?.supportEfforts??[]}function V2(e){return e[Math.floor(e.length/2)]}function Zo(e){if(Ki(e)==="unsupported")return"off";const t=oc(e);return t.length>0?e?.defaultEffort??V2(t):"on"}function Gi(e){const t=oc(e),n=Ki(e);return t.length>0?n==="always-on"?[...t]:["off",...t]:n==="always-on"?["on"]:n==="unsupported"?["off"]:["on","off"]}function qa(e){return e.length===0?e:e.charAt(0).toUpperCase()+e.slice(1)}function j2(e){return e!=="off"}function K2(e,t){return Gi(e).includes(t)}function Cl(e,t){return t==="off"?"off":t==="on"?Zo(e):t}function Xo(e,t){return t??Zo(e)}function G2(e,t){if(e==="off")return{enabled:!1};if(e==="on")return{enabled:!0};const n=t?.at(-1);return n!==void 0&&e===n?{enabled:!0}:{enabled:!0,effort:e}}function Q2(e,t,n){return!n||e===void 0?t:Zo(e)}const fs=I(null),To=I(!1);function _l(e){const t=fs.value;!t||To.value||(fs.value=null,t.resolve(e))}async function Y2(){const e=fs.value;if(!(!e||To.value)){if(!e.action){_l(!0);return}To.value=!0;try{await e.action(),fs.value===e&&(fs.value=null),e.resolve(!0)}catch(t){fs.value===e&&(fs.value=null),e.reject(t)}finally{To.value=!1}}}function Z2(e){return To.value?Promise.resolve(!1):(fs.value&&_l(!1),new Promise((t,n)=>{fs.value={...e,resolve:t,reject:n}}))}function go(){return{current:fs,busy:To,confirm:Z2,settle:_l,runAction:Y2}}function X2(e){return e.startsWith("diff --git")||e.startsWith("index ")||e.startsWith("--- ")||e.startsWith("+++ ")||e.startsWith("new file mode")||e.startsWith("deleted file mode")||e.startsWith("old mode")||e.startsWith("new mode")||e.startsWith("similarity index")||e.startsWith("dissimilarity index")||e.startsWith("rename from")||e.startsWith("rename to")||e.startsWith("copy from")||e.startsWith("copy to")||e.startsWith("Binary files")}function J2(e){const t=[];if(!e)return t;let n=0,s=0,o=!1;for(const i of e.split(`
+`)){if(i.startsWith("diff --git")){o=!1;continue}if(!o&&X2(i))continue;if(i.startsWith("@@")){const f=/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/.exec(i);f&&(n=Number.parseInt(f[1],10),s=Number.parseInt(f[2],10)),o=!0,t.push({type:"hunk",text:i});continue}if(!o||i.startsWith("\\"))continue;const u=i.charAt(0),p=i.slice(1);u==="+"?(t.push({type:"add",text:p,newNo:s}),s+=1):u==="-"?(t.push({type:"del",text:p,oldNo:n}),n+=1):u===" "&&(t.push({type:"context",text:p,oldNo:n,newNo:s}),n+=1,s+=1)}return t}function ic(e){return e.planArmed||e.planMode}function eb(e){return{planMode:e.planMode||e.planArmed,planArmed:!1}}function tb(e){return{planMode:!1,planArmed:!1}}const Wa="/sessions/";function $r(e){const{pathname:t}=e;if(!t.startsWith(Wa))return;const n=t.slice(Wa.length);if(!(!n||n.includes("/")))try{const s=decodeURIComponent(n);return s.length>0?s:void 0}catch{return}}function nb(e){return e===void 0||e.length===0?"/":`${Wa}${encodeURIComponent(e)}`}const sb=50,Ha=5,ob=40402,ib=40410,ab=40902,lb=2e3;function va(e){return Mn(e)&&e.code===ab}const rb=40904;function ub(e){return Mn(e)&&e.code===rb}const cb=41301,db=413;function pb(e){return Mn(e)?e.code===cb||e.code===db:!1}const Zs=Bn({}),bi=Bn({}),ha=Bn({}),us=Bn(new Set),Qi=new Map,co=new Map,Ri=new Map;let fb=0;const Js=new Map,mb=3;let Mr=0;function vb(){return Mr+=1,`${Date.now().toString(36)}-${Mr}`}function hb(e){return{generation:Qi.get(e)??0,pending:(co.get(e)?.size??0)>0}}function Ua(e){const t=++fb;Qi.set(e,t);const n=co.get(e)??new Set;return n.add(t),co.set(e,n),t}function Va(e,t){const n=co.get(e);if(n===void 0||(n.delete(t),n.size>0))return;co.delete(e);const s=Ri.get(e);Ri.delete(e),s?.()}function gb(e){Qi.delete(e),co.delete(e),Ri.delete(e),Js.delete(e)}function yb(e,t){return!t.pending&&t.generation===(Qi.get(e)??0)}function kb(e,t){if((co.get(e)?.size??0)===0){t();return}Ri.set(e,t)}function bb(e,t){const{t:n}=pt.global,{confirm:s}=go(),{taskPoller:o,sideChat:i,modelProvider:u,pushOperationFailure:p,activity:f,sessionsKnownEmpty:v,setSessions:w,updateSession:x,upsertSessionFront:h,appendSession:m,forgetSession:_,setActiveSessionId:y,updateSessionMessages:g,nextOptimisticMsgId:k,getEventConn:T,syncSessionFromSnapshot:S,reopenSession:O,hasLoadedMessages:D,refreshSessionStatus:E,refreshSessionGoal:B,persistSessionProfile:q,mergedWorkspaces:V,workspacesView:b,status:P,workspaceIdForSession:L,savePermissionToStorage:ne,savePlanModeToStorage:oe,savePlanArmedToStorage:ge,saveSwarmModeToStorage:ce,saveSupermoonModeToStorage:Q,saveGoalModeToStorage:ie,draftModes:te,saveUnread:ye,saveActiveWorkspaceToStorage:_e,saveHiddenWorkspacesToStorage:Ce,goalErrorMessage:Z,resetFastMoon:U,initialized:ke,connectIssue:ae,selectedDiffPath:ee,fileDiffLines:de,fileDiffLoading:Be}=t;let Y=!1;async function ve(C){if(e.messagesLoadingMoreBySession[C])return;const z=e.messagesBySession[C];if(!z||z.length===0)return;const W=z[0].id;e.messagesLoadingMoreBySession={...e.messagesLoadingMoreBySession,[C]:!0},e.messagesLoadMoreErrorBySession={...e.messagesLoadMoreErrorBySession,[C]:!1};try{const ue=await Te().listMessages(C,{beforeId:W,pageSize:sb}),be=[...ue.items].reverse();g(C,$e=>[...be,...$e]),e.messagesHasMoreBySession={...e.messagesHasMoreBySession,[C]:ue.hasMore}}catch(ue){e.messagesLoadMoreErrorBySession={...e.messagesLoadMoreErrorBySession,[C]:!0},p("loadOlderMessages",ue,{sessionId:C})}finally{e.messagesLoadingMoreBySession={...e.messagesLoadingMoreBySession,[C]:!1}}}function R(C){o.loadTasksForSession(C),He(C),E(C),B(C),Object.prototype.hasOwnProperty.call(u.skillsBySession.value,C)||u.loadSkillsForSession(C)}async function X(C){const z=e.activeSessionId;if(z){ee.value=C,de.value=[],Be.value=!0;try{const ue=await Te().getFileDiff(z,C);if(ee.value!==C)return;de.value=J2(ue.diff)}catch(W){ee.value===C&&(de.value=[]),console.warn("[loadFileDiff] diff unavailable for",C,W)}finally{ee.value===C&&(Be.value=!1)}}}function me(){ee.value=null,de.value=[],Be.value=!1}async function He(C){try{const W=await Te().getGitStatus(C);e.gitStatusBySession={...e.gitStatusBySession,[C]:W}}catch{}}async function De(){try{const z=await Te().getAuth();return e.authReady=z.ready,e.defaultModel=z.defaultModel,e.managedProviderStatus=z.managedProvider?.status??null,ae.value=null,"proceed"}catch(C){return Mn(C)&&(C.code===401||C.code===Ku)?(ae.value=null,"server-auth-required"):(ae.value=(C instanceof Error?C.message:String(C)).slice(0,140),"retry")}}async function an(){let C=!0;for(;;){const z=await De();if(z!=="retry")return z;C&&(ae.value=null,C=!1),await new Promise(W=>{setTimeout(W,lb)})}}async function Fe(){try{const C=Te();e.config=await C.getConfig()}catch{}}async function Ze(C){try{const W=await Te().setConfig(C);return e.config=W,e.defaultModel=W.defaultModel??null,!0}catch(z){return p("setConfig",z),!1}}const Ve=100,At=30,bt=720*60*1e3;async function Ct(){const C=Te(),z=[];let W,ue;for(;;){let be;try{be=await C.listSessions({pageSize:Ve,beforeId:W,excludeEmpty:!0})}catch($e){if(z.length===0)throw $e;ue=$e;break}if(z.push(...be.items),!be.hasMore||be.items.length===0)break;W=be.items[be.items.length-1].id}return{sessions:z,error:ue}}function dn(C){const z=new Map(e.sessions.map(W=>[W.id,W.usage]));w(C.map(W=>{const ue=z.get(W.id);return ue!==void 0&&Pa(W.usage)&&!Pa(ue)?{...W,usage:ue}:W}))}function Kt(C){const z=[...C],W=new Set(z.map(ue=>ue.id));for(const ue of e.sessions)W.has(ue.id)||(z.push(ue),W.add(ue.id));return z.sort((ue,be)=>new Date(be.updatedAt).getTime()-new Date(ue.updatedAt).getTime()),z}async function zt(C){const z=Te(),W=[],ue=Date.now(),be=et=>ue-new Date(et.updatedAt).getTime();let $e,Ye=!1,it=!0,mt;for(;;){let et;try{et=await z.listSessions({workspaceId:C,pageSize:Ha,beforeId:$e,excludeEmpty:!0})}catch(Qe){if(it)throw Qe;mt=Qe,Ye=!0;break}if(Ye=et.hasMore,et.items.length===0)break;const Mt=et.items[et.items.length-1],Sn=be(Mt)>=bt;if(!it&&Sn){const Qe=et.items.findIndex(jt=>be(jt)>=bt),Xe=Qe>=0?Qe+1:et.items.length;W.push(...et.items.slice(0,Xe)),Ye=et.hasMore||Xezt(Qe.id))),W=[],ue=new Set,be=new Map,$e=new Set;let Ye;for(let Qe=0;Qe$e.has(Qe.id)).map(Qe=>Qe.root)),mt=new Set(C.map(Qe=>Qe.id));for(const Qe of e.sessions)!(Qe.workspaceId!==void 0&&mt.has(Qe.workspaceId)?$e.has(Qe.workspaceId):it.has(Qe.cwd)||$e.has(L(Qe)))||ue.has(Qe.id)||(W.push(Qe),ue.add(Qe.id));const et={},Mt={},Sn={};for(const{id:Qe}of C){const Xe=be.get(Qe);if(Xe===void 0){const jt=e.sessionsHasMoreByWorkspace[Qe],St=e.sessionsCursorByWorkspace[Qe],ln=e.sessionsInitialCountByWorkspace[Qe];jt!==void 0&&(et[Qe]=jt),St!==void 0&&(Mt[Qe]=St),ln!==void 0&&(Sn[Qe]=ln);continue}et[Qe]=Xe.hasMore,Mt[Qe]=Xe.items.length>0?Xe.items[Xe.items.length-1].id:void 0,Sn[Qe]=Math.max(Xe.items.length,Ha)}return e.sessionsHasMoreByWorkspace=et,e.sessionsCursorByWorkspace=Mt,e.sessionsInitialCountByWorkspace=Sn,e.sessionsFullyLoaded=!1,W.sort((Qe,Xe)=>new Date(Xe.updatedAt).getTime()-new Date(Qe.updatedAt).getTime()),$e.size>0&&p("load",Ye),W}async function nn(C){if(e.sessionsLoadingMoreByWorkspace[C]||e.sessionsHasMoreByWorkspace[C]===!1)return;const z=e.sessionsCursorByWorkspace[C];if(z!==void 0){e.sessionsLoadingMoreByWorkspace={...e.sessionsLoadingMoreByWorkspace,[C]:!0};try{const W=await Te().listSessions({workspaceId:C,pageSize:At,beforeId:z,excludeEmpty:!0}),ue=new Set(e.sessions.map($e=>$e.id)),be=W.items.filter($e=>!ue.has($e.id));be.length>0&&w([...e.sessions,...be]),e.sessionsCursorByWorkspace={...e.sessionsCursorByWorkspace,[C]:W.items.length>0?W.items[W.items.length-1].id:z},e.sessionsHasMoreByWorkspace={...e.sessionsHasMoreByWorkspace,[C]:W.hasMore}}catch(W){p("loadMoreSessions",W)}finally{e.sessionsLoadingMoreByWorkspace={...e.sessionsLoadingMoreByWorkspace,[C]:!1}}}}async function ut(){if(e.sessionsFullyLoaded)return;const C=await Ct().catch(ue=>(console.warn("[kimi-web] loadAllSessions failed; search covers only loaded sessions",ue),null));if(C===null)return;const z=C.error===void 0?C.sessions:Kt(C.sessions);if(dn(z),e.sessionsFullyLoaded=C.error===void 0,C.error!==void 0)return;const W={};for(const ue of e.workspaces)W[ue.id]=!1;e.sessionsHasMoreByWorkspace=W}async function Ft(){const C=await Te().getMeta().catch(()=>null);C!==null&&(e.serverVersion=C.serverVersion,e.availableOpenInApps=C.openInApps,e.dangerousBypassAuth=C.dangerousBypassAuth,e.backend=C.backend)}async function In(){const C=Date.now();let z="accepted";Yt("app:load:start"),e.loading=!0;const W=!ke.value;let ue=!0;try{if(W&&await an()==="server-auth-required"){ue=!1,z="auth-required";return}const be=Te();await Promise.all([be.getHealth().catch(()=>null),Ft(),u.loadModels()]),W||await De(),await Fe(),await _t();const $e=await hs(),Ye=$e??e.sessions;$e!==void 0&&dn($e);const it=Ye[0],mt=e.activeWorkspaceId;!(mt!==null&&V.value.some(Sn=>Sn.id===mt))&&it&&Nt(L(it)),Wt();const Mt=typeof window<"u"?$r(window.location):void 0;!e.activeSessionId&&Mt!==void 0&&(e.sessions.some(Qe=>Qe.id===Mt)||await sn(Mt))&&await ct(Mt,{urlMode:"replace"}),!e.activeSessionId&&Ye.length>0&&await ct(Ye[0].id,{urlMode:"replace"})}catch(be){z="failed",p("load",be)}finally{e.loading=!1,ue&&(ke.value=!0),Yt("app:load:complete",{status:z,sessionId:e.activeSessionId,sessionCount:e.sessions.length,workspaceCount:e.workspaces.length,durationMs:Date.now()-C})}}async function _t(){try{const C=Te(),[z,W]=await Promise.all([C.listWorkspaces().catch(()=>[]),C.getFsHome().catch(()=>({home:"",recentRoots:[]}))]);e.workspaces=pn(z),e.fsHome=W.home||null,e.recentRoots=W.recentRoots}catch{}}function pn(C){const z=pi();return Object.keys(z).length===0?C:C.map(W=>{const ue=z[W.root];return ue!==void 0?{...W,name:ue}:W})}function Nt(C){e.activeWorkspaceId=C,_e(C)}function gn(C){Nt(C);const z=e.sessions.filter(W=>L(W)===C);if(z.length>0){const W=z[0];W&&W.id!==e.activeSessionId&&ct(W.id)}else y(void 0),Rt(void 0,"push")}function Tt(C){const z=pi()[C.root],W=z!==void 0?{...C,name:z}:C,ue=es(W.root);e.hiddenWorkspaceRoots.some(Ye=>es(Ye)===ue)&&(e.hiddenWorkspaceRoots=e.hiddenWorkspaceRoots.filter(Ye=>es(Ye)!==ue),Ce(e.hiddenWorkspaceRoots));const be=e.workspaces.findIndex(Ye=>Ye.id===W.id||Ye.root===W.root);if(be===-1){e.workspaces=[W,...e.workspaces];return}const $e=[...e.workspaces];$e[be]=W,e.workspaces=$e}function fn(C){if(C.type==="workspaceCreated"||C.type==="workspaceUpdated"){Tt(C.workspace);return}const z=e.workspaces.find(ue=>ue.id===C.workspaceId)?.root??C.root;if(z&&!e.hiddenWorkspaceRoots.includes(z)&&(e.hiddenWorkspaceRoots=[...e.hiddenWorkspaceRoots,z],Ce(e.hiddenWorkspaceRoots)),e.workspaces=e.workspaces.filter(ue=>ue.id!==C.workspaceId&&ue.root!==z),e.activeWorkspaceId===C.workspaceId||e.activeWorkspaceId===z){const ue=b.value[0]?.id??null;if(e.activeWorkspaceId=ue,ue)_e(ue);else try{ro(We.activeWorkspace)}catch{}y(void 0),e.sessionLoading=!1,me(),Rt(void 0,"replace")}}function mn(){y(void 0),Rt(void 0,"push")}function Rn(C){Nt(C),mn(),me()}async function yn(C){const z=V.value.find(Mt=>Mt.id===C);if(!z)return null;const W=e.thinking,ue=Te();let be,$e=z.root;try{const Mt=await ue.addWorkspace({root:z.root});be=Mt.id,$e=Mt.root,Tt(Mt)}catch{}const Ye=u.draftModel.value??void 0,it=await ue.createSession({workspaceId:be,cwd:$e,model:Ye});u.draftModel.value=null;const mt=Ye!==void 0&&(!it.model||it.model.length===0)?{...it,model:Ye}:it;h(mt),Nt(it.workspaceId??be??C),await ct(it.id);const et=it.id;return W!==void 0&&(e.thinkingBySession={...e.thinkingBySession,[et]:W}),te.planMode?(e.planModeBySession={...e.planModeBySession,[et]:!0},oe(),cs(e,et)):e.config?.defaultPlanMode===!0&&!te.planModeTouched&&(e.planModeBySession={...e.planModeBySession,[et]:!0},oe(),cs(e,et)),te.swarmMode&&(e.swarmModeBySession={...e.swarmModeBySession,[et]:!0},ce(),cs(e,et)),te.supermoonMode&&(e.supermoonModeBySession={...e.supermoonModeBySession,[et]:!0},Q(),cs(e,et)),te.goalMode&&(e.goalModeBySession={...e.goalModeBySession,[et]:!0},ie()),te.planArmed&&(e.planArmedBySession={...e.planArmedBySession,[et]:!0},ge()),te.planMode=!1,te.planArmed=!1,te.swarmMode=!1,te.supermoonMode=!1,te.goalMode=!1,te.planModeTouched=!1,et}async function Gn(C,z,W){if(!us.has(C)){us.add(C);try{const ue=await yn(C);if(!ue)return;await lt(ue,z,W)}catch(ue){p("startSessionAndSendPrompt",ue)}finally{us.delete(C)}}}async function $t(C,z,W,ue){if(!us.has(C)){us.add(C);try{const be=await yn(C);if(!be)return;const $e=e.planModeBySession[be]??!1,Ye=e.swarmModeBySession[be]??!1,it=e.supermoonModeBySession[be]??!1,mt=e.sessions.find(Sn=>Sn.id===be),et=(mt?.model&&mt.model.length>0?mt.model:e.defaultModel)??void 0;if(!await q({model:et,planMode:$e,swarmMode:Ye,supermoonMode:it,permissionMode:e.permission},be))return;await u.activateSkill(z,W,be,ue)}catch(be){p("startSessionAndActivateSkill",be)}finally{us.delete(C)}}}async function Zt(C,z){if(!us.has(C)){us.add(C);try{const W=await yn(C);if(!W)return;await i.openSideChatOn(W,z)}catch(W){p("startSessionAndOpenSideChat",W)}finally{us.delete(C)}}}async function Gt(C){const z=C.trim();if(!z)return!1;const W=Te();try{const ue=await W.addWorkspace({root:z});return Tt(ue),Rn(ue.id),!0}catch(ue){return console.warn("[kimi-web] addWorkspaceByPath failed for",z,ue),!1}}async function kn(C){try{return await Te().browseFs(C)}catch{return{path:"",parent:null,entries:[]}}}async function An(){try{return await Te().getFsHome()}catch{return{home:"",recentRoots:[]}}}function Rt(C,z){if(z==="none"||typeof window>"u"||!window.history)return;const W=nb(C);if(window.location.pathname!==W)try{z==="push"?window.history.pushState(null,"",W):window.history.replaceState(null,"",W)}catch{}}async function sn(C){try{const z=await Te().getSession(C);return e.sessions.some(W=>W.id===z.id)||m(z),!0}catch{return!1}}function qt(){const C=$r(window.location);if(C===void 0){y(void 0);return}if(C!==e.activeSessionId){if(e.sessions.some(z=>z.id===C)){ct(C,{urlMode:"none"});return}(async()=>{if(await sn(C)){await ct(C,{urlMode:"none"});return}const z=e.sessions[0];z?await ct(z.id,{urlMode:"replace"}):(y(void 0),Rt(void 0,"replace"))})()}}let Xt=!1;function Wt(){Xt||typeof window>"u"||(Xt=!0,window.addEventListener("popstate",qt))}async function ct(C,z){const W=D(C),ue=!W&&v.has(C);v.delete(C);try{Rt(C,z?.urlMode??"push"),e.sessionLoading=!W&&!ue,y(C),U(),e.unreadBySession[C]&&(e.unreadBySession={...e.unreadBySession,[C]:!1},ye({[C]:!1})),me();const be=e.sessions.find($e=>$e.id===C);if(be){const $e=L(be);e.activeWorkspaceId!==$e&&Nt($e)}if(W){if(await O(C)==="not-found")return}else if(await S(C)==="not-found")return;R(C)}catch(be){p("selectSession",be,{sessionId:C})}finally{e.activeSessionId===C&&(e.sessionLoading=!1)}}async function lt(C,z,W){const ue=Ua(C);e.inFlightBySession={...e.inFlightBySession,[C]:!0};const be=k();try{const $e=Te(),Ye=[];z&&Ye.push({type:"text",text:z});for(const St of W??[])St.kind==="video"?Ye.push({type:"video",source:{kind:"file",fileId:St.fileId}}):St.kind==="file"?Ye.push({type:"file",fileId:St.fileId,name:St.name??"",mediaType:St.mediaType||"application/octet-stream",size:St.size??0}):Ye.push({type:"image",source:{kind:"file",fileId:St.fileId}});if(Ye.length===0)return e.inFlightBySession={...e.inFlightBySession,[C]:!1},"rejected";const it={id:be,sessionId:C,role:"user",content:Ye,createdAt:new Date().toISOString(),metadata:{"kimiWeb.optimisticUserMessage":!0}};g(C,St=>[...St,it]);const mt=e.sessions.find(St=>St.id===C),et=(mt?.model&&mt.model.length>0?mt.model:e.defaultModel)??void 0,Mt=e.swarmModeBySession[C]??!1,Sn=e.supermoonModeBySession[C]??!1,Qe=e.goalModeBySession[C]??!1;if(Qe&&z){Dn(C);try{await $e.updateSession(C,{goalObjective:z.trim()})}catch(St){return p("createGoal",St,{sessionId:C}),e.inFlightBySession={...e.inFlightBySession,[C]:!1},g(C,ln=>ln.some(Pn=>Pn.id===be)?ln.filter(Pn=>Pn.id!==be):ln),"rejected"}}const Xe=en(C),jt=await $e.submitPrompt(C,{content:Ye,model:et,thinking:await u.resolveThinkingForPrompt(C,et)??e.thinking,permissionMode:e.permission,planMode:Xe,swarmMode:Mt,supermoonMode:Sn});return Qe&&(e.goalModeBySession={...e.goalModeBySession,[C]:!1},ie()),e.promptIdBySession={...e.promptIdBySession,[C]:jt.promptId},g(C,St=>{const ln=St.findIndex(yo=>yo.id===be);if(ln===-1)return St;const Pn=[...St];return Pn[ln]={...Pn[ln],promptId:Pn[ln].promptId??jt.promptId},Pn}),T()?.bindNextPromptId(C,jt.promptId),"ok"}catch($e){return e.inFlightBySession={...e.inFlightBySession,[C]:!1},g(C,Ye=>Ye.some(it=>it.id===be)?Ye.filter(it=>it.id!==be):Ye),p("sendPrompt",$e,{sessionId:C}),Mn($e)?"rejected":"uncertain"}finally{Va(C,ue)}}async function on(C,z){const W=e.activeSessionId;if(W){if(f.value!=="idle"||e.inFlightBySession[W]){we(C,z);return}if((e.queuedBySession[W]?.length??0)>0){we(C,z),Ge(W);return}await lt(W,C,z)}}async function Jt(C,z){const W=e.activeSessionId;if(!W)return;const ue=e.queuedBySession[W]??[],be=[],$e=[];for(const Xe of ue){const jt=Xe.text.trim();jt&&be.push(jt),Xe.attachments?.length&&$e.push(...Xe.attachments)}const Ye=C.trim();if(Ye&&be.push(Ye),z?.length&&$e.push(...z),be.length===0&&$e.length===0)return;ue.length>0&&(e.queuedBySession={...e.queuedBySession,[W]:[]});const it=be.join(`
+
+`),mt=()=>{if(ue.length===0)return;const Xe=e.queuedBySession[W]??[];e.queuedBySession={...e.queuedBySession,[W]:[...ue,...Xe]}};if(f.value==="idle"&&!e.inFlightBySession[W]){await lt(W,it,$e)==="rejected"&&mt();return}const et=[];it&&et.push({type:"text",text:it});for(const Xe of $e)Xe.kind==="video"?et.push({type:"video",source:{kind:"file",fileId:Xe.fileId}}):Xe.kind==="file"?et.push({type:"file",fileId:Xe.fileId,name:Xe.name??"",mediaType:Xe.mediaType||"application/octet-stream",size:Xe.size??0}):et.push({type:"image",source:{kind:"file",fileId:Xe.fileId}});const Mt=k(),Sn={id:Mt,sessionId:W,role:"user",content:et,createdAt:new Date().toISOString(),metadata:{"kimiWeb.optimisticUserMessage":!0}};g(W,Xe=>[...Xe,Sn]);const Qe=Ua(W);try{const Xe=Te(),jt=e.sessions.find(Pn=>Pn.id===W),St=(jt?.model&&jt.model.length>0?jt.model:e.defaultModel)??void 0,ln=await Xe.submitPrompt(W,{content:et,model:St,thinking:await u.resolveThinkingForPrompt(W,St)??e.thinking,permissionMode:e.permission,planMode:en(W),swarmMode:e.swarmModeBySession[W]??!1,supermoonMode:e.supermoonModeBySession[W]??!1});if(g(W,Pn=>{const yo=Pn.findIndex(Id=>Id.id===Mt);if(yo===-1)return Pn;const di=[...Pn];return di[yo]={...di[yo],promptId:di[yo].promptId??ln.promptId},di}),ln.status!=="queued"){e.promptIdBySession={...e.promptIdBySession,[W]:ln.promptId},T()?.bindNextPromptId(W,ln.promptId);return}try{await Xe.steerPrompts(W,[ln.promptId])}catch{}}catch(Xe){g(W,jt=>jt.filter(St=>St.id!==Mt)),Mn(Xe)&&mt(),p("steer",Xe,{sessionId:W})}finally{Va(W,Qe)}}async function Se(C,z){try{const ue=await Te().uploadFile({file:C,name:z});return{fileId:ue.id,name:ue.name,mediaType:ue.mediaType}}catch(W){return p("uploadImage",W),null}}function we(C,z){const W=e.activeSessionId;if(!W)return;const ue=e.queuedBySession[W]??[],be={text:C,attachments:z,id:vb()};e.queuedBySession={...e.queuedBySession,[W]:[...ue,be]}}function Ge(C){const[z,...W]=e.queuedBySession[C]??[];z!==void 0&&(e.queuedBySession={...e.queuedBySession,[C]:W},lt(C,z.text,z.attachments).then(ue=>{if(ue==="ok"){Js.delete(C);return}if(ue==="uncertain"){Js.delete(C);return}if(!e.sessions.some(mt=>mt.id===C)){Js.delete(C);return}const be=z.id??z.text,$e=Js.get(C),Ye=$e!==void 0&&$e.key===be?$e.count+1:1;if(Ye>=mb){Js.delete(C),(e.queuedBySession[C]?.length??0)>0&&Ge(C);return}Js.set(C,{key:be,count:Ye});const it=e.queuedBySession[C]??[];e.queuedBySession={...e.queuedBySession,[C]:[z,...it]}}))}function Je(C,z){const W=e.inFlightBySession[C]===!0;if(e.inFlightBySession={...e.inFlightBySession,[C]:!1},e.promptIdBySession[C]!==void 0){const be={...e.promptIdBySession};delete be[C],e.promptIdBySession=be}return C===e.activeSessionId&&U(),(W||z?.turnWasActive===!0||(e.turnActiveBySession[C]??!1))&&Ge(C),W}function at(C,z){z.inFlightTurn!==null&&z.busy||Je(C)}async function Ht(){const C=e.activeSessionId;if(!C)return;const z=e.sessions.find(be=>be.id===C);let W=e.promptIdBySession[C];if(W===void 0){const be=z?.currentPromptId;be!==void 0&&be.length>0&&!be.startsWith("pr_")&&(W=be)}const ue=Te();if(W!==void 0)try{if((await ue.abortPrompt(C,W)).aborted)return;const $e={...e.promptIdBySession};delete $e[C],e.promptIdBySession=$e}catch(be){if(Mn(be)&&be.code===ob){const $e={...e.promptIdBySession};delete $e[C],e.promptIdBySession=$e}else{p("abortCurrentPrompt",be,{sessionId:C});return}}try{await ue.abortSession(C)}catch(be){p("abortCurrentPrompt",be,{sessionId:C})}}function Qt(C,z){const W=e.approvalsBySession[C]??[];e.approvalsBySession={...e.approvalsBySession,[C]:W.filter(ue=>ue.approvalId!==z)}}function Pt(C,z){const W=e.questionsBySession[C]??[];e.questionsBySession={...e.questionsBySession,[C]:W.filter(ue=>ue.questionId!==z)}}async function Ut(C,z){const W=e.activeSessionId;if(W&&!bi[C]){bi[C]=!0;try{const ue=Te(),be={decision:z.decision,scope:z.scope,feedback:z.feedback,selectedLabel:z.selectedLabel};await ue.respondApproval(W,C,be),Qt(W,C)}catch(ue){va(ue)?Qt(W,C):p("respondApproval",ue,{sessionId:W})}finally{delete bi[C]}}}async function Vt(C,z){const W=e.activeSessionId;if(W&&!Zs[C]){Zs[C]="answer";try{await Te().respondQuestion(W,C,z),Pt(W,C)}catch(ue){va(ue)?Pt(W,C):p("respondQuestion",ue,{sessionId:W})}finally{delete Zs[C]}}}async function Tn(C){const z=e.activeSessionId;if(z&&!Zs[C]){Zs[C]="dismiss";try{await Te().dismissQuestion(z,C),Pt(z,C)}catch(W){va(W)?Pt(z,C):p("dismissQuestion",W,{sessionId:z})}finally{delete Zs[C]}}}async function gs(C){const z=e.activeSessionId;if(z&&!ha[C]){ha[C]=!0;try{const W=Te(),ue=(e.tasksBySession[z]??[]).find($e=>$e.id===C)?.backgroundTaskId;await W.cancelTask(z,ue??C);const be=e.tasksBySession[z]??[];e.tasksBySession={...e.tasksBySession,[z]:be.map($e=>$e.id===C?{...$e,status:"cancelled"}:$e)}}catch(W){ub(W)||p("cancelTask",W,{sessionId:z})}finally{delete ha[C]}}}function Wn(C){const z=e.activeSessionId;z?(e.planModeBySession={...e.planModeBySession,[z]:C},cs(e,z),oe(),q({planMode:C})):(te.planMode=C,te.planModeTouched=!0)}function bn(){const C=e.activeSessionId,z=C?e.planModeBySession[C]??!1:te.planMode;Wn(!z)}function ns(){const C=e.activeSessionId;C?(e.planArmedBySession={...e.planArmedBySession,[C]:!0},ge(),e.goalModeBySession[C]&&(e.goalModeBySession={...e.goalModeBySession,[C]:!1},ie())):(te.planArmed=!0,te.goalMode=!1)}function ss(){const C=e.activeSessionId,z=C?{planMode:e.planModeBySession[C]??!1,planArmed:e.planArmedBySession[C]??!1}:{planMode:te.planMode,planArmed:te.planArmed},W=tb();C?(z.planMode&&Wn(!1),z.planArmed&&(e.planArmedBySession={...e.planArmedBySession,[C]:!1},ge())):(z.planMode&&(te.planModeTouched=!0),te.planMode=W.planMode,te.planArmed=W.planArmed)}function On(){const C=e.activeSessionId,z=C?{planMode:e.planModeBySession[C]??!1,planArmed:e.planArmedBySession[C]??!1}:{planMode:te.planMode,planArmed:te.planArmed};ic(z)?ss():ns()}function en(C){const z={planMode:e.planModeBySession[C]??!1,planArmed:e.planArmedBySession[C]??!1},W=eb(z);return(W.planMode!==z.planMode||W.planArmed!==z.planArmed)&&(e.planModeBySession={...e.planModeBySession,[C]:W.planMode},e.planArmedBySession={...e.planArmedBySession,[C]:W.planArmed},cs(e,C),oe(),ge(),W.planMode!==z.planMode&&q({planMode:W.planMode},C)),W.planMode}function Dn(C){e.planModeBySession[C]&&(e.planModeBySession={...e.planModeBySession,[C]:!1},cs(e,C),oe(),q({planMode:!1},C)),e.planArmedBySession[C]&&(e.planArmedBySession={...e.planArmedBySession,[C]:!1},ge())}function Hn(C){const z=e.activeSessionId;z?(e.swarmModeBySession={...e.swarmModeBySession,[z]:C},cs(e,z),ce(),q({swarmMode:C})):te.swarmMode=C}async function Qn(){const C=e.activeSessionId,W=!(C?e.swarmModeBySession[C]??!1:te.swarmMode);W&&e.permission==="manual"&&!await s({title:n("workspace.swarmEnableConfirm"),variant:"primary"})||Hn(W)}function ys(C,z){e.supermoonModeBySession={...e.supermoonModeBySession,[z]:C},cs(e,z),Q(),C?zn(z):is(z),q({supermoonMode:C},z)}function vn(C){const z=e.activeSessionId;z?ys(C,z):te.supermoonMode=C}function os(){const C=e.activeSessionId,z=C?e.supermoonModeBySession[C]??!1:te.supermoonMode;vn(!z)}function zn(C){const z=u.models.value.find($e=>$e.id===P.value.modelId),W=z?.supportEfforts??[];if(W.length===0)return;const ue=W[W.length-1],be=Xo(z,e.thinking);u.setThinking(ue),e.supermoonPreviousEffortBySession={...e.supermoonPreviousEffortBySession,[C]:be}}function is(C){const z=e.supermoonPreviousEffortBySession[C];if(z===void 0)return;const W={...e.supermoonPreviousEffortBySession};delete W[C],e.supermoonPreviousEffortBySession=W;try{u.setThinking(z)}catch(ue){p("setSupermoonMode",ue,{sessionId:C})}}function as(C){const z=e.activeSessionId;z?(e.goalModeBySession={...e.goalModeBySession,[z]:C},ie(),C&&Dn(z)):(te.goalMode=C,C&&(te.planMode=!1,te.planModeTouched=!0,te.planArmed=!1))}function Es(){const C=e.activeSessionId,z=C?e.goalModeBySession[C]??!1:te.goalMode;as(!z)}async function ks(C){const z=C.trim();if(!z||e.permission==="manual"&&!await s({title:n("workspace.goalStartConfirm",{objective:z}),variant:"primary"}))return;let W=e.activeSessionId;if(!W){const ue=e.activeWorkspaceId,be=ue&&b.value.some($e=>$e.id===ue)?ue:b.value[0]?.id??null;if(!be)return;try{W=await yn(be)??void 0}catch($e){p("createGoal",$e);return}if(!W)return}Dn(W);try{await Te().updateSession(W,{goalObjective:z})}catch(ue){p("createGoal",ue,{sessionId:W,message:Z(ue)});return}e.goalModeBySession[W]&&(e.goalModeBySession={...e.goalModeBySession,[W]:!1},ie()),e.activeSessionId===W?await on(z):await lt(W,z)}function wn(C){const z=e.activeSessionId;z&&Promise.resolve(Te().updateSession(z,{goalControl:C})).catch(W=>{p("controlGoal",W,{sessionId:z,message:Z(W)})})}function Ls(C){e.permission=C,ne(C),q({permissionMode:C})}function Gs(C){const z=[...e.warnings];z.splice(C,1),e.warnings=z}async function Bs(C,z){try{await Te().updateSession(C,{title:z}),x(C,ue=>({...ue,title:z}))}catch(W){p("renameSession",W,{sessionId:C})}}async function Fn(C){const z=await Te().generateSessionTitle(C,{force:!0,source:"digest"});return z!==null&&x(C,W=>({...W,title:z})),z}async function bs(C,z){const W=e.workspaces.find(be=>be.id===C)?.root,ue=()=>{e.workspaces=e.workspaces.map(be=>be.id===C?{...be,name:z}:be)};try{if(await Te().updateWorkspace(C,{name:z}),W!==void 0){const be=pi();W in be&&(delete be[W],Nl(be))}ue()}catch(be){if(W!==void 0&&Mn(be)&&be.code===ib){Nl({...pi(),[W]:z}),ue();return}p("renameWorkspace",be)}}async function ws(C){const z=e.workspaces.find($e=>$e.id===C)?.root??V.value.find($e=>$e.id===C)?.root??C,W=e.activeSessionId?e.sessions.find($e=>$e.id===e.activeSessionId):void 0,ue=e.activeWorkspaceId===C||e.activeWorkspaceId===z,be=!!(W&&(W.cwd===z||W.workspaceId===C||L(W)===C));z&&!e.hiddenWorkspaceRoots.includes(z)&&(e.hiddenWorkspaceRoots=[...e.hiddenWorkspaceRoots,z],Ce(e.hiddenWorkspaceRoots));try{await Te().deleteWorkspace(C)}catch($e){console.warn("[kimi-web] deleteWorkspace registry cleanup failed for",C,$e)}if(e.workspaces=e.workspaces.filter($e=>$e.id!==C&&$e.root!==z),ue||be){const $e=b.value[0]?.id??null;if(e.activeWorkspaceId=$e,$e)_e($e);else try{ro(We.activeWorkspace)}catch{}}(ue||be)&&(y(void 0),e.sessionLoading=!1,me(),Rt(void 0,"replace"))}async function Ae(C){try{await Te().archiveSession(C),_(C),i.clearSideChatForSession(C);const{[C]:W,...ue}=e.sideChatUserMessageIdsBySession;if(e.sideChatUserMessageIdsBySession=ue,e.activeSessionId===C){const be=e.sessions[0];be?await ct(be.id,{urlMode:"replace"}):(y(void 0),Rt(void 0,"replace"))}}catch(z){p("archiveSession",z,{sessionId:C})}}function j(C){e.warnings=[...e.warnings,C]}function J(C,z){e.warnings=[...e.warnings.filter(W=>W!==C),...z===void 0?[]:[z]]}async function ft(C){if(Y)return;const z=C??e.activeSessionId;if(!z){const be=n("commands.export.noSession");Yt("export:failed",{status:"no-session"}),p("exportSession",new Error(be),{message:be});return}Y=!0;const W=Date.now();Yt("export:start",{sessionId:z});const ue={severity:"info",title:n("commands.export.started"),sticky:!0};j(ue);try{const be=O0(),{blob:$e,fileName:Ye}=await Te().exportSession(z,be);if(typeof document>"u")throw new Error("Document is unavailable");const it=URL.createObjectURL($e);let mt;try{mt=document.createElement("a"),mt.href=it,mt.download=Ye,document.body.append(mt),mt.click()}finally{mt?.remove(),setTimeout(()=>{try{URL.revokeObjectURL(it)}catch{}},0)}J(ue,{severity:"success",title:n("commands.export.done")}),Yt("export:accepted",{sessionId:z,status:"accepted",zipBytes:$e.size,durationMs:Date.now()-W})}catch(be){const $e=typeof be=="object"&&be!==null?be:void 0;Yt("export:failed",{sessionId:z,status:"failed",durationMs:Date.now()-W,errorName:typeof $e?.name=="string"?$e.name:typeof be,errorCode:typeof $e?.code=="number"?$e.code:void 0,requestId:typeof $e?.requestId=="string"?$e.requestId:void 0,phase:typeof $e?.phase=="string"?$e.phase:void 0,httpStatus:typeof $e?.status=="number"?$e.status:void 0}),J(ue,void 0),pb(be)?p("exportSession",be,{sessionId:z,title:n("commands.export.tooLarge")}):p("exportSession",be,{sessionId:z})}finally{Y=!1}}async function Nn(C){try{const z=await Te().restoreSession(C);return h(z),!0}catch(z){return p("restoreSession",z,{sessionId:C}),!1}}function Ss(C){return Te().listSessions({archivedOnly:!0,beforeId:C?.beforeId,pageSize:C?.pageSize??50})}async function ls(){try{await Te().logout(),await De(),await In()}catch(C){p("logout",C)}}function Qs(C){const z=e.activeSessionId;z&&Te().compactSession(z,C).catch(W=>{p("compact",W,{sessionId:z})})}async function Rs(C){const z=C??e.activeSessionId;if(z)try{const W=await Te().forkSession(z);h(W),await ct(W.id)}catch(W){p("fork",W,{sessionId:z})}}async function pe(C=1){const z=e.activeSessionId;if(!z)return null;const W=(()=>{const ue=e.messagesBySession[z]??[];for(let be=ue.length-1;be>=0;be--){const $e=ue[be];if($e.role==="user"&&!($e.metadata?.origin&&$e.metadata.origin.kind!=="user"))return $e.content.filter(Ye=>Ye.type==="text").map(Ye=>Ye.text).join(`
+`)}return null})();try{return await Te().undoSession(z,C),await S(z),W}catch(ue){return p("undo",ue,{sessionId:z}),null}}function Me(C){const z=e.activeSessionId;if(!z)return;const W=e.queuedBySession[z]??[];if(C<0||C>=W.length)return;const ue=[...W];ue.splice(C,1),e.queuedBySession={...e.queuedBySession,[z]:ue}}function xe(C,z){const W=e.activeSessionId;if(!W)return;const ue=e.queuedBySession[W]??[];if(C===z||C<0||C>=ue.length||z<0||z>=ue.length)return;const be=[...ue],[$e]=be.splice(C,1);$e!==void 0&&(be.splice(z,0,$e),e.queuedBySession={...e.queuedBySession,[W]:be})}async function F(C){const z=e.activeSessionId;if(!z)return[];try{return(await Te().listDirectory(z,{path:C,includeGitStatus:!0})).items}catch{return[]}}async function K(C){const z=e.activeSessionId;if(!z)return null;try{const ue=await Te().readFile(z,{path:C});return{path:ue.path,content:ue.content,encoding:ue.encoding,mime:ue.mime,languageId:ue.languageId,isBinary:ue.isBinary,size:ue.size,lineCount:ue.lineCount}}catch(W){return console.warn("[kimi-web] readFileContent failed for",C,W),null}}const le=10485760;function je(C){const z=e.activeSessionId;return z?Te().getFileDownloadUrl(z,C):null}async function tt(C,z){const W=e.activeSessionId;if(!W)return!1;try{return await Te().openFile(W,{path:C,line:z}),!0}catch(ue){return p("openFile",ue,{sessionId:W}),!1}}async function wt(C){const z=e.activeSessionId;if(!z)return;const W=P.value.cwd||".";try{await Te().openInApp(z,C,W)}catch(ue){p("openInApp",ue,{sessionId:z})}}async function tn(C){const z=e.activeSessionId;if(!z)return!1;try{return await Te().revealFile(z,{path:C}),!0}catch(W){return p("revealFile",W,{sessionId:z}),!1}}async function Yn(C){if(/^(https?:|data:|blob:)/i.test(C))return C;const z=e.activeSessionId;if(!z)return C;let W=C;if(W.startsWith("/")){const ue=e.sessions.find(be=>be.id===z)?.cwd;if(ue&&(W===ue||W.startsWith(ue.endsWith("/")?ue:`${ue}/`))){if(W=W.slice(ue.length).replace(/^\//,""),!W)return C}else return C}if(W.startsWith("/")||W.startsWith("~")||W.includes(".."))return C;try{const be=await Te().readFile(z,{path:W,length:le});return!be.isBinary||be.encoding!=="base64"||be.truncated?C:`data:${be.mime};base64,${be.content}`}catch{return C}}async function rs(C){const z=e.sessions.find(ue=>ue.id===e.activeSessionId),W=z===void 0?e.activeWorkspaceId:L(z);if(!W)return[];try{return(await Te().searchFiles(W,{query:C,limit:20})).items.map($e=>({path:$e.path,name:$e.name}))}catch{return[]}}return{loadFileDiff:X,clearFileDiff:me,loadGitStatus:He,checkAuth:De,loadConfig:Fe,updateConfig:Ze,listAllSessionsGlobal:Ct,load:In,refreshServerMeta:Ft,loadWorkspaces:_t,loadMoreSessions:nn,loadAllSessions:ut,selectWorkspace:Nt,openWorkspace:gn,upsertWorkspacePreserveOrder:Tt,applyWorkspaceEvent:fn,clearActiveSession:mn,openWorkspaceDraft:Rn,startSessionAndSendPrompt:Gn,startSessionAndActivateSkill:$t,startSessionAndOpenSideChat:Zt,addWorkspaceByPath:Gt,browseFs:kn,getFsHome:An,writeSessionUrl:Rt,fetchSessionIntoList:sn,onSessionRoutePopState:qt,bindSessionRoute:Wt,selectSession:ct,submitPromptInternal:lt,finishPromptLocal:Je,localTurnStartState:hb,isLocalTurnSnapshotCurrent:yb,afterLocalTurnStartsSettle:kb,handleSessionSnapshot:at,sendPrompt:on,steerPrompt:Jt,uploadImage:Se,enqueue:we,unqueue:Me,reorderQueue:xe,abortCurrentPrompt:Ht,respondApproval:Ut,respondQuestion:Vt,dismissQuestion:Tn,pendingQuestionActions:Zs,pendingApprovalActions:bi,cancelTask:gs,setPlanMode:Wn,togglePlanMode:bn,armPlanMode:ns,dismissPlanMode:ss,togglePlanArm:On,setSwarmMode:Hn,toggleSwarmMode:Qn,setSupermoonMode:vn,toggleSupermoonMode:os,pinSupermoonEffort:zn,restoreSupermoonEffort:is,setGoalMode:as,toggleGoalMode:Es,createGoal:ks,controlGoal:wn,setPermission:Ls,dismissWarning:Gs,renameSession:Bs,regenerateSessionTitle:Fn,renameWorkspace:bs,deleteWorkspace:ws,archiveSession:Ae,exportSession:ft,restoreSession:Nn,loadArchivedSessions:Ss,logout:ls,compact:Qs,forkSession:Rs,undo:pe,listDir:F,readFileContent:K,getFileDownloadUrl:je,openWorkspaceFile:tt,openInApp:wt,revealWorkspaceFile:tn,resolveImageUrl:Yn,searchFiles:rs,loadOlderMessages:ve,refreshSessionSidecars:R,isStartingFirstPrompt:()=>us.size>0}}const ac=We.starredModels,xr=new Error("profile persist failed");function wb(){try{const e=It(ac);if(!e)return[];const t=JSON.parse(e);if(Array.isArray(t)&&t.every(n=>typeof n=="string"))return t}catch{}return[]}function Sb(e){try{Bt(ac,JSON.stringify(e))}catch{}}function Cb(e,t){const{pushOperationFailure:n,refreshSessionStatus:s,persistSessionProfile:o,activity:i,updateSession:u,updateSessionMessages:p}=t,f=I([]),v=I(wb()),w=I({}),x=I({}),h=I([]),m=I(null);function _(Z){if(!(Z==null||Z.length===0))return f.value.find(U=>U.id===Z)??f.value.find(U=>U.model===Z)}function y(){const Z=e.activeSessionId?e.sessions.find(ke=>ke.id===e.activeSessionId):void 0,U=Z===void 0?m.value??e.defaultModel:Z.model||e.defaultModel;return _(U)?.id??U??void 0}function g(Z){if(Z===void 0)return;const U=_(Z);return U===void 0?void 0:Zo(U)}function k(Z,U){const ke=Z==null?void 0:e.thinkingBySession[Z];return ke!==void 0&&K2(U,ke)?ke:Zo(U)}function T(Z,U){if(U===void 0)return;const ke=_(U);return ke===void 0?void 0:k(Z,ke)}async function S(Z,U){return Z!=null&&e.thinkingBySession[Z]===void 0&&await s(Z),T(Z,U)}function O(Z){e.thinking=Z;const U=e.activeSessionId;return Z!==void 0&&U!==null&&U!==void 0&&(e.thinkingBySession={...e.thinkingBySession,[U]:Z}),Z}Oe([()=>e.activeSessionId,()=>y(),()=>{const Z=e.activeSessionId;return Z==null?void 0:e.thinkingBySession[Z]}],()=>{const Z=_(y());Z!==void 0&&(e.thinking=k(e.activeSessionId,Z))});function D(Z){Te().setConfig({thinking:G2(Z,_(y())?.supportEfforts)}).catch(U=>n("setConfig",U))}async function E(Z){try{const ke=await Te().listSkills(Z);w.value={...w.value,[Z]:ke}}catch{}}async function B(Z){try{const ke=await Te().listSkillsForWorkspace(Z);x.value={...x.value,[Z]:ke}}catch{}}async function q(){try{const Z=Te();f.value=await Z.listModels();const U=_(y());U!==void 0&&(e.thinking=k(e.activeSessionId,U))}catch(Z){n("loadModels",Z)}}async function V(){try{const Z=Te();h.value=await Z.listProviders()}catch(Z){n("loadProviders",Z)}}async function b(Z){const U=e.activeSessionId,ke=_(Z),ae=e.thinking,ee=U?e.sessions.find(Y=>Y.id===U)?.model:void 0,de=y()!==(ke?.id??Z),Be=Q2(ke,ae,de);if(!U)return m.value=Z,e.thinking=Be,Be!==ae&&Be!==void 0&&D(Be),!0;u(U,Y=>({...Y,model:Z})),Be!==ae&&(e.thinking=Be,Be!==void 0&&(e.thinkingBySession={...e.thinkingBySession,[U]:Be}));try{await Te().updateSession(U,{model:Z,thinking:Be!==ae?Be:void 0})}catch(Y){return u(U,ve=>({...ve,model:ee??ve.model})),Be!==ae&&(e.thinking=ae,ae!==void 0&&(e.thinkingBySession={...e.thinkingBySession,[U]:ae})),n("setModel",Y,{sessionId:U}),!1}return Be!==ae&&Be!==void 0&&D(Be),await s(U),!0}function P(Z){const U=new Set(v.value);U.has(Z)?U.delete(Z):U.add(Z),v.value=Array.from(U),Sb(v.value)}async function L(Z,U,ke,ae){const ee=ke??e.activeSessionId;if(!ee)return;const de=i.value==="idle"&&!e.inFlightBySession[ee],Be=`msg_skill_opt_${Date.now().toString(36)}`,Y=de?Ua(ee):void 0;if(de){e.inFlightBySession={...e.inFlightBySession,[ee]:!0};const ve={id:Be,sessionId:ee,role:"user",content:[{type:"text",text:`/${Z}${U?` ${U}`:""}`}],createdAt:new Date().toISOString(),metadata:{"kimiWeb.optimisticUserMessage":!0,origin:{kind:"skill_activation",trigger:"user-slash",skillName:Z,skillArgs:U}}};p(ee,R=>[...R,ve])}try{const ve=e.sessions.find(me=>me.id===ee)?.model,R=(ve&&ve.length>0?ve:e.defaultModel)??void 0;if(!await o({thinking:await S(ee,R)??e.thinking},ee))throw xr;await Te().activateSkill(ee,Z,U,ae)}catch(ve){de&&(e.inFlightBySession={...e.inFlightBySession,[ee]:!1},p(ee,R=>R.filter(X=>X.id!==Be))),ve!==xr&&n("activateSkill",ve,{sessionId:ee})}finally{Y!==void 0&&Va(ee,Y)}}async function ne(Z){try{await Te().addProvider(Z),await Promise.all([V(),q()])}catch(U){n("addProvider",U)}}async function oe(Z){try{await Te().deleteProvider(Z),await Promise.all([V(),q()])}catch(U){n("deleteProvider",U)}}async function ge(Z){try{const U=await Te().refreshProvider(Z);for(const ke of U.failed)n("refreshProvider",new Error(ke.reason),{message:ke.provider});await Promise.all([V(),q()])}catch(U){n("refreshProvider",U)}}async function ce(){try{const Z=await Te().refreshAllProviders();for(const U of Z.failed)n("refreshAllProviders",new Error(U.reason),{message:U.provider});await Promise.all([V(),q()])}catch(Z){n("refreshAllProviders",Z)}}async function Q(Z){try{await Te().importCatalogProvider(Z),await Promise.all([V(),q()])}catch(U){n("importCatalogProvider",U)}}async function ie(Z){try{await Te().importRegistry(Z),await Promise.all([V(),q()])}catch(U){n("importRegistry",U)}}async function te(){try{return await Te().startOAuthLogin()}catch{return null}}async function ye(){try{return await Te().pollOAuthLogin()}catch(Z){return console.warn("[kimi-web] pollOAuthLogin failed",Z),null}}async function _e(){try{await Te().cancelOAuthLogin()}catch{}}function Ce(Z){const U=O(Z);o({thinking:U}),U!==void 0&&D(U)}return{models:f,starredModelIds:v,providers:h,draftModel:m,skillsBySession:w,skillsByWorkspace:x,loadSkillsForSession:E,loadSkillsForWorkspace:B,loadModels:q,loadProviders:V,setModel:b,thinkingLevelForModelId:g,thinkingLevelForSessionId:T,resolveThinkingForPrompt:S,toggleStarModel:P,activateSkill:L,addProvider:ne,deleteProvider:oe,refreshProvider:ge,refreshAllProviders:ce,importCatalogProvider:Q,importRegistry:ie,startOAuthLogin:te,pollOAuthLogin:ye,cancelOAuthLogin:_e,setThinking:Ce}}const _b=/^read[_-]?media(?:file)?$/i,$b=/^data:([^;]+);base64,(.*)$/s,Mb=/^<(image|video|audio)\s+path="([^"]+)">$/,xb=/^<(image|video|audio)\s+path="([^"]+)">(?:<\/\1>)?$/,Ib=/Mime type:\s*([^.\s]+)/i,Ab=/Size:\s*(\d+)\s*bytes/i,Tb=/Original dimensions:\s*(\d+)x(\d+)\s*pixels/i,Pb="Image compressed to fit model limits:",Eb=/Image compressed to fit model limits:[\s\S]*?<\/system>/g;function Lb(e){return e.includes(Pb)?e.replace(Eb,""):e}function Bb(e){return e.replaceAll(""",'"').replaceAll("<","<").replaceAll(">",">").replaceAll("&","&")}function Rb(e){const t=xb.exec(e.trim());return t?{kind:t[1],path:Bb(t[2])}:null}const lc=/^f_(?:[0-9A-Za-z]{26}|[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12})$/,Ob=/^f_(?:[0-9A-Za-z]{26}|[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12})(?=-)/;function Db(e){const t=e.split(/[\\/]/).at(-1)??"",n=t.lastIndexOf("."),s=n>0?t.slice(0,n):t;return lc.test(s)?s:void 0}const zb=/^Attached file "(.+)" \(([^,]+), (\d+) bytes\): (.+) — open it with the Read tool$/;function Fb(e){const t=zb.exec(e.trim());if(!t)return null;const n=(t[4]??"").split(/[\\/]/).at(-1)??"",s=Ob.exec(n)?.[0];return{name:t[1],mediaType:t[2],size:Number(t[3]),fileId:s!==void 0&&lc.test(s)?s:void 0}}function Nb(e){if(e.length===0)return 0;const t=e.endsWith("==")?2:e.endsWith("=")?1:0;return Math.floor(e.length*3/4)-t}function qb(e){if(Array.isArray(e))return e;if(typeof e!="string")return null;try{const t=JSON.parse(e);return Array.isArray(t)?t:null}catch{return null}}function Wb(e){const t=e.type,n=t==="image_url"?"image":t==="video_url"?"video":t==="audio_url"?"audio":null;if(n===null)return null;const o=e[n==="image"?"imageUrl":n==="video"?"videoUrl":"audioUrl"];if(typeof o!="object"||o===null)return null;const i=o.url;return typeof i=="string"?{kind:n,url:i}:null}function Hb(e,t){if(!_b.test(e))return;const n=qb(t);if(n===null)return;let s,o,i,u,p,f=null;for(const w of n){if(typeof w!="object"||w===null)continue;const x=w;if(x.type==="text"&&typeof x.text=="string"){const m=x.text,_=Mb.exec(m);_&&(o=_[1],s=_[2]);const y=Ib.exec(m);y?.[1]&&(i=y[1]);const g=Ab.exec(m);g?.[1]&&(u=Number(g[1]));const k=Tb.exec(m);k?.[1]&&k[2]&&(p=`${k[1]}x${k[2]}`);continue}const h=Wb(x);h&&(f=h)}if(f===null)return;const v=$b.exec(f.url);return v?.[1]&&(i=v[1]),v?.[2]&&(u=Nb(v[2])),{kind:f.kind??o??"image",url:f.url,path:s,mimeType:i,bytes:Number.isFinite(u)?u:void 0,dimensions:p}}function Ub(e){if(e!=null){if(typeof e=="string")return e.split(`
+`);if(Array.isArray(e)){const t=[];for(const n of e)if(typeof n=="string")t.push(...n.split(`
+`));else if(n&&typeof n=="object"){const s=n;s.type==="text"&&typeof s.text=="string"?t.push(...s.text.split(`
+`)):s.type==="think"&&typeof s.think=="string"?t.push(...s.think.split(`
+`)):s.type==="image_url"||s.type==="image"?t.push("[image]"):typeof s.type=="string"?t.push(`[${s.type}]`):t.push(JSON.stringify(n))}return t.length>0?t:void 0}return[JSON.stringify(e)]}}function Vb(e){return{id:e.id,toolCallId:e.parentToolCallId,name:e.description,subagentType:e.subagentType,phase:e.subagentPhase??(e.status==="completed"?"completed":e.status==="failed"?"failed":"working"),status:e.status,summary:e.outputPreview,outputLines:e.outputLines,text:e.text,suspendedReason:e.suspendedReason,swarmIndex:e.swarmIndex}}function jb(e,t){const n=e.split(`
+`),s=t.split(`
+`),o=[];return n.forEach((i,u)=>{o.push({kind:"rem",gutter:String(u+1),text:`- ${i}`})}),s.forEach((i,u)=>{o.push({kind:"add",gutter:String(u+1),text:`+ ${i}`})}),o}function Kb(e){const t=e.display??{},n=typeof t.kind=="string"?t.kind:"";if(n==="diff"){const s=typeof t.path=="string"?t.path:"";return Array.isArray(t.diff)?{kind:"diff",path:s,diff:t.diff}:typeof t.old_text=="string"&&typeof t.new_text=="string"?{kind:"diff",path:s,diff:jb(t.old_text,t.new_text)}:{kind:"diff",path:s,diff:[]}}if(n==="shell"||n==="command")return{kind:"shell",command:typeof t.command=="string"?t.command:e.action,cwd:typeof t.cwd=="string"?t.cwd:void 0,danger:typeof t.danger=="string"?t.danger:void 0};if(n==="file_content"||n==="file")return{kind:"file",path:typeof t.path=="string"?t.path:"",content:typeof t.content=="string"?t.content:"",language:typeof t.language=="string"?t.language:void 0};if(n==="file_op"||n==="fileop")return{kind:"fileop",op:typeof t.operation=="string"?t.operation:typeof t.op=="string"?t.op:n,path:typeof t.path=="string"?t.path:"",detail:typeof t.detail=="string"?t.detail:void 0};if(n==="url_fetch"||n==="url")return{kind:"url",method:typeof t.method=="string"?t.method:void 0,url:typeof t.url=="string"?t.url:e.action};if(n==="search")return{kind:"search",query:typeof t.query=="string"?t.query:e.action,scope:typeof t.scope=="string"?t.scope:void 0};if(n==="invocation"||n==="agent_call"||n==="skill_call")return{kind:"invocation",kind2:typeof t.kind=="string"?t.kind:n,name:typeof t.name=="string"?t.name:e.toolName,description:typeof t.description=="string"?t.description:void 0};if(n==="todo"||n==="todo_list")return{kind:"todo",items:(Array.isArray(t.items)?t.items:[]).map(i=>{const u=i??{};return{title:typeof u.title=="string"?u.title:"",status:typeof u.status=="string"?u.status:"pending"}})};if(n==="plan_review"){const s=typeof t.plan=="string"?t.plan:"",o=typeof t.path=="string"?t.path:void 0,u=(Array.isArray(t.options)?t.options:[]).map(p=>{const f=p??{},v=typeof f.label=="string"?f.label:"";if(!v)return null;const w=typeof f.description=="string"?f.description:void 0;return{label:v,description:w}}).filter(p=>p!==null);return{kind:"plan_review",plan:s,path:o,options:u.length>0?u:void 0}}return{kind:"generic",summary:e.action}}function Gb(e){const t=`
+`,n=`
+ `,s=e.indexOf(t),o=e.lastIndexOf(n);return s>=0&&o>=s+t.length?e.slice(s+t.length,o):Qb(e)}function Qb(e){const t=e.split(`
+`);return t.length>=2&&t[0]?.startsWith(""?t.slice(1,-1).join(`
+`):e}function Yb(e){const t=e.metadata?.origin;if(t?.kind==="cron_job"||t?.kind==="cron_missed")return t.kind}function Zb(e){const t=e.content.filter(n=>n.type==="text").map(n=>n.text).join(`
+`);return Gb(t)}function Xb(e,t){const n=e.metadata?.origin??{},s=Zb(e);return t==="cron_missed"?{text:s,cron:{missedCount:typeof n.count=="number"?n.count:void 0}}:{text:s,cron:{jobId:typeof n.jobId=="string"?n.jobId:void 0,cron:typeof n.cron=="string"?n.cron:void 0,recurring:typeof n.recurring=="boolean"?n.recurring:void 0,coalescedCount:typeof n.coalescedCount=="number"?n.coalescedCount:void 0,stale:typeof n.stale=="boolean"?n.stale:void 0}}}function Jb(e,t,n){const{text:s,cron:o}=Xb(e,n);return{id:e.id,role:"cron",no:t,text:s,createdAt:e.createdAt,cron:o}}function ew(e){const t=e.metadata?.origin,n=t?.kind;return n===void 0||n==="user"?!0:n==="skill_activation"||n==="plugin_command"?t?.trigger==="user-slash":!1}function tw(e){return e.metadata?.origin?.kind==="compaction_summary"}function Ir(e,t){return e===null?!1:e.promptId===void 0||t===void 0||e.promptId===t}function nw(e){if(!e||e.length===0)return;const t="Plan saved to: ";for(const n of e)if(n.startsWith(t))return n.slice(t.length).trim()}function sw(e){let t="",n="";const s=[],o=[];for(const i of e)i.type==="text"?t+=i.text:i.type==="thinking"?n+=i.thinking:i.type==="toolUse"?s.push(i.toolCallId):o.push(JSON.stringify(i));return s.sort(),o.sort(),{text:t,thinking:n,toolIds:s,rest:o}}function ow(e,t){return t.text!==""&&t.text!==e.text||t.thinking!==""&&t.thinking!==e.thinking?!1:t.toolIds.every(n=>e.toolIds.includes(n))&&t.rest.every(n=>e.rest.includes(n))}function rc(e,t,n,s=!0,o={}){const i=[];let u=1;const p=new Map;for(const m of t)p.set(m.toolCallId,m);let f=null;function v(m=!1){if(!f)return;const _=f;if(f=null,!m||!s)for(let y=0;y<_.tools.length;y++){const g=_.tools[y];if(g.status!=="running")continue;const k={...g,status:"ok"};_.tools[y]=k;const T=_.blocks.find(S=>S.kind==="tool"&&S.tool.id===k.id);T&&T.kind==="tool"&&(T.tool=k)}i.push({id:_.id,role:"assistant",no:u++,text:_.textParts.join(`
+`),thinking:_.thinkingParts.length>0?_.thinkingParts.join(`
+`):void 0,tools:_.tools.length>0?_.tools:void 0,blocks:_.blocks.length>0?_.blocks:void 0,approval:_.approval,approvalId:_.approvalId,durationMs:_.durationMs,createdAt:_.createdAt})}function w(m,_){for(const y of _)if(y.type==="text"){if(y.text){m.textParts.push(y.text);const g=m.blocks.at(-1);g&&g.kind==="text"?g.text+=`
+`+y.text:m.blocks.push({kind:"text",text:y.text})}}else if(y.type==="thinking"){if(y.thinking){m.thinkingParts.push(y.thinking);const g=m.blocks.at(-1);g&&g.kind==="thinking"?g.thinking+=`
+`+y.thinking:m.blocks.push({kind:"thinking",thinking:y.thinking})}}else if(y.type==="toolUse"){const g=p.get(y.toolCallId),k={id:y.toolCallId,name:y.toolName,arg:typeof y.input=="string"?y.input:JSON.stringify(y.input),status:"running",output:y.outputLines,planPath:y.toolName==="ExitPlanMode"?o[y.toolCallId]?.path:void 0};m.tools.push(k),m.blocks.push({kind:"tool",tool:k}),g&&(m.approval=Kb(g),m.approvalId=g.approvalId)}else if(y.type==="toolResult"){const g=m.tools.findIndex(k=>k.id===y.toolCallId);if(g!==-1){const k=m.tools[g],T={...k,status:y.isError?"error":"ok",output:Ub(y.output),media:y.isError?void 0:Hb(k.name,y.output)};T.name==="ExitPlanMode"&&!T.planPath&&(T.planPath=nw(T.output)),m.tools[g]=T;const S=m.blocks.find(O=>O.kind==="tool"&&O.tool.id===y.toolCallId);S&&S.kind==="tool"&&(S.tool=T)}}}function x(m,_){for(const y of _){if(y.type!=="toolUse"||!y.outputLines?.length)continue;const g=m.tools.findIndex(O=>O.id===y.toolCallId);if(g===-1)continue;const k=m.tools[g];if(k.output!==void 0)continue;const T={...k,output:y.outputLines};m.tools[g]=T;const S=m.blocks.find(O=>O.kind==="tool"&&O.tool.id===y.toolCallId);S&&S.kind==="tool"&&(S.tool=T)}}function h(m){if(m.type==="image"||m.type==="video"){const _=m.type,y=m.source;if(y.kind==="url")return{url:y.url,kind:_};if(y.kind==="base64")return{url:`data:${y.mediaType};base64,${y.data}`,kind:_};if(y.kind==="file"&&n)return{url:n(y.fileId),kind:_,fileId:y.fileId}}if(m.type==="file"&&n){if(m.mediaType.startsWith("image/"))return{url:n(m.fileId),kind:"image",fileId:m.fileId};if(m.mediaType.startsWith("video/"))return{url:n(m.fileId),kind:"video",fileId:m.fileId}}}for(const m of e){if(m.role==="system")continue;const _=m.metadata?.[Ou];if(_!==void 0){Ir(f,m.promptId)||(v(),f={id:m.id,promptId:m.promptId,textParts:[],thinkingParts:[],tools:[],blocks:[],approval:void 0,approvalId:void 0,foldedSigs:[],durationMs:void 0,createdAt:m.createdAt}),f?.blocks.push({kind:"error",text:_.message,code:_.code});continue}if(tw(m)){v();const S=m.metadata?.[Ru];i.push({id:m.id,role:"compaction",no:u,text:m.content.filter(O=>O.type==="text").map(O=>O.text).join(`
+`),compaction:{trigger:S?.trigger,tokensBefore:S?.tokensBefore,tokensAfter:S?.tokensAfter}});continue}if(m.role==="user"){const S=Yb(m);if(v(),S!==void 0){i.push(Jb(m,u++,S));continue}if(!ew(m))continue;const O=m.metadata?.origin,D=O?.kind==="skill_activation"&&O?.trigger==="user-slash",E=O?.kind==="plugin_command"&&O?.trigger==="user-slash",B=[],q=[];for(const V of m.content){if(V.type==="text")if(D)B.push(O.skillArgs??"");else if(E)B.push(O.commandArgs??"");else{const P=Rb(V.text);if(P&&(P.kind==="video"||P.kind==="image")&&n){const oe=Db(P.path);if(oe){q.push({url:n(oe),kind:P.kind,fileId:oe});continue}}const L=Fb(V.text);if(L){q.push({kind:"file",url:L.fileId&&n?n(L.fileId):"",fileId:L.fileId,name:L.name,mediaType:L.mediaType,size:L.size});continue}const ne=Lb(V.text);if(ne!==V.text&&ne.trim().length===0)continue;B.push(ne)}const b=h(V);if(b){q.push({url:b.url,kind:b.kind,name:V.type==="file"?V.name:void 0,fileId:b.fileId});continue}V.type==="file"&&n&&q.push({kind:"file",url:n(V.fileId),fileId:V.fileId,name:V.name,mediaType:V.mediaType||void 0,size:V.size})}i.push({id:m.id,role:"user",no:u++,text:B.join(`
+`),attachments:q.length>0?q:void 0,skillActivation:D?{name:O.skillName??"",args:O.skillArgs}:void 0,pluginCommand:E?{pluginId:O.pluginId??"",commandName:O.commandName??"",args:O.commandArgs}:void 0,createdAt:m.createdAt});continue}if(m.role==="tool"){f&&w(f,m.content);continue}const y=m.promptId;Ir(f,y)?f!==null&&f.promptId===void 0&&y!==void 0&&(f.promptId=y):(v(),f={id:m.id,promptId:y,textParts:[],thinkingParts:[],tools:[],blocks:[],approval:void 0,approvalId:void 0,foldedSigs:[],durationMs:m.durationMs,createdAt:m.createdAt});const k=f;if(k===null)continue;const T=sw(m.content);if(k.promptId!==void 0&&k.foldedSigs.some(S=>ow(S,T))){x(k,m.content);continue}k.foldedSigs.push(T),w(k,m.content)}return v(!0),i}function iw(e,t){const{pushOperationFailure:n,nextOptimisticMsgId:s,connectEventsIfNeeded:o,getEventConn:i,resolveThinkingForPrompt:u}=t,p=I({}),f=$(()=>{const b=e.activeSessionId;if(!b)return null;const P=p.value[b];return P?{parentId:b,agentId:P.agentId}:null}),v=$(()=>f.value?.parentId??null),w=$(()=>f.value!==null),x=$(()=>{const b=f.value;return b?!!e.sideChatSendingByAgent[b.agentId]:!1}),h=$(()=>{const b=f.value;return b?e.sideChatSendingByAgent[b.agentId]?!0:(e.tasksBySession[b.parentId]??[]).some(P=>P.id===b.agentId&&P.status==="running"):!1}),m=$(()=>{const b=f.value;if(!b)return[];const P=e.sideChatMessagesByAgent[b.agentId]??[];return rc(P,[],L=>Te().getFileUrl(L),h.value)});function _(b,P){e.sideChatMessagesByAgent={...e.sideChatMessagesByAgent,[b]:P(e.sideChatMessagesByAgent[b]??[])}}function y(b,P){_(b,L=>[...L,P])}function g(b){_(b,P=>{const L=[...P].reverse().findIndex(oe=>oe.role==="user");if(L===-1)return P;const ne=P.length-1-L;return P.filter((oe,ge)=>ge!==ne)})}function k(b,P){_(b,L=>{const ne=[...L];for(let oe=ne.length-1;oe>=0;oe-=1){const ge=ne[oe];if(ge.role==="user")return ne[oe]={...ge,promptId:ge.promptId??P},ne}return L})}function T(b,P,L){L&&_(b,ne=>{const oe=ne.at(-1);if(oe?.role==="assistant"){const ge=oe.content[0],ce=ge?.type==="text"?ge.text:"";return[...ne.slice(0,-1),{...oe,content:[{type:"text",text:`${ce}${L}`}]}]}return[...ne,{id:s(),sessionId:P,role:"assistant",content:[{type:"text",text:L}],createdAt:new Date().toISOString()}]})}function S(b,P,L){if(e.sideChatSendingByAgent={...e.sideChatSendingByAgent,[b]:!1},!L)return;const oe=(e.sideChatMessagesByAgent[b]??[]).at(-1);(oe?.role==="assistant"&&oe.content[0]?.type==="text"?oe.content[0].text:"").trim().length>0||T(b,P,L)}async function O(b){const P=e.activeSessionId;P&&await D(P,b)}async function D(b,P){if(!p.value[b]){let L;try{({agentId:L}=await Te().startBtw(b))}catch(ne){n("openSideChat",ne,{sessionId:b});return}e.sideChatMessagesByAgent={...e.sideChatMessagesByAgent,[L]:e.sideChatMessagesByAgent[L]??[]},p.value={...p.value,[b]:{agentId:L}},o(),i()?.markSideChannelAgent(L)}P&&P.trim()&&await E(b,P.trim())}async function E(b,P){const L=p.value[b],ne=P.trim();if(!L||!ne)return;const oe=b,ge=L.agentId;e.sideChatSendingByAgent={...e.sideChatSendingByAgent,[ge]:!0};const ce={id:s(),sessionId:oe,role:"user",content:[{type:"text",text:ne}],createdAt:new Date().toISOString(),metadata:{"kimiWeb.optimisticUserMessage":!0}};y(ge,ce);try{const Q=e.sessions.find(ye=>ye.id===oe),ie=(Q?.model&&Q.model.length>0?Q.model:e.defaultModel)??void 0,te=await Te().submitPrompt(oe,{content:[{type:"text",text:ne}],agentId:ge,model:ie,thinking:await u(oe,ie)??e.thinking,permissionMode:e.permission,planMode:e.planModeBySession[oe]??!1,swarmMode:e.swarmModeBySession[oe]??!1,supermoonMode:e.supermoonModeBySession[oe]??!1});k(ge,te.promptId),e.sideChatUserMessageIdsBySession={...e.sideChatUserMessageIdsBySession,[oe]:[...e.sideChatUserMessageIdsBySession[oe]??[],te.userMessageId]}}catch(Q){n("sendSideChatPrompt",Q,{sessionId:oe}),g(ge),e.sideChatSendingByAgent={...e.sideChatSendingByAgent,[ge]:!1}}}function B(){const b=e.activeSessionId;if(!b)return;const{[b]:P,...L}=p.value;p.value=L}async function q(b){const P=f.value;P&&await E(P.parentId,b)}function V(b){if(!p.value[b])return;const{[b]:P,...L}=p.value;p.value=L}return{sideChatTargetBySession:p,sideChatSessionId:v,sideChatVisible:w,sideChatSending:x,sideChatRunning:h,sideChatTurns:m,appendSideChatAssistantText:T,finishSideChatAgent:S,openSideChat:O,openSideChatOn:D,closeSideChat:B,sendSideChatPrompt:q,clearSideChatForSession:V}}const aw="kimiWeb.optimisticUserMessage",lw=1e6,Ar="Sub Agent";function rw(){return{sessions:[],activeSessionId:void 0,messagesBySession:{},approvalsBySession:{},planReviewByToolCallId:{},questionsBySession:{},tasksBySession:{},goalBySession:{},goalVersionBySession:{},lastSeqBySession:{},turnActiveBySession:{},compactionBySession:{},warnings:[]}}function uw(e){return{...e,sessions:e.sessions,messagesBySession:{...e.messagesBySession},approvalsBySession:{...e.approvalsBySession},planReviewByToolCallId:{...e.planReviewByToolCallId},questionsBySession:{...e.questionsBySession},tasksBySession:{...e.tasksBySession},goalBySession:{...e.goalBySession},goalVersionBySession:{...e.goalVersionBySession},lastSeqBySession:{...e.lastSeqBySession},turnActiveBySession:{...e.turnActiveBySession},compactionBySession:{...e.compactionBySession},warnings:[...e.warnings]}}function cw(e,t,n){if(t!==void 0&&n!==void 0&&n>0){const s=e.lastSeqBySession[t]??0;n>s&&(e.lastSeqBySession[t]=n)}}function ga(e){return e.role==="user"&&e.metadata?.[aw]===!0}function dw(e){const t=e.metadata?.origin;return t?.kind==="cron_job"||t?.kind==="cron_missed"}function pw(e,t){return JSON.stringify(e.content)===JSON.stringify(t.content)}const fw=/^<(image|video|audio)\s+path="[^"]+"><\/\1>$/;function Tr(e){let t="",n=0;for(const s of e.content)s.type==="text"?fw.test(s.text.trim())?n+=1:t+=s.text:(s.type==="image"||s.type==="video"||s.type==="file")&&(n+=1);return{text:t,media:n}}function mw(e,t){const n=Tr(e),s=Tr(t);return n.text===s.text&&n.media===s.media}function vw(e,t){const n=t.promptId;if(n!==void 0)for(let s=e.length-1;s>=0;s--){const o=e[s];if(ga(o)&&o.promptId===n)return s}for(let s=e.length-1;s>=0;s--){const o=e[s];if(ga(o)&&pw(o,t))return s}for(let s=e.length-1;s>=0;s--){const o=e[s];if(ga(o)&&mw(o,t))return s}return-1}function hw(e,t,n){const s=e.findIndex(p=>p.content.some(f=>f.type==="toolUse"&&f.toolCallId===t));if(s===-1)return e;const o=e[s];let i=!1;const u=o.content.map(p=>p.type!=="toolUse"||p.toolCallId!==t?p:(i=!0,{...p,outputLines:[...p.outputLines??[],n]}));return i?[...e.slice(0,s),{...o,content:u},...e.slice(s+1)]:e}const gw={"provider.connection_error":"connection","provider.auth_error":"auth","provider.rate_limit":"rateLimit","provider.overloaded":"overloaded","provider.filtered":"filtered","provider.api_error":"api","provider.usage_limit":"usageLimit","context.overflow":"contextOverflow"},yw=new Set(["provider.usage_limit"]);function kw(e){const t=pt.global.t,n=[],s=(u,p)=>{typeof p=="number"||typeof p=="boolean"?n.push({label:u,value:String(p)}):typeof p=="string"&&p.length>0&&n.push({label:u,value:p})};s(t("warnings.details.code"),e.code);const o=e.details??{};s(t("warnings.details.status"),o.statusCode),s(t("warnings.details.requestId"),o.requestId),s(t("warnings.details.errorName"),e.name);for(const[u,p]of Object.entries(o))u==="statusCode"||u==="requestId"||s(u,p);const i=(e.code!==void 0?gw[e.code]:void 0)??"title";return{severity:"error",title:t(`warnings.agentError.${i}`),message:e.message,details:n.length>0?n:void 0,sticky:e.code!==void 0&&yw.has(e.code)?!0:void 0}}function bw(e,t,n){const s=uw(e);switch(cw(s,n.sessionId,n.seq),t.type){case"sessionCreated":{s.sessions.some(i=>i.id===t.session.id)||(s.sessions=[t.session,...s.sessions]);break}case"sessionUpdated":{s.sessions=s.sessions.map(o=>o.id===t.session.id?t.session:o);break}case"sessionDeleted":{const o=t.sessionId;s.sessions=s.sessions.filter(i=>i.id!==o),delete s.messagesBySession[o],delete s.tasksBySession[o],delete s.goalBySession[o],delete s.approvalsBySession[o],delete s.questionsBySession[o],delete s.lastSeqBySession[o],delete s.turnActiveBySession[o],s.activeSessionId===o&&(s.activeSessionId=void 0);break}case"sessionWorkChanged":{s.sessions=s.sessions.map(o=>o.id!==t.sessionId?o:{...o,busy:t.busy,mainTurnActive:t.mainTurnActive??(t.busy?o.mainTurnActive:!1),pendingInteraction:t.pendingInteraction??o.pendingInteraction,lastTurnReason:t.lastTurnReason}),t.mainTurnActive===!0?s.turnActiveBySession[t.sessionId]=!0:(t.mainTurnActive===!1||!t.busy)&&delete s.turnActiveBySession[t.sessionId];break}case"sessionMetaUpdated":{s.sessions=s.sessions.map(o=>o.id===t.sessionId?{...o,title:t.title??o.title,lastPrompt:t.lastPrompt??o.lastPrompt}:o);break}case"sessionUsageUpdated":{s.sessions=s.sessions.map(o=>{if(o.id!==t.sessionId)return o;const i=t.model&&t.model.length>0?t.model:o.model;return{...o,usage:t.usage,model:i}});break}case"historyCompacted":break;case"compactionStarted":{s.compactionBySession={...s.compactionBySession,[t.sessionId]:{status:"running",trigger:t.trigger}};break}case"compactionCompleted":{const o=t.sessionId,i=s.compactionBySession[o],{[o]:u,...p}=s.compactionBySession;if(s.compactionBySession=p,Object.prototype.hasOwnProperty.call(s.messagesBySession,o)){const f=s.messagesBySession[o]??[],v=`compaction_${o}_${n.seq}`;if(!f.some(w=>w.id===v)){const w={trigger:i?.trigger??"auto",tokensBefore:t.tokensBefore,tokensAfter:t.tokensAfter};s.messagesBySession[o]=[...f,{id:v,sessionId:o,role:"assistant",content:t.summary?[{type:"text",text:t.summary}]:[],createdAt:new Date().toISOString(),metadata:{origin:{kind:"compaction_summary"},[Ru]:w}}]}}break}case"compactionCancelled":{const{[t.sessionId]:o,...i}=s.compactionBySession;s.compactionBySession=i;break}case"messageCreated":{const o=t.message.sessionId,i=t.message.createdAt;s.sessions=s.sessions.map(f=>f.id===o&&i>f.updatedAt?{...f,updatedAt:i}:f);const u=s.messagesBySession[o]??[];if(!u.some(f=>f.id===t.message.id)){if(t.message.role==="user"&&!dw(t.message)){const f=vw(u,t.message);if(f!==-1){const v=[...u],w=v[f];v[f]={...t.message,id:w.id,promptId:t.message.promptId??w.promptId,metadata:{...t.message.metadata,...w.metadata}},s.messagesBySession[o]=v;break}}s.messagesBySession[o]=[...u,t.message]}break}case"messageUpdated":{const o=t.sessionId,i=s.messagesBySession[o]??[];s.messagesBySession[o]=i.map(u=>u.id!==t.messageId?u:{...u,content:t.content,durationMs:t.durationMs??u.durationMs});break}case"assistantDelta":{const o=t.sessionId,i=s.messagesBySession[o]??[];s.messagesBySession[o]=i.map(u=>{if(u.id!==t.messageId)return u;const p=[...u.content],f=t.contentIndex;for(;p.length<=f;)p.push({type:"text",text:""});const v=p[f];let w;return t.delta.text!==void 0?v.type==="text"?w={type:"text",text:v.text+t.delta.text}:w={type:"text",text:t.delta.text}:t.delta.thinking!==void 0?v.type==="thinking"?w={type:"thinking",thinking:v.thinking+t.delta.thinking,signature:v.signature}:w={type:"thinking",thinking:t.delta.thinking}:w=v,p[f]=w,{...u,content:p}});break}case"toolOutput":{const o=t.sessionId,i=s.messagesBySession[o]??[];s.messagesBySession[o]=hw(i,t.toolCallId,t.outputChunk);break}case"approvalRequested":{const o=t.sessionId,i=s.approvalsBySession[o]??[];i.some(f=>f.approvalId===t.approval.approvalId)||(s.approvalsBySession[o]=[...i,t.approval]);const p=t.approval.display;p?.kind==="plan_review"&&typeof p.plan=="string"&&p.plan.length>0&&(s.planReviewByToolCallId={...s.planReviewByToolCallId,[t.approval.toolCallId]:{plan:p.plan,path:typeof p.path=="string"?p.path:void 0}});break}case"approvalResolved":case"approvalExpired":{const o=t.sessionId,i=t.approvalId,u=s.approvalsBySession[o]??[];s.approvalsBySession[o]=u.filter(p=>p.approvalId!==i);break}case"questionRequested":{const o=t.sessionId,i=s.questionsBySession[o]??[];i.some(p=>p.questionId===t.question.questionId)||(s.questionsBySession[o]=[...i,t.question]);break}case"questionAnswered":case"questionDismissed":{const o=t.sessionId,i=t.questionId,u=s.questionsBySession[o]??[];s.questionsBySession[o]=u.filter(p=>p.questionId!==i);break}case"taskCreated":{const o=t.sessionId,i=s.tasksBySession[o]??[],u=i.findIndex(p=>p.id===t.task.id);if(u===-1)s.tasksBySession[o]=[...i,t.task];else{const p=[...i],f=i[u];p[u]={...t.task,outputLines:f.outputLines,text:f.text,description:t.task.description===Ar&&f.description!==Ar?f.description:t.task.description,swarmIndex:t.task.swarmIndex??f.swarmIndex,parentToolCallId:t.task.parentToolCallId??f.parentToolCallId,subagentType:t.task.subagentType??f.subagentType,model:t.task.model??f.model,thinkingEffort:t.task.thinkingEffort??f.thinkingEffort,runInBackground:t.task.runInBackground??f.runInBackground,backgroundTaskId:t.task.backgroundTaskId??f.backgroundTaskId},s.tasksBySession[o]=p}break}case"taskProgress":{const o=t.sessionId,i=s.tasksBySession[o]??[];s.tasksBySession[o]=i.map(u=>{if(u.id!==t.taskId)return u;if(u.kind==="subagent"&&t.kind==="text")return{...u,text:((u.text??"")+t.outputChunk).slice(0,lw)};const p=u.outputLines??[];if(p.at(-1)===t.outputChunk)return u;const f=[...p,t.outputChunk];return{...u,outputLines:u.kind==="subagent"?f:f.slice(-40)}});break}case"taskCompleted":{const o=t.sessionId,i=s.tasksBySession[o]??[];s.tasksBySession[o]=i.map(u=>u.id!==t.taskId?u:{...u,status:t.status,outputPreview:t.outputPreview,outputBytes:t.outputBytes});break}case"goalUpdated":{const o=t.sessionId;s.goalVersionBySession[o]=(s.goalVersionBySession[o]??0)+1,t.goal===null||t.goal.status==="complete"?delete s.goalBySession[o]:s.goalBySession[o]=t.goal;break}case"configChanged":{s.config=t.config;break}case"modelCatalogChanged":break;case"agentDelta":case"agentTurnEnded":break;case"promptCompleted":case"promptAborted":break;case"turnActiveChanged":{s.sessions=s.sessions.map(o=>o.id===t.sessionId?{...o,mainTurnActive:t.active}:o),t.active?s.turnActiveBySession[t.sessionId]=!0:delete s.turnActiveBySession[t.sessionId];break}case"unknown":{const o=t.raw;if(!(o&&o._noop===!0))if(o&&o._agentError)s.warnings=[...s.warnings,kw(o)];else if(o&&o._agentWarning){const i=o.message??o.code??"agent warning";s.warnings=[...s.warnings,`${pt.global.t("warnings.noteLabel")}: ${i}`]}else{const i=o?.type??"(unknown)";s.warnings=[...s.warnings,`Unhandled event: ${i}`]}break}}return s}function ww(e){return e==="in_progress"?"in_progress":e==="done"||e==="completed"?"done":"pending"}function Sw(e){for(let t=e.length-1;t>=0;t--){const n=e[t];if(n.role==="assistant")for(let s=n.content.length-1;s>=0;s--){const o=n.content[s];if(o.type!=="toolUse"||ho(o.toolName)!=="todo")continue;let i=o.input;if(typeof i=="string")try{i=JSON.parse(i)}catch{continue}const u=i?.todos;if(Array.isArray(u))return u.flatMap(p=>{const f=p??{},v=typeof f.title=="string"?f.title:typeof f.content=="string"?f.content:"";return v?[{title:v,status:ww(f.status)}]:[]})}}return[]}const Cw=["queued","working","suspended","completed","failed"];function uc(e){return e.status==="completed"?"completed":e.status==="failed"||e.status==="cancelled"?"failed":e.subagentPhase?e.subagentPhase:"working"}function _w(){return{queued:0,working:0,suspended:0,completed:0,failed:0}}function $w(e){const t=new Map;for(const n of e){if(n.kind!=="subagent"||n.swarmIndex===void 0)continue;const s=n.parentToolCallId??"swarm",o=t.get(s)??[];o.push({id:n.id,name:n.description,subagentType:n.subagentType,phase:uc(n),summary:n.outputPreview,outputLines:n.outputLines,text:n.text,suspendedReason:n.suspendedReason,swarmIndex:n.swarmIndex}),t.set(s,o)}return[...t.entries()].map(([n,s])=>{const o=s.toSorted((u,p)=>u.swarmIndex-p.swarmIndex||u.id.localeCompare(p.id)),i=_w();for(const u of o)i[u.phase]++;return{id:n,members:o,counts:i}}).filter(n=>n.members.length>1).toSorted((n,s)=>{const o=n.members.at(0)?.swarmIndex??0,i=s.members.at(0)?.swarmIndex??0;return o!==i?o-i:n.id.localeCompare(s.id)})}function Mw(e){let t=0,n=0;for(const s of e){n+=s.members.length;for(const o of Cw)(o==="completed"||o==="failed")&&(t+=s.counts[o])}return{done:t,total:n}}function xw(e){const t=new Map;for(const n of e){if(n.kind!=="subagent"||!n.parentToolCallId)continue;const s=t.get(n.parentToolCallId)??[];s.push({id:n.id,name:n.description,subagentType:n.subagentType,phase:uc(n),summary:n.outputPreview,outputLines:n.outputLines,text:n.text,suspendedReason:n.suspendedReason,swarmIndex:n.swarmIndex??Number.MAX_SAFE_INTEGER}),t.set(n.parentToolCallId,s)}for(const[n,s]of t)t.set(n,s.toSorted((o,i)=>o.swarmIndex-i.swarmIndex||o.id.localeCompare(i.id)));return t}const xs=tc(),ps=L2(),Jo=q2(),$i=Qk(),cc=We.permission,dc=We.activeWorkspace,pc=We.planMode,fc=We.planArmed,mc=We.swarmMode,vc=We.supermoonMode,hc=We.goalMode,Pr=40401,gc=We.onboarded;ro(We.codeFont);ro(We.theme);ro(We.thinking);function Iw(){try{const e=It(cc);if(e==="auto"||e==="yolo"||e==="manual")return e}catch{}return"manual"}function Aw(e){try{Bt(cc,e)}catch{}}function qo(e){const t=It(e);if(!t)return{};try{const n=JSON.parse(t);if(!n||typeof n!="object"||Array.isArray(n))return{};const s={};for(const[o,i]of Object.entries(n))i===!0&&(s[o]=!0);return s}catch{return{}}}function oi(e,t){try{const n={};for(const[s,o]of Object.entries(t))o&&(n[s]=!0);Bt(e,JSON.stringify(n))}catch{}}function yc(){oi(pc,N.planModeBySession)}function kc(){oi(fc,N.planArmedBySession)}function bc(){oi(mc,N.swarmModeBySession)}function wc(){oi(vc,N.supermoonModeBySession)}function Sc(){oi(hc,N.goalModeBySession)}function Tw(){try{return It(dc)}catch{return null}}const Cc=We.hiddenWorkspaces;function Pw(){try{const e=It(Cc);if(!e)return[];const t=JSON.parse(e);return Array.isArray(t)?t.filter(n=>typeof n=="string"):[]}catch{return[]}}function Ew(e){try{Bt(Cc,JSON.stringify(e))}catch{}}function Lw(e){try{Bt(dc,e)}catch{}}function Bw(e,t){if(t&&e.startsWith(t)){const s=e.slice(t.length);return s?`~${s}`:"~"}const n=e.match(/^\/(?:Users|home)\/[^/]+(\/.*)?$/);return n?`~${n[1]??""}`:e}const N=Bn({...rw(),connected:!1,serverVersion:"",dangerousBypassAuth:!1,backend:"v1",workspaceName:"kimi-web",connection:"disconnected",permission:Iw(),thinking:void 0,thinkingBySession:{},planModeBySession:qo(pc),planArmedBySession:qo(fc),swarmModeBySession:qo(mc),supermoonModeBySession:qo(vc),modeVersionBySession:{},supermoonPreviousEffortBySession:{},goalModeBySession:qo(hc),loading:!1,sessionLoading:!1,queuedBySession:{},gitStatusBySession:{},promptIdBySession:{},inFlightBySession:{},unreadBySession:ol(),authReady:!1,defaultModel:null,managedProviderStatus:null,workspaces:[],activeWorkspaceId:Tw(),fsHome:null,recentRoots:[],hiddenWorkspaceRoots:Pw(),availableOpenInApps:[],config:null,sideChatMessagesByAgent:{},sideChatSendingByAgent:{},sideChatUserMessageIdsBySession:{},messagesLoadingMoreBySession:{},messagesHasMoreBySession:{},messagesLoadMoreErrorBySession:{},sessionsHasMoreByWorkspace:{},sessionsLoadingMoreByWorkspace:{},sessionsCursorByWorkspace:{},sessionsInitialCountByWorkspace:{},sessionsFullyLoaded:!1}),Do=Bn({planMode:!1,planArmed:!1,swarmMode:!1,supermoonMode:!1,goalMode:!1,planModeTouched:!1});function _c(e){N.sessions=e}function Yi(e,t){N.sessions=N.sessions.map(n=>n.id===e?t(n):n)}function Rw(e){N.sessions=[e,...N.sessions.filter(t=>t.id!==e.id)]}function Ow(e){N.sessions=[...N.sessions,e]}function Dw(e){N.sessions=N.sessions.filter(t=>t.id!==e)}function $c(){const e=N.activeSessionId;e&&N.unreadBySession[e]&&typeof document<"u"&&document.visibilityState==="visible"&&(N.unreadBySession={...N.unreadBySession,[e]:!1},il({[e]:!1}))}typeof window<"u"&&window.addEventListener("storage",e=>{e.key===We.unread&&(N.unreadBySession=ol(),$c())});function ja(){if(xn===null||!xn.health().stale)return;Yt("ws:stale-reconnect",{sessionId:N.activeSessionId,status:"stale"}),As("ws: stale socket on focus, reconnecting",{activeSessionId:N.activeSessionId}),xn.reconnect();const e=N.activeSessionId;e&&zi.request(e)}typeof document<"u"&&document.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"&&($c(),ja())});typeof window<"u"&&(window.addEventListener("focus",ja),window.addEventListener("online",ja));function $l(e){N.activeSessionId=e}function zw(e){N.messagesBySession=e}function Fw(e,t){N.messagesBySession={...N.messagesBySession,[e]:t}}function Mc(e,t){N.messagesBySession={...N.messagesBySession,[e]:t(N.messagesBySession[e]??[])}}function Nw(e){const{[e]:t,...n}=N.messagesBySession;N.messagesBySession=n}function xc(e){xn?.unsubscribe(e),c4(e),Oi.discard(({meta:t})=>t.sessionId===e),Dw(e),Nw(e),delete N.approvalsBySession[e],delete N.questionsBySession[e],delete N.tasksBySession[e],delete N.goalBySession[e],delete N.gitStatusBySession[e],delete N.lastSeqBySession[e],delete N.compactionBySession[e],delete N.messagesLoadingMoreBySession[e],delete N.messagesHasMoreBySession[e],delete N.messagesLoadMoreErrorBySession[e],delete Ka[e],Di.delete(e),Mi.delete(e),Fc.delete(e),gb(e),delete N.queuedBySession[e],delete N.promptIdBySession[e],delete N.inFlightBySession[e],delete N.turnActiveBySession[e],delete N.planModeBySession[e],delete N.planArmedBySession[e],delete N.swarmModeBySession[e],delete N.supermoonModeBySession[e],delete N.modeVersionBySession[e],delete N.supermoonPreviousEffortBySession[e],delete N.goalModeBySession[e],delete N.thinkingBySession[e],yc(),kc(),bc(),wc(),Sc()}const Ic=I(null),Ac=I([]),Tc=I(!1),Pc=I(!1),Ec=I(null);async function ii(e){const t=N.modeVersionBySession[e]??0;let n;try{n=await Te().getSessionStatus(e)}catch{return}Yi(e,s=>({...s,model:n.model||s.model,usage:{...s.usage,contextTokens:n.contextTokens,contextLimit:n.maxContextTokens}})),Uk(N,e,t)&&(N.swarmModeBySession={...N.swarmModeBySession,[e]:n.swarmMode},N.planModeBySession={...N.planModeBySession,[e]:n.planMode},N.supermoonModeBySession={...N.supermoonModeBySession,[e]:n.supermoonMode}),n.thinkingEffort.length>0&&(N.thinkingBySession={...N.thinkingBySession,[e]:n.thinkingEffort})}async function qw(e){const t=N.goalVersionBySession[e]??0;let n;try{n=await Te().getSessionGoal(e)}catch{return}if((N.goalVersionBySession[e]??0)!==t)return;const s={...N.goalBySession};n===null||n.status==="complete"?delete s[e]:s[e]=n,N.goalBySession=s}function Lc(e,t){const n=t??N.activeSessionId;return n?Promise.resolve(Te().updateSession(n,e)).then(()=>ii(n)).then(()=>!0).catch(s=>(ai("persistSessionProfile",s,{sessionId:n}),!1)):Promise.resolve(!1)}const Bc=We.conversationToc;function Ww(){try{const e=It(Bc);return e===null?!0:e==="true"}catch{return!0}}function Hw(e){try{Bt(Bc,e?"true":"false")}catch{}}const Rc=I(Ww());function Uw(e){Rc.value=e,Hw(e)}function Vw(e){try{return It(e)??""}catch{return""}}const Oc=I(Vw(gc)==="1");function jw(e){Oc.value=e;try{Bt(gc,e?"1":"0")}catch{}}let xn=null,Er=0;function Dc(){return Er+=1,`msg_opt_${Date.now().toString(36)}_${Er}`}function Kw(e,t,n){const s={sessions:N.sessions,activeSessionId:N.activeSessionId,messagesBySession:N.messagesBySession,approvalsBySession:N.approvalsBySession,planReviewByToolCallId:N.planReviewByToolCallId,questionsBySession:N.questionsBySession,tasksBySession:N.tasksBySession,goalBySession:N.goalBySession,goalVersionBySession:N.goalVersionBySession,lastSeqBySession:N.lastSeqBySession,turnActiveBySession:N.turnActiveBySession,compactionBySession:N.compactionBySession,config:N.config,warnings:N.warnings},o=bw(s,e,{sessionId:t,seq:n});if(_c(o.sessions),$l(o.activeSessionId),zw(o.messagesBySession),N.approvalsBySession=o.approvalsBySession,N.planReviewByToolCallId=o.planReviewByToolCallId,N.questionsBySession=o.questionsBySession,N.tasksBySession=o.tasksBySession,N.goalBySession=o.goalBySession,N.goalVersionBySession=o.goalVersionBySession,N.lastSeqBySession=o.lastSeqBySession,N.turnActiveBySession=o.turnActiveBySession,N.compactionBySession=o.compactionBySession,N.config=o.config??null,N.warnings=o.warnings,e.type==="configChanged"&&(N.defaultModel=e.config.defaultModel??null),e.type==="modelCatalogChanged"&&(vt.loadModels(),vt.loadProviders()),e.type==="sessionUsageUpdated"){if(e.swarmMode!==void 0&&(N.swarmModeBySession={...N.swarmModeBySession,[e.sessionId]:e.swarmMode}),e.planMode!==void 0&&(N.planModeBySession={...N.planModeBySession,[e.sessionId]:e.planMode}),e.supermoonMode!==void 0){const i=N.supermoonModeBySession[e.sessionId]??!1;N.supermoonModeBySession={...N.supermoonModeBySession,[e.sessionId]:e.supermoonMode},e.supermoonMode&&!i?Le.pinSupermoonEffort(e.sessionId):!e.supermoonMode&&i&&Le.restoreSupermoonEffort(e.sessionId)}e.thinking!==void 0&&(N.thinkingBySession={...N.thinkingBySession,[e.sessionId]:e.thinking}),(e.planMode!==void 0||e.swarmMode!==void 0||e.supermoonMode!==void 0)&&cs(N,e.sessionId)}}function Gw(e,t){const n=N.lastSeqBySession[t.sessionId]??0,s=N.turnActiveBySession[t.sessionId]??!1;Kw(e,t.sessionId,t.seq);const o=$n.sideChatTargetBySession.value[t.sessionId];if(o){const{agentId:i}=o,u=t.sessionId;e.type==="agentDelta"&&e.agentId===i?e.delta.text&&$n.appendSideChatAssistantText(i,u,e.delta.text):e.type==="agentTurnEnded"&&e.agentId===i?$n.finishSideChatAgent(i,u):e.type==="taskProgress"&&e.taskId===i?$n.appendSideChatAssistantText(i,u,e.outputChunk):e.type==="taskCompleted"&&e.taskId===i&&$n.finishSideChatAgent(i,u,e.outputPreview)}if(e.type==="messageCreated"&&e.message.role==="user"&&e.message.promptId!==void 0){const i=e.message.sessionId;N.promptIdBySession[i]!==e.message.promptId&&(N.promptIdBySession={...N.promptIdBySession,[i]:e.message.promptId})}if(e.type==="assistantDelta"&&t.sessionId===N.activeSessionId&&xs.recordMoonDelta((e.delta.text?.length??0)+(e.delta.thinking?.length??0)),e.type==="turnActiveChanged"&&!e.active&&t.seq>n){const i=e.reason;wS(e.sessionId,i==="cancelled"||i==="failed"||i==="blocked"?"aborted":"idle",s)}e.type==="sessionWorkChanged"&&(e.mainTurnActive===!1&&s||e.mainTurnActive===void 0&&!e.busy)&&t.seq>n&&bS(e.sessionId),(e.type==="promptAborted"||e.type==="promptCompleted"&&e.reason==="blocked")&&t.seq>n&&N.promptIdBySession[e.sessionId]===e.promptId&&Le.finishPromptLocal(e.sessionId),e.type==="questionRequested"&&SS(e.sessionId,e.question),e.type==="approvalRequested"&&CS(e.sessionId,e.approval)}const Oi=t2(({appEvent:e,meta:t})=>Gw(e,t),({appEvent:e})=>Zk(e),{coalesce:s2});function zc(){if(xn!==null||typeof WebSocket>"u")return;Yt("ws:connection",{status:"connecting"}),N.connection="connecting",xn=Te().connectEvents({onEvent(t,n){if(t.type==="workspaceCreated"||t.type==="workspaceUpdated"||t.type==="workspaceDeleted"){Le.applyWorkspaceEvent(t);return}if(t.type==="pluginsChanged"||t.type==="capabilityChanged"){Rk(t);return}for(const s of n2({appEvent:t,meta:n}))Oi(s)},onResync(t,n,s){Yt("ws:resync",{sessionId:t,status:"required",seq:n}),Oi.flush(),Di.add(t),zi.request(t)},onError(t,n,s){Yt("ws:error",{status:"failed",errorCode:t,fatal:s}),Ml({severity:"error",title:pt.global.t("warnings.wsTitle"),message:n,details:[Et("message",n)].filter(o=>o!==void 0)})},onConnectionChange(t){Yt("ws:connection",{status:t?"connected":"disconnected"}),N.connected=t,N.connection=t?"connected":"disconnected",t&&(n4(),Le.refreshServerMeta())},onTerminalOutput(t,n,s,o){$i.handleOutput(t,n,s,o)},onTerminalExit(t,n,s){$i.handleExit(t,n,s)}}),$i.bindTransport(xn)}const Ka={},Di=new Set,Mi=new Set,Fc=new Set;function Qw(e){return Mn(e)&&e.code===Pr?!0:typeof e=="object"&&e!==null&&e.code===Pr}function Et(e,t){if(!(t==null||t===""))return{label:pt.global.t(`warnings.details.${e}`),value:Nc(t)}}function Nc(e){if(e instanceof Error)return typeof e.stack=="string"&&e.stack?e.stack:e.message?`${e.name}: ${e.message}`:e.name;if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean"||typeof e=="bigint")return String(e);try{return JSON.stringify(e)}catch{return String(e)}}function Yw(e){return e instanceof Error||typeof e=="object"&&e!==null&&typeof e.name=="string"?e.name:void 0}function Zw(e){return e instanceof Error||typeof e=="object"&&e!==null&&typeof e.message=="string"?e.message:void 0}function Xw(e){return e instanceof Error&&typeof e.stack=="string"&&e.stack?e.stack:void 0}function Jw(e){if(!(typeof e!="number"||!Number.isFinite(e)))return new Date(e).toISOString()}function Lr(e){if(!(typeof e!="number"||!Number.isFinite(e)))return`${Math.round(e)}ms`}function e4(e,t,n){const s=rl(t),o=Mn(t),i=s||o?t.timestamp:void 0,u=s||o?t.durationMs:void 0,p=[Et("operation",e),Et("sessionId",n??N.activeSessionId),Et("connection",N.connection),Et("timestamp",Jw(i??Date.now()))];return s?p.push(Et("duration",Lr(u)),Et("request",`${t.method} ${t.path}`),Et("endpoint",t.url),Et("requestId",t.requestId),Et("phase",t.phase),Et("timeout",`${t.timeoutMs}ms`),Et("status",t.status===void 0?void 0:`${t.status} ${t.statusText??""}`.trim()),Et("contentType",t.contentType),Et("responsePreview",t.bodyPreview),Et("cause",t.cause)):o?p.push(Et("duration",Lr(u)),Et("code",t.code),Et("requestId",t.requestId),Et("message",t.message),Et("details",t.details)):p.push(Et("errorName",Yw(t)),Et("message",Zw(t)??Nc(t)),Et("stack",Xw(t))),p.filter(f=>f!==void 0)}function t4(e,t,n={}){const s=rl(t),o=Mn(t),i=Qu(t),u=n.title??(i?pt.global.t("warnings.daemonTimeoutTitle"):s?pt.global.t("warnings.daemonNetworkTitle"):o?pt.global.t("warnings.daemonApiTitle"):pt.global.t("warnings.operationFailedTitle")),p=n.message??(i?pt.global.t("warnings.daemonTimeoutMessage"):s?pt.global.t("warnings.daemonNetworkMessage"):o?t.message:pt.global.t("warnings.operationFailedMessage"));return{severity:"error",title:u,message:p,details:e4(e,t,n.sessionId)}}function Ml(e){N.warnings=[...N.warnings,e].slice(-50)}function n4(){const e=pt.global.t("warnings.wsTitle"),t=N.warnings.filter(n=>!(typeof n=="object"&&n!==null&&n.severity==="error"&&n.title===e));t.length!==N.warnings.length&&(N.warnings=t)}function ai(e,t,n){console.error(`[kimi-web] operation failed: ${e}`,t);const s=Mn(t),o=rl(t);Yt("operation:failed",{sessionId:n?.sessionId,status:"failed",operation:e,errorName:t instanceof Error?t.name:typeof t,errorCode:s?t.code:void 0,requestId:s||o?t.requestId:void 0,phase:o?t.phase:void 0,httpStatus:o?t.status:void 0,timeout:Qu(t)}),Ml(t4(e,t,n))}const s4={40913:"warnings.goal.alreadyExists",40914:"warnings.goal.notFound",40915:"warnings.goal.statusInvalid",40916:"warnings.goal.notResumable",40918:"warnings.goal.objectiveTooLong"};function o4(e){if(!Mn(e))return;const t=s4[e.code];return t?pt.global.t(t):void 0}async function i4(e){if(xc(e),N.activeSessionId!==e)return;const t=N.sessions[0];t?await Le.selectSession(t.id,{urlMode:"replace"}):($l(void 0),N.sessionLoading=!1,Le.writeSessionUrl(void 0,"replace"))}const Br=new Set;async function a4(e){if(!Br.has(e)){Br.add(e);try{const t=await Te().getSessionWarnings(e),n=pt.global.t("warnings.noteLabel");for(const s of t)Ml(`${n}: ${s.message}`)}catch{}}}async function xl(e){const t=Le.localTurnStartState(e);try{const s=await Te().getSessionSnapshot(e);if(!N.sessions.some(f=>f.id===e))return"ok";Oi.flush();const o=N.lastSeqBySession[e]??0,i=Ka[e];if(!(Di.has(e)||Fi.has(e))&&i!==void 0&&i===s.epoch&&o>s.asOfSeq)return Mi.delete(e)||(Mi.add(e),zi.request(e)),"ok";if(!Le.isLocalTurnSnapshotCurrent(e,t))return Le.afterLocalTurnStartsSettle(e,()=>{zi.request(e)}),"ok";const p=Pa(s.session.usage);Yi(e,f=>({...s.session,model:s.session.model&&s.session.model.length>0?s.session.model:f.model,usage:p?f.usage:s.session.usage})),Fw(e,Vk(N.messagesBySession[e]??[],s.messages)),N.tasksBySession={...N.tasksBySession,[e]:jk(s.subagents,N.tasksBySession[e]??[])},N.messagesHasMoreBySession={...N.messagesHasMoreBySession,[e]:s.hasMoreMessages},N.approvalsBySession={...N.approvalsBySession,[e]:s.pendingApprovals};for(const f of s.pendingApprovals){const v=f.display;v?.kind==="plan_review"&&typeof v.plan=="string"&&v.plan.length>0&&(N.planReviewByToolCallId={...N.planReviewByToolCallId,[f.toolCallId]:{plan:v.plan,path:typeof v.path=="string"?v.path:void 0}})}N.questionsBySession={...N.questionsBySession,[e]:s.pendingQuestions},N.lastSeqBySession={...N.lastSeqBySession,[e]:s.asOfSeq},Ka[e]=s.epoch,Di.delete(e),Mi.delete(e),Le.handleSessionSnapshot(e,{inFlightTurn:s.inFlightTurn,busy:s.session.busy});{const f={...N.turnActiveBySession};s.session.mainTurnActive??(s.inFlightTurn!==null&&s.session.busy)?f[e]=!0:delete f[e],N.turnActiveBySession=f}return zc(),xn&&(xn.seedSnapshot(e,s),xn.subscribe(e,{seq:s.asOfSeq,epoch:s.epoch}),u4(e)),Fi.delete(e),p&&ii(e),a4(e),"ok"}catch(n){return Qw(n)?(await i4(e),"not-found"):(ai("getSessionSnapshot",n,{title:pt.global.t("warnings.sessionSnapshotTitle"),message:pt.global.t("warnings.sessionSnapshotMessage"),sessionId:e}),"failed")}}const zi=Kk(xl);function l4(e){return Object.prototype.hasOwnProperty.call(N.messagesBySession,e)}const r4=4,Is=[],Fi=new Set;function u4(e){const t=Is.indexOf(e);for(t!==-1&&Is.splice(t,1),Is.unshift(e);Is.length>r4;){let n=-1;for(let o=Is.length-1;o>=0;o--)if(Is[o]!==N.activeSessionId){n=o;break}if(n===-1)break;const[s]=Is.splice(n,1);if(s===void 0)break;xn?.unsubscribe(s),Fi.add(s)}}function c4(e){const t=Is.indexOf(e);t!==-1&&Is.splice(t,1),Fi.delete(e)}async function d4(e){return xl(e)}function Il(e,t){return(N.inFlightBySession[e]??!1)||(N.turnActiveBySession[e]??!1)||(t??N.sessions.find(n=>n.id===e)?.mainTurnActive??!1)}function Al(e){try{const t=new Date(e),s=Date.now()-t.getTime(),o=s/36e5;if(s<6e4)return pt.global.t("sessions.justNow");if(o<1)return`${Math.round(s/6e4)}m`;if(o<24)return`${Math.round(o)}h`;const i=s/864e5;return i<7?`${Math.round(i)}d`:i<30?`${Math.round(i/7)}w`:i<365?`${Math.round(i/30)}mo`:`${Math.round(i/365)}y`}catch{return e}}const p4=3e4,ei=I(0);let ya=null;function f4(){ya===null&&(ya=setInterval(()=>{ei.value=(ei.value+1)%Number.MAX_SAFE_INTEGER},p4),ya.unref?.())}function m4(e,t){const n=e.split(`
+`),s=t.split(`
+`),o=[];return n.forEach((i,u)=>{o.push({kind:"rem",gutter:String(u+1),text:`- ${i}`})}),s.forEach((i,u)=>{o.push({kind:"add",gutter:String(u+1),text:`+ ${i}`})}),o}function v4(e){const t=e.display??{},n=typeof t.kind=="string"?t.kind:"";if(n==="diff"){const s=typeof t.path=="string"?t.path:"";return Array.isArray(t.diff)?{kind:"diff",path:s,diff:t.diff}:typeof t.old_text=="string"&&typeof t.new_text=="string"?{kind:"diff",path:s,diff:m4(t.old_text,t.new_text)}:{kind:"diff",path:s,diff:[]}}if(n==="shell"||n==="command"){const s=typeof t.command=="string"?t.command:e.action,o=typeof t.cwd=="string"?t.cwd:void 0,i=typeof t.danger=="string"?t.danger:void 0;return{kind:"shell",command:s,cwd:o,danger:i}}if(n==="file_content"||n==="file"){const s=typeof t.path=="string"?t.path:"",o=typeof t.content=="string"?t.content:"",i=typeof t.language=="string"?t.language:void 0;return{kind:"file",path:s,content:o,language:i}}if(n==="file_op"||n==="fileop"){const s=typeof t.operation=="string"?t.operation:typeof t.op=="string"?t.op:n,o=typeof t.path=="string"?t.path:"",i=typeof t.detail=="string"?t.detail:void 0;return{kind:"fileop",op:s,path:o,detail:i}}if(n==="url_fetch"||n==="url"){const s=typeof t.url=="string"?t.url:e.action;return{kind:"url",method:typeof t.method=="string"?t.method:void 0,url:s}}if(n==="search"){const s=typeof t.query=="string"?t.query:e.action,o=typeof t.scope=="string"?t.scope:void 0;return{kind:"search",query:s,scope:o}}if(n==="invocation"||n==="agent_call"||n==="skill_call"){const s=typeof t.kind=="string"?t.kind:n,o=typeof t.name=="string"?t.name:e.toolName,i=typeof t.description=="string"?t.description:void 0;return{kind:"invocation",kind2:s,name:o,description:i}}if(n==="todo"||n==="todo_list")return{kind:"todo",items:(Array.isArray(t.items)?t.items:[]).map(i=>{const u=i??{};return{title:typeof u.title=="string"?u.title:"",status:typeof u.status=="string"?u.status:"pending"}})};if(n==="plan_review"){const s=typeof t.plan=="string"?t.plan:"",o=typeof t.path=="string"?t.path:void 0,u=(Array.isArray(t.options)?t.options:[]).map(p=>{const f=p??{},v=typeof f.label=="string"?f.label:"";if(!v)return null;const w=typeof f.description=="string"?f.description:void 0;return{label:v,description:w}}).filter(p=>p!==null);return{kind:"plan_review",plan:s,path:o,options:u.length>0?u:void 0}}return{kind:"generic",summary:e.action}}function h4(e){return{questionId:e.questionId,sessionId:e.sessionId,questions:e.questions.map(t=>({id:t.id,question:t.question,header:t.header,body:t.body,options:t.options.map(n=>({id:n.id,label:n.label,description:n.description,recommended:n.recommended})),multiSelect:t.multiSelect,allowOther:t.allowOther,otherLabel:t.otherLabel}))}}function g4(e){const t=N.messagesBySession[e.sessionId];if(!t||t.length===0)return;const n=new Map;for(const o of t)if(o.role==="assistant")for(const i of o.content){if(i.type!=="toolUse"||i.toolName!=="Bash"&&i.toolName!=="bash")continue;const u=i.input,p=u&&typeof u.command=="string"?u.command:void 0;p&&n.set(i.toolCallId,p)}if(n.size===0)return;const s=`task_id: ${e.id}`;for(const o of t)if(o.role==="tool")for(const i of o.content){if(i.type!=="toolResult")continue;if((typeof i.output=="string"?i.output:i.output!==void 0?JSON.stringify(i.output):"").includes(s)){const p=n.get(i.toolCallId);if(p)return p}}}function y4(e){let t;e.status==="running"?t="run":e.status==="completed"?t="done":t="fail";let n="";if(e.status==="running"&&e.startedAt){const u=Math.round((Date.now()-new Date(e.startedAt).getTime())/1e3),p=Math.floor(u/60),f=u%60;n=pt.global.t("tasks.timingRunning",{time:`${p}:${String(f).padStart(2,"0")}`})}else if(e.completedAt&&e.startedAt){const u=Math.round((new Date(e.completedAt).getTime()-new Date(e.startedAt).getTime())/1e3);n=pt.global.t("tasks.timingDone",{sec:u})}else n=e.status;const s=e.outputLines&&e.outputLines.length>0?e.outputLines:e.outputPreview?e.outputPreview.split(/\r?\n/):void 0,o=e.command??g4(e),i=e.kind==="bash"&&o?`$ ${o}`:void 0;return{id:e.id,name:e.description,kind:e.kind,state:t,timing:n,meta:i,output:s,runInBackground:e.runInBackground,parentToolCallId:e.parentToolCallId}}const k4=$(()=>{const e=N.sessions.find(n=>n.id===N.activeSessionId),t=e?e.cwd.split("/").pop()??e.cwd:"main";return{name:N.workspaceName,branch:t}}),b4=$(()=>(ei.value,N.sessions.toSorted((e,t)=>new Date(t.updatedAt).getTime()-new Date(e.updatedAt).getTime()).map(e=>({id:e.id,title:e.title,time:Al(e.updatedAt),busy:Il(e.id,e.mainTurnActive),pendingInteraction:e.pendingInteraction,lastTurnReason:e.lastTurnReason})))),w4=$(()=>N.activeSessionId??""),S4=$(()=>{const e=N.activeSessionId;if(e)return vt.skillsBySession.value[e]??[];const t=Xi.value;return t?vt.skillsByWorkspace.value[t]??[]:[]}),Tl=$(()=>{const e=N.activeSessionId;return e?N.inFlightBySession[e]??!1:!1}),C4=$(()=>Le.isStartingFirstPrompt()),$n=iw(N,{pushOperationFailure:ai,nextOptimisticMsgId:Dc,connectEventsIfNeeded:zc,getEventConn:()=>xn,resolveThinkingForPrompt:(e,t)=>vt.resolveThinkingForPrompt(e,t)}),li=$(()=>{const e=N.activeSessionId;if(!e)return[];const t=$n.sideChatTargetBySession.value[e]?.agentId;return(N.tasksBySession[e]??[]).filter(n=>n.id!==t)}),qc=U2(N,li),_4=$(()=>{const e=N.activeSessionId;if(!e)return[];const t=new Set(N.sideChatUserMessageIdsBySession[e]??[]),n=(N.messagesBySession[e]??[]).filter(o=>!t.has(o.id)),s=N.approvalsBySession[e]??[];return rc(n,s,o=>Te().getFileUrl(o),Zi.value,N.planReviewByToolCallId)}),Zi=$(()=>{const e=N.activeSessionId;return e?(N.turnActiveBySession[e]??!1)||(N.sessions.find(t=>t.id===e)?.mainTurnActive??!1):!1}),$4=$(()=>Tl.value||Zi.value),M4=I(null),x4=$(()=>(qc.taskClock.value,li.value.map(y4))),Wc=$(()=>$w(li.value)),I4=$(()=>xw(li.value)),$o=$(()=>{const e=N.activeSessionId;return e?N.goalBySession[e]??null:null}),A4=$(()=>{const e=N.activeSessionId;return e?Sw(N.messagesBySession[e]??[]):[]}),T4=$(()=>{const e=N.activeSessionId;return e?N.compactionBySession[e]??null:null}),P4=$(()=>N.connection),E4=$(()=>N.loading),L4=$(()=>N.sessionLoading),B4=$(()=>{const e=N.activeSessionId;return e?N.messagesLoadingMoreBySession[e]??!1:!1}),R4=$(()=>{const e=N.activeSessionId;return e?N.messagesHasMoreBySession[e]??!1:!1}),O4=$(()=>{const e=N.activeSessionId;return e?N.messagesLoadMoreErrorBySession[e]??!1:!1}),D4=$(()=>N.serverVersion),Hc=$(()=>N.backend),z4=$(()=>N.dangerousBypassAuth);Oe(Hc,e=>{xn!==null&&xn.setTranscriptMode(e==="v2")},{immediate:!0});function F4(){N.dangerousBypassAuth=!1}const N4=$(()=>N.permission),q4=$(()=>N.thinking),Uc=$(()=>{const e=N.activeSessionId;return e?N.planModeBySession[e]??!1:Do.planMode}),W4=$(()=>{const e=N.activeSessionId;return e?N.planArmedBySession[e]??!1:Do.planArmed}),H4=$(()=>{const e=N.activeSessionId;return e?N.swarmModeBySession[e]??!1:Do.swarmMode}),U4=$(()=>{const e=N.activeSessionId;return e?N.supermoonModeBySession[e]??!1:Do.supermoonMode}),V4=$(()=>{const e=N.activeSessionId;return e?N.goalModeBySession[e]??!1:Do.goalMode}),j4=$(()=>{const e=Mw(Wc.value);return{plan:Uc.value,goal:$o.value&&$o.value.status!=="complete"?{status:$o.value.status,turnsUsed:$o.value.turnsUsed,elapsedMs:$o.value.wallClockMs}:null,swarm:e.total>0?e:null}}),K4=$(()=>{const e=N.activeSessionId;if(!e)return[];const t=Te();return(N.queuedBySession[e]??[]).map(n=>({text:n.text,attachmentCount:n.attachments?.length??0,attachments:n.attachments?.map(s=>({fileId:s.fileId,kind:s.kind,url:t.getFileUrl(s.fileId),name:s.name}))}))}),G4=$(()=>N.warnings),Q4=$(()=>{const e=N.activeSessionId;return e?(N.questionsBySession[e]??[]).map(h4):[]}),Y4=$(()=>{const e=N.activeSessionId;return e?(N.approvalsBySession[e]??[]).map(t=>({approvalId:t.approvalId,block:v4(t),agentName:t.agentName})):[]}),Pl=$(()=>{const e=N.activeSessionId;return e?(N.approvalsBySession[e]??[]).length>0?"awaiting-approval":(N.questionsBySession[e]??[]).length>0?"awaiting-question":Tl.value||Zi.value?"running":"idle":"idle"}),vt=Cb(N,{pushOperationFailure:ai,refreshSessionStatus:ii,persistSessionProfile:Lc,activity:Pl,updateSession:Yi,updateSessionMessages:Mc}),Ga=$(()=>{const e=N.activeSessionId;if(!e)return null;const t=N.gitStatusBySession[e];return t?{branch:t.branch,ahead:t.ahead,behind:t.behind}:null}),Z4=$(()=>{const e=N.activeSessionId;return e?N.gitStatusBySession[e]?.pullRequest??null:null}),X4=$(()=>{const e=N.activeSessionId;if(!e)return[];const t=N.gitStatusBySession[e];return t?Object.entries(t.entries).map(([n,s])=>({path:n,status:s})).sort((n,s)=>n.path.localeCompare(s.path)):[]}),J4=$(()=>{const e=N.activeSessionId;if(!e)return null;const t=N.gitStatusBySession[e];return t?{totalAdditions:t.additions,totalDeletions:t.deletions}:null}),Vc=$(()=>{const e=N.sessions.find(u=>u.id===N.activeSessionId),t=Ga.value?.branch??(e?e.cwd.split("/").pop()??e.cwd:"main"),n=e===void 0?vt.draftModel.value:null,s=(e?.model&&e.model.length>0?e.model:n??N.defaultModel)??"—",o=vt.models.value.find(u=>u.id===s)??vt.models.value.find(u=>u.model===s);return{model:o?.displayName||o?.model||(s.includes("/")?s.split("/").pop():s),modelId:o?.id??s,ctxUsed:e?.usage.contextTokens??0,ctxMax:e?.usage.contextLimit??0,permission:N.permission,branch:t,cwd:e?.cwd??"",isGitRepo:Ga.value!==null}}),eS=$(()=>Ac.value),tS=$(()=>N.sessions.find(t=>t.id===N.activeSessionId)?.usage.totalCostUsd??0),nS=$(()=>N.authReady),sS=$(()=>N.defaultModel),oS=$(()=>N.managedProviderStatus),iS=$(()=>N.config),aS=$(()=>{const e=N.activeSessionId;if(!e)return{};const t=N.gitStatusBySession[e];return t?{...t.entries}:{}});function Lo(e){const t=es(e.cwd);return N.workspaces.find(n=>es(n.root)===t)?.id??e.workspaceId??e.cwd}const ti=$(()=>Hk({workspaces:N.workspaces,sessions:N.sessions,hiddenWorkspaceRoots:N.hiddenWorkspaceRoots,sessionsHasMoreByWorkspace:N.sessionsHasMoreByWorkspace})),Ni=I(jd()),Bo=I(Kd()==="manual"?"manual":"recent"),Po=I(Gd());Oe(()=>N.sessions,e=>{const t=kp(e,Lo),{next:n,changed:s}=bp(Po.value,t);s&&(Po.value=n,Su(n))});const qi=I(rp()),Qa=I(ig());function lS(e){const t=cp(qi.value,e);qi.value=t,up(t)}function rS(e,t){const n=lg(Qa.value,e,t);Qa.value=n,ag(n)}Oe(()=>[ti.value.map(e=>e.id).join("\0"),N.loading],([e,t])=>{if(t)return;const n=e?e.split("\0"):[],s=$u(ti.value,Po.value),o=vp(n,Ni.value,s);o!==null&&(Ni.value=o,bu(o));const{next:i,changed:u}=wp(Po.value,new Set(n));u&&(Po.value=i,Su(i))});const po=$(()=>{const e=ti.value.map(t=>({id:t.id,name:t.name,root:t.root,shortPath:Bw(t.root,N.fsHome),sessionCount:t.sessionCount}));if(Bo.value==="recent"){const t=$u(ti.value,Po.value);return yp(e,t)}return hp(e,Ni.value)}),Xi=$(()=>{const e=N.activeWorkspaceId,t=po.value;return e&&t.some(n=>n.id===e)?e:t[0]?.id??null});Oe(Xi,e=>{e&&(Object.prototype.hasOwnProperty.call(vt.skillsByWorkspace.value,e)||vt.loadSkillsForWorkspace(e))},{immediate:!0});const uS=$(()=>{const e=Xi.value;return e?po.value.find(t=>t.id===e)??null:null});function jc(e){return!e||e.state!=="open"&&e.state!=="closed"&&e.state!=="merged"?null:{number:e.number,state:e.state,url:e.url}}const cS=$(()=>{ei.value;const e=new Set(po.value.map(n=>n.id)),t=new Map(po.value.map(n=>[n.id,n.name]));return N.sessions.filter(n=>!n.parentSessionId&&e.has(Lo(n))).map(n=>{const s=Lo(n);return{id:n.id,title:n.title,time:Al(n.updatedAt),busy:Il(n.id,n.mainTurnActive),pendingInteraction:n.pendingInteraction,lastTurnReason:n.lastTurnReason,lastPrompt:n.lastPrompt,workspaceId:s,workspaceName:t.get(s),pullRequest:jc(N.gitStatusBySession[n.id]?.pullRequest)}})}),dS=$(()=>{ei.value;const e=new Map;for(const t of N.sessions.toSorted((n,s)=>new Date(s.updatedAt).getTime()-new Date(n.updatedAt).getTime())){if(t.parentSessionId)continue;const n=Lo(t),s={id:t.id,title:t.title,time:Al(t.updatedAt),busy:Il(t.id,t.mainTurnActive),pendingInteraction:t.pendingInteraction,lastTurnReason:t.lastTurnReason,updatedAt:t.updatedAt,pullRequest:jc(N.gitStatusBySession[t.id]?.pullRequest)},o=e.get(n)??[];o.push(s),e.set(n,o)}return po.value.map(t=>({workspace:t,sessions:_u(e.get(t.id)??[],qi.value),hasMore:N.sessionsHasMoreByWorkspace[t.id]??!1,loadingMore:N.sessionsLoadingMoreByWorkspace[t.id]??!1,initialCount:N.sessionsInitialCountByWorkspace[t.id]??Ha}))});function pS(e){Ni.value=e,bu(e),Bo.value!=="manual"&&(Bo.value="manual",wu("manual"))}function fS(e){Bo.value!==e&&(Bo.value=e,wu(e))}const Kc=$(()=>{const e={};for(const[t,n]of Object.entries(N.approvalsBySession))n.length>0&&(e[t]=(e[t]??0)+n.length);for(const[t,n]of Object.entries(N.questionsBySession))n.length>0&&(e[t]=(e[t]??0)+n.length);return e}),mS=$(()=>{const e={};for(const[t,n]of Object.entries(N.approvalsBySession))n.length>0&&((e[t]??={approvals:0,questions:0}).approvals=n.length);for(const[t,n]of Object.entries(N.questionsBySession))n.length>0&&((e[t]??={approvals:0,questions:0}).questions=n.length);return e}),vS=$(()=>{const e={};for(const[t,n]of Object.entries(N.unreadBySession))n&&(e[t]=!0);return e}),hS=$(()=>{const e={},t=Kc.value;for(const n of N.sessions){const s=t[n.id]??0;if(s<=0)continue;const o=Lo(n);e[o]=(e[o]??0)+s}return e}),gS=$(()=>N.recentRoots),yS=$(()=>N.availableOpenInApps),Le=bb(N,{taskPoller:qc,sideChat:$n,modelProvider:vt,pushOperationFailure:ai,activity:Pl,sessionsKnownEmpty:Fc,setSessions:_c,updateSession:Yi,upsertSessionFront:Rw,appendSession:Ow,forgetSession:xc,setActiveSessionId:$l,updateSessionMessages:Mc,nextOptimisticMsgId:Dc,getEventConn:()=>xn,syncSessionFromSnapshot:xl,reopenSession:d4,hasLoadedMessages:l4,refreshSessionStatus:ii,refreshSessionGoal:qw,persistSessionProfile:Lc,mergedWorkspaces:ti,workspacesView:po,status:Vc,workspaceIdForSession:Lo,savePermissionToStorage:Aw,savePlanModeToStorage:yc,savePlanArmedToStorage:kc,saveSwarmModeToStorage:bc,saveSupermoonModeToStorage:wc,saveGoalModeToStorage:Sc,draftModes:Do,saveUnread:il,saveActiveWorkspaceToStorage:Lw,saveHiddenWorkspacesToStorage:Ew,goalErrorMessage:o4,resetFastMoon:xs.resetFastMoon,initialized:Pc,connectIssue:Ec,selectedDiffPath:Ic,fileDiffLines:Ac,fileDiffLoading:Tc});function El(e){return e===N.activeSessionId&&typeof document<"u"&&document.visibilityState==="visible"&&document.hasFocus()}const ka=new Map;function kS(e){const t=ka.get(e);Dk(t)&&(ka.set(e,zk(t)),Te().generateSessionTitle(e,{source:"first_turn"}).then(n=>{n!==null&&ka.set(e,Fk())}).catch(()=>{}))}function bS(e){if(N.turnActiveBySession[e]){const t={...N.turnActiveBySession};delete t[e],N.turnActiveBySession=t}N.inFlightBySession[e]&&(N.inFlightBySession={...N.inFlightBySession,[e]:!1})}function wS(e,t,n){const s=N.promptIdBySession[e];Le.finishPromptLocal(e,{turnWasActive:n}),N.config?.experimental?.auto_session_title===!0&&kS(e),Le.loadGitStatus(e),e===N.activeSessionId?ii(e):t==="idle"&&(N.unreadBySession={...N.unreadBySession,[e]:!0},il({[e]:!0}));const o=(N.approvalsBySession[e]??[]).length>0,i=(N.questionsBySession[e]??[]).length>0;S2(t,o,i)&&ps.maybeNotifyCompletion(e,{isUserWatching:El(e),sessionTitle:N.sessions.find(u=>u.id===e)?.title??"",promptId:s,onClick:()=>{Le.selectSession(e)}}),t==="idle"&&Jo.maybePlayCompletionSound()}function SS(e,t){const n=t.questions[0],s=n?.header?.trim()??"",o=n?.question?.trim()??"",i=s&&o?`${s}: ${o}`:o||s;ps.maybeNotifyQuestion({isUserWatching:El(e),sessionTitle:N.sessions.find(u=>u.id===e)?.title??"",questionPreview:i,questionId:t.questionId,onClick:()=>{Le.selectSession(e)}}),Jo.maybePlayQuestionSound()}function CS(e,t){ps.maybeNotifyApproval({isUserWatching:El(e),sessionTitle:N.sessions.find(n=>n.id===e)?.title??"",toolName:t.toolName,approvalId:t.approvalId,onClick:()=>{Le.selectSession(e)}}),Jo.maybePlayApprovalSound()}function Ji(){return f4(),{workspace:k4,sessions:b4,activeSessionId:w4,workspacesView:po,workspaceSortMode:Bo,visibleWorkspace:uS,activeWorkspaceId:Xi,sessionsForView:cS,workspaceGroups:dS,attentionBySession:Kc,pendingBySession:mS,attentionByWorkspace:hS,unreadBySession:vS,pinnedSessionIds:qi,sessionEmojiBySession:Qa,recentRoots:gS,turns:_4,tasks:x4,activeAppTasks:li,todos:A4,goal:$o,swarms:Wc,swarmMembersByToolCallId:I4,activationBadges:j4,compaction:T4,status:Vc,sessionCost:tS,fileDiff:eS,selectedDiffPath:Ic,fileDiffLoading:Tc,changes:X4,gitInfo:Ga,gitDiffStats:J4,activePullRequest:Z4,changesByPath:aS,pendingApprovals:Y4,availableOpenInApps:yS,connection:P4,loading:E4,sessionLoading:L4,loadingMoreMessages:B4,hasMoreMessages:R4,loadMoreMessagesError:O4,serverVersion:D4,backend:Hc,dangerousBypassAuth:z4,clearDangerousBypassAuth:F4,initialized:Pc,connectIssue:Ec,permission:N4,thinking:q4,planMode:Uc,planArmed:W4,swarmMode:H4,supermoonMode:U4,goalMode:V4,queued:K4,warnings:G4,questions:Q4,activity:Pl,turnActive:Zi,inFlight:Tl,working:$4,modelRetry:M4,isStartingFirstPrompt:C4,fastMoon:xs.fastMoon,models:vt.models,starredModelIds:vt.starredModelIds,providers:vt.providers,uiFontSize:xs.uiFontSize,setUiFontSize:xs.setUiFontSize,conversationToc:Rc,setConversationToc:Uw,colorScheme:xs.colorScheme,setColorScheme:xs.setColorScheme,accent:xs.accent,setAccent:xs.setAccent,notifyOnComplete:ps.notifyOnComplete,notifyOnQuestion:ps.notifyOnQuestion,notifyOnApproval:ps.notifyOnApproval,notifyPermission:ps.notifyPermission,setNotifyOnComplete:ps.setNotifyOnComplete,setNotifyOnQuestion:ps.setNotifyOnQuestion,setNotifyOnApproval:ps.setNotifyOnApproval,soundOnComplete:Jo.soundOnComplete,setSoundOnComplete:Jo.setSoundOnComplete,onboarded:Oc,setOnboarded:jw,load:Le.load,selectSession:Le.selectSession,clearActiveSession:Le.clearActiveSession,loadOlderMessages:Le.loadOlderMessages,loadWorkspaces:Le.loadWorkspaces,loadMoreSessions:Le.loadMoreSessions,loadAllSessions:Le.loadAllSessions,selectWorkspace:Le.selectWorkspace,openWorkspace:Le.openWorkspace,openWorkspaceDraft:Le.openWorkspaceDraft,startSessionAndSendPrompt:Le.startSessionAndSendPrompt,startSessionAndActivateSkill:Le.startSessionAndActivateSkill,startSessionAndOpenSideChat:Le.startSessionAndOpenSideChat,addWorkspaceByPath:Le.addWorkspaceByPath,browseFs:Le.browseFs,getFsHome:Le.getFsHome,sendPrompt:Le.sendPrompt,steerPrompt:Le.steerPrompt,sideChatVisible:$n.sideChatVisible,sideChatSessionId:$n.sideChatSessionId,sideChatTurns:$n.sideChatTurns,sideChatRunning:$n.sideChatRunning,sideChatSending:$n.sideChatSending,openSideChat:$n.openSideChat,closeSideChat:$n.closeSideChat,sendSideChatPrompt:$n.sendSideChatPrompt,terminal:$i,uploadImage:Le.uploadImage,abortCurrentPrompt:Le.abortCurrentPrompt,respondApproval:Le.respondApproval,respondQuestion:Le.respondQuestion,dismissQuestion:Le.dismissQuestion,pendingQuestionActions:Le.pendingQuestionActions,pendingApprovalActions:Le.pendingApprovalActions,cancelTask:Le.cancelTask,setPermission:Le.setPermission,setThinking:vt.setThinking,setPlanMode:Le.setPlanMode,togglePlanMode:Le.togglePlanMode,armPlanMode:Le.armPlanMode,dismissPlanMode:Le.dismissPlanMode,togglePlanArm:Le.togglePlanArm,setSwarmMode:Le.setSwarmMode,toggleSwarmMode:Le.toggleSwarmMode,setSupermoonMode:Le.setSupermoonMode,toggleSupermoonMode:Le.toggleSupermoonMode,setGoalMode:Le.setGoalMode,toggleGoalMode:Le.toggleGoalMode,createGoal:Le.createGoal,controlGoal:Le.controlGoal,enqueue:Le.enqueue,dismissWarning:Le.dismissWarning,renameSession:Le.renameSession,regenerateSessionTitle:Le.regenerateSessionTitle,renameWorkspace:Le.renameWorkspace,deleteWorkspace:Le.deleteWorkspace,reorderWorkspaces:pS,setWorkspaceSortMode:fS,togglePinnedSession:lS,setSessionEmoji:rS,archiveSession:Le.archiveSession,exportSession:Le.exportSession,restoreSession:Le.restoreSession,loadArchivedSessions:Le.loadArchivedSessions,compact:Le.compact,forkSession:Le.forkSession,undo:Le.undo,unqueue:Le.unqueue,reorderQueue:Le.reorderQueue,searchFiles:Le.searchFiles,loadGitStatus:Le.loadGitStatus,loadFileDiff:Le.loadFileDiff,clearFileDiff:Le.clearFileDiff,listDir:Le.listDir,readFileContent:Le.readFileContent,getFileDownloadUrl:Le.getFileDownloadUrl,openWorkspaceFile:Le.openWorkspaceFile,openInApp:Le.openInApp,revealWorkspaceFile:Le.revealWorkspaceFile,resolveImageUrl:Le.resolveImageUrl,loadModels:vt.loadModels,loadProviders:vt.loadProviders,skills:S4,activateSkill:vt.activateSkill,setModel:vt.setModel,toggleStarModel:vt.toggleStarModel,addProvider:vt.addProvider,deleteProvider:vt.deleteProvider,refreshProvider:vt.refreshProvider,refreshAllProviders:vt.refreshAllProviders,importCatalogProvider:vt.importCatalogProvider,importRegistry:vt.importRegistry,authReady:nS,defaultModel:sS,managedProviderStatus:oS,config:iS,updateConfig:Le.updateConfig,checkAuth:Le.checkAuth,startOAuthLogin:vt.startOAuthLogin,pollOAuthLogin:vt.pollOAuthLogin,cancelOAuthLogin:vt.cancelOAuthLogin,logout:Le.logout}}const _S=["aria-label"],$S=Ie({__name:"Spinner",props:{size:{default:"md"},label:{default:"Loading"}},setup(e){return(t,n)=>(a(),c("span",{class:fe(["ui-spinner",`ui-spinner--${e.size}`]),role:"status","aria-label":e.label},[...n[0]||(n[0]=[r("svg",{class:"ui-spinner__svg",viewBox:"0 0 24 24","aria-hidden":"true"},[r("circle",{class:"ui-spinner__track",cx:"12",cy:"12",r:"9"}),r("circle",{class:"ui-spinner__arc",cx:"12",cy:"12",r:"9"})],-1)])],10,_S))}}),Dt=Ee($S,[["__scopeId","data-v-e5c5b17d"]]),MS={key:0,class:"ui-badge__dot","aria-hidden":"true"},xS=Ie({__name:"Badge",props:{variant:{default:"neutral"},size:{default:"md"},dot:{type:Boolean}},setup(e){return(t,n)=>(a(),c("span",{class:fe(["ui-badge",[`ui-badge--${e.variant}`,`ui-badge--${e.size}`]])},[e.dot?(a(),c("span",MS)):A("",!0),yt(t.$slots,"default",{},void 0,!0)],2))}}),Ot=Ee(xS,[["__scopeId","data-v-5bc5cd6d"]]),IS=Ie({__name:"Menu",setup(e,{expose:t}){const n=I();return t({el:n}),(s,o)=>(a(),c("div",{ref_key:"el",ref:n,class:"ui-menu",role:"menu"},[yt(s.$slots,"default",{},void 0,!0)],512))}}),Hs=Ee(IS,[["__scopeId","data-v-60e6cd8d"]]),AS={key:0,class:"ui-menu-sep",role:"separator"},TS=["disabled"],PS=Ie({__name:"MenuItem",props:{active:{type:Boolean},danger:{type:Boolean},disabled:{type:Boolean},separator:{type:Boolean},size:{default:"md"}},emits:["click"],setup(e){return(t,n)=>e.separator?(a(),c("div",AS)):(a(),c("button",{key:1,class:fe(["ui-menu-item",[`ui-menu-item--${e.size}`,{"is-active":e.active,"is-danger":e.danger}]]),type:"button",role:"menuitem",disabled:e.disabled,onClick:n[0]||(n[0]=s=>t.$emit("click",s))},[yt(t.$slots,"default",{},void 0,!0)],10,TS))}}),dt=Ee(PS,[["__scopeId","data-v-f940771a"]]),zs=6,Fs=8,ES=150,LS=Ie({__name:"Tooltip",props:{text:{},placement:{default:"top"},maxWidth:{default:280},maxLines:{default:6}},setup(e){const t=e,n=I(),s=I(),o=I(!1),i=I(!1),u=I({maxWidth:`${t.maxWidth}px`});let p,f=null,v;function w(){const y=s.value;if(!f||!y)return;const g=f.getBoundingClientRect(),k=y.offsetWidth,T=y.offsetHeight,S=window.innerWidth,O=window.innerHeight;let D=t.placement;D==="top"&&g.top-zs-TO-Fs?D="top":D==="left"&&g.left-zs-kS-Fs&&(D="left");let E=0,B=0;D==="top"?(E=g.top-zs-T,B=g.left+g.width/2-k/2):D==="bottom"?(E=g.bottom+zs,B=g.left+g.width/2-k/2):D==="left"?(E=g.top+g.height/2-T/2,B=g.left-zs-k):(E=g.top+g.height/2-T/2,B=g.right+zs),B=Math.min(Math.max(B,Fs),S-Fs-k),E=Math.min(Math.max(E,Fs),O-Fs-T),u.value={maxWidth:`${t.maxWidth}px`,top:`${Math.round(E)}px`,left:`${Math.round(B)}px`}}function x(){t.text&&(window.clearTimeout(p),p=window.setTimeout(()=>{o.value=!0,i.value=!1,window.addEventListener("scroll",m,{capture:!0,passive:!0}),window.addEventListener("resize",m,{passive:!0}),Ke(()=>{w(),i.value=!0})},ES))}function h(){window.clearTimeout(p),window.removeEventListener("scroll",m,{capture:!0}),window.removeEventListener("resize",m),o.value=!1,i.value=!1}function m(){o.value&&h()}function _(y){y!==f&&(f&&(f.removeEventListener("mouseenter",x),f.removeEventListener("mouseleave",h),f.removeEventListener("focusin",x),f.removeEventListener("focusout",h)),f=y,f&&(f.addEventListener("mouseenter",x),f.addEventListener("mouseleave",h),f.addEventListener("focusin",x),f.addEventListener("focusout",h)))}return ht(()=>{const y=n.value??null;_(y?.firstElementChild??y),y&&(v=new MutationObserver(()=>{const g=y.firstElementChild??null;g!==f&&(h(),_(g??y))}),v.observe(y,{childList:!0}))}),Ln(()=>{window.clearTimeout(p),window.removeEventListener("scroll",m,{capture:!0}),window.removeEventListener("resize",m),v?.disconnect(),_(null)}),(y,g)=>(a(),c(he,null,[r("span",{ref_key:"trigger",ref:n,class:"ui-tip"},[yt(y.$slots,"default",{},void 0,!0)],512),(a(),G(lo,{to:"body"},[gt(r("div",{ref_key:"bubble",ref:s,class:fe(["ui-tip__bubble",{positioned:i.value}]),style:rt([u.value,{"--tip-lines":e.maxLines}]),role:"tooltip"},d(e.text),7),[[Jn,o.value]])]))],64))}}),ot=Ee(LS,[["__scopeId","data-v-98697f45"]]),BS={class:"row"},RS={class:"lead","aria-hidden":"true"},OS={key:1,class:"unread-dot"},DS={class:"left"},zS=["onKeydown"],FS={key:0,class:"t-emoji","aria-hidden":"true"},NS=["aria-label"],qS={class:"act"},WS={class:"ts"},HS={key:0,class:"emoji-glyph"},US={class:"menu-time"},VS=["aria-label"],jS={class:"emoji-grid"},KS=["aria-label","onClick"],GS=Ie({__name:"SessionRow",props:{session:{},active:{type:Boolean},approvalCount:{default:0},questionCount:{default:0},unread:{type:Boolean,default:!1}},emits:["select","rename","archive","fork","export"],setup(e,{expose:t,emit:n}){const{t:s}=Ue(),{pinnedSessionIds:o,sessionEmojiBySession:i,togglePinnedSession:u,setSessionEmoji:p,config:f,regenerateSessionTitle:v}=Ji(),w=e,x=n,h=$(()=>o.value.includes(w.session.id)),m=$(()=>i.value[w.session.id]??null),_=$(()=>f.value?.experimental?.auto_session_title===!0),y=$(()=>w.session.pullRequest??null),g=I(!1);async function k(){if(!g.value){g.value=!0;try{await v(w.session.id)}finally{g.value=!1}}}function T(){const Fe=y.value?.url;Fe&&window.open(Fe,"_blank","noopener")}function S(){u(w.session.id)}function O(Fe){p(w.session.id,Fe),Ce()}function D(Fe){const Ze=new Date(Fe);if(Number.isNaN(Ze.getTime()))return Fe;const Ve=At=>String(At).padStart(2,"0");return`${Ze.getFullYear()}-${Ve(Ze.getMonth()+1)}-${Ve(Ze.getDate())} ${Ve(Ze.getHours())}:${Ve(Ze.getMinutes())}`}const E=$(()=>w.session.updatedAt?D(w.session.updatedAt):w.session.time),B=I(!1),q=I(null),V=I(null),b=I({});function P(Fe){const Ze=Fe.target;V.value?.el?.contains(Ze)||q.value?.el?.contains(Ze)||oe()}function L(){const Fe=q.value?.el;if(!Fe)return;const Ze=V.value?.el,Ve=Fe.getBoundingClientRect(),At=4,bt=8,Ct=Ze?.offsetHeight??0,dn=Ze?.offsetWidth??0;let Kt=Ve.bottom+At;Kt+Ct>window.innerHeight-bt&&(Kt=Math.max(bt,Ve.top-Ct-At));let zt=Ve.right-dn;ztdocument.addEventListener("mousedown",P),0),window.addEventListener("resize",oe),await Ke(),L()}function oe(){B.value=!1,document.removeEventListener("mousedown",P),window.removeEventListener("resize",oe)}kt(()=>{document.removeEventListener("mousedown",P),window.removeEventListener("resize",oe),document.removeEventListener("mousedown",ye),window.removeEventListener("resize",Ce)});const ge=I(!1),ce=I(null),Q=I(null),ie=I({});function te(){const Fe=ce.value?.el;if(!Fe)return;const Ze=Q.value,Ve=Fe.getBoundingClientRect(),At=4,bt=8,Ct=Ze?.offsetHeight??0,dn=Ze?.offsetWidth??0;let Kt=Ve.bottom+At;Kt+Ct>window.innerHeight-bt&&(Kt=Math.max(bt,Ve.top-Ct-At));let zt=Ve.right-dn;ztdocument.addEventListener("mousedown",ye),0),window.addEventListener("resize",Ce),await Ke(),te()}function Ce(){ge.value=!1,document.removeEventListener("mousedown",ye),window.removeEventListener("resize",Ce)}const Z=I(!1),U=I(""),ke=I(null),ae=I(!1);async function ee(){oe(),Z.value=!0,ae.value=!1,U.value=w.session.title,await Ke();try{ke.value?.focus(),ke.value?.select()}catch{}}function de(){const Fe=U.value.trim();Fe&&x("rename",w.session.id,Fe),Z.value=!1}function Be(){Z.value=!1}function Y(Fe){ae.value||Ti(Fe)||de()}function ve(Fe){ae.value||Ti(Fe)||Be()}const R=I(!1),X=I(!1);async function me(){const Fe=await un(w.session.id);R.value=Fe,X.value=!Fe,setTimeout(()=>{R.value=!1,X.value=!1,oe()},1500)}function He(){oe(),x("fork",w.session.id)}function De(){oe(),x("export",w.session.id)}function an(){oe(),x("archive",w.session.id)}return t({closeMenu:oe}),(Fe,Ze)=>(a(),c("div",{class:fe(["se",{on:e.active,"has-gen":_.value}]),onClick:Ze[9]||(Ze[9]=Ve=>x("select",e.session.id))},[r("div",BS,[r("span",RS,[e.session.busy?(a(),G(Dt,{key:0,size:"sm"})):e.unread?(a(),c("span",OS)):A("",!0)]),r("div",DS,[Z.value?gt((a(),c("input",{key:0,ref_key:"renameInputRef",ref:ke,"onUpdate:modelValue":Ze[0]||(Ze[0]=Ve=>U.value=Ve),class:"rename-input",onClick:Ze[1]||(Ze[1]=Re(()=>{},["stop"])),onCompositionstart:Ze[2]||(Ze[2]=Ve=>ae.value=!0),onCompositionend:Ze[3]||(Ze[3]=Ve=>ae.value=!1),onKeydown:[En(Re(Y,["stop"]),["enter"]),En(Re(ve,["stop"]),["esc"])],onBlur:de},null,40,zS)),[[qn,U.value]]):(a(),c("span",{key:1,class:"t",onDblclick:Re(ee,["stop"])},[m.value?(a(),c("span",FS,d(m.value),1)):A("",!0),re(d(e.session.title),1)],32))]),M(ot,{text:l(s)("workspace.awaitingAnswerTitle")},{default:H(()=>[!Z.value&&(e.questionCount>0||e.session.pendingInteraction==="question")?(a(),G(Ot,{key:0,variant:"info",size:"sm"},{default:H(()=>[re(d(l(s)("workspace.awaitingAnswer")),1)]),_:1})):A("",!0)]),_:1},8,["text"]),M(ot,{text:l(s)("workspace.awaitingPermissionTitle")},{default:H(()=>[!Z.value&&(e.approvalCount>0||e.session.pendingInteraction==="approval")?(a(),G(Ot,{key:0,variant:"warning",size:"sm"},{default:H(()=>[re(d(l(s)("workspace.awaitingPermission")),1)]),_:1})):A("",!0)]),_:1},8,["text"]),M(ot,{text:l(s)("workspace.abortedTitle")},{default:H(()=>[!Z.value&&!e.session.busy&&e.session.pendingInteraction!=="question"&&e.session.pendingInteraction!=="approval"&&e.questionCount===0&&e.approvalCount===0&&l(Iu)(e.session)?(a(),G(Ot,{key:0,variant:"danger",size:"sm"},{default:H(()=>[re(d(l(s)("workspace.aborted")),1)]),_:1})):A("",!0)]),_:1},8,["text"]),!Z.value&&y.value?(a(),c("button",{key:0,type:"button",class:fe(["pr",`pr--${y.value.state}`]),"aria-label":l(s)("sidebar.prTag",{number:y.value.number}),onClick:Re(T,["stop"])},[M(se,{name:"git-pull-request",size:"sm"}),r("span",null,"#"+d(y.value.number),1)],10,NS)):A("",!0),r("span",qS,[r("span",WS,d(e.session.time),1),Z.value?A("",!0):(a(),G(nt,{key:0,class:fe(["btn pin",{on:h.value}]),size:"sm",label:h.value?l(s)("sidebar.unpin"):l(s)("sidebar.pin"),onClick:Re(S,["stop"])},{default:H(()=>[M(se,{name:h.value?"pin-fill":"pin"},null,8,["name"])]),_:1},8,["class","label"])),Z.value?A("",!0):(a(),G(nt,{key:1,ref_key:"emojiBtnRef",ref:ce,class:fe(["btn emoji-btn",{open:ge.value}]),size:"sm",label:l(s)("sidebar.emoji"),onClick:Ze[4]||(Ze[4]=Re(Ve=>_e(Ve),["stop"]))},{default:H(()=>[m.value?(a(),c("span",HS,d(m.value),1)):(a(),G(se,{key:1,name:"emotion"}))]),_:1},8,["class","label"])),!Z.value&&_.value?(a(),G(nt,{key:2,class:fe(["btn gen-title",{open:g.value}]),size:"sm",label:l(s)("sidebar.genTitle"),disabled:g.value,onClick:Re(k,["stop"])},{default:H(()=>[g.value?(a(),G(Dt,{key:0,size:"sm"})):(a(),G(se,{key:1,name:"sparkles"}))]),_:1},8,["class","label","disabled"])):A("",!0),Z.value?A("",!0):(a(),G(nt,{key:3,ref_key:"kebabRef",ref:q,class:fe(["btn kebab",{open:B.value}]),size:"sm",label:l(s)("sidebar.options"),onClick:Ze[5]||(Ze[5]=Re(Ve=>ne(Ve),["stop"]))},{default:H(()=>[M(se,{name:"dots-horizontal"})]),_:1},8,["class","label"]))])]),(a(),G(lo,{to:"body"},[B.value?(a(),G(Hs,{key:0,ref_key:"menuRef",ref:V,class:"menu",style:rt(b.value),onClick:Ze[6]||(Ze[6]=Re(()=>{},["stop"]))},{default:H(()=>[M(dt,{danger:X.value,onClick:me},{default:H(()=>[M(se,{name:R.value?"check":"copy",size:"sm"},null,8,["name"]),re(" "+d(X.value?l(s)("sidebar.copyFailed"):R.value?l(s)("sidebar.copied"):l(s)("sidebar.copySessionId")),1)]),_:1},8,["danger"]),M(dt,{separator:""}),M(dt,{onClick:ee},{default:H(()=>[M(se,{name:"pencil",size:"sm"}),re(" "+d(l(s)("sidebar.rename")),1)]),_:1}),M(dt,{onClick:He},{default:H(()=>[M(se,{name:"git-fork",size:"sm"}),re(" "+d(l(s)("sidebar.fork")),1)]),_:1}),M(dt,{onClick:De},{default:H(()=>[M(se,{name:"download",size:"sm"}),re(" "+d(l(s)("sidebar.export")),1)]),_:1}),M(dt,{danger:"",onClick:an},{default:H(()=>[M(se,{name:"archive",size:"sm"}),re(" "+d(l(s)("sidebar.archive")),1)]),_:1}),M(dt,{separator:""}),r("div",US,d(E.value),1)]),_:1},8,["style"])):A("",!0)])),(a(),G(lo,{to:"body"},[ge.value?(a(),c("div",{key:0,ref_key:"emojiPickerRef",ref:Q,class:"emoji-picker",role:"menu","aria-label":l(s)("sidebar.emoji"),style:rt(ie.value),onClick:Ze[8]||(Ze[8]=Re(()=>{},["stop"]))},[r("div",jS,[(a(!0),c(he,null,Pe(l(Au),Ve=>(a(),c("button",{key:Ve,type:"button",class:fe(["emoji-cell",{on:Ve===m.value}]),"aria-label":Ve,role:"menuitem",onClick:Re(At=>O(Ve),["stop"])},d(Ve),11,KS))),128))]),m.value?(a(),c("button",{key:0,type:"button",class:"emoji-clear",role:"menuitem",onClick:Ze[7]||(Ze[7]=Re(Ve=>O(null),["stop"]))},d(l(s)("sidebar.emojiRemove")),1)):A("",!0)],12,VS)):A("",!0)]))],2))}}),Gc=Ee(GS,[["__scopeId","data-v-1c24e83d"]]),QS=["draggable"],YS={class:"gh-top"},ZS={class:"gh-name"},XS=["inert"],JS=["disabled"],e3={class:"show-more-label"},t3={class:"show-more-label"},n3={key:2,class:"group-empty"},s3=Ie({__name:"WorkspaceGroup",props:{group:{},activeWorkspaceId:{},activeId:{},renamingId:{},renameValue:{},renameInputRef:{},pendingBySession:{},unreadBySession:{},wsMenuOpenId:{},dragging:{type:Boolean},isCollapsed:{type:Function},isExpanded:{type:Function}},emits:["groupClick","groupContextmenu","toggleWsMenu","createInWorkspace","selectSession","renameSession","archiveSession","forkSession","exportSession","loadMore","toggleExpand","confirmRename","cancelRename","updateRenameValue","wsDragstart","wsDragend"],setup(e,{emit:t}){const{t:n}=Ue(),s=e,o=t,i=$({get:()=>s.renameValue,set:g=>o("updateRenameValue",g)}),u=$(()=>s.renamingId===s.group.workspace.id),p=$(()=>{if(s.isExpanded(s.group.workspace.id))return s.group.sessions;const g=s.group.sessions.slice(0,s.group.initialCount);if(s.activeId&&!g.some(k=>k.id===s.activeId)){const k=s.group.sessions.find(T=>T.id===s.activeId);if(k)return[...g,k]}return g}),f=$(()=>s.group.sessions.length>s.group.initialCount);function v(){return Math.max(0,s.group.workspace.sessionCount-s.group.sessions.length)}function w(){return s.group.sessions.length-s.group.initialCount}function x(g){s.renameInputRef.value=g instanceof HTMLInputElement?g:null}function h(g){g.dataTransfer&&(g.dataTransfer.effectAllowed="move",g.dataTransfer.setData("text/plain",s.group.workspace.id),o("wsDragstart",s.group.workspace.id))}const m=I(!1);function _(g){m.value||Ti(g)||o("confirmRename")}function y(g){m.value||Ti(g)||o("cancelRename")}return(g,k)=>(a(),c("div",{class:fe(["group",{dragging:e.dragging}])},[r("div",{class:fe(["gh",{on:e.group.workspace.id===e.activeWorkspaceId,collapsed:e.isCollapsed(e.group.workspace.id),renaming:u.value}]),draggable:!u.value,onClick:k[7]||(k[7]=Re(T=>o("groupClick",e.group.workspace.id,T),["stop"])),onContextmenu:k[8]||(k[8]=T=>o("groupContextmenu",e.group.workspace,T)),onDragstart:h,onDragend:k[9]||(k[9]=T=>o("wsDragend"))},[r("div",YS,[e.isCollapsed(e.group.workspace.id)?(a(),G(se,{key:0,class:"gh-folder",name:"folder-closed"})):(a(),G(se,{key:1,class:"gh-folder",name:"folder"})),e.renamingId!==e.group.workspace.id?(a(),G(ot,{key:2,text:e.group.workspace.root},{default:H(()=>[r("span",ZS,d(e.group.workspace.name),1)]),_:1},8,["text"])):gt((a(),c("input",{key:3,ref:x,"onUpdate:modelValue":k[0]||(k[0]=T=>i.value=T),class:"gh-rename",type:"text",onCompositionstart:k[1]||(k[1]=T=>m.value=!0),onCompositionend:k[2]||(k[2]=T=>m.value=!1),onKeydown:[En(_,["enter"]),En(y,["esc"])],onBlur:k[3]||(k[3]=T=>o("cancelRename")),onClick:k[4]||(k[4]=Re(()=>{},["stop"]))},null,544)),[[qn,i.value]]),e.renamingId!==e.group.workspace.id?(a(),c("div",{key:4,class:fe(["gh-actions",{open:e.wsMenuOpenId===e.group.workspace.id}])},[M(nt,{class:fe(["gh-more",{open:e.wsMenuOpenId===e.group.workspace.id}]),size:"sm",label:l(n)("sidebar.options"),"aria-haspopup":"menu","aria-expanded":e.wsMenuOpenId===e.group.workspace.id,onClick:k[5]||(k[5]=Re(T=>o("toggleWsMenu",e.group.workspace,T),["stop"]))},{default:H(()=>[M(se,{name:"dots-horizontal"})]),_:1},8,["class","label","aria-expanded"]),M(nt,{class:"gh-add",size:"sm",label:l(n)("workspace.newInGroup"),onClick:k[6]||(k[6]=Re(T=>o("createInWorkspace",e.group.workspace.id),["stop"]))},{default:H(()=>[M(se,{name:"chat-new"})]),_:1},8,["label"])],2)):A("",!0)])],42,QS),r("div",{class:fe(["group-sessions",{collapsed:e.isCollapsed(e.group.workspace.id)}]),inert:e.isCollapsed(e.group.workspace.id)},[(a(!0),c(he,null,Pe(p.value,T=>(a(),G(Gc,{key:T.id,session:T,active:T.id===e.activeId,"approval-count":e.pendingBySession[T.id]?.approvals??0,"question-count":e.pendingBySession[T.id]?.questions??0,unread:e.unreadBySession[T.id]??!1,onSelect:k[10]||(k[10]=S=>o("selectSession",S)),onRename:k[11]||(k[11]=(S,O)=>o("renameSession",S,O)),onArchive:k[12]||(k[12]=S=>o("archiveSession",S)),onFork:k[13]||(k[13]=S=>o("forkSession",S)),onExport:k[14]||(k[14]=S=>o("exportSession",S))},null,8,["session","active","approval-count","question-count","unread"]))),128)),e.group.hasMore||e.group.loadingMore?(a(),c("button",{key:0,class:"show-more",disabled:e.group.loadingMore,onClick:k[15]||(k[15]=Re(T=>o("loadMore",e.group.workspace.id),["stop"]))},[k[17]||(k[17]=r("span",{class:"show-more-lead","aria-hidden":"true"},null,-1)),r("span",e3,d(e.group.loadingMore?l(n)("sidebar.loadingMore"):l(n)("sidebar.showMore",{count:v()})),1)],8,JS)):A("",!0),f.value?(a(),c("button",{key:1,class:"show-more",onClick:k[16]||(k[16]=Re(T=>o("toggleExpand",e.group.workspace.id),["stop"]))},[k[18]||(k[18]=r("span",{class:"show-more-lead","aria-hidden":"true"},null,-1)),r("span",t3,d(e.isExpanded(e.group.workspace.id)?l(n)("sidebar.showLess"):l(n)("sidebar.showAll",{count:w()})),1)])):A("",!0),e.group.sessions.length===0?(a(),c("div",n3,d(l(n)("sidebar.noSessions")),1)):A("",!0)],10,XS)],2))}}),o3=Ee(s3,[["__scopeId","data-v-ec29996e"]]),i3="kimi_desktop",a3="platform",Rr="kimi-desktop",Or="kimi-desktop-platform";function l3(){let e=!1,t=null;try{const n=new URLSearchParams(window.location.search);n.has(i3)?(sessionStorage.setItem(Rr,"1"),e=!0):e=e||sessionStorage.getItem(Rr)==="1";const s=n.get(a3);s?(sessionStorage.setItem(Or,s),t=s):t=sessionStorage.getItem(Or)}catch{}return{isDesktop:e,platform:t}}const Ya=l3(),r3=Ya.isDesktop,Eo=Ya.isDesktop&&Ya.platform==="darwin",u3={class:"ui-kbd"},c3=Ie({__name:"Kbd",props:{keys:{}},setup(e){return(t,n)=>(a(),c("span",u3,[(a(!0),c(he,null,Pe(e.keys,s=>(a(),c("kbd",{key:s,class:"ui-kbd__key"},d(s),1))),128))]))}}),_s=Ee(c3,[["__scopeId","data-v-32292ed8"]]),d3="(prefers-reduced-motion: reduce)";function p3(){if(!(typeof window>"u"||typeof window.matchMedia!="function"))return window.matchMedia(d3)}function f3(e,t=p3){const n=t();if(!n)return e(!1),()=>{};const s=()=>e(n.matches);return e(n.matches),n.addEventListener("change",s),()=>n.removeEventListener("change",s)}const m3=["aria-label"],v3=Ie({__name:"KimiMascot",props:{label:{}},setup(e){const t=I(!1);let n;return ht(()=>{n=f3(s=>{t.value=!s})}),Ln(()=>n?.()),(s,o)=>(a(),c("span",{class:fe(["kimi-mascot",{"kimi-mascot--pulse":t.value}]),role:"img","aria-label":e.label},[M(se,{name:"sparkles",size:"sm"})],10,m3))}}),h3=Ee(v3,[["__scopeId","data-v-6634dad2"]]),g3=["disabled","aria-pressed"],y3=Ie({__name:"Pill",props:{clickable:{type:Boolean,default:!0},active:{type:Boolean},disabled:{type:Boolean},ariaPressed:{type:Boolean}},emits:["click"],setup(e){return(t,n)=>e.clickable?(a(),c("button",{key:0,class:fe(["ui-pill",{"is-active":e.active}]),type:"button",disabled:e.disabled,"aria-pressed":e.ariaPressed,onClick:n[0]||(n[0]=s=>t.$emit("click",s))},[yt(t.$slots,"default",{},void 0,!0)],10,g3)):(a(),c("span",{key:1,class:fe(["ui-pill",{"is-active":e.active}])},[yt(t.$slots,"default",{},void 0,!0)],2))}}),eo=Ee(y3,[["__scopeId","data-v-317ace1a"]]),k3={class:"ch"},b3={class:"ch-brand"},w3={class:"ch-backend-ep"},S3={class:"btn-wrap"},C3={class:"search-input"},_3={key:0,class:"empty"},$3={class:"side-section-label"},M3={class:"side-section-title"},x3={class:"side-section-actions"},I3={key:0,class:"empty"},A3=["onDragover","onDrop"],T3={class:"side-footer"},P3={class:"section-menu-check"},E3={class:"section-menu-check"},L3={class:"section-menu-check"},B3={class:"backend-menu-name"},R3={class:"backend-menu-url"},O3=1e3,D3=Ie({__name:"Sidebar",props:{activeWorkspace:{default:null},activeWorkspaceId:{default:null},sessions:{},groups:{},pinnedSessionIds:{default:()=>[]},activeId:{},workspaceSortMode:{},backend:{default:"v1"},attentionBySession:{default:()=>({})},pendingBySession:{default:()=>({})},unreadBySession:{default:()=>({})},colWidth:{default:220},collapsed:{type:Boolean,default:!1},dragging:{type:Boolean,default:!1}},emits:["select","create","createInWorkspace","selectWorkspace","addWorkspace","rename","archive","fork","export","renameWorkspace","deleteWorkspace","reorderWorkspaces","setWorkspaceSortMode","loadMoreSessions","loadAllSessions","openSettings","collapse"],setup(e,{emit:t}){const{t:n}=Ue(),s=!1,o=I(null),i=$(()=>""),u=["default","multi"];function p(Se){const we=o.value?.presets[Se]??"";return we?ip(we):""}function f(Se){const we=o.value;return we!==null&&we.current===we.presets[Se]}const v=e,w=t,x=I(!1),h=y()?["⌘","K"]:["Ctrl","K"];function m(){w("loadAllSessions"),x.value=!0}function _(Se){(Se.metaKey||Se.ctrlKey)&&Se.key.toLowerCase()==="k"&&(Se.preventDefault(),m())}ht(()=>window.addEventListener("keydown",_)),Ln(()=>window.removeEventListener("keydown",_));function y(){if(typeof navigator>"u")return!1;if(/Mac|iPod|iPhone|iPad/.test(navigator.platform))return!0;const Se=navigator.userAgentData;return Se?.platform==="macOS"||Se?.platform==="iOS"}const g=I(!1);function k(Se){g.value=Se.target.scrollTop>0}const T=I(pp());function S(){T.value=T.value==="flat"?"grouped":"flat",fp(T.value)}const O=$(()=>mp(v.groups,v.pinnedSessionIds)),D=I(new Set(Vd()));function E(Se){return D.value.has(Se)}function B(Se){const we=new Set(D.value);we.has(Se)?we.delete(Se):we.add(Se),D.value=we,ta(we)}function q(){const Se=new Set(v.groups.map(we=>we.workspace.id));D.value=Se,ta(Se)}function V(){const Se=new Set;D.value=Se,ta(Se)}const b=$(()=>v.groups.length>0&&v.groups.every(Se=>D.value.has(Se.workspace.id))),P=I(new Set);function L(Se){return P.value.has(Se)}function ne(Se){const we=new Set(P.value);we.has(Se)?we.delete(Se):we.add(Se),P.value=we}function oe(Se){if(!P.value.has(Se)){const we=new Set(P.value);we.add(Se),P.value=we}w("loadMoreSessions",Se)}const ge=I(null),ce=I(null);function Q(Se){ge.value=Se}function ie(){ge.value=null,ce.value=null}function te(Se){const we=Se.currentTarget.getBoundingClientRect();return Se.clientYat.workspace.id),we,Se,Ge);w("reorderWorkspaces",Je)}function Ce(Se,we){we.target.closest(".gh-more, .gh-add")||B(Se)}function Z(Se){w("select",Se)}const U=I(null),ke=I(""),ae=I(null);function ee(){return ae}function de(Se,we){U.value=Se,ke.value=we,Ke().then(()=>ae.value?.focus())}function Be(){const Se=U.value,we=ke.value.trim();Se&&we&&w("renameWorkspace",Se,we),U.value=null}function Y(){U.value=null}function ve(Se){ke.value=Se}const R=I(!1),X=I(null),me=I({}),He=I(null);function De(Se){He.value?.el&&!He.value.el.contains(Se.target)&&Fe()}function an(Se,we){we.preventDefault(),we.stopPropagation(),X.value=Se,me.value={top:`${we.clientY}px`,left:`${we.clientX}px`},R.value=!0,document.addEventListener("mousedown",De,!0)}function Fe(){R.value=!1,document.removeEventListener("mousedown",De,!0),X.value=null}function Ze(){X.value&&un(X.value.root),Fe()}function Ve(){X.value&&de(X.value.id,X.value.name),Fe()}function At(){const Se=X.value;Se&&(Fe(),w("deleteWorkspace",Se.id))}const bt=I(null),Ct=I(null),dn=I({}),Kt=I(null);function zt(Se){const we=Se.target;we.closest(".gh-more")||we.closest(".ws-menu")||nn()}async function hs(Se,we){if(bt.value===Se.id){nn();return}const Ge=we.currentTarget;Ct.value=Se,bt.value=Se.id,document.addEventListener("mousedown",zt),window.addEventListener("resize",nn),await Ke();const Je=Kt.value?.el,at=Ge.getBoundingClientRect(),Ht=4,Qt=8,Pt=Je?.offsetHeight??0,Ut=Je?.offsetWidth??0;let Vt=at.bottom+Ht;Vt+Pt>window.innerHeight-Qt&&(Vt=Math.max(Qt,at.top-Pt-Ht));let Tn=at.right-Ut;Tnwindow.innerHeight-Ht&&(Ut=Math.max(Ht,Je.top-Qt-at));let Vt=Je.right-Pt;Vtwindow.innerHeight-Ht&&(Pt=Math.max(Ht,Je.top-Qt-at)),yn.value={top:`${Math.round(Pt)}px`,left:`${Math.round(Math.max(Ht,Je.left))}px`}}function Gt(){Rn.value=!1,document.removeEventListener("mousedown",$t),window.removeEventListener("resize",Gt)}async function kn(Se){if(f(Se)){Gt();return}if(await op(Se)===null){console.warn("[kimi-web] dev backend switch failed:",Se),Gt();return}window.location.reload()}Ln(()=>{document.removeEventListener("mousedown",De,!0),document.removeEventListener("mousedown",zt),document.removeEventListener("mousedown",gn),document.removeEventListener("mousedown",$t),window.removeEventListener("resize",nn),window.removeEventListener("resize",fn),window.removeEventListener("resize",Gt)});const An=I(null);let Rt;function sn(){const Se=An.value;Se&&(Se.classList.remove("blink-now"),Se.getBoundingClientRect(),Se.classList.add("blink-now"),clearTimeout(Rt),Rt=setTimeout(()=>Se.classList.remove("blink-now"),300))}const qt=hu(()=>ku(()=>import("./DesignSystemView-UYw_7SpS.js"),__vite__mapDeps([0,1,2,3,4,5,6,7]))),Xt=I(!1);let Wt,ct=!1;function lt(Se){ct=!1,clearTimeout(Wt),Se.currentTarget.setPointerCapture?.(Se.pointerId),Wt=setTimeout(()=>{ct=!0,Xt.value=!0},O3)}function on(Se){clearTimeout(Wt);const we=Se.currentTarget;we.hasPointerCapture?.(Se.pointerId)&&we.releasePointerCapture(Se.pointerId)}function Jt(){if(ct){ct=!1;return}sn()}return Ln(()=>{clearTimeout(Wt)}),(Se,we)=>(a(),c("aside",{class:fe(["side",{"macos-desktop":l(Eo),collapsed:e.collapsed,"no-anim":e.dragging}]),style:rt({width:e.collapsed?"0px":e.colWidth+"px"})},[r("div",{class:"col",style:rt({width:e.colWidth+"px"})},[r("div",k3,[r("div",b3,[l(Eo)?A("",!0):(a(),c(he,{key:0},[(a(),c("svg",{ref_key:"logoRef",ref:An,class:fe(["ch-logo",{"is-dev":l(s)}]),viewBox:"0 0 32 22",fill:"none",xmlns:"http://www.w3.org/2000/svg",role:"img","aria-label":"Kimi Code",onClick:Jt,onPointerdown:lt,onPointerup:on,onPointercancel:on},[...we[26]||(we[26]=[sl(' ',2)])],34)),we[27]||(we[27]=r("span",{class:"ch-name"},"Kimi Code",-1)),l(s)?(a(),G(eo,{key:0,class:"ch-backend",clickable:o.value!==null,title:l(n)("sidebar.backendTitle",{backend:e.backend,endpoint:i.value}),onClick:Zt},{default:H(()=>[r("span",{class:fe(["ch-backend-kind",`is-${e.backend}`])},d(e.backend),3),r("span",w3," · "+d(i.value),1),o.value!==null?(a(),G(se,{key:0,name:"chevron-down",size:"sm"})):A("",!0)]),_:1},8,["clickable","title"])):A("",!0)],64))]),l(Eo)?A("",!0):(a(),G(nt,{key:0,class:"ch-collapse",size:"sm",label:l(n)("sidebar.collapseSidebar"),onClick:we[0]||(we[0]=Re(Ge=>w("collapse"),["stop"]))},{default:H(()=>[M(se,{name:"panel-collapse"})]),_:1},8,["label"]))]),r("div",S3,[r("button",{class:"btn-new-chat",type:"button",onClick:we[1]||(we[1]=Re(Ge=>w("create"),["stop"]))},[M(se,{name:"chat-new"}),r("span",null,d(l(n)("sidebar.newChat")),1)]),A("",!0)]),r("div",{class:fe(["search-wrap",{"search-wrap--scrolled":g.value}])},[r("button",{class:"search",type:"button",onClick:m},[M(se,{class:"search-icon",name:"search"}),r("span",C3,d(l(n)("sidebar.search")),1),M(_s,{keys:l(h)},null,8,["keys"])])],2),r("div",{class:"sessions",onScroll:k},[e.groups.length===0?(a(),c("div",_3,d(l(n)("workspace.noWorkspace")),1)):(a(),c(he,{key:1},[r("div",$3,[r("span",M3,d(T.value==="flat"?l(n)("sidebar.sessionsHeader"):l(n)("sidebar.workspaces")),1),r("div",x3,[T.value!=="flat"?(a(),c(he,{key:0},[M(nt,{class:"side-section-toggle",size:"sm",label:b.value?l(n)("sidebar.expandAll"):l(n)("sidebar.collapseAll"),onClick:we[3]||(we[3]=Re(Ge=>b.value?V():q(),["stop"]))},{default:H(()=>[b.value?(a(),G(se,{key:0,name:"expand"})):(a(),G(se,{key:1,name:"collapse"}))]),_:1},8,["label"]),M(nt,{class:"side-section-toggle side-section-kebab",size:"sm",label:l(n)("sidebar.options"),"aria-haspopup":"menu","aria-expanded":_t.value,onClick:we[4]||(we[4]=Re(Ge=>Tt(Ge),["stop"]))},{default:H(()=>[M(se,{name:"dots-horizontal"})]),_:1},8,["label","aria-expanded"])],64)):A("",!0),M(nt,{class:"side-section-toggle side-section-view",size:"sm",label:T.value==="flat"?l(n)("sidebar.viewModeGrouped"):l(n)("sidebar.viewModeFlat"),"aria-pressed":T.value==="flat",onClick:Re(S,["stop"])},{default:H(()=>[M(se,{name:T.value==="flat"?"folder":"list"},null,8,["name"])]),_:1},8,["label","aria-pressed"])])]),T.value==="flat"?(a(),c(he,{key:0},[(a(!0),c(he,null,Pe(O.value,Ge=>(a(),G(Gc,{key:Ge.id,session:Ge,active:Ge.id===e.activeId,"approval-count":e.pendingBySession[Ge.id]?.approvals??0,"question-count":e.pendingBySession[Ge.id]?.questions??0,unread:e.unreadBySession[Ge.id]??!1,onSelect:Z,onRename:we[5]||(we[5]=(Je,at)=>w("rename",Je,at)),onArchive:we[6]||(we[6]=Je=>w("archive",Je)),onFork:we[7]||(we[7]=Je=>w("fork",Je)),onExport:we[8]||(we[8]=Je=>w("export",Je))},null,8,["session","active","approval-count","question-count","unread"]))),128)),O.value.length===0?(a(),c("div",I3,d(l(n)("sidebar.noSessions")),1)):A("",!0)],64)):(a(!0),c(he,{key:1},Pe(e.groups,Ge=>(a(),c("div",{key:Ge.workspace.id,class:fe(["ws-drop-target",{"drop-before":ce.value?.id===Ge.workspace.id&&ce.value.position==="before","drop-after":ce.value?.id===Ge.workspace.id&&ce.value.position==="after"}]),onDragover:Je=>ye(Je,Ge.workspace.id),onDrop:Je=>_e(Ge.workspace.id)},[M(o3,{group:Ge,"active-workspace-id":e.activeWorkspaceId,"active-id":e.activeId,"renaming-id":U.value,"rename-value":ke.value,"rename-input-ref":ee(),"pending-by-session":e.pendingBySession,"unread-by-session":e.unreadBySession,"ws-menu-open-id":bt.value,dragging:ge.value===Ge.workspace.id,"is-collapsed":E,"is-expanded":L,onGroupClick:Ce,onGroupContextmenu:an,onToggleWsMenu:hs,onCreateInWorkspace:we[9]||(we[9]=Je=>w("createInWorkspace",Je)),onSelectSession:Z,onRenameSession:we[10]||(we[10]=(Je,at)=>w("rename",Je,at)),onArchiveSession:we[11]||(we[11]=Je=>w("archive",Je)),onForkSession:we[12]||(we[12]=Je=>w("fork",Je)),onExportSession:we[13]||(we[13]=Je=>w("export",Je)),onLoadMore:oe,onToggleExpand:ne,onConfirmRename:Be,onCancelRename:Y,onUpdateRenameValue:ve,onWsDragstart:Q,onWsDragend:ie},null,8,["group","active-workspace-id","active-id","renaming-id","rename-value","rename-input-ref","pending-by-session","unread-by-session","ws-menu-open-id","dragging"])],42,A3))),128))],64))],32),r("div",T3,[r("button",{class:"btn-settings",type:"button",onClick:we[14]||(we[14]=Re(Ge=>w("openSettings"),["stop"]))},[M(se,{name:"settings"}),r("span",null,d(l(n)("settings.title")),1)]),M(h3,{class:"side-mascot",label:l(n)("sidebar.mascot")},null,8,["label"])])],4),R.value?(a(),G(Hs,{key:0,ref_key:"ghMenuRef",ref:He,class:"gh-menu",style:rt(me.value),onClick:we[15]||(we[15]=Re(()=>{},["stop"]))},{default:H(()=>[M(dt,{onClick:Ze},{default:H(()=>[re(d(l(n)("sidebar.copyPath")),1)]),_:1}),M(dt,{onClick:Ve},{default:H(()=>[re(d(l(n)("sidebar.rename")),1)]),_:1}),M(dt,{danger:"",onClick:At},{default:H(()=>[re(d(l(n)("sidebar.removeWorkspace")),1)]),_:1})]),_:1},8,["style"])):A("",!0),bt.value!==null&&Ct.value?(a(),G(Hs,{key:1,ref_key:"wsMenuRef",ref:Kt,class:"ws-menu",style:rt(dn.value),onClick:we[19]||(we[19]=Re(()=>{},["stop"]))},{default:H(()=>[M(dt,{onClick:we[16]||(we[16]=Ge=>ut(Ct.value))},{default:H(()=>[re(d(l(n)("sidebar.copyPath")),1)]),_:1}),M(dt,{separator:""}),M(dt,{onClick:we[17]||(we[17]=Ge=>Ft(Ct.value))},{default:H(()=>[re(d(l(n)("sidebar.rename")),1)]),_:1}),M(dt,{separator:""}),M(dt,{danger:"",onClick:we[18]||(we[18]=Ge=>In(Ct.value))},{default:H(()=>[re(d(l(n)("sidebar.removeWorkspace")),1)]),_:1})]),_:1},8,["style"])):A("",!0),_t.value?(a(),G(Hs,{key:2,ref_key:"sectionMenuRef",ref:Nt,class:"section-menu",style:rt(pn.value),onClick:we[22]||(we[22]=Re(()=>{},["stop"]))},{default:H(()=>[M(dt,{onClick:we[20]||(we[20]=Ge=>mn("manual"))},{default:H(()=>[r("span",P3,[e.workspaceSortMode==="manual"?(a(),G(se,{key:0,name:"check",size:"sm"})):A("",!0)]),re(" "+d(l(n)("sidebar.sortManual")),1)]),_:1}),M(dt,{onClick:we[21]||(we[21]=Ge=>mn("recent"))},{default:H(()=>[r("span",E3,[e.workspaceSortMode==="recent"?(a(),G(se,{key:0,name:"check",size:"sm"})):A("",!0)]),re(" "+d(l(n)("sidebar.sortRecent")),1)]),_:1})]),_:1},8,["style"])):A("",!0),Rn.value?(a(),G(Hs,{key:3,ref_key:"backendMenuRef",ref:Gn,class:"backend-menu",style:rt(yn.value),onClick:we[23]||(we[23]=Re(()=>{},["stop"]))},{default:H(()=>[(a(),c(he,null,Pe(u,Ge=>M(dt,{key:Ge,onClick:Je=>kn(Ge)},{default:H(()=>[r("span",L3,[f(Ge)?(a(),G(se,{key:0,name:"check",size:"sm"})):A("",!0)]),r("span",B3,d(Ge),1),r("span",R3,d(p(Ge)),1)]),_:2},1032,["onClick"])),64))]),_:1},8,["style"])):A("",!0),x.value?(a(),G(sg,{key:4,sessions:e.sessions,"active-id":e.activeId,onSelect:Z,onClose:we[24]||(we[24]=Ge=>x.value=!1)},null,8,["sessions","active-id"])):A("",!0),(a(),G(lo,{to:"body"},[Xt.value?(a(),G(l(qt),{key:0,onClose:we[25]||(we[25]=Ge=>Xt.value=!1)})):A("",!0)]))],6))}}),z3=Ee(D3,[["__scopeId","data-v-7e5a3931"]]);function F3(e){try{const t=It(e);if(t===null)return null;const n=Number(t);return Number.isFinite(n)?n:null}catch{return null}}function N3(e,t){try{Bt(e,String(t))}catch{}}function q3(e){const{storageKey:t,defaultWidth:n,min:s,max:o,reverse:i=!1}=e;function u(k){return Number.isFinite(k)?Math.min(Wo(o),Math.max(s,Math.round(k))):n}const p=I(u(F3(t)??n)),f=I(!1);function v(k){const T=u(k);p.value=T,N3(t,T)}let w=0,x=0,h=null,m=-1;function _(k){if(!f.value)return;const T=k.clientX-w;v(x+(i?-T:T))}function y(){if(f.value){if(f.value=!1,typeof document<"u"&&(document.body.style.userSelect="",document.body.style.cursor=""),h){try{h.releasePointerCapture(m)}catch{}h.removeEventListener("pointermove",_),h.removeEventListener("pointerup",y),h.removeEventListener("pointercancel",y)}h=null,m=-1}}function g(k){k.preventDefault(),f.value=!0,w=k.clientX,x=u(p.value),h=k.currentTarget,m=k.pointerId,typeof document<"u"&&(document.body.style.userSelect="none",document.body.style.cursor="col-resize");try{h.setPointerCapture(m)}catch{}h.addEventListener("pointermove",_),h.addEventListener("pointerup",y),h.addEventListener("pointercancel",y)}return Ln(y),{width:p,dragging:f,clamp:u,setWidth:v,onPointerDown:g}}const W3=["aria-label"],H3=Ie({__name:"ResizeHandle",props:{storageKey:{},defaultWidth:{},min:{},max:{},reverse:{type:Boolean},ariaLabel:{}},emits:["update:width","update:dragging"],setup(e,{emit:t}){const n=e,s=t,{t:o}=Ue(),{width:i,dragging:u,onPointerDown:p}=q3({storageKey:n.storageKey,defaultWidth:n.defaultWidth,min:n.min,max:()=>n.max,reverse:n.reverse});return s("update:width",i.value),Oe(i,f=>s("update:width",f)),Oe(u,f=>s("update:dragging",f)),(f,v)=>(a(),c("div",{class:fe(["rh",{dragging:l(u)}]),role:"separator","aria-orientation":"vertical","aria-label":e.ariaLabel??l(o)("layout.resizeHandleAria"),onPointerdown:v[0]||(v[0]=(...w)=>l(p)&&l(p)(...w))},[...v[1]||(v[1]=[r("span",{class:"rh-bar","aria-hidden":"true"},null,-1)])],42,W3))}}),Dr=Ee(H3,[["__scopeId","data-v-48fd0a6d"]]),U3=Ie({__name:"StatusDot",props:{status:{}},setup(e){const t=e;function n(o){switch(o){case"ok":case"done":case"completed":case"success":return"ok";case"error":case"failed":case"danger":return"error";case"running":case"working":case"in_progress":case"active":return"running";case"suspended":return"suspended";default:return"idle"}}const s=$(()=>n(t.status));return(o,i)=>(a(),c("span",{class:fe(["kw-dot",`kw-dot--${s.value}`]),"aria-hidden":"true"},null,2))}}),Ro=Ee(U3,[["__scopeId","data-v-e36198e5"]]),V3=["innerHTML"],j3={class:"bh-text"},K3={class:"a"},G3={key:0,class:"p"},Q3={class:"rt"},Y3=["aria-label"],Z3={key:0,class:"tm"},X3=["inert"],J3={class:"bb-pad"},eC=Ie({__name:"ToolRow",props:{status:{},icon:{default:""},name:{},arg:{default:""},time:{default:""},open:{type:Boolean,default:!1},expandable:{type:Boolean,default:!1},stacked:{type:Boolean,default:!1},stackPosition:{default:"single"}},emits:["toggle"],setup(e,{emit:t}){const n=t,s=mo("pinScroll",()=>{}),o=I(null);function i(){n("toggle");const u=o.value;u&&Ke(()=>s(u))}return(u,p)=>(a(),c("div",{class:fe(["box",{open:e.open,stacked:e.stacked,err:e.status==="error","stack-first":e.stackPosition==="first","stack-middle":e.stackPosition==="middle","stack-last":e.stackPosition==="last"}])},[r("div",{class:"bh",ref_key:"bhEl",ref:o,onClick:i},[e.icon?(a(),c("span",{key:0,class:"gl",innerHTML:e.icon,"aria-hidden":"true"},null,8,V3)):A("",!0),r("span",j3,[r("span",K3,d(e.name),1),M(ot,{text:e.arg},{default:H(()=>[e.arg?(a(),c("span",G3,d(e.arg),1)):A("",!0)]),_:1},8,["text"])]),r("span",Q3,[r("span",{class:fe(["status",e.status]),role:"status","aria-label":e.status},[e.status==="ok"?(a(),G(se,{key:0,name:"check",size:"sm"})):e.status==="error"?(a(),G(se,{key:1,name:"close",size:"sm"})):e.status==="suspended"?(a(),G(Ro,{key:2,status:"suspended"})):(a(),G(Ro,{key:3,status:"running"}))],10,Y3),yt(u.$slots,"trailing"),e.time?(a(),c("span",Z3,d(e.time),1)):A("",!0)]),e.expandable?(a(),G(se,{key:1,class:"car",name:e.open?"chevron-down":"chevron-right",size:"sm"},null,8,["name"])):A("",!0)],512),r("div",{class:fe(["bb",{open:e.open}]),inert:!e.open},[r("div",J3,[yt(u.$slots,"default")])],10,X3)],2))}}),ri=Ee(eC,[["__scopeId","data-v-fef8aad2"]]),tC={key:0,class:"at-type"},nC={key:0,class:"at-type-sep"},sC={key:1,class:"at-task"},oC={key:2,class:"bb-code"},iC=Ie({__name:"AgentTool",props:{tool:{},mobile:{type:Boolean,default:!1},stackPosition:{default:"single"},toolDiffPanel:{type:Boolean,default:!1}},emits:["openMedia","openFile","openToolDiff","openAgent"],setup(e,{emit:t}){const{t:n}=Ue(),s=e,o=t;function i(k){if(!k)return{};try{const T=JSON.parse(k);return{description:typeof T.description=="string"?T.description:void 0,subagentType:typeof T.subagent_type=="string"?T.subagent_type:void 0,prompt:typeof T.prompt=="string"?T.prompt:void 0,model:typeof T.model=="string"?T.model:void 0,thinkingEffort:typeof T.thinking_effort=="string"?T.thinking_effort:void 0}}catch{return{}}}const u=$(()=>i(s.tool.arg)),p=$(()=>!!s.tool.output&&s.tool.output.length>0),f=$(()=>!!u.value.prompt||!!u.value.subagentType||p.value),v=I(s.tool.defaultExpanded===!0&&f.value),w=$(()=>s.tool.status),x=$(()=>Ks(s.tool.name)),h=$(()=>ni(s.tool.name)),m=$(()=>u.value.description||u.value.subagentType||""),_=mo("resolveAgentTaskId"),y=$(()=>_?_(s.tool.id)!==void 0:!0);function g(){f.value&&(v.value=!v.value)}return Oe(()=>[s.tool.defaultExpanded,s.tool.output?.length,s.tool.status],()=>{s.tool.defaultExpanded===!0&&f.value&&(v.value=!0)}),(k,T)=>(a(),G(ri,{status:w.value,icon:h.value,name:x.value,arg:v.value?"":m.value,time:e.tool.timing,open:v.value,expandable:f.value,stacked:e.stackPosition!=="single","stack-position":e.stackPosition,onToggle:g},{trailing:H(()=>[y.value?(a(),c("button",{key:0,type:"button",class:"at-open",onClick:T[0]||(T[0]=Re(S=>o("openAgent",e.tool.id),["stop"]))},d(l(n)("tasks.openDetail")),1)):A("",!0)]),default:H(()=>[u.value.subagentType||u.value.model||u.value.thinkingEffort?(a(),c("div",tC,[u.value.subagentType?(a(),c(he,{key:0},[re(d(u.value.subagentType),1)],64)):A("",!0),u.value.model?(a(),c(he,{key:1},[u.value.subagentType?(a(),c("span",nC,"·")):A("",!0),re(d(u.value.model),1)],64)):A("",!0),u.value.thinkingEffort?(a(),c(he,{key:2},[T[1]||(T[1]=r("span",{class:"at-type-sep"},"·",-1)),re(d(l(n)("tasks.thinkingEffort",{effort:u.value.thinkingEffort})),1)],64)):A("",!0)])):A("",!0),u.value.prompt?(a(),c("div",sC,d(u.value.prompt),1)):A("",!0),p.value?(a(),c("div",oC,[(a(!0),c(he,null,Pe(e.tool.output??[],(S,O)=>(a(),c("div",{key:O},d(S),1))),128))])):A("",!0)]),_:1},8,["status","icon","name","arg","time","open","expandable","stacked","stack-position"]))}}),aC=Ee(iC,[["__scopeId","data-v-72115ae1"]]);function lC(e){if(!e)return[];try{const n=JSON.parse(e).questions;if(!Array.isArray(n))return[];const s=[];for(const o of n){if(!o||typeof o!="object")continue;const i=o,u=Array.isArray(i.options)?i.options.map(p=>{const f=p&&typeof p=="object"?p:{};return{label:typeof f.label=="string"?f.label:"",description:typeof f.description=="string"?f.description:""}}):[];s.push({question:typeof i.question=="string"?i.question:"",header:typeof i.header=="string"?i.header:"",options:u,multiSelect:i.multi_select===!0})}return s}catch{return[]}}const wi={recognized:!1,answers:{},note:""};function rC(e){const t=e?.[0];if(!t)return wi;let n;try{n=JSON.parse(t)}catch{return wi}if(!n||typeof n!="object"||Array.isArray(n))return wi;const s=n.answers;if(!s||typeof s!="object"||Array.isArray(s))return wi;const o={};for(const[i,u]of Object.entries(s))typeof u=="string"?o[i]=u:u===!0&&(o[i]=!0);return{recognized:!0,answers:o,note:typeof n.note=="string"?n.note:""}}function uC(e,t,n){return e[t]??e[`q_${n}`]}const cC=/^opt_\d+_(\d+)$/;function dC(e,t=[]){if(e===void 0)return{selected:new Set,otherText:"",indeterminate:!1};if(e===!0)return{selected:new Set,otherText:"",indeterminate:!0};const n=new Map;t.forEach((u,p)=>{u.label.length>0&&!n.has(u.label)&&n.set(u.label,p)});const s=n.get(e);if(s!==void 0)return{selected:new Set([s]),otherText:"",indeterminate:!1};const o=new Set,i=[];for(const u of e.split(",")){const p=u.trim(),f=n.get(p);if(f!==void 0){o.add(f);continue}const v=cC.exec(p);v?o.add(Number(v[1])):p.length>0&&i.push(p)}return{selected:o,otherText:i.join(", "),indeterminate:!1}}const pC={key:0,class:"chip"},fC={key:0,class:"au-dismissed"},mC={key:1,class:"au-list"},vC={class:"au-q"},hC={key:0,class:"au-hdr"},gC={class:"au-qtext"},yC={class:"au-opts"},kC={class:"au-glyph"},bC={class:"au-label"},wC={key:0,class:"au-desc"},SC={key:0,class:"au-opt sel"},CC={class:"au-glyph"},_C={class:"au-label"},$C={key:1,class:"au-opt sel"},MC={class:"au-label"},xC={key:2,class:"au-raw"},IC=80,AC=Ie({__name:"AskUserTool",props:{tool:{},mobile:{type:Boolean,default:!1},stackPosition:{default:"single"},toolDiffPanel:{type:Boolean,default:!1}},emits:["openMedia","openFile","openToolDiff"],setup(e){const t=e,{t:n}=Ue();function s(B,q=IC){const V=B.trim();return V.length>q?V.slice(0,q-1)+"…":V}const o=$(()=>lC(t.tool.arg)),i=$(()=>rC(t.tool.output)),u=$(()=>i.value.recognized),p=$(()=>u.value&&Object.keys(i.value.answers).length===0&&i.value.note.length>0),f=$(()=>o.value.map((B,q)=>dC(uC(i.value.answers,B.question,q),B.options))),v=$(()=>Object.keys(i.value.answers).length);function w(B,q){return f.value[B]?.selected.has(q)??!1}function x(B){return f.value[B]?.otherText??""}function h(B){return f.value[B]?.indeterminate??!1}function m(B,q){return B?q?"■":"□":q?"●":"○"}const _=$(()=>{if(!u.value)return s(t.tool.output?.[0]??"");if(p.value)return n("tools.ask.dismissed");const B=o.value[0]?.question??"",q=s(B);return o.value.length<=1?q:`${q} ${n("tools.ask.more",{count:o.value.length-1})}`}),y=$(()=>u.value?p.value?n("tools.ask.dismissed"):v.value===0?"":v.value===1?n("tools.ask.answer",{count:1}):n("tools.ask.answers",{count:v.value}):""),g=$(()=>!!t.tool.output&&t.tool.output.length>0),k=$(()=>u.value&&(o.value.length>0||p.value)||g.value),T=I(t.tool.defaultExpanded===!0&&k.value),S=$(()=>t.tool.status),O=$(()=>Ks(t.tool.name)),D=$(()=>ni(t.tool.name));function E(){k.value&&(T.value=!T.value)}return Oe(()=>[t.tool.defaultExpanded,t.tool.output?.length,t.tool.status],()=>{t.tool.defaultExpanded===!0&&k.value&&(T.value=!0)}),(B,q)=>(a(),G(ri,{status:S.value,icon:D.value,name:O.value,arg:T.value?"":_.value,time:e.tool.timing,open:T.value,expandable:k.value,stacked:e.stackPosition!=="single","stack-position":e.stackPosition,onToggle:E},{trailing:H(()=>[y.value?(a(),c("span",pC,d(y.value),1)):A("",!0)]),default:H(()=>[p.value?(a(),c("div",fC,d(i.value.note),1)):u.value?(a(),c("div",mC,[(a(!0),c(he,null,Pe(o.value,(V,b)=>(a(),c("div",{key:b,class:"au-block"},[r("div",vC,[V.header?(a(),c("span",hC,d(V.header),1)):A("",!0),r("span",gC,d(V.question),1)]),r("div",yC,[(a(!0),c(he,null,Pe(V.options,(P,L)=>(a(),c("div",{key:L,class:fe(["au-opt",{sel:w(b,L)}])},[r("span",kC,d(m(V.multiSelect,w(b,L))),1),r("span",bC,d(P.label),1),P.description?(a(),c("span",wC,d(P.description),1)):A("",!0)],2))),128)),x(b)?(a(),c("div",SC,[r("span",CC,d(m(V.multiSelect,!0)),1),r("span",_C,d(x(b)),1)])):A("",!0),h(b)?(a(),c("div",$C,[q[0]||(q[0]=r("span",{class:"au-glyph"},"●",-1)),r("span",MC,d(l(n)("tools.ask.answered")),1)])):A("",!0)])]))),128))])):(a(),c("div",xC,[(a(!0),c(he,null,Pe(e.tool.output??[],(V,b)=>(a(),c("div",{key:b},d(V),1))),128))]))]),_:1},8,["status","icon","name","arg","time","open","expandable","stacked","stack-position"]))}}),TC=Ee(AC,[["__scopeId","data-v-a9a0f259"]]),PC=1e6,zr=5e3;function Fr(e){if(e==="")return[];const t=e.split(`
+`);return t.at(-1)===""&&t.pop(),t}function EC(e,t){const n=Fr(e),s=Fr(t),o=n.length,i=s.length;if(o===0&&i===0)return[];if(o>zr||i>zr||(o+1)*(i+1)>PC)return null;const u=Array.from({length:o+1},()=>Array.from({length:i+1},()=>0));for(let m=1;m<=o;m++)for(let _=1;_<=i;_++)u[m][_]=n[m-1]===s[_-1]?u[m-1][_-1]+1:Math.max(u[m-1][_],u[m][_-1]);const p=[];let f=o,v=i;for(;f>0||v>0;)f>0&&v>0&&n[f-1]===s[v-1]?(p.push({type:"context",text:n[f-1]}),f--,v--):v>0&&(f===0||u[f][v-1]>=u[f-1][v])?(p.push({type:"add",text:s[v-1]}),v--):(p.push({type:"del",text:n[f-1]}),f--);p.reverse();const w=[];let x=1,h=1;for(const m of p)m.type==="context"?(w.push({type:"context",text:m.text,oldNo:x,newNo:h}),x++,h++):m.type==="add"?(w.push({type:"add",text:m.text,newNo:h}),h++):(w.push({type:"del",text:m.text,oldNo:x}),x++);return w}function LC(e){let t=0,n=0;for(const s of e)s.type==="add"?t++:s.type==="del"&&n++;return{added:t,removed:n}}function Qc(e){const t=e.trim();if(!t.startsWith("{"))return null;try{const n=JSON.parse(t);return n&&typeof n=="object"&&!Array.isArray(n)?n:null}catch{return null}}function Yc(e){const t=ho(e.name);if(t!=="edit"&&t!=="write")return null;const n=Qc(e.arg);if(!n)return null;if(t==="edit"){if(n.replace_all===!0)return null;const s=typeof n.old_string=="string"?n.old_string:void 0,o=typeof n.new_string=="string"?n.new_string:void 0;return s===void 0||o===void 0?null:EC(s,o)}return null}function BC(e){const t=Qc(e);return t&&typeof t.path=="string"?t.path:void 0}function RC(e,t){for(const n of e){const s=n.tools?.find(o=>o.id===t);if(s)return s}}const OC={key:0,class:"bb-empty"},Nr=50,DC=Ie({__name:"ToolOutputBlock",props:{lines:{},emptyText:{}},setup(e){const t=e,n=$(()=>t.lines??[]),s=$(()=>n.value.length>Nr),o={"--tool-output-visible-lines":String(Nr)};return(i,u)=>(a(),c("div",{class:fe(["bb-code tool-output-block",{scroll:s.value}]),style:o},[n.value.length===0&&e.emptyText?(a(),c("div",OC,d(e.emptyText),1)):A("",!0),(a(!0),c(he,null,Pe(n.value,(p,f)=>(a(),c("div",{key:f},d(p),1))),128))],2))}}),Ll=Ee(DC,[["__scopeId","data-v-262bbea0"]]),zC={key:0,class:"chip"},FC={key:0,class:"bb-summary"},NC=Ie({__name:"EditTool",props:{tool:{},mobile:{type:Boolean,default:!1},stackPosition:{default:"single"},toolDiffPanel:{type:Boolean,default:!1}},emits:["openMedia","openFile","openToolDiff"],setup(e,{emit:t}){const n=e,s=t,o=$(()=>n.tool.status),i=$(()=>Ks(n.tool.name)),u=$(()=>ni(n.tool.name)),p=$(()=>uo(n.tool.name,n.tool.arg)),f=$(()=>uo(n.tool.name,n.tool.arg,!0)),v=$(()=>Yc(n.tool)),w=$(()=>{const y=v.value;if(y&&n.tool.status!=="error"){const{added:g,removed:k}=LC(y);if(g||k)return`+${g} −${k}`}return""}),x=$(()=>!!n.tool.output&&n.tool.output.length>0),h=I(!1),m=$(()=>x.value&&!n.toolDiffPanel);function _(){if(n.toolDiffPanel){s("openToolDiff",n.tool.id);return}x.value&&(h.value=!h.value)}return(y,g)=>(a(),G(ri,{status:o.value,icon:u.value,name:i.value,arg:h.value?"":p.value,time:e.tool.timing,open:h.value,expandable:m.value||e.toolDiffPanel,stacked:e.stackPosition!=="single","stack-position":e.stackPosition,onToggle:_},{trailing:H(()=>[w.value?(a(),c("span",zC,d(w.value),1)):A("",!0)]),default:H(()=>[f.value?(a(),c("div",FC,d(f.value),1)):A("",!0),M(Ll,{lines:e.tool.output,"empty-text":"Waiting for output…"},null,8,["lines"])]),_:1},8,["status","icon","name","arg","time","open","expandable","stacked","stack-position"]))}}),qC=Ee(NC,[["__scopeId","data-v-74e1da99"]]),WC={key:0,class:"chip"},HC={key:0,class:"bb-summary"},UC=Ie({__name:"GenericTool",props:{tool:{},mobile:{type:Boolean,default:!1},stackPosition:{default:"single"},toolDiffPanel:{type:Boolean,default:!1}},emits:["openMedia","openFile","openToolDiff"],setup(e){const t=e,n=$(()=>t.tool.status==="running"&&/^bash$/i.test(t.tool.name)),s=$(()=>!!t.tool.output&&t.tool.output.length>0),o=$(()=>s.value||n.value),i=I(t.tool.defaultExpanded===!0&&o.value),u=$(()=>t.tool.status),p=$(()=>Ks(t.tool.name)),f=$(()=>ni(t.tool.name)),v=$(()=>uo(t.tool.name,t.tool.arg)),w=$(()=>uo(t.tool.name,t.tool.arg,!0)),x=$(()=>zu({name:t.tool.name,arg:t.tool.arg,output:t.tool.output,timing:t.tool.timing,status:t.tool.status}));function h(){o.value&&(i.value=!i.value)}return Oe(()=>[t.tool.defaultExpanded,t.tool.output?.length,t.tool.status,t.tool.name],()=>{t.tool.defaultExpanded===!0&&o.value&&(i.value=!0)}),(m,_)=>(a(),G(ri,{status:u.value,icon:f.value,name:p.value,arg:i.value?"":v.value,time:e.tool.name!=="bash"?e.tool.timing:"",open:i.value,expandable:o.value,stacked:e.stackPosition!=="single","stack-position":e.stackPosition,onToggle:h},{trailing:H(()=>[x.value?(a(),c("span",WC,d(x.value),1)):A("",!0)]),default:H(()=>[w.value?(a(),c("div",HC,d(w.value),1)):A("",!0),M(Ll,{lines:e.tool.output,"empty-text":"Waiting for output…"},null,8,["lines"])]),_:1},8,["status","icon","name","arg","time","open","expandable","stacked","stack-position"]))}}),VC=Ee(UC,[["__scopeId","data-v-aa4edcb0"]]),jC={class:"media-title"},KC=["src","alt"],GC=["aria-label"],QC=["src"],YC={class:"media-play-badge"},ZC=["src"],XC=Ie({__name:"MediaTool",props:{tool:{},mobile:{type:Boolean,default:!1}},emits:["openMedia"],setup(e,{emit:t}){const n=e,s=t,o=$(()=>n.tool.status==="ok"?n.tool.media:void 0);function i(v){return v.split(/[\\/]+/).pop()||v}function u(v){return v<1024?`${v} B`:v<1024*1024?`${(v/1024).toFixed(1)} KB`:`${(v/1024/1024).toFixed(1)} MB`}const p=$(()=>{const v=o.value;if(!v)return"";const w=[v.path?i(v.path):n.tool.name];return v.mimeType&&w.push(v.mimeType),v.bytes!==void 0&&w.push(u(v.bytes)),v.dimensions&&w.push(v.dimensions),w.join(" · ")});function f(){const v=o.value;v&&(v.kind==="image"||v.kind==="video")&&s("openMedia",v)}return(v,w)=>o.value?(a(),c("div",{key:0,class:fe(["media-tool",{mob:e.mobile}])},[M(ot,{text:o.value.path||p.value},{default:H(()=>[r("div",jC,d(p.value),1)]),_:1},8,["text"]),o.value.kind==="image"?(a(),G(ot,{key:0,text:o.value.path||p.value},{default:H(()=>[r("button",{type:"button",class:"media-image-button",onClick:f},[r("img",{class:"media-image",src:o.value.url,alt:o.value.path?i(o.value.path):p.value,loading:"lazy"},null,8,KC)])]),_:1},8,["text"])):o.value.kind==="video"?(a(),c("button",{key:1,type:"button",class:"media-video-button","aria-label":p.value,onClick:f},[r("video",{class:"media-video",src:o.value.url,preload:"metadata",playsinline:"",muted:""},null,8,QC),r("span",YC,[M(se,{name:"play",size:"md"})])],8,GC)):(a(),c("audio",{key:2,class:"media-audio",src:o.value.url,controls:""},null,8,ZC))],2)):A("",!0)}}),JC=Ee(XC,[["__scopeId","data-v-04192531"]]),e5="main",t5=1e4;function ui(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ao(e){return typeof e=="string"&&e.length>0}function n5(e){try{return AbortSignal.timeout(e)}catch{return}}function s5(e){return!ui(e)||!ao(e.label)?null:{label:e.label,description:ao(e.description)?e.description:void 0}}function o5(e){if(!ui(e))return;const t=e.state;if(t!=="pending"&&t!=="approved"&&t!=="rejected"&&t!=="cancelled")return;const n=ao(e.selected_option)?e.selected_option:void 0,s=ao(e.feedback)?e.feedback:void 0;return{state:t,selectedOption:n,feedback:s}}function i5(e){if(!ui(e)||!ao(e.tool_call_id)||!ao(e.plan))return null;const t=e.source;if(t!=="interaction"&&t!=="display"&&t!=="output")return null;const n=Array.isArray(e.options)?e.options.map(s5).filter(s=>s!==null):void 0;return{toolCallId:e.tool_call_id,plan:e.plan,path:ao(e.path)?e.path:void 0,options:n!==void 0&&n.length>0?n:void 0,source:t,review:o5(e.review)}}function a5(e){if(!ui(e)||!Array.isArray(e.plans))return[];const t=[];for(const n of e.plans){const s=i5(n);s!==null&&t.push(s)}return t}function l5(e){return!ui(e)||e.code!==0?[]:a5(e.data)}async function Zc(e,t,n=fetch){const s=Cu().serverHttpUrl,o=`/sessions/${encodeURIComponent(e)}/transcript/plan`,i=new URLSearchParams({agent_id:e5,tool_call_id:t}),u=si();try{const p=await n(`${oo(s,o)}?${i.toString()}`,{headers:u!==void 0?{Authorization:`Bearer ${u}`}:void 0,signal:n5(t5)});if(!p.ok)return null;const f=await p.json(),v=l5(f);return v.find(w=>w.toolCallId===t)??v[0]??null}catch{return null}}const r5={key:0,class:"chip"},u5={key:0,class:"bb-summary"},c5={key:1,class:"plan-wrap"},d5=["title"],p5={class:"plan-body"},f5={key:1,class:"plan-review"},m5={key:0,class:"plan-state"},v5={key:1,class:"plan-option"},h5={key:2,class:"plan-feedback"},g5={key:2,class:"plan-loading"},y5={key:3,class:"plan-empty"},k5=Ie({__name:"PlanTool",props:{tool:{},mobile:{type:Boolean,default:!1},stackPosition:{default:"single"},toolDiffPanel:{type:Boolean,default:!1}},emits:["openMedia","openFile","openToolDiff"],setup(e,{emit:t}){const n=hu(()=>ku(()=>Promise.resolve().then(()=>F_),void 0)),s=e,o=t,{t:i}=Ue(),u=mo("sessionId",()=>{}),p=$(()=>s.tool.status),f=$(()=>Ks(s.tool.name)),v=$(()=>ni(s.tool.name)),w=$(()=>zu({name:s.tool.name,arg:s.tool.arg,output:s.tool.output,timing:s.tool.timing,status:s.tool.status})),x=$(()=>!!s.tool.output&&s.tool.output.length>0),h=$(()=>s.tool.status==="running"&&/^bash$/i.test(s.tool.name)),m=I(null),_=I("idle"),y=$(()=>m.value?.path?m.value.path:uo(s.tool.name,s.tool.arg)),g=$(()=>m.value!==null?"":uo(s.tool.name,s.tool.arg,!0)),k=I(!1),T=$(()=>m.value!==null||x.value||h.value);Oe(m,B=>{B!==null&&(k.value=!0)});function S(){T.value&&(k.value=!k.value)}function O(){const B=m.value?.path;B&&o("openFile",{path:B})}const D=$(()=>{const B=m.value?.review?.state;if(B===void 0)return null;switch(B){case"approved":return i("tools.plan.approved");case"rejected":return i("tools.plan.rejected");case"cancelled":return i("tools.plan.cancelled");case"pending":return i("tools.plan.pending")}});async function E(){if(_.value!=="idle")return;if(s.tool.status==="running"){_.value="settled";return}const B=u();if(!B){_.value="settled";return}_.value="loading",m.value=await Zc(B,s.tool.id),_.value="settled"}return ht(()=>{E()}),(B,q)=>(a(),G(ri,{status:p.value,icon:v.value,name:f.value,arg:k.value?"":y.value,time:e.tool.timing,open:k.value,expandable:T.value,stacked:e.stackPosition!=="single","stack-position":e.stackPosition,onToggle:S},{trailing:H(()=>[w.value?(a(),c("span",r5,d(w.value),1)):A("",!0)]),default:H(()=>[g.value?(a(),c("div",u5,d(g.value),1)):A("",!0),m.value?(a(),c("div",c5,[m.value.path?(a(),c("button",{key:0,class:"plan-path",type:"button",title:m.value.path,onClick:O},d(m.value.path),9,d5)):A("",!0),r("div",p5,[M(l(n),{text:m.value.plan,"open-file":V=>o("openFile",V)},null,8,["text","open-file"])]),m.value.review?(a(),c("div",f5,[D.value?(a(),c("span",m5,d(D.value),1)):A("",!0),m.value.review.selectedOption?(a(),c("span",v5,d(m.value.review.selectedOption),1)):A("",!0),m.value.review.feedback?(a(),c("span",h5,"“"+d(m.value.review.feedback)+"”",1)):A("",!0)])):A("",!0)])):_.value==="loading"?(a(),c("div",g5,d(l(i)("tools.plan.loading")),1)):_.value==="settled"&&m.value===null&&!x.value?(a(),c("div",y5,d(l(i)("tools.plan.unavailable")),1)):(a(),G(Ll,{key:4,lines:e.tool.output,"empty-text":"Waiting for output…"},null,8,["lines"]))]),_:1},8,["status","icon","name","arg","time","open","expandable","stacked","stack-position"]))}}),b5=Ee(k5,[["__scopeId","data-v-c851b016"]]),w5=/([\s\S]*?)<\/summary>/,S5=/([\s\S]*?)<\/resume_hint>/,ba=/]*)>|<\/subagent>/g,C5=" ",qr=/(completed|failed|aborted):\s*(\d+)/g,Wr=/([a-z_]+)="([^"]*)"/g;function _5(e){return e.replaceAll(""",'"').replaceAll("<","<").replaceAll(">",">").replaceAll("&","&")}function $5(e){const t={};Wr.lastIndex=0;let n;for(;(n=Wr.exec(e))!==null;)t[n[1]]=_5(n[2]);return t}function M5(e){const t={completed:0,failed:0,aborted:0};qr.lastIndex=0;let n;for(;(n=qr.exec(e))!==null;){const s=n[1];t[s]=Number(n[2])}return t}function x5(e,t){const n=$5(e);return{outcome:n.outcome??"completed",item:n.item,agentId:n.agent_id,mode:n.mode,state:n.state,body:t.trim()}}function I5(e){const t=[],n=[];ba.lastIndex=0;let s;for(;(s=ba.exec(e))!==null;)if(s[0]===C5){if(n.length===0)continue;const o=n.pop();o&&n.length===0&&t.push(x5(o.attrs,e.slice(o.bodyStart,s.index)))}else n.length===0?n.push({attrs:s[1]??"",bodyStart:ba.lastIndex}):n.push(null);return t}function A5(e){if(e==null)return null;const t=Array.isArray(e)?e.join(`
+`):e;if(!t.includes(""))return null;const n=w5.exec(t)?.[1]?.trim()??"",{completed:s,failed:o,aborted:i}=M5(n),u=S5.exec(t)?.[1]?.trim(),p=I5(t),f=s+o+i;return{summary:n,completed:s,failed:o,aborted:i,total:f>0?f:p.length,subagents:p,resumeHint:u}}function Hr(e){return e?e.split(`
+`).map(t=>t.trimEnd()).filter(Boolean).at(-1)??"":""}function T5(e){return e.suspendedReason||Hr(e.text)||Hr(e.outputLines?.join(`
+`))||e.summary||""}function P5(e){return e.suspendedReason?e.suspendedReason:e.text?e.text:e.outputLines&&e.outputLines.length>0?e.outputLines.join(`
+`):e.summary??""}function E5(e){return e==="completed"?"completed":e==="failed"||e==="aborted"?"failed":"working"}function Ur(e,t){return{id:e.agentId??e.item??`result-${t}`,name:e.item??`subagent ${t+1}`,activity:e.body.split(`
+`)[0]??"",phase:E5(e.outcome),body:e.body}}function L5(e,t){return!!(t.agentId&&e.id===t.agentId||t.item&&e.name.includes(t.item))}function B5(e,t){const n=e.map(o=>({id:o.id,name:o.name,activity:T5(o),phase:o.phase,body:P5(o)}));if(!t)return n;const s=t.subagents.filter(o=>(o.outcome==="aborted"||o.state==="not_started")&&!e.some(i=>L5(i,o))).map((o,i)=>Ur(o,i));return n.length>0?[...n,...s]:t.subagents.map((o,i)=>Ur(o,i))}const R5=["aria-expanded"],O5={class:"title"},D5={key:0,class:"meta"},z5={key:1,class:"sum-txt"},F5={class:"rt"},N5={class:"status"},q5={key:0,class:"chip"},W5={key:1,class:"tm"},H5={class:"body"},U5={class:"overview"},V5={class:"overview-line"},j5={class:"big"},K5={key:0,class:"lbl"},G5={key:1,class:"lbl"},Q5={key:2,class:"lbl"},Y5={key:0,class:"seg","aria-hidden":"true"},Z5={key:1,class:"legend"},X5=["aria-expanded","onClick"],J5={class:"mname"},e_={class:"mact"},t_={class:"mphase"},n_={key:1,class:"fallback-output"},s_={key:2,class:"waiting"},o_=Ie({__name:"SwarmTool",props:{tool:{},mobile:{type:Boolean,default:!1},stackPosition:{default:"single"},toolDiffPanel:{type:Boolean,default:!1}},emits:["openMedia","openFile","openToolDiff","openAgent"],setup(e){const{t}=Ue(),n=e;function s(b){if(!b)return{};try{const P=JSON.parse(b),L=Array.isArray(P.items)?P.items:void 0;return{description:typeof P.description=="string"?P.description:void 0,itemCount:L?.length}}catch{return{}}}const o=mo("resolveSwarmMembers"),i=$(()=>s(n.tool.arg)),u=$(()=>Ks(n.tool.name)),p=$(()=>i.value.description??""),f=$(()=>o?.(n.tool.id)??[]),v=$(()=>A5(n.tool.output)),w=$(()=>n.tool.status),x=$(()=>w.value==="running"?"running":w.value==="error"||(v.value?.failed??0)>0||(v.value?.aborted??0)>0?"error":"ok"),h=$(()=>B5(f.value,v.value)),m=$(()=>{const b={completed:0,working:0,suspended:0,queued:0,failed:0};for(const P of h.value)b[P.phase]++;return b}),_=$(()=>h.value.length||i.value.itemCount||0),y=$(()=>m.value.completed+m.value.failed),g=$(()=>m.value.working+m.value.suspended+m.value.queued),k=[{phase:"completed",cls:"s-ok"},{phase:"working",cls:"s-run"},{phase:"suspended",cls:"s-warn"},{phase:"failed",cls:"s-fail"},{phase:"queued",cls:"s-queue"}],T=$(()=>k.map(({phase:b,cls:P})=>({phase:b,count:m.value[b],cls:P})).filter(b=>b.count>0)),S=I(w.value==="running"||g.value>0);function O(){S.value=!S.value}const D=$(()=>h.value.length>0||v.value||w.value==="running"?"":(n.tool.output??[]).join(`
+`).trim()),E=I(new Set);function B(b){const P=new Set(E.value);P.has(b)?P.delete(b):P.add(b),E.value=P}function q(b){return E.value.has(b)}function V(b){return t(`tools.swarm.phase${b[0].toUpperCase()}${b.slice(1)}`)}return(b,P)=>(a(),c("div",{class:fe(["swarm-card",{open:S.value,err:x.value==="error",stacked:e.stackPosition!=="single"}])},[r("button",{class:"head",type:"button","aria-expanded":S.value,onClick:O},[M(se,{class:"ic",name:"git-pull-request",size:"sm"}),r("span",O5,d(u.value),1),p.value?(a(),c("span",D5,"·")):A("",!0),p.value?(a(),c("span",z5,d(p.value),1)):A("",!0),r("span",F5,[r("span",N5,[x.value==="ok"?(a(),G(se,{key:0,name:"check",size:"sm"})):x.value==="error"?(a(),G(se,{key:1,name:"close",size:"sm"})):(a(),G(Ro,{key:2,status:"running"}))]),y.value>0||_.value>0?(a(),c("span",q5,d(y.value)+" / "+d(_.value),1)):A("",!0),e.tool.timing?(a(),c("span",W5,d(e.tool.timing),1)):A("",!0)]),M(se,{class:"car",name:S.value?"chevron-down":"chevron-right",size:"sm"},null,8,["name"])],8,R5),gt(r("div",H5,[r("div",U5,[r("div",V5,[r("span",j5,d(l(t)("tools.swarm.progress",{done:y.value,total:_.value})),1),x.value==="running"&&_.value>0?(a(),c("span",K5,d(l(t)("tools.swarm.runningSub",{count:g.value})),1)):v.value?(a(),c("span",G5,d(l(t)("tools.swarm.doneSub",{completed:v.value.completed,failed:v.value.failed+v.value.aborted})),1)):(a(),c("span",Q5,d(l(t)("tools.swarm.waiting")),1))]),_.value>0&&T.value.length>0?(a(),c("div",Y5,[(a(!0),c(he,null,Pe(T.value,L=>(a(),c("span",{key:L.phase,class:fe(L.cls),style:rt({flex:L.count})},null,6))),128))])):A("",!0),T.value.length>1?(a(),c("div",Z5,[(a(!0),c(he,null,Pe(T.value,L=>(a(),c("span",{key:L.phase},[r("i",{class:fe(["lg-dot",L.cls])},null,2),re(d(V(L.phase))+" "+d(L.count),1)]))),128))])):A("",!0)]),h.value.length>0?(a(!0),c(he,{key:0},Pe(h.value,L=>(a(),c("div",{key:L.id,class:fe(["member",[`phase-${L.phase}`,{open:q(L.id)}]])},[r("button",{class:"member-head",type:"button","aria-expanded":q(L.id),onClick:ne=>B(L.id)},[M(Ro,{class:"row-dot",status:L.phase},null,8,["status"]),M(ot,{text:L.name},{default:H(()=>[r("span",J5,d(L.name),1)]),_:2},1032,["text"]),L.activity?(a(),G(ot,{key:0,text:L.activity},{default:H(()=>[r("span",e_,d(L.activity),1)]),_:2},1032,["text"])):A("",!0),r("span",t_,d(V(L.phase)),1),M(se,{class:"mcar",name:q(L.id)?"chevron-down":"chevron-right",size:"sm"},null,8,["name"])],8,X5),gt(r("div",{class:"member-body"},d(L.body),513),[[Jn,q(L.id)]])],2))),128)):D.value?(a(),c("div",n_,d(D.value),1)):(a(),c("div",s_,d(l(t)("tools.swarm.waiting")),1))],512),[[Jn,S.value]])],2))}}),i_=Ee(o_,[["__scopeId","data-v-4b58e128"]]);function a_(e){if(e.media&&e.status==="ok")return JC;const t=ho(e.name);return t==="edit"||t==="write"||t==="multi_edit"?qC:t==="exitplanmode"?b5:t==="task"?aC:t==="agentswarm"?i_:t==="askuserquestion"?TC:VC}const Xc=Ie({__name:"ToolCall",props:{tool:{},mobile:{type:Boolean,default:!1},stackPosition:{default:"single"},toolDiffPanel:{type:Boolean,default:!1}},emits:["openMedia","openFile","openToolDiff","openAgent"],setup(e,{emit:t}){const n=e,s=t,o=$(()=>a_(n.tool));return(i,u)=>(a(),G(vu(o.value),{tool:e.tool,mobile:e.mobile,"stack-position":e.stackPosition,"tool-diff-panel":e.toolDiffPanel,"data-scroll-anchor-id":e.tool.id,onOpenMedia:u[0]||(u[0]=p=>s("openMedia",p)),onOpenFile:u[1]||(u[1]=p=>s("openFile",p)),onOpenToolDiff:u[2]||(u[2]=p=>s("openToolDiff",p)),onOpenAgent:u[3]||(u[3]=p=>s("openAgent",p))},null,40,["tool","mobile","stack-position","tool-diff-panel","data-scroll-anchor-id"]))}});function ms(e){if(e>=1024*1024)return`${Vr(e/(1024*1024))}M`;if(e>=1024){const t=e/1024;return`${t>=100?Math.round(t):Vr(t)}k`}return String(e)}function Vr(e){const t=e.toFixed(1);return t.endsWith(".0")?t.slice(0,-2):t}function ea(e){if(e.blocks)return e.blocks;const t=[];e.thinking&&t.push({kind:"thinking",thinking:e.thinking}),e.text&&t.push({kind:"text",text:e.text});for(const n of e.tools??[])t.push({kind:"tool",tool:n});return t}function l_(e){return!(e.tool.status==="ok"&&e.tool.media)}function r_(e,t){return t<=1?"single":e===0?"first":e===t-1?"last":"middle"}const jr=new WeakMap;function u_(e){const t=jr.get(e);if(t)return t;const n=c_(e);return jr.set(e,n),n}function c_(e){const t=ea(e),n=[];let s=[];const o=()=>{if(s.length===1){const[i]=s;i&&n.push({kind:"tool",tool:i.tool,sourceIndex:i.sourceIndex})}else s.length>1&&n.push({kind:"tool-stack",tools:s});s=[]};return t.forEach((i,u)=>{if(i.kind==="tool"){if(l_(i)){s.push({tool:i.tool,sourceIndex:u});return}o(),n.push({kind:"tool",tool:i.tool,sourceIndex:u});return}o(),i.kind==="thinking"?n.push({kind:"thinking",thinking:i.thinking,sourceIndex:u}):i.kind==="text"?n.push({kind:"text",text:i.text,sourceIndex:u}):i.kind==="error"&&n.push({kind:"error",text:i.text,code:i.code,sourceIndex:u})}),o(),n}function d_(e){return ea(e).flatMap(t=>t.kind==="text"&&t.text?[t.text]:[]).join(`
+
+`)}function p_(e){const t=[];for(const n of ea(e))if(n.kind==="thinking"&&n.thinking)t.push(`> **Thinking**
+> ${n.thinking.split(`
+`).join(`
+> `)}`);else if(n.kind==="text"&&n.text)t.push(n.text);else if(n.kind==="error"&&n.text){const s=n.code!==void 0?`**Error** (${n.code})`:"**Error**";t.push(`> ${s}
+> ${n.text.split(`
+`).join(`
+> `)}`)}else if(n.kind==="tool"&&n.tool.output&&n.tool.output.length>0){const s=n.tool.output.join(`
+`);t.push(`\`\`\`
+[${n.tool.name}]
+${s}
+\`\`\``)}return t.join(`
+
+`)}function Jc(e){return e.tool.id||`tool-${e.sourceIndex}`}function f_(e,t){return e.kind==="tool-stack"?`tool-stack-${e.tools[0]?.sourceIndex??t}`:e.kind==="tool"?Jc({tool:e.tool,sourceIndex:e.sourceIndex}):`${e.kind}-${e.sourceIndex}`}const m_=["aria-expanded"],v_={class:"tg-title"},h_={class:"tg-meta"},g_=["inert"],y_={class:"tool-group-body-inner"},k_=Ie({__name:"ToolGroup",props:{tools:{},mobile:{type:Boolean,default:!1},toolDiffPanel:{type:Boolean,default:!1}},emits:["openMedia","openFile","openToolDiff","openAgent"],setup(e,{emit:t}){const n=e,s=t,o=I(!0),i=$(()=>n.tools.length),u=$(()=>n.tools.some(m=>m.tool.status==="running")?"running":n.tools.some(m=>m.tool.status==="error")?"error":"done"),{t:p}=Ue(),f=$(()=>{switch(u.value){case"running":return p("tools.group.running");case"error":return p("tools.group.error");default:return p("tools.group.done")}});function v(){o.value=!o.value}const w=mo("pinScroll",()=>{}),x=I(null);function h(){v();const m=x.value;m&&Ke(()=>w(m))}return(m,_)=>(a(),c("div",{class:fe(["tool-group",{open:o.value}])},[r("button",{class:"tool-group-head",ref_key:"headEl",ref:x,type:"button","aria-expanded":o.value,onClick:h},[M(Ro,{status:u.value},null,8,["status"]),M(se,{class:"tg-ic",name:"list",size:"sm"}),r("span",v_,d(l(p)("tools.group.title",i.value)),1),r("span",h_,"· "+d(f.value),1),M(se,{class:"tg-car",name:"chevron-right",size:"sm"})],8,m_),r("div",{class:fe(["tool-group-body",{open:o.value}]),inert:!o.value},[r("div",y_,[(a(!0),c(he,null,Pe(e.tools,(y,g)=>(a(),G(Xc,{key:l(Jc)(y),tool:y.tool,mobile:e.mobile,"stack-position":l(r_)(g,e.tools.length),"tool-diff-panel":e.toolDiffPanel,onOpenMedia:_[0]||(_[0]=k=>s("openMedia",k)),onOpenFile:_[1]||(_[1]=k=>s("openFile",k)),onOpenToolDiff:_[2]||(_[2]=k=>s("openToolDiff",k)),onOpenAgent:_[3]||(_[3]=k=>s("openAgent",k))},null,8,["tool","mobile","stack-position","tool-diff-panel"]))),128))])],10,g_)],2))}}),b_=Ee(k_,[["__scopeId","data-v-37eb334f"]]),Si=I(!1);let Kr=!1;function wa(){const e=document.documentElement.dataset.colorScheme;return e==="dark"?!0:e==="light"?!1:window.matchMedia("(prefers-color-scheme: dark)").matches}function ed(){return!Kr&&typeof window<"u"&&typeof document<"u"&&(Kr=!0,Si.value=wa(),new MutationObserver(()=>{Si.value=wa()}).observe(document.documentElement,{attributes:!0,attributeFilter:["data-color-scheme"]}),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",()=>{Si.value=wa()})),Si}const td=["cjs","css","csv","gif","htm","html","jpeg","jpg","js","json","jsx","log","md","mjs","pdf","png","scss","svg","ts","tsx","txt","vue","webp","xml","yaml","yml"],w_=new Set(["AGENTS.md","CHANGELOG.md","Dockerfile","LICENSE","Makefile","README.md","package.json","pnpm-lock.yaml","pnpm-workspace.yaml","tsconfig.json","vite.config.ts"]),Za=[...td].sort((e,t)=>t.length-e.length).join("|"),Sa=new RegExp([String.raw`(?:^|[\s([{"'`+"`"+String.raw`])`,String.raw`(`,String.raw`(?:~|\.{1,2}|/)?(?:[A-Za-z0-9_.@+()[\]-]+/)+[A-Za-z0-9_.@+()[\]-]+(?:\.(?:${Za}))?`,String.raw`|`,String.raw`[A-Za-z0-9_.@+()[\]-]+\.(?:${Za})`,String.raw`)`,String.raw`(?:#L?(\d+)|:(\d+))?`,String.raw`(?=$|[\s)"'\]}>.,;!?,。;!?)])`].join(""),"gi"),nd=/[),.;!?,。;!?)]+$/;function S_(e){const t=e.toLowerCase();return td.some(n=>t.endsWith(`.${n}`))}function C_(e){const t=new Map,n=new RegExp(String.raw`\b(?:path|src)=["'](\/[^"']+\.(?:${Za}))["']`,"gi");let s;for(;(s=n.exec(e))!==null;){const o=s[1];if(!o)continue;const i=o.split("/").pop();i&&t.set(i,o)}return t}function __(e,t={}){const n=e.trim();if(!n||/^[a-z][a-z0-9+.-]*:\/\//i.test(n))return null;const s=n.match(/^(.*?)(?:#L?(\d+)|:(\d+))?$/i);if(!s)return null;let o=(s[1]??"").replace(nd,"");if(!o)return null;const i=o.split("/").pop()??o,u=o.includes("/"),p=w_.has(i),f=S_(i);if(u&&!p&&!f)return null;if(!u&&!p){const x=t.aliases?.get(i);if(!x)return null;o=x}const v=s[2]??s[3],w=v?Number(v):void 0;return{path:o,line:w!==void 0&&Number.isFinite(w)&&w>0?w:void 0}}function $_(e,t={}){const n=[];Sa.lastIndex=0;let s;for(;(s=Sa.exec(e))!==null;){const o=s[0]??"",i=s[1]??"",u=o.indexOf(i);if(u<0)continue;const p=s[2]??s[3];let f=i+(p?o.slice(u+i.length):"");const v=f.replace(nd,""),w=f.length-v.length;f=v;const x=__(f,t);if(!x)continue;const h=s.index+u,m=h+f.length;n.push({...x,start:h,end:m,text:f}),w>0&&(Sa.lastIndex-=w)}return n}const M_=12e4,x_=6e4,I_=32,A_=3e4,Gr=/(^|\n)(`{3,}|~{3,})[^\n]*\n([\s\S]*?)(?:\n)?\2(?=\n|$)/g;function T_(e){let t=0,n=0,s=0;Gr.lastIndex=0;let o;for(;(o=Gr.exec(e))!==null;){const u=o[3]??"";t+=1,n+=u.length,s=Math.max(s,u.length)}return{codeRenderer:e.length>=M_||n>=x_||t>=I_||s>=A_?"pre":"shiki",codeFenceCount:t,codeChars:n}}const P_={key:1,class:"diff-wrap"},E_={class:"diff-bar"},L_=["aria-label","onClick"],B_={class:"diff-pre"},R_={key:0,class:"diff-sign"},O_={class:"diff-text"},D_="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",Qr="github-light",Yr="github-dark",z_=Ie({__name:"Markdown",props:{text:{},openFile:{},streaming:{type:Boolean,default:!1}},setup(e){qd(),Wd(),Bd(),Fd(),Rd(new Od),Dd(new zd);function t(oe){return oe.inline.ruler.disable("math"),oe}const{t:n}=Ue(),s=mo("resolveImage"),o=I(null),i=e,u=$(()=>!i.streaming),p=$(()=>C_(i.text??"")),f=$(()=>i.streaming?{codeRenderer:"shiki",codeFenceCount:0,codeChars:0}:T_(i.text??"")),v=ed(),w=$(()=>!i.streaming),x=Bn(new Map),h=new Set,m=/(!\[[^\]]*\]\()\s*([^)\s]+)([^)]*\))/g,_=/( ]*?\bsrc=")([^"]+)(")/gi;function y(oe){return!/^(https?:|data:|blob:)/i.test(oe)}function g(oe){if(!s)return;const ge=[];for(const ce of[m,_]){ce.lastIndex=0;let Q;for(;(Q=ce.exec(oe))!==null;)ge.push(Q[2]??"")}for(const ce of ge)!ce||!y(ce)||x.has(ce)||h.has(ce)||(h.add(ce),s(ce).then(Q=>{x.set(ce,Q!==ce?Q:"")}).catch(()=>{x.set(ce,"")}).finally(()=>{h.delete(ce)}))}function k(oe){if(!s)return oe;const ge=ce=>{if(!y(ce))return null;const Q=x.get(ce);return Q===void 0?D_:Q===""?null:Q};return oe.replace(m,(ce,Q,ie,te)=>{const ye=ge(ie);return ye===null?ce:`${Q}${ye}${te}`}).replace(_,(ce,Q,ie,te)=>{const ye=ge(ie);return ye===null?ce:`${Q}${ye}${te}`})}Oe(()=>i.text,oe=>g(oe??""),{immediate:!0});function T(){if(!o.value||!i.openFile||i.streaming)return;const oe=document.createTreeWalker(o.value,NodeFilter.SHOW_TEXT),ge=[];let ce=oe.nextNode();for(;ce;){const Q=ce,ie=Q.parentElement;ie&&!ie.closest("a, pre, .md-file-link, svg")&&Q.data.trim().length>0&&ge.push(Q),ce=oe.nextNode()}for(const Q of ge){const ie=$_(Q.data,{aliases:p.value});if(ie.length===0||!Q.parentNode)continue;const te=document.createDocumentFragment();let ye=0;for(const _e of ie){_e.start>ye&&te.append(document.createTextNode(Q.data.slice(ye,_e.start)));const Ce=document.createElement("button");Ce.type="button",Ce.className="md-file-link",Ce.textContent=_e.text,Ce.title=_e.line?`${_e.path}:${_e.line}`:_e.path,Ce.addEventListener("click",Z=>{Z.preventDefault(),Z.stopPropagation(),i.openFile?.({path:_e.path,line:_e.line})}),te.append(Ce),ye=_e.end}ye{Q.preventDefault(),Q.stopPropagation(),i.openFile?.({path:O(ce)})}))}}function E(){Ke().then(()=>{T(),D()})}Oe(()=>i.text,E),Oe(()=>i.streaming,E);let B=null;ht(()=>{E(),o.value&&(B=new MutationObserver(E),B.observe(o.value,{childList:!0,subtree:!0}))}),kt(()=>{B?.disconnect()});const q={showHeader:!0,showCopyButton:!0,showExpandButton:!1,showPreviewButton:!1,showCollapseButton:!1,showFontSizeButtons:!1,loading:!1,monacoOptions:{lineNumbers:!1,fontSize:13,fontFamily:"var(--font-mono)",padding:{top:12,bottom:12}}},V=/(^|\n)(?:```|~~~)diff\b[^\n]*\n([\s\S]*?)(?:\n)?(?:```|~~~)(?=\n|$)/g,b=$(()=>{const oe=k(i.text??""),ge=[];let ce=0;V.lastIndex=0;let Q;for(;(Q=V.exec(oe))!==null;){const te=Q[1]??"",ye=oe.slice(ce,Q.index)+(te||"");ye.trim()&&ge.push({kind:"md",text:ye}),ge.push({kind:"diff",code:Q[2]??""}),ce=V.lastIndex}const ie=oe.slice(ce);return(ie.trim()||ge.length===0)&&ge.push({kind:"md",text:ie}),ge});function P(oe){return oe.split(`
+`).map(ge=>ge.startsWith("@@")?{type:"hunk",sign:"",text:ge}:/^\+(?!\+\+)/.test(ge)?{type:"add",sign:"+",text:ge.slice(1)}:/^-(?!--)/.test(ge)?{type:"del",sign:"-",text:ge.slice(1)}:ge.startsWith(" ")?{type:"ctx",sign:"",text:ge.slice(1)}:{type:"ctx",sign:"",text:ge})}const L=I(null);function ne(oe,ge){un(oe).then(ce=>{ce&&(L.value=ge,setTimeout(()=>{L.value=null},1400))})}return(oe,ge)=>(a(),c("div",{ref_key:"mdRef",ref:o,class:"md"},[(a(!0),c(he,null,Pe(b.value,(ce,Q)=>(a(),c(he,{key:Q},[ce.kind==="md"?(a(),G(l(Nd),{key:0,content:ce.text,"custom-markdown-it":t,mode:"chat","code-renderer":f.value.codeRenderer,"is-dark":l(v),"code-block-light-theme":Qr,"code-block-dark-theme":Yr,themes:[Qr,Yr],"code-block-props":q,final:u.value,"smooth-streaming":e.streaming,"batch-rendering":w.value,"defer-nodes-until-visible":!1,onCopy:l(ap)},null,8,["content","code-renderer","is-dark","themes","final","smooth-streaming","batch-rendering","onCopy"])):(a(),c("div",P_,[r("div",E_,[ge[0]||(ge[0]=r("span",{class:"diff-lang"},"diff",-1)),M(ot,{text:l(n)("filePreview.copyCode")},{default:H(()=>[r("button",{class:"diff-copy","aria-label":l(n)("filePreview.copyCode"),onClick:ie=>ne(ce.code,Q)},[M(se,{name:L.value===Q?"check":"copy",size:"sm"},null,8,["name"])],8,L_)]),_:2},1032,["text"])]),r("pre",B_,[r("code",null,[(a(!0),c(he,null,Pe(P(ce.code),(ie,te)=>(a(),c("span",{key:te,class:fe(["diff-line",`diff-${ie.type}`])},[ie.type!=="hunk"?(a(),c("span",R_,d(ie.sign),1)):A("",!0),r("span",O_,d(ie.text),1)],2))),128))])])]))],64))),128))],512))}}),ci=Ee(z_,[["__scopeId","data-v-9ccdd7fa"]]),F_=Object.freeze(Object.defineProperty({__proto__:null,default:ci},Symbol.toStringTag,{value:"Module"})),N_={class:"tc-anim"},q_={class:"prev-anim"},W_={class:"prev"},H_=Ie({__name:"ThinkingBlock",props:{text:{},mobile:{type:Boolean,default:!1},streaming:{type:Boolean,default:!1},foldable:{type:Boolean,default:!0}},emits:["open"],setup(e,{emit:t}){const n=e,s=t,o=$(()=>n.text.split(/\n{2,}/).filter(v=>v.trim().length>0)),i=$(()=>n.foldable&&o.value.length>1),u=$(()=>n.streaming||!i.value),p=$(()=>o.value.at(-1)??""),f=I(null);return ht(()=>{if(!n.streaming)return;const v=f.value;v&&(v.scrollTop=v.scrollHeight)}),Oe(()=>n.text,()=>{const v=f.value;!v||!(v.scrollHeight-v.scrollTop-v.clientHeight<24)||Ke(()=>{f.value&&(f.value.scrollTop=f.value.scrollHeight)})},{immediate:!0}),(v,w)=>(a(),c("div",{class:fe(["think",{mob:e.mobile}])},[i.value?(a(),c("div",{key:0,class:fe(["tc-wrap",{"is-collapsed":!u.value}]),onClick:w[0]||(w[0]=x=>s("open"))},[r("div",N_,[r("pre",{ref_key:"bodyEl",ref:f,class:"tc"},d(e.text),513)]),r("div",q_,[r("span",W_,d(p.value),1)])],2)):(a(),c("pre",{key:1,ref_key:"bodyEl",ref:f,class:"tc"},d(e.text),513))],2))}}),U_=Ee(H_,[["__scopeId","data-v-0b3b873f"]]),V_={class:"activity-notice",role:"status"},j_={"aria-hidden":"true"},K_={class:"an-label"},G_=Ie({__name:"ActivityNotice",props:{label:{}},setup(e){return(t,n)=>(a(),c("div",V_,[r("span",j_,[M(Dt,{size:"sm"})]),r("span",K_,d(e.label),1)]))}}),Q_=Ee(G_,[["__scopeId","data-v-0d497074"]]);function Y_(e,t="昨天"){try{const n=new Date(e);if(Number.isNaN(n.getTime()))return e;const s=new Date,o=w=>String(w).padStart(2,"0"),i=`${o(n.getHours())}:${o(n.getMinutes())}`,u=n.getFullYear()===s.getFullYear(),p=n.getMonth()===s.getMonth(),f=n.getDate()===s.getDate();if(u&&p&&f)return i;const v=new Date(s);return v.setDate(s.getDate()-1),n.getFullYear()===v.getFullYear()&&n.getMonth()===v.getMonth()&&n.getDate()===v.getDate()?`${t} ${i}`:u?`${o(n.getMonth()+1)}-${o(n.getDate())} ${i}`:`${n.getFullYear()}-${o(n.getMonth()+1)}-${o(n.getDate())} ${i}`}catch{return e}}const Z_=Ie({__name:"MessageTime",props:{time:{}},setup(e){const t=e,{t:n}=Ue(),s=I(!1),o=$(()=>{const p=new Date(t.time);if(Number.isNaN(p.getTime()))return t.time;const f=v=>String(v).padStart(2,"0");return`${p.getFullYear()}-${f(p.getMonth()+1)}-${f(p.getDate())} ${f(p.getHours())}:${f(p.getMinutes())}`}),i=$(()=>s.value?o.value:Y_(t.time,n("conversation.yesterday")));function u(){s.value=!s.value}return(p,f)=>(a(),c("button",{type:"button",class:"msg-time",onClick:Re(u,["stop"])},d(i.value),1))}}),xi=Ee(Z_,[["__scopeId","data-v-9672fbd5"]]);function X_(e){return e.length===1?`0${e}`:e}function J_(e,t){return`${String(Number(e))}:${X_(t)}`}const Zr=e=>/^\d+$/.test(e);function e8(e,t){const n=e.trim().split(/\s+/);if(n.length!==5)return e;const[s,o,i,u,p]=n,f=i==="*"&&u==="*"&&p==="*",v=i==="*"&&u==="*";if(s==="*"&&o==="*"&&f)return t("conversation.cron.everyMinute");const w=/^\*\/(\d+)$/.exec(s);if(w&&o==="*"&&f)return w[1]==="1"?t("conversation.cron.everyMinute"):t("conversation.cron.everyNMinutes",{n:w[1]});if(s==="0"&&o==="*"&&f)return t("conversation.cron.everyHour");const x=/^\*\/(\d+)$/.exec(o);if(s==="0"&&x&&f)return t("conversation.cron.everyNHours",{n:x[1]});if(Zr(s)&&Zr(o)&&v){const h=J_(o,s);if(p==="1-5")return t("conversation.cron.weekdaysAt",{time:h});if(p==="*")return t("conversation.cron.dailyAt",{time:h})}return e}const t8=["data-turn-id"],n8={class:"cn-bubble"},s8={class:"cn-title"},o8={key:0,class:"cn-prompt"},i8={class:"cn-meta"},a8={key:0,class:"cn-meta-item"},l8={key:1,class:"cn-meta-item"},r8=["aria-label"],u8=["title"],c8=Ie({__name:"CronNotice",props:{text:{},cron:{},turnId:{},createdAt:{}},setup(e){const t=e,{t:n}=Ue(),s=$(()=>t.cron),o=$(()=>s.value?.missedCount!==void 0),i=$(()=>o.value?n("conversation.cron.missed"):n("conversation.cron.fired")),u=$(()=>{const w=s.value?.cron;return w?e8(w,n):""}),p=$(()=>o.value?"error":"ok"),f=$(()=>{const w=s.value;if(!w)return"";const x=[];return w.recurring===!1&&x.push(n("conversation.cron.oneShot")),typeof w.coalescedCount=="number"&&w.coalescedCount>1&&x.push(n("conversation.cron.coalesced",{n:w.coalescedCount})),w.missedCount!==void 0&&x.push(n("conversation.cron.missedCount",{n:w.missedCount})),w.stale===!0&&x.push(n("conversation.cron.finalDelivery")),x.join(" · ")}),v=$(()=>t.text??"");return(w,x)=>(a(),c("div",{class:fe(["cn cron-notice",{"turn-anchor":!!e.turnId}]),"data-turn-id":e.turnId,role:"status"},[r("div",n8,[r("span",s8,d(i.value),1),v.value?(a(),c("span",o8,d(v.value),1)):A("",!0)]),r("div",i8,[M(se,{name:"clock",size:"sm",class:"cn-meta-ico","aria-hidden":"true"}),u.value?(a(),c("span",a8,d(u.value),1)):A("",!0),f.value?(a(),c("span",l8,d(f.value),1)):A("",!0),r("span",{class:fe(["cn-status",p.value]),"aria-label":p.value},[p.value==="ok"?(a(),G(se,{key:0,name:"check",size:"sm"})):(a(),G(se,{key:1,name:"close",size:"sm"}))],10,r8),s.value?.jobId?(a(),c("span",{key:2,class:"cn-meta-item cn-id",title:l(n)("conversation.cron.job",{id:s.value.jobId})},d(s.value.jobId),9,u8)):A("",!0),e.createdAt?(a(),G(xi,{key:3,time:e.createdAt},null,8,["time"])):A("",!0)])],10,t8))}}),d8=Ee(c8,[["__scopeId","data-v-a62a6587"]]),p8=["src","controls","muted"],f8=["src","alt"],sd=Ie({__name:"AuthMedia",props:{url:{},kind:{},alt:{},fileId:{},mediaClass:{default:"u-img"},controls:{type:Boolean,default:!0},muted:{type:Boolean,default:!1}},setup(e){const t=e,n=I(t.fileId?"":t.url),s=I(null),o=I(!t.fileId);let i=null,u=0,p=!1,f=null;function v(){i!==null&&(URL.revokeObjectURL(i),i=null)}async function w(){const x=++u;if(v(),!t.fileId){n.value=t.url;return}if(o.value)try{const h=await Te().getFileBlob(t.fileId),m=URL.createObjectURL(h);if(p||x!==u){URL.revokeObjectURL(m);return}i=m,n.value=i}catch{if(p||x!==u)return;n.value=t.url}}return Oe(()=>[t.fileId,t.url,o.value],w,{immediate:!0}),ht(()=>{typeof IntersectionObserver=="function"&&s.value?(f=new IntersectionObserver(x=>{x[0]?.isIntersecting&&(o.value=!0,f?.disconnect(),f=null)},{rootMargin:"200px"}),f.observe(s.value)):o.value=!0}),Ln(()=>{p=!0,f?.disconnect(),f=null,v()}),(x,h)=>e.kind==="video"?(a(),c("video",{key:0,ref_key:"mediaEl",ref:s,class:fe(e.mediaClass),src:n.value||void 0,controls:e.controls,muted:e.muted,playsinline:"",preload:"metadata"},null,10,p8)):(a(),c("img",{key:1,ref_key:"mediaEl",ref:s,class:fe(e.mediaClass),src:n.value||void 0,alt:e.alt||"",loading:"lazy"},null,10,f8))}}),m8=["title","data-kind"],v8=["aria-label"],h8={class:"att-tile"},g8={class:"att-name"},y8={key:1,class:"att-err"},k8=["aria-label"],b8=Ie({__name:"AttachmentChip",props:{kind:{},name:{},url:{},fileId:{},mediaType:{},size:{},uploading:{type:Boolean,default:!1},error:{type:Boolean,default:!1},removable:{type:Boolean,default:!1},removeLabel:{}},emits:["activate","remove"],setup(e,{emit:t}){const n=e,s=t,{t:o}=Ue(),i=$(()=>{const x=n.name?.match(/\.([A-Za-z0-9]{1,8})$/)?.[1]??n.mediaType?.split("/")[1]?.split("+")[0];return x?x.toUpperCase():void 0}),u=$(()=>{const w=i.value??"";return/^(txt|md|doc|docx|rtf|log)$/i.test(w)?"file-text":"file"}),p=$(()=>n.name?n.name:n.kind==="image"?o("composer.attachmentImage"):n.kind==="video"?o("composer.attachmentVideo"):o("composer.attachmentFile"));function f(w){return w<1024?`${w} B`:w<1024*1024?`${Math.round(w/1024)} KB`:`${(w/(1024*1024)).toFixed(1)} MB`}const v=$(()=>{const w=[p.value];return n.size!==void 0&&w.push(f(n.size)),w.join(" · ")});return(w,x)=>(a(),c("span",{class:fe(["att-chip",{"is-error":e.error,uploading:e.uploading}]),title:v.value,"data-kind":e.kind},[r("button",{type:"button",class:"att-activate","aria-label":v.value,onClick:x[0]||(x[0]=h=>s("activate"))},[r("span",h8,[e.kind==="image"&&e.url?(a(),G(sd,{key:0,url:e.url,kind:"image",alt:e.name,"file-id":e.fileId,"media-class":"att-thumb"},null,8,["url","alt","file-id"])):e.kind==="video"?(a(),G(se,{key:1,name:"play",size:"sm"})):e.kind==="image"?(a(),G(se,{key:2,name:"image",size:"sm"})):(a(),G(se,{key:3,name:u.value,size:"sm"},null,8,["name"]))]),r("span",g8,d(p.value),1),e.uploading?(a(),G(Dt,{key:0,size:"sm",label:l(o)("composer.uploading")},null,8,["label"])):e.error?(a(),c("span",y8,[M(se,{name:"info",size:"sm"})])):A("",!0)],8,v8),e.removable?(a(),G(ot,{key:0,text:e.removeLabel??l(o)("composer.remove")},{default:H(()=>[r("button",{type:"button",class:"att-rm","aria-label":e.removeLabel??l(o)("composer.remove"),onClick:x[1]||(x[1]=h=>s("remove"))},[M(se,{name:"close",size:"sm"})],8,k8)]),_:1},8,["text"])):A("",!0)],10,m8))}}),od=Ee(b8,[["__scopeId","data-v-12ec975b"]]),w8=["aria-label"],S8=120,C8=60,_8=Ie({__name:"MoonSpinner",props:{size:{default:"md"},fast:{type:Boolean},label:{default:"Waiting for response…"}},setup(e){const t=["🌑","🌒","🌓","🌔","🌕","🌖","🌗","🌘"];function n(s){return{"--moon-frame-delay":`${s*S8}ms`,"--moon-frame-fast-delay":`${s*C8}ms`}}return(s,o)=>(a(),c("span",{class:fe(["ui-moon",[`ui-moon--${e.size}`,{"ui-moon--fast":e.fast}]]),"aria-label":e.label,role:"img"},[(a(),c(he,null,Pe(t,(i,u)=>r("span",{key:i,class:"ui-moon__frame",style:rt(n(u)),"aria-hidden":"true"},d(i),5)),64))],10,w8))}}),id=Ee(_8,[["__scopeId","data-v-a6b7ec07"]]),$8={class:"ui-banner__icon","aria-hidden":"true"},M8={class:"ui-banner__text"},x8=Ie({__name:"Banner",props:{variant:{default:"info"}},setup(e){return(t,n)=>(a(),c("div",{class:fe(["ui-banner",`ui-banner--${e.variant}`]),role:"status"},[r("span",$8,[yt(t.$slots,"icon",{},()=>[e.variant==="info"?(a(),G(se,{key:0,name:"info",size:"md"})):(a(),G(se,{key:1,name:"alert-triangle",size:"md"}))],!0)]),r("span",M8,[yt(t.$slots,"default",{},void 0,!0)])],2))}}),ad=Ee(x8,[["__scopeId","data-v-b0afda1c"]]),I8=["type","disabled"],A8={class:"ui-button__content"},T8=Ie({__name:"Button",props:{variant:{default:"primary"},size:{default:"md"},disabled:{type:Boolean},loading:{type:Boolean},type:{default:"button"}},setup(e){return(t,n)=>(a(),c("button",{class:fe(["ui-button",[`ui-button--${e.variant}`,`ui-button--${e.size}`,{"is-loading":e.loading}]]),type:e.type,disabled:e.disabled||e.loading},[e.loading?(a(),G(Dt,{key:0,size:"sm",class:"ui-button__spinner"})):A("",!0),r("span",A8,[yt(t.$slots,"default",{},void 0,!0)])],10,I8))}}),qe=Ee(T8,[["__scopeId","data-v-556ea0b6"]]),Ca="chat-search-hit",P8="chat-search-hit--active",Xr={childList:!0,subtree:!0,characterData:!0};function E8(e){const{root:t,query:n,activeIndex:s}=e;let o=null,i=0;function u(v){const w=v.querySelectorAll(`.${Ca}`);for(const x of w)x.replaceWith(...Array.from(x.childNodes))}function p(){i=0;const v=t.value,w=n.value.trim();if(v){if(o?.disconnect(),u(v),w.length>0){const x=w.toLowerCase(),h=s.value,m=document.createTreeWalker(v,NodeFilter.SHOW_TEXT),_=[];let y=m.nextNode();for(;y;)_.push(y),y=m.nextNode();let g=0;for(const k of _){const T=k.data.toLowerCase();let S=T.indexOf(x);if(S===-1)continue;const O=k.parentNode;if(!O)continue;const D=document.createDocumentFragment();let E=0;for(;S!==-1;){S>E&&D.append(document.createTextNode(k.data.slice(E,S)));const B=document.createElement("span");B.className=g===h?`${Ca} ${P8}`:Ca,B.textContent=k.data.slice(S,S+w.length),D.append(B),g+=1,E=S+w.length,S=T.indexOf(x,E)}E{o?.disconnect(),o=null;const v=t.value;v&&(o=new MutationObserver(f),o.observe(v,Xr),p())}),Oe([n,s],()=>{Ke(p)},{flush:"post"}),kt(()=>{o?.disconnect(),o=null,i!==0&&cancelAnimationFrame(i)})}const L8=/^(application\/pdf|image\/(png|jpe?g|gif|webp|avif|bmp|x-icon|vnd\.microsoft\.icon)|video\/[\w.+-]+|audio\/[\w.+-]+)$/i,B8=/^(txt|md|markdown|log|json|ya?ml|csv|tsv|ts|mts|tsx|jsx|css|py|go|rs|java|c|h|cc|cpp|hpp|sh|zsh|sql|toml|ini|cfg|conf|vue)$/i,R8=/^(png|jpe?g|gif|webp|avif|bmp|ico)$/i,Jr="text/plain;charset=utf-8";function O8(e,t){const n=(t??"").toLowerCase();if(L8.test(n))return n;if(n.startsWith("text/"))return n==="text/html"?null:Jr;const s=e?.match(/\.([A-Za-z0-9]{1,8})$/)?.[1]?.toLowerCase();return s===void 0?null:B8.test(s)?Jr:R8.test(s)?`image/${s==="jpg"?"jpeg":s==="ico"?"x-icon":s}`:s==="pdf"?"application/pdf":null}async function ld(e,t,n){const s=O8(t,n);if(s===null)return"unsupported";const o=window.open("","_blank");o!==null&&(o.opener=null);const i=await Te().getFileBlob(e).catch(()=>null);if(i===null)return o?.close(),"failed";const u=URL.createObjectURL(new Blob([i],{type:s}));if(o!==null)o.location.href=u;else{const p=document.createElement("a");p.href=u,p.download=t??e,p.click()}return setTimeout(()=>{URL.revokeObjectURL(u)},6e4),"previewed"}const Ii="(pointer: coarse)",D8="(any-pointer: fine)",z8="(max-width: 980px)";function rd(e){if(!(typeof window>"u"||typeof window.matchMedia!="function"))return window.matchMedia(e)}function Wi(e,t=rd){return t(e)?.matches??!1}function ud(e,t,n=rd){const s=n(e);if(!s)return t(!1),()=>{};const o=()=>t(s.matches);return t(s.matches),s.addEventListener("change",o),()=>s.removeEventListener("change",o)}function eu(e,t){const n=e.findIndex(s=>s.id===t);if(n===-1)return null;for(let s=n-1;s>=0;s--){const o=e[s];if(o.role!=="user")continue;if(o.skillActivation){const p=o.skillActivation.name.trim();return p?{text:o.text,attachments:o.attachments,skillActivation:{name:p,args:o.skillActivation.args}}:null}const i=o.text.trim(),u=o.attachments??[];return i.length===0&&u.length===0?null:{text:o.text,attachments:o.attachments}}return null}const F8={key:0,class:"chat-loading"},N8={class:"chat-loading-text"},q8={key:1,class:"chat-empty"},W8={key:1,class:"top-sentinel-text"},H8={key:0,class:"u-turn"},U8=["data-turn-id"],V8={key:0,class:"u-atts"},j8={key:1,class:"skill-act"},K8={class:"skill-act-head"},G8={key:0,class:"skill-act-args"},Q8={key:2,class:"skill-act"},Y8={class:"skill-act-head"},Z8={key:0,class:"skill-act-args"},X8={key:3,class:"u-text"},J8={key:0,class:"u-meta"},e$=["aria-label","onClick"],t$=["aria-label","onClick"],n$=["data-turn-id"],s$=["onClick"],o$={class:"cd-view"},i$={key:1,class:"cd-label"},a$=["data-turn-id"],l$={key:1,class:"msg"},r$={class:"turn-error-text"},u$={key:0,class:"a-msg-ft"},c$=["aria-label","onClick"],d$={key:4,class:"sending-placeholder"},p$={key:5,class:"q-stack"},f$={class:"q-head"},m$={class:"q-title"},v$={class:"q-hint"},h$=["onDragover","onDrop"],g$={class:"u-bub q-bub"},y$=["title","onDragstart"],k$=["title","onClick"],b$={key:0,class:"u-text q-text"},w$={key:1,class:"q-text q-text-placeholder"},S$={key:0,class:"q-imgs"},C$={key:0,class:"q-file"},_$={key:1,class:"q-tag q-tag-next"},$$={key:2,class:"q-tag q-tag-idx"},M$=["aria-label"],x$=["aria-label","onClick"],I$={key:0,class:"open-unsupported",role:"status"},A$=2500,T$=Ie({__name:"ChatPane",props:{turns:{},approvals:{default:()=>[]},turnActive:{type:Boolean,default:!1},working:{type:Boolean,default:!1},retry:{default:null},fastMoon:{type:Boolean,default:!1},sessionLoading:{type:Boolean},compaction:{default:null},hasMoreMessages:{type:Boolean,default:!1},loadingMore:{type:Boolean,default:!1},loadingMoreError:{type:Boolean,default:!1},isFollowing:{type:Boolean,default:!1},toolDiffPanel:{type:Boolean,default:!1},queued:{default:()=>[]},searchQuery:{default:""},searchActiveIndex:{default:-1}},emits:["openFile","openMedia","copyConversationCopied","openThinking","openCompaction","openAgent","openToolDiff","editMessage","loadOlderMessages","unqueue","editQueued","reorderQueue","steerQueued","resumeTurn"],setup(e,{expose:t,emit:n}){const{t:s}=Ue(),{confirm:o}=go();kt(()=>{U!==null&&(clearTimeout(U),U=null),ce!==null&&(clearTimeout(ce),ce=null),L!==null&&(clearTimeout(L),L=null),Be!==null&&(clearTimeout(Be),Be=null)});const i=e,u=I(null);let p=null;function f(){!u.value||typeof IntersectionObserver>"u"||(p?.disconnect(),p=new IntersectionObserver(R=>{R[0]?.isIntersecting&&i.hasMoreMessages&&!i.loadingMore&&!i.loadingMoreError&&!i.sessionLoading&&!i.isFollowing&&m("loadOlderMessages")},{root:null,rootMargin:"200px 0px 0px 0px",threshold:0}),p.observe(u.value))}ht(f),kt(()=>{p?.disconnect(),p=null}),Oe(()=>[i.hasMoreMessages,i.loadingMore,i.loadingMoreError],()=>{Ke().then(f)});const v=$(()=>{if(!i.turnActive||i.turns.length===0)return null;const R=i.turns.at(-1);return R.role==="assistant"?R.id:null}),w=$(()=>i.working),x=$(()=>Wi(Ii)?s("composer.queueSteerTouch"):s("composer.queueSteer"));function h(R){const X=eu(i.turns,R.id);X&&m("resumeTurn",X)}const m=n,_=I(null);E8({root:_,query:$(()=>i.searchQuery??""),activeIndex:$(()=>i.searchActiveIndex??-1)});const y=I(null),g=I(null);function k(R){return(R.attachments?.length??0)>0}function T(R){m("editQueued",R)}function S(R,X){if(y.value=R,!X.dataTransfer)return;X.dataTransfer.effectAllowed="move",X.dataTransfer.setData("text/plain",String(R));const me=X.currentTarget?.closest(".q-turn");me&&X.dataTransfer.setDragImage(me,24,24)}function O(R,X){if(y.value===null)return;X.preventDefault(),X.dataTransfer&&(X.dataTransfer.dropEffect="move");const me=X.currentTarget.getBoundingClientRect(),He=X.clientY{for(let R=i.turns.length-1;R>=0;R--)if(i.turns[R].role==="user")return i.turns[R].id;return null});function q(R){return R.role==="user"&&R.id===B.value&&!i.working&&!R.skillActivation&&!R.pluginCommand}function V(R){const X=R.compaction,me=X?.trigger==="auto"?s("conversation.compactedAuto"):s("conversation.compactedPlain");return typeof X?.tokensBefore=="number"&&typeof X?.tokensAfter=="number"?me+s("conversation.compactedTokens",{before:ms(X.tokensBefore),after:ms(X.tokensAfter)}):me}const b=I(null),P=I(null);let L=null;async function ne(R){await o({title:s("conversation.undo"),message:s("conversation.undoConfirm"),variant:"primary"})&&oe(R)}function oe(R){P.value===null&&(P.value=R.id,m("editMessage",{text:R.text,attachments:R.attachments}),L=setTimeout(()=>{L=null,P.value=null},A$))}Oe(()=>i.turns,R=>{P.value!==null&&(R.some(X=>X.id===P.value)||(P.value=null,L!==null&&(clearTimeout(L),L=null)))},{flush:"post"});const ge=I(!1);let ce=null;function Q(){if(i.turns.length===0)return;const R=[];for(const me of i.turns){if(me.role==="compaction"||me.role==="cron")continue;const He=me.role==="user"?"User":"Assistant",De=p_(me);De.trim()&&R.push(`**${He}**
+
+${De}`)}const X=R.join(`
+
+---
+
+`);un(X).then(me=>{me&&(ge.value=!0,m("copyConversationCopied"),ce!==null&&clearTimeout(ce),ce=setTimeout(()=>{ce=null,ge.value=!1},2e3))}).catch(()=>{})}function ie(R){const X=[];for(let me=R;me>=0;me--){const He=i.turns[me];if(!He||He.role!=="assistant")break;X.unshift(He)}return X}function te(R){return ie(R).map(X=>d_(X)).filter(Boolean).join(`
+
+`)}const ye=$(()=>{const R=new Map;for(let X=i.turns.length-1;X>=0;X-=1){const me=i.turns[X];me&&me.role==="assistant"&&Z(X)&&R.set(me.id,te(X))}return R});function _e(){for(let R=i.turns.length-1;R>=0;R-=1)if(i.turns[R]?.role==="assistant")return te(R);return""}function Ce(){const R=_e();R.trim()&&un(R).then(X=>{X&&(ge.value=!0,m("copyConversationCopied"),ce!==null&&clearTimeout(ce),ce=setTimeout(()=>{ce=null,ge.value=!1},2e3))}).catch(()=>{})}t({copyConversation:Q,copyFinalSummary:Ce});function Z(R){const X=i.turns[R];if(!X||X.role!=="assistant")return!1;const me=i.turns[R+1];return!me||me.role!=="assistant"}let U=null;function ke(R){const X=i.turns[R];if(!X)return;const me=te(R);me.trim()&&un(me).then(He=>{He&&(b.value=X.id,U!==null&&clearTimeout(U),U=setTimeout(()=>{U=null,b.value=null},1400))}).catch(()=>{})}function ae(R){const X=R.text;X.trim()&&un(X).then(me=>{me&&(b.value=R.id,U!==null&&clearTimeout(U),U=setTimeout(()=>{U=null,b.value=null},1400))}).catch(()=>{})}function ee(R){return{kind:R.kind==="video"?"video":"image",url:R.url,path:R.name,fileId:R.fileId}}const de=I(null);let Be=null;function Y(R){if(R.kind==="image"||R.kind==="video"){m("openMedia",ee(R));return}R.fileId!==void 0&&ld(R.fileId,R.name,R.mediaType).then(X=>{X==="unsupported"&&(de.value=R.name??R.fileId??"",Be!==null&&clearTimeout(Be),Be=setTimeout(()=>{Be=null,de.value=null},2400))})}function ve(R,X){return R.id!==v.value?!1:X.sourceIndex===ea(R).length-1}return(R,X)=>(a(),c(he,null,[r("div",{ref_key:"chatRootRef",ref:_,class:"chat"},[e.sessionLoading?(a(),c("div",F8,[M(Dt,{size:"sm"}),r("span",N8,d(l(s)("conversation.loading")),1)])):e.turns.length===0&&(!e.approvals||e.approvals.length===0)?(a(),c("div",q8)):A("",!0),e.hasMoreMessages||e.loadingMore?(a(),c("div",{key:2,ref_key:"topSentinelRef",ref:u,class:fe(["top-sentinel",{"top-sentinel-loading":e.loadingMore}])},[e.loadingMore?(a(),c("span",W8,[M(Dt,{size:"sm"}),re(" "+d(l(s)("conversation.loadingOlder")),1)])):(a(),c("button",{key:0,type:"button",class:"top-sentinel-btn",onClick:X[0]||(X[0]=me=>m("loadOlderMessages"))},d(l(s)("conversation.loadOlder")),1))],2)):A("",!0),(a(!0),c(he,null,Pe(e.turns,(me,He)=>(a(),c(he,{key:me.id},[me.role==="user"?(a(),c("div",H8,[r("div",{class:fe(["u-bub turn-anchor",{undoing:P.value===me.id}]),"data-turn-id":me.id},[me.attachments&&me.attachments.length>0?(a(),c("div",V8,[(a(!0),c(he,null,Pe(me.attachments,(De,an)=>(a(),G(od,{key:an,kind:De.kind,name:De.name,url:De.url,"file-id":De.fileId,"media-type":De.mediaType,size:De.size,onActivate:Fe=>Y(De)},null,8,["kind","name","url","file-id","media-type","size","onActivate"]))),128))])):A("",!0),me.skillActivation?(a(),c("div",j8,[r("div",K8,[X[10]||(X[10]=r("span",{class:"skill-act-arrow"},"▶",-1)),r("span",null,d(l(s)("conversation.activatedSkill",{name:me.skillActivation.name})),1)]),me.skillActivation.args?(a(),c("div",G8,d(me.skillActivation.args),1)):A("",!0)])):me.pluginCommand?(a(),c("div",Q8,[r("div",Y8,[X[11]||(X[11]=r("span",{class:"skill-act-arrow"},"▶",-1)),r("span",null,"/"+d(me.pluginCommand.pluginId)+":"+d(me.pluginCommand.commandName),1)]),me.pluginCommand.args?(a(),c("div",Z8,d(me.pluginCommand.args),1)):A("",!0)])):(a(),c("div",X8,d(me.text),1))],10,U8),me.createdAt||q(me)?(a(),c("div",J8,[q(me)?(a(),c("div",{key:0,class:fe(["u-edit-wrap",{undoing:P.value===me.id}])},[r("button",{type:"button",class:"u-edit","aria-label":l(s)("conversation.undoTooltip"),onClick:De=>ne(me)},[M(se,{name:"undo",size:"sm"})],8,e$)],2)):A("",!0),me.text.trim().length>0?(a(),c("button",{key:1,type:"button",class:"u-copy","aria-label":l(s)("filePreview.copy"),onClick:Re(De=>ae(me),["stop"])},[b.value!==me.id?(a(),G(se,{key:0,name:"copy",size:"sm"})):(a(),G(se,{key:1,name:"check",size:"sm"}))],8,t$)):A("",!0),me.createdAt?(a(),G(xi,{key:2,time:me.createdAt},null,8,["time"])):A("",!0)])):A("",!0)])):me.role==="compaction"?(a(),c("div",{key:1,class:"compact-divider turn-anchor","data-turn-id":me.id,role:"separator"},[X[12]||(X[12]=r("span",{class:"cd-line","aria-hidden":"true"},null,-1)),me.text?(a(),c("button",{key:0,type:"button",class:"cd-label cd-btn",onClick:De=>m("openCompaction",{turnId:me.id})},[r("span",null,d(V(me)),1),r("span",o$,d(l(s)("conversation.viewSummary")),1)],8,s$)):(a(),c("span",i$,d(V(me)),1)),X[13]||(X[13]=r("span",{class:"cd-line","aria-hidden":"true"},null,-1))],8,n$)):me.role==="cron"?(a(),G(d8,{key:2,text:me.text,cron:me.cron,"turn-id":me.id,"created-at":me.createdAt},null,8,["text","cron","turn-id","created-at"])):(a(),c("div",{key:3,class:"a-msg turn-anchor","data-turn-id":me.id},[(a(!0),c(he,null,Pe(l(u_)(me),(De,an)=>(a(),c(he,{key:l(f_)(De,an)},[De.kind==="thinking"?(a(),G(U_,{key:0,text:De.thinking,mobile:"",streaming:ve(me,De),onOpen:Fe=>m("openThinking",{turnId:me.id,blockIndex:De.sourceIndex})},null,8,["text","streaming","onOpen"])):De.kind==="text"&&De.text?(a(),c("div",l$,[M(ci,{text:De.text,streaming:ve(me,De),"open-file":Fe=>m("openFile",Fe)},null,8,["text","streaming","open-file"])])):De.kind==="error"?(a(),G(ad,{key:2,variant:"danger",class:"turn-error"},{default:H(()=>[r("span",r$,d(De.text),1),l(eu)(e.turns,me.id)!==null?(a(),G(qe,{key:0,class:"turn-error-resume",size:"sm",variant:"secondary",onClick:Re(Fe=>h(me),["stop"])},{default:H(()=>[re(d(l(s)("conversation.turnFailedResume")),1)]),_:1},8,["onClick"])):A("",!0)]),_:2},1024)):De.kind==="tool-stack"?(a(),G(b_,{key:3,tools:De.tools,mobile:"","tool-diff-panel":e.toolDiffPanel,onOpenMedia:X[1]||(X[1]=Fe=>m("openMedia",Fe)),onOpenFile:X[2]||(X[2]=Fe=>m("openFile",Fe)),onOpenToolDiff:X[3]||(X[3]=Fe=>m("openToolDiff",Fe)),onOpenAgent:X[4]||(X[4]=Fe=>m("openAgent",Fe))},null,8,["tools","tool-diff-panel"])):De.kind==="tool"?(a(),G(Xc,{key:4,tool:De.tool,mobile:"","tool-diff-panel":e.toolDiffPanel,onOpenMedia:X[5]||(X[5]=Fe=>m("openMedia",Fe)),onOpenFile:X[6]||(X[6]=Fe=>m("openFile",Fe)),onOpenToolDiff:X[7]||(X[7]=Fe=>m("openToolDiff",Fe)),onOpenAgent:X[8]||(X[8]=Fe=>m("openAgent",Fe))},null,8,["tool","tool-diff-panel"])):A("",!0)],64))),128)),me.id!==v.value&&Z(He)&&((ye.value.get(me.id)??"").trim().length>0||me.durationMs!==void 0)?(a(),c("div",u$,[me.createdAt&&me.durationMs!==void 0?(a(),G(ot,{key:0,text:`${me.durationMs} ms`},{default:H(()=>[M(xi,{time:me.createdAt},null,8,["time"])]),_:2},1032,["text"])):me.createdAt?(a(),G(xi,{key:1,time:me.createdAt},null,8,["time"])):A("",!0),(ye.value.get(me.id)??"").trim().length>0?(a(),c("button",{key:2,class:"a-cpbtn","aria-label":l(s)("filePreview.copy"),onClick:De=>ke(He)},[b.value!==me.id?(a(),G(se,{key:0,name:"copy",size:"sm"})):(a(),G(se,{key:1,name:"check",size:"sm"}))],8,c$)):A("",!0)])):A("",!0)],8,a$))],64))),128)),e.compaction?(a(),G(Q_,{key:3,label:l(s)("conversation.compacting")},null,8,["label"])):A("",!0),w.value?(a(),c("div",d$,[M(id,{fast:e.fastMoon,label:e.retry?l(s)("conversation.workingRetry",{n:e.retry.attempt,max:e.retry.max}):l(s)("conversation.waitingForResponse")},null,8,["fast","label"])])):A("",!0),e.queued.length>0?(a(),c("div",p$,[r("div",f$,[r("span",m$,[M(se,{name:"mail",size:"sm"}),re(" "+d(l(s)("composer.queueLabel"))+" · ",1),r("b",null,d(e.queued.length),1)]),r("span",v$,d(l(s)("composer.queueAutoDrain")),1)]),(a(!0),c(he,null,Pe(e.queued,(me,He)=>(a(),c("div",{key:He,class:fe(["u-turn q-turn",{"q-dragging":y.value===He,"drop-before":g.value?.index===He&&g.value.position==="before","drop-after":g.value?.index===He&&g.value.position==="after"}]),onDragover:De=>O(He,De),onDrop:De=>D(He,De)},[r("div",g$,[r("span",{class:"q-grip",title:l(s)("composer.queueDragTitle"),draggable:"true",onDragstart:De=>S(He,De),onDragend:E},[M(se,{name:"grip",size:"sm"})],40,y$),r("button",{type:"button",class:"q-body",title:l(s)("composer.editQueued"),onClick:De=>T(He)},[me.text?(a(),c("span",b$,d(me.text),1)):(a(),c("span",w$,[M(se,{name:"file",size:"sm"}),re(" "+d(l(s)("composer.queuedAttachments",{n:me.attachments?.length??0})),1)]))],8,k$),k(me)?(a(),c("div",S$,[(a(!0),c(he,null,Pe(me.attachments,(De,an)=>(a(),c(he,{key:an},[De.kind==="file"?(a(),c("span",C$,[M(se,{name:"file",size:"sm"}),re(" "+d(De.name??De.fileId),1)])):(a(),G(sd,{key:1,url:De.url,kind:De.kind,"file-id":De.fileId,"media-class":"q-img",controls:!1,muted:""},null,8,["url","kind","file-id"]))],64))),128))])):A("",!0),He===0?(a(),c("span",_$,d(l(s)("composer.queueNext")),1)):(a(),c("span",$$,"#"+d(He+1),1)),r("button",{type:"button",class:"q-steer","aria-label":x.value,onClick:X[9]||(X[9]=Re(De=>m("steerQueued"),["stop"]))},[M(se,{name:"send",size:"sm"})],8,M$),r("button",{type:"button",class:"q-rm","aria-label":l(s)("composer.remove"),onClick:Re(De=>m("unqueue",He),["stop"])},[M(se,{name:"close",size:"sm"})],8,x$)])],42,h$))),128))])):A("",!0)],512),de.value!==null?(a(),c("div",I$,d(l(s)("composer.attachmentOpenUnsupported",{name:de.value})),1)):A("",!0)],64))}}),cd=Ee(T$,[["__scopeId","data-v-3ca41c3a"]]),P$={class:"ch-id"},E$={key:0,class:"ch-ws"},L$={key:1,class:"ch-sep"},B$=["onKeydown"],R$={class:"ch-ses"},O$={key:0,class:"ch-pill ch-sync-pill"},D$={key:0,class:"ch-ahead"},z$={key:1,class:"ch-behind"},F$={key:1,class:"ch-pill ch-diff-pill"},N$={key:0,class:"ch-add"},q$={key:1,class:"ch-del"},W$=Ie({__name:"ChatHeader",props:{sessionId:{},workspaceName:{},workspaceRoot:{},sessionTitle:{},branch:{},ahead:{},behind:{},changesCount:{},gitDiffStats:{},isGitRepo:{type:Boolean},pr:{},copied:{type:Boolean},searchActive:{type:Boolean}},emits:["copyAll","copyFinalSummary","openChanges","openPr","renameSession","forkSession","archiveSession","exportSession","toggleSearch"],setup(e,{emit:t}){const{t:n}=Ue(),s=e,o=t,i=$(()=>s.ahead??0),u=$(()=>s.behind??0),p=$(()=>s.gitDiffStats?.totalAdditions??0),f=$(()=>s.gitDiffStats?.totalDeletions??0),v=$(()=>p.value>0||f.value>0),w={open:"header.prStatusOpen",closed:"header.prStatusClosed",merged:"header.prStatusMerged",draft:"header.prStatusDraft"};function x(te){return te.trim().toLowerCase().replaceAll("_","-")}function h(te){const ye=x(te);return w[ye]?`pr-${ye}`:"pr-unknown"}function m(te){return n(w[x(te)]??"header.prStatusUnknown")}const _=I(!1),y=I(null),g=I(null),k=I({});function T(te){const ye=te.target;g.value?.el?.contains(ye)||y.value?.el?.contains(ye)||D()}function S(){D()}async function O(te){if(te.stopPropagation(),_.value){D();return}_.value=!0,document.addEventListener("mousedown",T),window.addEventListener("resize",S),await Ke();const ye=y.value?.el,_e=g.value?.el;if(!ye||!_e)return;const Ce=ye.getBoundingClientRect(),Z=4,U=8,ke=_e.offsetWidth,ae=_e.offsetHeight;let ee=Ce.bottom+Z;ee+ae>window.innerHeight-U&&(ee=Math.max(U,Ce.top-ae-Z));let de=Ce.left;de+ke>window.innerWidth-U&&(de=Math.max(U,Ce.right-ke)),k.value={top:`${Math.round(ee)}px`,left:`${Math.round(de)}px`}}function D(){_.value=!1,document.removeEventListener("mousedown",T),window.removeEventListener("resize",S)}kt(()=>{document.removeEventListener("mousedown",T),window.removeEventListener("resize",S)});function E(){o("copyAll"),D()}function B(){o("copyFinalSummary"),D()}const q=I(!1);function V(){s.sessionId&&un(s.sessionId).then(te=>{te&&(q.value=!0,setTimeout(()=>{q.value=!1},1200))})}const b=I(!1),P=I(""),L=I(null);async function ne(){if(D(),!!s.sessionId){b.value=!0,P.value=s.sessionTitle??"",await Ke();try{L.value?.focus(),L.value?.select()}catch{}}}function oe(){const te=P.value.trim();te&&s.sessionId&&te!==(s.sessionTitle??"").trim()&&o("renameSession",s.sessionId,te),b.value=!1}function ge(){b.value=!1}function ce(){s.sessionId&&(D(),o("forkSession",s.sessionId))}function Q(){s.sessionId&&(D(),o("exportSession",s.sessionId))}function ie(){s.sessionId&&(D(),o("archiveSession",s.sessionId))}return(te,ye)=>(a(),c("header",{class:fe(["chat-header",{"macos-desktop":l(Eo)}])},[r("div",P$,[e.workspaceName?(a(),c("span",E$,d(e.workspaceName),1)):A("",!0),e.workspaceName&&e.sessionTitle?(a(),c("span",L$,"/")):A("",!0),b.value?gt((a(),c("input",{key:2,ref_key:"renameInputRef",ref:L,"onUpdate:modelValue":ye[0]||(ye[0]=_e=>P.value=_e),class:"ch-rename",type:"text",onKeydown:[En(Re(oe,["stop"]),["enter"]),En(Re(ge,["stop"]),["esc"])],onBlur:oe,onClick:ye[1]||(ye[1]=Re(()=>{},["stop"]))},null,40,B$)),[[qn,P.value]]):e.sessionTitle?(a(),G(ot,{key:3,text:e.sessionTitle},{default:H(()=>[r("span",R$,d(e.sessionTitle),1)]),_:1},8,["text"])):A("",!0)]),M(nt,{class:fe(["ch-act-search",{active:e.searchActive}]),label:l(n)("header.search"),"aria-expanded":e.searchActive,onClick:ye[2]||(ye[2]=Re(_e=>o("toggleSearch"),["stop"]))},{default:H(()=>[M(se,{name:"search",size:"md"})]),_:1},8,["class","label","aria-expanded"]),M(nt,{ref_key:"kebabRef",ref:y,class:fe(["ch-act-more",{open:_.value}]),label:l(n)("header.options"),"aria-expanded":_.value,"aria-haspopup":"menu",onClick:ye[3]||(ye[3]=Re(_e=>O(_e),["stop"]))},{default:H(()=>[M(se,{name:"dots-horizontal",size:"md"})]),_:1},8,["class","label","aria-expanded"]),_.value?(a(),G(Hs,{key:0,ref_key:"menuRef",ref:g,class:"ch-menu",style:rt(k.value),onClick:ye[4]||(ye[4]=Re(()=>{},["stop"]))},{default:H(()=>[M(dt,{onClick:E},{default:H(()=>[M(se,{name:e.copied?"check":"copy",size:"sm"},null,8,["name"]),re(" "+d(e.copied?l(n)("header.copied"):l(n)("header.copyAll")),1)]),_:1}),M(dt,{onClick:B},{default:H(()=>[M(se,{name:"file-text",size:"sm"}),re(" "+d(l(n)("header.copyFinalSummary")),1)]),_:1}),e.sessionId?(a(),c(he,{key:0},[M(dt,{separator:""}),M(dt,{onClick:V},{default:H(()=>[M(se,{name:q.value?"check":"copy",size:"sm"},null,8,["name"]),re(" "+d(q.value?l(n)("header.copied"):l(n)("header.copySessionId")),1)]),_:1}),M(dt,{onClick:ne},{default:H(()=>[M(se,{name:"pencil",size:"sm"}),re(" "+d(l(n)("header.renameSession")),1)]),_:1}),M(dt,{onClick:ce},{default:H(()=>[M(se,{name:"git-fork",size:"sm"}),re(" "+d(l(n)("header.forkSession")),1)]),_:1}),M(dt,{onClick:Q},{default:H(()=>[M(se,{name:"download",size:"sm"}),re(" "+d(l(n)("header.exportSession")),1)]),_:1}),M(dt,{danger:"",onClick:ie},{default:H(()=>[M(se,{name:"archive",size:"sm"}),re(" "+d(l(n)("header.archiveSession")),1)]),_:1})],64)):A("",!0)]),_:1},8,["style"])):A("",!0),ye[7]||(ye[7]=r("div",{class:"ch-spacer"},null,-1)),e.isGitRepo?(a(),c("button",{key:1,type:"button",class:"ch-git",onClick:ye[5]||(ye[5]=_e=>o("openChanges"))},[r("span",{class:fe(["ch-branch",{"ch-detached":!e.branch}])},d(e.branch||l(n)("header.detached")),3),i.value>0||u.value>0?(a(),c("span",O$,[i.value>0?(a(),c("span",D$,"↑"+d(i.value),1)):A("",!0),u.value>0?(a(),c("span",z$,"↓"+d(u.value),1)):A("",!0)])):A("",!0),v.value?(a(),c("span",F$,[p.value>0?(a(),c("span",N$,"+"+d(p.value),1)):A("",!0),f.value>0?(a(),c("span",q$,"-"+d(f.value),1)):A("",!0)])):A("",!0)])):A("",!0),e.pr?(a(),c("button",{key:2,type:"button",class:fe(["ch-pill ch-pr",h(e.pr.state)]),onClick:ye[6]||(ye[6]=_e=>e.pr&&o("openPr",e.pr.url))},[M(se,{name:"git-pull-request",size:"sm"}),r("span",null,"PR #"+d(e.pr.number)+" · "+d(m(e.pr.state)),1)],2)):A("",!0)],2))}}),H$=Ee(W$,[["__scopeId","data-v-a3848f6a"]]);function dd(e,t,n,s=4,o=24){const i=t-e;if(e<=0||i<=1)return null;const u=e-s*2,p=u*e/t,f=Math.min(u,Math.max(o,p));return{top:u>f?s+n/i*(u-f):s,height:f}}function U$(e,t,n=4,s=24){const o=dd(e,t,0,n,s);if(!o)return 0;const i=e-n*2;return i>o.height?(t-e)/(i-o.height):1}function pd(){const e=I(null),t=I(!1),n=I(!1),s=I(!1),o=I({});let i=null,u=!1,p=0,f=0,v=1;function w(){const y=e.value;if(!y)return;const{clientHeight:g,scrollHeight:k,scrollTop:T}=y;t.value=k>g+1,n.value=T>1,s.value=T{i?.disconnect(),i=null,y&&typeof ResizeObserver<"u"&&(i=new ResizeObserver(w),i.observe(y),Ke(w))}),kt(()=>{i?.disconnect(),i=null}),{listRef:e,scrollable:t,fadeTop:n,fadeBottom:s,thumbStyle:o,onScroll:x,onThumbPointerDown:h,onThumbPointerMove:m,onThumbPointerUp:_}}const V$=["data-query"],j$={class:"slash-scroller"},K$=["aria-selected","onMouseenter","onMousedown"],G$={class:"slash-name"},Q$={key:0,class:"slash-match"},Y$={class:"slash-desc"},Z$={key:0,class:"slash-desc-match"},X$={key:0,class:"slash-empty",role:"status"},J$={key:1,class:"menu-scroll-fade menu-scroll-fade-top"},e9={key:2,class:"menu-scroll-fade menu-scroll-fade-bottom"},t9=Ie({__name:"SlashMenu",props:{matches:{},activeIndex:{},query:{}},emits:["select","hover"],setup(e,{emit:t}){const{t:n}=Ue(),s=e,o=t,i=I([]);Oe(()=>s.activeIndex,k=>{i.value[k]?.scrollIntoView({block:"nearest"})});const{listRef:u,scrollable:p,fadeTop:f,fadeBottom:v,thumbStyle:w,onScroll:x,onThumbPointerDown:h,onThumbPointerMove:m,onThumbPointerUp:_}=pd();function y(k){return k.isSkill?k.desc:n(k.desc)}function g(k,T){if(T.length===0||k.length===0)return[{text:k,matched:!1}];const S=[];let O=0;for(const D of T){if(D.end<=O||D.start>k.length)continue;const E=Math.max(D.start,O);E>O&&S.push({text:k.slice(O,E),matched:!1}),S.push({text:k.slice(E,D.end),matched:!0}),O=D.end}return O(a(),c("div",{class:"slash-menu","data-query":e.query??""},[r("div",j$,[r("div",{ref_key:"listRef",ref:u,class:"slash-list",role:"listbox",onScroll:T[0]||(T[0]=(...S)=>l(x)&&l(x)(...S))},[(a(!0),c(he,null,Pe(s.matches,(S,O)=>(a(),c("div",{ref_for:!0,ref:D=>{D&&(i.value[O]=D)},key:`${S.item.name}-${S.index}`,class:fe(["slash-item",{active:O===s.activeIndex}]),role:"option","aria-selected":O===s.activeIndex,onMouseenter:D=>o("hover",O),onMousedown:Re(D=>o("select",S.item),["prevent"])},[r("span",G$,[(a(!0),c(he,null,Pe(g(S.item.name,S.nameRanges),(D,E)=>(a(),c(he,{key:E},[D.matched?(a(),c("span",Q$,d(D.text),1)):(a(),c(he,{key:1},[re(d(D.text),1)],64))],64))),128))]),r("span",Y$,[(a(!0),c(he,null,Pe(g(y(S.item),S.descRanges),(D,E)=>(a(),c(he,{key:E},[D.matched?(a(),c("span",Z$,d(D.text),1)):(a(),c(he,{key:1},[re(d(D.text),1)],64))],64))),128))])],42,K$))),128)),s.matches.length===0?(a(),c("div",X$,d(l(n)("composer.slashEmpty")),1)):A("",!0)],544),l(p)?(a(),c("div",{key:0,class:"menu-scroll-thumb",style:rt(l(w)),onPointerdown:T[1]||(T[1]=(...S)=>l(h)&&l(h)(...S)),onPointermove:T[2]||(T[2]=(...S)=>l(m)&&l(m)(...S)),onPointerup:T[3]||(T[3]=(...S)=>l(_)&&l(_)(...S)),onPointercancel:T[4]||(T[4]=(...S)=>l(_)&&l(_)(...S))},null,36)):A("",!0),l(p)&&l(f)?(a(),c("div",J$)):A("",!0),l(p)&&l(v)?(a(),c("div",e9)):A("",!0)])],8,V$))}}),n9=Ee(t9,[["__scopeId","data-v-3f12a9ed"]]),s9={class:"mention-menu"},o9={class:"mention-scroller"},i9={key:0,class:"mention-state dim"},a9={key:1,class:"mention-state dim"},l9=["aria-selected","onMouseenter","onMousedown"],r9=["innerHTML"],u9={class:"mention-name"},c9={class:"mention-path"},d9={key:1,class:"menu-scroll-fade menu-scroll-fade-top"},p9={key:2,class:"menu-scroll-fade menu-scroll-fade-bottom"},f9=Ie({__name:"MentionMenu",props:{items:{},activeIndex:{},loading:{type:Boolean}},emits:["select","hover"],setup(e,{emit:t}){const n=e,s=t,{t:o}=Ue(),{listRef:i,scrollable:u,fadeTop:p,fadeBottom:f,thumbStyle:v,onScroll:w,onThumbPointerDown:x,onThumbPointerMove:h,onThumbPointerUp:m}=pd(),_=_o("folder","sm"),y=_o("code","sm"),g=_o("file-text","sm"),k=_o("image","sm"),T=_o("file","sm"),S=new Set(["ts","tsx","js","jsx","mjs","cjs","vue","json","py","go","rs","java","kt","c","h","cpp","cc","hpp","cs","rb","php","swift","sh","bash","zsh","css","scss","less","html","htm","xml","sql","yaml","yml","toml","lua","dart","scala","clj","ex","exs"]),O=new Set(["md","markdown","mdx","txt","rst","adoc","pdf","doc","docx"]),D=new Set(["png","jpg","jpeg","gif","svg","webp","bmp","ico","avif"]);function E(B){const q=B.path;if(q.endsWith("/"))return _;const V=B.name||q.split("/").pop()||q,b=V.lastIndexOf("."),P=b>0?V.slice(b+1).toLowerCase():"";return P?S.has(P)?y:O.has(P)?g:D.has(P)?k:T:T}return(B,q)=>(a(),c("div",s9,[r("div",o9,[r("div",{ref_key:"listRef",ref:i,class:"mention-list",role:"listbox",onScroll:q[0]||(q[0]=(...V)=>l(w)&&l(w)(...V))},[n.loading?(a(),c("div",i9,d(l(o)("mention.searching")),1)):n.items.length===0?(a(),c("div",a9,d(l(o)("mention.noMatch")),1)):(a(!0),c(he,{key:2},Pe(n.items,(V,b)=>(a(),c("div",{key:V.path,class:fe(["mention-item",{active:b===n.activeIndex}]),role:"option","aria-selected":b===n.activeIndex,onMouseenter:P=>s("hover",b),onMousedown:Re(P=>s("select",V),["prevent"])},[r("span",{class:"mention-icon",innerHTML:E(V),"aria-hidden":"true"},null,8,r9),r("span",u9,d(V.name),1),r("span",c9,d(V.path),1)],42,l9))),128))],544),l(u)?(a(),c("div",{key:0,class:"menu-scroll-thumb",style:rt(l(v)),onPointerdown:q[1]||(q[1]=(...V)=>l(x)&&l(x)(...V)),onPointermove:q[2]||(q[2]=(...V)=>l(h)&&l(h)(...V)),onPointerup:q[3]||(q[3]=(...V)=>l(m)&&l(m)(...V)),onPointercancel:q[4]||(q[4]=(...V)=>l(m)&&l(m)(...V))},null,36)):A("",!0),l(u)&&l(p)?(a(),c("div",d9)):A("",!0),l(u)&&l(f)?(a(),c("div",p9)):A("",!0)])]))}}),m9=Ee(f9,[["__scopeId","data-v-b8578b17"]]),Cn={new:"cjxhh",clear:"qkbxjhh",login:"zllqzdl",plan:"qhjhmkg",swarm:"qhmsrwzjzxzx",goal:"cjkzmbmb",btw:"cbltwtxdcbhhtw",auto:"wqzzbztw",yolo:"zdpzgjczrkntw",thinking:"szskqd",compact:"yshhls",undo:"cxsytxx",fork:"bdqhhcygxhh",export:"jdqhhhpzrzxzwysb",status:"ckhhzt"},fd=[{name:"/new",desc:"commands.new.desc",pinyinFirst:Cn.new},{name:"/clear",desc:"commands.clear.desc",pinyinFirst:Cn.clear},{name:"/login",desc:"commands.login.desc",pinyinFirst:Cn.login},{name:"/plan",desc:"commands.plan.desc",pinyinFirst:Cn.plan},{name:"/swarm",desc:"commands.swarm.desc",pinyinFirst:Cn.swarm,acceptsInput:!0},{name:"/goal",desc:"commands.goal.desc",pinyinFirst:Cn.goal,acceptsInput:!0},{name:"/btw",desc:"commands.btw.desc",pinyinFirst:Cn.btw,acceptsInput:!0},{name:"/auto",desc:"commands.auto.desc",pinyinFirst:Cn.auto},{name:"/yolo",desc:"commands.yolo.desc",pinyinFirst:Cn.yolo},{name:"/thinking",desc:"commands.thinking.desc",pinyinFirst:Cn.thinking},{name:"/compact",desc:"commands.compact.desc",pinyinFirst:Cn.compact,acceptsInput:!0},{name:"/undo",desc:"commands.undo.desc",pinyinFirst:Cn.undo},{name:"/fork",desc:"commands.fork.desc",pinyinFirst:Cn.fork},{name:"/export",desc:"commands.export.desc",pinyinFirst:Cn.export},{name:"/status",desc:"commands.status.desc",pinyinFirst:Cn.status}];function v9(e){if(!e.startsWith("/"))return null;const t=e.indexOf(" ");return t===-1?{cmd:e,arg:""}:{cmd:e.slice(0,t),arg:e.slice(t+1)}}const Hi="skill:";function h9(e){return e.startsWith(Hi)?e.slice(Hi.length):e}function md(e=[]){const t=e.map(n=>({name:n.source==="builtin"?`/${n.name}`:`/${Hi}${n.name}`,desc:n.description,isSkill:!0,acceptsInput:!0}));return[...fd,...t]}const g9=3,y9=1,k9=1;function vd(e){return e.toLowerCase().trim().replace(/^\//,"")}function _a(e,t){return e===t?4:e.startsWith(t)?3:e.includes(t)?2:b9(e,t)?1:0}function b9(e,t){let n=0;for(const s of t){if(n=e.indexOf(s,n),n===-1)return!1;n++}return!0}function tu(e,t){const n=vd(t);if(n===""||e.length===0)return[];const s=e.toLowerCase();if(!s.includes(n))return[{start:0,end:e.length}];const o=[];let i=0;for(;;){const u=s.indexOf(n,i);if(u===-1)break;o.push({start:u,end:u+n.length}),i=u+n.length}return o}function w9(e,t=fd,n=s=>s.desc){const s=vd(e);return s===""?t.map((o,i)=>({item:o,index:i,nameRanges:[],descRanges:[]})):t.map((o,i)=>{const u=o.name.replace(/^\//,"").toLowerCase(),p=n(o),f=_a(u,s)*g9+_a(p.toLowerCase(),s)*y9+(o.pinyinFirst?_a(o.pinyinFirst,s)*k9:0);return f===0?null:{match:{item:o,index:i,nameRanges:tu(o.name,s),descRanges:tu(p,s)},score:f}}).filter(o=>o!==null).sort((o,i)=>i.score-o.score||o.match.index-i.match.index).map(o=>o.match)}const Ui=100;function S9(e){const t=vo(We.inputHistory);if(Array.isArray(t)){const n=t.filter(i=>typeof i=="string"&&i.length>0);if(!e||n.length===0)return{};const s=n.length>Ui?n.slice(-Ui):n,o={[e]:s};return Vs(We.inputHistory,o),o}return t&&typeof t=="object"?t:{}}function C9(e){const{text:t,textareaRef:n,autosize:s,sessionId:o}=e,i=I(S9(o())),u=$(()=>i.value[o()??""]??[]);let p=-1,f="";function v(k){const T=o();if(p=-1,!T)return;const S=k.trim();if(!S)return;const O=i.value[T]??[];if(O.at(-1)===S)return;const D=[...O,S],E=D.length>Ui?D.slice(-Ui):D;i.value={...i.value,[T]:E},Vs(We.inputHistory,i.value)}function w(){const k=n.value;return k?(k.selectionStart??0)===0:!1}function x(k){t.value=k,Ke(()=>{const T=n.value;if(!T)return;s();const S=k.length;T.setSelectionRange(S,S)})}function h(){const k=u.value;if(k.length!==0){if(p===-1)f=t.value,p=k.length-1;else if(p>0)p-=1;else return;x(k[p])}}function m(){if(p===-1)return;const k=u.value;p0}return Oe(o,()=>{p=-1}),{push:v,caretAtTextStart:w,recallOlder:h,recallNewer:m,resetBrowsing:_,isBrowsing:y,hasHistory:g}}function _9(e){const{text:t,textareaRef:n,autosize:s,skills:o,emitCommand:i,historyPush:u,clearDraft:p}=e,f=e.resolveDesc??(g=>g.desc),v=I(!1),w=I([]),x=$(()=>w.value.map(g=>g.item)),h=I(0),m=I("");function _(){const g=t.value;g.startsWith("/")&&!g.includes(" ")?(m.value=g,w.value=w9(g,md(o()),f),h.value=0,v.value=!0):v.value=!1}function y(g){if(v.value=!1,g.acceptsInput){t.value=`${g.name} `,Ke(()=>{const k=n.value;if(!k)return;const T=t.value.length;k.setSelectionRange(T,T),k.focus(),s()});return}t.value="",p?.(),u(g.name),i(g.name)}return{open:v,matches:w,items:x,active:h,query:m,update:_,select:y}}function $9(e){const{text:t,textareaRef:n,autosize:s,searchFiles:o}=e,i=I(!1),u=I([]),p=I(0),f=I(!1);let v=null;function w(){const m=t.value,_=n.value?.selectionStart??m.length;let y=_-1;for(;y>=0&&!/\s/.test(m[y]);)y--;y++;const g=m.slice(y,_);return g.startsWith("@")?{token:g.slice(1),start:y,end:_}:null}function x(){const m=w(),_=o();if(!m||!_){i.value=!1;return}const y=m.token;v!==null&&clearTimeout(v),v=setTimeout(async()=>{f.value=!0,i.value=!0,p.value=0;try{u.value=await _(y)}catch{u.value=[]}finally{f.value=!1}},200)}function h(m){const _=w();if(!_)return;const y=t.value;t.value=y.slice(0,_.start)+m.path+y.slice(_.end),i.value=!1,Ke(()=>{const g=n.value;if(!g)return;const k=_.start+m.path.length;g.setSelectionRange(k,k),g.focus(),s()})}return{open:i,items:u,active:p,loading:f,update:x,select:h}}function M9(e){const{sessionId:t}=e;function n(v){return It(Fl(v))??""}function s(v,w){const x=Fl(v);w?Bt(x,w):ro(x)}const o=I(n(t())),i=I(null);function u(){const v=i.value;v&&(v.style.height="auto",v.style.height=`${v.scrollHeight}px`)}Oe(o,v=>{Ke(u),s(t(),v)}),Oe(t,(v,w)=>{v!==w&&(s(w,o.value),o.value=n(v),Ke(u))});function p(v){o.value=v,Ke(()=>{const w=i.value;if(!w)return;w.focus();const x=v.length;w.setSelectionRange(x,x),u()})}function f(){s(t(),"")}return{text:o,textareaRef:i,autosize:u,loadForEdit:p,clearDraft:f}}function x9(e){const{uploadImage:t,sessionId:n}=e,s=I({}),o=$(()=>s.value[n()??""]??[]),i=I(null),u=I(null),p=I(!1);let f=0;function v(){return`att_${++f}`}function w(Q,ie){s.value={...s.value,[Q]:ie}}function x(Q){if(Q.previewUrl!==void 0)try{URL.revokeObjectURL(Q.previewUrl)}catch{}}function h(Q){return Q.startsWith("image/")?"image":Q.startsWith("video/")?"video":"file"}async function m(Q){const ie=t();if(!ie)return;const te=n()??"";if(Q.length!==0)for(const ye of Q){const _e=h(ye.type),Ce=v(),Z=_e==="file"?void 0:URL.createObjectURL(ye),U={localId:Ce,name:ye.name,kind:_e,previewUrl:Z,mediaType:ye.type||"application/octet-stream",size:ye.size,uploading:!0};w(te,[...s.value[te]??[],U]),ie(ye,ye.name).then(ke=>{const ae=s.value[te]??[];w(te,ae.map(ee=>ee.localId===Ce?{...ee,uploading:!1,fileId:ke?.fileId,mediaType:ke?.mediaType??ee.mediaType,error:ke===null}:ee))}).catch(()=>{const ke=s.value[te]??[];w(te,ke.map(ae=>ae.localId===Ce?{...ae,uploading:!1,error:!0}:ae))})}}function _(Q){const ie=n()??"",te=s.value[ie]??[],ye=te.find(_e=>_e.localId===Q);i.value?.localId===Q&&(i.value=null),ye&&x(ye),w(ie,te.filter(_e=>_e.localId!==Q))}function y(Q){i.value=Q}function g(){i.value=null}function k(){u.value?.click()}function T(Q){const ie=Q.target,te=Array.from(ie.files??[]);m(te),ie.value=""}function S(Q){if(!t())return;const ie=Q.clipboardData;if(!ie)return;const te=[],ye=new Set,_e=(Ce,Z)=>{const U=`${Ce.size}:${Ce.type}:${Z}`;if(ye.has(U))return;ye.add(U);const ke=Ce.type.split("/")[1]??"png",ae=Z.includes(".")?Z:`paste-${Date.now()}.${ke}`;te.push(Ce instanceof File?Ce:new File([Ce],ae,{type:Ce.type}))};for(const Ce of Array.from(ie.items))if(Ce.kind==="file"){const Z=Ce.getAsFile();Z&&_e(Z,Z.name||`paste-${Date.now()}.${Ce.type.split("/")[1]??"png"}`)}for(const Ce of Array.from(ie.files))_e(Ce,Ce.name);te.length!==0&&(Q.preventDefault(),m(te))}let O=0;function D(Q){!t()||!Array.from(Q.dataTransfer?.items??[]).some(te=>te.kind==="file")||(Q.preventDefault(),Q.stopPropagation(),p.value=!0)}function E(){p.value=!1}function B(Q){if(O=0,p.value=!1,!t())return;Q.preventDefault(),Q.stopPropagation();const ie=Array.from(Q.dataTransfer?.files??[]);m(ie)}function q(Q){return Array.from(Q.dataTransfer?.items??[]).some(ie=>ie.kind==="file")}function V(Q){!t()||!q(Q)||(Q.preventDefault(),O+=1,p.value=!0)}function b(Q){!t()||!q(Q)||Q.preventDefault()}function P(Q){!t()||!q(Q)||(O=Math.max(0,O-1),O===0&&(p.value=!1))}function L(Q){if(O=0,p.value=!1,!t())return;Q.preventDefault();const ie=Array.from(Q.dataTransfer?.files??[]);m(ie)}function ne(){const Q=n()??"";for(const ie of s.value[Q]??[])x(ie);w(Q,[])}function oe(Q,ie,te){const ye=s.value[Q]??[];ye.some(_e=>_e.localId===ie)&&w(Q,ye.map(_e=>_e.localId===ie?{..._e,...te}:_e))}function ge(Q){return fetch(Q).then(ie=>{if(!ie.ok)throw new Error(`fetch failed: ${ie.status}`);return ie.blob()})}function ce(Q){const ie=n()??"";for(const te of s.value[ie]??[])x(te);w(ie,[]);for(const te of Q){const ye=v(),_e=/^data:/i.test(te.url),Ce=/^blob:/i.test(te.url),Z=te.name??te.kind;if(te.fileId){const U={localId:ye,name:Z,kind:te.kind,previewUrl:te.kind==="file"?void 0:te.url,uploading:!1,fileId:te.fileId};w(ie,[...s.value[ie]??[],U]),te.kind!=="file"&&!_e&&!Ce&&Te().getFileBlob(te.fileId).then(ke=>{const ae=URL.createObjectURL(ke);if(!(s.value[ie]??[]).some(de=>de.localId===ye)){URL.revokeObjectURL(ae);return}oe(ie,ye,{previewUrl:ae})}).catch(()=>{})}else{if(!te.url)continue;const U=t();if(!U)continue;const ke={localId:ye,name:Z,kind:te.kind,previewUrl:te.url,uploading:!0};w(ie,[...s.value[ie]??[],ke]),ge(te.url).then(ae=>{const ee=Z.includes(".")?Z:`${Z}.${ae.type.split("/")[1]??"bin"}`;return U(ae,ee)}).then(ae=>{if(ae===null){const ee=s.value[ie]??[];w(ie,ee.filter(de=>de.localId!==ye));return}oe(ie,ye,{uploading:!1,fileId:ae.fileId})}).catch(()=>{const ae=s.value[ie]??[];w(ie,ae.filter(ee=>ee.localId!==ye))})}}}return Oe(n,()=>{i.value=null}),ht(()=>{document.addEventListener("paste",S),document.addEventListener("dragenter",V),document.addEventListener("dragover",b),document.addEventListener("dragleave",P),document.addEventListener("drop",L)}),kt(()=>{document.removeEventListener("paste",S),document.removeEventListener("dragenter",V),document.removeEventListener("dragover",b),document.removeEventListener("dragleave",P),document.removeEventListener("drop",L);for(const Q of Object.values(s.value))for(const ie of Q)x(ie);i.value=null}),{attachments:o,previewAttachment:i,fileInputRef:u,isDragOver:p,removeAttachment:_,openAttachmentPreview:y,closeAttachmentPreview:g,openFilePicker:k,handleFileInputChange:T,handleDragOver:D,handleDragLeave:E,handleDrop:B,clearAfterSubmit:ne,loadAttachments:ce}}const I9=new Set(["F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","Escape","Home","End","PageUp","PageDown","Insert"]);function A9(e){return e.ctrlKey||e.metaKey||e.altKey?!0:I9.has(e.key)}let hd=!1;function T9(e){A9(e)&&(hd=!0)}function P9(e){return hd||Wi(D8,e)}const E9={class:"ctx-ring",viewBox:"0 0 20 20","aria-hidden":"true"},L9=["stroke-dasharray","stroke-dashoffset"],$a=7,B9=Ie({__name:"ContextRing",props:{pct:{}},setup(e){const t=e,n=2*Math.PI*$a;return(s,o)=>(a(),c("svg",E9,[r("circle",{class:"ctx-ring-track",cx:"10",cy:"10",r:$a,fill:"none","stroke-width":"2.5"}),r("circle",{class:"ctx-ring-fill",cx:"10",cy:"10",r:$a,fill:"none","stroke-width":"2.5","stroke-linecap":"round","stroke-dasharray":`${n}`,"stroke-dashoffset":`${n*(1-t.pct/100)}`},null,8,L9)]))}}),R9=Ee(B9,[["__scopeId","data-v-a364f1f1"]]),O9={key:0,class:"att-strip"},D9={class:"att-lightbox-card"},z9=["src"],F9=["src","alt"],N9={class:"att-lightbox-name"},q9={class:"composer-card"},W9={class:"cin-wrap"},H9={class:"input-row"},U9=["placeholder","disabled"],V9=["aria-label"],j9={class:"toolbar-left"},K9=["onKeydown"],G9=["onClick"],Q9={class:"pd-check"},Y9={class:"pd-info"},Z9={class:"pd-desc"},X9={class:"pd-check"},J9={class:"pd-info"},eM={class:"pd-name"},tM={class:"pd-desc"},nM={class:"pd-check"},sM={class:"pd-info"},oM={class:"pd-name"},iM={class:"pd-desc"},aM={class:"pd-check"},lM={class:"pd-info"},rM={class:"pd-name"},uM={class:"pd-desc"},cM={class:"pd-check"},dM={class:"pd-info"},pM={class:"pd-name"},fM={class:"pd-desc"},mM=["aria-pressed"],vM=["aria-label"],hM=["aria-pressed"],gM=["aria-label"],yM=["aria-pressed"],kM=["aria-label"],bM=["aria-pressed"],wM=["aria-label"],SM={class:"toolbar-right"},CM=["aria-label"],_M=["onKeydown"],$M={key:0,class:"think-suffix"},MM=["aria-label"],xM=["aria-label","disabled"],IM={key:0,class:"md-section"},AM=["onClick"],TM={class:"md-check"},PM={class:"md-name"},EM={class:"md-provider"},LM={key:1,class:"md-divider"},BM={key:2,class:"md-section"},RM=["onClick"],OM={class:"md-check"},DM={class:"md-name"},zM={key:3,class:"md-divider"},FM={class:"md-name"},NM={key:0,class:"md-note"},qM=["aria-label"],WM=["disabled","onClick"],HM={class:"md-cache-note"},UM={class:"md-name"},VM={class:"drop-card"},nu=36,jM=Ie({__name:"Composer",props:{running:{type:Boolean,default:!1},starting:{type:Boolean,default:!1},sessionId:{},queued:{default:()=>[]},searchFiles:{type:Function,default:void 0},uploadImage:{type:Function,default:void 0},status:{},thinking:{},planMode:{type:Boolean},planArmed:{type:Boolean},swarmMode:{type:Boolean},supermoonMode:{type:Boolean},goalMode:{type:Boolean},goal:{},activationBadges:{},models:{default:()=>[]},starredIds:{default:()=>[]},skills:{default:()=>[]},hideContext:{type:Boolean}},emits:["submit","steer","command","interrupt","setPermission","setThinking","togglePlan","toggleSwarm","toggleSupermoon","toggleGoal","dismissPlan","focusGoal","compact","pickModel","selectModel"],setup(e,{expose:t,emit:n}){const s=e,o=I(Wi(Ii));let i=null;const u=$(()=>s.starting?f("composer.starting"):s.running?o.value?f("composer.placeholderRunningTouch"):f("composer.placeholderRunning"):s.goalMode?f("status.goalPlaceholder"):x.value?f("status.planPlaceholder"):f("composer.placeholder")),p=n,{t:f,locale:v}=Ue(),w=$(()=>s.planMode===!0),x=$(()=>ic({planMode:w.value,planArmed:s.planArmed===!0})),h=$(()=>s.goal?.status??s.activationBadges?.goal?.status??null),m=$(()=>h.value!==null&&h.value!=="complete"),_=$(()=>m.value||s.goalMode===!0);function y(pe){const Me=f(pe==="swarm"?"status.swarmLabel":"status.supermoonLabel");return f("status.workModeDismiss",{mode:Me})}const{text:g,textareaRef:k,autosize:T,loadForEdit:S,clearDraft:O}=M9({sessionId:()=>s.sessionId}),D=I(!1);function E(){D.value=!D.value,Ke(()=>{T(),b(),k.value?.focus()})}function B(){D.value&&(D.value=!1,Ke(T))}function q(pe){if(typeof getComputedStyle>"u")return nu;const Me=Number.parseFloat(getComputedStyle(pe).minHeight);return Number.isFinite(Me)&&Me>0?Me:nu}const V=I(!1);function b(){const pe=k.value;V.value=!!pe&&pe.scrollHeight>q(pe)}Oe(g,()=>{Ke(b)}),Oe(()=>s.sessionId,()=>{D.value=!1,L.value=!1,te.value=!1});const P=C9({text:g,textareaRef:k,autosize:T,sessionId:()=>s.sessionId}),{open:L,matches:ne,items:oe,active:ge,query:ce,update:Q,select:ie}=_9({text:g,textareaRef:k,autosize:T,skills:()=>s.skills,emitCommand:pe=>p("command",pe),historyPush:pe=>P.push(pe),clearDraft:O,resolveDesc:pe=>pe.isSkill?pe.desc:f(pe.desc)}),{open:te,items:ye,active:_e,loading:Ce,update:Z,select:U}=$9({text:g,textareaRef:k,autosize:T,searchFiles:()=>s.searchFiles});function ke(){P.resetBrowsing(),Q(),Z()}const ae=I(null),ee=I(null);let de=null;function Be(){de!==null&&(clearTimeout(de),de=null)}function Y(pe){if(!pe)return!1;const Me=ae.value?.$el,xe=ee.value?.$el;return!!(L.value&&Me instanceof HTMLElement&&Me.contains(pe)||te.value&&xe instanceof HTMLElement&&xe.contains(pe))}function ve(pe){Y(pe.relatedTarget)||(Be(),de=setTimeout(()=>{de=null,L.value=!1,te.value=!1},0))}const{attachments:R,previewAttachment:X,fileInputRef:me,isDragOver:He,removeAttachment:De,openAttachmentPreview:an,closeAttachmentPreview:Fe,openFilePicker:Ze,handleFileInputChange:Ve,handleDragOver:At,handleDragLeave:bt,handleDrop:Ct,clearAfterSubmit:dn,loadAttachments:Kt}=x9({uploadImage:()=>s.uploadImage,sessionId:()=>s.sessionId});ht(()=>{i=ud(Ii,pe=>{o.value=pe}),g.value&&Ke(()=>{T(),b()})}),kt(()=>{i?.(),i=null,document.removeEventListener("mousedown",ns),gn(),Be()});function zt(){k.value?.focus({preventScroll:!0})}function hs(pe){Kt(pe)}t({loadForEdit:S,loadAttachmentsForEdit:hs,focus:zt});function nn(pe){return{fileId:pe.fileId,kind:pe.kind,name:pe.name,mediaType:pe.mediaType,size:pe.size}}function ut(){return R.value.filter(pe=>!pe.uploading&&!pe.error&&pe.fileId!==void 0)}function Ft(pe){if(pe.kind==="file"){pe.fileId!==void 0&&ld(pe.fileId,pe.name,pe.mediaType);return}an(pe)}function In(){const pe=g.value.trim();if(R.value.some(F=>F.uploading))return;const Me=ut();if(!pe&&Me.length===0)return;if(P.push(pe),pe){const F=v9(pe),K=F?md(s.skills).some(le=>le.name===F.cmd||le.name===`/${Hi}${F.cmd.slice(1)}`):!1;if(F&&K){g.value="",O(),L.value=!1,B(),p("command",F.arg?`${F.cmd} ${F.arg}`:F.cmd,Me.length>0?Me.map(le=>nn(le)):void 0);return}}const xe={text:pe,attachments:Me.map(F=>nn(F))};X.value=null,dn(),g.value="",O(),L.value=!1,te.value=!1,B(),p("submit",xe)}function _t(){if(!s.running||R.value.some(F=>F.uploading))return;const pe=g.value.trim(),Me=ut();if(!pe&&Me.length===0&&s.queued.length===0)return;const xe={text:pe,attachments:Me.map(F=>nn(F))};dn(),P.push(pe),g.value="",O(),L.value=!1,te.value=!1,B(),p("steer",xe)}let pn=!1,Nt=null;function gn(){Nt!==null&&(clearTimeout(Nt),Nt=null)}function Tt(){gn(),pn=!0}function fn(){gn(),Nt=setTimeout(()=>{Nt=null,pn=!1},0)}function mn(pe){return pn||pe.isComposing||pe.keyCode===229}function Rn(pe){if(mn(pe))return;T9(pe);const Me=Wi(Ii)&&!P9();if(pe.key==="Escape"){if($t.value){pe.preventDefault(),An();return}if(Zt.value){pe.preventDefault(),sn();return}if(Vt.value){pe.preventDefault(),bn();return}}if(L.value){if(pe.key==="ArrowDown"){pe.preventDefault(),ge.value=(ge.value+1)%oe.value.length;return}if(pe.key==="ArrowUp"){pe.preventDefault(),ge.value=(ge.value-1+oe.value.length)%oe.value.length;return}if(pe.key==="Enter"||pe.key==="Tab"){pe.preventDefault();const xe=oe.value[ge.value];xe&&ie(xe);return}if(pe.key==="Escape"){pe.preventDefault(),L.value=!1;return}}if(te.value&&!Ce.value){if(pe.key==="ArrowDown"){pe.preventDefault(),_e.value=(_e.value+1)%Math.max(1,ye.value.length);return}if(pe.key==="ArrowUp"){pe.preventDefault(),_e.value=(_e.value-1+Math.max(1,ye.value.length))%Math.max(1,ye.value.length);return}if(pe.key==="Enter"||pe.key==="Tab"){pe.preventDefault();const xe=ye.value[_e.value];xe&&U(xe);return}if(pe.key==="Escape"){pe.preventDefault(),te.value=!1;return}}if(!Me&&pe.key==="s"&&(pe.ctrlKey||pe.metaKey)&&!pe.shiftKey&&!pe.altKey){s.running&&(pe.preventDefault(),_t());return}if(!D.value&&!L.value&&!te.value&&!pe.shiftKey&&!pe.altKey&&!pe.metaKey&&!pe.ctrlKey){const xe=P.isBrowsing();if(pe.key==="ArrowUp"&&P.hasHistory()&&(xe||P.caretAtTextStart())){pe.preventDefault(),P.recallOlder();return}if(pe.key==="ArrowDown"&&xe){pe.preventDefault(),P.recallNewer();return}}if(pe.key==="Enter"&&!pe.shiftKey){if(D.value&&!(pe.metaKey||pe.ctrlKey)||Me)return;pe.preventDefault(),In()}}const yn=$(()=>f("composer.send")),Gn=$(()=>!!s.uploadImage),$t=I(!1),Zt=I(!1),Gt=I(null);function kn(){$t.value=!$t.value,$t.value?(Zt.value=!1,bn(),document.addEventListener("click",qt,!0)):document.removeEventListener("click",qt,!0)}function An(){$t.value=!1,Zt.value||document.removeEventListener("click",qt,!0)}function Rt(){Zt.value=!Zt.value,Zt.value?($t.value=!1,bn(),document.addEventListener("click",qt,!0)):document.removeEventListener("click",qt,!0)}function sn(){Zt.value=!1,$t.value||document.removeEventListener("click",qt,!0)}function qt(pe){Gt.value&&!Gt.value.contains(pe.target)&&(An(),sn())}kt(()=>{document.removeEventListener("click",qt,!0)});const Xt=$(()=>{const pe=s.status?.ctxMax??0;return pe<=0?0:Math.min(100,Math.max(0,Math.ceil((s.status?.ctxUsed??0)/pe*100)))}),Wt=$(()=>{const pe=ms(s.status?.ctxUsed??0),Me=ms(s.status?.ctxMax??0);return f("status.ctxTooltip",{used:pe,max:Me,pct:Xt.value})}),ct=$(()=>Xt.value>=80),lt=$(()=>s.models?.find(pe=>pe.id===s.status?.modelId)),on=$(()=>Ki(lt.value)),Jt=$(()=>Gi(lt.value)),Se=$(()=>Xo(lt.value,s.thinking)),we=$(()=>Jt.value.includes(Se.value)?Se.value:""),Ge=$(()=>j2(Se.value)),Je=$(()=>on.value==="unsupported"||Jt.value.length<=1),at=$(()=>{if(!Ge.value)return"";const pe=(lt.value?.supportEfforts?.length??0)>0,Me=Se.value;return pe&&Me!=="on"?f("composer.thinkingSuffixEffort",{level:Me}):f("composer.thinkingSuffix")});function Ht(pe){Je.value||p("setThinking",Cl(lt.value,pe))}function Qt(pe){return pe==="on"?f("status.thinkingOn"):pe==="off"?f("status.thinkingOff"):qa(pe)}const Pt=$(()=>s.swarmMode===!0),Ut=$(()=>s.supermoonMode===!0),Vt=I(!1),Tn=I(null),gs=I(null),Wn=I({});function bn(){Vt.value=!1,document.removeEventListener("mousedown",ns)}function ns(pe){const Me=pe.target;Tn.value?.contains(Me)||gs.value?.contains(Me)||bn()}function ss(){if(Vt.value){bn();return}An(),sn();const pe=Tn.value?.getBoundingClientRect();pe&&(Wn.value={left:`${Math.round(pe.left)}px`,bottom:`${Math.round(window.innerHeight-pe.top+8)}px`}),Vt.value=!0,pe&&Ke(()=>{const Me=gs.value;if(!Me)return;const xe=Math.max(8,Math.min(pe.left,window.innerWidth-Me.offsetWidth-8));Wn.value={...Wn.value,left:`${Math.round(xe)}px`}}),setTimeout(()=>document.addEventListener("mousedown",ns),0)}function On(){bn(),p("togglePlan")}function en(){bn(),m.value?p("focusGoal"):p("toggleGoal")}function Dn(){bn(),p("toggleSwarm")}function Hn(){bn(),p("toggleSupermoon")}const Qn=[{mode:"manual",color:"var(--dim)",labelKey:"status.permissionManual",descKey:"status.permissionManualDesc"},{mode:"yolo",color:"var(--color-warning)",labelKey:"status.permissionYolo",descKey:"status.permissionYoloDesc"},{mode:"auto",color:"var(--color-danger)",labelKey:"status.permissionAuto",descKey:"status.permissionAutoDesc"}],ys=["composer.addPlanDesc","composer.addGoalDesc","composer.addSwarmDesc","composer.addSupermoonDesc"],vn=I(null),os=I(""),zn=I("");function is(pe){const Me={};return pe&&(Me["--composer-menu-desc-width"]=pe),Me}const as=$(()=>is(os.value)),Es=$(()=>is(zn.value)),ks=$(()=>({...Wn.value,...Es.value}));let wn=null;function Ls(pe){const Me=Number.parseFloat(pe);return Number.isFinite(Me)?Me:0}function Gs(pe){return`${pe.fontStyle||"normal"} ${pe.fontWeight||"400"} ${pe.fontSize} ${pe.fontFamily}`}function Bs(pe){return pe.letterSpacing==="normal"?0:Ls(pe.letterSpacing)}function Fn(pe,Me){if(!pe)return 0;const xe=Hd(pe,Gs(Me),{letterSpacing:Bs(Me)});return Ud(xe)}function bs(){const pe=vn.value?.querySelector(".pd-desc");if(!pe)return;const Me=getComputedStyle(pe),xe=Math.max(0,...Qn.map(je=>Fn(f(je.descKey),Me))),F=Math.max(0,...ys.map(je=>Fn(f(je),Me))),K=window.innerWidth-96,le=je=>K>0?Math.min(je,K):je;os.value=xe>0?`${Math.ceil(le(xe))}px`:"",zn.value=F>0?`${Math.ceil(le(F))}px`:""}function ws(){typeof window>"u"||(wn!==null&&window.cancelAnimationFrame(wn),Ke(()=>{wn=window.requestAnimationFrame(()=>{wn=null,bs()})}))}Oe(v,ws,{immediate:!0}),ht(()=>{ws(),document.fonts?.ready.then(ws)}),kt(()=>{wn!==null&&(window.cancelAnimationFrame(wn),wn=null)});function Ae(pe){p("setPermission",pe),sn()}const j=$(()=>Qn.find(pe=>pe.mode===s.status?.permission)),J=$(()=>j.value?f(j.value.labelKey):""),ft=$(()=>lt.value?.provider??""),Nn=$(()=>!ft.value||!s.models?.length?[]:s.models.filter(pe=>pe.provider===ft.value)),Ss=$(()=>new Set(s.starredIds??[]));function ls(pe){return Ss.value.has(pe)}const Qs=$(()=>s.models?.length?s.models.filter(pe=>ls(pe.id)&&pe.provider!==ft.value):[]);function Rs(pe){p("selectModel",pe),An()}return(pe,Me)=>(a(),c("div",{class:fe(["composer",{"drag-over":l(He),expanded:D.value}]),onDragover:Me[20]||(Me[20]=(...xe)=>l(At)&&l(At)(...xe)),onDragleave:Me[21]||(Me[21]=(...xe)=>l(bt)&&l(bt)(...xe)),onDrop:Me[22]||(Me[22]=(...xe)=>l(Ct)&&l(Ct)(...xe))},[l(R).length>0?(a(),c("div",O9,[(a(!0),c(he,null,Pe(l(R),xe=>(a(),G(od,{key:xe.localId,kind:xe.kind,name:xe.name,url:xe.previewUrl,"file-id":xe.fileId,"media-type":xe.mediaType,size:xe.size,uploading:xe.uploading,error:xe.error,removable:"","remove-label":l(f)("composer.removeNamed",{name:xe.name}),onActivate:F=>Ft(xe),onRemove:F=>l(De)(xe.localId)},null,8,["kind","name","url","file-id","media-type","size","uploading","error","remove-label","onActivate","onRemove"]))),128))])):A("",!0),l(X)?(a(),c("div",{key:1,class:"att-lightbox",onClick:Me[1]||(Me[1]=Re((...xe)=>l(Fe)&&l(Fe)(...xe),["self"]))},[r("div",D9,[M(ot,{text:l(f)("model.close")},{default:H(()=>[r("button",{type:"button",class:"att-lightbox-close",onClick:Me[0]||(Me[0]=(...xe)=>l(Fe)&&l(Fe)(...xe))},"✕")]),_:1},8,["text"]),l(X).kind==="video"?(a(),c("video",{key:0,class:"att-lightbox-media",src:l(X).previewUrl,controls:"",playsinline:""},null,8,z9)):(a(),c("img",{key:1,class:"att-lightbox-media",src:l(X).previewUrl,alt:l(X).name},null,8,F9)),r("div",N9,d(l(X).name),1)])])):A("",!0),r("div",q9,[r("div",W9,[l(L)?(a(),G(n9,{key:0,ref_key:"slashMenuRef",ref:ae,matches:l(ne),query:l(ce),"active-index":l(ge),onSelect:l(ie),onHover:Me[2]||(Me[2]=xe=>ge.value=xe)},null,8,["matches","query","active-index","onSelect"])):A("",!0),l(te)?(a(),G(m9,{key:1,ref_key:"mentionMenuRef",ref:ee,items:l(ye),"active-index":l(_e),loading:l(Ce),onSelect:l(U),onHover:Me[3]||(Me[3]=xe=>_e.value=xe)},null,8,["items","active-index","loading","onSelect"])):A("",!0),r("div",H9,[gt(r("textarea",{ref_key:"textareaRef",ref:k,"onUpdate:modelValue":Me[4]||(Me[4]=xe=>Pd(g)?g.value=xe:null),class:"ph",placeholder:u.value,disabled:e.starting,rows:"1",onKeydown:Rn,onCompositionstart:Tt,onCompositionend:fn,onInput:ke,onBlur:ve},null,40,U9),[[qn,l(g)]]),D.value||V.value?(a(),c("button",{key:0,class:"expand-btn",type:"button","aria-label":D.value?l(f)("composer.collapseTitle"):l(f)("composer.expandTitle"),onClick:E},[D.value?(a(),G(se,{key:0,name:"collapse",size:"sm"})):(a(),G(se,{key:1,name:"expand",size:"sm"}))],8,V9)):A("",!0)])]),Gn.value?(a(),c("input",{key:0,ref_key:"fileInputRef",ref:me,type:"file",multiple:"",class:"file-input-hidden",onChange:Me[5]||(Me[5]=(...xe)=>l(Ve)&&l(Ve)(...xe))},null,544)):A("",!0),r("div",{ref_key:"toolbarRef",ref:Gt,class:"toolbar"},[r("div",{ref_key:"menuMeasureRef",ref:vn,class:"menu-measure","aria-hidden":"true"},[...Me[23]||(Me[23]=[r("span",{class:"pd-desc"},null,-1)])],512),r("div",j9,[Gn.value?(a(),G(nt,{key:0,size:"md",label:l(f)("composer.attachFile"),onClick:l(Ze)},{default:H(()=>[M(se,{name:"attachment"})]),_:1},8,["label","onClick"])):A("",!0),e.status?(a(),c("span",{key:1,class:fe(["perm-pill",["perm-"+e.status.permission,{open:Zt.value}]]),role:"button",tabindex:"0",onClick:Re(Rt,["stop"]),onKeydown:[En(Rt,["enter"]),En(Re(Rt,["prevent"]),["space"])]},d(J.value),43,K9)):A("",!0),Zt.value&&e.status?(a(),c("div",{key:2,class:"perm-dropdown",style:rt(as.value),role:"menu",onClick:Me[6]||(Me[6]=Re(()=>{},["stop"]))},[(a(),c(he,null,Pe(Qn,xe=>r("button",{key:xe.mode,class:fe(["pd-row",{"is-current":xe.mode===e.status.permission}]),role:"menuitem",onClick:F=>Ae(xe.mode)},[r("span",Q9,[xe.mode===e.status.permission?(a(),G(se,{key:0,name:"check",size:"sm"})):A("",!0)]),r("span",Y9,[r("span",{class:"pd-name",style:rt({color:xe.color})},d(l(f)(xe.labelKey)),5),r("span",Z9,d(l(f)(xe.descKey)),1)])],10,G9)),64))],4)):A("",!0),e.status?(a(),c("span",{key:3,ref_key:"addMenuRef",ref:Tn,class:"add-menu-anchor"},[M(nt,{size:"md",label:l(f)("composer.addMenu"),class:fe({"is-open":Vt.value}),onClick:ss},{default:H(()=>[M(se,{name:"plus"})]),_:1},8,["label","class"])],512)):A("",!0),(a(),G(lo,{to:"body"},[Vt.value?(a(),c("div",{key:0,ref_key:"addMenuPopupRef",ref:gs,class:"add-menu",style:rt(ks.value),role:"menu"},[r("button",{type:"button",class:fe(["pd-row",{"is-current":x.value}]),role:"menuitem",onClick:On},[r("span",X9,[M(se,{name:"file-edit",size:"sm"})]),r("span",J9,[r("span",eM,d(l(f)("status.planLabel")),1),r("span",tM,d(l(f)("composer.addPlanDesc")),1)])],2),r("button",{type:"button",class:fe(["pd-row",{"is-current":_.value}]),role:"menuitem",onClick:en},[r("span",nM,[M(se,{name:"target",size:"sm"})]),r("span",sM,[r("span",oM,d(l(f)("status.goalLabel")),1),r("span",iM,d(l(f)("composer.addGoalDesc")),1)])],2),r("button",{type:"button",class:fe(["pd-row",{"is-current":Pt.value}]),role:"menuitem",onClick:Dn},[r("span",aM,[M(se,{name:"sparkles",size:"sm"})]),r("span",lM,[r("span",rM,d(l(f)("status.swarmLabel")),1),r("span",uM,d(l(f)("composer.addSwarmDesc")),1)])],2),r("button",{type:"button",class:fe(["pd-row",{"is-current":Ut.value}]),role:"menuitem",onClick:Hn},[r("span",cM,[M(se,{name:"moon-stars",size:"sm"})]),r("span",dM,[r("span",pM,d(l(f)("status.supermoonLabel")),1),r("span",fM,d(l(f)("composer.addSupermoonDesc")),1)])],2)],4)):A("",!0)])),e.status?(a(),c("span",{key:4,class:fe(["mode-chip",{on:x.value}])},[r("button",{type:"button",class:"mode-chip-main","aria-pressed":x.value,onClick:Me[7]||(Me[7]=xe=>p("togglePlan"))},[M(se,{name:"file-edit",size:"sm"}),r("span",null,d(l(f)("status.planLabel")),1)],8,mM),x.value?(a(),c("button",{key:0,type:"button",class:"mode-chip-x","aria-label":l(f)("status.workModeDismiss",{mode:l(f)("status.planLabel")}),onClick:Me[8]||(Me[8]=xe=>p("dismissPlan"))},[M(se,{name:"close",size:"sm"})],8,vM)):A("",!0)],2)):A("",!0),e.status?(a(),c("span",{key:5,class:fe(["mode-chip",{on:_.value}])},[r("button",{type:"button",class:"mode-chip-main","aria-pressed":_.value,onClick:Me[9]||(Me[9]=xe=>m.value?p("focusGoal"):p("toggleGoal"))},[M(se,{name:"target",size:"sm"}),r("span",null,d(l(f)("status.goalLabel")),1)],8,hM),e.goalMode?(a(),c("button",{key:0,type:"button",class:"mode-chip-x","aria-label":l(f)("status.workModeDismiss",{mode:l(f)("status.goalLabel")}),onClick:Me[10]||(Me[10]=xe=>p("toggleGoal"))},[M(se,{name:"close",size:"sm"})],8,gM)):A("",!0)],2)):A("",!0),e.status?(a(),c("span",{key:6,class:fe(["mode-chip",{on:Pt.value}])},[r("button",{type:"button",class:"mode-chip-main","aria-pressed":Pt.value,onClick:Me[11]||(Me[11]=xe=>p("toggleSwarm"))},[M(se,{name:"sparkles",size:"sm"}),r("span",null,d(l(f)("status.swarmLabel")),1)],8,yM),Pt.value?(a(),c("button",{key:0,type:"button",class:"mode-chip-x","aria-label":y("swarm"),onClick:Me[12]||(Me[12]=xe=>p("toggleSwarm"))},[M(se,{name:"close",size:"sm"})],8,kM)):A("",!0)],2)):A("",!0),e.status?(a(),c("span",{key:7,class:fe(["mode-chip",{on:Ut.value}])},[r("button",{type:"button",class:"mode-chip-main","aria-pressed":Ut.value,onClick:Me[13]||(Me[13]=xe=>p("toggleSupermoon"))},[M(se,{name:"moon-stars",size:"sm"}),r("span",null,d(l(f)("status.supermoonLabel")),1)],8,bM),Ut.value?(a(),c("button",{key:0,type:"button",class:"mode-chip-x","aria-label":y("supermoon"),onClick:Me[14]||(Me[14]=xe=>p("toggleSupermoon"))},[M(se,{name:"close",size:"sm"})],8,wM)):A("",!0)],2)):A("",!0)]),r("div",SM,[ct.value?(a(),c("button",{key:0,class:"compact-chip",onClick:Me[15]||(Me[15]=Re(xe=>p("compact"),["stop"]))},"/compact")):A("",!0),M(ot,{text:Wt.value},{default:H(()=>[e.status&&!e.hideContext?(a(),c("span",{key:0,class:"ctx-group",role:"img",tabindex:"0","aria-label":Wt.value},[M(R9,{pct:Xt.value},null,8,["pct"])],8,CM)):A("",!0)]),_:1},8,["text"]),e.status?(a(),c("span",{key:1,class:fe(["model-pill",{open:$t.value}]),role:"button",tabindex:"0",onClick:Re(kn,["stop"]),onKeydown:[En(kn,["enter"]),En(Re(kn,["prevent"]),["space"])]},[r("b",null,d(e.status.model),1),at.value?(a(),c("span",$M,d(at.value),1)):A("",!0),M(se,{class:"cv",name:"chevron-down",size:"sm"})],42,_M)):A("",!0),e.running?(a(),G(ot,{key:2,text:l(f)("composer.interruptTitle")},{default:H(()=>[r("button",{class:"stop","aria-label":l(f)("composer.interrupt"),onClick:Me[16]||(Me[16]=xe=>p("interrupt"))},[M(se,{name:"stop",size:"sm"})],8,MM)]),_:1},8,["text"])):A("",!0),r("button",{class:fe(["send",{"is-starting":e.starting}]),"aria-label":yn.value,disabled:e.starting,onClick:Me[17]||(Me[17]=xe=>In())},[e.starting?(a(),G(Dt,{key:0,size:"sm"})):(a(),G(se,{key:1,name:"send",size:"sm"}))],10,xM)]),$t.value&&e.status?(a(),c("div",{key:0,class:"model-dropdown",role:"menu",onClick:Me[19]||(Me[19]=Re(()=>{},["stop"]))},[Qs.value.length>0?(a(),c("div",IM,d(l(f)("status.starredModels")),1)):A("",!0),(a(!0),c(he,null,Pe(Qs.value,xe=>(a(),c("button",{key:xe.id,class:fe(["md-row",{"is-current":xe.id===e.status.modelId}]),role:"menuitem",onClick:F=>Rs(xe.id)},[r("span",TM,[xe.id===e.status.modelId?(a(),G(se,{key:0,name:"check",size:"sm"})):A("",!0)]),r("span",PM,d(xe.displayName??xe.model),1),r("span",EM,d(xe.provider),1),M(se,{class:"md-star",name:"star",size:"sm"})],10,AM))),128)),Qs.value.length>0?(a(),c("div",LM)):A("",!0),Nn.value.length>0?(a(),c("div",BM,d(ft.value),1)):A("",!0),(a(!0),c(he,null,Pe(Nn.value,xe=>(a(),c("button",{key:xe.id,class:fe(["md-row",{"is-current":xe.id===e.status.modelId}]),role:"menuitem",onClick:F=>Rs(xe.id)},[r("span",OM,[xe.id===e.status.modelId?(a(),G(se,{key:0,name:"check",size:"sm"})):A("",!0)]),r("span",DM,d(xe.displayName??xe.model),1),ls(xe.id)?(a(),G(se,{key:0,class:"md-star",name:"star",size:"sm"})):A("",!0)],10,RM))),128)),Nn.value.length>0?(a(),c("div",zM)):A("",!0),r("div",{class:fe(["md-thinking",{"is-readonly":Je.value}])},[r("span",FM,d(l(f)("status.thinkingLabel")),1),on.value==="unsupported"?(a(),c("span",NM,d(l(f)("status.modeNotSupported")),1)):(a(),c("div",{key:1,class:"effort-segments",role:"group","aria-label":l(f)("status.thinkingLabel")},[(a(!0),c(he,null,Pe(Jt.value,xe=>(a(),c("button",{key:xe,type:"button",class:fe(["effort-seg",{"is-active":xe===we.value}]),disabled:Je.value,onClick:F=>Ht(xe)},d(Qt(xe)),11,WM))),128))],8,qM))],2),Me[24]||(Me[24]=r("div",{class:"md-divider"},null,-1)),r("div",HM,d(l(f)("status.cacheNote")),1),Me[25]||(Me[25]=r("div",{class:"md-divider"},null,-1)),r("button",{class:"md-row md-row-more",role:"menuitem",onClick:Me[18]||(Me[18]=xe=>{An(),p("pickModel")})},[r("span",UM,d(l(f)("status.moreModels")),1)])])):A("",!0)],512)]),r("div",{class:fe(["drop-overlay",{show:l(He)}]),"aria-hidden":"true"},[r("div",VM,[M(se,{name:"file-plus",size:"lg"}),r("span",null,d(l(f)("composer.dropToAttach")),1)])],2)],34))}}),gd=Ee(jM,[["__scopeId","data-v-e7022649"]]),KM={key:0,class:"ui-card__head"},GM={class:"ui-card__body"},QM={key:1,class:"ui-card__foot"},YM=Ie({__name:"Card",props:{elevated:{type:Boolean,default:!1}},setup(e){return(t,n)=>(a(),c("div",{class:fe(["ui-card",{"is-elevated":e.elevated}])},[t.$slots.head?(a(),c("div",KM,[yt(t.$slots,"head",{},void 0,!0)])):A("",!0),r("div",GM,[yt(t.$slots,"default",{},void 0,!0)]),t.$slots.foot?(a(),c("div",QM,[yt(t.$slots,"foot",{},void 0,!0)])):A("",!0)],2))}}),Bl=Ee(YM,[["__scopeId","data-v-9c9f9a9a"]]),ZM={class:"goal-kicker"},XM={key:0,class:"goal-progress","aria-hidden":"true"},JM={class:"goal-full"},e6={key:0,class:"goal-criterion"},t6=["inert","aria-hidden"],n6={class:"goal-meta"},s6={key:0},o6={class:"goal-actions"},i6=Ie({__name:"GoalStrip",props:{goal:{},forceExpanded:{}},emits:["controlGoal"],setup(e,{emit:t}){const n=e,s=t,{t:o}=Ue(),{confirm:i}=go(),u=I(!1);Oe(()=>n.forceExpanded,()=>{n.forceExpanded!==void 0&&(u.value=!0)});const p=$(()=>{const x=n.goal.budget.tokenBudget;return!x||x<=0?0:Math.max(0,Math.min(100,Math.round(n.goal.tokensUsed/x*100)))});function f(x){switch(x){case"active":return o("status.goalStatusActive");case"paused":return o("status.goalStatusPaused");case"blocked":return o("status.goalStatusBlocked");case"complete":return o("status.goalStatusComplete")}}function v(x){const h=Math.max(0,Math.round(x/1e3)),m=Math.floor(h/60),_=h%60;return m<=0?`${_}s`:m<60?`${m}m ${_}s`:`${Math.floor(m/60)}h ${m%60}m`}async function w(){await i({title:o("status.goalCancel"),message:o("status.goalCancelConfirm"),confirmLabel:o("status.goalCancelConfirmYes"),cancelLabel:o("status.goalCancelConfirmNo"),variant:"danger"})&&s("controlGoal","cancel")}return(x,h)=>(a(),G(Bl,{class:fe(["goal-strip",{expanded:u.value}])},{head:H(()=>[r("button",{class:"goal-row",type:"button",onClick:h[0]||(h[0]=m=>u.value=!u.value)},[M(se,{class:"goal-icon",name:"target",size:"md"}),r("span",ZM,d(l(o)("status.goalLabel")),1),r("span",{class:fe(["goal-objective",{"expanded-hidden":u.value}])},d(e.goal.objective),3),M(Ot,{variant:e.goal.status==="active"?"success":e.goal.status==="blocked"?"danger":e.goal.status==="paused"?"warning":"neutral",size:"sm",class:"goal-status"},{default:H(()=>[re(d(f(e.goal.status)),1)]),_:1},8,["variant"]),e.goal.budget.tokenBudget!==null?(a(),c("span",XM,[r("span",{class:"goal-progress-fill",style:rt({width:`${p.value}%`})},null,4)])):A("",!0),M(se,{class:fe(["goal-chevron",{open:u.value}]),name:"chevron-right",size:"md"},null,8,["class"])])]),default:H(()=>[r("div",JM,d(e.goal.objective),1),e.goal.completionCriterion?(a(),c("div",e6,[r("span",null,d(l(o)("workspace.doneWhen")),1),r("p",null,d(e.goal.completionCriterion),1)])):A("",!0)]),foot:H(()=>[r("div",{class:"goal-footer",inert:!u.value,"aria-hidden":!u.value},[r("div",n6,[r("span",null,d(e.goal.turnsUsed)+" turns",1),r("span",null,d(l(ms)(e.goal.tokensUsed))+" tokens",1),r("span",null,d(v(e.goal.wallClockMs)),1),e.goal.budget.tokenBudget!==null?(a(),c("span",s6,d(p.value)+"% token budget",1)):A("",!0)]),r("div",o6,[e.goal.status==="active"?(a(),G(qe,{key:0,size:"sm",variant:"secondary",class:"goal-action",onClick:h[1]||(h[1]=Re(m=>s("controlGoal","pause"),["stop"]))},{default:H(()=>[M(se,{name:"pause",size:"md"}),r("span",null,d(l(o)("status.goalPause")),1)]),_:1})):A("",!0),e.goal.status==="paused"||e.goal.status==="blocked"?(a(),G(qe,{key:1,size:"sm",variant:"primary",class:"goal-action",onClick:h[2]||(h[2]=Re(m=>s("controlGoal","resume"),["stop"]))},{default:H(()=>[M(se,{name:"play",size:"md"}),r("span",null,d(l(o)("status.goalResume")),1)]),_:1})):A("",!0),M(qe,{size:"sm",variant:"danger-soft",class:"goal-action",onClick:Re(w,["stop"])},{default:H(()=>[M(se,{name:"close",size:"md"}),r("span",null,d(l(o)("status.goalCancel")),1)]),_:1})])],8,t6)]),_:1},8,["class"]))}}),a6=Ee(i6,[["__scopeId","data-v-9e444f61"]]),l6={class:"qh"},r6={class:"qtitle"},u6={key:0,class:"qstep"},c6={key:1,class:"qmin-peek"},d6={class:"qbody"},p6=["aria-label"],f6=["aria-selected","aria-label","onClick"],m6={class:"qstep-num"},v6={key:1,class:"qheader-chip"},h6={class:"qtext"},g6={class:"qopts"},y6=["onClick"],k6={class:"qopt-key"},b6={class:"qopt-glyph"},w6={key:0,class:"chk"},S6={key:1,class:"rad"},C6={class:"qopt-text"},_6={class:"qopt-label"},$6={key:0,class:"qopt-desc"},M6={class:"qopt-glyph"},x6={key:0,class:"chk"},I6={key:1,class:"rad"},A6={class:"qopt-label"},T6=["placeholder"],P6={class:"qfoot"},E6=Ie({__name:"QuestionCard",props:{question:{},busyKind:{}},emits:["answer","dismiss"],setup(e,{emit:t}){const n=e,{t:s}=Ue(),o=t,i=I(0),u=I(!1),p=$(()=>n.question.questions[i.value]),f=$(()=>n.question.questions.length);function v(){i.value>0&&i.value--}function w(){i.value=0&&ce0:Q.kind==="multiWithOther"?Q.optionIds.length>0||Q.otherText.trim().length>0:Q.kind==="other"?Q.text.trim().length>0:!0:!1}function m(){return h(p.value.id)}const _=I({});function y(ce){return ce.recommended===!0?!0:/\b(?:recommended|recommend)\b|推荐/.test(`${ce.label} ${ce.description??""}`.toLowerCase())}function g(){const ce={..._.value};let Q=!1;for(const ie of n.question.questions){if(ce[ie.id])continue;const te=ie.options.filter(y);te.length!==0&&(ce[ie.id]=ie.multiSelect?{kind:"multi",optionIds:te.map(ye=>ye.id)}:{kind:"single",optionId:te[0].id},Q=!0)}Q&&(_.value=ce)}Oe(()=>n.question.questionId,()=>{i.value=0,u.value=!1,_.value={},S.value={}}),Oe(()=>n.question,()=>{i.value>=n.question.questions.length&&(i.value=0),g()},{immediate:!0,deep:!0});function k(ce,Q){const ie=_.value[ce];if(ie&&ie.kind==="single"&&ie.optionId===Q){const te={..._.value};delete te[ce],_.value=te}else _.value={..._.value,[ce]:{kind:"single",optionId:Q}}}function T(ce,Q){const ie=_.value[ce],te=ie&&(ie.kind==="multi"||ie.kind==="multiWithOther")?ie.kind==="multi"?[...ie.optionIds]:[...ie.optionIds]:[],ye=te.indexOf(Q);ye>=0?te.splice(ye,1):te.push(Q);const _e=_.value[ce],Ce=_e&&_e.kind==="multiWithOther"?_e.otherText:"";Ce?_.value={..._.value,[ce]:{kind:"multiWithOther",optionIds:te,otherText:Ce}}:_.value={..._.value,[ce]:{kind:"multi",optionIds:te}}}const S=I({}),O=I(null);function D(ce){const Q=n.question.questions.find(te=>te.id===ce);if(!Q)return;const ie=S.value[ce]??"";if(Q.multiSelect){const te=_.value[ce],ye=te&&(te.kind==="multi"||te.kind==="multiWithOther")?te.kind==="multi"?[...te.optionIds]:[...te.optionIds]:[];_.value={..._.value,[ce]:{kind:"multiWithOther",optionIds:ye,otherText:ie}}}else _.value={..._.value,[ce]:{kind:"other",text:ie}}}function E(ce){D(ce),Ke(()=>O.value?.focus())}function B(ce,Q){const ie=_.value[ce];return ie?ie.kind==="single"?ie.optionId===Q:ie.kind==="multi"||ie.kind==="multiWithOther"?ie.optionIds.includes(Q):!1:!1}function q(ce){const Q=_.value[ce];return!!(Q&&(Q.kind==="other"||Q.kind==="multiWithOther"))}function V(){return n.question.questions.every(ce=>h(ce.id))}const b=$(()=>n.busyKind==="answer"),P=$(()=>n.busyKind==="dismiss"),L=$(()=>!!n.busyKind);function ne(){if(L.value||!V())return;const ce={answers:_.value,method:"click"};o("answer",n.question.questionId,ce)}function oe(){L.value||o("dismiss",n.question.questionId)}function ge(ce){const Q=(document.activeElement?.tagName??"").toLowerCase(),ie=Q==="input"||Q==="textarea";if(L.value)return;if(ce.key==="Enter"){if(ce.preventDefault(),u.value)return;i.value=1&&te<=9){ce.preventDefault();const ye=p.value,_e=te-1,Ce=ye.options[_e];Ce&&(ye.multiSelect?T(ye.id,Ce.id):k(ye.id,Ce.id))}}return ht(()=>document.addEventListener("keydown",ge)),kt(()=>document.removeEventListener("keydown",ge)),(ce,Q)=>(a(),G(Bl,{class:fe(["qcard",{minimized:u.value}])},gu({head:H(()=>[r("div",l6,[Q[5]||(Q[5]=r("span",{class:"qh-ic"},"?",-1)),r("span",r6,d(l(s)("question.title")),1),f.value>1&&!u.value?(a(),c("span",u6,d(l(s)("question.step",{current:i.value+1,total:f.value})),1)):A("",!0),u.value?(a(),c("span",c6,d(p.value.question),1)):A("",!0),M(nt,{class:"qmin",size:"sm",label:u.value?l(s)("question.expand"):l(s)("question.minimize"),onClick:Q[0]||(Q[0]=ie=>u.value=!u.value)},{default:H(()=>[u.value?(a(),G(se,{key:0,name:"chevron-up",size:"md"})):(a(),G(se,{key:1,name:"minus",size:"md"}))]),_:1},8,["label"])])]),_:2},[u.value?void 0:{name:"default",fn:H(()=>[r("div",d6,[f.value>1?(a(),c("div",{key:0,class:"qsteps",role:"tablist","aria-label":l(s)("question.step",{current:i.value+1,total:f.value})},[(a(!0),c(he,null,Pe(n.question.questions,(ie,te)=>(a(),c("button",{key:ie.id,type:"button",class:fe(["qstep-dot",{active:te===i.value,answered:h(ie.id)}]),"aria-selected":te===i.value,"aria-label":l(s)("question.step",{current:te+1,total:f.value}),onClick:ye=>x(te)},[r("span",m6,d(te+1),1)],10,f6))),128))],8,p6)):A("",!0),p.value.header?(a(),c("div",v6,[M(Ot,{variant:"neutral",size:"sm"},{default:H(()=>[re(d(p.value.header),1)]),_:1})])):A("",!0),r("div",h6,d(p.value.question),1),p.value.body?(a(),G(ci,{key:2,text:p.value.body,class:"qmdbody"},null,8,["text"])):A("",!0),r("div",g6,[(a(!0),c(he,null,Pe(p.value.options,(ie,te)=>(a(),c("label",{key:ie.id,class:fe(["qopt",{selected:B(p.value.id,ie.id)}]),onClick:Re(ye=>p.value.multiSelect?T(p.value.id,ie.id):k(p.value.id,ie.id),["prevent"])},[r("span",k6,d(te+1),1),r("span",b6,[p.value.multiSelect?(a(),c("span",w6,d(B(p.value.id,ie.id)?"■":"□"),1)):(a(),c("span",S6,d(B(p.value.id,ie.id)?"●":"○"),1))]),r("span",C6,[r("span",_6,d(ie.label),1),ie.description?(a(),c("span",$6,d(ie.description),1)):A("",!0)])],10,y6))),128)),p.value.allowOther?(a(),c("label",{key:0,class:fe(["qopt",{selected:q(p.value.id)}]),onClick:Q[4]||(Q[4]=Re(ie=>E(p.value.id),["prevent"]))},[Q[6]||(Q[6]=r("span",{class:"qopt-key"},null,-1)),r("span",M6,[p.value.multiSelect?(a(),c("span",x6,d(q(p.value.id)?"■":"□"),1)):(a(),c("span",I6,d(q(p.value.id)?"●":"○"),1))]),r("span",A6,d(p.value.otherLabel??l(s)("question.otherDefault")),1),gt(r("input",{ref_key:"otherInputEl",ref:O,"onUpdate:modelValue":Q[1]||(Q[1]=ie=>S.value[p.value.id]=ie),class:"other-input",type:"text",placeholder:p.value.otherLabel??l(s)("question.otherDefault"),onInput:Q[2]||(Q[2]=ie=>D(p.value.id)),onFocus:Q[3]||(Q[3]=ie=>D(p.value.id))},null,40,T6),[[qn,S.value[p.value.id]]])],2)):A("",!0)])])]),key:"0"},u.value?void 0:{name:"foot",fn:H(()=>[r("div",P6,[i.value[re(d(l(s)("question.nextQuestion")),1)]),_:1},8,["disabled"])):(a(),G(qe,{key:1,class:"qfoot-btn qfoot-main",size:"sm",variant:"primary",disabled:!V(),loading:b.value,onClick:ne},{default:H(()=>[re(d(l(s)("question.submit")),1)]),_:1},8,["disabled","loading"])),f.value>1?(a(),G(qe,{key:2,class:"qfoot-btn",size:"sm",variant:"secondary",disabled:i.value===0||L.value,onClick:v},{default:H(()=>[re(d(l(s)("question.back")),1)]),_:1},8,["disabled"])):A("",!0),M(qe,{class:"qfoot-btn",size:"sm",variant:"ghost",loading:P.value,disabled:L.value,onClick:oe},{default:H(()=>[re(d(l(s)("question.dismiss")),1)]),_:1},8,["loading","disabled"])])]),key:"1"}]),1032,["class"]))}}),L6=Ee(E6,[["__scopeId","data-v-2af45fec"]]),B6={class:"ah"},R6={class:"akind"},O6={class:"apath"},D6={class:"ah-path"},z6={key:1,class:"diff"},F6={class:"dg"},N6={class:"dc"},q6={key:2,class:"body-shell"},W6={class:"shell-cmd"},H6={key:0,class:"shell-cwd"},U6={key:1,class:"shell-danger"},V6={key:3,class:"body-file"},j6={class:"file-bar"},K6={class:"file-lang"},G6={class:"file-content"},Q6={class:"file-ln"},Y6={class:"file-text"},Z6={key:4,class:"body-chip"},X6={class:"chip-label"},J6={class:"chip-value"},ex={key:0,class:"chip-detail"},tx={key:5,class:"body-chip"},nx={key:0,class:"chip-label"},sx={class:"chip-value"},ox={key:6,class:"body-chip"},ix={class:"chip-label"},ax={class:"chip-value"},lx={key:0,class:"chip-detail"},rx={key:7,class:"body-chip"},ux={class:"chip-label"},cx={class:"chip-value"},dx={key:0,class:"chip-detail"},px={key:8,class:"body-todo"},fx={class:"todo-glyph"},mx={key:9,class:"body-plan"},vx={key:10,class:"body-generic"},hx={class:"gen-text"},gx={key:11,class:"feedback-wrap"},yx=["placeholder"],kx={class:"feedback-hint"},bx={key:0,class:"plan-actions"},wx={key:1,class:"abtn"},Sx=Ie({__name:"ApprovalCard",props:{block:{},agentName:{},busy:{type:Boolean}},emits:["decide"],setup(e,{emit:t}){const n=e,s=t,{t:o}=Ue(),i=$(()=>{const b=n.block;return b.kind!=="plan_review"?null:{plan:b.plan,path:b.path,options:b.options??[]}}),u=I(!1),p=["shell","diff","file","fileop","url","search","invocation","todo","plan_review","generic"];function f(){const b=p.includes(n.block.kind)?n.block.kind:"generic";return o(`approval.title.${b}`)}const v=I(!1),w=I(""),x=I(null);function h(){n.busy||(v.value=!0,w.value="",setTimeout(()=>x.value?.focus(),0))}function m(){if(n.busy)return;const b=w.value.trim();i.value?k("feedback",{decision:"rejected",selectedLabel:"Revise",feedback:b||void 0}):k("feedback",{decision:"rejected",feedback:b||void 0}),v.value=!1,w.value=""}function _(){v.value=!1,w.value=""}function y(b){b.key==="Enter"&&!b.shiftKey?(b.preventDefault(),m()):b.key==="Escape"&&(b.preventDefault(),_())}const g=I(null);Oe(()=>n.busy,b=>{b||(g.value=null)});function k(b,P){n.busy||(g.value=b,s("decide",P))}function T(){k("approve",{decision:"approved"})}function S(){k("approveSession",{decision:"approved",scope:"session"})}function O(){k("reject",{decision:"rejected"})}function D(){k("approvePlan",{decision:"approved"})}function E(b){k(`option:${b}`,{decision:"approved",selectedLabel:b})}function B(){n.busy||h()}function q(){k("rejectAndExit",{decision:"rejected",selectedLabel:"Reject and Exit"})}function V(b){const P=(document.activeElement?.tagName??"").toLowerCase();if(P==="input"||P==="textarea"||n.busy||u.value)return;const L=i.value;if(L){if(L.options.length===0){b.key==="1"?(b.preventDefault(),D()):b.key==="2"?(b.preventDefault(),B()):b.key==="3"&&(b.preventDefault(),q());return}b.key==="1"&&L.options[0]?(b.preventDefault(),E(L.options[0].label)):b.key==="2"&&L.options[1]?(b.preventDefault(),E(L.options[1].label)):b.key==="3"&&L.options[2]&&(b.preventDefault(),E(L.options[2].label));return}b.key==="1"?(b.preventDefault(),T()):b.key==="2"?(b.preventDefault(),S()):b.key==="3"?(b.preventDefault(),O()):b.key==="4"&&(b.preventDefault(),h())}return ht(()=>document.addEventListener("keydown",V)),kt(()=>document.removeEventListener("keydown",V)),(b,P)=>(a(),G(Bl,{class:fe(["appr",{minimized:u.value}])},gu({head:H(()=>[r("div",B6,[P[2]||(P[2]=r("span",{class:"ah-ic"},"!",-1)),r("span",R6,d(f()),1),r("span",O6,[e.block.kind==="diff"||e.block.kind==="file"||e.block.kind==="fileop"?(a(),c(he,{key:0},[re(d(e.block.path),1)],64)):e.block.kind==="shell"?(a(),c(he,{key:1},[re(d(e.block.command),1)],64)):e.block.kind==="url"?(a(),c(he,{key:2},[re(d(e.block.url),1)],64)):e.block.kind==="search"?(a(),c(he,{key:3},[re(d(e.block.query),1)],64)):e.block.kind==="invocation"?(a(),c(he,{key:4},[re(d(e.block.name),1)],64)):e.block.kind==="generic"?(a(),c(he,{key:5},[re(d(e.block.summary),1)],64)):A("",!0)]),e.agentName&&!u.value?(a(),G(Ot,{key:0,variant:"neutral",size:"sm"},{default:H(()=>[re(d(l(o)("approval.subagentBadge",{name:e.agentName})),1)]),_:1})):A("",!0),u.value?A("",!0):(a(),G(Ot,{key:1,variant:"warning",size:"sm",class:"aw"},{default:H(()=>[re(d(l(o)("approval.required")),1)]),_:1})),M(nt,{class:"amin",size:"sm",label:u.value?l(o)("question.expand"):l(o)("question.minimize"),onClick:P[0]||(P[0]=L=>u.value=!u.value)},{default:H(()=>[u.value?(a(),G(se,{key:0,name:"chevron-up",size:"md"})):(a(),G(se,{key:1,name:"minus",size:"md"}))]),_:1},8,["label"])])]),_:2},[u.value?void 0:{name:"default",fn:H(()=>[e.block.kind==="plan_review"&&e.block.path?(a(),G(ot,{key:0,text:e.block.path},{default:H(()=>[r("div",D6,d(e.block.path),1)]),_:1},8,["text"])):A("",!0),e.block.kind==="diff"?(a(),c("div",z6,[(a(!0),c(he,null,Pe(e.block.diff,(L,ne)=>(a(),c("div",{key:ne,class:fe(["dl",L.kind==="add"?"add":L.kind==="rem"?"del":""])},[r("span",F6,d(L.gutter),1),r("span",N6,d(L.text),1)],2))),128))])):e.block.kind==="shell"?(a(),c("div",q6,[r("div",W6,[P[3]||(P[3]=r("span",{class:"shell-dollar"},"$",-1)),re(" "+d(e.block.command),1)]),e.block.cwd?(a(),c("div",H6,"cwd: "+d(e.block.cwd),1)):A("",!0),e.block.danger?(a(),c("div",U6,d(l(o)("approval.danger",{detail:e.block.danger})),1)):A("",!0)])):e.block.kind==="file"?(a(),c("div",V6,[r("div",j6,[r("span",K6,d(e.block.language??""),1)]),r("div",G6,[(a(!0),c(he,null,Pe(e.block.content.split(`
+`),(L,ne)=>(a(),c("div",{key:ne,class:"file-line"},[r("span",Q6,d(ne+1),1),r("span",Y6,d(L),1)]))),128))])])):e.block.kind==="fileop"?(a(),c("div",Z6,[r("span",X6,d(e.block.op),1),r("span",J6,d(e.block.path),1),e.block.detail?(a(),c("span",ex,d(e.block.detail),1)):A("",!0)])):e.block.kind==="url"?(a(),c("div",tx,[e.block.method?(a(),c("span",nx,d(e.block.method),1)):A("",!0),r("span",sx,d(e.block.url),1)])):e.block.kind==="search"?(a(),c("div",ox,[r("span",ix,d(l(o)("approval.searchQueryLabel")),1),r("span",ax,d(e.block.query),1),e.block.scope?(a(),c("span",lx,d(l(o)("approval.searchScope",{scope:e.block.scope})),1)):A("",!0)])):e.block.kind==="invocation"?(a(),c("div",rx,[r("span",ux,d(e.block.kind2),1),r("span",cx,d(e.block.name),1),e.block.description?(a(),c("span",dx,d(e.block.description),1)):A("",!0)])):e.block.kind==="todo"?(a(),c("div",px,[(a(!0),c(he,null,Pe(e.block.items,(L,ne)=>(a(),c("div",{key:ne,class:"todo-item"},[r("span",fx,d(L.status==="done"||L.status==="completed"?"✓":"○"),1),r("span",{class:fe(["todo-title",{"todo-done":L.status==="done"||L.status==="completed"}])},d(L.title),3)]))),128))])):e.block.kind==="plan_review"?(a(),c("div",mx,[M(ci,{text:e.block.plan},null,8,["text"])])):(a(),c("div",vx,[r("span",hx,d(e.block.summary),1)])),v.value?(a(),c("div",gx,[gt(r("textarea",{ref_key:"feedbackRef",ref:x,"onUpdate:modelValue":P[1]||(P[1]=L=>w.value=L),class:"feedback-ta",placeholder:l(o)("approval.feedbackPlaceholder"),rows:"2",onKeydown:y},null,40,yx),[[qn,w.value]]),r("div",kx,d(l(o)("approval.feedbackHint")),1)])):A("",!0)]),key:"0"},u.value?void 0:{name:"foot",fn:H(()=>[i.value?(a(),c("div",bx,[i.value.options.length>0?(a(!0),c(he,{key:0},Pe(i.value.options,(L,ne)=>(a(),G(ot,{key:ne,text:L.description},{default:H(()=>[M(qe,{class:"kbtn",size:"sm",variant:"primary",loading:g.value===`option:${L.label}`,disabled:e.busy,onClick:oe=>E(L.label)},{default:H(()=>[re(d(L.label),1),M(_s,{class:"k",keys:[String(ne+1)]},null,8,["keys"])]),_:2},1032,["loading","disabled","onClick"])]),_:2},1032,["text"]))),128)):(a(),G(qe,{key:1,class:"kbtn",size:"sm",variant:"primary",loading:g.value==="approvePlan",disabled:e.busy,onClick:D},{default:H(()=>[re(d(l(o)("approval.approvePlan")),1),M(_s,{class:"k",keys:["1"]})]),_:1},8,["loading","disabled"])),M(qe,{class:"kbtn",size:"sm",variant:"secondary",disabled:e.busy,onClick:B},{default:H(()=>[re(d(l(o)("approval.revise")),1),i.value.options.length===0?(a(),G(_s,{key:0,class:"k",keys:["2"]})):A("",!0)]),_:1},8,["disabled"]),M(qe,{class:"kbtn",size:"sm",variant:"danger-soft",loading:g.value==="rejectAndExit",disabled:e.busy,onClick:q},{default:H(()=>[re(d(l(o)("approval.rejectAndExit")),1),i.value.options.length===0?(a(),G(_s,{key:0,class:"k",keys:["3"]})):A("",!0)]),_:1},8,["loading","disabled"])])):(a(),c("div",wx,[M(qe,{class:"kbtn",size:"sm",variant:"primary",loading:g.value==="approve",disabled:e.busy,onClick:T},{default:H(()=>[re(d(l(o)("approval.approve")),1),M(_s,{class:"k",keys:["1"]})]),_:1},8,["loading","disabled"]),M(qe,{class:"kbtn",size:"sm",variant:"secondary",loading:g.value==="approveSession",disabled:e.busy,onClick:S},{default:H(()=>[re(d(l(o)("approval.approveSession")),1),M(_s,{class:"k",keys:["2"]})]),_:1},8,["loading","disabled"]),M(qe,{class:"kbtn",size:"sm",variant:"secondary",loading:g.value==="reject",disabled:e.busy,onClick:O},{default:H(()=>[re(d(l(o)("approval.reject")),1),M(_s,{class:"k",keys:["3"]})]),_:1},8,["loading","disabled"]),M(qe,{class:"kbtn",size:"sm",variant:"secondary",disabled:e.busy,onClick:h},{default:H(()=>[re(d(l(o)("approval.feedback")),1),M(_s,{class:"k",keys:["4"]})]),_:1},8,["disabled"])]))]),key:"1"}]),1032,["class"]))}}),Cx=Ee(Sx,[["__scopeId","data-v-458a9d7d"]]),_x=["recent","running","done","all"];function $x(e,t){switch(t){case"running":return e.filter(n=>n.state==="run");case"done":return e.filter(n=>n.state==="done");case"recent":return e.filter(n=>n.state==="run"||n.state==="done");case"all":return[...e]}}const Mx=["aria-selected","onClick"],xx=Ie({__name:"SegmentedControl",props:{modelValue:{},options:{},size:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=t;return(s,o)=>(a(),c("div",{class:fe(["ui-seg",`ui-seg--${e.size??"md"}`]),role:"tablist"},[(a(!0),c(he,null,Pe(e.options,i=>(a(),c("button",{key:i.value,class:fe(["ui-seg__item",{"is-on":i.value===e.modelValue}]),type:"button",role:"tab","aria-selected":i.value===e.modelValue,onClick:u=>n("update:modelValue",i.value)},d(i.label),11,Mx))),128))],2))}}),cn=Ee(xx,[["__scopeId","data-v-d1aaccd7"]]),Ix=Ie({__name:"StatusGlyph",props:{status:{}},setup(e){const t=e,n={pending:"○",run:"●",done:"✓",fail:"✗"};return(s,o)=>(a(),c("span",{class:fe(["status-glyph",`s-${t.status}`]),"aria-hidden":"true"},d(n[t.status]),3))}}),Ai=Ee(Ix,[["__scopeId","data-v-f595d935"]]),Ax={class:"tp-head"},Tx={class:"tp-title"},Px={class:"tp-count"},Ex={key:0,class:"tp-filter"},Lx={key:1,class:"tp-body"},Bx={class:"tp-list-col"},Rx={key:0,class:"tp-empty"},Ox=["role","onClick"],Dx={class:"tp-name"},zx={class:"tp-time"},Fx=["onClick"],Nx={key:0,class:"tp-detail"},qx={key:0,class:"tp-codebox"},Wx=["onClick"],Hx={class:"tp-pre"},Ux={class:"tp-cmd"},Vx={key:1,class:"tp-codebox"},jx=["onClick"],Kx={class:"tp-pre"},Gx={class:"tp-main tp-detail-head"},Qx={class:"tp-name"},Yx={class:"tp-time"},Zx={key:0,class:"tp-codebox"},Xx={class:"tp-pre"},Jx={class:"tp-cmd"},e7={key:1,class:"tp-codebox"},t7={class:"tp-pre"},n7={key:2,class:"tp-detail-empty"},s7={key:1,class:"tp-detail-empty"},o7={key:2,class:"tp-body tp-grid"},i7={key:0,class:"tp-empty"},a7=["onClick"],l7={class:"tp-card-line"},r7={class:"tp-card-name"},u7={class:"tp-card-line tp-card-meta"},c7=["onClick"],d7={key:1,class:"tp-time"},p7=Ie({__name:"TasksPane",props:{tasks:{},variant:{}},emits:["cancel","open"],setup(e,{emit:t}){const n=e,s=t,{t:o}=Ue(),i={recent:"filterRecent",running:"filterRunning",done:"filterDone",all:"filterAll"},u={recent:"emptyRecent",running:"emptyRunning",done:"emptyDone",all:"emptyTasks"},p=I("recent"),f=I(null),v=$(()=>n.tasks.find(q=>q.id===f.value)??null),w=Bn(new Set),x=Bn(new Set),h=Bn(new Set),m=I(null),_=$(()=>n.variant==="todos"?n.tasks:$x(n.tasks,p.value)),y=$(()=>_x.map(q=>({value:q,label:o(`tasks.${i[q]}`)}))),g=$(()=>n.variant==="todos"?"tasks.emptyTasks":`tasks.${u[p.value]}`);function k(q){return!!(q.output&&q.output.length>0||q.meta)}function T(q){if(k(q)){if(n.variant==="todos"){w.has(q.id)?w.delete(q.id):w.add(q.id);return}f.value=q.id,Ke(()=>m.value?.scrollIntoView({block:"nearest"}))}}function S(q){return q==="run"||q==="done"||q==="fail"?q:"pending"}function O(q){p.value=q}async function D(q,V,b){await un(q)&&(b.add(V),setTimeout(()=>b.delete(V),1500))}async function E(q){q.meta&&await D(q.meta,q.id,x)}async function B(q){const V=q.output?.join(`
+`)??"";V&&await D(V,q.id,h)}return(q,V)=>(a(),c("div",{class:fe(["taskspane",`tp-${e.variant}`])},[r("div",Ax,[r("span",Tx,d(l(o)("tasks.tag")),1),r("span",Px,d(_.value.length),1)]),e.variant!=="todos"?(a(),c("div",Ex,[M(cn,{"model-value":p.value,options:y.value,size:"sm","onUpdate:modelValue":O},null,8,["model-value","options"])])):A("",!0),e.variant!=="subagent"?(a(),c("div",Lx,[r("div",Bx,[_.value.length===0?(a(),c("div",Rx,d(l(o)(g.value)),1)):(a(!0),c(he,{key:1},Pe(_.value,b=>(a(),c("div",{key:b.id,class:fe(["tp-row",{done:b.state==="done",fail:b.state==="fail",expandable:k(b),selected:b.id===f.value}])},[r("div",{class:"tp-main",role:k(b)?"button":void 0,onClick:P=>T(b)},[M(Ai,{status:S(b.state)},null,8,["status"]),r("span",Dx,d(b.name),1),M(Ot,{variant:"neutral",size:"sm"},{default:H(()=>[re(d(b.kind),1)]),_:2},1024),r("span",zx,d(b.timing),1),b.state==="run"?(a(),c("button",{key:0,class:"tp-stop",onClick:Re(P=>s("cancel",b.id),["stop"])},d(l(o)("tasks.stop")),9,Fx)):A("",!0),k(b)?(a(),G(se,{key:1,class:fe(["tp-chevron",{open:e.variant==="todos"&&w.has(b.id)}]),name:"chevron-right",size:"sm"},null,8,["class"])):A("",!0)],8,Ox),e.variant==="todos"&&w.has(b.id)&&k(b)?(a(),c("div",Nx,[b.meta?(a(),c("div",qx,[r("button",{class:fe(["tp-copy",{copied:x.has(b.id)}]),onClick:Re(P=>E(b),["stop"])},d(x.has(b.id)?"已复制":"复制"),11,Wx),r("pre",Hx,[r("code",null,[r("span",Ux,d(b.meta),1)])])])):A("",!0),b.output&&b.output.length>0?(a(),c("div",Vx,[r("button",{class:fe(["tp-copy",{copied:h.has(b.id)}]),onClick:Re(P=>B(b),["stop"])},d(h.has(b.id)?"已复制":"复制"),11,jx),r("pre",Kx,[r("code",null,[V[2]||(V[2]=re(`
+ `,-1)),(a(!0),c(he,null,Pe(b.output,(P,L)=>(a(),c("span",{key:L,class:"tp-line"},d(P),1))),128)),V[3]||(V[3]=re(`
+ `,-1))])])])):A("",!0)])):A("",!0)],2))),128))]),e.variant==="bash"?(a(),c("div",{key:0,ref_key:"detailColRef",ref:m,class:"tp-detail-col"},[v.value?(a(),c(he,{key:0},[r("div",Gx,[M(Ai,{status:S(v.value.state)},null,8,["status"]),r("span",Qx,d(v.value.name),1),M(Ot,{variant:"neutral",size:"sm"},{default:H(()=>[re(d(v.value.kind),1)]),_:1}),r("span",Yx,d(v.value.timing),1)]),v.value.meta?(a(),c("div",Zx,[r("button",{class:fe(["tp-copy",{copied:x.has(v.value.id)}]),onClick:V[0]||(V[0]=Re(b=>E(v.value),["stop"]))},d(x.has(v.value.id)?"已复制":"复制"),3),r("pre",Xx,[r("code",null,[r("span",Jx,d(v.value.meta),1)])])])):A("",!0),v.value.output&&v.value.output.length>0?(a(),c("div",e7,[r("button",{class:fe(["tp-copy",{copied:h.has(v.value.id)}]),onClick:V[1]||(V[1]=Re(b=>B(v.value),["stop"]))},d(h.has(v.value.id)?"已复制":"复制"),3),r("pre",t7,[r("code",null,[V[4]||(V[4]=re(`
+ `,-1)),(a(!0),c(he,null,Pe(v.value.output,(b,P)=>(a(),c("span",{key:P,class:"tp-line"},d(b),1))),128)),V[5]||(V[5]=re(`
+ `,-1))])])])):A("",!0),!v.value.meta&&!(v.value.output&&v.value.output.length>0)?(a(),c("div",n7,d(l(o)("tasks.noOutput")),1)):A("",!0)],64)):(a(),c("div",s7,d(l(o)("tasks.detailPlaceholder")),1))],512)):A("",!0)])):A("",!0),e.variant==="subagent"?(a(),c("div",o7,[_.value.length===0?(a(),c("div",i7,d(l(o)(g.value)),1)):(a(!0),c(he,{key:1},Pe(_.value,b=>(a(),c("div",{key:b.id,class:fe(["tp-card",{done:b.state==="done",fail:b.state==="fail"}]),role:"button",onClick:P=>s("open",b.id)},[r("span",l7,[M(Ai,{status:S(b.state)},null,8,["status"]),r("span",r7,d(b.name),1)]),r("span",u7,[M(Ot,{variant:"neutral",size:"sm"},{default:H(()=>[re(d(b.kind),1)]),_:2},1024),b.state==="run"?(a(),c("button",{key:0,class:"tp-stop",onClick:Re(P=>s("cancel",b.id),["stop"])},d(l(o)("tasks.stop")),9,c7)):(a(),c("span",d7,d(b.timing),1))])],10,a7))),128))])):A("",!0)],2))}}),su=Ee(p7,[["__scopeId","data-v-30ebee08"]]),f7={class:"todo-card"},m7={key:0,class:"tc-empty"},v7={key:1,class:"tc-progress"},h7={class:"tc-name"},g7=Ie({__name:"TodoCard",props:{todos:{},doneCount:{}},setup(e){const t=e,{t:n}=Ue(),s=$(()=>t.doneCount??t.todos.filter(i=>i.status==="done").length);function o(i){return i==="in_progress"?"run":i}return(i,u)=>(a(),c("div",f7,[t.todos.length===0?(a(),c("div",m7,[M(se,{name:"check-list",size:"md",class:"tc-empty-ico","aria-hidden":"true"}),r("span",null,d(l(n)("tasks.emptyTodo")),1)])):(a(),c("div",v7,[M(se,{name:"check-list",size:"sm",class:"tc-progress-ico","aria-hidden":"true"}),r("span",null,d(l(n)("tasks.todoProgress",{done:s.value,total:t.todos.length})),1)])),(a(!0),c(he,null,Pe(t.todos,(p,f)=>(a(),c("div",{key:f,class:fe(["tc-row",`s-${p.status}`])},[M(Ai,{status:o(p.status)},null,8,["status"]),r("span",h7,d(p.title),1)],2))),128))]))}}),y7=Ee(g7,[["__scopeId","data-v-4f8e45d2"]]),k7={class:"terminal-panel"},b7={key:0,class:"term-state"},w7={key:1,class:"term-state"},S7={class:"term-toolbar"},C7=["aria-label"],_7=["aria-selected","onClick"],$7={class:"term-tab-label"},M7={key:0,class:"term-error",role:"alert"},x7={key:1,class:"term-exit"},I7={class:"term-input-row"},A7=["disabled","placeholder"],T7=Ie({__name:"TerminalPanel",props:{sessionId:{},store:{}},setup(e){const t=e,{t:n}=Ue(),s=Te(),o=I(""),i=I(!1),u=I(new Set),p=I(null),f=I(null),v=$(()=>t.store.terminals.value),w=$(()=>t.store.active.value),x=$(()=>t.store.activeLines.value),h=$(()=>t.store.loading.value),m=$(()=>t.store.error.value),_=$(()=>{const L=w.value?.exitCode;return L==null?"?":String(L)});let y=0;async function g(){const L=++y;if(!t.sessionId){t.store.setSession(void 0);return}t.store.setSession(t.sessionId),t.store.setLoading(!0),t.store.setError(null);try{const ne=await s.listTerminals(t.sessionId);if(L!==y)return;t.store.syncTerminals(ne);const oe=t.store.terminals.value[0];oe&&(t.store.setActive(oe.id),t.store.attach(oe.id))}catch(ne){if(L!==y)return;t.store.setError(O(ne)??n("terminal.listFailed"))}finally{L===y&&t.store.setLoading(!1)}}async function k(){if(!(!t.sessionId||i.value)){i.value=!0,t.store.setError(null);try{const L=await s.createTerminal(t.sessionId,{cols:Yu,rows:Zu});t.store.upsertTerminal(L),t.store.setActive(L.id),t.store.attach(L.id),await Ke(),b()}catch(L){t.store.setError(O(L)??n("terminal.createFailed"))}finally{i.value=!1}}}async function T(L){if(!(!t.sessionId||u.value.has(L))){u.value=new Set(u.value).add(L),t.store.setError(null);try{await s.closeTerminal(t.sessionId,L),t.store.detach(L),t.store.removeTerminal(L)}catch(ne){t.store.setError(O(ne)??n("terminal.closeFailed"))}finally{const ne=new Set(u.value);ne.delete(L),u.value=ne}}}function S(L){t.store.setActive(L),t.store.attach(L),b()}function O(L){return L instanceof Error&&L.message?L.message:null}let D=-1,E="";function B(){const L=w.value;if(!L||L.status==="exited")return;const ne=o.value;ne.trim().length!==0&&(t.store.submitInput(L.id,ne),o.value="",D=-1,b())}function q(){const L=w.value?.history??[];if(L.length===0)return;if(D===-1)E=o.value,D=L.length-1;else if(D>0)D-=1;else return;const ne=L[D];ne!==void 0&&(o.value=ne)}function V(){const L=w.value?.history??[];if(D!==-1)if(D{f.value?.focus()})}function P(){const L=p.value;if(!L)return;L.scrollHeight-L.scrollTop-L.clientHeight<40&&(L.scrollTop=L.scrollHeight)}return Oe(()=>t.store.activeLines.value,P),Oe(()=>t.sessionId,()=>{g()}),ht(()=>{g()}),(L,ne)=>(a(),c("div",k7,[h.value?(a(),c("div",b7,[M(Dt,{size:"sm"}),r("span",null,d(l(n)("terminal.loading")),1)])):v.value.length===0?(a(),c("div",w7,[r("span",null,d(l(n)("terminal.empty")),1),M(qe,{variant:"secondary",size:"sm",loading:i.value,onClick:ne[0]||(ne[0]=oe=>k())},{default:H(()=>[re(d(l(n)("terminal.newTerminal")),1)]),_:1},8,["loading"])])):(a(),c(he,{key:2},[r("div",S7,[v.value.length>1?(a(),c("div",{key:0,class:"term-tabs",role:"tablist","aria-label":l(n)("terminal.dockTerminal")},[(a(!0),c(he,null,Pe(v.value,(oe,ge)=>(a(),c("button",{key:oe.id,class:fe(["term-tab",{active:oe.id===t.store.activeId.value}]),type:"button",role:"tab","aria-selected":oe.id===t.store.activeId.value,onClick:ce=>S(oe.id)},[M(Ro,{status:oe.status},null,8,["status"]),r("span",$7,"#"+d(ge+1),1),M(nt,{size:"sm",label:l(n)("terminal.closeTerminal"),disabled:u.value.has(oe.id),onClick:Re(ce=>T(oe.id),["stop"])},{default:H(()=>[M(se,{name:"close",size:"sm"})]),_:1},8,["label","disabled","onClick"])],10,_7))),128))],8,C7)):A("",!0),M(nt,{class:"term-add",label:l(n)("terminal.newTerminal"),disabled:i.value,onClick:ne[1]||(ne[1]=oe=>k())},{default:H(()=>[M(se,{name:"plus",size:"sm"})]),_:1},8,["label","disabled"])]),m.value?(a(),c("div",M7,d(m.value),1)):A("",!0),w.value?.status==="exited"?(a(),c("div",x7,d(l(n)("terminal.exited",{code:_.value})),1)):A("",!0),w.value?(a(),c("pre",{key:2,ref_key:"preRef",ref:p,class:"term-output"},d(x.value),513)):A("",!0),r("div",I7,[ne[6]||(ne[6]=r("span",{class:"term-prompt"},"$",-1)),gt(r("input",{ref_key:"inputRef",ref:f,"onUpdate:modelValue":ne[2]||(ne[2]=oe=>o.value=oe),class:"term-input",disabled:!w.value||w.value.status==="exited",placeholder:l(n)("terminal.inputPlaceholder"),onKeydown:[ne[3]||(ne[3]=En(Re(oe=>B(),["prevent"]),["enter"])),ne[4]||(ne[4]=En(Re(oe=>q(),["prevent"]),["up"])),ne[5]||(ne[5]=En(Re(oe=>V(),["prevent"]),["down"]))]},null,40,A7),[[qn,o.value]])])],64))]))}}),P7=Ee(T7,[["__scopeId","data-v-4d134005"]]);function E7(e){const t=["cancel"];return e==="active"?t.unshift("pause"):(e==="paused"||e==="blocked")&&t.unshift("resume"),t}function L7(e){const t=Math.max(0,Math.round(e/1e3)),n=Math.floor(t/60),s=t%60;return n<=0?`${s}s`:n<60?`${n}m ${s}s`:`${Math.floor(n/60)}h ${n%60}m`}const B7={class:"ui-empty"},R7={key:0,class:"ui-empty__icon","aria-hidden":"true"},O7={key:1,class:"ui-empty__title"},D7={key:2,class:"ui-empty__hint"},z7=Ie({__name:"EmptyState",props:{title:{},hint:{}},setup(e){return(t,n)=>(a(),c("div",B7,[t.$slots.icon?(a(),c("span",R7,[yt(t.$slots,"icon",{},void 0,!0)])):A("",!0),e.title?(a(),c("div",O7,d(e.title),1)):A("",!0),e.hint?(a(),c("div",D7,d(e.hint),1)):A("",!0),yt(t.$slots,"default",{},void 0,!0)]))}}),Qo=Ee(z7,[["__scopeId","data-v-38e00944"]]),F7={class:"goal-panel"},N7={key:0,class:"gp-head"},q7={class:"gp-title-row"},W7={class:"gp-kicker"},H7=["title"],U7=["title"],V7={class:"gp-actions"},j7={key:0,class:"gp-criterion"},K7={class:"gp-criterion-label"},G7={class:"gp-criterion-text"},Q7=Ie({__name:"GoalPanel",props:{goal:{}},emits:["controlGoal"],setup(e,{emit:t}){const n=t,{t:s}=Ue(),{confirm:o}=go();function i(f){switch(f){case"active":return s("status.goalStatusActive");case"paused":return s("status.goalStatusPaused");case"blocked":return s("status.goalStatusBlocked");case"complete":return s("status.goalStatusComplete")}}function u(f){switch(f){case"active":return"success";case"blocked":return"danger";case"paused":return"warning";case"complete":return"neutral"}}async function p(){await o({title:s("status.goalCancel"),message:s("status.goalCancelConfirm"),confirmLabel:s("status.goalCancelConfirmYes"),cancelLabel:s("status.goalCancelConfirmNo"),variant:"danger"})&&n("controlGoal","cancel")}return(f,v)=>(a(),c("div",F7,[e.goal?(a(),c("div",N7,[r("div",q7,[M(se,{class:"gp-icon",name:"target",size:"md"}),r("span",W7,d(l(s)("status.goalLabel")),1),r("span",{class:"gp-objective",title:e.goal.objective},d(e.goal.objective),9,H7),M(Ot,{variant:u(e.goal.status),size:"sm",class:"gp-status"},{default:H(()=>[re(d(i(e.goal.status)),1)]),_:1},8,["variant"]),r("span",{class:"gp-elapsed",title:`${e.goal.wallClockMs} ms`},[M(se,{name:"clock",size:"sm"}),re(" "+d(l(L7)(e.goal.wallClockMs)),1)],8,U7),r("div",V7,[(a(!0),c(he,null,Pe(l(E7)(e.goal.status),w=>(a(),G(nt,{key:w,size:"md",label:l(s)(`status.goal${w==="resume"?"Resume":w==="pause"?"Pause":"Cancel"}`),class:"gp-action",onClick:x=>w==="cancel"?p():n("controlGoal",w)},{default:H(()=>[M(se,{name:w==="resume"?"play":w==="pause"?"pause":"close"},null,8,["name"])]),_:2},1032,["label","onClick"]))),128))])]),e.goal.completionCriterion?(a(),c("div",j7,[r("span",K7,d(l(s)("workspace.doneWhen")),1),r("p",G7,d(e.goal.completionCriterion),1)])):A("",!0)])):(a(),G(Qo,{key:1,title:l(s)("status.goalEmptyTitle"),hint:l(s)("status.goalEmptyHint")},{icon:H(()=>[M(se,{name:"target"})]),_:1},8,["title","hint"]))]))}}),Y7=Ee(Q7,[["__scopeId","data-v-d3a415b3"]]);function Z7(e){return typeof e=="string"&&e.toLowerCase()==="exitplanmode"}function X7(e){for(let t=e.length-1;t>=0;t--){const n=e[t]?.tools;if(!(n===void 0||n.length===0)){for(let s=n.length-1;s>=0;s--)if(Z7(n[s]?.name))return n[s].id}}}function J7(e,t,n,s,o){return n!==null?{kind:"plan",plan:n}:t==="loading"||e!==void 0&&t==="idle"?{kind:"loading"}:{kind:"empty",armed:s||o}}const eI={class:"plan-panel"},tI={key:0,class:"pp-loading",role:"status"},nI={class:"pp-plan-wrap"},sI={key:0,class:"pp-path"},oI={class:"pp-plan"},iI={key:0,class:"pp-review"},aI={class:"pp-state"},lI={key:0,class:"pp-option"},rI={key:1,class:"pp-feedback"},uI=Ie({__name:"PlanPanel",props:{sessionId:{},toolCallId:{},planMode:{type:Boolean,default:!1},planArmed:{type:Boolean,default:!1}},setup(e){const t=e,{t:n}=Ue(),s=I("idle"),o=I(null);let i=0;async function u(){const v=t.sessionId,w=t.toolCallId,x=++i;if(o.value=null,!v||!w){s.value="settled";return}s.value="loading";const h=await Zc(v,w);x===i&&(o.value=h,s.value="settled")}Oe(()=>[t.sessionId,t.toolCallId],u,{immediate:!0});function p(v){switch(v){case"approved":return n("tools.plan.approved");case"rejected":return n("tools.plan.rejected");case"cancelled":return n("tools.plan.cancelled");case"pending":return n("tools.plan.pending")}}const f=$(()=>J7(t.toolCallId,s.value,o.value,t.planMode,t.planArmed));return(v,w)=>(a(),c("div",eI,[f.value.kind==="loading"?(a(),c("div",tI,[M(Dt,{size:"sm"}),r("span",null,d(l(n)("tools.plan.loading")),1)])):f.value.kind==="plan"?(a(),c(he,{key:1},[r("div",nI,[f.value.plan.path?(a(),c("p",sI,d(f.value.plan.path),1)):A("",!0),r("pre",oI,d(f.value.plan.plan),1)]),f.value.plan.review?(a(),c("div",iI,[r("span",aI,d(p(f.value.plan.review.state)),1),f.value.plan.review.selectedOption?(a(),c("span",lI,d(f.value.plan.review.selectedOption),1)):A("",!0),f.value.plan.review.feedback?(a(),c("span",rI," “"+d(f.value.plan.review.feedback)+"” ",1)):A("",!0)])):A("",!0)],64)):(a(),G(Qo,{key:2,title:f.value.armed?l(n)("status.planEmptyArmed"):l(n)("status.planEmptyIdle")},{icon:H(()=>[M(se,{name:"file-edit"})]),_:1},8,["title"]))]))}}),cI=Ee(uI,[["__scopeId","data-v-9073f2b6"]]),dI={class:"dock-work-head"},pI={key:0,class:"dock-work-tab static"},fI={key:1,class:"dock-work-tab static"},mI={key:2,class:"dock-work-tab static"},vI={key:3,class:"dock-work-tab static"},hI={key:4,class:"dock-work-tab static"},gI={key:5,class:"dock-work-tab static"},yI={class:"dock-work-body"},kI={class:"dw-count"},bI={class:"dw-count"},wI={class:"dw-count"},SI={key:0,class:"dw-count"},CI=Ie({__name:"ChatDock",props:{sessionId:{},running:{type:Boolean},starting:{type:Boolean},queued:{},searchFiles:{type:Function},uploadImage:{type:Function},status:{},thinking:{},planMode:{type:Boolean},planArmed:{type:Boolean},swarmMode:{type:Boolean},supermoonMode:{type:Boolean},goalMode:{type:Boolean},activationBadges:{},models:{},starredIds:{},skills:{},goal:{},goalExpandSignal:{},planToolCallId:{},dockPanel:{},bashTasks:{},subagentTasks:{},bashRunning:{},subagentRunning:{},todoDoneCount:{},hasDockWork:{type:Boolean},todos:{},pendingQuestion:{},questionBusyKind:{},pendingApproval:{},approvalBusy:{type:Boolean},terminal:{},mobile:{type:Boolean}},emits:["submit","steer","command","interrupt","setPermission","setThinking","togglePlan","toggleSwarm","toggleSupermoon","toggleGoal","dismissPlan","controlGoal","focusGoal","compact","pickModel","selectModel","answer","dismiss","approval","cancelTask","toggle-dock-panel","close-dock-panel","openAgent"],setup(e,{expose:t,emit:n}){const s=e,o=n,{t:i}=Ue(),u=$(()=>s.terminal!==void 0&&s.sessionId!==void 0),p=$(()=>s.terminal?.terminals.value.length??0),f=$(()=>s.goal!==null&&s.goal!==void 0&&s.goal.status!=="complete"||s.goalMode===!0),v=$(()=>s.planMode===!0||s.planArmed===!0),w=$(()=>s.planMode?i("status.planModeOn"):s.planArmed?i("status.planArmed"):""),x=I(null),h=I(null),m=I(null),_=I(null);function y(D){return x.value?(x.value.loadForEdit(D),!0):!1}function g(D){x.value?.loadAttachmentsForEdit(D)}function k(){x.value?.focus()}function T(D){if(!s.dockPanel)return;const E=D.target;E&&(h.value?.contains(E)||m.value?.contains(E)||o("close-dock-panel"))}Oe(()=>s.dockPanel,D=>{typeof document>"u"||(document.removeEventListener("mousedown",T,!0),D&&document.addEventListener("mousedown",T,!0))},{immediate:!0});let S=null;function O(){const D=_.value?.offsetHeight??0;document.documentElement.style.setProperty("--dock-h",`${D}px`)}return ht(()=>{typeof ResizeObserver!="function"||!_.value||(S=new ResizeObserver(O),S.observe(_.value),O())}),kt(()=>{typeof document<"u"&&document.removeEventListener("mousedown",T,!0),S?.disconnect(),S=null}),t({loadForEdit:y,loadAttachmentsForEdit:g,focus:k}),(D,E)=>(a(),c("div",{ref_key:"dockRef",ref:_,class:fe(["chat-dock",[e.mobile?"align-mobile":"align-center",{"has-approval":!!e.pendingApproval}]]),onClick:E[30]||(E[30]=Re(()=>{},["stop"]))},[M(Yo,{name:"dock-panel"},{default:H(()=>[e.dockPanel?(a(),c("div",{key:0,ref_key:"workPanelRef",ref:h,class:"dock-work-panel",onClick:E[4]||(E[4]=Re(()=>{},["stop"]))},[r("div",dI,[e.dockPanel==="bash"?(a(),c("span",pI,d(l(i)("tasks.dockBash"))+" · "+d(e.bashRunning)+" "+d(l(i)("tasks.running")),1)):e.dockPanel==="subagent"?(a(),c("span",fI,d(l(i)("tasks.dockSubagent"))+" · "+d(e.subagentRunning)+" "+d(l(i)("tasks.running")),1)):e.dockPanel==="todos"?(a(),c("span",mI,d(l(i)("tasks.dockTodos"))+" · "+d(e.todoDoneCount)+"/"+d(e.todos?.length??0),1)):e.dockPanel==="terminal"?(a(),c("span",vI,d(l(i)("terminal.dockTerminal"))+" · "+d(p.value),1)):e.dockPanel==="goal"?(a(),c("span",hI,[re(d(l(i)("status.goalLabel")),1),e.goal?(a(),c(he,{key:0},[re(" · "+d(e.goal.objective),1)],64)):A("",!0)])):e.dockPanel==="plan"?(a(),c("span",gI,[re(d(l(i)("status.planLabel")),1),w.value?(a(),c(he,{key:0},[re(" · "+d(w.value),1)],64)):A("",!0)])):A("",!0)]),r("div",yI,[e.dockPanel==="bash"?(a(),G(su,{key:0,variant:"bash",tasks:e.bashTasks,onCancel:E[0]||(E[0]=B=>o("cancelTask",B))},null,8,["tasks"])):e.dockPanel==="subagent"?(a(),G(su,{key:1,variant:"subagent",tasks:e.subagentTasks,onCancel:E[1]||(E[1]=B=>o("cancelTask",B)),onOpen:E[2]||(E[2]=B=>o("openAgent",B))},null,8,["tasks"])):e.dockPanel==="todos"?(a(),G(y7,{key:2,todos:e.todos??[],"done-count":e.todoDoneCount},null,8,["todos","done-count"])):e.dockPanel==="terminal"&&e.terminal!==void 0?(a(),G(P7,{key:3,"session-id":e.sessionId??"",store:e.terminal},null,8,["session-id","store"])):e.dockPanel==="goal"?(a(),G(Y7,{key:4,goal:e.goal??null,onControlGoal:E[3]||(E[3]=B=>o("controlGoal",B))},null,8,["goal"])):e.dockPanel==="plan"?(a(),G(cI,{key:5,"session-id":e.sessionId??"","tool-call-id":e.planToolCallId,"plan-mode":e.planMode,"plan-armed":e.planArmed},null,8,["session-id","tool-call-id","plan-mode","plan-armed"])):A("",!0)])],512)):A("",!0)]),_:1}),e.goal?(a(),G(a6,{key:0,goal:e.goal,"force-expanded":e.goalExpandSignal,onControlGoal:E[5]||(E[5]=B=>o("controlGoal",B))},null,8,["goal","force-expanded"])):A("",!0),e.hasDockWork||u.value||f.value||v.value?(a(),c("div",{key:1,ref_key:"workbarRef",ref:m,class:"dock-workbar"},[e.bashTasks.length>0?(a(),G(eo,{key:0,active:e.dockPanel==="bash","aria-pressed":e.dockPanel==="bash",onClick:E[6]||(E[6]=B=>o("toggle-dock-panel","bash"))},{default:H(()=>[M(se,{name:"clock",size:"md"}),r("span",null,d(l(i)("tasks.dockBash")),1),r("span",kI,[E[31]||(E[31]=re("(",-1)),r("b",null,d(e.bashTasks.length),1),E[32]||(E[32]=re(")",-1))])]),_:1},8,["active","aria-pressed"])):A("",!0),e.subagentTasks.length>0?(a(),G(eo,{key:1,active:e.dockPanel==="subagent","aria-pressed":e.dockPanel==="subagent",onClick:E[7]||(E[7]=B=>o("toggle-dock-panel","subagent"))},{default:H(()=>[M(se,{name:"sparkles",size:"md"}),r("span",null,d(l(i)("tasks.dockSubagent")),1),r("span",bI,[E[33]||(E[33]=re("(",-1)),r("b",null,d(e.subagentTasks.length),1),E[34]||(E[34]=re(")",-1))])]),_:1},8,["active","aria-pressed"])):A("",!0),(e.todos?.length??0)>0?(a(),G(eo,{key:2,active:e.dockPanel==="todos","aria-pressed":e.dockPanel==="todos",onClick:E[8]||(E[8]=B=>o("toggle-dock-panel","todos"))},{default:H(()=>[M(se,{name:"check-list",size:"md"}),r("span",null,d(l(i)("tasks.dockTodos")),1),r("span",wI,[E[35]||(E[35]=re("(",-1)),r("b",null,d(e.todoDoneCount)+"/"+d(e.todos?.length??0),1),E[36]||(E[36]=re(")",-1))])]),_:1},8,["active","aria-pressed"])):A("",!0),u.value?(a(),G(eo,{key:3,active:e.dockPanel==="terminal","aria-pressed":e.dockPanel==="terminal",onClick:E[9]||(E[9]=B=>o("toggle-dock-panel","terminal"))},{default:H(()=>[M(se,{name:"terminal",size:"md"}),r("span",null,d(l(i)("terminal.dockTerminal")),1),p.value>0?(a(),c("span",SI,[E[37]||(E[37]=re("(",-1)),r("b",null,d(p.value),1),E[38]||(E[38]=re(")",-1))])):A("",!0)]),_:1},8,["active","aria-pressed"])):A("",!0),f.value?(a(),G(eo,{key:4,active:e.dockPanel==="goal","aria-pressed":e.dockPanel==="goal",onClick:E[10]||(E[10]=B=>o("toggle-dock-panel","goal"))},{default:H(()=>[M(se,{name:"target",size:"md"}),r("span",null,d(l(i)("status.goalLabel")),1)]),_:1},8,["active","aria-pressed"])):A("",!0),v.value?(a(),G(eo,{key:5,active:e.dockPanel==="plan","aria-pressed":e.dockPanel==="plan",onClick:E[11]||(E[11]=B=>o("toggle-dock-panel","plan"))},{default:H(()=>[M(se,{name:"file-edit",size:"md"}),r("span",null,d(l(i)("status.planLabel")),1)]),_:1},8,["active","aria-pressed"])):A("",!0)],512)):A("",!0),e.pendingQuestion?(a(),G(L6,{key:e.pendingQuestion.questionId,question:e.pendingQuestion,"busy-kind":e.questionBusyKind,onAnswer:E[12]||(E[12]=(B,q)=>o("answer",B,q)),onDismiss:E[13]||(E[13]=B=>o("dismiss",B))},null,8,["question","busy-kind"])):e.pendingApproval?(a(),G(Cx,{key:e.pendingApproval.approvalId,class:"dock-approval",block:e.pendingApproval.block,"agent-name":e.pendingApproval.agentName,busy:e.approvalBusy,onDecide:E[14]||(E[14]=B=>o("approval",e.pendingApproval.approvalId,B))},null,8,["block","agent-name","busy"])):(a(),G(gd,{key:4,ref_key:"composerRef",ref:x,"session-id":e.sessionId,running:e.running,queued:e.queued,"search-files":e.searchFiles,"upload-image":e.uploadImage,status:e.status,thinking:e.thinking,"plan-mode":e.planMode,"plan-armed":e.planArmed,"swarm-mode":e.swarmMode,"supermoon-mode":e.supermoonMode,"goal-mode":e.goalMode,goal:e.goal,"activation-badges":e.activationBadges,models:e.models,"starred-ids":e.starredIds,skills:e.skills,starting:e.starting,onSubmit:E[15]||(E[15]=B=>o("submit",B)),onSteer:E[16]||(E[16]=B=>o("steer",B)),onCommand:E[17]||(E[17]=(B,q)=>o("command",B,q)),onInterrupt:E[18]||(E[18]=B=>o("interrupt")),onSetPermission:E[19]||(E[19]=B=>o("setPermission",B)),onSetThinking:E[20]||(E[20]=B=>o("setThinking",B)),onTogglePlan:E[21]||(E[21]=B=>o("togglePlan")),onToggleSwarm:E[22]||(E[22]=B=>o("toggleSwarm")),onToggleSupermoon:E[23]||(E[23]=B=>o("toggleSupermoon")),onToggleGoal:E[24]||(E[24]=B=>o("toggleGoal")),onDismissPlan:E[25]||(E[25]=B=>o("dismissPlan")),onFocusGoal:E[26]||(E[26]=B=>o("focusGoal")),onCompact:E[27]||(E[27]=B=>o("compact")),onPickModel:E[28]||(E[28]=B=>o("pickModel")),onSelectModel:E[29]||(E[29]=B=>o("selectModel",B))},null,8,["session-id","running","queued","search-files","upload-image","status","thinking","plan-mode","plan-armed","swarm-mode","supermoon-mode","goal-mode","goal","activation-badges","models","starred-ids","skills","starting"]))],2))}}),_I=Ee(CI,[["__scopeId","data-v-c24c01d4"]]),$I=["type","value","placeholder","disabled","readonly"],MI=Ie({__name:"Input",props:{modelValue:{},size:{default:"md"},type:{default:"text"},placeholder:{},disabled:{type:Boolean},readonly:{type:Boolean},error:{type:Boolean}},emits:["update:modelValue","focus","blur"],setup(e,{expose:t,emit:n}){const s=n,o=I();function i(f){s("update:modelValue",f.target.value)}function u(){o.value?.focus()}function p(){o.value?.select()}return t({focus:u,select:p,el:o}),(f,v)=>(a(),c("input",{ref_key:"el",ref:o,class:fe(["ui-input",[`ui-input--${e.size}`,{"has-error":e.error}]]),type:e.type,value:e.modelValue,placeholder:e.placeholder,disabled:e.disabled,readonly:e.readonly,onInput:i,onFocus:v[0]||(v[0]=w=>f.$emit("focus",w)),onBlur:v[1]||(v[1]=w=>f.$emit("blur",w))},null,42,$I))}}),Kn=Ee(MI,[["__scopeId","data-v-340f0da2"]]),xI={class:"conv-search",role:"search"},II={key:0,class:"conv-search-count"},AI={key:1,class:"conv-search-count conv-search-none"},TI=Ie({__name:"ConversationSearch",props:{query:{},total:{},activeIndex:{}},emits:["update:query","next","prev","close"],setup(e,{emit:t}){const{t:n}=Ue(),s=t,o=I(null);ht(()=>{o.value?.focus()});function i(u){u.key==="Enter"?(u.preventDefault(),u.shiftKey?s("prev"):s("next")):u.key==="Escape"&&(u.preventDefault(),u.stopPropagation(),s("close"))}return(u,p)=>(a(),c("div",xI,[M(se,{class:"conv-search-icon",name:"search",size:"sm"}),M(Kn,{ref_key:"inputRef",ref:o,class:"conv-search-input",size:"sm",type:"text","model-value":e.query,placeholder:l(n)("conversation.searchPlaceholder"),"aria-label":l(n)("conversation.searchPlaceholder"),autocomplete:"off",spellcheck:"false","onUpdate:modelValue":p[0]||(p[0]=f=>s("update:query",f)),onKeydown:i},null,8,["model-value","placeholder","aria-label"]),e.total>0?(a(),c("span",II,d(l(n)("conversation.searchPosition",{current:Math.max(e.activeIndex,0)+1,total:e.total})),1)):e.query.trim().length>0?(a(),c("span",AI,d(l(n)("conversation.searchNoResults")),1)):A("",!0),M(nt,{size:"sm",class:"conv-search-prev",label:l(n)("conversation.searchPrev"),disabled:e.total===0,onClick:p[1]||(p[1]=f=>s("prev"))},{default:H(()=>[M(se,{name:"chevron-up",size:"sm"})]),_:1},8,["label","disabled"]),M(nt,{size:"sm",class:"conv-search-next",label:l(n)("conversation.searchNext"),disabled:e.total===0,onClick:p[2]||(p[2]=f=>s("next"))},{default:H(()=>[M(se,{name:"chevron-down",size:"sm"})]),_:1},8,["label","disabled"]),M(nt,{size:"sm",class:"conv-search-close",label:l(n)("conversation.searchClose"),onClick:p[3]||(p[3]=f=>s("close"))},{default:H(()=>[M(se,{name:"close",size:"sm"})]),_:1},8,["label"])]))}}),PI=Ee(TI,[["__scopeId","data-v-c521ac2e"]]),EI=["aria-label","aria-hidden"],LI={class:"toc-scroll"},BI=["onClick"],RI={class:"toc-label"},OI=240,DI=Ie({__name:"ConversationToc",props:{items:{},activeTurnId:{},mobile:{type:Boolean},sessionLoading:{type:Boolean},occluded:{type:Boolean}},emits:["select"],setup(e,{emit:t}){const n=e,s=t,{t:o}=Ue(),i=I(null),u=I(!0);let p=null;function f(){const w=i.value,x=w?.offsetParent;if(!w||!x)return;const h=w.getBoundingClientRect().left,m=x.getBoundingClientRect().right;u.value=m-h>=OI}const v=$(()=>!n.mobile&&!n.sessionLoading&&n.items.length>1);return Oe(v,w=>{p?.disconnect(),p=null,w&&Ke(()=>{const x=i.value,h=x?.offsetParent;!x||!h||(typeof ResizeObserver<"u"&&(p=new ResizeObserver(f),p.observe(h)),f())})},{immediate:!0}),Ln(()=>{p?.disconnect(),p=null}),(w,x)=>v.value?(a(),c("nav",{key:0,ref_key:"navRef",ref:i,class:fe(["conversation-toc",{"toc-clipped":!u.value||e.occluded}]),"aria-label":l(o)("conversation.toc"),"aria-hidden":u.value&&!e.occluded?void 0:!0},[r("div",LI,[(a(!0),c(he,null,Pe(e.items,h=>(a(),c("button",{key:h.id,type:"button",class:fe(["toc-row",{active:e.activeTurnId===h.id}]),onClick:m=>s("select",h.id)},[x[0]||(x[0]=r("span",{class:"toc-bar"},null,-1)),r("span",RI,d(h.title),1)],10,BI))),128))])],10,EI)):A("",!0)}}),zI=Ee(DI,[["__scopeId","data-v-3f1c1f66"]]),FI=5;function NI(e,t,n,s=FI){if(n||e.length<=s)return e;const o=e.slice(0,s);if(t&&!o.some(i=>i.id===t)){const i=e.find(u=>u.id===t);i&&(o[s-1]=i)}return o}const Rl={text:"",attachments:[]};Object.freeze(Rl);Object.freeze(Rl.attachments);function qI(e){return e.role==="user"?e.text:e.role!=="assistant"?"":e.blocks?e.blocks.filter(t=>t.kind==="text").map(t=>t.text).join(`
+`):e.text}function WI(e,t){const n=t.trim();if(n.length===0)return[];const s=n.toLowerCase(),o=[];return e.forEach((i,u)=>{const p=qI(i);if(p.length===0)return;const f=p.toLowerCase();let v=f.indexOf(s);for(;v!==-1;)o.push({turnId:i.id,turnIndex:u,start:v,end:v+n.length}),v=f.indexOf(s,v+n.length)}),o}function HI(e,t){return t<=0?-1:e<0?0:(e+1)%t}function UI(e,t){return t<=0?-1:e<0?t-1:(e-1+t)%t}const VI={class:"chat-layout"},jI={class:"empty-hint"},KI={key:0,class:"empty-hint-text"},GI={key:1,class:"ws-pick"},QI={class:"ws-pick-name"},YI={key:1,class:"ws-pick-menu"},ZI=["onClick"],XI={class:"ws-pick-item-name"},JI={class:"ws-pick-item-path"},eA=["aria-label"],tA={key:0,class:"abort-toast",role:"status","aria-live":"polite"},nA={class:"abort-toast-text"},Ma=80,ou=1e3,sA=420,oA=3e3,iA=Ie({__name:"ConversationPane",props:{turns:{},sessionId:{},approvals:{},gitInfo:{},tasks:{},todos:{},goal:{},activationBadges:{},status:{},thinking:{},planMode:{type:Boolean},planArmed:{type:Boolean},swarmMode:{type:Boolean},supermoonMode:{type:Boolean},goalMode:{type:Boolean},questions:{},pendingQuestionActions:{},pendingApprovalActions:{},running:{type:Boolean},turnActive:{type:Boolean},queued:{},searchFiles:{type:Function},uploadImage:{type:Function},changes:{},fileReloadKey:{},working:{type:Boolean},modelRetry:{},starting:{type:Boolean},fastMoon:{type:Boolean},mobile:{type:Boolean},sessionLoading:{type:Boolean},compaction:{},hasMoreMessages:{type:Boolean},loadingMore:{type:Boolean},loadingMoreError:{type:Boolean},loadOlderMessages:{type:Function},models:{},starredIds:{},skills:{},workspaceName:{},workspaceRoot:{},gitDiffStats:{},workspaces:{},activeWorkspaceId:{},sessionTitle:{},pr:{},conversationToc:{type:Boolean},terminal:{}},emits:["submit","steer","approval","cancelTask","answer","dismiss","command","interrupt","unqueue","editQueued","reorderQueue","steerQueued","setPermission","setThinking","togglePlan","toggleSwarm","toggleSupermoon","toggleGoal","dismissPlan","controlGoal","compact","pickModel","selectModel","openFile","openMedia","openThinking","openCompaction","openAgent","openToolDiff","openChanges","refreshGitStatus","editMessage","selectWorkspace","addWorkspace","openPr","renameSession","forkSession","archiveSession","exportSession","resumeTurn"],setup(e,{expose:t,emit:n}){const{t:s}=Ue(),o=e,i=n,u=I(!1),p=I(!1),f=$(()=>o.workspaces?.find(K=>K.id===o.activeWorkspaceId)?.name??o.workspaceName??""),v=$(()=>(o.workspaces?.length??0)>0),w=$(()=>NI(o.workspaces??[],o.activeWorkspaceId,p.value)),x=$(()=>(o.workspaces?.length??0)-w.value.length);Oe(u,F=>{F||(p.value=!1)});function h(F){u.value=!1,F!==o.activeWorkspaceId&&i("selectWorkspace",F)}ro(We.contentAlign);const m=I(null),_=I(null),y=I(null),g=I(!1),k=I(0);let T=null;function S(F,K){const le=y.value??_.value;return!le||le.loadForEdit(F)===!1?!1:(le.loadAttachmentsForEdit(K??[]),!0)}function O(){g.value=!0,T!==null&&clearTimeout(T),T=setTimeout(()=>{T=null,g.value=!1},2e3)}function D(){k.value++,ne.value="goal"}const E=$(()=>o.tasks.filter(F=>F.kind!=="subagent")),B=$(()=>o.tasks.filter(F=>F.kind==="subagent"&&F.runInBackground)),q=$(()=>E.value.filter(F=>F.state==="run").length),V=$(()=>B.value.filter(F=>F.state==="run").length);function b(F){const K=o.tasks,le=K.find(tt=>tt.id===F)??K.find(tt=>tt.parentToolCallId===F);if(le)return le.id;const je=K.filter(tt=>tt.kind==="subagent"&&!tt.parentToolCallId);if(je.length===1)return je[0].id}Io("resolveAgentTaskId",b),Io("pinScroll",Je),Io("sessionId",()=>o.sessionId);const P=$(()=>(o.todos??[]).filter(F=>F.status==="done").length),L=$(()=>E.value.length>0||B.value.length>0||(o.todos?.length??0)>0||(o.queued?.length??0)>0),ne=I(null),oe=$(()=>o.gitInfo?o.changes?.length??0:0),ge=$(()=>X7(o.turns));function ce(F){ne.value=ne.value===F?null:F}function Q(){ne.value=null}Oe(L,F=>{!F&&ne.value!=="terminal"&&ne.value!=="goal"&&ne.value!=="plan"&&Q()});function ie(F){if(F.role==="compaction")return s("conversation.compactedPlain");if(F.role==="user"){if(F.skillActivation)return`/${F.skillActivation.name}`;if(F.pluginCommand)return`/${F.pluginCommand.pluginId}:${F.pluginCommand.commandName}`;const le=F.text.trim().replaceAll(/\s+/g," ");return le.length>0?le:"user"}const K=(F.text||F.thinking||"").trim().replaceAll(/\s+/g," ");return K.length>0?K:(F.tools?.length??0)>0?`${F.tools.length} tools`:"kimi"}const te=$(()=>o.turns.filter(F=>F.role==="user").map((F,K)=>({id:F.id,role:F.role,no:K+1,title:ie(F)}))),ye=I(null);function _e(){const F=Ve.value;if(!F)return;const K=F.querySelectorAll(".turn-anchor[data-turn-id]");if(K.length===0)return;const le=te.value;if(le.length===0)return;const je=new Set(le.map(Yn=>Yn.id));if(In()<=Ma){ye.value=le[le.length-1].id;return}const tt=F.getBoundingClientRect(),wt=tt.height/2;let tn=null;K.forEach(Yn=>{const rs=Yn.dataset.turnId;if(!rs||!je.has(rs))return;Yn.getBoundingClientRect().top-tt.top<=wt&&(tn=rs)}),ye.value=tn??le[0].id}const Ce=I(!1),Z=I(""),U=I(0),ke=$(()=>WI(o.turns,Z.value)),ae=$(()=>ke.value.length);function ee(){Ce.value?de():Ce.value=!0}function de(){Ce.value=!1,Z.value="",U.value=0}function Be(){U.value=HI(U.value,ae.value)}function Y(){U.value=UI(U.value,ae.value)}Oe(Z,()=>{U.value=0,ve()}),Oe(ae,F=>{F===0?U.value=0:U.value>=F&&(U.value=F-1)}),Oe(U,()=>{ve()});async function ve(){if(ae.value===0)return;await Ke();const F=Ve.value;if(!F)return;const K=F.querySelector(".chat-search-hit--active");if(K){K.scrollIntoView({behavior:"smooth",block:"center"});return}const le=Math.min(U.value,ae.value-1),je=ke.value[le];je&&Xt(je.turnId)}const R=I(!1);let X=0;function me(){X||(X=ct(()=>{X=0,He()}))}function He(){const F=Ve.value,K=!o.mobile&&o.conversationToc&&F?F.closest(".con")?.querySelector(".conversation-toc"):null,le=K?.querySelector(".toc-bar");let je=!1;if(F&&K&&le){const tt=le.getBoundingClientRect(),wt=K.getBoundingClientRect(),tn=tt.left+tt.width/2;je=Array.from(F.querySelectorAll(".table-node-wrapper")).some(Yn=>{const rs=Yn.getBoundingClientRect();return rs.left<=tn&&tn<=rs.right&&rs.topwt.top})}R.value!==je&&(R.value=je)}const De=$(()=>o.questions&&o.questions.length>0?o.questions[0]:void 0),an=$(()=>{const F=De.value;if(F)return o.pendingQuestionActions?.[F.questionId]}),Fe=$(()=>o.approvals&&o.approvals.length>0?o.approvals[0]:void 0),Ze=$(()=>{const F=Fe.value;return F?!!o.pendingApprovalActions?.[F.approvalId]:!1}),Ve=I(null),At=I(null),bt=I(0),Ct=I(0),dn=$(()=>({"--panes-scrollbar-width":`${bt.value}px`}));function Kt(F){return F instanceof HTMLElement?F:F&&"$el"in F&&F.$el instanceof HTMLElement?F.$el:null}function zt(){const F=Ve.value;bt.value=F?Math.max(0,F.offsetWidth-F.clientWidth):0,Ct.value=At.value?.offsetHeight??0}function hs(F){const K=Kt(F);Ve.value=K,K&&J()}function nn(F){const K=Kt(F);At.value=K??null,F&&"loadForEdit"in F&&typeof F.loadForEdit=="function"&&"focus"in F&&typeof F.focus=="function"?y.value={loadForEdit:F.loadForEdit.bind(F),loadAttachmentsForEdit:"loadAttachmentsForEdit"in F&&typeof F.loadAttachmentsForEdit=="function"?F.loadAttachmentsForEdit.bind(F):()=>{},focus:F.focus.bind(F)}:y.value=null,j()}const ut=I(!0),Ft=I(!1);function In(){const F=Ve.value;return F?F.scrollHeight-F.scrollTop-F.clientHeight:0}let _t=0,pn=0,Nt=0,gn=0,Tt=0,fn=0;function mn(){return Date.now()1?(ut.value=!1,Ft.value=!0):le<=Ma&&K>_t+1&&(ut.value=!0,Ft.value=!1),_t=K,Gn()}let yn=0;function Gn(){yn||(yn=ct(()=>{yn=0,_e()}))}function $t(F=!1){const K=Ve.value;ut.value=!0,Ft.value=!1,K&&(!F&&performance.now()({node:wt,top:Zt(F,wt)})),je=le.findIndex(wt=>wt.top>=K),tt=je<0?Math.max(0,le.length-1):je;return le.slice(tt,tt+2).flatMap(wt=>{const tn=wt.node.dataset.scrollAnchorId,Yn=tn??wt.node.dataset.turnId;return Yn?[{kind:tn?"tool":"turn",id:Yn,top:wt.top}]:[]})}const kn=new Map;function An(F,K){for(const le of K.anchors){const je=le.kind==="tool"?"data-scroll-anchor-id":"data-turn-id",tt=F.querySelector(`[${je}="${qt(le.id)}"]`);if(tt)return Zt(F,tt)-le.top}return F.scrollHeight-K.oldHeight}function Rt(F,K,le=F.scrollTop){return F.scrollTop=le+An(F,K),_t=F.scrollTop,F.scrollTop}async function sn(){if(!o.sessionId||!o.loadOlderMessages||o.loadingMore||zn.value||!o.hasMoreMessages)return;const F=o.sessionId,K=Ve.value,le=K?.scrollTop??0,je={anchors:K?Gt(K,le):[],oldHeight:K?.scrollHeight??0};is(F,!0),Es();try{if(await Ke(),await o.loadOlderMessages(F),await Ke(),o.sessionId!==F){kn.set(F,je);return}const tt=Ve.value;if(!tt)return;Rt(tt,je),kn.delete(F)}finally{is(F,!1)}}function qt(F){return typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(F):F.replaceAll(/["\\]/g,"\\$&")}function Xt(F){const K=Ve.value;if(!K)return;const le=K.querySelector(`.turn-anchor[data-turn-id="${qt(F)}"]`);le&&(ks(),ut.value=!1,Ft.value=In()>Ma,le.scrollIntoView({behavior:"smooth",block:"center"}))}function Wt(){const F=Ve.value;if(!F)return"none";const K=F.firstElementChild,le=K instanceof HTMLElement?K.offsetHeight:0,je=At.value?.offsetHeight??0;return`${F.scrollHeight}:${F.clientHeight}:${le}:${je}`}function ct(F){return typeof requestAnimationFrame=="function"?requestAnimationFrame(F):setTimeout(F,16)}function lt(F){typeof cancelAnimationFrame=="function"?cancelAnimationFrame(F):clearTimeout(F)}let on=0,Jt=0,Se=null,we=0;function Ge(){return performance.now(){if(Jt=0,performance.now()>=on||!Se){Se=null;return}const tt=Se.getBoundingClientRect().top-we;tt&&(le.scrollTop+=tt),Jt=ct(je)};Jt=ct(je)}function at(F=36){if(!ut.value&&!mn())return;const K=++fn;let le="",je=0,tt=0;Tt&&(lt(Tt),Tt=0);const wt=()=>{if(Tt=0,K!==fn||!ut.value&&!mn())return;$t(!1);const tn=Wt();je=tn===le?je+1:0,le=tn,tt++,je<3&&tt0&&K.length>=F.length&&F.firstId!==K.firstId&&F.lastId===K.lastId&&F.lastTextLen===K.lastTextLen&&F.lastThinkingLen===K.lastThinkingLen&&F.lastToolsLen===K.lastToolsLen&&F.approvalIds===K.approvalIds}const Qt=$(()=>{const F=(o.approvals??[]).map(wt=>wt.approvalId).join(","),K=o.turns,le=K.at(-1),je=le?.thinking?.length??0,tt=le?.tools?.reduce((wt,tn)=>wt+tn.name.length+(tn.arg?.length??0)+(tn.output?.join("").length??0),0)??0;return{length:K.length,firstId:K[0]?.id??"",lastId:le?.id??"",lastTextLen:le?.text.length??0,lastThinkingLen:je,lastToolsLen:tt,approvalIds:F}});Oe(Qt,async(F,K)=>{if(zn.value&&Ht(K,F)){_e();return}await Ke(),ut.value||mn()?$t(F.length{j()}),Oe(()=>o.mobile,async()=>{await Ke(),zt()});const Pt=new Map;Oe(()=>o.fileReloadKey,async(F,K)=>{const le=Ve.value;K&&le&&Pt.set(String(K),{top:le.scrollTop,following:ut.value}),ks(),await Ke();const je=Ve.value,tt=F?Pt.get(String(F)):void 0;if(tt&&je){const wt=kn.get(String(F)),tn=wt?Rt(je,wt,tt.top):tt.top;wt&&kn.delete(String(F)),ut.value=tt.following,je.scrollTop=tn,_t=je.scrollTop,Ft.value=!tt.following&&In()>1,tt.following&&at()}else ut.value=!0,_t=0,$t(!1),at();_e()}),Oe(()=>o.sessionLoading,async(F,K)=>{F||!K||(ut.value=!0,await Ke(),at(),_e())}),Oe(()=>o.turnActive,async(F,K)=>{F||!K||!ut.value&&!mn()||(await Ke(),at(48),_e())});function Ut(){ut.value=!0,Ft.value=!1,pn=Date.now()+ou,Ke(()=>{$t(!0),at(16)})}function Vt(F){Ut(),i("submit",F)}function Tn(F){ut.value=!0,Ft.value=!1,pn=Date.now()+ou,i("editMessage",F)}function gs(F){const K=o.queued?.[F],le=K?.text??"";S(le,K?.attachments)&&i("editQueued",F)}function Wn(F){i("reorderQueue",F)}function bn(){i("steer",Rl)}function ns(F,K){Ut(),i("answer",F,K)}function ss(F,K){!F||!K||i("approval",F,K)}let On=null,en=null,Dn=null,Hn=null,Qn=0,ys=0,vn=0;const os=I(new Set),zn=$(()=>!!o.sessionId&&os.value.has(o.sessionId));function is(F,K){const le=new Set(os.value);K?le.add(F):le.delete(F),os.value=le}function as(){zn.value||vn||(vn=ct(()=>{vn=0,!zn.value&&(Ge()||(ut.value||mn())&&$t(!1))}))}function Es(){fn++,Tt&&(lt(Tt),Tt=0),vn&&(lt(vn),vn=0)}function ks(){const F=Ve.value;if(pn=0,Es(),on=0,Se=null,F){const K=F.scrollTop;typeof F.scrollTo=="function"?F.scrollTo({top:K,behavior:"auto"}):F.scrollTop=K}gn=0,Nt=Number.NEGATIVE_INFINITY,F&&(_t=F.scrollTop)}function wn(){const F=Ve.value;!F||F.scrollHeight-F.clientHeight<=1&&!o.hasMoreMessages||(ut.value=!1,ks(),F.scrollHeight-F.clientHeight>1&&(Ft.value=!0))}function Ls(F){const K=Ve.value;if(!K)return!1;for(const le of F.composedPath()){if(le===K)return!1;if(le instanceof HTMLElement&&le.scrollHeight>le.clientHeight+1&&le.scrollTop>1)return!0}return!1}function Gs(F){F.defaultPrevented||F.ctrlKey||F.shiftKey||F.deltaY>=0||Ls(F)||wn()}function Bs(F){const K=Ve.value;if(!K||F.defaultPrevented||F.button!==0||F.pointerType==="touch")return;const le=K.getBoundingClientRect(),je=K.offsetWidth-K.clientWidth,tt=je>0?je:12;F.target===K&&F.clientX>=le.right-tt&&wn()}let Fn=null;function bs(F){Fn=F.touches.length===1?F.touches[0].clientY:null}function ws(F){const K=F.touches.length===1?F.touches[0].clientY:null;K!==null&&Fn!==null&&K>Fn+2&&!Ls(F)&&wn(),Fn=K}function Ae(){if(!en)return;const F=Ve.value?.firstElementChild??null;F!==Dn&&(Dn&&en.unobserve(Dn),Dn=F,F&&en.observe(F))}function j(){if(!en)return;const F=At.value;F!==Hn&&(Hn&&en.unobserve(Hn),Hn=F,F&&en.observe(F))}function J(){const F=Ve.value;zt(),On&&(On.disconnect(),F&&On.observe(F,{childList:!0,subtree:!0,characterData:!0})),en&&(en.disconnect(),Dn=null,Hn=null,F&&en.observe(F),Ae(),j()),Qn=F?.scrollHeight??0,ys=F?.clientHeight??0,me()}function ft(){Ae(),as(),me()}function Nn(){typeof document>"u"||document.visibilityState==="visible"&&ut.value&&at()}const Ss=I(!1);let ls=null;function Qs(){Ss.value=!0,ls!==null&&clearTimeout(ls),ls=setTimeout(()=>{Ss.value=!1},oA)}function Rs(){Qs(),i("interrupt")}function pe(F){F.key==="Escape"&&(o.running||o.working)&&(F.preventDefault(),Rs())}function Me(){ut.value&&as()}ht(()=>{Ke(()=>{typeof MutationObserver=="function"&&(On=new MutationObserver(ft)),typeof ResizeObserver=="function"&&(en=new ResizeObserver(()=>{me(),zt();const F=Ve.value;if(!F)return;const{scrollHeight:K,clientHeight:le}=F,je=K>Qn+1,tt=le{On&&On.disconnect(),en&&en.disconnect(),vn&<(vn),Tt&<(Tt),Jt&<(Jt),X&<(X),ls!==null&&clearTimeout(ls),T!==null&&(clearTimeout(T),T=null),typeof document<"u"&&(document.removeEventListener("visibilitychange",Nn),document.removeEventListener("keydown",pe)),window.visualViewport?.removeEventListener("resize",Me)});function xe(){(y.value??_.value)?.focus()}return t({loadComposerForEdit:S,focusComposer:xe}),(F,K)=>(a(),c("section",{class:fe(["con",{mobile:e.mobile}])},[!e.mobile&&!(e.turns.length===0&&!e.sessionLoading)?(a(),G(H$,{key:0,"session-id":e.sessionId,"workspace-name":e.workspaceName,"workspace-root":e.workspaceRoot,"session-title":e.sessionTitle,branch:e.gitInfo?.branch,ahead:e.gitInfo?.ahead,behind:e.gitInfo?.behind,"changes-count":oe.value,"git-diff-stats":e.gitDiffStats,"is-git-repo":!!e.gitInfo,pr:e.pr,copied:g.value,"search-active":Ce.value,onOpenChanges:K[0]||(K[0]=le=>i("openChanges")),onCopyAll:K[1]||(K[1]=le=>m.value?.copyConversation()),onCopyFinalSummary:K[2]||(K[2]=le=>m.value?.copyFinalSummary()),onOpenPr:K[3]||(K[3]=le=>e.pr&&i("openPr",e.pr.url)),onRenameSession:K[4]||(K[4]=(le,je)=>i("renameSession",le,je)),onForkSession:K[5]||(K[5]=le=>i("forkSession",le)),onArchiveSession:K[6]||(K[6]=le=>i("archiveSession",le)),onExportSession:K[7]||(K[7]=le=>i("exportSession",le)),onToggleSearch:ee},null,8,["session-id","workspace-name","workspace-root","session-title","branch","ahead","behind","changes-count","git-diff-stats","is-git-repo","pr","copied","search-active"])):A("",!0),Ce.value?(a(),G(PI,{key:1,query:Z.value,total:ae.value,"active-index":U.value,"onUpdate:query":K[8]||(K[8]=le=>Z.value=le),onNext:Be,onPrev:Y,onClose:de},null,8,["query","total","active-index"])):A("",!0),e.conversationToc?(a(),G(zI,{key:2,items:te.value,"active-turn-id":ye.value,mobile:e.mobile,"session-loading":e.sessionLoading,occluded:R.value,onSelect:Xt},null,8,["items","active-turn-id","mobile","session-loading","occluded"])):A("",!0),r("div",VI,[r("div",{ref:hs,class:fe(["panes chat-scroll",{"is-following":ut.value,"history-prepending":zn.value}]),onScrollPassive:Rn,onWheelPassive:Gs,onPointerdownPassive:Bs,onTouchstartPassive:bs,onTouchmovePassive:ws},[r("div",{class:fe(["content-wrap",[e.mobile?"align-mobile":"align-center"]])},[e.turns.length===0&&!e.sessionLoading?(a(),c(he,{key:0},[K[56]||(K[56]=r("div",{class:"empty-spacer"},null,-1)),r("div",jI,[r("span",{class:fe(["empty-hint-title",{"is-starting":e.starting}])},[e.starting?(a(),G(Dt,{key:0,size:"sm"})):A("",!0),r("span",null,d(e.starting?l(s)("conversation.starting"):l(s)("composer.emptyConversationTitle")),1)],2),e.starting?A("",!0):(a(),c("span",KI,d(l(s)("composer.emptyConversation")),1)),v.value&&!e.starting?(a(),c("div",GI,[M(ot,{text:l(s)("conversation.switchWorkspace")},{default:H(()=>[r("button",{type:"button",class:"ws-pick-btn",onClick:K[9]||(K[9]=Re(le=>u.value=!u.value,["stop"]))},[M(se,{name:"folder",size:"sm"}),r("span",QI,d(f.value),1),M(se,{class:fe(["ws-pick-chev",{open:u.value}]),name:"chevron-down",size:"sm"},null,8,["class"])])]),_:1},8,["text"]),u.value?(a(),c("div",{key:0,class:"ws-pick-backdrop",onClick:K[10]||(K[10]=le=>u.value=!1)})):A("",!0),u.value?(a(),c("div",YI,[(a(!0),c(he,null,Pe(w.value,le=>(a(),c("button",{key:le.id,type:"button",class:fe(["ws-pick-item",{on:le.id===e.activeWorkspaceId}]),onClick:Re(je=>h(le.id),["stop"])},[r("span",XI,d(le.name),1),r("span",JI,d(le.shortPath),1)],10,ZI))),128)),x.value>0?(a(),c("button",{key:0,type:"button",class:"ws-pick-item ws-pick-more",onClick:K[11]||(K[11]=Re(le=>p.value=!p.value,["stop"]))},[r("span",null,d(l(s)("conversation.moreWorkspaces",{count:x.value})),1)])):A("",!0),K[55]||(K[55]=r("div",{class:"ws-pick-divider"},null,-1)),r("button",{type:"button",class:"ws-pick-action",onClick:K[12]||(K[12]=Re(le=>{u.value=!1,i("addWorkspace")},["stop"]))},[M(se,{name:"plus",size:"sm"}),r("span",null,d(l(s)("conversation.addWorkspace")),1)])])):A("",!0)])):e.starting?A("",!0):(a(),c("button",{key:2,type:"button",class:"empty-add-workspace",onClick:K[13]||(K[13]=le=>i("addWorkspace"))},[M(se,{name:"folder-plus",size:"sm"}),r("span",null,d(l(s)("conversation.addWorkspace")),1)]))]),M(gd,{ref_key:"emptyComposerRef",ref:_,class:"empty-composer","session-id":e.sessionId,running:e.running,queued:e.queued,"search-files":e.searchFiles,"upload-image":e.uploadImage,status:e.status,thinking:e.thinking,"plan-mode":e.planMode,"plan-armed":e.planArmed,"swarm-mode":e.swarmMode,"supermoon-mode":e.supermoonMode,"goal-mode":e.goalMode,goal:e.goal,"activation-badges":e.activationBadges,models:e.models,"starred-ids":e.starredIds,skills:e.skills,starting:e.starting,"hide-context":"",onSubmit:Vt,onSteer:K[14]||(K[14]=le=>i("steer",le)),onCommand:K[15]||(K[15]=(le,je)=>i("command",le,je)),onInterrupt:Rs,onUnqueue:K[16]||(K[16]=le=>i("unqueue",le)),onEditQueued:K[17]||(K[17]=le=>i("editQueued",le)),onSetPermission:K[18]||(K[18]=le=>i("setPermission",le)),onSetThinking:K[19]||(K[19]=le=>i("setThinking",le)),onTogglePlan:K[20]||(K[20]=le=>i("togglePlan")),onToggleSwarm:K[21]||(K[21]=le=>i("toggleSwarm")),onToggleSupermoon:K[22]||(K[22]=le=>i("toggleSupermoon")),onToggleGoal:K[23]||(K[23]=le=>i("toggleGoal")),onDismissPlan:K[24]||(K[24]=le=>i("dismissPlan")),onFocusGoal:D,onCompact:K[25]||(K[25]=le=>i("compact")),onPickModel:K[26]||(K[26]=le=>i("pickModel")),onSelectModel:K[27]||(K[27]=le=>i("selectModel",le))},null,8,["session-id","running","queued","search-files","upload-image","status","thinking","plan-mode","plan-armed","swarm-mode","supermoon-mode","goal-mode","goal","activation-badges","models","starred-ids","skills","starting"]),K[57]||(K[57]=r("div",{class:"empty-spacer"},null,-1))],64)):(a(),G(cd,{ref_key:"chatPaneRef",ref:m,key:e.fileReloadKey??"no-session",turns:e.turns,approvals:e.approvals,"turn-active":e.turnActive,working:e.working,retry:e.modelRetry,"fast-moon":e.fastMoon,"session-loading":e.sessionLoading,compaction:e.compaction,"has-more-messages":e.hasMoreMessages,"loading-more":e.loadingMore,"loading-more-error":e.loadingMoreError,"is-following":ut.value,"tool-diff-panel":!0,queued:e.queued,"search-query":Z.value,"search-active-index":Ce.value?U.value:-1,onOpenFile:K[28]||(K[28]=le=>i("openFile",le)),onOpenMedia:K[29]||(K[29]=le=>i("openMedia",le)),onCopyConversationCopied:O,onOpenThinking:K[30]||(K[30]=le=>i("openThinking",le)),onOpenCompaction:K[31]||(K[31]=le=>i("openCompaction",le)),onOpenAgent:K[32]||(K[32]=le=>i("openAgent",le)),onOpenToolDiff:K[33]||(K[33]=le=>i("openToolDiff",le)),onEditMessage:Tn,onLoadOlderMessages:sn,onUnqueue:K[34]||(K[34]=le=>i("unqueue",le)),onEditQueued:gs,onReorderQueue:Wn,onSteerQueued:bn,onResumeTurn:K[35]||(K[35]=le=>i("resumeTurn",le))},null,8,["turns","approvals","turn-active","working","retry","fast-moon","session-loading","compaction","has-more-messages","loading-more","loading-more-error","is-following","queued","search-query","search-active-index"]))],2)],34),e.turns.length===0&&!e.sessionLoading?A("",!0):(a(),G(_I,{key:0,ref:nn,style:rt(dn.value),"session-id":e.sessionId,running:e.running,starting:e.starting,queued:e.queued,"search-files":e.searchFiles,"upload-image":e.uploadImage,status:e.status,thinking:e.thinking,"plan-mode":e.planMode,"plan-armed":e.planArmed,"swarm-mode":e.swarmMode,"supermoon-mode":e.supermoonMode,"goal-mode":e.goalMode,"activation-badges":e.activationBadges,models:e.models,"starred-ids":e.starredIds,skills:e.skills,goal:e.goal,"goal-expand-signal":k.value,"plan-tool-call-id":ge.value,"dock-panel":ne.value,"bash-tasks":E.value,"subagent-tasks":B.value,"bash-running":q.value,"subagent-running":V.value,"todo-done-count":P.value,"has-dock-work":L.value,todos:e.todos,"pending-question":De.value,"question-busy-kind":an.value,"pending-approval":Fe.value,"approval-busy":Ze.value,terminal:e.terminal,mobile:e.mobile,onToggleDockPanel:K[36]||(K[36]=le=>ce(le)),onCloseDockPanel:K[37]||(K[37]=le=>Q()),onOpenAgent:K[38]||(K[38]=le=>i("openAgent",le)),onAnswer:ns,onDismiss:K[39]||(K[39]=le=>i("dismiss",le)),onApproval:ss,onCancelTask:K[40]||(K[40]=le=>i("cancelTask",le)),onControlGoal:K[41]||(K[41]=le=>i("controlGoal",le)),onSubmit:Vt,onSteer:K[42]||(K[42]=le=>i("steer",le)),onCommand:K[43]||(K[43]=(le,je)=>i("command",le,je)),onInterrupt:Rs,onSetPermission:K[44]||(K[44]=le=>i("setPermission",le)),onSetThinking:K[45]||(K[45]=le=>i("setThinking",le)),onTogglePlan:K[46]||(K[46]=le=>i("togglePlan")),onToggleSwarm:K[47]||(K[47]=le=>i("toggleSwarm")),onToggleSupermoon:K[48]||(K[48]=le=>i("toggleSupermoon")),onToggleGoal:K[49]||(K[49]=le=>i("toggleGoal")),onDismissPlan:K[50]||(K[50]=le=>i("dismissPlan")),onFocusGoal:D,onCompact:K[51]||(K[51]=le=>i("compact")),onPickModel:K[52]||(K[52]=le=>i("pickModel")),onSelectModel:K[53]||(K[53]=le=>i("selectModel",le))},null,8,["style","session-id","running","starting","queued","search-files","upload-image","status","thinking","plan-mode","plan-armed","swarm-mode","supermoon-mode","goal-mode","activation-badges","models","starred-ids","skills","goal","goal-expand-signal","plan-tool-call-id","dock-panel","bash-tasks","subagent-tasks","bash-running","subagent-running","todo-done-count","has-dock-work","todos","pending-question","question-busy-kind","pending-approval","approval-busy","terminal","mobile"]))]),M(Yo,{name:"pill"},{default:H(()=>[Ft.value?(a(),c("button",{key:0,class:"newmsg-pill",style:rt({bottom:`${Ct.value+12}px`}),"aria-label":l(s)("conversation.jumpToLatestAria"),onClick:K[54]||(K[54]=le=>$t(!0))},[M(se,{class:"pill-chevron",name:"chevron-down",size:"md"}),re(" "+d(l(s)("conversation.newMessages")),1)],12,eA)):A("",!0)]),_:1}),M(Yo,{name:"abort-toast"},{default:H(()=>[Ss.value?(a(),c("div",tA,[r("span",nA,d(l(s)("conversation.manuallyAborted")),1)])):A("",!0)]),_:1})],2))}}),aA=Ee(iA,[["__scopeId","data-v-fad3cc77"]]),lA={class:"ui-panel-header__title"},rA={key:0,class:"ui-panel-header__sub"},uA=Ie({__name:"PanelHeader",props:{title:{},subtitle:{},closable:{type:Boolean,default:!0},closeLabel:{default:"Close"},wrap:{type:Boolean}},emits:["close"],setup(e){return(t,n)=>(a(),c("div",{class:fe(["ui-panel-header",{wrap:e.wrap}])},[r("span",lA,d(e.title),1),M(ot,{text:e.subtitle},{default:H(()=>[e.subtitle?(a(),c("span",rA,d(e.subtitle),1)):A("",!0)]),_:1},8,["text"]),yt(t.$slots,"default",{},void 0,!0),e.closable?(a(),G(nt,{key:0,class:"ui-panel-header__close",size:"sm",label:e.closeLabel,onClick:n[0]||(n[0]=s=>t.$emit("close"))},{default:H(()=>[M(se,{name:"close",size:"sm"})]),_:1},8,["label"])):A("",!0)],2))}}),fo=Ee(uA,[["__scopeId","data-v-c47879ad"]]),cA={key:0,class:"fp-empty fp-error"},dA={key:1,class:"fp-empty"},pA={key:2,class:"fp-loading"},fA={class:"fp-path"},mA={class:"fp-meta"},vA={key:0,class:"fp-lines"},hA={class:"fp-size"},gA={key:3,class:"fp-search"},yA=["placeholder"],kA={key:0,class:"fp-search-count"},bA=["href","aria-label"],wA={key:1,class:"fp-code"},SA={class:"fp-line-table"},CA=["data-line"],_A={class:"fp-gutter"},$A=["innerHTML"],MA={key:1,class:"fp-body fp-code"},xA={class:"fp-line-table"},IA=["data-line"],AA={class:"fp-gutter"},TA=["innerHTML"],PA={key:2,class:"fp-body"},EA=["srcdoc","title"],LA={key:1,class:"fp-code"},BA={class:"fp-line-table"},RA=["data-line"],OA={class:"fp-gutter"},DA=["innerHTML"],zA={key:3,class:"fp-body fp-pdf-wrap"},FA=["src","title"],NA={key:1,class:"fp-binary-card"},qA={class:"fp-binary-label"},WA={key:4,class:"fp-body fp-table-wrap"},HA={class:"fp-table"},UA=["data-line"],VA={key:5,class:"fp-body fp-image-wrap"},jA=["src","alt"],KA={key:1,class:"fp-binary-card"},GA={class:"fp-binary-icon"},QA={class:"fp-binary-label"},YA={key:6,class:"fp-body fp-image-wrap"},ZA=["src"],XA={key:1,class:"fp-binary-card"},JA={class:"fp-binary-icon"},eT={class:"fp-binary-label"},tT={key:7,class:"fp-body fp-code"},nT={class:"fp-line-table"},sT=["data-line"],oT={class:"fp-gutter"},iT=["innerHTML"],aT={key:8,class:"fp-body fp-binary-wrap"},lT={class:"fp-binary-card"},rT={class:"fp-binary-icon"},uT={class:"fp-binary-label"},cT=Ie({__name:"FilePreview",props:{file:{},loading:{type:Boolean},error:{},line:{},downloadUrl:{},closable:{type:Boolean},externalActions:{type:Boolean},openFile:{type:Function}},emits:["close","openExternal","reveal"],setup(e,{emit:t}){const{t:n}=Ue();function s(Y,ve){const R=ve?ve.split("/").filter(Boolean):[];for(const X of Y.split("/"))X===""||X==="."||(X===".."?R.pop():R.push(X));return R.join("/")}const o=mo("resolveImage",async Y=>Y),i=$(()=>{const Y=v.file?.path??"",ve=Y.lastIndexOf("/");return ve>0?Y.slice(0,ve):""});function u(Y){if(/^(https?:|data:|blob:)/i.test(Y)||Y.startsWith("/"))return Y;const ve=i.value;return ve?s(Y,ve):Y}async function p(Y){const ve=u(Y);return o?o(ve):ve}Io("resolveImage",p);function f(Y){let ve=Y.path;if(/^(https?:|mailto:|tel:|data:|blob:|#)/i.test(ve)||ve.startsWith("/"))return Y;for(const X of["#","?"]){const me=ve.indexOf(X);me!==-1&&(ve=ve.slice(0,me))}const R=i.value;return{...Y,path:s(ve,R)}}const v=e,w=t;function x(Y){v.openFile?.(f(Y))}const h=I(null),m=$(()=>{const Y=v.file;if(!Y)return"binary";const ve=Y.mime??"",R=Y.languageId??"",X=Y.path.toLowerCase();return ve==="text/markdown"||R==="markdown"||R==="md"||X.endsWith(".mdx")?"markdown":ve==="application/json"||R==="json"?"json":ve==="text/html"||R==="html"||X.endsWith(".html")||X.endsWith(".htm")?"html":ve==="application/pdf"||X.endsWith(".pdf")?"pdf":ve==="text/csv"||R==="csv"||X.endsWith(".csv")?"csv":ve.startsWith("image/")?"image":ve.startsWith("video/")?"video":Y.isBinary?"binary":ve.startsWith("text/")||R!==""?"text":"binary"});function _(Y){const ve=atob(Y),R=Uint8Array.from(ve,X=>X.charCodeAt(0));return new TextDecoder().decode(R)}const y=$(()=>{const Y=v.file;if(!Y)return"";if(Y.encoding==="base64")try{return _(Y.content)}catch{return Y.content}return Y.content}),g=$(()=>{if(m.value!=="json"||!v.file)return"";try{return JSON.stringify(JSON.parse(y.value),null,2)}catch{return y.value}}),k=$(()=>v.file?(m.value==="json"?g.value:y.value).split(`
+`):[]),T=$(()=>v.file?m.value==="json"?g.value:y.value:""),S=I(""),O=I(0),D=$(()=>{const Y=S.value.trim().toLowerCase();if(!Y)return[];const ve=[];return k.value.forEach((R,X)=>{R.toLowerCase().includes(Y)&&ve.push(X+1)}),ve});Oe(S,()=>{O.value=0});function E(Y,ve=!1){Y&&Ke(()=>{const R=h.value?.querySelector(".fp-body"),X=R?.querySelector(`[data-line="${Y}"]`);if(!R||!X)return;ve&&(R.scrollTop=0);const me=R.getBoundingClientRect(),He=X.getBoundingClientRect(),De=He.top-me.top+R.scrollTop;R.scrollTop=De-R.clientHeight/2+He.height/2})}Oe(()=>[v.file?.path,v.line],()=>E(v.line,!0),{immediate:!0});function B(Y){const ve=D.value;ve.length!==0&&(O.value=(O.value+Y+ve.length)%ve.length,E(ve[O.value]))}function q(Y){const ve=D.value;return{target:v.line===Y,hit:ve.includes(Y),active:ve[O.value]===Y}}function V(Y){return Y<1024?`${Y} B`:Y<1024*1024?`${(Y/1024).toFixed(1)} KB`:`${(Y/(1024*1024)).toFixed(1)} MB`}const b=I(!1),P=I(!1);function L(){v.file&&un(T.value).then(Y=>{Y&&(b.value=!0,setTimeout(()=>{b.value=!1},1400))})}function ne(){v.file&&un(v.file.path).then(Y=>{Y&&(P.value=!0,setTimeout(()=>{P.value=!1},1400))})}const oe=I("preview"),ge=I("preview"),ce=I("fit");function Q(Y){oe.value=Y}function ie(Y){ge.value=Y}function te(Y){ce.value=Y}Oe(m,Y=>{oe.value=Y==="html"?"preview":"source",ge.value="preview",ce.value="fit"});const ye=$(()=>{const Y=v.file;return!Y||m.value!=="image"?null:Y.sourceUrl?Y.sourceUrl:Y.encoding==="base64"?`data:${Y.mime};base64,${Y.content}`:Y.mime==="image/svg+xml"?`data:${Y.mime};charset=utf-8,${encodeURIComponent(Y.content)}`:null}),_e=$(()=>{const Y=v.file;return!Y||m.value!=="video"?null:Y.sourceUrl?Y.sourceUrl:Y.encoding==="base64"?`data:${Y.mime};base64,${Y.content}`:null}),Ce=$(()=>{const Y=v.file;return!Y||m.value!=="pdf"?null:v.downloadUrl?v.downloadUrl:Y.encoding==="base64"?`data:${Y.mime};base64,${Y.content}`:null}),Z=$(()=>v.file?["",' ',` `,y.value].join(""):"");function U(Y){const ve=[];let R="",X=!1;for(let me=0;mek.value.slice(0,200).map(U));function ae(Y){return Y.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function ee(){const Y=v.file;if(!Y)return"";const ve=Y.languageId?.toLowerCase();return ve||(Y.path.split(".").pop()?.toLowerCase()??"")}function de(Y){const ve=ee();let R=ae(Y);return m.value==="json"||ve==="json"||ve==="jsonc"?(R=R.replace(/("[^&]*?")(\s*:)/g,'$1 $2'),R=R.replace(/(:\s*)("[^&]*?")/g,'$1$2 '),R=R.replace(/\b(true|false|null)\b/g,'$1 '),R=R.replace(/(:\s*)(-?\d+(?:\.\d+)?)/g,'$1$2 '),R):m.value==="html"||ve==="html"||ve==="xml"||ve==="svg"?(R=R.replace(/\s([A-Za-z_:][-A-Za-z0-9_:.]*)(=)/g,' $1 $2'),R=R.replace(/(".*?")/g,'$1 '),R=R.replace(/(<\/?)([A-Za-z][\w:-]*)/g,'$1$2 '),R):(R=R.replace(/\b(async|await|break|case|catch|class|const|continue|else|export|extends|finally|for|from|function|if|import|interface|let|new|return|switch|throw|try|type|while)\b/g,'$1 '),R=R.replace(/(".*?"|'.*?')/g,'$1 '),R=R.replace(/(\/\/.*)$/g,''),R)}function Be(Y,ve=55){return!Y||Y.length<=ve?Y:"…"+Y.slice(Y.length-ve+1)}return(Y,ve)=>(a(),c("div",{ref_key:"rootRef",ref:h,class:"file-preview"},[e.error&&!e.loading?(a(),c("div",cA,[r("span",null,d(e.error),1),e.closable?(a(),G(qe,{key:0,variant:"secondary",size:"sm",onClick:ve[0]||(ve[0]=R=>w("close"))},{default:H(()=>[re(d(l(n)("filePreview.close")),1)]),_:1})):A("",!0)])):!e.file&&!e.loading?(a(),c("div",dA,d(l(n)("filePreview.empty")),1)):e.loading?(a(),c("div",pA,[ve[7]||(ve[7]=r("span",{class:"spinner"},null,-1)),r("span",null,d(l(n)("filePreview.loading")),1)])):e.file?(a(),c(he,{key:3},[M(fo,{wrap:"",title:l(n)("common.preview"),closable:e.closable,"close-label":l(n)("filePreview.close"),onClose:ve[6]||(ve[6]=R=>w("close"))},{default:H(()=>[M(ot,{text:e.file.path},{default:H(()=>[r("span",fA,d(Be(e.file.path)),1)]),_:1},8,["text"]),r("span",mA,[e.file.lineCount?(a(),c("span",vA,d(l(n)("filePreview.lineCount",{count:e.file.lineCount})),1)):A("",!0),r("span",hA,d(V(e.file.size)),1)]),m.value==="html"?(a(),G(cn,{key:0,"model-value":oe.value,size:"sm",options:[{value:"preview",label:l(n)("filePreview.preview")},{value:"source",label:l(n)("filePreview.source")}],"onUpdate:modelValue":Q},null,8,["model-value","options"])):A("",!0),m.value==="markdown"?(a(),G(cn,{key:1,"model-value":ge.value,size:"sm",options:[{value:"preview",label:l(n)("filePreview.preview")},{value:"source",label:l(n)("filePreview.source")}],"onUpdate:modelValue":ie},null,8,["model-value","options"])):A("",!0),m.value==="image"?(a(),G(cn,{key:2,"model-value":ce.value,size:"sm",options:[{value:"fit",label:l(n)("filePreview.fit")},{value:"actual",label:l(n)("filePreview.actual")}],"onUpdate:modelValue":te},null,8,["model-value","options"])):A("",!0),m.value==="text"||m.value==="json"||m.value==="html"||m.value==="csv"?(a(),c("div",gA,[gt(r("input",{"onUpdate:modelValue":ve[1]||(ve[1]=R=>S.value=R),class:"fp-search-input",type:"search",placeholder:l(n)("filePreview.search")},null,8,yA),[[qn,S.value]]),S.value.trim()?(a(),c("span",kA,d(D.value.length),1)):A("",!0),M(nt,{size:"sm",disabled:D.value.length===0,label:l(n)("filePreview.prevMatch"),onClick:ve[2]||(ve[2]=R=>B(-1))},{default:H(()=>[M(se,{name:"arrow-up",size:"md"})]),_:1},8,["disabled","label"]),M(nt,{size:"sm",disabled:D.value.length===0,label:l(n)("filePreview.nextMatch"),onClick:ve[3]||(ve[3]=R=>B(1))},{default:H(()=>[M(se,{name:"arrow-down",size:"md"})]),_:1},8,["disabled","label"])])):A("",!0),M(nt,{size:"sm",class:fe({copied:P.value}),label:P.value?l(n)("filePreview.copied"):l(n)("filePreview.copyPath"),onClick:ne},{default:H(()=>[P.value?(a(),G(se,{key:1,class:"fp-check",name:"check",size:"md"})):(a(),G(se,{key:0,name:"link",size:"md"}))]),_:1},8,["class","label"]),e.externalActions?(a(),G(nt,{key:4,size:"sm",label:l(n)("filePreview.openInEditor"),onClick:ve[4]||(ve[4]=R=>w("openExternal"))},{default:H(()=>[M(se,{name:"external-link",size:"md"})]),_:1},8,["label"])):A("",!0),e.externalActions?(a(),G(nt,{key:5,size:"sm",label:l(n)("filePreview.reveal"),onClick:ve[5]||(ve[5]=R=>w("reveal"))},{default:H(()=>[M(se,{name:"folder",size:"md"})]),_:1},8,["label"])):A("",!0),e.downloadUrl?(a(),c("a",{key:6,class:"fp-download",href:e.downloadUrl,target:"_blank",rel:"noreferrer",download:"","aria-label":l(n)("filePreview.download")},[M(se,{name:"download",size:"md"})],8,bA)):A("",!0),!e.file.isBinary&&m.value!=="image"?(a(),G(nt,{key:7,size:"sm",class:fe({copied:b.value}),label:b.value?l(n)("filePreview.copied"):l(n)("filePreview.copy"),onClick:L},{default:H(()=>[b.value?(a(),G(se,{key:1,class:"fp-check",name:"check",size:"md"})):(a(),G(se,{key:0,name:"copy",size:"md"}))]),_:1},8,["class","label"])):A("",!0)]),_:1},8,["title","closable","close-label"]),m.value==="markdown"?(a(),c("div",{key:0,class:fe(["fp-body",{"fp-markdown":ge.value==="preview"}])},[ge.value==="preview"?(a(),G(ci,{key:0,text:y.value,"open-file":v.openFile?x:void 0},null,8,["text","open-file"])):(a(),c("div",wA,[r("div",SA,[(a(!0),c(he,null,Pe(k.value,(R,X)=>(a(),c("div",{key:X,class:fe(["fp-line-row",q(X+1)]),"data-line":X+1},[r("span",_A,d(X+1),1),r("span",{class:"fp-line-text",innerHTML:de(R)},null,8,$A)],10,CA))),128))])]))],2)):m.value==="json"?(a(),c("div",MA,[r("div",xA,[(a(!0),c(he,null,Pe(k.value,(R,X)=>(a(),c("div",{key:X,class:fe(["fp-line-row",q(X+1)]),"data-line":X+1},[r("span",AA,d(X+1),1),r("span",{class:"fp-line-text",innerHTML:de(R)},null,8,TA)],10,IA))),128))])])):m.value==="html"?(a(),c("div",PA,[oe.value==="preview"?(a(),c("iframe",{key:0,class:"fp-html-frame",sandbox:"",srcdoc:Z.value,title:e.file.path},null,8,EA)):(a(),c("div",LA,[r("div",BA,[(a(!0),c(he,null,Pe(k.value,(R,X)=>(a(),c("div",{key:X,class:fe(["fp-line-row",q(X+1)]),"data-line":X+1},[r("span",OA,d(X+1),1),r("span",{class:"fp-line-text",innerHTML:de(R)},null,8,DA)],10,RA))),128))])]))])):m.value==="pdf"?(a(),c("div",zA,[Ce.value?(a(),c("iframe",{key:0,class:"fp-pdf-frame",src:Ce.value,title:e.file.path},null,8,FA)):(a(),c("div",NA,[r("span",qA,d(l(n)("filePreview.pdfNoPreview")),1)]))])):m.value==="csv"?(a(),c("div",WA,[r("table",HA,[r("tbody",null,[(a(!0),c(he,null,Pe(ke.value,(R,X)=>(a(),c("tr",{key:X,class:fe(q(X+1)),"data-line":X+1},[r("th",null,d(X+1),1),(a(!0),c(he,null,Pe(R,(me,He)=>(a(),c("td",{key:He},d(me),1))),128))],10,UA))),128))])])])):m.value==="image"?(a(),c("div",VA,[ye.value?(a(),c("img",{key:0,src:ye.value,alt:e.file.path,class:fe(["fp-image",{actual:ce.value==="actual"}])},null,10,jA)):(a(),c("div",KA,[r("span",GA,[M(se,{name:"image-off",size:"lg"})]),r("span",QA,d(l(n)("filePreview.imageNoPreview",{mime:e.file.mime,size:V(e.file.size)})),1)]))])):m.value==="video"?(a(),c("div",YA,[_e.value?(a(),c("video",{key:0,src:_e.value,class:"fp-image",controls:"",playsinline:"",preload:"metadata"},null,8,ZA)):(a(),c("div",XA,[r("span",JA,[M(se,{name:"image-off",size:"lg"})]),r("span",eT,d(l(n)("filePreview.videoNoPreview",{mime:e.file.mime,size:V(e.file.size)})),1)]))])):m.value==="text"?(a(),c("div",tT,[r("div",nT,[(a(!0),c(he,null,Pe(k.value,(R,X)=>(a(),c("div",{key:X,class:fe(["fp-line-row",q(X+1)]),"data-line":X+1},[r("span",oT,d(X+1),1),r("span",{class:"fp-line-text",innerHTML:de(R)},null,8,iT)],10,sT))),128))])])):(a(),c("div",aT,[r("div",lT,[r("span",rT,[M(se,{name:"file-off",size:"lg"})]),r("span",uT,d(l(n)("filePreview.binaryNoPreview",{mime:e.file.mime||l(n)("filePreview.unknownType"),size:V(e.file.size)})),1)])]))],64)):A("",!0)],512))}}),dT=Ee(cT,[["__scopeId","data-v-ded222d2"]]),pT={class:"tp"},fT=Ie({__name:"ThinkingPanel",props:{text:{},subtitle:{}},emits:["close"],setup(e,{emit:t}){const n=e,s=t,{t:o}=Ue(),i=I(null);return Oe(()=>n.text,()=>{const u=i.value;!u||!(u.scrollHeight-u.scrollTop-u.clientHeight<24)||Ke(()=>{i.value&&(i.value.scrollTop=i.value.scrollHeight)})},{immediate:!0}),(u,p)=>(a(),c("div",pT,[M(fo,{title:l(o)("common.preview"),subtitle:e.subtitle??l(o)("thinking.panelTitle"),"close-label":l(o)("thinking.close"),onClose:p[0]||(p[0]=f=>s("close"))},null,8,["title","subtitle","close-label"]),r("pre",{ref_key:"bodyEl",ref:i,class:"tp-body"},d(e.text),513)]))}}),iu=Ee(fT,[["__scopeId","data-v-98c343f3"]]),mT={class:"ap"},vT={key:0,class:"ap-type"},hT={key:1,class:"ap-reason"},gT={key:2,class:"ap-field"},yT={class:"ap-field-label"},kT={class:"ap-field-body"},bT={key:3,class:"ap-field"},wT={class:"ap-field-label"},ST={class:"ap-field-body ap-live"},CT={key:4,class:"ap-field"},_T={class:"ap-field-label"},$T={class:"ap-field-body ap-progress"},MT={key:0,class:"ap-call"},xT={key:1,class:"ap-output"},IT=["onClick"],AT={key:5,class:"ap-field"},TT={class:"ap-field-label"},PT={class:"ap-field-body"},ET=8,au=5,lu=2,LT=Ie({__name:"AgentDetailPanel",props:{member:{}},emits:["close"],setup(e,{emit:t}){const n=e,s=t,{t:o}=Ue(),i=$(()=>(n.member.outputLines??[]).map(y=>y.trimEnd()).filter(y=>y.length>0)),u=$(()=>(n.member.text??"").trimEnd());function p(y){const g=[];let k=null,T=0;for(const S of y)S.startsWith("Calling ")?(k={key:`g${T++}`,call:S,output:[]},g.push(k)):k?k.output.push(S):(k={key:`g${T++}`,call:"",output:[S]},g.push(k));return g}const f=$(()=>p(i.value)),v=I(new Set);function w(y){return v.value.has(y)}function x(y){const g=new Set(v.value);g.has(y)?g.delete(y):g.add(y),v.value=g}function h(y){return y.output.length-au-lu}function m(y){switch(y){case"queued":return"Queued";case"working":return"Working";case"suspended":return"Suspended";case"completed":return"Completed";case"failed":return"Failed"}}const _=I(null);return Oe(()=>i.value.length+u.value.length,()=>{const y=_.value;!y||!(y.scrollHeight-y.scrollTop-y.clientHeight<24)||Ke(()=>{_.value&&(_.value.scrollTop=_.value.scrollHeight)})},{immediate:!0}),(y,g)=>(a(),c("div",mT,[M(fo,{title:l(o)("common.preview"),subtitle:e.member.name,"close-label":l(o)("thinking.close"),onClose:g[0]||(g[0]=k=>s("close"))},{default:H(()=>[M(Ot,{variant:"neutral",size:"sm",class:"ap-phase"},{default:H(()=>[re(d(m(e.member.phase)),1)]),_:1})]),_:1},8,["title","subtitle","close-label"]),r("div",{ref_key:"bodyEl",ref:_,class:"ap-body"},[e.member.subagentType?(a(),c("div",vT,d(e.member.subagentType),1)):A("",!0),e.member.suspendedReason?(a(),c("div",hT,d(e.member.suspendedReason),1)):A("",!0),e.member.prompt?(a(),c("div",gT,[r("span",yT,d(l(o)("tasks.fieldTask")),1),r("div",kT,d(e.member.prompt),1)])):A("",!0),u.value?(a(),c("div",bT,[r("span",wT,d(l(o)("tasks.fieldOutput")),1),r("div",ST,d(u.value),1)])):A("",!0),f.value.length>0?(a(),c("div",CT,[r("span",_T,d(l(o)("tasks.fieldProgress")),1),r("div",$T,[(a(!0),c(he,null,Pe(f.value,k=>(a(),c("div",{key:k.key,class:"ap-group"},[k.call?(a(),c("div",MT,[g[1]||(g[1]=r("span",{class:"ap-glyph","aria-hidden":"true"},"▶",-1)),re(" "+d(k.call),1)])):A("",!0),k.output.length>0?(a(),c("div",xT,[k.output.length<=ET||w(k.key)?(a(!0),c(he,{key:0},Pe(k.output,(T,S)=>(a(),c("div",{key:S,class:"ap-out-line"},d(T),1))),128)):(a(),c(he,{key:1},[(a(!0),c(he,null,Pe(k.output.slice(0,au),(T,S)=>(a(),c("div",{key:S,class:"ap-out-line"},d(T),1))),128)),r("button",{type:"button",class:"ap-fold",onClick:T=>x(k.key)}," … ("+d(h(k))+" more) ",9,IT),(a(!0),c(he,null,Pe(k.output.slice(-lu),(T,S)=>(a(),c("div",{key:"t"+S,class:"ap-out-line"},d(T),1))),128))],64))])):A("",!0)]))),128))])])):A("",!0),e.member.summary?(a(),c("div",AT,[r("span",TT,d(l(o)("tasks.fieldResult")),1),r("div",PT,d(e.member.summary),1)])):A("",!0)],512)]))}}),BT=Ee(LT,[["__scopeId","data-v-59df0789"]]),yd=["off","protanopia-deuteranopia","tritanopia"],RT=["pierre-light","pierre-light-protanopia-deuteranopia","pierre-light-tritanopia","pierre-dark","pierre-dark-protanopia-deuteranopia","pierre-dark-tritanopia"];function OT(e){return typeof e=="string"&&yd.includes(e)}function ru(e){return OT(e)?e:"off"}function DT(e,t){const n=e?"pierre-dark":"pierre-light";return t==="off"?n:`${n}-${t}`}function zT(e,t,n=RT){const s=DT(e,t);return n.includes(s)?s:null}const FT={"pierre-light":{add:"#18a46c",addSoft:"#18a46c33",del:"#d52c36",delSoft:"#d52c3633"},"pierre-light-protanopia-deuteranopia":{add:"#216cab",addSoft:"#216cab33",del:"#ac6023",delSoft:"#ac602333"},"pierre-light-tritanopia":{add:"#1e858e",addSoft:"#1e858e33",del:"#d5512f",delSoft:"#d5512f33"},"pierre-dark":{add:"#07c480",addSoft:"#07c4801a",del:"#ff2e3f",delSoft:"#ff2e3f1a"},"pierre-dark-protanopia-deuteranopia":{add:"#97c4ff",addSoft:"#97c4ff1a",del:"#fe8c2c",delSoft:"#fe8c2c1a"},"pierre-dark-tritanopia":{add:"#92dde4",addSoft:"#92dde41a",del:"#ff855e",delSoft:"#ff855e1a"}},NT=["data-theme"],qT={key:0,class:"hunk-text"},WT={class:"dl-gutter old"},HT={class:"dl-gutter new"},UT={class:"dl-sign"},VT={class:"dl-text"},jT=Ie({__name:"DiffLines",props:{lines:{},theme:{default:null}},setup(e){const t=e,n=$(()=>{const u=t.theme?FT[t.theme]:void 0;return u?{"--dl-add":u.add,"--dl-add-soft":u.addSoft,"--dl-del":u.del,"--dl-del-soft":u.delSoft}:null});function s(u){return u.oldNo!==void 0?String(u.oldNo):""}function o(u){return u.newNo!==void 0?String(u.newNo):""}function i(u){return`dl-${u.type}`}return(u,p)=>(a(),c("div",{class:"diff-lines","data-theme":n.value?t.theme:null,style:rt(n.value)},[(a(!0),c(he,null,Pe(e.lines,(f,v)=>(a(),c("div",{key:v,class:fe(["dl",i(f)])},[f.type==="hunk"?(a(),c("span",qT,d(f.text),1)):(a(),c(he,{key:1},[r("span",WT,d(s(f)),1),r("span",HT,d(o(f)),1),r("span",UT,d(f.type==="add"?"+":f.type==="del"?"-":" "),1),r("span",VT,d(f.text),1)],64))],2))),128))],12,NT))}}),kd=Ee(jT,[["__scopeId","data-v-26e24204"]]),KT={class:"tdp"},GT={class:"tdp-body"},QT={key:1,class:"tdp-output"},YT={key:2,class:"tdp-empty"},ZT=Ie({__name:"ToolDiffPanel",props:{target:{}},emits:["close"],setup(e,{emit:t}){const n=t,{t:s}=Ue();return(o,i)=>(a(),c("div",KT,[M(fo,{title:e.target.title,subtitle:e.target.path,"close-label":l(s)("thinking.close"),onClose:i[0]||(i[0]=u=>n("close"))},null,8,["title","subtitle","close-label"]),r("div",GT,[e.target.lines&&e.target.lines.length>0?(a(),G(kd,{key:0,lines:e.target.lines},null,8,["lines"])):e.target.output&&e.target.output.length>0?(a(),c("div",QT,[(a(!0),c(he,null,Pe(e.target.output,(u,p)=>(a(),c("div",{key:p},d(u),1))),128))])):(a(),c("div",YT,d(l(s)("diff.noDiff")),1))])]))}}),XT=Ee(ZT,[["__scopeId","data-v-76f2fbca"]]),JT={class:"sc"},eP={key:0,class:"sc-empty"},tP={key:2,class:"sc-loading","aria-hidden":"true"},nP={class:"sc-composer"},sP=["placeholder"],oP=["aria-label","disabled"],iP=Ie({__name:"SideChatPanel",props:{turns:{},running:{type:Boolean},sending:{type:Boolean},title:{},subtitle:{}},emits:["send","close"],setup(e,{emit:t}){const n=e,s=t,{t:o}=Ue(),i=$(()=>n.turns.find(T=>T.role==="user")?.text?.trim()??""),u=$(()=>n.title?.trim()||o("sideChat.title")),p=$(()=>n.subtitle?.trim()?n.subtitle.trim():i.value||o("sideChat.subtitle")),f=I(""),v=I(null),w=I(null);function x(){const k=f.value.trim();k&&(s("send",k),f.value="",Ke(()=>{v.value&&(v.value.style.height="auto"),h()}))}function h(){const k=w.value;k&&(k.scrollTop=k.scrollHeight)}const m=$(()=>{const k=n.turns;if(k.length===0)return"0";const T=k.at(-1),S=T.thinking?.length??0,O=T.tools?.reduce((D,E)=>D+E.name.length+(E.arg?.length??0)+(E.output?.join("").length??0),0)??0;return`${k.length}:${T.text.length}:${S}:${O}`});Oe(m,async()=>{!n.running&&!n.sending||(await Ke(),h())});const _=$(()=>n.sending?n.turns.at(-1)?.role==="user":!1);function y(k){k.key==="Enter"&&!k.shiftKey&&!k.isComposing&&(k.preventDefault(),x())}function g(){const k=v.value;k&&(k.style.height="auto",k.style.height=`${Math.min(k.scrollHeight,160)}px`)}return(k,T)=>(a(),c("div",JT,[M(fo,{title:u.value,subtitle:p.value,"close-label":l(o)("thinking.close"),onClose:T[0]||(T[0]=S=>s("close"))},null,8,["title","subtitle","close-label"]),r("div",{ref_key:"bodyRef",ref:w,class:"sc-body"},[e.turns.length===0?(a(),c("div",eP,d(l(o)("sideChat.empty")),1)):(a(),G(cd,{key:1,turns:e.turns,approvals:[],"turn-active":e.running,working:e.sending||e.running},null,8,["turns","turn-active","working"])),_.value?(a(),c("div",tP,[M(id,{label:l(o)("conversation.waitingForResponse")},null,8,["label"])])):A("",!0)],512),r("div",nP,[gt(r("textarea",{ref_key:"inputRef",ref:v,"onUpdate:modelValue":T[1]||(T[1]=S=>f.value=S),class:"sc-input",rows:"1",placeholder:l(o)("sideChat.placeholder"),onInput:g,onKeydown:y},null,40,sP),[[qn,f.value]]),M(ot,{text:l(o)("sideChat.send")},{default:H(()=>[r("button",{type:"button",class:"sc-send","aria-label":l(o)("sideChat.send"),disabled:!f.value.trim(),onClick:x},[M(se,{name:"arrow-right",size:"sm"})],8,oP)]),_:1},8,["text"])])]))}}),aP=Ee(iP,[["__scopeId","data-v-867ab366"]]),lP={class:"changes-pane"},rP={class:"dv-path"},uP={class:"diff-head"},cP={class:"back-label"},dP={class:"dv-cb-label"},pP={key:0,class:"empty-state"},fP={key:1,class:"dv-lines-wrap"},mP={key:2,class:"empty-state"},vP={class:"dv-change-count"},hP={class:"ch-head"},gP={class:"br-label"},yP={class:"br-name"},kP={key:0,class:"sync-info"},bP={key:0,class:"ahead"},wP={key:0,class:"behind"},SP={key:1,class:"empty-head"},CP={key:0,class:"ch-list"},_P=["onClick"],$P={class:"fpath"},MP={key:1,class:"ch-list ch-tree"},xP={class:"tree-list"},IP=["onClick"],AP={class:"tree-name"},TP=["onClick"],PP={class:"tree-name"},EP={key:2,class:"empty-state"},LP={key:3,class:"empty-state"},BP=Ie({__name:"DiffView",props:{changes:{},gitInfo:{},fileDiff:{},selectedDiffPath:{},fileDiffLoading:{type:Boolean},mode:{default:"full"},hideBack:{type:Boolean,default:!1},closable:{type:Boolean,default:!0}},emits:["open","back","close"],setup(e,{emit:t}){const{t:n}=Ue(),s=e,o=t;function i(Q){const ie=Q.toLowerCase();return ie==="modified"?"modified":ie==="added"?"added":ie==="deleted"?"deleted":ie==="renamed"?"renamed":ie==="untracked"?"untracked":ie==="conflicted"?"conflicted":ie==="ignored"?"ignored":ie==="clean"?"clean":"unknown"}const u={modified:"M",added:"A",deleted:"D",renamed:"R",untracked:"U",conflicted:"C",ignored:"I",clean:"·",unknown:"?"};function p(Q){return u[i(Q)]??"?"}function f(Q,ie=60){return Q.length<=ie?Q:"…"+Q.slice(Q.length-ie+1)}const v=$(()=>s.gitInfo!==null),w=$(()=>s.changes.length>0),x=$(()=>(s.selectedDiffPath??null)!==null),h=$(()=>s.mode==="detail"||s.mode==="full"&&x.value),m=$(()=>s.fileDiff??[]),_=$(()=>s.fileDiffLoading===!0),y=ed(),g=I(ru(It(We.diffColorblind))),k=$(()=>g.value==="off"?null:zT(y.value,g.value)),T={off:"colorblindOff","protanopia-deuteranopia":"colorblindRedGreen",tritanopia:"colorblindBlueYellow"},S=$(()=>yd.map(Q=>({value:Q,label:n(`diff.${T[Q]}`)})));function O(Q){const ie=ru(Q);g.value=ie,Bt(We.diffColorblind,ie)}function D(Q){o("open",Q)}function E(){o("back")}function B(){o("close")}const q=I("list");function V(Q){q.value=Q}function b(Q){const ie={children:[]},te=[...Q].sort((ye,_e)=>ye.path.localeCompare(_e.path));for(const ye of te){const _e=ye.path.split("/");let Ce=ie;for(let Z=0;Z<_e.length;Z++){const U=_e[Z],ke=Z===_e.length-1,ae=_e.slice(0,Z+1).join("/");let ee=Ce.children.find(de=>de.name===U&&de.kind===(ke?"file":"folder"));ee||(ee={name:U,path:ae,kind:ke?"file":"folder",status:ke?ye.status:void 0,children:[]},Ce.children.push(ee)),Ce=ee}}return ie.children}const P=$(()=>b(s.changes)),L=I(new Set);function ne(Q){return!L.value.has(Q)}const oe=$(()=>{const Q=[];function ie(te,ye){for(const _e of te)Q.push({node:_e,depth:ye}),_e.kind==="folder"&&ne(_e.path)&&ie(_e.children,ye+1)}return ie(P.value,0),Q});function ge(Q){const ie=new Set(L.value);ie.has(Q.path)?ie.delete(Q.path):ie.add(Q.path),L.value=ie}function ce(Q){return`${16+Q*16}px`}return(Q,ie)=>(a(),c("div",lP,[h.value?(a(),c(he,{key:0},[M(fo,{title:l(n)("diff.title"),closable:e.closable,"close-label":l(n)("diff.close"),onClose:B},{default:H(()=>[M(ot,{text:e.selectedDiffPath??""},{default:H(()=>[r("span",rP,d(f(e.selectedDiffPath??"",50)),1)]),_:1},8,["text"])]),_:1},8,["title","closable","close-label"]),r("div",uP,[e.hideBack?A("",!0):(a(),G(qe,{key:0,variant:"ghost",size:"sm",onClick:E},{default:H(()=>[ie[0]||(ie[0]=r("span",{"aria-hidden":"true"},"←",-1)),r("span",cP,d(l(n)("diff.back")),1)]),_:1})),m.value.length>0?(a(),c(he,{key:1},[r("span",dP,d(l(n)("diff.colorblind")),1),M(cn,{class:"dv-cb-toggle","model-value":g.value,size:"sm",options:S.value,"onUpdate:modelValue":O},null,8,["model-value","options"])],64)):A("",!0)]),_.value?(a(),c("div",pP,d(l(n)("diff.loading")),1)):m.value.length>0?(a(),c("div",fP,[M(kd,{lines:m.value,theme:k.value},null,8,["lines","theme"])])):(a(),c("div",mP,d(l(n)("diff.noDiff")),1))],64)):(a(),c(he,{key:1},[M(fo,{title:l(n)("diff.title"),closable:e.closable,"close-label":l(n)("diff.close"),onClose:B},{default:H(()=>[r("span",vP,d(l(n)("diff.changeCount",{count:e.changes.length})),1),M(cn,{"model-value":q.value,size:"sm",options:[{value:"list",label:l(n)("diff.list")},{value:"tree",label:l(n)("diff.tree")}],"onUpdate:modelValue":V},null,8,["model-value","options"])]),_:1},8,["title","closable","close-label"]),r("div",hP,[v.value?(a(),c(he,{key:0},[r("span",gP,d(l(n)("diff.branch")),1),r("span",yP,d(e.gitInfo.branch),1),e.gitInfo.ahead>0||e.gitInfo.behind>0?(a(),c("span",kP,[M(ot,{text:l(n)("diff.aheadTitle")},{default:H(()=>[e.gitInfo.ahead>0?(a(),c("span",bP,"↑"+d(e.gitInfo.ahead),1)):A("",!0)]),_:1},8,["text"]),M(ot,{text:l(n)("diff.behindTitle")},{default:H(()=>[e.gitInfo.behind>0?(a(),c("span",wP,"↓"+d(e.gitInfo.behind),1)):A("",!0)]),_:1},8,["text"])])):A("",!0)],64)):(a(),c("span",SP,d(l(n)("diff.empty")),1))]),w.value&&q.value==="list"?(a(),c("div",CP,[(a(!0),c(he,null,Pe(e.changes,te=>(a(),G(ot,{key:te.path,text:te.path},{default:H(()=>[r("button",{type:"button",class:"ch-row",onClick:ye=>D(te.path)},[r("span",{class:fe(["badge",i(te.status)])},d(p(te.status)),3),r("span",$P,d(f(te.path)),1)],8,_P)]),_:2},1032,["text"]))),128))])):w.value&&q.value==="tree"?(a(),c("div",MP,[r("ul",xP,[(a(!0),c(he,null,Pe(oe.value,({node:te,depth:ye})=>(a(),c("li",{key:te.path,class:"tree-node"},[te.kind==="folder"?(a(),c("button",{key:0,type:"button",class:"tree-row tree-folder",style:rt({paddingLeft:ce(ye)}),onClick:_e=>ge(te)},[M(se,{class:"tree-icon",name:"folder-solid",size:"sm"}),r("span",AP,d(te.name),1)],12,IP)):(a(),G(ot,{key:1,text:te.path},{default:H(()=>[r("button",{type:"button",class:"tree-row tree-file",style:rt({paddingLeft:ce(ye)}),onClick:_e=>D(te.path)},[r("span",{class:fe(["badge",i(te.status)])},d(p(te.status)),3),r("span",PP,d(te.name),1)],12,TP)]),_:2},1032,["text"]))]))),128))])])):v.value?(a(),c("div",EP,d(l(n)("diff.clean")),1)):(a(),c("div",LP,d(l(n)("diff.empty")),1))],64))]))}}),RP=Ee(BP,[["__scopeId","data-v-6591e558"]]);function Ol(e,t){let n=null;ht(()=>{n=typeof document<"u"&&document.activeElement instanceof HTMLElement?document.activeElement:null,Ke(()=>{const s=t?.value??e.value;try{s?.focus()}catch{}})}),Ln(()=>{const s=n;if(n=null,!(!s||typeof document>"u"||!document.contains(s)))try{s.focus()}catch{}})}const OP={class:"search-wrap"},DP={key:0,class:"tab-strip"},zP={key:1,class:"state-row"},FP={key:2,class:"state-row unavail"},NP={key:3,class:"model-list"},qP=["aria-selected","onClick","onMouseenter"],WP={class:"check"},HP={class:"model-main"},UP={class:"model-name"},VP={class:"model-id"},jP={key:0,class:"caps"},KP={class:"model-provider"},GP={class:"model-ctx"},QP={key:0,class:"empty"},YP={class:"footer-hint"},ZP=Ie({__name:"ModelPicker",props:{models:{},current:{},starredIds:{},loading:{type:Boolean},unavailable:{type:Boolean}},emits:["select","toggle-star","close"],setup(e,{emit:t}){const{t:n}=Ue(),s=e,o=t,i=$(()=>new Set(s.starredIds??[]));function u(S){return i.value.has(S)}const p=I(""),f=I(null),v=I(null),w=I("all");Ol(v,f);const x=$(()=>{const S=new Set,O=[{id:"all",label:n("model.allTab")}];for(const D of s.models)S.has(D.provider)||(S.add(D.provider),O.push({id:D.provider,label:D.provider}));return O}),h=$(()=>{const S=p.value.toLowerCase().trim(),O=s.models.filter(D=>{if(w.value!=="all"&&D.provider!==w.value)return!1;const E=(D.displayName??D.model).toLowerCase().includes(S),B=D.provider.toLowerCase().includes(S),q=D.id.toLowerCase().includes(S);return!S||E||B||q});return w.value!=="all"?O:O.sort((D,E)=>{const B=u(D.id)?1:0;return(u(E.id)?1:0)-B})}),m=$(()=>h.value),_=I(0);Oe([p,w],()=>{_.value=0}),Oe(x,S=>{S.some(O=>O.id===w.value)||(w.value="all")}),Oe(m,S=>{_.value=Math.min(_.value,Math.max(S.length-1,0))});function y(S){if(S.key==="Escape"){o("close");return}if(S.key==="ArrowDown")S.preventDefault(),_.value=Math.min(_.value+1,m.value.length-1);else if(S.key==="ArrowUp")S.preventDefault(),_.value=Math.max(_.value-1,0);else if(S.key==="Enter"){const O=m.value[_.value];O&&o("select",O.id)}}ht(()=>{document.addEventListener("keydown",y)}),kt(()=>{document.removeEventListener("keydown",y)});function g(S){o("select",S)}function k(S){return m.value.indexOf(S)}function T(S){w.value=S}return(S,O)=>(a(),G(vs,{open:!0,"close-on-esc":!1,title:l(n)("model.title"),size:"xl",height:"fixed",onClose:O[1]||(O[1]=D=>o("close"))},{default:H(()=>[r("div",{ref_key:"dialogRef",ref:v,class:"mp"},[r("div",OP,[M(Kn,{ref_key:"searchRef",ref:f,modelValue:p.value,"onUpdate:modelValue":O[0]||(O[0]=D=>p.value=D),placeholder:l(n)("model.searchPlaceholder"),autocomplete:"off",spellcheck:"false",autofocus:""},null,8,["modelValue","placeholder"])]),x.value.length>1?(a(),c("div",DP,[(a(!0),c(he,null,Pe(x.value,D=>(a(),G(qe,{key:D.id,variant:D.id===w.value?"secondary":"ghost",size:"sm",onClick:E=>T(D.id)},{default:H(()=>[re(d(D.label),1)]),_:2},1032,["variant","onClick"]))),128))])):A("",!0),e.loading?(a(),c("div",zP,[M(Dt,{size:"sm"}),r("span",null,d(l(n)("model.loading")),1)])):e.unavailable?(a(),c("div",FP,[M(se,{name:"alert-triangle",size:"lg"}),r("span",null,d(l(n)("model.unavailable")),1)])):(a(),c("div",NP,[(a(!0),c(he,null,Pe(m.value,D=>(a(),c("div",{key:D.id,class:fe(["model-row",{"is-current":D.id===e.current,"is-selected":k(D)===_.value}]),role:"option","aria-selected":D.id===e.current,onClick:E=>g(D.id),onMouseenter:E=>_.value=k(D)},[r("span",WP,[D.id===e.current?(a(),G(se,{key:0,name:"check",size:"sm"})):A("",!0)]),r("span",HP,[r("span",UP,d(D.displayName??D.model),1),r("span",VP,d(D.id),1),D.capabilities&&D.capabilities.length>0?(a(),c("span",jP,[(a(!0),c(he,null,Pe(D.capabilities,E=>(a(),G(Ot,{key:E,variant:"info",size:"sm"},{default:H(()=>[re(d(E),1)]),_:2},1024))),128))])):A("",!0)]),r("span",KP,d(D.provider),1),r("span",GP,d(l(n)("model.contextSuffix",{size:l(ms)(D.maxContextSize)})),1),M(nt,{size:"sm",label:u(D.id)?l(n)("model.unstarTitle"):l(n)("model.starTitle"),onClick:Re(E=>o("toggle-star",D.id),["stop"])},{default:H(()=>[u(D.id)?(a(),G(se,{key:0,name:"star",size:"md"})):(a(),G(se,{key:1,name:"star-outline",size:"md"}))]),_:2},1032,["label","onClick"])],42,qP))),128)),m.value.length===0&&!e.loading&&!e.unavailable?(a(),c("div",QP,d(s.models.length===0?l(n)("model.emptyNoModels"):l(n)("model.emptyNoMatch")),1)):A("",!0)])),r("div",YP,d(l(n)("model.footerHint")),1)],512)]),_:1},8,["title"]))}}),XP=Ee(ZP,[["__scopeId","data-v-56cefe51"]]),JP={key:0,class:"ui-field__label"},eE={key:1,class:"ui-field__error"},tE={key:2,class:"ui-field__hint"},nE=Ie({__name:"Field",props:{label:{},hint:{},error:{}},setup(e){return(t,n)=>(a(),c("div",{class:fe(["ui-field",{"has-error":!!e.error}])},[e.label?(a(),c("label",JP,d(e.label),1)):A("",!0),yt(t.$slots,"default",{},void 0,!0),e.error?(a(),c("span",eE,d(e.error),1)):e.hint?(a(),c("span",tE,d(e.hint),1)):A("",!0)],2))}}),$s=Ee(nE,[["__scopeId","data-v-49bce958"]]),sE=["value","disabled"],oE=Ie({__name:"Select",props:{modelValue:{},size:{default:"md"},disabled:{type:Boolean},error:{type:Boolean}},emits:["update:modelValue"],setup(e,{emit:t}){const n=t;function s(o){n("update:modelValue",o.target.value)}return(o,i)=>(a(),c("select",{class:fe(["ui-select",[`ui-select--${e.size}`,{"has-error":e.error}]]),value:e.modelValue,disabled:e.disabled,onChange:s},[yt(o.$slots,"default",{},void 0,!0)],42,sE))}}),Xa=Ee(oE,[["__scopeId","data-v-92a040fd"]]),iE={class:"prov-list"},aE={key:0,class:"state-row"},lE={key:1,class:"state-row unavail"},rE={key:2,class:"empty"},uE={class:"prov-info"},cE={class:"prov-type"},dE={key:0,class:"prov-url"},pE={class:"prov-meta"},fE={key:0},mE={class:"prov-actions"},vE={key:0,class:"add-section"},hE={key:0,class:"add-btns"},gE={key:1,class:"add-form"},yE=["value"],kE={key:0,class:"add-error"},bE={class:"form-btns"},wE={key:2,class:"import-form"},SE={class:"import-head"},CE={class:"import-title"},_E={key:0,class:"state-row"},$E={key:1,class:"import-error"},ME={key:2,class:"empty"},xE={key:3,class:"catalog-list"},IE=["aria-disabled","onClick"],AE={class:"catalog-check"},TE={class:"catalog-main"},PE={class:"catalog-name"},EE={class:"catalog-id"},LE={key:0,class:"catalog-wire"},BE={class:"catalog-meta"},RE={key:2,class:"catalog-count"},OE={key:4,class:"catalog-selected"},DE={class:"form-btns"},zE={key:3,class:"import-form"},FE={class:"import-head"},NE={class:"import-title"},qE={key:0,class:"add-error"},WE={class:"form-btns"},HE={class:"footer-hint"},UE=Ie({__name:"ProviderManager",props:{providers:{},loading:{type:Boolean},unavailable:{type:Boolean}},emits:["add","refresh","delete","openLogin","import-catalog","import-registry","close"],setup(e,{emit:t}){const{t:n}=Ue(),s=I(null);Ol(s);const o=t;function i(Ce){o("delete",Ce)}const u=I(!1),p=Bn({type:"moonshot",apiKey:"",baseUrl:"",defaultModel:""}),f=I(""),v=["moonshot","anthropic","openai","custom"];function w(){p.type="moonshot",p.apiKey="",p.baseUrl="",p.defaultModel="",f.value="",u.value=!0}function x(){u.value=!1}function h(){if(!p.apiKey.trim()){f.value=n("providers.apiKeyRequired");return}f.value="",o("add",{type:p.type,apiKey:p.apiKey.trim()||void 0,baseUrl:p.baseUrl.trim()||void 0,defaultModel:p.defaultModel.trim()||void 0}),u.value=!1}const m=I(!1),_=I(""),y=I([]),g=I(!1),k=I(""),T=I(""),S=I("");let O;const D=$(()=>tk(y.value,_.value).map(ur)),E=$(()=>y.value.find(Ce=>Ce.id===T.value)??null),B=$(()=>E.value===null?null:ur(E.value));async function q(Ce){g.value=!0,k.value="";try{y.value=await Te().browseCatalogProviders(Ce)}catch{k.value=n("providers.import.catalogLoadError")}finally{g.value=!1}}Oe(_,Ce=>{T.value="",S.value="",O!==void 0&&clearTimeout(O),O=setTimeout(()=>void q(Ce),250)});function V(){m.value=!0,_.value="",T.value="",S.value="",k.value="",y.value=[],q("")}function b(){m.value=!1,O!==void 0&&(clearTimeout(O),O=void 0)}function P(Ce){T.value=Ce,S.value=""}function L(){const Ce=E.value;Ce!==null&&(o("import-catalog",{catalogId:Ce.id,baseUrl:Ce.needsBaseUrl&&S.value.trim()||void 0}),b())}const ne=I(!1),oe=Bn({url:"",apiKey:""}),ge=I("");function ce(){oe.url="",oe.apiKey="",ge.value="",ne.value=!0}function Q(){ne.value=!1}function ie(){const Ce=oe.url.trim();if(Ce===""){ge.value=n("providers.import.registryUrlRequired");return}ge.value="",o("import-registry",{url:Ce,apiKey:oe.apiKey.trim()||void 0}),Q()}function te(Ce){if(Ce.key==="Escape"){if(m.value){b();return}if(ne.value){Q();return}if(u.value){x();return}o("close")}}ht(()=>document.addEventListener("keydown",te)),kt(()=>{document.removeEventListener("keydown",te),O!==void 0&&clearTimeout(O)});function ye(Ce){return Ce==="connected"?"var(--color-success)":Ce==="error"?"var(--color-danger)":"var(--color-text-faint)"}function _e(Ce){return n(Ce==="connected"?"providers.status.connected":Ce==="error"?"providers.status.error":"providers.status.unconfigured")}return(Ce,Z)=>(a(),G(vs,{open:!0,"close-on-esc":!1,title:l(n)("providers.title"),size:"xl",height:"fixed",onClose:Z[10]||(Z[10]=U=>o("close"))},{default:H(()=>[r("div",{ref_key:"dialogRef",ref:s,class:"pm"},[r("div",iE,[e.loading?(a(),c("div",aE,[M(Dt,{size:"sm"}),r("span",null,d(l(n)("providers.loading")),1)])):e.unavailable?(a(),c("div",lE,[M(se,{name:"alert-triangle",size:"md"}),r("span",null,d(l(n)("providers.unavailable")),1)])):e.providers.length===0?(a(),c("div",rE,d(l(n)("providers.empty")),1)):(a(!0),c(he,{key:3},Pe(e.providers,U=>(a(),c("div",{key:U.id,class:"prov-row"},[M(ot,{text:_e(U.status)},{default:H(()=>[r("span",{class:fe(["status-dot",{"status-dot--empty":U.status!=="connected"&&U.status!=="error"}]),style:rt(U.status==="connected"||U.status==="error"?{background:ye(U.status)}:void 0)},null,6)]),_:2},1032,["text"]),r("div",uE,[r("span",cE,d(U.type),1),U.baseUrl?(a(),c("span",dE,d(U.baseUrl),1)):A("",!0),r("span",pE,[M(Ot,{variant:U.hasApiKey?"success":"neutral",size:"sm"},{default:H(()=>[re(d(U.hasApiKey?l(n)("providers.keySet"):l(n)("providers.keyNotSet")),1)]),_:2},1032,["variant"]),U.models&&U.models.length>0?(a(),c("span",fE," · "+d(l(n)("providers.modelCount",{count:U.models.length})),1)):A("",!0)])]),r("div",mE,[M(ot,{text:l(n)("providers.refreshTitle",{type:U.type})},{default:H(()=>[M(qe,{variant:"secondary",size:"sm",onClick:ke=>o("refresh",U.id)},{default:H(()=>[re(d(l(n)("providers.refresh")),1)]),_:1},8,["onClick"])]),_:2},1032,["text"]),M(ot,{text:l(n)("providers.deleteTitle",{type:U.type})},{default:H(()=>[M(qe,{variant:"danger-soft",size:"sm",onClick:ke=>i(U.id)},{default:H(()=>[re(d(l(n)("providers.delete")),1)]),_:1},8,["onClick"])]),_:2},1032,["text"])])]))),128))]),e.unavailable?A("",!0):(a(),c("div",vE,[!u.value&&!m.value&&!ne.value?(a(),c("div",hE,[M(qe,{variant:"secondary",size:"sm",onClick:Z[0]||(Z[0]=U=>o("openLogin","moonshot"))},{default:H(()=>[M(se,{name:"user",size:"sm"}),re(" "+d(l(n)("providers.loginKimi")),1)]),_:1}),M(qe,{variant:"secondary",size:"sm",onClick:Z[1]||(Z[1]=U=>o("openLogin","anthropic"))},{default:H(()=>[M(se,{name:"user",size:"sm"}),re(" "+d(l(n)("providers.loginAnthropic")),1)]),_:1}),M(qe,{variant:"primary",size:"sm",onClick:w},{default:H(()=>[M(se,{name:"plus",size:"sm"}),re(" "+d(l(n)("providers.enterApiKey")),1)]),_:1}),M(qe,{variant:"secondary",size:"sm",onClick:V},{default:H(()=>[M(se,{name:"globe",size:"sm"}),re(" "+d(l(n)("providers.import.fromCatalog")),1)]),_:1}),M(qe,{variant:"secondary",size:"sm",onClick:ce},{default:H(()=>[M(se,{name:"download",size:"sm"}),re(" "+d(l(n)("providers.import.fromRegistry")),1)]),_:1})])):u.value?(a(),c("div",gE,[M($s,{label:l(n)("providers.fieldType")},{default:H(()=>[M(Xa,{modelValue:p.type,"onUpdate:modelValue":Z[2]||(Z[2]=U=>p.type=U)},{default:H(()=>[(a(),c(he,null,Pe(v,U=>r("option",{key:U,value:U},d(U),9,yE)),64))]),_:1},8,["modelValue"])]),_:1},8,["label"]),M($s,{label:l(n)("providers.fieldApiKey")},{default:H(()=>[M(Kn,{modelValue:p.apiKey,"onUpdate:modelValue":Z[3]||(Z[3]=U=>p.apiKey=U),type:"password",placeholder:"sk-…",autocomplete:"off",spellcheck:"false"},null,8,["modelValue"])]),_:1},8,["label"]),M($s,{label:l(n)("providers.fieldBaseUrl")},{default:H(()=>[M(Kn,{modelValue:p.baseUrl,"onUpdate:modelValue":Z[4]||(Z[4]=U=>p.baseUrl=U),placeholder:l(n)("providers.baseUrlPlaceholder"),autocomplete:"off",spellcheck:"false"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),M($s,{label:l(n)("providers.fieldDefaultModel")},{default:H(()=>[M(Kn,{modelValue:p.defaultModel,"onUpdate:modelValue":Z[5]||(Z[5]=U=>p.defaultModel=U),placeholder:l(n)("providers.optional"),autocomplete:"off",spellcheck:"false"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),f.value?(a(),c("div",kE,d(f.value),1)):A("",!0),r("div",bE,[M(qe,{variant:"primary",size:"sm",onClick:h},{default:H(()=>[re(d(l(n)("providers.add")),1)]),_:1}),M(qe,{variant:"secondary",size:"sm",onClick:x},{default:H(()=>[re(d(l(n)("common.cancel")),1)]),_:1})])])):m.value?(a(),c("div",wE,[r("div",SE,[M(qe,{variant:"ghost",size:"sm",onClick:b},{default:H(()=>[re(d(l(n)("providers.import.back")),1)]),_:1}),r("span",CE,d(l(n)("providers.import.catalogTitle")),1)]),M($s,{label:l(n)("providers.import.catalogSearchLabel")},{default:H(()=>[M(Kn,{modelValue:_.value,"onUpdate:modelValue":Z[6]||(Z[6]=U=>_.value=U),placeholder:l(n)("providers.import.catalogSearchPlaceholder"),autocomplete:"off",spellcheck:"false"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),g.value?(a(),c("div",_E,[M(Dt,{size:"sm"}),r("span",null,d(l(n)("providers.import.catalogLoading")),1)])):k.value?(a(),c("div",$E,d(k.value),1)):D.value.length===0?(a(),c("div",ME,d(l(n)("providers.import.catalogEmpty")),1)):(a(),c("div",xE,[(a(!0),c(he,null,Pe(D.value,U=>(a(),c("div",{key:U.id,class:fe(["catalog-row",{"is-selected":U.id===T.value,"is-rejected":U.rejected}]),"aria-disabled":U.rejected?"true":void 0,onClick:ke=>U.rejected?void 0:P(U.id)},[r("span",AE,[U.id===T.value?(a(),G(se,{key:0,name:"check",size:"sm"})):A("",!0)]),r("span",TE,[r("span",PE,d(U.name),1),r("span",EE,d(U.id),1),U.wireType?(a(),c("span",LE,d(U.wireType),1)):A("",!0)]),r("span",BE,[U.rejected?(a(),G(Ot,{key:0,variant:"danger",size:"sm"},{default:H(()=>[re(d(l(n)("providers.import.catalogRejected",{reason:U.rejectReason??""})),1)]),_:2},1024)):U.needsBaseUrl?(a(),G(Ot,{key:1,variant:"warning",size:"sm"},{default:H(()=>[re(d(l(n)("providers.import.catalogNeedsBaseUrl")),1)]),_:1})):(a(),c("span",RE,d(l(n)("providers.modelCount",{count:U.modelCount})),1))])],10,IE))),128))])),B.value?(a(),c("div",OE,[B.value.needsBaseUrl?(a(),G($s,{key:0,label:l(n)("providers.fieldBaseUrl"),hint:l(n)("providers.import.catalogBaseUrlHint")},{default:H(()=>[M(Kn,{modelValue:S.value,"onUpdate:modelValue":Z[7]||(Z[7]=U=>S.value=U),placeholder:l(n)("providers.baseUrlPlaceholder"),autocomplete:"off",spellcheck:"false"},null,8,["modelValue","placeholder"])]),_:1},8,["label","hint"])):A("",!0)])):A("",!0),r("div",DE,[M(qe,{variant:"primary",size:"sm",disabled:E.value===null||B.value?.needsBaseUrl===!0&&S.value.trim()==="",onClick:L},{default:H(()=>[re(d(l(n)("providers.import.importAction")),1)]),_:1},8,["disabled"]),M(qe,{variant:"secondary",size:"sm",onClick:b},{default:H(()=>[re(d(l(n)("common.cancel")),1)]),_:1})])])):ne.value?(a(),c("div",zE,[r("div",FE,[M(qe,{variant:"ghost",size:"sm",onClick:Q},{default:H(()=>[re(d(l(n)("providers.import.back")),1)]),_:1}),r("span",NE,d(l(n)("providers.import.registryTitle")),1)]),M($s,{label:l(n)("providers.import.registryUrlLabel")},{default:H(()=>[M(Kn,{modelValue:oe.url,"onUpdate:modelValue":Z[8]||(Z[8]=U=>oe.url=U),placeholder:l(n)("providers.import.registryUrlPlaceholder"),autocomplete:"off",spellcheck:"false"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),M($s,{label:l(n)("providers.import.registryApiKeyLabel")},{default:H(()=>[M(Kn,{modelValue:oe.apiKey,"onUpdate:modelValue":Z[9]||(Z[9]=U=>oe.apiKey=U),type:"password",autocomplete:"off",spellcheck:"false"},null,8,["modelValue"])]),_:1},8,["label"]),ge.value?(a(),c("div",qE,d(ge.value),1)):A("",!0),r("div",WE,[M(qe,{variant:"primary",size:"sm",onClick:ie},{default:H(()=>[re(d(l(n)("providers.import.importAction")),1)]),_:1}),M(qe,{variant:"secondary",size:"sm",onClick:Q},{default:H(()=>[re(d(l(n)("common.cancel")),1)]),_:1})])])):A("",!0)])),r("div",HE,d(l(n)("providers.escClose")),1)],512)]),_:1},8,["title"]))}}),VE=Ee(UE,[["__scopeId","data-v-b1859ac1"]]),jE={key:0,width:"36",height:"36",viewBox:"0 0 36 36",fill:"none",stroke:"var(--color-success)","stroke-width":"2","aria-hidden":"true"},KE={key:1,width:"28",height:"28",viewBox:"0 0 28 28",fill:"none",stroke:"var(--color-danger)","stroke-width":"1.5","aria-hidden":"true"},GE={key:2,width:"28",height:"28",viewBox:"0 0 28 28",fill:"none",stroke:"var(--color-warning)","stroke-width":"1.5","aria-hidden":"true"},xa=Ie({__name:"AuthStateIcon",props:{kind:{}},setup(e){return(t,n)=>e.kind==="success"?(a(),c("svg",jE,[...n[0]||(n[0]=[r("circle",{cx:"18",cy:"18",r:"15"},null,-1),r("polyline",{points:"10,18 15,24 26,12"},null,-1)])])):e.kind==="expired"?(a(),c("svg",KE,[...n[1]||(n[1]=[r("circle",{cx:"14",cy:"14",r:"12"},null,-1),r("line",{x1:"14",y1:"8",x2:"14",y2:"15"},null,-1),r("circle",{cx:"14",cy:"19",r:"1.2",fill:"var(--color-danger)"},null,-1)])])):(a(),c("svg",GE,[...n[2]||(n[2]=[r("path",{d:"M14 3 L26 24 H2 Z"},null,-1),r("line",{x1:"14",y1:"12",x2:"14",y2:"18"},null,-1),r("circle",{cx:"14",cy:"21.5",r:"1",fill:"var(--color-warning)"},null,-1)])]))}}),QE={key:0,class:"center-body"},YE={class:"center-text"},ZE={key:1,class:"nb"},XE={class:"nb-lead"},JE=["href"],eL={class:"nb-or"},tL={class:"nb-fallback"},nL={class:"nb-fb-text"},sL=["href"],oL={class:"nb-code-row"},iL={class:"nb-code"},aL={class:"nb-status"},lL={class:"nb-status-text"},rL={class:"nb-countdown"},uL={key:2,class:"center-body"},cL={class:"center-text success-text"},dL={class:"center-hint"},pL={class:"center-body"},fL={class:"center-text err-text"},mL={class:"center-hint"},vL={class:"actions"},hL={class:"center-body"},gL={class:"center-text warn-text"},yL={class:"center-hint"},kL={class:"actions"},bL=3,wL=Ie({__name:"LoginDialog",props:{onStartOAuthLogin:{type:Function},onPollOAuthLogin:{type:Function},onCancelOAuthLogin:{type:Function}},emits:["success","close"],setup(e,{emit:t}){const{t:n}=Ue(),s=I(!0),o=t,i=e,u=I("starting"),p=I(!1),f=I(null),v=I(0),w=I(!1);let x=null,h=null,m=0;ht(async()=>{await _()}),kt(()=>{k()});async function _(){k(),f.value=null,p.value=!1,m=0,u.value="starting";const E=await i.onStartOAuthLogin();if(!E){u.value="error";return}if(E.status==="authenticated"){k(),u.value="success",setTimeout(()=>{o("success"),o("close")},800);return}f.value={flowId:E.flowId,verificationUri:E.verificationUri,verificationUriComplete:E.verificationUriComplete,userCode:E.userCode,expiresIn:E.expiresIn,interval:E.interval},v.value=E.expiresIn,u.value="device-code",y(),g(E.interval)}function y(){h&&clearInterval(h),h=setInterval(()=>{v.value>0?v.value--:(h&&clearInterval(h),h=null)},1e3)}function g(E){x&&clearTimeout(x),x=setTimeout(async()=>{const B=await i.onPollOAuthLogin();if(B===null){if(m+=1,m>=bL){k(),p.value=!0,u.value="error";return}g(E);return}m=0,B.status==="authenticated"?(k(),u.value="success",setTimeout(()=>{o("success"),o("close")},1200)):B.status==="expired"||B.status==="cancelled"?(k(),u.value="expired"):g(E)},E*1e3)}function k(){x&&(clearTimeout(x),x=null),h&&(clearInterval(h),h=null)}async function T(){await _()}async function S(){!f.value||!await un(f.value.userCode)||(w.value=!0,setTimeout(()=>{w.value=!1},2e3))}async function O(){k(),u.value==="device-code"&&i.onCancelOAuthLogin(),o("close")}function D(E){const B=Math.floor(E/60),q=E%60;return`${B}:${String(q).padStart(2,"0")}`}return(E,B)=>(a(),G(vs,{open:s.value,"onUpdate:open":B[0]||(B[0]=q=>s.value=q),title:l(n)("login.title"),"close-on-overlay":!1,onClose:O},{default:H(()=>[u.value==="starting"?(a(),c("div",QE,[M(Dt,{size:"md"}),r("span",YE,d(l(n)("login.starting")),1)])):u.value==="device-code"&&f.value?(a(),c("div",ZE,[r("div",XE,d(l(n)("login.lead")),1),r("a",{class:"nb-primary",href:f.value.verificationUriComplete,target:"_blank",rel:"noopener noreferrer"},[re(d(l(n)("login.authorizeInBrowser"))+" ",1),M(se,{name:"external-link",size:"sm"})],8,JE),r("div",eL,d(l(n)("login.orDivider")),1),r("div",tL,[r("div",nL,[re(d(l(n)("login.fallbackPrefix")),1),r("a",{class:"nb-fb-link",href:f.value.verificationUri,target:"_blank",rel:"noopener noreferrer"},d(f.value.verificationUri),9,sL),re(d(l(n)("login.fallbackSuffix")),1)]),r("div",oL,[r("span",iL,d(f.value.userCode),1),M(qe,{class:fe(["nb-copy",{"is-copied":w.value}]),variant:"secondary",size:"sm",onClick:S},{default:H(()=>[w.value?(a(),c(he,{key:0},[M(se,{name:"check",size:"sm"}),re(" "+d(l(n)("login.copied")),1)],64)):(a(),c(he,{key:1},[M(se,{name:"copy",size:"sm"}),re(" "+d(l(n)("login.copy")),1)],64))]),_:1},8,["class"])])]),r("div",aL,[M(Dt,{size:"sm",label:l(n)("login.waitingAuth")},null,8,["label"]),r("span",lL,d(l(n)("login.waitingAutoClose")),1),r("span",rL,d(D(v.value)),1)])])):u.value==="success"?(a(),c("div",uL,[M(xa,{kind:"success"}),r("span",cL,d(l(n)("login.success")),1),r("span",dL,d(l(n)("login.successHint")),1)])):u.value==="expired"?(a(),c(he,{key:3},[r("div",pL,[M(xa,{kind:"expired"}),r("span",fL,d(l(n)("login.expiredTitle")),1),r("span",mL,d(l(n)("login.expiredHint")),1)]),r("div",vL,[M(qe,{variant:"primary",onClick:T},{default:H(()=>[re(d(l(n)("login.retry")),1)]),_:1}),M(qe,{variant:"secondary",onClick:O},{default:H(()=>[re(d(l(n)("login.closeBtn")),1)]),_:1})])],64)):u.value==="error"?(a(),c(he,{key:4},[r("div",hL,[M(xa,{kind:"error"}),r("span",gL,d(p.value?l(n)("login.pollErrorTitle"):l(n)("login.errorTitle")),1),r("span",yL,d(p.value?l(n)("login.pollErrorHint"):l(n)("login.errorHint")),1)]),r("div",kL,[M(qe,{variant:"primary",onClick:T},{default:H(()=>[re(d(l(n)("login.retry")),1)]),_:1}),M(qe,{variant:"secondary",onClick:O},{default:H(()=>[re(d(l(n)("login.closeBtn")),1)]),_:1})])],64)):A("",!0)]),_:1},8,["open","title"]))}}),SL=Ee(wL,[["__scopeId","data-v-8308a28f"]]),uu=1,CL=6,_L=.25;function bd(e){return Number.isFinite(e)?Math.min(CL,Math.max(uu,e)):uu}function $L(e){return Math.round(e*100)/100}function wd(e,t){return bd($L(e+t*_L))}function ML(e){return wd(e,1)}function xL(e){return wd(e,-1)}function cu(e,t,n){const s=Math.max(0,(t-n)/2);return Math.min(s,Math.max(-s,e))}const IL=["aria-label"],AL={key:0,class:"ml-loading"},TL=["src","alt"],PL={key:0,class:"ml-zoom-hint"},EL=["src"],LL={key:3,class:"ml-error"},BL={key:4,class:"ml-toolbar"},RL=["aria-label"],OL={class:"ml-zoom-label"},DL=["aria-label"],zL=["disabled","aria-label"],FL=Ie({__name:"MediaLightbox",props:{state:{}},emits:["close"],setup(e,{emit:t}){const n=e,s=t,{t:o}=Ue(),i=I(1),u=I(0),p=I(0);Oe(()=>n.state?.media,()=>{i.value=1,u.value=0,p.value=0});const f=$(()=>n.state?.media.kind==="image"),v=$(()=>{const B=i.value;return B<=1?"":`scale(${B}) translate(${u.value}px, ${p.value}px)`});function w(B){if(!f.value)return;B.preventDefault();const q=bd(i.value+(B.deltaY<0?.25:-.25));i.value=q,h()}const x=I(null);function h(){const B=x.value;B&&(u.value=cu(u.value,B.clientWidth*i.value,B.clientWidth),p.value=cu(p.value,B.clientHeight*i.value,B.clientHeight))}function m(){i.value=ML(i.value),h()}function _(){i.value=xL(i.value),h()}function y(){i.value=1,u.value=0,p.value=0}const g=I(!1);let k=0,T=0;function S(B){!f.value||i.value<=1||(g.value=!0,k=B.clientX,T=B.clientY,B.target.setPointerCapture?.(B.pointerId))}function O(B){g.value&&(u.value+=B.clientX-k,p.value+=B.clientY-T,k=B.clientX,T=B.clientY,h())}function D(B){g.value=!1,B.target.releasePointerCapture?.(B.pointerId)}function E(B){B.key==="Escape"?s("close"):B.key==="+"||B.key==="="?m():B.key==="-"?_():B.key==="0"&&y()}return(B,q)=>(a(),G(lo,{to:"body"},[e.state?(a(),c("div",{key:0,class:"media-lightbox",role:"dialog","aria-modal":"true",tabindex:"-1",onKeydown:E},[r("div",{class:"ml-backdrop",onClick:q[0]||(q[0]=V=>s("close"))}),r("button",{type:"button",class:"ml-close","aria-label":l(o)("common.close"),onClick:q[1]||(q[1]=V=>s("close"))},[M(se,{name:"close"})],8,IL),e.state.loading?(a(),c("div",AL,[M(Dt)])):e.state.sourceUrl&&f.value?(a(),c("div",{key:1,ref_key:"viewportRef",ref:x,class:"ml-viewport",onWheel:w,onPointerdown:S,onPointermove:O,onPointerup:D,onPointercancel:D},[r("img",{class:"ml-image",src:e.state.sourceUrl,alt:e.state.media.path??"",style:rt({transform:v.value}),draggable:"false"},null,12,TL),i.value>1?(a(),c("div",PL,d(l(o)("media.dragHint")),1)):A("",!0)],544)):e.state.sourceUrl&&!f.value?(a(),c("video",{key:2,class:"ml-video",src:e.state.sourceUrl,controls:"",autoplay:"",playsinline:""},null,8,EL)):(a(),c("div",LL,[r("p",null,d(e.state.error??l(o)("media.noPreview")),1)])),e.state.sourceUrl&&f.value?(a(),c("div",BL,[r("button",{type:"button",class:"ml-btn","aria-label":l(o)("media.zoomOut"),onClick:_},[M(se,{name:"minus"})],8,RL),r("span",OL,d(Math.round(i.value*100))+"%",1),r("button",{type:"button",class:"ml-btn","aria-label":l(o)("media.zoomIn"),onClick:m},[M(se,{name:"plus"})],8,DL),r("button",{type:"button",class:"ml-btn",disabled:i.value<=1,"aria-label":l(o)("media.resetZoom"),onClick:y},[M(se,{name:"expand"})],8,zL)])):A("",!0)],32)):A("",!0)]))}}),NL=Ee(FL,[["__scopeId","data-v-0ff39638"]]);function Ja(e){return/^(?:https?:|blob:|data:)/i.test(e)}function qL({client:e,detailTarget:t}){const{t:n}=Ue(),s=I(null),o=I(null),i=I(!1),u=I(null),p=I(null);let f=0,v=null;function w(){v!==null&&(URL.revokeObjectURL(v),v=null)}const x=$(()=>{const B=p.value;return B?e.getFileDownloadUrl(B):null}),h=$(()=>s.value!==null);function m(B){return B.length>1?B.replace(/\/+$/,""):B}function _(B){const q=[];for(const V of B.split(/[\\/]+/))if(!(!V||V===".")){if(V===".."){q.pop();continue}q.push(V)}return q.join("/")}function y(B){const q=B.trim();if(!q)return{error:n("filePreview.errors.emptyPath")};if(/^[a-z][a-z0-9+.-]*:\/\//i.test(q))return{error:n("filePreview.errors.unsupportedPath")};if(q.startsWith("~"))return{error:n("filePreview.errors.outsideWorkspace")};const V=m(e.status.value.cwd);if(q.startsWith("/")){if(!V||q!==V&&!q.startsWith(`${V}/`))return{error:n("filePreview.errors.outsideWorkspace")};const P=q===V?"":q.slice(V.length+1);if(P.split(/[\\/]+/).includes(".."))return{error:n("filePreview.errors.outsideWorkspace")};const L=_(P);return L?{path:L}:{error:n("filePreview.errors.isDirectory")}}if(q.split(/[\\/]+/).includes(".."))return{error:n("filePreview.errors.outsideWorkspace")};const b=_(q);return b?{path:b}:{error:n("filePreview.errors.emptyPath")}}async function g(B){const q=s.value;if(t.value==="file"&&q&&q.path===B.path&&q.line===B.line){O();return}const V=++f;w(),t.value="file",o.value=null,u.value=null,i.value=!0,s.value=B,p.value=null;const b=y(B.path);if("error"in b){i.value=!1,u.value=b.error;return}p.value=b.path;try{const P=await e.readFileContent(b.path);if(V!==f)return;P?o.value={...P,path:P.path||b.path}:u.value=n("filePreview.errors.loadFailed")}catch(P){if(V!==f)return;u.value=P instanceof Error?P.message:n("filePreview.errors.loadFailed")}finally{V===f&&(i.value=!1)}}function k(B){return/^data:([^;,]+)/i.exec(B)?.[1]}function T(B){if(B.kind!=="image"&&B.kind!=="video")return;const q=++f;w(),t.value="file",s.value=null,p.value=null,u.value=null;const V=B.kind==="video",b={path:B.path??n(V?"filePreview.videoFallback":"filePreview.imageFallback"),content:"",encoding:"utf-8",mime:B.mimeType??k(B.url)??(V?"video/*":"image/*"),isBinary:!0,size:B.bytes??0};B.fileId?(i.value=!0,o.value=b,Te().getFileBlob(B.fileId).then(P=>{if(q===f){if(t.value!=="file"||!o.value){i.value=!1;return}v=URL.createObjectURL(P),o.value={...o.value,sourceUrl:v},i.value=!1}}).catch(()=>{q===f&&(o.value&&(o.value={...o.value,sourceUrl:B.url}),i.value=!1)})):(i.value=!1,o.value=Ja(B.url)?{...b,sourceUrl:B.url}:b)}function S(){f+=1,s.value=null,p.value=null,o.value=null,u.value=null,i.value=!1,w()}function O(){S(),t.value==="file"&&(t.value=null)}Oe(t,(B,q)=>{q==="file"&&B!=="file"&&S()});function D(){const B=o.value?.path??s.value?.path;B&&e.openWorkspaceFile(B,s.value?.line)}function E(){const B=o.value?.path??s.value?.path;B&&e.revealWorkspaceFile(B)}return{previewTarget:s,previewFile:o,previewLoading:i,previewError:u,previewDownloadUrl:x,previewExternalActions:h,openFilePreview:g,openMediaPreview:T,closeFilePreview:O,openPreviewInEditor:D,revealPreviewFile:E}}function WL(e=Te()){const{t}=Ue(),n=I(null),s=$(()=>n.value!==null);let o=0;function i(p){if(p.kind!=="image"&&p.kind!=="video")return;const f=++o,v=!!p.fileId;if(n.value={media:p,sourceUrl:null,loading:v,error:null},!p.fileId){n.value={media:p,sourceUrl:Ja(p.url)?p.url:null,loading:!1,error:null};return}e.getFileBlob(p.fileId).then(w=>{if(f!==o||!n.value)return;const x=URL.createObjectURL(w);n.value={media:p,sourceUrl:x,loading:!1,error:null}}).catch(()=>{f!==o||!n.value||(n.value={media:p,sourceUrl:Ja(p.url)?p.url:null,loading:!1,error:t("filePreview.errors.loadFailed")})})}function u(){o+=1,n.value=null}return{isOpen:s,state:n,open:i,close:u}}function HL(e,t){const n=[...e];return t==="archived-desc"?n.sort((s,o)=>o.updatedAt.localeCompare(s.updatedAt)):t==="created-desc"?n.sort((s,o)=>o.createdAt.localeCompare(s.createdAt)):n.sort((s,o)=>s.title.localeCompare(o.title,"zh")),n}function UL(e,t){const n=new Set(e.map(o=>o.id)),s=t.filter(o=>!n.has(o.id));return[...e,...s]}const Sd=Ie({__name:"LanguageSwitcher",setup(e){const{locale:t}=Ue(),n=Tu.map(o=>({value:o.code,label:o.label}));function s(o){t.value!==o&&Pu(o)}return(o,i)=>(a(),G(cn,{"model-value":l(t),options:l(n),"onUpdate:modelValue":s},null,8,["model-value","options"]))}}),VL=["href","target","rel"],jL=Ie({__name:"Link",props:{href:{},variant:{default:"default"},external:{type:Boolean}},setup(e){return(t,n)=>e.href?(a(),c("a",{key:0,class:fe(["ui-link",`ui-link--${e.variant}`]),href:e.href,target:e.external?"_blank":void 0,rel:e.external?"noopener noreferrer":void 0},[yt(t.$slots,"default",{},void 0,!0)],10,VL)):(a(),c("span",{key:1,class:fe(["ui-link",`ui-link--${e.variant}`])},[yt(t.$slots,"default",{},void 0,!0)],2))}}),du=Ee(jL,[["__scopeId","data-v-645e7d4e"]]),KL=["aria-checked","aria-label","disabled"],GL=Ie({__name:"Switch",props:{modelValue:{type:Boolean},disabled:{type:Boolean},label:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=t;return(s,o)=>(a(),c("button",{class:fe(["ui-switch",{"is-on":e.modelValue}]),type:"button",role:"switch","aria-checked":e.modelValue,"aria-label":e.label,disabled:e.disabled,onClick:o[0]||(o[0]=i=>n("update:modelValue",!e.modelValue))},[...o[1]||(o[1]=[r("span",{class:"ui-switch__thumb"},null,-1)])],10,KL))}}),ds=Ee(GL,[["__scopeId","data-v-e5aecc8e"]]),QL={class:"ps"},YL={class:"ext-hint-title"},ZL={key:1,class:"action-error"},XL={class:"plug-sec"},JL={class:"plug-title"},eB={key:0,class:"plug-state"},tB={key:1,class:"plug-state is-error"},nB={key:3,class:"plug-list"},sB={class:"plug-info"},oB={class:"plug-name"},iB={class:"plug-display"},aB={key:0,class:"plug-version"},lB={key:0,class:"plug-counts"},rB={class:"plug-actions"},uB={class:"plug-sec"},cB={class:"plug-sec-head"},dB={class:"plug-title"},pB={key:0,class:"plug-state"},fB={key:1,class:"plug-state is-error"},mB={key:3,class:"plug-list"},vB={class:"plug-info"},hB={class:"plug-name"},gB={class:"plug-display"},yB={key:0,class:"plug-desc"},kB={key:1,class:"plug-home"},bB={class:"plug-actions"},wB={class:"plug-sec"},SB={class:"plug-title"},CB={key:0,class:"plug-state"},_B={key:1,class:"plug-state is-error"},$B={key:3,class:"plug-list"},MB={class:"plug-info"},xB={class:"plug-name"},IB={class:"plug-display"},AB={key:0,class:"plug-desc"},TB={key:1,class:"cap-progress"},PB={class:"cap-progress-text"},EB={class:"cap-progress-track","aria-hidden":"true"},LB={key:2,class:"cap-error"},BB={key:3,class:"cap-steps"},RB={key:2,class:"cap-step-missing","aria-hidden":"true"},OB={class:"cap-step-label"},DB={class:"plug-actions"},Ia="kimi-webbridge",zB=Ie({__name:"PluginSettingsPanel",props:{active:{type:Boolean}},setup(e){const{t}=Ue(),{confirm:n}=go(),s=e,o=I([]),i=I(!1),u=I(""),p=I([]),f=I("idle"),v=I([]),w=I(!1),x=I(""),h=I(!1),m=I(""),_=Bn({}),y=Bn({});async function g(){if(!i.value){i.value=!0,u.value="";try{o.value=await Te().listPlugins()}catch(Y){u.value=O(Y)}finally{i.value=!1}}}async function k(){if(f.value!=="loading"){f.value="loading";try{p.value=await Te().listPluginMarketplace(),f.value="ok"}catch{p.value.length===0?f.value="error":f.value="ok"}}}async function T(){if(!w.value){w.value=!0,x.value="";try{v.value=await Te().listCapabilities()}catch(Y){x.value=O(Y)}finally{w.value=!1}}}function S(){g(),k(),T()}function O(Y){return Mn(Y)&&Y.message?Y.message:t("settings.plugins.loadFailed")}Oe(()=>s.active,Y=>{Y&&!h.value&&(h.value=!0,S())},{immediate:!0});let D;ht(()=>{D=Bk(Y=>{if(Y.type==="pluginsChanged"){S();return}Ce(Y.capabilityId,Y.install),Y.install.running||(T(),g())})}),Ln(()=>{D?.()});function E(Y){return t(`settings.plugins.source.${Y}`)}function B(Y){const ve=(X,me)=>t(`settings.plugins.counts.${X}`,{n:me}),R=[];return Y.skillCount>0&&R.push(ve("skill",Y.skillCount)),Y.mcpServerCount>0&&R.push(ve("mcp",Y.mcpServerCount)),Y.enabledMcpServerCount>0&&R.push(ve("mcpEnabled",Y.enabledMcpServerCount)),Y.hookCount>0&&R.push(ve("hook",Y.hookCount)),Y.commandCount>0&&R.push(ve("command",Y.commandCount)),R.join(" · ")}async function q(Y,ve){if(!_[Y.id]){_[Y.id]=!0,m.value="";try{await Te().setPluginEnabled(Y.id,ve),await g()}catch(R){m.value=O(R)}finally{delete _[Y.id]}}}async function V(Y){m.value="";try{await n({title:t("settings.plugins.remove"),message:t("settings.plugins.confirmRemove"),variant:"danger",action:()=>Te().removePlugin(Y.id)})&&await g()}catch(ve){m.value=O(ve)}}function b(Y){return Y==="official"?t("settings.plugins.official"):Y==="third-party"?t("settings.plugins.thirdParty"):null}async function P(Y){if(!_[Y.id]){_[Y.id]=!0,m.value="";try{const ve=Y.capabilityId;ve!==void 0?(await Te().installCapability(ve,R=>{Ce(ve,R.install)}),await T()):await Te().installPlugin(Y.source),await g(),await k()}catch(ve){m.value=O(ve)}finally{delete _[Y.id]}}}const L=I(!1),ne=I(""),oe=I(!1),ge=I("");function ce(){ne.value="",ge.value="",L.value=!0}function Q(){oe.value||(L.value=!1)}async function ie(){const Y=ne.value.trim();if(!ty(Y)){ge.value=t("settings.plugins.customInstallHint");return}ge.value="",oe.value=!0;try{await Te().installPlugin(Y),L.value=!1,await g()}catch(ve){ge.value=O(ve)}finally{oe.value=!1}}function te(Y){return t(`settings.plugins.capabilityStates.${Y}`)}function ye(Y){return Y==="ready"?"success":Y==="partial"?"warning":"neutral"}function _e(Y){return ny(Y.install,Y.state)}function Ce(Y,ve){v.value=v.value.map(R=>R.id===Y?{...R,install:Nu(R.install,ve)}:R)}async function Z(Y){if(!y[Y.id]){y[Y.id]=!0,m.value="";try{await Te().installCapability(Y.id,ve=>{Ce(Y.id,ve.install)}),await T(),await g()}catch(ve){Mn(ve)&&ve.code===Ak?m.value=t("settings.plugins.capabilityStates.unsupported"):m.value=O(ve),await T()}finally{delete y[Y.id]}}}function U(Y){const ve=Y.install.percent;if(!(typeof ve!="number"||Number.isNaN(ve)))return Math.min(100,Math.max(0,Math.round(ve)))}const ke=I(It(We.pluginExtensionHintDismissed)==="1"),ae=$(()=>v.value.find(Y=>Y.id===Ia)),ee=$(()=>p.value.find(ve=>ve.capabilityId===Ia||ve.id===Ia)?.homepage),de=$(()=>{if(ke.value)return!1;const Y=ae.value;return Y!==void 0&&Y.supported&&Y.state!=="ready"});function Be(){ke.value=!0,Bt(We.pluginExtensionHintDismissed,"1")}return(Y,ve)=>(a(),c("div",QL,[de.value?(a(),G(ad,{key:0,variant:"info",class:"ext-hint"},{default:H(()=>[r("span",YL,d(l(t)("settings.plugins.extensionHintTitle")),1),ee.value?(a(),G(du,{key:0,href:ee.value,external:"",class:"ext-hint-guide"},{default:H(()=>[re(d(l(t)("settings.plugins.extensionGuide")),1)]),_:1},8,["href"])):A("",!0),M(nt,{size:"sm",class:"ext-hint-dismiss",label:l(t)("settings.plugins.dismissHint"),onClick:Be},{default:H(()=>[M(se,{name:"close",size:"sm"})]),_:1},8,["label"])]),_:1})):A("",!0),m.value?(a(),c("div",ZL,[M(se,{name:"alert-triangle",size:"sm"}),r("span",null,d(m.value),1)])):A("",!0),r("section",XL,[r("h3",JL,d(l(t)("settings.plugins.sections.installed")),1),i.value?(a(),c("div",eB,[M(Dt,{size:"sm"}),r("span",null,d(l(t)("settings.plugins.loading")),1)])):u.value?(a(),c("div",tB,[r("span",null,d(u.value),1),M(qe,{variant:"secondary",size:"sm",onClick:g},{default:H(()=>[re(d(l(t)("settings.plugins.retry")),1)]),_:1})])):o.value.length===0?(a(),G(Qo,{key:2,title:l(t)("settings.plugins.empty")},null,8,["title"])):(a(),c("div",nB,[(a(!0),c(he,null,Pe(o.value,R=>(a(),c("div",{key:R.id,class:"plug-row"},[r("div",sB,[r("div",oB,[r("span",iB,d(R.displayName||R.id),1),R.version?(a(),c("span",aB,d(R.version),1)):A("",!0),M(Ot,{variant:"neutral",size:"sm"},{default:H(()=>[re(d(E(R.source)),1)]),_:2},1024),R.hasErrors?(a(),G(Ot,{key:1,variant:"danger",size:"sm"},{default:H(()=>[re(d(l(t)("settings.plugins.hasErrors")),1)]),_:1})):A("",!0)]),B(R)?(a(),c("div",lB,d(B(R)),1)):A("",!0)]),r("div",rB,[M(ds,{"model-value":R.enabled,disabled:_[R.id]===!0,label:l(t)("settings.plugins.enabled"),"onUpdate:modelValue":X=>q(R,X)},null,8,["model-value","disabled","label","onUpdate:modelValue"]),M(qe,{variant:"danger-soft",size:"sm",disabled:_[R.id]===!0,onClick:X=>V(R)},{default:H(()=>[re(d(l(t)("settings.plugins.remove")),1)]),_:1},8,["disabled","onClick"])])]))),128))]))]),r("section",uB,[r("div",cB,[r("h3",dB,d(l(t)("settings.plugins.sections.marketplace")),1),M(qe,{variant:"secondary",size:"sm",onClick:ce},{default:H(()=>[M(se,{name:"plus",size:"sm"}),re(" "+d(l(t)("settings.plugins.customInstall")),1)]),_:1})]),f.value==="loading"?(a(),c("div",pB,[M(Dt,{size:"sm"}),r("span",null,d(l(t)("settings.plugins.loading")),1)])):f.value==="error"?(a(),c("div",fB,[r("span",null,d(l(t)("settings.plugins.catalogUnavailable")),1),M(qe,{variant:"secondary",size:"sm",onClick:k},{default:H(()=>[re(d(l(t)("settings.plugins.retry")),1)]),_:1})])):p.value.length===0?(a(),G(Qo,{key:2,title:l(t)("settings.plugins.empty")},null,8,["title"])):(a(),c("div",mB,[(a(!0),c(he,null,Pe(p.value,R=>(a(),c("div",{key:R.id,class:"plug-row"},[r("div",vB,[r("div",hB,[r("span",gB,d(R.displayName||R.id),1),b(R.tier)?(a(),G(Ot,{key:0,variant:"info",size:"sm"},{default:H(()=>[re(d(b(R.tier)),1)]),_:2},1024)):A("",!0),R.installed?(a(),G(Ot,{key:1,variant:"success",size:"sm"},{default:H(()=>[re(d(l(t)("settings.plugins.installed")),1)]),_:1})):A("",!0),R.updateAvailable?(a(),G(Ot,{key:2,variant:"warning",size:"sm"},{default:H(()=>[re(d(l(t)("settings.plugins.update")),1)]),_:1})):A("",!0)]),R.description?(a(),c("p",yB,d(R.description),1)):A("",!0),R.homepage?(a(),c("div",kB,[M(du,{href:R.homepage,external:""},{default:H(()=>[re(d(l(t)("settings.plugins.homepage")),1)]),_:1},8,["href"])])):A("",!0)]),r("div",bB,[R.updateAvailable?(a(),G(qe,{key:0,variant:"primary",size:"sm",loading:_[R.id]===!0,disabled:_[R.id]===!0,onClick:X=>P(R)},{default:H(()=>[re(d(l(t)("settings.plugins.update")),1)]),_:1},8,["loading","disabled","onClick"])):R.installed?(a(),G(qe,{key:1,variant:"secondary",size:"sm",disabled:""},{default:H(()=>[re(d(l(t)("settings.plugins.installed")),1)]),_:1})):(a(),G(qe,{key:2,variant:"primary",size:"sm",loading:_[R.id]===!0,disabled:_[R.id]===!0,onClick:X=>P(R)},{default:H(()=>[re(d(l(t)("settings.plugins.install")),1)]),_:1},8,["loading","disabled","onClick"]))])]))),128))]))]),r("section",wB,[r("h3",SB,d(l(t)("settings.plugins.sections.capabilities")),1),w.value?(a(),c("div",CB,[M(Dt,{size:"sm"}),r("span",null,d(l(t)("settings.plugins.loading")),1)])):x.value?(a(),c("div",_B,[r("span",null,d(x.value),1),M(qe,{variant:"secondary",size:"sm",onClick:T},{default:H(()=>[re(d(l(t)("settings.plugins.retry")),1)]),_:1})])):v.value.length===0?(a(),G(Qo,{key:2,title:l(t)("settings.plugins.capabilitiesUnavailable")},null,8,["title"])):(a(),c("div",$B,[(a(!0),c(he,null,Pe(v.value,R=>(a(),c("div",{key:R.id,class:"plug-row"},[r("div",MB,[r("div",xB,[r("span",IB,d(R.displayName||R.id),1),M(Ot,{variant:ye(R.state),size:"sm"},{default:H(()=>[re(d(te(R.state)),1)]),_:2},1032,["variant"])]),R.description?(a(),c("p",AB,d(R.description),1)):A("",!0),_e(R).phase==="installing"?(a(),c("div",TB,[r("span",PB,[re(d(l(t)("settings.plugins.installing"))+" ",1),_e(R).step?(a(),c(he,{key:0},[re(" · "+d(_e(R).step),1)],64)):A("",!0),U(R)!==void 0?(a(),c(he,{key:1},[re(" · "+d(U(R))+"% ",1)],64)):A("",!0)]),r("span",EB,[r("span",{class:"cap-progress-fill",style:rt({width:`${U(R)??0}%`})},null,4)])])):_e(R).phase==="error"?(a(),c("div",LB,[M(se,{name:"alert-triangle",size:"sm"}),r("span",null,d(_e(R).error),1)])):A("",!0),R.steps.length>0?(a(),c("ul",BB,[(a(!0),c(he,null,Pe(R.steps,X=>(a(),c("li",{key:X.id,class:"cap-step"},[X.state==="ok"?(a(),G(se,{key:0,name:"check",size:"sm",class:"cap-step-ok"})):X.state==="failed"?(a(),G(se,{key:1,name:"alert-triangle",size:"sm",class:"cap-step-bad"})):(a(),c("span",RB)),r("span",OB,d(X.id),1)]))),128))])):A("",!0)]),r("div",DB,[R.state!=="ready"&&R.state!=="unsupported"&&R.supported?(a(),G(qe,{key:0,variant:"primary",size:"sm",loading:y[R.id]===!0,disabled:y[R.id]===!0,onClick:X=>Z(R)},{default:H(()=>[re(d(l(t)("settings.plugins.install")),1)]),_:1},8,["loading","disabled","onClick"])):A("",!0)])]))),128))]))]),M(vs,{open:L.value,title:l(t)("settings.plugins.customInstall"),size:"md",onClose:Q},{foot:H(()=>[M(qe,{variant:"primary",size:"sm",loading:oe.value,disabled:oe.value,onClick:ie},{default:H(()=>[re(d(l(t)("settings.plugins.install")),1)]),_:1},8,["loading","disabled"]),M(qe,{variant:"secondary",size:"sm",disabled:oe.value,onClick:Q},{default:H(()=>[re(d(l(t)("common.cancel")),1)]),_:1},8,["disabled"])]),default:H(()=>[M($s,{label:l(t)("settings.plugins.customInstall"),hint:l(t)("settings.plugins.customInstallHint"),error:ge.value},{default:H(()=>[M(Kn,{modelValue:ne.value,"onUpdate:modelValue":ve[0]||(ve[0]=R=>ne.value=R),placeholder:l(t)("settings.plugins.customInstallPlaceholder"),disabled:oe.value,spellcheck:"false",autocomplete:"off",onKeyup:En(ie,["enter"])},null,8,["modelValue","placeholder","disabled"])]),_:1},8,["label","hint","error"])]),_:1},8,["open","title"])]))}}),FB=Ee(zB,[["__scopeId","data-v-8c64da0f"]]),NB=["aria-label"],qB=["aria-selected","onClick"],WB={class:"body"},HB={class:"panel"},UB={class:"sec"},VB={class:"sec-title"},jB={class:"row"},KB={class:"rlabel"},GB={class:"row"},QB={class:"rlabel"},YB={class:"row"},ZB={class:"rlabel"},XB={class:"num-field"},JB=["value","aria-label"],eR={class:"row"},tR={class:"rlabel"},nR={class:"row"},sR={class:"rlabel"},oR={class:"hint"},iR={class:"sec"},aR={class:"sec-title"},lR={class:"row"},rR={class:"rlabel"},uR={key:0,class:"hint"},cR={class:"row"},dR={class:"rlabel"},pR={key:0,class:"hint"},fR={class:"row"},mR={class:"rlabel"},vR={key:0,class:"hint"},hR={class:"row"},gR={class:"rlabel"},yR={class:"panel"},kR={class:"sec"},bR={class:"sec-title"},wR={class:"row"},SR={class:"rlabel"},CR={key:0,class:"rvalue"},_R={class:"actions"},$R={class:"panel"},MR={class:"sec"},xR={class:"sec-head"},IR={class:"sec-title"},AR={key:0,class:"saving"},TR={class:"row"},PR={class:"rlabel"},ER={class:"hint"},LR={key:0,class:"select-wrap"},BR={key:0,value:"",disabled:""},RR=["label"],OR=["value"],DR={key:1,class:"rvalue mono"},zR={class:"row"},FR={class:"rlabel"},NR={class:"hint"},qR={class:"row"},WR={class:"rlabel"},HR={class:"hint"},UR={class:"row"},VR={class:"rlabel"},jR={class:"hint"},KR={class:"row"},GR={class:"rlabel"},QR={class:"hint"},YR={key:1,class:"empty-config"},ZR={class:"panel plugins-panel"},XR={class:"panel"},JR={class:"sec"},eO={class:"sec-title"},tO={class:"row"},nO={class:"rlabel"},sO={class:"rvalue mono"},oO={class:"row"},iO={class:"rlabel"},aO={class:"rvalue mono"},lO={class:"row"},rO={class:"rlabel"},uO={class:"rvalue mono"},cO={key:0,class:"row"},dO={class:"rlabel"},pO={class:"hint"},fO={class:"hint"},mO={class:"row"},vO={class:"rlabel"},hO={key:0,class:"hint"},gO={class:"panel"},yO={class:"panel-head"},kO={class:"panel-kicker"},bO={class:"panel-title"},wO={class:"panel-desc"},SO={class:"archive-toolbar"},CO={class:"archive-search"},_O=["placeholder"],$O={value:"all"},MO=["value"],xO={key:0,class:"archive-empty"},IO={key:0,class:"archive-list"},AO={class:"archive-workspace"},TO={class:"path"},PO={class:"count"},EO={class:"setting-card"},LO={class:"archive-meta"},BO={class:"archive-name"},RO={class:"archive-time"},OO=["disabled"],DO={key:1,class:"archive-empty"},zO=50,FO=Ie({__name:"SettingsDialog",props:{colorScheme:{},accent:{},uiFontSize:{},authReady:{type:Boolean},accountModel:{},notify:{type:Boolean},notifyQuestion:{type:Boolean},notifyApproval:{type:Boolean},notifyPermission:{},sound:{type:Boolean},conversationToc:{type:Boolean},config:{},models:{},configSaving:{type:Boolean},serverVersion:{},backend:{}},emits:["setColorScheme","setAccent","setUiFontSize","setNotify","setNotifyQuestion","setNotifyApproval","setSound","setConversationToc","login","logout","openOnboarding","openProviders","updateConfig","close"],setup(e,{emit:t}){const{t:n}=Ue(),s=e,o=t,i=I("general"),u=[{id:"general",labelKey:"settings.tabs.general"},{id:"agent",labelKey:"settings.tabs.agent"},{id:"account",labelKey:"settings.tabs.account"},{id:"plugins",labelKey:"settings.tabs.plugins"},{id:"advanced",labelKey:"settings.tabs.advanced"},{id:"archived",labelKey:"settings.tabs.archived"}],p=ep(),f=$(()=>s.backend==="v2"?"v2 (kap-server)":"v1 (server)"),v=["manual","yolo","auto"],w={manual:"status.permissionManual",auto:"status.permissionAuto",yolo:"status.permissionYolo"},x=I(null);Ol(x);function h(ae){ae.key==="Escape"&&o("close")}ht(()=>document.addEventListener("keydown",h)),kt(()=>document.removeEventListener("keydown",h));function m(){Bu()}const _=$(()=>{const ae=new Map;for(const ee of s.models??[])ae.set(ee.id,{id:ee.id,label:ee.displayName??ee.model??ee.id,provider:ee.provider});for(const[ee,de]of Object.entries(s.config?.models??{})){if(ae.has(ee))continue;const Be=k(de);ae.set(ee,{id:ee,label:T(ee,de,Be),provider:Be??ee})}return Array.from(ae.values())}),y=$(()=>{const ae=new Map;for(const ee of _.value){const de=ae.get(ee.provider)??[];de.push(ee),ae.set(ee.provider,de)}for(const ee of ae.values())ee.sort((de,Be)=>de.label.localeCompare(Be.label));return Array.from(ae.entries()).toSorted(([ee],[de])=>ee.localeCompare(de)).map(([ee,de])=>({provider:ee,options:de}))}),g=$(()=>{const ae=s.config?.defaultPermissionMode;return ae==="auto"||ae==="yolo"||ae==="manual"?ae:"manual"});function k(ae){if(!ae||typeof ae!="object")return;const ee=ae;return typeof ee.provider=="string"?ee.provider:void 0}function T(ae,ee,de){if(!ee||typeof ee!="object")return ae;const Be=ee,Y=typeof Be.model=="string"?Be.model:void 0,ve=de??k(ee);return Y&&ve?`${ae} (${ve}/${Y})`:Y?`${ae} (${Y})`:ae}function S(ae){return ae===!0}function O(ae){!ae||ae===s.config?.defaultModel||o("updateConfig",{defaultModel:ae})}function D(ae){ae!==g.value&&o("updateConfig",{defaultPermissionMode:ae})}function E(ae){const ee=s.config?.[ae];o("updateConfig",{[ae]:!S(ee)})}function B(){const ae=s.config?.thinking;return!ae||typeof ae!="object"?!0:ae.enabled!==!1}function q(){o("updateConfig",{thinking:{enabled:!B()}})}function V(){const ae=s.config?.telemetry!==!1;o("updateConfig",{telemetry:!ae})}function b(ae){i.value=ae}const P=Ji(),L=I([]),ne=I(!1),oe=I(!1),ge=I(!1),ce=I(""),Q=I("all"),ie=I("archived-desc");let te;async function ye(ae){if(!ne.value){ne.value=!0;try{const ee=await P.loadArchivedSessions({beforeId:ae?void 0:te,pageSize:zO});L.value=ae?ee.items:UL(L.value,ee.items),te=ee.items.at(-1)?.id,ge.value=ee.hasMore&&ee.items.length>0,oe.value=!0}catch(ee){console.warn("fetchArchivedPage failed",ee)}finally{ne.value=!1}}}Oe(i,ae=>{ae==="archived"&&!oe.value&&ye(!0)});const _e=$(()=>{const ae=new Set;for(const ee of L.value)ae.add(ee.cwd);return Array.from(ae).sort((ee,de)=>ee.localeCompare(de))}),Ce=$(()=>{let ae=L.value.filter(de=>de.archived===!0);Q.value!=="all"&&(ae=ae.filter(de=>de.cwd===Q.value));const ee=ce.value.trim().toLowerCase();return ee&&(ae=ae.filter(de=>de.title.toLowerCase().includes(ee))),HL(ae,ie.value)}),Z=$(()=>{const ae=new Map;for(const ee of Ce.value){const de=ae.get(ee.cwd)??[];de.push(ee),ae.set(ee.cwd,de)}return Array.from(ae.entries()).map(([ee,de])=>({cwd:ee,items:de}))});async function U(ae){await P.restoreSession(ae)&&(L.value=L.value.filter(de=>de.id!==ae))}function ke(ae){const ee=new Date(ae);if(Number.isNaN(ee.getTime()))return ae;const de=Be=>String(Be).padStart(2,"0");return`${ee.getFullYear()}-${de(ee.getMonth()+1)}-${de(ee.getDate())} ${de(ee.getHours())}:${de(ee.getMinutes())}`}return(ae,ee)=>(a(),G(vs,{open:!0,"close-on-esc":!1,title:l(n)("settings.title"),size:"xl",height:"fixed",padded:!1,onClose:ee[20]||(ee[20]=de=>o("close"))},{default:H(()=>[r("div",{ref_key:"dialogRef",ref:x,class:"sd"},[r("nav",{class:"settings-tabs",role:"tablist","aria-label":l(n)("settings.title")},[(a(),c(he,null,Pe(u,de=>r("button",{key:de.id,type:"button",class:fe(["tab",{on:i.value===de.id}]),role:"tab","aria-selected":i.value===de.id,onClick:Be=>b(de.id)},d(l(n)(de.labelKey)),11,qB)),64))],8,NB),r("div",WB,[gt(r("section",HB,[r("section",UB,[r("h3",VB,d(l(n)("settings.appearance")),1),r("div",jB,[r("span",KB,d(l(n)("theme.colorSchemeLabel")),1),M(cn,{"model-value":e.colorScheme,options:[{value:"light",label:l(n)("theme.light")},{value:"dark",label:l(n)("theme.dark")},{value:"system",label:l(n)("theme.system")}],"onUpdate:modelValue":ee[0]||(ee[0]=de=>o("setColorScheme",de))},null,8,["model-value","options"])]),r("div",GB,[r("span",QB,d(l(n)("theme.accentLabel")),1),M(cn,{"model-value":e.accent,options:[{value:"blue",label:l(n)("theme.accentBlue")},{value:"mono",label:l(n)("theme.accentBlack")}],"onUpdate:modelValue":ee[1]||(ee[1]=de=>o("setAccent",de))},null,8,["model-value","options"])]),r("div",YB,[r("span",ZB,d(l(n)("settings.uiFontSize")),1),r("label",XB,[r("input",{class:"num-input",type:"number",min:"12",max:"20",step:"1",value:e.uiFontSize,"aria-label":l(n)("settings.uiFontSize"),onInput:ee[2]||(ee[2]=de=>o("setUiFontSize",Number(de.target.value)))},null,40,JB),ee[21]||(ee[21]=r("span",{class:"num-unit"},"px",-1))])]),r("div",eR,[r("span",tR,d(l(n)("sidebar.language")),1),M(Sd)]),r("div",nR,[r("span",sR,[re(d(l(n)("settings.conversationToc"))+" ",1),r("span",oR,d(l(n)("settings.conversationTocHint")),1)]),M(ds,{"model-value":e.conversationToc??!0,label:l(n)("settings.conversationToc"),"onUpdate:modelValue":ee[3]||(ee[3]=de=>o("setConversationToc",de))},null,8,["model-value","label"])])]),r("section",iR,[r("h3",aR,d(l(n)("settings.notifications")),1),r("div",lR,[r("span",rR,[re(d(l(n)("settings.notifyOnComplete"))+" ",1),e.notifyPermission==="denied"?(a(),c("span",uR,d(l(n)("settings.notifyDenied")),1)):A("",!0)]),M(ds,{"model-value":e.notify,disabled:e.notifyPermission==="denied",label:l(n)("settings.notifyOnComplete"),"onUpdate:modelValue":ee[4]||(ee[4]=de=>o("setNotify",de))},null,8,["model-value","disabled","label"])]),r("div",cR,[r("span",dR,[re(d(l(n)("settings.notifyOnQuestion"))+" ",1),e.notifyPermission==="denied"?(a(),c("span",pR,d(l(n)("settings.notifyDenied")),1)):A("",!0)]),M(ds,{"model-value":e.notifyQuestion,disabled:e.notifyPermission==="denied",label:l(n)("settings.notifyOnQuestion"),"onUpdate:modelValue":ee[5]||(ee[5]=de=>o("setNotifyQuestion",de))},null,8,["model-value","disabled","label"])]),r("div",fR,[r("span",mR,[re(d(l(n)("settings.notifyOnApproval"))+" ",1),e.notifyPermission==="denied"?(a(),c("span",vR,d(l(n)("settings.notifyDenied")),1)):A("",!0)]),M(ds,{"model-value":e.notifyApproval,disabled:e.notifyPermission==="denied",label:l(n)("settings.notifyOnApproval"),"onUpdate:modelValue":ee[6]||(ee[6]=de=>o("setNotifyApproval",de))},null,8,["model-value","disabled","label"])]),r("div",hR,[r("span",gR,d(l(n)("settings.soundOnComplete")),1),M(ds,{"model-value":e.sound,label:l(n)("settings.soundOnComplete"),"onUpdate:modelValue":ee[7]||(ee[7]=de=>o("setSound",de))},null,8,["model-value","label"])])])],512),[[Jn,i.value==="general"]]),gt(r("section",yR,[r("section",kR,[r("h3",bR,d(l(n)("settings.account")),1),r("div",wR,[r("span",SR,d(e.authReady?"managed:kimi-code":l(n)("sidebar.notSignedIn")),1),M(ot,{text:e.accountModel},{default:H(()=>[e.authReady&&e.accountModel?(a(),c("span",CR,d(e.accountModel),1)):A("",!0)]),_:1},8,["text"])]),r("div",_R,[M(qe,{variant:"secondary",size:"sm",onClick:ee[8]||(ee[8]=de=>{o("openOnboarding"),o("close")})},{default:H(()=>[re(d(l(n)("onboarding.reopen")),1)]),_:1}),e.authReady?(a(),G(qe,{key:0,variant:"danger-soft",size:"sm",onClick:ee[9]||(ee[9]=de=>o("logout"))},{default:H(()=>[re(d(l(n)("sidebar.signOut")),1)]),_:1})):(a(),G(qe,{key:1,variant:"primary",size:"sm",onClick:ee[10]||(ee[10]=de=>o("login"))},{default:H(()=>[re(d(l(n)("sidebar.signIn")),1)]),_:1}))])])],512),[[Jn,i.value==="account"]]),gt(r("section",$R,[r("section",MR,[r("div",xR,[r("h3",IR,d(l(n)("settings.agentDefaults")),1),e.configSaving?(a(),c("span",AR,d(l(n)("settings.saving")),1)):A("",!0)]),e.config?(a(),c(he,{key:0},[r("div",TR,[r("span",PR,[re(d(l(n)("settings.defaultModel"))+" ",1),r("span",ER,d(l(n)("settings.defaultModelHint")),1)]),y.value.length>0?(a(),c("div",LR,[M(Xa,{"model-value":e.config.defaultModel??"",disabled:e.configSaving,"aria-label":l(n)("settings.defaultModel"),"onUpdate:modelValue":O},{default:H(()=>[e.config.defaultModel?A("",!0):(a(),c("option",BR,d(l(n)("settings.noDefaultModel")),1)),(a(!0),c(he,null,Pe(y.value,de=>(a(),c("optgroup",{key:de.provider,label:de.provider},[(a(!0),c(he,null,Pe(de.options,Be=>(a(),c("option",{key:Be.id,value:Be.id},d(Be.label),9,OR))),128))],8,RR))),128))]),_:1},8,["model-value","disabled","aria-label"])])):(a(),c("span",DR,d(e.config.defaultModel??l(n)("settings.noDefaultModel")),1))]),r("div",zR,[r("span",FR,[re(d(l(n)("settings.defaultPermission"))+" ",1),r("span",NR,d(l(n)("settings.defaultPermissionHint")),1)]),M(cn,{"model-value":g.value,options:v.map(de=>({value:de,label:l(n)(w[de])})),"onUpdate:modelValue":ee[11]||(ee[11]=de=>D(de))},null,8,["model-value","options"])]),r("div",qR,[r("span",WR,[re(d(l(n)("settings.defaultThinking"))+" ",1),r("span",HR,d(l(n)("settings.defaultThinkingHint")),1)]),M(ds,{"model-value":B(),disabled:e.configSaving,label:l(n)("settings.defaultThinking"),"onUpdate:modelValue":ee[12]||(ee[12]=de=>q())},null,8,["model-value","disabled","label"])]),r("div",UR,[r("span",VR,[re(d(l(n)("settings.defaultPlanMode"))+" ",1),r("span",jR,d(l(n)("settings.defaultPlanModeHint")),1)]),M(ds,{"model-value":S(e.config.defaultPlanMode),disabled:e.configSaving,label:l(n)("settings.defaultPlanMode"),"onUpdate:modelValue":ee[13]||(ee[13]=de=>E("defaultPlanMode"))},null,8,["model-value","disabled","label"])]),r("div",KR,[r("span",GR,[re(d(l(n)("settings.mergeSkills"))+" ",1),r("span",QR,d(l(n)("settings.mergeSkillsHint")),1)]),M(ds,{"model-value":S(e.config.mergeAllAvailableSkills),disabled:e.configSaving,label:l(n)("settings.mergeSkills"),"onUpdate:modelValue":ee[14]||(ee[14]=de=>E("mergeAllAvailableSkills"))},null,8,["model-value","disabled","label"])])],64)):(a(),c("div",YR,d(l(n)("settings.configUnavailable")),1))])],512),[[Jn,i.value==="agent"]]),gt(r("section",ZR,[M(FB,{active:i.value==="plugins"},null,8,["active"])],512),[[Jn,i.value==="plugins"]]),gt(r("section",XR,[r("section",JR,[r("h3",eO,d(l(n)("settings.advanced")),1),r("div",tO,[r("span",nO,d(l(n)("sidebar.daemon")),1),r("span",sO,d(l(p)),1)]),r("div",oO,[r("span",iO,d(l(n)("settings.backend")),1),r("span",aO,d(f.value),1)]),r("div",lO,[r("span",rO,d(l(n)("settings.serverVersion")),1),r("span",uO,d(e.serverVersion||"-"),1)]),e.config?(a(),c("div",cO,[r("span",dO,[re(d(l(n)("settings.telemetry"))+" ",1),r("span",pO,d(l(n)("settings.telemetryHint")),1),r("span",fO,d(l(n)("settings.telemetryRestartHint")),1)]),M(ds,{"model-value":e.config.telemetry!==!1,disabled:e.configSaving,label:l(n)("settings.telemetry"),"onUpdate:modelValue":ee[15]||(ee[15]=de=>V())},null,8,["model-value","disabled","label"])])):A("",!0),r("div",mO,[r("span",vO,[re(d(l(n)("settings.exportLog"))+" ",1),l(ts)()?A("",!0):(a(),c("span",hO,d(l(n)("settings.logHint")),1))]),M(qe,{variant:"secondary",size:"sm",onClick:m},{default:H(()=>[re(d(l(n)("settings.exportLogBtn")),1)]),_:1})])])],512),[[Jn,i.value==="advanced"]]),gt(r("section",gO,[r("div",yO,[r("div",kO,d(l(n)("settings.archivedTitle")),1),r("h4",bO,d(l(n)("settings.archivedTitle")),1),r("p",wO,d(l(n)("settings.archivedDesc")),1)]),r("div",SO,[r("label",CO,[M(se,{name:"search",size:"sm"}),gt(r("input",{"onUpdate:modelValue":ee[16]||(ee[16]=de=>ce.value=de),placeholder:l(n)("settings.archivedSearch")},null,8,_O),[[qn,ce.value]])]),M(Xa,{"model-value":Q.value,size:"sm","aria-label":l(n)("settings.archivedAllWorkspaces"),"onUpdate:modelValue":ee[17]||(ee[17]=de=>Q.value=de)},{default:H(()=>[r("option",$O,d(l(n)("settings.archivedAllWorkspaces")),1),(a(!0),c(he,null,Pe(_e.value,de=>(a(),c("option",{key:de,value:de},d(de),9,MO))),128))]),_:1},8,["model-value","aria-label"]),M(cn,{size:"sm","model-value":ie.value,options:[{value:"archived-desc",label:l(n)("settings.archivedSortArchived")},{value:"created-desc",label:l(n)("settings.archivedSortCreated")},{value:"name-asc",label:l(n)("settings.archivedSortName")}],"onUpdate:modelValue":ee[18]||(ee[18]=de=>ie.value=de)},null,8,["model-value","options"])]),ne.value&&!oe.value?(a(),c("div",xO,d(l(n)("settings.archivedLoadingAll")),1)):(a(),c(he,{key:1},[Z.value.length>0?(a(),c("div",IO,[(a(!0),c(he,null,Pe(Z.value,de=>(a(),c("section",{key:de.cwd,class:"archive-card"},[r("div",AO,[M(se,{name:"folder-closed",size:"sm"}),r("span",TO,d(de.cwd),1),r("span",PO,d(l(n)("settings.archivedSessionsCount",{count:de.items.length})),1)]),r("div",EO,[(a(!0),c(he,null,Pe(de.items,Be=>(a(),c("div",{key:Be.id,class:"archive-row"},[r("div",LO,[r("div",BO,d(Be.title),1),r("div",RO,d(l(n)("settings.archivedAt",{time:ke(Be.updatedAt)})),1)]),M(qe,{variant:"secondary",size:"sm",onClick:Y=>U(Be.id)},{default:H(()=>[re(d(l(n)("settings.archivedRestore")),1)]),_:1},8,["onClick"])]))),128))])]))),128)),ge.value?(a(),c("button",{key:0,class:"archive-load-more",disabled:ne.value,onClick:ee[19]||(ee[19]=de=>ye(!1))},d(ne.value?l(n)("settings.archivedLoading"):l(n)("settings.archivedLoadMore")),9,OO)):A("",!0)])):(a(),c("div",DO,d(L.value.length===0?l(n)("settings.archivedEmpty"):l(n)("settings.archivedNoMatch")),1))],64))],512),[[Jn,i.value==="archived"]])])],512)]),_:1},8,["title"]))}}),NO=Ee(FO,[["__scopeId","data-v-ace56012"]]),qO=/^(?:\/|~(?:\/|$)|[A-Za-z]:[\\/]|\\\\)/,Cd=/^[A-Za-z]:[\\/]/,WO=/^\/\/(?!\/)/;function Aa(e){return qO.test(e.trim())}function HO(e,t){return e==="~"?t||e:e.startsWith("~/")?(t||"~")+e.slice(1):e}function UO(e){return WO.test(e)?`//${e.slice(2).replaceAll(/\/{2,}/g,"/")}`:e.replaceAll(/\/{2,}/g,"/")}function VO(e){return Cd.test(e)||e.startsWith("\\\\")||e.startsWith("//")}function jO(e){return Cd.test(e)?3:e.startsWith("\\\\")||e.startsWith("//")?2:e.startsWith("/")?1:0}function el(e,t){let n=UO(HO(e.trim(),t));const s=VO(n),o=n==="/"||n==="//"||n==="\\\\"||/^[A-Za-z]:[\\/]$/.test(n),i=s?/[\\/]$/.test(n):n.endsWith("/");!o&&i&&(n=n.slice(0,-1));const u=n.lastIndexOf("/"),p=s?n.lastIndexOf("\\"):-1,f=Math.max(u,p),v=p>u?"\\":"/",w=jO(n),x=fx.value.trim().length>0);let y=0,g=null;const k=$(()=>Aa(x.value)),T=I("idle"),S=I(""),O=I("/"),D=I([]),E=I(""),B=I(null),q=I(null),V=$(()=>T.value!=="valid"?null:GO(x.value,E.value,q.value));let b=0,P=null;function L(ke,ae){const ee=ke.toLowerCase(),de=ae.toLowerCase();let Be=0;for(let Y=0;Y0&&ve=pu))break;R.depth+1{g&&clearTimeout(g),P&&clearTimeout(P),b++,T.value="idle",D.value=[],q.value=null;const ae=ke.trim();if(ae===""){y++,m.value=[],h.value=!1;return}if(Aa(ae)){if(y++,m.value=[],h.value=!1,p.value)return;T.value="checking",P=setTimeout(()=>void oe(ae),150);return}g=setTimeout(()=>void ne(ke),220)});async function oe(ke){const ae=++b;T.value="checking",q.value=null;const ee=el(ke,E.value),{target:de}=ee;try{const Y=await s.browseFs(de);if(ae!==b)return;if(Y.path){T.value="valid",D.value=[],q.value=de,f.value=Y.path,v.value=Y.parent,w.value=Y.entries,p.value=!1;return}}catch{}if(ae!==b)return;const Be=ee.base.toLowerCase();S.value=ee.parent,O.value=ee.separator;try{const Y=await s.browseFs(ee.parent);if(ae!==b)return;if(Y.path){D.value=Y.entries.filter(ve=>ve.isDir&&ve.name.toLowerCase().startsWith(Be)),T.value="not-found";return}}catch{}ae===b&&(D.value=[],T.value="bad-parent")}function ge(ke){x.value=KO(S.value,ke,O.value),B.value?.focus()}const ce=$(()=>p.value?n("workspace.degradedPlaceholder"):n("workspace.searchPlaceholder")),Q=$(()=>p.value?n("workspace.degradedHint"):k.value&&T.value==="valid"?n("workspace.pathFollowHint"):n("workspace.browseHint"));function ie(ke){if(ke.key==="Escape"){x.value?x.value="":o("close");return}if(ke.key!=="Enter")return;const ae=x.value.trim();if(Aa(ae)){if(ke.preventDefault(),p.value){const{target:ee}=el(ae,E.value);ee&&o("add",ee);return}T.value==="valid"?U():T.value==="not-found"&&D.value[0]&&ge(D.value[0].name)}}const te=$(()=>{const ke=f.value;if(!ke)return[];const ae=ke.split("/").filter(Boolean),ee=[{label:"/",path:"/"}];let de="";for(const Be of ae)de+=`/${Be}`,ee.push({label:Be,path:de});return ee}),ye=$(()=>!(f.value.length===0||k.value&&V.value===null));async function _e(ke){u.value=!0;try{const ae=await s.browseFs(ke);if(!ae.path){p.value=!0;return}f.value=ae.path,v.value=ae.parent,w.value=ae.entries,x.value="",p.value=!1}catch{p.value=!0}finally{u.value=!1}}function Ce(ke){ke.isDir&&_e(ke.path)}function Z(){v.value&&_e(v.value)}function U(){ye.value&&o("add",V.value??f.value)}return ht(async()=>{u.value=!0;try{const ke=await s.getFsHome().catch(()=>({home:"",recentRoots:[]}));if(ke.home&&(E.value=ke.home),s.defaultPath&&(await _e(s.defaultPath),!p.value))return;E.value?await _e(E.value):p.value=!0}catch{p.value=!0}finally{u.value=!1}}),kt(()=>{g&&clearTimeout(g),P&&clearTimeout(P)}),(ke,ae)=>(a(),G(vs,{open:i.value,"onUpdate:open":ae[2]||(ae[2]=ee=>i.value=ee),title:l(n)("workspace.addTitle"),size:"lg",height:"fixed",onClose:ae[3]||(ae[3]=ee=>o("close"))},{default:H(()=>[r("div",QO,[p.value?A("",!0):(a(),c("div",YO,[M(nt,{size:"sm",disabled:!v.value,label:l(n)("workspace.up"),onClick:Z},{default:H(()=>[M(se,{name:"arrow-up",size:"md"})]),_:1},8,["disabled","label"]),r("div",ZO,[(a(!0),c(he,null,Pe(te.value,(ee,de)=>(a(),c(he,{key:ee.path},[de>1?(a(),c("span",XO,"/")):A("",!0),r("button",{class:fe(["crumb",{last:de===te.value.length-1}]),onClick:Be=>_e(ee.path)},d(ee.label),11,JO)],64))),128))])])),!u.value||p.value?(a(),c("div",{key:1,class:fe(["filterbar",{"has-error":T.value==="not-found"||T.value==="bad-parent"}])},[M(se,{class:"filter-icon",name:"search",size:"md"}),gt(r("input",{ref_key:"filterEl",ref:B,"onUpdate:modelValue":ae[0]||(ae[0]=ee=>x.value=ee),class:"filter-input",type:"text",placeholder:ce.value,autocomplete:"off",spellcheck:"false",onKeydown:Re(ie,["stop"])},null,40,eD),[[qn,x.value]]),h.value||T.value==="checking"?(a(),G(Dt,{key:0,size:"sm"})):A("",!0)],2)):A("",!0),p.value?(a(),c("div",hD,d(l(n)("workspace.degradedHint")),1)):(a(),c("div",tD,[u.value?(a(),c("div",nD,d(l(n)("workspace.browsing")),1)):k.value&&T.value!=="valid"?(a(),c(he,{key:1},[T.value==="checking"?(a(),c("div",sD,d(l(n)("workspace.checkingPath")),1)):T.value==="not-found"?(a(),c(he,{key:1},[D.value.length>0?(a(),c("div",oD,d(l(n)("workspace.pathPickHint")),1)):A("",!0),(a(!0),c(he,null,Pe(D.value,ee=>(a(),c("button",{key:ee.path,class:"folder-row",onClick:de=>ge(ee.name)},[M(se,{class:"dir-icon",name:"folder-closed",size:"sm"}),r("span",aD,d(ee.name),1)],8,iD))),128)),D.value.length===0?(a(),c("div",lD,d(l(n)("workspace.noPathMatch",{parent:S.value})),1)):A("",!0)],64)):T.value==="bad-parent"?(a(),c("div",rD,d(l(n)("workspace.badParent",{parent:S.value})),1)):A("",!0)],64)):_.value&&!k.value?(a(),c(he,{key:2},[(a(!0),c(he,null,Pe(m.value,ee=>(a(),c("button",{key:ee.path,class:"folder-row",onClick:de=>_e(ee.path)},[M(se,{class:"dir-icon",name:"folder-closed",size:"sm"}),r("span",cD,d(ee.rel),1)],8,uD))),128)),!h.value&&m.value.length===0?(a(),c("div",dD,d(l(n)("workspace.noFilterMatch",{q:x.value.trim()})),1)):h.value&&m.value.length===0?(a(),c("div",pD,d(l(n)("workspace.searching")),1)):A("",!0)],64)):(a(),c(he,{key:3},[(a(!0),c(he,null,Pe(w.value,ee=>(a(),c("button",{key:ee.path,class:"folder-row",onClick:de=>Ce(ee)},[M(se,{class:"dir-icon",name:"folder-closed",size:"sm"}),r("span",mD,d(ee.name),1)],8,fD))),128)),w.value.length===0?(a(),c("div",vD,d(l(n)("workspace.noSubfolders")),1)):A("",!0)],64))])),e.error?(a(),c("div",gD,d(e.error),1)):A("",!0),r("div",yD,[M(ot,{text:f.value},{default:H(()=>[p.value?A("",!0):(a(),G(qe,{key:0,variant:"primary",disabled:!ye.value,onClick:U},{default:H(()=>[re(d(l(n)("workspace.openThisFolder")),1)]),_:1},8,["disabled"]))]),_:1},8,["text"]),M(qe,{variant:"secondary",onClick:ae[1]||(ae[1]=ee=>o("close"))},{default:H(()=>[re(d(l(n)("workspace.cancel")),1)]),_:1})]),r("div",kD,d(Q.value),1)])]),_:1},8,["open","title"]))}}),CD=Ee(SD,[["__scopeId","data-v-a2c2e0eb"]]),_D={key:0,class:"confirm-dialog__message"},$D=Ie({__name:"ConfirmDialog",props:{open:{type:Boolean},title:{},message:{},confirmLabel:{},cancelLabel:{},variant:{default:"danger"},loading:{type:Boolean}},emits:["update:open","confirm","cancel"],setup(e,{emit:t}){const n=e,s=t,{t:o}=Ue();function i(){n.loading||(s("update:open",!1),s("cancel"))}function u(p){if(p.key!=="Enter"||!n.open||n.loading)return;const f=p.target;f instanceof HTMLButtonElement||f instanceof HTMLAnchorElement||f instanceof HTMLTextAreaElement||f instanceof HTMLSelectElement||f instanceof HTMLInputElement||(p.preventDefault(),s("confirm"))}return typeof window<"u"&&window.addEventListener("keydown",u),Ln(()=>{typeof window<"u"&&window.removeEventListener("keydown",u)}),(p,f)=>(a(),G(vs,{open:e.open,title:e.title,height:"auto","initial-focus":".confirm-dialog__confirm","close-on-esc":!e.loading,"close-on-overlay":!e.loading,"onUpdate:open":f[1]||(f[1]=v=>s("update:open",v)),onClose:i},{foot:H(()=>[M(qe,{variant:"secondary",disabled:e.loading,onClick:i},{default:H(()=>[re(d(e.cancelLabel??l(o)("common.cancel")),1)]),_:1},8,["disabled"]),M(qe,{class:"confirm-dialog__confirm",variant:e.variant,loading:e.loading,onClick:f[0]||(f[0]=v=>s("confirm"))},{default:H(()=>[re(d(e.confirmLabel??l(o)("common.confirm")),1)]),_:1},8,["variant","loading"])]),default:H(()=>[e.message?(a(),c("p",_D,d(e.message),1)):A("",!0)]),_:1},8,["open","title","close-on-esc","close-on-overlay"]))}}),MD=Ee($D,[["__scopeId","data-v-2e719024"]]),xD=Ie({__name:"ConfirmDialogHost",setup(e){const{current:t,busy:n,settle:s,runAction:o}=go();function i(){o()}return(u,p)=>(a(),G(MD,{open:l(t)!==null,title:l(t)?.title??"",message:l(t)?.message,"confirm-label":l(t)?.confirmLabel,"cancel-label":l(t)?.cancelLabel,variant:l(t)?.variant,loading:l(n),onConfirm:i,onCancel:p[0]||(p[0]=f=>l(s)(!1))},null,8,["open","title","message","confirm-label","cancel-label","variant","loading"]))}}),ID={class:"rows"},AD={class:"row"},TD={class:"row"},PD={class:"row"},ED={class:"row"},LD={class:"row"},BD={class:"row"},RD={class:"row"},OD={class:"ctx-text"},DD={key:0,class:"bar"},zD={class:"row"},FD=Ie({__name:"StatusPanel",props:{status:{},thinking:{},planMode:{type:Boolean},swarmMode:{type:Boolean},supermoonMode:{type:Boolean},costUsd:{}},emits:["close"],setup(e,{emit:t}){const{t:n}=Ue(),s=e,o=t,i=I(!0),u=$(()=>s.status.ctxMax<=0?0:Math.min(100,Math.max(0,Math.ceil(s.status.ctxUsed/s.status.ctxMax*100)))),p=$(()=>s.status.ctxMax>0?n("status.statusContextValue",{used:ms(s.status.ctxUsed),max:ms(s.status.ctxMax),pct:u.value}):n("status.statusNone"));function f(y){return n(y==="yolo"?"status.permissionYolo":y==="auto"?"status.permissionAuto":"status.permissionManual")}const v=$(()=>{const y=s.status.permission;return y==="yolo"?"var(--color-warning)":y==="auto"?"var(--color-danger)":"var(--color-text)"}),w=$(()=>s.planMode?n("status.planOn"):n("status.planOff")),x=$(()=>s.swarmMode?n("status.swarmOn"):n("status.swarmOff")),h=$(()=>s.supermoonMode?n("status.supermoonOn"):n("status.supermoonOff")),m=$(()=>typeof s.costUsd=="number"&&s.costUsd>0),_=$(()=>m.value?`$${s.costUsd.toFixed(4)}`:n("status.statusNone"));return(y,g)=>(a(),G(vs,{open:i.value,"onUpdate:open":g[0]||(g[0]=k=>i.value=k),title:l(n)("status.statusPanelTitle"),onClose:g[1]||(g[1]=k=>o("close"))},{default:H(()=>[r("dl",ID,[r("div",AD,[r("dt",null,d(l(n)("status.statusModel")),1),r("dd",null,d(e.status.model),1)]),r("div",TD,[r("dt",null,d(l(n)("status.statusThinking")),1),r("dd",null,d(e.thinking),1)]),r("div",PD,[r("dt",null,d(l(n)("status.statusPermission")),1),r("dd",{style:rt({color:v.value})},d(f(e.status.permission)),5)]),r("div",ED,[r("dt",null,d(l(n)("status.statusPlanMode")),1),r("dd",{class:fe({"plan-on":e.planMode})},d(w.value),3)]),r("div",LD,[r("dt",null,d(l(n)("status.statusSwarmMode")),1),r("dd",{class:fe({"swarm-on":e.swarmMode})},d(x.value),3)]),r("div",BD,[r("dt",null,d(l(n)("status.statusSupermoonMode")),1),r("dd",{class:fe({"supermoon-on":e.supermoonMode})},d(h.value),3)]),r("div",RD,[r("dt",null,d(l(n)("status.statusContext")),1),r("dd",null,[r("span",OD,d(p.value),1),e.status.ctxMax>0?(a(),c("span",DD,[r("i",{style:rt({width:u.value+"%"})},null,4)])):A("",!0)])]),r("div",zD,[r("dt",null,d(l(n)("status.statusCost")),1),r("dd",null,d(_.value),1)])])]),_:1},8,["open","title"]))}}),ND=Ee(FD,[["__scopeId","data-v-5ba9ba29"]]),qD={class:"ui-toast__icon","aria-hidden":"true"},WD={class:"ui-toast__body"},HD={class:"ui-toast__title"},UD={key:0,class:"ui-toast__msg"},VD=Ie({__name:"Toast",props:{variant:{default:"info"},title:{},message:{},dismissLabel:{default:"Dismiss"}},emits:["dismiss"],setup(e){return(t,n)=>(a(),c("div",{class:fe(["ui-toast",`ui-toast--${e.variant}`])},[r("span",qD,[yt(t.$slots,"icon",{},()=>[e.variant==="success"?(a(),G(se,{key:0,name:"check"})):e.variant==="danger"?(a(),G(se,{key:1,name:"close"})):e.variant==="warning"?(a(),G(se,{key:2,name:"alert-triangle"})):(a(),G(se,{key:3,name:"info"}))],!0)]),r("div",WD,[r("div",HD,d(e.title),1),e.message?(a(),c("div",UD,d(e.message),1)):A("",!0),yt(t.$slots,"default",{},void 0,!0)]),M(nt,{class:"ui-toast__close",size:"sm",label:e.dismissLabel,onClick:n[0]||(n[0]=s=>t.$emit("dismiss"))},{default:H(()=>[M(se,{name:"close",size:"sm"})]),_:1},8,["label"])],2))}}),jD=Ee(VD,[["__scopeId","data-v-adc6f346"]]),KD={key:0,class:"actions"},GD=["onClick"],QD=["onClick"],YD={key:1,class:"details"},ZD=Ie({__name:"WarningToasts",props:{warnings:{}},emits:["dismiss"],setup(e,{emit:t}){const n=e,s=t,{t:o}=Ue();function i(b){return typeof b=="object"&&b!==null}function u(b){return i(b)?b.title:b}function p(b){return i(b)?b.message??"":""}function f(b){return i(b)?b.details:void 0}function v(b){return i(b)?b.severity==="error":b.startsWith(`${o("warnings.errorLabel")}:`)||/\b4\d\d\b|error|失败|failed/i.test(b)}function w(b){if(!i(b))return v(b)?"danger":"warning";switch(b.severity){case"error":return"danger";case"success":return"success";case"info":return"info";default:return"warning"}}function x(b){return i(b)&&b.sticky===!0}function h(b){return i(b)?`notice:${b.severity}:${b.title}:${b.message??""}:${JSON.stringify(b.details??[])}`:`text:${b}`}function m(b){if(!i(b))return b;const P=[b.title];b.message&&P.push(b.message);const L=b.details??[];if(L.length>0){P.push("",`${o("warnings.diagnostics")}:`);for(const ne of L)P.push(`${ne.label}: ${ne.value}`)}return P.join(`
+`)}let _=1;const y=I([]),g=new Map,k=new Map;function T(b){const P=v(b)?12e3:6e3;return typeof window<"u"&&window.matchMedia?.("(hover: none)").matches===!0?P+5e3:P}function S(b,P){const L=g.get(b)??{handle:null,deadline:0,remaining:0};L.handle=setTimeout(()=>V(b),P),L.deadline=Date.now()+P,g.set(b,L)}function O(b){const P=g.get(b);P&&P.handle!==null&&clearTimeout(P.handle),g.delete(b)}function D(b){const P=g.get(b);!P||P.handle===null||(clearTimeout(P.handle),P.handle=null,P.remaining=Math.max(0,P.deadline-Date.now()))}function E(b){if(y.value.find(ne=>ne.id===b)?.detailsOpen)return;const L=g.get(b);!L||L.handle!==null||S(b,L.remaining)}function B(b){b.detailsOpen=!b.detailsOpen,b.detailsOpen?D(b.id):E(b.id)}async function q(b){if(!await un(m(b.warning)))return;b.copied=!0;const L=k.get(b.id);L&&clearTimeout(L),k.set(b.id,setTimeout(()=>{b.copied=!1,k.delete(b.id)},1400))}function V(b){O(b);const P=k.get(b);P&&clearTimeout(P),k.delete(b);const L=y.value.findIndex(ne=>ne.id===b);L!==-1&&(y.value=y.value.filter(ne=>ne.id!==b),s("dismiss",L))}return Oe(()=>n.warnings,b=>{const P=[...y.value];y.value=b.map(L=>{const ne=h(L),oe=P.findIndex(Q=>Q.key===ne),ge=oe===-1?void 0:P.splice(oe,1)[0];if(ge)return ge.warning=L,ge;const ce={id:_++,key:ne,warning:L,detailsOpen:!1,copied:!1};return x(L)||S(ce.id,T(L)),ce});for(const L of P){O(L.id);const ne=k.get(L.id);ne&&clearTimeout(ne),k.delete(L.id)}},{immediate:!0,flush:"post"}),kt(()=>{g.forEach(b=>{b.handle!==null&&clearTimeout(b.handle)}),g.clear(),k.forEach(b=>clearTimeout(b)),k.clear()}),(b,P)=>(a(),G(Ed,{name:"toast",tag:"div",class:"toasts",role:"status","aria-live":"polite"},{default:H(()=>[(a(!0),c(he,null,Pe(y.value,L=>(a(),G(jD,{key:L.id,variant:w(L.warning),title:u(L.warning),message:p(L.warning),"dismiss-label":l(o)("warnings.dismiss"),onDismiss:ne=>V(L.id),onPointerenter:ne=>D(L.id),onPointerleave:ne=>E(L.id)},{default:H(()=>[f(L.warning)?.length?(a(),c("div",KD,[r("button",{class:"link",type:"button",onClick:ne=>B(L)},d(L.detailsOpen?l(o)("warnings.hideDetails"):l(o)("warnings.showDetails")),9,GD),r("button",{class:"link",type:"button",onClick:ne=>q(L)},d(L.copied?l(o)("warnings.copied"):l(o)("warnings.copyDetails")),9,QD)])):A("",!0),L.detailsOpen&&f(L.warning)?.length?(a(),c("dl",YD,[(a(!0),c(he,null,Pe(f(L.warning),ne=>(a(),c("div",{key:`${ne.label}:${ne.value}`,class:"detail-row"},[r("dt",null,d(ne.label),1),r("dd",null,d(ne.value),1)]))),128))])):A("",!0)]),_:2},1032,["variant","title","message","dismiss-label","onDismiss","onPointerenter","onPointerleave"]))),128))]),_:1}))}}),XD=Ee(ZD,[["__scopeId","data-v-c92be17a"]]),JD={class:"topbar"},ez={class:"wsq"},tz=["aria-label"],nz={class:"tb-path"},sz={class:"ws"},oz={class:"se"},iz={class:"tb-sub"},az=Ie({__name:"MobileTopBar",props:{workspace:{default:null},sessionTitle:{default:""},running:{type:Boolean,default:!1},branch:{default:""},sessionCount:{default:0}},emits:["openSwitcher","openSettings"],setup(e,{emit:t}){const{t:n}=Ue(),s=e,o=t,i=$(()=>{const f=s.workspace,w=(f?.name||f?.root||"").trim().charAt(0);return w?w.toUpperCase():"K"}),u=$(()=>s.workspace?.name??n("workspace.noWorkspace")),p=$(()=>s.running?n("mobile.running"):n("mobile.idle"));return(f,v)=>(a(),c("div",JD,[r("span",ez,d(i.value),1),r("button",{type:"button",class:"tb-mid","aria-label":l(n)("mobile.openSwitcher"),onClick:v[0]||(v[0]=w=>o("openSwitcher"))},[r("span",nz,[r("span",sz,d(u.value),1),e.sessionTitle?(a(),c(he,{key:0},[v[2]||(v[2]=r("span",{class:"sl"},"/",-1)),r("span",oz,d(e.sessionTitle),1)],64)):A("",!0),v[3]||(v[3]=r("span",{class:"cv"},"⌄",-1))]),r("span",iz,[r("span",{class:fe(["rd",{on:e.running}])},null,2),r("span",null,d(p.value),1),e.branch?(a(),c(he,{key:0},[re(" · "+d(e.branch),1)],64)):A("",!0),e.sessionCount>0?(a(),c(he,{key:1},[re(" · "+d(l(n)("mobile.sessionCount",{n:e.sessionCount})),1)],64)):A("",!0)])],8,tz),M(nt,{size:"lg",label:l(n)("mobile.openSettings"),onClick:v[1]||(v[1]=w=>o("openSettings"))},{default:H(()=>[M(se,{name:"sliders",size:"lg"})]),_:1},8,["label"])]))}}),lz=Ee(az,[["__scopeId","data-v-6b4b901f"]]),rz={key:0,class:"sheet-root"},uz=["aria-label"],cz=["aria-label"],dz={key:0,class:"sheet-head"},pz={class:"sheet-title"},fz={class:"sheet-body"},mz=Ie({__name:"BottomSheet",props:{modelValue:{type:Boolean},title:{default:""}},emits:["update:modelValue","close"],setup(e,{emit:t}){const{t:n}=Ue(),s=e,o=t;function i(){o("update:modelValue",!1),o("close")}function u(p){p.key==="Escape"&&i()}return Oe(()=>s.modelValue,p=>{typeof document>"u"||(p?document.addEventListener("keydown",u):document.removeEventListener("keydown",u))},{immediate:!0}),kt(()=>{typeof document<"u"&&document.removeEventListener("keydown",u)}),(p,f)=>(a(),G(Yo,{name:"sheet"},{default:H(()=>[e.modelValue?(a(),c("div",rz,[r("div",{class:"sheet-scrim",onClick:i}),r("div",{class:"sheet-panel",role:"dialog","aria-label":e.title||l(n)("mobile.sheetLabel")},[r("button",{type:"button",class:"sheet-grab","aria-label":l(n)("mobile.closeSheet"),onClick:i},null,8,cz),e.title?(a(),c("div",dz,[r("span",pz,d(e.title),1)])):A("",!0),r("div",fz,[yt(p.$slots,"default",{},void 0,!0)])],8,uz)])):A("",!0)]),_:3}))}}),_d=Ee(mz,[["__scopeId","data-v-745ee5a2"]]),vz={class:"mlist"},hz={key:0,class:"mempty"},gz=["onClick"],yz={class:"mgh-main"},kz={class:"mgh-name"},bz={class:"mgh-path"},wz={key:2,class:"att"},Sz={key:0,class:"mempty small"},Cz=["onClick"],_z={class:"m"},$z={class:"s"},Mz={key:0,class:"att"},xz=["disabled","onClick"],Iz=["onClick"],Az=Ie({__name:"MobileSwitcherSheet",props:{modelValue:{type:Boolean},groups:{},activeWorkspaceId:{default:null},activeId:{},attentionBySession:{default:()=>({})},attentionByWorkspace:{default:()=>({})}},emits:["update:modelValue","select","create","createInWorkspace","addWorkspace","rename","archive","deleteWorkspace","loadMore"],setup(e,{emit:t}){const{t:n}=Ue(),s=e,o=t;function i(){o("update:modelValue",!1)}function u(P){o("select",P),i()}function p(P){o("createInWorkspace",P),i()}function f(){o("create"),i()}function v(){o("addWorkspace"),i()}const w=I(new Set);function x(P){return w.value.has(P)}function h(P){const L=new Set(w.value);L.has(P)?L.delete(P):L.add(P),w.value=L,S.value=null,B.value=null}const m=I(new Set);function _(P){return m.value.has(P)}function y(P){const L=new Set(m.value);L.has(P)?L.delete(P):L.add(P),m.value=L}function g(P){if(_(P.workspace.id))return P.sessions;const L=P.sessions.slice(0,P.initialCount);if(s.activeId&&!L.some(ne=>ne.id===s.activeId)){const ne=P.sessions.find(oe=>oe.id===s.activeId);if(ne)return[...L,ne]}return L}function k(P){if(!m.value.has(P)){const L=new Set(m.value);L.add(P),m.value=L}o("loadMore",P)}function T(P){return s.attentionByWorkspace[P]??0}const S=I(null);function O(P){S.value=S.value===P?null:P,B.value=null}function D(P){S.value=null;const ne=(typeof window<"u"?window.prompt(n("sidebar.rename"),P.title):null)?.trim();ne&&o("rename",P.id,ne)}function E(P){S.value=null,o("archive",P)}const B=I(null);function q(P){B.value=B.value===P?null:P,S.value=null}function V(P){un(P.root),B.value=null}function b(P){B.value=null,o("deleteWorkspace",P.id)}return(P,L)=>(a(),G(_d,{"model-value":e.modelValue,"onUpdate:modelValue":L[2]||(L[2]=ne=>o("update:modelValue",ne))},{default:H(()=>[r("button",{type:"button",class:"newrow",onClick:f},[M(se,{name:"message",size:"sm"}),re(" "+d(l(n)("sidebar.newChat")),1)]),r("button",{type:"button",class:"newrow secondary",onClick:v},[M(se,{name:"folder",size:"sm"}),re(" "+d(l(n)("sidebar.newWorkspace")),1)]),r("div",vz,[e.groups.length===0?(a(),c("div",hz,d(l(n)("workspace.noWorkspace")),1)):A("",!0),(a(!0),c(he,null,Pe(e.groups,ne=>(a(),c("div",{key:ne.workspace.id,class:"mgroup"},[r("div",{class:fe(["mgh",{on:ne.workspace.id===e.activeWorkspaceId}]),onClick:oe=>h(ne.workspace.id)},[x(ne.workspace.id)?(a(),G(se,{key:0,class:"mgh-folder",name:"folder-closed",size:"sm"})):(a(),G(se,{key:1,class:"mgh-folder",name:"folder",size:"sm"})),r("div",yz,[r("span",kz,d(ne.workspace.name),1),M(ot,{text:ne.workspace.root},{default:H(()=>[r("span",bz,d(ne.workspace.shortPath),1)]),_:2},1032,["text"])]),x(ne.workspace.id)&&T(ne.workspace.id)>0?(a(),c("span",wz,d(T(ne.workspace.id)),1)):A("",!0),M(nt,{size:"lg",class:"mgh-more",label:l(n)("sidebar.options"),onClick:Re(oe=>q(ne.workspace.id),["stop"])},{default:H(()=>[M(se,{name:"dots-horizontal",size:"md"})]),_:1},8,["label","onClick"]),M(nt,{size:"lg",class:"mgh-add",label:l(n)("workspace.newInGroup"),onClick:Re(oe=>p(ne.workspace.id),["stop"])},{default:H(()=>[M(se,{name:"plus",size:"md"})]),_:1},8,["label","onClick"]),B.value===ne.workspace.id?(a(),G(Hs,{key:3,class:"kmenu wsmenu",onClick:L[0]||(L[0]=Re(()=>{},["stop"]))},{default:H(()=>[M(dt,{size:"lg",onClick:oe=>V(ne.workspace)},{default:H(()=>[re(d(l(n)("sidebar.copyPath")),1)]),_:1},8,["onClick"]),M(dt,{size:"lg",danger:"",onClick:oe=>b(ne.workspace)},{default:H(()=>[re(d(l(n)("sidebar.delete")),1)]),_:1},8,["onClick"])]),_:2},1024)):A("",!0)],10,gz),gt(r("div",null,[ne.sessions.length===0?(a(),c("div",Sz,d(l(n)("sidebar.noSessions")),1)):A("",!0),(a(!0),c(he,null,Pe(g(ne),oe=>(a(),c("div",{key:oe.id,class:fe(["srow",{cur:oe.id===e.activeId}]),onClick:ge=>u(oe.id)},[r("div",_z,[r("div",{class:fe(["t",{run:oe.busy,aborted:!oe.busy&&(e.attentionBySession[oe.id]??0)===0&&l(Iu)(oe)}])},d(oe.title),3),r("div",$z,d(oe.time),1)]),(e.attentionBySession[oe.id]??0)>0?(a(),c("span",Mz,d(e.attentionBySession[oe.id]),1)):A("",!0),M(nt,{size:"lg",class:"kb",label:l(n)("sidebar.options"),onClick:Re(ge=>O(oe.id),["stop"])},{default:H(()=>[M(se,{name:"dots-horizontal",size:"md"})]),_:1},8,["label","onClick"]),S.value===oe.id?(a(),G(Hs,{key:1,class:"kmenu",onClick:L[1]||(L[1]=Re(()=>{},["stop"]))},{default:H(()=>[M(dt,{size:"lg",onClick:ge=>D(oe)},{default:H(()=>[re(d(l(n)("sidebar.rename")),1)]),_:1},8,["onClick"]),M(dt,{size:"lg",danger:"",onClick:ge=>E(oe.id)},{default:H(()=>[re(d(l(n)("sidebar.archive")),1)]),_:1},8,["onClick"])]),_:2},1024)):A("",!0)],10,Cz))),128)),ne.hasMore||ne.loadingMore?(a(),c("button",{key:1,type:"button",class:"mshow-more",disabled:ne.loadingMore,onClick:Re(oe=>k(ne.workspace.id),["stop"])},d(ne.loadingMore?l(n)("sidebar.loadingMore"):l(n)("sidebar.showMore",{count:Math.max(0,ne.workspace.sessionCount-ne.sessions.length)})),9,xz)):A("",!0),ne.sessions.length>ne.initialCount?(a(),c("button",{key:2,type:"button",class:"mshow-more",onClick:Re(oe=>y(ne.workspace.id),["stop"])},d(_(ne.workspace.id)?l(n)("sidebar.showLess"):l(n)("sidebar.showAll",{count:ne.sessions.length-ne.initialCount})),9,Iz)):A("",!0)],512),[[Jn,!x(ne.workspace.id)]])]))),128))])]),_:1},8,["model-value"]))}}),Tz=Ee(Az,[["__scopeId","data-v-53fda211"]]),Pz={class:"group-title"},Ez={class:"srow-main"},Lz={class:"srow-label"},Bz={class:"srow-sub"},Rz={class:"srow read-only"},Oz={class:"srow-main"},Dz={class:"srow-label"},zz={key:0,class:"srow-sub"},Fz={class:"cache-note"},Nz={class:"srow-main"},qz={class:"srow-label"},Wz={class:"srow-sub"},Hz=["aria-checked"],Uz={class:"srow-main"},Vz={class:"srow-label"},jz={class:"srow-sub"},Kz=["aria-checked"],Gz={class:"srow-main"},Qz={class:"srow-label"},Yz={class:"srow-sub"},Zz=["aria-checked"],Xz={class:"srow-main"},Jz={class:"srow-label"},eF={class:"srow-sub"},tF=["aria-checked"],nF={class:"srow-main"},sF={class:"srow-label"},oF={class:"srow read-only"},iF={class:"srow-main"},aF={class:"srow-label"},lF={class:"srow-sub"},rF=["aria-label"],uF={class:"group-title"},cF={class:"srow-main"},dF={class:"srow-label"},pF={class:"srow-sub"},fF={class:"srow read-only pref"},mF={class:"srow-main"},vF={class:"srow-label"},hF={class:"srow read-only pref"},gF={class:"srow-main"},yF={class:"srow-label"},kF={class:"srow read-only pref"},bF={class:"srow-main"},wF={class:"srow-label"},SF={class:"num-field"},CF=["value","aria-label"],_F={class:"srow-main"},$F={class:"srow-label"},MF={class:"srow-sub"},xF=["aria-checked"],IF={class:"srow-main"},AF={class:"srow-label"},TF={class:"srow-main"},PF={class:"srow-label"},EF={key:2,class:"srow read-only"},LF={class:"srow-main"},BF={class:"srow-label"},RF={class:"srow-val dim"},OF={class:"arch-subhead"},DF={class:"arch-count"},zF={class:"arch-tools"},FF={key:0,class:"arch-empty"},NF={class:"arch-meta"},qF={class:"arch-name"},WF={class:"arch-time"},HF={key:2,class:"arch-empty"},UF=100,VF=Ie({__name:"MobileSettingsSheet",props:{modelValue:{type:Boolean},status:{},thinking:{},planMode:{type:Boolean},goalMode:{type:Boolean},swarmMode:{type:Boolean},supermoonMode:{type:Boolean},colorScheme:{default:"system"},uiFontSize:{default:14},authReady:{type:Boolean,default:!1},conversationToc:{type:Boolean},serverVersion:{default:""},models:{default:()=>[]}},emits:["update:modelValue","pickModel","setThinking","togglePlan","toggleGoal","toggleSwarm","toggleSupermoon","setPermission","setColorScheme","setUiFontSize","setConversationToc","login","logout"],setup(e,{emit:t}){const{t:n}=Ue(),s=e,o=t;function i(Z){o("setColorScheme",Z)}const u=["manual","yolo","auto"],p=$(()=>s.models?.find(Z=>Z.id===s.status?.modelId)),f=$(()=>Ki(p.value)),v=$(()=>Gi(p.value)),w=$(()=>Xo(p.value,s.thinking)),x=$(()=>v.value.includes(w.value)?w.value:""),h=$(()=>v.value.map(Z=>({value:Z,label:qa(Z)}))),m=$(()=>s.planMode===!0),_=$(()=>s.goalMode===!0),y=$(()=>s.swarmMode===!0),g=$(()=>s.supermoonMode===!0),k=$(()=>{const Z=s.status.permission;return Z==="yolo"?"var(--color-warning)":Z==="auto"?"var(--color-danger)":"var(--color-text-muted)"}),T=$(()=>{const Z=s.status.permission,U=n(Z==="yolo"?"mobile.permYoloSub":Z==="auto"?"mobile.permAutoSub":"mobile.permManualSub");return`${Z} · ${U}`}),S=$(()=>s.status.ctxMax>0?Math.min(100,Math.max(0,Math.ceil(s.status.ctxUsed/s.status.ctxMax*100))):0),O=$(()=>s.status.ctxMax>0?`${ms(s.status.ctxUsed)}/${ms(s.status.ctxMax)}`:n("status.statusNone"));function D(Z){o("setThinking",Cl(p.value,Z))}function E(){const Z=u.indexOf(s.status.permission),U=u[(Z+1)%u.length];o("setPermission",U)}function B(){o("pickModel"),o("update:modelValue",!1)}function q(){o("login"),o("update:modelValue",!1)}function V(){o("logout"),o("update:modelValue",!1)}const b=Ji(),P=I("main"),L=I([]),ne=I(!1),oe=I(!1),ge=I(""),ce=I("archived-desc");async function Q(){if(!ne.value){ne.value=!0,oe.value=!1;try{const Z=[];let U;for(;;){const ke=await b.loadArchivedSessions({beforeId:U,pageSize:UF});if(Z.push(...ke.items),!ke.hasMore||ke.items.length===0)break;const ae=ke.items.at(-1)?.id;if(ae===void 0)break;U=ae}L.value=Z,oe.value=!0}catch(Z){console.warn("loadAllArchived failed",Z)}finally{ne.value=!1}}}function ie(){P.value="archived",ge.value="",Q()}function te(){P.value="main"}const ye=$(()=>{const Z=ge.value.trim().toLowerCase();let U=L.value.filter(ke=>ke.archived===!0);return Z&&(U=U.filter(ke=>ke.title.toLowerCase().includes(Z))),U=U.slice(),ce.value==="archived-desc"?U.sort((ke,ae)=>ae.updatedAt.localeCompare(ke.updatedAt)):ce.value==="created-desc"?U.sort((ke,ae)=>ae.createdAt.localeCompare(ke.createdAt)):U.sort((ke,ae)=>ke.title.localeCompare(ae.title,"zh")),U});async function _e(Z){await b.restoreSession(Z)&&(L.value=L.value.filter(ke=>ke.id!==Z))}function Ce(Z){const U=new Date(Z);if(Number.isNaN(U.getTime()))return Z;const ke=ae=>String(ae).padStart(2,"0");return`${U.getFullYear()}-${ke(U.getMonth()+1)}-${ke(U.getDate())} ${ke(U.getHours())}:${ke(U.getMinutes())}`}return Oe(()=>s.modelValue,Z=>{Z||(P.value="main")}),(Z,U)=>(a(),G(_d,{"model-value":e.modelValue,title:l(n)("mobile.settingsTitle"),"onUpdate:modelValue":U[8]||(U[8]=ke=>o("update:modelValue",ke))},{default:H(()=>[P.value==="main"?(a(),c(he,{key:0},[r("div",Pz,d(l(n)("mobile.groupSession")),1),r("button",{type:"button",class:"srow",onClick:B},[r("span",Ez,[r("span",Lz,d(l(n)("status.statusModel")),1),r("span",Bz,d(e.status.model),1)]),U[9]||(U[9]=r("span",{class:"chev"},"›",-1))]),r("div",Rz,[r("span",Oz,[r("span",Dz,d(l(n)("status.statusThinking")),1),f.value==="unsupported"?(a(),c("span",zz,d(l(n)("status.modeNotSupported")),1)):A("",!0)]),v.value.length>1?(a(),G(cn,{key:0,"model-value":x.value,options:h.value,size:"sm","onUpdate:modelValue":D},null,8,["model-value","options"])):(a(),c("span",{key:1,class:fe(["srow-val",{dim:w.value==="off"}])},d(w.value==="off"?l(n)("status.planOff"):l(qa)(w.value)),3))]),r("div",Fz,d(l(n)("status.cacheNote")),1),r("button",{type:"button",class:"srow",onClick:U[0]||(U[0]=ke=>o("togglePlan"))},[r("span",Nz,[r("span",qz,d(l(n)("status.statusPlanMode")),1),r("span",Wz,d(l(n)("mobile.planModeSub")),1)]),r("span",{class:fe(["toggle",{on:m.value}]),role:"switch","aria-checked":m.value},null,10,Hz)]),r("button",{type:"button",class:"srow",onClick:U[1]||(U[1]=ke=>o("toggleSwarm"))},[r("span",Uz,[r("span",Vz,d(l(n)("status.statusSwarmMode")),1),r("span",jz,d(l(n)("mobile.swarmModeSub")),1)]),r("span",{class:fe(["toggle",{on:y.value}]),role:"switch","aria-checked":y.value},null,10,Kz)]),r("button",{type:"button",class:"srow",onClick:U[2]||(U[2]=ke=>o("toggleSupermoon"))},[r("span",Gz,[r("span",Qz,d(l(n)("status.statusSupermoonMode")),1),r("span",Yz,d(l(n)("mobile.supermoonModeSub")),1)]),r("span",{class:fe(["toggle",{on:g.value}]),role:"switch","aria-checked":g.value},null,10,Zz)]),r("button",{type:"button",class:"srow",onClick:U[3]||(U[3]=ke=>o("toggleGoal"))},[r("span",Xz,[r("span",Jz,d(l(n)("status.statusGoalMode")),1),r("span",eF,d(l(n)("mobile.goalModeSub")),1)]),r("span",{class:fe(["toggle",{on:_.value}]),role:"switch","aria-checked":_.value},null,10,tF)]),r("button",{type:"button",class:"srow",onClick:E},[r("span",nF,[r("span",sF,d(l(n)("status.statusPermission")),1),r("span",{class:"srow-sub",style:rt({color:k.value})},d(T.value),5)]),U[10]||(U[10]=r("span",{class:"chev"},"›",-1))]),r("div",oF,[r("span",iF,[r("span",aF,d(l(n)("status.statusContext")),1),r("span",lF,d(O.value),1)]),r("span",{class:"ctx-meter","aria-label":O.value},[r("i",{style:rt({width:S.value+"%"})},null,4)],8,rF)]),r("div",uF,d(l(n)("mobile.groupApp")),1),r("button",{type:"button",class:"srow",onClick:ie},[r("span",cF,[r("span",dF,d(l(n)("mobile.archivedSessions")),1),r("span",pF,d(l(n)("mobile.archivedSessionsSub")),1)]),U[11]||(U[11]=r("span",{class:"chev"},"›",-1))]),r("div",fF,[r("span",mF,[r("span",vF,d(l(n)("theme.colorSchemeLabel")),1)]),M(cn,{"model-value":e.colorScheme??"system",options:[{value:"light",label:l(n)("theme.light")},{value:"dark",label:l(n)("theme.dark")},{value:"system",label:l(n)("theme.system")}],"onUpdate:modelValue":i},null,8,["model-value","options"])]),r("div",hF,[r("span",gF,[r("span",yF,d(l(n)("sidebar.language")),1)]),M(Sd)]),r("div",kF,[r("span",bF,[r("span",wF,d(l(n)("settings.uiFontSize")),1)]),r("label",SF,[r("input",{class:"num-input",type:"number",min:"12",max:"20",step:"1",value:e.uiFontSize,"aria-label":l(n)("settings.uiFontSize"),onInput:U[4]||(U[4]=ke=>o("setUiFontSize",Number(ke.target.value)))},null,40,CF),U[12]||(U[12]=r("span",{class:"num-unit"},"px",-1))])]),r("button",{type:"button",class:"srow",onClick:U[5]||(U[5]=ke=>o("setConversationToc",!e.conversationToc))},[r("span",_F,[r("span",$F,d(l(n)("settings.conversationToc")),1),r("span",MF,d(l(n)("settings.conversationTocHint")),1)]),r("span",{class:fe(["toggle",{on:e.conversationToc}]),role:"switch","aria-checked":e.conversationToc},null,10,xF)]),e.authReady?(a(),c("button",{key:0,type:"button",class:"srow acct out",onClick:V},[r("span",IF,[r("span",AF,d(l(n)("sidebar.signOut")),1)])])):(a(),c("button",{key:1,type:"button",class:"srow acct in",onClick:q},[r("span",TF,[r("span",PF,d(l(n)("sidebar.signIn")),1)])])),e.serverVersion?(a(),c("div",EF,[r("span",LF,[r("span",BF,d(l(n)("settings.serverVersion")),1)]),r("span",RF,d(e.serverVersion),1)])):A("",!0)],64)):(a(),c(he,{key:1},[r("div",OF,[r("button",{type:"button",class:"arch-back",onClick:te},[U[13]||(U[13]=r("span",{class:"chev back"},"‹",-1)),re(" "+d(l(n)("mobile.archivedBack")),1)]),r("span",DF,d(l(n)("mobile.sessionCount",{n:ye.value.length})),1)]),r("div",zF,[M(Kn,{class:"arch-search-input","model-value":ge.value,size:"sm",placeholder:l(n)("settings.archivedSearch"),"onUpdate:modelValue":U[6]||(U[6]=ke=>ge.value=ke)},null,8,["model-value","placeholder"]),M(cn,{size:"sm","model-value":ce.value,options:[{value:"archived-desc",label:l(n)("settings.archivedSortArchived")},{value:"created-desc",label:l(n)("settings.archivedSortCreated")},{value:"name-asc",label:l(n)("settings.archivedSortName")}],"onUpdate:modelValue":U[7]||(U[7]=ke=>ce.value=ke)},null,8,["model-value","options"])]),ne.value?(a(),c("div",FF,d(l(n)("settings.archivedLoadingAll")),1)):ye.value.length>0?(a(!0),c(he,{key:1},Pe(ye.value,ke=>(a(),c("div",{key:ke.id,class:"arch-row"},[r("div",NF,[r("div",qF,d(ke.title),1),r("div",WF,d(l(n)("settings.archivedAt",{time:Ce(ke.updatedAt)})),1)]),M(qe,{variant:"secondary",size:"sm",onClick:ae=>_e(ke.id)},{default:H(()=>[re(d(l(n)("settings.archivedRestore")),1)]),_:1},8,["onClick"])]))),128)):(a(),c("div",HF,d(L.value.length===0?l(n)("settings.archivedEmpty"):l(n)("settings.archivedNoMatch")),1))],64))]),_:1},8,["model-value","title"]))}}),jF=Ee(VF,[["__scopeId","data-v-2ff34053"]]),KF={class:"ob-brand"},GF={class:"ob-brand-text"},QF={class:"ob-title"},YF={class:"ob-sub"},ZF={class:"ob-sec"},XF={class:"ob-label"},JF={class:"ob-sec"},eN={class:"ob-label"},tN={class:"ob-sec"},nN={class:"ob-label"},sN=Ie({__name:"Onboarding",emits:["complete","skip"],setup(e,{emit:t}){const n=t,{t:s,locale:o}=Ue(),{colorScheme:i,accent:u,setColorScheme:p,setAccent:f}=tc();function v(x){o.value!==x&&Pu(x)}function w(){n("complete")}return(x,h)=>(a(),G(vs,{open:!0,size:"md","close-on-overlay":!1,"close-on-esc":!1,onClose:h[3]||(h[3]=m=>n("skip"))},{head:H(()=>[r("div",KF,[h[4]||(h[4]=r("svg",{class:"ob-logo",viewBox:"0 0 32 22",fill:"none",xmlns:"http://www.w3.org/2000/svg",role:"img","aria-label":"Kimi Code"},[r("defs",null,[r("mask",{id:"obKimiEyes",maskUnits:"userSpaceOnUse"},[r("rect",{x:"0",y:"0",width:"32",height:"22",fill:"#fff"}),r("g",{class:"ob-eyes",fill:"#000"},[r("rect",{class:"ob-eye",x:"11.8",y:"7",width:"2.8",height:"8",rx:"1.4"}),r("rect",{class:"ob-eye",x:"17.4",y:"7",width:"2.8",height:"8",rx:"1.4"})])])]),r("rect",{x:"1",y:"1",width:"30",height:"20",rx:"6",fill:"var(--color-accent)",mask:"url(#obKimiEyes)"})],-1)),r("div",GF,[r("div",QF,d(l(s)("onboarding.title")),1),r("div",YF,d(l(s)("onboarding.subtitle")),1)])])]),default:H(()=>[r("section",ZF,[r("div",XF,d(l(s)("onboarding.languageLabel")),1),M(cn,{"model-value":l(o),options:l(Tu).map(m=>({value:m.code,label:m.label})),"onUpdate:modelValue":h[0]||(h[0]=m=>v(m))},null,8,["model-value","options"])]),r("section",JF,[r("div",eN,d(l(s)("theme.colorSchemeLabel")),1),M(cn,{"model-value":l(i),options:[{value:"light",label:l(s)("theme.light")},{value:"dark",label:l(s)("theme.dark")},{value:"system",label:l(s)("theme.system")}],"onUpdate:modelValue":h[1]||(h[1]=m=>l(p)(m))},null,8,["model-value","options"])]),r("section",tN,[r("div",nN,d(l(s)("theme.accentLabel")),1),M(cn,{"model-value":l(u),options:[{value:"blue",label:l(s)("theme.accentBlue")},{value:"mono",label:l(s)("theme.accentBlack")}],"onUpdate:modelValue":h[2]||(h[2]=m=>l(f)(m))},null,8,["model-value","options"])]),M(qe,{variant:"primary",size:"lg",class:"ob-start",onClick:w},{default:H(()=>[re(d(l(s)("onboarding.start")),1)]),_:1})]),_:1}))}}),oN=Ee(sN,[["__scopeId","data-v-fbdd3eab"]]),iN=["aria-label"],aN={class:"gload-box"},lN={class:"gload-text"},rN={key:0,class:"gload-issue"},uN={class:"gload-issue-detail"},cN=Ie({__name:"GlobalLoading",props:{issue:{}},setup(e){const{t}=Ue();return(n,s)=>(a(),c("div",{class:"gload",role:"status","aria-label":l(t)("app.connecting")},[r("div",aN,[s[0]||(s[0]=sl(' ',1)),M(Dt,{size:"md",label:l(t)("app.connecting")},null,8,["label"]),r("div",lN,d(l(t)("app.connecting")),1),e.issue?(a(),c("div",rN,[r("div",null,d(l(t)("app.connectRetrying")),1),r("div",uN,d(e.issue),1)])):A("",!0)])],8,iN))}}),dN=Ee(cN,[["__scopeId","data-v-0b6dec6a"]]),pN={class:"kap-root"},fN={class:"kap-head"},mN={class:"kap-count"},vN={class:"kap-head-actions"},hN={class:"kap-filters"},gN=["value"],yN={class:"kap-check"},kN={class:"kap-check"},bN={class:"kap-view-toggle",role:"group"},wN={key:0,class:"kap-empty"},SN=["onClick"],CN={class:"kap-ts"},_N={class:"kap-label"},$N={key:0,class:"kap-detail"},MN={class:"kap-detail-actions"},xN=["onClick"],IN={key:1,class:"kap-agg"},AN={class:"mono"},TN={class:"mono"},PN={class:"num"},EN={class:"num"},LN={key:0},BN={class:"mono"},RN={class:"num"},ON={class:"num"},DN={key:0},zN=Ie({__name:"KapDebugView",emits:["close"],setup(e,{emit:t}){const n=t,s=I("all"),o=I(""),i=I(""),u=I(!1),p=I("timeline"),f=$(()=>(al.value,[...M0()])),v=$(()=>{const V=new Set;for(const b of f.value)b.sessionId&&V.add(b.sessionId);return[...V].sort()});function w(V){return V.kind==="rest:error"||V.code!==void 0&&V.code!==0||V.eventType==="error"||V.eventType==="parse-error"}const x=$(()=>{const V=o.value.trim().toLowerCase();return f.value.filter(b=>!(s.value!=="all"&&b.source!==s.value||i.value&&b.sessionId!==i.value||u.value&&!w(b)||V&&!`${b.label} ${b.kind} ${b.eventType??""} ${b.sessionId??""} ${b.requestId??""}`.toLowerCase().includes(V)))}),h=$(()=>{const V=new Map;for(const b of x.value){if(b.kind!=="ws:in"&&b.kind!=="ws:out")continue;const P=b.kind==="ws:in"?"←":"→",L=`${P} ${b.eventType??"?"} @ ${b.sessionId??"-"}`,ne=V.get(L)??{key:L,sessionId:b.sessionId??"-",eventType:b.eventType??"?",dir:P,count:0};ne.count++,b.seq!==void 0&&(ne.lastSeq=b.seq),V.set(L,ne)}return[...V.values()].sort((b,P)=>P.count-b.count)}),m=$(()=>{const V=new Map;for(const b of x.value){if(b.source!=="rest"||b.kind==="rest:request")continue;const P=`${b.method??"?"} ${b.path??"?"}`,L=V.get(P)??{count:0,errors:0,totalMs:0,timed:0};L.count++,w(b)&&L.errors++,b.durationMs!==void 0&&(L.totalMs+=b.durationMs,L.timed++),V.set(P,L)}return[...V.entries()].map(([b,P])=>({key:b,count:P.count,errors:P.errors,avgMs:P.timed>0?Math.round(P.totalMs/P.timed):0})).sort((b,P)=>P.count-b.count)}),_=I(null),y=I(!0),g=I(null),k=I(null);Oe(()=>x.value.length,async()=>{if(!y.value||p.value!=="timeline")return;await Ke();const V=g.value;V&&(V.scrollTop=V.scrollHeight)});function T(V){_.value=_.value===V?null:V}function S(V){const b=new Date(V),P=(L,ne=2)=>String(L).padStart(ne,"0");return`${P(b.getHours())}:${P(b.getMinutes())}:${P(b.getSeconds())}.${P(b.getMilliseconds(),3)}`}function O(V){return JSON.stringify(V,null,2)}async function D(V){await un(O(V))&&(k.value=V.id,setTimeout(()=>{k.value===V.id&&(k.value=null)},1500))}function E(){Bu(x.value)}function B(V){return w(V)||V.source==="client"?"b-err":V.source==="rest"?"b-rest":V.kind==="ws:lifecycle"?"b-life":V.kind==="ws:out"?"b-out":"b-in"}function q(V){return V.source==="rest"?"REST":V.source==="client"?"APP":"WS"}return(V,b)=>(a(),c("section",pN,[r("header",fN,[b[11]||(b[11]=r("strong",null,"KAP debug",-1)),r("span",mN,d(x.value.length)+"/"+d(f.value.length),1),r("div",vN,[r("button",{type:"button",class:fe({on:l(Vo)}),onClick:b[0]||(b[0]=P=>Vo.value=!l(Vo))},d(l(Vo)?"resume":"pause"),3),r("button",{type:"button",onClick:b[1]||(b[1]=P=>l(x0)())},"clear"),r("button",{type:"button",onClick:b[2]||(b[2]=P=>E())},"export jsonl"),M(ot,{text:"Close window"},{default:H(()=>[r("button",{type:"button",onClick:b[3]||(b[3]=P=>n("close"))},"✕")]),_:1})])]),r("div",hN,[gt(r("select",{"onUpdate:modelValue":b[4]||(b[4]=P=>s.value=P),"aria-label":"Source filter"},[...b[12]||(b[12]=[r("option",{value:"all"},"rest + ws + app",-1),r("option",{value:"rest"},"rest",-1),r("option",{value:"ws"},"ws",-1),r("option",{value:"client"},"app errors",-1)])],512),[[Dl,s.value]]),gt(r("select",{"onUpdate:modelValue":b[5]||(b[5]=P=>i.value=P),"aria-label":"Session filter"},[b[13]||(b[13]=r("option",{value:""},"all sessions",-1)),(a(!0),c(he,null,Pe(v.value,P=>(a(),c("option",{key:P,value:P},d(P),9,gN))),128))],512),[[Dl,i.value]]),gt(r("input",{"onUpdate:modelValue":b[6]||(b[6]=P=>o.value=P),type:"text",placeholder:"filter (type / path / id)","aria-label":"Text filter"},null,512),[[qn,o.value]]),r("label",yN,[gt(r("input",{"onUpdate:modelValue":b[7]||(b[7]=P=>u.value=P),type:"checkbox"},null,512),[[zl,u.value]]),b[14]||(b[14]=re(" errors",-1))]),r("label",kN,[gt(r("input",{"onUpdate:modelValue":b[8]||(b[8]=P=>y.value=P),type:"checkbox"},null,512),[[zl,y.value]]),b[15]||(b[15]=re(" follow",-1))]),r("div",bN,[r("button",{type:"button",class:fe({on:p.value==="timeline"}),onClick:b[9]||(b[9]=P=>p.value="timeline")},"timeline",2),r("button",{type:"button",class:fe({on:p.value==="aggregate"}),onClick:b[10]||(b[10]=P=>p.value="aggregate")},"aggregate",2)])]),p.value==="timeline"?(a(),c("div",{key:0,ref_key:"listRef",ref:g,class:"kap-list"},[x.value.length===0?(a(),c("div",wN," No trace entries yet. REST calls and WS frames will appear here. ")):A("",!0),(a(!0),c(he,null,Pe(x.value,P=>(a(),c("div",{key:P.id,class:"kap-row-wrap"},[r("button",{type:"button",class:fe(["kap-row",{expanded:_.value===P.id}]),onClick:L=>T(P.id)},[r("span",CN,d(S(P.ts)),1),r("span",{class:fe(["kap-badge",B(P)])},d(q(P)),3),r("span",_N,d(P.label),1)],10,SN),_.value===P.id?(a(),c("div",$N,[r("div",MN,[r("button",{type:"button",onClick:L=>D(P)},d(k.value===P.id?"copied ✓":"copy json"),9,xN)]),r("pre",null,d(O(P)),1)])):A("",!0)]))),128))],512)):(a(),c("div",IN,[b[20]||(b[20]=r("h4",null,"WS frames by session / type",-1)),r("table",null,[b[17]||(b[17]=r("thead",null,[r("tr",null,[r("th",null,"dir"),r("th",null,"type"),r("th",null,"session"),r("th",null,"count"),r("th",null,"last seq")])],-1)),r("tbody",null,[(a(!0),c(he,null,Pe(h.value,P=>(a(),c("tr",{key:P.key},[r("td",null,d(P.dir),1),r("td",AN,d(P.eventType),1),r("td",TN,d(P.sessionId),1),r("td",PN,d(P.count),1),r("td",EN,d(P.lastSeq??"—"),1)]))),128)),h.value.length===0?(a(),c("tr",LN,[...b[16]||(b[16]=[r("td",{colspan:"5",class:"kap-empty"},"no ws frames",-1)])])):A("",!0)])]),b[21]||(b[21]=r("h4",null,"REST by endpoint",-1)),r("table",null,[b[19]||(b[19]=r("thead",null,[r("tr",null,[r("th",null,"endpoint"),r("th",null,"count"),r("th",null,"errors"),r("th",null,"avg ms")])],-1)),r("tbody",null,[(a(!0),c(he,null,Pe(m.value,P=>(a(),c("tr",{key:P.key},[r("td",BN,d(P.key),1),r("td",RN,d(P.count),1),r("td",{class:fe(["num",{err:P.errors>0}])},d(P.errors),3),r("td",ON,d(P.avgMs),1)]))),128)),m.value.length===0?(a(),c("tr",DN,[...b[18]||(b[18]=[r("td",{colspan:"4",class:"kap-empty"},"no rest calls",-1)])])):A("",!0)])])]))]))}}),FN=Ee(zN,[["__scopeId","data-v-3cda6fe3"]]),NN=Ie({__name:"DebugPanel",setup(e){const t=I(!1);let n=null,s=null,o=null;const i=["data-color-scheme","data-accent"];function u(w){const x=document.documentElement,h=w.documentElement;for(const m of i){const _=x.getAttribute(m);_!==null?h.setAttribute(m,_):h.removeAttribute(m)}}function p(w){const x=w.document;x.title="KAP debug";const h=x.createElement("base");h.href=location.href,x.head.appendChild(h);for(const _ of Array.from(document.querySelectorAll('style, link[rel="stylesheet"]')))x.head.appendChild(_.cloneNode(!0));u(x),x.body.style.margin="0";const m=x.createElement("div");return m.style.height="100vh",x.body.appendChild(m),m}function f(){o?.disconnect(),o=null;try{s?.unmount()}catch{}s=null,n=null,t.value=!1}function v(){if(n&&!n.closed){n.focus();return}const w=window.open("","kap-debug","popup=yes,width=1040,height=760");if(!w)return;n=w;const x=p(w),h=yu(FN,{onClose:()=>w.close()});h.mount(x),s=h,t.value=!0,o=new MutationObserver(()=>{n&&!n.closed&&u(n.document)}),o.observe(document.documentElement,{attributes:!0,attributeFilter:[...i]}),w.addEventListener("pagehide",f),w.addEventListener("beforeunload",f)}return ht(()=>{v()}),Ln(()=>{n&&!n.closed&&n.close(),f()}),(w,x)=>(a(),G(ot,{text:t.value?"Focus KAP debug window":"Open KAP debug window"},{default:H(()=>[r("button",{class:"kap-fab",type:"button",onClick:v}," KAP ")]),_:1},8,["text"]))}}),qN=Ee(NN,[["__scopeId","data-v-21346738"]]);function WN({client:e,authLogoRef:t}){const n=$(()=>e.authReady.value),s=$(()=>e.initialized.value&&!n.value),o="/login",i=I(null);let u=null;function p(){return typeof window>"u"?"/":`${window.location.pathname}${window.location.search}${window.location.hash}`}function f(w){typeof window>"u"||window.history.replaceState(window.history.state,"",w)}Oe(s,w=>{if(!(typeof window>"u")){if(w){window.location.pathname!==o&&(i.value=p(),f(o));return}window.location.pathname===o&&(f(i.value??"/"),i.value=null)}},{immediate:!0});function v(){const w=t.value;w&&(w.classList.remove("blink-now"),w.getBoundingClientRect(),w.classList.add("blink-now"),u!==null&&clearTimeout(u),u=setTimeout(()=>{u=null,w.classList.remove("blink-now")},300))}return kt(()=>{u!==null&&clearTimeout(u)}),{showAuthGate:s,blinkAuthLogo:v}}function HN({running:e,showAuthGate:t}){const{t:n}=Ue(),s=["◐","◓","◑","◒"],o=I(0);let i=null;function u(){i===null&&(o.value=0,i=setInterval(()=>{o.value=(o.value+1)%s.length},250))}function p(){i!==null&&(clearInterval(i),i=null),o.value=0}Oe(e,v=>{v?u():p()},{immediate:!0});const f=$(()=>{const v=e.value?`${s[o.value]} `:"";return t.value?`${v}${n("app.authPageTitle")} - Kimi Code Web`:`${v}Kimi Code Web`});Ld(()=>{typeof document<"u"&&(document.title=f.value)}),kt(()=>{p()})}const $d=I(typeof window>"u"?0:window.innerWidth);let Ci=0,Vi=!1;function tl(){$d.value=window.innerWidth}function UN(){Vi||typeof window>"u"||(window.addEventListener("resize",tl),Vi=!0,tl())}function VN(){!Vi||typeof window>"u"||(window.removeEventListener("resize",tl),Vi=!1)}function Md(e,t,n){return Math.max(t,e-n)}function nl(e,t,n){return Math.min(n,Math.max(t,e))}function xd(){return ht(()=>{Ci+=1,UN()}),Ln(()=>{Ci=Math.max(0,Ci-1),Ci===0&&VN()}),{viewportWidth:$d}}const jN="kimi-web.file-preview-width",Mo=320;function KN({client:e,sideWidth:t,detailTarget:n,closeFilePreview:s}){const{viewportWidth:o}=xd(),i=$(()=>Math.max(0,o.value-t.value)),u=$(()=>Md(i.value,Mo,Mo));function p(R){return nl(Math.round(R),Mo,u.value)}function f(){return p(i.value/2)}const v=$(()=>f()),w=I(v.value),x=$(()=>nl(w.value,Mo,u.value)),h=I(null),m=$(()=>{const R=h.value;if(!R)return null;const me=e.turns.value.find(He=>He.id===R.turnId)?.blocks?.[R.blockIndex];return me?.kind==="thinking"?me.thinking:null}),_=$(()=>m.value!==null);function y(R){const X=h.value;if(X&&X.turnId===R.turnId&&X.blockIndex===R.blockIndex){h.value=null,n.value==="thinking"&&(n.value=null);return}n.value="thinking",h.value=R}function g(){h.value=null,n.value==="thinking"&&(n.value=null)}const k=I(null),T=$(()=>{const R=k.value;if(!R)return null;const X=e.turns.value.find(me=>me.id===R.turnId);return X?.role==="compaction"&&X.text?X.text:null}),S=$(()=>T.value!==null);function O(R){if(k.value?.turnId===R.turnId){k.value=null,n.value==="compaction"&&(n.value=null);return}n.value="compaction",k.value=R}function D(){k.value=null,n.value==="compaction"&&(n.value=null)}const E=I(null);function B(R){const X=e.activeAppTasks.value,me=X.find(De=>De.id===R)??X.find(De=>De.parentToolCallId===R);if(me)return me.id;const He=X.filter(De=>De.kind==="subagent"&&!De.parentToolCallId);if(He.length===1)return He[0].id}const q=$(()=>{const R=E.value;if(!R)return null;const X=e.activeAppTasks.value.find(me=>me.id===R.subagentId);return X?Vb(X):null}),V=$(()=>q.value!==null);function b(R){const X=B(R);if(X){if(E.value?.subagentId===X){E.value=null,n.value==="agent"&&(n.value=null);return}E.value={subagentId:X},n.value="agent"}}function P(){E.value=null,n.value==="agent"&&(n.value=null)}const L=I(null),ne=$(()=>{const R=L.value;if(!R)return null;const X=RC(e.turns.value,R);return X?{id:R,title:Ks(X.name),path:BC(X.arg),lines:X.status==="error"?null:Yc(X),output:X.output}:null}),oe=$(()=>ne.value!==null);function ge(R){if(n.value==="toolDiff"&&L.value===R){ce();return}n.value="toolDiff",L.value=R}function ce(){L.value=null,n.value==="toolDiff"&&(n.value=null)}const Q=I("list"),ie=I(null);function te(){if(n.value==="diff"){ye();return}n.value="diff",Q.value="list",ie.value=null;const R=e.activeSessionId.value;R&&e.loadGitStatus(R)}function ye(){n.value==="diff"&&(n.value=null),Q.value="list",ie.value=null,e.clearFileDiff()}async function _e(R){Q.value="detail",ie.value=R,await e.loadFileDiff(R)}async function Ce(R){!e.activeSessionId.value&&e.activeWorkspaceId.value?await e.startSessionAndOpenSideChat(e.activeWorkspaceId.value,R):await e.openSideChat(R),n.value="btw"}function Z(){e.closeSideChat(),n.value==="btw"&&(n.value=null)}function U(){n.value==="btw"&&(n.value=null)}const ke=$(()=>e.sideChatVisible.value),ae=$(()=>n.value!==null&&(n.value!=="thinking"||_.value)&&(n.value!=="compaction"||S.value)&&(n.value!=="agent"||V.value)&&(n.value!=="toolDiff"||oe.value)&&(n.value!=="btw"||ke.value)),ee=I(!1),de=I({});function Be(){switch(n.value){case"thinking":return h.value?{kind:"thinking",...h.value}:null;case"compaction":return k.value?{kind:"compaction",...k.value}:null;case"agent":return E.value?{kind:"agent",...E.value}:null;case"toolDiff":return L.value?{kind:"toolDiff",toolId:L.value}:null;case"btw":return{kind:"btw"};default:return null}}function Y(R){if(R)switch(R.kind){case"thinking":h.value={turnId:R.turnId,blockIndex:R.blockIndex},n.value="thinking";break;case"compaction":k.value={turnId:R.turnId},n.value="compaction";break;case"agent":E.value={subagentId:R.subagentId},n.value="agent";break;case"toolDiff":L.value=R.toolId,n.value="toolDiff";break;case"btw":e.sideChatVisible.value&&(n.value="btw");break}}function ve(){return n.value==="thinking"&&_.value?(g(),!0):n.value==="compaction"&&S.value?(D(),!0):n.value==="agent"&&V.value?(P(),!0):n.value==="toolDiff"&&oe.value?(ce(),!0):n.value==="file"?(s(),!0):n.value==="diff"?(ye(),!0):n.value==="btw"?(Z(),!0):!1}return Oe(e.activeSessionId,(R,X)=>{if(X){const me=Be();me?de.value[X]=me:delete de.value[X]}s(),g(),D(),P(),ce(),ye(),U(),R&&Y(de.value[R])}),{PREVIEW_WIDTH_KEY:jN,PREVIEW_MIN:Mo,previewDefaultWidth:v,previewMax:u,previewWidth:w,previewPanelWidth:x,thinkingPanelText:m,thinkingVisible:_,openThinkingPanel:y,closeThinkingPanel:g,compactionPanelText:T,compactionPanelVisible:S,openCompactionPanel:O,closeCompactionPanel:D,agentPanelMember:q,agentPanelVisible:V,openAgentPanel:b,closeAgentPanel:P,toolDiffTarget:ne,toolDiffVisible:oe,openToolDiff:ge,closeToolDiff:ce,detailDiffMode:Q,detailDiffPath:ie,openDiffDetail:te,closeDiffDetail:ye,selectDiffFile:_e,btwVisible:ke,openSideChatTab:Ce,closeSideChat:Z,hideSideChatPanel:U,sidePanelVisible:ae,panelDragging:ee,closeOpenSidePanel:ve}}const GN=We.sidebarWidth,fu=We.sidebarCollapsed,mu=270,Ta=220,QN=480,YN=320;function ZN(e={}){const{viewportWidth:t}=xd(),n=I(mu),s=I(!1),o=I(null),i=I(!1),u=$(()=>{const h=YN+(Wo(e.previewOpen)?Mo:0);return Math.min(QN,Md(t.value,Ta,h))}),p=$(()=>nl(n.value,Ta,u.value)),f=$(()=>Wo(e.isNarrow)?o.value??!0:s.value);function v(){try{s.value=It(fu)==="true"}catch{s.value=!1}}function w(){try{Bt(fu,String(s.value))}catch{}}Oe(()=>Wo(e.isNarrow),h=>{h||(o.value=null)},{flush:"sync"});function x(){if(Wo(e.isNarrow)){o.value=!f.value;return}s.value=!s.value,w()}return{SIDEBAR_WIDTH_KEY:GN,SIDEBAR_DEFAULT:mu,SIDEBAR_MIN:Ta,sidebarMax:u,sessionColWidth:n,effectiveSidebarCollapsed:f,sidebarCollapsed:s,sidebarDragging:i,sideWidth:p,loadSidebarCollapsed:v,toggleSidebarCollapse:x}}const XN=640,JN=`(max-width: ${XN}px)`;function eq(){const e=I(!1);if(typeof window>"u"||typeof window.matchMedia!="function")return e;const t=window.matchMedia(JN);e.value=t.matches;const n=s=>{e.value=s.matches};return typeof t.addEventListener=="function"?(t.addEventListener("change",n),kt(()=>t.removeEventListener("change",n))):typeof t.addListener=="function"&&(t.addListener(n),kt(()=>t.removeListener(n))),e}function tq(){const e=I(!1),t=ud(z8,n=>{e.value=n});return kt(t),e}const nq={class:"server-auth-overlay",role:"dialog","aria-modal":"true","aria-labelledby":"server-auth-title"},sq={class:"server-auth-card"},oq={class:"server-auth-head"},iq={id:"server-auth-title",class:"server-auth-title"},aq={class:"server-auth-hint"},lq={class:"server-auth-body"},rq={class:"server-auth-foot"},uq=Ie({__name:"ServerAuthDialog",setup(e){const{t}=Ue(),n=I(""),s=I(null),o=I(!1);ht(()=>{Ke(()=>s.value?.focus())});function i(){const p=n.value;!p||o.value||(o.value=!0,Vu(p),window.location.reload())}function u(p){p.key==="Enter"&&(p.preventDefault(),i())}return(p,f)=>(a(),c("div",nq,[r("div",sq,[r("div",oq,[r("h1",iq,d(l(t)("serverAuth.title")),1),r("p",aq,d(l(t)("serverAuth.hint",{password:"KIMI_CODE_PASSWORD"})),1)]),r("div",lq,[M(Kn,{ref_key:"inputRef",ref:s,modelValue:n.value,"onUpdate:modelValue":f[0]||(f[0]=v=>n.value=v),type:"password",autocomplete:"current-password",placeholder:l(t)("serverAuth.placeholder"),disabled:o.value,onKeydown:u},null,8,["modelValue","placeholder","disabled"])]),r("div",rq,[M(qe,{variant:"primary",disabled:!n.value||o.value,loading:o.value,onClick:i},{default:H(()=>[re(d(o.value?l(t)("serverAuth.connecting"):l(t)("serverAuth.connect")),1)]),_:1},8,["disabled","loading"])])])]))}}),cq=Ee(uq,[["__scopeId","data-v-469e14bc"]]),dq=["aria-label"],pq=Ie({__name:"InternalBuildBanner",setup(e){const{t}=Ue(),n=r3;return(s,o)=>l(n)?(a(),c("span",{key:0,class:"internal-build-tag",role:"note","aria-label":l(t)("app.internalBuildBanner")},[M(se,{name:"alert-triangle",size:"sm","aria-hidden":"true"}),r("span",null,d(l(t)("app.internalBuildBanner")),1)],8,dq)):A("",!0)}}),fq=Ee(pq,[["__scopeId","data-v-086c00dc"]]),mq={class:"app-shell"},vq={key:1,class:"auth-page"},hq={class:"auth-page-inner"},gq={class:"auth-page-copy"},yq=["aria-label","aria-hidden"],kq=Ie({__name:"App",setup(e){Wy();const t=I(!1);let n=null;const s=Ji(),o=$(()=>!s.dangerousBypassAuth.value&&t.value);Io("resolveImage",s.resolveImageUrl),Io("resolveSwarmMembers",Ae=>s.swarmMembersByToolCallId.value.get(Ae)??[]);const{t:i}=Ue(),{confirm:u}=go(),p=ts(),f=eq(),v=tq(),w=I(!1),x=I(!1),h=$(()=>{const Ae=s.activeSessionId.value;return s.sessions.value.find(j=>j.id===Ae)?.title??""}),m=$(()=>s.visibleWorkspace.value?.sessionCount??0),_=$(()=>s.activity.value!=="idle"),y=I(null),{showAuthGate:g,blinkAuthLogo:k}=WN({client:s,authLogoRef:y});HN({running:_,showAuthGate:g});function T(Ae){const j=s.models.value.find(Ss=>Ss.id===s.status.value.modelId),J=Gi(j),ft=J.indexOf(Xo(j,Ae)),Nn=J[(ft+1)%J.length]??J[0]??"off";return Cl(j,Nn)}const S=$(()=>{const Ae=s.models.value.find(j=>j.id===s.status.value.modelId);return Xo(Ae,s.thinking.value)}),O=I(!s.onboarded.value);function D(){s.setOnboarded(!0),O.value=!1}function E(){O.value=!0}let B=0;function q(){const Ae=window.visualViewport,j=document.documentElement.style;j.setProperty("--app-height",`${Ae?.height??window.innerHeight}px`),j.setProperty("--app-top",`${Ae?.offsetTop??0}px`)}function V(){B||(B=requestAnimationFrame(()=>{B=0,q()}))}ht(()=>{n=Vy(()=>{t.value=!0,s.clearDangerousBypassAuth()}),s.load(),me(),q(),window.visualViewport?.addEventListener("resize",V),window.visualViewport?.addEventListener("scroll",V),window.addEventListener("resize",V),document.addEventListener("keydown",b,!0)}),kt(()=>{document.removeEventListener("keydown",b,!0),window.visualViewport?.removeEventListener("resize",V),window.visualViewport?.removeEventListener("scroll",V),window.removeEventListener("resize",V),B&&(cancelAnimationFrame(B),B=0),document.documentElement.style.removeProperty("--app-height"),document.documentElement.style.removeProperty("--app-top"),n!==null&&(n(),n=null)});function b(Ae){Ae.key==="Escape"&&(Se.value||An()&&(Ae.stopPropagation(),Ae.preventDefault()))}const P=I(null),L=I(!1);Oe(s.activeSessionId,()=>{L.value=!0,Ke(()=>{L.value=!1})});const{previewTarget:ne,previewFile:oe,previewLoading:ge,previewError:ce,previewDownloadUrl:Q,previewExternalActions:ie,openFilePreview:te,closeFilePreview:ye,openPreviewInEditor:_e,revealPreviewFile:Ce}=qL({client:s,detailTarget:P}),Z=WL(),U=$(()=>f.value||v.value),ke=$(()=>P.value!==null&&!U.value),{SIDEBAR_WIDTH_KEY:ae,SIDEBAR_DEFAULT:ee,SIDEBAR_MIN:de,sidebarMax:Be,sessionColWidth:Y,effectiveSidebarCollapsed:ve,sidebarDragging:R,sideWidth:X,loadSidebarCollapsed:me,toggleSidebarCollapse:He}=ZN({previewOpen:ke,isNarrow:v}),{PREVIEW_WIDTH_KEY:De,PREVIEW_MIN:an,previewDefaultWidth:Fe,previewMax:Ze,previewWidth:Ve,previewPanelWidth:At,thinkingPanelText:bt,thinkingVisible:Ct,openThinkingPanel:dn,closeThinkingPanel:Kt,compactionPanelText:zt,compactionPanelVisible:hs,openCompactionPanel:nn,closeCompactionPanel:ut,agentPanelMember:Ft,openAgentPanel:In,closeAgentPanel:_t,toolDiffTarget:pn,openToolDiff:Nt,closeToolDiff:gn,detailDiffMode:Tt,detailDiffPath:fn,openDiffDetail:mn,closeDiffDetail:Rn,selectDiffFile:yn,btwVisible:Gn,openSideChatTab:$t,closeSideChat:Zt,sidePanelVisible:Gt,panelDragging:kn,closeOpenSidePanel:An}=KN({client:s,sideWidth:X,detailTarget:P,closeFilePreview:ye}),Rt=I(null),sn=I(!1),qt=I(!1),Xt=I(!1),Wt=I(!1),ct=I(!1),lt=I(!1),on=I(null),Jt=I(null),Se=$(()=>Co.value>0||sn.value||qt.value||Xt.value||Wt.value||ct.value||lt.value||O.value||w.value||x.value),we=I(!1),Ge=I(!1),Je=I(!1),at=I(!1),Ht=I(!1);async function Qt(){we.value=!0,Ge.value=!1,sn.value=!0;try{await s.refreshAllProviders()}catch{Ge.value=!0}finally{we.value=!1}}async function Pt(){Je.value=!0,at.value=!1,qt.value=!0;try{await s.loadProviders()}catch{at.value=!0}finally{Je.value=!1}}function Ut(){Xt.value=!0}async function Vt(Ae){sn.value=!1,await Tn(Ae)}async function Tn(Ae){await s.setModel(Ae)&&Ae!==s.defaultModel.value&&s.updateConfig({defaultModel:Ae})}async function gs(Ae){await s.addProvider(Ae)}async function Wn(Ae){await s.refreshProvider(Ae)}async function bn(Ae){await s.importCatalogProvider(Ae)}async function ns(Ae){await s.importRegistry(Ae)}async function ss(Ae){await u({title:i("sidebar.archive"),message:i("sidebar.archiveConfirm"),variant:"danger",action:()=>s.archiveSession(Ae)})}async function On(Ae){const j=s.workspacesView.value.find(J=>J.id===Ae)?.name??Ae;await u({title:i("sidebar.removeWorkspace"),message:i("workspace.removeWorkspaceConfirm",{name:j}),variant:"danger",action:()=>s.deleteWorkspace(Ae)})}async function en(Ae){await u({title:i("providers.delete"),message:i("providers.confirmDelete"),variant:"danger",action:()=>s.deleteProvider(Ae)})}async function Dn(Ae){Ht.value=!0;try{await s.updateConfig(Ae)&&await s.checkAuth()}finally{Ht.value=!1}}async function Hn(){return s.startOAuthLogin()}async function Qn(){return s.pollOAuthLogin()}async function ys(){return s.cancelOAuthLogin()}async function vn(){Xt.value=!1,await s.checkAuth(),await s.load()}async function os(Ae){await s.undo(1),await Ke(),Rt.value?.loadComposerForEdit(Ae.text,Ae.attachments)}function zn(Ae){if(Ae.skillActivation?.name){s.activateSkill(Ae.skillActivation.name,Ae.skillActivation.args);return}const j=(Ae.attachments??[]).filter(J=>J.fileId!==void 0).map(J=>({fileId:J.fileId,kind:J.kind,name:J.name,mediaType:J.mediaType,size:J.size}));s.sendPrompt(Ae.text,j)}function is(Ae,j){if(Ae==="/compact"||Ae.startsWith("/compact ")){s.compact(Ae.slice(8).trim()||void 0);return}if(Ae==="/swarm"||Ae.startsWith("/swarm ")){const J=Ae.slice(6).trim();J==="on"?s.setSwarmMode(!0):J==="off"?s.setSwarmMode(!1):J?(s.setSwarmMode(!0),s.sendPrompt(J)):s.toggleSwarmMode();return}if(Ae==="/goal"||Ae.startsWith("/goal ")){const J=Ae.slice(5).trim();J==="pause"||J==="resume"||J==="cancel"?s.controlGoal(J):J?s.createGoal(J):s.setGoalMode(!0);return}if(Ae==="/btw"||Ae.startsWith("/btw ")){const J=Ae.slice(4).trim();!J&&s.sideChatVisible.value?Zt():$t(J||void 0);return}switch(Ae){case"/new":case"/clear":Fn();break;case"/fork":s.forkSession();break;case"/export":s.exportSession();break;case"/undo":s.undo();break;case"/plan":s.armPlanMode();break;case"/auto":s.setPermission("auto");break;case"/yolo":s.setPermission("yolo");break;case"/thinking":s.setThinking(T(s.thinking.value));break;case"/status":ct.value=!0;break;case"/login":Ut();break;default:{const J=Ae.indexOf(" "),ft=h9((J===-1?Ae:Ae.slice(0,J)).slice(1)),Nn=J===-1?void 0:Ae.slice(J+1).trim()||void 0;if(!ft)break;!s.activeSessionId.value&&s.activeWorkspaceId.value?s.startSessionAndActivateSkill(s.activeWorkspaceId.value,ft,Nn,j):s.activateSkill(ft,Nn,void 0,j);break}}}function as(Ae){s.unqueue(Ae)}function Es(Ae){s.unqueue(Ae)}function ks(Ae){s.reorderQueue(Ae.from,Ae.to)}async function wn(Ae){const j=s.activeWorkspaceId.value;if(!s.activeSessionId.value&&j){await s.startSessionAndSendPrompt(j,Ae.text,Ae.attachments);return}if(!s.activeSessionId.value&&!j){on.value=Ae,Wt.value=!0;return}s.sendPrompt(Ae.text,Ae.attachments)}async function Ls(Ae){if(Jt.value=null,!await s.addWorkspaceByPath(Ae)){Jt.value=i("workspace.addFailed");return}Wt.value=!1;const J=on.value;on.value=null;const ft=s.activeWorkspaceId.value;J&&ft&&await s.startSessionAndSendPrompt(ft,J.text,J.attachments)}function Gs(){on.value=null,Jt.value=null,Wt.value=!1}function Bs(){Ke(()=>{Rt.value?.focusComposer()})}function Fn(){const Ae=s.activeWorkspaceId.value;Ae?s.openWorkspaceDraft(Ae):s.clearActiveSession(),Bs()}function bs(Ae){s.openWorkspaceDraft(Ae),Bs()}function ws(Ae){Ae&&window.open(Ae,"_blank","noopener")}return(Ae,j)=>(a(),c("div",mq,[o.value?(a(),G(cq,{key:0})):A("",!0),l(g)?(a(),c("section",vq,[r("div",hq,[(a(),c("svg",{ref_key:"authLogoRef",ref:y,class:"auth-page-logo ch-logo",viewBox:"0 0 32 22",fill:"none",xmlns:"http://www.w3.org/2000/svg",role:"img","aria-label":"Kimi Code",onMousedown:j[0]||(j[0]=Re(()=>{},["prevent"])),onClick:j[1]||(j[1]=(...J)=>l(k)&&l(k)(...J))},[...j[104]||(j[104]=[sl(' ',2)])],544)),r("div",gq,[r("h1",null,d(l(i)("app.authPageTitle")),1),r("p",null,d(l(i)("app.authPageMessage")),1)]),M(qe,{class:"auth-page-btn",variant:"primary",onClick:Ut},{default:H(()=>[M(se,{name:"log-in",size:"md"}),r("span",null,d(l(i)("app.authPageLogin")),1)]),_:1})])])):(a(),c("div",{key:2,class:fe(["app",{mobile:l(f),"sidebar-collapsed":l(ve)&&!l(f),"macos-desktop":l(Eo)}]),style:rt({"--preview-w":l(At)+"px"})},[l(f)?(a(),G(lz,{key:1,workspace:l(s).visibleWorkspace.value,"session-title":h.value,running:_.value,branch:l(s).status.value.branch,"session-count":m.value,onOpenSwitcher:j[19]||(j[19]=J=>w.value=!0),onOpenSettings:j[20]||(j[20]=J=>x.value=!0)},null,8,["workspace","session-title","running","branch","session-count"])):(a(),c(he,{key:0},[M(z3,{collapsed:l(ve),dragging:l(R),"col-width":l(X),"active-workspace":l(s).visibleWorkspace.value,"active-workspace-id":l(s).activeWorkspaceId.value,sessions:l(s).sessionsForView.value,groups:l(s).workspaceGroups.value,"pinned-session-ids":l(s).pinnedSessionIds.value,"active-id":l(s).activeSessionId.value,"attention-by-session":l(s).attentionBySession.value,"pending-by-session":l(s).pendingBySession.value,"unread-by-session":l(s).unreadBySession.value,"workspace-sort-mode":l(s).workspaceSortMode.value,backend:l(s).backend.value,onSelect:j[2]||(j[2]=J=>l(s).selectSession(J)),onCreate:Fn,onCreateInWorkspace:j[3]||(j[3]=J=>bs(J)),onSelectWorkspace:j[4]||(j[4]=J=>l(s).openWorkspace(J)),onAddWorkspace:j[5]||(j[5]=J=>Wt.value=!0),onRename:j[6]||(j[6]=(J,ft)=>l(s).renameSession(J,ft)),onArchive:j[7]||(j[7]=J=>ss(J)),onFork:j[8]||(j[8]=J=>l(s).forkSession(J)),onExport:j[9]||(j[9]=J=>l(s).exportSession(J)),onRenameWorkspace:j[10]||(j[10]=(J,ft)=>l(s).renameWorkspace(J,ft)),onDeleteWorkspace:j[11]||(j[11]=J=>On(J)),onReorderWorkspaces:j[12]||(j[12]=J=>l(s).reorderWorkspaces(J)),onSetWorkspaceSortMode:j[13]||(j[13]=J=>l(s).setWorkspaceSortMode(J)),onLoadMoreSessions:j[14]||(j[14]=J=>void l(s).loadMoreSessions(J)),onLoadAllSessions:j[15]||(j[15]=J=>void l(s).loadAllSessions()),onOpenSettings:j[16]||(j[16]=J=>lt.value=!0),onCollapse:l(He)},null,8,["collapsed","dragging","col-width","active-workspace","active-workspace-id","sessions","groups","pinned-session-ids","active-id","attention-by-session","pending-by-session","unread-by-session","workspace-sort-mode","backend","onCollapse"]),gt(M(Dr,{class:"side-handle","storage-key":l(ae),"default-width":l(ee),min:l(de),max:l(Be),"onUpdate:width":j[17]||(j[17]=J=>Y.value=J),"onUpdate:dragging":j[18]||(j[18]=J=>R.value=J)},null,8,["storage-key","default-width","min","max"]),[[Jn,!l(ve)]])],64)),M(aA,{ref_key:"conversationPaneRef",ref:Rt,mobile:l(f),turns:l(s).turns.value,"session-id":l(s).activeSessionId.value,approvals:l(s).pendingApprovals.value,changes:l(s).changes.value,"git-info":l(s).gitInfo.value,tasks:l(s).tasks.value,todos:l(s).todos.value,goal:l(s).goal.value,"activation-badges":l(s).activationBadges.value,status:l(s).status.value,thinking:l(s).thinking.value,"plan-mode":l(s).planMode.value,"plan-armed":l(s).planArmed.value,"swarm-mode":l(s).swarmMode.value,"supermoon-mode":l(s).supermoonMode.value,"goal-mode":l(s).goalMode.value,models:l(s).models.value,"starred-ids":l(s).starredModelIds.value,skills:l(s).skills.value,questions:l(s).questions.value,"pending-question-actions":l(s).pendingQuestionActions,"pending-approval-actions":l(s).pendingApprovalActions,running:_.value,"turn-active":l(s).turnActive.value,queued:l(s).queued.value,"search-files":l(s).searchFiles,"upload-image":l(s).uploadImage,working:l(s).working.value,"model-retry":l(s).modelRetry.value,starting:l(s).isStartingFirstPrompt.value,"fast-moon":l(s).fastMoon.value,"file-reload-key":l(s).activeSessionId.value,"session-loading":l(s).sessionLoading.value,compaction:l(s).compaction.value,"has-more-messages":l(s).hasMoreMessages.value,"loading-more":l(s).loadingMoreMessages.value,"loading-more-error":l(s).loadMoreMessagesError.value,"load-older-messages":l(s).loadOlderMessages,"workspace-name":l(s).visibleWorkspace.value?.name,"workspace-root":l(s).visibleWorkspace.value?.root??l(s).status.value.cwd,"git-diff-stats":l(s).gitDiffStats.value,workspaces:l(s).workspacesView.value,"active-workspace-id":l(s).activeWorkspaceId.value,"session-title":h.value,terminal:l(s).terminal,pr:l(s).activePullRequest.value,"conversation-toc":l(s).conversationToc.value,onOpenChanges:j[21]||(j[21]=J=>l(mn)()),onSelectWorkspace:j[22]||(j[22]=J=>bs(J)),onAddWorkspace:j[23]||(j[23]=J=>Wt.value=!0),onOpenPr:ws,onSubmit:j[24]||(j[24]=J=>wn(J)),onSteer:j[25]||(j[25]=J=>l(s).steerPrompt(J.text,J.attachments)),onApproval:j[26]||(j[26]=(J,ft)=>l(s).respondApproval(J,ft)),onCancelTask:j[27]||(j[27]=J=>l(s).cancelTask(J)),onAnswer:j[28]||(j[28]=(J,ft)=>l(s).respondQuestion(J,ft)),onDismiss:j[29]||(j[29]=J=>l(s).dismissQuestion(J)),onCommand:is,onInterrupt:j[30]||(j[30]=J=>l(s).abortCurrentPrompt()),onUnqueue:as,onEditQueued:Es,onReorderQueue:ks,onSetPermission:j[31]||(j[31]=J=>l(s).setPermission(J)),onSetThinking:j[32]||(j[32]=J=>l(s).setThinking(J)),onTogglePlan:j[33]||(j[33]=J=>l(s).togglePlanArm()),onToggleSwarm:j[34]||(j[34]=J=>l(s).toggleSwarmMode()),onToggleSupermoon:j[35]||(j[35]=J=>l(s).toggleSupermoonMode()),onToggleGoal:j[36]||(j[36]=J=>l(s).toggleGoalMode()),onDismissPlan:j[37]||(j[37]=J=>l(s).dismissPlanMode()),onControlGoal:j[38]||(j[38]=J=>l(s).controlGoal(J)),onRefreshGitStatus:j[39]||(j[39]=J=>l(s).activeSessionId.value&&l(s).loadGitStatus(l(s).activeSessionId.value)),onRenameSession:j[40]||(j[40]=(J,ft)=>l(s).renameSession(J,ft)),onForkSession:j[41]||(j[41]=J=>l(s).forkSession(J)),onArchiveSession:j[42]||(j[42]=J=>ss(J)),onExportSession:j[43]||(j[43]=J=>l(s).exportSession(J)),onCompact:j[44]||(j[44]=J=>l(s).compact()),onPickModel:j[45]||(j[45]=J=>Qt()),onSelectModel:j[46]||(j[46]=J=>Tn(J)),onOpenFile:j[47]||(j[47]=J=>l(te)(J)),onOpenMedia:j[48]||(j[48]=J=>l(Z).open(J)),onOpenThinking:j[49]||(j[49]=J=>l(dn)(J)),onOpenCompaction:j[50]||(j[50]=J=>l(nn)(J)),onOpenAgent:j[51]||(j[51]=J=>l(In)(J)),onOpenToolDiff:j[52]||(j[52]=J=>l(Nt)(J)),onEditMessage:os,onResumeTurn:zn},null,8,["mobile","turns","session-id","approvals","changes","git-info","tasks","todos","goal","activation-badges","status","thinking","plan-mode","plan-armed","swarm-mode","supermoon-mode","goal-mode","models","starred-ids","skills","questions","pending-question-actions","pending-approval-actions","running","turn-active","queued","search-files","upload-image","working","model-retry","starting","fast-moon","file-reload-key","session-loading","compaction","has-more-messages","loading-more","loading-more-error","load-older-messages","workspace-name","workspace-root","git-diff-stats","workspaces","active-workspace-id","session-title","terminal","pr","conversation-toc"]),!l(f)&&(l(Eo)||l(ve))?(a(),G(nt,{key:2,class:"sidebar-toggle-btn",size:"sm",label:l(ve)?l(i)("sidebar.expandSidebar"):l(i)("sidebar.collapseSidebar"),onClick:l(He)},{default:H(()=>[M(se,{name:l(ve)?"panel-expand":"panel-collapse"},null,8,["name"])]),_:1},8,["label","onClick"])):A("",!0),l(Gt)&&!U.value?(a(),G(Dr,{key:3,class:"preview-handle","storage-key":l(De),"default-width":l(Fe),min:l(an),max:l(Ze),reverse:"","aria-label":l(i)("layout.resizePreviewAria"),"onUpdate:width":j[53]||(j[53]=J=>Ve.value=J),"onUpdate:dragging":j[54]||(j[54]=J=>kn.value=J)},null,8,["storage-key","default-width","min","max","aria-label"])):A("",!0),!U.value||l(Gt)?(a(),c("aside",{key:4,class:fe(["global-preview",{open:l(Gt),overlay:U.value,"no-anim":l(kn)||L.value}]),role:"complementary","aria-label":l(i)("layout.detailPanelAria"),"aria-hidden":!l(Gt)},[P.value==="thinking"&&l(Ct)?(a(),G(iu,{key:0,text:l(bt)??"",onClose:l(Kt)},null,8,["text","onClose"])):P.value==="compaction"&&l(hs)?(a(),G(iu,{key:1,text:l(zt)??"",subtitle:l(i)("conversation.summaryTitle"),onClose:l(ut)},null,8,["text","subtitle","onClose"])):P.value==="agent"&&l(Ft)?(a(),G(BT,{key:2,member:l(Ft),onClose:l(_t)},null,8,["member","onClose"])):P.value==="btw"&&l(Gn)?(a(),G(aP,{key:3,turns:l(s).sideChatTurns.value,running:l(s).sideChatRunning.value,sending:l(s).sideChatSending.value,onSend:j[55]||(j[55]=J=>l(s).sendSideChatPrompt(J)),onClose:l(Zt)},null,8,["turns","running","sending","onClose"])):P.value==="diff"?(a(),G(RP,{key:4,mode:l(Tt),changes:l(s).changes.value,"git-info":l(s).gitInfo.value,"file-diff":l(s).fileDiff.value,"selected-diff-path":l(s).selectedDiffPath.value,"file-diff-loading":l(s).fileDiffLoading.value,closable:"",onOpen:l(yn),onBack:j[56]||(j[56]=J=>{Tt.value="list",fn.value=null,l(s).clearFileDiff()}),onClose:l(Rn)},null,8,["mode","changes","git-info","file-diff","selected-diff-path","file-diff-loading","onOpen","onClose"])):P.value==="toolDiff"&&l(pn)?(a(),G(XT,{key:5,target:l(pn),onClose:l(gn)},null,8,["target","onClose"])):P.value==="file"?(a(),G(dT,{key:6,file:l(oe),loading:l(ge),error:l(ce),line:l(ne)?.line,"download-url":l(Q),closable:"","external-actions":l(ie),"open-file":l(te),onClose:l(ye),onOpenExternal:l(_e),onReveal:l(Ce)},null,8,["file","loading","error","line","download-url","external-actions","open-file","onClose","onOpenExternal","onReveal"])):A("",!0)],10,yq)):A("",!0),M(fq,{class:"internal-build-fab"}),sn.value?(a(),G(XP,{key:5,models:l(s).models.value,current:l(s).status.value.modelId,"starred-ids":l(s).starredModelIds.value,loading:we.value,unavailable:Ge.value,onSelect:j[57]||(j[57]=J=>Vt(J)),onToggleStar:j[58]||(j[58]=J=>l(s).toggleStarModel(J)),onClose:j[59]||(j[59]=J=>sn.value=!1)},null,8,["models","current","starred-ids","loading","unavailable"])):A("",!0),lt.value?(a(),G(NO,{key:6,"color-scheme":l(s).colorScheme.value,accent:l(s).accent.value,"ui-font-size":l(s).uiFontSize.value,"auth-ready":l(s).authReady.value,"account-model":l(s).defaultModel.value,notify:l(s).notifyOnComplete.value,"notify-question":l(s).notifyOnQuestion.value,"notify-approval":l(s).notifyOnApproval.value,"notify-permission":l(s).notifyPermission.value,sound:l(s).soundOnComplete.value,"conversation-toc":l(s).conversationToc.value,config:l(s).config.value,models:l(s).models.value,"config-saving":Ht.value,"server-version":l(s).serverVersion.value,backend:l(s).backend.value,onSetColorScheme:j[60]||(j[60]=J=>l(s).setColorScheme(J)),onSetAccent:j[61]||(j[61]=J=>l(s).setAccent(J)),onSetUiFontSize:j[62]||(j[62]=J=>l(s).setUiFontSize(J)),onSetNotify:j[63]||(j[63]=J=>l(s).setNotifyOnComplete(J)),onSetNotifyQuestion:j[64]||(j[64]=J=>l(s).setNotifyOnQuestion(J)),onSetNotifyApproval:j[65]||(j[65]=J=>l(s).setNotifyOnApproval(J)),onSetSound:j[66]||(j[66]=J=>l(s).setSoundOnComplete(J)),onSetConversationToc:j[67]||(j[67]=J=>l(s).setConversationToc(J)),onUpdateConfig:j[68]||(j[68]=J=>Dn(J)),onLogin:j[69]||(j[69]=()=>{lt.value=!1,Ut()}),onLogout:l(s).logout,onOpenOnboarding:j[70]||(j[70]=()=>{lt.value=!1,E()}),onOpenProviders:j[71]||(j[71]=()=>{lt.value=!1,Pt()}),onClose:j[72]||(j[72]=J=>lt.value=!1)},null,8,["color-scheme","accent","ui-font-size","auth-ready","account-model","notify","notify-question","notify-approval","notify-permission","sound","conversation-toc","config","models","config-saving","server-version","backend","onLogout"])):A("",!0),qt.value?(a(),G(VE,{key:7,providers:l(s).providers.value,loading:Je.value,unavailable:at.value,onAdd:j[73]||(j[73]=J=>gs(J)),onRefresh:j[74]||(j[74]=J=>Wn(J)),onDelete:j[75]||(j[75]=J=>en(J)),onImportCatalog:j[76]||(j[76]=J=>bn(J)),onImportRegistry:j[77]||(j[77]=J=>ns(J)),onOpenLogin:j[78]||(j[78]=()=>{qt.value=!1,Ut()}),onClose:j[79]||(j[79]=J=>qt.value=!1)},null,8,["providers","loading","unavailable"])):A("",!0),ct.value?(a(),G(ND,{key:8,status:l(s).status.value,thinking:S.value,"plan-mode":l(s).planMode.value,"swarm-mode":l(s).swarmMode.value,"supermoon-mode":l(s).supermoonMode.value,"cost-usd":l(s).sessionCost.value,onClose:j[80]||(j[80]=J=>ct.value=!1)},null,8,["status","thinking","plan-mode","swarm-mode","supermoon-mode","cost-usd"])):A("",!0),Wt.value?(a(),G(CD,{key:9,"browse-fs":l(s).browseFs,"get-fs-home":l(s).getFsHome,"default-path":l(s).visibleWorkspace.value?.root??l(s).status.value.cwd,error:Jt.value,onAdd:j[81]||(j[81]=J=>Ls(J)),onClose:Gs},null,8,["browse-fs","get-fs-home","default-path","error"])):A("",!0),M(Yo,{name:"gload-fade"},{default:H(()=>[l(s).initialized.value?A("",!0):(a(),G(dN,{key:0,issue:l(s).connectIssue.value},null,8,["issue"]))]),_:1}),l(s).initialized.value&&O.value&&!l(g)?(a(),G(oN,{key:10,onComplete:D,onSkip:D})):A("",!0),M(XD,{warnings:l(s).warnings.value,onDismiss:l(s).dismissWarning},null,8,["warnings","onDismiss"]),l(p)?(a(),G(qN,{key:11})):A("",!0),M(xD),l(f)?(a(),G(Tz,{key:12,modelValue:w.value,"onUpdate:modelValue":j[82]||(j[82]=J=>w.value=J),groups:l(s).workspaceGroups.value,"active-workspace-id":l(s).activeWorkspaceId.value,"active-id":l(s).activeSessionId.value,"attention-by-session":l(s).attentionBySession.value,"attention-by-workspace":l(s).attentionByWorkspace.value,onSelect:j[83]||(j[83]=J=>l(s).selectSession(J)),onCreate:Fn,onCreateInWorkspace:j[84]||(j[84]=J=>bs(J)),onAddWorkspace:j[85]||(j[85]=J=>Wt.value=!0),onRename:j[86]||(j[86]=(J,ft)=>l(s).renameSession(J,ft)),onArchive:j[87]||(j[87]=J=>ss(J)),onDeleteWorkspace:j[88]||(j[88]=J=>On(J)),onLoadMore:j[89]||(j[89]=J=>void l(s).loadMoreSessions(J))},null,8,["modelValue","groups","active-workspace-id","active-id","attention-by-session","attention-by-workspace"])):A("",!0),l(f)?(a(),G(jF,{key:13,modelValue:x.value,"onUpdate:modelValue":j[90]||(j[90]=J=>x.value=J),status:l(s).status.value,thinking:l(s).thinking.value,models:l(s).models.value,"plan-mode":l(s).planMode.value,"goal-mode":l(s).goalMode.value,"swarm-mode":l(s).swarmMode.value,"supermoon-mode":l(s).supermoonMode.value,"color-scheme":l(s).colorScheme.value,"ui-font-size":l(s).uiFontSize.value,"auth-ready":l(s).authReady.value,"conversation-toc":l(s).conversationToc.value,"server-version":l(s).serverVersion.value,onPickModel:j[91]||(j[91]=J=>Qt()),onSetThinking:j[92]||(j[92]=J=>l(s).setThinking(J)),onTogglePlan:j[93]||(j[93]=J=>l(s).togglePlanMode()),onToggleGoal:j[94]||(j[94]=J=>l(s).toggleGoalMode()),onToggleSwarm:j[95]||(j[95]=J=>l(s).toggleSwarmMode()),onToggleSupermoon:j[96]||(j[96]=J=>l(s).toggleSupermoonMode()),onSetPermission:j[97]||(j[97]=J=>l(s).setPermission(J)),onSetColorScheme:j[98]||(j[98]=J=>l(s).setColorScheme(J)),onSetUiFontSize:j[99]||(j[99]=J=>l(s).setUiFontSize(J)),onSetConversationToc:j[100]||(j[100]=J=>l(s).setConversationToc(J)),onLogin:j[101]||(j[101]=()=>{x.value=!1,Ut()}),onLogout:l(s).logout},null,8,["modelValue","status","thinking","models","plan-mode","goal-mode","swarm-mode","supermoon-mode","color-scheme","ui-font-size","auth-ready","conversation-toc","server-version","onLogout"])):A("",!0)],6)),Xt.value?(a(),G(SL,{key:3,"on-start-o-auth-login":Hn,"on-poll-o-auth-login":Qn,"on-cancel-o-auth-login":ys,onSuccess:vn,onClose:j[102]||(j[102]=J=>Xt.value=!1)})):A("",!0),M(NL,{state:l(Z).state.value,onClose:j[103]||(j[103]=J=>l(Z).close())},null,8,["state"])]))}}),bq=Ee(kq,[["__scopeId","data-v-59580251"]]);L0();yu(bq).use(pt).mount("#app");export{_q as I,se as _,Ee as a};
diff --git a/apps/kimi-code/dist-web/assets/index-pE-bC6n5.js b/apps/kimi-code/dist-web/assets/index-pE-bC6n5.js
deleted file mode 100644
index c2d529e4ca..0000000000
--- a/apps/kimi-code/dist-web/assets/index-pE-bC6n5.js
+++ /dev/null
@@ -1,100 +0,0 @@
-const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/DesignSystemView-CsDeDsyo.js","assets/vendor-ucnN-Sh8.js","assets/vendor-4gi77x_E.css","assets/vendor-markstream-D6yjq9lL.js","assets/vendor-markstream-Boo68so5.css","assets/vendor-katex-Com_2SPi.js","assets/vendor-katex-Cp579UoJ.css","assets/DesignSystemView-eIdeAonz.css"])))=>i.map(i=>d[i]);
-import{g as x,d as xe,o as a,c,n as fe,K as gt,m as Fe,a as r,v as G,A as fu,z as A,B as $,bD as We,w as Oe,k as Ue,l as Tn,Q as io,b as M,u as l,x as W,E as d,h as mt,F as ge,r as Te,G as ht,bE as On,bF as xd,s as Id,C as Pn,H as Xn,e as rt,R as yt,bG as An,U as Re,J as ue,V as tl,N as mu,bH as Wo,i as po,bI as Ad,S as vu,T as Yo,p as xo,bJ as Td,bK as Rl,bL as Ol,bM as hu,j as Pd}from"./vendor-ucnN-Sh8.js";import{_ as gu,O as Ed,P as Ld,W as Bd,x as Rd,a as Od,b as Dd,y as zd,h as Fd,g as Nd,p as qd,m as Wd}from"./vendor-markstream-D6yjq9lL.js";import"./vendor-katex-Com_2SPi.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))s(o);new MutationObserver(o=>{for(const i of o)if(i.type==="childList")for(const u of i.addedNodes)u.tagName==="LINK"&&u.rel==="modulepreload"&&s(u)}).observe(document,{childList:!0,subtree:!0});function n(o){const i={};return o.integrity&&(i.integrity=o.integrity),o.referrerPolicy&&(i.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?i.credentials="include":o.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function s(o){if(o.ep)return;o.ep=!0;const i=n(o);fetch(o.href,i)}})();const qe={permission:"kimi-web.permission",activeWorkspace:"kimi-active-workspace",planMode:"kimi-web.plan-mode",planArmed:"kimi-web.plan-armed",swarmMode:"kimi-web.swarm-mode",supermoonMode:"kimi-web.supermoon-mode",goalMode:"kimi-web.goal-mode",uiFontSize:"kimi-web.ui-font-size",starredModels:"kimi-web.starred-models",unread:"kimi-web.unread",onboarded:"kimi-web.onboarded",accent:"kimi-web.accent",colorScheme:"kimi-web.color-scheme",hiddenWorkspaces:"kimi-web.hidden-workspaces",collapsedWorkspaces:"kimi-web.collapsed-workspaces",workspaceOrder:"kimi-web.workspace-order",workspaceNameOverrides:"kimi-web.workspace-name-overrides",workspaceSort:"kimi-web.workspace-sort",workspaceRecencyFloor:"kimi-web.workspace-recency-floor",pinnedSessions:"kimi-web.pinned-sessions",sessionEmoji:"kimi-web.session-emoji",conversationToc:"kimi-web.beta-toc",notifyOnComplete:"kimi-web.notify-on-complete",notifyOnQuestion:"kimi-web.notify-on-question",notifyOnApproval:"kimi-web.notify-on-approval",soundOnComplete:"kimi-web.sound-on-complete",inputHistory:"kimi-web.input-history",pluginExtensionHintDismissed:"kimi-web.plugins.extension-hint-dismissed",locale:"kimi-locale",diffColorblind:"kimi-web.diff-colorblind",clientId:"kimi-web.client-id",debug:"kimi-web.debug",openInLastTarget:"kimi-web.open-in.last-target",sidebarCollapsed:"kimi-web.sidebar-collapsed",sidebarWidth:"kimi-web.sidebar-width",sidebarViewMode:"kimi-web.sidebar-view-mode",codeFont:"kimi-web.code-font",contentAlign:"kimi-web.content-align",theme:"kimi-web.theme",thinking:"kimi-web.thinking"};function Dl(e){return`kimi-web.draft.${e&&e.length>0?e:"__new__"}`}function $t(e){try{return globalThis.localStorage.getItem(e)}catch{return null}}function Ot(e,t){try{globalThis.localStorage.setItem(e,t)}catch{}}function ao(e){try{globalThis.localStorage.removeItem(e)}catch{}}function fo(e){const t=$t(e);if(t===null)return null;try{return JSON.parse(t)}catch{return null}}function Hs(e,t){try{globalThis.localStorage.setItem(e,JSON.stringify(t))}catch{}}function nl(){const e=$t(qe.unread);if(!e)return{};try{const t=JSON.parse(e);if(!t||typeof t!="object")return{};const n={};for(const[s,o]of Object.entries(t))o===!0&&(n[s]=!0);return n}catch{return{}}}function sl(e){const n={...nl()};for(const[s,o]of Object.entries(e))o?n[s]=!0:delete n[s];Ot(qe.unread,JSON.stringify(n))}function Hd(){const e=fo(qe.collapsedWorkspaces);return Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}function Ji(e){Hs(qe.collapsedWorkspaces,Array.from(e))}function Ud(){const e=fo(qe.workspaceOrder);return Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}function yu(e){Hs(qe.workspaceOrder,Array.from(e))}function pi(){const e=fo(qe.workspaceNameOverrides);if(!e||typeof e!="object")return{};const t={};for(const[n,s]of Object.entries(e))typeof s=="string"&&(t[n]=s);return t}function zl(e){Hs(qe.workspaceNameOverrides,e)}function Vd(){return $t(qe.workspaceSort)}function ku(e){Ot(qe.workspaceSort,e)}function jd(){const e=fo(qe.workspaceRecencyFloor);if(!e||typeof e!="object")return{};const t={};for(const[n,s]of Object.entries(e))typeof s=="number"&&Number.isFinite(s)&&(t[n]=s);return t}function bu(e){Hs(qe.workspaceRecencyFloor,e)}const Fl=qe.clientId,Kd="kimi-code-web",Gd="web";function wu(){return{serverHttpUrl:Yd(),clientId:ep(),clientName:Kd,clientVersion:tp(),clientUiMode:Gd}}function Qd(){return typeof window<"u"&&window.location?.origin?window.location.origin:"http://127.0.0.1:58627"}function Yd(e){const t=Qd(),n=new URL(t);return n.pathname=n.pathname.replace(/\/v1\/?$/,"").replace(/\/$/,""),n.search="",n.hash="",n.toString().replace(/\/$/,"")}function Zd(e){return e.replace(/^https?:\/\//,"").replace(/\/$/,"")}function Xd(){const e=typeof window<"u"&&window.location?.origin?window.location.origin:"";return Zd(e)}function no(e,t){return`${e}/api/v1${t.startsWith("/")?t:`/${t}`}`}function Jd(e,t){const n=new URL(`${e}/api/v1/ws`);return n.protocol=n.protocol==="https:"?"wss:":"ws:",n.searchParams.set("client_id",t),n.toString()}function ep(){const e=$t(Fl);if(e)return e;const t=`web_${globalThis.crypto?.randomUUID?.()||Math.random().toString(36).slice(2)}`;return Ot(Fl,t),t}function tp(){return"0.1.2".trim()?"0.1.2":"0.0.0-dev"}async function np(e){try{const t=await fetch("/__kimi-dev/backend",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:e})});return t.ok?await t.json():null}catch{return null}}function sp(e){return e.replace(/^https?:\/\//,"").replace(/\/$/,"")}async function un(e){const t=typeof navigator<"u"?navigator.clipboard:void 0;if(t&&typeof t.writeText=="function")try{return await t.writeText(e),!0}catch{}return ip(e)}function op(e){if(typeof e!="string")return;const t=typeof navigator<"u"?navigator.clipboard:void 0;t&&typeof t.writeText=="function"||un(e)}function ip(e){if(typeof document>"u"||typeof document.execCommand!="function")return!1;const t=document.createElement("textarea");t.value=e,t.setAttribute("readonly",""),t.style.position="fixed",t.style.top="-9999px",t.style.left="-9999px",t.style.opacity="0",document.body.appendChild(t);let n=!1;try{t.focus(),t.select(),n=document.execCommand("copy")}catch{n=!1}finally{document.body.removeChild(t)}return n}function ap(){const e=fo(qe.pinnedSessions);return Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}function lp(e){Hs(qe.pinnedSessions,Array.from(e))}function rp(e,t){return e.includes(t)?e.filter(n=>n!==t):[...e,t]}function Su(e,t){const n=new Set(t),s=e.filter(i=>n.has(i.id)),o=e.filter(i=>!n.has(i.id));return[...s,...o]}function up(e){return e==="grouped"||e==="flat"}function cp(){const e=$t(qe.sidebarViewMode);return up(e)?e:"grouped"}function dp(e){Ot(qe.sidebarViewMode,e)}function pp(e,t){const n=e.flatMap(i=>i.sessions),s=i=>{if(!i)return Number.NEGATIVE_INFINITY;const u=new Date(i).getTime();return Number.isNaN(u)?Number.NEGATIVE_INFINITY:u},o=n.toSorted((i,u)=>s(u.updatedAt)-s(i.updatedAt));return Su(o,t)}function fp(e,t,n){if(e.length===0)return null;const s=new Set(e),o=t.filter(u=>s.has(u)),i=e.filter(u=>!t.includes(u));return i.length===0&&o.length===t.length?null:t.length===0&&n!==void 0?i.toSorted((u,p)=>(n.get(p)??Number.NEGATIVE_INFINITY)-(n.get(u)??Number.NEGATIVE_INFINITY)):[...i,...o]}function mp(e,t){const n=new Map(t.map((s,o)=>[s,o]));return e.toSorted((s,o)=>(n.get(s.id)??-1)-(n.get(o.id)??-1))}function vp(e,t,n,s="before"){const o=e.indexOf(t),i=e.indexOf(n);if(o===-1||i===-1||o===i)return e;const u=[...e];u.splice(o,1);const p=o(t.get(s.id)??Number.NEGATIVE_INFINITY)-(t.get(n.id)??Number.NEGATIVE_INFINITY))}function gp(e,t){const n=new Map;for(const s of e){if(s.parentSessionId||s.archived)continue;const o=new Date(s.updatedAt).getTime();if(Number.isNaN(o))continue;const i=t(s);o>(n.get(i)??Number.NEGATIVE_INFINITY)&&n.set(i,o)}return n}function yp(e,t){let n=!1;const s={...e};for(const[o,i]of t)i>(s[o]??Number.NEGATIVE_INFINITY)&&(s[o]=i,n=!0);return{next:s,changed:n}}function kp(e,t){const n=Object.keys(e);if(!n.some(o=>!t.has(o)))return{next:e,changed:!1};const s={};for(const o of n)t.has(o)&&(s[o]=e[o]);return{next:s,changed:!0}}function bp(e,t){const n=t===void 0?Number.NaN:Date.parse(t),s=Number.isNaN(n)?Number.NEGATIVE_INFINITY:n;return Math.max(e??Number.NEGATIVE_INFINITY,s)}function Cu(e,t){const n=new Map;for(const s of e)n.set(s.id,bp(t[s.id],s.lastOpenedAt));return n}const wp={"&":"&","<":"<",">":">",'"':""","'":"'"};function Nl(e){return e.replace(/[&<>"']/g,t=>wp[t]??t)}function Sp(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Cp(e,t,n=40){const s=e.replace(/\s+/g," ").trim();if(s.length===0)return"";const o=t.trim();if(o.length===0)return ql(s,n*2);const i=s.toLowerCase().indexOf(o.toLowerCase());if(i<0)return ql(s,n*2);const u=Math.max(0,i-n),p=Math.min(s.length,i+o.length+n),m=u>0,h=p`${i} `)}const So=x(0),_p=["type","disabled","aria-label"],$p=xe({__name:"IconButton",props:{size:{default:"md"},disabled:{type:Boolean},label:{},type:{default:"button"}},setup(e,{expose:t}){const n=x();return t({el:n}),(s,o)=>(a(),c("button",{ref_key:"el",ref:n,class:fe(["ui-icon-button",`ui-icon-button--${e.size}`]),type:e.type,disabled:e.disabled,"aria-label":e.label},[gt(s.$slots,"default",{},void 0,!0)],10,_p))}}),Pe=(e,t)=>{const n=e.__vccOpts||e;for(const[s,o]of t)n[s]=o;return n},et=Pe($p,[["__scopeId","data-v-c9e67023"]]),Mp={width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function xp(e,t){return a(),c("svg",Mp,[...t[0]||(t[0]=[r("path",{d:"M11.1 12.9001V15.0909C11.1 15.593 11.5029 16 12 16C12.4971 16 12.9 15.593 12.9 15.0909V12.9001H15.0909C15.593 12.9001 16 12.4972 16 12.0001C16 11.5031 15.593 11.1001 15.0909 11.1001H12.9V8.90909C12.9 8.40701 12.4971 8 12 8C11.5029 8 11.1 8.40701 11.1 8.90909V11.1001H8.90909C8.40701 11.1001 8 11.5031 8 12.0001C8 12.4972 8.40701 12.9001 8.90909 12.9001H11.1Z",fill:"currentColor"},null,-1),r("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M11.9996 2.1001C6.53199 2.1001 2.09961 6.53248 2.09961 12.0001C2.09961 13.9226 2.64847 15.7192 3.59804 17.2391L2.517 19.8207C2.10313 20.8091 2.82908 21.9001 3.90059 21.9001H11.9996C17.4672 21.9001 21.8996 17.4677 21.8996 12.0001C21.8996 6.53248 17.4672 2.1001 11.9996 2.1001ZM3.89961 12.0001C3.89961 7.52659 7.5261 3.9001 11.9996 3.9001C16.4731 3.9001 20.0996 7.52659 20.0996 12.0001C20.0996 16.4736 16.4724 20.1001 11.9989 20.1001H4.35146L5.63494 17.0351L5.35165 16.6291C4.43632 15.3172 3.89961 13.7227 3.89961 12.0001Z",fill:"currentColor"},null,-1)])])}const Ip=Fe({name:"kimi-add-conversation",render:xp}),Ap={width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function Tp(e,t){return a(),c("svg",Ap,[...t[0]||(t[0]=[r("path",{d:"M9.2373 3.7002C10.4169 3.7002 11.5297 4.24779 12.249 5.18262L12.4424 5.43359H18C20.0987 5.43359 21.7998 7.13472 21.7998 9.2334V16.5C21.7998 18.5987 20.0987 20.2998 18 20.2998H6C3.90132 20.2998 2.2002 18.5987 2.2002 16.5V7.5C2.2002 5.40132 3.90132 3.7002 6 3.7002H9.2373ZM6 5.5C4.89543 5.5 4 6.39543 4 7.5V16.5C4 17.6046 4.89543 18.5 6 18.5H18C19.0357 18.5 19.887 17.7128 19.9893 16.7041L20 16.5V9.2334C20 8.19775 19.2128 7.34641 18.2041 7.24414L18 7.2334H12.0479L11.9326 7.22656C11.666 7.19561 11.4205 7.05812 11.2549 6.84277L10.8223 6.28027C10.4437 5.78834 9.85808 5.5 9.2373 5.5H6ZM16 9.59961C16.4971 9.59961 16.9004 10.0029 16.9004 10.5C16.9004 10.9971 16.4971 11.4004 16 11.4004H8C7.50294 11.4004 7.09961 10.9971 7.09961 10.5C7.09961 10.0029 7.50294 9.59961 8 9.59961H16Z",fill:"currentColor"},null,-1)])])}const Pp=Fe({name:"kimi-folder",render:Tp}),Ep={width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},Lp=["clip-path"],Bp=["id"];function Rp(e,t){return a(),c("svg",Ep,[r("g",{"clip-path":"url(#"+e.idMap.clip0_4626_2033+")"},[...t[0]||(t[0]=[r("path",{d:"M18.3623 9.99976L18.209 8.48999C18.2031 8.43161 18.2004 8.37289 18.2002 8.31421C18.1988 8.31196 18.1956 8.30842 18.1904 8.30347C18.1718 8.28559 18.1302 8.26245 18.0713 8.26245H11C10.261 8.26245 9.59753 7.81016 9.32617 7.1228L8.9082 6.06421C8.88101 5.9953 8.85737 5.92501 8.83887 5.85327C8.83778 5.85099 8.833 5.84268 8.81836 5.83179C8.79454 5.81475 8.7549 5.79939 8.70605 5.80054H3.92871C3.86986 5.80054 3.82825 5.82368 3.80957 5.84155C3.80816 5.8429 3.80675 5.84428 3.80566 5.84546L4.47559 14.0955L3.62109 17.5154L5.12109 11.5154C5.34367 10.6251 6.1438 9.99977 7.06152 9.99976H18.3623ZM7.06152 11.7996C6.96976 11.7996 6.88944 11.8629 6.86719 11.9519L5.36719 17.9519C5.33598 18.078 5.43158 18.1999 5.56152 18.2H19.4385C19.5302 18.1999 19.6106 18.1376 19.6328 18.0486L21.1328 12.0486C21.1644 11.9224 21.0686 11.7996 20.9385 11.7996H7.06152ZM20.9385 9.99976C22.2396 9.99977 23.1945 11.2228 22.8789 12.4851L21.3789 18.4851C21.1563 19.3754 20.3562 19.9997 19.4385 19.9998H4.92871C4.41722 19.9998 3.92613 19.8059 3.56445 19.4597C3.20281 19.1135 3.00004 18.6436 3 18.1541L2 5.84644C2.00006 5.35711 2.20311 4.88786 2.56445 4.54175C2.92613 4.19554 3.41722 4.00073 3.92871 4.00073H8.66406C9.10133 3.99051 9.5296 4.1225 9.87793 4.37573C10.2285 4.63118 10.4767 4.99457 10.582 5.40405L11 6.46167H18.0713C18.5828 6.46167 19.0739 6.65648 19.4355 7.00269C19.7971 7.34888 20 7.81883 20 8.30835L20.1719 9.99976H20.9385Z",fill:"currentColor"},null,-1)])],8,Lp),r("defs",null,[r("clipPath",{id:e.idMap.clip0_4626_2033},[...t[1]||(t[1]=[r("rect",{width:"24",height:"24",fill:"white"},null,-1)])],8,Bp)])])}const Op=Fe({name:"kimi-folder-open",render:Rp,setup(){return{idMap:{clip0_4626_2033:"uicons-"+Math.random().toString(36).substr(2,10)}}}}),Dp={width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function zp(e,t){return a(),c("svg",Dp,[...t[0]||(t[0]=[r("path",{d:"M6 12C6 12.8283 5.32834 13.5 4.5 13.5C3.67166 13.5 3 12.8283 3 12C3 11.1717 3.67166 10.5 4.5 10.5C5.32834 10.5 6 11.1717 6 12Z",fill:"currentColor"},null,-1),r("path",{d:"M13.5 12C13.5 12.8283 12.8283 13.5 12 13.5C11.1717 13.5 10.5 12.8283 10.5 12C10.5 11.1717 11.1717 10.5 12 10.5C12.8283 10.5 13.5 11.1717 13.5 12Z",fill:"currentColor"},null,-1),r("path",{d:"M19.5002 13.5C20.3287 13.5 21 12.8287 21 12.0002C21 11.1718 20.3287 10.5 19.5002 10.5C18.6718 10.5 18 11.1718 18 12.0002C18 12.8287 18.6718 13.5 19.5002 13.5Z",fill:"currentColor"},null,-1)])])}const Fp=Fe({name:"kimi-more",render:zp}),Np={width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function qp(e,t){return a(),c("svg",Np,[...t[0]||(t[0]=[r("path",{d:"M11.5 3C16.1944 3 20 6.80558 20 11.5C20 13.523 19.2933 15.381 18.1132 16.8404L21.1364 19.8636C21.4879 20.2151 21.4879 20.7849 21.1364 21.1364C20.7849 21.4879 20.2151 21.4879 19.8636 21.1364L16.8404 18.1132C15.381 19.2933 13.523 20 11.5 20C6.80558 20 3 16.1944 3 11.5C3 6.80558 6.80558 3 11.5 3ZM11.5 18.2C15.2003 18.2 18.2 15.2003 18.2 11.5C18.2 7.79969 15.2003 4.8 11.5 4.8C7.79969 4.8 4.8 7.79969 4.8 11.5C4.8 15.2003 7.79969 18.2 11.5 18.2Z",fill:"currentColor"},null,-1)])])}const Wp=Fe({name:"kimi-search",render:qp}),Hp={width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"};function Up(e,t){return a(),c("svg",Hp,[...t[0]||(t[0]=[r("path",{d:"M16.0404 12C16.0404 9.76874 14.2313 7.9596 12.0001 7.9596C9.76883 7.9596 7.95972 9.76874 7.95972 12C7.95972 14.2313 9.76883 16.0404 12.0001 16.0404C14.2313 16.0404 16.0404 14.2313 16.0404 12ZM14.2222 12C14.2222 13.2271 13.2271 14.2222 12 14.2222C10.7729 14.2222 9.77783 13.2271 9.77783 12C9.77783 10.7729 10.7729 9.77778 12 9.77778C13.2271 9.77778 14.2222 10.7729 14.2222 12Z",fill:"currentColor"},null,-1),r("path",{d:"M9.91145 21.8009C9.29001 21.6797 8.76914 21.2612 8.50632 20.6922L8.07372 19.7556C7.88838 19.3544 7.43553 19.1048 6.95371 19.1549L5.89572 19.2647C5.2733 19.3293 4.64823 19.114 4.22298 18.6611C3.74343 18.1504 3.32454 17.6037 2.97033 17.0181C2.61571 16.4318 2.32839 15.8106 2.10407 15.1566C1.89769 14.5549 2.02148 13.8954 2.4089 13.3902L3.0376 12.5704C3.30043 12.2277 3.30042 11.7722 3.03758 11.4295L2.40413 10.6035C2.01474 10.0958 1.891 9.43198 2.10208 8.82826C2.55037 7.54612 3.27017 6.35997 4.22 5.34259C4.64518 4.8872 5.27275 4.67067 5.89701 4.73544L6.95383 4.84514C7.43561 4.89515 7.88844 4.6456 8.07377 4.24441L8.50266 3.31593C8.76494 2.74818 9.28448 2.33019 9.90423 2.20761C11.2916 1.9332 12.7148 1.93127 14.0885 2.19913C14.7099 2.32029 15.2308 2.73881 15.4937 3.3078L15.9263 4.24441C16.1116 4.6456 16.5644 4.89514 17.0462 4.84514L18.1043 4.73532C18.7267 4.67072 19.3518 4.88603 19.777 5.33886C20.2566 5.84953 20.6755 6.3963 21.0297 6.98193C21.3843 7.56823 21.6716 8.18942 21.8959 8.84339C22.1023 9.44509 21.9785 10.1046 21.5911 10.6098L20.9624 11.4295C20.6996 11.7722 20.6996 12.2278 20.9624 12.5705L21.5959 13.3964C21.9853 13.9042 22.109 14.568 21.8979 15.1717C21.4497 16.4538 20.7299 17.6399 19.7801 18.6573C19.3549 19.1128 18.7273 19.3294 18.103 19.2646L17.0462 19.1549C16.5645 19.1049 16.1116 19.3544 15.9263 19.7556L15.4974 20.6841C15.2351 21.2518 14.7156 21.6698 14.0958 21.7924C12.7083 22.0668 11.2852 22.0687 9.91145 21.8009ZM13.7432 20.0088C13.7844 20.0006 13.8259 19.9673 13.847 19.9216L14.2758 18.9931C14.7915 17.8768 15.9886 17.2171 17.2341 17.3464L18.2909 17.4561C18.3649 17.4638 18.4272 17.4423 18.4512 17.4166C19.2296 16.5828 19.8171 15.6146 20.1817 14.5716C20.1845 14.5636 20.1796 14.5373 20.1532 14.5029L19.5198 13.677C18.7564 12.6815 18.7564 11.3185 19.5198 10.323L20.1485 9.5033C20.1746 9.46927 20.1795 9.4429 20.1762 9.43327C19.9932 8.89965 19.7603 8.39623 19.4741 7.92293C19.1873 7.4489 18.846 7.00333 18.4517 6.58351C18.4272 6.55739 18.3656 6.53616 18.2921 6.54378L17.234 6.65361C15.9886 6.78287 14.7915 6.12317 14.2758 5.00689L13.8432 4.07027C13.822 4.02448 13.7811 3.9916 13.7406 3.98371C12.5983 3.76097 11.4132 3.76258 10.2571 3.99124C10.2158 3.99941 10.1744 4.03271 10.1533 4.07842L9.72441 5.00689C9.20875 6.12317 8.01164 6.7829 6.76619 6.6536L5.70942 6.54391C5.63535 6.53623 5.573 6.55774 5.54905 6.5834C4.77067 7.41713 4.18312 8.38534 3.81845 9.42835C3.81564 9.43637 3.82054 9.46265 3.84693 9.49706L4.48038 10.323C5.24381 11.3185 5.24383 12.6815 4.48041 13.6769L3.85171 14.4967C3.82561 14.5307 3.82066 14.5571 3.82396 14.5667C4.00701 15.1004 4.23986 15.6038 4.52613 16.0771C4.81284 16.5511 5.15421 16.9967 5.54845 17.4165C5.57298 17.4426 5.63461 17.4638 5.70811 17.4562L6.76608 17.3464C8.01157 17.2171 9.20871 17.8768 9.72438 18.9932L10.157 19.9297C10.1781 19.9755 10.2191 20.0084 10.2595 20.0163C11.4018 20.239 12.587 20.2374 13.7432 20.0088Z",fill:"currentColor"},null,-1)])])}const Vp=Fe({name:"kimi-setting",render:Up}),jp={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Kp(e,t){return a(),c("svg",jp,[...t[0]||(t[0]=[r("g",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"},[r("path",{d:"M4 6a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2zm5-2v16"}),r("path",{d:"m15 10l-2 2l2 2"})],-1)])])}const Gp=Fe({name:"tabler-layout-sidebar-left-collapse",render:Kp}),Qp={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Yp(e,t){return a(),c("svg",Qp,[...t[0]||(t[0]=[r("g",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"},[r("path",{d:"M4 6a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2zm5-2v16"}),r("path",{d:"m14 10l2 2l-2 2"})],-1)])])}const Zp=Fe({name:"tabler-layout-sidebar-left-expand",render:Yp}),Xp={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Jp(e,t){return a(),c("svg",Xp,[...t[0]||(t[0]=[r("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"m15 7l-6.5 6.5a1.5 1.5 0 0 0 3 3L18 10a3 3 0 0 0-6-6l-6.5 6.5a4.5 4.5 0 0 0 9 9L21 13"},null,-1)])])}const ef=Fe({name:"tabler-paperclip",render:Jp}),tf={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function nf(e,t){return a(),c("svg",tf,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M11 11V5h2v6h6v2h-6v6h-2v-6H5v-2z"},null,-1)])])}const sf=Fe({name:"ri-add-line",render:nf}),of={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function af(e,t){return a(),c("svg",of,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"m12.866 3l9.526 16.5a1 1 0 0 1-.866 1.5H2.474a1 1 0 0 1-.866-1.5L11.134 3a1 1 0 0 1 1.732 0m-8.66 16h15.588L12 5.5zM11 16h2v2h-2zm0-7h2v5h-2z"},null,-1)])])}const lf=Fe({name:"ri-alert-line",render:af}),rf={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function uf(e,t){return a(),c("svg",rf,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M3 10H2V4.003C2 3.449 2.455 3 2.992 3h18.016A.99.99 0 0 1 22 4.003V10h-1v10.002a.996.996 0 0 1-.993.998H3.993A.996.996 0 0 1 3 20.002zm16 0H5v9h14zM4 5v3h16V5zm5 7h6v2H9z"},null,-1)])])}const cf=Fe({name:"ri-archive-line",render:uf}),df={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function pf(e,t){return a(),c("svg",df,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"m13 16.172l5.364-5.364l1.414 1.414L12 20l-7.778-7.778l1.414-1.414L11 16.172V4h2z"},null,-1)])])}const ff=Fe({name:"ri-arrow-down-line",render:pf}),mf={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function vf(e,t){return a(),c("svg",mf,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"m12 13.171l4.95-4.95l1.414 1.415L12 16L5.636 9.636L7.05 8.222z"},null,-1)])])}const hf=Fe({name:"ri-arrow-down-s-line",render:vf}),gf={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function yf(e,t){return a(),c("svg",gf,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"m5.828 7l2.536 2.535L6.95 10.95L2 6l4.95-4.95l1.414 1.415L5.828 5H13a8 8 0 1 1 0 16H4v-2h9a6 6 0 0 0 0-12z"},null,-1)])])}const kf=Fe({name:"ri-arrow-go-back-line",render:yf}),bf={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function wf(e,t){return a(),c("svg",bf,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"m16.172 11l-5.364-5.364l1.414-1.414L20 12l-7.778 7.778l-1.414-1.414L16.172 13H4v-2z"},null,-1)])])}const Sf=Fe({name:"ri-arrow-right-line",render:wf}),Cf={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function _f(e,t){return a(),c("svg",Cf,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"m13.172 12l-4.95-4.95l1.414-1.413L16 12l-6.364 6.364l-1.414-1.415z"},null,-1)])])}const $f=Fe({name:"ri-arrow-right-s-line",render:_f}),Mf={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function xf(e,t){return a(),c("svg",Mf,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M13 7.828V20h-2V7.828l-5.364 5.364l-1.414-1.414L12 4l7.778 7.778l-1.414 1.414z"},null,-1)])])}const Wl=Fe({name:"ri-arrow-up-line",render:xf}),If={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Af(e,t){return a(),c("svg",If,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"m12 10.828l-4.95 4.95l-1.414-1.414L12 8l6.364 6.364l-1.414 1.414z"},null,-1)])])}const Tf=Fe({name:"ri-arrow-up-s-line",render:Af}),Pf={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Ef(e,t){return a(),c("svg",Pf,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M4 18v-3.7a1.5 1.5 0 0 0-1.5-1.5H2v-1.6h.5A1.5 1.5 0 0 0 4 9.7V6a3 3 0 0 1 3-3h1v2H7a1 1 0 0 0-1 1v4.1A2 2 0 0 1 4.626 12A2 2 0 0 1 6 13.9V18a1 1 0 0 0 1 1h1v2H7a3 3 0 0 1-3-3m16-3.7V18a3 3 0 0 1-3 3h-1v-2h1a1 1 0 0 0 1-1v-4.1a2 2 0 0 1 1.374-1.9A2 2 0 0 1 18 10.1V6a1 1 0 0 0-1-1h-1V3h1a3 3 0 0 1 3 3v3.7a1.5 1.5 0 0 0 1.5 1.5h.5v1.6h-.5a1.5 1.5 0 0 0-1.5 1.5"},null,-1)])])}const Lf=Fe({name:"ri-braces-line",render:Ef}),Bf={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Rf(e,t){return a(),c("svg",Bf,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M9 3V1H7v2H3a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h18a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1h-4V1h-2v2zm-5 7h16v9H4zm0-5h3v1h2V5h6v1h2V5h3v3H4zm5.879 5.964L12 13.086l2.121-2.122l1.415 1.415l-2.122 2.121l2.121 2.121l-1.414 1.414L12 15.915l-2.121 2.12l-1.415-1.414l2.122-2.12l-2.122-2.122z"},null,-1)])])}const Of=Fe({name:"ri-calendar-close-line",render:Rf}),Df={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function zf(e,t){return a(),c("svg",Df,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M7 3V1h2v2h6V1h2v2h4a1 1 0 0 1 1 1v5h-2V5h-3v2h-2V5H9v2H7V5H4v14h6v2H3a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zm10 9a4 4 0 1 0 0 8a4 4 0 0 0 0-8m-6 4a6 6 0 1 1 12 0a6 6 0 0 1-12 0m5-3v3.414l2.293 2.293l1.414-1.414L18 15.586V13z"},null,-1)])])}const Ff=Fe({name:"ri-calendar-schedule-line",render:zf}),Nf={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function qf(e,t){return a(),c("svg",Nf,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M9 1v2h6V1h2v2h4a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h4V1zm11 10H4v8h16zM8 14v2H6v-2zm10 0v2h-8v-2zM7 5H4v4h16V5h-3v2h-2V5H9v2H7z"},null,-1)])])}const Wf=Fe({name:"ri-calendar-todo-line",render:qf}),Hf={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Uf(e,t){return a(),c("svg",Hf,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"m10 15.17l9.192-9.191l1.414 1.414L10 17.999l-6.364-6.364l1.414-1.414z"},null,-1)])])}const Vf=Fe({name:"ri-check-line",render:Uf}),jf={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Kf(e,t){return a(),c("svg",jf,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"m12 10.587l4.95-4.95l1.414 1.414l-4.95 4.95l4.95 4.95l-1.415 1.414l-4.95-4.95l-4.949 4.95l-1.414-1.415l4.95-4.95l-4.95-4.95L7.05 5.638z"},null,-1)])])}const Gf=Fe({name:"ri-close-line",render:Kf}),Qf={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Yf(e,t){return a(),c("svg",Qf,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"m23 12l-7.071 7.071l-1.414-1.414L20.172 12l-5.657-5.657l1.414-1.414zM3.828 12l5.657 5.657l-1.414 1.414L1 12l7.071-7.071l1.414 1.414z"},null,-1)])])}const Zf=Fe({name:"ri-code-line",render:Yf}),Xf={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Jf(e,t){return a(),c("svg",Xf,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M15 4h-2v7h7V9h-3.586l4.293-4.293l-1.414-1.414L15 7.586zM4 15h3.586l-4.293 4.293l1.414 1.414L9 16.414V20h2v-7H4z"},null,-1)])])}const em=Fe({name:"ri-collapse-diagonal-line",render:Jf}),tm={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function nm(e,t){return a(),c("svg",tm,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M3 19h18v2H3zm10-5.828L19.071 7.1l1.414 1.414L12 17L3.515 8.515L4.929 7.1L11 13.173V2h2z"},null,-1)])])}const sm=Fe({name:"ri-download-line",render:nm}),om={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function im(e,t){return a(),c("svg",om,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M8.5 7a1.5 1.5 0 1 0 0-3a1.5 1.5 0 0 0 0 3m0 6.5a1.5 1.5 0 1 0 0-3a1.5 1.5 0 0 0 0 3m1.5 5a1.5 1.5 0 1 1-3 0a1.5 1.5 0 0 1 3 0M15.5 7a1.5 1.5 0 1 0 0-3a1.5 1.5 0 0 0 0 3m1.5 5a1.5 1.5 0 1 1-3 0a1.5 1.5 0 0 1 3 0m-1.5 8a1.5 1.5 0 1 0 0-3a1.5 1.5 0 0 0 0 3"},null,-1)])])}const am=Fe({name:"ri-draggable",render:im}),lm={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function rm(e,t){return a(),c("svg",lm,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M6.17 18a3.001 3.001 0 0 1 5.66 0H22v2H11.83a3.001 3.001 0 0 1-5.66 0H2v-2zm6-7a3.001 3.001 0 0 1 5.66 0H22v2h-4.17a3.001 3.001 0 0 1-5.66 0H2v-2zm-6-7a3.001 3.001 0 0 1 5.66 0H22v2H11.83a3.001 3.001 0 0 1-5.66 0H2V4zM9 6a1 1 0 1 0 0-2a1 1 0 0 0 0 2m6 7a1 1 0 1 0 0-2a1 1 0 0 0 0 2m-6 7a1 1 0 1 0 0-2a1 1 0 0 0 0 2"},null,-1)])])}const um=Fe({name:"ri-equalizer-line",render:rm}),cm={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function dm(e,t){return a(),c("svg",cm,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M17.586 5H14V3h7v7h-2V6.414l-4.293 4.293l-1.414-1.414zM3 14h2v3.586l4.293-4.293l1.414 1.414L6.414 19H10v2H3z"},null,-1)])])}const pm=Fe({name:"ri-expand-diagonal-line",render:dm}),fm={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function mm(e,t){return a(),c("svg",fm,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M10 6v2H5v11h11v-5h2v6a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1zm11-3v8h-2V6.413l-7.793 7.794l-1.414-1.414L17.585 5H13V3z"},null,-1)])])}const vm=Fe({name:"ri-external-link-line",render:mm}),hm={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function gm(e,t){return a(),c("svg",hm,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M15 4H5v16h14V8h-4zM3 2.992C3 2.444 3.447 2 3.999 2H16l5 5v13.993A1 1 0 0 1 20.007 22H3.993A1 1 0 0 1 3 21.008zM11 11V8h2v3h3v2h-3v3h-2v-3H8v-2z"},null,-1)])])}const ym=Fe({name:"ri-file-add-line",render:gm}),km={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function bm(e,t){return a(),c("svg",km,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M7 6V3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1h-3v3c0 .552-.45 1-1.007 1H4.007A1 1 0 0 1 3 21l.003-14c0-.552.45-1 1.006-1zM5.002 8L5 20h10V8zM9 6h8v10h2V4H9z"},null,-1)])])}const wm=Fe({name:"ri-file-copy-line",render:bm}),Sm={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Cm(e,t){return a(),c("svg",Sm,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"m21 6.757l-2 2V4h-9v5H5v11h14v-2.757l2-2v5.765a.993.993 0 0 1-.993.992H3.993A1 1 0 0 1 3 20.993V8l6.003-6h10.995C20.55 2 21 2.455 21 2.992zm.778 2.05l1.414 1.415L15.414 18l-1.416-.002l.002-1.412z"},null,-1)])])}const _m=Fe({name:"ri-file-edit-line",render:Cm}),$m={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Mm(e,t){return a(),c("svg",$m,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M9 2.003V2h10.998C20.55 2 21 2.455 21 2.992v18.016a.993.993 0 0 1-.993.992H3.993A1 1 0 0 1 3 20.993V8zM5.83 8H9V4.83zM11 4v5a1 1 0 0 1-1 1H5v10h14V4z"},null,-1)])])}const Hl=Fe({name:"ri-file-line",render:Mm}),xm={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Im(e,t){return a(),c("svg",xm,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M21 8v12.993A1 1 0 0 1 20.007 22H3.993A.993.993 0 0 1 3 21.008V2.992C3 2.455 3.449 2 4.002 2h10.995zm-2 1h-5V4H5v16h14zM8 7h3v2H8zm0 4h8v2H8zm0 4h8v2H8z"},null,-1)])])}const Am=Fe({name:"ri-file-text-line",render:Im}),Tm={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Pm(e,t){return a(),c("svg",Tm,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M13 9h8L11 24v-9H4l9-15zm-2 2V7.22L7.532 13H13v4.394L17.263 11z"},null,-1)])])}const Em=Fe({name:"ri-flashlight-line",render:Pm}),Lm={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Bm(e,t){return a(),c("svg",Lm,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M12.414 5H21a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h7.414zM4 5v14h16V7h-8.414l-2-2zm7 7V9h2v3h3v2h-3v3h-2v-3H8v-2z"},null,-1)])])}const Rm=Fe({name:"ri-folder-add-line",render:Bm}),Om={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Dm(e,t){return a(),c("svg",Om,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M12.414 5H21a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h7.414z"},null,-1)])])}const zm=Fe({name:"ri-folder-fill",render:Dm}),Fm={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Nm(e,t){return a(),c("svg",Fm,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M6 5a1 1 0 1 0 0 2a1 1 0 0 0 0-2M3 6a3 3 0 1 1 4 2.83V9a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2v-.17a3.001 3.001 0 1 1 2 0V9a4 4 0 0 1-4 4h-2v2.17a3.001 3.001 0 1 1-2 0V13H9a4 4 0 0 1-4-4v-.17A3 3 0 0 1 3 6m15-1a1 1 0 1 0 0 2a1 1 0 0 0 0-2m-6 12a1 1 0 1 0 0 2a1 1 0 0 0 0-2"},null,-1)])])}const qm=Fe({name:"ri-git-fork-line",render:Nm}),Wm={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Hm(e,t){return a(),c("svg",Wm,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M15 5h2a2 2 0 0 1 2 2v8.17a3.001 3.001 0 1 1-2 0V7h-2v3l-4.5-4L15 2zM5 8.83a3.001 3.001 0 1 1 2 0v6.34a3.001 3.001 0 1 1-2 0zM6 7a1 1 0 1 0 0-2a1 1 0 0 0 0 2m0 12a1 1 0 1 0 0-2a1 1 0 0 0 0 2m12 0a1 1 0 1 0 0-2a1 1 0 0 0 0 2"},null,-1)])])}const Um=Fe({name:"ri-git-pull-request-line",render:Hm}),Vm={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function jm(e,t){return a(),c("svg",Vm,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10s-4.477 10-10 10m-2.29-2.333A17.9 17.9 0 0 1 8.027 13H4.062a8.01 8.01 0 0 0 5.648 6.667M10.03 13c.151 2.439.848 4.73 1.97 6.752A15.9 15.9 0 0 0 13.97 13zm9.908 0h-3.965a17.9 17.9 0 0 1-1.683 6.667A8.01 8.01 0 0 0 19.938 13M4.062 11h3.965A17.9 17.9 0 0 1 9.71 4.333A8.01 8.01 0 0 0 4.062 11m5.969 0h3.938A15.9 15.9 0 0 0 12 4.248A15.9 15.9 0 0 0 10.03 11m4.259-6.667A17.9 17.9 0 0 1 15.973 11h3.965a8.01 8.01 0 0 0-5.648-6.667"},null,-1)])])}const Km=Fe({name:"ri-global-line",render:jm}),Gm={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Qm(e,t){return a(),c("svg",Gm,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M2.992 21A.993.993 0 0 1 2 20.007V3.993A1 1 0 0 1 2.992 3h18.016c.548 0 .992.445.992.993v16.014a1 1 0 0 1-.992.993zM20 15V5H4v14L14 9zm0 2.828l-6-6L6.828 19H20zM8 11a2 2 0 1 1 0-4a2 2 0 0 1 0 4"},null,-1)])])}const Ul=Fe({name:"ri-image-line",render:Qm}),Ym={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Zm(e,t){return a(),c("svg",Ym,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10s-4.477 10-10 10m0-2a8 8 0 1 0 0-16a8 8 0 0 0 0 16M11 7h2v2h-2zm0 4h2v6h-2z"},null,-1)])])}const Xm=Fe({name:"ri-information-line",render:Zm}),Jm={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function ev(e,t){return a(),c("svg",Jm,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"m13.06 8.111l1.415 1.414a7 7 0 0 1 0 9.9l-.354.353a7 7 0 1 1-9.9-9.9l1.415 1.415a5 5 0 1 0 7.071 7.071l.354-.354a5 5 0 0 0 0-7.07l-1.415-1.415zm6.718 6.01l-1.414-1.414a5 5 0 0 0-7.071-7.07l-.354.353a5 5 0 0 0 0 7.07l1.415 1.415l-1.415 1.414l-1.414-1.414a7 7 0 0 1 0-9.9l.354-.353a7 7 0 1 1 9.9 9.9"},null,-1)])])}const tv=Fe({name:"ri-links-line",render:ev}),nv={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function sv(e,t){return a(),c("svg",nv,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M8 4h13v2H8zm-5-.5h3v3H3zm0 7h3v3H3zm0 7h3v3H3zM8 11h13v2H8zm0 7h13v2H8z"},null,-1)])])}const ov=Fe({name:"ri-list-check",render:sv}),iv={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function av(e,t){return a(),c("svg",iv,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M8 4h13v2H8zM4.5 6.5a1.5 1.5 0 1 1 0-3a1.5 1.5 0 0 1 0 3m0 7a1.5 1.5 0 1 1 0-3a1.5 1.5 0 0 1 0 3m0 6.9a1.5 1.5 0 1 1 0-3a1.5 1.5 0 0 1 0 3M8 11h13v2H8zm0 7h13v2H8z"},null,-1)])])}const lv=Fe({name:"ri-list-unordered",render:av}),rv={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function uv(e,t){return a(),c("svg",rv,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M4 15h2v5h12V4H6v5H4V3a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1zm6-4V8l5 4l-5 4v-3H2v-2z"},null,-1)])])}const cv=Fe({name:"ri-login-box-line",render:uv}),dv={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function pv(e,t){return a(),c("svg",dv,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M3 3h18a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1m17 4.238l-7.928 7.1L4 7.216V19h16zM4.511 5l7.55 6.662L19.502 5z"},null,-1)])])}const fv=Fe({name:"ri-mail-line",render:pv}),mv={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function vv(e,t){return a(),c("svg",mv,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M6.455 19L2 22.5V4a1 1 0 0 1 1-1h18a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1zm-.692-2H20V5H4v13.385zM8 10h8v2H8z"},null,-1)])])}const hv=Fe({name:"ri-message-line",render:vv}),gv={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function yv(e,t){return a(),c("svg",gv,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M6 5h2v14H6zm10 0h2v14h-2z"},null,-1)])])}const kv=Fe({name:"ri-pause-fill",render:yv}),bv={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function wv(e,t){return a(),c("svg",bv,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"m15.728 9.576l-1.414-1.414L5 17.476v1.414h1.414zm1.414-1.414l1.414-1.414l-1.414-1.414l-1.414 1.414zm-9.9 12.728H3v-4.243L16.435 3.212a1 1 0 0 1 1.414 0l2.829 2.829a1 1 0 0 1 0 1.414z"},null,-1)])])}const Sv=Fe({name:"ri-pencil-line",render:wv}),Cv={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function _v(e,t){return a(),c("svg",Cv,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M19.376 12.416L8.777 19.482A.5.5 0 0 1 8 19.066V4.934a.5.5 0 0 1 .777-.416l10.599 7.066a.5.5 0 0 1 0 .832"},null,-1)])])}const $v=Fe({name:"ri-play-fill",render:_v}),Mv={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function xv(e,t){return a(),c("svg",Mv,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"m22.313 10.175l-1.415 1.414l-.707-.707l-4.242 4.243l-.707 3.536l-1.415 1.414l-4.242-4.243l-4.95 4.95l-1.414-1.414l4.95-4.95l-4.243-4.243l1.414-1.414l3.536-.707l4.242-4.243l-.707-.707l1.414-1.414z"},null,-1)])])}const Iv=Fe({name:"ri-pushpin-fill",render:xv}),Av={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Tv(e,t){return a(),c("svg",Av,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"m13.827 1.69l8.486 8.485l-1.415 1.414l-.707-.707l-4.242 4.243l-.707 3.536l-1.415 1.414l-4.242-4.243l-4.95 4.95l-1.414-1.414l4.95-4.95l-4.243-4.243l1.414-1.414l3.536-.707l4.242-4.243l-.707-.707zm.707 3.536l-4.67 4.67l-2.822.565l6.5 6.5l.564-2.822l4.671-4.67z"},null,-1)])])}const Pv=Fe({name:"ri-pushpin-line",render:Tv}),Ev={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Lv(e,t){return a(),c("svg",Ev,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10s-4.477 10-10 10m0-2a8 8 0 1 0 0-16a8 8 0 0 0 0 16m-1-5h2v2h-2zm2-1.645V14h-2v-1.5a1 1 0 0 1 1-1a1.5 1.5 0 1 0-1.471-1.794l-1.962-.393A3.501 3.501 0 1 1 13 13.355"},null,-1)])])}const Bv=Fe({name:"ri-question-line",render:Lv}),Rv={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Ov(e,t){return a(),c("svg",Rv,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10s-4.477 10-10 10m0-2a8 8 0 1 0 0-16a8 8 0 0 0 0 16m-4-7h8a4 4 0 0 1-8 0m0-2a1.5 1.5 0 1 1 0-3a1.5 1.5 0 0 1 0 3m8 0a1.5 1.5 0 1 1 0-3a1.5 1.5 0 0 1 0 3"},null,-1)])])}const Dv=Fe({name:"ri-emotion-line",render:Ov}),zv={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Fv(e,t){return a(),c("svg",zv,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M20 4v12h3l-4 5l-4-5h3V4zm-8 14v2H3v-2zm2-7v2H3v-2zm0-7v2H3V4z"},null,-1)])])}const Nv=Fe({name:"ri-sort-desc",render:Fv}),qv={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Wv(e,t){return a(),c("svg",qv,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M14 4.438A2.437 2.437 0 0 0 16.438 2h1.125A2.437 2.437 0 0 0 20 4.438v1.125A2.437 2.437 0 0 0 17.563 8h-1.125A2.437 2.437 0 0 0 14 5.563zM1 11a6 6 0 0 0 6-6h2a6 6 0 0 0 6 6v2a6 6 0 0 0-6 6H7a6 6 0 0 0-6-6zm3.876 1A8.04 8.04 0 0 1 8 15.124A8.04 8.04 0 0 1 11.124 12A8.04 8.04 0 0 1 8 8.876A8.04 8.04 0 0 1 4.876 12m12.374 2A3.25 3.25 0 0 1 14 17.25v1.5A3.25 3.25 0 0 1 17.25 22h1.5A3.25 3.25 0 0 1 22 18.75v-1.5A3.25 3.25 0 0 1 18.75 14z"},null,-1)])])}const Hv=Fe({name:"ri-sparkling-line",render:Wv}),Uv={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Vv(e,t){return a(),c("svg",Uv,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"m12 18.26l-7.053 3.948l1.575-7.928L.588 8.792l8.027-.952L12 .5l3.385 7.34l8.027.952l-5.934 5.488l1.575 7.928z"},null,-1)])])}const jv=Fe({name:"ri-star-fill",render:Vv}),Kv={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Gv(e,t){return a(),c("svg",Kv,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"m12 18.26l-7.053 3.948l1.575-7.928L.588 8.792l8.027-.952L12 .5l3.385 7.34l8.027.952l-5.934 5.488l1.575 7.928zm0-2.292l4.247 2.377l-.948-4.773l3.573-3.305l-4.833-.573l-2.038-4.419l-2.039 4.42l-4.833.572l3.573 3.305l-.948 4.773z"},null,-1)])])}const Qv=Fe({name:"ri-star-line",render:Gv}),Yv={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Zv(e,t){return a(),c("svg",Yv,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M6 5h12a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1"},null,-1)])])}const Xv=Fe({name:"ri-stop-fill",render:Zv}),Jv={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function e1(e,t){return a(),c("svg",Jv,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M5 11v2h14v-2z"},null,-1)])])}const t1=Fe({name:"ri-subtract-line",render:e1}),n1={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function s1(e,t){return a(),c("svg",n1,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M12 2a1 1 0 1 1 0 2a8 8 0 1 0 8 8a1 1 0 1 1 2 0c0 5.523-4.477 10-10 10S2 17.523 2 12S6.477 2 12 2m0 4a1 1 0 1 1 0 2a4 4 0 1 0 4 4a1 1 0 1 1 2 0a6 6 0 1 1-6-6m5.656-3.9a1.001 1.001 0 0 1 1.415 1.415l-.708.706h.001a1 1 0 1 0 1.414 1.415l.707-.707A1 1 0 0 1 21.9 6.343l-2.12 2.122a1 1 0 0 1-.708.292h-2.414l-3.95 3.95a1 1 0 0 1-1.414-1.414l3.95-3.95V4.93a1 1 0 0 1 .292-.707z"},null,-1)])])}const o1=Fe({name:"ri-target-line",render:s1}),i1={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function a1(e,t){return a(),c("svg",i1,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M3 3h18a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1m1 2v14h16V5zm8 10h6v2h-6zm-3.333-3L5.838 9.172l1.415-1.415L11.495 12l-4.242 4.243l-1.415-1.415z"},null,-1)])])}const l1=Fe({name:"ri-terminal-box-line",render:a1}),r1={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function u1(e,t){return a(),c("svg",r1,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10s-4.477 10-10 10m0-2a8 8 0 1 0 0-16a8 8 0 0 0 0 16m1-8h4v2h-6V7h2z"},null,-1)])])}const c1=Fe({name:"ri-time-line",render:u1}),d1={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function p1(e,t){return a(),c("svg",d1,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M5.33 3.272a3.5 3.5 0 0 1 4.254 4.962l10.709 10.71l-1.414 1.414l-10.71-10.71a3.502 3.502 0 0 1-4.962-4.255L5.444 7.63a1.5 1.5 0 0 0 2.121-2.121zm10.367 1.883l3.182-1.768l1.414 1.415l-1.768 3.182l-1.768.353l-2.12 2.121l-1.415-1.414l2.121-2.121zm-6.718 8.132l1.415 1.414l-5.304 5.303a1 1 0 0 1-1.492-1.327l.078-.087z"},null,-1)])])}const f1=Fe({name:"ri-tools-line",render:p1}),m1={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function v1(e,t){return a(),c("svg",m1,[...t[0]||(t[0]=[r("path",{fill:"currentColor",d:"M4 22a8 8 0 1 1 16 0h-2a6 6 0 0 0-12 0zm8-9c-3.315 0-6-2.685-6-6s2.685-6 6-6s6 2.685 6 6s-2.685 6-6 6m0-2c2.21 0 4-1.79 4-4s-1.79-4-4-4s-4 1.79-4 4s1.79 4 4 4"},null,-1)])])}const h1=Fe({name:"ri-user-line",render:v1}),g1={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function y1(e,t){return a(),c("svg",g1,[...t[0]||(t[0]=[r("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 3h.393a7.5 7.5 0 0 0 7.92 12.446A9 9 0 1 1 12 2.992zm5 1a2 2 0 0 0 2 2a2 2 0 0 0-2 2a2 2 0 0 0-2-2a2 2 0 0 0 2-2m2 7h2m-1-1v2"},null,-1)])])}const k1=Fe({name:"tabler-moon-stars",render:y1}),b1=`
-
-
-
-`,w1=`
-
-
-`,S1=`
-
-
-
-
-
-
-
-
-
-`,C1=`
-
-
-
-
-`,_1=`
-
-
-`,$1=`
-
-
-
-`,M1=' ',x1=' ',I1=' ',A1=' ',T1=' ',P1=' ',E1=' ',L1=' ',B1=' ',R1=' ',O1=' ',D1=' ',Vl=' ',z1=' ',F1=' ',N1=' ',q1=' ',W1=' ',H1=' ',U1=' ',V1=' ',j1=' ',K1=' ',G1=' ',Q1=' ',Y1=' ',Z1=' ',X1=' ',J1=' ',eh=' ',jl=' ',th=' ',nh=' ',sh=' ',oh=' ',ih=' ',ah=' ',lh=' ',Kl=' ',rh=' ',uh=' ',ch=' ',dh=' ',ph=' ',fh=' ',mh=' ',vh=' ',hh=' ',gh=' ',yh=' ',kh=' ',bh=' ',wh=' ',Sh=' ',Ch=' ',_h=' ',$h=' ',Mh=' ',xh=' ',Ih=' ',Ah=' ',Th=' ',Ph=' ',Eh=' ',_u={sm:14,md:16,lg:20};function ze(e,t){return{component:e,svg:t}}const $u={plus:ze(sf,T1),"chat-new":ze(Ip,b1),"calendar-close":ze(Of,N1),"calendar-schedule":ze(Ff,q1),"calendar-todo":ze(Wf,W1),close:ze(Gf,U1),check:ze(Vf,H1),archive:ze(cf,E1),search:ze(Wp,_1),copy:ze(wm,J1),link:ze(tv,uh),"external-link":ze(vm,Z1),download:ze(sm,K1),undo:ze(kf,R1),send:ze(Wl,Vl),image:ze(Ul,Kl),settings:ze(Vp,$1),sliders:ze(um,Q1),"log-in":ze(cv,ph),"chevron-down":ze(hf,B1),"chevron-right":ze($f,D1),"chevron-up":ze(Tf,z1),"arrow-up":ze(Wl,Vl),"arrow-down":ze(ff,L1),"arrow-right":ze(Sf,O1),minus:ze(t1,xh),"panel-collapse":ze(Gp,M1),"panel-expand":ze(Zp,x1),expand:ze(pm,Y1),collapse:ze(em,j1),list:ze(lv,dh),sort:ze(Nv,Sh),grip:ze(am,G1),folder:ze(Op,S1),"folder-closed":ze(Pp,w1),"folder-plus":ze(Rm,sh),"folder-solid":ze(zm,oh),file:ze(Hl,jl),"file-text":ze(Am,th),"file-edit":ze(_m,eh),"file-plus":ze(ym,X1),"file-off":ze(Hl,jl),attachment:ze(ef,I1),"image-off":ze(Ul,Kl),code:ze(Zf,V1),terminal:ze(l1,Ah),pencil:ze(Sv,hh),tool:ze(f1,Ph),glob:ze(Lf,F1),globe:ze(Km,lh),"check-list":ze(ov,ch),bolt:ze(Em,nh),"git-fork":ze(qm,ih),"git-pull-request":ze(Um,ah),message:ze(hv,mh),mail:ze(fv,fh),user:ze(h1,Eh),info:ze(Xm,rh),"help-circle":ze(Bv,bh),"alert-triangle":ze(lf,P1),clock:ze(c1,Th),sparkles:ze(Hv,Ch),"moon-stars":ze(k1,A1),target:ze(o1,Ih),pause:ze(kv,vh),play:ze($v,gh),stop:ze(Xv,Mh),star:ze(jv,_h),"star-outline":ze(Qv,$h),pin:ze(Pv,kh),"pin-fill":ze(Iv,yh),emotion:ze(Dv,wh),"dots-horizontal":ze(Fp,C1)};function Lh(e){return $u[e]}function Bh(e,t){return e.replace(/\s(?:width|height)="[^"]*"/g,"").replace(/^Lh(t.name)),s=$(()=>_u[t.size]);return(o,i)=>n.value?(a(),G(fu(n.value.component),{key:0,class:"kw-icon",width:s.value,height:s.value,"aria-label":e.label,"aria-hidden":e.label?void 0:!0},null,8,["width","height","aria-label","aria-hidden"])):A("",!0)}}),Rh={key:0,class:"ui-dialog__head"},Oh={class:"ui-dialog__titles"},Dh={key:0,class:"ui-dialog__title"},zh={key:1,class:"ui-dialog__desc"},Fh={class:"ui-dialog__body"},Nh={key:1,class:"ui-dialog__foot"},qh='a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])',Wh=xe({__name:"Dialog",props:{open:{type:Boolean},title:{},description:{},closeOnOverlay:{type:Boolean,default:!0},closeOnEsc:{type:Boolean,default:!0},size:{default:"md"},height:{default:"auto"},padded:{type:Boolean,default:!0},initialFocus:{}},emits:["update:open","close"],setup(e,{emit:t}){const{t:n}=We(),s=e,o=t,i=x(null);let u=null;function p(){o("update:open",!1),o("close")}function m(){return i.value?Array.from(i.value.querySelectorAll(qh)):[]}function h(){const{initialFocus:v}=s;return v?typeof v=="function"?v()??null:typeof v=="string"?i.value?.querySelector(v)??null:i.value?.contains(v)?v:null:null}function w(v){if(!s.open)return;if(v.key==="Escape"&&s.closeOnEsc){v.preventDefault(),p();return}if(v.key!=="Tab")return;const f=m(),_=f[0],g=f[f.length-1];if(!_||!g){v.preventDefault(),i.value?.focus();return}const b=document.activeElement;v.shiftKey&&b===_?(v.preventDefault(),g.focus()):!v.shiftKey&&b===g&&(v.preventDefault(),_.focus())}function I(v){s.closeOnOverlay&&v.target===v.currentTarget&&p()}return Oe(()=>s.open,async v=>{if(v){So.value+=1,u=document.activeElement,await Ue();const f=h(),_=m();(f??_[0]??i.value)?.focus()}else So.value=Math.max(0,So.value-1),u instanceof HTMLElement&&(u.focus(),u=null)},{immediate:!0}),typeof window<"u"&&window.addEventListener("keydown",w),Tn(()=>{typeof window<"u"&&window.removeEventListener("keydown",w),s.open&&(So.value=Math.max(0,So.value-1))}),(v,f)=>(a(),G(io,{to:"body"},[e.open?(a(),c("div",{key:0,class:"ui-dialog__overlay",onMousedown:I},[r("div",{ref_key:"panel",ref:i,class:fe(["ui-dialog",[`ui-dialog--${e.size}`,{"ui-dialog--flush":!e.padded,"ui-dialog--fixed-height":e.height==="fixed"}]]),role:"dialog","aria-modal":"true",tabindex:"-1"},[e.title||v.$slots.head?(a(),c("div",Rh,[gt(v.$slots,"head",{},()=>[r("div",Oh,[e.title?(a(),c("div",Dh,d(e.title),1)):A("",!0),e.description?(a(),c("div",zh,d(e.description),1)):A("",!0)])],!0),M(et,{class:"ui-dialog__close",size:"sm",label:l(n)("common.close"),onClick:p},{default:W(()=>[M(le,{name:"close",size:"md"})]),_:1},8,["label"])])):A("",!0),r("div",Fh,[gt(v.$slots,"default",{},void 0,!0)]),v.$slots.foot?(a(),c("div",Nh,[gt(v.$slots,"foot",{},void 0,!0)])):A("",!0)],2)],32)):A("",!0)]))}}),ps=Pe(Wh,[["__scopeId","data-v-ee025dcb"]]),Hh={class:"sd-head"},Uh=["placeholder","aria-label"],Vh=["aria-selected","onClick","onMousemove"],jh={class:"sd-meta"},Kh=["innerHTML"],Gh={class:"sd-time"},Qh=["innerHTML"],Yh=["innerHTML"],Zh={key:1,class:"sd-empty"},Xh={class:"sd-hint"},Jh=200,eg=xe({__name:"SearchSessionsDialog",props:{sessions:{},activeId:{}},emits:["select","close"],setup(e,{emit:t}){const{t:n}=We(),s=e,o=t,i=x(!0),u=x(""),p=x(null),m=x(null),h=$(()=>{const y=u.value.trim().toLowerCase(),E=[];for(const S of s.sessions){const O=S.title??"",D=S.lastPrompt??"",T=S.workspaceName??"",L=y.length>0&&O.toLowerCase().includes(y),F=y.length>0&&D.toLowerCase().includes(y),H=y.length>0&&T.toLowerCase().includes(y);if(!(y.length>0&&!L&&!F&&!H)&&(E.push({session:S,inTitle:L,inWorkspace:H,snippetText:D?Cp(D,u.value):""}),E.length>=Jh))break}return E}),w=x(0);Oe(u,()=>{w.value=0});function I(y){const E=h.value.length;return E===0?0:Math.max(0,Math.min(E-1,y))}async function v(){await Ue(),m.value?.querySelector('[aria-selected="true"]')?.scrollIntoView({block:"nearest"})}function f(y){w.value=I(w.value+y),v()}function _(y){o("select",y),o("close")}function g(){const y=h.value[w.value];y&&_(y.session.id)}function b(y){y.key==="ArrowDown"?(y.preventDefault(),f(1)):y.key==="ArrowUp"?(y.preventDefault(),f(-1)):y.key==="Enter"&&(y.preventDefault(),g())}return mt(()=>{p.value?.focus()}),(y,E)=>(a(),G(ps,{open:i.value,"onUpdate:open":E[1]||(E[1]=S=>i.value=S),size:"lg",height:"fixed",padded:!1,onClose:E[2]||(E[2]=S=>o("close"))},{head:W(()=>[r("div",Hh,[M(le,{class:"sd-search-icon",name:"search",size:"md"}),ht(r("input",{ref_key:"inputRef",ref:p,"onUpdate:modelValue":E[0]||(E[0]=S=>u.value=S),class:"sd-input",type:"text",placeholder:l(n)("sidebar.searchPlaceholder"),"aria-label":l(n)("sidebar.searchPlaceholder"),autocomplete:"off",spellcheck:"false",onKeydown:b},null,40,Uh),[[On,u.value]])])]),foot:W(()=>[r("span",Xh,d(l(n)("sidebar.searchHint")),1)]),default:W(()=>[r("div",{ref_key:"listRef",ref:m,class:"sd-list",role:"listbox"},[h.value.length>0?(a(!0),c(ge,{key:0},Te(h.value,(S,O)=>(a(),c("button",{key:S.session.id,class:fe(["sd-row",{on:O===w.value,active:S.session.id===e.activeId}]),role:"option","aria-selected":O===w.value,onClick:D=>_(S.session.id),onMousemove:D=>w.value=O},[r("span",jh,[M(le,{class:"sd-folder",name:"folder-closed",size:"sm"}),r("span",{class:"sd-ws",innerHTML:l(ea)(S.session.workspaceName??S.session.workspaceId??"",S.inWorkspace?u.value:"")},null,8,Kh),r("span",Gh,d(S.session.time),1)]),r("span",{class:"sd-title",innerHTML:l(ea)(S.session.title,S.inTitle?u.value:"")},null,8,Qh),S.snippetText?(a(),c("span",{key:0,class:"sd-snippet",innerHTML:l(ea)(S.snippetText,u.value)},null,8,Yh)):A("",!0)],42,Vh))),128)):(a(),c("div",Zh,d(l(n)("sidebar.searchNoResults")),1))],512)]),_:1},8,["open"]))}}),tg=Pe(eg,[["__scopeId","data-v-ac47909f"]]);function Ai(e){return e.isComposing===!0||e.keyCode===229}function Mu(e){return e.lastTurnReason==="failed"}const xu=["⚡","🔥","✅","❌","📌","⭐","🚀","💡","📝","🎯","🧠","🤖","🔧","📦","🌱","🎨","🔍","📈","🕐","🎉"];function ng(e){return xu.includes(e)}function sg(){const e=fo(qe.sessionEmoji);if(!e||typeof e!="object"||Array.isArray(e))return{};const t={};for(const[n,s]of Object.entries(e))typeof s=="string"&&ng(s)&&(t[n]=s);return t}function og(e){Hs(qe.sessionEmoji,e)}function ig(e,t,n){const s={...e};return n===null||n===""?delete s[t]:s[t]=n,s}const ag={preview:"Preview",confirm:"Confirm",cancel:"Cancel",close:"Close",copy:"Copy"},lg={authBannerMessage:"Not signed in · Sign in to Kimi Code to start a conversation",authBannerLogin:"Sign in",authPageTitle:"Sign in to Kimi Code",authPageMessage:"Connect your Kimi Code account before starting or continuing conversations.",authPageLogin:"Sign in",connecting:"Connecting…",connectRetrying:"Cannot reach the server — retrying…",internalBuildBanner:"Internal testing only"},rg={workspaceMeta:"workspace · {branch}",sessionsHeader:"sessions",workspaces:"Workspaces",sortWorkspaces:"Sort workspaces",sortManual:"Manual",sortRecent:"Recent activity",collapseAll:"Collapse all workspaces",expandAll:"Expand all workspaces",newSession:"New Session",newChat:"New Chat",newWorkspace:"New Workspace",emptyState:"No sessions yet · click New Session to start",archiveConfirm:"Archive this session? You can restore it later from Settings.",options:"Options",pin:"Pin session",unpin:"Unpin session",emoji:"Set emoji",emojiRemove:"Remove emoji",rename:"Rename",genTitle:"Gen Title",genTitleUnavailable:"Title generation unavailable — needs a managed Kimi Code login and at least one message",prTag:"PR #{number}",copyPath:"Copy path",copySessionId:"Copy session ID",copied:"Copied ✓",copyFailed:"Copy failed",archive:"Archive",fork:"Fork session",export:"Export session",delete:"Delete",removeWorkspace:"Remove workspace",brand:"Kimi Code",signedIn:"Signed in",signOut:"Sign out",notSignedIn:"Not signed in",signIn:"Sign in",language:"Language",daemon:"Daemon",backendTitle:"Backend {backend} · {endpoint} — click to switch",noSessions:"No conversations yet",showMore:"Load {count} more conversations",showLess:"Show less",showAll:"Show {count} more conversations",loadingMore:"Loading…",collapseSidebar:"Collapse sidebar",expandSidebar:"Expand sidebar",viewModeFlat:"Show sessions as a flat list",viewModeGrouped:"Group sessions by workspace",mascot:"Kimi mascot",searchPlaceholder:"Search sessions",search:"Search",searchHint:"↑↓ navigate · ↵ open · Esc close",searchNoResults:"No matching sessions"},ug={switcherTitle:"Switch workspace",switchTooltip:"Switch workspace",eyebrow:"Workspace",branchLabel:"branch: {branch}",noBranch:"no branch",sessionCount:"{count} session | {count} sessions",allWorkspaces:"All workspaces",currentWorkspace:"Current workspace only",addWorkspace:"Add workspace…",noWorkspace:"No workspace",deleteHasSessions:"This workspace still has sessions — archive them before deleting it",removeWorkspaceConfirm:'Remove workspace "{name}"?',swarmEnableConfirm:"Enable swarm mode? The agent will run multiple sub-agents in parallel.",goalStartConfirm:'Start goal: "{objective}"? The agent will run autonomously toward it.',doneWhen:"Done when",scopeCurrent:"this workspace",scopeAll:"all workspaces",newInGroup:"New session in this workspace",addTitle:"Add workspace",recentLabel:"Recent folders",cancel:"Cancel",addFailed:"Couldn't open this folder. Check the path and try again.",openThisFolder:"Open this folder",up:"Up",browsing:"Browsing…",filterPlaceholder:"Filter subfolders…",searchPlaceholder:"Fuzzy-search subfolders, or paste an absolute path…",searching:"Searching…",noFilterMatch:"No subfolders match “{q}”",noSubfolders:"No subfolders here",browseHint:'Click a folder to enter it, then "Open this folder" to add it as a workspace.',checkingPath:"Checking path…",pathPickHint:"Path not found — did you mean:",noPathMatch:"Path not found — no matching folders under {parent}",badParent:"Parent directory does not exist: {parent}",pathFollowHint:'Folder located — press Enter or "Open this folder" to add it.',degradedPlaceholder:"Type an absolute path, press Enter to add…",degradedHint:"File browsing is unavailable — type an absolute path and press Enter to add.",attentionTitle:"{count} item needs your attention | {count} items need your attention",awaitingAnswer:"Answer",awaitingAnswerTitle:"A question is waiting for your answer",awaitingPermission:"Approve",awaitingPermissionTitle:"An action is waiting for your approval",aborted:"Stopped",abortedTitle:"This session was interrupted before finishing"},cg={jumpToLatestAria:"Jump to latest message",toc:"Conversation outline",newMessages:"Latest messages",loading:"Loading…",starting:"Starting conversation…",emptyWorkspaceHint:"Send in {name}",switchWorkspace:"Switch workspace",addWorkspace:"New workspace",moreWorkspaces:"More workspaces ({count})",compacting:"Compacting context…",compactedPlain:"Context compacted",compactedAuto:"Context auto-compacted",compactedTokens:" ({before} → {after} tokens)",viewSummary:"View summary",summaryTitle:"Compaction summary",manuallyAborted:"Manually stopped",activatedSkill:"Activated skill: {name}",undo:"Undo",undoTooltip:"Undoing the conversation will not roll back code changes",undoConfirm:"Undo last message?",yesterday:"Yesterday",loadOlder:"Load earlier messages",loadingOlder:"Loading earlier messages…",searchPlaceholder:"Search this conversation",searchNoResults:"No matches",searchPosition:"{current} / {total}",searchPrev:"Previous match",searchNext:"Next match",searchClose:"Close search",cron:{fired:"Scheduled reminder fired",missed:"Missed scheduled reminders",job:"job {id}",oneShot:"one-shot",coalesced:"{n} fires coalesced",missedCount:"{n} missed",finalDelivery:"final delivery",everyMinute:"Every minute",everyNMinutes:"Every {n} minutes",everyHour:"Every hour",everyNHours:"Every {n} hours",dailyAt:"Daily at {time}",weekdaysAt:"Weekdays at {time}",expand:"Show more",collapse:"Show less"},waitingForResponse:"Waiting for response…",turnFailedResume:"Continue",workingRetry:"Model request failed — retrying ({n}/{max})…"},dg={connectionConnected:"Connected",connectionConnecting:"Connecting…",connectionDisconnected:"Disconnected",ctxTooltip:"Used {used} / {max} tokens ({pct}%)",modelLabel:"Model",permissionManual:"Manual",permissionAuto:"Auto",permissionYolo:"YOLO",permissionManualDesc:"Ask for approval on every tool action",permissionAutoDesc:"Fully autonomous — agent decides everything without asking",permissionYoloDesc:"Auto-approve tool actions, but agent may still ask questions",planLabel:"Plan",planDesc:"Have the agent make a plan before changing files",planOn:"on",planOff:"off",planTooltip:"Toggle plan mode (research before editing)",planPlaceholder:"What should the agent plan for?",workModeDismiss:"Dismiss {mode}",modesLabel:"Mode",goalLabel:"Goal",goalDesc:"Track one objective until it is complete",swarmLabel:"Swarm",swarmDesc:"Run parallel agents for broader exploration",supermoonLabel:"Supermoon",supermoonDesc:"Plan deeply and run at the highest thinking effort",modeOff:"Off",goalPlaceholder:"What should the agent achieve?",goalStart:"Start",goalPause:"Pause",goalResume:"Resume",goalCancel:"Cancel",goalCancelConfirm:"Cancel this goal? It cannot be resumed afterwards.",goalCancelConfirmYes:"Yes",goalCancelConfirmNo:"No",goalStatusActive:"Active",goalStatusPaused:"Paused",goalStatusBlocked:"Blocked",goalStatusComplete:"Complete",goalEmptyTitle:"No goal yet",goalEmptyHint:"Turn goal mode on and describe what the agent should achieve.",planModeOn:"Plan mode on",planArmed:"armed",planEmptyArmed:"Plan mode is on — the plan the agent writes will show up here.",planEmptyIdle:"No plan yet — turn plan mode on and the agent's plan will show up here.",modeNotSupported:"Not supported",thinkingLabel:"thinking",thinkingTooltip:"Toggle thinking mode",thinkingOn:"On",thinkingOff:"Off",cacheNote:"Note: Switching models or thinking effort invalidates the existing prompt cache. Start a new chat to avoid extra token costs.",starredModels:"Starred",moreModels:"More models…",statusPanelTitle:"Session status",statusPanelClose:"Close",statusModel:"Model",statusThinking:"Thinking",statusPermission:"Permission",statusPlanMode:"Plan mode",statusSwarmMode:"Swarm mode",statusSupermoonMode:"Supermoon mode",swarmOn:"on",swarmOff:"off",supermoonOn:"on",supermoonOff:"off",statusContext:"Context",statusCost:"Cost",statusContextValue:"{used} / {max} ({pct}%)",statusNone:"—",activityRunning:"Running…",activityAwaitingApproval:"Awaiting approval",activityAwaitingQuestion:"Awaiting answer",interrupt:"Interrupt",runningShort:"in progress"},pg={placeholder:"Type a message…",send:"Send ↵",queueLabel:"Queue",placeholderRunning:"Press Enter to queue · Ctrl+S to inject into the running turn",starting:"Sending…",queueAutoDrain:"sends automatically when the current turn ends",queueNext:"Up next",queueDragTitle:"Drag to reorder",editQueued:"Edit (load back into the input)",queuedAttachments:"attachment ×{n}",queuedHasImage:"Contains {n} image(s) — remove only, not editable",attachmentImage:"Image",attachmentVideo:"Video",attachmentFile:"File",attachmentOpenUnsupported:"Can’t open {name} — this file type isn’t supported",dropToAttach:"Drop files to attach",remove:"Remove",removeNamed:"Remove {name}",uploading:"Uploading",uploadFailed:"Upload failed",attachFile:"Attach file",addMenu:"Add",addPlanDesc:"Have the agent make a plan before changing files",addGoalDesc:"Track one objective until it is complete",addSwarmDesc:"Run parallel agents for broader exploration",addSupermoonDesc:"Plan deeply and run at the highest thinking effort",slashEmpty:"No matching commands",previewAttachment:"Preview {name}",interrupt:"Interrupt",interruptTitle:"Interrupt current operation",expandTitle:"Expand input for multi-line editing",collapseTitle:"Collapse input",emptyConversationTitle:"Kimi Code",emptyConversation:"No messages yet — type below to start the conversation",quickStartPlaceholder:"Type a message to start a new conversation…",thinkingSuffix:" · thinking",thinkingSuffixEffort:" · {level}",queueSteer:"Send now (Ctrl+S)"},fg={title:"Sign in to Kimi Code",close:"Close (Esc)",starting:"Starting authorization flow…",lead:"Click the button below to authorize in a new browser tab.",authorizeInBrowser:"Authorize in browser",orDivider:"or",fallbackPrefix:"On another device? Open ",fallbackSuffix:" and enter the device code:",copy:"Copy",copied:"Copied",waitingAuth:"Waiting for authorization",waitingAutoClose:"Waiting for authorization, signs in automatically…",success:"Authorized",successHint:"Loading, will close automatically…",expiredTitle:"Authorization code expired",expiredHint:"Please restart the authorization flow",retry:"Retry",closeBtn:"Close",errorTitle:"The current daemon does not support login yet",errorHint:"Please upgrade kimi-code and try again",pollErrorTitle:"Lost connection to the daemon",pollErrorHint:"Authorization polling failed repeatedly. Check the kimi-code process and try again."},mg={dialogLabel:"Manage providers",title:"Provider management",close:"Close (Esc)",loading:"Loading providers…",unavailable:"The daemon does not support provider management yet",empty:"No providers yet",status:{connected:"Connected",error:"Error",unconfigured:"Not configured"},keySet:"key set",keyNotSet:"key not set",modelCount:"{count} models",confirmDelete:"Confirm delete?",refresh:"Refresh",delete:"Delete",refreshTitle:"Refresh {type}",deleteTitle:"Delete {type}",loginKimi:"Sign in to Kimi",loginAnthropic:"Sign in to Anthropic",enterApiKey:"Enter API Key",fieldType:"Type",fieldApiKey:"API Key",fieldBaseUrl:"Base URL",fieldDefaultModel:"Default model",baseUrlPlaceholder:"https://… (optional)",optional:"Optional",apiKeyRequired:"API Key cannot be empty",add:"Add",escClose:"Esc to close",import:{fromCatalog:"Import from catalog",fromRegistry:"Import registry",back:"Back",catalogTitle:"Import from models.dev catalog",catalogSearchLabel:"Search",catalogSearchPlaceholder:"Search providers…",catalogLoading:"Loading catalog…",catalogEmpty:"No providers match",catalogLoadError:"Could not load the catalog",catalogRejected:"Cannot import: {reason}",catalogNeedsBaseUrl:"Needs base URL",catalogBaseUrlHint:"Required for this provider",importAction:"Import",registryTitle:"Import registry",registryUrlLabel:"Registry URL",registryUrlPlaceholder:"https://…/api.json",registryApiKeyLabel:"API key (optional)",registryUrlRequired:"Registry URL cannot be empty"}},vg={dialogLabel:"Switch model",title:"Switch model",close:"Close (Esc)",allTab:"All",providerTabs:"Model providers",searchPlaceholder:"Search models or providers…",loading:"Loading models…",unavailable:"The daemon does not support model listing yet",contextSuffix:"{size} ctx",emptyNoModels:"The daemon offers no selectable models",emptyNoMatch:"No matching models",starTitle:"Add to favorites",unstarTitle:"Remove from favorites",footerHint:"↑↓ Navigate · Enter Select · Esc Close"},hg={justNow:"just now"},gg={title:{shell:"Run command?",diff:"Apply changes?",file:"Write file?",fileop:"File operation?",url:"Fetch URL?",search:"Search?",invocation:"Invoke?",todo:"Update todo?",plan_review:"Ready to build with this plan?",generic:"Approve action?"},subagentBadge:"sub agent · {name}",required:"APPROVAL REQUIRED",danger:"Danger: {detail}",searchQueryLabel:"query",searchScope:"scope: {scope}",feedbackPlaceholder:"Explain why you are rejecting… (Enter to submit, Esc to cancel)",feedbackHint:"Enter to submit · Esc to cancel",approve:"Approve",approveSession:"Approve for session",reject:"Reject",feedback:"+Feedback",approvePlan:"Approve plan",revise:"Revise",rejectAndExit:"Reject and Exit"},yg={title:"Question",step:"Q{current}/{total}",back:"‹ Back",nextQuestion:"Next question ›",otherDefault:"Other…",submit:"Submit",dismiss:"Dismiss",minimize:"Minimize",expand:"Expand"},kg={tag:"tasks",summary:"{run} running · {done} done",stop:"stop",defaultDescription:"Background task",dockTasks:"Background tasks",dockBash:"Bash",dockSubagent:"Sub Agent",dockTodos:"Todos",thinkingEffort:"thinking {effort}",running:"running",closePanel:"Close panel",timingRunning:"Running · {time}",timingDone:"Done · {sec}s",emptyTasks:"No background tasks running",emptyBash:"No bash tasks running",emptySubagent:"No sub agent tasks running",emptyTodo:"No todos yet",todoProgress:"{done}/{total} done",filterRecent:"Recent",filterRunning:"Running",filterDone:"Done",filterAll:"All",emptyRecent:"No recent tasks",emptyRunning:"No running tasks",emptyDone:"No completed tasks",detailPlaceholder:"Select a task to view its command and output",noOutput:"No output yet",openTab:"Open the tasks tab",openDetail:"Open",collapse:"Collapse",expand:"Expand",fieldTask:"Task",fieldOutput:"Output",fieldProgress:"Progress",fieldResult:"Result"},bg={panelTitle:"Thinking",close:"Close"},wg={title:"Changes",branch:"branch",aheadTitle:"ahead of remote",behindTitle:"behind remote",changeCount:"{count} changes",empty:"No git changes / not provided by daemon",clean:"Working tree clean, no changes",back:"Back",loading:"Loading diff…",noDiff:"No line changes for this file",list:"List",tree:"Tree",close:"Close",colorblind:"Colorblind",colorblindOff:"Default",colorblindRedGreen:"Red–green",colorblindBlueYellow:"Blue–yellow"},Sg={},Cg={empty:"Select a file on the left to preview",loading:"Loading…",lineCount:"{count} lines",copy:"Copy",copied:"Copied",copyPath:"Copy path",openInEditor:"Open",reveal:"Reveal",download:"Download",close:"Close",videoFallback:"Video",imageFallback:"Image",search:"Search",prevMatch:"Previous match",nextMatch:"Next match",htmlMode:"HTML preview mode",markdownMode:"Markdown preview mode",preview:"Preview",source:"Source",imageFit:"Image sizing",fit:"Fit",actual:"Actual",pdfNoPreview:"This PDF cannot be embedded here. Download it to view.",imageNoPreview:"Image file · {mime} · {size} · preview unavailable",videoNoPreview:"Video file · {mime} · {size} · preview unavailable",binaryNoPreview:"Binary file · {mime} · {size} bytes · preview unavailable",unknownType:"unknown type",copyCode:"Copy code",enlargeImage:"Enlarge image",errors:{emptyPath:"File path is empty",unsupportedPath:"URLs and remote paths cannot be previewed",outsideWorkspace:"Only files inside the current workspace can be previewed",isDirectory:"Select a file instead of a directory",loadFailed:"Unable to read this file"}},_g={searching:"Searching…",noMatch:"No matches"},$g={dismiss:"Close",errorLabel:"Error",noteLabel:"Note",agentError:{title:"Model request failed",connection:"Cannot connect to the model service",auth:"Model authentication failed",rateLimit:"Model rate limit reached",overloaded:"Model overloaded",filtered:"Response filtered by the provider",api:"Model API error",usageLimit:"Usage limit reached",contextOverflow:"Context size exceeded"},details:{cause:"Cause",code:"Error code",connection:"Connection",contentType:"Content type",details:"Server details",duration:"Duration",endpoint:"Endpoint",errorName:"Error type",message:"Message",operation:"Operation",phase:"Failure phase",request:"Request",requestId:"Request ID",responsePreview:"Response preview",sessionId:"Session ID",stack:"Stack",status:"HTTP status",timeout:"Timeout",timestamp:"Time"},daemonApiTitle:"Kimi daemon returned an error",daemonNetworkMessage:"Web did not receive a response from the local service. Check that Kimi daemon is still running, or refresh the page.",daemonNetworkTitle:"Cannot connect to Kimi daemon",daemonTimeoutMessage:"Kimi server did not respond within the wait limit. The operation may still complete in the background — refresh later to check, or try again.",daemonTimeoutTitle:"Kimi server response timed out",diagnostics:"Diagnostics",hideDetails:"Hide details",operationFailedMessage:"The last operation did not finish. Try again later.",operationFailedTitle:"Operation failed",sessionSnapshotMessage:"Web could not load the current conversation. Check that Kimi daemon is still running, or refresh the page.",sessionSnapshotTitle:"Cannot load current conversation",showDetails:"Show details",copyDetails:"Copy diagnostics",copied:"Copied",wsTitle:"Realtime connection error",goal:{alreadyExists:"This session already has an active goal. Cancel it before starting a new one.",notFound:"No goal to act on — it may have already finished or been cancelled.",statusInvalid:"The current goal state does not allow this action.",notResumable:"This goal cannot be resumed (it may be cancelled or completed).",objectiveTooLong:"The objective is too long. Please shorten it and try again."}},Mg={new:{desc:"Create a new session"},clear:{desc:"Clear and start a new session"},login:{desc:"Sign in to Kimi in the browser"},plan:{desc:"Toggle plan mode on/off"},swarm:{desc:"Toggle swarm mode; /swarm runs a task in swarm"},goal:{desc:"Create/control a goal: /goal , /goal pause|resume|cancel"},btw:{desc:"Side chat: /btw asks a forked side session"},yolo:{desc:"Auto-approve tool actions; the agent may still ask questions"},auto:{desc:"Fully autonomous — the agent never asks questions"},thinking:{desc:"Set the thinking level"},compact:{desc:"Compact the conversation history"},fork:{desc:"Fork this session into a new one"},export:{desc:"Download this session and troubleshooting logs as a ZIP",done:"Session exported.",noSession:"Open a session before exporting it.",started:"Exporting session…",tooLarge:"Session too large to export…"},status:{desc:"View session status"},undo:{desc:"Undo the last message"}},xg={label:{read:"Read",bash:"Run",edit:"Edit",write:"Write",grep:"Search",glob:"Find",ls:"List",web_fetch:"Fetch",search:"Search",todo:"Todo",task:"Task",swarm:"Swarm",ask_user:"Question",goal_create:"Start Goal",goal_get:"Read Goal",goal_budget:"Set Goal Budget",goal_update:"Update Goal"},swarm:{progress:"{done} / {total}",runningSub:"{count} in progress",doneSub:"{completed} completed · {failed} failed",phaseQueued:"Queued",phaseWorking:"Working",phaseSuspended:"Suspended",phaseCompleted:"Completed",phaseFailed:"Failed",waiting:"Waiting for subagents…"},chip:{lines:"{count} lines",results:"{count} results",edited:"edited",created:"created",todos:"{count} items"},goal:{objectiveWithCriterion:"{objective} · {criterion}",status:"Status: {status}",budget:"{value} {unit}",turns:"{value} turns",tokens:"{value} tokens",milliseconds:"{value} ms",seconds:"{value} sec",minutes:"{value} min",hours:"{value} hr"},group:{title:"{count} tool call | {count} tool calls",running:"running",error:"failed",done:"done"},ask:{dismissed:"Dismissed",answer:"{count} answer",answers:"{count} answers",answered:"Answered",more:"(+{count} more)"},plan:{loading:"Loading plan…",unavailable:"Plan unavailable",pending:"Pending review",approved:"Approved",rejected:"Rejected",cancelled:"Cancelled"}},Ig={resizeHandleAria:"Resize sidebar width",resizePreviewAria:"Resize preview panel width",detailPanelAria:"Detail panel"},Ag={zoomIn:"Zoom in",zoomOut:"Zoom out",resetZoom:"Reset zoom",dragHint:"Drag to pan",noPreview:"No preview available"},Tg={openSwitcher:"Switch session / workspace",openSettings:"Session settings",settingsTitle:"Session settings",groupSession:"Current session",groupApp:"App preferences",sheetLabel:"Sheet",closeSheet:"Close",tapToCycle:"tap to cycle",running:"running",idle:"idle",sessionCount:"{n} sessions",newSession:"New session",permManualSub:"confirm every tool",permAutoSub:"fully autonomous, never asks",permYoloSub:"auto-approve tools, may still ask",planModeSub:"Plan mode",swarmModeSub:"Swarm mode",supermoonModeSub:"Supermoon mode",archivedSessions:"Archived sessions",archivedSessionsSub:"Browse and restore archived sessions",archivedBack:"Back"},Pg={colorSchemeLabel:"Light/Dark",light:"Moon Bright",dark:"Moon Dark",system:"System",accentLabel:"Accent",accentBlue:"Blue",accentBlack:"Black"},Eg={preview:"预览",confirm:"确认",cancel:"取消",close:"关闭",copy:"复制"},Lg={authBannerMessage:"未登录 · 需要登录 Kimi Code 才能开始对话",authBannerLogin:"登录",authPageTitle:"登录 Kimi Code",authPageMessage:"先连接 Kimi Code 账号,然后再开始或继续对话。",authPageLogin:"登录",connecting:"连接中…",connectRetrying:"无法连接服务器,正在重试…",internalBuildBanner:"仅供内部测试"},Bg={workspaceMeta:"workspace · {branch}",sessionsHeader:"sessions",workspaces:"工作区",sortWorkspaces:"工作区排序",sortManual:"手动排序",sortRecent:"按最近活动",collapseAll:"折叠全部工作区",expandAll:"展开全部工作区",newSession:"新建会话",newChat:"新建对话",newWorkspace:"新建工作区",emptyState:"还没有会话 · 点击 新建会话 开始",archiveConfirm:"确认归档会话?归档后可以从「设置」中恢复",options:"选项",pin:"置顶会话",unpin:"取消置顶",emoji:"设置表情",emojiRemove:"移除表情",rename:"重命名",genTitle:"生成标题",genTitleUnavailable:"无法生成标题:需要登录 Kimi Code 托管账号,且会话中已有消息",prTag:"PR #{number}",copyPath:"复制路径",copySessionId:"复制 Session ID",copied:"已复制 ✓",copyFailed:"复制失败",archive:"归档",fork:"分叉会话",export:"导出会话",delete:"删除",removeWorkspace:"移除工作区",brand:"Kimi Code",signedIn:"已登录",signOut:"退出登录",notSignedIn:"未登录",signIn:"登录",language:"语言",daemon:"后台",backendTitle:"后端 {backend} · {endpoint} — 点击切换",noSessions:"暂无对话",showMore:"加载更多 {count} 个对话",showLess:"收起",showAll:"展开剩余 {count} 个对话",loadingMore:"加载中…",collapseSidebar:"收起侧边栏",expandSidebar:"展开侧边栏",viewModeFlat:"将会话显示为平铺列表",viewModeGrouped:"按工作区分组显示会话",mascot:"Kimi 吉祥物",searchPlaceholder:"搜索会话",search:"搜索",searchHint:"↑↓ 选择 · ↵ 打开 · Esc 关闭",searchNoResults:"没有匹配的会话"},Rg={switcherTitle:"切换工作区",switchTooltip:"切换工作区",eyebrow:"工作区",branchLabel:"分支: {branch}",noBranch:"无分支",sessionCount:"{count} 个会话",allWorkspaces:"全部工作区",currentWorkspace:"仅当前工作区",addWorkspace:"添加工作区…",noWorkspace:"暂无工作区",deleteHasSessions:"工作区内还有会话,请先归档这些会话再删除",removeWorkspaceConfirm:"移除工作区「{name}」?",swarmEnableConfirm:"启用 swarm 模式?Agent 将并行运行多个子 agent。",goalStartConfirm:"启动 goal:「{objective}」?Agent 将自主执行。",doneWhen:"完成条件",scopeCurrent:"当前工作区",scopeAll:"全部工作区",newInGroup:"在此工作区新建会话",addTitle:"添加工作区",recentLabel:"最近的文件夹",cancel:"取消",addFailed:"无法打开此文件夹,请检查路径后重试。",openThisFolder:"打开此文件夹",up:"上一级",browsing:"加载中…",filterPlaceholder:"过滤子文件夹…",searchPlaceholder:"模糊搜索子文件夹,或粘贴绝对路径…",searching:"搜索中…",noFilterMatch:"没有匹配「{q}」的子文件夹",noSubfolders:"此处没有子文件夹",browseHint:'点击文件夹进入,再点"打开此文件夹"将其添加为工作区。',checkingPath:"检查路径…",pathPickHint:"此路径不存在,你是不是想找:",noPathMatch:"此路径不存在,「{parent}」下没有匹配的文件夹",badParent:"上级目录不存在:{parent}",pathFollowHint:'已定位到目标文件夹,按回车或点击"打开此文件夹"完成添加。',degradedPlaceholder:"输入绝对路径,回车添加…",degradedHint:"守护进程无法浏览文件系统,请直接输入绝对路径后回车添加。",attentionTitle:"{count} 项待处理",awaitingAnswer:"待回答",awaitingAnswerTitle:"有提问等待你回答",awaitingPermission:"待授权",awaitingPermissionTitle:"有操作等待你授权",aborted:"已中断",abortedTitle:"此会话在完成前被中断"},Og={jumpToLatestAria:"跳到最新消息",toc:"对话目录",newMessages:"最新消息",loading:"加载中…",starting:"正在创建对话…",emptyWorkspaceHint:"在 {name} 中发送",switchWorkspace:"切换工作区",addWorkspace:"添加工作区",moreWorkspaces:"更多工作区 ({count})",compacting:"正在压缩上下文…",compactedPlain:"上下文已压缩",compactedAuto:"已自动压缩上下文",compactedTokens:"({before} → {after} tokens)",viewSummary:"查看摘要",summaryTitle:"压缩摘要",manuallyAborted:"您已手动终止",activatedSkill:"已激活技能: {name}",undo:"撤销",undoTooltip:"撤销对话不会回滚代码",undoConfirm:"撤销上一条消息?",yesterday:"昨天",loadOlder:"加载更早的消息",loadingOlder:"正在加载更早的消息…",searchPlaceholder:"搜索当前对话",searchNoResults:"无匹配结果",searchPosition:"{current} / {total}",searchPrev:"上一个匹配",searchNext:"下一个匹配",searchClose:"关闭搜索",cron:{fired:"定时任务已触发",missed:"错过的定时提醒",job:"任务 {id}",oneShot:"单次",coalesced:"已合并 {n} 次触发",missedCount:"错过 {n} 次",finalDelivery:"最后一次投递",everyMinute:"每分钟",everyNMinutes:"每 {n} 分钟",everyHour:"每小时",everyNHours:"每 {n} 小时",dailyAt:"每天 {time}",weekdaysAt:"工作日 {time}",expand:"展开",collapse:"收起"},waitingForResponse:"等待响应…",turnFailedResume:"继续",workingRetry:"模型请求失败,正在重试({n}/{max})…"},Dg={connectionConnected:"已连接",connectionConnecting:"连接中…",connectionDisconnected:"未连接",ctxTooltip:"使用 {used} / {max} tokens ({pct}%)",modelLabel:"模型",permissionManual:"逐条确认",permissionAuto:"完全自主",permissionYolo:"自动通过",permissionManualDesc:"每个工具操作都需要你手动确认",permissionAutoDesc:"完全自主运行,智能体自己做决定,不再询问",permissionYoloDesc:"自动批准工具操作,但遇到关键问题仍会询问",planLabel:"计划",planDesc:"先让智能体梳理计划,再修改文件",planOn:"开",planOff:"关",planTooltip:"切换计划模式(先调研再修改)",planPlaceholder:"让智能体规划什么?",workModeDismiss:"取消{mode}",modesLabel:"模式",goalLabel:"目标",goalDesc:"持续跟踪一个目标,直到任务完成",swarmLabel:"Swarm",swarmDesc:"并行运行多个智能体,适合大范围探索",supermoonLabel:"Supermoon",supermoonDesc:"深度规划,并以最高思考强度运行",modeOff:"未启用",goalPlaceholder:"让智能体完成什么目标?",goalStart:"开始",goalPause:"暂停",goalResume:"继续",goalCancel:"取消",goalCancelConfirm:"是否需要取消当前目标?取消后将无法恢复。",goalCancelConfirmYes:"是",goalCancelConfirmNo:"否",goalStatusActive:"进行中",goalStatusPaused:"已暂停",goalStatusBlocked:"已阻塞",goalStatusComplete:"已完成",goalEmptyTitle:"暂无目标",goalEmptyHint:"开启目标模式,告诉智能体要实现什么。",planModeOn:"计划模式已开启",planArmed:"已预备",planEmptyArmed:"计划模式已开启 — 智能体写下的计划会显示在这里。",planEmptyIdle:"暂无计划 — 开启计划模式后,智能体的计划会显示在这里。",modeNotSupported:"暂不支持",thinkingLabel:"思考",thinkingTooltip:"切换思考模式",thinkingOn:"开",thinkingOff:"关",cacheNote:"提示:切换模型或思考程度会使已有的提示词缓存失效。建议新建对话,避免额外的 token 消耗。",starredModels:"收藏",moreModels:"更多模型…",statusPanelTitle:"会话状态",statusPanelClose:"关闭",statusModel:"模型",statusThinking:"思考强度",statusPermission:"权限",statusPlanMode:"计划模式",statusSwarmMode:"Swarm 模式",statusSupermoonMode:"Supermoon 模式",swarmOn:"开",swarmOff:"关",supermoonOn:"开",supermoonOff:"关",statusContext:"上下文",statusCost:"花费",statusContextValue:"{used} / {max} ({pct}%)",statusNone:"—",activityRunning:"运行中…",activityAwaitingApproval:"等待批准",activityAwaitingQuestion:"等待回答",interrupt:"中断",runningShort:"进行中"},zg={placeholder:"输入消息…",send:"发送 ↵",queueLabel:"队列",placeholderRunning:"输入会加入队列 · Ctrl+S 立即插入运行中的回合",starting:"正在发送…",queueAutoDrain:"当前回合结束后自动逐条发送",queueNext:"下一条",queueDragTitle:"拖拽排序",editQueued:"编辑(载入到输入框)",queuedAttachments:"附件 ×{n}",queuedHasImage:"包含 {n} 张图片 — 只能移除,不能编辑",attachmentImage:"图片",attachmentVideo:"视频",attachmentFile:"文件",attachmentOpenUnsupported:"无法打开 {name}:暂不支持此文件类型",dropToAttach:"松开鼠标添加附件",remove:"移除",removeNamed:"移除 {name}",uploading:"上传中",uploadFailed:"上传失败",attachFile:"添加附件",addMenu:"添加",addPlanDesc:"先让智能体梳理计划,再修改文件",addGoalDesc:"持续跟踪一个目标,直到任务完成",addSwarmDesc:"并行运行多个智能体,适合大范围探索",addSupermoonDesc:"深度规划,并以最高思考强度运行",slashEmpty:"没有匹配的命令",previewAttachment:"预览 {name}",interrupt:"中断",interruptTitle:"中断当前操作",expandTitle:"展开输入框进行多行编辑",collapseTitle:"收起输入框",emptyConversationTitle:"Kimi Code",emptyConversation:"还没有消息 —— 在下方输入开始对话",quickStartPlaceholder:"输入消息开始新对话…",thinkingSuffix:" · 思考",thinkingSuffixEffort:" · {level}",queueSteer:"立即发送 (Ctrl+S)"},Fg={title:"登录 Kimi Code",close:"关闭 (Esc)",starting:"正在启动授权流程…",lead:"点击下方按钮,在新标签页中完成授权。",authorizeInBrowser:"在浏览器中授权",orDivider:"或者",fallbackPrefix:"换个设备?在浏览器打开 ",fallbackSuffix:" 输入设备码:",copy:"复制",copied:"已复制",waitingAuth:"等待授权",waitingAutoClose:"等待授权,完成后自动登录…",success:"已授权",successHint:"正在加载,稍后自动关闭…",expiredTitle:"授权码已过期",expiredHint:"请重新开始授权流程",retry:"重试",closeBtn:"关闭",errorTitle:"当前 daemon 暂不支持登录",errorHint:"请升级 kimi-code 后重试",pollErrorTitle:"与 daemon 的连接已断开",pollErrorHint:"授权轮询连续失败,请检查 kimi-code 进程后重试"},Ng={dialogLabel:"管理提供商",title:"提供商管理",close:"关闭 (Esc)",loading:"加载提供商中…",unavailable:"daemon 暂不支持提供商管理",empty:"暂无提供商",status:{connected:"已连接",error:"错误",unconfigured:"未配置"},keySet:"key 已设置",keyNotSet:"未设置 key",modelCount:"{count} 个模型",confirmDelete:"确认删除?",refresh:"刷新",delete:"删除",refreshTitle:"刷新 {type}",deleteTitle:"删除 {type}",loginKimi:"登录 Kimi",loginAnthropic:"登录 Anthropic",enterApiKey:"填写 API Key",fieldType:"类型",fieldApiKey:"API Key",fieldBaseUrl:"Base URL",fieldDefaultModel:"默认模型",baseUrlPlaceholder:"https://… (可选)",optional:"可选",apiKeyRequired:"API Key 不能为空",add:"添加",escClose:"Esc 关闭",import:{fromCatalog:"从目录导入",fromRegistry:"导入 registry",back:"返回",catalogTitle:"从 models.dev 目录导入",catalogSearchLabel:"搜索",catalogSearchPlaceholder:"搜索提供商…",catalogLoading:"加载目录中…",catalogEmpty:"没有匹配的提供商",catalogLoadError:"无法加载目录",catalogRejected:"无法导入:{reason}",catalogNeedsBaseUrl:"需要 base URL",catalogBaseUrlHint:"该提供商必填",importAction:"导入",registryTitle:"导入 registry",registryUrlLabel:"Registry URL",registryUrlPlaceholder:"https://…/api.json",registryApiKeyLabel:"API Key(可选)",registryUrlRequired:"Registry URL 不能为空"}},qg={dialogLabel:"切换模型",title:"切换模型",close:"关闭 (Esc)",allTab:"全部",providerTabs:"模型提供商",searchPlaceholder:"搜索模型或提供商…",loading:"加载模型中…",unavailable:"daemon 暂不支持模型列表",contextSuffix:"{size} ctx",emptyNoModels:"daemon 未提供可选模型",emptyNoMatch:"无匹配模型",starTitle:"添加到收藏",unstarTitle:"取消收藏",footerHint:"↑↓ 导航 · Enter 选择 · Esc 关闭"},Wg={justNow:"刚刚"},Hg={title:{shell:"运行命令?",diff:"应用修改?",file:"写入文件?",fileop:"文件操作?",url:"抓取 URL?",search:"搜索?",invocation:"调用?",todo:"更新 todo?",plan_review:"按这份 plan 开始实现?",generic:"批准操作?"},subagentBadge:"子 agent · {name}",required:"APPROVAL REQUIRED",danger:"危险: {detail}",searchQueryLabel:"查询",searchScope:"范围:{scope}",feedbackPlaceholder:"说明拒绝原因… (Enter 提交, Esc 取消)",feedbackHint:"Enter 提交 · Esc 取消",approve:"批准",approveSession:"本会话内批准",reject:"拒绝",feedback:"+反馈",approvePlan:"批准 plan",revise:"修改",rejectAndExit:"拒绝并退出"},Ug={title:"提问",step:"Q{current}/{total}",back:"‹ 返回",nextQuestion:"下一题 ›",otherDefault:"其他…",submit:"提交",dismiss:"放弃",minimize:"最小化",expand:"展开"},Vg={tag:"任务",summary:"{run} 运行中 · {done} 完成",stop:"stop",defaultDescription:"后台任务",dockTasks:"后台任务",dockBash:"后台 Bash",dockSubagent:"子 Agent",dockTodos:"待办",thinkingEffort:"思考 {effort}",running:"运行中",closePanel:"关闭面板",timingRunning:"运行中 · {time}",timingDone:"完成 · {sec}s",emptyTasks:"暂无后台任务",emptyBash:"暂无后台 Bash 任务",emptySubagent:"暂无子 Agent 任务",emptyTodo:"暂无待办事项",todoProgress:"已完成 {done}/{total}",filterRecent:"最近",filterRunning:"运行中",filterDone:"已完成",filterAll:"全部",emptyRecent:"暂无最近任务",emptyRunning:"暂无运行中的任务",emptyDone:"暂无已完成的任务",detailPlaceholder:"选择任务以查看命令与输出",noOutput:"暂无输出",openTab:"查看全部后台任务",openDetail:"查看",collapse:"折叠",expand:"展开",fieldTask:"任务",fieldOutput:"输出",fieldProgress:"进度",fieldResult:"结果"},jg={panelTitle:"思考过程",close:"关闭"},Kg={title:"改动",branch:"分支",aheadTitle:"领先远程",behindTitle:"落后远程",changeCount:"{count} 改动",empty:"无 git 改动 / daemon 未提供",clean:"工作区干净,无改动",back:"返回",loading:"正在加载 diff…",noDiff:"该文件没有行级改动",list:"列表",tree:"树形",close:"关闭",colorblind:"色盲配色",colorblindOff:"默认",colorblindRedGreen:"红绿色盲",colorblindBlueYellow:"蓝黄色盲"},Gg={},Qg={empty:"选择左侧文件预览",loading:"加载中…",lineCount:"{count} 行",copy:"复制",copied:"已复制",copyPath:"复制路径",openInEditor:"打开",reveal:"显示",download:"下载",close:"关闭",videoFallback:"视频",imageFallback:"图片",search:"搜索",prevMatch:"上一个匹配",nextMatch:"下一个匹配",htmlMode:"HTML 预览模式",markdownMode:"Markdown 预览模式",preview:"预览",source:"源码",imageFit:"图片缩放",fit:"适应",actual:"原始",pdfNoPreview:"无法内嵌预览此 PDF,可以下载后查看",imageNoPreview:"图片文件 · {mime} · {size} · 暂不预览",videoNoPreview:"视频文件 · {mime} · {size} · 暂不预览",binaryNoPreview:"二进制文件 · {mime} · {size} 字节 · 暂不预览",unknownType:"未知类型",copyCode:"复制代码",enlargeImage:"放大图片",errors:{emptyPath:"文件路径为空",unsupportedPath:"不支持预览 URL 或远程路径",outsideWorkspace:"只能预览当前 workspace 内的文件",isDirectory:"请选择具体文件,而不是目录",loadFailed:"无法读取这个文件"}},Yg={searching:"搜索中…",noMatch:"无匹配"},Zg={dismiss:"关闭",errorLabel:"错误",noteLabel:"提示",agentError:{title:"模型请求失败",connection:"无法连接模型服务",auth:"模型认证失败",rateLimit:"模型请求被限流",overloaded:"模型服务过载",filtered:"响应被提供方过滤",api:"模型接口返回错误",usageLimit:"用量已达上限",contextOverflow:"上下文超出模型限制"},details:{cause:"底层原因",code:"错误码",connection:"连接状态",contentType:"响应类型",details:"服务端详情",duration:"耗时",endpoint:"请求地址",errorName:"错误类型",message:"错误信息",operation:"操作",phase:"失败阶段",request:"请求",requestId:"Request ID",responsePreview:"响应预览",sessionId:"Session ID",stack:"堆栈",status:"HTTP 状态",timeout:"超时设置",timestamp:"时间"},daemonApiTitle:"Kimi daemon 返回错误",daemonNetworkMessage:"Web 没有拿到本地服务的响应。请确认 Kimi daemon 仍在运行,或刷新页面重试。",daemonNetworkTitle:"无法连接到 Kimi daemon",daemonTimeoutMessage:"Kimi 服务器没有在规定时间内响应。操作可能仍在后台继续,稍后刷新查看,或重试一次。",daemonTimeoutTitle:"Kimi 服务器响应超时",diagnostics:"诊断信息",hideDetails:"收起详情",operationFailedMessage:"刚才的操作没有完成,请稍后重试。",operationFailedTitle:"操作失败",sessionSnapshotMessage:"Web 没能加载当前会话内容。请确认 Kimi daemon 仍在运行,或刷新页面重试。",sessionSnapshotTitle:"无法加载当前会话内容",showDetails:"查看详情",copyDetails:"复制诊断信息",copied:"已复制",wsTitle:"实时连接出错",goal:{alreadyExists:"当前会话已有一个进行中的目标,请先取消它再创建新目标。",notFound:"没有找到可操作的目标,可能它已经结束或被取消。",statusInvalid:"当前目标状态不支持这个操作。",notResumable:"这个目标无法恢复(可能已取消或已完成)。",objectiveTooLong:"目标描述太长了,请精简后重试。"}},Xg={new:{desc:"创建新会话"},clear:{desc:"清空并新建会话"},login:{desc:"在浏览器中登录 Kimi"},plan:{desc:"切换计划模式 开/关"},swarm:{desc:"切换 swarm 模式;/swarm <任务> 直接在 swarm 下执行"},goal:{desc:"创建/控制目标:/goal <目标>、/goal pause|resume|cancel"},btw:{desc:"侧边聊天:/btw <问题> 向 fork 的侧边会话提问"},yolo:{desc:"自动批准工具操作,Agent 仍可能提问"},auto:{desc:"完全自主,Agent 不再提问"},thinking:{desc:"设置思考强度"},compact:{desc:"压缩会话历史"},fork:{desc:"把当前会话 fork 出一个新会话"},export:{desc:"将当前会话和排障日志下载为 ZIP 压缩包",done:"会话已导出。",noSession:"请先打开一个会话再导出。",started:"正在导出会话…",tooLarge:"会话过大,无法导出…"},status:{desc:"查看会话状态"},undo:{desc:"撤销上一条消息"}},Jg={label:{read:"读取",bash:"运行",edit:"编辑",write:"写入",grep:"搜索",glob:"查找",ls:"列目录",web_fetch:"抓取",search:"搜索",todo:"待办",task:"任务",swarm:"Swarm",ask_user:"提问",goal_create:"启动目标",goal_get:"读取目标",goal_budget:"设置目标预算",goal_update:"更新目标"},swarm:{progress:"{done} / {total}",runningSub:"{count} 个进行中",doneSub:"完成 {completed} · 失败 {failed}",phaseQueued:"排队",phaseWorking:"运行中",phaseSuspended:"暂停",phaseCompleted:"完成",phaseFailed:"失败",waiting:"等待子任务加入…"},chip:{lines:"{count} 行",results:"{count} 结果",edited:"已编辑",created:"已创建",todos:"{count} 项"},goal:{objectiveWithCriterion:"{objective} · {criterion}",status:"状态:{status}",budget:"{value} {unit}",turns:"{value} 轮",tokens:"{value} token",milliseconds:"{value} 毫秒",seconds:"{value} 秒",minutes:"{value} 分钟",hours:"{value} 小时"},group:{title:"{count} 个工具调用",running:"运行中",error:"有失败",done:"已完成"},ask:{dismissed:"已忽略",answer:"{count} 个回答",answers:"{count} 个回答",answered:"已回答",more:"(还有 {count} 个)"},plan:{loading:"正在加载 plan…",unavailable:"无法获取 plan",pending:"等待审核",approved:"已批准",rejected:"已拒绝",cancelled:"已取消"}},e0={resizeHandleAria:"调整侧栏宽度",resizePreviewAria:"调整预览面板宽度",detailPanelAria:"详情面板"},t0={zoomIn:"放大",zoomOut:"缩小",resetZoom:"重置缩放",dragHint:"拖拽平移",noPreview:"无预览"},n0={openSwitcher:"切换会话 / 工作区",openSettings:"会话设置",settingsTitle:"会话设置",groupSession:"当前会话",groupApp:"应用偏好",sheetLabel:"面板",closeSheet:"关闭",tapToCycle:"点击切换",running:"运行中",idle:"空闲",sessionCount:"{n} 个会话",newSession:"新建会话",permManualSub:"每个工具都确认",permAutoSub:"完全自主,不再提问",permYoloSub:"自动批准工具,仍可能提问",planModeSub:"计划模式",swarmModeSub:"Swarm 模式",supermoonModeSub:"Supermoon 模式",archivedSessions:"已归档会话",archivedSessionsSub:"查看并恢复已归档会话",archivedBack:"返回"},s0={colorSchemeLabel:"明暗",light:"月之亮面",dark:"月之暗面",system:"跟随系统",accentLabel:"主题色",accentBlue:"蓝色",accentBlack:"黑色"},o0={title:"Welcome to Kimi Web",subtitle:"Pick a few preferences — you can change them anytime in Settings.",languageLabel:"Language",start:"Get started",skip:"Skip",reopen:"Preferences / onboarding"},i0={title:"欢迎来使用 Kimi Web",subtitle:"来选择一些你的偏好 —— 之后也可以在设置里随时修改。",languageLabel:"语言",start:"开始使用",skip:"跳过",reopen:"偏好 / 引导"},a0={title:"Settings",close:"Close (Esc)",tabs:{general:"General",agent:"Agent",account:"Account",advanced:"Advanced",archived:"Archived",plugins:"Plugins"},appearance:"Appearance",notifications:"Notifications",notifyOnComplete:"Notify when a turn completes",notifyOnQuestion:"Notify when a question needs an answer",notifyOnApproval:"Notify when a tool needs approval",soundOnComplete:"Play a sound when a turn completes, needs an answer, or needs approval",notifyDenied:"Blocked in browser settings",notifyTitle:"Kimi Code · Turn finished",notifyQuestionTitle:"Kimi Code · Needs answer",notifyApprovalTitle:"Kimi Code · Approval required",notifyFallback:"View result",notifyQuestionFallback:"A question is waiting for your answer",notifyApprovalFallback:"A tool needs your approval",account:"Account",uiFontSize:"Font size",agentDefaults:"Agent defaults",providers:"Providers",providersHint:"Add, remove, or refresh providers",manageProviders:"Manage",saving:"Saving",defaultModel:"Default model",defaultModelHint:"New sessions prefer this model",noDefaultModel:"No default model",defaultPermission:"Default permission",defaultPermissionHint:"Only affects newly-created sessions",defaultThinking:"Thinking by default",defaultThinkingHint:"Whether new sessions start with thinking enabled",defaultPlanMode:"Plan mode by default",defaultPlanModeHint:"Whether new sessions start in plan mode",mergeSkills:"Merge all available skills",mergeSkillsHint:"Show project, plugin, and user skills together",telemetry:"Improve product with usage data",telemetryHint:"When on, we collect anonymous interaction data (such as clicks, interruptions, and feature usage) to improve the product experience. You can turn it off at any time.",telemetryRestartHint:"Takes effect after restarting the service.",credentialReady:"Credential configured",credentialMissing:"Missing credential",configUnavailable:"The server did not return config yet. These settings are unavailable.",advanced:"Advanced",build:"Build",serverVersion:"Server version",backend:"Backend",exportLog:"Troubleshooting log",logHint:"Enable with ?debug=1 to capture",exportLogBtn:"Export log",conversationToc:"Show conversation outline",conversationTocHint:"Show a clickable outline in the right margin to jump between messages",archivedTitle:"Archived sessions",archivedDesc:"Browse archived sessions, see their workspace path, name, and archive time, and restore them to the session list.",archivedSearch:"Search archived sessions",archivedAllWorkspaces:"All workspaces",archivedSortLabel:"Sort by",archivedSortArchived:"Archive time",archivedSortCreated:"Created time",archivedSortName:"Name",archivedRestore:"Restore",archivedEmpty:"No archived sessions yet",archivedNoMatch:"No matching archived sessions",archivedSessionsCount:"{count} sessions",archivedAt:"Archived {time}",archivedLoadMore:"Load more",archivedLoading:"Loading…",archivedLoadingAll:"Loading all archived sessions…",plugins:{retry:"Retry",builtIn:"Built-in",official:"Official",thirdParty:"Third-party",installed:"Installed",install:"Install",update:"Update",remove:"Remove",enabled:"Enabled",homepage:"Homepage",empty:"No plugins found",hasErrors:"Error",customInstall:"Install custom plugin",customInstallPlaceholder:"https://… or /path/to/plugin",customInstallHint:"Accepts an https zip URL, a GitHub repo URL, or a local directory path.",extensionHintTitle:"One step left: install the browser extension",extensionGuide:"Manual install",dismissHint:"Dismiss",catalogUnavailable:"The marketplace catalog is currently unreachable; installed plugins remain manageable below.",source:{"local-path":"Local","zip-url":"ZIP",github:"GitHub"},counts:{skill:"1 skill | {n} skills",mcp:"1 MCP server | {n} MCP servers",mcpEnabled:"{n} on",hook:"1 hook | {n} hooks",command:"1 command | {n} commands"},sections:{installed:"Installed plugins",marketplace:"Marketplace",capabilities:"Capabilities"},confirmRemove:"Remove this plugin and all of its skills and hooks?",loadFailed:"Failed to load plugins",loading:"Loading plugins…",capabilitiesUnavailable:"Capabilities are unavailable right now",installing:"Installing…",capabilityStates:{not_installed:"Not installed",partial:"Partial",ready:"Ready",unsupported:"Unsupported"},steps:{ok:"Done",missing:"Missing",failed:"Failed"}}},l0={title:"设置",close:"关闭 (Esc)",tabs:{general:"通用",agent:"Agent",account:"账户",advanced:"高级",archived:"已归档",plugins:"插件"},appearance:"外观",notifications:"通知",notifyOnComplete:"会话完成时通知",notifyOnQuestion:"待回答时通知",notifyOnApproval:"待审批时通知",soundOnComplete:"会话完成、待回答或待审批时播放提示音",notifyDenied:"已在浏览器设置中被阻止",notifyTitle:"Kimi Code · 回合完成",notifyQuestionTitle:"Kimi Code · 待回答",notifyApprovalTitle:"Kimi Code · 等待审批",notifyFallback:"点击查看结果",notifyQuestionFallback:"有提问等待你回答",notifyApprovalFallback:"有工具等待你审批",account:"账户",uiFontSize:"字体大小",agentDefaults:"Agent 默认值",providers:"提供商",providersHint:"添加、删除或刷新提供商",manageProviders:"管理",saving:"保存中",defaultModel:"默认模型",defaultModelHint:"新会话会优先使用这个模型",noDefaultModel:"未设置默认模型",defaultPermission:"默认权限",defaultPermissionHint:"只影响之后新建的会话",defaultThinking:"默认开启思考",defaultThinkingHint:"新会话默认是否开启 thinking",defaultPlanMode:"默认计划模式",defaultPlanModeHint:"新会话默认进入 plan mode",mergeSkills:"合并所有可用 Skills",mergeSkillsHint:"让项目、插件和用户 Skills 一起出现在可用列表中",telemetry:"使用数据改进产品",telemetryHint:"开启后,我们会收集您的匿名交互数据(如点击、打断、功能使用等),用于改进产品体验。您可以随时关闭。",telemetryRestartHint:"更改后需重启服务生效。",credentialReady:"凭据已配置",credentialMissing:"缺少凭据",configUnavailable:"当前服务端没有返回 config,设置项暂不可用。",advanced:"高级",build:"构建",serverVersion:"服务端版本",backend:"后端",exportLog:"故障排查日志",logHint:"加 ?debug=1 开启采集",exportLogBtn:"导出日志",conversationToc:"显示对话目录",conversationTocHint:"在右侧显示可点击跳转的对话目录",archivedTitle:"已归档会话",archivedDesc:"查看已归档会话,确认其所属工作区路径、会话名称和归档时间,并可恢复到会话列表。",archivedSearch:"搜索已归档会话",archivedAllWorkspaces:"所有工作区",archivedSortLabel:"排序方式",archivedSortArchived:"归档时间",archivedSortCreated:"创建时间",archivedSortName:"按字母顺序",archivedRestore:"恢复",archivedEmpty:"还没有归档的会话",archivedNoMatch:"没有匹配的已归档会话",archivedSessionsCount:"{count} 个会话",archivedAt:"归档于 {time}",archivedLoadMore:"加载更多",archivedLoading:"加载中…",archivedLoadingAll:"正在加载全部归档会话…",plugins:{retry:"重试",builtIn:"内置",official:"官方",thirdParty:"第三方",installed:"已安装",install:"安装",update:"更新",remove:"移除",enabled:"启用",homepage:"主页",empty:"没有找到插件",hasErrors:"错误",customInstall:"安装自定义插件",customInstallPlaceholder:"https://… 或 /本地/目录",customInstallHint:"支持 https zip 链接、GitHub 仓库地址或本地目录路径。",extensionHintTitle:"还差一步:安装浏览器扩展",extensionGuide:"手动安装",dismissHint:"知道了",catalogUnavailable:"插件市场目录暂时不可达;已安装的插件仍可正常管理。",source:{"local-path":"本地","zip-url":"ZIP",github:"GitHub"},counts:{skill:"{n} 个技能",mcp:"{n} 个 MCP 服务",mcpEnabled:"启用 {n} 个",hook:"{n} 个钩子",command:"{n} 个命令"},sections:{installed:"已安装插件",marketplace:"插件市场",capabilities:"能力"},confirmRemove:"要移除该插件及其全部技能和钩子吗?",loadFailed:"插件加载失败",loading:"正在加载插件…",capabilitiesUnavailable:"能力列表暂时不可用",installing:"安装中…",capabilityStates:{not_installed:"未安装",partial:"部分安装",ready:"已就绪",unsupported:"不支持"},steps:{ok:"已完成",missing:"缺失",failed:"失败"}}},r0={openInEditor:"Open in editor",openInEditorShort:"Open",chooseOpenApp:"Choose application",copyAll:"Copy all as Markdown",copyFinalSummary:"Copy final summary",copied:"Copied",copyPath:"Copy path",changed:"{n} changed",gitTooltip:"Open Files > Changed",detached:"detached",openPr:"Open pull request",prStatusOpen:"open",prStatusClosed:"closed",prStatusMerged:"merged",prStatusDraft:"draft",prStatusUnknown:"unknown",options:"Options",search:"Search conversation",copySessionId:"Copy Session ID",renameSession:"Rename",forkSession:"Fork session",archiveSession:"Archive",exportSession:"Export session"},u0={openInEditor:"在编辑器中打开",openInEditorShort:"打开",chooseOpenApp:"选择应用",copyAll:"复制全部对话为 Markdown",copyFinalSummary:"仅复制最终总结",copied:"已复制",copyPath:"复制路径",changed:"{n} 处改动",gitTooltip:"打开「文件 > 改动」",detached:"游离",openPr:"打开 Pull Request",prStatusOpen:"已打开",prStatusClosed:"已关闭",prStatusMerged:"已合并",prStatusDraft:"草稿",prStatusUnknown:"未知",options:"选项",search:"搜索对话",copySessionId:"复制 Session ID",renameSession:"重命名",forkSession:"分叉会话",archiveSession:"归档",exportSession:"导出会话"},c0={title:"Side chat",subtitle:"forked from this session",empty:"Ask a quick question on the side — it shares this session’s context.",placeholder:"Ask the side chat…",send:"Send"},d0={title:"侧边聊天",subtitle:"从当前会话 fork",empty:"在侧边随手问一句 —— 它共享当前会话的上下文。",placeholder:"问问侧边聊天…",send:"发送"},p0={title:"Server token required",hint:"This server is protected. Enter the bearer token printed when the server started (or the password set via {password}).",placeholder:"Token",connect:"Connect",connecting:"Connecting…"},f0={dockTerminal:"Terminal",newTerminal:"New terminal",inputPlaceholder:"Type a command and press Enter",loading:"Loading terminals…",empty:"No terminals yet — create one to get a shell in this session",listFailed:"Failed to load terminals",createFailed:"Failed to create terminal",closeFailed:"Failed to close terminal",closeTerminal:"Close terminal",exited:"Process exited with code {code}"},m0={title:"需要服务器令牌",hint:"此服务器受保护。请输入服务器启动时打印的 bearer token(或通过 {password} 设置的密码)。",placeholder:"令牌",connect:"连接",connecting:"连接中…"},v0={dockTerminal:"终端",newTerminal:"新建终端",inputPlaceholder:"输入命令后按回车",loading:"正在加载终端…",empty:"暂无终端 — 创建一个即可在此会话中使用 shell",listFailed:"加载终端失败",createFailed:"创建终端失败",closeFailed:"关闭终端失败",closeTerminal:"关闭终端",exited:"进程已退出,退出码 {code}"},h0={en:{common:ag,app:lg,sidebar:rg,workspace:ug,conversation:cg,status:dg,composer:pg,login:fg,providers:mg,model:vg,sessions:hg,approval:gg,question:yg,tasks:kg,thinking:bg,diff:wg,fileTree:Sg,filePreview:Cg,mention:_g,warnings:$g,commands:Mg,tools:xg,layout:Ig,mobile:Tg,theme:Pg,onboarding:o0,settings:a0,header:r0,sideChat:c0,serverAuth:p0,terminal:f0,media:Ag},zh:{common:Eg,app:Lg,sidebar:Bg,workspace:Rg,conversation:Og,status:Dg,composer:zg,login:Fg,providers:Ng,model:qg,sessions:Wg,approval:Hg,question:Ug,tasks:Vg,thinking:jg,diff:Kg,fileTree:Gg,filePreview:Qg,mention:Yg,warnings:Zg,commands:Xg,tools:Jg,layout:e0,mobile:n0,theme:s0,onboarding:i0,settings:l0,header:u0,sideChat:d0,serverAuth:m0,terminal:v0,media:t0}},Iu=[{code:"en",label:"English"},{code:"zh",label:"中文"}];function g0(){const e=$t(qe.locale);return e==="en"||e==="zh"?e:globalThis.navigator?.language?.toLowerCase().startsWith("zh")?"zh":"en"}const dt=xd({legacy:!1,locale:g0(),fallbackLocale:"en",messages:h0});function Au(e){dt.global.locale.value=e,Ot(qe.locale,e)}const y0=["app:load:start","app:load:complete","export:start","export:accepted","export:failed","prompt:start","prompt:accepted","prompt:failed","session:snapshot:start","session:snapshot:accepted","session:snapshot:failed","operation:failed","window:error","window:unhandled-rejection","ws:connection","ws:error","ws:resync","ws:stale-reconnect"],Tu=500,Ti=256*1024,Gl=200,ta=16384,na=500,sa=50,oa=50,k0=6,b0=/api[_-]?key|authorization|token|secret|password|cookie|credential/i,w0=/^[A-Za-z0-9+/=_-]{200,}$/;let ia=null;function es(){if(ia!==null)return ia;let e=!1;try{if(typeof location<"u"){const t=new URLSearchParams(location.search).get("debug");(t==="1"||t==="true")&&(e=!0)}}catch{}return e||(e=$t(qe.debug)==="1"),ia=e,e}const Ws=[],Mo=[];let Ho=0;const Js=[];let Uo=0,S0=1;const Pi=new TextEncoder,C0=new Set(y0),ol=x(0),Vo=Id(!1);function _0(){return Ws}function $0(){Ws.length=0,Mo.length=0,Ho=0,Js.length=0,Uo=0,ol.value++}function As(e){if(!Vo.value){try{const t={id:S0++,ts:Date.now(),source:e.source,kind:String(Io(e.kind)),label:String(Io(e.label)),sessionId:e.sessionId===void 0?void 0:String(Io(e.sessionId)),method:e.method,path:e.path,eventType:e.eventType,seq:e.seq,offset:e.offset,status:e.status,code:e.code,requestId:e.requestId,durationMs:e.durationMs,detail:Us(e.detail)},n=JSON.stringify(t),s=Pi.encode(n).byteLength;if(s>Ti)return;for(Ws.push(t),Mo.push(n),Ho+=s+(Mo.length>1?1:0);Ws.length>Tu||Ho>Ti;){const o=Mo.shift();Ws.shift(),o!==void 0&&(Ho-=Pi.encode(o).byteLength,Mo.length>0&&(Ho-=1))}}catch{return}ol.value++}}function Gs(e){if(typeof e=="string")return e.length<=Gl?e:e.slice(0,Gl)}function qn(e){return typeof e=="number"&&Number.isFinite(e)?e:void 0}function M0(e,t){if(C0.has(e))try{const n={ts:Date.now(),event:e,sessionId:Gs(t?.sessionId),status:Gs(t?.status),operation:Gs(t?.operation),seq:qn(t?.seq),durationMs:qn(t?.durationMs),messageCount:qn(t?.messageCount),contentCount:qn(t?.contentCount),mediaCount:qn(t?.mediaCount),sessionCount:qn(t?.sessionCount),workspaceCount:qn(t?.workspaceCount),promptId:Gs(t?.promptId),zipBytes:qn(t?.zipBytes),errorName:Gs(t?.errorName),errorCode:qn(t?.errorCode),requestId:Gs(t?.requestId),phase:Gs(t?.phase),httpStatus:qn(t?.httpStatus),fatal:typeof t?.fatal=="boolean"?t.fatal:void 0,line:qn(t?.line),col:qn(t?.col)},s=JSON.stringify(n),o=Pi.encode(s).byteLength;if(o>Ti)return;for(Js.push(s),Uo+=o+(Js.length>1?1:0);Js.length>Tu||Uo>Ti;){const i=Js.shift();i!==void 0&&(Uo-=Pi.encode(i).byteLength,Js.length>0&&(Uo-=1))}}catch{return}}function Io(e,t=0){if(e==null)return e;const n=typeof e;if(n==="number"||n==="boolean")return e;if(n==="string"){const i=e;return w0.test(i)?`[base64-like, ${i.length} chars omitted]`:i.length>na?`${i.slice(0,na)}… [+${i.length-na} chars]`:i}if(n!=="object")return String(e);if(t>=k0)return"[max depth]";if(Array.isArray(e)){const i=e.slice(0,sa).map(u=>Io(u,t+1));return e.length>sa&&i.push(`[+${e.length-sa} more items]`),i}const s={},o=Object.entries(e);for(const[i,u]of o.slice(0,oa))s[i]=b0.test(i)?"[redacted]":Io(u,t+1);return o.length>oa&&(s._truncatedKeys=o.length-oa),s}function Us(e){if(e===void 0)return;const t=Io(e);try{const n=JSON.stringify(t);if(n!==void 0&&n.length>ta)return{_truncated:`detail JSON was ${n.length} chars; first ${ta} kept`,preview:n.slice(0,ta)}}catch{return"[unserializable detail]"}return t}const Pu=/^\/(oauth\/login|auth|providers|config|files)(\/|$)/i;function fi(e){es()&&As({source:"rest",kind:"rest:request",label:`→ ${e.method} ${e.path}`,method:e.method,path:e.path,requestId:e.requestId,detail:{url:e.url,body:Pu.test(e.path)?void 0:Us(e.body)}})}function yo(e){if(!es())return;const t=e.code!==0;As({source:"rest",kind:t?"rest:error":"rest:response",label:`← ${e.method} ${e.path} ${e.status} code=${e.code}${t?` "${e.msg}"`:""} ${Math.round(e.durationMs)}ms`,method:e.method,path:e.path,requestId:e.requestId,status:e.status,code:e.code,durationMs:e.durationMs,detail:{envelope:{code:e.code,msg:e.msg,request_id:e.envelopeRequestId},data:Pu.test(e.path)?void 0:Us(e.data)}})}function Bs(e){es()&&As({source:"rest",kind:"rest:error",label:`✕ ${e.method} ${e.path} ${e.phase} error${e.status!==void 0?` (HTTP ${e.status})`:""} ${Math.round(e.durationMs)}ms`,method:e.method,path:e.path,requestId:e.requestId,status:e.status,durationMs:e.durationMs,detail:{phase:e.phase,error:String(e.error)}})}function ko(e,t){es()&&As({source:"ws",kind:"ws:lifecycle",eventType:e,label:`ws ${e}`,detail:Us(t)})}function x0(e){if(!es())return;const t=e??{},n=typeof t.type=="string"?t.type:"(unknown)",s=t.payload,o=typeof s?.session_id=="string"?s.session_id:void 0;As({source:"ws",kind:"ws:out",eventType:n,sessionId:o,label:`→ ${n}`,detail:Us(e)})}function I0(e){if(!es())return;const t=e??{},n=typeof t.type=="string"?t.type:"(unknown)",s=typeof t.session_id=="string"?t.session_id:typeof t.payload?.session_id=="string"?t.payload.session_id:void 0,o=typeof t.seq=="number"?t.seq:void 0,i=typeof t.offset=="number"?t.offset:void 0,u=[s,o!==void 0?`seq=${o}`:void 0,i!==void 0?`offset=${i}`:void 0,t.volatile===!0?"volatile":void 0].filter(Boolean);As({source:"ws",kind:"ws:in",eventType:n,sessionId:s,seq:o,offset:i,label:`← ${n}${u.length>0?` (${u.join(" ")})`:""}`,detail:Us(t.payload)})}const A0={error:"✕",warn:"⚠",info:"ℹ",debug:"·",log:"·"};function T0(e,t,n){es()&&As({source:"client",kind:`client:${e}`,label:`${A0[e]} ${t}`,detail:Us(n)})}function xs(e,t){es()&&As({source:"client",kind:"client:event",label:`· ${e}`,detail:Us(t)})}function Qt(e,t){M0(e,t),As({source:"client",kind:"client:key",label:e,sessionId:typeof t?.sessionId=="string"?t.sessionId:void 0,seq:typeof t?.seq=="number"?t.seq:void 0,durationMs:typeof t?.durationMs=="number"?t.durationMs:void 0,detail:t})}let aa=!1,mi=null;function P0(){if(aa)return()=>mi?.();aa=!0;const e=[];try{if(typeof window<"u"){const n=o=>{Qt("window:error",{status:"failed",errorName:o.error instanceof Error?o.error.name:"Error",line:o.lineno,col:o.colno})},s=o=>{const i=o.reason;Qt("window:unhandled-rejection",{status:"failed",errorName:i instanceof Error?i.name:typeof i})};window.addEventListener("error",n),window.addEventListener("unhandledrejection",s),e.push(()=>{window.removeEventListener("error",n)}),e.push(()=>{window.removeEventListener("unhandledrejection",s)})}}catch{}if(es())for(const n of["error","warn","log","info","debug"]){const s=console[n];if(typeof s!="function")continue;const o=(...i)=>{try{T0(n,i.map(E0).join(" "),i.length>1?i:i[0])}catch{}s.apply(console,i)};console[n]=o,e.push(()=>{console[n]===o&&(console[n]=s)})}const t=()=>{if(mi===t){for(const n of e.toReversed())n();mi=null,aa=!1}};return mi=t,t}function E0(e){if(typeof e=="string")return e;if(e instanceof Error)return`${e.name}: ${e.message}`;try{return JSON.stringify(e)}catch{return String(e)}}function Eu(e=Ws){if(typeof document>"u")return;const t=new Blob([L0(e)],{type:"application/x-ndjson"}),n=URL.createObjectURL(t);let s;try{s=document.createElement("a"),s.href=n,s.download=`kimi-web-log-${new Date().toISOString().replaceAll(/[:.]/g,"-")}.jsonl`,document.body.append(s),s.click()}finally{s?.remove(),setTimeout(()=>{try{URL.revokeObjectURL(n)}catch{}},0)}}function L0(e=Ws){return e===Ws?Mo.join(`
-`):e.map(t=>JSON.stringify(t)).join(`
-`)}function B0(){return Js.join(`
-`)}const Lu="kimiWeb.compaction",Bu="kimiWeb.turnError",mn=dt.global.t,R0={read:"tools.label.read",bash:"tools.label.bash",edit:"tools.label.edit",multi_edit:"tools.label.edit",write:"tools.label.write",grep:"tools.label.grep",glob:"tools.label.glob",ls:"tools.label.ls",web_fetch:"tools.label.web_fetch",search:"tools.label.search",todo:"tools.label.todo",task:"tools.label.task",agentswarm:"tools.label.swarm",askuserquestion:"tools.label.ask_user",creategoal:"tools.label.goal_create",getgoal:"tools.label.goal_get",setgoalbudget:"tools.label.goal_budget",updategoal:"tools.label.goal_update"},O0={multiedit:"multi_edit",multiedits:"multi_edit",shell:"bash",run:"bash",exec:"bash",ripgrep:"grep",rg:"grep",find:"glob",fetch:"web_fetch",webfetch:"web_fetch",url_fetch:"web_fetch",urlfetch:"web_fetch",list:"ls",listdir:"ls",list_dir:"ls",todowrite:"todo",todo_write:"todo",todoread:"todo",todolist:"todo",todo_list:"todo",agent:"task",subagent:"task",websearch:"search",web_search:"search",create_goal:"creategoal",get_goal:"getgoal",set_goal_budget:"setgoalbudget",update_goal:"updategoal"};function mo(e){const t=(e??"").trim().toLowerCase().replace(/[\s-]+/g,"_");return O0[t]??t}function Vs(e){const t=R0[mo(e)];return t?mn(t):e}const D0={read:"file-text",bash:"terminal",edit:"pencil",multi_edit:"pencil",write:"file-plus",grep:"search",search:"search",glob:"glob",ls:"folder",web_fetch:"globe",todo:"check-list",task:"sparkles",agentswarm:"git-pull-request",askuserquestion:"help-circle",creategoal:"target",getgoal:"target",setgoalbudget:"target",updategoal:"target",croncreate:"calendar-schedule",cronlist:"calendar-todo",crondelete:"calendar-close"};function ni(e){const t=mo(e);let n=D0[t];return!n&&(e??"").trim().toLowerCase().includes("skill")&&(n="bolt"),n||(n="tool"),Co(n,"sm")}const Ru=80;function z0(e,t=Ru){const n=e.trim();return n.length>t?n.slice(0,t-1)+"…":n}function F0(e,t){const n=e.trim();return!!(n===""||n==="{}"||n==="[]"||n==="null"||t&&Object.keys(t).length===0)}function N0(e){const t=e.trim();if(!t.startsWith("{"))return null;try{const n=JSON.parse(t);return n&&typeof n=="object"&&!Array.isArray(n)?n:null}catch{return null}}function tt(e){return typeof e=="string"&&e.length>0?e:void 0}function zs(e){return typeof e=="number"&&Number.isFinite(e)?e:void 0}function q0(e){try{const t=new URL(e),n=t.pathname.split("/").filter(Boolean)[0];return n?`${t.host}/${n}`:t.host}catch{return e.replace(/^https?:\/\//,"")}}function la(e){return tt(e.path)??tt(e.file_path)??tt(e.filePath)??tt(e.filename)}const W0={active:"status.goalStatusActive",blocked:"status.goalStatusBlocked",complete:"status.goalStatusComplete"};function H0(e){const t=tt(e);if(!t)return;const n=W0[t];return n?mn(n):t}function U0(e){const t=zs(e.value),n=tt(e.unit);if(!(t===void 0||!n))switch(n){case"turns":return mn("tools.goal.turns",{value:t});case"tokens":return mn("tools.goal.tokens",{value:t});case"milliseconds":return mn("tools.goal.milliseconds",{value:t});case"seconds":return mn("tools.goal.seconds",{value:t});case"minutes":return mn("tools.goal.minutes",{value:t});case"hours":return mn("tools.goal.hours",{value:t});default:return mn("tools.goal.budget",{value:t,unit:n})}}const V0=64;function lo(e,t,n=!1){const s=(o,i=Ru)=>n?o.trim():z0(o,i);try{const o=N0(t);if(!n&&F0(t,o))return"";const i=()=>s(t.replace(/^·\s*/,""));if(!o)return i();switch(mo(e)){case"read":{const u=la(o);if(!u)return i();const p=zs(o.offset)??zs(o.line_start)??zs(o.start_line),m=zs(o.limit)??zs(o.length),h=zs(o.line_end)??zs(o.end_line)??(p!==void 0&&m!==void 0?p+m:void 0);return s(p!==void 0&&h!==void 0?`${u}:${p}-${h}`:p!==void 0?`${u}:${p}`:u)}case"write":{const u=la(o);return u?s(`${u} ${mn("tools.chip.created")}`):i()}case"edit":case"multi_edit":{const u=la(o);return u?s(u):i()}case"bash":{const u=tt(o.command)??tt(o.cmd)??tt(o.script);return u?s(u,V0):i()}case"grep":case"search":{const u=tt(o.pattern)??tt(o.query)??tt(o.regex),p=tt(o.path)??tt(o.glob)??tt(o.include);return u&&p?s(`${u} in ${p}`):u?s(u):i()}case"glob":{const u=tt(o.pattern)??tt(o.glob)??tt(o.query),p=tt(o.path)??tt(o.cwd);return u&&p?s(`${u} in ${p}`):u?s(u):tt(o.path)?s(tt(o.path)):i()}case"ls":{const u=tt(o.path)??tt(o.dir)??tt(o.directory)??tt(o.cwd);return u?s(u):i()}case"web_fetch":{const u=tt(o.url)??tt(o.uri);return u?s(q0(u)):i()}case"todo":case"task":{const u=tt(o.description)??tt(o.title)??tt(o.prompt)??tt(o.name)??tt(o.subagent_type);if(u)return s(u);const p=Array.isArray(o.todos)?o.todos:Array.isArray(o.items)?o.items:void 0;return p?s(mn("tools.chip.todos",{count:p.length})):i()}case"creategoal":{if(n)return i();const u=tt(o.objective),p=tt(o.completionCriterion);return u&&p?s(mn("tools.goal.objectiveWithCriterion",{objective:u,criterion:p})):u?s(u):i()}case"getgoal":return n?i():"";case"setgoalbudget":{if(n)return i();const u=U0(o);return u?s(u):i()}case"updategoal":{if(n)return i();const u=H0(o.status);return u?s(mn("tools.goal.status",{status:u})):i()}default:return i()}}catch{return t}}function Ou(e){try{switch(mo(e.name)){case"bash":return e.timing?e.timing:"";case"read":{if(e.output&&e.output.length>0){const t=e.output.length;return mn("tools.chip.lines",{count:t})}return""}case"edit":case"multi_edit":case"write":{if(e.output){for(const n of e.output){const s=n.match(/\+(\d+).*[-−](\d+)/);if(s)return`+${s[1]} −${s[2]}`}const t=e.output.find(n=>/\d+/.test(n));if(t){const n=t.match(/\+(\d+)/),s=t.match(/[-−](\d+)/);if(n||s)return`${n?`+${n[1]}`:""} ${s?`−${s[1]}`:""}`.trim()}if(e.status!=="error")return mn("tools.chip.edited")}return""}case"grep":case"search":return e.output&&e.output.length>0?mn("tools.chip.results",{count:e.output.length}):"";default:return""}}catch{return""}}const j0=["local-path","zip-url","github"];function Rt(e,t){const n=e[t];return typeof n=="string"&&n.length>0?n:void 0}function Fs(e,t,n){return Rt(e,t)??Rt(e,n)}function zo(e,t,n){const s=e[t];if(typeof s=="number"&&Number.isFinite(s))return s;const o=e[n];return typeof o=="number"&&Number.isFinite(o)?o:0}function Du(e,t,n){return e[t]===!0||e[n]===!0}function K0(e){const t=e!==null&&typeof e=="object"?e:{},n=Rt(t,"source"),s=t.github,o=s!==null&&typeof s=="object"?s:void 0,i=o!==void 0&&o.ref!==null&&typeof o.ref=="object"?o.ref:void 0,u=i!==void 0?Rt(i,"kind"):void 0;return{id:Rt(t,"id")??"",displayName:Fs(t,"display_name","displayName")??"",version:Fs(t,"version","version"),enabled:t.enabled===!0,state:t.state==="error"?"error":"ok",skillCount:zo(t,"skill_count","skillCount"),mcpServerCount:zo(t,"mcp_server_count","mcpServerCount"),enabledMcpServerCount:zo(t,"enabled_mcp_server_count","enabledMcpServerCount"),hookCount:zo(t,"hook_count","hookCount"),commandCount:zo(t,"command_count","commandCount"),hasErrors:Du(t,"has_errors","hasErrors"),source:j0.includes(n??"")?n:"local-path",originalSource:Fs(t,"original_source","originalSource"),github:o!==void 0&&i!==void 0&&(u==="branch"||u==="tag"||u==="sha")?{owner:Rt(o,"owner")??"",repo:Rt(o,"repo")??"",ref:{kind:u,value:Rt(i,"value")??""},installedSha:Fs(o,"installed_sha","installedSha")}:void 0}}const G0=["official","curated","third-party"],Q0=["not_installed","partial","ready","unsupported"],Y0=["ok","missing","failed"];function Z0(e){const t=e!==null&&typeof e=="object"?e:{},n=Rt(t,"tier"),s=t.installed,o=s!==null&&typeof s=="object"?s:void 0;return{id:Rt(t,"id")??"",tier:G0.includes(n??"")?n:"third-party",displayName:Fs(t,"display_name","displayName")??"",description:Rt(t,"description"),homepage:Rt(t,"homepage"),keywords:Array.isArray(t.keywords)?t.keywords.filter(i=>typeof i=="string"):void 0,version:Rt(t,"version"),source:Rt(t,"source")??"",installed:o===void 0?void 0:{version:Rt(o,"version"),enabled:o.enabled===!0},updateAvailable:Du(t,"update_available","updateAvailable"),capabilityId:Fs(t,"capability_id","capabilityId")}}function X0(e){const t=e!==null&&typeof e=="object"?e:{},n=Rt(t,"state"),o=(Array.isArray(t.steps)?t.steps:[]).filter(u=>u!==null&&typeof u=="object").map(u=>({id:Rt(u,"id")??"",state:Y0.includes(Rt(u,"state")??"")?Rt(u,"state"):"missing",detail:Rt(u,"detail"),optional:u.optional===!0})),i=t.install;return{id:Rt(t,"id")??"",pluginId:Fs(t,"plugin_id","pluginId"),displayName:Fs(t,"display_name","displayName")??"",description:Rt(t,"description")??"",supported:t.supported===!0,state:Q0.includes(n??"")?n:"unsupported",version:Rt(t,"version"),steps:o,install:zu(void 0,i!==null&&typeof i=="object"?i:{running:!1})}}function J0(e){const t=e.trim();return t.length===0?!1:/^https:\/\/\S+$/i.test(t)?!0:/^(\/|~\/|\.{1,2}\/|[A-Za-z]:[\\/])/.test(t)}function ey(e,t){return e===void 0?{phase:t==="ready"?"done":"idle"}:e.running?{phase:"installing",step:e.step,percent:e.percent,note:e.note}:e.error!==void 0&&e.error.length>0?{phase:"error",error:e.error,step:e.step,percent:e.percent}:{phase:t==="ready"?"done":"idle",step:e.step}}function zu(e,t){return{running:t.running,step:t.step??e?.step,percent:t.percent??e?.percent,error:t.error??e?.error,note:t.note??e?.note}}function Fu(e){return{inputTokens:e.input_tokens,outputTokens:e.output_tokens,cacheReadTokens:e.cache_read_tokens,cacheCreationTokens:e.cache_creation_tokens,totalCostUsd:e.total_cost_usd,contextTokens:e.context_tokens,contextLimit:e.context_limit,turnCount:e.turn_count}}function Aa(e){return e.contextTokens===0&&e.contextLimit===0&&e.inputTokens===0&&e.outputTokens===0&&e.turnCount===0}function Yn(e){return{id:e.id,title:e.title,createdAt:e.created_at,updatedAt:e.updated_at,busy:e.busy,mainTurnActive:e.main_turn_active,pendingInteraction:e.pending_interaction,lastTurnReason:e.last_turn_reason,archived:e.archived??!1,currentPromptId:e.current_prompt_id,lastPrompt:e.last_prompt,cwd:e.metadata.cwd,model:e.agent_config.model,usage:Fu(e.usage),messageCount:e.message_count,lastSeq:e.last_seq,workspaceId:e.workspace_id,parentSessionId:typeof e.metadata.parent_session_id=="string"?e.metadata.parent_session_id:void 0}}function Go(e){return{id:e.id,root:e.root,name:e.name,lastOpenedAt:e.last_opened_at,sessionCount:e.session_count}}function Ql(e){return e.kind==="base64"?{kind:"base64",mediaType:e.media_type,data:e.data}:e.kind==="file"?{kind:"file",fileId:e.file_id}:{kind:"url",url:e.url,id:e.id}}function il(e){switch(e.type){case"text":return{type:"text",text:e.text};case"tool_use":return{type:"toolUse",toolCallId:e.tool_call_id,toolName:e.tool_name,input:e.input};case"tool_result":return{type:"toolResult",toolCallId:e.tool_call_id,output:e.output,isError:e.is_error};case"image":return{type:"image",source:Ql(e.source)};case"video":return{type:"video",source:Ql(e.source)};case"file":return{type:"file",fileId:e.file_id,name:e.name,mediaType:e.media_type,size:e.size};case"thinking":return{type:"thinking",thinking:e.thinking,signature:e.signature};default:return{type:"unknown",raw:e}}}function Ta(e){return{id:e.id,sessionId:e.session_id,role:e.role,content:e.content.map(il),createdAt:e.created_at,promptId:e.prompt_id,parentMessageId:e.parent_message_id,metadata:e.metadata}}function ty(e){switch(e.type){case"text":return{type:"text",text:e.text};case"toolUse":return{type:"tool_use",tool_call_id:e.toolCallId,tool_name:e.toolName,input:e.input};case"toolResult":return{type:"tool_result",tool_call_id:e.toolCallId,output:e.output,is_error:e.isError};case"image":case"video":{const t=e.source;let n;return t.kind==="base64"?n={kind:"base64",media_type:t.mediaType,data:t.data}:t.kind==="file"?n={kind:"file",file_id:t.fileId}:n={kind:"url",url:t.url,id:t.id},{type:e.type,source:n}}case"file":return{type:"file",file_id:e.fileId,name:e.name,media_type:e.mediaType,size:e.size};case"thinking":return{type:"thinking",thinking:e.thinking,signature:e.signature};case"unknown":return e.raw}}function ny(e){return{content:e.content.map(ty),metadata:e.metadata,agent_id:e.agentId,model:e.model,thinking:e.thinking,permission_mode:e.permissionMode,plan_mode:e.planMode,swarm_mode:e.swarmMode,supermoon_mode:e.supermoonMode,goal_objective:e.goalObjective,goal_control:e.goalControl}}function sy(e){return{decision:e.decision,scope:e.scope,feedback:e.feedback,selected_label:e.selectedLabel}}function Nu(e){return{approvalId:e.approval_id,sessionId:e.session_id,turnId:e.turn_id,toolCallId:e.tool_call_id,toolName:e.tool_name,action:e.action,display:e.tool_input_display??e.display,expiresAt:e.expires_at,createdAt:e.created_at}}function oy(e){return{id:e.id,label:e.label,description:e.description,recommended:e.recommended===!0||e.is_recommended===!0}}function iy(e){return{id:e.id,question:e.question,header:e.header,body:e.body,options:e.options.map(oy),multiSelect:e.multi_select,allowOther:e.allow_other,otherLabel:e.other_label,otherDescription:e.other_description}}function qu(e){return{questionId:e.question_id,sessionId:e.session_id,turnId:e.turn_id,toolCallId:e.tool_call_id,questions:e.questions.map(iy),createdAt:e.created_at}}function ay(e){switch(e.kind){case"single":return{kind:"single",option_id:e.optionId};case"multi":return{kind:"multi",option_ids:e.optionIds};case"other":return{kind:"other",text:e.text};case"multiWithOther":return{kind:"multi_with_other",option_ids:e.optionIds,other_text:e.otherText};case"skipped":return{kind:"skipped"}}}function ly(e){const t={};for(const[n,s]of Object.entries(e.answers))t[n]=ay(s);return{answers:t,method:e.method,note:e.note}}function _i(e){return{id:e.id,sessionId:e.session_id,kind:e.kind,description:e.description,status:e.status,command:e.command,createdAt:e.created_at,startedAt:e.started_at,completedAt:e.completed_at,outputPreview:e.output_preview,outputBytes:e.output_bytes,subagentPhase:e.subagent_phase,subagentType:e.subagent_type,model:e.model,thinkingEffort:e.thinking_effort,parentToolCallId:e.parent_tool_call_id,suspendedReason:e.suspended_reason,swarmIndex:e.swarm_index,runInBackground:e.run_in_background??(e.kind==="subagent"?!0:void 0)}}function Yl(e){return{path:e.path,name:e.name,kind:e.kind,size:e.size,modifiedAt:e.modified_at,etag:e.etag,mime:e.mime,languageId:e.language_id,isBinary:e.is_binary,isSymlinkTo:e.is_symlink_to,gitStatus:e.git_status,childCount:e.child_count}}function Rs(e,t){const n=e[t];return typeof n=="string"?n:void 0}function bo(e,t){const n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:void 0}function Wn(e,t){const n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:null}function Wu(e){if(!e||typeof e!="object")return null;const t=e,n=Rs(t,"status");if(n!=="active"&&n!=="paused"&&n!=="blocked"&&n!=="complete")return null;const s=t.budget,o=s&&typeof s=="object"?s:{};return{goalId:Rs(t,"goalId")??Rs(t,"goal_id")??"goal",objective:Rs(t,"objective")??"",completionCriterion:Rs(t,"completionCriterion")??Rs(t,"completion_criterion"),status:n,turnsUsed:bo(t,"turnsUsed")??bo(t,"turns_used")??0,tokensUsed:bo(t,"tokensUsed")??bo(t,"tokens_used")??0,wallClockMs:bo(t,"wallClockMs")??bo(t,"wall_clock_ms")??0,terminalReason:Rs(t,"terminalReason")??Rs(t,"terminal_reason"),budget:{tokenBudget:Wn(o,"tokenBudget")??Wn(o,"token_budget"),remainingTokens:Wn(o,"remainingTokens")??Wn(o,"remaining_tokens"),turnBudget:Wn(o,"turnBudget")??Wn(o,"turn_budget"),remainingTurns:Wn(o,"remainingTurns")??Wn(o,"remaining_turns"),wallClockBudgetMs:Wn(o,"wallClockBudgetMs")??Wn(o,"wall_clock_budget_ms"),remainingWallClockMs:Wn(o,"remainingWallClockMs")??Wn(o,"remaining_wall_clock_ms"),overBudget:o.overBudget===!0||o.over_budget===!0}}}function ry(e){const t=e;switch(e.type){case"event.session.created":return{type:"sessionCreated",session:Yn(t.payload.session)};case"event.session.updated":return{type:"sessionUpdated",session:Yn(t.payload.session),changedFields:t.payload.changed_fields};case"event.session.deleted":return{type:"sessionDeleted",sessionId:t.session_id};case"event.workspace.created":return{type:"workspaceCreated",workspace:Go(t.payload.workspace)};case"event.workspace.updated":return{type:"workspaceUpdated",workspace:Go(t.payload.workspace)};case"event.workspace.deleted":return{type:"workspaceDeleted",workspaceId:t.payload.workspace_id,root:t.payload.root};case"event.session.work_changed":return{type:"sessionWorkChanged",sessionId:t.session_id,busy:t.payload.busy,mainTurnActive:t.payload.main_turn_active,pendingInteraction:t.payload.pending_interaction,lastTurnReason:t.payload.last_turn_reason};case"event.session.status_changed":return{type:"sessionWorkChanged",sessionId:t.session_id,busy:t.payload.status!=="idle"&&t.payload.status!=="aborted",mainTurnActive:t.payload.status!=="idle"&&t.payload.status!=="aborted",pendingInteraction:t.payload.status==="awaiting_approval"?"approval":t.payload.status==="awaiting_question"?"question":"none",lastTurnReason:t.payload.status==="aborted"?"cancelled":void 0};case"event.session.usage_updated":return{type:"sessionUsageUpdated",sessionId:t.session_id,usage:Fu(t.payload.usage)};case"event.session.history_compacted":return{type:"historyCompacted",sessionId:t.session_id,beforeSeq:t.payload.before_seq,reason:t.payload.reason,summaryMessageId:t.payload.summary_message_id};case"event.goal.updated":{const n=Wu(t.payload.snapshot??null);return{type:"goalUpdated",sessionId:t.session_id,goal:n?.status==="complete"?null:n}}case"event.message.created":return{type:"messageCreated",message:Ta(t.payload.message)};case"event.message.updated":return{type:"messageUpdated",sessionId:t.session_id,messageId:t.payload.message_id,content:t.payload.content.map(il),status:t.payload.status};case"event.assistant.delta":return{type:"assistantDelta",sessionId:t.session_id,messageId:t.payload.message_id,contentIndex:t.payload.content_index,delta:t.payload.delta};case"event.assistant.tool_use_started":case"event.assistant.tool_use_delta":case"event.assistant.tool_use_completed":case"event.assistant.completed":case"event.tool.started":return{type:"unknown",raw:{_noop:!0,_wireType:t.type}};case"event.tool.output":return{type:"toolOutput",sessionId:t.session_id,toolCallId:t.payload.tool_call_id,outputChunk:t.payload.chunk,stream:t.payload.stream};case"event.tool.progress":return typeof t.payload.message=="string"&&t.payload.message.length>0?{type:"toolOutput",sessionId:t.session_id,toolCallId:t.payload.tool_call_id,outputChunk:t.payload.message,stream:"stdout"}:{type:"unknown",raw:{_noop:!0,_wireType:t.type}};case"event.tool.completed":return{type:"unknown",raw:{_noop:!0,_wireType:t.type}};case"event.approval.requested":return{type:"approvalRequested",sessionId:t.session_id,approval:Nu(t.payload)};case"event.approval.resolved":return{type:"approvalResolved",sessionId:t.session_id,approvalId:t.payload.approval_id,decision:t.payload.decision,resolvedAt:t.payload.resolved_at};case"event.approval.expired":return{type:"approvalExpired",sessionId:t.session_id,approvalId:t.payload.approval_id};case"event.question.requested":return{type:"questionRequested",sessionId:t.session_id,question:qu(t.payload)};case"event.question.answered":return{type:"questionAnswered",sessionId:t.session_id,questionId:t.payload.question_id,resolvedAt:t.payload.resolved_at};case"event.question.dismissed":return{type:"questionDismissed",sessionId:t.session_id,questionId:t.payload.question_id,dismissedAt:t.payload.dismissed_at};case"event.task.created":return{type:"taskCreated",sessionId:t.session_id,task:_i(t.payload.task)};case"event.task.progress":return{type:"taskProgress",sessionId:t.session_id,taskId:t.payload.task_id,outputChunk:t.payload.output_chunk,stream:t.payload.stream};case"event.task.completed":return{type:"taskCompleted",sessionId:t.session_id,taskId:t.payload.task_id,status:t.payload.status,outputPreview:t.payload.output_preview,outputBytes:t.payload.output_bytes};case"event.config.changed":return{type:"configChanged",changedFields:t.payload.changed_fields,config:Pa(t.payload.config)};case"event.model_catalog.changed":return{type:"modelCatalogChanged",changed:t.payload.changed.map(n=>({providerId:n.provider_id,providerName:n.provider_name,added:n.added,removed:n.removed})),unchanged:t.payload.unchanged,failed:t.payload.failed};case"event.plugin.changed":return{type:"pluginsChanged"};case"event.capability.changed":return{type:"capabilityChanged",capabilityId:t.payload.capability_id,install:fy(t.payload.install)};default:return{type:"unknown",raw:e}}}function uy(e){return{id:e.model,provider:e.provider,model:e.model,displayName:e.display_name,maxContextSize:e.max_context_size,capabilities:e.capabilities,supportEfforts:e.support_efforts,defaultEffort:e.default_effort}}function vi(e){return{id:e.id,type:e.type,baseUrl:e.base_url,defaultModel:e.default_model,hasApiKey:e.has_api_key,status:e.status,models:e.models}}function cy(e){return{id:e.id,name:e.name,maxContextSize:e.max_context_size,capabilities:e.capabilities,reasoning:e.reasoning}}function dy(e){return{id:e.id,name:e.name,wireType:e.wire_type,guessed:e.guessed,needsBaseUrl:e.needs_base_url,rejected:e.rejected,rejectReason:e.reject_reason,envKey:e.env_key,models:e.models.map(cy)}}function Pa(e){const t={};for(const[n,s]of Object.entries(e.providers))t[n]={type:s.type,baseUrl:s.base_url,defaultModel:s.default_model,hasApiKey:s.has_api_key};return{providers:t,defaultProvider:e.default_provider,defaultModel:e.default_model,models:e.models,thinking:e.thinking,planMode:e.plan_mode,yolo:e.yolo,defaultPermissionMode:e.default_permission_mode,defaultPlanMode:e.default_plan_mode,permission:e.permission,hooks:e.hooks,services:e.services,mergeAllAvailableSkills:e.merge_all_available_skills,extraSkillDirs:e.extra_skill_dirs,loopControl:e.loop_control,background:e.background,experimental:e.experimental,telemetry:e.telemetry,raw:e.raw}}function Zl(e){return K0(e)}function py(e){return Z0(e)}function fy(e){return{running:e.running===!0,step:e.step,percent:typeof e.percent=="number"&&Number.isFinite(e.percent)?e.percent:void 0,error:e.error,note:e.note}}function Xl(e){return X0(e)}function my(e){return e.session_id}function vy(e){return e.seq}const hy="main",gy=new Set(["turn.started","turn.step.started","turn.step.completed","turn.step.retrying","turn.step.interrupted","turn.ended","thinking.delta","assistant.delta","tool.use","tool.call.started","tool.call.delta","tool.progress","tool.result","agent.status.updated","prompt.completed","prompt.aborted","error"]);function _s(e="msg_"){const t=Date.now().toString(36).padStart(10,"0"),n=Math.random().toString(36).slice(2,12).padEnd(10,"0");return`${e}${t}${n}`}function yy(e){if(!e||typeof e!="object")return{input:0,output:0,cacheRead:0,cacheCreate:0};const t=e;return{input:t.inputOther??t.input_tokens??0,output:t.output??t.output_tokens??0,cacheRead:t.inputCacheRead??t.cache_read_input_tokens??0,cacheCreate:t.inputCacheCreation??t.cache_creation_input_tokens??0}}function Jl(){return{turnPromptId:new Map,currentPromptId:void 0,currentAssistantMsgId:void 0,turnTextLen:0,turnThinkLen:0,toolStartTimes:new Map,totalInput:0,totalOutput:0,totalCacheRead:0,totalCacheCreate:0,contextTokens:0,contextLimit:0,turnCount:0,model:"",messages:[],subagentMeta:new Map,retryReuseMsgId:void 0}}function Sn(e,t){const n=e[t];return typeof n=="string"?n:void 0}function Ys(e,t){const n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:void 0}function Hn(e,t){const n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:null}function ky(e){if(!e||typeof e!="object")return null;const t=e,n=t.budget,s=n&&typeof n=="object"?n:{},o=Sn(t,"status");if(o!=="active"&&o!=="paused"&&o!=="blocked"&&o!=="complete")return null;const i=Sn(t,"goalId")??Sn(t,"goal_id")??"goal",u=Sn(t,"objective")??"";return{goalId:i,objective:u,completionCriterion:Sn(t,"completionCriterion")??Sn(t,"completion_criterion"),status:o,turnsUsed:Ys(t,"turnsUsed")??Ys(t,"turns_used")??0,tokensUsed:Ys(t,"tokensUsed")??Ys(t,"tokens_used")??0,wallClockMs:Ys(t,"wallClockMs")??Ys(t,"wall_clock_ms")??0,terminalReason:Sn(t,"terminalReason")??Sn(t,"terminal_reason"),budget:{tokenBudget:Hn(s,"tokenBudget")??Hn(s,"token_budget"),remainingTokens:Hn(s,"remainingTokens")??Hn(s,"remaining_tokens"),turnBudget:Hn(s,"turnBudget")??Hn(s,"turn_budget"),remainingTurns:Hn(s,"remainingTurns")??Hn(s,"remaining_turns"),wallClockBudgetMs:Hn(s,"wallClockBudgetMs")??Hn(s,"wall_clock_budget_ms"),remainingWallClockMs:Hn(s,"remainingWallClockMs")??Hn(s,"remaining_wall_clock_ms"),overBudget:s.overBudget===!0||s.over_budget===!0}}}function eo(e,t,n,s){if(typeof n!="string"||n.length===0)return null;const i={...e.subagentMeta.get(n)??{id:n,sessionId:t,kind:"subagent",description:"Sub Agent",status:"running",createdAt:new Date().toISOString(),subagentPhase:"queued"},...s,id:n,sessionId:t,kind:"subagent"};return e.subagentMeta.set(n,i),i}function by(e,t){if(e==="turn.step.started")return null;if(e==="tool.use"||e==="tool.call.started"){const n=Sn(t,"name")??Sn(t,"toolName")??"tool",s=Vs(wy(n)),o=Sy(n,t.args??t.input);return o?`Calling ${s}: ${o}`:`Calling ${s}`}if(e==="tool.progress"){const n=t.update;if(n&&typeof n=="object"){const o=Sn(n,"text");if(o)return ra(o);const i=Sn(n,"message");if(i)return ra(i)}const s=Sn(t,"message");if(s)return ra(s)}return null}function wy(e){return e.replace(/_\d+$/,"")}const er=2e3;function ra(e){return e.length>er?`${e.slice(0,er)}…`:e}function Sy(e,t){if(t==null)return"";const n=typeof t=="string"?t:JSON.stringify(t);return lo(e,n)}function Cy(e,t,n,s,o,i){if(i.has(n)&&s==="turn.step.started")return[];if(s==="assistant.delta"){const w=Sn(o,"delta");if(!w)return[];const I=e.subagentMeta.get(n),v=eo(e,t,n,{status:"running",subagentPhase:"working",startedAt:I?.startedAt??new Date().toISOString()}),f=[];return v&&f.push({type:"taskCreated",sessionId:t,task:v}),f.push({type:"taskProgress",sessionId:t,taskId:n,outputChunk:w,stream:"stdout",kind:"text"}),f}const u=by(s,o);if(u===null||u.length===0)return[];const p=e.subagentMeta.get(n),m=eo(e,t,n,{status:"running",subagentPhase:"working",startedAt:p?.startedAt??new Date().toISOString()}),h=[];return m&&h.push({type:"taskCreated",sessionId:t,task:m}),h.push({type:"taskProgress",sessionId:t,taskId:n,outputChunk:u,stream:"stdout"}),h}function Fo(e){return{...e,content:e.content.map(t=>({...t}))}}function tr(e,t,n){const s={id:_s("msg_"),sessionId:t,role:"assistant",content:[],createdAt:new Date().toISOString(),promptId:n};return e.messages.push(s),s}function _y(e,t,n,s,o,i){const u={id:s,sessionId:t,role:"user",content:o,createdAt:i,promptId:n};return e.messages.push(u),u}function $y(e){return Array.isArray(e)?e.map(t=>il(t)):[]}function nr(e,t,n,s){const o=e.messages.find(u=>u.id===t);if(!o)return-1;const i=o.content.at(-1);return i&&i.type===n?(n==="text"?i.text+=s:i.thinking+=s,o.content.length-1):(o.content.push(n==="text"?{type:"text",text:s}:{type:"thinking",thinking:s}),o.content.length-1)}function My(e,t,n,s,o,i){const u=e.messages.find(p=>p.id===t);u&&u.content.push({type:"toolUse",toolCallId:n,toolName:s,input:o,outputLines:i})}function xy(e){const t=e.update,n=t&&typeof t=="object"?t:null,o=(n?.stream??n?.kind??e.stream)==="stderr"?"stderr":"stdout",i=typeof n?.text=="string"&&n.text||typeof n?.message=="string"&&n.message||typeof e.chunk=="string"&&e.chunk||typeof e.output=="string"&&e.output||typeof e.message=="string"&&e.message||"";return i.length>0?{outputChunk:i,stream:o}:null}function sr(e,t){e.messages.find(n=>n.id===t)}function Iy(e,t,n,s,o,i){const u={id:_s("msg_"),sessionId:t,role:"tool",content:[{type:"toolResult",toolCallId:n,output:s,isError:o}],createdAt:new Date().toISOString(),promptId:i};return e.messages.push(u),u}function No(e,t){return e.messages.find(n=>n.id===t)}function or(e){return{inputTokens:e.totalInput,outputTokens:e.totalOutput,cacheReadTokens:e.totalCacheRead,cacheCreationTokens:e.totalCacheCreate,totalCostUsd:0,contextTokens:e.contextTokens,contextLimit:e.contextLimit,turnCount:e.turnCount}}function Ay(){const e=new Map,t=new Set;function n(I){let v=e.get(I);return v||(v=Jl(),e.set(I,v)),v}function s(I){e.set(I,Jl())}function o(I){e.delete(I)}function i(I){t.add(I)}function u(I,v){const f=n(I);f.currentPromptId=v}function p(I,v){s(I);const f=n(I),_=v.promptId??_s("pr_");f.currentPromptId=_,f.turnPromptId.set(v.turnId,_);const g=tr(f,I,_);v.thinkingText.length>0&&g.content.push({type:"thinking",thinking:v.thinkingText}),v.assistantText.length>0&&g.content.push({type:"text",text:v.assistantText});for(const b of v.runningTools){const y=typeof b.lastProgress?.text=="string"&&b.lastProgress.text.length>0?[b.lastProgress.text]:void 0;g.content.push({type:"toolUse",toolCallId:b.toolCallId,toolName:b.name,input:b.args??{},outputLines:y}),f.toolStartTimes.set(b.toolCallId,Date.now())}return f.currentAssistantMsgId=g.id,f.turnTextLen=v.assistantText.length,f.turnThinkLen=v.thinkingText.length,[{type:"messageCreated",message:Fo(g)}]}function m(I,v,f,_){try{return w(I,v,f,_)}catch(g){return console.error("[agentProjector] Error projecting event:",I,g instanceof Error?g.message:g),[]}}function h(I,v){return v===void 0?"append":vI?"gap":"append"}function w(I,v,f,_){const g=n(f),b=v,y=[],E=b?.agentId;if(typeof E=="string"&&E!==hy){const S=t.has(E);if(S&&(I==="thinking.delta"||I==="assistant.delta")){const O=b?.delta??"";return O?[{type:"agentDelta",sessionId:f,agentId:E,delta:{[I==="thinking.delta"?"thinking":"text"]:O}}]:[]}if(S&&I==="turn.ended")return[{type:"agentTurnEnded",sessionId:f,agentId:E,reason:b?.reason}];if(gy.has(I))return Cy(g,f,E,I,b??{},t)}switch(I){case"session.meta.updated":{const S=b?.patch?.title??b?.title,O=b?.patch?.lastPrompt,D={};typeof S=="string"&&S.length>0&&(D.title=S),typeof O=="string"&&(D.lastPrompt=O),(D.title!==void 0||D.lastPrompt!==void 0)&&y.push({type:"sessionMetaUpdated",sessionId:f,...D});break}case"prompt.submitted":{const S=b?.promptId,O=b?.userMessageId;if(!S||!O)break;const D=$y(b?.content);if(D.length===0)break;g.currentPromptId=S;const T=_y(g,f,S,O,D,typeof b?.createdAt=="string"?b.createdAt:new Date().toISOString());y.push({type:"messageCreated",message:Fo(T)});break}case"turn.started":{const S=b?.turnId,O=g.currentPromptId??_s("pr_");g.currentPromptId=O,S!==void 0&&g.turnPromptId.set(S,O),g.turnTextLen=0,g.turnThinkLen=0,y.push({type:"turnActiveChanged",sessionId:f,active:!0});break}case"turn.step.started":{const S=b?.turnId;let O=g.turnPromptId.get(S)??g.currentPromptId;if(O||(O=_s("pr_"),g.currentPromptId=O,S!==void 0&&g.turnPromptId.set(S,O)),g.turnTextLen=0,g.turnThinkLen=0,g.retryReuseMsgId!==void 0){const T=g.retryReuseMsgId;if(g.retryReuseMsgId=void 0,No(g,T)!==void 0){g.currentAssistantMsgId=T;break}}const D=tr(g,f,O);g.currentAssistantMsgId=D.id,y.push({type:"messageCreated",message:Fo(D)});break}case"thinking.delta":{const S=g.currentAssistantMsgId;if(!S)break;const O=b?.delta??"";if(!O)break;_?.offset===0&&g.turnThinkLen>0&&(g.turnThinkLen=0);const D=h(g.turnThinkLen,_?.offset);if(D==="skip")break;if(D==="gap"){y.push({type:"historyCompacted",sessionId:f,beforeSeq:0,reason:"delta_gap"});break}const T=nr(g,S,"thinking",O);if(T<0)break;g.turnThinkLen+=O.length,y.push({type:"assistantDelta",sessionId:f,messageId:S,contentIndex:T,delta:{thinking:O}});break}case"assistant.delta":{const S=g.currentAssistantMsgId;if(!S)break;const O=b?.delta??"";if(!O)break;_?.offset===0&&g.turnTextLen>0&&(g.turnTextLen=0);const D=h(g.turnTextLen,_?.offset);if(D==="skip")break;if(D==="gap"){y.push({type:"historyCompacted",sessionId:f,beforeSeq:0,reason:"delta_gap"});break}const T=nr(g,S,"text",O);if(T<0)break;g.turnTextLen+=O.length,y.push({type:"assistantDelta",sessionId:f,messageId:S,contentIndex:T,delta:{text:O}});break}case"tool.use":case"tool.call.started":{const S=g.currentAssistantMsgId,O=b?.turnId,D=g.turnPromptId.get(O)??g.currentPromptId;if(!S||!D)break;const T=b?.toolCallId,L=b?.name??b?.toolName??"",F=b?.args??b?.input??{};My(g,S,T,L,F);const H=No(g,S);H&&H.content.length-1,g.toolStartTimes.set(T,Date.now()),H&&y.push({type:"messageUpdated",sessionId:f,messageId:S,content:H.content.map(k=>({...k})),status:"pending"});break}case"tool.call.delta":break;case"tool.progress":{const S=b?.toolCallId,O=xy(b??{});S&&O&&y.push({type:"toolOutput",sessionId:f,toolCallId:S,outputChunk:O.outputChunk,stream:O.stream});break}case"tool.result":{const S=b?.turnId;let O=g.turnPromptId.get(S)??g.currentPromptId;O||(O=_s("pr_"),g.currentPromptId=O,S!==void 0&&g.turnPromptId.set(S,O));const D=b?.toolCallId,T=b?.output,L=b?.isError??!1;g.toolStartTimes.get(D)??Date.now(),g.toolStartTimes.delete(D);const F=Iy(g,f,D,T,L,O);y.push({type:"messageCreated",message:Fo(F)}),g.currentAssistantMsgId=void 0;break}case"turn.step.completed":{const S=g.currentAssistantMsgId,O=yy(b?.usage);if(g.totalInput+=O.input,g.totalOutput+=O.output,g.totalCacheRead+=O.cacheRead,g.totalCacheCreate+=O.cacheCreate,S){sr(g,S);const D=No(g,S);D&&y.push({type:"messageUpdated",sessionId:f,messageId:S,content:D.content.map(T=>({...T})),status:"completed"})}break}case"agent.status.updated":{b?.model&&(g.model=b.model),b?.contextTokens!==void 0&&(g.contextTokens=b.contextTokens),b?.maxContextTokens!==void 0&&(g.contextLimit=b.maxContextTokens),y.push({type:"sessionUsageUpdated",sessionId:f,usage:or(g),model:g.model||void 0,swarmMode:b?.swarmMode===!0?!0:b?.swarmMode===!1?!1:void 0,planMode:b?.planMode===!0?!0:b?.planMode===!1?!1:void 0,supermoonMode:b?.supermoonMode===!0?!0:b?.supermoonMode===!1?!1:void 0,thinking:typeof b?.thinkingEffort=="string"&&b.thinkingEffort.length>0?b.thinkingEffort:void 0});break}case"turn.ended":{const S=g.currentAssistantMsgId,O=b?.reason??"completed",D=Ys(b??{},"durationMs");if(y.push({type:"turnActiveChanged",sessionId:f,active:!1,reason:b?.reason}),S){sr(g,S);const F=No(g,S);F&&y.push({type:"messageUpdated",sessionId:f,messageId:S,content:F.content.map(H=>({...H})),status:O==="failed"||O==="blocked"?"error":"completed",durationMs:D})}g.turnCount++;const T=or(g);y.push({type:"sessionUsageUpdated",sessionId:f,usage:T});const L=b?.error;if(O==="failed"&&L!==void 0&&typeof L.message=="string"&&L.message.length>0){const F=typeof b?.turnId=="number"?b.turnId:void 0,H=(F!==void 0?g.turnPromptId.get(F):void 0)??g.currentPromptId;y.push({type:"messageCreated",message:{id:`turnerror_${f}_${F??"unknown"}`,sessionId:f,role:"assistant",content:[{type:"text",text:L.message}],createdAt:new Date().toISOString(),promptId:H,metadata:{[Bu]:{code:typeof L.code=="string"?L.code:void 0,message:L.message}}}})}g.currentAssistantMsgId=void 0,g.currentPromptId=void 0,g.turnTextLen=0,g.turnThinkLen=0,g.retryReuseMsgId=void 0;break}case"prompt.completed":{const S=b?.promptId;typeof S=="string"&&S.length>0&&y.push({type:"promptCompleted",sessionId:f,promptId:S,reason:b?.reason??"completed"});break}case"prompt.aborted":{const S=b?.promptId;typeof S=="string"&&S.length>0&&y.push({type:"promptAborted",sessionId:f,promptId:S});break}case"turn.step.retrying":{const S=g.currentAssistantMsgId;if(S!==void 0){const O=No(g,S);O!==void 0&&(O.content=O.content.filter(D=>D.type!=="text"&&D.type!=="thinking"&&D.type!=="toolUse"),y.push({type:"messageUpdated",sessionId:f,messageId:S,content:O.content.map(D=>({...D})),status:"pending"}),g.retryReuseMsgId=S)}g.turnTextLen=0,g.turnThinkLen=0,g.toolStartTimes.clear();break}case"turn.step.interrupted":{g.currentAssistantMsgId=void 0,g.retryReuseMsgId=void 0;break}case"subagent.spawned":{const O={id:typeof b?.subagentId=="string"&&b.subagentId.length>0?b.subagentId:_s("task_"),sessionId:f,kind:"subagent",description:typeof b?.description=="string"?b.description:b?.subagentName??"Sub Agent",status:"running",createdAt:new Date().toISOString(),subagentPhase:"queued",subagentType:typeof b?.subagentName=="string"?b.subagentName:void 0,parentToolCallId:typeof b?.parentToolCallId=="string"?b.parentToolCallId:void 0,swarmIndex:typeof b?.swarmIndex=="number"?b.swarmIndex:void 0,runInBackground:b?.runInBackground===!0};g.subagentMeta.set(O.id,O),y.push({type:"taskCreated",sessionId:f,task:O});break}case"subagent.started":{const S=eo(g,f,b?.subagentId,{subagentPhase:"working",status:"running",startedAt:new Date().toISOString()});S&&y.push({type:"taskCreated",sessionId:f,task:S});break}case"subagent.suspended":{const S=eo(g,f,b?.subagentId,{subagentPhase:"suspended",status:"running",suspendedReason:typeof b?.reason=="string"?b.reason:void 0});S&&y.push({type:"taskCreated",sessionId:f,task:S});break}case"subagent.completed":{const S=typeof b?.resultSummary=="string"?b.resultSummary:void 0,O=eo(g,f,b?.subagentId,{subagentPhase:"completed",status:"completed",completedAt:new Date().toISOString(),outputPreview:S});O&&y.push({type:"taskCreated",sessionId:f,task:O}),y.push({type:"taskCompleted",sessionId:f,taskId:b?.subagentId??"",status:"completed",outputPreview:S});break}case"subagent.failed":{const S=typeof b?.error=="string"?b.error:void 0,O=eo(g,f,b?.subagentId,{subagentPhase:"failed",status:"failed",completedAt:new Date().toISOString(),outputPreview:S});O&&y.push({type:"taskCreated",sessionId:f,task:O}),y.push({type:"taskCompleted",sessionId:f,taskId:b?.subagentId??"",status:"failed",outputPreview:S});break}case"error":{y.push({type:"unknown",raw:{_agentError:!0,code:b?.code,message:b?.message,name:b?.name,details:b?.details,retryable:b?.retryable}});break}case"warning":{y.push({type:"unknown",raw:{_agentWarning:!0,message:b?.message}});break}case"task.started":{const S=b?.info??{},O=typeof S.startedAt=="number"?new Date(S.startedAt).toISOString():void 0,D=typeof S.taskId=="string"?S.taskId:typeof S.taskId=="number"?String(S.taskId):_s("task_"),T=typeof S.description=="string"?S.description:typeof S.command=="string"?S.command:dt.global.t("tasks.defaultDescription");if(S.kind==="agent"){const F=typeof S.agentId=="string"&&S.agentId.length>0?S.agentId:void 0;if(F!==void 0){const H=eo(g,f,F,{description:T,backgroundTaskId:D,runInBackground:!0});H&&y.push({type:"taskCreated",sessionId:f,task:H})}else y.push({type:"taskCreated",sessionId:f,task:{id:D,sessionId:f,kind:"subagent",description:T,status:"running",createdAt:O??new Date().toISOString(),startedAt:O,subagentPhase:"queued",runInBackground:!0}});break}const L=typeof S.command=="string"?S.command:void 0;y.push({type:"taskCreated",sessionId:f,task:{id:D,sessionId:f,kind:"bash",description:T,command:L,status:"running",createdAt:O??new Date().toISOString(),startedAt:O,outputPreview:L!==void 0?`$ ${L}`:void 0}});break}case"task.terminated":{const S=b?.info??{},O=S.status==="failed"||typeof S.exitCode=="number"&&S.exitCode!==0;y.push({type:"taskCompleted",sessionId:f,taskId:typeof S.taskId=="string"?S.taskId:typeof S.taskId=="number"?String(S.taskId):"",status:O?"failed":"completed"});break}case"compaction.completed":{const S=b?.result??{};y.push({type:"compactionCompleted",sessionId:f,tokensBefore:typeof S.tokensBefore=="number"?S.tokensBefore:void 0,tokensAfter:typeof S.tokensAfter=="number"?S.tokensAfter:void 0,summary:typeof S.summary=="string"?S.summary:void 0}),y.push({type:"historyCompacted",sessionId:f,beforeSeq:0,reason:"auto_compact"});break}case"compaction.started":{y.push({type:"compactionStarted",sessionId:f,trigger:b?.trigger==="manual"?"manual":"auto",instruction:typeof b?.instruction=="string"?b.instruction:void 0});break}case"compaction.cancelled":{y.push({type:"compactionCancelled",sessionId:f});break}case"goal.updated":{const S=ky(b?.snapshot??null);y.push({type:"goalUpdated",sessionId:f,goal:S?.status==="complete"?null:S});break}case"cron.fired":{const S=b?.origin,O=Sn(b??{},"prompt");if(S&&typeof S=="object"&&S.kind==="cron_job"&&O){const D={id:_s("cron_"),sessionId:f,role:"user",content:[{type:"text",text:O}],createdAt:new Date().toISOString(),metadata:{origin:S}};g.messages.push(D),y.push({type:"messageCreated",message:Fo(D)})}break}}return y}return{project:m,bindNextPromptId:u,seedInFlight:p,reset:s,disposeSession:o,markSideChannelAgent:i}}const Ty=new Set(["server_hello","ack","ping","resync_required","error","pong"]),ir=new Set(["turn.started","turn.step.started","turn.step.completed","turn.step.retrying","turn.step.interrupted","turn.ended","thinking.delta","assistant.delta","tool.call.started","tool.use","tool.call.delta","tool.progress","tool.result","agent.status.updated","prompt.submitted","prompt.completed","prompt.aborted","session.meta.updated","compaction.started","compaction.completed","compaction.cancelled","goal.updated","error","warning","subagent.spawned","subagent.started","subagent.suspended","subagent.completed","subagent.failed","task.started","task.terminated","background.task.started","background.task.terminated","cron.fired"]),Py=new Set(["session.created","session.updated","session.deleted","session.status_changed","session.usage_updated","session.history_compacted","message.created","message.updated","approval.requested","approval.resolved","approval.expired","question.requested","question.answered","question.dismissed","task.created","task.progress","task.completed","assistant.tool_use_started","assistant.tool_use_delta","assistant.tool_use_completed","assistant.completed","tool.started","tool.output","tool.completed","plugin.changed","capability.changed"]),Ey=new Set(["assistant.delta","thinking.delta"]);function Ly(e,t){if(Ty.has(e))return{route:"ignore"};const n=e.startsWith("event."),s=n?e.slice(6):e;return Ey.has(s)?By(t)?{route:"agent",agentType:s}:{route:"protocol"}:n?Py.has(s)?{route:"protocol"}:ir.has(s)?{route:"agent",agentType:s}:{route:"protocol"}:ir.has(s)?{route:"agent",agentType:s}:{route:"agent",agentType:s}}function By(e){if(!e||typeof e!="object")return!1;const t=e;return"message_id"in t||"content_index"in t?!1:typeof t.delta=="string"}class jo extends Error{code;requestId;details;timestamp;durationMs;constructor(t){super(t.msg),this.name="DaemonApiError",this.code=t.code,this.requestId=t.requestId,this.details=t.details,this.timestamp=t.timestamp,this.durationMs=t.durationMs}}class ws extends Error{cause;method;path;url;requestId;phase;timeoutMs;status;statusText;contentType;bodyPreview;timestamp;durationMs;constructor(t){super(t.message),this.name="DaemonNetworkError",this.cause=t.cause,this.method=t.method,this.path=t.path,this.url=t.url,this.requestId=t.requestId,this.phase=t.phase,this.timeoutMs=t.timeoutMs,this.status=t.status,this.statusText=t.statusText,this.contentType=t.contentType,this.bodyPreview=t.bodyPreview,this.timestamp=t.timestamp,this.durationMs=t.durationMs}}function _n(e){return e instanceof jo||typeof e=="object"&&e!==null&&e.name==="DaemonApiError"&&typeof e.code=="number"}function al(e){return e instanceof ws||typeof e=="object"&&e!==null&&e.name==="DaemonNetworkError"&&typeof e.method=="string"&&typeof e.path=="string"}const rn="kimi-web.server-credential",Ry="token",Oy=10080*60*1e3;let Is;const Ea=new Set;function Dy(){if(typeof window>"u")return;const e=window.location.hash??"";if(!e.startsWith("#"))return;const n=new URLSearchParams(e.slice(1)).get(Ry);if(!n)return;const s=new URL(window.location.href);return s.hash="",window.history.replaceState(window.history.state,"",`${s.pathname}${s.search}`),n}function La(e){return{version:1,credential:e,expiresAt:Date.now()+Oy}}function zy(e){return JSON.stringify(e)}function ll(e){try{const t=JSON.parse(e);if(typeof t!="object"||t===null)return;const n=t;return n.version!==1||typeof n.credential!="string"||n.credential.length===0||typeof n.expiresAt!="number"||!Number.isFinite(n.expiresAt)?void 0:{version:1,credential:n.credential,expiresAt:n.expiresAt}}catch{return}}function Ba(e){globalThis.localStorage?.setItem(rn,zy(e))}function Fy(){try{const e=globalThis.localStorage?.getItem(rn);if(e){const n=ll(e);if(n===void 0){const s=La(e);let o=!1;try{Ba(s),o=!0}catch{}if(!o)try{globalThis.localStorage?.getItem(rn)===e&&globalThis.localStorage?.removeItem(rn),o=!0}catch{}try{globalThis.sessionStorage?.removeItem(rn)}catch{}return o?s:void 0}if(n.expiresAt>Date.now())return n;globalThis.sessionStorage?.removeItem(rn),globalThis.localStorage?.getItem(rn)===e&&globalThis.localStorage?.removeItem(rn);return}const t=globalThis.sessionStorage?.getItem(rn);if(t){const n=La(t);let s=!1;try{Ba(n),s=!0}catch{}try{globalThis.sessionStorage?.removeItem(rn),s=!0}catch{}return s?n:void 0}return}catch{return}}function Ny(){if(Is=Fy(),si()!==void 0)return!0;const e=Dy();return e?(Hu(e),!0):!1}function si(){if(Is!==void 0){if(Is.expiresAt<=Date.now()){qy(Is);return}return Is.credential}}function qy(e){Is=void 0;try{globalThis.sessionStorage?.removeItem(rn);const t=globalThis.localStorage?.getItem(rn),n=t==null?void 0:ll(t);(n===void 0?t===e.credential:n.credential===e.credential&&n.expiresAt===e.expiresAt)&&globalThis.localStorage?.removeItem(rn)}catch{}}function Hu(e){const t=La(e);Is=t;try{Ba(t)}catch{}try{globalThis.sessionStorage?.removeItem(rn)}catch{}}function Wy(){const e=Is;Is=void 0;try{const t=globalThis.localStorage?.getItem(rn),s=(t==null?void 0:ll(t))?.credential??t;e!==void 0&&s===e.credential&&globalThis.localStorage?.removeItem(rn),globalThis.sessionStorage?.removeItem(rn)}catch{}}function Hy(e){return Ea.add(e),()=>{Ea.delete(e)}}function Uy(){Wy();for(const e of Ea)try{e()}catch{}}const Ko=3e4,hi=5*6e4,Vy=5*6e4,Uu="0123456789ABCDEFGHJKMNPQRSTVWXYZ",ar=500,Vu=40101;function gi(e=Ko){try{return AbortSignal.timeout(e)}catch{return}}function jy(e,t){let n="",s=e;for(let o=0;oUu[n%32]).join("")}function yi(){return`${jy(Date.now(),10)}${Ky(16)}`}function Gy(e){try{const t=[];return e.forEach((n,s)=>{typeof n=="string"?t.push({field:s,value:n}):t.push({field:s,file:n.name,size:n.size,type:n.type})}),{formData:t}}catch{return"[FormData]"}}async function ua(e){try{const t=await e.text();return t?t.length>ar?`${t.slice(0,ar)}...`:t:void 0}catch{return}}class Qy{constructor(t,n){this.origin=t,this.identity=n}async get(t,n){return this.request("GET",t,void 0,n)}async getBlob(t){const n=no(this.origin,t),s=yi(),o={"X-Request-Id":s};this.addClientHeaders(o);const i=Date.now();fi({method:"GET",path:t,url:n,requestId:s});let u;try{u=await fetch(n,{method:"GET",headers:o,signal:gi()})}catch(m){throw Bs({method:"GET",path:t,requestId:s,phase:"fetch",durationMs:Date.now()-i,error:m}),new ws({message:`Network error calling GET ${t}`,cause:m,method:"GET",path:t,url:n,requestId:s,phase:"fetch",timeoutMs:Ko,timestamp:Date.now(),durationMs:Date.now()-i})}if(u.ok)return yo({method:"GET",path:t,requestId:s,status:u.status,durationMs:Date.now()-i,code:0,msg:""}),u.blob();let p;try{p=await u.clone().json()}catch{}throw this.checkAuthRequired(u,p?.code??0),yo({method:"GET",path:t,requestId:s,status:u.status,durationMs:Date.now()-i,code:p?.code??u.status,msg:p?.msg??u.statusText,envelopeRequestId:p?.request_id}),new jo({code:p?.code??u.status,msg:p?.msg??u.statusText,requestId:p?.request_id??s,details:p?.details,timestamp:Date.now(),durationMs:Date.now()-i})}async post(t,n,s){return this.request("POST",t,n,void 0,s?.allowCodes,s?.timeoutMs)}async postZip(t,n,s){const o="POST",i=no(this.origin,t),u=yi(),p={"X-Request-Id":u,"Content-Type":"application/json; charset=utf-8"};this.addClientHeaders(p);const m=Date.now();fi({method:o,path:t,url:i,requestId:u,body:s});let h;try{h=await fetch(i,{method:o,headers:p,body:JSON.stringify(n),signal:gi(hi)})}catch(f){throw Bs({method:o,path:t,requestId:u,phase:"fetch",durationMs:Date.now()-m,error:f}),new ws({message:`Network error calling ${o} ${t}`,cause:f,method:o,path:t,url:i,requestId:u,phase:"fetch",timeoutMs:hi,timestamp:Date.now(),durationMs:Date.now()-m})}const w=h.headers.get("content-type")??void 0,I=w?.split(";",1)[0]?.trim().toLowerCase();if(!h.ok||I!=="application/zip"){let f;try{f=await h.clone().json()}catch{}if(this.checkAuthRequired(h,f?.code??0),!h.ok||f!==void 0&&f.code!==0){const b=f?.code??h.status,y=f?.msg??h.statusText;throw yo({method:o,path:t,requestId:u,status:h.status,durationMs:Date.now()-m,code:b,msg:y,envelopeRequestId:f?.request_id}),new jo({code:b,msg:y,requestId:f?.request_id??u,details:f?.details,timestamp:Date.now(),durationMs:Date.now()-m})}const _=h.clone(),g=new TypeError(`Expected application/zip, received ${w??"no content type"}`);throw Bs({method:o,path:t,requestId:u,phase:"parse",durationMs:Date.now()-m,status:h.status,error:g}),new ws({message:`Invalid ZIP response from ${o} ${t}`,cause:g,method:o,path:t,url:i,requestId:u,phase:"parse",timeoutMs:hi,status:h.status,statusText:h.statusText,contentType:w,bodyPreview:await ua(_),timestamp:Date.now(),durationMs:Date.now()-m})}let v;try{v=await h.blob()}catch(f){throw Bs({method:o,path:t,requestId:u,phase:"parse",durationMs:Date.now()-m,status:h.status,error:f}),new ws({message:`Failed to read ZIP response from ${o} ${t}`,cause:f,method:o,path:t,url:i,requestId:u,phase:"parse",timeoutMs:hi,status:h.status,statusText:h.statusText,contentType:w,timestamp:Date.now(),durationMs:Date.now()-m})}return yo({method:o,path:t,requestId:u,status:h.status,durationMs:Date.now()-m,code:0,msg:""}),{blob:v,contentDisposition:h.headers.get("content-disposition")??void 0}}async postForm(t,n){const s=no(this.origin,t),o=yi(),i={"X-Request-Id":o};this.addClientHeaders(i);const u=Date.now();fi({method:"POST",path:t,url:s,requestId:o,body:Gy(n)});let p;try{p=await fetch(s,{method:"POST",headers:i,body:n,signal:gi()})}catch(w){throw Bs({method:"POST",path:t,requestId:o,phase:"fetch",durationMs:Date.now()-u,error:w}),new ws({message:`Network error calling POST ${t}`,cause:w,method:"POST",path:t,url:s,requestId:o,phase:"fetch",timeoutMs:Ko,timestamp:Date.now(),durationMs:Date.now()-u})}let m;const h=p.clone();try{m=await p.json()}catch(w){throw Bs({method:"POST",path:t,requestId:o,phase:"parse",durationMs:Date.now()-u,status:p.status,error:w}),new ws({message:`Failed to parse JSON response from POST ${t}`,cause:w,method:"POST",path:t,url:s,requestId:o,phase:"parse",timeoutMs:Ko,status:p.status,statusText:p.statusText,contentType:p.headers.get("content-type")??void 0,bodyPreview:await ua(h),timestamp:Date.now(),durationMs:Date.now()-u})}if(yo({method:"POST",path:t,requestId:o,status:p.status,durationMs:Date.now()-u,code:m.code,msg:m.msg,envelopeRequestId:m.request_id,data:m.data}),this.checkAuthRequired(p,m.code),m.code!==0)throw new jo({code:m.code,msg:m.msg,requestId:m.request_id,details:m.details,timestamp:Date.now(),durationMs:Date.now()-u});return m.data}async patch(t,n){return this.request("PATCH",t,n)}async delete(t){return this.request("DELETE",t)}async request(t,n,s,o,i=[],u){let p=no(this.origin,n);if(o){const g=new URLSearchParams;for(const[y,E]of Object.entries(o))E!==void 0&&g.set(y,String(E));const b=g.toString();b&&(p=`${p}?${b}`)}const m=yi(),h={"X-Request-Id":m};this.addClientHeaders(h),s!==void 0&&(h["Content-Type"]="application/json; charset=utf-8");const w=Date.now();fi({method:t,path:n,url:p,requestId:m,body:s});const I=u??Ko;let v;try{v=await fetch(p,{method:t,headers:h,body:s!==void 0?JSON.stringify(s):void 0,signal:gi(I)})}catch(g){throw Bs({method:t,path:n,requestId:m,phase:"fetch",durationMs:Date.now()-w,error:g}),new ws({message:`Network error calling ${t} ${n}`,cause:g,method:t,path:n,url:p,requestId:m,phase:"fetch",timeoutMs:I,timestamp:Date.now(),durationMs:Date.now()-w})}let f;const _=v.clone();try{f=await v.json()}catch(g){throw Bs({method:t,path:n,requestId:m,phase:"parse",durationMs:Date.now()-w,status:v.status,error:g}),new ws({message:`Failed to parse JSON response from ${t} ${n}`,cause:g,method:t,path:n,url:p,requestId:m,phase:"parse",timeoutMs:I,status:v.status,statusText:v.statusText,contentType:v.headers.get("content-type")??void 0,bodyPreview:await ua(_),timestamp:Date.now(),durationMs:Date.now()-w})}if(yo({method:t,path:n,requestId:m,status:v.status,durationMs:Date.now()-w,code:f.code,msg:f.msg,envelopeRequestId:f.request_id,data:f.data}),this.checkAuthRequired(v,f.code),f.code!==0&&!i.includes(f.code))throw new jo({code:f.code,msg:f.msg,requestId:f.request_id,details:f.details,timestamp:Date.now(),durationMs:Date.now()-w});return f.data}addClientHeaders(t){const n=si();n!==void 0&&(t.Authorization=`Bearer ${n}`),this.identity!==void 0&&(t["X-Kimi-Client-Id"]=this.identity.clientId,t["X-Kimi-Client-Name"]=this.identity.clientName,t["X-Kimi-Client-Version"]=this.identity.clientVersion,t["X-Kimi-Client-Ui-Mode"]=this.identity.clientUiMode)}checkAuthRequired(t,n){(t.status===401||n===Vu)&&Uy()}}function Yy(e){const t={catalog_id:e.catalogId};return e.localId!==void 0&&(t.id=e.localId),e.baseUrl!==void 0&&(t.base_url=e.baseUrl),e.apiKey!==void 0&&(t.api_key=e.apiKey),t}function Zy(e){const t={url:e.url};return e.apiKey!==void 0&&(t.api_key=e.apiKey),t}function lr(e){return{id:e.id,name:e.name,wireType:e.wireType,modelCount:e.models.length,needsBaseUrl:e.needsBaseUrl,envKey:e.envKey,rejected:e.rejected,rejectReason:e.rejectReason}}function Xy(e,t){const n=t.trim().toLowerCase();return!!(n===""||e.name.toLowerCase().includes(n)||e.id.toLowerCase().includes(n)||e.wireType!==null&&e.wireType.toLowerCase().includes(n))}function Jy(e,t){return e.filter(n=>Xy(n,t))}function ek(e){if(!(!e||e.length===0))return e.map(t=>({file_id:t.fileId,name:t.name,media_type:t.mediaType,size:t.size}))}function tk(e,t){return{type:"subscribe_v2",id:t,payload:{session_id:e.sessionId,transcript:e.grades,transcript_since:e.sinceSeq??void 0}}}function nk(e,t,n){return{type:"unsubscribe_v2",id:t,payload:{session_id:e,...n?{agent_ids:n}:{}}}}class sk{byKey=new Map;get(t,n){return this.byKey.get(`${t}:${n}`)??0}set(t,n,s){this.byKey.set(`${t}:${n}`,s)}clear(t){for(const n of this.byKey.keys())n.startsWith(`${t}:`)&&this.byKey.delete(n)}advance(t,n,s){const o=`${t}:${n}`,i=this.byKey.get(o)??0;return i===0||s===i+1?(this.byKey.set(o,s),!1):!0}}async function ok(e){const t=new URLSearchParams({agent_id:e.agentId,since_seq:String(e.sinceSeq)}),n={};e.token!==void 0&&e.token!==""&&(n.authorization=`Bearer ${e.token}`);const i=await(await(e.fetchImpl??fetch)(`${e.baseUrl}/api/v1/sessions/${encodeURIComponent(e.sessionId)}/transcript/ops?${t.toString()}`,{headers:n})).json();if(i.code!==0)throw new Error(`transcript ops failed (${String(i.code)}): ${String(i.msg??"")}`);const u=i.data;if(!u||typeof u.agent_id!="string"||!Array.isArray(u.batches)||typeof u.latest_seq!="number"||typeof u.complete!="boolean")throw new Error("transcript ops: unexpected response shape");const p=u.batches.flatMap(m=>{const h=m;return!h||typeof h.seq!="number"||!Array.isArray(h.ops)?[]:[{seq:h.seq,ops:h.ops}]});return{agentId:u.agent_id,batches:p,latestSeq:u.latest_seq,complete:u.complete}}function ik(e){let t=new Map;function n(v){const f=t.get(v);if(f!==void 0)return f;const _=ak();return t.set(v,_),_}function s(v){if(!Array.isArray(v))return[];const f=[];for(const _ of v)try{f.push(...i(_))}catch(g){console.error("[transcriptProjector] error projecting op:",g instanceof Error?g.message:g)}return f}function o(){t=new Map}function i(v){const f=wo(v);switch(_t(f,"op")){case"turn.upsert":return u(f);case"step.upsert":return p(f);case"frame.upsert":return m(f);case"append":return h(f);default:return[]}}function u(v){const f=wo(v.turn),_=_t(f,"turnId"),g=_t(f,"state");if(_===void 0||!ck(g))return[];const b=n(_);b.state=g;const y=_t(f,"prompt");y!==void 0&&(b.prompt=y);const E=uk(f,"startedAt");E!==void 0&&(b.startedAt=E);const S=rk(f,"durationMs");S!==void 0&&(b.durationMs=S);const O=[];return g==="queued"?O:g==="running"?(b.prompt!==void 0&&b.prompt.length>0&&!b.userEmitted&&(O.push({type:"messageCreated",message:{id:`usr_${_}`,sessionId:e,role:"user",content:[{type:"text",text:b.prompt}],createdAt:b.startedAt??new Date().toISOString()}}),b.userEmitted=!0),O):(b.endEmitted||(b.assistantEmitted&&O.push({type:"messageUpdated",sessionId:e,messageId:`asst_${_}`,content:rr(b.content),status:"completed",...b.durationMs!==void 0?{durationMs:b.durationMs}:{}}),O.push({type:"sessionWorkChanged",sessionId:e,busy:!1,mainTurnActive:!1,lastTurnReason:g}),b.endEmitted=!0),O)}function p(v){const f=wo(v.step),_=_t(v,"turnId")??_t(f,"turnId"),g=f.frames;if(_===void 0||!Array.isArray(g))return[];const b=n(_),y=[];for(const E of g){const S=wo(E),O=_t(S,"frameId");O!==void 0&&(b.seenFrames.has(O)||y.push(...w(b,_,S)))}return y}function m(v){const f=_t(v,"turnId"),_=wo(v.frame),g=_t(_,"frameId");if(f===void 0||g===void 0)return[];const b=n(f),y=_t(_,"kind");return(y==="text"||y==="thinking")&&b.seenFrames.has(g)?[]:w(b,f,_)}function h(v){const f=wo(v.target),_=_t(v,"text");if(_===void 0)return[];const g=_t(f,"type");if(g==="task"){const L=_t(f,"taskId");return L===void 0?[]:[{type:"taskProgress",sessionId:e,taskId:L,outputChunk:_,stream:"stdout"}]}if(g!=="frame")return[];const b=_t(f,"turnId"),y=_t(f,"frameId");if(b===void 0||y===void 0)return[];const E=n(b),S=[];I(E,b,S);const O=Ra(E,y),D=E.content[O];(D===void 0||D.type!=="text"&&D.type!=="thinking")&&(E.content[O]={type:"text",text:""});const T=E.content[O];return T!==void 0&&(T.type==="text"?(T.text+=_,S.push({type:"assistantDelta",sessionId:e,messageId:`asst_${b}`,contentIndex:O,delta:{text:_}})):T.type==="thinking"&&(T.thinking+=_,S.push({type:"assistantDelta",sessionId:e,messageId:`asst_${b}`,contentIndex:O,delta:{thinking:_}}))),E.seenFrames.add(y),S}function w(v,f,_){const g=_t(_,"frameId");if(g===void 0)return[];const b=[];switch(v.seenFrames.add(g),_t(_,"kind")){case"text":{if(_t(_,"role")!=="assistant")break;const S=_t(_,"text");if(S===void 0)break;I(v,f,b);const{index:O,part:D}=ur(v,g,"text");D.type==="text"&&(D.text+=S),b.push({type:"assistantDelta",sessionId:e,messageId:`asst_${f}`,contentIndex:O,delta:{text:S}});break}case"thinking":{const E=_t(_,"text");if(E===void 0)break;I(v,f,b);const{index:S,part:O}=ur(v,g,"thinking");O.type==="thinking"&&(O.thinking+=E),b.push({type:"assistantDelta",sessionId:e,messageId:`asst_${f}`,contentIndex:S,delta:{thinking:E}});break}case"tool":{const E=_t(_,"toolCallId");if(E===void 0)break;if(I(v,f,b),!v.content.some(D=>D.type==="toolUse"&&D.toolCallId===E)){const D=Ra(v,g);v.content[D]={type:"toolUse",toolCallId:E,toolName:_t(_,"name")??"",input:_.input??{},outputLines:[]}}b.push({type:"messageUpdated",sessionId:e,messageId:`asst_${f}`,content:rr(v.content),status:"pending"});const S=_.progress;lk(S)&&b.push({type:"toolOutput",sessionId:e,toolCallId:E,outputChunk:_t(S,"text")??"",stream:S.kind==="stderr"?"stderr":"stdout"});const O=_t(_,"state");(O==="done"||O==="error")&&!v.emittedToolResults.has(E)&&(v.emittedToolResults.add(E),b.push({type:"messageCreated",message:{id:`tool_${E}`,sessionId:e,role:"tool",content:[{type:"toolResult",toolCallId:E,output:_.output??_.display??{},isError:O==="error"}],createdAt:new Date().toISOString()}}));break}}return b}function I(v,f,_){v.assistantEmitted||(v.assistantEmitted=!0,_.push({type:"messageCreated",message:{id:`asst_${f}`,sessionId:e,role:"assistant",content:[],createdAt:new Date().toISOString()}}))}return{project:s,reset:o}}function ak(){return{state:"running",prompt:void 0,startedAt:void 0,durationMs:void 0,userEmitted:!1,assistantEmitted:!1,endEmitted:!1,content:[],frameIndex:new Map,nextIndex:0,seenFrames:new Set,emittedToolResults:new Set}}function wo(e){return e===null||typeof e!="object"||Array.isArray(e)?{}:e}function lk(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function _t(e,t){const n=e[t];return typeof n=="string"?n:void 0}function rk(e,t){const n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:void 0}function uk(e,t){const n=e[t];if(typeof n=="string")return n;if(typeof n=="number"&&Number.isFinite(n))return new Date(n).toISOString()}function ck(e){return e==="queued"||e==="running"||e==="completed"||e==="failed"||e==="cancelled"}function rr(e){return e.map(t=>t.type==="toolUse"&&t.outputLines!==void 0?{...t,outputLines:[...t.outputLines]}:{...t})}function Ra(e,t){const n=e.frameIndex.get(t);if(n!==void 0)return n;const s=e.nextIndex;return e.nextIndex+=1,e.frameIndex.set(t,s),s}function ur(e,t,n){const s=Ra(e,t),o=e.content[s];if(o!==void 0&&o.type===n)return{index:s,part:o};const i=n==="text"?{type:"text",text:""}:{type:"thinking",thinking:""};return e.content[s]=i,{index:s,part:i}}const dk=new Set(["turn.started","turn.ended","turn.step.started","turn.step.completed","turn.step.retrying","turn.step.interrupted","thinking.delta","assistant.delta","tool.use","tool.call.started","tool.call.delta","tool.progress","tool.result","tool.list.updated","task.started","task.terminated","subagent.spawned","subagent.started","subagent.suspended","subagent.completed","subagent.failed","prompt.submitted","prompt.completed","prompt.aborted"]);function pk(e){return dk.has(e)}function fk(e,t){if(!Array.isArray(e))return[];const n=[];for(const s of e)try{n.push(...mk(s,t))}catch(o){console.error("[transcriptOpsToAppEvents] error mapping op:",o instanceof Error?o.message:o)}return n}function Ns(e){return e===null||typeof e!="object"||Array.isArray(e)?{}:e}function Zn(e,t){const n=e[t];return typeof n=="string"?n:void 0}function cr(e,t){const n=e[t];if(typeof n=="string")return n;if(typeof n=="number"&&Number.isFinite(n))return new Date(n).toISOString()}function ju(e,t){for(const n of e)for(const s of t){const o=n[s];if(typeof o=="number"&&Number.isFinite(o))return o}}function mk(e,t){if(e===null||typeof e!="object"||Array.isArray(e))return[];const n=e,s=n.op;if(typeof s!="string")return[];switch(s){case"prompt.upsert":return vk(n.prompt,t);case"task.upsert":return yk(n.task,t);case"meta.merge":return wk(n.meta,t);default:return[]}}function vk(e,t){const n=Ns(e),s=Zn(n,"prompt");if(s===void 0||s.trim().length===0)return[];const o=Zn(n,"createdAt")??new Date().toISOString();return[{type:"messageCreated",message:{id:Zn(n,"promptId")??`pr_${t}-${o}`,sessionId:t,role:"user",content:[{type:"text",text:s}],createdAt:o}}]}const hk={shell:"bash",subagent:"subagent",tool:"tool"};function gk(e){switch(e){case"created":case"pending":return{eventKind:"taskCreated",status:"running"};case"running":case"in_progress":return{eventKind:"taskProgress",status:"running"};case"completed":case"succeeded":return{eventKind:"taskCompleted",status:"completed"};case"failed":case"timed_out":case"lost":return{eventKind:"taskCompleted",status:"failed"};case"killed":return{eventKind:"taskCompleted",status:"cancelled"};default:return}}function yk(e,t){const n=Ns(e),s=Zn(n,"taskId");if(s===void 0||s.length===0)return[];const o=n.kind,i=typeof o=="string"?hk[o]:void 0;if(i===void 0)return[];const u=Zn(n,"state");if(u===void 0)return[];const p=gk(u);if(p===void 0)return[];const m=cr(n,"startedAt"),h=cr(n,"endedAt"),w=Zn(n,"description")??Zn(n,"name")??Zn(n,"title")??"",I={id:s,sessionId:t,kind:i,description:w,status:p.status,createdAt:m??new Date().toISOString(),...m!==void 0?{startedAt:m}:{},...h!==void 0?{completedAt:h}:{}};switch(p.eventKind){case"taskCreated":return[{type:"taskCreated",sessionId:t,task:I}];case"taskProgress":return[{type:"taskProgress",sessionId:t,taskId:s,outputChunk:Zn(n,"outputTail")??"",stream:"stdout"}];case"taskCompleted":{const v=Zn(n,"error")??Zn(n,"stateReason");return[{type:"taskCompleted",sessionId:t,taskId:s,status:p.status,...p.status==="failed"&&v!==void 0?{outputPreview:v}:{}}]}}}function kk(e){if(e.usage!==void 0&&e.usage!==null||Object.keys(e).some(n=>n.startsWith("tokens_")))return!0;const t=Ns(e.agent);return t.usage!==void 0&&t.usage!==null?!0:ju([t],["contextTokens","maxContextTokens"])!==void 0}function bk(e){const t=Ns(e.usage),n=Ns(e.agent),s=Ns(Ns(n.usage).total),o=(i,u)=>ju(i,u)??0;return{inputTokens:o([t,s,e],["inputTokens","input_tokens","inputOther","tokens_input"]),outputTokens:o([t,s,e],["outputTokens","output_tokens","output","tokens_output"]),cacheReadTokens:o([t,s,e],["cacheReadTokens","cache_read_input_tokens","inputCacheRead","tokens_cache_read"]),cacheCreationTokens:o([t,s,e],["cacheCreationTokens","cache_creation_input_tokens","inputCacheCreation","tokens_cache_creation"]),totalCostUsd:o([t,s,e],["totalCostUsd","cost","tokens_cost"]),contextTokens:o([t,n,e],["contextTokens","tokens_context"]),contextLimit:o([t,n,e],["contextLimit","maxContextTokens","tokens_context_limit"]),turnCount:o([t,e],["turnCount","tokens_turn_count"])}}function wk(e,t){const n=Ns(e);return kk(n)?[{type:"sessionUsageUpdated",sessionId:t,usage:bk(n)}]:[]}const Sk="kimi-code.bearer.",Ck=3e4;class _k{constructor(t,n,s){this.wsUrl=t,this.clientId=n,this.handlers=s}ws=null;connected=!1;closed=!1;subscriptions=new Map;pendingSubscriptions=[];terminalAttachments=new Map;transcriptSubscriptions=new Map;msgSeq=0;reconnectAttempts=0;reconnectTimer=null;heartbeatMs=3e4;lastActivityAt=0;connect(){if(this.ws!==null||this.closed)return;this.lastActivityAt=Date.now(),ko("connect",{url:this.wsUrl,attempt:this.reconnectAttempts});const t=si(),n=t!==void 0?[`${Sk}${t}`]:void 0,s=new WebSocket(this.wsUrl,n);this.ws=s,s.onopen=()=>{ko("open")},s.onmessage=o=>{this.lastActivityAt=Date.now();try{const i=JSON.parse(String(o.data));I0(i),this.handleFrame(i)}catch(i){ko("parse-error",{error:String(i)}),this.handlers.onError(0,`Failed to parse WS frame: ${String(i)}`,!1)}},s.onerror=()=>{ko("error"),this.handlers.onError(0,"WebSocket error",!1)},s.onclose=o=>{ko("close",o?{code:o.code,reason:o.reason,wasClean:o.wasClean}:void 0),this.connected=!1,this.ws=null,this.handlers.onConnectionState(!1),this.scheduleReconnect()}}scheduleReconnect(){if(this.closed||this.reconnectTimer!==null)return;const n=Math.min(3e4,1e3*2**this.reconnectAttempts)+Math.floor(Math.random()*250);this.reconnectAttempts+=1,ko("reconnect-scheduled",{delayMs:n,attempt:this.reconnectAttempts}),this.reconnectTimer=setTimeout(()=>{this.reconnectTimer=null,this.connect()},n)}subscribe(t,n={seq:0}){if(this.subscriptions.set(t,{...n}),this.connected)this.sendSubscribe([t],{[t]:n});else{const s=this.pendingSubscriptions.findIndex(o=>o.sessionId===t);s!==-1&&this.pendingSubscriptions.splice(s,1),this.pendingSubscriptions.push({sessionId:t,cursor:{...n}})}}unsubscribe(t){this.subscriptions.delete(t);const n=this.pendingSubscriptions.findIndex(s=>s.sessionId===t);n!==-1&&this.pendingSubscriptions.splice(n,1),this.connected&&this.ws&&this.send({type:"unsubscribe",id:this.nextId(),payload:{session_ids:[t]}})}subscribeTranscript(t,n,s){const o=this.transcriptSubscriptions.get(t);this.transcriptSubscriptions.set(t,{grades:n,sinceSeq:{...o?.sinceSeq??{},...s??{}}}),this.connected&&this.sendTranscriptSubscribe(t)}updateTranscriptSince(t,n,s){const o=this.transcriptSubscriptions.get(t);o&&(o.sinceSeq[n]=s)}unsubscribeTranscript(t,n){this.transcriptSubscriptions.delete(t),this.connected&&this.ws&&this.send(nk(t,this.nextId(),n))}transcriptSubscribedSessionIds(){return Array.from(this.transcriptSubscriptions.keys())}sendTranscriptSubscribe(t){const n=this.transcriptSubscriptions.get(t);n&&this.send(tk({sessionId:t,grades:n.grades,sinceSeq:n.sinceSeq},this.nextId()))}abort(t,n){!this.connected||!this.ws||this.send({type:"abort",id:this.nextId(),payload:{session_id:t,prompt_id:n}})}terminalAttach(t,n,s){const o=ki(t,n),i=this.terminalAttachments.get(o),u=s??i?.lastSeq??0;this.terminalAttachments.set(o,{sessionId:t,terminalId:n,lastSeq:u}),!(!this.connected||!this.ws)&&this.sendTerminalAttach(t,n,u)}terminalInput(t,n,s){!this.connected||!this.ws||this.send({type:"terminal_input",id:this.nextId(),payload:{session_id:t,terminal_id:n,data:s}})}terminalResize(t,n,s,o){!this.connected||!this.ws||this.send({type:"terminal_resize",id:this.nextId(),payload:{session_id:t,terminal_id:n,cols:s,rows:o}})}terminalDetach(t,n){this.terminalAttachments.delete(ki(t,n)),!(!this.connected||!this.ws)&&this.send({type:"terminal_detach",id:this.nextId(),payload:{session_id:t,terminal_id:n}})}terminalClose(t,n){this.terminalAttachments.delete(ki(t,n)),!(!this.connected||!this.ws)&&this.send({type:"terminal_close",id:this.nextId(),payload:{session_id:t,terminal_id:n}})}close(){this.closed=!0,this.connected=!1,this.reconnectTimer!==null&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.ws&&(this.ws.close(1e3),this.ws=null)}health(){const t=this.ws!==null&&this.ws.readyState===WebSocket.OPEN,n=Math.max(this.heartbeatMs*2,Ck),s=this.lastActivityAt>0&&Date.now()-this.lastActivityAt>n;return{connected:this.connected,open:t,stale:s}}reconnect(){if(this.closed)return;this.reconnectTimer!==null&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null);const t=this.ws;if(t!==null){t.onopen=null,t.onmessage=null,t.onerror=null,t.onclose=null;try{t.close(1e3,"reconnect")}catch{}}const n=this.connected;this.ws=null,this.connected=!1,n&&this.handlers.onConnectionState(!1),this.connect()}handleFrame(t){const n=t;switch(t.type){case"server_hello":{const s=n.payload?.heartbeat_ms;typeof s=="number"&&s>0&&(this.heartbeatMs=s),this.onServerHello();break}case"ping":this.send({type:"pong",payload:{nonce:n.payload.nonce}});break;case"resync_required":{const s=n.payload.session_id,o=n.payload.epoch;this.subscriptions.set(s,{seq:n.payload.current_seq,epoch:o}),this.handlers.onResync(s,n.payload.current_seq,o);break}case"transcript.ops":{const s=n.session_id;typeof s=="string"&&this.handlers.onTranscriptOps?.(n.payload,s);break}case"transcript.reset":{const s=n.session_id;typeof s=="string"&&this.handlers.onTranscriptReset?.(n.payload,s);break}case"error":{const s=n.session_id;typeof s=="string"&&this.handlers.onRawAgentEvent?this.handlers.onRawAgentEvent({type:"error",seq:n.seq,session_id:s,timestamp:n.timestamp,payload:n.payload}):this.handlers.onError(n.payload.code,n.payload.msg,n.payload.fatal);break}case"ack":break;case"terminal_output":{const s=n.session_id,o=n.terminal_id,i=n.seq,u=ki(s,o),p=this.terminalAttachments.get(u);p&&this.terminalAttachments.set(u,{...p,lastSeq:Math.max(p.lastSeq,i)});const m=typeof n.payload?.data=="string"?n.payload.data:"";this.handlers.onTerminalOutput?.(s,o,m,i);break}case"terminal_exit":{const s=n.session_id,o=n.terminal_id,i=n.payload?.exit_code,u=typeof i=="number"?i:null;this.handlers.onTerminalExit?.(s,o,u);break}default:{this.trackCursor(n);const s=n.type,o=Ly(s,n.payload);if(o.route==="protocol"){this.handlers.onWireEvent(n);break}if(o.route==="agent"){if(this.handlers.onRawAgentEvent&&typeof n.session_id=="string"){const i=n,u=n;this.handlers.onRawAgentEvent({type:o.agentType,seq:i.seq,session_id:i.session_id,timestamp:i.timestamp,payload:i.payload,...u.volatile!==void 0?{volatile:u.volatile}:{},...u.offset!==void 0?{offset:u.offset}:{}})}break}break}}}onServerHello(){this.connected=!0,this.reconnectAttempts=0,this.handlers.onConnectionState(!0);const t=Array.from(this.subscriptions.keys());for(const s of this.pendingSubscriptions)this.subscriptions.set(s.sessionId,s.cursor),t.includes(s.sessionId)||t.push(s.sessionId);this.pendingSubscriptions.length=0;const n={};for(const[s,o]of this.subscriptions.entries())n[s]=o;this.send({type:"client_hello",id:this.nextId(),payload:{client_id:this.clientId,subscriptions:t,cursors:n}});for(const s of this.terminalAttachments.values())this.sendTerminalAttach(s.sessionId,s.terminalId,s.lastSeq);for(const s of this.transcriptSubscriptions.keys())this.sendTranscriptSubscribe(s)}sendSubscribe(t,n){this.send({type:"subscribe",id:this.nextId(),payload:{session_ids:t,cursors:n}})}sendTerminalAttach(t,n,s){this.send({type:"terminal_attach",id:this.nextId(),payload:{session_id:t,terminal_id:n,since_seq:s>0?s:void 0}})}trackCursor(t){if(t.volatile===!0)return;const n=t.session_id,s=t.seq;if(typeof n!="string"||typeof s!="number")return;const o=this.subscriptions.get(n);if(!o||s<=o.seq&&o.epoch!==void 0)return;const i=typeof t.epoch=="string"?t.epoch:o.epoch;this.subscriptions.set(n,{seq:Math.max(s,o.seq),epoch:i})}send(t){if(!(!this.ws||this.ws.readyState!==WebSocket.OPEN))try{this.ws.send(JSON.stringify(t)),x0(t)}catch{}}nextId(){return`c_${++this.msgSeq}`}}function ki(e,t){return`${e}\0${t}`}function $k(e,t){if(e===void 0)return t;let n;const s=/filename\*\s*=\s*UTF-8''([^;]+)/i.exec(e)?.[1]?.trim();if(s!==void 0)try{n=decodeURIComponent(s.replaceAll(/^"|"$/g,""))}catch{return t}else n=/filename\s*=\s*"([^"]*)"/i.exec(e)?.[1]??/filename\s*=\s*([^;]+)/i.exec(e)?.[1]?.trim();return n===void 0||n.length===0||n.length>200||n==="."||n===".."||/[\u0000-\u001F\u007F/\\]/.test(n)||!n.toLowerCase().endsWith(".zip")?t:n}function dr(e){if(typeof e!="object"||e===null)return{errorName:typeof e};const t=e;return{errorName:typeof t.name=="string"?t.name:"Error",errorCode:typeof t.code=="number"?t.code:void 0,requestId:typeof t.requestId=="string"?t.requestId:void 0,phase:typeof t.phase=="string"?t.phase:void 0,httpStatus:typeof t.status=="number"?t.status:void 0}}const Mk=40924,xk=40925,Ik=600,Ak=2*6e4;function Tk(e){return new Promise(t=>setTimeout(t,e))}function ca(e){return{id:e.id,sessionId:e.session_id,cwd:e.cwd,shell:e.shell,cols:e.cols,rows:e.rows,status:e.status,createdAt:e.created_at,exitedAt:e.exited_at,exitCode:e.exit_code}}function pr(e){return e==="auto_compact"||e==="manual_compact"}class Pk{http;config;constructor(t){this.config=t,this.http=new Qy(t.serverHttpUrl,{clientId:t.clientId,clientName:t.clientName,clientVersion:t.clientVersion,clientUiMode:t.clientUiMode})}async getHealth(){return{status:"ok",uptimeSec:(await this.http.get("/healthz")).uptime_sec??0}}async getMeta(){const t=await this.http.get("/meta");return{serverVersion:t.server_version,serverId:t.server_id,startedAt:t.started_at,capabilities:t.capabilities,openInApps:Array.isArray(t.open_in_apps)?t.open_in_apps:[],dangerousBypassAuth:t.dangerous_bypass_auth===!0,backend:t.backend==="v2"?"v2":"v1"}}async listSessions(t){const n={before_id:t?.beforeId,after_id:t?.afterId,page_size:t?.pageSize,busy:t?.busy,include_archive:t?.includeArchive,archived_only:t?.archivedOnly,exclude_empty:t?.excludeEmpty,workspace_id:t?.workspaceId},s=await this.http.get("/sessions",n);return{items:s.items.map(Yn),hasMore:s.has_more}}async createSession(t){const n={metadata:t.cwd!==void 0?{cwd:t.cwd}:{}};t.workspaceId!==void 0&&(n.workspace_id=t.workspaceId),t.title!==void 0&&(n.title=t.title),t.model!==void 0&&(n.agent_config={model:t.model});const s=await this.http.post("/sessions",n);return Yn(s)}async getSession(t){const n=await this.http.get(`/sessions/${encodeURIComponent(t)}`);return Yn(n)}async updateSession(t,n){const s={};n.title!==void 0&&(s.title=n.title),n.cwd!==void 0&&(s.metadata={cwd:n.cwd});const o={};n.model!==void 0&&(o.model=n.model),n.permissionMode!==void 0&&(o.permission_mode=n.permissionMode),n.planMode!==void 0&&(o.plan_mode=n.planMode),n.swarmMode!==void 0&&(o.swarm_mode=n.swarmMode),n.supermoonMode!==void 0&&(o.supermoon_mode=n.supermoonMode),n.goalObjective!==void 0&&(o.goal_objective=n.goalObjective),n.goalControl!==void 0&&(o.goal_control=n.goalControl),n.thinking!==void 0&&(o.thinking=n.thinking),Object.keys(o).length>0&&(s.agent_config=o);const i=await this.http.post(`/sessions/${encodeURIComponent(t)}/profile`,s);return Yn(i)}async getSessionStatus(t){const n=await this.http.get(`/sessions/${encodeURIComponent(t)}/status`);return{model:n.model&&n.model.length>0?n.model:null,thinkingEffort:n.thinking_level,permission:n.permission,planMode:n.plan_mode===!0,swarmMode:n.swarm_mode===!0,supermoonMode:n.supermoon_mode===!0,contextTokens:n.context_tokens??0,maxContextTokens:n.max_context_tokens??0,contextUsage:n.context_usage??0}}async getSessionGoal(t){const n=await this.http.get(`/sessions/${encodeURIComponent(t)}/goal`);return Wu(n)}async getSessionWarnings(t){return(await this.http.get(`/sessions/${encodeURIComponent(t)}/warnings`)).warnings??[]}async archiveSession(t){return await this.http.post(`/sessions/${encodeURIComponent(t)}:archive`,{})}async restoreSession(t){const n=await this.http.post(`/sessions/${encodeURIComponent(t)}:restore`,{});return Yn(n)}async generateSessionTitle(t,n){try{const s={};n?.force===!0&&(s.force=!0),n?.source!==void 0&&(s.source=n.source);const o=await this.http.post(`/sessions/${encodeURIComponent(t)}/title/generate`,s);return typeof o?.title=="string"&&o.title.length>0?o.title:null}catch{return null}}async listMessages(t,n){const s={before_id:n?.beforeId,after_id:n?.afterId,page_size:n?.pageSize,role:n?.role},o=await this.http.get(`/sessions/${encodeURIComponent(t)}/messages`,s);return{items:o.items.map(Ta),hasMore:o.has_more}}async getSessionSnapshot(t){const n=Date.now();Qt("session:snapshot:start",{sessionId:t});try{const s=await this.http.get(`/sessions/${encodeURIComponent(t)}/snapshot`),o={asOfSeq:s.as_of_seq,epoch:s.epoch,session:Yn(s.session),messages:s.messages.items.map(Ta),hasMoreMessages:s.messages.has_more,inFlightTurn:s.in_flight_turn===null?null:{turnId:s.in_flight_turn.turn_id,assistantText:s.in_flight_turn.assistant_text,thinkingText:s.in_flight_turn.thinking_text,runningTools:s.in_flight_turn.running_tools.map(i=>({toolCallId:i.tool_call_id,name:i.name,args:i.args,description:i.description,lastProgress:i.last_progress})),promptId:s.in_flight_turn.current_prompt_id},pendingApprovals:s.pending_approvals.map(Nu),pendingQuestions:s.pending_questions.map(qu),subagents:(s.subagents??[]).map(_i)};return Qt("session:snapshot:accepted",{sessionId:t,busy:o.session.busy,seq:o.asOfSeq,messageCount:o.messages.length,durationMs:Date.now()-n}),o}catch(s){throw Qt("session:snapshot:failed",{sessionId:t,status:"failed",durationMs:Date.now()-n,...dr(s)}),s}}async exportSession(t,n){const s=n===void 0?0:new TextEncoder().encode(n).byteLength,o=n===void 0||n.length===0?0:n.split(`
-`).length,i=await this.http.postZip(`/sessions/${encodeURIComponent(t)}/export`,{web_log:n},{web_log_bytes:s,web_log_entries:o}),u=`${t}.zip`;return{blob:i.blob,fileName:$k(i.contentDisposition,u)}}async submitPrompt(t,n){const s=Date.now();Qt("prompt:start",{sessionId:t,contentCount:n.content.length,mediaCount:n.content.filter(o=>o.type==="image"||o.type==="video"||o.type==="file").length});try{const o=await this.http.post(`/sessions/${encodeURIComponent(t)}/prompts`,ny(n));return Qt("prompt:accepted",{sessionId:t,promptId:o.prompt_id,status:o.status,durationMs:Date.now()-s}),{promptId:o.prompt_id,userMessageId:o.user_message_id,status:o.status}}catch(o){throw Qt("prompt:failed",{sessionId:t,status:"failed",durationMs:Date.now()-s,...dr(o)}),o}}async steerPrompts(t,n){const s=await this.http.post(`/sessions/${encodeURIComponent(t)}/prompts:steer`,{prompt_ids:n});return{steered:s.steered,promptIds:s.prompt_ids}}async abortPrompt(t,n){const s=await this.http.post(`/sessions/${encodeURIComponent(t)}/prompts/${encodeURIComponent(n)}:abort`,void 0,{allowCodes:[40903]});return{aborted:s.aborted,atSeq:s.at_seq}}async abortSession(t){return{aborted:(await this.http.post(`/sessions/${encodeURIComponent(t)}:abort`,{})).aborted}}async compactSession(t,n){await this.http.post(`/sessions/${encodeURIComponent(t)}:compact`,n?{instruction:n}:{})}async undoSession(t,n=1){await this.http.post(`/sessions/${encodeURIComponent(t)}:undo`,{count:n})}async forkSession(t,n){const s={};n?.title!==void 0&&(s.title=n.title);const o=await this.http.post(`/sessions/${encodeURIComponent(t)}:fork`,s,{timeoutMs:Vy});return Yn(o)}async createChildSession(t,n){const s={};n?.title!==void 0&&(s.title=n.title);const o=await this.http.post(`/sessions/${encodeURIComponent(t)}/children`,s);return Yn(o)}async listChildSessions(t){return(await this.http.get(`/sessions/${encodeURIComponent(t)}/children`)).items.map(Yn)}async startBtw(t){return{agentId:(await this.http.post(`/sessions/${encodeURIComponent(t)}:btw`,{})).agent_id}}async respondApproval(t,n,s){const o=await this.http.post(`/sessions/${encodeURIComponent(t)}/approvals/${encodeURIComponent(n)}`,sy(s));return{resolved:o.resolved,resolvedAt:o.resolved_at}}async respondQuestion(t,n,s){const o=await this.http.post(`/sessions/${encodeURIComponent(t)}/questions/${encodeURIComponent(n)}`,ly(s));return{resolved:o.resolved,resolvedAt:o.resolved_at}}async dismissQuestion(t,n){return{dismissed:!0,dismissedAt:(await this.http.post(`/sessions/${encodeURIComponent(t)}/questions/${encodeURIComponent(n)}:dismiss`,void 0,{allowCodes:[40909]})).dismissed_at}}async listTasks(t,n){const s={status:n};return(await this.http.get(`/sessions/${encodeURIComponent(t)}/tasks`,s)).items.map(_i)}async getTask(t,n,s){const o={with_output:s?.withOutput,output_bytes:s?.outputBytes},i=await this.http.get(`/sessions/${encodeURIComponent(t)}/tasks/${encodeURIComponent(n)}`,o);return _i(i)}async cancelTask(t,n){return await this.http.post(`/sessions/${encodeURIComponent(t)}/tasks/${encodeURIComponent(n)}:cancel`)}async listTerminals(t){return(await this.http.get(`/sessions/${encodeURIComponent(t)}/terminals`)).items.map(ca)}async createTerminal(t,n={}){const s={cwd:n.cwd,shell:n.shell,cols:n.cols,rows:n.rows},o=await this.http.post(`/sessions/${encodeURIComponent(t)}/terminals`,s);return ca(o)}async getTerminal(t,n){const s=await this.http.get(`/sessions/${encodeURIComponent(t)}/terminals/${encodeURIComponent(n)}`);return ca(s)}async closeTerminal(t,n){return this.http.post(`/sessions/${encodeURIComponent(t)}/terminals/${encodeURIComponent(n)}:close`)}async listSkills(t){return((await this.http.get(`/sessions/${encodeURIComponent(t)}/skills`)).skills??[]).map(s=>({name:s.name,description:s.description,source:s.source}))}async listSkillsForWorkspace(t){return((await this.http.get(`/workspaces/${encodeURIComponent(t)}/skills`)).skills??[]).map(s=>({name:s.name,description:s.description,source:s.source}))}async activateSkill(t,n,s,o){const i=ek(o),u=await this.http.post(`/sessions/${encodeURIComponent(t)}/skills/${encodeURIComponent(n)}:activate`,{...s!==void 0&&s.length>0?{args:s}:{},...i!==void 0?{attachments:i}:{}});return{activated:u.activated,skillName:u.skill_name}}async listPlugins(){return((await this.http.get("/plugins")).plugins??[]).map(Zl)}async listPluginMarketplace(){return((await this.http.get("/plugins/marketplace")).entries??[]).map(py)}async installPlugin(t){const n=await this.http.post("/plugins",{source:t});return Zl(n)}async setPluginEnabled(t,n){await this.http.post(`/plugins/${encodeURIComponent(t)}:${n?"enable":"disable"}`,{})}async removePlugin(t){await this.http.post(`/plugins/${encodeURIComponent(t)}:remove`,{})}async listCapabilities(){return((await this.http.get("/capabilities")).capabilities??[]).map(Xl)}async getCapability(t){const n=await this.http.get(`/capabilities/${encodeURIComponent(t)}`);return Xl(n)}async installCapability(t,n){await this.http.post(`/capabilities/${encodeURIComponent(t)}:install`,{},{allowCodes:[Mk]});const s=Date.now()+Ak;let o=await this.getCapability(t);for(n?.(o);o.install.running&&Date.now()[u,p.map(Yl)])):void 0;return{items:o.items.map(Yl),childrenByPath:i,truncated:o.truncated}}async readFile(t,n){const s={path:n.path};n.offset!==void 0&&(s.offset=n.offset),n.length!==void 0&&(s.length=n.length);const o=await this.http.post(`/sessions/${encodeURIComponent(t)}/fs:read`,s);return{path:o.path,content:o.content,encoding:o.encoding,size:o.size,truncated:o.truncated,etag:o.etag,mime:o.mime,languageId:o.language_id,lineCount:o.line_count,isBinary:o.is_binary}}async searchFiles(t,n){const s={workspace:t,query:n.query};n.limit!==void 0&&(s.limit=n.limit);const o=await this.http.post("/workspace/fs:search",s);return{items:o.items.map(i=>({path:i.path,name:i.name,kind:i.kind,score:i.score,matchPositions:i.match_positions})),truncated:o.truncated}}async grepFiles(t,n){const s={pattern:n.pattern};n.regex!==void 0&&(s.regex=n.regex),n.caseSensitive!==void 0&&(s.case_sensitive=n.caseSensitive);const o=await this.http.post(`/sessions/${encodeURIComponent(t)}/fs:grep`,s);return{files:o.files,filesScanned:o.files_scanned,truncated:o.truncated,elapsedMs:o.elapsed_ms}}async getGitStatus(t,n){const s={};n!==void 0&&(s.paths=n);const o=await this.http.post(`/sessions/${encodeURIComponent(t)}/fs:git_status`,s);return{branch:o.branch,ahead:o.ahead,behind:o.behind,entries:o.entries,additions:o.additions,deletions:o.deletions,pullRequest:o.pullRequest??null}}async getFileDiff(t,n){const s=await this.http.post(`/sessions/${encodeURIComponent(t)}/fs:diff`,{path:n});return{path:s.path,diff:s.diff}}getFileDownloadUrl(t,n){const s=n.split("/").map(o=>encodeURIComponent(o)).join("/");return no(this.config.serverHttpUrl,`/sessions/${encodeURIComponent(t)}/fs/${s}:download`)}async openFile(t,n){const s={path:n.path};return n.line!==void 0&&(s.line=n.line),this.http.post(`/sessions/${encodeURIComponent(t)}/fs:open`,s)}async revealFile(t,n){return this.http.post(`/sessions/${encodeURIComponent(t)}/fs:reveal`,{path:n.path})}async openInApp(t,n,s,o){const i={app_id:n,path:s};o!==void 0&&(i.line=o),await this.http.post(`/sessions/${encodeURIComponent(t)}/fs:open-in`,i)}async listWorkspaces(){try{return((await this.http.get("/workspaces")).items??[]).map(Go)}catch{return[]}}async addWorkspace(t){const n={root:t.root};t.name!==void 0&&(n.name=t.name);const s=await this.http.post("/workspaces",n);return Go(s)}async deleteWorkspace(t){await this.http.delete(`/workspaces/${encodeURIComponent(t)}`)}async updateWorkspace(t,n){const s=await this.http.patch(`/workspaces/${encodeURIComponent(t)}`,{name:n.name});return Go(s)}async browseFs(t){try{const n=await this.http.get("/fs:browse",{path:t});return{path:n.path,parent:n.parent,entries:(n.entries??[]).map(s=>({name:s.name,path:s.path,isDir:s.is_dir}))}}catch{return{path:"",parent:null,entries:[]}}}async getFsHome(){try{const t=await this.http.get("/fs:home");return{home:t.home,recentRoots:t.recent_roots??[]}}catch{return{home:"",recentRoots:[]}}}async listModels(){return(await this.http.get("/models")).items.map(uy)}async listProviders(){return(await this.http.get("/providers")).items.map(vi)}async addProvider(t){const n={type:t.type};t.apiKey!==void 0&&(n.api_key=t.apiKey),t.baseUrl!==void 0&&(n.base_url=t.baseUrl),t.defaultModel!==void 0&&(n.default_model=t.defaultModel);const s=await this.http.post("/providers",n);return vi(s)}async deleteProvider(t){return this.http.delete(`/providers/${encodeURIComponent(t)}`)}async refreshProvider(t){const n=await this.http.post(`/providers/${encodeURIComponent(t)}:refresh`);return da(n)}async refreshAllProviders(){const t=await this.http.post("/providers:refresh");return da(t)}async refreshOAuthProviderModels(){const t=await this.http.post("/providers:refresh_oauth");return da(t)}async browseCatalogProviders(t){return(await this.http.get("/catalog/providers",{query:t})).items.map(dy)}async importCatalogProvider(t){const n=await this.http.post("/providers:import_catalog",Yy(t));return{provider:vi(n.provider),modelsImported:n.models_imported}}async importRegistry(t){const n=await this.http.post("/providers:import_registry",Zy(t));return{providers:n.providers.map(vi),modelsImported:n.models_imported}}async getConfig(){const t=await this.http.get("/config");return Pa(t)}async setConfig(t){const n={},s={providers:"providers",defaultProvider:"default_provider",defaultModel:"default_model",models:"models",thinking:"thinking",planMode:"plan_mode",yolo:"yolo",defaultPermissionMode:"default_permission_mode",defaultPlanMode:"default_plan_mode",permission:"permission",hooks:"hooks",services:"services",mergeAllAvailableSkills:"merge_all_available_skills",extraSkillDirs:"extra_skill_dirs",loopControl:"loop_control",background:"background",experimental:"experimental",telemetry:"telemetry",raw:"raw"};for(const[i,u]of Object.entries(t)){const p=s[i];p!==void 0&&(n[p]=u)}const o=await this.http.post("/config",n);return Pa(o)}async getAuth(){const t=await this.http.get("/auth");return{ready:t.ready,providersCount:t.providers_count,defaultModel:t.default_model,managedProvider:t.managed_provider?{status:t.managed_provider.status}:null}}async startOAuthLogin(){const t=await this.http.post("/oauth/login",{});return t.status==="authenticated"?{flowId:t.flow_id,provider:t.provider,status:"authenticated"}:{flowId:t.flow_id,provider:t.provider,status:"pending",verificationUri:t.verification_uri,verificationUriComplete:t.verification_uri_complete,userCode:t.user_code,expiresIn:t.expires_in,interval:t.interval,expiresAt:t.expires_at}}async pollOAuthLogin(){const t=await this.http.get("/oauth/login");return t?{flowId:t.flow_id,status:t.status,resolvedAt:t.resolved_at}:null}async cancelOAuthLogin(){const t=await this.http.delete("/oauth/login");return{cancelled:t.cancelled,status:t.status}}async logout(){return{loggedOut:(await this.http.post("/oauth/logout",{})).logged_out}}async uploadFile(t){const n=new FormData;n.append("file",t.file,t.name??(t.file instanceof File?t.file.name:"upload")),t.name!==void 0&&n.append("name",t.name);const s=await this.http.postForm("/files",n);return{id:s.id,name:s.name,mediaType:s.media_type,size:s.size}}getFileUrl(t){return no(this.config.serverHttpUrl,`/files/${encodeURIComponent(t)}`)}async getFileBlob(t){return this.http.getBlob(`/files/${encodeURIComponent(t)}`)}connectEvents(t){const n=Jd(this.config.serverHttpUrl,this.config.clientId),s=Ay();let o=!1;const i=new Map;function u(v){let f=i.get(v);return f||(f={projector:ik(v),watermarks:new sk,armed:!1},i.set(v,f)),f}function p(v,f){const _=u(v),g=[];for(const b of f)g.push(...fk([b],v)),g.push(..._.projector.project([b]));return g}const m=(v,f,_)=>{(async()=>{try{const g=await ok({baseUrl:this.config.serverHttpUrl,sessionId:v,agentId:f,sinceSeq:_.watermarks.get(v,f),token:si()});for(const b of g.batches){_.watermarks.set(v,f,b.seq);for(const y of p(v,b.ops))t.onEvent(y,{sessionId:v,seq:b.seq})}g.complete||(_.projector.reset(),t.onResync(v,0))}catch{_.projector.reset(),t.onResync(v,0)}})()};function h(v,f){const _=v;if(!_||typeof _.agent_id!="string"||!Array.isArray(_.ops))return;const g=_.agent_id,b=u(f);b.armed=!0;const y=typeof _.seq=="number"?_.seq:void 0;if(y!==void 0&&b.watermarks.advance(f,g,y)){m(f,g,b);return}for(const E of p(f,_.ops))t.onEvent(E,{sessionId:f,seq:y??0});y!==void 0&&(b.watermarks.set(f,g,y),I.updateTranscriptSince(f,g,y))}function w(v,f){const _=u(f);_.armed=!0,_.projector.reset(),_.watermarks.clear(f),t.onResync(f,0)}const I=new _k(n,this.config.clientId,{onWireEvent:v=>{const f=my(v),_=vy(v),g=ry(v);g.type==="historyCompacted"&&!pr(g.reason)&&t.onResync(g.sessionId,g.beforeSeq),t.onEvent(g,{sessionId:f,seq:_})},onRawAgentEvent:v=>{if(o&&i.get(v.session_id)?.armed===!0&&pk(v.type))return;const{type:f,seq:_,session_id:g,payload:b,offset:y}=v,E=s.project(f,b,g,{offset:y});for(const S of E){const O=b?.turnId,D=S.type==="assistantDelta"&&typeof O=="number"&&typeof y=="number"&&(f==="assistant.delta"||f==="thinking.delta")?{turnId:O,offset:y,kind:f==="assistant.delta"?"text":"thinking"}:void 0;S.type==="historyCompacted"&&!pr(S.reason)&&t.onResync(g,_),t.onEvent(S,{sessionId:g,seq:_,stream:D})}},onResync:(v,f,_)=>{s.reset(v),t.onResync(v,f,_)},onTranscriptOps:(v,f)=>{h(v,f)},onTranscriptReset:(v,f)=>{w(v,f)},onConnectionState:v=>{t.onConnectionChange(v)},onError:(v,f,_)=>{t.onError(v,f,_)},onTerminalOutput:(v,f,_,g)=>{t.onTerminalOutput?.(v,f,_,g)},onTerminalExit:(v,f,_)=>{t.onTerminalExit?.(v,f,_)}});return I.connect(),{subscribe(v,f){if(I.subscribe(v,f??{seq:0}),o){const _=u(v);I.subscribeTranscript(v,{main:"delta"},{main:_.watermarks.get(v,"main")})}},unsubscribe(v){I.unsubscribe(v),I.unsubscribeTranscript(v),s.disposeSession(v),i.delete(v)},setTranscriptMode(v){if(o!==v&&(o=v,!!v))for(const f of I.transcriptSubscribedSessionIds()){const _=u(f);I.subscribeTranscript(f,{main:"delta"},{main:_.watermarks.get(f,"main")})}},seedSnapshot(v,f){if(f.inFlightTurn===null){s.reset(v);return}const _=s.seedInFlight(v,f.inFlightTurn);for(const g of _)t.onEvent(g,{sessionId:v,seq:f.asOfSeq})},bindNextPromptId(v,f){s.bindNextPromptId(v,f)},abort(v,f){I.abort(v,f)},terminalAttach(v,f,_){I.terminalAttach(v,f,_)},terminalInput(v,f,_){I.terminalInput(v,f,_)},terminalResize(v,f,_,g){I.terminalResize(v,f,_,g)},terminalDetach(v,f){I.terminalDetach(v,f)},terminalClose(v,f){I.terminalClose(v,f)},markSideChannelAgent(v){s.markSideChannelAgent(v)},health(){return I.health()},reconnect(){I.reconnect()},close(){I.close()}}}}function da(e){return{changed:e.changed.map(t=>({providerId:t.provider_id,providerName:t.provider_name,added:t.added,removed:t.removed})),unchanged:e.unchanged,failed:e.failed}}let fr;function Ae(){return fr??=new Pk(wu()),fr}function mr(e){if(typeof e!="object"||e===null)return!1;const t=e.name;return t==="TimeoutError"||t==="AbortError"}function Ku(e){return mr(e)?!0:typeof e!="object"||e===null?!1:mr(e.cause)}const Oa=new Set;function Ek(e){return Oa.add(e),()=>{Oa.delete(e)}}function Lk(e){for(const t of Oa)try{t(e)}catch(n){console.warn("pluginEvent listener failed",n)}}const Bk=3;function Rk(e){return e===void 0||!e.done&&e.attempts0?t[t.length-1]:e}const Fk=/^(?:[A-Za-z]:[\\/]|\\\\|\/\/)/;function Jn(e){const t=e.replaceAll("\\","/"),n=Fk.test(t),s=t.replace(/\/+$/,"");return n?s.toLowerCase():s}function Nk(e,t){const n=Jn(t.cwd);return e.find(s=>Jn(s.root)===n)?.id??t.workspaceId??t.cwd}function qk(e){const{workspaces:t,sessions:n,hiddenWorkspaceRoots:s,sessionsHasMoreByWorkspace:o}=e,i=new Set(s.map(Jn)),u=new Map;for(const I of t){const v=Jn(I.root);i.has(v)||u.has(v)||u.set(v,{...I})}for(const I of n){const v=I.cwd;if(!v)continue;const f=Jn(v);i.has(f)||u.has(f)||u.set(f,{id:I.workspaceId??v,root:v,name:zk(v),sessionCount:0})}const p=new Map;for(const I of n){const v=Nk(t,I);p.set(v,(p.get(v)??0)+1)}const m=[];for(const I of t){const v=Jn(I.root);!i.has(v)&&!m.includes(v)&&m.push(v)}const h=[...u.keys()].filter(I=>!m.includes(I));h.sort((I,v)=>u.get(I).root.localeCompare(u.get(v).root));const w=[];for(const I of[...m,...h]){const v=u.get(I),f=p.get(v.id)??p.get(v.root)??0,_=o[v.id]===!1?f:Math.max(v.sessionCount,f);w.push({...v,sessionCount:_})}return w}function ls(e,t){e.modeVersionBySession={...e.modeVersionBySession??{},[t]:(e.modeVersionBySession?.[t]??0)+1}}function Wk(e,t,n){return(e.modeVersionBySession?.[t]??0)===n}function Hk(e,t){if(t.length===0||e.length===0)return t;const n=Date.parse(t[0].createdAt);if(Number.isNaN(n))return t;const s=new Set(t.map(u=>u.id)),o=new Set(t.filter(u=>u.role==="user").map(u=>u.id)),i=e.filter(u=>{const p=Date.parse(u.createdAt);return!(Number.isNaN(p)||p>=n||s.has(u.id)||u.role==="user"&&u.promptId!==void 0&&o.has(u.promptId))});return i.length>0?[...i,...t]:t}function vr(e,t){const n=new Set(e.map(m=>m.id)),s=t.filter(m=>m.kind==="subagent"&&!n.has(m.id));if(s.length===0)return e;const o=new Map(e.map(m=>[m.id,m])),i=new Set,u=s.map(m=>{const h=m.backgroundTaskId!==void 0?o.get(m.backgroundTaskId):void 0;if(h===void 0)return m;i.add(h.id);const w=m.status==="running"&&h.status!=="running";return{...m,status:m.status==="running"?h.status:m.status,subagentPhase:w?h.status==="completed"?"completed":"failed":m.subagentPhase,completedAt:m.completedAt??h.completedAt,outputPreview:h.outputPreview??m.outputPreview,outputBytes:h.outputBytes??m.outputBytes}});return[...e.filter(m=>!i.has(m.id)),...u]}function Uk(e,t){if(e.length===0)return t;const n=new Map(t.map(u=>[u.id,u])),s=new Set(e.map(u=>u.id)),o=e.map(u=>{const p=n.get(u.id);return p?{...u,outputLines:p.outputLines,text:p.text}:u}),i=t.filter(u=>!s.has(u.id));return i.length===0?o:[...o,...i]}function Vk(e){const t=new Map,n=new Set;function s(i){const u=t.get(i);if(u!==void 0)return u;const p=(async()=>e(i))().finally(()=>{t.delete(i),n.delete(i)&&s(i)});return t.set(i,p),p}function o(i){if(t.has(i)){n.add(i);return}s(i)}return{run:s,request:o}}const hr=2e3,gr=100,Gu=80,Qu=24;function yr(e){return{...e,lines:[],history:[],attached:!1,pendingTail:"",lastSeq:0}}function jk(e){return e.replace(/[\u001b\u009b][[\]()#;?]*(?:(?:(?:[a-zA-Z\d]*(?:;[-a-zA-Z\d/#&.:=?%@~_]*)*)?\u0007)|(?:(?:\d{1,4}(?:[;:]\d{0,4})*)?[\dA-PR-TZcf-nq-uy=><~]))/g,"")}function Kk(){const e=x(void 0),t=x([]),n=x({}),s=x(null),o=x(!1),i=x(null);let u=null;const p=$(()=>{const T=s.value;return T===null?null:n.value[T]??null}),m=$(()=>p.value?.lines.join(`
-`)??"");function h(T){const L=n.value[T];if(L!==void 0)return L;const F=t.value.find(k=>k.id===T),H=yr(F??{id:T,sessionId:e.value??"",cwd:"",shell:"",cols:Gu,rows:Qu,status:"running",createdAt:""});return n.value[T]=H,H}function w(T){if(e.value===T)return;const L=e.value;if(L!==void 0&&u!==null)for(const F of Object.values(n.value))F.attached&&u.terminalDetach(L,F.id);e.value=T,t.value=[],n.value={},s.value=null,o.value=!1,i.value=null}function I(T){t.value=T;const L=new Set(T.map(F=>F.id));for(const[F,H]of Object.entries(n.value)){if(!L.has(F)){delete n.value[F];continue}const k=T.find(P=>P.id===F);k&&Object.assign(H,k)}s.value!==null&&!L.has(s.value)&&(s.value=T[0]?.id??null)}function v(T){const L=t.value.findIndex(H=>H.id===T.id);L===-1?t.value.push(T):t.value.splice(L,1,T);const F=n.value[T.id];F!==void 0?Object.assign(F,T):n.value[T.id]=yr(T)}function f(T){n.value[T]?.attached&&e.value!==void 0&&u!==null&&u.terminalDetach(e.value,T),delete n.value[T];const F=t.value.findIndex(H=>H.id===T);if(F!==-1&&t.value.splice(F,1),s.value===T){const H=t.value[F]??t.value[t.value.length-1];s.value=H?.id??null}}function _(T){const L=h(T);if(L.attached)return;L.attached=!0;const F=e.value;F!==void 0&&u!==null&&u.terminalAttach(F,T,L.lastSeq)}function g(T){const L=n.value[T];if(L===void 0||!L.attached)return;L.attached=!1;const F=e.value;F!==void 0&&u!==null&&u.terminalDetach(F,T)}function b(T,L){const F=jk(L).split(`
-`),H=F[0]??"";T.pendingTail+=H;for(let k=1;khr&&T.lines.splice(0,T.lines.length-hr)}function y(T,L,F,H){if(e.value===void 0||e.value!==T)return;const k=h(L);H<=k.lastSeq||(k.lastSeq=H,b(k,F))}function E(T,L,F){if(e.value===void 0||e.value!==T)return;const H=h(L);H.status!=="exited"&&(H.status="exited",H.exitCode=F)}function S(T,L){const F=L.trim();if(F.length===0)return"";const H=h(T);H.history.at(-1)!==F&&(H.history.push(F),H.history.length>gr&&H.history.splice(0,H.history.length-gr));const k=e.value;return k!==void 0&&u!==null&&H.status!=="exited"&&u.terminalInput(k,T,`${F}
-`),F}function O(T,L,F){const H=h(T);H.cols=L,H.rows=F;const k=e.value;k!==void 0&&u!==null&&u.terminalResize(k,T,L,F)}function D(T){u=T;const L=e.value;if(L!==void 0)for(const F of Object.values(n.value))F.attached&&T.terminalAttach(L,F.id,F.lastSeq)}return{sessionId:e,terminals:t,activeId:s,loading:o,error:i,active:p,activeLines:m,entryOf:h,setSession:w,setLoading:T=>{o.value=T},setError:T=>{i.value=T},syncTerminals:I,upsertTerminal:v,removeTerminal:f,setActive:T=>{s.value=T},attach:_,detach:g,handleOutput:y,handleExit:E,submitInput:S,resize:O,bindTransport:D}}const Gk=new Set(["assistantDelta","agentDelta","toolOutput","taskProgress"]);function Qk(e){return Gk.has(e.type)}const Yk=50,Zk=100,Da=32*1024,Xk={requestFrame(e){return typeof requestAnimationFrame=="function"?requestAnimationFrame(e):null},cancelFrame(e){typeof cancelAnimationFrame=="function"&&cancelAnimationFrame(e)},requestTask(e){return setTimeout(e,Yk)},cancelTask(e){clearTimeout(e)}};function Jk(e,t,n={}){const s=n.scheduler??Xk,o=Math.max(1,Math.floor(n.maxItemsPerSlice??Zk)),i=[];let u=0,p=null,m=null,h=0,w=!1;const I=()=>i.length-u,v=()=>{h+=1,p!==null&&(s.cancelFrame(p),p=null),m!==null&&(s.cancelTask(m),m=null)},f=()=>{u===i.length?(i.length=0,u=0):u>=1024&&(i.splice(0,u),u=0)};let _;const g=()=>{if(w||p!==null||m!==null||I()===0)return;const y=++h,E=()=>{y===h&&_()};p=s.requestFrame(E),m=s.requestTask(E)};_=()=>{v();let y=0;for(;!w&&y{if(!w){if(t(y)){const E=i.length>u?i.at(-1):void 0,S=E===void 0?void 0:n.coalesce?.(E,y);S===void 0?i.push(y):i[i.length-1]=S,g();return}if(I()===0){e(y);return}i.push(y),_()}});return b.flush=()=>{if(!w){for(v();!w&&u{if(w||I()===0)return;let E=u;for(let S=u;S{w||(w=!0,v(),i.length=0,u=0)},b}function za(e){if(e.type==="assistantDelta"){if(e.delta.text!==void 0&&e.delta.thinking===void 0)return{kind:"text",value:e.delta.text};if(e.delta.thinking!==void 0&&e.delta.text===void 0)return{kind:"thinking",value:e.delta.thinking}}}function e2(e){if(e.appEvent.type!=="assistantDelta")return[e];const t=e.appEvent,n=e.meta.stream,s=za(t);if(n===void 0||s===void 0||n.kind!==s.kind||s.value.length<=Da)return[e];const o=[];let i=0;for(;ii&&/[\uD800-\uDBFF]/u.test(s.value[u-1])&&/[\uDC00-\uDFFF]/u.test(s.value[u])&&(u-=1);const p=s.value.slice(i,u);o.push({appEvent:{...t,delta:s.kind==="text"?{text:p}:{thinking:p}},meta:{...e.meta,stream:{...n,offset:n.offset+i}}}),i=u}return o}function t2(e,t){if(e.appEvent.type!=="assistantDelta"||t.appEvent.type!=="assistantDelta")return;const n=e.meta.stream,s=t.meta.stream,o=za(e.appEvent),i=za(t.appEvent);if(n===void 0||s===void 0||o===void 0||i===void 0||e.meta.sessionId!==t.meta.sessionId||e.appEvent.sessionId!==t.appEvent.sessionId||e.appEvent.messageId!==t.appEvent.messageId||e.appEvent.contentIndex!==t.appEvent.contentIndex||n.turnId!==s.turnId||n.kind!==s.kind||o.kind!==i.kind||n.kind!==o.kind||s.kind!==i.kind||s.offset!==n.offset+o.value.length||o.value.length+i.value.length>Da)return;const u=o.value+i.value;return{appEvent:{...e.appEvent,delta:o.kind==="text"?{text:u}:{thinking:u}},meta:{...t.meta,stream:{...n}}}}const Yu=["blue","mono"],Zu=["light","dark","system"],Xu=14,n2=12,s2=20;function o2(){const e=$t(qe.accent);return e&&Yu.includes(e)?e:"blue"}function i2(e){typeof document>"u"||!document.documentElement||(document.documentElement.dataset.accent=e)}function a2(){const e=$t(qe.colorScheme);return e&&Zu.includes(e)?e:"system"}function l2(e){if(typeof document>"u"||!document.documentElement)return;document.documentElement.dataset.colorScheme=e;const t=document.querySelectorAll('meta[name="theme-color"]');if(t.length===0)return;const n=e==="dark"?"#0d1117":e==="light"?"#ffffff":null;t.forEach(s=>{const i=(s.getAttribute("media")??"").includes("dark")?"#0d1117":"#ffffff";s.setAttribute("content",n??i)})}function rl(e){return Number.isFinite(e)?Math.min(s2,Math.max(n2,Math.round(e))):Xu}function r2(){const e=$t(qe.uiFontSize);return e===null?Xu:rl(Number(e))}function u2(e){typeof document>"u"||!document.documentElement||document.documentElement.style.setProperty("--base-ui-font-size",`${rl(e)}px`)}const ul=x(a2()),cl=x(o2()),dl=x(r2());Oe(ul,l2,{immediate:!0});Oe(cl,i2,{immediate:!0});Oe(dl,u2,{immediate:!0});function c2(e){Zu.includes(e)&&(ul.value=e,Ot(qe.colorScheme,e))}function d2(e){Yu.includes(e)&&(cl.value=e,Ot(qe.accent,e))}function p2(e){const t=rl(e);dl.value=t,Ot(qe.uiFontSize,String(t))}const f2=600,m2=250,Ui=250,v2=1e3,h2=160,Ei=x(!1);let to=[],so=null,Li=-Ui;function g2(){to=[],Li=-Ui,Ei.value=!1,so!==null&&(clearTimeout(so),so=null)}function y2(){Ei.value=!0,so!==null&&clearTimeout(so),so=setTimeout(()=>{so=null,to=[],Li=-Ui,Ei.value=!1},v2)}function k2(e){if(e<=0)return;const t=Date.now();to.push({time:t,chars:e});const n=t-f2;if(to=to.filter(p=>p.time>=n),t-Lip+m.chars,0)/o*1e3>=h2&&y2()}function Ju(){return{colorScheme:ul,accent:cl,uiFontSize:dl,fastMoon:Ei,setColorScheme:c2,setAccent:d2,setUiFontSize:p2,resetFastMoon:g2,recordMoonDelta:k2}}function b2(e,t,n){return e==="idle"&&!t&&!n}function pl(e,t){const n=$t(e);return n===null?t:n==="1"}const fl=x(pl(qe.notifyOnComplete,!0)),ml=x(pl(qe.notifyOnQuestion,!1)),vl=x(pl(qe.notifyOnApproval,!1)),hl=x(typeof Notification<"u"?Notification.permission:"denied"),w2="/favicon.ico";async function gl(e,t,n){if(!n){e.value=!1,Ot(t,"0");return}if(typeof Notification>"u")return;let s=Notification.permission;if(s==="default")try{s=await Notification.requestPermission()}catch{}hl.value=s,s==="granted"&&(e.value=!0,Ot(t,"1"))}function S2(e){return gl(fl,qe.notifyOnComplete,e)}function C2(e){return gl(ml,qe.notifyOnQuestion,e)}function _2(e){return gl(vl,qe.notifyOnApproval,e)}function yl(...e){for(const t of e){const n=t?.trim();if(n)return n}return""}function $2(e){return{title:dt.global.t("settings.notifyTitle"),body:yl(e,dt.global.t("settings.notifyFallback"))}}function M2(e,t){return{title:dt.global.t("settings.notifyQuestionTitle"),body:yl(t,e,dt.global.t("settings.notifyQuestionFallback"))}}function x2(e,t){return{title:dt.global.t("settings.notifyApprovalTitle"),body:yl(t,e,dt.global.t("settings.notifyApprovalFallback"))}}function kl(e,t,n,s){if(!e||typeof Notification>"u")return;const o=Notification.permission;if(o!=="denied"){if(o==="default"){Notification.requestPermission().then(i=>{hl.value=i,i==="granted"&&kr(t,n,s)});return}kr(t,n,s)}}function kr(e,t,n){if(!e.isUserWatching)try{const s=new Notification(t.title,{body:t.body,tag:n,icon:w2});s.onclick=()=>{try{window.focus()}catch{}e.onClick(),s.close()}}catch{}}function I2(e,t){kl(fl.value,t,$2(t.sessionTitle),`kimi-complete-${e}-${t.promptId??Date.now()}`)}function A2(e){kl(ml.value,e,M2(e.sessionTitle,e.questionPreview),`kimi-question-${e.questionId}`)}function T2(e){kl(vl.value,e,x2(e.sessionTitle,e.toolName),`kimi-approval-${e.approvalId}`)}function P2(){return{notifyOnComplete:fl,notifyOnQuestion:ml,notifyOnApproval:vl,notifyPermission:hl,setNotifyOnComplete:S2,setNotifyOnQuestion:C2,setNotifyOnApproval:_2,maybeNotifyCompletion:I2,maybeNotifyQuestion:A2,maybeNotifyApproval:T2}}function E2(){return $t(qe.soundOnComplete)==="1"}const Ro=x(E2());function L2(){if(typeof window>"u")return;const e=window;return window.AudioContext??e.webkitAudioContext}let pa=null;function ec(){const e=L2();if(!e)return null;if(pa===null)try{pa=new e}catch{return null}return pa}function tc(){if(!Ro.value)return;const e=ec();e!==null&&e.state==="suspended"&&e.resume().then(()=>{xs("sound: audio context resumed",{state:e.state})},t=>{xs("sound: audio context resume rejected",{error:String(t)})})}let br=!1;function B2(){if(br||typeof window>"u")return;br=!0;const e=()=>{tc()};window.addEventListener("pointerdown",e,{capture:!0}),window.addEventListener("keydown",e,{capture:!0})}B2();function R2(e){Ro.value=e,Ot(qe.soundOnComplete,e?"1":"0"),e&&tc()}function wr(e,t,n,s,o){const i=e.createOscillator(),u=e.createGain();i.type="sine",i.frequency.value=t,i.connect(u),u.connect(e.destination);const p=e.currentTime+n;u.gain.setValueAtTime(1e-4,p),u.gain.exponentialRampToValueAtTime(o,p+.01),u.gain.exponentialRampToValueAtTime(1e-4,p+s),i.start(p),i.stop(p+s+.02)}function bl(){const e=ec();if(e===null){xs("sound: skipped, AudioContext unavailable");return}if(e.state!=="running"){xs("sound: skipped, context not running",{state:e.state}),e.state==="suspended"&&e.resume().then(()=>{xs("sound: context resumed for next time",{state:e.state})},t=>{xs("sound: resume rejected",{error:String(t)})});return}try{wr(e,880,0,.16,.18),wr(e,1320,.1,.22,.16),xs("sound: chime scheduled",{state:e.state})}catch(t){xs("sound: failed to play",{error:String(t)})}}function O2(){Ro.value&&bl()}function D2(){Ro.value&&bl()}function z2(){Ro.value&&bl()}function F2(){return{soundOnComplete:Ro,setSoundOnComplete:R2,maybePlayCompletionSound:O2,maybePlayQuestionSound:D2,maybePlayApprovalSound:z2}}const N2=1e3,q2=4096,Sr=32*1024;function W2(e,t){let n=null,s;const o=new Set;async function i(v){try{const _=await Ae().listTasks(v);e.tasksBySession={...e.tasksBySession,[v]:vr(_,e.tasksBySession[v]??[])},await u(v,_)}catch{}}async function u(v,f){if(e.activeSessionId!==v)return;const _=f??e.tasksBySession[v]??[],g=Ae(),b=new Map;if(await Promise.all(_.map(async E=>{if((E.status==="completed"||E.status==="failed"||E.status==="cancelled")&&!o.has(E.id)&&!((E.outputLines?.length??0)>0))try{const O=await g.getTask(v,E.id,{withOutput:!0,outputBytes:Sr});O.outputPreview!==void 0&&b.set(E.id,{preview:O.outputPreview,bytes:O.outputBytes}),o.add(E.id)}catch{}})),b.size===0)return;const y=e.tasksBySession[v]??[];e.tasksBySession={...e.tasksBySession,[v]:y.map(E=>{const S=b.get(E.id)??(E.backgroundTaskId!==void 0?b.get(E.backgroundTaskId):void 0);return S?{...E,outputPreview:S.preview,outputBytes:S.bytes}:E})}}async function p(v){if(e.activeSessionId!==v)return;const f=Ae();let _;try{_=await f.listTasks(v)}catch{return}const g=new Map;await Promise.all(_.map(async S=>{const O=S.status==="running",D=S.status==="completed"||S.status==="failed"||S.status==="cancelled";if(!(!O&&!D)&&!(D&&(o.has(S.id)||(S.outputLines?.length??0)>0)))try{const T=await f.getTask(v,S.id,{withOutput:!0,outputBytes:O?q2:Sr});T.outputPreview!==void 0&&g.set(S.id,{preview:T.outputPreview,bytes:T.outputBytes}),D&&o.add(S.id)}catch{}}));const b=e.tasksBySession[v]??[],y=new Map(b.map(S=>[S.id,S])),E=_.map(S=>{const O=y.get(S.id),D=g.get(S.id);return{...S,outputLines:O?.outputLines,text:O?.text,outputPreview:D?.preview??O?.outputPreview,outputBytes:D?.bytes??O?.outputBytes}});e.tasksBySession={...e.tasksBySession,[v]:vr(E,b)}}function m(v){n!==null&&s===v||(h(),s=v,p(v),n=setInterval(()=>{typeof document<"u"&&document.visibilityState==="hidden"||(e.activeSessionId===v?p(v):h())},N2))}function h(){n!==null&&(clearInterval(n),n=null),s=void 0,o.clear()}const w=x(0);let I=null;return Oe(()=>t.value.some(v=>v.status==="running"),v=>{v&&I===null?I=setInterval(()=>{w.value=(w.value+1)%Number.MAX_SAFE_INTEGER},1e3):!v&&I!==null&&(clearInterval(I),I=null)},{immediate:!0}),Oe(()=>{const v=e.activeSessionId;if(!v)return{sid:void 0,hasRunning:!1};const f=e.tasksBySession[v]??[];return{sid:v,hasRunning:f.some(_=>_.status==="running")}},({sid:v,hasRunning:f},_,g)=>{let b;f&&v!==void 0?m(v):v!==void 0?b=setTimeout(()=>{(e.tasksBySession[v]??[]).some(E=>E.status==="running")||h()},1500):h(),g(()=>{b!==void 0&&clearTimeout(b)})},{deep:!0,immediate:!0}),{taskClock:$(()=>w.value),loadTasksForSession:i}}function Vi(e){if(e===void 0)return"toggle";const t=e.capabilities??[];return t.includes("always_thinking")?"always-on":t.includes("thinking")||e.adaptiveThinking===!0?"toggle":"unsupported"}function nc(e){return e?.supportEfforts??[]}function H2(e){return e[Math.floor(e.length/2)]}function Zo(e){if(Vi(e)==="unsupported")return"off";const t=nc(e);return t.length>0?e?.defaultEffort??H2(t):"on"}function ji(e){const t=nc(e),n=Vi(e);return t.length>0?n==="always-on"?[...t]:["off",...t]:n==="always-on"?["on"]:n==="unsupported"?["off"]:["on","off"]}function Fa(e){return e.length===0?e:e.charAt(0).toUpperCase()+e.slice(1)}function U2(e){return e!=="off"}function V2(e,t){return ji(e).includes(t)}function wl(e,t){return t==="off"?"off":t==="on"?Zo(e):t}function Xo(e,t){return t??Zo(e)}function j2(e,t){if(e==="off")return{enabled:!1};if(e==="on")return{enabled:!0};const n=t?.at(-1);return n!==void 0&&e===n?{enabled:!0}:{enabled:!0,effort:e}}function K2(e,t,n){return!n||e===void 0?t:Zo(e)}const cs=x(null),Ao=x(!1);function Sl(e){const t=cs.value;!t||Ao.value||(cs.value=null,t.resolve(e))}async function G2(){const e=cs.value;if(!(!e||Ao.value)){if(!e.action){Sl(!0);return}Ao.value=!0;try{await e.action(),cs.value===e&&(cs.value=null),e.resolve(!0)}catch(t){cs.value===e&&(cs.value=null),e.reject(t)}finally{Ao.value=!1}}}function Q2(e){return Ao.value?Promise.resolve(!1):(cs.value&&Sl(!1),new Promise((t,n)=>{cs.value={...e,resolve:t,reject:n}}))}function vo(){return{current:cs,busy:Ao,confirm:Q2,settle:Sl,runAction:G2}}function Y2(e){return e.startsWith("diff --git")||e.startsWith("index ")||e.startsWith("--- ")||e.startsWith("+++ ")||e.startsWith("new file mode")||e.startsWith("deleted file mode")||e.startsWith("old mode")||e.startsWith("new mode")||e.startsWith("similarity index")||e.startsWith("dissimilarity index")||e.startsWith("rename from")||e.startsWith("rename to")||e.startsWith("copy from")||e.startsWith("copy to")||e.startsWith("Binary files")}function Z2(e){const t=[];if(!e)return t;let n=0,s=0,o=!1;for(const i of e.split(`
-`)){if(i.startsWith("diff --git")){o=!1;continue}if(!o&&Y2(i))continue;if(i.startsWith("@@")){const m=/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/.exec(i);m&&(n=Number.parseInt(m[1],10),s=Number.parseInt(m[2],10)),o=!0,t.push({type:"hunk",text:i});continue}if(!o||i.startsWith("\\"))continue;const u=i.charAt(0),p=i.slice(1);u==="+"?(t.push({type:"add",text:p,newNo:s}),s+=1):u==="-"?(t.push({type:"del",text:p,oldNo:n}),n+=1):u===" "&&(t.push({type:"context",text:p,oldNo:n,newNo:s}),n+=1,s+=1)}return t}function X2(e,t){return e?"goal":t?"plan":null}function sc(e){return e.planArmed||e.planMode}function J2(e){return{planMode:e.planMode||e.planArmed,planArmed:!1}}function eb(e){return{planMode:!1,planArmed:!1}}const Na="/sessions/";function Cr(e){const{pathname:t}=e;if(!t.startsWith(Na))return;const n=t.slice(Na.length);if(!(!n||n.includes("/")))try{const s=decodeURIComponent(n);return s.length>0?s:void 0}catch{return}}function tb(e){return e===void 0||e.length===0?"/":`${Na}${encodeURIComponent(e)}`}const nb=50,qa=5,sb=40402,ob=40410,ib=40902,ab=2e3;function fa(e){return _n(e)&&e.code===ib}const lb=40904;function rb(e){return _n(e)&&e.code===lb}const ub=41301,cb=413;function db(e){return _n(e)?e.code===ub||e.code===cb:!1}const Qs=Pn({}),bi=Pn({}),ma=Pn({}),as=Pn(new Set),Ki=new Map,ro=new Map,Bi=new Map;let pb=0;const Zs=new Map,fb=3;let _r=0;function mb(){return _r+=1,`${Date.now().toString(36)}-${_r}`}function vb(e){return{generation:Ki.get(e)??0,pending:(ro.get(e)?.size??0)>0}}function Wa(e){const t=++pb;Ki.set(e,t);const n=ro.get(e)??new Set;return n.add(t),ro.set(e,n),t}function Ha(e,t){const n=ro.get(e);if(n===void 0||(n.delete(t),n.size>0))return;ro.delete(e);const s=Bi.get(e);Bi.delete(e),s?.()}function hb(e){Ki.delete(e),ro.delete(e),Bi.delete(e),Zs.delete(e)}function gb(e,t){return!t.pending&&t.generation===(Ki.get(e)??0)}function yb(e,t){if((ro.get(e)?.size??0)===0){t();return}Bi.set(e,t)}function kb(e,t){const{t:n}=dt.global,{confirm:s}=vo(),{taskPoller:o,sideChat:i,modelProvider:u,pushOperationFailure:p,activity:m,sessionsKnownEmpty:h,setSessions:w,updateSession:I,upsertSessionFront:v,appendSession:f,forgetSession:_,setActiveSessionId:g,updateSessionMessages:b,nextOptimisticMsgId:y,getEventConn:E,syncSessionFromSnapshot:S,reopenSession:O,hasLoadedMessages:D,refreshSessionStatus:T,refreshSessionGoal:L,persistSessionProfile:F,mergedWorkspaces:H,workspacesView:k,status:P,workspaceIdForSession:R,savePermissionToStorage:se,savePlanModeToStorage:ae,savePlanArmedToStorage:ve,saveSwarmModeToStorage:me,saveSupermoonModeToStorage:Z,saveGoalModeToStorage:oe,draftModes:ie,saveUnread:ke,saveActiveWorkspaceToStorage:$e,saveHiddenWorkspacesToStorage:he,goalErrorMessage:V,resetFastMoon:Q,initialized:Ce,connectIssue:re,selectedDiffPath:ee,fileDiffLines:pe,fileDiffLoading:De}=t;let X=!1;async function Y(C){if(e.messagesLoadingMoreBySession[C])return;const z=e.messagesBySession[C];if(!z||z.length===0)return;const q=z[0].id;e.messagesLoadingMoreBySession={...e.messagesLoadingMoreBySession,[C]:!0},e.messagesLoadMoreErrorBySession={...e.messagesLoadMoreErrorBySession,[C]:!1};try{const de=await Ae().listMessages(C,{beforeId:q,pageSize:nb}),ye=[...de.items].reverse();b(C,Me=>[...ye,...Me]),e.messagesHasMoreBySession={...e.messagesHasMoreBySession,[C]:de.hasMore}}catch(de){e.messagesLoadMoreErrorBySession={...e.messagesLoadMoreErrorBySession,[C]:!0},p("loadOlderMessages",de,{sessionId:C})}finally{e.messagesLoadingMoreBySession={...e.messagesLoadingMoreBySession,[C]:!1}}}function B(C){o.loadTasksForSession(C),Le(C),T(C),L(C),Object.prototype.hasOwnProperty.call(u.skillsBySession.value,C)||u.loadSkillsForSession(C)}async function J(C){const z=e.activeSessionId;if(z){ee.value=C,pe.value=[],De.value=!0;try{const de=await Ae().getFileDiff(z,C);if(ee.value!==C)return;pe.value=Z2(de.diff)}catch(q){ee.value===C&&(pe.value=[]),console.warn("[loadFileDiff] diff unavailable for",C,q)}finally{ee.value===C&&(De.value=!1)}}}function Ee(){ee.value=null,pe.value=[],De.value=!1}async function Le(C){try{const q=await Ae().getGitStatus(C);e.gitStatusBySession={...e.gitStatusBySession,[C]:q}}catch{}}async function it(){try{const z=await Ae().getAuth();return e.authReady=z.ready,e.defaultModel=z.defaultModel,e.managedProviderStatus=z.managedProvider?.status??null,re.value=null,"proceed"}catch(C){return _n(C)&&(C.code===401||C.code===Vu)?(re.value=null,"server-auth-required"):(re.value=(C instanceof Error?C.message:String(C)).slice(0,140),"retry")}}async function at(){let C=!0;for(;;){const z=await it();if(z!=="retry")return z;C&&(re.value=null,C=!1),await new Promise(q=>{setTimeout(q,ab)})}}async function Ge(){try{const C=Ae();e.config=await C.getConfig()}catch{}}async function je(C){try{const q=await Ae().setConfig(C);return e.config=q,e.defaultModel=q.defaultModel??null,!0}catch(z){return p("setConfig",z),!1}}const He=100,Mt=30,wt=720*60*1e3;async function xt(){const C=Ae(),z=[];let q,de;for(;;){let ye;try{ye=await C.listSessions({pageSize:He,beforeId:q,excludeEmpty:!0})}catch(Me){if(z.length===0)throw Me;de=Me;break}if(z.push(...ye.items),!ye.hasMore||ye.items.length===0)break;q=ye.items[ye.items.length-1].id}return{sessions:z,error:de}}function Jt(C){const z=new Map(e.sessions.map(q=>[q.id,q.usage]));w(C.map(q=>{const de=z.get(q.id);return de!==void 0&&Aa(q.usage)&&!Aa(de)?{...q,usage:de}:q}))}function Vt(C){const z=[...C],q=new Set(z.map(de=>de.id));for(const de of e.sessions)q.has(de.id)||(z.push(de),q.add(de.id));return z.sort((de,ye)=>new Date(ye.updatedAt).getTime()-new Date(de.updatedAt).getTime()),z}async function Dt(C){const z=Ae(),q=[],de=Date.now(),ye=Je=>de-new Date(Je.updatedAt).getTime();let Me,Ye=!1,ot=!0,pt;for(;;){let Je;try{Je=await z.listSessions({workspaceId:C,pageSize:qa,beforeId:Me,excludeEmpty:!0})}catch(Ke){if(ot)throw Ke;pt=Ke,Ye=!0;break}if(Ye=Je.hasMore,Je.items.length===0)break;const Ct=Je.items[Je.items.length-1],bn=ye(Ct)>=wt;if(!ot&&bn){const Ke=Je.items.findIndex(Ut=>ye(Ut)>=wt),Ze=Ke>=0?Ke+1:Je.items.length;q.push(...Je.items.slice(0,Ze)),Ye=Je.hasMore||ZeDt(Ke.id))),q=[],de=new Set,ye=new Map,Me=new Set;let Ye;for(let Ke=0;KeMe.has(Ke.id)).map(Ke=>Ke.root)),pt=new Set(C.map(Ke=>Ke.id));for(const Ke of e.sessions)!(Ke.workspaceId!==void 0&&pt.has(Ke.workspaceId)?Me.has(Ke.workspaceId):ot.has(Ke.cwd)||Me.has(R(Ke)))||de.has(Ke.id)||(q.push(Ke),de.add(Ke.id));const Je={},Ct={},bn={};for(const{id:Ke}of C){const Ze=ye.get(Ke);if(Ze===void 0){const Ut=e.sessionsHasMoreByWorkspace[Ke],bt=e.sessionsCursorByWorkspace[Ke],ln=e.sessionsInitialCountByWorkspace[Ke];Ut!==void 0&&(Je[Ke]=Ut),bt!==void 0&&(Ct[Ke]=bt),ln!==void 0&&(bn[Ke]=ln);continue}Je[Ke]=Ze.hasMore,Ct[Ke]=Ze.items.length>0?Ze.items[Ze.items.length-1].id:void 0,bn[Ke]=Math.max(Ze.items.length,qa)}return e.sessionsHasMoreByWorkspace=Je,e.sessionsCursorByWorkspace=Ct,e.sessionsInitialCountByWorkspace=bn,e.sessionsFullyLoaded=!1,q.sort((Ke,Ze)=>new Date(Ze.updatedAt).getTime()-new Date(Ke.updatedAt).getTime()),Me.size>0&&p("load",Ye),q}async function on(C){if(e.sessionsLoadingMoreByWorkspace[C]||e.sessionsHasMoreByWorkspace[C]===!1)return;const z=e.sessionsCursorByWorkspace[C];if(z!==void 0){e.sessionsLoadingMoreByWorkspace={...e.sessionsLoadingMoreByWorkspace,[C]:!0};try{const q=await Ae().listSessions({workspaceId:C,pageSize:Mt,beforeId:z,excludeEmpty:!0}),de=new Set(e.sessions.map(Me=>Me.id)),ye=q.items.filter(Me=>!de.has(Me.id));ye.length>0&&w([...e.sessions,...ye]),e.sessionsCursorByWorkspace={...e.sessionsCursorByWorkspace,[C]:q.items.length>0?q.items[q.items.length-1].id:z},e.sessionsHasMoreByWorkspace={...e.sessionsHasMoreByWorkspace,[C]:q.hasMore}}catch(q){p("loadMoreSessions",q)}finally{e.sessionsLoadingMoreByWorkspace={...e.sessionsLoadingMoreByWorkspace,[C]:!1}}}}async function ut(){if(e.sessionsFullyLoaded)return;const C=await xt().catch(de=>(console.warn("[kimi-web] loadAllSessions failed; search covers only loaded sessions",de),null));if(C===null)return;const z=C.error===void 0?C.sessions:Vt(C.sessions);if(Jt(z),e.sessionsFullyLoaded=C.error===void 0,C.error!==void 0)return;const q={};for(const de of e.workspaces)q[de.id]=!1;e.sessionsHasMoreByWorkspace=q}async function zt(){const C=await Ae().getMeta().catch(()=>null);C!==null&&(e.serverVersion=C.serverVersion,e.availableOpenInApps=C.openInApps,e.dangerousBypassAuth=C.dangerousBypassAuth,e.backend=C.backend)}async function En(){const C=Date.now();let z="accepted";Qt("app:load:start"),e.loading=!0;const q=!Ce.value;let de=!0;try{if(q&&await at()==="server-auth-required"){de=!1,z="auth-required";return}const ye=Ae();await Promise.all([ye.getHealth().catch(()=>null),zt(),u.loadModels()]),q||await it(),await Ge(),await St();const Me=await ts(),Ye=Me??e.sessions;Me!==void 0&&Jt(Me);const ot=Ye[0],pt=e.activeWorkspaceId;!(pt!==null&&H.value.some(bn=>bn.id===pt))&&ot&&Yt(R(ot)),Ft();const Ct=typeof window<"u"?Cr(window.location):void 0;!e.activeSessionId&&Ct!==void 0&&(e.sessions.some(Ke=>Ke.id===Ct)||await At(Ct))&&await st(Ct,{urlMode:"replace"}),!e.activeSessionId&&Ye.length>0&&await st(Ye[0].id,{urlMode:"replace"})}catch(ye){z="failed",p("load",ye)}finally{e.loading=!1,de&&(Ce.value=!0),Qt("app:load:complete",{status:z,sessionId:e.activeSessionId,sessionCount:e.sessions.length,workspaceCount:e.workspaces.length,durationMs:Date.now()-C})}}async function St(){try{const C=Ae(),[z,q]=await Promise.all([C.listWorkspaces().catch(()=>[]),C.getFsHome().catch(()=>({home:"",recentRoots:[]}))]);e.workspaces=Mn(z),e.fsHome=q.home||null,e.recentRoots=q.recentRoots}catch{}}function Mn(C){const z=pi();return Object.keys(z).length===0?C:C.map(q=>{const de=z[q.root];return de!==void 0?{...q,name:de}:q})}function Yt(C){e.activeWorkspaceId=C,$e(C)}function xn(C){Yt(C);const z=e.sessions.filter(q=>R(q)===C);if(z.length>0){const q=z[0];q&&q.id!==e.activeSessionId&&st(q.id)}else g(void 0),Wt(void 0,"push")}function It(C){const z=pi()[C.root],q=z!==void 0?{...C,name:z}:C,de=Jn(q.root);e.hiddenWorkspaceRoots.some(Ye=>Jn(Ye)===de)&&(e.hiddenWorkspaceRoots=e.hiddenWorkspaceRoots.filter(Ye=>Jn(Ye)!==de),he(e.hiddenWorkspaceRoots));const ye=e.workspaces.findIndex(Ye=>Ye.id===q.id||Ye.root===q.root);if(ye===-1){e.workspaces=[q,...e.workspaces];return}const Me=[...e.workspaces];Me[ye]=q,e.workspaces=Me}function an(C){if(C.type==="workspaceCreated"||C.type==="workspaceUpdated"){It(C.workspace);return}const z=e.workspaces.find(de=>de.id===C.workspaceId)?.root??C.root;if(z&&!e.hiddenWorkspaceRoots.includes(z)&&(e.hiddenWorkspaceRoots=[...e.hiddenWorkspaceRoots,z],he(e.hiddenWorkspaceRoots)),e.workspaces=e.workspaces.filter(de=>de.id!==C.workspaceId&&de.root!==z),e.activeWorkspaceId===C.workspaceId||e.activeWorkspaceId===z){const de=k.value[0]?.id??null;if(e.activeWorkspaceId=de,de)$e(de);else try{ao(qe.activeWorkspace)}catch{}g(void 0),e.sessionLoading=!1,Ee(),Wt(void 0,"replace")}}function dn(){g(void 0),Wt(void 0,"push")}function vn(C){Yt(C),dn(),Ee()}async function Zt(C){const z=H.value.find(Ct=>Ct.id===C);if(!z)return null;const q=e.thinking,de=Ae();let ye,Me=z.root;try{const Ct=await de.addWorkspace({root:z.root});ye=Ct.id,Me=Ct.root,It(Ct)}catch{}const Ye=u.draftModel.value??void 0,ot=await de.createSession({workspaceId:ye,cwd:Me,model:Ye});u.draftModel.value=null;const pt=Ye!==void 0&&(!ot.model||ot.model.length===0)?{...ot,model:Ye}:ot;v(pt),Yt(ot.workspaceId??ye??C),await st(ot.id);const Je=ot.id;return q!==void 0&&(e.thinkingBySession={...e.thinkingBySession,[Je]:q}),ie.planMode?(e.planModeBySession={...e.planModeBySession,[Je]:!0},ae(),ls(e,Je)):e.config?.defaultPlanMode===!0&&!ie.planModeTouched&&(e.planModeBySession={...e.planModeBySession,[Je]:!0},ae(),ls(e,Je)),ie.swarmMode&&(e.swarmModeBySession={...e.swarmModeBySession,[Je]:!0},me(),ls(e,Je)),ie.supermoonMode&&(e.supermoonModeBySession={...e.supermoonModeBySession,[Je]:!0},Z(),ls(e,Je)),ie.goalMode&&(e.goalModeBySession={...e.goalModeBySession,[Je]:!0},oe()),ie.planArmed&&(e.planArmedBySession={...e.planArmedBySession,[Je]:!0},ve()),ie.planMode=!1,ie.planArmed=!1,ie.swarmMode=!1,ie.supermoonMode=!1,ie.goalMode=!1,ie.planModeTouched=!1,Je}async function Dn(C,z,q){if(!as.has(C)){as.add(C);try{const de=await Zt(C);if(!de)return;await vt(de,z,q)}catch(de){p("startSessionAndSendPrompt",de)}finally{as.delete(C)}}}async function pn(C,z,q,de){if(!as.has(C)){as.add(C);try{const ye=await Zt(C);if(!ye)return;const Me=e.planModeBySession[ye]??!1,Ye=e.swarmModeBySession[ye]??!1,ot=e.supermoonModeBySession[ye]??!1,pt=e.sessions.find(bn=>bn.id===ye),Je=(pt?.model&&pt.model.length>0?pt.model:e.defaultModel)??void 0;if(!await F({model:Je,planMode:Me,swarmMode:Ye,supermoonMode:ot,permissionMode:e.permission},ye))return;await u.activateSkill(z,q,ye,de)}catch(ye){p("startSessionAndActivateSkill",ye)}finally{as.delete(C)}}}async function Vn(C,z){if(!as.has(C)){as.add(C);try{const q=await Zt(C);if(!q)return;await i.openSideChatOn(q,z)}catch(q){p("startSessionAndOpenSideChat",q)}finally{as.delete(C)}}}async function en(C){const z=C.trim();if(!z)return!1;const q=Ae();try{const de=await q.addWorkspace({root:z});return It(de),vn(de.id),!0}catch(de){return console.warn("[kimi-web] addWorkspaceByPath failed for",z,de),!1}}async function Ln(C){try{return await Ae().browseFs(C)}catch{return{path:"",parent:null,entries:[]}}}async function ns(){try{return await Ae().getFsHome()}catch{return{home:"",recentRoots:[]}}}function Wt(C,z){if(z==="none"||typeof window>"u"||!window.history)return;const q=tb(C);if(window.location.pathname!==q)try{z==="push"?window.history.pushState(null,"",q):window.history.replaceState(null,"",q)}catch{}}async function At(C){try{const z=await Ae().getSession(C);return e.sessions.some(q=>q.id===z.id)||f(z),!0}catch{return!1}}function Tt(){const C=Cr(window.location);if(C===void 0){g(void 0);return}if(C!==e.activeSessionId){if(e.sessions.some(z=>z.id===C)){st(C,{urlMode:"none"});return}(async()=>{if(await At(C)){await st(C,{urlMode:"none"});return}const z=e.sessions[0];z?await st(z.id,{urlMode:"replace"}):(g(void 0),Wt(void 0,"replace"))})()}}let Xt=!1;function Ft(){Xt||typeof window>"u"||(Xt=!0,window.addEventListener("popstate",Tt))}async function st(C,z){const q=D(C),de=!q&&h.has(C);h.delete(C);try{Wt(C,z?.urlMode??"push"),e.sessionLoading=!q&&!de,g(C),Q(),e.unreadBySession[C]&&(e.unreadBySession={...e.unreadBySession,[C]:!1},ke({[C]:!1})),Ee();const ye=e.sessions.find(Me=>Me.id===C);if(ye){const Me=R(ye);e.activeWorkspaceId!==Me&&Yt(Me)}if(q){if(await O(C)==="not-found")return}else if(await S(C)==="not-found")return;B(C)}catch(ye){p("selectSession",ye,{sessionId:C})}finally{e.activeSessionId===C&&(e.sessionLoading=!1)}}async function vt(C,z,q){const de=Wa(C);e.inFlightBySession={...e.inFlightBySession,[C]:!0};const ye=y();try{const Me=Ae(),Ye=[];z&&Ye.push({type:"text",text:z});for(const bt of q??[])bt.kind==="video"?Ye.push({type:"video",source:{kind:"file",fileId:bt.fileId}}):bt.kind==="file"?Ye.push({type:"file",fileId:bt.fileId,name:bt.name??"",mediaType:bt.mediaType||"application/octet-stream",size:bt.size??0}):Ye.push({type:"image",source:{kind:"file",fileId:bt.fileId}});if(Ye.length===0)return e.inFlightBySession={...e.inFlightBySession,[C]:!1},"rejected";const ot={id:ye,sessionId:C,role:"user",content:Ye,createdAt:new Date().toISOString(),metadata:{"kimiWeb.optimisticUserMessage":!0}};b(C,bt=>[...bt,ot]);const pt=e.sessions.find(bt=>bt.id===C),Je=(pt?.model&&pt.model.length>0?pt.model:e.defaultModel)??void 0,Ct=e.swarmModeBySession[C]??!1,bn=e.supermoonModeBySession[C]??!1,Ke=e.goalModeBySession[C]??!1;if(Ke&&z){yn(C);try{await Me.updateSession(C,{goalObjective:z.trim()})}catch(bt){return p("createGoal",bt,{sessionId:C}),e.inFlightBySession={...e.inFlightBySession,[C]:!1},b(C,ln=>ln.some(In=>In.id===ye)?ln.filter(In=>In.id!==ye):ln),"rejected"}}const Ze=Ht(C),Ut=await Me.submitPrompt(C,{content:Ye,model:Je,thinking:await u.resolveThinkingForPrompt(C,Je)??e.thinking,permissionMode:e.permission,planMode:Ze,swarmMode:Ct,supermoonMode:bn});return Ke&&(e.goalModeBySession={...e.goalModeBySession,[C]:!1},oe()),e.promptIdBySession={...e.promptIdBySession,[C]:Ut.promptId},b(C,bt=>{const ln=bt.findIndex(go=>go.id===ye);if(ln===-1)return bt;const In=[...bt];return In[ln]={...In[ln],promptId:In[ln].promptId??Ut.promptId},In}),E()?.bindNextPromptId(C,Ut.promptId),"ok"}catch(Me){return e.inFlightBySession={...e.inFlightBySession,[C]:!1},b(C,Ye=>Ye.some(ot=>ot.id===ye)?Ye.filter(ot=>ot.id!==ye):Ye),p("sendPrompt",Me,{sessionId:C}),_n(Me)?"rejected":"uncertain"}finally{Ha(C,de)}}async function jt(C,z){const q=e.activeSessionId;if(q){if(m.value!=="idle"||e.inFlightBySession[q]){be(C,z);return}if((e.queuedBySession[q]?.length??0)>0){be(C,z),Ve(q);return}await vt(q,C,z)}}async function Pt(C,z){const q=e.activeSessionId;if(!q)return;const de=e.queuedBySession[q]??[],ye=[],Me=[];for(const Ze of de){const Ut=Ze.text.trim();Ut&&ye.push(Ut),Ze.attachments?.length&&Me.push(...Ze.attachments)}const Ye=C.trim();if(Ye&&ye.push(Ye),z?.length&&Me.push(...z),ye.length===0&&Me.length===0)return;de.length>0&&(e.queuedBySession={...e.queuedBySession,[q]:[]});const ot=ye.join(`
-
-`),pt=()=>{if(de.length===0)return;const Ze=e.queuedBySession[q]??[];e.queuedBySession={...e.queuedBySession,[q]:[...de,...Ze]}};if(m.value==="idle"&&!e.inFlightBySession[q]){await vt(q,ot,Me)==="rejected"&&pt();return}const Je=[];ot&&Je.push({type:"text",text:ot});for(const Ze of Me)Ze.kind==="video"?Je.push({type:"video",source:{kind:"file",fileId:Ze.fileId}}):Ze.kind==="file"?Je.push({type:"file",fileId:Ze.fileId,name:Ze.name??"",mediaType:Ze.mediaType||"application/octet-stream",size:Ze.size??0}):Je.push({type:"image",source:{kind:"file",fileId:Ze.fileId}});const Ct=y(),bn={id:Ct,sessionId:q,role:"user",content:Je,createdAt:new Date().toISOString(),metadata:{"kimiWeb.optimisticUserMessage":!0}};b(q,Ze=>[...Ze,bn]);const Ke=Wa(q);try{const Ze=Ae(),Ut=e.sessions.find(In=>In.id===q),bt=(Ut?.model&&Ut.model.length>0?Ut.model:e.defaultModel)??void 0,ln=await Ze.submitPrompt(q,{content:Je,model:bt,thinking:await u.resolveThinkingForPrompt(q,bt)??e.thinking,permissionMode:e.permission,planMode:Ht(q),swarmMode:e.swarmModeBySession[q]??!1,supermoonMode:e.supermoonModeBySession[q]??!1});if(b(q,In=>{const go=In.findIndex(Md=>Md.id===Ct);if(go===-1)return In;const di=[...In];return di[go]={...di[go],promptId:di[go].promptId??ln.promptId},di}),ln.status!=="queued"){e.promptIdBySession={...e.promptIdBySession,[q]:ln.promptId},E()?.bindNextPromptId(q,ln.promptId);return}try{await Ze.steerPrompts(q,[ln.promptId])}catch{}}catch(Ze){b(q,Ut=>Ut.filter(bt=>bt.id!==Ct)),_n(Ze)&&pt(),p("steer",Ze,{sessionId:q})}finally{Ha(q,Ke)}}async function Se(C,z){try{const de=await Ae().uploadFile({file:C,name:z});return{fileId:de.id,name:de.name,mediaType:de.mediaType}}catch(q){return p("uploadImage",q),null}}function be(C,z){const q=e.activeSessionId;if(!q)return;const de=e.queuedBySession[q]??[],ye={text:C,attachments:z,id:mb()};e.queuedBySession={...e.queuedBySession,[q]:[...de,ye]}}function Ve(C){const[z,...q]=e.queuedBySession[C]??[];z!==void 0&&(e.queuedBySession={...e.queuedBySession,[C]:q},vt(C,z.text,z.attachments).then(de=>{if(de==="ok"){Zs.delete(C);return}if(de==="uncertain"){Zs.delete(C);return}if(!e.sessions.some(pt=>pt.id===C)){Zs.delete(C);return}const ye=z.id??z.text,Me=Zs.get(C),Ye=Me!==void 0&&Me.key===ye?Me.count+1:1;if(Ye>=fb){Zs.delete(C),(e.queuedBySession[C]?.length??0)>0&&Ve(C);return}Zs.set(C,{key:ye,count:Ye});const ot=e.queuedBySession[C]??[];e.queuedBySession={...e.queuedBySession,[C]:[z,...ot]}}))}function Qe(C,z){const q=e.inFlightBySession[C]===!0;if(e.inFlightBySession={...e.inFlightBySession,[C]:!1},e.promptIdBySession[C]!==void 0){const ye={...e.promptIdBySession};delete ye[C],e.promptIdBySession=ye}return C===e.activeSessionId&&Q(),(q||z?.turnWasActive===!0||(e.turnActiveBySession[C]??!1))&&Ve(C),q}function lt(C,z){z.inFlightTurn!==null&&z.busy||Qe(C)}async function Et(){const C=e.activeSessionId;if(!C)return;const z=e.sessions.find(ye=>ye.id===C);let q=e.promptIdBySession[C];if(q===void 0){const ye=z?.currentPromptId;ye!==void 0&&ye.length>0&&!ye.startsWith("pr_")&&(q=ye)}const de=Ae();if(q!==void 0)try{if((await de.abortPrompt(C,q)).aborted)return;const Me={...e.promptIdBySession};delete Me[C],e.promptIdBySession=Me}catch(ye){if(_n(ye)&&ye.code===sb){const Me={...e.promptIdBySession};delete Me[C],e.promptIdBySession=Me}else{p("abortCurrentPrompt",ye,{sessionId:C});return}}try{await de.abortSession(C)}catch(ye){p("abortCurrentPrompt",ye,{sessionId:C})}}function Lt(C,z){const q=e.approvalsBySession[C]??[];e.approvalsBySession={...e.approvalsBySession,[C]:q.filter(de=>de.approvalId!==z)}}function Kt(C,z){const q=e.questionsBySession[C]??[];e.questionsBySession={...e.questionsBySession,[C]:q.filter(de=>de.questionId!==z)}}async function tn(C,z){const q=e.activeSessionId;if(q&&!bi[C]){bi[C]=!0;try{const de=Ae(),ye={decision:z.decision,scope:z.scope,feedback:z.feedback,selectedLabel:z.selectedLabel};await de.respondApproval(q,C,ye),Lt(q,C)}catch(de){fa(de)?Lt(q,C):p("respondApproval",de,{sessionId:q})}finally{delete bi[C]}}}async function nn(C,z){const q=e.activeSessionId;if(q&&!Qs[C]){Qs[C]="answer";try{await Ae().respondQuestion(q,C,z),Kt(q,C)}catch(de){fa(de)?Kt(q,C):p("respondQuestion",de,{sessionId:q})}finally{delete Qs[C]}}}async function Bn(C){const z=e.activeSessionId;if(z&&!Qs[C]){Qs[C]="dismiss";try{await Ae().dismissQuestion(z,C),Kt(z,C)}catch(q){fa(q)?Kt(z,C):p("dismissQuestion",q,{sessionId:z})}finally{delete Qs[C]}}}async function js(C){const z=e.activeSessionId;if(z&&!ma[C]){ma[C]=!0;try{const q=Ae(),de=(e.tasksBySession[z]??[]).find(Me=>Me.id===C)?.backgroundTaskId;await q.cancelTask(z,de??C);const ye=e.tasksBySession[z]??[];e.tasksBySession={...e.tasksBySession,[z]:ye.map(Me=>Me.id===C?{...Me,status:"cancelled"}:Me)}}catch(q){rb(q)||p("cancelTask",q,{sessionId:z})}finally{delete ma[C]}}}function fs(C){const z=e.activeSessionId;z?(e.planModeBySession={...e.planModeBySession,[z]:C},ls(e,z),ae(),F({planMode:C})):(ie.planMode=C,ie.planModeTouched=!0)}function ss(){const C=e.activeSessionId,z=C?e.planModeBySession[C]??!1:ie.planMode;fs(!z)}function jn(){const C=e.activeSessionId;C?(e.planArmedBySession={...e.planArmedBySession,[C]:!0},ve(),e.goalModeBySession[C]&&(e.goalModeBySession={...e.goalModeBySession,[C]:!1},oe())):(ie.planArmed=!0,ie.goalMode=!1)}function hn(){const C=e.activeSessionId,z=C?{planMode:e.planModeBySession[C]??!1,planArmed:e.planArmedBySession[C]??!1}:{planMode:ie.planMode,planArmed:ie.planArmed},q=eb();C?(z.planMode&&fs(!1),z.planArmed&&(e.planArmedBySession={...e.planArmedBySession,[C]:!1},ve())):(z.planMode&&(ie.planModeTouched=!0),ie.planMode=q.planMode,ie.planArmed=q.planArmed)}function gn(){const C=e.activeSessionId,z=C?{planMode:e.planModeBySession[C]??!1,planArmed:e.planArmedBySession[C]??!1}:{planMode:ie.planMode,planArmed:ie.planArmed};sc(z)?hn():jn()}function Ht(C){const z={planMode:e.planModeBySession[C]??!1,planArmed:e.planArmedBySession[C]??!1},q=J2(z);return(q.planMode!==z.planMode||q.planArmed!==z.planArmed)&&(e.planModeBySession={...e.planModeBySession,[C]:q.planMode},e.planArmedBySession={...e.planArmedBySession,[C]:q.planArmed},ls(e,C),ae(),ve(),q.planMode!==z.planMode&&F({planMode:q.planMode},C)),q.planMode}function yn(C){e.planModeBySession[C]&&(e.planModeBySession={...e.planModeBySession,[C]:!1},ls(e,C),ae(),F({planMode:!1},C)),e.planArmedBySession[C]&&(e.planArmedBySession={...e.planArmedBySession,[C]:!1},ve())}function Gt(C){const z=e.activeSessionId;z?(e.swarmModeBySession={...e.swarmModeBySession,[z]:C},ls(e,z),me(),F({swarmMode:C})):ie.swarmMode=C}async function Kn(){const C=e.activeSessionId,q=!(C?e.swarmModeBySession[C]??!1:ie.swarmMode);q&&e.permission==="manual"&&!await s({title:n("workspace.swarmEnableConfirm"),variant:"primary"})||Gt(q)}function ms(C,z){e.supermoonModeBySession={...e.supermoonModeBySession,[z]:C},ls(e,z),Z(),C?zn(z):hs(z),F({supermoonMode:C},z)}function kn(C){const z=e.activeSessionId;z?ms(C,z):ie.supermoonMode=C}function vs(){const C=e.activeSessionId,z=C?e.supermoonModeBySession[C]??!1:ie.supermoonMode;kn(!z)}function zn(C){const z=u.models.value.find(Me=>Me.id===P.value.modelId),q=z?.supportEfforts??[];if(q.length===0)return;const de=q[q.length-1],ye=Xo(z,e.thinking);u.setThinking(de),e.supermoonPreviousEffortBySession={...e.supermoonPreviousEffortBySession,[C]:ye}}function hs(C){const z=e.supermoonPreviousEffortBySession[C];if(z===void 0)return;const q={...e.supermoonPreviousEffortBySession};delete q[C],e.supermoonPreviousEffortBySession=q;try{u.setThinking(z)}catch(de){p("setSupermoonMode",de,{sessionId:C})}}function Fn(C){const z=e.activeSessionId;z?(e.goalModeBySession={...e.goalModeBySession,[z]:C},oe(),C&&e.planArmedBySession[z]&&(e.planArmedBySession={...e.planArmedBySession,[z]:!1},ve())):(ie.goalMode=C,C&&(ie.planArmed=!1))}function Ts(){const C=e.activeSessionId,z=C?e.goalModeBySession[C]??!1:ie.goalMode;Fn(!z)}async function os(C){const z=C.trim();if(!z||e.permission==="manual"&&!await s({title:n("workspace.goalStartConfirm",{objective:z}),variant:"primary"}))return;let q=e.activeSessionId;if(!q){const de=e.activeWorkspaceId,ye=de&&k.value.some(Me=>Me.id===de)?de:k.value[0]?.id??null;if(!ye)return;try{q=await Zt(ye)??void 0}catch(Me){p("createGoal",Me);return}if(!q)return}yn(q);try{await Ae().updateSession(q,{goalObjective:z})}catch(de){p("createGoal",de,{sessionId:q,message:V(de)});return}e.goalModeBySession[q]&&(e.goalModeBySession={...e.goalModeBySession,[q]:!1},oe()),e.activeSessionId===q?await jt(z):await vt(q,z)}function is(C){const z=e.activeSessionId;z&&Promise.resolve(Ae().updateSession(z,{goalControl:C})).catch(q=>{p("controlGoal",q,{sessionId:z,message:V(q)})})}function gs(C){e.permission=C,se(C),F({permissionMode:C})}function Ps(C){const z=[...e.warnings];z.splice(C,1),e.warnings=z}async function Es(C,z){try{await Ae().updateSession(C,{title:z}),I(C,de=>({...de,title:z}))}catch(q){p("renameSession",q,{sessionId:C})}}async function Nn(C){const z=await Ae().generateSessionTitle(C,{force:!0,source:"digest"});return z!==null&&I(C,q=>({...q,title:z})),z}async function ys(C,z){const q=e.workspaces.find(ye=>ye.id===C)?.root,de=()=>{e.workspaces=e.workspaces.map(ye=>ye.id===C?{...ye,name:z}:ye)};try{if(await Ae().updateWorkspace(C,{name:z}),q!==void 0){const ye=pi();q in ye&&(delete ye[q],zl(ye))}de()}catch(ye){if(q!==void 0&&_n(ye)&&ye.code===ob){zl({...pi(),[q]:z}),de();return}p("renameWorkspace",ye)}}async function Rn(C){const z=e.workspaces.find(Me=>Me.id===C)?.root??H.value.find(Me=>Me.id===C)?.root??C,q=e.activeSessionId?e.sessions.find(Me=>Me.id===e.activeSessionId):void 0,de=e.activeWorkspaceId===C||e.activeWorkspaceId===z,ye=!!(q&&(q.cwd===z||q.workspaceId===C||R(q)===C));z&&!e.hiddenWorkspaceRoots.includes(z)&&(e.hiddenWorkspaceRoots=[...e.hiddenWorkspaceRoots,z],he(e.hiddenWorkspaceRoots));try{await Ae().deleteWorkspace(C)}catch(Me){console.warn("[kimi-web] deleteWorkspace registry cleanup failed for",C,Me)}if(e.workspaces=e.workspaces.filter(Me=>Me.id!==C&&Me.root!==z),de||ye){const Me=k.value[0]?.id??null;if(e.activeWorkspaceId=Me,Me)$e(Me);else try{ao(qe.activeWorkspace)}catch{}}(de||ye)&&(g(void 0),e.sessionLoading=!1,Ee(),Wt(void 0,"replace"))}async function Ie(C){try{await Ae().archiveSession(C),_(C),i.clearSideChatForSession(C);const{[C]:q,...de}=e.sideChatUserMessageIdsBySession;if(e.sideChatUserMessageIdsBySession=de,e.activeSessionId===C){const ye=e.sessions[0];ye?await st(ye.id,{urlMode:"replace"}):(g(void 0),Wt(void 0,"replace"))}}catch(z){p("archiveSession",z,{sessionId:C})}}function j(C){e.warnings=[...e.warnings,C]}function ne(C,z){e.warnings=[...e.warnings.filter(q=>q!==C),...z===void 0?[]:[z]]}async function kt(C){if(X)return;const z=C??e.activeSessionId;if(!z){const ye=n("commands.export.noSession");Qt("export:failed",{status:"no-session"}),p("exportSession",new Error(ye),{message:ye});return}X=!0;const q=Date.now();Qt("export:start",{sessionId:z});const de={severity:"info",title:n("commands.export.started"),sticky:!0};j(de);try{const ye=B0(),{blob:Me,fileName:Ye}=await Ae().exportSession(z,ye);if(typeof document>"u")throw new Error("Document is unavailable");const ot=URL.createObjectURL(Me);let pt;try{pt=document.createElement("a"),pt.href=ot,pt.download=Ye,document.body.append(pt),pt.click()}finally{pt?.remove(),setTimeout(()=>{try{URL.revokeObjectURL(ot)}catch{}},0)}ne(de,{severity:"success",title:n("commands.export.done")}),Qt("export:accepted",{sessionId:z,status:"accepted",zipBytes:Me.size,durationMs:Date.now()-q})}catch(ye){const Me=typeof ye=="object"&&ye!==null?ye:void 0;Qt("export:failed",{sessionId:z,status:"failed",durationMs:Date.now()-q,errorName:typeof Me?.name=="string"?Me.name:typeof ye,errorCode:typeof Me?.code=="number"?Me.code:void 0,requestId:typeof Me?.requestId=="string"?Me.requestId:void 0,phase:typeof Me?.phase=="string"?Me.phase:void 0,httpStatus:typeof Me?.status=="number"?Me.status:void 0}),ne(de,void 0),db(ye)?p("exportSession",ye,{sessionId:z,title:n("commands.export.tooLarge")}):p("exportSession",ye,{sessionId:z})}finally{X=!1}}async function Gn(C){try{const z=await Ae().restoreSession(C);return v(z),!0}catch(z){return p("restoreSession",z,{sessionId:C}),!1}}function Qn(C){return Ae().listSessions({archivedOnly:!0,beforeId:C?.beforeId,pageSize:C?.pageSize??50})}async function ks(){try{await Ae().logout(),await it(),await En()}catch(C){p("logout",C)}}function ho(C){const z=e.activeSessionId;z&&Ae().compactSession(z,C).catch(q=>{p("compact",q,{sessionId:z})})}async function Ks(C){const z=C??e.activeSessionId;if(z)try{const q=await Ae().forkSession(z);v(q),await st(q.id)}catch(q){p("fork",q,{sessionId:z})}}async function bs(C=1){const z=e.activeSessionId;if(!z)return null;const q=(()=>{const de=e.messagesBySession[z]??[];for(let ye=de.length-1;ye>=0;ye--){const Me=de[ye];if(Me.role==="user"&&!(Me.metadata?.origin&&Me.metadata.origin.kind!=="user"))return Me.content.filter(Ye=>Ye.type==="text").map(Ye=>Ye.text).join(`
-`)}return null})();try{return await Ae().undoSession(z,C),await S(z),q}catch(de){return p("undo",de,{sessionId:z}),null}}function Ls(C){const z=e.activeSessionId;if(!z)return;const q=e.queuedBySession[z]??[];if(C<0||C>=q.length)return;const de=[...q];de.splice(C,1),e.queuedBySession={...e.queuedBySession,[z]:de}}function Do(C,z){const q=e.activeSessionId;if(!q)return;const de=e.queuedBySession[q]??[];if(C===z||C<0||C>=de.length||z<0||z>=de.length)return;const ye=[...de],[Me]=ye.splice(C,1);Me!==void 0&&(ye.splice(z,0,Me),e.queuedBySession={...e.queuedBySession,[q]:ye})}async function U(C){const z=e.activeSessionId;if(!z)return[];try{return(await Ae().listDirectory(z,{path:C,includeGitStatus:!0})).items}catch{return[]}}async function K(C){const z=e.activeSessionId;if(!z)return null;try{const de=await Ae().readFile(z,{path:C});return{path:de.path,content:de.content,encoding:de.encoding,mime:de.mime,languageId:de.languageId,isBinary:de.isBinary,size:de.size,lineCount:de.lineCount}}catch(q){return console.warn("[kimi-web] readFileContent failed for",C,q),null}}const ce=10485760;function te(C){const z=e.activeSessionId;return z?Ae().getFileDownloadUrl(z,C):null}async function we(C,z){const q=e.activeSessionId;if(!q)return!1;try{return await Ae().openFile(q,{path:C,line:z}),!0}catch(de){return p("openFile",de,{sessionId:q}),!1}}async function _e(C){const z=e.activeSessionId;if(!z)return;const q=P.value.cwd||".";try{await Ae().openInApp(z,C,q)}catch(de){p("openInApp",de,{sessionId:z})}}async function Xe(C){const z=e.activeSessionId;if(!z)return!1;try{return await Ae().revealFile(z,{path:C}),!0}catch(q){return p("revealFile",q,{sessionId:z}),!1}}async function fn(C){if(/^(https?:|data:|blob:)/i.test(C))return C;const z=e.activeSessionId;if(!z)return C;let q=C;if(q.startsWith("/")){const de=e.sessions.find(ye=>ye.id===z)?.cwd;if(de&&(q===de||q.startsWith(de.endsWith("/")?de:`${de}/`))){if(q=q.slice(de.length).replace(/^\//,""),!q)return C}else return C}if(q.startsWith("/")||q.startsWith("~")||q.includes(".."))return C;try{const ye=await Ae().readFile(z,{path:q,length:ce});return!ye.isBinary||ye.encoding!=="base64"||ye.truncated?C:`data:${ye.mime};base64,${ye.content}`}catch{return C}}async function sn(C){const z=e.sessions.find(de=>de.id===e.activeSessionId),q=z===void 0?e.activeWorkspaceId:R(z);if(!q)return[];try{return(await Ae().searchFiles(q,{query:C,limit:20})).items.map(Me=>({path:Me.path,name:Me.name}))}catch{return[]}}return{loadFileDiff:J,clearFileDiff:Ee,loadGitStatus:Le,checkAuth:it,loadConfig:Ge,updateConfig:je,listAllSessionsGlobal:xt,load:En,refreshServerMeta:zt,loadWorkspaces:St,loadMoreSessions:on,loadAllSessions:ut,selectWorkspace:Yt,openWorkspace:xn,upsertWorkspacePreserveOrder:It,applyWorkspaceEvent:an,clearActiveSession:dn,openWorkspaceDraft:vn,startSessionAndSendPrompt:Dn,startSessionAndActivateSkill:pn,startSessionAndOpenSideChat:Vn,addWorkspaceByPath:en,browseFs:Ln,getFsHome:ns,writeSessionUrl:Wt,fetchSessionIntoList:At,onSessionRoutePopState:Tt,bindSessionRoute:Ft,selectSession:st,submitPromptInternal:vt,finishPromptLocal:Qe,localTurnStartState:vb,isLocalTurnSnapshotCurrent:gb,afterLocalTurnStartsSettle:yb,handleSessionSnapshot:lt,sendPrompt:jt,steerPrompt:Pt,uploadImage:Se,enqueue:be,unqueue:Ls,reorderQueue:Do,abortCurrentPrompt:Et,respondApproval:tn,respondQuestion:nn,dismissQuestion:Bn,pendingQuestionActions:Qs,pendingApprovalActions:bi,cancelTask:js,setPlanMode:fs,togglePlanMode:ss,armPlanMode:jn,dismissPlanMode:hn,togglePlanArm:gn,setSwarmMode:Gt,toggleSwarmMode:Kn,setSupermoonMode:kn,toggleSupermoonMode:vs,pinSupermoonEffort:zn,restoreSupermoonEffort:hs,setGoalMode:Fn,toggleGoalMode:Ts,createGoal:os,controlGoal:is,setPermission:gs,dismissWarning:Ps,renameSession:Es,regenerateSessionTitle:Nn,renameWorkspace:ys,deleteWorkspace:Rn,archiveSession:Ie,exportSession:kt,restoreSession:Gn,loadArchivedSessions:Qn,logout:ks,compact:ho,forkSession:Ks,undo:bs,listDir:U,readFileContent:K,getFileDownloadUrl:te,openWorkspaceFile:we,openInApp:_e,revealWorkspaceFile:Xe,resolveImageUrl:fn,searchFiles:sn,loadOlderMessages:Y,refreshSessionSidecars:B,isStartingFirstPrompt:()=>as.size>0}}const oc=qe.starredModels,$r=new Error("profile persist failed");function bb(){try{const e=$t(oc);if(!e)return[];const t=JSON.parse(e);if(Array.isArray(t)&&t.every(n=>typeof n=="string"))return t}catch{}return[]}function wb(e){try{Ot(oc,JSON.stringify(e))}catch{}}function Sb(e,t){const{pushOperationFailure:n,refreshSessionStatus:s,persistSessionProfile:o,activity:i,updateSession:u,updateSessionMessages:p}=t,m=x([]),h=x(bb()),w=x({}),I=x({}),v=x([]),f=x(null);function _(V){if(!(V==null||V.length===0))return m.value.find(Q=>Q.id===V)??m.value.find(Q=>Q.model===V)}function g(){const V=e.activeSessionId?e.sessions.find(Ce=>Ce.id===e.activeSessionId):void 0,Q=V===void 0?f.value??e.defaultModel:V.model||e.defaultModel;return _(Q)?.id??Q??void 0}function b(V){if(V===void 0)return;const Q=_(V);return Q===void 0?void 0:Zo(Q)}function y(V,Q){const Ce=V==null?void 0:e.thinkingBySession[V];return Ce!==void 0&&V2(Q,Ce)?Ce:Zo(Q)}function E(V,Q){if(Q===void 0)return;const Ce=_(Q);return Ce===void 0?void 0:y(V,Ce)}async function S(V,Q){return V!=null&&e.thinkingBySession[V]===void 0&&await s(V),E(V,Q)}function O(V){e.thinking=V;const Q=e.activeSessionId;return V!==void 0&&Q!==null&&Q!==void 0&&(e.thinkingBySession={...e.thinkingBySession,[Q]:V}),V}Oe([()=>e.activeSessionId,()=>g(),()=>{const V=e.activeSessionId;return V==null?void 0:e.thinkingBySession[V]}],()=>{const V=_(g());V!==void 0&&(e.thinking=y(e.activeSessionId,V))});function D(V){Ae().setConfig({thinking:j2(V,_(g())?.supportEfforts)}).catch(Q=>n("setConfig",Q))}async function T(V){try{const Ce=await Ae().listSkills(V);w.value={...w.value,[V]:Ce}}catch{}}async function L(V){try{const Ce=await Ae().listSkillsForWorkspace(V);I.value={...I.value,[V]:Ce}}catch{}}async function F(){try{const V=Ae();m.value=await V.listModels();const Q=_(g());Q!==void 0&&(e.thinking=y(e.activeSessionId,Q))}catch(V){n("loadModels",V)}}async function H(){try{const V=Ae();v.value=await V.listProviders()}catch(V){n("loadProviders",V)}}async function k(V){const Q=e.activeSessionId,Ce=_(V),re=e.thinking,ee=Q?e.sessions.find(X=>X.id===Q)?.model:void 0,pe=g()!==(Ce?.id??V),De=K2(Ce,re,pe);if(!Q)return f.value=V,e.thinking=De,De!==re&&De!==void 0&&D(De),!0;u(Q,X=>({...X,model:V})),De!==re&&(e.thinking=De,De!==void 0&&(e.thinkingBySession={...e.thinkingBySession,[Q]:De}));try{await Ae().updateSession(Q,{model:V,thinking:De!==re?De:void 0})}catch(X){return u(Q,Y=>({...Y,model:ee??Y.model})),De!==re&&(e.thinking=re,re!==void 0&&(e.thinkingBySession={...e.thinkingBySession,[Q]:re})),n("setModel",X,{sessionId:Q}),!1}return De!==re&&De!==void 0&&D(De),await s(Q),!0}function P(V){const Q=new Set(h.value);Q.has(V)?Q.delete(V):Q.add(V),h.value=Array.from(Q),wb(h.value)}async function R(V,Q,Ce,re){const ee=Ce??e.activeSessionId;if(!ee)return;const pe=i.value==="idle"&&!e.inFlightBySession[ee],De=`msg_skill_opt_${Date.now().toString(36)}`,X=pe?Wa(ee):void 0;if(pe){e.inFlightBySession={...e.inFlightBySession,[ee]:!0};const Y={id:De,sessionId:ee,role:"user",content:[{type:"text",text:`/${V}${Q?` ${Q}`:""}`}],createdAt:new Date().toISOString(),metadata:{"kimiWeb.optimisticUserMessage":!0,origin:{kind:"skill_activation",trigger:"user-slash",skillName:V,skillArgs:Q}}};p(ee,B=>[...B,Y])}try{const Y=e.sessions.find(Ee=>Ee.id===ee)?.model,B=(Y&&Y.length>0?Y:e.defaultModel)??void 0;if(!await o({thinking:await S(ee,B)??e.thinking},ee))throw $r;await Ae().activateSkill(ee,V,Q,re)}catch(Y){pe&&(e.inFlightBySession={...e.inFlightBySession,[ee]:!1},p(ee,B=>B.filter(J=>J.id!==De))),Y!==$r&&n("activateSkill",Y,{sessionId:ee})}finally{X!==void 0&&Ha(ee,X)}}async function se(V){try{await Ae().addProvider(V),await Promise.all([H(),F()])}catch(Q){n("addProvider",Q)}}async function ae(V){try{await Ae().deleteProvider(V),await Promise.all([H(),F()])}catch(Q){n("deleteProvider",Q)}}async function ve(V){try{const Q=await Ae().refreshProvider(V);for(const Ce of Q.failed)n("refreshProvider",new Error(Ce.reason),{message:Ce.provider});await Promise.all([H(),F()])}catch(Q){n("refreshProvider",Q)}}async function me(){try{const V=await Ae().refreshAllProviders();for(const Q of V.failed)n("refreshAllProviders",new Error(Q.reason),{message:Q.provider});await Promise.all([H(),F()])}catch(V){n("refreshAllProviders",V)}}async function Z(V){try{await Ae().importCatalogProvider(V),await Promise.all([H(),F()])}catch(Q){n("importCatalogProvider",Q)}}async function oe(V){try{await Ae().importRegistry(V),await Promise.all([H(),F()])}catch(Q){n("importRegistry",Q)}}async function ie(){try{return await Ae().startOAuthLogin()}catch{return null}}async function ke(){try{return await Ae().pollOAuthLogin()}catch(V){return console.warn("[kimi-web] pollOAuthLogin failed",V),null}}async function $e(){try{await Ae().cancelOAuthLogin()}catch{}}function he(V){const Q=O(V);o({thinking:Q}),Q!==void 0&&D(Q)}return{models:m,starredModelIds:h,providers:v,draftModel:f,skillsBySession:w,skillsByWorkspace:I,loadSkillsForSession:T,loadSkillsForWorkspace:L,loadModels:F,loadProviders:H,setModel:k,thinkingLevelForModelId:b,thinkingLevelForSessionId:E,resolveThinkingForPrompt:S,toggleStarModel:P,activateSkill:R,addProvider:se,deleteProvider:ae,refreshProvider:ve,refreshAllProviders:me,importCatalogProvider:Z,importRegistry:oe,startOAuthLogin:ie,pollOAuthLogin:ke,cancelOAuthLogin:$e,setThinking:he}}const Cb=/^read[_-]?media(?:file)?$/i,_b=/^data:([^;]+);base64,(.*)$/s,$b=/^<(image|video|audio)\s+path="([^"]+)">$/,Mb=/^<(image|video|audio)\s+path="([^"]+)">(?:<\/\1>)?$/,xb=/Mime type:\s*([^.\s]+)/i,Ib=/Size:\s*(\d+)\s*bytes/i,Ab=/Original dimensions:\s*(\d+)x(\d+)\s*pixels/i,Tb="Image compressed to fit model limits:",Pb=/Image compressed to fit model limits:[\s\S]*?<\/system>/g;function Eb(e){return e.includes(Tb)?e.replace(Pb,""):e}function Lb(e){return e.replaceAll(""",'"').replaceAll("<","<").replaceAll(">",">").replaceAll("&","&")}function Bb(e){const t=Mb.exec(e.trim());return t?{kind:t[1],path:Lb(t[2])}:null}const ic=/^f_(?:[0-9A-Za-z]{26}|[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12})$/,Rb=/^f_(?:[0-9A-Za-z]{26}|[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12})(?=-)/;function Ob(e){const t=e.split(/[\\/]/).at(-1)??"",n=t.lastIndexOf("."),s=n>0?t.slice(0,n):t;return ic.test(s)?s:void 0}const Db=/^Attached file "(.+)" \(([^,]+), (\d+) bytes\): (.+) — open it with the Read tool$/;function zb(e){const t=Db.exec(e.trim());if(!t)return null;const n=(t[4]??"").split(/[\\/]/).at(-1)??"",s=Rb.exec(n)?.[0];return{name:t[1],mediaType:t[2],size:Number(t[3]),fileId:s!==void 0&&ic.test(s)?s:void 0}}function Fb(e){if(e.length===0)return 0;const t=e.endsWith("==")?2:e.endsWith("=")?1:0;return Math.floor(e.length*3/4)-t}function Nb(e){if(Array.isArray(e))return e;if(typeof e!="string")return null;try{const t=JSON.parse(e);return Array.isArray(t)?t:null}catch{return null}}function qb(e){const t=e.type,n=t==="image_url"?"image":t==="video_url"?"video":t==="audio_url"?"audio":null;if(n===null)return null;const o=e[n==="image"?"imageUrl":n==="video"?"videoUrl":"audioUrl"];if(typeof o!="object"||o===null)return null;const i=o.url;return typeof i=="string"?{kind:n,url:i}:null}function Wb(e,t){if(!Cb.test(e))return;const n=Nb(t);if(n===null)return;let s,o,i,u,p,m=null;for(const w of n){if(typeof w!="object"||w===null)continue;const I=w;if(I.type==="text"&&typeof I.text=="string"){const f=I.text,_=$b.exec(f);_&&(o=_[1],s=_[2]);const g=xb.exec(f);g?.[1]&&(i=g[1]);const b=Ib.exec(f);b?.[1]&&(u=Number(b[1]));const y=Ab.exec(f);y?.[1]&&y[2]&&(p=`${y[1]}x${y[2]}`);continue}const v=qb(I);v&&(m=v)}if(m===null)return;const h=_b.exec(m.url);return h?.[1]&&(i=h[1]),h?.[2]&&(u=Fb(h[2])),{kind:m.kind??o??"image",url:m.url,path:s,mimeType:i,bytes:Number.isFinite(u)?u:void 0,dimensions:p}}function Hb(e){if(e!=null){if(typeof e=="string")return e.split(`
-`);if(Array.isArray(e)){const t=[];for(const n of e)if(typeof n=="string")t.push(...n.split(`
-`));else if(n&&typeof n=="object"){const s=n;s.type==="text"&&typeof s.text=="string"?t.push(...s.text.split(`
-`)):s.type==="think"&&typeof s.think=="string"?t.push(...s.think.split(`
-`)):s.type==="image_url"||s.type==="image"?t.push("[image]"):typeof s.type=="string"?t.push(`[${s.type}]`):t.push(JSON.stringify(n))}return t.length>0?t:void 0}return[JSON.stringify(e)]}}function Ub(e){return{id:e.id,toolCallId:e.parentToolCallId,name:e.description,subagentType:e.subagentType,phase:e.subagentPhase??(e.status==="completed"?"completed":e.status==="failed"?"failed":"working"),status:e.status,summary:e.outputPreview,outputLines:e.outputLines,text:e.text,suspendedReason:e.suspendedReason,swarmIndex:e.swarmIndex}}function Vb(e,t){const n=e.split(`
-`),s=t.split(`
-`),o=[];return n.forEach((i,u)=>{o.push({kind:"rem",gutter:String(u+1),text:`- ${i}`})}),s.forEach((i,u)=>{o.push({kind:"add",gutter:String(u+1),text:`+ ${i}`})}),o}function jb(e){const t=e.display??{},n=typeof t.kind=="string"?t.kind:"";if(n==="diff"){const s=typeof t.path=="string"?t.path:"";return Array.isArray(t.diff)?{kind:"diff",path:s,diff:t.diff}:typeof t.old_text=="string"&&typeof t.new_text=="string"?{kind:"diff",path:s,diff:Vb(t.old_text,t.new_text)}:{kind:"diff",path:s,diff:[]}}if(n==="shell"||n==="command")return{kind:"shell",command:typeof t.command=="string"?t.command:e.action,cwd:typeof t.cwd=="string"?t.cwd:void 0,danger:typeof t.danger=="string"?t.danger:void 0};if(n==="file_content"||n==="file")return{kind:"file",path:typeof t.path=="string"?t.path:"",content:typeof t.content=="string"?t.content:"",language:typeof t.language=="string"?t.language:void 0};if(n==="file_op"||n==="fileop")return{kind:"fileop",op:typeof t.operation=="string"?t.operation:typeof t.op=="string"?t.op:n,path:typeof t.path=="string"?t.path:"",detail:typeof t.detail=="string"?t.detail:void 0};if(n==="url_fetch"||n==="url")return{kind:"url",method:typeof t.method=="string"?t.method:void 0,url:typeof t.url=="string"?t.url:e.action};if(n==="search")return{kind:"search",query:typeof t.query=="string"?t.query:e.action,scope:typeof t.scope=="string"?t.scope:void 0};if(n==="invocation"||n==="agent_call"||n==="skill_call")return{kind:"invocation",kind2:typeof t.kind=="string"?t.kind:n,name:typeof t.name=="string"?t.name:e.toolName,description:typeof t.description=="string"?t.description:void 0};if(n==="todo"||n==="todo_list")return{kind:"todo",items:(Array.isArray(t.items)?t.items:[]).map(i=>{const u=i??{};return{title:typeof u.title=="string"?u.title:"",status:typeof u.status=="string"?u.status:"pending"}})};if(n==="plan_review"){const s=typeof t.plan=="string"?t.plan:"",o=typeof t.path=="string"?t.path:void 0,u=(Array.isArray(t.options)?t.options:[]).map(p=>{const m=p??{},h=typeof m.label=="string"?m.label:"";if(!h)return null;const w=typeof m.description=="string"?m.description:void 0;return{label:h,description:w}}).filter(p=>p!==null);return{kind:"plan_review",plan:s,path:o,options:u.length>0?u:void 0}}return{kind:"generic",summary:e.action}}function Kb(e){const t=`
-`,n=`
- `,s=e.indexOf(t),o=e.lastIndexOf(n);return s>=0&&o>=s+t.length?e.slice(s+t.length,o):Gb(e)}function Gb(e){const t=e.split(`
-`);return t.length>=2&&t[0]?.startsWith(""?t.slice(1,-1).join(`
-`):e}function Qb(e){const t=e.metadata?.origin;if(t?.kind==="cron_job"||t?.kind==="cron_missed")return t.kind}function Yb(e){const t=e.content.filter(n=>n.type==="text").map(n=>n.text).join(`
-`);return Kb(t)}function Zb(e,t){const n=e.metadata?.origin??{},s=Yb(e);return t==="cron_missed"?{text:s,cron:{missedCount:typeof n.count=="number"?n.count:void 0}}:{text:s,cron:{jobId:typeof n.jobId=="string"?n.jobId:void 0,cron:typeof n.cron=="string"?n.cron:void 0,recurring:typeof n.recurring=="boolean"?n.recurring:void 0,coalescedCount:typeof n.coalescedCount=="number"?n.coalescedCount:void 0,stale:typeof n.stale=="boolean"?n.stale:void 0}}}function Xb(e,t,n){const{text:s,cron:o}=Zb(e,n);return{id:e.id,role:"cron",no:t,text:s,createdAt:e.createdAt,cron:o}}function Jb(e){const t=e.metadata?.origin,n=t?.kind;return n===void 0||n==="user"?!0:n==="skill_activation"||n==="plugin_command"?t?.trigger==="user-slash":!1}function ew(e){return e.metadata?.origin?.kind==="compaction_summary"}function Mr(e,t){return e===null?!1:e.promptId===void 0||t===void 0||e.promptId===t}function tw(e){if(!e||e.length===0)return;const t="Plan saved to: ";for(const n of e)if(n.startsWith(t))return n.slice(t.length).trim()}function nw(e){let t="",n="";const s=[],o=[];for(const i of e)i.type==="text"?t+=i.text:i.type==="thinking"?n+=i.thinking:i.type==="toolUse"?s.push(i.toolCallId):o.push(JSON.stringify(i));return s.sort(),o.sort(),{text:t,thinking:n,toolIds:s,rest:o}}function sw(e,t){return t.text!==""&&t.text!==e.text||t.thinking!==""&&t.thinking!==e.thinking?!1:t.toolIds.every(n=>e.toolIds.includes(n))&&t.rest.every(n=>e.rest.includes(n))}function ac(e,t,n,s=!0,o={}){const i=[];let u=1;const p=new Map;for(const f of t)p.set(f.toolCallId,f);let m=null;function h(f=!1){if(!m)return;const _=m;if(m=null,!f||!s)for(let g=0;g<_.tools.length;g++){const b=_.tools[g];if(b.status!=="running")continue;const y={...b,status:"ok"};_.tools[g]=y;const E=_.blocks.find(S=>S.kind==="tool"&&S.tool.id===y.id);E&&E.kind==="tool"&&(E.tool=y)}i.push({id:_.id,role:"assistant",no:u++,text:_.textParts.join(`
-`),thinking:_.thinkingParts.length>0?_.thinkingParts.join(`
-`):void 0,tools:_.tools.length>0?_.tools:void 0,blocks:_.blocks.length>0?_.blocks:void 0,approval:_.approval,approvalId:_.approvalId,durationMs:_.durationMs,createdAt:_.createdAt})}function w(f,_){for(const g of _)if(g.type==="text"){if(g.text){f.textParts.push(g.text);const b=f.blocks.at(-1);b&&b.kind==="text"?b.text+=`
-`+g.text:f.blocks.push({kind:"text",text:g.text})}}else if(g.type==="thinking"){if(g.thinking){f.thinkingParts.push(g.thinking);const b=f.blocks.at(-1);b&&b.kind==="thinking"?b.thinking+=`
-`+g.thinking:f.blocks.push({kind:"thinking",thinking:g.thinking})}}else if(g.type==="toolUse"){const b=p.get(g.toolCallId),y={id:g.toolCallId,name:g.toolName,arg:typeof g.input=="string"?g.input:JSON.stringify(g.input),status:"running",output:g.outputLines,planPath:g.toolName==="ExitPlanMode"?o[g.toolCallId]?.path:void 0};f.tools.push(y),f.blocks.push({kind:"tool",tool:y}),b&&(f.approval=jb(b),f.approvalId=b.approvalId)}else if(g.type==="toolResult"){const b=f.tools.findIndex(y=>y.id===g.toolCallId);if(b!==-1){const y=f.tools[b],E={...y,status:g.isError?"error":"ok",output:Hb(g.output),media:g.isError?void 0:Wb(y.name,g.output)};E.name==="ExitPlanMode"&&!E.planPath&&(E.planPath=tw(E.output)),f.tools[b]=E;const S=f.blocks.find(O=>O.kind==="tool"&&O.tool.id===g.toolCallId);S&&S.kind==="tool"&&(S.tool=E)}}}function I(f,_){for(const g of _){if(g.type!=="toolUse"||!g.outputLines?.length)continue;const b=f.tools.findIndex(O=>O.id===g.toolCallId);if(b===-1)continue;const y=f.tools[b];if(y.output!==void 0)continue;const E={...y,output:g.outputLines};f.tools[b]=E;const S=f.blocks.find(O=>O.kind==="tool"&&O.tool.id===g.toolCallId);S&&S.kind==="tool"&&(S.tool=E)}}function v(f){if(f.type==="image"||f.type==="video"){const _=f.type,g=f.source;if(g.kind==="url")return{url:g.url,kind:_};if(g.kind==="base64")return{url:`data:${g.mediaType};base64,${g.data}`,kind:_};if(g.kind==="file"&&n)return{url:n(g.fileId),kind:_,fileId:g.fileId}}if(f.type==="file"&&n){if(f.mediaType.startsWith("image/"))return{url:n(f.fileId),kind:"image",fileId:f.fileId};if(f.mediaType.startsWith("video/"))return{url:n(f.fileId),kind:"video",fileId:f.fileId}}}for(const f of e){if(f.role==="system")continue;const _=f.metadata?.[Bu];if(_!==void 0){Mr(m,f.promptId)||(h(),m={id:f.id,promptId:f.promptId,textParts:[],thinkingParts:[],tools:[],blocks:[],approval:void 0,approvalId:void 0,foldedSigs:[],durationMs:void 0,createdAt:f.createdAt}),m?.blocks.push({kind:"error",text:_.message,code:_.code});continue}if(ew(f)){h();const S=f.metadata?.[Lu];i.push({id:f.id,role:"compaction",no:u,text:f.content.filter(O=>O.type==="text").map(O=>O.text).join(`
-`),compaction:{trigger:S?.trigger,tokensBefore:S?.tokensBefore,tokensAfter:S?.tokensAfter}});continue}if(f.role==="user"){const S=Qb(f);if(h(),S!==void 0){i.push(Xb(f,u++,S));continue}if(!Jb(f))continue;const O=f.metadata?.origin,D=O?.kind==="skill_activation"&&O?.trigger==="user-slash",T=O?.kind==="plugin_command"&&O?.trigger==="user-slash",L=[],F=[];for(const H of f.content){if(H.type==="text")if(D)L.push(O.skillArgs??"");else if(T)L.push(O.commandArgs??"");else{const P=Bb(H.text);if(P&&(P.kind==="video"||P.kind==="image")&&n){const ae=Ob(P.path);if(ae){F.push({url:n(ae),kind:P.kind,fileId:ae});continue}}const R=zb(H.text);if(R){F.push({kind:"file",url:R.fileId&&n?n(R.fileId):"",fileId:R.fileId,name:R.name,mediaType:R.mediaType,size:R.size});continue}const se=Eb(H.text);if(se!==H.text&&se.trim().length===0)continue;L.push(se)}const k=v(H);if(k){F.push({url:k.url,kind:k.kind,name:H.type==="file"?H.name:void 0,fileId:k.fileId});continue}H.type==="file"&&n&&F.push({kind:"file",url:n(H.fileId),fileId:H.fileId,name:H.name,mediaType:H.mediaType||void 0,size:H.size})}i.push({id:f.id,role:"user",no:u++,text:L.join(`
-`),attachments:F.length>0?F:void 0,skillActivation:D?{name:O.skillName??"",args:O.skillArgs}:void 0,pluginCommand:T?{pluginId:O.pluginId??"",commandName:O.commandName??"",args:O.commandArgs}:void 0,createdAt:f.createdAt});continue}if(f.role==="tool"){m&&w(m,f.content);continue}const g=f.promptId;Mr(m,g)?m!==null&&m.promptId===void 0&&g!==void 0&&(m.promptId=g):(h(),m={id:f.id,promptId:g,textParts:[],thinkingParts:[],tools:[],blocks:[],approval:void 0,approvalId:void 0,foldedSigs:[],durationMs:f.durationMs,createdAt:f.createdAt});const y=m;if(y===null)continue;const E=nw(f.content);if(y.promptId!==void 0&&y.foldedSigs.some(S=>sw(S,E))){I(y,f.content);continue}y.foldedSigs.push(E),w(y,f.content)}return h(!0),i}function ow(e,t){const{pushOperationFailure:n,nextOptimisticMsgId:s,connectEventsIfNeeded:o,getEventConn:i,resolveThinkingForPrompt:u}=t,p=x({}),m=$(()=>{const k=e.activeSessionId;if(!k)return null;const P=p.value[k];return P?{parentId:k,agentId:P.agentId}:null}),h=$(()=>m.value?.parentId??null),w=$(()=>m.value!==null),I=$(()=>{const k=m.value;return k?!!e.sideChatSendingByAgent[k.agentId]:!1}),v=$(()=>{const k=m.value;return k?e.sideChatSendingByAgent[k.agentId]?!0:(e.tasksBySession[k.parentId]??[]).some(P=>P.id===k.agentId&&P.status==="running"):!1}),f=$(()=>{const k=m.value;if(!k)return[];const P=e.sideChatMessagesByAgent[k.agentId]??[];return ac(P,[],R=>Ae().getFileUrl(R),v.value)});function _(k,P){e.sideChatMessagesByAgent={...e.sideChatMessagesByAgent,[k]:P(e.sideChatMessagesByAgent[k]??[])}}function g(k,P){_(k,R=>[...R,P])}function b(k){_(k,P=>{const R=[...P].reverse().findIndex(ae=>ae.role==="user");if(R===-1)return P;const se=P.length-1-R;return P.filter((ae,ve)=>ve!==se)})}function y(k,P){_(k,R=>{const se=[...R];for(let ae=se.length-1;ae>=0;ae-=1){const ve=se[ae];if(ve.role==="user")return se[ae]={...ve,promptId:ve.promptId??P},se}return R})}function E(k,P,R){R&&_(k,se=>{const ae=se.at(-1);if(ae?.role==="assistant"){const ve=ae.content[0],me=ve?.type==="text"?ve.text:"";return[...se.slice(0,-1),{...ae,content:[{type:"text",text:`${me}${R}`}]}]}return[...se,{id:s(),sessionId:P,role:"assistant",content:[{type:"text",text:R}],createdAt:new Date().toISOString()}]})}function S(k,P,R){if(e.sideChatSendingByAgent={...e.sideChatSendingByAgent,[k]:!1},!R)return;const ae=(e.sideChatMessagesByAgent[k]??[]).at(-1);(ae?.role==="assistant"&&ae.content[0]?.type==="text"?ae.content[0].text:"").trim().length>0||E(k,P,R)}async function O(k){const P=e.activeSessionId;P&&await D(P,k)}async function D(k,P){if(!p.value[k]){let R;try{({agentId:R}=await Ae().startBtw(k))}catch(se){n("openSideChat",se,{sessionId:k});return}e.sideChatMessagesByAgent={...e.sideChatMessagesByAgent,[R]:e.sideChatMessagesByAgent[R]??[]},p.value={...p.value,[k]:{agentId:R}},o(),i()?.markSideChannelAgent(R)}P&&P.trim()&&await T(k,P.trim())}async function T(k,P){const R=p.value[k],se=P.trim();if(!R||!se)return;const ae=k,ve=R.agentId;e.sideChatSendingByAgent={...e.sideChatSendingByAgent,[ve]:!0};const me={id:s(),sessionId:ae,role:"user",content:[{type:"text",text:se}],createdAt:new Date().toISOString(),metadata:{"kimiWeb.optimisticUserMessage":!0}};g(ve,me);try{const Z=e.sessions.find(ke=>ke.id===ae),oe=(Z?.model&&Z.model.length>0?Z.model:e.defaultModel)??void 0,ie=await Ae().submitPrompt(ae,{content:[{type:"text",text:se}],agentId:ve,model:oe,thinking:await u(ae,oe)??e.thinking,permissionMode:e.permission,planMode:e.planModeBySession[ae]??!1,swarmMode:e.swarmModeBySession[ae]??!1,supermoonMode:e.supermoonModeBySession[ae]??!1});y(ve,ie.promptId),e.sideChatUserMessageIdsBySession={...e.sideChatUserMessageIdsBySession,[ae]:[...e.sideChatUserMessageIdsBySession[ae]??[],ie.userMessageId]}}catch(Z){n("sendSideChatPrompt",Z,{sessionId:ae}),b(ve),e.sideChatSendingByAgent={...e.sideChatSendingByAgent,[ve]:!1}}}function L(){const k=e.activeSessionId;if(!k)return;const{[k]:P,...R}=p.value;p.value=R}async function F(k){const P=m.value;P&&await T(P.parentId,k)}function H(k){if(!p.value[k])return;const{[k]:P,...R}=p.value;p.value=R}return{sideChatTargetBySession:p,sideChatSessionId:h,sideChatVisible:w,sideChatSending:I,sideChatRunning:v,sideChatTurns:f,appendSideChatAssistantText:E,finishSideChatAgent:S,openSideChat:O,openSideChatOn:D,closeSideChat:L,sendSideChatPrompt:F,clearSideChatForSession:H}}const iw="kimiWeb.optimisticUserMessage",aw=1e6,xr="Sub Agent";function lw(){return{sessions:[],activeSessionId:void 0,messagesBySession:{},approvalsBySession:{},planReviewByToolCallId:{},questionsBySession:{},tasksBySession:{},goalBySession:{},goalVersionBySession:{},lastSeqBySession:{},turnActiveBySession:{},compactionBySession:{},warnings:[]}}function rw(e){return{...e,sessions:e.sessions,messagesBySession:{...e.messagesBySession},approvalsBySession:{...e.approvalsBySession},planReviewByToolCallId:{...e.planReviewByToolCallId},questionsBySession:{...e.questionsBySession},tasksBySession:{...e.tasksBySession},goalBySession:{...e.goalBySession},goalVersionBySession:{...e.goalVersionBySession},lastSeqBySession:{...e.lastSeqBySession},turnActiveBySession:{...e.turnActiveBySession},compactionBySession:{...e.compactionBySession},warnings:[...e.warnings]}}function uw(e,t,n){if(t!==void 0&&n!==void 0&&n>0){const s=e.lastSeqBySession[t]??0;n>s&&(e.lastSeqBySession[t]=n)}}function va(e){return e.role==="user"&&e.metadata?.[iw]===!0}function cw(e){const t=e.metadata?.origin;return t?.kind==="cron_job"||t?.kind==="cron_missed"}function dw(e,t){return JSON.stringify(e.content)===JSON.stringify(t.content)}const pw=/^<(image|video|audio)\s+path="[^"]+"><\/\1>$/;function Ir(e){let t="",n=0;for(const s of e.content)s.type==="text"?pw.test(s.text.trim())?n+=1:t+=s.text:(s.type==="image"||s.type==="video"||s.type==="file")&&(n+=1);return{text:t,media:n}}function fw(e,t){const n=Ir(e),s=Ir(t);return n.text===s.text&&n.media===s.media}function mw(e,t){const n=t.promptId;if(n!==void 0)for(let s=e.length-1;s>=0;s--){const o=e[s];if(va(o)&&o.promptId===n)return s}for(let s=e.length-1;s>=0;s--){const o=e[s];if(va(o)&&dw(o,t))return s}for(let s=e.length-1;s>=0;s--){const o=e[s];if(va(o)&&fw(o,t))return s}return-1}function vw(e,t,n){const s=e.findIndex(p=>p.content.some(m=>m.type==="toolUse"&&m.toolCallId===t));if(s===-1)return e;const o=e[s];let i=!1;const u=o.content.map(p=>p.type!=="toolUse"||p.toolCallId!==t?p:(i=!0,{...p,outputLines:[...p.outputLines??[],n]}));return i?[...e.slice(0,s),{...o,content:u},...e.slice(s+1)]:e}const hw={"provider.connection_error":"connection","provider.auth_error":"auth","provider.rate_limit":"rateLimit","provider.overloaded":"overloaded","provider.filtered":"filtered","provider.api_error":"api","provider.usage_limit":"usageLimit","context.overflow":"contextOverflow"},gw=new Set(["provider.usage_limit"]);function yw(e){const t=dt.global.t,n=[],s=(u,p)=>{typeof p=="number"||typeof p=="boolean"?n.push({label:u,value:String(p)}):typeof p=="string"&&p.length>0&&n.push({label:u,value:p})};s(t("warnings.details.code"),e.code);const o=e.details??{};s(t("warnings.details.status"),o.statusCode),s(t("warnings.details.requestId"),o.requestId),s(t("warnings.details.errorName"),e.name);for(const[u,p]of Object.entries(o))u==="statusCode"||u==="requestId"||s(u,p);const i=(e.code!==void 0?hw[e.code]:void 0)??"title";return{severity:"error",title:t(`warnings.agentError.${i}`),message:e.message,details:n.length>0?n:void 0,sticky:e.code!==void 0&&gw.has(e.code)?!0:void 0}}function kw(e,t,n){const s=rw(e);switch(uw(s,n.sessionId,n.seq),t.type){case"sessionCreated":{s.sessions.some(i=>i.id===t.session.id)||(s.sessions=[t.session,...s.sessions]);break}case"sessionUpdated":{s.sessions=s.sessions.map(o=>o.id===t.session.id?t.session:o);break}case"sessionDeleted":{const o=t.sessionId;s.sessions=s.sessions.filter(i=>i.id!==o),delete s.messagesBySession[o],delete s.tasksBySession[o],delete s.goalBySession[o],delete s.approvalsBySession[o],delete s.questionsBySession[o],delete s.lastSeqBySession[o],delete s.turnActiveBySession[o],s.activeSessionId===o&&(s.activeSessionId=void 0);break}case"sessionWorkChanged":{s.sessions=s.sessions.map(o=>o.id!==t.sessionId?o:{...o,busy:t.busy,mainTurnActive:t.mainTurnActive??(t.busy?o.mainTurnActive:!1),pendingInteraction:t.pendingInteraction??o.pendingInteraction,lastTurnReason:t.lastTurnReason}),t.mainTurnActive===!0?s.turnActiveBySession[t.sessionId]=!0:(t.mainTurnActive===!1||!t.busy)&&delete s.turnActiveBySession[t.sessionId];break}case"sessionMetaUpdated":{s.sessions=s.sessions.map(o=>o.id===t.sessionId?{...o,title:t.title??o.title,lastPrompt:t.lastPrompt??o.lastPrompt}:o);break}case"sessionUsageUpdated":{s.sessions=s.sessions.map(o=>{if(o.id!==t.sessionId)return o;const i=t.model&&t.model.length>0?t.model:o.model;return{...o,usage:t.usage,model:i}});break}case"historyCompacted":break;case"compactionStarted":{s.compactionBySession={...s.compactionBySession,[t.sessionId]:{status:"running",trigger:t.trigger}};break}case"compactionCompleted":{const o=t.sessionId,i=s.compactionBySession[o],{[o]:u,...p}=s.compactionBySession;if(s.compactionBySession=p,Object.prototype.hasOwnProperty.call(s.messagesBySession,o)){const m=s.messagesBySession[o]??[],h=`compaction_${o}_${n.seq}`;if(!m.some(w=>w.id===h)){const w={trigger:i?.trigger??"auto",tokensBefore:t.tokensBefore,tokensAfter:t.tokensAfter};s.messagesBySession[o]=[...m,{id:h,sessionId:o,role:"assistant",content:t.summary?[{type:"text",text:t.summary}]:[],createdAt:new Date().toISOString(),metadata:{origin:{kind:"compaction_summary"},[Lu]:w}}]}}break}case"compactionCancelled":{const{[t.sessionId]:o,...i}=s.compactionBySession;s.compactionBySession=i;break}case"messageCreated":{const o=t.message.sessionId,i=t.message.createdAt;s.sessions=s.sessions.map(m=>m.id===o&&i>m.updatedAt?{...m,updatedAt:i}:m);const u=s.messagesBySession[o]??[];if(!u.some(m=>m.id===t.message.id)){if(t.message.role==="user"&&!cw(t.message)){const m=mw(u,t.message);if(m!==-1){const h=[...u],w=h[m];h[m]={...t.message,id:w.id,promptId:t.message.promptId??w.promptId,metadata:{...t.message.metadata,...w.metadata}},s.messagesBySession[o]=h;break}}s.messagesBySession[o]=[...u,t.message]}break}case"messageUpdated":{const o=t.sessionId,i=s.messagesBySession[o]??[];s.messagesBySession[o]=i.map(u=>u.id!==t.messageId?u:{...u,content:t.content,durationMs:t.durationMs??u.durationMs});break}case"assistantDelta":{const o=t.sessionId,i=s.messagesBySession[o]??[];s.messagesBySession[o]=i.map(u=>{if(u.id!==t.messageId)return u;const p=[...u.content],m=t.contentIndex;for(;p.length<=m;)p.push({type:"text",text:""});const h=p[m];let w;return t.delta.text!==void 0?h.type==="text"?w={type:"text",text:h.text+t.delta.text}:w={type:"text",text:t.delta.text}:t.delta.thinking!==void 0?h.type==="thinking"?w={type:"thinking",thinking:h.thinking+t.delta.thinking,signature:h.signature}:w={type:"thinking",thinking:t.delta.thinking}:w=h,p[m]=w,{...u,content:p}});break}case"toolOutput":{const o=t.sessionId,i=s.messagesBySession[o]??[];s.messagesBySession[o]=vw(i,t.toolCallId,t.outputChunk);break}case"approvalRequested":{const o=t.sessionId,i=s.approvalsBySession[o]??[];i.some(m=>m.approvalId===t.approval.approvalId)||(s.approvalsBySession[o]=[...i,t.approval]);const p=t.approval.display;p?.kind==="plan_review"&&typeof p.plan=="string"&&p.plan.length>0&&(s.planReviewByToolCallId={...s.planReviewByToolCallId,[t.approval.toolCallId]:{plan:p.plan,path:typeof p.path=="string"?p.path:void 0}});break}case"approvalResolved":case"approvalExpired":{const o=t.sessionId,i=t.approvalId,u=s.approvalsBySession[o]??[];s.approvalsBySession[o]=u.filter(p=>p.approvalId!==i);break}case"questionRequested":{const o=t.sessionId,i=s.questionsBySession[o]??[];i.some(p=>p.questionId===t.question.questionId)||(s.questionsBySession[o]=[...i,t.question]);break}case"questionAnswered":case"questionDismissed":{const o=t.sessionId,i=t.questionId,u=s.questionsBySession[o]??[];s.questionsBySession[o]=u.filter(p=>p.questionId!==i);break}case"taskCreated":{const o=t.sessionId,i=s.tasksBySession[o]??[],u=i.findIndex(p=>p.id===t.task.id);if(u===-1)s.tasksBySession[o]=[...i,t.task];else{const p=[...i],m=i[u];p[u]={...t.task,outputLines:m.outputLines,text:m.text,description:t.task.description===xr&&m.description!==xr?m.description:t.task.description,swarmIndex:t.task.swarmIndex??m.swarmIndex,parentToolCallId:t.task.parentToolCallId??m.parentToolCallId,subagentType:t.task.subagentType??m.subagentType,model:t.task.model??m.model,thinkingEffort:t.task.thinkingEffort??m.thinkingEffort,runInBackground:t.task.runInBackground??m.runInBackground,backgroundTaskId:t.task.backgroundTaskId??m.backgroundTaskId},s.tasksBySession[o]=p}break}case"taskProgress":{const o=t.sessionId,i=s.tasksBySession[o]??[];s.tasksBySession[o]=i.map(u=>{if(u.id!==t.taskId)return u;if(u.kind==="subagent"&&t.kind==="text")return{...u,text:((u.text??"")+t.outputChunk).slice(0,aw)};const p=u.outputLines??[];if(p.at(-1)===t.outputChunk)return u;const m=[...p,t.outputChunk];return{...u,outputLines:u.kind==="subagent"?m:m.slice(-40)}});break}case"taskCompleted":{const o=t.sessionId,i=s.tasksBySession[o]??[];s.tasksBySession[o]=i.map(u=>u.id!==t.taskId?u:{...u,status:t.status,outputPreview:t.outputPreview,outputBytes:t.outputBytes});break}case"goalUpdated":{const o=t.sessionId;s.goalVersionBySession[o]=(s.goalVersionBySession[o]??0)+1,t.goal===null||t.goal.status==="complete"?delete s.goalBySession[o]:s.goalBySession[o]=t.goal;break}case"configChanged":{s.config=t.config;break}case"modelCatalogChanged":break;case"agentDelta":case"agentTurnEnded":break;case"promptCompleted":case"promptAborted":break;case"turnActiveChanged":{s.sessions=s.sessions.map(o=>o.id===t.sessionId?{...o,mainTurnActive:t.active}:o),t.active?s.turnActiveBySession[t.sessionId]=!0:delete s.turnActiveBySession[t.sessionId];break}case"unknown":{const o=t.raw;if(!(o&&o._noop===!0))if(o&&o._agentError)s.warnings=[...s.warnings,yw(o)];else if(o&&o._agentWarning){const i=o.message??o.code??"agent warning";s.warnings=[...s.warnings,`${dt.global.t("warnings.noteLabel")}: ${i}`]}else{const i=o?.type??"(unknown)";s.warnings=[...s.warnings,`Unhandled event: ${i}`]}break}}return s}function bw(e){return e==="in_progress"?"in_progress":e==="done"||e==="completed"?"done":"pending"}function ww(e){for(let t=e.length-1;t>=0;t--){const n=e[t];if(n.role==="assistant")for(let s=n.content.length-1;s>=0;s--){const o=n.content[s];if(o.type!=="toolUse"||mo(o.toolName)!=="todo")continue;let i=o.input;if(typeof i=="string")try{i=JSON.parse(i)}catch{continue}const u=i?.todos;if(Array.isArray(u))return u.flatMap(p=>{const m=p??{},h=typeof m.title=="string"?m.title:typeof m.content=="string"?m.content:"";return h?[{title:h,status:bw(m.status)}]:[]})}}return[]}const Sw=["queued","working","suspended","completed","failed"];function lc(e){return e.status==="completed"?"completed":e.status==="failed"||e.status==="cancelled"?"failed":e.subagentPhase?e.subagentPhase:"working"}function Cw(){return{queued:0,working:0,suspended:0,completed:0,failed:0}}function _w(e){const t=new Map;for(const n of e){if(n.kind!=="subagent"||n.swarmIndex===void 0)continue;const s=n.parentToolCallId??"swarm",o=t.get(s)??[];o.push({id:n.id,name:n.description,subagentType:n.subagentType,phase:lc(n),summary:n.outputPreview,outputLines:n.outputLines,text:n.text,suspendedReason:n.suspendedReason,swarmIndex:n.swarmIndex}),t.set(s,o)}return[...t.entries()].map(([n,s])=>{const o=s.toSorted((u,p)=>u.swarmIndex-p.swarmIndex||u.id.localeCompare(p.id)),i=Cw();for(const u of o)i[u.phase]++;return{id:n,members:o,counts:i}}).filter(n=>n.members.length>1).toSorted((n,s)=>{const o=n.members.at(0)?.swarmIndex??0,i=s.members.at(0)?.swarmIndex??0;return o!==i?o-i:n.id.localeCompare(s.id)})}function $w(e){let t=0,n=0;for(const s of e){n+=s.members.length;for(const o of Sw)(o==="completed"||o==="failed")&&(t+=s.counts[o])}return{done:t,total:n}}function Mw(e){const t=new Map;for(const n of e){if(n.kind!=="subagent"||!n.parentToolCallId)continue;const s=t.get(n.parentToolCallId)??[];s.push({id:n.id,name:n.description,subagentType:n.subagentType,phase:lc(n),summary:n.outputPreview,outputLines:n.outputLines,text:n.text,suspendedReason:n.suspendedReason,swarmIndex:n.swarmIndex??Number.MAX_SAFE_INTEGER}),t.set(n.parentToolCallId,s)}for(const[n,s]of t)t.set(n,s.toSorted((o,i)=>o.swarmIndex-i.swarmIndex||o.id.localeCompare(i.id)));return t}const $s=Ju(),us=P2(),Jo=F2(),$i=Kk(),rc=qe.permission,uc=qe.activeWorkspace,cc=qe.planMode,dc=qe.planArmed,pc=qe.swarmMode,fc=qe.supermoonMode,mc=qe.goalMode,Ar=40401,vc=qe.onboarded;ao(qe.codeFont);ao(qe.theme);ao(qe.thinking);function xw(){try{const e=$t(rc);if(e==="auto"||e==="yolo"||e==="manual")return e}catch{}return"manual"}function Iw(e){try{Ot(rc,e)}catch{}}function qo(e){const t=$t(e);if(!t)return{};try{const n=JSON.parse(t);if(!n||typeof n!="object"||Array.isArray(n))return{};const s={};for(const[o,i]of Object.entries(n))i===!0&&(s[o]=!0);return s}catch{return{}}}function oi(e,t){try{const n={};for(const[s,o]of Object.entries(t))o&&(n[s]=!0);Ot(e,JSON.stringify(n))}catch{}}function hc(){oi(cc,N.planModeBySession)}function gc(){oi(dc,N.planArmedBySession)}function yc(){oi(pc,N.swarmModeBySession)}function kc(){oi(fc,N.supermoonModeBySession)}function bc(){oi(mc,N.goalModeBySession)}function Aw(){try{return $t(uc)}catch{return null}}const wc=qe.hiddenWorkspaces;function Tw(){try{const e=$t(wc);if(!e)return[];const t=JSON.parse(e);return Array.isArray(t)?t.filter(n=>typeof n=="string"):[]}catch{return[]}}function Pw(e){try{Ot(wc,JSON.stringify(e))}catch{}}function Ew(e){try{Ot(uc,e)}catch{}}function Lw(e,t){if(t&&e.startsWith(t)){const s=e.slice(t.length);return s?`~${s}`:"~"}const n=e.match(/^\/(?:Users|home)\/[^/]+(\/.*)?$/);return n?`~${n[1]??""}`:e}const N=Pn({...lw(),connected:!1,serverVersion:"",dangerousBypassAuth:!1,backend:"v1",workspaceName:"kimi-web",connection:"disconnected",permission:xw(),thinking:void 0,thinkingBySession:{},planModeBySession:qo(cc),planArmedBySession:qo(dc),swarmModeBySession:qo(pc),supermoonModeBySession:qo(fc),modeVersionBySession:{},supermoonPreviousEffortBySession:{},goalModeBySession:qo(mc),loading:!1,sessionLoading:!1,queuedBySession:{},gitStatusBySession:{},promptIdBySession:{},inFlightBySession:{},unreadBySession:nl(),authReady:!1,defaultModel:null,managedProviderStatus:null,workspaces:[],activeWorkspaceId:Aw(),fsHome:null,recentRoots:[],hiddenWorkspaceRoots:Tw(),availableOpenInApps:[],config:null,sideChatMessagesByAgent:{},sideChatSendingByAgent:{},sideChatUserMessageIdsBySession:{},messagesLoadingMoreBySession:{},messagesHasMoreBySession:{},messagesLoadMoreErrorBySession:{},sessionsHasMoreByWorkspace:{},sessionsLoadingMoreByWorkspace:{},sessionsCursorByWorkspace:{},sessionsInitialCountByWorkspace:{},sessionsFullyLoaded:!1}),Oo=Pn({planMode:!1,planArmed:!1,swarmMode:!1,supermoonMode:!1,goalMode:!1,planModeTouched:!1});function Sc(e){N.sessions=e}function Gi(e,t){N.sessions=N.sessions.map(n=>n.id===e?t(n):n)}function Bw(e){N.sessions=[e,...N.sessions.filter(t=>t.id!==e.id)]}function Rw(e){N.sessions=[...N.sessions,e]}function Ow(e){N.sessions=N.sessions.filter(t=>t.id!==e)}function Cc(){const e=N.activeSessionId;e&&N.unreadBySession[e]&&typeof document<"u"&&document.visibilityState==="visible"&&(N.unreadBySession={...N.unreadBySession,[e]:!1},sl({[e]:!1}))}typeof window<"u"&&window.addEventListener("storage",e=>{e.key===qe.unread&&(N.unreadBySession=nl(),Cc())});function Ua(){if($n===null||!$n.health().stale)return;Qt("ws:stale-reconnect",{sessionId:N.activeSessionId,status:"stale"}),xs("ws: stale socket on focus, reconnecting",{activeSessionId:N.activeSessionId}),$n.reconnect();const e=N.activeSessionId;e&&Di.request(e)}typeof document<"u"&&document.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"&&(Cc(),Ua())});typeof window<"u"&&(window.addEventListener("focus",Ua),window.addEventListener("online",Ua));function Cl(e){N.activeSessionId=e}function Dw(e){N.messagesBySession=e}function zw(e,t){N.messagesBySession={...N.messagesBySession,[e]:t}}function _c(e,t){N.messagesBySession={...N.messagesBySession,[e]:t(N.messagesBySession[e]??[])}}function Fw(e){const{[e]:t,...n}=N.messagesBySession;N.messagesBySession=n}function $c(e){$n?.unsubscribe(e),u4(e),Ri.discard(({meta:t})=>t.sessionId===e),Ow(e),Fw(e),delete N.approvalsBySession[e],delete N.questionsBySession[e],delete N.tasksBySession[e],delete N.goalBySession[e],delete N.gitStatusBySession[e],delete N.lastSeqBySession[e],delete N.compactionBySession[e],delete N.messagesLoadingMoreBySession[e],delete N.messagesHasMoreBySession[e],delete N.messagesLoadMoreErrorBySession[e],delete Va[e],Oi.delete(e),Mi.delete(e),Dc.delete(e),hb(e),delete N.queuedBySession[e],delete N.promptIdBySession[e],delete N.inFlightBySession[e],delete N.turnActiveBySession[e],delete N.planModeBySession[e],delete N.planArmedBySession[e],delete N.swarmModeBySession[e],delete N.supermoonModeBySession[e],delete N.modeVersionBySession[e],delete N.supermoonPreviousEffortBySession[e],delete N.goalModeBySession[e],delete N.thinkingBySession[e],hc(),gc(),yc(),kc(),bc()}const Mc=x(null),xc=x([]),Ic=x(!1),Ac=x(!1),Tc=x(null);async function ii(e){const t=N.modeVersionBySession[e]??0;let n;try{n=await Ae().getSessionStatus(e)}catch{return}Gi(e,s=>({...s,model:n.model||s.model,usage:{...s.usage,contextTokens:n.contextTokens,contextLimit:n.maxContextTokens}})),Wk(N,e,t)&&(N.swarmModeBySession={...N.swarmModeBySession,[e]:n.swarmMode},N.planModeBySession={...N.planModeBySession,[e]:n.planMode},N.supermoonModeBySession={...N.supermoonModeBySession,[e]:n.supermoonMode}),n.thinkingEffort.length>0&&(N.thinkingBySession={...N.thinkingBySession,[e]:n.thinkingEffort})}async function Nw(e){const t=N.goalVersionBySession[e]??0;let n;try{n=await Ae().getSessionGoal(e)}catch{return}if((N.goalVersionBySession[e]??0)!==t)return;const s={...N.goalBySession};n===null||n.status==="complete"?delete s[e]:s[e]=n,N.goalBySession=s}function Pc(e,t){const n=t??N.activeSessionId;return n?Promise.resolve(Ae().updateSession(n,e)).then(()=>ii(n)).then(()=>!0).catch(s=>(ai("persistSessionProfile",s,{sessionId:n}),!1)):Promise.resolve(!1)}const Ec=qe.conversationToc;function qw(){try{const e=$t(Ec);return e===null?!0:e==="true"}catch{return!0}}function Ww(e){try{Ot(Ec,e?"true":"false")}catch{}}const Lc=x(qw());function Hw(e){Lc.value=e,Ww(e)}function Uw(e){try{return $t(e)??""}catch{return""}}const Bc=x(Uw(vc)==="1");function Vw(e){Bc.value=e;try{Ot(vc,e?"1":"0")}catch{}}let $n=null,Tr=0;function Rc(){return Tr+=1,`msg_opt_${Date.now().toString(36)}_${Tr}`}function jw(e,t,n){const s={sessions:N.sessions,activeSessionId:N.activeSessionId,messagesBySession:N.messagesBySession,approvalsBySession:N.approvalsBySession,planReviewByToolCallId:N.planReviewByToolCallId,questionsBySession:N.questionsBySession,tasksBySession:N.tasksBySession,goalBySession:N.goalBySession,goalVersionBySession:N.goalVersionBySession,lastSeqBySession:N.lastSeqBySession,turnActiveBySession:N.turnActiveBySession,compactionBySession:N.compactionBySession,config:N.config,warnings:N.warnings},o=kw(s,e,{sessionId:t,seq:n});if(Sc(o.sessions),Cl(o.activeSessionId),Dw(o.messagesBySession),N.approvalsBySession=o.approvalsBySession,N.planReviewByToolCallId=o.planReviewByToolCallId,N.questionsBySession=o.questionsBySession,N.tasksBySession=o.tasksBySession,N.goalBySession=o.goalBySession,N.goalVersionBySession=o.goalVersionBySession,N.lastSeqBySession=o.lastSeqBySession,N.turnActiveBySession=o.turnActiveBySession,N.compactionBySession=o.compactionBySession,N.config=o.config??null,N.warnings=o.warnings,e.type==="configChanged"&&(N.defaultModel=e.config.defaultModel??null),e.type==="modelCatalogChanged"&&(ft.loadModels(),ft.loadProviders()),e.type==="sessionUsageUpdated"){if(e.swarmMode!==void 0&&(N.swarmModeBySession={...N.swarmModeBySession,[e.sessionId]:e.swarmMode}),e.planMode!==void 0&&(N.planModeBySession={...N.planModeBySession,[e.sessionId]:e.planMode}),e.supermoonMode!==void 0){const i=N.supermoonModeBySession[e.sessionId]??!1;N.supermoonModeBySession={...N.supermoonModeBySession,[e.sessionId]:e.supermoonMode},e.supermoonMode&&!i?Be.pinSupermoonEffort(e.sessionId):!e.supermoonMode&&i&&Be.restoreSupermoonEffort(e.sessionId)}e.thinking!==void 0&&(N.thinkingBySession={...N.thinkingBySession,[e.sessionId]:e.thinking}),(e.planMode!==void 0||e.swarmMode!==void 0||e.supermoonMode!==void 0)&&ls(N,e.sessionId)}}function Kw(e,t){const n=N.lastSeqBySession[t.sessionId]??0,s=N.turnActiveBySession[t.sessionId]??!1;jw(e,t.sessionId,t.seq);const o=Cn.sideChatTargetBySession.value[t.sessionId];if(o){const{agentId:i}=o,u=t.sessionId;e.type==="agentDelta"&&e.agentId===i?e.delta.text&&Cn.appendSideChatAssistantText(i,u,e.delta.text):e.type==="agentTurnEnded"&&e.agentId===i?Cn.finishSideChatAgent(i,u):e.type==="taskProgress"&&e.taskId===i?Cn.appendSideChatAssistantText(i,u,e.outputChunk):e.type==="taskCompleted"&&e.taskId===i&&Cn.finishSideChatAgent(i,u,e.outputPreview)}if(e.type==="messageCreated"&&e.message.role==="user"&&e.message.promptId!==void 0){const i=e.message.sessionId;N.promptIdBySession[i]!==e.message.promptId&&(N.promptIdBySession={...N.promptIdBySession,[i]:e.message.promptId})}if(e.type==="assistantDelta"&&t.sessionId===N.activeSessionId&&$s.recordMoonDelta((e.delta.text?.length??0)+(e.delta.thinking?.length??0)),e.type==="turnActiveChanged"&&!e.active&&t.seq>n){const i=e.reason;bS(e.sessionId,i==="cancelled"||i==="failed"||i==="blocked"?"aborted":"idle",s)}e.type==="sessionWorkChanged"&&(e.mainTurnActive===!1&&s||e.mainTurnActive===void 0&&!e.busy)&&t.seq>n&&kS(e.sessionId),(e.type==="promptAborted"||e.type==="promptCompleted"&&e.reason==="blocked")&&t.seq>n&&N.promptIdBySession[e.sessionId]===e.promptId&&Be.finishPromptLocal(e.sessionId),e.type==="questionRequested"&&wS(e.sessionId,e.question),e.type==="approvalRequested"&&SS(e.sessionId,e.approval)}const Ri=Jk(({appEvent:e,meta:t})=>Kw(e,t),({appEvent:e})=>Qk(e),{coalesce:t2});function Oc(){if($n!==null||typeof WebSocket>"u")return;Qt("ws:connection",{status:"connecting"}),N.connection="connecting",$n=Ae().connectEvents({onEvent(t,n){if(t.type==="workspaceCreated"||t.type==="workspaceUpdated"||t.type==="workspaceDeleted"){Be.applyWorkspaceEvent(t);return}if(t.type==="pluginsChanged"||t.type==="capabilityChanged"){Lk(t);return}for(const s of e2({appEvent:t,meta:n}))Ri(s)},onResync(t,n,s){Qt("ws:resync",{sessionId:t,status:"required",seq:n}),Ri.flush(),Oi.add(t),Di.request(t)},onError(t,n,s){Qt("ws:error",{status:"failed",errorCode:t,fatal:s}),_l({severity:"error",title:dt.global.t("warnings.wsTitle"),message:n,details:[Bt("message",n)].filter(o=>o!==void 0)})},onConnectionChange(t){Qt("ws:connection",{status:t?"connected":"disconnected"}),N.connected=t,N.connection=t?"connected":"disconnected",t&&(t4(),Be.refreshServerMeta())},onTerminalOutput(t,n,s,o){$i.handleOutput(t,n,s,o)},onTerminalExit(t,n,s){$i.handleExit(t,n,s)}}),$i.bindTransport($n)}const Va={},Oi=new Set,Mi=new Set,Dc=new Set;function Gw(e){return _n(e)&&e.code===Ar?!0:typeof e=="object"&&e!==null&&e.code===Ar}function Bt(e,t){if(!(t==null||t===""))return{label:dt.global.t(`warnings.details.${e}`),value:zc(t)}}function zc(e){if(e instanceof Error)return typeof e.stack=="string"&&e.stack?e.stack:e.message?`${e.name}: ${e.message}`:e.name;if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean"||typeof e=="bigint")return String(e);try{return JSON.stringify(e)}catch{return String(e)}}function Qw(e){return e instanceof Error||typeof e=="object"&&e!==null&&typeof e.name=="string"?e.name:void 0}function Yw(e){return e instanceof Error||typeof e=="object"&&e!==null&&typeof e.message=="string"?e.message:void 0}function Zw(e){return e instanceof Error&&typeof e.stack=="string"&&e.stack?e.stack:void 0}function Xw(e){if(!(typeof e!="number"||!Number.isFinite(e)))return new Date(e).toISOString()}function Pr(e){if(!(typeof e!="number"||!Number.isFinite(e)))return`${Math.round(e)}ms`}function Jw(e,t,n){const s=al(t),o=_n(t),i=s||o?t.timestamp:void 0,u=s||o?t.durationMs:void 0,p=[Bt("operation",e),Bt("sessionId",n??N.activeSessionId),Bt("connection",N.connection),Bt("timestamp",Xw(i??Date.now()))];return s?p.push(Bt("duration",Pr(u)),Bt("request",`${t.method} ${t.path}`),Bt("endpoint",t.url),Bt("requestId",t.requestId),Bt("phase",t.phase),Bt("timeout",`${t.timeoutMs}ms`),Bt("status",t.status===void 0?void 0:`${t.status} ${t.statusText??""}`.trim()),Bt("contentType",t.contentType),Bt("responsePreview",t.bodyPreview),Bt("cause",t.cause)):o?p.push(Bt("duration",Pr(u)),Bt("code",t.code),Bt("requestId",t.requestId),Bt("message",t.message),Bt("details",t.details)):p.push(Bt("errorName",Qw(t)),Bt("message",Yw(t)??zc(t)),Bt("stack",Zw(t))),p.filter(m=>m!==void 0)}function e4(e,t,n={}){const s=al(t),o=_n(t),i=Ku(t),u=n.title??(i?dt.global.t("warnings.daemonTimeoutTitle"):s?dt.global.t("warnings.daemonNetworkTitle"):o?dt.global.t("warnings.daemonApiTitle"):dt.global.t("warnings.operationFailedTitle")),p=n.message??(i?dt.global.t("warnings.daemonTimeoutMessage"):s?dt.global.t("warnings.daemonNetworkMessage"):o?t.message:dt.global.t("warnings.operationFailedMessage"));return{severity:"error",title:u,message:p,details:Jw(e,t,n.sessionId)}}function _l(e){N.warnings=[...N.warnings,e].slice(-50)}function t4(){const e=dt.global.t("warnings.wsTitle"),t=N.warnings.filter(n=>!(typeof n=="object"&&n!==null&&n.severity==="error"&&n.title===e));t.length!==N.warnings.length&&(N.warnings=t)}function ai(e,t,n){console.error(`[kimi-web] operation failed: ${e}`,t);const s=_n(t),o=al(t);Qt("operation:failed",{sessionId:n?.sessionId,status:"failed",operation:e,errorName:t instanceof Error?t.name:typeof t,errorCode:s?t.code:void 0,requestId:s||o?t.requestId:void 0,phase:o?t.phase:void 0,httpStatus:o?t.status:void 0,timeout:Ku(t)}),_l(e4(e,t,n))}const n4={40913:"warnings.goal.alreadyExists",40914:"warnings.goal.notFound",40915:"warnings.goal.statusInvalid",40916:"warnings.goal.notResumable",40918:"warnings.goal.objectiveTooLong"};function s4(e){if(!_n(e))return;const t=n4[e.code];return t?dt.global.t(t):void 0}async function o4(e){if($c(e),N.activeSessionId!==e)return;const t=N.sessions[0];t?await Be.selectSession(t.id,{urlMode:"replace"}):(Cl(void 0),N.sessionLoading=!1,Be.writeSessionUrl(void 0,"replace"))}const Er=new Set;async function i4(e){if(!Er.has(e)){Er.add(e);try{const t=await Ae().getSessionWarnings(e),n=dt.global.t("warnings.noteLabel");for(const s of t)_l(`${n}: ${s.message}`)}catch{}}}async function $l(e){const t=Be.localTurnStartState(e);try{const s=await Ae().getSessionSnapshot(e);if(!N.sessions.some(m=>m.id===e))return"ok";Ri.flush();const o=N.lastSeqBySession[e]??0,i=Va[e];if(!(Oi.has(e)||zi.has(e))&&i!==void 0&&i===s.epoch&&o>s.asOfSeq)return Mi.delete(e)||(Mi.add(e),Di.request(e)),"ok";if(!Be.isLocalTurnSnapshotCurrent(e,t))return Be.afterLocalTurnStartsSettle(e,()=>{Di.request(e)}),"ok";const p=Aa(s.session.usage);Gi(e,m=>({...s.session,model:s.session.model&&s.session.model.length>0?s.session.model:m.model,usage:p?m.usage:s.session.usage})),zw(e,Hk(N.messagesBySession[e]??[],s.messages)),N.tasksBySession={...N.tasksBySession,[e]:Uk(s.subagents,N.tasksBySession[e]??[])},N.messagesHasMoreBySession={...N.messagesHasMoreBySession,[e]:s.hasMoreMessages},N.approvalsBySession={...N.approvalsBySession,[e]:s.pendingApprovals};for(const m of s.pendingApprovals){const h=m.display;h?.kind==="plan_review"&&typeof h.plan=="string"&&h.plan.length>0&&(N.planReviewByToolCallId={...N.planReviewByToolCallId,[m.toolCallId]:{plan:h.plan,path:typeof h.path=="string"?h.path:void 0}})}N.questionsBySession={...N.questionsBySession,[e]:s.pendingQuestions},N.lastSeqBySession={...N.lastSeqBySession,[e]:s.asOfSeq},Va[e]=s.epoch,Oi.delete(e),Mi.delete(e),Be.handleSessionSnapshot(e,{inFlightTurn:s.inFlightTurn,busy:s.session.busy});{const m={...N.turnActiveBySession};s.session.mainTurnActive??(s.inFlightTurn!==null&&s.session.busy)?m[e]=!0:delete m[e],N.turnActiveBySession=m}return Oc(),$n&&($n.seedSnapshot(e,s),$n.subscribe(e,{seq:s.asOfSeq,epoch:s.epoch}),r4(e)),zi.delete(e),p&&ii(e),i4(e),"ok"}catch(n){return Gw(n)?(await o4(e),"not-found"):(ai("getSessionSnapshot",n,{title:dt.global.t("warnings.sessionSnapshotTitle"),message:dt.global.t("warnings.sessionSnapshotMessage"),sessionId:e}),"failed")}}const Di=Vk($l);function a4(e){return Object.prototype.hasOwnProperty.call(N.messagesBySession,e)}const l4=4,Ms=[],zi=new Set;function r4(e){const t=Ms.indexOf(e);for(t!==-1&&Ms.splice(t,1),Ms.unshift(e);Ms.length>l4;){let n=-1;for(let o=Ms.length-1;o>=0;o--)if(Ms[o]!==N.activeSessionId){n=o;break}if(n===-1)break;const[s]=Ms.splice(n,1);if(s===void 0)break;$n?.unsubscribe(s),zi.add(s)}}function u4(e){const t=Ms.indexOf(e);t!==-1&&Ms.splice(t,1),zi.delete(e)}async function c4(e){return $l(e)}function Ml(e,t){return(N.inFlightBySession[e]??!1)||(N.turnActiveBySession[e]??!1)||(t??N.sessions.find(n=>n.id===e)?.mainTurnActive??!1)}function xl(e){try{const t=new Date(e),s=Date.now()-t.getTime(),o=s/36e5;if(s<6e4)return dt.global.t("sessions.justNow");if(o<1)return`${Math.round(s/6e4)}m`;if(o<24)return`${Math.round(o)}h`;const i=s/864e5;return i<7?`${Math.round(i)}d`:i<30?`${Math.round(i/7)}w`:i<365?`${Math.round(i/30)}mo`:`${Math.round(i/365)}y`}catch{return e}}const d4=3e4,ei=x(0);let ha=null;function p4(){ha===null&&(ha=setInterval(()=>{ei.value=(ei.value+1)%Number.MAX_SAFE_INTEGER},d4),ha.unref?.())}function f4(e,t){const n=e.split(`
-`),s=t.split(`
-`),o=[];return n.forEach((i,u)=>{o.push({kind:"rem",gutter:String(u+1),text:`- ${i}`})}),s.forEach((i,u)=>{o.push({kind:"add",gutter:String(u+1),text:`+ ${i}`})}),o}function m4(e){const t=e.display??{},n=typeof t.kind=="string"?t.kind:"";if(n==="diff"){const s=typeof t.path=="string"?t.path:"";return Array.isArray(t.diff)?{kind:"diff",path:s,diff:t.diff}:typeof t.old_text=="string"&&typeof t.new_text=="string"?{kind:"diff",path:s,diff:f4(t.old_text,t.new_text)}:{kind:"diff",path:s,diff:[]}}if(n==="shell"||n==="command"){const s=typeof t.command=="string"?t.command:e.action,o=typeof t.cwd=="string"?t.cwd:void 0,i=typeof t.danger=="string"?t.danger:void 0;return{kind:"shell",command:s,cwd:o,danger:i}}if(n==="file_content"||n==="file"){const s=typeof t.path=="string"?t.path:"",o=typeof t.content=="string"?t.content:"",i=typeof t.language=="string"?t.language:void 0;return{kind:"file",path:s,content:o,language:i}}if(n==="file_op"||n==="fileop"){const s=typeof t.operation=="string"?t.operation:typeof t.op=="string"?t.op:n,o=typeof t.path=="string"?t.path:"",i=typeof t.detail=="string"?t.detail:void 0;return{kind:"fileop",op:s,path:o,detail:i}}if(n==="url_fetch"||n==="url"){const s=typeof t.url=="string"?t.url:e.action;return{kind:"url",method:typeof t.method=="string"?t.method:void 0,url:s}}if(n==="search"){const s=typeof t.query=="string"?t.query:e.action,o=typeof t.scope=="string"?t.scope:void 0;return{kind:"search",query:s,scope:o}}if(n==="invocation"||n==="agent_call"||n==="skill_call"){const s=typeof t.kind=="string"?t.kind:n,o=typeof t.name=="string"?t.name:e.toolName,i=typeof t.description=="string"?t.description:void 0;return{kind:"invocation",kind2:s,name:o,description:i}}if(n==="todo"||n==="todo_list")return{kind:"todo",items:(Array.isArray(t.items)?t.items:[]).map(i=>{const u=i??{};return{title:typeof u.title=="string"?u.title:"",status:typeof u.status=="string"?u.status:"pending"}})};if(n==="plan_review"){const s=typeof t.plan=="string"?t.plan:"",o=typeof t.path=="string"?t.path:void 0,u=(Array.isArray(t.options)?t.options:[]).map(p=>{const m=p??{},h=typeof m.label=="string"?m.label:"";if(!h)return null;const w=typeof m.description=="string"?m.description:void 0;return{label:h,description:w}}).filter(p=>p!==null);return{kind:"plan_review",plan:s,path:o,options:u.length>0?u:void 0}}return{kind:"generic",summary:e.action}}function v4(e){return{questionId:e.questionId,sessionId:e.sessionId,questions:e.questions.map(t=>({id:t.id,question:t.question,header:t.header,body:t.body,options:t.options.map(n=>({id:n.id,label:n.label,description:n.description,recommended:n.recommended})),multiSelect:t.multiSelect,allowOther:t.allowOther,otherLabel:t.otherLabel}))}}function h4(e){const t=N.messagesBySession[e.sessionId];if(!t||t.length===0)return;const n=new Map;for(const o of t)if(o.role==="assistant")for(const i of o.content){if(i.type!=="toolUse"||i.toolName!=="Bash"&&i.toolName!=="bash")continue;const u=i.input,p=u&&typeof u.command=="string"?u.command:void 0;p&&n.set(i.toolCallId,p)}if(n.size===0)return;const s=`task_id: ${e.id}`;for(const o of t)if(o.role==="tool")for(const i of o.content){if(i.type!=="toolResult")continue;if((typeof i.output=="string"?i.output:i.output!==void 0?JSON.stringify(i.output):"").includes(s)){const p=n.get(i.toolCallId);if(p)return p}}}function g4(e){let t;e.status==="running"?t="run":e.status==="completed"?t="done":t="fail";let n="";if(e.status==="running"&&e.startedAt){const u=Math.round((Date.now()-new Date(e.startedAt).getTime())/1e3),p=Math.floor(u/60),m=u%60;n=dt.global.t("tasks.timingRunning",{time:`${p}:${String(m).padStart(2,"0")}`})}else if(e.completedAt&&e.startedAt){const u=Math.round((new Date(e.completedAt).getTime()-new Date(e.startedAt).getTime())/1e3);n=dt.global.t("tasks.timingDone",{sec:u})}else n=e.status;const s=e.outputLines&&e.outputLines.length>0?e.outputLines:e.outputPreview?e.outputPreview.split(/\r?\n/):void 0,o=e.command??h4(e),i=e.kind==="bash"&&o?`$ ${o}`:void 0;return{id:e.id,name:e.description,kind:e.kind,state:t,timing:n,meta:i,output:s,runInBackground:e.runInBackground,parentToolCallId:e.parentToolCallId}}const y4=$(()=>{const e=N.sessions.find(n=>n.id===N.activeSessionId),t=e?e.cwd.split("/").pop()??e.cwd:"main";return{name:N.workspaceName,branch:t}}),k4=$(()=>(ei.value,N.sessions.toSorted((e,t)=>new Date(t.updatedAt).getTime()-new Date(e.updatedAt).getTime()).map(e=>({id:e.id,title:e.title,time:xl(e.updatedAt),busy:Ml(e.id,e.mainTurnActive),pendingInteraction:e.pendingInteraction,lastTurnReason:e.lastTurnReason})))),b4=$(()=>N.activeSessionId??""),w4=$(()=>{const e=N.activeSessionId;if(e)return ft.skillsBySession.value[e]??[];const t=Yi.value;return t?ft.skillsByWorkspace.value[t]??[]:[]}),Il=$(()=>{const e=N.activeSessionId;return e?N.inFlightBySession[e]??!1:!1}),S4=$(()=>Be.isStartingFirstPrompt()),Cn=ow(N,{pushOperationFailure:ai,nextOptimisticMsgId:Rc,connectEventsIfNeeded:Oc,getEventConn:()=>$n,resolveThinkingForPrompt:(e,t)=>ft.resolveThinkingForPrompt(e,t)}),li=$(()=>{const e=N.activeSessionId;if(!e)return[];const t=Cn.sideChatTargetBySession.value[e]?.agentId;return(N.tasksBySession[e]??[]).filter(n=>n.id!==t)}),Fc=W2(N,li),C4=$(()=>{const e=N.activeSessionId;if(!e)return[];const t=new Set(N.sideChatUserMessageIdsBySession[e]??[]),n=(N.messagesBySession[e]??[]).filter(o=>!t.has(o.id)),s=N.approvalsBySession[e]??[];return ac(n,s,o=>Ae().getFileUrl(o),Qi.value,N.planReviewByToolCallId)}),Qi=$(()=>{const e=N.activeSessionId;return e?(N.turnActiveBySession[e]??!1)||(N.sessions.find(t=>t.id===e)?.mainTurnActive??!1):!1}),_4=$(()=>Il.value||Qi.value),$4=x(null),M4=$(()=>(Fc.taskClock.value,li.value.map(g4))),Nc=$(()=>_w(li.value)),x4=$(()=>Mw(li.value)),_o=$(()=>{const e=N.activeSessionId;return e?N.goalBySession[e]??null:null}),I4=$(()=>{const e=N.activeSessionId;return e?ww(N.messagesBySession[e]??[]):[]}),A4=$(()=>{const e=N.activeSessionId;return e?N.compactionBySession[e]??null:null}),T4=$(()=>N.connection),P4=$(()=>N.loading),E4=$(()=>N.sessionLoading),L4=$(()=>{const e=N.activeSessionId;return e?N.messagesLoadingMoreBySession[e]??!1:!1}),B4=$(()=>{const e=N.activeSessionId;return e?N.messagesHasMoreBySession[e]??!1:!1}),R4=$(()=>{const e=N.activeSessionId;return e?N.messagesLoadMoreErrorBySession[e]??!1:!1}),O4=$(()=>N.serverVersion),qc=$(()=>N.backend),D4=$(()=>N.dangerousBypassAuth);Oe(qc,e=>{$n!==null&&$n.setTranscriptMode(e==="v2")},{immediate:!0});function z4(){N.dangerousBypassAuth=!1}const F4=$(()=>N.permission),N4=$(()=>N.thinking),Wc=$(()=>{const e=N.activeSessionId;return e?N.planModeBySession[e]??!1:Oo.planMode}),q4=$(()=>{const e=N.activeSessionId;return e?N.planArmedBySession[e]??!1:Oo.planArmed}),W4=$(()=>{const e=N.activeSessionId;return e?N.swarmModeBySession[e]??!1:Oo.swarmMode}),H4=$(()=>{const e=N.activeSessionId;return e?N.supermoonModeBySession[e]??!1:Oo.supermoonMode}),U4=$(()=>{const e=N.activeSessionId;return e?N.goalModeBySession[e]??!1:Oo.goalMode}),V4=$(()=>{const e=$w(Nc.value);return{plan:Wc.value,goal:_o.value&&_o.value.status!=="complete"?{status:_o.value.status,turnsUsed:_o.value.turnsUsed,elapsedMs:_o.value.wallClockMs}:null,swarm:e.total>0?e:null}}),j4=$(()=>{const e=N.activeSessionId;if(!e)return[];const t=Ae();return(N.queuedBySession[e]??[]).map(n=>({text:n.text,attachmentCount:n.attachments?.length??0,attachments:n.attachments?.map(s=>({fileId:s.fileId,kind:s.kind,url:t.getFileUrl(s.fileId),name:s.name}))}))}),K4=$(()=>N.warnings),G4=$(()=>{const e=N.activeSessionId;return e?(N.questionsBySession[e]??[]).map(v4):[]}),Q4=$(()=>{const e=N.activeSessionId;return e?(N.approvalsBySession[e]??[]).map(t=>({approvalId:t.approvalId,block:m4(t),agentName:t.agentName})):[]}),Al=$(()=>{const e=N.activeSessionId;return e?(N.approvalsBySession[e]??[]).length>0?"awaiting-approval":(N.questionsBySession[e]??[]).length>0?"awaiting-question":Il.value||Qi.value?"running":"idle":"idle"}),ft=Sb(N,{pushOperationFailure:ai,refreshSessionStatus:ii,persistSessionProfile:Pc,activity:Al,updateSession:Gi,updateSessionMessages:_c}),ja=$(()=>{const e=N.activeSessionId;if(!e)return null;const t=N.gitStatusBySession[e];return t?{branch:t.branch,ahead:t.ahead,behind:t.behind}:null}),Y4=$(()=>{const e=N.activeSessionId;return e?N.gitStatusBySession[e]?.pullRequest??null:null}),Z4=$(()=>{const e=N.activeSessionId;if(!e)return[];const t=N.gitStatusBySession[e];return t?Object.entries(t.entries).map(([n,s])=>({path:n,status:s})).sort((n,s)=>n.path.localeCompare(s.path)):[]}),X4=$(()=>{const e=N.activeSessionId;if(!e)return null;const t=N.gitStatusBySession[e];return t?{totalAdditions:t.additions,totalDeletions:t.deletions}:null}),Hc=$(()=>{const e=N.sessions.find(u=>u.id===N.activeSessionId),t=ja.value?.branch??(e?e.cwd.split("/").pop()??e.cwd:"main"),n=e===void 0?ft.draftModel.value:null,s=(e?.model&&e.model.length>0?e.model:n??N.defaultModel)??"—",o=ft.models.value.find(u=>u.id===s)??ft.models.value.find(u=>u.model===s);return{model:o?.displayName||o?.model||(s.includes("/")?s.split("/").pop():s),modelId:o?.id??s,ctxUsed:e?.usage.contextTokens??0,ctxMax:e?.usage.contextLimit??0,permission:N.permission,branch:t,cwd:e?.cwd??"",isGitRepo:ja.value!==null}}),J4=$(()=>xc.value),eS=$(()=>N.sessions.find(t=>t.id===N.activeSessionId)?.usage.totalCostUsd??0),tS=$(()=>N.authReady),nS=$(()=>N.defaultModel),sS=$(()=>N.managedProviderStatus),oS=$(()=>N.config),iS=$(()=>{const e=N.activeSessionId;if(!e)return{};const t=N.gitStatusBySession[e];return t?{...t.entries}:{}});function Eo(e){const t=Jn(e.cwd);return N.workspaces.find(n=>Jn(n.root)===t)?.id??e.workspaceId??e.cwd}const ti=$(()=>qk({workspaces:N.workspaces,sessions:N.sessions,hiddenWorkspaceRoots:N.hiddenWorkspaceRoots,sessionsHasMoreByWorkspace:N.sessionsHasMoreByWorkspace})),Fi=x(Ud()),Lo=x(Vd()==="manual"?"manual":"recent"),To=x(jd());Oe(()=>N.sessions,e=>{const t=gp(e,Eo),{next:n,changed:s}=yp(To.value,t);s&&(To.value=n,bu(n))});const Ni=x(ap()),Ka=x(sg());function aS(e){const t=rp(Ni.value,e);Ni.value=t,lp(t)}function lS(e,t){const n=ig(Ka.value,e,t);Ka.value=n,og(n)}Oe(()=>[ti.value.map(e=>e.id).join("\0"),N.loading],([e,t])=>{if(t)return;const n=e?e.split("\0"):[],s=Cu(ti.value,To.value),o=fp(n,Fi.value,s);o!==null&&(Fi.value=o,yu(o));const{next:i,changed:u}=kp(To.value,new Set(n));u&&(To.value=i,bu(i))});const uo=$(()=>{const e=ti.value.map(t=>({id:t.id,name:t.name,root:t.root,shortPath:Lw(t.root,N.fsHome),sessionCount:t.sessionCount}));if(Lo.value==="recent"){const t=Cu(ti.value,To.value);return hp(e,t)}return mp(e,Fi.value)}),Yi=$(()=>{const e=N.activeWorkspaceId,t=uo.value;return e&&t.some(n=>n.id===e)?e:t[0]?.id??null});Oe(Yi,e=>{e&&(Object.prototype.hasOwnProperty.call(ft.skillsByWorkspace.value,e)||ft.loadSkillsForWorkspace(e))},{immediate:!0});const rS=$(()=>{const e=Yi.value;return e?uo.value.find(t=>t.id===e)??null:null});function Uc(e){return!e||e.state!=="open"&&e.state!=="closed"&&e.state!=="merged"?null:{number:e.number,state:e.state,url:e.url}}const uS=$(()=>{ei.value;const e=new Set(uo.value.map(n=>n.id)),t=new Map(uo.value.map(n=>[n.id,n.name]));return N.sessions.filter(n=>!n.parentSessionId&&e.has(Eo(n))).map(n=>{const s=Eo(n);return{id:n.id,title:n.title,time:xl(n.updatedAt),busy:Ml(n.id,n.mainTurnActive),pendingInteraction:n.pendingInteraction,lastTurnReason:n.lastTurnReason,lastPrompt:n.lastPrompt,workspaceId:s,workspaceName:t.get(s),pullRequest:Uc(N.gitStatusBySession[n.id]?.pullRequest)}})}),cS=$(()=>{ei.value;const e=new Map;for(const t of N.sessions.toSorted((n,s)=>new Date(s.updatedAt).getTime()-new Date(n.updatedAt).getTime())){if(t.parentSessionId)continue;const n=Eo(t),s={id:t.id,title:t.title,time:xl(t.updatedAt),busy:Ml(t.id,t.mainTurnActive),pendingInteraction:t.pendingInteraction,lastTurnReason:t.lastTurnReason,updatedAt:t.updatedAt,pullRequest:Uc(N.gitStatusBySession[t.id]?.pullRequest)},o=e.get(n)??[];o.push(s),e.set(n,o)}return uo.value.map(t=>({workspace:t,sessions:Su(e.get(t.id)??[],Ni.value),hasMore:N.sessionsHasMoreByWorkspace[t.id]??!1,loadingMore:N.sessionsLoadingMoreByWorkspace[t.id]??!1,initialCount:N.sessionsInitialCountByWorkspace[t.id]??qa}))});function dS(e){Fi.value=e,yu(e),Lo.value!=="manual"&&(Lo.value="manual",ku("manual"))}function pS(e){Lo.value!==e&&(Lo.value=e,ku(e))}const Vc=$(()=>{const e={};for(const[t,n]of Object.entries(N.approvalsBySession))n.length>0&&(e[t]=(e[t]??0)+n.length);for(const[t,n]of Object.entries(N.questionsBySession))n.length>0&&(e[t]=(e[t]??0)+n.length);return e}),fS=$(()=>{const e={};for(const[t,n]of Object.entries(N.approvalsBySession))n.length>0&&((e[t]??={approvals:0,questions:0}).approvals=n.length);for(const[t,n]of Object.entries(N.questionsBySession))n.length>0&&((e[t]??={approvals:0,questions:0}).questions=n.length);return e}),mS=$(()=>{const e={};for(const[t,n]of Object.entries(N.unreadBySession))n&&(e[t]=!0);return e}),vS=$(()=>{const e={},t=Vc.value;for(const n of N.sessions){const s=t[n.id]??0;if(s<=0)continue;const o=Eo(n);e[o]=(e[o]??0)+s}return e}),hS=$(()=>N.recentRoots),gS=$(()=>N.availableOpenInApps),Be=kb(N,{taskPoller:Fc,sideChat:Cn,modelProvider:ft,pushOperationFailure:ai,activity:Al,sessionsKnownEmpty:Dc,setSessions:Sc,updateSession:Gi,upsertSessionFront:Bw,appendSession:Rw,forgetSession:$c,setActiveSessionId:Cl,updateSessionMessages:_c,nextOptimisticMsgId:Rc,getEventConn:()=>$n,syncSessionFromSnapshot:$l,reopenSession:c4,hasLoadedMessages:a4,refreshSessionStatus:ii,refreshSessionGoal:Nw,persistSessionProfile:Pc,mergedWorkspaces:ti,workspacesView:uo,status:Hc,workspaceIdForSession:Eo,savePermissionToStorage:Iw,savePlanModeToStorage:hc,savePlanArmedToStorage:gc,saveSwarmModeToStorage:yc,saveSupermoonModeToStorage:kc,saveGoalModeToStorage:bc,draftModes:Oo,saveUnread:sl,saveActiveWorkspaceToStorage:Ew,saveHiddenWorkspacesToStorage:Pw,goalErrorMessage:s4,resetFastMoon:$s.resetFastMoon,initialized:Ac,connectIssue:Tc,selectedDiffPath:Mc,fileDiffLines:xc,fileDiffLoading:Ic});function Tl(e){return e===N.activeSessionId&&typeof document<"u"&&document.visibilityState==="visible"&&document.hasFocus()}const ga=new Map;function yS(e){const t=ga.get(e);Rk(t)&&(ga.set(e,Ok(t)),Ae().generateSessionTitle(e,{source:"first_turn"}).then(n=>{n!==null&&ga.set(e,Dk())}).catch(()=>{}))}function kS(e){if(N.turnActiveBySession[e]){const t={...N.turnActiveBySession};delete t[e],N.turnActiveBySession=t}N.inFlightBySession[e]&&(N.inFlightBySession={...N.inFlightBySession,[e]:!1})}function bS(e,t,n){const s=N.promptIdBySession[e];Be.finishPromptLocal(e,{turnWasActive:n}),N.config?.experimental?.auto_session_title===!0&&yS(e),Be.loadGitStatus(e),e===N.activeSessionId?ii(e):t==="idle"&&(N.unreadBySession={...N.unreadBySession,[e]:!0},sl({[e]:!0}));const o=(N.approvalsBySession[e]??[]).length>0,i=(N.questionsBySession[e]??[]).length>0;b2(t,o,i)&&us.maybeNotifyCompletion(e,{isUserWatching:Tl(e),sessionTitle:N.sessions.find(u=>u.id===e)?.title??"",promptId:s,onClick:()=>{Be.selectSession(e)}}),t==="idle"&&Jo.maybePlayCompletionSound()}function wS(e,t){const n=t.questions[0],s=n?.header?.trim()??"",o=n?.question?.trim()??"",i=s&&o?`${s}: ${o}`:o||s;us.maybeNotifyQuestion({isUserWatching:Tl(e),sessionTitle:N.sessions.find(u=>u.id===e)?.title??"",questionPreview:i,questionId:t.questionId,onClick:()=>{Be.selectSession(e)}}),Jo.maybePlayQuestionSound()}function SS(e,t){us.maybeNotifyApproval({isUserWatching:Tl(e),sessionTitle:N.sessions.find(n=>n.id===e)?.title??"",toolName:t.toolName,approvalId:t.approvalId,onClick:()=>{Be.selectSession(e)}}),Jo.maybePlayApprovalSound()}function Zi(){return p4(),{workspace:y4,sessions:k4,activeSessionId:b4,workspacesView:uo,workspaceSortMode:Lo,visibleWorkspace:rS,activeWorkspaceId:Yi,sessionsForView:uS,workspaceGroups:cS,attentionBySession:Vc,pendingBySession:fS,attentionByWorkspace:vS,unreadBySession:mS,pinnedSessionIds:Ni,sessionEmojiBySession:Ka,recentRoots:hS,turns:C4,tasks:M4,activeAppTasks:li,todos:I4,goal:_o,swarms:Nc,swarmMembersByToolCallId:x4,activationBadges:V4,compaction:A4,status:Hc,sessionCost:eS,fileDiff:J4,selectedDiffPath:Mc,fileDiffLoading:Ic,changes:Z4,gitInfo:ja,gitDiffStats:X4,activePullRequest:Y4,changesByPath:iS,pendingApprovals:Q4,availableOpenInApps:gS,connection:T4,loading:P4,sessionLoading:E4,loadingMoreMessages:L4,hasMoreMessages:B4,loadMoreMessagesError:R4,serverVersion:O4,backend:qc,dangerousBypassAuth:D4,clearDangerousBypassAuth:z4,initialized:Ac,connectIssue:Tc,permission:F4,thinking:N4,planMode:Wc,planArmed:q4,swarmMode:W4,supermoonMode:H4,goalMode:U4,queued:j4,warnings:K4,questions:G4,activity:Al,turnActive:Qi,inFlight:Il,working:_4,modelRetry:$4,isStartingFirstPrompt:S4,fastMoon:$s.fastMoon,models:ft.models,starredModelIds:ft.starredModelIds,providers:ft.providers,uiFontSize:$s.uiFontSize,setUiFontSize:$s.setUiFontSize,conversationToc:Lc,setConversationToc:Hw,colorScheme:$s.colorScheme,setColorScheme:$s.setColorScheme,accent:$s.accent,setAccent:$s.setAccent,notifyOnComplete:us.notifyOnComplete,notifyOnQuestion:us.notifyOnQuestion,notifyOnApproval:us.notifyOnApproval,notifyPermission:us.notifyPermission,setNotifyOnComplete:us.setNotifyOnComplete,setNotifyOnQuestion:us.setNotifyOnQuestion,setNotifyOnApproval:us.setNotifyOnApproval,soundOnComplete:Jo.soundOnComplete,setSoundOnComplete:Jo.setSoundOnComplete,onboarded:Bc,setOnboarded:Vw,load:Be.load,selectSession:Be.selectSession,clearActiveSession:Be.clearActiveSession,loadOlderMessages:Be.loadOlderMessages,loadWorkspaces:Be.loadWorkspaces,loadMoreSessions:Be.loadMoreSessions,loadAllSessions:Be.loadAllSessions,selectWorkspace:Be.selectWorkspace,openWorkspace:Be.openWorkspace,openWorkspaceDraft:Be.openWorkspaceDraft,startSessionAndSendPrompt:Be.startSessionAndSendPrompt,startSessionAndActivateSkill:Be.startSessionAndActivateSkill,startSessionAndOpenSideChat:Be.startSessionAndOpenSideChat,addWorkspaceByPath:Be.addWorkspaceByPath,browseFs:Be.browseFs,getFsHome:Be.getFsHome,sendPrompt:Be.sendPrompt,steerPrompt:Be.steerPrompt,sideChatVisible:Cn.sideChatVisible,sideChatSessionId:Cn.sideChatSessionId,sideChatTurns:Cn.sideChatTurns,sideChatRunning:Cn.sideChatRunning,sideChatSending:Cn.sideChatSending,openSideChat:Cn.openSideChat,closeSideChat:Cn.closeSideChat,sendSideChatPrompt:Cn.sendSideChatPrompt,terminal:$i,uploadImage:Be.uploadImage,abortCurrentPrompt:Be.abortCurrentPrompt,respondApproval:Be.respondApproval,respondQuestion:Be.respondQuestion,dismissQuestion:Be.dismissQuestion,pendingQuestionActions:Be.pendingQuestionActions,pendingApprovalActions:Be.pendingApprovalActions,cancelTask:Be.cancelTask,setPermission:Be.setPermission,setThinking:ft.setThinking,setPlanMode:Be.setPlanMode,togglePlanMode:Be.togglePlanMode,armPlanMode:Be.armPlanMode,dismissPlanMode:Be.dismissPlanMode,togglePlanArm:Be.togglePlanArm,setSwarmMode:Be.setSwarmMode,toggleSwarmMode:Be.toggleSwarmMode,setSupermoonMode:Be.setSupermoonMode,toggleSupermoonMode:Be.toggleSupermoonMode,setGoalMode:Be.setGoalMode,toggleGoalMode:Be.toggleGoalMode,createGoal:Be.createGoal,controlGoal:Be.controlGoal,enqueue:Be.enqueue,dismissWarning:Be.dismissWarning,renameSession:Be.renameSession,regenerateSessionTitle:Be.regenerateSessionTitle,renameWorkspace:Be.renameWorkspace,deleteWorkspace:Be.deleteWorkspace,reorderWorkspaces:dS,setWorkspaceSortMode:pS,togglePinnedSession:aS,setSessionEmoji:lS,archiveSession:Be.archiveSession,exportSession:Be.exportSession,restoreSession:Be.restoreSession,loadArchivedSessions:Be.loadArchivedSessions,compact:Be.compact,forkSession:Be.forkSession,undo:Be.undo,unqueue:Be.unqueue,reorderQueue:Be.reorderQueue,searchFiles:Be.searchFiles,loadGitStatus:Be.loadGitStatus,loadFileDiff:Be.loadFileDiff,clearFileDiff:Be.clearFileDiff,listDir:Be.listDir,readFileContent:Be.readFileContent,getFileDownloadUrl:Be.getFileDownloadUrl,openWorkspaceFile:Be.openWorkspaceFile,openInApp:Be.openInApp,revealWorkspaceFile:Be.revealWorkspaceFile,resolveImageUrl:Be.resolveImageUrl,loadModels:ft.loadModels,loadProviders:ft.loadProviders,skills:w4,activateSkill:ft.activateSkill,setModel:ft.setModel,toggleStarModel:ft.toggleStarModel,addProvider:ft.addProvider,deleteProvider:ft.deleteProvider,refreshProvider:ft.refreshProvider,refreshAllProviders:ft.refreshAllProviders,importCatalogProvider:ft.importCatalogProvider,importRegistry:ft.importRegistry,authReady:tS,defaultModel:nS,managedProviderStatus:sS,config:oS,updateConfig:Be.updateConfig,checkAuth:Be.checkAuth,startOAuthLogin:ft.startOAuthLogin,pollOAuthLogin:ft.pollOAuthLogin,cancelOAuthLogin:ft.cancelOAuthLogin,logout:Be.logout}}const CS=["aria-label"],_S=xe({__name:"Spinner",props:{size:{default:"md"},label:{default:"Loading"}},setup(e){return(t,n)=>(a(),c("span",{class:fe(["ui-spinner",`ui-spinner--${e.size}`]),role:"status","aria-label":e.label},[...n[0]||(n[0]=[r("svg",{class:"ui-spinner__svg",viewBox:"0 0 24 24","aria-hidden":"true"},[r("circle",{class:"ui-spinner__track",cx:"12",cy:"12",r:"9"}),r("circle",{class:"ui-spinner__arc",cx:"12",cy:"12",r:"9"})],-1)])],10,CS))}}),qt=Pe(_S,[["__scopeId","data-v-e5c5b17d"]]),$S={key:0,class:"ui-badge__dot","aria-hidden":"true"},MS=xe({__name:"Badge",props:{variant:{default:"neutral"},size:{default:"md"},dot:{type:Boolean}},setup(e){return(t,n)=>(a(),c("span",{class:fe(["ui-badge",[`ui-badge--${e.variant}`,`ui-badge--${e.size}`]])},[e.dot?(a(),c("span",$S)):A("",!0),gt(t.$slots,"default",{},void 0,!0)],2))}}),Nt=Pe(MS,[["__scopeId","data-v-5bc5cd6d"]]),xS=xe({__name:"Menu",setup(e,{expose:t}){const n=x();return t({el:n}),(s,o)=>(a(),c("div",{ref_key:"el",ref:n,class:"ui-menu",role:"menu"},[gt(s.$slots,"default",{},void 0,!0)],512))}}),qs=Pe(xS,[["__scopeId","data-v-60e6cd8d"]]),IS={key:0,class:"ui-menu-sep",role:"separator"},AS=["disabled"],TS=xe({__name:"MenuItem",props:{active:{type:Boolean},danger:{type:Boolean},disabled:{type:Boolean},separator:{type:Boolean},size:{default:"md"}},emits:["click"],setup(e){return(t,n)=>e.separator?(a(),c("div",IS)):(a(),c("button",{key:1,class:fe(["ui-menu-item",[`ui-menu-item--${e.size}`,{"is-active":e.active,"is-danger":e.danger}]]),type:"button",role:"menuitem",disabled:e.disabled,onClick:n[0]||(n[0]=s=>t.$emit("click",s))},[gt(t.$slots,"default",{},void 0,!0)],10,AS))}}),ct=Pe(TS,[["__scopeId","data-v-f940771a"]]),Os=6,Ds=8,PS=150,ES=xe({__name:"Tooltip",props:{text:{},placement:{default:"top"},maxWidth:{default:280},maxLines:{default:6}},setup(e){const t=e,n=x(),s=x(),o=x(!1),i=x(!1),u=x({maxWidth:`${t.maxWidth}px`});let p,m=null,h;function w(){const g=s.value;if(!m||!g)return;const b=m.getBoundingClientRect(),y=g.offsetWidth,E=g.offsetHeight,S=window.innerWidth,O=window.innerHeight;let D=t.placement;D==="top"&&b.top-Os-EO-Ds?D="top":D==="left"&&b.left-Os-yS-Ds&&(D="left");let T=0,L=0;D==="top"?(T=b.top-Os-E,L=b.left+b.width/2-y/2):D==="bottom"?(T=b.bottom+Os,L=b.left+b.width/2-y/2):D==="left"?(T=b.top+b.height/2-E/2,L=b.left-Os-y):(T=b.top+b.height/2-E/2,L=b.right+Os),L=Math.min(Math.max(L,Ds),S-Ds-y),T=Math.min(Math.max(T,Ds),O-Ds-E),u.value={maxWidth:`${t.maxWidth}px`,top:`${Math.round(T)}px`,left:`${Math.round(L)}px`}}function I(){t.text&&(window.clearTimeout(p),p=window.setTimeout(()=>{o.value=!0,i.value=!1,window.addEventListener("scroll",f,{capture:!0,passive:!0}),window.addEventListener("resize",f,{passive:!0}),Ue(()=>{w(),i.value=!0})},PS))}function v(){window.clearTimeout(p),window.removeEventListener("scroll",f,{capture:!0}),window.removeEventListener("resize",f),o.value=!1,i.value=!1}function f(){o.value&&v()}function _(g){g!==m&&(m&&(m.removeEventListener("mouseenter",I),m.removeEventListener("mouseleave",v),m.removeEventListener("focusin",I),m.removeEventListener("focusout",v)),m=g,m&&(m.addEventListener("mouseenter",I),m.addEventListener("mouseleave",v),m.addEventListener("focusin",I),m.addEventListener("focusout",v)))}return mt(()=>{const g=n.value??null;_(g?.firstElementChild??g),g&&(h=new MutationObserver(()=>{const b=g.firstElementChild??null;b!==m&&(v(),_(b??g))}),h.observe(g,{childList:!0}))}),Tn(()=>{window.clearTimeout(p),window.removeEventListener("scroll",f,{capture:!0}),window.removeEventListener("resize",f),h?.disconnect(),_(null)}),(g,b)=>(a(),c(ge,null,[r("span",{ref_key:"trigger",ref:n,class:"ui-tip"},[gt(g.$slots,"default",{},void 0,!0)],512),(a(),G(io,{to:"body"},[ht(r("div",{ref_key:"bubble",ref:s,class:fe(["ui-tip__bubble",{positioned:i.value}]),style:rt([u.value,{"--tip-lines":e.maxLines}]),role:"tooltip"},d(e.text),7),[[Xn,o.value]])]))],64))}}),nt=Pe(ES,[["__scopeId","data-v-98697f45"]]),LS={class:"row"},BS={class:"lead","aria-hidden":"true"},RS={key:1,class:"unread-dot"},OS={class:"left"},DS=["onKeydown"],zS={key:0,class:"t-emoji","aria-hidden":"true"},FS=["aria-label"],NS={class:"act"},qS={class:"ts"},WS={key:0,class:"emoji-glyph"},HS={class:"menu-time"},US=["aria-label"],VS={class:"emoji-grid"},jS=["aria-label","onClick"],KS=xe({__name:"SessionRow",props:{session:{},active:{type:Boolean},approvalCount:{default:0},questionCount:{default:0},unread:{type:Boolean,default:!1}},emits:["select","rename","archive","fork","export"],setup(e,{expose:t,emit:n}){const{t:s}=We(),{pinnedSessionIds:o,sessionEmojiBySession:i,togglePinnedSession:u,setSessionEmoji:p,config:m,regenerateSessionTitle:h}=Zi(),w=e,I=n,v=$(()=>o.value.includes(w.session.id)),f=$(()=>i.value[w.session.id]??null),_=$(()=>m.value?.experimental?.auto_session_title===!0),g=$(()=>w.session.pullRequest??null),b=x(!1);async function y(){if(!b.value){b.value=!0;try{await h(w.session.id)}finally{b.value=!1}}}function E(){const Ge=g.value?.url;Ge&&window.open(Ge,"_blank","noopener")}function S(){u(w.session.id)}function O(Ge){p(w.session.id,Ge),he()}function D(Ge){const je=new Date(Ge);if(Number.isNaN(je.getTime()))return Ge;const He=Mt=>String(Mt).padStart(2,"0");return`${je.getFullYear()}-${He(je.getMonth()+1)}-${He(je.getDate())} ${He(je.getHours())}:${He(je.getMinutes())}`}const T=$(()=>w.session.updatedAt?D(w.session.updatedAt):w.session.time),L=x(!1),F=x(null),H=x(null),k=x({});function P(Ge){const je=Ge.target;H.value?.el?.contains(je)||F.value?.el?.contains(je)||ae()}function R(){const Ge=F.value?.el;if(!Ge)return;const je=H.value?.el,He=Ge.getBoundingClientRect(),Mt=4,wt=8,xt=je?.offsetHeight??0,Jt=je?.offsetWidth??0;let Vt=He.bottom+Mt;Vt+xt>window.innerHeight-wt&&(Vt=Math.max(wt,He.top-xt-Mt));let Dt=He.right-Jt;Dtdocument.addEventListener("mousedown",P),0),window.addEventListener("resize",ae),await Ue(),R()}function ae(){L.value=!1,document.removeEventListener("mousedown",P),window.removeEventListener("resize",ae)}yt(()=>{document.removeEventListener("mousedown",P),window.removeEventListener("resize",ae),document.removeEventListener("mousedown",ke),window.removeEventListener("resize",he)});const ve=x(!1),me=x(null),Z=x(null),oe=x({});function ie(){const Ge=me.value?.el;if(!Ge)return;const je=Z.value,He=Ge.getBoundingClientRect(),Mt=4,wt=8,xt=je?.offsetHeight??0,Jt=je?.offsetWidth??0;let Vt=He.bottom+Mt;Vt+xt>window.innerHeight-wt&&(Vt=Math.max(wt,He.top-xt-Mt));let Dt=He.right-Jt;Dtdocument.addEventListener("mousedown",ke),0),window.addEventListener("resize",he),await Ue(),ie()}function he(){ve.value=!1,document.removeEventListener("mousedown",ke),window.removeEventListener("resize",he)}const V=x(!1),Q=x(""),Ce=x(null),re=x(!1);async function ee(){ae(),V.value=!0,re.value=!1,Q.value=w.session.title,await Ue();try{Ce.value?.focus(),Ce.value?.select()}catch{}}function pe(){const Ge=Q.value.trim();Ge&&I("rename",w.session.id,Ge),V.value=!1}function De(){V.value=!1}function X(Ge){re.value||Ai(Ge)||pe()}function Y(Ge){re.value||Ai(Ge)||De()}const B=x(!1),J=x(!1);async function Ee(){const Ge=await un(w.session.id);B.value=Ge,J.value=!Ge,setTimeout(()=>{B.value=!1,J.value=!1,ae()},1500)}function Le(){ae(),I("fork",w.session.id)}function it(){ae(),I("export",w.session.id)}function at(){ae(),I("archive",w.session.id)}return t({closeMenu:ae}),(Ge,je)=>(a(),c("div",{class:fe(["se",{on:e.active,"has-gen":_.value}]),onClick:je[9]||(je[9]=He=>I("select",e.session.id))},[r("div",LS,[r("span",BS,[e.session.busy?(a(),G(qt,{key:0,size:"sm"})):e.unread?(a(),c("span",RS)):A("",!0)]),r("div",OS,[V.value?ht((a(),c("input",{key:0,ref_key:"renameInputRef",ref:Ce,"onUpdate:modelValue":je[0]||(je[0]=He=>Q.value=He),class:"rename-input",onClick:je[1]||(je[1]=Re(()=>{},["stop"])),onCompositionstart:je[2]||(je[2]=He=>re.value=!0),onCompositionend:je[3]||(je[3]=He=>re.value=!1),onKeydown:[An(Re(X,["stop"]),["enter"]),An(Re(Y,["stop"]),["esc"])],onBlur:pe},null,40,DS)),[[On,Q.value]]):(a(),c("span",{key:1,class:"t",onDblclick:Re(ee,["stop"])},[f.value?(a(),c("span",zS,d(f.value),1)):A("",!0),ue(d(e.session.title),1)],32))]),M(nt,{text:l(s)("workspace.awaitingAnswerTitle")},{default:W(()=>[!V.value&&(e.questionCount>0||e.session.pendingInteraction==="question")?(a(),G(Nt,{key:0,variant:"info",size:"sm"},{default:W(()=>[ue(d(l(s)("workspace.awaitingAnswer")),1)]),_:1})):A("",!0)]),_:1},8,["text"]),M(nt,{text:l(s)("workspace.awaitingPermissionTitle")},{default:W(()=>[!V.value&&(e.approvalCount>0||e.session.pendingInteraction==="approval")?(a(),G(Nt,{key:0,variant:"warning",size:"sm"},{default:W(()=>[ue(d(l(s)("workspace.awaitingPermission")),1)]),_:1})):A("",!0)]),_:1},8,["text"]),M(nt,{text:l(s)("workspace.abortedTitle")},{default:W(()=>[!V.value&&!e.session.busy&&e.session.pendingInteraction!=="question"&&e.session.pendingInteraction!=="approval"&&e.questionCount===0&&e.approvalCount===0&&l(Mu)(e.session)?(a(),G(Nt,{key:0,variant:"danger",size:"sm"},{default:W(()=>[ue(d(l(s)("workspace.aborted")),1)]),_:1})):A("",!0)]),_:1},8,["text"]),!V.value&&g.value?(a(),c("button",{key:0,type:"button",class:fe(["pr",`pr--${g.value.state}`]),"aria-label":l(s)("sidebar.prTag",{number:g.value.number}),onClick:Re(E,["stop"])},[M(le,{name:"git-pull-request",size:"sm"}),r("span",null,"#"+d(g.value.number),1)],10,FS)):A("",!0),r("span",NS,[r("span",qS,d(e.session.time),1),V.value?A("",!0):(a(),G(et,{key:0,class:fe(["btn pin",{on:v.value}]),size:"sm",label:v.value?l(s)("sidebar.unpin"):l(s)("sidebar.pin"),onClick:Re(S,["stop"])},{default:W(()=>[M(le,{name:v.value?"pin-fill":"pin"},null,8,["name"])]),_:1},8,["class","label"])),V.value?A("",!0):(a(),G(et,{key:1,ref_key:"emojiBtnRef",ref:me,class:fe(["btn emoji-btn",{open:ve.value}]),size:"sm",label:l(s)("sidebar.emoji"),onClick:je[4]||(je[4]=Re(He=>$e(He),["stop"]))},{default:W(()=>[f.value?(a(),c("span",WS,d(f.value),1)):(a(),G(le,{key:1,name:"emotion"}))]),_:1},8,["class","label"])),!V.value&&_.value?(a(),G(et,{key:2,class:fe(["btn gen-title",{open:b.value}]),size:"sm",label:l(s)("sidebar.genTitle"),disabled:b.value,onClick:Re(y,["stop"])},{default:W(()=>[b.value?(a(),G(qt,{key:0,size:"sm"})):(a(),G(le,{key:1,name:"sparkles"}))]),_:1},8,["class","label","disabled"])):A("",!0),V.value?A("",!0):(a(),G(et,{key:3,ref_key:"kebabRef",ref:F,class:fe(["btn kebab",{open:L.value}]),size:"sm",label:l(s)("sidebar.options"),onClick:je[5]||(je[5]=Re(He=>se(He),["stop"]))},{default:W(()=>[M(le,{name:"dots-horizontal"})]),_:1},8,["class","label"]))])]),(a(),G(io,{to:"body"},[L.value?(a(),G(qs,{key:0,ref_key:"menuRef",ref:H,class:"menu",style:rt(k.value),onClick:je[6]||(je[6]=Re(()=>{},["stop"]))},{default:W(()=>[M(ct,{danger:J.value,onClick:Ee},{default:W(()=>[M(le,{name:B.value?"check":"copy",size:"sm"},null,8,["name"]),ue(" "+d(J.value?l(s)("sidebar.copyFailed"):B.value?l(s)("sidebar.copied"):l(s)("sidebar.copySessionId")),1)]),_:1},8,["danger"]),M(ct,{separator:""}),M(ct,{onClick:ee},{default:W(()=>[M(le,{name:"pencil",size:"sm"}),ue(" "+d(l(s)("sidebar.rename")),1)]),_:1}),M(ct,{onClick:Le},{default:W(()=>[M(le,{name:"git-fork",size:"sm"}),ue(" "+d(l(s)("sidebar.fork")),1)]),_:1}),M(ct,{onClick:it},{default:W(()=>[M(le,{name:"download",size:"sm"}),ue(" "+d(l(s)("sidebar.export")),1)]),_:1}),M(ct,{danger:"",onClick:at},{default:W(()=>[M(le,{name:"archive",size:"sm"}),ue(" "+d(l(s)("sidebar.archive")),1)]),_:1}),M(ct,{separator:""}),r("div",HS,d(T.value),1)]),_:1},8,["style"])):A("",!0)])),(a(),G(io,{to:"body"},[ve.value?(a(),c("div",{key:0,ref_key:"emojiPickerRef",ref:Z,class:"emoji-picker",role:"menu","aria-label":l(s)("sidebar.emoji"),style:rt(oe.value),onClick:je[8]||(je[8]=Re(()=>{},["stop"]))},[r("div",VS,[(a(!0),c(ge,null,Te(l(xu),He=>(a(),c("button",{key:He,type:"button",class:fe(["emoji-cell",{on:He===f.value}]),"aria-label":He,role:"menuitem",onClick:Re(Mt=>O(He),["stop"])},d(He),11,jS))),128))]),f.value?(a(),c("button",{key:0,type:"button",class:"emoji-clear",role:"menuitem",onClick:je[7]||(je[7]=Re(He=>O(null),["stop"]))},d(l(s)("sidebar.emojiRemove")),1)):A("",!0)],12,US)):A("",!0)]))],2))}}),jc=Pe(KS,[["__scopeId","data-v-1c24e83d"]]),GS=["draggable"],QS={class:"gh-top"},YS={class:"gh-name"},ZS=["inert"],XS=["disabled"],JS={class:"show-more-label"},e3={class:"show-more-label"},t3={key:2,class:"group-empty"},n3=xe({__name:"WorkspaceGroup",props:{group:{},activeWorkspaceId:{},activeId:{},renamingId:{},renameValue:{},renameInputRef:{},pendingBySession:{},unreadBySession:{},wsMenuOpenId:{},dragging:{type:Boolean},isCollapsed:{type:Function},isExpanded:{type:Function}},emits:["groupClick","groupContextmenu","toggleWsMenu","createInWorkspace","selectSession","renameSession","archiveSession","forkSession","exportSession","loadMore","toggleExpand","confirmRename","cancelRename","updateRenameValue","wsDragstart","wsDragend"],setup(e,{emit:t}){const{t:n}=We(),s=e,o=t,i=$({get:()=>s.renameValue,set:b=>o("updateRenameValue",b)}),u=$(()=>s.renamingId===s.group.workspace.id),p=$(()=>{if(s.isExpanded(s.group.workspace.id))return s.group.sessions;const b=s.group.sessions.slice(0,s.group.initialCount);if(s.activeId&&!b.some(y=>y.id===s.activeId)){const y=s.group.sessions.find(E=>E.id===s.activeId);if(y)return[...b,y]}return b}),m=$(()=>s.group.sessions.length>s.group.initialCount);function h(){return Math.max(0,s.group.workspace.sessionCount-s.group.sessions.length)}function w(){return s.group.sessions.length-s.group.initialCount}function I(b){s.renameInputRef.value=b instanceof HTMLInputElement?b:null}function v(b){b.dataTransfer&&(b.dataTransfer.effectAllowed="move",b.dataTransfer.setData("text/plain",s.group.workspace.id),o("wsDragstart",s.group.workspace.id))}const f=x(!1);function _(b){f.value||Ai(b)||o("confirmRename")}function g(b){f.value||Ai(b)||o("cancelRename")}return(b,y)=>(a(),c("div",{class:fe(["group",{dragging:e.dragging}])},[r("div",{class:fe(["gh",{on:e.group.workspace.id===e.activeWorkspaceId,collapsed:e.isCollapsed(e.group.workspace.id),renaming:u.value}]),draggable:!u.value,onClick:y[7]||(y[7]=Re(E=>o("groupClick",e.group.workspace.id,E),["stop"])),onContextmenu:y[8]||(y[8]=E=>o("groupContextmenu",e.group.workspace,E)),onDragstart:v,onDragend:y[9]||(y[9]=E=>o("wsDragend"))},[r("div",QS,[e.isCollapsed(e.group.workspace.id)?(a(),G(le,{key:0,class:"gh-folder",name:"folder-closed"})):(a(),G(le,{key:1,class:"gh-folder",name:"folder"})),e.renamingId!==e.group.workspace.id?(a(),G(nt,{key:2,text:e.group.workspace.root},{default:W(()=>[r("span",YS,d(e.group.workspace.name),1)]),_:1},8,["text"])):ht((a(),c("input",{key:3,ref:I,"onUpdate:modelValue":y[0]||(y[0]=E=>i.value=E),class:"gh-rename",type:"text",onCompositionstart:y[1]||(y[1]=E=>f.value=!0),onCompositionend:y[2]||(y[2]=E=>f.value=!1),onKeydown:[An(_,["enter"]),An(g,["esc"])],onBlur:y[3]||(y[3]=E=>o("cancelRename")),onClick:y[4]||(y[4]=Re(()=>{},["stop"]))},null,544)),[[On,i.value]]),e.renamingId!==e.group.workspace.id?(a(),c("div",{key:4,class:fe(["gh-actions",{open:e.wsMenuOpenId===e.group.workspace.id}])},[M(et,{class:fe(["gh-more",{open:e.wsMenuOpenId===e.group.workspace.id}]),size:"sm",label:l(n)("sidebar.options"),"aria-haspopup":"menu","aria-expanded":e.wsMenuOpenId===e.group.workspace.id,onClick:y[5]||(y[5]=Re(E=>o("toggleWsMenu",e.group.workspace,E),["stop"]))},{default:W(()=>[M(le,{name:"dots-horizontal"})]),_:1},8,["class","label","aria-expanded"]),M(et,{class:"gh-add",size:"sm",label:l(n)("workspace.newInGroup"),onClick:y[6]||(y[6]=Re(E=>o("createInWorkspace",e.group.workspace.id),["stop"]))},{default:W(()=>[M(le,{name:"chat-new"})]),_:1},8,["label"])],2)):A("",!0)])],42,GS),r("div",{class:fe(["group-sessions",{collapsed:e.isCollapsed(e.group.workspace.id)}]),inert:e.isCollapsed(e.group.workspace.id)},[(a(!0),c(ge,null,Te(p.value,E=>(a(),G(jc,{key:E.id,session:E,active:E.id===e.activeId,"approval-count":e.pendingBySession[E.id]?.approvals??0,"question-count":e.pendingBySession[E.id]?.questions??0,unread:e.unreadBySession[E.id]??!1,onSelect:y[10]||(y[10]=S=>o("selectSession",S)),onRename:y[11]||(y[11]=(S,O)=>o("renameSession",S,O)),onArchive:y[12]||(y[12]=S=>o("archiveSession",S)),onFork:y[13]||(y[13]=S=>o("forkSession",S)),onExport:y[14]||(y[14]=S=>o("exportSession",S))},null,8,["session","active","approval-count","question-count","unread"]))),128)),e.group.hasMore||e.group.loadingMore?(a(),c("button",{key:0,class:"show-more",disabled:e.group.loadingMore,onClick:y[15]||(y[15]=Re(E=>o("loadMore",e.group.workspace.id),["stop"]))},[y[17]||(y[17]=r("span",{class:"show-more-lead","aria-hidden":"true"},null,-1)),r("span",JS,d(e.group.loadingMore?l(n)("sidebar.loadingMore"):l(n)("sidebar.showMore",{count:h()})),1)],8,XS)):A("",!0),m.value?(a(),c("button",{key:1,class:"show-more",onClick:y[16]||(y[16]=Re(E=>o("toggleExpand",e.group.workspace.id),["stop"]))},[y[18]||(y[18]=r("span",{class:"show-more-lead","aria-hidden":"true"},null,-1)),r("span",e3,d(e.isExpanded(e.group.workspace.id)?l(n)("sidebar.showLess"):l(n)("sidebar.showAll",{count:w()})),1)])):A("",!0),e.group.sessions.length===0?(a(),c("div",t3,d(l(n)("sidebar.noSessions")),1)):A("",!0)],10,ZS)],2))}}),s3=Pe(n3,[["__scopeId","data-v-ec29996e"]]),o3="kimi_desktop",i3="platform",Lr="kimi-desktop",Br="kimi-desktop-platform";function a3(){let e=!1,t=null;try{const n=new URLSearchParams(window.location.search);n.has(o3)?(sessionStorage.setItem(Lr,"1"),e=!0):e=e||sessionStorage.getItem(Lr)==="1";const s=n.get(i3);s?(sessionStorage.setItem(Br,s),t=s):t=sessionStorage.getItem(Br)}catch{}return{isDesktop:e,platform:t}}const Ga=a3(),l3=Ga.isDesktop,Po=Ga.isDesktop&&Ga.platform==="darwin",r3={class:"ui-kbd"},u3=xe({__name:"Kbd",props:{keys:{}},setup(e){return(t,n)=>(a(),c("span",r3,[(a(!0),c(ge,null,Te(e.keys,s=>(a(),c("kbd",{key:s,class:"ui-kbd__key"},d(s),1))),128))]))}}),Ss=Pe(u3,[["__scopeId","data-v-32292ed8"]]),c3="(prefers-reduced-motion: reduce)";function d3(){if(!(typeof window>"u"||typeof window.matchMedia!="function"))return window.matchMedia(c3)}function p3(e,t=d3){const n=t();if(!n)return e(!1),()=>{};const s=()=>e(n.matches);return e(n.matches),n.addEventListener("change",s),()=>n.removeEventListener("change",s)}const f3=["aria-label"],m3=xe({__name:"KimiMascot",props:{label:{}},setup(e){const t=x(!1);let n;return mt(()=>{n=p3(s=>{t.value=!s})}),Tn(()=>n?.()),(s,o)=>(a(),c("span",{class:fe(["kimi-mascot",{"kimi-mascot--pulse":t.value}]),role:"img","aria-label":e.label},[M(le,{name:"sparkles",size:"sm"})],10,f3))}}),v3=Pe(m3,[["__scopeId","data-v-6634dad2"]]),h3=["disabled","aria-pressed"],g3=xe({__name:"Pill",props:{clickable:{type:Boolean,default:!0},active:{type:Boolean},disabled:{type:Boolean},ariaPressed:{type:Boolean}},emits:["click"],setup(e){return(t,n)=>e.clickable?(a(),c("button",{key:0,class:fe(["ui-pill",{"is-active":e.active}]),type:"button",disabled:e.disabled,"aria-pressed":e.ariaPressed,onClick:n[0]||(n[0]=s=>t.$emit("click",s))},[gt(t.$slots,"default",{},void 0,!0)],10,h3)):(a(),c("span",{key:1,class:fe(["ui-pill",{"is-active":e.active}])},[gt(t.$slots,"default",{},void 0,!0)],2))}}),Xs=Pe(g3,[["__scopeId","data-v-317ace1a"]]),y3={class:"ch"},k3={class:"ch-brand"},b3={class:"ch-backend-ep"},w3={class:"btn-wrap"},S3={class:"search-input"},C3={key:0,class:"empty"},_3={class:"side-section-label"},$3={class:"side-section-title"},M3={class:"side-section-actions"},x3={key:0,class:"empty"},I3=["onDragover","onDrop"],A3={class:"side-footer"},T3={class:"section-menu-check"},P3={class:"section-menu-check"},E3={class:"section-menu-check"},L3={class:"backend-menu-name"},B3={class:"backend-menu-url"},R3=1e3,O3=xe({__name:"Sidebar",props:{activeWorkspace:{default:null},activeWorkspaceId:{default:null},sessions:{},groups:{},pinnedSessionIds:{default:()=>[]},activeId:{},workspaceSortMode:{},backend:{default:"v1"},attentionBySession:{default:()=>({})},pendingBySession:{default:()=>({})},unreadBySession:{default:()=>({})},colWidth:{default:220},collapsed:{type:Boolean,default:!1},dragging:{type:Boolean,default:!1}},emits:["select","create","createInWorkspace","selectWorkspace","addWorkspace","rename","archive","fork","export","renameWorkspace","deleteWorkspace","reorderWorkspaces","setWorkspaceSortMode","loadMoreSessions","loadAllSessions","openSettings","collapse"],setup(e,{emit:t}){const{t:n}=We(),s=!1,o=x(null),i=$(()=>""),u=["default","multi"];function p(Se){const be=o.value?.presets[Se]??"";return be?sp(be):""}function m(Se){const be=o.value;return be!==null&&be.current===be.presets[Se]}const h=e,w=t,I=x(!1),v=g()?["⌘","K"]:["Ctrl","K"];function f(){w("loadAllSessions"),I.value=!0}function _(Se){(Se.metaKey||Se.ctrlKey)&&Se.key.toLowerCase()==="k"&&(Se.preventDefault(),f())}mt(()=>window.addEventListener("keydown",_)),Tn(()=>window.removeEventListener("keydown",_));function g(){if(typeof navigator>"u")return!1;if(/Mac|iPod|iPhone|iPad/.test(navigator.platform))return!0;const Se=navigator.userAgentData;return Se?.platform==="macOS"||Se?.platform==="iOS"}const b=x(!1);function y(Se){b.value=Se.target.scrollTop>0}const E=x(cp());function S(){E.value=E.value==="flat"?"grouped":"flat",dp(E.value)}const O=$(()=>pp(h.groups,h.pinnedSessionIds)),D=x(new Set(Hd()));function T(Se){return D.value.has(Se)}function L(Se){const be=new Set(D.value);be.has(Se)?be.delete(Se):be.add(Se),D.value=be,Ji(be)}function F(){const Se=new Set(h.groups.map(be=>be.workspace.id));D.value=Se,Ji(Se)}function H(){const Se=new Set;D.value=Se,Ji(Se)}const k=$(()=>h.groups.length>0&&h.groups.every(Se=>D.value.has(Se.workspace.id))),P=x(new Set);function R(Se){return P.value.has(Se)}function se(Se){const be=new Set(P.value);be.has(Se)?be.delete(Se):be.add(Se),P.value=be}function ae(Se){if(!P.value.has(Se)){const be=new Set(P.value);be.add(Se),P.value=be}w("loadMoreSessions",Se)}const ve=x(null),me=x(null);function Z(Se){ve.value=Se}function oe(){ve.value=null,me.value=null}function ie(Se){const be=Se.currentTarget.getBoundingClientRect();return Se.clientYlt.workspace.id),be,Se,Ve);w("reorderWorkspaces",Qe)}function he(Se,be){be.target.closest(".gh-more, .gh-add")||L(Se)}function V(Se){w("select",Se)}const Q=x(null),Ce=x(""),re=x(null);function ee(){return re}function pe(Se,be){Q.value=Se,Ce.value=be,Ue().then(()=>re.value?.focus())}function De(){const Se=Q.value,be=Ce.value.trim();Se&&be&&w("renameWorkspace",Se,be),Q.value=null}function X(){Q.value=null}function Y(Se){Ce.value=Se}const B=x(!1),J=x(null),Ee=x({}),Le=x(null);function it(Se){Le.value?.el&&!Le.value.el.contains(Se.target)&&Ge()}function at(Se,be){be.preventDefault(),be.stopPropagation(),J.value=Se,Ee.value={top:`${be.clientY}px`,left:`${be.clientX}px`},B.value=!0,document.addEventListener("mousedown",it,!0)}function Ge(){B.value=!1,document.removeEventListener("mousedown",it,!0),J.value=null}function je(){J.value&&un(J.value.root),Ge()}function He(){J.value&&pe(J.value.id,J.value.name),Ge()}function Mt(){const Se=J.value;Se&&(Ge(),w("deleteWorkspace",Se.id))}const wt=x(null),xt=x(null),Jt=x({}),Vt=x(null);function Dt(Se){const be=Se.target;be.closest(".gh-more")||be.closest(".ws-menu")||on()}async function ts(Se,be){if(wt.value===Se.id){on();return}const Ve=be.currentTarget;xt.value=Se,wt.value=Se.id,document.addEventListener("mousedown",Dt),window.addEventListener("resize",on),await Ue();const Qe=Vt.value?.el,lt=Ve.getBoundingClientRect(),Et=4,Lt=8,Kt=Qe?.offsetHeight??0,tn=Qe?.offsetWidth??0;let nn=lt.bottom+Et;nn+Kt>window.innerHeight-Lt&&(nn=Math.max(Lt,lt.top-Kt-Et));let Bn=lt.right-tn;Bnwindow.innerHeight-Et&&(tn=Math.max(Et,Qe.top-Lt-lt));let nn=Qe.right-Kt;nnwindow.innerHeight-Et&&(Kt=Math.max(Et,Qe.top-Lt-lt)),Zt.value={top:`${Math.round(Kt)}px`,left:`${Math.round(Math.max(Et,Qe.left))}px`}}function en(){vn.value=!1,document.removeEventListener("mousedown",pn),window.removeEventListener("resize",en)}async function Ln(Se){if(m(Se)){en();return}if(await np(Se)===null){console.warn("[kimi-web] dev backend switch failed:",Se),en();return}window.location.reload()}Tn(()=>{document.removeEventListener("mousedown",it,!0),document.removeEventListener("mousedown",Dt),document.removeEventListener("mousedown",xn),document.removeEventListener("mousedown",pn),window.removeEventListener("resize",on),window.removeEventListener("resize",an),window.removeEventListener("resize",en)});const ns=x(null);let Wt;function At(){const Se=ns.value;Se&&(Se.classList.remove("blink-now"),Se.getBoundingClientRect(),Se.classList.add("blink-now"),clearTimeout(Wt),Wt=setTimeout(()=>Se.classList.remove("blink-now"),300))}const Tt=mu(()=>gu(()=>import("./DesignSystemView-CsDeDsyo.js"),__vite__mapDeps([0,1,2,3,4,5,6,7]))),Xt=x(!1);let Ft,st=!1;function vt(Se){st=!1,clearTimeout(Ft),Se.currentTarget.setPointerCapture?.(Se.pointerId),Ft=setTimeout(()=>{st=!0,Xt.value=!0},R3)}function jt(Se){clearTimeout(Ft);const be=Se.currentTarget;be.hasPointerCapture?.(Se.pointerId)&&be.releasePointerCapture(Se.pointerId)}function Pt(){if(st){st=!1;return}At()}return Tn(()=>{clearTimeout(Ft)}),(Se,be)=>(a(),c("aside",{class:fe(["side",{"macos-desktop":l(Po),collapsed:e.collapsed,"no-anim":e.dragging}]),style:rt({width:e.collapsed?"0px":e.colWidth+"px"})},[r("div",{class:"col",style:rt({width:e.colWidth+"px"})},[r("div",y3,[r("div",k3,[l(Po)?A("",!0):(a(),c(ge,{key:0},[(a(),c("svg",{ref_key:"logoRef",ref:ns,class:fe(["ch-logo",{"is-dev":l(s)}]),viewBox:"0 0 32 22",fill:"none",xmlns:"http://www.w3.org/2000/svg",role:"img","aria-label":"Kimi Code",onClick:Pt,onPointerdown:vt,onPointerup:jt,onPointercancel:jt},[...be[26]||(be[26]=[tl(' ',2)])],34)),be[27]||(be[27]=r("span",{class:"ch-name"},"Kimi Code",-1)),l(s)?(a(),G(Xs,{key:0,class:"ch-backend",clickable:o.value!==null,title:l(n)("sidebar.backendTitle",{backend:e.backend,endpoint:i.value}),onClick:Vn},{default:W(()=>[r("span",{class:fe(["ch-backend-kind",`is-${e.backend}`])},d(e.backend),3),r("span",b3," · "+d(i.value),1),o.value!==null?(a(),G(le,{key:0,name:"chevron-down",size:"sm"})):A("",!0)]),_:1},8,["clickable","title"])):A("",!0)],64))]),l(Po)?A("",!0):(a(),G(et,{key:0,class:"ch-collapse",size:"sm",label:l(n)("sidebar.collapseSidebar"),onClick:be[0]||(be[0]=Re(Ve=>w("collapse"),["stop"]))},{default:W(()=>[M(le,{name:"panel-collapse"})]),_:1},8,["label"]))]),r("div",w3,[r("button",{class:"btn-new-chat",type:"button",onClick:be[1]||(be[1]=Re(Ve=>w("create"),["stop"]))},[M(le,{name:"chat-new"}),r("span",null,d(l(n)("sidebar.newChat")),1)]),A("",!0)]),r("div",{class:fe(["search-wrap",{"search-wrap--scrolled":b.value}])},[r("button",{class:"search",type:"button",onClick:f},[M(le,{class:"search-icon",name:"search"}),r("span",S3,d(l(n)("sidebar.search")),1),M(Ss,{keys:l(v)},null,8,["keys"])])],2),r("div",{class:"sessions",onScroll:y},[e.groups.length===0?(a(),c("div",C3,d(l(n)("workspace.noWorkspace")),1)):(a(),c(ge,{key:1},[r("div",_3,[r("span",$3,d(E.value==="flat"?l(n)("sidebar.sessionsHeader"):l(n)("sidebar.workspaces")),1),r("div",M3,[E.value!=="flat"?(a(),c(ge,{key:0},[M(et,{class:"side-section-toggle",size:"sm",label:k.value?l(n)("sidebar.expandAll"):l(n)("sidebar.collapseAll"),onClick:be[3]||(be[3]=Re(Ve=>k.value?H():F(),["stop"]))},{default:W(()=>[k.value?(a(),G(le,{key:0,name:"expand"})):(a(),G(le,{key:1,name:"collapse"}))]),_:1},8,["label"]),M(et,{class:"side-section-toggle side-section-kebab",size:"sm",label:l(n)("sidebar.options"),"aria-haspopup":"menu","aria-expanded":St.value,onClick:be[4]||(be[4]=Re(Ve=>It(Ve),["stop"]))},{default:W(()=>[M(le,{name:"dots-horizontal"})]),_:1},8,["label","aria-expanded"])],64)):A("",!0),M(et,{class:"side-section-toggle side-section-view",size:"sm",label:E.value==="flat"?l(n)("sidebar.viewModeGrouped"):l(n)("sidebar.viewModeFlat"),"aria-pressed":E.value==="flat",onClick:Re(S,["stop"])},{default:W(()=>[M(le,{name:E.value==="flat"?"folder":"list"},null,8,["name"])]),_:1},8,["label","aria-pressed"])])]),E.value==="flat"?(a(),c(ge,{key:0},[(a(!0),c(ge,null,Te(O.value,Ve=>(a(),G(jc,{key:Ve.id,session:Ve,active:Ve.id===e.activeId,"approval-count":e.pendingBySession[Ve.id]?.approvals??0,"question-count":e.pendingBySession[Ve.id]?.questions??0,unread:e.unreadBySession[Ve.id]??!1,onSelect:V,onRename:be[5]||(be[5]=(Qe,lt)=>w("rename",Qe,lt)),onArchive:be[6]||(be[6]=Qe=>w("archive",Qe)),onFork:be[7]||(be[7]=Qe=>w("fork",Qe)),onExport:be[8]||(be[8]=Qe=>w("export",Qe))},null,8,["session","active","approval-count","question-count","unread"]))),128)),O.value.length===0?(a(),c("div",x3,d(l(n)("sidebar.noSessions")),1)):A("",!0)],64)):(a(!0),c(ge,{key:1},Te(e.groups,Ve=>(a(),c("div",{key:Ve.workspace.id,class:fe(["ws-drop-target",{"drop-before":me.value?.id===Ve.workspace.id&&me.value.position==="before","drop-after":me.value?.id===Ve.workspace.id&&me.value.position==="after"}]),onDragover:Qe=>ke(Qe,Ve.workspace.id),onDrop:Qe=>$e(Ve.workspace.id)},[M(s3,{group:Ve,"active-workspace-id":e.activeWorkspaceId,"active-id":e.activeId,"renaming-id":Q.value,"rename-value":Ce.value,"rename-input-ref":ee(),"pending-by-session":e.pendingBySession,"unread-by-session":e.unreadBySession,"ws-menu-open-id":wt.value,dragging:ve.value===Ve.workspace.id,"is-collapsed":T,"is-expanded":R,onGroupClick:he,onGroupContextmenu:at,onToggleWsMenu:ts,onCreateInWorkspace:be[9]||(be[9]=Qe=>w("createInWorkspace",Qe)),onSelectSession:V,onRenameSession:be[10]||(be[10]=(Qe,lt)=>w("rename",Qe,lt)),onArchiveSession:be[11]||(be[11]=Qe=>w("archive",Qe)),onForkSession:be[12]||(be[12]=Qe=>w("fork",Qe)),onExportSession:be[13]||(be[13]=Qe=>w("export",Qe)),onLoadMore:ae,onToggleExpand:se,onConfirmRename:De,onCancelRename:X,onUpdateRenameValue:Y,onWsDragstart:Z,onWsDragend:oe},null,8,["group","active-workspace-id","active-id","renaming-id","rename-value","rename-input-ref","pending-by-session","unread-by-session","ws-menu-open-id","dragging"])],42,I3))),128))],64))],32),r("div",A3,[r("button",{class:"btn-settings",type:"button",onClick:be[14]||(be[14]=Re(Ve=>w("openSettings"),["stop"]))},[M(le,{name:"settings"}),r("span",null,d(l(n)("settings.title")),1)]),M(v3,{class:"side-mascot",label:l(n)("sidebar.mascot")},null,8,["label"])])],4),B.value?(a(),G(qs,{key:0,ref_key:"ghMenuRef",ref:Le,class:"gh-menu",style:rt(Ee.value),onClick:be[15]||(be[15]=Re(()=>{},["stop"]))},{default:W(()=>[M(ct,{onClick:je},{default:W(()=>[ue(d(l(n)("sidebar.copyPath")),1)]),_:1}),M(ct,{onClick:He},{default:W(()=>[ue(d(l(n)("sidebar.rename")),1)]),_:1}),M(ct,{danger:"",onClick:Mt},{default:W(()=>[ue(d(l(n)("sidebar.removeWorkspace")),1)]),_:1})]),_:1},8,["style"])):A("",!0),wt.value!==null&&xt.value?(a(),G(qs,{key:1,ref_key:"wsMenuRef",ref:Vt,class:"ws-menu",style:rt(Jt.value),onClick:be[19]||(be[19]=Re(()=>{},["stop"]))},{default:W(()=>[M(ct,{onClick:be[16]||(be[16]=Ve=>ut(xt.value))},{default:W(()=>[ue(d(l(n)("sidebar.copyPath")),1)]),_:1}),M(ct,{separator:""}),M(ct,{onClick:be[17]||(be[17]=Ve=>zt(xt.value))},{default:W(()=>[ue(d(l(n)("sidebar.rename")),1)]),_:1}),M(ct,{separator:""}),M(ct,{danger:"",onClick:be[18]||(be[18]=Ve=>En(xt.value))},{default:W(()=>[ue(d(l(n)("sidebar.removeWorkspace")),1)]),_:1})]),_:1},8,["style"])):A("",!0),St.value?(a(),G(qs,{key:2,ref_key:"sectionMenuRef",ref:Yt,class:"section-menu",style:rt(Mn.value),onClick:be[22]||(be[22]=Re(()=>{},["stop"]))},{default:W(()=>[M(ct,{onClick:be[20]||(be[20]=Ve=>dn("manual"))},{default:W(()=>[r("span",T3,[e.workspaceSortMode==="manual"?(a(),G(le,{key:0,name:"check",size:"sm"})):A("",!0)]),ue(" "+d(l(n)("sidebar.sortManual")),1)]),_:1}),M(ct,{onClick:be[21]||(be[21]=Ve=>dn("recent"))},{default:W(()=>[r("span",P3,[e.workspaceSortMode==="recent"?(a(),G(le,{key:0,name:"check",size:"sm"})):A("",!0)]),ue(" "+d(l(n)("sidebar.sortRecent")),1)]),_:1})]),_:1},8,["style"])):A("",!0),vn.value?(a(),G(qs,{key:3,ref_key:"backendMenuRef",ref:Dn,class:"backend-menu",style:rt(Zt.value),onClick:be[23]||(be[23]=Re(()=>{},["stop"]))},{default:W(()=>[(a(),c(ge,null,Te(u,Ve=>M(ct,{key:Ve,onClick:Qe=>Ln(Ve)},{default:W(()=>[r("span",E3,[m(Ve)?(a(),G(le,{key:0,name:"check",size:"sm"})):A("",!0)]),r("span",L3,d(Ve),1),r("span",B3,d(p(Ve)),1)]),_:2},1032,["onClick"])),64))]),_:1},8,["style"])):A("",!0),I.value?(a(),G(tg,{key:4,sessions:e.sessions,"active-id":e.activeId,onSelect:V,onClose:be[24]||(be[24]=Ve=>I.value=!1)},null,8,["sessions","active-id"])):A("",!0),(a(),G(io,{to:"body"},[Xt.value?(a(),G(l(Tt),{key:0,onClose:be[25]||(be[25]=Ve=>Xt.value=!1)})):A("",!0)]))],6))}}),D3=Pe(O3,[["__scopeId","data-v-7e5a3931"]]);function z3(e){try{const t=$t(e);if(t===null)return null;const n=Number(t);return Number.isFinite(n)?n:null}catch{return null}}function F3(e,t){try{Ot(e,String(t))}catch{}}function N3(e){const{storageKey:t,defaultWidth:n,min:s,max:o,reverse:i=!1}=e;function u(y){return Number.isFinite(y)?Math.min(Wo(o),Math.max(s,Math.round(y))):n}const p=x(u(z3(t)??n)),m=x(!1);function h(y){const E=u(y);p.value=E,F3(t,E)}let w=0,I=0,v=null,f=-1;function _(y){if(!m.value)return;const E=y.clientX-w;h(I+(i?-E:E))}function g(){if(m.value){if(m.value=!1,typeof document<"u"&&(document.body.style.userSelect="",document.body.style.cursor=""),v){try{v.releasePointerCapture(f)}catch{}v.removeEventListener("pointermove",_),v.removeEventListener("pointerup",g),v.removeEventListener("pointercancel",g)}v=null,f=-1}}function b(y){y.preventDefault(),m.value=!0,w=y.clientX,I=u(p.value),v=y.currentTarget,f=y.pointerId,typeof document<"u"&&(document.body.style.userSelect="none",document.body.style.cursor="col-resize");try{v.setPointerCapture(f)}catch{}v.addEventListener("pointermove",_),v.addEventListener("pointerup",g),v.addEventListener("pointercancel",g)}return Tn(g),{width:p,dragging:m,clamp:u,setWidth:h,onPointerDown:b}}const q3=["aria-label"],W3=xe({__name:"ResizeHandle",props:{storageKey:{},defaultWidth:{},min:{},max:{},reverse:{type:Boolean},ariaLabel:{}},emits:["update:width","update:dragging"],setup(e,{emit:t}){const n=e,s=t,{t:o}=We(),{width:i,dragging:u,onPointerDown:p}=N3({storageKey:n.storageKey,defaultWidth:n.defaultWidth,min:n.min,max:()=>n.max,reverse:n.reverse});return s("update:width",i.value),Oe(i,m=>s("update:width",m)),Oe(u,m=>s("update:dragging",m)),(m,h)=>(a(),c("div",{class:fe(["rh",{dragging:l(u)}]),role:"separator","aria-orientation":"vertical","aria-label":e.ariaLabel??l(o)("layout.resizeHandleAria"),onPointerdown:h[0]||(h[0]=(...w)=>l(p)&&l(p)(...w))},[...h[1]||(h[1]=[r("span",{class:"rh-bar","aria-hidden":"true"},null,-1)])],42,q3))}}),Rr=Pe(W3,[["__scopeId","data-v-48fd0a6d"]]),H3=xe({__name:"StatusDot",props:{status:{}},setup(e){const t=e;function n(o){switch(o){case"ok":case"done":case"completed":case"success":return"ok";case"error":case"failed":case"danger":return"error";case"running":case"working":case"in_progress":case"active":return"running";case"suspended":return"suspended";default:return"idle"}}const s=$(()=>n(t.status));return(o,i)=>(a(),c("span",{class:fe(["kw-dot",`kw-dot--${s.value}`]),"aria-hidden":"true"},null,2))}}),Bo=Pe(H3,[["__scopeId","data-v-e36198e5"]]),U3=["innerHTML"],V3={class:"bh-text"},j3={class:"a"},K3={key:0,class:"p"},G3={class:"rt"},Q3=["aria-label"],Y3={key:0,class:"tm"},Z3=["inert"],X3={class:"bb-pad"},J3=xe({__name:"ToolRow",props:{status:{},icon:{default:""},name:{},arg:{default:""},time:{default:""},open:{type:Boolean,default:!1},expandable:{type:Boolean,default:!1},stacked:{type:Boolean,default:!1},stackPosition:{default:"single"}},emits:["toggle"],setup(e,{emit:t}){const n=t,s=po("pinScroll",()=>{}),o=x(null);function i(){n("toggle");const u=o.value;u&&Ue(()=>s(u))}return(u,p)=>(a(),c("div",{class:fe(["box",{open:e.open,stacked:e.stacked,err:e.status==="error","stack-first":e.stackPosition==="first","stack-middle":e.stackPosition==="middle","stack-last":e.stackPosition==="last"}])},[r("div",{class:"bh",ref_key:"bhEl",ref:o,onClick:i},[e.icon?(a(),c("span",{key:0,class:"gl",innerHTML:e.icon,"aria-hidden":"true"},null,8,U3)):A("",!0),r("span",V3,[r("span",j3,d(e.name),1),M(nt,{text:e.arg},{default:W(()=>[e.arg?(a(),c("span",K3,d(e.arg),1)):A("",!0)]),_:1},8,["text"])]),r("span",G3,[r("span",{class:fe(["status",e.status]),role:"status","aria-label":e.status},[e.status==="ok"?(a(),G(le,{key:0,name:"check",size:"sm"})):e.status==="error"?(a(),G(le,{key:1,name:"close",size:"sm"})):e.status==="suspended"?(a(),G(Bo,{key:2,status:"suspended"})):(a(),G(Bo,{key:3,status:"running"}))],10,Q3),gt(u.$slots,"trailing"),e.time?(a(),c("span",Y3,d(e.time),1)):A("",!0)]),e.expandable?(a(),G(le,{key:1,class:"car",name:e.open?"chevron-down":"chevron-right",size:"sm"},null,8,["name"])):A("",!0)],512),r("div",{class:fe(["bb",{open:e.open}]),inert:!e.open},[r("div",X3,[gt(u.$slots,"default")])],10,Z3)],2))}}),ri=Pe(J3,[["__scopeId","data-v-fef8aad2"]]),eC={key:0,class:"at-type"},tC={key:0,class:"at-type-sep"},nC={key:1,class:"at-task"},sC={key:2,class:"bb-code"},oC=xe({__name:"AgentTool",props:{tool:{},mobile:{type:Boolean,default:!1},stackPosition:{default:"single"},toolDiffPanel:{type:Boolean,default:!1}},emits:["openMedia","openFile","openToolDiff","openAgent"],setup(e,{emit:t}){const{t:n}=We(),s=e,o=t;function i(y){if(!y)return{};try{const E=JSON.parse(y);return{description:typeof E.description=="string"?E.description:void 0,subagentType:typeof E.subagent_type=="string"?E.subagent_type:void 0,prompt:typeof E.prompt=="string"?E.prompt:void 0,model:typeof E.model=="string"?E.model:void 0,thinkingEffort:typeof E.thinking_effort=="string"?E.thinking_effort:void 0}}catch{return{}}}const u=$(()=>i(s.tool.arg)),p=$(()=>!!s.tool.output&&s.tool.output.length>0),m=$(()=>!!u.value.prompt||!!u.value.subagentType||p.value),h=x(s.tool.defaultExpanded===!0&&m.value),w=$(()=>s.tool.status),I=$(()=>Vs(s.tool.name)),v=$(()=>ni(s.tool.name)),f=$(()=>u.value.description||u.value.subagentType||""),_=po("resolveAgentTaskId"),g=$(()=>_?_(s.tool.id)!==void 0:!0);function b(){m.value&&(h.value=!h.value)}return Oe(()=>[s.tool.defaultExpanded,s.tool.output?.length,s.tool.status],()=>{s.tool.defaultExpanded===!0&&m.value&&(h.value=!0)}),(y,E)=>(a(),G(ri,{status:w.value,icon:v.value,name:I.value,arg:h.value?"":f.value,time:e.tool.timing,open:h.value,expandable:m.value,stacked:e.stackPosition!=="single","stack-position":e.stackPosition,onToggle:b},{trailing:W(()=>[g.value?(a(),c("button",{key:0,type:"button",class:"at-open",onClick:E[0]||(E[0]=Re(S=>o("openAgent",e.tool.id),["stop"]))},d(l(n)("tasks.openDetail")),1)):A("",!0)]),default:W(()=>[u.value.subagentType||u.value.model||u.value.thinkingEffort?(a(),c("div",eC,[u.value.subagentType?(a(),c(ge,{key:0},[ue(d(u.value.subagentType),1)],64)):A("",!0),u.value.model?(a(),c(ge,{key:1},[u.value.subagentType?(a(),c("span",tC,"·")):A("",!0),ue(d(u.value.model),1)],64)):A("",!0),u.value.thinkingEffort?(a(),c(ge,{key:2},[E[1]||(E[1]=r("span",{class:"at-type-sep"},"·",-1)),ue(d(l(n)("tasks.thinkingEffort",{effort:u.value.thinkingEffort})),1)],64)):A("",!0)])):A("",!0),u.value.prompt?(a(),c("div",nC,d(u.value.prompt),1)):A("",!0),p.value?(a(),c("div",sC,[(a(!0),c(ge,null,Te(e.tool.output??[],(S,O)=>(a(),c("div",{key:O},d(S),1))),128))])):A("",!0)]),_:1},8,["status","icon","name","arg","time","open","expandable","stacked","stack-position"]))}}),iC=Pe(oC,[["__scopeId","data-v-72115ae1"]]);function aC(e){if(!e)return[];try{const n=JSON.parse(e).questions;if(!Array.isArray(n))return[];const s=[];for(const o of n){if(!o||typeof o!="object")continue;const i=o,u=Array.isArray(i.options)?i.options.map(p=>{const m=p&&typeof p=="object"?p:{};return{label:typeof m.label=="string"?m.label:"",description:typeof m.description=="string"?m.description:""}}):[];s.push({question:typeof i.question=="string"?i.question:"",header:typeof i.header=="string"?i.header:"",options:u,multiSelect:i.multi_select===!0})}return s}catch{return[]}}const wi={recognized:!1,answers:{},note:""};function lC(e){const t=e?.[0];if(!t)return wi;let n;try{n=JSON.parse(t)}catch{return wi}if(!n||typeof n!="object"||Array.isArray(n))return wi;const s=n.answers;if(!s||typeof s!="object"||Array.isArray(s))return wi;const o={};for(const[i,u]of Object.entries(s))typeof u=="string"?o[i]=u:u===!0&&(o[i]=!0);return{recognized:!0,answers:o,note:typeof n.note=="string"?n.note:""}}function rC(e,t,n){return e[t]??e[`q_${n}`]}const uC=/^opt_\d+_(\d+)$/;function cC(e,t=[]){if(e===void 0)return{selected:new Set,otherText:"",indeterminate:!1};if(e===!0)return{selected:new Set,otherText:"",indeterminate:!0};const n=new Map;t.forEach((u,p)=>{u.label.length>0&&!n.has(u.label)&&n.set(u.label,p)});const s=n.get(e);if(s!==void 0)return{selected:new Set([s]),otherText:"",indeterminate:!1};const o=new Set,i=[];for(const u of e.split(",")){const p=u.trim(),m=n.get(p);if(m!==void 0){o.add(m);continue}const h=uC.exec(p);h?o.add(Number(h[1])):p.length>0&&i.push(p)}return{selected:o,otherText:i.join(", "),indeterminate:!1}}const dC={key:0,class:"chip"},pC={key:0,class:"au-dismissed"},fC={key:1,class:"au-list"},mC={class:"au-q"},vC={key:0,class:"au-hdr"},hC={class:"au-qtext"},gC={class:"au-opts"},yC={class:"au-glyph"},kC={class:"au-label"},bC={key:0,class:"au-desc"},wC={key:0,class:"au-opt sel"},SC={class:"au-glyph"},CC={class:"au-label"},_C={key:1,class:"au-opt sel"},$C={class:"au-label"},MC={key:2,class:"au-raw"},xC=80,IC=xe({__name:"AskUserTool",props:{tool:{},mobile:{type:Boolean,default:!1},stackPosition:{default:"single"},toolDiffPanel:{type:Boolean,default:!1}},emits:["openMedia","openFile","openToolDiff"],setup(e){const t=e,{t:n}=We();function s(L,F=xC){const H=L.trim();return H.length>F?H.slice(0,F-1)+"…":H}const o=$(()=>aC(t.tool.arg)),i=$(()=>lC(t.tool.output)),u=$(()=>i.value.recognized),p=$(()=>u.value&&Object.keys(i.value.answers).length===0&&i.value.note.length>0),m=$(()=>o.value.map((L,F)=>cC(rC(i.value.answers,L.question,F),L.options))),h=$(()=>Object.keys(i.value.answers).length);function w(L,F){return m.value[L]?.selected.has(F)??!1}function I(L){return m.value[L]?.otherText??""}function v(L){return m.value[L]?.indeterminate??!1}function f(L,F){return L?F?"■":"□":F?"●":"○"}const _=$(()=>{if(!u.value)return s(t.tool.output?.[0]??"");if(p.value)return n("tools.ask.dismissed");const L=o.value[0]?.question??"",F=s(L);return o.value.length<=1?F:`${F} ${n("tools.ask.more",{count:o.value.length-1})}`}),g=$(()=>u.value?p.value?n("tools.ask.dismissed"):h.value===0?"":h.value===1?n("tools.ask.answer",{count:1}):n("tools.ask.answers",{count:h.value}):""),b=$(()=>!!t.tool.output&&t.tool.output.length>0),y=$(()=>u.value&&(o.value.length>0||p.value)||b.value),E=x(t.tool.defaultExpanded===!0&&y.value),S=$(()=>t.tool.status),O=$(()=>Vs(t.tool.name)),D=$(()=>ni(t.tool.name));function T(){y.value&&(E.value=!E.value)}return Oe(()=>[t.tool.defaultExpanded,t.tool.output?.length,t.tool.status],()=>{t.tool.defaultExpanded===!0&&y.value&&(E.value=!0)}),(L,F)=>(a(),G(ri,{status:S.value,icon:D.value,name:O.value,arg:E.value?"":_.value,time:e.tool.timing,open:E.value,expandable:y.value,stacked:e.stackPosition!=="single","stack-position":e.stackPosition,onToggle:T},{trailing:W(()=>[g.value?(a(),c("span",dC,d(g.value),1)):A("",!0)]),default:W(()=>[p.value?(a(),c("div",pC,d(i.value.note),1)):u.value?(a(),c("div",fC,[(a(!0),c(ge,null,Te(o.value,(H,k)=>(a(),c("div",{key:k,class:"au-block"},[r("div",mC,[H.header?(a(),c("span",vC,d(H.header),1)):A("",!0),r("span",hC,d(H.question),1)]),r("div",gC,[(a(!0),c(ge,null,Te(H.options,(P,R)=>(a(),c("div",{key:R,class:fe(["au-opt",{sel:w(k,R)}])},[r("span",yC,d(f(H.multiSelect,w(k,R))),1),r("span",kC,d(P.label),1),P.description?(a(),c("span",bC,d(P.description),1)):A("",!0)],2))),128)),I(k)?(a(),c("div",wC,[r("span",SC,d(f(H.multiSelect,!0)),1),r("span",CC,d(I(k)),1)])):A("",!0),v(k)?(a(),c("div",_C,[F[0]||(F[0]=r("span",{class:"au-glyph"},"●",-1)),r("span",$C,d(l(n)("tools.ask.answered")),1)])):A("",!0)])]))),128))])):(a(),c("div",MC,[(a(!0),c(ge,null,Te(e.tool.output??[],(H,k)=>(a(),c("div",{key:k},d(H),1))),128))]))]),_:1},8,["status","icon","name","arg","time","open","expandable","stacked","stack-position"]))}}),AC=Pe(IC,[["__scopeId","data-v-a9a0f259"]]),TC=1e6,Or=5e3;function Dr(e){if(e==="")return[];const t=e.split(`
-`);return t.at(-1)===""&&t.pop(),t}function PC(e,t){const n=Dr(e),s=Dr(t),o=n.length,i=s.length;if(o===0&&i===0)return[];if(o>Or||i>Or||(o+1)*(i+1)>TC)return null;const u=Array.from({length:o+1},()=>Array.from({length:i+1},()=>0));for(let f=1;f<=o;f++)for(let _=1;_<=i;_++)u[f][_]=n[f-1]===s[_-1]?u[f-1][_-1]+1:Math.max(u[f-1][_],u[f][_-1]);const p=[];let m=o,h=i;for(;m>0||h>0;)m>0&&h>0&&n[m-1]===s[h-1]?(p.push({type:"context",text:n[m-1]}),m--,h--):h>0&&(m===0||u[m][h-1]>=u[m-1][h])?(p.push({type:"add",text:s[h-1]}),h--):(p.push({type:"del",text:n[m-1]}),m--);p.reverse();const w=[];let I=1,v=1;for(const f of p)f.type==="context"?(w.push({type:"context",text:f.text,oldNo:I,newNo:v}),I++,v++):f.type==="add"?(w.push({type:"add",text:f.text,newNo:v}),v++):(w.push({type:"del",text:f.text,oldNo:I}),I++);return w}function EC(e){let t=0,n=0;for(const s of e)s.type==="add"?t++:s.type==="del"&&n++;return{added:t,removed:n}}function Kc(e){const t=e.trim();if(!t.startsWith("{"))return null;try{const n=JSON.parse(t);return n&&typeof n=="object"&&!Array.isArray(n)?n:null}catch{return null}}function Gc(e){const t=mo(e.name);if(t!=="edit"&&t!=="write")return null;const n=Kc(e.arg);if(!n)return null;if(t==="edit"){if(n.replace_all===!0)return null;const s=typeof n.old_string=="string"?n.old_string:void 0,o=typeof n.new_string=="string"?n.new_string:void 0;return s===void 0||o===void 0?null:PC(s,o)}return null}function LC(e){const t=Kc(e);return t&&typeof t.path=="string"?t.path:void 0}function BC(e,t){for(const n of e){const s=n.tools?.find(o=>o.id===t);if(s)return s}}const RC={key:0,class:"bb-empty"},zr=50,OC=xe({__name:"ToolOutputBlock",props:{lines:{},emptyText:{}},setup(e){const t=e,n=$(()=>t.lines??[]),s=$(()=>n.value.length>zr),o={"--tool-output-visible-lines":String(zr)};return(i,u)=>(a(),c("div",{class:fe(["bb-code tool-output-block",{scroll:s.value}]),style:o},[n.value.length===0&&e.emptyText?(a(),c("div",RC,d(e.emptyText),1)):A("",!0),(a(!0),c(ge,null,Te(n.value,(p,m)=>(a(),c("div",{key:m},d(p),1))),128))],2))}}),Pl=Pe(OC,[["__scopeId","data-v-262bbea0"]]),DC={key:0,class:"chip"},zC={key:0,class:"bb-summary"},FC=xe({__name:"EditTool",props:{tool:{},mobile:{type:Boolean,default:!1},stackPosition:{default:"single"},toolDiffPanel:{type:Boolean,default:!1}},emits:["openMedia","openFile","openToolDiff"],setup(e,{emit:t}){const n=e,s=t,o=$(()=>n.tool.status),i=$(()=>Vs(n.tool.name)),u=$(()=>ni(n.tool.name)),p=$(()=>lo(n.tool.name,n.tool.arg)),m=$(()=>lo(n.tool.name,n.tool.arg,!0)),h=$(()=>Gc(n.tool)),w=$(()=>{const g=h.value;if(g&&n.tool.status!=="error"){const{added:b,removed:y}=EC(g);if(b||y)return`+${b} −${y}`}return""}),I=$(()=>!!n.tool.output&&n.tool.output.length>0),v=x(!1),f=$(()=>I.value&&!n.toolDiffPanel);function _(){if(n.toolDiffPanel){s("openToolDiff",n.tool.id);return}I.value&&(v.value=!v.value)}return(g,b)=>(a(),G(ri,{status:o.value,icon:u.value,name:i.value,arg:v.value?"":p.value,time:e.tool.timing,open:v.value,expandable:f.value||e.toolDiffPanel,stacked:e.stackPosition!=="single","stack-position":e.stackPosition,onToggle:_},{trailing:W(()=>[w.value?(a(),c("span",DC,d(w.value),1)):A("",!0)]),default:W(()=>[m.value?(a(),c("div",zC,d(m.value),1)):A("",!0),M(Pl,{lines:e.tool.output,"empty-text":"Waiting for output…"},null,8,["lines"])]),_:1},8,["status","icon","name","arg","time","open","expandable","stacked","stack-position"]))}}),NC=Pe(FC,[["__scopeId","data-v-74e1da99"]]),qC={key:0,class:"chip"},WC={key:0,class:"bb-summary"},HC=xe({__name:"GenericTool",props:{tool:{},mobile:{type:Boolean,default:!1},stackPosition:{default:"single"},toolDiffPanel:{type:Boolean,default:!1}},emits:["openMedia","openFile","openToolDiff"],setup(e){const t=e,n=$(()=>t.tool.status==="running"&&/^bash$/i.test(t.tool.name)),s=$(()=>!!t.tool.output&&t.tool.output.length>0),o=$(()=>s.value||n.value),i=x(t.tool.defaultExpanded===!0&&o.value),u=$(()=>t.tool.status),p=$(()=>Vs(t.tool.name)),m=$(()=>ni(t.tool.name)),h=$(()=>lo(t.tool.name,t.tool.arg)),w=$(()=>lo(t.tool.name,t.tool.arg,!0)),I=$(()=>Ou({name:t.tool.name,arg:t.tool.arg,output:t.tool.output,timing:t.tool.timing,status:t.tool.status}));function v(){o.value&&(i.value=!i.value)}return Oe(()=>[t.tool.defaultExpanded,t.tool.output?.length,t.tool.status,t.tool.name],()=>{t.tool.defaultExpanded===!0&&o.value&&(i.value=!0)}),(f,_)=>(a(),G(ri,{status:u.value,icon:m.value,name:p.value,arg:i.value?"":h.value,time:e.tool.name!=="bash"?e.tool.timing:"",open:i.value,expandable:o.value,stacked:e.stackPosition!=="single","stack-position":e.stackPosition,onToggle:v},{trailing:W(()=>[I.value?(a(),c("span",qC,d(I.value),1)):A("",!0)]),default:W(()=>[w.value?(a(),c("div",WC,d(w.value),1)):A("",!0),M(Pl,{lines:e.tool.output,"empty-text":"Waiting for output…"},null,8,["lines"])]),_:1},8,["status","icon","name","arg","time","open","expandable","stacked","stack-position"]))}}),UC=Pe(HC,[["__scopeId","data-v-aa4edcb0"]]),VC={class:"media-title"},jC=["src","alt"],KC=["aria-label"],GC=["src"],QC={class:"media-play-badge"},YC=["src"],ZC=xe({__name:"MediaTool",props:{tool:{},mobile:{type:Boolean,default:!1}},emits:["openMedia"],setup(e,{emit:t}){const n=e,s=t,o=$(()=>n.tool.status==="ok"?n.tool.media:void 0);function i(h){return h.split(/[\\/]+/).pop()||h}function u(h){return h<1024?`${h} B`:h<1024*1024?`${(h/1024).toFixed(1)} KB`:`${(h/1024/1024).toFixed(1)} MB`}const p=$(()=>{const h=o.value;if(!h)return"";const w=[h.path?i(h.path):n.tool.name];return h.mimeType&&w.push(h.mimeType),h.bytes!==void 0&&w.push(u(h.bytes)),h.dimensions&&w.push(h.dimensions),w.join(" · ")});function m(){const h=o.value;h&&(h.kind==="image"||h.kind==="video")&&s("openMedia",h)}return(h,w)=>o.value?(a(),c("div",{key:0,class:fe(["media-tool",{mob:e.mobile}])},[M(nt,{text:o.value.path||p.value},{default:W(()=>[r("div",VC,d(p.value),1)]),_:1},8,["text"]),o.value.kind==="image"?(a(),G(nt,{key:0,text:o.value.path||p.value},{default:W(()=>[r("button",{type:"button",class:"media-image-button",onClick:m},[r("img",{class:"media-image",src:o.value.url,alt:o.value.path?i(o.value.path):p.value,loading:"lazy"},null,8,jC)])]),_:1},8,["text"])):o.value.kind==="video"?(a(),c("button",{key:1,type:"button",class:"media-video-button","aria-label":p.value,onClick:m},[r("video",{class:"media-video",src:o.value.url,preload:"metadata",playsinline:"",muted:""},null,8,GC),r("span",QC,[M(le,{name:"play",size:"md"})])],8,KC)):(a(),c("audio",{key:2,class:"media-audio",src:o.value.url,controls:""},null,8,YC))],2)):A("",!0)}}),XC=Pe(ZC,[["__scopeId","data-v-04192531"]]),JC="main",e5=1e4;function ui(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function oo(e){return typeof e=="string"&&e.length>0}function t5(e){try{return AbortSignal.timeout(e)}catch{return}}function n5(e){return!ui(e)||!oo(e.label)?null:{label:e.label,description:oo(e.description)?e.description:void 0}}function s5(e){if(!ui(e))return;const t=e.state;if(t!=="pending"&&t!=="approved"&&t!=="rejected"&&t!=="cancelled")return;const n=oo(e.selected_option)?e.selected_option:void 0,s=oo(e.feedback)?e.feedback:void 0;return{state:t,selectedOption:n,feedback:s}}function o5(e){if(!ui(e)||!oo(e.tool_call_id)||!oo(e.plan))return null;const t=e.source;if(t!=="interaction"&&t!=="display"&&t!=="output")return null;const n=Array.isArray(e.options)?e.options.map(n5).filter(s=>s!==null):void 0;return{toolCallId:e.tool_call_id,plan:e.plan,path:oo(e.path)?e.path:void 0,options:n!==void 0&&n.length>0?n:void 0,source:t,review:s5(e.review)}}function i5(e){if(!ui(e)||!Array.isArray(e.plans))return[];const t=[];for(const n of e.plans){const s=o5(n);s!==null&&t.push(s)}return t}function a5(e){return!ui(e)||e.code!==0?[]:i5(e.data)}async function Qc(e,t,n=fetch){const s=wu().serverHttpUrl,o=`/sessions/${encodeURIComponent(e)}/transcript/plan`,i=new URLSearchParams({agent_id:JC,tool_call_id:t}),u=si();try{const p=await n(`${no(s,o)}?${i.toString()}`,{headers:u!==void 0?{Authorization:`Bearer ${u}`}:void 0,signal:t5(e5)});if(!p.ok)return null;const m=await p.json(),h=a5(m);return h.find(w=>w.toolCallId===t)??h[0]??null}catch{return null}}const l5={key:0,class:"chip"},r5={key:0,class:"bb-summary"},u5={key:1,class:"plan-wrap"},c5=["title"],d5={class:"plan-body"},p5={key:1,class:"plan-review"},f5={key:0,class:"plan-state"},m5={key:1,class:"plan-option"},v5={key:2,class:"plan-feedback"},h5={key:2,class:"plan-loading"},g5={key:3,class:"plan-empty"},y5=xe({__name:"PlanTool",props:{tool:{},mobile:{type:Boolean,default:!1},stackPosition:{default:"single"},toolDiffPanel:{type:Boolean,default:!1}},emits:["openMedia","openFile","openToolDiff"],setup(e,{emit:t}){const n=mu(()=>gu(()=>Promise.resolve().then(()=>z_),void 0)),s=e,o=t,{t:i}=We(),u=po("sessionId",()=>{}),p=$(()=>s.tool.status),m=$(()=>Vs(s.tool.name)),h=$(()=>ni(s.tool.name)),w=$(()=>Ou({name:s.tool.name,arg:s.tool.arg,output:s.tool.output,timing:s.tool.timing,status:s.tool.status})),I=$(()=>!!s.tool.output&&s.tool.output.length>0),v=$(()=>s.tool.status==="running"&&/^bash$/i.test(s.tool.name)),f=x(null),_=x("idle"),g=$(()=>f.value?.path?f.value.path:lo(s.tool.name,s.tool.arg)),b=$(()=>f.value!==null?"":lo(s.tool.name,s.tool.arg,!0)),y=x(!1),E=$(()=>f.value!==null||I.value||v.value);Oe(f,L=>{L!==null&&(y.value=!0)});function S(){E.value&&(y.value=!y.value)}function O(){const L=f.value?.path;L&&o("openFile",{path:L})}const D=$(()=>{const L=f.value?.review?.state;if(L===void 0)return null;switch(L){case"approved":return i("tools.plan.approved");case"rejected":return i("tools.plan.rejected");case"cancelled":return i("tools.plan.cancelled");case"pending":return i("tools.plan.pending")}});async function T(){if(_.value!=="idle")return;if(s.tool.status==="running"){_.value="settled";return}const L=u();if(!L){_.value="settled";return}_.value="loading",f.value=await Qc(L,s.tool.id),_.value="settled"}return mt(()=>{T()}),(L,F)=>(a(),G(ri,{status:p.value,icon:h.value,name:m.value,arg:y.value?"":g.value,time:e.tool.timing,open:y.value,expandable:E.value,stacked:e.stackPosition!=="single","stack-position":e.stackPosition,onToggle:S},{trailing:W(()=>[w.value?(a(),c("span",l5,d(w.value),1)):A("",!0)]),default:W(()=>[b.value?(a(),c("div",r5,d(b.value),1)):A("",!0),f.value?(a(),c("div",u5,[f.value.path?(a(),c("button",{key:0,class:"plan-path",type:"button",title:f.value.path,onClick:O},d(f.value.path),9,c5)):A("",!0),r("div",d5,[M(l(n),{text:f.value.plan,"open-file":H=>o("openFile",H)},null,8,["text","open-file"])]),f.value.review?(a(),c("div",p5,[D.value?(a(),c("span",f5,d(D.value),1)):A("",!0),f.value.review.selectedOption?(a(),c("span",m5,d(f.value.review.selectedOption),1)):A("",!0),f.value.review.feedback?(a(),c("span",v5,"“"+d(f.value.review.feedback)+"”",1)):A("",!0)])):A("",!0)])):_.value==="loading"?(a(),c("div",h5,d(l(i)("tools.plan.loading")),1)):_.value==="settled"&&f.value===null&&!I.value?(a(),c("div",g5,d(l(i)("tools.plan.unavailable")),1)):(a(),G(Pl,{key:4,lines:e.tool.output,"empty-text":"Waiting for output…"},null,8,["lines"]))]),_:1},8,["status","icon","name","arg","time","open","expandable","stacked","stack-position"]))}}),k5=Pe(y5,[["__scopeId","data-v-c851b016"]]),b5=/([\s\S]*?)<\/summary>/,w5=/([\s\S]*?)<\/resume_hint>/,ya=/]*)>|<\/subagent>/g,S5=" ",Fr=/(completed|failed|aborted):\s*(\d+)/g,Nr=/([a-z_]+)="([^"]*)"/g;function C5(e){return e.replaceAll(""",'"').replaceAll("<","<").replaceAll(">",">").replaceAll("&","&")}function _5(e){const t={};Nr.lastIndex=0;let n;for(;(n=Nr.exec(e))!==null;)t[n[1]]=C5(n[2]);return t}function $5(e){const t={completed:0,failed:0,aborted:0};Fr.lastIndex=0;let n;for(;(n=Fr.exec(e))!==null;){const s=n[1];t[s]=Number(n[2])}return t}function M5(e,t){const n=_5(e);return{outcome:n.outcome??"completed",item:n.item,agentId:n.agent_id,mode:n.mode,state:n.state,body:t.trim()}}function x5(e){const t=[],n=[];ya.lastIndex=0;let s;for(;(s=ya.exec(e))!==null;)if(s[0]===S5){if(n.length===0)continue;const o=n.pop();o&&n.length===0&&t.push(M5(o.attrs,e.slice(o.bodyStart,s.index)))}else n.length===0?n.push({attrs:s[1]??"",bodyStart:ya.lastIndex}):n.push(null);return t}function I5(e){if(e==null)return null;const t=Array.isArray(e)?e.join(`
-`):e;if(!t.includes(""))return null;const n=b5.exec(t)?.[1]?.trim()??"",{completed:s,failed:o,aborted:i}=$5(n),u=w5.exec(t)?.[1]?.trim(),p=x5(t),m=s+o+i;return{summary:n,completed:s,failed:o,aborted:i,total:m>0?m:p.length,subagents:p,resumeHint:u}}function qr(e){return e?e.split(`
-`).map(t=>t.trimEnd()).filter(Boolean).at(-1)??"":""}function A5(e){return e.suspendedReason||qr(e.text)||qr(e.outputLines?.join(`
-`))||e.summary||""}function T5(e){return e.suspendedReason?e.suspendedReason:e.text?e.text:e.outputLines&&e.outputLines.length>0?e.outputLines.join(`
-`):e.summary??""}function P5(e){return e==="completed"?"completed":e==="failed"||e==="aborted"?"failed":"working"}function Wr(e,t){return{id:e.agentId??e.item??`result-${t}`,name:e.item??`subagent ${t+1}`,activity:e.body.split(`
-`)[0]??"",phase:P5(e.outcome),body:e.body}}function E5(e,t){return!!(t.agentId&&e.id===t.agentId||t.item&&e.name.includes(t.item))}function L5(e,t){const n=e.map(o=>({id:o.id,name:o.name,activity:A5(o),phase:o.phase,body:T5(o)}));if(!t)return n;const s=t.subagents.filter(o=>(o.outcome==="aborted"||o.state==="not_started")&&!e.some(i=>E5(i,o))).map((o,i)=>Wr(o,i));return n.length>0?[...n,...s]:t.subagents.map((o,i)=>Wr(o,i))}const B5=["aria-expanded"],R5={class:"title"},O5={key:0,class:"meta"},D5={key:1,class:"sum-txt"},z5={class:"rt"},F5={class:"status"},N5={key:0,class:"chip"},q5={key:1,class:"tm"},W5={class:"body"},H5={class:"overview"},U5={class:"overview-line"},V5={class:"big"},j5={key:0,class:"lbl"},K5={key:1,class:"lbl"},G5={key:2,class:"lbl"},Q5={key:0,class:"seg","aria-hidden":"true"},Y5={key:1,class:"legend"},Z5=["aria-expanded","onClick"],X5={class:"mname"},J5={class:"mact"},e_={class:"mphase"},t_={key:1,class:"fallback-output"},n_={key:2,class:"waiting"},s_=xe({__name:"SwarmTool",props:{tool:{},mobile:{type:Boolean,default:!1},stackPosition:{default:"single"},toolDiffPanel:{type:Boolean,default:!1}},emits:["openMedia","openFile","openToolDiff","openAgent"],setup(e){const{t}=We(),n=e;function s(k){if(!k)return{};try{const P=JSON.parse(k),R=Array.isArray(P.items)?P.items:void 0;return{description:typeof P.description=="string"?P.description:void 0,itemCount:R?.length}}catch{return{}}}const o=po("resolveSwarmMembers"),i=$(()=>s(n.tool.arg)),u=$(()=>Vs(n.tool.name)),p=$(()=>i.value.description??""),m=$(()=>o?.(n.tool.id)??[]),h=$(()=>I5(n.tool.output)),w=$(()=>n.tool.status),I=$(()=>w.value==="running"?"running":w.value==="error"||(h.value?.failed??0)>0||(h.value?.aborted??0)>0?"error":"ok"),v=$(()=>L5(m.value,h.value)),f=$(()=>{const k={completed:0,working:0,suspended:0,queued:0,failed:0};for(const P of v.value)k[P.phase]++;return k}),_=$(()=>v.value.length||i.value.itemCount||0),g=$(()=>f.value.completed+f.value.failed),b=$(()=>f.value.working+f.value.suspended+f.value.queued),y=[{phase:"completed",cls:"s-ok"},{phase:"working",cls:"s-run"},{phase:"suspended",cls:"s-warn"},{phase:"failed",cls:"s-fail"},{phase:"queued",cls:"s-queue"}],E=$(()=>y.map(({phase:k,cls:P})=>({phase:k,count:f.value[k],cls:P})).filter(k=>k.count>0)),S=x(w.value==="running"||b.value>0);function O(){S.value=!S.value}const D=$(()=>v.value.length>0||h.value||w.value==="running"?"":(n.tool.output??[]).join(`
-`).trim()),T=x(new Set);function L(k){const P=new Set(T.value);P.has(k)?P.delete(k):P.add(k),T.value=P}function F(k){return T.value.has(k)}function H(k){return t(`tools.swarm.phase${k[0].toUpperCase()}${k.slice(1)}`)}return(k,P)=>(a(),c("div",{class:fe(["swarm-card",{open:S.value,err:I.value==="error",stacked:e.stackPosition!=="single"}])},[r("button",{class:"head",type:"button","aria-expanded":S.value,onClick:O},[M(le,{class:"ic",name:"git-pull-request",size:"sm"}),r("span",R5,d(u.value),1),p.value?(a(),c("span",O5,"·")):A("",!0),p.value?(a(),c("span",D5,d(p.value),1)):A("",!0),r("span",z5,[r("span",F5,[I.value==="ok"?(a(),G(le,{key:0,name:"check",size:"sm"})):I.value==="error"?(a(),G(le,{key:1,name:"close",size:"sm"})):(a(),G(Bo,{key:2,status:"running"}))]),g.value>0||_.value>0?(a(),c("span",N5,d(g.value)+" / "+d(_.value),1)):A("",!0),e.tool.timing?(a(),c("span",q5,d(e.tool.timing),1)):A("",!0)]),M(le,{class:"car",name:S.value?"chevron-down":"chevron-right",size:"sm"},null,8,["name"])],8,B5),ht(r("div",W5,[r("div",H5,[r("div",U5,[r("span",V5,d(l(t)("tools.swarm.progress",{done:g.value,total:_.value})),1),I.value==="running"&&_.value>0?(a(),c("span",j5,d(l(t)("tools.swarm.runningSub",{count:b.value})),1)):h.value?(a(),c("span",K5,d(l(t)("tools.swarm.doneSub",{completed:h.value.completed,failed:h.value.failed+h.value.aborted})),1)):(a(),c("span",G5,d(l(t)("tools.swarm.waiting")),1))]),_.value>0&&E.value.length>0?(a(),c("div",Q5,[(a(!0),c(ge,null,Te(E.value,R=>(a(),c("span",{key:R.phase,class:fe(R.cls),style:rt({flex:R.count})},null,6))),128))])):A("",!0),E.value.length>1?(a(),c("div",Y5,[(a(!0),c(ge,null,Te(E.value,R=>(a(),c("span",{key:R.phase},[r("i",{class:fe(["lg-dot",R.cls])},null,2),ue(d(H(R.phase))+" "+d(R.count),1)]))),128))])):A("",!0)]),v.value.length>0?(a(!0),c(ge,{key:0},Te(v.value,R=>(a(),c("div",{key:R.id,class:fe(["member",[`phase-${R.phase}`,{open:F(R.id)}]])},[r("button",{class:"member-head",type:"button","aria-expanded":F(R.id),onClick:se=>L(R.id)},[M(Bo,{class:"row-dot",status:R.phase},null,8,["status"]),M(nt,{text:R.name},{default:W(()=>[r("span",X5,d(R.name),1)]),_:2},1032,["text"]),R.activity?(a(),G(nt,{key:0,text:R.activity},{default:W(()=>[r("span",J5,d(R.activity),1)]),_:2},1032,["text"])):A("",!0),r("span",e_,d(H(R.phase)),1),M(le,{class:"mcar",name:F(R.id)?"chevron-down":"chevron-right",size:"sm"},null,8,["name"])],8,Z5),ht(r("div",{class:"member-body"},d(R.body),513),[[Xn,F(R.id)]])],2))),128)):D.value?(a(),c("div",t_,d(D.value),1)):(a(),c("div",n_,d(l(t)("tools.swarm.waiting")),1))],512),[[Xn,S.value]])],2))}}),o_=Pe(s_,[["__scopeId","data-v-4b58e128"]]);function i_(e){if(e.media&&e.status==="ok")return XC;const t=mo(e.name);return t==="edit"||t==="write"||t==="multi_edit"?NC:t==="exitplanmode"?k5:t==="task"?iC:t==="agentswarm"?o_:t==="askuserquestion"?AC:UC}const Yc=xe({__name:"ToolCall",props:{tool:{},mobile:{type:Boolean,default:!1},stackPosition:{default:"single"},toolDiffPanel:{type:Boolean,default:!1}},emits:["openMedia","openFile","openToolDiff","openAgent"],setup(e,{emit:t}){const n=e,s=t,o=$(()=>i_(n.tool));return(i,u)=>(a(),G(fu(o.value),{tool:e.tool,mobile:e.mobile,"stack-position":e.stackPosition,"tool-diff-panel":e.toolDiffPanel,"data-scroll-anchor-id":e.tool.id,onOpenMedia:u[0]||(u[0]=p=>s("openMedia",p)),onOpenFile:u[1]||(u[1]=p=>s("openFile",p)),onOpenToolDiff:u[2]||(u[2]=p=>s("openToolDiff",p)),onOpenAgent:u[3]||(u[3]=p=>s("openAgent",p))},null,40,["tool","mobile","stack-position","tool-diff-panel","data-scroll-anchor-id"]))}});function ds(e){if(e>=1024*1024)return`${Hr(e/(1024*1024))}M`;if(e>=1024){const t=e/1024;return`${t>=100?Math.round(t):Hr(t)}k`}return String(e)}function Hr(e){const t=e.toFixed(1);return t.endsWith(".0")?t.slice(0,-2):t}function Xi(e){if(e.blocks)return e.blocks;const t=[];e.thinking&&t.push({kind:"thinking",thinking:e.thinking}),e.text&&t.push({kind:"text",text:e.text});for(const n of e.tools??[])t.push({kind:"tool",tool:n});return t}function a_(e){return!(e.tool.status==="ok"&&e.tool.media)}function l_(e,t){return t<=1?"single":e===0?"first":e===t-1?"last":"middle"}const Ur=new WeakMap;function r_(e){const t=Ur.get(e);if(t)return t;const n=u_(e);return Ur.set(e,n),n}function u_(e){const t=Xi(e),n=[];let s=[];const o=()=>{if(s.length===1){const[i]=s;i&&n.push({kind:"tool",tool:i.tool,sourceIndex:i.sourceIndex})}else s.length>1&&n.push({kind:"tool-stack",tools:s});s=[]};return t.forEach((i,u)=>{if(i.kind==="tool"){if(a_(i)){s.push({tool:i.tool,sourceIndex:u});return}o(),n.push({kind:"tool",tool:i.tool,sourceIndex:u});return}o(),i.kind==="thinking"?n.push({kind:"thinking",thinking:i.thinking,sourceIndex:u}):i.kind==="text"?n.push({kind:"text",text:i.text,sourceIndex:u}):i.kind==="error"&&n.push({kind:"error",text:i.text,code:i.code,sourceIndex:u})}),o(),n}function c_(e){return Xi(e).flatMap(t=>t.kind==="text"&&t.text?[t.text]:[]).join(`
-
-`)}function d_(e){const t=[];for(const n of Xi(e))if(n.kind==="thinking"&&n.thinking)t.push(`> **Thinking**
-> ${n.thinking.split(`
-`).join(`
-> `)}`);else if(n.kind==="text"&&n.text)t.push(n.text);else if(n.kind==="error"&&n.text){const s=n.code!==void 0?`**Error** (${n.code})`:"**Error**";t.push(`> ${s}
-> ${n.text.split(`
-`).join(`
-> `)}`)}else if(n.kind==="tool"&&n.tool.output&&n.tool.output.length>0){const s=n.tool.output.join(`
-`);t.push(`\`\`\`
-[${n.tool.name}]
-${s}
-\`\`\``)}return t.join(`
-
-`)}function Zc(e){return e.tool.id||`tool-${e.sourceIndex}`}function p_(e,t){return e.kind==="tool-stack"?`tool-stack-${e.tools[0]?.sourceIndex??t}`:e.kind==="tool"?Zc({tool:e.tool,sourceIndex:e.sourceIndex}):`${e.kind}-${e.sourceIndex}`}const f_=["aria-expanded"],m_={class:"tg-title"},v_={class:"tg-meta"},h_=["inert"],g_={class:"tool-group-body-inner"},y_=xe({__name:"ToolGroup",props:{tools:{},mobile:{type:Boolean,default:!1},toolDiffPanel:{type:Boolean,default:!1}},emits:["openMedia","openFile","openToolDiff","openAgent"],setup(e,{emit:t}){const n=e,s=t,o=x(!0),i=$(()=>n.tools.length),u=$(()=>n.tools.some(f=>f.tool.status==="running")?"running":n.tools.some(f=>f.tool.status==="error")?"error":"done"),{t:p}=We(),m=$(()=>{switch(u.value){case"running":return p("tools.group.running");case"error":return p("tools.group.error");default:return p("tools.group.done")}});function h(){o.value=!o.value}const w=po("pinScroll",()=>{}),I=x(null);function v(){h();const f=I.value;f&&Ue(()=>w(f))}return(f,_)=>(a(),c("div",{class:fe(["tool-group",{open:o.value}])},[r("button",{class:"tool-group-head",ref_key:"headEl",ref:I,type:"button","aria-expanded":o.value,onClick:v},[M(Bo,{status:u.value},null,8,["status"]),M(le,{class:"tg-ic",name:"list",size:"sm"}),r("span",m_,d(l(p)("tools.group.title",i.value)),1),r("span",v_,"· "+d(m.value),1),M(le,{class:"tg-car",name:"chevron-right",size:"sm"})],8,f_),r("div",{class:fe(["tool-group-body",{open:o.value}]),inert:!o.value},[r("div",g_,[(a(!0),c(ge,null,Te(e.tools,(g,b)=>(a(),G(Yc,{key:l(Zc)(g),tool:g.tool,mobile:e.mobile,"stack-position":l(l_)(b,e.tools.length),"tool-diff-panel":e.toolDiffPanel,onOpenMedia:_[0]||(_[0]=y=>s("openMedia",y)),onOpenFile:_[1]||(_[1]=y=>s("openFile",y)),onOpenToolDiff:_[2]||(_[2]=y=>s("openToolDiff",y)),onOpenAgent:_[3]||(_[3]=y=>s("openAgent",y))},null,8,["tool","mobile","stack-position","tool-diff-panel"]))),128))])],10,h_)],2))}}),k_=Pe(y_,[["__scopeId","data-v-37eb334f"]]),Si=x(!1);let Vr=!1;function ka(){const e=document.documentElement.dataset.colorScheme;return e==="dark"?!0:e==="light"?!1:window.matchMedia("(prefers-color-scheme: dark)").matches}function Xc(){return!Vr&&typeof window<"u"&&typeof document<"u"&&(Vr=!0,Si.value=ka(),new MutationObserver(()=>{Si.value=ka()}).observe(document.documentElement,{attributes:!0,attributeFilter:["data-color-scheme"]}),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",()=>{Si.value=ka()})),Si}const Jc=["cjs","css","csv","gif","htm","html","jpeg","jpg","js","json","jsx","log","md","mjs","pdf","png","scss","svg","ts","tsx","txt","vue","webp","xml","yaml","yml"],b_=new Set(["AGENTS.md","CHANGELOG.md","Dockerfile","LICENSE","Makefile","README.md","package.json","pnpm-lock.yaml","pnpm-workspace.yaml","tsconfig.json","vite.config.ts"]),Qa=[...Jc].sort((e,t)=>t.length-e.length).join("|"),ba=new RegExp([String.raw`(?:^|[\s([{"'`+"`"+String.raw`])`,String.raw`(`,String.raw`(?:~|\.{1,2}|/)?(?:[A-Za-z0-9_.@+()[\]-]+/)+[A-Za-z0-9_.@+()[\]-]+(?:\.(?:${Qa}))?`,String.raw`|`,String.raw`[A-Za-z0-9_.@+()[\]-]+\.(?:${Qa})`,String.raw`)`,String.raw`(?:#L?(\d+)|:(\d+))?`,String.raw`(?=$|[\s)"'\]}>.,;!?,。;!?)])`].join(""),"gi"),ed=/[),.;!?,。;!?)]+$/;function w_(e){const t=e.toLowerCase();return Jc.some(n=>t.endsWith(`.${n}`))}function S_(e){const t=new Map,n=new RegExp(String.raw`\b(?:path|src)=["'](\/[^"']+\.(?:${Qa}))["']`,"gi");let s;for(;(s=n.exec(e))!==null;){const o=s[1];if(!o)continue;const i=o.split("/").pop();i&&t.set(i,o)}return t}function C_(e,t={}){const n=e.trim();if(!n||/^[a-z][a-z0-9+.-]*:\/\//i.test(n))return null;const s=n.match(/^(.*?)(?:#L?(\d+)|:(\d+))?$/i);if(!s)return null;let o=(s[1]??"").replace(ed,"");if(!o)return null;const i=o.split("/").pop()??o,u=o.includes("/"),p=b_.has(i),m=w_(i);if(u&&!p&&!m)return null;if(!u&&!p){const I=t.aliases?.get(i);if(!I)return null;o=I}const h=s[2]??s[3],w=h?Number(h):void 0;return{path:o,line:w!==void 0&&Number.isFinite(w)&&w>0?w:void 0}}function __(e,t={}){const n=[];ba.lastIndex=0;let s;for(;(s=ba.exec(e))!==null;){const o=s[0]??"",i=s[1]??"",u=o.indexOf(i);if(u<0)continue;const p=s[2]??s[3];let m=i+(p?o.slice(u+i.length):"");const h=m.replace(ed,""),w=m.length-h.length;m=h;const I=C_(m,t);if(!I)continue;const v=s.index+u,f=v+m.length;n.push({...I,start:v,end:f,text:m}),w>0&&(ba.lastIndex-=w)}return n}const $_=12e4,M_=6e4,x_=32,I_=3e4,jr=/(^|\n)(`{3,}|~{3,})[^\n]*\n([\s\S]*?)(?:\n)?\2(?=\n|$)/g;function A_(e){let t=0,n=0,s=0;jr.lastIndex=0;let o;for(;(o=jr.exec(e))!==null;){const u=o[3]??"";t+=1,n+=u.length,s=Math.max(s,u.length)}return{codeRenderer:e.length>=$_||n>=M_||t>=x_||s>=I_?"pre":"shiki",codeFenceCount:t,codeChars:n}}const T_={key:1,class:"diff-wrap"},P_={class:"diff-bar"},E_=["aria-label","onClick"],L_={class:"diff-pre"},B_={key:0,class:"diff-sign"},R_={class:"diff-text"},O_="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",Kr="github-light",Gr="github-dark",D_=xe({__name:"Markdown",props:{text:{},openFile:{},streaming:{type:Boolean,default:!1}},setup(e){Fd(),Nd(),Ed(),Dd(),Ld(new Bd),Rd(new Od);function t(ae){return ae.inline.ruler.disable("math"),ae}const{t:n}=We(),s=po("resolveImage"),o=x(null),i=e,u=$(()=>!i.streaming),p=$(()=>S_(i.text??"")),m=$(()=>i.streaming?{codeRenderer:"shiki",codeFenceCount:0,codeChars:0}:A_(i.text??"")),h=Xc(),w=$(()=>!i.streaming),I=Pn(new Map),v=new Set,f=/(!\[[^\]]*\]\()\s*([^)\s]+)([^)]*\))/g,_=/( ]*?\bsrc=")([^"]+)(")/gi;function g(ae){return!/^(https?:|data:|blob:)/i.test(ae)}function b(ae){if(!s)return;const ve=[];for(const me of[f,_]){me.lastIndex=0;let Z;for(;(Z=me.exec(ae))!==null;)ve.push(Z[2]??"")}for(const me of ve)!me||!g(me)||I.has(me)||v.has(me)||(v.add(me),s(me).then(Z=>{I.set(me,Z!==me?Z:"")}).catch(()=>{I.set(me,"")}).finally(()=>{v.delete(me)}))}function y(ae){if(!s)return ae;const ve=me=>{if(!g(me))return null;const Z=I.get(me);return Z===void 0?O_:Z===""?null:Z};return ae.replace(f,(me,Z,oe,ie)=>{const ke=ve(oe);return ke===null?me:`${Z}${ke}${ie}`}).replace(_,(me,Z,oe,ie)=>{const ke=ve(oe);return ke===null?me:`${Z}${ke}${ie}`})}Oe(()=>i.text,ae=>b(ae??""),{immediate:!0});function E(){if(!o.value||!i.openFile||i.streaming)return;const ae=document.createTreeWalker(o.value,NodeFilter.SHOW_TEXT),ve=[];let me=ae.nextNode();for(;me;){const Z=me,oe=Z.parentElement;oe&&!oe.closest("a, pre, .md-file-link, svg")&&Z.data.trim().length>0&&ve.push(Z),me=ae.nextNode()}for(const Z of ve){const oe=__(Z.data,{aliases:p.value});if(oe.length===0||!Z.parentNode)continue;const ie=document.createDocumentFragment();let ke=0;for(const $e of oe){$e.start>ke&&ie.append(document.createTextNode(Z.data.slice(ke,$e.start)));const he=document.createElement("button");he.type="button",he.className="md-file-link",he.textContent=$e.text,he.title=$e.line?`${$e.path}:${$e.line}`:$e.path,he.addEventListener("click",V=>{V.preventDefault(),V.stopPropagation(),i.openFile?.({path:$e.path,line:$e.line})}),ie.append(he),ke=$e.end}ke{Z.preventDefault(),Z.stopPropagation(),i.openFile?.({path:O(me)})}))}}function T(){Ue().then(()=>{E(),D()})}Oe(()=>i.text,T),Oe(()=>i.streaming,T);let L=null;mt(()=>{T(),o.value&&(L=new MutationObserver(T),L.observe(o.value,{childList:!0,subtree:!0}))}),yt(()=>{L?.disconnect()});const F={showHeader:!0,showCopyButton:!0,showExpandButton:!1,showPreviewButton:!1,showCollapseButton:!1,showFontSizeButtons:!1,loading:!1,monacoOptions:{lineNumbers:!1,fontSize:13,fontFamily:"var(--font-mono)",padding:{top:12,bottom:12}}},H=/(^|\n)(?:```|~~~)diff\b[^\n]*\n([\s\S]*?)(?:\n)?(?:```|~~~)(?=\n|$)/g,k=$(()=>{const ae=y(i.text??""),ve=[];let me=0;H.lastIndex=0;let Z;for(;(Z=H.exec(ae))!==null;){const ie=Z[1]??"",ke=ae.slice(me,Z.index)+(ie||"");ke.trim()&&ve.push({kind:"md",text:ke}),ve.push({kind:"diff",code:Z[2]??""}),me=H.lastIndex}const oe=ae.slice(me);return(oe.trim()||ve.length===0)&&ve.push({kind:"md",text:oe}),ve});function P(ae){return ae.split(`
-`).map(ve=>ve.startsWith("@@")?{type:"hunk",sign:"",text:ve}:/^\+(?!\+\+)/.test(ve)?{type:"add",sign:"+",text:ve.slice(1)}:/^-(?!--)/.test(ve)?{type:"del",sign:"-",text:ve.slice(1)}:ve.startsWith(" ")?{type:"ctx",sign:"",text:ve.slice(1)}:{type:"ctx",sign:"",text:ve})}const R=x(null);function se(ae,ve){un(ae).then(me=>{me&&(R.value=ve,setTimeout(()=>{R.value=null},1400))})}return(ae,ve)=>(a(),c("div",{ref_key:"mdRef",ref:o,class:"md"},[(a(!0),c(ge,null,Te(k.value,(me,Z)=>(a(),c(ge,{key:Z},[me.kind==="md"?(a(),G(l(zd),{key:0,content:me.text,"custom-markdown-it":t,mode:"chat","code-renderer":m.value.codeRenderer,"is-dark":l(h),"code-block-light-theme":Kr,"code-block-dark-theme":Gr,themes:[Kr,Gr],"code-block-props":F,final:u.value,"smooth-streaming":e.streaming,"batch-rendering":w.value,"defer-nodes-until-visible":!1,onCopy:l(op)},null,8,["content","code-renderer","is-dark","themes","final","smooth-streaming","batch-rendering","onCopy"])):(a(),c("div",T_,[r("div",P_,[ve[0]||(ve[0]=r("span",{class:"diff-lang"},"diff",-1)),M(nt,{text:l(n)("filePreview.copyCode")},{default:W(()=>[r("button",{class:"diff-copy","aria-label":l(n)("filePreview.copyCode"),onClick:oe=>se(me.code,Z)},[M(le,{name:R.value===Z?"check":"copy",size:"sm"},null,8,["name"])],8,E_)]),_:2},1032,["text"])]),r("pre",L_,[r("code",null,[(a(!0),c(ge,null,Te(P(me.code),(oe,ie)=>(a(),c("span",{key:ie,class:fe(["diff-line",`diff-${oe.type}`])},[oe.type!=="hunk"?(a(),c("span",B_,d(oe.sign),1)):A("",!0),r("span",R_,d(oe.text),1)],2))),128))])])]))],64))),128))],512))}}),ci=Pe(D_,[["__scopeId","data-v-9ccdd7fa"]]),z_=Object.freeze(Object.defineProperty({__proto__:null,default:ci},Symbol.toStringTag,{value:"Module"})),F_={class:"tc-anim"},N_={class:"prev-anim"},q_={class:"prev"},W_=xe({__name:"ThinkingBlock",props:{text:{},mobile:{type:Boolean,default:!1},streaming:{type:Boolean,default:!1},foldable:{type:Boolean,default:!0}},emits:["open"],setup(e,{emit:t}){const n=e,s=t,o=$(()=>n.text.split(/\n{2,}/).filter(h=>h.trim().length>0)),i=$(()=>n.foldable&&o.value.length>1),u=$(()=>n.streaming||!i.value),p=$(()=>o.value.at(-1)??""),m=x(null);return mt(()=>{if(!n.streaming)return;const h=m.value;h&&(h.scrollTop=h.scrollHeight)}),Oe(()=>n.text,()=>{const h=m.value;!h||!(h.scrollHeight-h.scrollTop-h.clientHeight<24)||Ue(()=>{m.value&&(m.value.scrollTop=m.value.scrollHeight)})},{immediate:!0}),(h,w)=>(a(),c("div",{class:fe(["think",{mob:e.mobile}])},[i.value?(a(),c("div",{key:0,class:fe(["tc-wrap",{"is-collapsed":!u.value}]),onClick:w[0]||(w[0]=I=>s("open"))},[r("div",F_,[r("pre",{ref_key:"bodyEl",ref:m,class:"tc"},d(e.text),513)]),r("div",N_,[r("span",q_,d(p.value),1)])],2)):(a(),c("pre",{key:1,ref_key:"bodyEl",ref:m,class:"tc"},d(e.text),513))],2))}}),H_=Pe(W_,[["__scopeId","data-v-0b3b873f"]]),U_={class:"activity-notice",role:"status"},V_={"aria-hidden":"true"},j_={class:"an-label"},K_=xe({__name:"ActivityNotice",props:{label:{}},setup(e){return(t,n)=>(a(),c("div",U_,[r("span",V_,[M(qt,{size:"sm"})]),r("span",j_,d(e.label),1)]))}}),G_=Pe(K_,[["__scopeId","data-v-0d497074"]]);function Q_(e,t="昨天"){try{const n=new Date(e);if(Number.isNaN(n.getTime()))return e;const s=new Date,o=w=>String(w).padStart(2,"0"),i=`${o(n.getHours())}:${o(n.getMinutes())}`,u=n.getFullYear()===s.getFullYear(),p=n.getMonth()===s.getMonth(),m=n.getDate()===s.getDate();if(u&&p&&m)return i;const h=new Date(s);return h.setDate(s.getDate()-1),n.getFullYear()===h.getFullYear()&&n.getMonth()===h.getMonth()&&n.getDate()===h.getDate()?`${t} ${i}`:u?`${o(n.getMonth()+1)}-${o(n.getDate())} ${i}`:`${n.getFullYear()}-${o(n.getMonth()+1)}-${o(n.getDate())} ${i}`}catch{return e}}const Y_=xe({__name:"MessageTime",props:{time:{}},setup(e){const t=e,{t:n}=We(),s=x(!1),o=$(()=>{const p=new Date(t.time);if(Number.isNaN(p.getTime()))return t.time;const m=h=>String(h).padStart(2,"0");return`${p.getFullYear()}-${m(p.getMonth()+1)}-${m(p.getDate())} ${m(p.getHours())}:${m(p.getMinutes())}`}),i=$(()=>s.value?o.value:Q_(t.time,n("conversation.yesterday")));function u(){s.value=!s.value}return(p,m)=>(a(),c("button",{type:"button",class:"msg-time",onClick:Re(u,["stop"])},d(i.value),1))}}),xi=Pe(Y_,[["__scopeId","data-v-9672fbd5"]]);function Z_(e){return e.length===1?`0${e}`:e}function X_(e,t){return`${String(Number(e))}:${Z_(t)}`}const Qr=e=>/^\d+$/.test(e);function J_(e,t){const n=e.trim().split(/\s+/);if(n.length!==5)return e;const[s,o,i,u,p]=n,m=i==="*"&&u==="*"&&p==="*",h=i==="*"&&u==="*";if(s==="*"&&o==="*"&&m)return t("conversation.cron.everyMinute");const w=/^\*\/(\d+)$/.exec(s);if(w&&o==="*"&&m)return w[1]==="1"?t("conversation.cron.everyMinute"):t("conversation.cron.everyNMinutes",{n:w[1]});if(s==="0"&&o==="*"&&m)return t("conversation.cron.everyHour");const I=/^\*\/(\d+)$/.exec(o);if(s==="0"&&I&&m)return t("conversation.cron.everyNHours",{n:I[1]});if(Qr(s)&&Qr(o)&&h){const v=X_(o,s);if(p==="1-5")return t("conversation.cron.weekdaysAt",{time:v});if(p==="*")return t("conversation.cron.dailyAt",{time:v})}return e}const e8=["data-turn-id"],t8={class:"cn-bubble"},n8={class:"cn-title"},s8={key:0,class:"cn-prompt"},o8={class:"cn-meta"},i8={key:0,class:"cn-meta-item"},a8={key:1,class:"cn-meta-item"},l8=["aria-label"],r8=["title"],u8=xe({__name:"CronNotice",props:{text:{},cron:{},turnId:{},createdAt:{}},setup(e){const t=e,{t:n}=We(),s=$(()=>t.cron),o=$(()=>s.value?.missedCount!==void 0),i=$(()=>o.value?n("conversation.cron.missed"):n("conversation.cron.fired")),u=$(()=>{const w=s.value?.cron;return w?J_(w,n):""}),p=$(()=>o.value?"error":"ok"),m=$(()=>{const w=s.value;if(!w)return"";const I=[];return w.recurring===!1&&I.push(n("conversation.cron.oneShot")),typeof w.coalescedCount=="number"&&w.coalescedCount>1&&I.push(n("conversation.cron.coalesced",{n:w.coalescedCount})),w.missedCount!==void 0&&I.push(n("conversation.cron.missedCount",{n:w.missedCount})),w.stale===!0&&I.push(n("conversation.cron.finalDelivery")),I.join(" · ")}),h=$(()=>t.text??"");return(w,I)=>(a(),c("div",{class:fe(["cn cron-notice",{"turn-anchor":!!e.turnId}]),"data-turn-id":e.turnId,role:"status"},[r("div",t8,[r("span",n8,d(i.value),1),h.value?(a(),c("span",s8,d(h.value),1)):A("",!0)]),r("div",o8,[M(le,{name:"clock",size:"sm",class:"cn-meta-ico","aria-hidden":"true"}),u.value?(a(),c("span",i8,d(u.value),1)):A("",!0),m.value?(a(),c("span",a8,d(m.value),1)):A("",!0),r("span",{class:fe(["cn-status",p.value]),"aria-label":p.value},[p.value==="ok"?(a(),G(le,{key:0,name:"check",size:"sm"})):(a(),G(le,{key:1,name:"close",size:"sm"}))],10,l8),s.value?.jobId?(a(),c("span",{key:2,class:"cn-meta-item cn-id",title:l(n)("conversation.cron.job",{id:s.value.jobId})},d(s.value.jobId),9,r8)):A("",!0),e.createdAt?(a(),G(xi,{key:3,time:e.createdAt},null,8,["time"])):A("",!0)])],10,e8))}}),c8=Pe(u8,[["__scopeId","data-v-a62a6587"]]),d8=["src","controls","muted"],p8=["src","alt"],td=xe({__name:"AuthMedia",props:{url:{},kind:{},alt:{},fileId:{},mediaClass:{default:"u-img"},controls:{type:Boolean,default:!0},muted:{type:Boolean,default:!1}},setup(e){const t=e,n=x(t.fileId?"":t.url),s=x(null),o=x(!t.fileId);let i=null,u=0,p=!1,m=null;function h(){i!==null&&(URL.revokeObjectURL(i),i=null)}async function w(){const I=++u;if(h(),!t.fileId){n.value=t.url;return}if(o.value)try{const v=await Ae().getFileBlob(t.fileId),f=URL.createObjectURL(v);if(p||I!==u){URL.revokeObjectURL(f);return}i=f,n.value=i}catch{if(p||I!==u)return;n.value=t.url}}return Oe(()=>[t.fileId,t.url,o.value],w,{immediate:!0}),mt(()=>{typeof IntersectionObserver=="function"&&s.value?(m=new IntersectionObserver(I=>{I[0]?.isIntersecting&&(o.value=!0,m?.disconnect(),m=null)},{rootMargin:"200px"}),m.observe(s.value)):o.value=!0}),Tn(()=>{p=!0,m?.disconnect(),m=null,h()}),(I,v)=>e.kind==="video"?(a(),c("video",{key:0,ref_key:"mediaEl",ref:s,class:fe(e.mediaClass),src:n.value||void 0,controls:e.controls,muted:e.muted,playsinline:"",preload:"metadata"},null,10,d8)):(a(),c("img",{key:1,ref_key:"mediaEl",ref:s,class:fe(e.mediaClass),src:n.value||void 0,alt:e.alt||"",loading:"lazy"},null,10,p8))}}),f8=["title","data-kind"],m8=["aria-label"],v8={class:"att-tile"},h8={class:"att-name"},g8={key:1,class:"att-err"},y8=["aria-label"],k8=xe({__name:"AttachmentChip",props:{kind:{},name:{},url:{},fileId:{},mediaType:{},size:{},uploading:{type:Boolean,default:!1},error:{type:Boolean,default:!1},removable:{type:Boolean,default:!1},removeLabel:{}},emits:["activate","remove"],setup(e,{emit:t}){const n=e,s=t,{t:o}=We(),i=$(()=>{const I=n.name?.match(/\.([A-Za-z0-9]{1,8})$/)?.[1]??n.mediaType?.split("/")[1]?.split("+")[0];return I?I.toUpperCase():void 0}),u=$(()=>{const w=i.value??"";return/^(txt|md|doc|docx|rtf|log)$/i.test(w)?"file-text":"file"}),p=$(()=>n.name?n.name:n.kind==="image"?o("composer.attachmentImage"):n.kind==="video"?o("composer.attachmentVideo"):o("composer.attachmentFile"));function m(w){return w<1024?`${w} B`:w<1024*1024?`${Math.round(w/1024)} KB`:`${(w/(1024*1024)).toFixed(1)} MB`}const h=$(()=>{const w=[p.value];return n.size!==void 0&&w.push(m(n.size)),w.join(" · ")});return(w,I)=>(a(),c("span",{class:fe(["att-chip",{"is-error":e.error,uploading:e.uploading}]),title:h.value,"data-kind":e.kind},[r("button",{type:"button",class:"att-activate","aria-label":h.value,onClick:I[0]||(I[0]=v=>s("activate"))},[r("span",v8,[e.kind==="image"&&e.url?(a(),G(td,{key:0,url:e.url,kind:"image",alt:e.name,"file-id":e.fileId,"media-class":"att-thumb"},null,8,["url","alt","file-id"])):e.kind==="video"?(a(),G(le,{key:1,name:"play",size:"sm"})):e.kind==="image"?(a(),G(le,{key:2,name:"image",size:"sm"})):(a(),G(le,{key:3,name:u.value,size:"sm"},null,8,["name"]))]),r("span",h8,d(p.value),1),e.uploading?(a(),G(qt,{key:0,size:"sm",label:l(o)("composer.uploading")},null,8,["label"])):e.error?(a(),c("span",g8,[M(le,{name:"info",size:"sm"})])):A("",!0)],8,m8),e.removable?(a(),G(nt,{key:0,text:e.removeLabel??l(o)("composer.remove")},{default:W(()=>[r("button",{type:"button",class:"att-rm","aria-label":e.removeLabel??l(o)("composer.remove"),onClick:I[1]||(I[1]=v=>s("remove"))},[M(le,{name:"close",size:"sm"})],8,y8)]),_:1},8,["text"])):A("",!0)],10,f8))}}),nd=Pe(k8,[["__scopeId","data-v-12ec975b"]]),b8=["aria-label"],w8=120,S8=60,C8=xe({__name:"MoonSpinner",props:{size:{default:"md"},fast:{type:Boolean},label:{default:"Waiting for response…"}},setup(e){const t=["🌑","🌒","🌓","🌔","🌕","🌖","🌗","🌘"];function n(s){return{"--moon-frame-delay":`${s*w8}ms`,"--moon-frame-fast-delay":`${s*S8}ms`}}return(s,o)=>(a(),c("span",{class:fe(["ui-moon",[`ui-moon--${e.size}`,{"ui-moon--fast":e.fast}]]),"aria-label":e.label,role:"img"},[(a(),c(ge,null,Te(t,(i,u)=>r("span",{key:i,class:"ui-moon__frame",style:rt(n(u)),"aria-hidden":"true"},d(i),5)),64))],10,b8))}}),sd=Pe(C8,[["__scopeId","data-v-a6b7ec07"]]),_8={class:"ui-banner__icon","aria-hidden":"true"},$8={class:"ui-banner__text"},M8=xe({__name:"Banner",props:{variant:{default:"info"}},setup(e){return(t,n)=>(a(),c("div",{class:fe(["ui-banner",`ui-banner--${e.variant}`]),role:"status"},[r("span",_8,[gt(t.$slots,"icon",{},()=>[e.variant==="info"?(a(),G(le,{key:0,name:"info",size:"md"})):(a(),G(le,{key:1,name:"alert-triangle",size:"md"}))],!0)]),r("span",$8,[gt(t.$slots,"default",{},void 0,!0)])],2))}}),od=Pe(M8,[["__scopeId","data-v-b0afda1c"]]),x8=["type","disabled"],I8={class:"ui-button__content"},A8=xe({__name:"Button",props:{variant:{default:"primary"},size:{default:"md"},disabled:{type:Boolean},loading:{type:Boolean},type:{default:"button"}},setup(e){return(t,n)=>(a(),c("button",{class:fe(["ui-button",[`ui-button--${e.variant}`,`ui-button--${e.size}`,{"is-loading":e.loading}]]),type:e.type,disabled:e.disabled||e.loading},[e.loading?(a(),G(qt,{key:0,size:"sm",class:"ui-button__spinner"})):A("",!0),r("span",I8,[gt(t.$slots,"default",{},void 0,!0)])],10,x8))}}),Ne=Pe(A8,[["__scopeId","data-v-556ea0b6"]]),wa="chat-search-hit",T8="chat-search-hit--active",Yr={childList:!0,subtree:!0,characterData:!0};function P8(e){const{root:t,query:n,activeIndex:s}=e;let o=null,i=0;function u(h){const w=h.querySelectorAll(`.${wa}`);for(const I of w)I.replaceWith(...Array.from(I.childNodes))}function p(){i=0;const h=t.value,w=n.value.trim();if(h){if(o?.disconnect(),u(h),w.length>0){const I=w.toLowerCase(),v=s.value,f=document.createTreeWalker(h,NodeFilter.SHOW_TEXT),_=[];let g=f.nextNode();for(;g;)_.push(g),g=f.nextNode();let b=0;for(const y of _){const E=y.data.toLowerCase();let S=E.indexOf(I);if(S===-1)continue;const O=y.parentNode;if(!O)continue;const D=document.createDocumentFragment();let T=0;for(;S!==-1;){S>T&&D.append(document.createTextNode(y.data.slice(T,S)));const L=document.createElement("span");L.className=b===v?`${wa} ${T8}`:wa,L.textContent=y.data.slice(S,S+w.length),D.append(L),b+=1,T=S+w.length,S=E.indexOf(I,T)}T{o?.disconnect(),o=null;const h=t.value;h&&(o=new MutationObserver(m),o.observe(h,Yr),p())}),Oe([n,s],()=>{Ue(p)},{flush:"post"}),yt(()=>{o?.disconnect(),o=null,i!==0&&cancelAnimationFrame(i)})}const E8=/^(application\/pdf|image\/(png|jpe?g|gif|webp|avif|bmp|x-icon|vnd\.microsoft\.icon)|video\/[\w.+-]+|audio\/[\w.+-]+)$/i,L8=/^(txt|md|markdown|log|json|ya?ml|csv|tsv|ts|mts|tsx|jsx|css|py|go|rs|java|c|h|cc|cpp|hpp|sh|zsh|sql|toml|ini|cfg|conf|vue)$/i,B8=/^(png|jpe?g|gif|webp|avif|bmp|ico)$/i,Zr="text/plain;charset=utf-8";function R8(e,t){const n=(t??"").toLowerCase();if(E8.test(n))return n;if(n.startsWith("text/"))return n==="text/html"?null:Zr;const s=e?.match(/\.([A-Za-z0-9]{1,8})$/)?.[1]?.toLowerCase();return s===void 0?null:L8.test(s)?Zr:B8.test(s)?`image/${s==="jpg"?"jpeg":s==="ico"?"x-icon":s}`:s==="pdf"?"application/pdf":null}async function id(e,t,n){const s=R8(t,n);if(s===null)return"unsupported";const o=window.open("","_blank");o!==null&&(o.opener=null);const i=await Ae().getFileBlob(e).catch(()=>null);if(i===null)return o?.close(),"failed";const u=URL.createObjectURL(new Blob([i],{type:s}));if(o!==null)o.location.href=u;else{const p=document.createElement("a");p.href=u,p.download=t??e,p.click()}return setTimeout(()=>{URL.revokeObjectURL(u)},6e4),"previewed"}function Xr(e,t){const n=e.findIndex(s=>s.id===t);if(n===-1)return null;for(let s=n-1;s>=0;s--){const o=e[s];if(o.role!=="user")continue;if(o.skillActivation){const p=o.skillActivation.name.trim();return p?{text:o.text,attachments:o.attachments,skillActivation:{name:p,args:o.skillActivation.args}}:null}const i=o.text.trim(),u=o.attachments??[];return i.length===0&&u.length===0?null:{text:o.text,attachments:o.attachments}}return null}const O8={key:0,class:"chat-loading"},D8={class:"chat-loading-text"},z8={key:1,class:"chat-empty"},F8={key:1,class:"top-sentinel-text"},N8={key:0,class:"u-turn"},q8=["data-turn-id"],W8={key:0,class:"u-atts"},H8={key:1,class:"skill-act"},U8={class:"skill-act-head"},V8={key:0,class:"skill-act-args"},j8={key:2,class:"skill-act"},K8={class:"skill-act-head"},G8={key:0,class:"skill-act-args"},Q8={key:3,class:"u-text"},Y8={key:0,class:"u-meta"},Z8=["aria-label","onClick"],X8=["aria-label","onClick"],J8=["data-turn-id"],e$=["onClick"],t$={class:"cd-view"},n$={key:1,class:"cd-label"},s$=["data-turn-id"],o$={key:1,class:"msg"},i$={class:"turn-error-text"},a$={key:0,class:"a-msg-ft"},l$=["aria-label","onClick"],r$={key:4,class:"sending-placeholder"},u$={key:5,class:"q-stack"},c$={class:"q-head"},d$={class:"q-title"},p$={class:"q-hint"},f$=["onDragover","onDrop"],m$={class:"u-bub q-bub"},v$=["title","onDragstart"],h$=["title","onClick"],g$={key:0,class:"u-text q-text"},y$={key:1,class:"q-text q-text-placeholder"},k$={key:0,class:"q-imgs"},b$={key:0,class:"q-file"},w$={key:1,class:"q-tag q-tag-next"},S$={key:2,class:"q-tag q-tag-idx"},C$=["aria-label"],_$=["aria-label","onClick"],$$={key:0,class:"open-unsupported",role:"status"},M$=2500,x$=xe({__name:"ChatPane",props:{turns:{},approvals:{default:()=>[]},turnActive:{type:Boolean,default:!1},working:{type:Boolean,default:!1},retry:{default:null},fastMoon:{type:Boolean,default:!1},sessionLoading:{type:Boolean},compaction:{default:null},hasMoreMessages:{type:Boolean,default:!1},loadingMore:{type:Boolean,default:!1},loadingMoreError:{type:Boolean,default:!1},isFollowing:{type:Boolean,default:!1},toolDiffPanel:{type:Boolean,default:!1},queued:{default:()=>[]},searchQuery:{default:""},searchActiveIndex:{default:-1}},emits:["openFile","openMedia","copyConversationCopied","openThinking","openCompaction","openAgent","openToolDiff","editMessage","loadOlderMessages","unqueue","editQueued","reorderQueue","steerQueued","resumeTurn"],setup(e,{expose:t,emit:n}){const{t:s}=We(),{confirm:o}=vo();yt(()=>{V!==null&&(clearTimeout(V),V=null),ve!==null&&(clearTimeout(ve),ve=null),P!==null&&(clearTimeout(P),P=null),pe!==null&&(clearTimeout(pe),pe=null)});const i=e,u=x(null);let p=null;function m(){!u.value||typeof IntersectionObserver>"u"||(p?.disconnect(),p=new IntersectionObserver(Y=>{Y[0]?.isIntersecting&&i.hasMoreMessages&&!i.loadingMore&&!i.loadingMoreError&&!i.sessionLoading&&!i.isFollowing&&v("loadOlderMessages")},{root:null,rootMargin:"200px 0px 0px 0px",threshold:0}),p.observe(u.value))}mt(m),yt(()=>{p?.disconnect(),p=null}),Oe(()=>[i.hasMoreMessages,i.loadingMore,i.loadingMoreError],()=>{Ue().then(m)});const h=$(()=>{if(!i.turnActive||i.turns.length===0)return null;const Y=i.turns.at(-1);return Y.role==="assistant"?Y.id:null}),w=$(()=>i.working);function I(Y){const B=Xr(i.turns,Y.id);B&&v("resumeTurn",B)}const v=n,f=x(null);P8({root:f,query:$(()=>i.searchQuery??""),activeIndex:$(()=>i.searchActiveIndex??-1)});const _=x(null),g=x(null);function b(Y){return(Y.attachments?.length??0)>0}function y(Y){v("editQueued",Y)}function E(Y,B){if(_.value=Y,!B.dataTransfer)return;B.dataTransfer.effectAllowed="move",B.dataTransfer.setData("text/plain",String(Y));const J=B.currentTarget?.closest(".q-turn");J&&B.dataTransfer.setDragImage(J,24,24)}function S(Y,B){if(_.value===null)return;B.preventDefault(),B.dataTransfer&&(B.dataTransfer.dropEffect="move");const J=B.currentTarget.getBoundingClientRect(),Ee=B.clientY{for(let Y=i.turns.length-1;Y>=0;Y--)if(i.turns[Y].role==="user")return i.turns[Y].id;return null});function L(Y){return Y.role==="user"&&Y.id===T.value&&!i.working&&!Y.skillActivation&&!Y.pluginCommand}function F(Y){const B=Y.compaction,J=B?.trigger==="auto"?s("conversation.compactedAuto"):s("conversation.compactedPlain");return typeof B?.tokensBefore=="number"&&typeof B?.tokensAfter=="number"?J+s("conversation.compactedTokens",{before:ds(B.tokensBefore),after:ds(B.tokensAfter)}):J}const H=x(null),k=x(null);let P=null;async function R(Y){await o({title:s("conversation.undo"),message:s("conversation.undoConfirm"),variant:"primary"})&&se(Y)}function se(Y){k.value===null&&(k.value=Y.id,v("editMessage",{text:Y.text,attachments:Y.attachments}),P=setTimeout(()=>{P=null,k.value=null},M$))}Oe(()=>i.turns,Y=>{k.value!==null&&(Y.some(B=>B.id===k.value)||(k.value=null,P!==null&&(clearTimeout(P),P=null)))},{flush:"post"});const ae=x(!1);let ve=null;function me(){if(i.turns.length===0)return;const Y=[];for(const J of i.turns){if(J.role==="compaction"||J.role==="cron")continue;const Ee=J.role==="user"?"User":"Assistant",Le=d_(J);Le.trim()&&Y.push(`**${Ee}**
-
-${Le}`)}const B=Y.join(`
-
----
-
-`);un(B).then(J=>{J&&(ae.value=!0,v("copyConversationCopied"),ve!==null&&clearTimeout(ve),ve=setTimeout(()=>{ve=null,ae.value=!1},2e3))}).catch(()=>{})}function Z(Y){const B=[];for(let J=Y;J>=0;J--){const Ee=i.turns[J];if(!Ee||Ee.role!=="assistant")break;B.unshift(Ee)}return B}function oe(Y){return Z(Y).map(B=>c_(B)).filter(Boolean).join(`
-
-`)}const ie=$(()=>{const Y=new Map;for(let B=i.turns.length-1;B>=0;B-=1){const J=i.turns[B];J&&J.role==="assistant"&&he(B)&&Y.set(J.id,oe(B))}return Y});function ke(){for(let Y=i.turns.length-1;Y>=0;Y-=1)if(i.turns[Y]?.role==="assistant")return oe(Y);return""}function $e(){const Y=ke();Y.trim()&&un(Y).then(B=>{B&&(ae.value=!0,v("copyConversationCopied"),ve!==null&&clearTimeout(ve),ve=setTimeout(()=>{ve=null,ae.value=!1},2e3))}).catch(()=>{})}t({copyConversation:me,copyFinalSummary:$e});function he(Y){const B=i.turns[Y];if(!B||B.role!=="assistant")return!1;const J=i.turns[Y+1];return!J||J.role!=="assistant"}let V=null;function Q(Y){const B=i.turns[Y];if(!B)return;const J=oe(Y);J.trim()&&un(J).then(Ee=>{Ee&&(H.value=B.id,V!==null&&clearTimeout(V),V=setTimeout(()=>{V=null,H.value=null},1400))}).catch(()=>{})}function Ce(Y){const B=Y.text;B.trim()&&un(B).then(J=>{J&&(H.value=Y.id,V!==null&&clearTimeout(V),V=setTimeout(()=>{V=null,H.value=null},1400))}).catch(()=>{})}function re(Y){return{kind:Y.kind==="video"?"video":"image",url:Y.url,path:Y.name,fileId:Y.fileId}}const ee=x(null);let pe=null;function De(Y){if(Y.kind==="image"||Y.kind==="video"){v("openMedia",re(Y));return}Y.fileId!==void 0&&id(Y.fileId,Y.name,Y.mediaType).then(B=>{B==="unsupported"&&(ee.value=Y.name??Y.fileId??"",pe!==null&&clearTimeout(pe),pe=setTimeout(()=>{pe=null,ee.value=null},2400))})}function X(Y,B){return Y.id!==h.value?!1:B.sourceIndex===Xi(Y).length-1}return(Y,B)=>(a(),c(ge,null,[r("div",{ref_key:"chatRootRef",ref:f,class:"chat"},[e.sessionLoading?(a(),c("div",O8,[M(qt,{size:"sm"}),r("span",D8,d(l(s)("conversation.loading")),1)])):e.turns.length===0&&(!e.approvals||e.approvals.length===0)?(a(),c("div",z8)):A("",!0),e.hasMoreMessages||e.loadingMore?(a(),c("div",{key:2,ref_key:"topSentinelRef",ref:u,class:fe(["top-sentinel",{"top-sentinel-loading":e.loadingMore}])},[e.loadingMore?(a(),c("span",F8,[M(qt,{size:"sm"}),ue(" "+d(l(s)("conversation.loadingOlder")),1)])):(a(),c("button",{key:0,type:"button",class:"top-sentinel-btn",onClick:B[0]||(B[0]=J=>v("loadOlderMessages"))},d(l(s)("conversation.loadOlder")),1))],2)):A("",!0),(a(!0),c(ge,null,Te(e.turns,(J,Ee)=>(a(),c(ge,{key:J.id},[J.role==="user"?(a(),c("div",N8,[r("div",{class:fe(["u-bub turn-anchor",{undoing:k.value===J.id}]),"data-turn-id":J.id},[J.attachments&&J.attachments.length>0?(a(),c("div",W8,[(a(!0),c(ge,null,Te(J.attachments,(Le,it)=>(a(),G(nd,{key:it,kind:Le.kind,name:Le.name,url:Le.url,"file-id":Le.fileId,"media-type":Le.mediaType,size:Le.size,onActivate:at=>De(Le)},null,8,["kind","name","url","file-id","media-type","size","onActivate"]))),128))])):A("",!0),J.skillActivation?(a(),c("div",H8,[r("div",U8,[B[10]||(B[10]=r("span",{class:"skill-act-arrow"},"▶",-1)),r("span",null,d(l(s)("conversation.activatedSkill",{name:J.skillActivation.name})),1)]),J.skillActivation.args?(a(),c("div",V8,d(J.skillActivation.args),1)):A("",!0)])):J.pluginCommand?(a(),c("div",j8,[r("div",K8,[B[11]||(B[11]=r("span",{class:"skill-act-arrow"},"▶",-1)),r("span",null,"/"+d(J.pluginCommand.pluginId)+":"+d(J.pluginCommand.commandName),1)]),J.pluginCommand.args?(a(),c("div",G8,d(J.pluginCommand.args),1)):A("",!0)])):(a(),c("div",Q8,d(J.text),1))],10,q8),J.createdAt||L(J)?(a(),c("div",Y8,[L(J)?(a(),c("div",{key:0,class:fe(["u-edit-wrap",{undoing:k.value===J.id}])},[r("button",{type:"button",class:"u-edit","aria-label":l(s)("conversation.undoTooltip"),onClick:Le=>R(J)},[M(le,{name:"undo",size:"sm"})],8,Z8)],2)):A("",!0),J.text.trim().length>0?(a(),c("button",{key:1,type:"button",class:"u-copy","aria-label":l(s)("filePreview.copy"),onClick:Re(Le=>Ce(J),["stop"])},[H.value!==J.id?(a(),G(le,{key:0,name:"copy",size:"sm"})):(a(),G(le,{key:1,name:"check",size:"sm"}))],8,X8)):A("",!0),J.createdAt?(a(),G(xi,{key:2,time:J.createdAt},null,8,["time"])):A("",!0)])):A("",!0)])):J.role==="compaction"?(a(),c("div",{key:1,class:"compact-divider turn-anchor","data-turn-id":J.id,role:"separator"},[B[12]||(B[12]=r("span",{class:"cd-line","aria-hidden":"true"},null,-1)),J.text?(a(),c("button",{key:0,type:"button",class:"cd-label cd-btn",onClick:Le=>v("openCompaction",{turnId:J.id})},[r("span",null,d(F(J)),1),r("span",t$,d(l(s)("conversation.viewSummary")),1)],8,e$)):(a(),c("span",n$,d(F(J)),1)),B[13]||(B[13]=r("span",{class:"cd-line","aria-hidden":"true"},null,-1))],8,J8)):J.role==="cron"?(a(),G(c8,{key:2,text:J.text,cron:J.cron,"turn-id":J.id,"created-at":J.createdAt},null,8,["text","cron","turn-id","created-at"])):(a(),c("div",{key:3,class:"a-msg turn-anchor","data-turn-id":J.id},[(a(!0),c(ge,null,Te(l(r_)(J),(Le,it)=>(a(),c(ge,{key:l(p_)(Le,it)},[Le.kind==="thinking"?(a(),G(H_,{key:0,text:Le.thinking,mobile:"",streaming:X(J,Le),onOpen:at=>v("openThinking",{turnId:J.id,blockIndex:Le.sourceIndex})},null,8,["text","streaming","onOpen"])):Le.kind==="text"&&Le.text?(a(),c("div",o$,[M(ci,{text:Le.text,streaming:X(J,Le),"open-file":at=>v("openFile",at)},null,8,["text","streaming","open-file"])])):Le.kind==="error"?(a(),G(od,{key:2,variant:"danger",class:"turn-error"},{default:W(()=>[r("span",i$,d(Le.text),1),l(Xr)(e.turns,J.id)!==null?(a(),G(Ne,{key:0,class:"turn-error-resume",size:"sm",variant:"secondary",onClick:Re(at=>I(J),["stop"])},{default:W(()=>[ue(d(l(s)("conversation.turnFailedResume")),1)]),_:1},8,["onClick"])):A("",!0)]),_:2},1024)):Le.kind==="tool-stack"?(a(),G(k_,{key:3,tools:Le.tools,mobile:"","tool-diff-panel":e.toolDiffPanel,onOpenMedia:B[1]||(B[1]=at=>v("openMedia",at)),onOpenFile:B[2]||(B[2]=at=>v("openFile",at)),onOpenToolDiff:B[3]||(B[3]=at=>v("openToolDiff",at)),onOpenAgent:B[4]||(B[4]=at=>v("openAgent",at))},null,8,["tools","tool-diff-panel"])):Le.kind==="tool"?(a(),G(Yc,{key:4,tool:Le.tool,mobile:"","tool-diff-panel":e.toolDiffPanel,onOpenMedia:B[5]||(B[5]=at=>v("openMedia",at)),onOpenFile:B[6]||(B[6]=at=>v("openFile",at)),onOpenToolDiff:B[7]||(B[7]=at=>v("openToolDiff",at)),onOpenAgent:B[8]||(B[8]=at=>v("openAgent",at))},null,8,["tool","tool-diff-panel"])):A("",!0)],64))),128)),J.id!==h.value&&he(Ee)&&((ie.value.get(J.id)??"").trim().length>0||J.durationMs!==void 0)?(a(),c("div",a$,[J.createdAt&&J.durationMs!==void 0?(a(),G(nt,{key:0,text:`${J.durationMs} ms`},{default:W(()=>[M(xi,{time:J.createdAt},null,8,["time"])]),_:2},1032,["text"])):J.createdAt?(a(),G(xi,{key:1,time:J.createdAt},null,8,["time"])):A("",!0),(ie.value.get(J.id)??"").trim().length>0?(a(),c("button",{key:2,class:"a-cpbtn","aria-label":l(s)("filePreview.copy"),onClick:Le=>Q(Ee)},[H.value!==J.id?(a(),G(le,{key:0,name:"copy",size:"sm"})):(a(),G(le,{key:1,name:"check",size:"sm"}))],8,l$)):A("",!0)])):A("",!0)],8,s$))],64))),128)),e.compaction?(a(),G(G_,{key:3,label:l(s)("conversation.compacting")},null,8,["label"])):A("",!0),w.value?(a(),c("div",r$,[M(sd,{fast:e.fastMoon,label:e.retry?l(s)("conversation.workingRetry",{n:e.retry.attempt,max:e.retry.max}):l(s)("conversation.waitingForResponse")},null,8,["fast","label"])])):A("",!0),e.queued.length>0?(a(),c("div",u$,[r("div",c$,[r("span",d$,[M(le,{name:"mail",size:"sm"}),ue(" "+d(l(s)("composer.queueLabel"))+" · ",1),r("b",null,d(e.queued.length),1)]),r("span",p$,d(l(s)("composer.queueAutoDrain")),1)]),(a(!0),c(ge,null,Te(e.queued,(J,Ee)=>(a(),c("div",{key:Ee,class:fe(["u-turn q-turn",{"q-dragging":_.value===Ee,"drop-before":g.value?.index===Ee&&g.value.position==="before","drop-after":g.value?.index===Ee&&g.value.position==="after"}]),onDragover:Le=>S(Ee,Le),onDrop:Le=>O(Ee,Le)},[r("div",m$,[r("span",{class:"q-grip",title:l(s)("composer.queueDragTitle"),draggable:"true",onDragstart:Le=>E(Ee,Le),onDragend:D},[M(le,{name:"grip",size:"sm"})],40,v$),r("button",{type:"button",class:"q-body",title:l(s)("composer.editQueued"),onClick:Le=>y(Ee)},[J.text?(a(),c("span",g$,d(J.text),1)):(a(),c("span",y$,[M(le,{name:"file",size:"sm"}),ue(" "+d(l(s)("composer.queuedAttachments",{n:J.attachments?.length??0})),1)]))],8,h$),b(J)?(a(),c("div",k$,[(a(!0),c(ge,null,Te(J.attachments,(Le,it)=>(a(),c(ge,{key:it},[Le.kind==="file"?(a(),c("span",b$,[M(le,{name:"file",size:"sm"}),ue(" "+d(Le.name??Le.fileId),1)])):(a(),G(td,{key:1,url:Le.url,kind:Le.kind,"file-id":Le.fileId,"media-class":"q-img",controls:!1,muted:""},null,8,["url","kind","file-id"]))],64))),128))])):A("",!0),Ee===0?(a(),c("span",w$,d(l(s)("composer.queueNext")),1)):(a(),c("span",S$,"#"+d(Ee+1),1)),r("button",{type:"button",class:"q-steer","aria-label":l(s)("composer.queueSteer"),onClick:B[9]||(B[9]=Re(Le=>v("steerQueued"),["stop"]))},[M(le,{name:"send",size:"sm"})],8,C$),r("button",{type:"button",class:"q-rm","aria-label":l(s)("composer.remove"),onClick:Re(Le=>v("unqueue",Ee),["stop"])},[M(le,{name:"close",size:"sm"})],8,_$)])],42,f$))),128))])):A("",!0)],512),ee.value!==null?(a(),c("div",$$,d(l(s)("composer.attachmentOpenUnsupported",{name:ee.value})),1)):A("",!0)],64))}}),ad=Pe(x$,[["__scopeId","data-v-38800964"]]),I$={class:"ch-id"},A$={key:0,class:"ch-ws"},T$={key:1,class:"ch-sep"},P$=["onKeydown"],E$={class:"ch-ses"},L$={key:0,class:"ch-pill ch-sync-pill"},B$={key:0,class:"ch-ahead"},R$={key:1,class:"ch-behind"},O$={key:1,class:"ch-pill ch-diff-pill"},D$={key:0,class:"ch-add"},z$={key:1,class:"ch-del"},F$=xe({__name:"ChatHeader",props:{sessionId:{},workspaceName:{},workspaceRoot:{},sessionTitle:{},branch:{},ahead:{},behind:{},changesCount:{},gitDiffStats:{},isGitRepo:{type:Boolean},pr:{},copied:{type:Boolean},searchActive:{type:Boolean}},emits:["copyAll","copyFinalSummary","openChanges","openPr","renameSession","forkSession","archiveSession","exportSession","toggleSearch"],setup(e,{emit:t}){const{t:n}=We(),s=e,o=t,i=$(()=>s.ahead??0),u=$(()=>s.behind??0),p=$(()=>s.gitDiffStats?.totalAdditions??0),m=$(()=>s.gitDiffStats?.totalDeletions??0),h=$(()=>p.value>0||m.value>0),w={open:"header.prStatusOpen",closed:"header.prStatusClosed",merged:"header.prStatusMerged",draft:"header.prStatusDraft"};function I(ie){return ie.trim().toLowerCase().replaceAll("_","-")}function v(ie){const ke=I(ie);return w[ke]?`pr-${ke}`:"pr-unknown"}function f(ie){return n(w[I(ie)]??"header.prStatusUnknown")}const _=x(!1),g=x(null),b=x(null),y=x({});function E(ie){const ke=ie.target;b.value?.el?.contains(ke)||g.value?.el?.contains(ke)||D()}function S(){D()}async function O(ie){if(ie.stopPropagation(),_.value){D();return}_.value=!0,document.addEventListener("mousedown",E),window.addEventListener("resize",S),await Ue();const ke=g.value?.el,$e=b.value?.el;if(!ke||!$e)return;const he=ke.getBoundingClientRect(),V=4,Q=8,Ce=$e.offsetWidth,re=$e.offsetHeight;let ee=he.bottom+V;ee+re>window.innerHeight-Q&&(ee=Math.max(Q,he.top-re-V));let pe=he.left;pe+Ce>window.innerWidth-Q&&(pe=Math.max(Q,he.right-Ce)),y.value={top:`${Math.round(ee)}px`,left:`${Math.round(pe)}px`}}function D(){_.value=!1,document.removeEventListener("mousedown",E),window.removeEventListener("resize",S)}yt(()=>{document.removeEventListener("mousedown",E),window.removeEventListener("resize",S)});function T(){o("copyAll"),D()}function L(){o("copyFinalSummary"),D()}const F=x(!1);function H(){s.sessionId&&un(s.sessionId).then(ie=>{ie&&(F.value=!0,setTimeout(()=>{F.value=!1},1200))})}const k=x(!1),P=x(""),R=x(null);async function se(){if(D(),!!s.sessionId){k.value=!0,P.value=s.sessionTitle??"",await Ue();try{R.value?.focus(),R.value?.select()}catch{}}}function ae(){const ie=P.value.trim();ie&&s.sessionId&&ie!==(s.sessionTitle??"").trim()&&o("renameSession",s.sessionId,ie),k.value=!1}function ve(){k.value=!1}function me(){s.sessionId&&(D(),o("forkSession",s.sessionId))}function Z(){s.sessionId&&(D(),o("exportSession",s.sessionId))}function oe(){s.sessionId&&(D(),o("archiveSession",s.sessionId))}return(ie,ke)=>(a(),c("header",{class:fe(["chat-header",{"macos-desktop":l(Po)}])},[r("div",I$,[e.workspaceName?(a(),c("span",A$,d(e.workspaceName),1)):A("",!0),e.workspaceName&&e.sessionTitle?(a(),c("span",T$,"/")):A("",!0),k.value?ht((a(),c("input",{key:2,ref_key:"renameInputRef",ref:R,"onUpdate:modelValue":ke[0]||(ke[0]=$e=>P.value=$e),class:"ch-rename",type:"text",onKeydown:[An(Re(ae,["stop"]),["enter"]),An(Re(ve,["stop"]),["esc"])],onBlur:ae,onClick:ke[1]||(ke[1]=Re(()=>{},["stop"]))},null,40,P$)),[[On,P.value]]):e.sessionTitle?(a(),G(nt,{key:3,text:e.sessionTitle},{default:W(()=>[r("span",E$,d(e.sessionTitle),1)]),_:1},8,["text"])):A("",!0)]),M(et,{class:fe(["ch-act-search",{active:e.searchActive}]),label:l(n)("header.search"),"aria-expanded":e.searchActive,onClick:ke[2]||(ke[2]=Re($e=>o("toggleSearch"),["stop"]))},{default:W(()=>[M(le,{name:"search",size:"md"})]),_:1},8,["class","label","aria-expanded"]),M(et,{ref_key:"kebabRef",ref:g,class:fe(["ch-act-more",{open:_.value}]),label:l(n)("header.options"),"aria-expanded":_.value,"aria-haspopup":"menu",onClick:ke[3]||(ke[3]=Re($e=>O($e),["stop"]))},{default:W(()=>[M(le,{name:"dots-horizontal",size:"md"})]),_:1},8,["class","label","aria-expanded"]),_.value?(a(),G(qs,{key:0,ref_key:"menuRef",ref:b,class:"ch-menu",style:rt(y.value),onClick:ke[4]||(ke[4]=Re(()=>{},["stop"]))},{default:W(()=>[M(ct,{onClick:T},{default:W(()=>[M(le,{name:e.copied?"check":"copy",size:"sm"},null,8,["name"]),ue(" "+d(e.copied?l(n)("header.copied"):l(n)("header.copyAll")),1)]),_:1}),M(ct,{onClick:L},{default:W(()=>[M(le,{name:"file-text",size:"sm"}),ue(" "+d(l(n)("header.copyFinalSummary")),1)]),_:1}),e.sessionId?(a(),c(ge,{key:0},[M(ct,{separator:""}),M(ct,{onClick:H},{default:W(()=>[M(le,{name:F.value?"check":"copy",size:"sm"},null,8,["name"]),ue(" "+d(F.value?l(n)("header.copied"):l(n)("header.copySessionId")),1)]),_:1}),M(ct,{onClick:se},{default:W(()=>[M(le,{name:"pencil",size:"sm"}),ue(" "+d(l(n)("header.renameSession")),1)]),_:1}),M(ct,{onClick:me},{default:W(()=>[M(le,{name:"git-fork",size:"sm"}),ue(" "+d(l(n)("header.forkSession")),1)]),_:1}),M(ct,{onClick:Z},{default:W(()=>[M(le,{name:"download",size:"sm"}),ue(" "+d(l(n)("header.exportSession")),1)]),_:1}),M(ct,{danger:"",onClick:oe},{default:W(()=>[M(le,{name:"archive",size:"sm"}),ue(" "+d(l(n)("header.archiveSession")),1)]),_:1})],64)):A("",!0)]),_:1},8,["style"])):A("",!0),ke[7]||(ke[7]=r("div",{class:"ch-spacer"},null,-1)),e.isGitRepo?(a(),c("button",{key:1,type:"button",class:"ch-git",onClick:ke[5]||(ke[5]=$e=>o("openChanges"))},[r("span",{class:fe(["ch-branch",{"ch-detached":!e.branch}])},d(e.branch||l(n)("header.detached")),3),i.value>0||u.value>0?(a(),c("span",L$,[i.value>0?(a(),c("span",B$,"↑"+d(i.value),1)):A("",!0),u.value>0?(a(),c("span",R$,"↓"+d(u.value),1)):A("",!0)])):A("",!0),h.value?(a(),c("span",O$,[p.value>0?(a(),c("span",D$,"+"+d(p.value),1)):A("",!0),m.value>0?(a(),c("span",z$,"-"+d(m.value),1)):A("",!0)])):A("",!0)])):A("",!0),e.pr?(a(),c("button",{key:2,type:"button",class:fe(["ch-pill ch-pr",v(e.pr.state)]),onClick:ke[6]||(ke[6]=$e=>e.pr&&o("openPr",e.pr.url))},[M(le,{name:"git-pull-request",size:"sm"}),r("span",null,"PR #"+d(e.pr.number)+" · "+d(f(e.pr.state)),1)],2)):A("",!0)],2))}}),N$=Pe(F$,[["__scopeId","data-v-a3848f6a"]]);function ld(e,t,n,s=4,o=24){const i=t-e;if(e<=0||i<=1)return null;const u=e-s*2,p=u*e/t,m=Math.min(u,Math.max(o,p));return{top:u>m?s+n/i*(u-m):s,height:m}}function q$(e,t,n=4,s=24){const o=ld(e,t,0,n,s);if(!o)return 0;const i=e-n*2;return i>o.height?(t-e)/(i-o.height):1}function rd(){const e=x(null),t=x(!1),n=x(!1),s=x(!1),o=x({});let i=null,u=!1,p=0,m=0,h=1;function w(){const g=e.value;if(!g)return;const{clientHeight:b,scrollHeight:y,scrollTop:E}=g;t.value=y>b+1,n.value=E>1,s.value=E{i?.disconnect(),i=null,g&&typeof ResizeObserver<"u"&&(i=new ResizeObserver(w),i.observe(g),Ue(w))}),yt(()=>{i?.disconnect(),i=null}),{listRef:e,scrollable:t,fadeTop:n,fadeBottom:s,thumbStyle:o,onScroll:I,onThumbPointerDown:v,onThumbPointerMove:f,onThumbPointerUp:_}}const W$=["data-query"],H$={class:"slash-scroller"},U$=["aria-selected","onMouseenter","onMousedown"],V$={class:"slash-name"},j$={key:0,class:"slash-match"},K$={class:"slash-desc"},G$={key:0,class:"slash-desc-match"},Q$={key:0,class:"slash-empty",role:"status"},Y$={key:1,class:"menu-scroll-fade menu-scroll-fade-top"},Z$={key:2,class:"menu-scroll-fade menu-scroll-fade-bottom"},X$=xe({__name:"SlashMenu",props:{matches:{},activeIndex:{},query:{}},emits:["select","hover"],setup(e,{emit:t}){const{t:n}=We(),s=e,o=t,i=x([]);Oe(()=>s.activeIndex,y=>{i.value[y]?.scrollIntoView({block:"nearest"})});const{listRef:u,scrollable:p,fadeTop:m,fadeBottom:h,thumbStyle:w,onScroll:I,onThumbPointerDown:v,onThumbPointerMove:f,onThumbPointerUp:_}=rd();function g(y){return y.isSkill?y.desc:n(y.desc)}function b(y,E){if(E.length===0||y.length===0)return[{text:y,matched:!1}];const S=[];let O=0;for(const D of E){if(D.end<=O||D.start>y.length)continue;const T=Math.max(D.start,O);T>O&&S.push({text:y.slice(O,T),matched:!1}),S.push({text:y.slice(T,D.end),matched:!0}),O=D.end}return O(a(),c("div",{class:"slash-menu","data-query":e.query??""},[r("div",H$,[r("div",{ref_key:"listRef",ref:u,class:"slash-list",role:"listbox",onScroll:E[0]||(E[0]=(...S)=>l(I)&&l(I)(...S))},[(a(!0),c(ge,null,Te(s.matches,(S,O)=>(a(),c("div",{ref_for:!0,ref:D=>{D&&(i.value[O]=D)},key:`${S.item.name}-${S.index}`,class:fe(["slash-item",{active:O===s.activeIndex}]),role:"option","aria-selected":O===s.activeIndex,onMouseenter:D=>o("hover",O),onMousedown:Re(D=>o("select",S.item),["prevent"])},[r("span",V$,[(a(!0),c(ge,null,Te(b(S.item.name,S.nameRanges),(D,T)=>(a(),c(ge,{key:T},[D.matched?(a(),c("span",j$,d(D.text),1)):(a(),c(ge,{key:1},[ue(d(D.text),1)],64))],64))),128))]),r("span",K$,[(a(!0),c(ge,null,Te(b(g(S.item),S.descRanges),(D,T)=>(a(),c(ge,{key:T},[D.matched?(a(),c("span",G$,d(D.text),1)):(a(),c(ge,{key:1},[ue(d(D.text),1)],64))],64))),128))])],42,U$))),128)),s.matches.length===0?(a(),c("div",Q$,d(l(n)("composer.slashEmpty")),1)):A("",!0)],544),l(p)?(a(),c("div",{key:0,class:"menu-scroll-thumb",style:rt(l(w)),onPointerdown:E[1]||(E[1]=(...S)=>l(v)&&l(v)(...S)),onPointermove:E[2]||(E[2]=(...S)=>l(f)&&l(f)(...S)),onPointerup:E[3]||(E[3]=(...S)=>l(_)&&l(_)(...S)),onPointercancel:E[4]||(E[4]=(...S)=>l(_)&&l(_)(...S))},null,36)):A("",!0),l(p)&&l(m)?(a(),c("div",Y$)):A("",!0),l(p)&&l(h)?(a(),c("div",Z$)):A("",!0)])],8,W$))}}),J$=Pe(X$,[["__scopeId","data-v-3f12a9ed"]]),e9={class:"mention-menu"},t9={class:"mention-scroller"},n9={key:0,class:"mention-state dim"},s9={key:1,class:"mention-state dim"},o9=["aria-selected","onMouseenter","onMousedown"],i9=["innerHTML"],a9={class:"mention-name"},l9={class:"mention-path"},r9={key:1,class:"menu-scroll-fade menu-scroll-fade-top"},u9={key:2,class:"menu-scroll-fade menu-scroll-fade-bottom"},c9=xe({__name:"MentionMenu",props:{items:{},activeIndex:{},loading:{type:Boolean}},emits:["select","hover"],setup(e,{emit:t}){const n=e,s=t,{t:o}=We(),{listRef:i,scrollable:u,fadeTop:p,fadeBottom:m,thumbStyle:h,onScroll:w,onThumbPointerDown:I,onThumbPointerMove:v,onThumbPointerUp:f}=rd(),_=Co("folder","sm"),g=Co("code","sm"),b=Co("file-text","sm"),y=Co("image","sm"),E=Co("file","sm"),S=new Set(["ts","tsx","js","jsx","mjs","cjs","vue","json","py","go","rs","java","kt","c","h","cpp","cc","hpp","cs","rb","php","swift","sh","bash","zsh","css","scss","less","html","htm","xml","sql","yaml","yml","toml","lua","dart","scala","clj","ex","exs"]),O=new Set(["md","markdown","mdx","txt","rst","adoc","pdf","doc","docx"]),D=new Set(["png","jpg","jpeg","gif","svg","webp","bmp","ico","avif"]);function T(L){const F=L.path;if(F.endsWith("/"))return _;const H=L.name||F.split("/").pop()||F,k=H.lastIndexOf("."),P=k>0?H.slice(k+1).toLowerCase():"";return P?S.has(P)?g:O.has(P)?b:D.has(P)?y:E:E}return(L,F)=>(a(),c("div",e9,[r("div",t9,[r("div",{ref_key:"listRef",ref:i,class:"mention-list",role:"listbox",onScroll:F[0]||(F[0]=(...H)=>l(w)&&l(w)(...H))},[n.loading?(a(),c("div",n9,d(l(o)("mention.searching")),1)):n.items.length===0?(a(),c("div",s9,d(l(o)("mention.noMatch")),1)):(a(!0),c(ge,{key:2},Te(n.items,(H,k)=>(a(),c("div",{key:H.path,class:fe(["mention-item",{active:k===n.activeIndex}]),role:"option","aria-selected":k===n.activeIndex,onMouseenter:P=>s("hover",k),onMousedown:Re(P=>s("select",H),["prevent"])},[r("span",{class:"mention-icon",innerHTML:T(H),"aria-hidden":"true"},null,8,i9),r("span",a9,d(H.name),1),r("span",l9,d(H.path),1)],42,o9))),128))],544),l(u)?(a(),c("div",{key:0,class:"menu-scroll-thumb",style:rt(l(h)),onPointerdown:F[1]||(F[1]=(...H)=>l(I)&&l(I)(...H)),onPointermove:F[2]||(F[2]=(...H)=>l(v)&&l(v)(...H)),onPointerup:F[3]||(F[3]=(...H)=>l(f)&&l(f)(...H)),onPointercancel:F[4]||(F[4]=(...H)=>l(f)&&l(f)(...H))},null,36)):A("",!0),l(u)&&l(p)?(a(),c("div",r9)):A("",!0),l(u)&&l(m)?(a(),c("div",u9)):A("",!0)])]))}}),d9=Pe(c9,[["__scopeId","data-v-b8578b17"]]),wn={new:"cjxhh",clear:"qkbxjhh",login:"zllqzdl",plan:"qhjhmkg",swarm:"qhmsrwzjzxzx",goal:"cjkzmbmb",btw:"cbltwtxdcbhhtw",auto:"wqzzbztw",yolo:"zdpzgjczrkntw",thinking:"szskqd",compact:"yshhls",undo:"cxsytxx",fork:"bdqhhcygxhh",export:"jdqhhhpzrzxzwysb",status:"ckhhzt"},ud=[{name:"/new",desc:"commands.new.desc",pinyinFirst:wn.new},{name:"/clear",desc:"commands.clear.desc",pinyinFirst:wn.clear},{name:"/login",desc:"commands.login.desc",pinyinFirst:wn.login},{name:"/plan",desc:"commands.plan.desc",pinyinFirst:wn.plan},{name:"/swarm",desc:"commands.swarm.desc",pinyinFirst:wn.swarm,acceptsInput:!0},{name:"/goal",desc:"commands.goal.desc",pinyinFirst:wn.goal,acceptsInput:!0},{name:"/btw",desc:"commands.btw.desc",pinyinFirst:wn.btw,acceptsInput:!0},{name:"/auto",desc:"commands.auto.desc",pinyinFirst:wn.auto},{name:"/yolo",desc:"commands.yolo.desc",pinyinFirst:wn.yolo},{name:"/thinking",desc:"commands.thinking.desc",pinyinFirst:wn.thinking},{name:"/compact",desc:"commands.compact.desc",pinyinFirst:wn.compact,acceptsInput:!0},{name:"/undo",desc:"commands.undo.desc",pinyinFirst:wn.undo},{name:"/fork",desc:"commands.fork.desc",pinyinFirst:wn.fork},{name:"/export",desc:"commands.export.desc",pinyinFirst:wn.export},{name:"/status",desc:"commands.status.desc",pinyinFirst:wn.status}];function p9(e){if(!e.startsWith("/"))return null;const t=e.indexOf(" ");return t===-1?{cmd:e,arg:""}:{cmd:e.slice(0,t),arg:e.slice(t+1)}}const qi="skill:";function f9(e){return e.startsWith(qi)?e.slice(qi.length):e}function cd(e=[]){const t=e.map(n=>({name:n.source==="builtin"?`/${n.name}`:`/${qi}${n.name}`,desc:n.description,isSkill:!0,acceptsInput:!0}));return[...ud,...t]}const m9=3,v9=1,h9=1;function dd(e){return e.toLowerCase().trim().replace(/^\//,"")}function Sa(e,t){return e===t?4:e.startsWith(t)?3:e.includes(t)?2:g9(e,t)?1:0}function g9(e,t){let n=0;for(const s of t){if(n=e.indexOf(s,n),n===-1)return!1;n++}return!0}function Jr(e,t){const n=dd(t);if(n===""||e.length===0)return[];const s=e.toLowerCase();if(!s.includes(n))return[{start:0,end:e.length}];const o=[];let i=0;for(;;){const u=s.indexOf(n,i);if(u===-1)break;o.push({start:u,end:u+n.length}),i=u+n.length}return o}function y9(e,t=ud,n=s=>s.desc){const s=dd(e);return s===""?t.map((o,i)=>({item:o,index:i,nameRanges:[],descRanges:[]})):t.map((o,i)=>{const u=o.name.replace(/^\//,"").toLowerCase(),p=n(o),m=Sa(u,s)*m9+Sa(p.toLowerCase(),s)*v9+(o.pinyinFirst?Sa(o.pinyinFirst,s)*h9:0);return m===0?null:{match:{item:o,index:i,nameRanges:Jr(o.name,s),descRanges:Jr(p,s)},score:m}}).filter(o=>o!==null).sort((o,i)=>i.score-o.score||o.match.index-i.match.index).map(o=>o.match)}const Wi=100;function k9(e){const t=fo(qe.inputHistory);if(Array.isArray(t)){const n=t.filter(i=>typeof i=="string"&&i.length>0);if(!e||n.length===0)return{};const s=n.length>Wi?n.slice(-Wi):n,o={[e]:s};return Hs(qe.inputHistory,o),o}return t&&typeof t=="object"?t:{}}function b9(e){const{text:t,textareaRef:n,autosize:s,sessionId:o}=e,i=x(k9(o())),u=$(()=>i.value[o()??""]??[]);let p=-1,m="";function h(y){const E=o();if(p=-1,!E)return;const S=y.trim();if(!S)return;const O=i.value[E]??[];if(O.at(-1)===S)return;const D=[...O,S],T=D.length>Wi?D.slice(-Wi):D;i.value={...i.value,[E]:T},Hs(qe.inputHistory,i.value)}function w(){const y=n.value;return y?(y.selectionStart??0)===0:!1}function I(y){t.value=y,Ue(()=>{const E=n.value;if(!E)return;s();const S=y.length;E.setSelectionRange(S,S)})}function v(){const y=u.value;if(y.length!==0){if(p===-1)m=t.value,p=y.length-1;else if(p>0)p-=1;else return;I(y[p])}}function f(){if(p===-1)return;const y=u.value;p0}return Oe(o,()=>{p=-1}),{push:h,caretAtTextStart:w,recallOlder:v,recallNewer:f,resetBrowsing:_,isBrowsing:g,hasHistory:b}}function w9(e){const{text:t,textareaRef:n,autosize:s,skills:o,emitCommand:i,historyPush:u,clearDraft:p}=e,m=e.resolveDesc??(b=>b.desc),h=x(!1),w=x([]),I=$(()=>w.value.map(b=>b.item)),v=x(0),f=x("");function _(){const b=t.value;b.startsWith("/")&&!b.includes(" ")?(f.value=b,w.value=y9(b,cd(o()),m),v.value=0,h.value=!0):h.value=!1}function g(b){if(h.value=!1,b.acceptsInput){t.value=`${b.name} `,Ue(()=>{const y=n.value;if(!y)return;const E=t.value.length;y.setSelectionRange(E,E),y.focus(),s()});return}t.value="",p?.(),u(b.name),i(b.name)}return{open:h,matches:w,items:I,active:v,query:f,update:_,select:g}}function S9(e){const{text:t,textareaRef:n,autosize:s,searchFiles:o}=e,i=x(!1),u=x([]),p=x(0),m=x(!1);let h=null;function w(){const f=t.value,_=n.value?.selectionStart??f.length;let g=_-1;for(;g>=0&&!/\s/.test(f[g]);)g--;g++;const b=f.slice(g,_);return b.startsWith("@")?{token:b.slice(1),start:g,end:_}:null}function I(){const f=w(),_=o();if(!f||!_){i.value=!1;return}const g=f.token;h!==null&&clearTimeout(h),h=setTimeout(async()=>{m.value=!0,i.value=!0,p.value=0;try{u.value=await _(g)}catch{u.value=[]}finally{m.value=!1}},200)}function v(f){const _=w();if(!_)return;const g=t.value;t.value=g.slice(0,_.start)+f.path+g.slice(_.end),i.value=!1,Ue(()=>{const b=n.value;if(!b)return;const y=_.start+f.path.length;b.setSelectionRange(y,y),b.focus(),s()})}return{open:i,items:u,active:p,loading:m,update:I,select:v}}function C9(e){const{sessionId:t}=e;function n(h){return $t(Dl(h))??""}function s(h,w){const I=Dl(h);w?Ot(I,w):ao(I)}const o=x(n(t())),i=x(null);function u(){const h=i.value;h&&(h.style.height="auto",h.style.height=`${h.scrollHeight}px`)}Oe(o,h=>{Ue(u),s(t(),h)}),Oe(t,(h,w)=>{h!==w&&(s(w,o.value),o.value=n(h),Ue(u))});function p(h){o.value=h,Ue(()=>{const w=i.value;if(!w)return;w.focus();const I=h.length;w.setSelectionRange(I,I),u()})}function m(){s(t(),"")}return{text:o,textareaRef:i,autosize:u,loadForEdit:p,clearDraft:m}}function _9(e){const{uploadImage:t,sessionId:n}=e,s=x({}),o=$(()=>s.value[n()??""]??[]),i=x(null),u=x(null),p=x(!1);let m=0;function h(){return`att_${++m}`}function w(Z,oe){s.value={...s.value,[Z]:oe}}function I(Z){if(Z.previewUrl!==void 0)try{URL.revokeObjectURL(Z.previewUrl)}catch{}}function v(Z){return Z.startsWith("image/")?"image":Z.startsWith("video/")?"video":"file"}async function f(Z){const oe=t();if(!oe)return;const ie=n()??"";if(Z.length!==0)for(const ke of Z){const $e=v(ke.type),he=h(),V=$e==="file"?void 0:URL.createObjectURL(ke),Q={localId:he,name:ke.name,kind:$e,previewUrl:V,mediaType:ke.type||"application/octet-stream",size:ke.size,uploading:!0};w(ie,[...s.value[ie]??[],Q]),oe(ke,ke.name).then(Ce=>{const re=s.value[ie]??[];w(ie,re.map(ee=>ee.localId===he?{...ee,uploading:!1,fileId:Ce?.fileId,mediaType:Ce?.mediaType??ee.mediaType,error:Ce===null}:ee))}).catch(()=>{const Ce=s.value[ie]??[];w(ie,Ce.map(re=>re.localId===he?{...re,uploading:!1,error:!0}:re))})}}function _(Z){const oe=n()??"",ie=s.value[oe]??[],ke=ie.find($e=>$e.localId===Z);i.value?.localId===Z&&(i.value=null),ke&&I(ke),w(oe,ie.filter($e=>$e.localId!==Z))}function g(Z){i.value=Z}function b(){i.value=null}function y(){u.value?.click()}function E(Z){const oe=Z.target,ie=Array.from(oe.files??[]);f(ie),oe.value=""}function S(Z){if(!t())return;const oe=Z.clipboardData;if(!oe)return;const ie=[],ke=new Set,$e=(he,V)=>{const Q=`${he.size}:${he.type}:${V}`;if(ke.has(Q))return;ke.add(Q);const Ce=he.type.split("/")[1]??"png",re=V.includes(".")?V:`paste-${Date.now()}.${Ce}`;ie.push(he instanceof File?he:new File([he],re,{type:he.type}))};for(const he of Array.from(oe.items))if(he.kind==="file"){const V=he.getAsFile();V&&$e(V,V.name||`paste-${Date.now()}.${he.type.split("/")[1]??"png"}`)}for(const he of Array.from(oe.files))$e(he,he.name);ie.length!==0&&(Z.preventDefault(),f(ie))}let O=0;function D(Z){!t()||!Array.from(Z.dataTransfer?.items??[]).some(ie=>ie.kind==="file")||(Z.preventDefault(),Z.stopPropagation(),p.value=!0)}function T(){p.value=!1}function L(Z){if(O=0,p.value=!1,!t())return;Z.preventDefault(),Z.stopPropagation();const oe=Array.from(Z.dataTransfer?.files??[]);f(oe)}function F(Z){return Array.from(Z.dataTransfer?.items??[]).some(oe=>oe.kind==="file")}function H(Z){!t()||!F(Z)||(Z.preventDefault(),O+=1,p.value=!0)}function k(Z){!t()||!F(Z)||Z.preventDefault()}function P(Z){!t()||!F(Z)||(O=Math.max(0,O-1),O===0&&(p.value=!1))}function R(Z){if(O=0,p.value=!1,!t())return;Z.preventDefault();const oe=Array.from(Z.dataTransfer?.files??[]);f(oe)}function se(){const Z=n()??"";for(const oe of s.value[Z]??[])I(oe);w(Z,[])}function ae(Z,oe,ie){const ke=s.value[Z]??[];ke.some($e=>$e.localId===oe)&&w(Z,ke.map($e=>$e.localId===oe?{...$e,...ie}:$e))}function ve(Z){return fetch(Z).then(oe=>{if(!oe.ok)throw new Error(`fetch failed: ${oe.status}`);return oe.blob()})}function me(Z){const oe=n()??"";for(const ie of s.value[oe]??[])I(ie);w(oe,[]);for(const ie of Z){const ke=h(),$e=/^data:/i.test(ie.url),he=/^blob:/i.test(ie.url),V=ie.name??ie.kind;if(ie.fileId){const Q={localId:ke,name:V,kind:ie.kind,previewUrl:ie.kind==="file"?void 0:ie.url,uploading:!1,fileId:ie.fileId};w(oe,[...s.value[oe]??[],Q]),ie.kind!=="file"&&!$e&&!he&&Ae().getFileBlob(ie.fileId).then(Ce=>{const re=URL.createObjectURL(Ce);if(!(s.value[oe]??[]).some(pe=>pe.localId===ke)){URL.revokeObjectURL(re);return}ae(oe,ke,{previewUrl:re})}).catch(()=>{})}else{if(!ie.url)continue;const Q=t();if(!Q)continue;const Ce={localId:ke,name:V,kind:ie.kind,previewUrl:ie.url,uploading:!0};w(oe,[...s.value[oe]??[],Ce]),ve(ie.url).then(re=>{const ee=V.includes(".")?V:`${V}.${re.type.split("/")[1]??"bin"}`;return Q(re,ee)}).then(re=>{if(re===null){const ee=s.value[oe]??[];w(oe,ee.filter(pe=>pe.localId!==ke));return}ae(oe,ke,{uploading:!1,fileId:re.fileId})}).catch(()=>{const re=s.value[oe]??[];w(oe,re.filter(ee=>ee.localId!==ke))})}}}return Oe(n,()=>{i.value=null}),mt(()=>{document.addEventListener("paste",S),document.addEventListener("dragenter",H),document.addEventListener("dragover",k),document.addEventListener("dragleave",P),document.addEventListener("drop",R)}),yt(()=>{document.removeEventListener("paste",S),document.removeEventListener("dragenter",H),document.removeEventListener("dragover",k),document.removeEventListener("dragleave",P),document.removeEventListener("drop",R);for(const Z of Object.values(s.value))for(const oe of Z)I(oe);i.value=null}),{attachments:o,previewAttachment:i,fileInputRef:u,isDragOver:p,removeAttachment:_,openAttachmentPreview:g,closeAttachmentPreview:b,openFilePicker:y,handleFileInputChange:E,handleDragOver:D,handleDragLeave:T,handleDrop:L,clearAfterSubmit:se,loadAttachments:me}}const $9="(pointer: coarse)",M9="(any-pointer: fine)",x9="(max-width: 980px)";function pd(e){if(!(typeof window>"u"||typeof window.matchMedia!="function"))return window.matchMedia(e)}function fd(e,t=pd){return t(e)?.matches??!1}function I9(e,t,n=pd){const s=n(e);if(!s)return t(!1),()=>{};const o=()=>t(s.matches);return t(s.matches),s.addEventListener("change",o),()=>s.removeEventListener("change",o)}const A9=new Set(["F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","Escape","Home","End","PageUp","PageDown","Insert"]);function T9(e){return e.ctrlKey||e.metaKey||e.altKey?!0:A9.has(e.key)}let md=!1;function P9(e){T9(e)&&(md=!0)}function E9(e){return md||fd(M9,e)}const L9={class:"ctx-ring",viewBox:"0 0 20 20","aria-hidden":"true"},B9=["stroke-dasharray","stroke-dashoffset"],Ca=7,R9=xe({__name:"ContextRing",props:{pct:{}},setup(e){const t=e,n=2*Math.PI*Ca;return(s,o)=>(a(),c("svg",L9,[r("circle",{class:"ctx-ring-track",cx:"10",cy:"10",r:Ca,fill:"none","stroke-width":"2.5"}),r("circle",{class:"ctx-ring-fill",cx:"10",cy:"10",r:Ca,fill:"none","stroke-width":"2.5","stroke-linecap":"round","stroke-dasharray":`${n}`,"stroke-dashoffset":`${n*(1-t.pct/100)}`},null,8,B9)]))}}),O9=Pe(R9,[["__scopeId","data-v-a364f1f1"]]),D9={key:0,class:"att-strip"},z9={class:"att-lightbox-card"},F9=["src"],N9=["src","alt"],q9={class:"att-lightbox-name"},W9={class:"composer-card"},H9={class:"cin-wrap"},U9=["aria-label"],V9=["placeholder","disabled"],j9=["aria-label"],K9={class:"toolbar-left"},G9=["onKeydown"],Q9=["onClick"],Y9={class:"pd-check"},Z9={class:"pd-info"},X9={class:"pd-desc"},J9={class:"pd-check"},eM={class:"pd-info"},tM={class:"pd-name"},nM={class:"pd-desc"},sM={class:"pd-check"},oM={class:"pd-info"},iM={class:"pd-name"},aM={class:"pd-desc"},lM={class:"pd-check"},rM={class:"pd-info"},uM={class:"pd-name"},cM={class:"pd-desc"},dM={class:"pd-check"},pM={class:"pd-info"},fM={class:"pd-name"},mM={class:"pd-desc"},vM=["aria-pressed"],hM=["aria-label"],gM=["aria-pressed"],yM=["aria-label"],kM={class:"toolbar-right"},bM=["aria-label"],wM=["onKeydown"],SM={key:0,class:"think-suffix"},CM=["aria-label"],_M=["aria-label","disabled"],$M={key:0,class:"md-section"},MM=["onClick"],xM={class:"md-check"},IM={class:"md-name"},AM={class:"md-provider"},TM={key:1,class:"md-divider"},PM={key:2,class:"md-section"},EM=["onClick"],LM={class:"md-check"},BM={class:"md-name"},RM={key:3,class:"md-divider"},OM={class:"md-name"},DM={key:0,class:"md-note"},zM=["aria-label"],FM=["disabled","onClick"],NM={class:"md-cache-note"},qM={class:"md-name"},WM={class:"drop-card"},eu=36,HM=xe({__name:"Composer",props:{running:{type:Boolean,default:!1},starting:{type:Boolean,default:!1},sessionId:{},queued:{default:()=>[]},searchFiles:{type:Function,default:void 0},uploadImage:{type:Function,default:void 0},status:{},thinking:{},planMode:{type:Boolean},planArmed:{type:Boolean},swarmMode:{type:Boolean},supermoonMode:{type:Boolean},goalMode:{type:Boolean},goal:{},activationBadges:{},models:{default:()=>[]},starredIds:{default:()=>[]},skills:{default:()=>[]},hideContext:{type:Boolean}},emits:["submit","steer","command","interrupt","setPermission","setThinking","togglePlan","toggleSwarm","toggleSupermoon","toggleGoal","dismissPlan","focusGoal","compact","pickModel","selectModel"],setup(e,{expose:t,emit:n}){const s=e,o=$(()=>s.starting?u("composer.starting"):s.running?u("composer.placeholderRunning"):s.goalMode?u("status.goalPlaceholder"):h.value?u("status.planPlaceholder"):u("composer.placeholder")),i=n,{t:u,locale:p}=We(),m=$(()=>s.planMode===!0),h=$(()=>sc({planMode:m.value,planArmed:s.planArmed===!0})),w=$(()=>X2(s.goalMode===!0,h.value)),I=$(()=>s.goal?.status??s.activationBadges?.goal?.status??null),v=$(()=>I.value!==null&&I.value!=="complete"),f=$(()=>v.value||s.goalMode===!0);function _(){w.value==="goal"?i("toggleGoal"):w.value==="plan"&&i("dismissPlan")}const g=x(null),b=x(0);let y=null;function E(){const te=g.value;b.value=te?te.offsetWidth+8:0}Oe(w,()=>{if(y?.disconnect(),y=null,!w.value){b.value=0;return}Ue(()=>{E();const te=g.value;te&&typeof ResizeObserver<"u"&&(y=new ResizeObserver(E),y.observe(te))})},{immediate:!0});const S=$(()=>({"--wm-pill-w":`${b.value}px`})),O=$(()=>{const te=w.value==="goal"?u("status.goalLabel"):u("status.planLabel");return u("status.workModeDismiss",{mode:te})});function D(te){const we=u(te==="swarm"?"status.swarmLabel":"status.supermoonLabel");return u("status.workModeDismiss",{mode:we})}const{text:T,textareaRef:L,autosize:F,loadForEdit:H,clearDraft:k}=C9({sessionId:()=>s.sessionId}),P=x(!1);function R(){P.value=!P.value,Ue(()=>{F(),me(),L.value?.focus()})}function se(){P.value&&(P.value=!1,Ue(F))}function ae(te){if(typeof getComputedStyle>"u")return eu;const we=Number.parseFloat(getComputedStyle(te).minHeight);return Number.isFinite(we)&&we>0?we:eu}const ve=x(!1);function me(){const te=L.value;ve.value=!!te&&te.scrollHeight>ae(te)}Oe(T,()=>{Ue(me)}),Oe(()=>s.sessionId,()=>{P.value=!1,oe.value=!1,Ce.value=!1});const Z=b9({text:T,textareaRef:L,autosize:F,sessionId:()=>s.sessionId}),{open:oe,matches:ie,items:ke,active:$e,query:he,update:V,select:Q}=w9({text:T,textareaRef:L,autosize:F,skills:()=>s.skills,emitCommand:te=>i("command",te),historyPush:te=>Z.push(te),clearDraft:k,resolveDesc:te=>te.isSkill?te.desc:u(te.desc)}),{open:Ce,items:re,active:ee,loading:pe,update:De,select:X}=S9({text:T,textareaRef:L,autosize:F,searchFiles:()=>s.searchFiles});function Y(){Z.resetBrowsing(),V(),De()}const B=x(null),J=x(null);let Ee=null;function Le(){Ee!==null&&(clearTimeout(Ee),Ee=null)}function it(te){if(!te)return!1;const we=B.value?.$el,_e=J.value?.$el;return!!(oe.value&&we instanceof HTMLElement&&we.contains(te)||Ce.value&&_e instanceof HTMLElement&&_e.contains(te))}function at(te){it(te.relatedTarget)||(Le(),Ee=setTimeout(()=>{Ee=null,oe.value=!1,Ce.value=!1},0))}const{attachments:Ge,previewAttachment:je,fileInputRef:He,isDragOver:Mt,removeAttachment:wt,openAttachmentPreview:xt,closeAttachmentPreview:Jt,openFilePicker:Vt,handleFileInputChange:Dt,handleDragOver:ts,handleDragLeave:on,handleDrop:ut,clearAfterSubmit:zt,loadAttachments:En}=_9({uploadImage:()=>s.uploadImage,sessionId:()=>s.sessionId});mt(()=>{T.value&&Ue(()=>{F(),me()})}),yt(()=>{document.removeEventListener("mousedown",Kn),y?.disconnect(),y=null,Dn(),Le()});function St(){L.value?.focus({preventScroll:!0})}function Mn(te){En(te)}t({loadForEdit:H,loadAttachmentsForEdit:Mn,focus:St});function Yt(te){return{fileId:te.fileId,kind:te.kind,name:te.name,mediaType:te.mediaType,size:te.size}}function xn(){return Ge.value.filter(te=>!te.uploading&&!te.error&&te.fileId!==void 0)}function It(te){if(te.kind==="file"){te.fileId!==void 0&&id(te.fileId,te.name,te.mediaType);return}xt(te)}function an(){const te=T.value.trim();if(Ge.value.some(Xe=>Xe.uploading))return;const we=xn();if(!te&&we.length===0)return;if(Z.push(te),te){const Xe=p9(te),fn=Xe?cd(s.skills).some(sn=>sn.name===Xe.cmd||sn.name===`/${qi}${Xe.cmd.slice(1)}`):!1;if(Xe&&fn){T.value="",k(),oe.value=!1,se(),i("command",Xe.arg?`${Xe.cmd} ${Xe.arg}`:Xe.cmd,we.length>0?we.map(sn=>Yt(sn)):void 0);return}}const _e={text:te,attachments:we.map(Xe=>Yt(Xe))};je.value=null,zt(),T.value="",k(),oe.value=!1,Ce.value=!1,se(),i("submit",_e)}function dn(){if(!s.running||Ge.value.some(Xe=>Xe.uploading))return;const te=T.value.trim(),we=xn();if(!te&&we.length===0&&s.queued.length===0)return;const _e={text:te,attachments:we.map(Xe=>Yt(Xe))};zt(),Z.push(te),T.value="",k(),oe.value=!1,Ce.value=!1,se(),i("steer",_e)}let vn=!1,Zt=null;function Dn(){Zt!==null&&(clearTimeout(Zt),Zt=null)}function pn(){Dn(),vn=!0}function Vn(){Dn(),Zt=setTimeout(()=>{Zt=null,vn=!1},0)}function en(te){return vn||te.isComposing||te.keyCode===229}function Ln(te){if(en(te))return;P9(te);const we=fd($9)&&!E9();if(te.key==="Escape"){if(At.value){te.preventDefault(),st();return}if(Tt.value){te.preventDefault(),jt();return}if(hn.value){te.preventDefault(),Gt();return}}if(oe.value){if(te.key==="ArrowDown"){te.preventDefault(),$e.value=($e.value+1)%ke.value.length;return}if(te.key==="ArrowUp"){te.preventDefault(),$e.value=($e.value-1+ke.value.length)%ke.value.length;return}if(te.key==="Enter"||te.key==="Tab"){te.preventDefault();const _e=ke.value[$e.value];_e&&Q(_e);return}if(te.key==="Escape"){te.preventDefault(),oe.value=!1;return}}if(Ce.value&&!pe.value){if(te.key==="ArrowDown"){te.preventDefault(),ee.value=(ee.value+1)%Math.max(1,re.value.length);return}if(te.key==="ArrowUp"){te.preventDefault(),ee.value=(ee.value-1+Math.max(1,re.value.length))%Math.max(1,re.value.length);return}if(te.key==="Enter"||te.key==="Tab"){te.preventDefault();const _e=re.value[ee.value];_e&&X(_e);return}if(te.key==="Escape"){te.preventDefault(),Ce.value=!1;return}}if(!we&&te.key==="s"&&(te.ctrlKey||te.metaKey)&&!te.shiftKey&&!te.altKey){s.running&&(te.preventDefault(),dn());return}if(!P.value&&!oe.value&&!Ce.value&&!te.shiftKey&&!te.altKey&&!te.metaKey&&!te.ctrlKey){const _e=Z.isBrowsing();if(te.key==="ArrowUp"&&Z.hasHistory()&&(_e||Z.caretAtTextStart())){te.preventDefault(),Z.recallOlder();return}if(te.key==="ArrowDown"&&_e){te.preventDefault(),Z.recallNewer();return}}if(te.key==="Enter"&&!te.shiftKey){if(P.value&&!(te.metaKey||te.ctrlKey)||we)return;te.preventDefault(),an()}}const ns=$(()=>u("composer.send")),Wt=$(()=>!!s.uploadImage),At=x(!1),Tt=x(!1),Xt=x(null);function Ft(){At.value=!At.value,At.value?(Tt.value=!1,Gt(),document.addEventListener("click",Pt,!0)):document.removeEventListener("click",Pt,!0)}function st(){At.value=!1,Tt.value||document.removeEventListener("click",Pt,!0)}function vt(){Tt.value=!Tt.value,Tt.value?(At.value=!1,Gt(),document.addEventListener("click",Pt,!0)):document.removeEventListener("click",Pt,!0)}function jt(){Tt.value=!1,At.value||document.removeEventListener("click",Pt,!0)}function Pt(te){Xt.value&&!Xt.value.contains(te.target)&&(st(),jt())}yt(()=>{document.removeEventListener("click",Pt,!0)});const Se=$(()=>{const te=s.status?.ctxMax??0;return te<=0?0:Math.min(100,Math.max(0,Math.ceil((s.status?.ctxUsed??0)/te*100)))}),be=$(()=>{const te=ds(s.status?.ctxUsed??0),we=ds(s.status?.ctxMax??0);return u("status.ctxTooltip",{used:te,max:we,pct:Se.value})}),Ve=$(()=>Se.value>=80),Qe=$(()=>s.models?.find(te=>te.id===s.status?.modelId)),lt=$(()=>Vi(Qe.value)),Et=$(()=>ji(Qe.value)),Lt=$(()=>Xo(Qe.value,s.thinking)),Kt=$(()=>Et.value.includes(Lt.value)?Lt.value:""),tn=$(()=>U2(Lt.value)),nn=$(()=>lt.value==="unsupported"||Et.value.length<=1),Bn=$(()=>{if(!tn.value)return"";const te=(Qe.value?.supportEfforts?.length??0)>0,we=Lt.value;return te&&we!=="on"?u("composer.thinkingSuffixEffort",{level:we}):u("composer.thinkingSuffix")});function js(te){nn.value||i("setThinking",wl(Qe.value,te))}function fs(te){return te==="on"?u("status.thinkingOn"):te==="off"?u("status.thinkingOff"):Fa(te)}const ss=$(()=>s.swarmMode===!0),jn=$(()=>s.supermoonMode===!0),hn=x(!1),gn=x(null),Ht=x(null),yn=x({});function Gt(){hn.value=!1,document.removeEventListener("mousedown",Kn)}function Kn(te){const we=te.target;gn.value?.contains(we)||Ht.value?.contains(we)||Gt()}function ms(){if(hn.value){Gt();return}st(),jt();const te=gn.value?.getBoundingClientRect();te&&(yn.value={left:`${Math.round(te.left)}px`,bottom:`${Math.round(window.innerHeight-te.top+8)}px`}),hn.value=!0,te&&Ue(()=>{const we=Ht.value;if(!we)return;const _e=Math.max(8,Math.min(te.left,window.innerWidth-we.offsetWidth-8));yn.value={...yn.value,left:`${Math.round(_e)}px`}}),setTimeout(()=>document.addEventListener("mousedown",Kn),0)}function kn(){Gt(),i("togglePlan")}function vs(){Gt(),v.value?i("focusGoal"):i("toggleGoal")}function zn(){Gt(),i("toggleSwarm")}function hs(){Gt(),i("toggleSupermoon")}const Fn=[{mode:"manual",color:"var(--dim)",labelKey:"status.permissionManual",descKey:"status.permissionManualDesc"},{mode:"yolo",color:"var(--color-warning)",labelKey:"status.permissionYolo",descKey:"status.permissionYoloDesc"},{mode:"auto",color:"var(--color-danger)",labelKey:"status.permissionAuto",descKey:"status.permissionAutoDesc"}],Ts=["composer.addPlanDesc","composer.addGoalDesc","composer.addSwarmDesc","composer.addSupermoonDesc"],os=x(null),is=x(""),gs=x("");function Ps(te){const we={};return te&&(we["--composer-menu-desc-width"]=te),we}const Es=$(()=>Ps(is.value)),Nn=$(()=>Ps(gs.value)),ys=$(()=>({...yn.value,...Nn.value}));let Rn=null;function Ie(te){const we=Number.parseFloat(te);return Number.isFinite(we)?we:0}function j(te){return`${te.fontStyle||"normal"} ${te.fontWeight||"400"} ${te.fontSize} ${te.fontFamily}`}function ne(te){return te.letterSpacing==="normal"?0:Ie(te.letterSpacing)}function kt(te,we){if(!te)return 0;const _e=qd(te,j(we),{letterSpacing:ne(we)});return Wd(_e)}function Gn(){const te=os.value?.querySelector(".pd-desc");if(!te)return;const we=getComputedStyle(te),_e=Math.max(0,...Fn.map(C=>kt(u(C.descKey),we))),Xe=Math.max(0,...Ts.map(C=>kt(u(C),we))),fn=window.innerWidth-96,sn=C=>fn>0?Math.min(C,fn):C;is.value=_e>0?`${Math.ceil(sn(_e))}px`:"",gs.value=Xe>0?`${Math.ceil(sn(Xe))}px`:""}function Qn(){typeof window>"u"||(Rn!==null&&window.cancelAnimationFrame(Rn),Ue(()=>{Rn=window.requestAnimationFrame(()=>{Rn=null,Gn()})}))}Oe(p,Qn,{immediate:!0}),mt(()=>{Qn(),document.fonts?.ready.then(Qn)}),yt(()=>{Rn!==null&&(window.cancelAnimationFrame(Rn),Rn=null)});function ks(te){i("setPermission",te),jt()}const ho=$(()=>Fn.find(te=>te.mode===s.status?.permission)),Ks=$(()=>ho.value?u(ho.value.labelKey):""),bs=$(()=>Qe.value?.provider??""),Ls=$(()=>!bs.value||!s.models?.length?[]:s.models.filter(te=>te.provider===bs.value)),Do=$(()=>new Set(s.starredIds??[]));function U(te){return Do.value.has(te)}const K=$(()=>s.models?.length?s.models.filter(te=>U(te.id)&&te.provider!==bs.value):[]);function ce(te){i("selectModel",te),st()}return(te,we)=>(a(),c("div",{class:fe(["composer",{"drag-over":l(Mt),expanded:P.value}]),onDragover:we[16]||(we[16]=(..._e)=>l(ts)&&l(ts)(..._e)),onDragleave:we[17]||(we[17]=(..._e)=>l(on)&&l(on)(..._e)),onDrop:we[18]||(we[18]=(..._e)=>l(ut)&&l(ut)(..._e))},[l(Ge).length>0?(a(),c("div",D9,[(a(!0),c(ge,null,Te(l(Ge),_e=>(a(),G(nd,{key:_e.localId,kind:_e.kind,name:_e.name,url:_e.previewUrl,"file-id":_e.fileId,"media-type":_e.mediaType,size:_e.size,uploading:_e.uploading,error:_e.error,removable:"","remove-label":l(u)("composer.removeNamed",{name:_e.name}),onActivate:Xe=>It(_e),onRemove:Xe=>l(wt)(_e.localId)},null,8,["kind","name","url","file-id","media-type","size","uploading","error","remove-label","onActivate","onRemove"]))),128))])):A("",!0),l(je)?(a(),c("div",{key:1,class:"att-lightbox",onClick:we[1]||(we[1]=Re((..._e)=>l(Jt)&&l(Jt)(..._e),["self"]))},[r("div",z9,[M(nt,{text:l(u)("model.close")},{default:W(()=>[r("button",{type:"button",class:"att-lightbox-close",onClick:we[0]||(we[0]=(..._e)=>l(Jt)&&l(Jt)(..._e))},"✕")]),_:1},8,["text"]),l(je).kind==="video"?(a(),c("video",{key:0,class:"att-lightbox-media",src:l(je).previewUrl,controls:"",playsinline:""},null,8,F9)):(a(),c("img",{key:1,class:"att-lightbox-media",src:l(je).previewUrl,alt:l(je).name},null,8,N9)),r("div",q9,d(l(je).name),1)])])):A("",!0),r("div",W9,[r("div",H9,[l(oe)?(a(),G(J$,{key:0,ref_key:"slashMenuRef",ref:B,matches:l(ie),query:l(he),"active-index":l($e),onSelect:l(Q),onHover:we[2]||(we[2]=_e=>$e.value=_e)},null,8,["matches","query","active-index","onSelect"])):A("",!0),l(Ce)?(a(),G(d9,{key:1,ref_key:"mentionMenuRef",ref:J,items:l(re),"active-index":l(ee),loading:l(pe),onSelect:l(X),onHover:we[3]||(we[3]=_e=>ee.value=_e)},null,8,["items","active-index","loading","onSelect"])):A("",!0),r("div",{class:"input-row",style:rt(S.value)},[w.value?(a(),c("div",{key:0,ref_key:"wmPillRef",ref:g,class:fe(["wm-pill","wm-"+w.value])},[M(le,{name:w.value==="goal"?"target":"file-edit",size:"sm"},null,8,["name"]),r("span",null,d(w.value==="goal"?l(u)("status.goalLabel"):l(u)("status.planLabel")),1),r("button",{type:"button",class:"wm-x","aria-label":O.value,onClick:_},[M(le,{name:"close",size:"sm"})],8,U9)],2)):A("",!0),ht(r("textarea",{ref_key:"textareaRef",ref:L,"onUpdate:modelValue":we[4]||(we[4]=_e=>Ad(T)?T.value=_e:null),class:"ph",placeholder:o.value,disabled:e.starting,rows:"1",onKeydown:Ln,onCompositionstart:pn,onCompositionend:Vn,onInput:Y,onBlur:at},null,40,V9),[[On,l(T)]]),P.value||ve.value?(a(),c("button",{key:1,class:"expand-btn",type:"button","aria-label":P.value?l(u)("composer.collapseTitle"):l(u)("composer.expandTitle"),onClick:R},[P.value?(a(),G(le,{key:0,name:"collapse",size:"sm"})):(a(),G(le,{key:1,name:"expand",size:"sm"}))],8,j9)):A("",!0)],4)]),Wt.value?(a(),c("input",{key:0,ref_key:"fileInputRef",ref:He,type:"file",multiple:"",class:"file-input-hidden",onChange:we[5]||(we[5]=(..._e)=>l(Dt)&&l(Dt)(..._e))},null,544)):A("",!0),r("div",{ref_key:"toolbarRef",ref:Xt,class:"toolbar"},[r("div",{ref_key:"menuMeasureRef",ref:os,class:"menu-measure","aria-hidden":"true"},[...we[19]||(we[19]=[r("span",{class:"pd-desc"},null,-1)])],512),r("div",K9,[Wt.value?(a(),G(et,{key:0,size:"md",label:l(u)("composer.attachFile"),onClick:l(Vt)},{default:W(()=>[M(le,{name:"attachment"})]),_:1},8,["label","onClick"])):A("",!0),e.status?(a(),c("span",{key:1,class:fe(["perm-pill",["perm-"+e.status.permission,{open:Tt.value}]]),role:"button",tabindex:"0",onClick:Re(vt,["stop"]),onKeydown:[An(vt,["enter"]),An(Re(vt,["prevent"]),["space"])]},d(Ks.value),43,G9)):A("",!0),Tt.value&&e.status?(a(),c("div",{key:2,class:"perm-dropdown",style:rt(Es.value),role:"menu",onClick:we[6]||(we[6]=Re(()=>{},["stop"]))},[(a(),c(ge,null,Te(Fn,_e=>r("button",{key:_e.mode,class:fe(["pd-row",{"is-current":_e.mode===e.status.permission}]),role:"menuitem",onClick:Xe=>ks(_e.mode)},[r("span",Y9,[_e.mode===e.status.permission?(a(),G(le,{key:0,name:"check",size:"sm"})):A("",!0)]),r("span",Z9,[r("span",{class:"pd-name",style:rt({color:_e.color})},d(l(u)(_e.labelKey)),5),r("span",X9,d(l(u)(_e.descKey)),1)])],10,Q9)),64))],4)):A("",!0),e.status?(a(),c("span",{key:3,ref_key:"addMenuRef",ref:gn,class:"add-menu-anchor"},[M(et,{size:"md",label:l(u)("composer.addMenu"),class:fe({"is-open":hn.value}),onClick:ms},{default:W(()=>[M(le,{name:"plus"})]),_:1},8,["label","class"])],512)):A("",!0),(a(),G(io,{to:"body"},[hn.value?(a(),c("div",{key:0,ref_key:"addMenuPopupRef",ref:Ht,class:"add-menu",style:rt(ys.value),role:"menu"},[r("button",{type:"button",class:fe(["pd-row",{"is-current":h.value}]),role:"menuitem",onClick:kn},[r("span",J9,[M(le,{name:"file-edit",size:"sm"})]),r("span",eM,[r("span",tM,d(l(u)("status.planLabel")),1),r("span",nM,d(l(u)("composer.addPlanDesc")),1)])],2),r("button",{type:"button",class:fe(["pd-row",{"is-current":f.value}]),role:"menuitem",onClick:vs},[r("span",sM,[M(le,{name:"target",size:"sm"})]),r("span",oM,[r("span",iM,d(l(u)("status.goalLabel")),1),r("span",aM,d(l(u)("composer.addGoalDesc")),1)])],2),r("button",{type:"button",class:fe(["pd-row",{"is-current":ss.value}]),role:"menuitem",onClick:zn},[r("span",lM,[M(le,{name:"sparkles",size:"sm"})]),r("span",rM,[r("span",uM,d(l(u)("status.swarmLabel")),1),r("span",cM,d(l(u)("composer.addSwarmDesc")),1)])],2),r("button",{type:"button",class:fe(["pd-row",{"is-current":jn.value}]),role:"menuitem",onClick:hs},[r("span",dM,[M(le,{name:"moon-stars",size:"sm"})]),r("span",pM,[r("span",fM,d(l(u)("status.supermoonLabel")),1),r("span",mM,d(l(u)("composer.addSupermoonDesc")),1)])],2)],4)):A("",!0)])),e.status?(a(),c("span",{key:4,class:fe(["mode-chip",{on:ss.value}])},[r("button",{type:"button",class:"mode-chip-main","aria-pressed":ss.value,onClick:we[7]||(we[7]=_e=>i("toggleSwarm"))},[M(le,{name:"sparkles",size:"sm"}),r("span",null,d(l(u)("status.swarmLabel")),1)],8,vM),ss.value?(a(),c("button",{key:0,type:"button",class:"mode-chip-x","aria-label":D("swarm"),onClick:we[8]||(we[8]=_e=>i("toggleSwarm"))},[M(le,{name:"close",size:"sm"})],8,hM)):A("",!0)],2)):A("",!0),e.status?(a(),c("span",{key:5,class:fe(["mode-chip",{on:jn.value}])},[r("button",{type:"button",class:"mode-chip-main","aria-pressed":jn.value,onClick:we[9]||(we[9]=_e=>i("toggleSupermoon"))},[M(le,{name:"moon-stars",size:"sm"}),r("span",null,d(l(u)("status.supermoonLabel")),1)],8,gM),jn.value?(a(),c("button",{key:0,type:"button",class:"mode-chip-x","aria-label":D("supermoon"),onClick:we[10]||(we[10]=_e=>i("toggleSupermoon"))},[M(le,{name:"close",size:"sm"})],8,yM)):A("",!0)],2)):A("",!0)]),r("div",kM,[Ve.value?(a(),c("button",{key:0,class:"compact-chip",onClick:we[11]||(we[11]=Re(_e=>i("compact"),["stop"]))},"/compact")):A("",!0),M(nt,{text:be.value},{default:W(()=>[e.status&&!e.hideContext?(a(),c("span",{key:0,class:"ctx-group",role:"img",tabindex:"0","aria-label":be.value},[M(O9,{pct:Se.value},null,8,["pct"])],8,bM)):A("",!0)]),_:1},8,["text"]),e.status?(a(),c("span",{key:1,class:fe(["model-pill",{open:At.value}]),role:"button",tabindex:"0",onClick:Re(Ft,["stop"]),onKeydown:[An(Ft,["enter"]),An(Re(Ft,["prevent"]),["space"])]},[r("b",null,d(e.status.model),1),Bn.value?(a(),c("span",SM,d(Bn.value),1)):A("",!0),M(le,{class:"cv",name:"chevron-down",size:"sm"})],42,wM)):A("",!0),e.running?(a(),G(nt,{key:2,text:l(u)("composer.interruptTitle")},{default:W(()=>[r("button",{class:"stop","aria-label":l(u)("composer.interrupt"),onClick:we[12]||(we[12]=_e=>i("interrupt"))},[M(le,{name:"stop",size:"sm"})],8,CM)]),_:1},8,["text"])):A("",!0),r("button",{class:fe(["send",{"is-starting":e.starting}]),"aria-label":ns.value,disabled:e.starting,onClick:we[13]||(we[13]=_e=>an())},[e.starting?(a(),G(qt,{key:0,size:"sm"})):(a(),G(le,{key:1,name:"send",size:"sm"}))],10,_M)]),At.value&&e.status?(a(),c("div",{key:0,class:"model-dropdown",role:"menu",onClick:we[15]||(we[15]=Re(()=>{},["stop"]))},[K.value.length>0?(a(),c("div",$M,d(l(u)("status.starredModels")),1)):A("",!0),(a(!0),c(ge,null,Te(K.value,_e=>(a(),c("button",{key:_e.id,class:fe(["md-row",{"is-current":_e.id===e.status.modelId}]),role:"menuitem",onClick:Xe=>ce(_e.id)},[r("span",xM,[_e.id===e.status.modelId?(a(),G(le,{key:0,name:"check",size:"sm"})):A("",!0)]),r("span",IM,d(_e.displayName??_e.model),1),r("span",AM,d(_e.provider),1),M(le,{class:"md-star",name:"star",size:"sm"})],10,MM))),128)),K.value.length>0?(a(),c("div",TM)):A("",!0),Ls.value.length>0?(a(),c("div",PM,d(bs.value),1)):A("",!0),(a(!0),c(ge,null,Te(Ls.value,_e=>(a(),c("button",{key:_e.id,class:fe(["md-row",{"is-current":_e.id===e.status.modelId}]),role:"menuitem",onClick:Xe=>ce(_e.id)},[r("span",LM,[_e.id===e.status.modelId?(a(),G(le,{key:0,name:"check",size:"sm"})):A("",!0)]),r("span",BM,d(_e.displayName??_e.model),1),U(_e.id)?(a(),G(le,{key:0,class:"md-star",name:"star",size:"sm"})):A("",!0)],10,EM))),128)),Ls.value.length>0?(a(),c("div",RM)):A("",!0),r("div",{class:fe(["md-thinking",{"is-readonly":nn.value}])},[r("span",OM,d(l(u)("status.thinkingLabel")),1),lt.value==="unsupported"?(a(),c("span",DM,d(l(u)("status.modeNotSupported")),1)):(a(),c("div",{key:1,class:"effort-segments",role:"group","aria-label":l(u)("status.thinkingLabel")},[(a(!0),c(ge,null,Te(Et.value,_e=>(a(),c("button",{key:_e,type:"button",class:fe(["effort-seg",{"is-active":_e===Kt.value}]),disabled:nn.value,onClick:Xe=>js(_e)},d(fs(_e)),11,FM))),128))],8,zM))],2),we[20]||(we[20]=r("div",{class:"md-divider"},null,-1)),r("div",NM,d(l(u)("status.cacheNote")),1),we[21]||(we[21]=r("div",{class:"md-divider"},null,-1)),r("button",{class:"md-row md-row-more",role:"menuitem",onClick:we[14]||(we[14]=_e=>{st(),i("pickModel")})},[r("span",qM,d(l(u)("status.moreModels")),1)])])):A("",!0)],512)]),r("div",{class:fe(["drop-overlay",{show:l(Mt)}]),"aria-hidden":"true"},[r("div",WM,[M(le,{name:"file-plus",size:"lg"}),r("span",null,d(l(u)("composer.dropToAttach")),1)])],2)],34))}}),vd=Pe(HM,[["__scopeId","data-v-35d707a6"]]),UM={key:0,class:"ui-card__head"},VM={class:"ui-card__body"},jM={key:1,class:"ui-card__foot"},KM=xe({__name:"Card",props:{elevated:{type:Boolean,default:!1}},setup(e){return(t,n)=>(a(),c("div",{class:fe(["ui-card",{"is-elevated":e.elevated}])},[t.$slots.head?(a(),c("div",UM,[gt(t.$slots,"head",{},void 0,!0)])):A("",!0),r("div",VM,[gt(t.$slots,"default",{},void 0,!0)]),t.$slots.foot?(a(),c("div",jM,[gt(t.$slots,"foot",{},void 0,!0)])):A("",!0)],2))}}),El=Pe(KM,[["__scopeId","data-v-9c9f9a9a"]]),GM={class:"goal-kicker"},QM={key:0,class:"goal-progress","aria-hidden":"true"},YM={class:"goal-full"},ZM={key:0,class:"goal-criterion"},XM=["inert","aria-hidden"],JM={class:"goal-meta"},ex={key:0},tx={class:"goal-actions"},nx=xe({__name:"GoalStrip",props:{goal:{},forceExpanded:{}},emits:["controlGoal"],setup(e,{emit:t}){const n=e,s=t,{t:o}=We(),{confirm:i}=vo(),u=x(!1);Oe(()=>n.forceExpanded,()=>{n.forceExpanded!==void 0&&(u.value=!0)});const p=$(()=>{const I=n.goal.budget.tokenBudget;return!I||I<=0?0:Math.max(0,Math.min(100,Math.round(n.goal.tokensUsed/I*100)))});function m(I){switch(I){case"active":return o("status.goalStatusActive");case"paused":return o("status.goalStatusPaused");case"blocked":return o("status.goalStatusBlocked");case"complete":return o("status.goalStatusComplete")}}function h(I){const v=Math.max(0,Math.round(I/1e3)),f=Math.floor(v/60),_=v%60;return f<=0?`${_}s`:f<60?`${f}m ${_}s`:`${Math.floor(f/60)}h ${f%60}m`}async function w(){await i({title:o("status.goalCancel"),message:o("status.goalCancelConfirm"),confirmLabel:o("status.goalCancelConfirmYes"),cancelLabel:o("status.goalCancelConfirmNo"),variant:"danger"})&&s("controlGoal","cancel")}return(I,v)=>(a(),G(El,{class:fe(["goal-strip",{expanded:u.value}])},{head:W(()=>[r("button",{class:"goal-row",type:"button",onClick:v[0]||(v[0]=f=>u.value=!u.value)},[M(le,{class:"goal-icon",name:"target",size:"md"}),r("span",GM,d(l(o)("status.goalLabel")),1),r("span",{class:fe(["goal-objective",{"expanded-hidden":u.value}])},d(e.goal.objective),3),M(Nt,{variant:e.goal.status==="active"?"success":e.goal.status==="blocked"?"danger":e.goal.status==="paused"?"warning":"neutral",size:"sm",class:"goal-status"},{default:W(()=>[ue(d(m(e.goal.status)),1)]),_:1},8,["variant"]),e.goal.budget.tokenBudget!==null?(a(),c("span",QM,[r("span",{class:"goal-progress-fill",style:rt({width:`${p.value}%`})},null,4)])):A("",!0),M(le,{class:fe(["goal-chevron",{open:u.value}]),name:"chevron-right",size:"md"},null,8,["class"])])]),default:W(()=>[r("div",YM,d(e.goal.objective),1),e.goal.completionCriterion?(a(),c("div",ZM,[r("span",null,d(l(o)("workspace.doneWhen")),1),r("p",null,d(e.goal.completionCriterion),1)])):A("",!0)]),foot:W(()=>[r("div",{class:"goal-footer",inert:!u.value,"aria-hidden":!u.value},[r("div",JM,[r("span",null,d(e.goal.turnsUsed)+" turns",1),r("span",null,d(l(ds)(e.goal.tokensUsed))+" tokens",1),r("span",null,d(h(e.goal.wallClockMs)),1),e.goal.budget.tokenBudget!==null?(a(),c("span",ex,d(p.value)+"% token budget",1)):A("",!0)]),r("div",tx,[e.goal.status==="active"?(a(),G(Ne,{key:0,size:"sm",variant:"secondary",class:"goal-action",onClick:v[1]||(v[1]=Re(f=>s("controlGoal","pause"),["stop"]))},{default:W(()=>[M(le,{name:"pause",size:"md"}),r("span",null,d(l(o)("status.goalPause")),1)]),_:1})):A("",!0),e.goal.status==="paused"||e.goal.status==="blocked"?(a(),G(Ne,{key:1,size:"sm",variant:"primary",class:"goal-action",onClick:v[2]||(v[2]=Re(f=>s("controlGoal","resume"),["stop"]))},{default:W(()=>[M(le,{name:"play",size:"md"}),r("span",null,d(l(o)("status.goalResume")),1)]),_:1})):A("",!0),M(Ne,{size:"sm",variant:"danger-soft",class:"goal-action",onClick:Re(w,["stop"])},{default:W(()=>[M(le,{name:"close",size:"md"}),r("span",null,d(l(o)("status.goalCancel")),1)]),_:1})])],8,XM)]),_:1},8,["class"]))}}),sx=Pe(nx,[["__scopeId","data-v-9e444f61"]]),ox={class:"qh"},ix={class:"qtitle"},ax={key:0,class:"qstep"},lx={key:1,class:"qmin-peek"},rx={class:"qbody"},ux=["aria-label"],cx=["aria-selected","aria-label","onClick"],dx={class:"qstep-num"},px={key:1,class:"qheader-chip"},fx={class:"qtext"},mx={class:"qopts"},vx=["onClick"],hx={class:"qopt-key"},gx={class:"qopt-glyph"},yx={key:0,class:"chk"},kx={key:1,class:"rad"},bx={class:"qopt-text"},wx={class:"qopt-label"},Sx={key:0,class:"qopt-desc"},Cx={class:"qopt-glyph"},_x={key:0,class:"chk"},$x={key:1,class:"rad"},Mx={class:"qopt-label"},xx=["placeholder"],Ix={class:"qfoot"},Ax=xe({__name:"QuestionCard",props:{question:{},busyKind:{}},emits:["answer","dismiss"],setup(e,{emit:t}){const n=e,{t:s}=We(),o=t,i=x(0),u=x(!1),p=$(()=>n.question.questions[i.value]),m=$(()=>n.question.questions.length);function h(){i.value>0&&i.value--}function w(){i.value=0&&me0:Z.kind==="multiWithOther"?Z.optionIds.length>0||Z.otherText.trim().length>0:Z.kind==="other"?Z.text.trim().length>0:!0:!1}function f(){return v(p.value.id)}const _=x({});function g(me){return me.recommended===!0?!0:/\b(?:recommended|recommend)\b|推荐/.test(`${me.label} ${me.description??""}`.toLowerCase())}function b(){const me={..._.value};let Z=!1;for(const oe of n.question.questions){if(me[oe.id])continue;const ie=oe.options.filter(g);ie.length!==0&&(me[oe.id]=oe.multiSelect?{kind:"multi",optionIds:ie.map(ke=>ke.id)}:{kind:"single",optionId:ie[0].id},Z=!0)}Z&&(_.value=me)}Oe(()=>n.question.questionId,()=>{i.value=0,u.value=!1,_.value={},S.value={}}),Oe(()=>n.question,()=>{i.value>=n.question.questions.length&&(i.value=0),b()},{immediate:!0,deep:!0});function y(me,Z){const oe=_.value[me];if(oe&&oe.kind==="single"&&oe.optionId===Z){const ie={..._.value};delete ie[me],_.value=ie}else _.value={..._.value,[me]:{kind:"single",optionId:Z}}}function E(me,Z){const oe=_.value[me],ie=oe&&(oe.kind==="multi"||oe.kind==="multiWithOther")?oe.kind==="multi"?[...oe.optionIds]:[...oe.optionIds]:[],ke=ie.indexOf(Z);ke>=0?ie.splice(ke,1):ie.push(Z);const $e=_.value[me],he=$e&&$e.kind==="multiWithOther"?$e.otherText:"";he?_.value={..._.value,[me]:{kind:"multiWithOther",optionIds:ie,otherText:he}}:_.value={..._.value,[me]:{kind:"multi",optionIds:ie}}}const S=x({}),O=x(null);function D(me){const Z=n.question.questions.find(ie=>ie.id===me);if(!Z)return;const oe=S.value[me]??"";if(Z.multiSelect){const ie=_.value[me],ke=ie&&(ie.kind==="multi"||ie.kind==="multiWithOther")?ie.kind==="multi"?[...ie.optionIds]:[...ie.optionIds]:[];_.value={..._.value,[me]:{kind:"multiWithOther",optionIds:ke,otherText:oe}}}else _.value={..._.value,[me]:{kind:"other",text:oe}}}function T(me){D(me),Ue(()=>O.value?.focus())}function L(me,Z){const oe=_.value[me];return oe?oe.kind==="single"?oe.optionId===Z:oe.kind==="multi"||oe.kind==="multiWithOther"?oe.optionIds.includes(Z):!1:!1}function F(me){const Z=_.value[me];return!!(Z&&(Z.kind==="other"||Z.kind==="multiWithOther"))}function H(){return n.question.questions.every(me=>v(me.id))}const k=$(()=>n.busyKind==="answer"),P=$(()=>n.busyKind==="dismiss"),R=$(()=>!!n.busyKind);function se(){if(R.value||!H())return;const me={answers:_.value,method:"click"};o("answer",n.question.questionId,me)}function ae(){R.value||o("dismiss",n.question.questionId)}function ve(me){const Z=(document.activeElement?.tagName??"").toLowerCase(),oe=Z==="input"||Z==="textarea";if(R.value)return;if(me.key==="Enter"){if(me.preventDefault(),u.value)return;i.value=1&&ie<=9){me.preventDefault();const ke=p.value,$e=ie-1,he=ke.options[$e];he&&(ke.multiSelect?E(ke.id,he.id):y(ke.id,he.id))}}return mt(()=>document.addEventListener("keydown",ve)),yt(()=>document.removeEventListener("keydown",ve)),(me,Z)=>(a(),G(El,{class:fe(["qcard",{minimized:u.value}])},vu({head:W(()=>[r("div",ox,[Z[5]||(Z[5]=r("span",{class:"qh-ic"},"?",-1)),r("span",ix,d(l(s)("question.title")),1),m.value>1&&!u.value?(a(),c("span",ax,d(l(s)("question.step",{current:i.value+1,total:m.value})),1)):A("",!0),u.value?(a(),c("span",lx,d(p.value.question),1)):A("",!0),M(et,{class:"qmin",size:"sm",label:u.value?l(s)("question.expand"):l(s)("question.minimize"),onClick:Z[0]||(Z[0]=oe=>u.value=!u.value)},{default:W(()=>[u.value?(a(),G(le,{key:0,name:"chevron-up",size:"md"})):(a(),G(le,{key:1,name:"minus",size:"md"}))]),_:1},8,["label"])])]),_:2},[u.value?void 0:{name:"default",fn:W(()=>[r("div",rx,[m.value>1?(a(),c("div",{key:0,class:"qsteps",role:"tablist","aria-label":l(s)("question.step",{current:i.value+1,total:m.value})},[(a(!0),c(ge,null,Te(n.question.questions,(oe,ie)=>(a(),c("button",{key:oe.id,type:"button",class:fe(["qstep-dot",{active:ie===i.value,answered:v(oe.id)}]),"aria-selected":ie===i.value,"aria-label":l(s)("question.step",{current:ie+1,total:m.value}),onClick:ke=>I(ie)},[r("span",dx,d(ie+1),1)],10,cx))),128))],8,ux)):A("",!0),p.value.header?(a(),c("div",px,[M(Nt,{variant:"neutral",size:"sm"},{default:W(()=>[ue(d(p.value.header),1)]),_:1})])):A("",!0),r("div",fx,d(p.value.question),1),p.value.body?(a(),G(ci,{key:2,text:p.value.body,class:"qmdbody"},null,8,["text"])):A("",!0),r("div",mx,[(a(!0),c(ge,null,Te(p.value.options,(oe,ie)=>(a(),c("label",{key:oe.id,class:fe(["qopt",{selected:L(p.value.id,oe.id)}]),onClick:Re(ke=>p.value.multiSelect?E(p.value.id,oe.id):y(p.value.id,oe.id),["prevent"])},[r("span",hx,d(ie+1),1),r("span",gx,[p.value.multiSelect?(a(),c("span",yx,d(L(p.value.id,oe.id)?"■":"□"),1)):(a(),c("span",kx,d(L(p.value.id,oe.id)?"●":"○"),1))]),r("span",bx,[r("span",wx,d(oe.label),1),oe.description?(a(),c("span",Sx,d(oe.description),1)):A("",!0)])],10,vx))),128)),p.value.allowOther?(a(),c("label",{key:0,class:fe(["qopt",{selected:F(p.value.id)}]),onClick:Z[4]||(Z[4]=Re(oe=>T(p.value.id),["prevent"]))},[Z[6]||(Z[6]=r("span",{class:"qopt-key"},null,-1)),r("span",Cx,[p.value.multiSelect?(a(),c("span",_x,d(F(p.value.id)?"■":"□"),1)):(a(),c("span",$x,d(F(p.value.id)?"●":"○"),1))]),r("span",Mx,d(p.value.otherLabel??l(s)("question.otherDefault")),1),ht(r("input",{ref_key:"otherInputEl",ref:O,"onUpdate:modelValue":Z[1]||(Z[1]=oe=>S.value[p.value.id]=oe),class:"other-input",type:"text",placeholder:p.value.otherLabel??l(s)("question.otherDefault"),onInput:Z[2]||(Z[2]=oe=>D(p.value.id)),onFocus:Z[3]||(Z[3]=oe=>D(p.value.id))},null,40,xx),[[On,S.value[p.value.id]]])],2)):A("",!0)])])]),key:"0"},u.value?void 0:{name:"foot",fn:W(()=>[r("div",Ix,[i.value[ue(d(l(s)("question.nextQuestion")),1)]),_:1},8,["disabled"])):(a(),G(Ne,{key:1,class:"qfoot-btn qfoot-main",size:"sm",variant:"primary",disabled:!H(),loading:k.value,onClick:se},{default:W(()=>[ue(d(l(s)("question.submit")),1)]),_:1},8,["disabled","loading"])),m.value>1?(a(),G(Ne,{key:2,class:"qfoot-btn",size:"sm",variant:"secondary",disabled:i.value===0||R.value,onClick:h},{default:W(()=>[ue(d(l(s)("question.back")),1)]),_:1},8,["disabled"])):A("",!0),M(Ne,{class:"qfoot-btn",size:"sm",variant:"ghost",loading:P.value,disabled:R.value,onClick:ae},{default:W(()=>[ue(d(l(s)("question.dismiss")),1)]),_:1},8,["loading","disabled"])])]),key:"1"}]),1032,["class"]))}}),Tx=Pe(Ax,[["__scopeId","data-v-2af45fec"]]),Px={class:"ah"},Ex={class:"akind"},Lx={class:"apath"},Bx={class:"ah-path"},Rx={key:1,class:"diff"},Ox={class:"dg"},Dx={class:"dc"},zx={key:2,class:"body-shell"},Fx={class:"shell-cmd"},Nx={key:0,class:"shell-cwd"},qx={key:1,class:"shell-danger"},Wx={key:3,class:"body-file"},Hx={class:"file-bar"},Ux={class:"file-lang"},Vx={class:"file-content"},jx={class:"file-ln"},Kx={class:"file-text"},Gx={key:4,class:"body-chip"},Qx={class:"chip-label"},Yx={class:"chip-value"},Zx={key:0,class:"chip-detail"},Xx={key:5,class:"body-chip"},Jx={key:0,class:"chip-label"},e6={class:"chip-value"},t6={key:6,class:"body-chip"},n6={class:"chip-label"},s6={class:"chip-value"},o6={key:0,class:"chip-detail"},i6={key:7,class:"body-chip"},a6={class:"chip-label"},l6={class:"chip-value"},r6={key:0,class:"chip-detail"},u6={key:8,class:"body-todo"},c6={class:"todo-glyph"},d6={key:9,class:"body-plan"},p6={key:10,class:"body-generic"},f6={class:"gen-text"},m6={key:11,class:"feedback-wrap"},v6=["placeholder"],h6={class:"feedback-hint"},g6={key:0,class:"plan-actions"},y6={key:1,class:"abtn"},k6=xe({__name:"ApprovalCard",props:{block:{},agentName:{},busy:{type:Boolean}},emits:["decide"],setup(e,{emit:t}){const n=e,s=t,{t:o}=We(),i=$(()=>{const k=n.block;return k.kind!=="plan_review"?null:{plan:k.plan,path:k.path,options:k.options??[]}}),u=x(!1),p=["shell","diff","file","fileop","url","search","invocation","todo","plan_review","generic"];function m(){const k=p.includes(n.block.kind)?n.block.kind:"generic";return o(`approval.title.${k}`)}const h=x(!1),w=x(""),I=x(null);function v(){n.busy||(h.value=!0,w.value="",setTimeout(()=>I.value?.focus(),0))}function f(){if(n.busy)return;const k=w.value.trim();i.value?y("feedback",{decision:"rejected",selectedLabel:"Revise",feedback:k||void 0}):y("feedback",{decision:"rejected",feedback:k||void 0}),h.value=!1,w.value=""}function _(){h.value=!1,w.value=""}function g(k){k.key==="Enter"&&!k.shiftKey?(k.preventDefault(),f()):k.key==="Escape"&&(k.preventDefault(),_())}const b=x(null);Oe(()=>n.busy,k=>{k||(b.value=null)});function y(k,P){n.busy||(b.value=k,s("decide",P))}function E(){y("approve",{decision:"approved"})}function S(){y("approveSession",{decision:"approved",scope:"session"})}function O(){y("reject",{decision:"rejected"})}function D(){y("approvePlan",{decision:"approved"})}function T(k){y(`option:${k}`,{decision:"approved",selectedLabel:k})}function L(){n.busy||v()}function F(){y("rejectAndExit",{decision:"rejected",selectedLabel:"Reject and Exit"})}function H(k){const P=(document.activeElement?.tagName??"").toLowerCase();if(P==="input"||P==="textarea"||n.busy||u.value)return;const R=i.value;if(R){if(R.options.length===0){k.key==="1"?(k.preventDefault(),D()):k.key==="2"?(k.preventDefault(),L()):k.key==="3"&&(k.preventDefault(),F());return}k.key==="1"&&R.options[0]?(k.preventDefault(),T(R.options[0].label)):k.key==="2"&&R.options[1]?(k.preventDefault(),T(R.options[1].label)):k.key==="3"&&R.options[2]&&(k.preventDefault(),T(R.options[2].label));return}k.key==="1"?(k.preventDefault(),E()):k.key==="2"?(k.preventDefault(),S()):k.key==="3"?(k.preventDefault(),O()):k.key==="4"&&(k.preventDefault(),v())}return mt(()=>document.addEventListener("keydown",H)),yt(()=>document.removeEventListener("keydown",H)),(k,P)=>(a(),G(El,{class:fe(["appr",{minimized:u.value}])},vu({head:W(()=>[r("div",Px,[P[2]||(P[2]=r("span",{class:"ah-ic"},"!",-1)),r("span",Ex,d(m()),1),r("span",Lx,[e.block.kind==="diff"||e.block.kind==="file"||e.block.kind==="fileop"?(a(),c(ge,{key:0},[ue(d(e.block.path),1)],64)):e.block.kind==="shell"?(a(),c(ge,{key:1},[ue(d(e.block.command),1)],64)):e.block.kind==="url"?(a(),c(ge,{key:2},[ue(d(e.block.url),1)],64)):e.block.kind==="search"?(a(),c(ge,{key:3},[ue(d(e.block.query),1)],64)):e.block.kind==="invocation"?(a(),c(ge,{key:4},[ue(d(e.block.name),1)],64)):e.block.kind==="generic"?(a(),c(ge,{key:5},[ue(d(e.block.summary),1)],64)):A("",!0)]),e.agentName&&!u.value?(a(),G(Nt,{key:0,variant:"neutral",size:"sm"},{default:W(()=>[ue(d(l(o)("approval.subagentBadge",{name:e.agentName})),1)]),_:1})):A("",!0),u.value?A("",!0):(a(),G(Nt,{key:1,variant:"warning",size:"sm",class:"aw"},{default:W(()=>[ue(d(l(o)("approval.required")),1)]),_:1})),M(et,{class:"amin",size:"sm",label:u.value?l(o)("question.expand"):l(o)("question.minimize"),onClick:P[0]||(P[0]=R=>u.value=!u.value)},{default:W(()=>[u.value?(a(),G(le,{key:0,name:"chevron-up",size:"md"})):(a(),G(le,{key:1,name:"minus",size:"md"}))]),_:1},8,["label"])])]),_:2},[u.value?void 0:{name:"default",fn:W(()=>[e.block.kind==="plan_review"&&e.block.path?(a(),G(nt,{key:0,text:e.block.path},{default:W(()=>[r("div",Bx,d(e.block.path),1)]),_:1},8,["text"])):A("",!0),e.block.kind==="diff"?(a(),c("div",Rx,[(a(!0),c(ge,null,Te(e.block.diff,(R,se)=>(a(),c("div",{key:se,class:fe(["dl",R.kind==="add"?"add":R.kind==="rem"?"del":""])},[r("span",Ox,d(R.gutter),1),r("span",Dx,d(R.text),1)],2))),128))])):e.block.kind==="shell"?(a(),c("div",zx,[r("div",Fx,[P[3]||(P[3]=r("span",{class:"shell-dollar"},"$",-1)),ue(" "+d(e.block.command),1)]),e.block.cwd?(a(),c("div",Nx,"cwd: "+d(e.block.cwd),1)):A("",!0),e.block.danger?(a(),c("div",qx,d(l(o)("approval.danger",{detail:e.block.danger})),1)):A("",!0)])):e.block.kind==="file"?(a(),c("div",Wx,[r("div",Hx,[r("span",Ux,d(e.block.language??""),1)]),r("div",Vx,[(a(!0),c(ge,null,Te(e.block.content.split(`
-`),(R,se)=>(a(),c("div",{key:se,class:"file-line"},[r("span",jx,d(se+1),1),r("span",Kx,d(R),1)]))),128))])])):e.block.kind==="fileop"?(a(),c("div",Gx,[r("span",Qx,d(e.block.op),1),r("span",Yx,d(e.block.path),1),e.block.detail?(a(),c("span",Zx,d(e.block.detail),1)):A("",!0)])):e.block.kind==="url"?(a(),c("div",Xx,[e.block.method?(a(),c("span",Jx,d(e.block.method),1)):A("",!0),r("span",e6,d(e.block.url),1)])):e.block.kind==="search"?(a(),c("div",t6,[r("span",n6,d(l(o)("approval.searchQueryLabel")),1),r("span",s6,d(e.block.query),1),e.block.scope?(a(),c("span",o6,d(l(o)("approval.searchScope",{scope:e.block.scope})),1)):A("",!0)])):e.block.kind==="invocation"?(a(),c("div",i6,[r("span",a6,d(e.block.kind2),1),r("span",l6,d(e.block.name),1),e.block.description?(a(),c("span",r6,d(e.block.description),1)):A("",!0)])):e.block.kind==="todo"?(a(),c("div",u6,[(a(!0),c(ge,null,Te(e.block.items,(R,se)=>(a(),c("div",{key:se,class:"todo-item"},[r("span",c6,d(R.status==="done"||R.status==="completed"?"✓":"○"),1),r("span",{class:fe(["todo-title",{"todo-done":R.status==="done"||R.status==="completed"}])},d(R.title),3)]))),128))])):e.block.kind==="plan_review"?(a(),c("div",d6,[M(ci,{text:e.block.plan},null,8,["text"])])):(a(),c("div",p6,[r("span",f6,d(e.block.summary),1)])),h.value?(a(),c("div",m6,[ht(r("textarea",{ref_key:"feedbackRef",ref:I,"onUpdate:modelValue":P[1]||(P[1]=R=>w.value=R),class:"feedback-ta",placeholder:l(o)("approval.feedbackPlaceholder"),rows:"2",onKeydown:g},null,40,v6),[[On,w.value]]),r("div",h6,d(l(o)("approval.feedbackHint")),1)])):A("",!0)]),key:"0"},u.value?void 0:{name:"foot",fn:W(()=>[i.value?(a(),c("div",g6,[i.value.options.length>0?(a(!0),c(ge,{key:0},Te(i.value.options,(R,se)=>(a(),G(nt,{key:se,text:R.description},{default:W(()=>[M(Ne,{class:"kbtn",size:"sm",variant:"primary",loading:b.value===`option:${R.label}`,disabled:e.busy,onClick:ae=>T(R.label)},{default:W(()=>[ue(d(R.label),1),M(Ss,{class:"k",keys:[String(se+1)]},null,8,["keys"])]),_:2},1032,["loading","disabled","onClick"])]),_:2},1032,["text"]))),128)):(a(),G(Ne,{key:1,class:"kbtn",size:"sm",variant:"primary",loading:b.value==="approvePlan",disabled:e.busy,onClick:D},{default:W(()=>[ue(d(l(o)("approval.approvePlan")),1),M(Ss,{class:"k",keys:["1"]})]),_:1},8,["loading","disabled"])),M(Ne,{class:"kbtn",size:"sm",variant:"secondary",disabled:e.busy,onClick:L},{default:W(()=>[ue(d(l(o)("approval.revise")),1),i.value.options.length===0?(a(),G(Ss,{key:0,class:"k",keys:["2"]})):A("",!0)]),_:1},8,["disabled"]),M(Ne,{class:"kbtn",size:"sm",variant:"danger-soft",loading:b.value==="rejectAndExit",disabled:e.busy,onClick:F},{default:W(()=>[ue(d(l(o)("approval.rejectAndExit")),1),i.value.options.length===0?(a(),G(Ss,{key:0,class:"k",keys:["3"]})):A("",!0)]),_:1},8,["loading","disabled"])])):(a(),c("div",y6,[M(Ne,{class:"kbtn",size:"sm",variant:"primary",loading:b.value==="approve",disabled:e.busy,onClick:E},{default:W(()=>[ue(d(l(o)("approval.approve")),1),M(Ss,{class:"k",keys:["1"]})]),_:1},8,["loading","disabled"]),M(Ne,{class:"kbtn",size:"sm",variant:"secondary",loading:b.value==="approveSession",disabled:e.busy,onClick:S},{default:W(()=>[ue(d(l(o)("approval.approveSession")),1),M(Ss,{class:"k",keys:["2"]})]),_:1},8,["loading","disabled"]),M(Ne,{class:"kbtn",size:"sm",variant:"secondary",loading:b.value==="reject",disabled:e.busy,onClick:O},{default:W(()=>[ue(d(l(o)("approval.reject")),1),M(Ss,{class:"k",keys:["3"]})]),_:1},8,["loading","disabled"]),M(Ne,{class:"kbtn",size:"sm",variant:"secondary",disabled:e.busy,onClick:v},{default:W(()=>[ue(d(l(o)("approval.feedback")),1),M(Ss,{class:"k",keys:["4"]})]),_:1},8,["disabled"])]))]),key:"1"}]),1032,["class"]))}}),b6=Pe(k6,[["__scopeId","data-v-458a9d7d"]]),w6=["recent","running","done","all"];function S6(e,t){switch(t){case"running":return e.filter(n=>n.state==="run");case"done":return e.filter(n=>n.state==="done");case"recent":return e.filter(n=>n.state==="run"||n.state==="done");case"all":return[...e]}}const C6=["aria-selected","onClick"],_6=xe({__name:"SegmentedControl",props:{modelValue:{},options:{},size:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=t;return(s,o)=>(a(),c("div",{class:fe(["ui-seg",`ui-seg--${e.size??"md"}`]),role:"tablist"},[(a(!0),c(ge,null,Te(e.options,i=>(a(),c("button",{key:i.value,class:fe(["ui-seg__item",{"is-on":i.value===e.modelValue}]),type:"button",role:"tab","aria-selected":i.value===e.modelValue,onClick:u=>n("update:modelValue",i.value)},d(i.label),11,C6))),128))],2))}}),cn=Pe(_6,[["__scopeId","data-v-d1aaccd7"]]),$6=xe({__name:"StatusGlyph",props:{status:{}},setup(e){const t=e,n={pending:"○",run:"●",done:"✓",fail:"✗"};return(s,o)=>(a(),c("span",{class:fe(["status-glyph",`s-${t.status}`]),"aria-hidden":"true"},d(n[t.status]),3))}}),Ii=Pe($6,[["__scopeId","data-v-f595d935"]]),M6={class:"tp-head"},x6={class:"tp-title"},I6={class:"tp-count"},A6={key:0,class:"tp-filter"},T6={key:1,class:"tp-body"},P6={class:"tp-list-col"},E6={key:0,class:"tp-empty"},L6=["role","onClick"],B6={class:"tp-name"},R6={class:"tp-time"},O6=["onClick"],D6={key:0,class:"tp-detail"},z6={key:0,class:"tp-codebox"},F6=["onClick"],N6={class:"tp-pre"},q6={class:"tp-cmd"},W6={key:1,class:"tp-codebox"},H6=["onClick"],U6={class:"tp-pre"},V6={class:"tp-main tp-detail-head"},j6={class:"tp-name"},K6={class:"tp-time"},G6={key:0,class:"tp-codebox"},Q6={class:"tp-pre"},Y6={class:"tp-cmd"},Z6={key:1,class:"tp-codebox"},X6={class:"tp-pre"},J6={key:2,class:"tp-detail-empty"},e7={key:1,class:"tp-detail-empty"},t7={key:2,class:"tp-body tp-grid"},n7={key:0,class:"tp-empty"},s7=["onClick"],o7={class:"tp-card-line"},i7={class:"tp-card-name"},a7={class:"tp-card-line tp-card-meta"},l7=["onClick"],r7={key:1,class:"tp-time"},u7=xe({__name:"TasksPane",props:{tasks:{},variant:{}},emits:["cancel","open"],setup(e,{emit:t}){const n=e,s=t,{t:o}=We(),i={recent:"filterRecent",running:"filterRunning",done:"filterDone",all:"filterAll"},u={recent:"emptyRecent",running:"emptyRunning",done:"emptyDone",all:"emptyTasks"},p=x("recent"),m=x(null),h=$(()=>n.tasks.find(F=>F.id===m.value)??null),w=Pn(new Set),I=Pn(new Set),v=Pn(new Set),f=x(null),_=$(()=>n.variant==="todos"?n.tasks:S6(n.tasks,p.value)),g=$(()=>w6.map(F=>({value:F,label:o(`tasks.${i[F]}`)}))),b=$(()=>n.variant==="todos"?"tasks.emptyTasks":`tasks.${u[p.value]}`);function y(F){return!!(F.output&&F.output.length>0||F.meta)}function E(F){if(y(F)){if(n.variant==="todos"){w.has(F.id)?w.delete(F.id):w.add(F.id);return}m.value=F.id,Ue(()=>f.value?.scrollIntoView({block:"nearest"}))}}function S(F){return F==="run"||F==="done"||F==="fail"?F:"pending"}function O(F){p.value=F}async function D(F,H,k){await un(F)&&(k.add(H),setTimeout(()=>k.delete(H),1500))}async function T(F){F.meta&&await D(F.meta,F.id,I)}async function L(F){const H=F.output?.join(`
-`)??"";H&&await D(H,F.id,v)}return(F,H)=>(a(),c("div",{class:fe(["taskspane",`tp-${e.variant}`])},[r("div",M6,[r("span",x6,d(l(o)("tasks.tag")),1),r("span",I6,d(_.value.length),1)]),e.variant!=="todos"?(a(),c("div",A6,[M(cn,{"model-value":p.value,options:g.value,size:"sm","onUpdate:modelValue":O},null,8,["model-value","options"])])):A("",!0),e.variant!=="subagent"?(a(),c("div",T6,[r("div",P6,[_.value.length===0?(a(),c("div",E6,d(l(o)(b.value)),1)):(a(!0),c(ge,{key:1},Te(_.value,k=>(a(),c("div",{key:k.id,class:fe(["tp-row",{done:k.state==="done",fail:k.state==="fail",expandable:y(k),selected:k.id===m.value}])},[r("div",{class:"tp-main",role:y(k)?"button":void 0,onClick:P=>E(k)},[M(Ii,{status:S(k.state)},null,8,["status"]),r("span",B6,d(k.name),1),M(Nt,{variant:"neutral",size:"sm"},{default:W(()=>[ue(d(k.kind),1)]),_:2},1024),r("span",R6,d(k.timing),1),k.state==="run"?(a(),c("button",{key:0,class:"tp-stop",onClick:Re(P=>s("cancel",k.id),["stop"])},d(l(o)("tasks.stop")),9,O6)):A("",!0),y(k)?(a(),G(le,{key:1,class:fe(["tp-chevron",{open:e.variant==="todos"&&w.has(k.id)}]),name:"chevron-right",size:"sm"},null,8,["class"])):A("",!0)],8,L6),e.variant==="todos"&&w.has(k.id)&&y(k)?(a(),c("div",D6,[k.meta?(a(),c("div",z6,[r("button",{class:fe(["tp-copy",{copied:I.has(k.id)}]),onClick:Re(P=>T(k),["stop"])},d(I.has(k.id)?"已复制":"复制"),11,F6),r("pre",N6,[r("code",null,[r("span",q6,d(k.meta),1)])])])):A("",!0),k.output&&k.output.length>0?(a(),c("div",W6,[r("button",{class:fe(["tp-copy",{copied:v.has(k.id)}]),onClick:Re(P=>L(k),["stop"])},d(v.has(k.id)?"已复制":"复制"),11,H6),r("pre",U6,[r("code",null,[H[2]||(H[2]=ue(`
- `,-1)),(a(!0),c(ge,null,Te(k.output,(P,R)=>(a(),c("span",{key:R,class:"tp-line"},d(P),1))),128)),H[3]||(H[3]=ue(`
- `,-1))])])])):A("",!0)])):A("",!0)],2))),128))]),e.variant==="bash"?(a(),c("div",{key:0,ref_key:"detailColRef",ref:f,class:"tp-detail-col"},[h.value?(a(),c(ge,{key:0},[r("div",V6,[M(Ii,{status:S(h.value.state)},null,8,["status"]),r("span",j6,d(h.value.name),1),M(Nt,{variant:"neutral",size:"sm"},{default:W(()=>[ue(d(h.value.kind),1)]),_:1}),r("span",K6,d(h.value.timing),1)]),h.value.meta?(a(),c("div",G6,[r("button",{class:fe(["tp-copy",{copied:I.has(h.value.id)}]),onClick:H[0]||(H[0]=Re(k=>T(h.value),["stop"]))},d(I.has(h.value.id)?"已复制":"复制"),3),r("pre",Q6,[r("code",null,[r("span",Y6,d(h.value.meta),1)])])])):A("",!0),h.value.output&&h.value.output.length>0?(a(),c("div",Z6,[r("button",{class:fe(["tp-copy",{copied:v.has(h.value.id)}]),onClick:H[1]||(H[1]=Re(k=>L(h.value),["stop"]))},d(v.has(h.value.id)?"已复制":"复制"),3),r("pre",X6,[r("code",null,[H[4]||(H[4]=ue(`
- `,-1)),(a(!0),c(ge,null,Te(h.value.output,(k,P)=>(a(),c("span",{key:P,class:"tp-line"},d(k),1))),128)),H[5]||(H[5]=ue(`
- `,-1))])])])):A("",!0),!h.value.meta&&!(h.value.output&&h.value.output.length>0)?(a(),c("div",J6,d(l(o)("tasks.noOutput")),1)):A("",!0)],64)):(a(),c("div",e7,d(l(o)("tasks.detailPlaceholder")),1))],512)):A("",!0)])):A("",!0),e.variant==="subagent"?(a(),c("div",t7,[_.value.length===0?(a(),c("div",n7,d(l(o)(b.value)),1)):(a(!0),c(ge,{key:1},Te(_.value,k=>(a(),c("div",{key:k.id,class:fe(["tp-card",{done:k.state==="done",fail:k.state==="fail"}]),role:"button",onClick:P=>s("open",k.id)},[r("span",o7,[M(Ii,{status:S(k.state)},null,8,["status"]),r("span",i7,d(k.name),1)]),r("span",a7,[M(Nt,{variant:"neutral",size:"sm"},{default:W(()=>[ue(d(k.kind),1)]),_:2},1024),k.state==="run"?(a(),c("button",{key:0,class:"tp-stop",onClick:Re(P=>s("cancel",k.id),["stop"])},d(l(o)("tasks.stop")),9,l7)):(a(),c("span",r7,d(k.timing),1))])],10,s7))),128))])):A("",!0)],2))}}),tu=Pe(u7,[["__scopeId","data-v-30ebee08"]]),c7={class:"todo-card"},d7={key:0,class:"tc-empty"},p7={key:1,class:"tc-progress"},f7={class:"tc-name"},m7=xe({__name:"TodoCard",props:{todos:{},doneCount:{}},setup(e){const t=e,{t:n}=We(),s=$(()=>t.doneCount??t.todos.filter(i=>i.status==="done").length);function o(i){return i==="in_progress"?"run":i}return(i,u)=>(a(),c("div",c7,[t.todos.length===0?(a(),c("div",d7,[M(le,{name:"check-list",size:"md",class:"tc-empty-ico","aria-hidden":"true"}),r("span",null,d(l(n)("tasks.emptyTodo")),1)])):(a(),c("div",p7,[M(le,{name:"check-list",size:"sm",class:"tc-progress-ico","aria-hidden":"true"}),r("span",null,d(l(n)("tasks.todoProgress",{done:s.value,total:t.todos.length})),1)])),(a(!0),c(ge,null,Te(t.todos,(p,m)=>(a(),c("div",{key:m,class:fe(["tc-row",`s-${p.status}`])},[M(Ii,{status:o(p.status)},null,8,["status"]),r("span",f7,d(p.title),1)],2))),128))]))}}),v7=Pe(m7,[["__scopeId","data-v-4f8e45d2"]]),h7={class:"terminal-panel"},g7={key:0,class:"term-state"},y7={key:1,class:"term-state"},k7={class:"term-toolbar"},b7=["aria-label"],w7=["aria-selected","onClick"],S7={class:"term-tab-label"},C7={key:0,class:"term-error",role:"alert"},_7={key:1,class:"term-exit"},$7={class:"term-input-row"},M7=["disabled","placeholder"],x7=xe({__name:"TerminalPanel",props:{sessionId:{},store:{}},setup(e){const t=e,{t:n}=We(),s=Ae(),o=x(""),i=x(!1),u=x(new Set),p=x(null),m=x(null),h=$(()=>t.store.terminals.value),w=$(()=>t.store.active.value),I=$(()=>t.store.activeLines.value),v=$(()=>t.store.loading.value),f=$(()=>t.store.error.value),_=$(()=>{const R=w.value?.exitCode;return R==null?"?":String(R)});let g=0;async function b(){const R=++g;if(!t.sessionId){t.store.setSession(void 0);return}t.store.setSession(t.sessionId),t.store.setLoading(!0),t.store.setError(null);try{const se=await s.listTerminals(t.sessionId);if(R!==g)return;t.store.syncTerminals(se);const ae=t.store.terminals.value[0];ae&&(t.store.setActive(ae.id),t.store.attach(ae.id))}catch(se){if(R!==g)return;t.store.setError(O(se)??n("terminal.listFailed"))}finally{R===g&&t.store.setLoading(!1)}}async function y(){if(!(!t.sessionId||i.value)){i.value=!0,t.store.setError(null);try{const R=await s.createTerminal(t.sessionId,{cols:Gu,rows:Qu});t.store.upsertTerminal(R),t.store.setActive(R.id),t.store.attach(R.id),await Ue(),k()}catch(R){t.store.setError(O(R)??n("terminal.createFailed"))}finally{i.value=!1}}}async function E(R){if(!(!t.sessionId||u.value.has(R))){u.value=new Set(u.value).add(R),t.store.setError(null);try{await s.closeTerminal(t.sessionId,R),t.store.detach(R),t.store.removeTerminal(R)}catch(se){t.store.setError(O(se)??n("terminal.closeFailed"))}finally{const se=new Set(u.value);se.delete(R),u.value=se}}}function S(R){t.store.setActive(R),t.store.attach(R),k()}function O(R){return R instanceof Error&&R.message?R.message:null}let D=-1,T="";function L(){const R=w.value;if(!R||R.status==="exited")return;const se=o.value;se.trim().length!==0&&(t.store.submitInput(R.id,se),o.value="",D=-1,k())}function F(){const R=w.value?.history??[];if(R.length===0)return;if(D===-1)T=o.value,D=R.length-1;else if(D>0)D-=1;else return;const se=R[D];se!==void 0&&(o.value=se)}function H(){const R=w.value?.history??[];if(D!==-1)if(D{m.value?.focus()})}function P(){const R=p.value;if(!R)return;R.scrollHeight-R.scrollTop-R.clientHeight<40&&(R.scrollTop=R.scrollHeight)}return Oe(()=>t.store.activeLines.value,P),Oe(()=>t.sessionId,()=>{b()}),mt(()=>{b()}),(R,se)=>(a(),c("div",h7,[v.value?(a(),c("div",g7,[M(qt,{size:"sm"}),r("span",null,d(l(n)("terminal.loading")),1)])):h.value.length===0?(a(),c("div",y7,[r("span",null,d(l(n)("terminal.empty")),1),M(Ne,{variant:"secondary",size:"sm",loading:i.value,onClick:se[0]||(se[0]=ae=>y())},{default:W(()=>[ue(d(l(n)("terminal.newTerminal")),1)]),_:1},8,["loading"])])):(a(),c(ge,{key:2},[r("div",k7,[h.value.length>1?(a(),c("div",{key:0,class:"term-tabs",role:"tablist","aria-label":l(n)("terminal.dockTerminal")},[(a(!0),c(ge,null,Te(h.value,(ae,ve)=>(a(),c("button",{key:ae.id,class:fe(["term-tab",{active:ae.id===t.store.activeId.value}]),type:"button",role:"tab","aria-selected":ae.id===t.store.activeId.value,onClick:me=>S(ae.id)},[M(Bo,{status:ae.status},null,8,["status"]),r("span",S7,"#"+d(ve+1),1),M(et,{size:"sm",label:l(n)("terminal.closeTerminal"),disabled:u.value.has(ae.id),onClick:Re(me=>E(ae.id),["stop"])},{default:W(()=>[M(le,{name:"close",size:"sm"})]),_:1},8,["label","disabled","onClick"])],10,w7))),128))],8,b7)):A("",!0),M(et,{class:"term-add",label:l(n)("terminal.newTerminal"),disabled:i.value,onClick:se[1]||(se[1]=ae=>y())},{default:W(()=>[M(le,{name:"plus",size:"sm"})]),_:1},8,["label","disabled"])]),f.value?(a(),c("div",C7,d(f.value),1)):A("",!0),w.value?.status==="exited"?(a(),c("div",_7,d(l(n)("terminal.exited",{code:_.value})),1)):A("",!0),w.value?(a(),c("pre",{key:2,ref_key:"preRef",ref:p,class:"term-output"},d(I.value),513)):A("",!0),r("div",$7,[se[6]||(se[6]=r("span",{class:"term-prompt"},"$",-1)),ht(r("input",{ref_key:"inputRef",ref:m,"onUpdate:modelValue":se[2]||(se[2]=ae=>o.value=ae),class:"term-input",disabled:!w.value||w.value.status==="exited",placeholder:l(n)("terminal.inputPlaceholder"),onKeydown:[se[3]||(se[3]=An(Re(ae=>L(),["prevent"]),["enter"])),se[4]||(se[4]=An(Re(ae=>F(),["prevent"]),["up"])),se[5]||(se[5]=An(Re(ae=>H(),["prevent"]),["down"]))]},null,40,M7),[[On,o.value]])])],64))]))}}),I7=Pe(x7,[["__scopeId","data-v-4d134005"]]);function A7(e){const t=["cancel"];return e==="active"?t.unshift("pause"):(e==="paused"||e==="blocked")&&t.unshift("resume"),t}function T7(e){const t=Math.max(0,Math.round(e/1e3)),n=Math.floor(t/60),s=t%60;return n<=0?`${s}s`:n<60?`${n}m ${s}s`:`${Math.floor(n/60)}h ${n%60}m`}const P7={class:"ui-empty"},E7={key:0,class:"ui-empty__icon","aria-hidden":"true"},L7={key:1,class:"ui-empty__title"},B7={key:2,class:"ui-empty__hint"},R7=xe({__name:"EmptyState",props:{title:{},hint:{}},setup(e){return(t,n)=>(a(),c("div",P7,[t.$slots.icon?(a(),c("span",E7,[gt(t.$slots,"icon",{},void 0,!0)])):A("",!0),e.title?(a(),c("div",L7,d(e.title),1)):A("",!0),e.hint?(a(),c("div",B7,d(e.hint),1)):A("",!0),gt(t.$slots,"default",{},void 0,!0)]))}}),Qo=Pe(R7,[["__scopeId","data-v-38e00944"]]),O7={class:"goal-panel"},D7={key:0,class:"gp-head"},z7={class:"gp-title-row"},F7={class:"gp-kicker"},N7=["title"],q7=["title"],W7={class:"gp-actions"},H7={key:0,class:"gp-criterion"},U7={class:"gp-criterion-label"},V7={class:"gp-criterion-text"},j7=xe({__name:"GoalPanel",props:{goal:{}},emits:["controlGoal"],setup(e,{emit:t}){const n=t,{t:s}=We(),{confirm:o}=vo();function i(m){switch(m){case"active":return s("status.goalStatusActive");case"paused":return s("status.goalStatusPaused");case"blocked":return s("status.goalStatusBlocked");case"complete":return s("status.goalStatusComplete")}}function u(m){switch(m){case"active":return"success";case"blocked":return"danger";case"paused":return"warning";case"complete":return"neutral"}}async function p(){await o({title:s("status.goalCancel"),message:s("status.goalCancelConfirm"),confirmLabel:s("status.goalCancelConfirmYes"),cancelLabel:s("status.goalCancelConfirmNo"),variant:"danger"})&&n("controlGoal","cancel")}return(m,h)=>(a(),c("div",O7,[e.goal?(a(),c("div",D7,[r("div",z7,[M(le,{class:"gp-icon",name:"target",size:"md"}),r("span",F7,d(l(s)("status.goalLabel")),1),r("span",{class:"gp-objective",title:e.goal.objective},d(e.goal.objective),9,N7),M(Nt,{variant:u(e.goal.status),size:"sm",class:"gp-status"},{default:W(()=>[ue(d(i(e.goal.status)),1)]),_:1},8,["variant"]),r("span",{class:"gp-elapsed",title:`${e.goal.wallClockMs} ms`},[M(le,{name:"clock",size:"sm"}),ue(" "+d(l(T7)(e.goal.wallClockMs)),1)],8,q7),r("div",W7,[(a(!0),c(ge,null,Te(l(A7)(e.goal.status),w=>(a(),G(et,{key:w,size:"md",label:l(s)(`status.goal${w==="resume"?"Resume":w==="pause"?"Pause":"Cancel"}`),class:"gp-action",onClick:I=>w==="cancel"?p():n("controlGoal",w)},{default:W(()=>[M(le,{name:w==="resume"?"play":w==="pause"?"pause":"close"},null,8,["name"])]),_:2},1032,["label","onClick"]))),128))])]),e.goal.completionCriterion?(a(),c("div",H7,[r("span",U7,d(l(s)("workspace.doneWhen")),1),r("p",V7,d(e.goal.completionCriterion),1)])):A("",!0)])):(a(),G(Qo,{key:1,title:l(s)("status.goalEmptyTitle"),hint:l(s)("status.goalEmptyHint")},{icon:W(()=>[M(le,{name:"target"})]),_:1},8,["title","hint"]))]))}}),K7=Pe(j7,[["__scopeId","data-v-d3a415b3"]]);function G7(e){return typeof e=="string"&&e.toLowerCase()==="exitplanmode"}function Q7(e){for(let t=e.length-1;t>=0;t--){const n=e[t]?.tools;if(!(n===void 0||n.length===0)){for(let s=n.length-1;s>=0;s--)if(G7(n[s]?.name))return n[s].id}}}function Y7(e,t,n,s,o){return n!==null?{kind:"plan",plan:n}:t==="loading"||e!==void 0&&t==="idle"?{kind:"loading"}:{kind:"empty",armed:s||o}}const Z7={class:"plan-panel"},X7={key:0,class:"pp-loading",role:"status"},J7={class:"pp-plan-wrap"},eI={key:0,class:"pp-path"},tI={class:"pp-plan"},nI={key:0,class:"pp-review"},sI={class:"pp-state"},oI={key:0,class:"pp-option"},iI={key:1,class:"pp-feedback"},aI=xe({__name:"PlanPanel",props:{sessionId:{},toolCallId:{},planMode:{type:Boolean,default:!1},planArmed:{type:Boolean,default:!1}},setup(e){const t=e,{t:n}=We(),s=x("idle"),o=x(null);let i=0;async function u(){const h=t.sessionId,w=t.toolCallId,I=++i;if(o.value=null,!h||!w){s.value="settled";return}s.value="loading";const v=await Qc(h,w);I===i&&(o.value=v,s.value="settled")}Oe(()=>[t.sessionId,t.toolCallId],u,{immediate:!0});function p(h){switch(h){case"approved":return n("tools.plan.approved");case"rejected":return n("tools.plan.rejected");case"cancelled":return n("tools.plan.cancelled");case"pending":return n("tools.plan.pending")}}const m=$(()=>Y7(t.toolCallId,s.value,o.value,t.planMode,t.planArmed));return(h,w)=>(a(),c("div",Z7,[m.value.kind==="loading"?(a(),c("div",X7,[M(qt,{size:"sm"}),r("span",null,d(l(n)("tools.plan.loading")),1)])):m.value.kind==="plan"?(a(),c(ge,{key:1},[r("div",J7,[m.value.plan.path?(a(),c("p",eI,d(m.value.plan.path),1)):A("",!0),r("pre",tI,d(m.value.plan.plan),1)]),m.value.plan.review?(a(),c("div",nI,[r("span",sI,d(p(m.value.plan.review.state)),1),m.value.plan.review.selectedOption?(a(),c("span",oI,d(m.value.plan.review.selectedOption),1)):A("",!0),m.value.plan.review.feedback?(a(),c("span",iI," “"+d(m.value.plan.review.feedback)+"” ",1)):A("",!0)])):A("",!0)],64)):(a(),G(Qo,{key:2,title:m.value.armed?l(n)("status.planEmptyArmed"):l(n)("status.planEmptyIdle")},{icon:W(()=>[M(le,{name:"file-edit"})]),_:1},8,["title"]))]))}}),lI=Pe(aI,[["__scopeId","data-v-9073f2b6"]]),rI={class:"dock-work-head"},uI={key:0,class:"dock-work-tab static"},cI={key:1,class:"dock-work-tab static"},dI={key:2,class:"dock-work-tab static"},pI={key:3,class:"dock-work-tab static"},fI={key:4,class:"dock-work-tab static"},mI={key:5,class:"dock-work-tab static"},vI={class:"dock-work-body"},hI={class:"dw-count"},gI={class:"dw-count"},yI={class:"dw-count"},kI={key:0,class:"dw-count"},bI=xe({__name:"ChatDock",props:{sessionId:{},running:{type:Boolean},starting:{type:Boolean},queued:{},searchFiles:{type:Function},uploadImage:{type:Function},status:{},thinking:{},planMode:{type:Boolean},planArmed:{type:Boolean},swarmMode:{type:Boolean},supermoonMode:{type:Boolean},goalMode:{type:Boolean},activationBadges:{},models:{},starredIds:{},skills:{},goal:{},goalExpandSignal:{},planToolCallId:{},dockPanel:{},bashTasks:{},subagentTasks:{},bashRunning:{},subagentRunning:{},todoDoneCount:{},hasDockWork:{type:Boolean},todos:{},pendingQuestion:{},questionBusyKind:{},pendingApproval:{},approvalBusy:{type:Boolean},terminal:{},mobile:{type:Boolean}},emits:["submit","steer","command","interrupt","setPermission","setThinking","togglePlan","toggleSwarm","toggleSupermoon","toggleGoal","dismissPlan","controlGoal","focusGoal","compact","pickModel","selectModel","answer","dismiss","approval","cancelTask","toggle-dock-panel","close-dock-panel","openAgent"],setup(e,{expose:t,emit:n}){const s=e,o=n,{t:i}=We(),u=$(()=>s.terminal!==void 0&&s.sessionId!==void 0),p=$(()=>s.terminal?.terminals.value.length??0),m=$(()=>s.goal!==null&&s.goal!==void 0&&s.goal.status!=="complete"||s.goalMode===!0),h=$(()=>s.planMode===!0||s.planArmed===!0),w=$(()=>s.planMode?i("status.planModeOn"):s.planArmed?i("status.planArmed"):""),I=x(null),v=x(null),f=x(null),_=x(null);function g(D){return I.value?(I.value.loadForEdit(D),!0):!1}function b(D){I.value?.loadAttachmentsForEdit(D)}function y(){I.value?.focus()}function E(D){if(!s.dockPanel)return;const T=D.target;T&&(v.value?.contains(T)||f.value?.contains(T)||o("close-dock-panel"))}Oe(()=>s.dockPanel,D=>{typeof document>"u"||(document.removeEventListener("mousedown",E,!0),D&&document.addEventListener("mousedown",E,!0))},{immediate:!0});let S=null;function O(){const D=_.value?.offsetHeight??0;document.documentElement.style.setProperty("--dock-h",`${D}px`)}return mt(()=>{typeof ResizeObserver!="function"||!_.value||(S=new ResizeObserver(O),S.observe(_.value),O())}),yt(()=>{typeof document<"u"&&document.removeEventListener("mousedown",E,!0),S?.disconnect(),S=null}),t({loadForEdit:g,loadAttachmentsForEdit:b,focus:y}),(D,T)=>(a(),c("div",{ref_key:"dockRef",ref:_,class:fe(["chat-dock",[e.mobile?"align-mobile":"align-center",{"has-approval":!!e.pendingApproval}]]),onClick:T[30]||(T[30]=Re(()=>{},["stop"]))},[M(Yo,{name:"dock-panel"},{default:W(()=>[e.dockPanel?(a(),c("div",{key:0,ref_key:"workPanelRef",ref:v,class:"dock-work-panel",onClick:T[4]||(T[4]=Re(()=>{},["stop"]))},[r("div",rI,[e.dockPanel==="bash"?(a(),c("span",uI,d(l(i)("tasks.dockBash"))+" · "+d(e.bashRunning)+" "+d(l(i)("tasks.running")),1)):e.dockPanel==="subagent"?(a(),c("span",cI,d(l(i)("tasks.dockSubagent"))+" · "+d(e.subagentRunning)+" "+d(l(i)("tasks.running")),1)):e.dockPanel==="todos"?(a(),c("span",dI,d(l(i)("tasks.dockTodos"))+" · "+d(e.todoDoneCount)+"/"+d(e.todos?.length??0),1)):e.dockPanel==="terminal"?(a(),c("span",pI,d(l(i)("terminal.dockTerminal"))+" · "+d(p.value),1)):e.dockPanel==="goal"?(a(),c("span",fI,[ue(d(l(i)("status.goalLabel")),1),e.goal?(a(),c(ge,{key:0},[ue(" · "+d(e.goal.objective),1)],64)):A("",!0)])):e.dockPanel==="plan"?(a(),c("span",mI,[ue(d(l(i)("status.planLabel")),1),w.value?(a(),c(ge,{key:0},[ue(" · "+d(w.value),1)],64)):A("",!0)])):A("",!0)]),r("div",vI,[e.dockPanel==="bash"?(a(),G(tu,{key:0,variant:"bash",tasks:e.bashTasks,onCancel:T[0]||(T[0]=L=>o("cancelTask",L))},null,8,["tasks"])):e.dockPanel==="subagent"?(a(),G(tu,{key:1,variant:"subagent",tasks:e.subagentTasks,onCancel:T[1]||(T[1]=L=>o("cancelTask",L)),onOpen:T[2]||(T[2]=L=>o("openAgent",L))},null,8,["tasks"])):e.dockPanel==="todos"?(a(),G(v7,{key:2,todos:e.todos??[],"done-count":e.todoDoneCount},null,8,["todos","done-count"])):e.dockPanel==="terminal"&&e.terminal!==void 0?(a(),G(I7,{key:3,"session-id":e.sessionId??"",store:e.terminal},null,8,["session-id","store"])):e.dockPanel==="goal"?(a(),G(K7,{key:4,goal:e.goal??null,onControlGoal:T[3]||(T[3]=L=>o("controlGoal",L))},null,8,["goal"])):e.dockPanel==="plan"?(a(),G(lI,{key:5,"session-id":e.sessionId??"","tool-call-id":e.planToolCallId,"plan-mode":e.planMode,"plan-armed":e.planArmed},null,8,["session-id","tool-call-id","plan-mode","plan-armed"])):A("",!0)])],512)):A("",!0)]),_:1}),e.goal?(a(),G(sx,{key:0,goal:e.goal,"force-expanded":e.goalExpandSignal,onControlGoal:T[5]||(T[5]=L=>o("controlGoal",L))},null,8,["goal","force-expanded"])):A("",!0),e.hasDockWork||u.value||m.value||h.value?(a(),c("div",{key:1,ref_key:"workbarRef",ref:f,class:"dock-workbar"},[e.bashTasks.length>0?(a(),G(Xs,{key:0,active:e.dockPanel==="bash","aria-pressed":e.dockPanel==="bash",onClick:T[6]||(T[6]=L=>o("toggle-dock-panel","bash"))},{default:W(()=>[M(le,{name:"clock",size:"md"}),r("span",null,d(l(i)("tasks.dockBash")),1),r("span",hI,[T[31]||(T[31]=ue("(",-1)),r("b",null,d(e.bashTasks.length),1),T[32]||(T[32]=ue(")",-1))])]),_:1},8,["active","aria-pressed"])):A("",!0),e.subagentTasks.length>0?(a(),G(Xs,{key:1,active:e.dockPanel==="subagent","aria-pressed":e.dockPanel==="subagent",onClick:T[7]||(T[7]=L=>o("toggle-dock-panel","subagent"))},{default:W(()=>[M(le,{name:"sparkles",size:"md"}),r("span",null,d(l(i)("tasks.dockSubagent")),1),r("span",gI,[T[33]||(T[33]=ue("(",-1)),r("b",null,d(e.subagentTasks.length),1),T[34]||(T[34]=ue(")",-1))])]),_:1},8,["active","aria-pressed"])):A("",!0),(e.todos?.length??0)>0?(a(),G(Xs,{key:2,active:e.dockPanel==="todos","aria-pressed":e.dockPanel==="todos",onClick:T[8]||(T[8]=L=>o("toggle-dock-panel","todos"))},{default:W(()=>[M(le,{name:"check-list",size:"md"}),r("span",null,d(l(i)("tasks.dockTodos")),1),r("span",yI,[T[35]||(T[35]=ue("(",-1)),r("b",null,d(e.todoDoneCount)+"/"+d(e.todos?.length??0),1),T[36]||(T[36]=ue(")",-1))])]),_:1},8,["active","aria-pressed"])):A("",!0),u.value?(a(),G(Xs,{key:3,active:e.dockPanel==="terminal","aria-pressed":e.dockPanel==="terminal",onClick:T[9]||(T[9]=L=>o("toggle-dock-panel","terminal"))},{default:W(()=>[M(le,{name:"terminal",size:"md"}),r("span",null,d(l(i)("terminal.dockTerminal")),1),p.value>0?(a(),c("span",kI,[T[37]||(T[37]=ue("(",-1)),r("b",null,d(p.value),1),T[38]||(T[38]=ue(")",-1))])):A("",!0)]),_:1},8,["active","aria-pressed"])):A("",!0),m.value?(a(),G(Xs,{key:4,active:e.dockPanel==="goal","aria-pressed":e.dockPanel==="goal",onClick:T[10]||(T[10]=L=>o("toggle-dock-panel","goal"))},{default:W(()=>[M(le,{name:"target",size:"md"}),r("span",null,d(l(i)("status.goalLabel")),1)]),_:1},8,["active","aria-pressed"])):A("",!0),h.value?(a(),G(Xs,{key:5,active:e.dockPanel==="plan","aria-pressed":e.dockPanel==="plan",onClick:T[11]||(T[11]=L=>o("toggle-dock-panel","plan"))},{default:W(()=>[M(le,{name:"file-edit",size:"md"}),r("span",null,d(l(i)("status.planLabel")),1)]),_:1},8,["active","aria-pressed"])):A("",!0)],512)):A("",!0),e.pendingQuestion?(a(),G(Tx,{key:e.pendingQuestion.questionId,question:e.pendingQuestion,"busy-kind":e.questionBusyKind,onAnswer:T[12]||(T[12]=(L,F)=>o("answer",L,F)),onDismiss:T[13]||(T[13]=L=>o("dismiss",L))},null,8,["question","busy-kind"])):e.pendingApproval?(a(),G(b6,{key:e.pendingApproval.approvalId,class:"dock-approval",block:e.pendingApproval.block,"agent-name":e.pendingApproval.agentName,busy:e.approvalBusy,onDecide:T[14]||(T[14]=L=>o("approval",e.pendingApproval.approvalId,L))},null,8,["block","agent-name","busy"])):(a(),G(vd,{key:4,ref_key:"composerRef",ref:I,"session-id":e.sessionId,running:e.running,queued:e.queued,"search-files":e.searchFiles,"upload-image":e.uploadImage,status:e.status,thinking:e.thinking,"plan-mode":e.planMode,"plan-armed":e.planArmed,"swarm-mode":e.swarmMode,"supermoon-mode":e.supermoonMode,"goal-mode":e.goalMode,goal:e.goal,"activation-badges":e.activationBadges,models:e.models,"starred-ids":e.starredIds,skills:e.skills,starting:e.starting,onSubmit:T[15]||(T[15]=L=>o("submit",L)),onSteer:T[16]||(T[16]=L=>o("steer",L)),onCommand:T[17]||(T[17]=(L,F)=>o("command",L,F)),onInterrupt:T[18]||(T[18]=L=>o("interrupt")),onSetPermission:T[19]||(T[19]=L=>o("setPermission",L)),onSetThinking:T[20]||(T[20]=L=>o("setThinking",L)),onTogglePlan:T[21]||(T[21]=L=>o("togglePlan")),onToggleSwarm:T[22]||(T[22]=L=>o("toggleSwarm")),onToggleSupermoon:T[23]||(T[23]=L=>o("toggleSupermoon")),onToggleGoal:T[24]||(T[24]=L=>o("toggleGoal")),onDismissPlan:T[25]||(T[25]=L=>o("dismissPlan")),onFocusGoal:T[26]||(T[26]=L=>o("focusGoal")),onCompact:T[27]||(T[27]=L=>o("compact")),onPickModel:T[28]||(T[28]=L=>o("pickModel")),onSelectModel:T[29]||(T[29]=L=>o("selectModel",L))},null,8,["session-id","running","queued","search-files","upload-image","status","thinking","plan-mode","plan-armed","swarm-mode","supermoon-mode","goal-mode","goal","activation-badges","models","starred-ids","skills","starting"]))],2))}}),wI=Pe(bI,[["__scopeId","data-v-bda6bf1b"]]),SI=["type","value","placeholder","disabled","readonly"],CI=xe({__name:"Input",props:{modelValue:{},size:{default:"md"},type:{default:"text"},placeholder:{},disabled:{type:Boolean},readonly:{type:Boolean},error:{type:Boolean}},emits:["update:modelValue","focus","blur"],setup(e,{expose:t,emit:n}){const s=n,o=x();function i(m){s("update:modelValue",m.target.value)}function u(){o.value?.focus()}function p(){o.value?.select()}return t({focus:u,select:p,el:o}),(m,h)=>(a(),c("input",{ref_key:"el",ref:o,class:fe(["ui-input",[`ui-input--${e.size}`,{"has-error":e.error}]]),type:e.type,value:e.modelValue,placeholder:e.placeholder,disabled:e.disabled,readonly:e.readonly,onInput:i,onFocus:h[0]||(h[0]=w=>m.$emit("focus",w)),onBlur:h[1]||(h[1]=w=>m.$emit("blur",w))},null,42,SI))}}),Un=Pe(CI,[["__scopeId","data-v-340f0da2"]]),_I={class:"conv-search",role:"search"},$I={key:0,class:"conv-search-count"},MI={key:1,class:"conv-search-count conv-search-none"},xI=xe({__name:"ConversationSearch",props:{query:{},total:{},activeIndex:{}},emits:["update:query","next","prev","close"],setup(e,{emit:t}){const{t:n}=We(),s=t,o=x(null);mt(()=>{o.value?.focus()});function i(u){u.key==="Enter"?(u.preventDefault(),u.shiftKey?s("prev"):s("next")):u.key==="Escape"&&(u.preventDefault(),u.stopPropagation(),s("close"))}return(u,p)=>(a(),c("div",_I,[M(le,{class:"conv-search-icon",name:"search",size:"sm"}),M(Un,{ref_key:"inputRef",ref:o,class:"conv-search-input",size:"sm",type:"text","model-value":e.query,placeholder:l(n)("conversation.searchPlaceholder"),"aria-label":l(n)("conversation.searchPlaceholder"),autocomplete:"off",spellcheck:"false","onUpdate:modelValue":p[0]||(p[0]=m=>s("update:query",m)),onKeydown:i},null,8,["model-value","placeholder","aria-label"]),e.total>0?(a(),c("span",$I,d(l(n)("conversation.searchPosition",{current:Math.max(e.activeIndex,0)+1,total:e.total})),1)):e.query.trim().length>0?(a(),c("span",MI,d(l(n)("conversation.searchNoResults")),1)):A("",!0),M(et,{size:"sm",class:"conv-search-prev",label:l(n)("conversation.searchPrev"),disabled:e.total===0,onClick:p[1]||(p[1]=m=>s("prev"))},{default:W(()=>[M(le,{name:"chevron-up",size:"sm"})]),_:1},8,["label","disabled"]),M(et,{size:"sm",class:"conv-search-next",label:l(n)("conversation.searchNext"),disabled:e.total===0,onClick:p[2]||(p[2]=m=>s("next"))},{default:W(()=>[M(le,{name:"chevron-down",size:"sm"})]),_:1},8,["label","disabled"]),M(et,{size:"sm",class:"conv-search-close",label:l(n)("conversation.searchClose"),onClick:p[3]||(p[3]=m=>s("close"))},{default:W(()=>[M(le,{name:"close",size:"sm"})]),_:1},8,["label"])]))}}),II=Pe(xI,[["__scopeId","data-v-c521ac2e"]]),AI=["aria-label","aria-hidden"],TI={class:"toc-scroll"},PI=["onClick"],EI={class:"toc-label"},LI=240,BI=xe({__name:"ConversationToc",props:{items:{},activeTurnId:{},mobile:{type:Boolean},sessionLoading:{type:Boolean},occluded:{type:Boolean}},emits:["select"],setup(e,{emit:t}){const n=e,s=t,{t:o}=We(),i=x(null),u=x(!0);let p=null;function m(){const w=i.value,I=w?.offsetParent;if(!w||!I)return;const v=w.getBoundingClientRect().left,f=I.getBoundingClientRect().right;u.value=f-v>=LI}const h=$(()=>!n.mobile&&!n.sessionLoading&&n.items.length>1);return Oe(h,w=>{p?.disconnect(),p=null,w&&Ue(()=>{const I=i.value,v=I?.offsetParent;!I||!v||(typeof ResizeObserver<"u"&&(p=new ResizeObserver(m),p.observe(v)),m())})},{immediate:!0}),Tn(()=>{p?.disconnect(),p=null}),(w,I)=>h.value?(a(),c("nav",{key:0,ref_key:"navRef",ref:i,class:fe(["conversation-toc",{"toc-clipped":!u.value||e.occluded}]),"aria-label":l(o)("conversation.toc"),"aria-hidden":u.value&&!e.occluded?void 0:!0},[r("div",TI,[(a(!0),c(ge,null,Te(e.items,v=>(a(),c("button",{key:v.id,type:"button",class:fe(["toc-row",{active:e.activeTurnId===v.id}]),onClick:f=>s("select",v.id)},[I[0]||(I[0]=r("span",{class:"toc-bar"},null,-1)),r("span",EI,d(v.title),1)],10,PI))),128))])],10,AI)):A("",!0)}}),RI=Pe(BI,[["__scopeId","data-v-3f1c1f66"]]),OI=5;function DI(e,t,n,s=OI){if(n||e.length<=s)return e;const o=e.slice(0,s);if(t&&!o.some(i=>i.id===t)){const i=e.find(u=>u.id===t);i&&(o[s-1]=i)}return o}const Ll={text:"",attachments:[]};Object.freeze(Ll);Object.freeze(Ll.attachments);function zI(e){return e.role==="user"?e.text:e.role!=="assistant"?"":e.blocks?e.blocks.filter(t=>t.kind==="text").map(t=>t.text).join(`
-`):e.text}function FI(e,t){const n=t.trim();if(n.length===0)return[];const s=n.toLowerCase(),o=[];return e.forEach((i,u)=>{const p=zI(i);if(p.length===0)return;const m=p.toLowerCase();let h=m.indexOf(s);for(;h!==-1;)o.push({turnId:i.id,turnIndex:u,start:h,end:h+n.length}),h=m.indexOf(s,h+n.length)}),o}function NI(e,t){return t<=0?-1:e<0?0:(e+1)%t}function qI(e,t){return t<=0?-1:e<0?t-1:(e-1+t)%t}const WI={class:"chat-layout"},HI={class:"empty-hint"},UI={key:0,class:"empty-hint-text"},VI={key:1,class:"ws-pick"},jI={class:"ws-pick-name"},KI={key:1,class:"ws-pick-menu"},GI=["onClick"],QI={class:"ws-pick-item-name"},YI={class:"ws-pick-item-path"},ZI=["aria-label"],XI={key:0,class:"abort-toast",role:"status","aria-live":"polite"},JI={class:"abort-toast-text"},_a=80,nu=1e3,eA=420,tA=3e3,nA=xe({__name:"ConversationPane",props:{turns:{},sessionId:{},approvals:{},gitInfo:{},tasks:{},todos:{},goal:{},activationBadges:{},status:{},thinking:{},planMode:{type:Boolean},planArmed:{type:Boolean},swarmMode:{type:Boolean},supermoonMode:{type:Boolean},goalMode:{type:Boolean},questions:{},pendingQuestionActions:{},pendingApprovalActions:{},running:{type:Boolean},turnActive:{type:Boolean},queued:{},searchFiles:{type:Function},uploadImage:{type:Function},changes:{},fileReloadKey:{},working:{type:Boolean},modelRetry:{},starting:{type:Boolean},fastMoon:{type:Boolean},mobile:{type:Boolean},sessionLoading:{type:Boolean},compaction:{},hasMoreMessages:{type:Boolean},loadingMore:{type:Boolean},loadingMoreError:{type:Boolean},loadOlderMessages:{type:Function},models:{},starredIds:{},skills:{},workspaceName:{},workspaceRoot:{},gitDiffStats:{},workspaces:{},activeWorkspaceId:{},sessionTitle:{},pr:{},conversationToc:{type:Boolean},terminal:{}},emits:["submit","steer","approval","cancelTask","answer","dismiss","command","interrupt","unqueue","editQueued","reorderQueue","steerQueued","setPermission","setThinking","togglePlan","toggleSwarm","toggleSupermoon","toggleGoal","dismissPlan","controlGoal","compact","pickModel","selectModel","openFile","openMedia","openThinking","openCompaction","openAgent","openToolDiff","openChanges","refreshGitStatus","editMessage","selectWorkspace","addWorkspace","openPr","renameSession","forkSession","archiveSession","exportSession","resumeTurn"],setup(e,{expose:t,emit:n}){const{t:s}=We(),o=e,i=n,u=x(!1),p=x(!1),m=$(()=>o.workspaces?.find(K=>K.id===o.activeWorkspaceId)?.name??o.workspaceName??""),h=$(()=>(o.workspaces?.length??0)>0),w=$(()=>DI(o.workspaces??[],o.activeWorkspaceId,p.value)),I=$(()=>(o.workspaces?.length??0)-w.value.length);Oe(u,U=>{U||(p.value=!1)});function v(U){u.value=!1,U!==o.activeWorkspaceId&&i("selectWorkspace",U)}ao(qe.contentAlign);const f=x(null),_=x(null),g=x(null),b=x(!1),y=x(0);let E=null;function S(U,K){const ce=g.value??_.value;return!ce||ce.loadForEdit(U)===!1?!1:(ce.loadAttachmentsForEdit(K??[]),!0)}function O(){b.value=!0,E!==null&&clearTimeout(E),E=setTimeout(()=>{E=null,b.value=!1},2e3)}function D(){y.value++,se.value="goal"}const T=$(()=>o.tasks.filter(U=>U.kind!=="subagent")),L=$(()=>o.tasks.filter(U=>U.kind==="subagent"&&U.runInBackground)),F=$(()=>T.value.filter(U=>U.state==="run").length),H=$(()=>L.value.filter(U=>U.state==="run").length);function k(U){const K=o.tasks,ce=K.find(we=>we.id===U)??K.find(we=>we.parentToolCallId===U);if(ce)return ce.id;const te=K.filter(we=>we.kind==="subagent"&&!we.parentToolCallId);if(te.length===1)return te[0].id}xo("resolveAgentTaskId",k),xo("pinScroll",Qe),xo("sessionId",()=>o.sessionId);const P=$(()=>(o.todos??[]).filter(U=>U.status==="done").length),R=$(()=>T.value.length>0||L.value.length>0||(o.todos?.length??0)>0||(o.queued?.length??0)>0),se=x(null),ae=$(()=>o.gitInfo?o.changes?.length??0:0),ve=$(()=>Q7(o.turns));function me(U){se.value=se.value===U?null:U}function Z(){se.value=null}Oe(R,U=>{!U&&se.value!=="terminal"&&se.value!=="goal"&&se.value!=="plan"&&Z()});function oe(U){if(U.role==="compaction")return s("conversation.compactedPlain");if(U.role==="user"){if(U.skillActivation)return`/${U.skillActivation.name}`;if(U.pluginCommand)return`/${U.pluginCommand.pluginId}:${U.pluginCommand.commandName}`;const ce=U.text.trim().replaceAll(/\s+/g," ");return ce.length>0?ce:"user"}const K=(U.text||U.thinking||"").trim().replaceAll(/\s+/g," ");return K.length>0?K:(U.tools?.length??0)>0?`${U.tools.length} tools`:"kimi"}const ie=$(()=>o.turns.filter(U=>U.role==="user").map((U,K)=>({id:U.id,role:U.role,no:K+1,title:oe(U)}))),ke=x(null);function $e(){const U=He.value;if(!U)return;const K=U.querySelectorAll(".turn-anchor[data-turn-id]");if(K.length===0)return;const ce=ie.value;if(ce.length===0)return;const te=new Set(ce.map(fn=>fn.id));if(En()<=_a){ke.value=ce[ce.length-1].id;return}const we=U.getBoundingClientRect(),_e=we.height/2;let Xe=null;K.forEach(fn=>{const sn=fn.dataset.turnId;if(!sn||!te.has(sn))return;fn.getBoundingClientRect().top-we.top<=_e&&(Xe=sn)}),ke.value=Xe??ce[0].id}const he=x(!1),V=x(""),Q=x(0),Ce=$(()=>FI(o.turns,V.value)),re=$(()=>Ce.value.length);function ee(){he.value?pe():he.value=!0}function pe(){he.value=!1,V.value="",Q.value=0}function De(){Q.value=NI(Q.value,re.value)}function X(){Q.value=qI(Q.value,re.value)}Oe(V,()=>{Q.value=0,Y()}),Oe(re,U=>{U===0?Q.value=0:Q.value>=U&&(Q.value=U-1)}),Oe(Q,()=>{Y()});async function Y(){if(re.value===0)return;await Ue();const U=He.value;if(!U)return;const K=U.querySelector(".chat-search-hit--active");if(K){K.scrollIntoView({behavior:"smooth",block:"center"});return}const ce=Math.min(Q.value,re.value-1),te=Ce.value[ce];te&&Xt(te.turnId)}const B=x(!1);let J=0;function Ee(){J||(J=st(()=>{J=0,Le()}))}function Le(){const U=He.value,K=!o.mobile&&o.conversationToc&&U?U.closest(".con")?.querySelector(".conversation-toc"):null,ce=K?.querySelector(".toc-bar");let te=!1;if(U&&K&&ce){const we=ce.getBoundingClientRect(),_e=K.getBoundingClientRect(),Xe=we.left+we.width/2;te=Array.from(U.querySelectorAll(".table-node-wrapper")).some(fn=>{const sn=fn.getBoundingClientRect();return sn.left<=Xe&&Xe<=sn.right&&sn.top<_e.bottom&&sn.bottom>_e.top})}B.value!==te&&(B.value=te)}const it=$(()=>o.questions&&o.questions.length>0?o.questions[0]:void 0),at=$(()=>{const U=it.value;if(U)return o.pendingQuestionActions?.[U.questionId]}),Ge=$(()=>o.approvals&&o.approvals.length>0?o.approvals[0]:void 0),je=$(()=>{const U=Ge.value;return U?!!o.pendingApprovalActions?.[U.approvalId]:!1}),He=x(null),Mt=x(null),wt=x(0),xt=x(0),Jt=$(()=>({"--panes-scrollbar-width":`${wt.value}px`}));function Vt(U){return U instanceof HTMLElement?U:U&&"$el"in U&&U.$el instanceof HTMLElement?U.$el:null}function Dt(){const U=He.value;wt.value=U?Math.max(0,U.offsetWidth-U.clientWidth):0,xt.value=Mt.value?.offsetHeight??0}function ts(U){const K=Vt(U);He.value=K,K&&ne()}function on(U){const K=Vt(U);Mt.value=K??null,U&&"loadForEdit"in U&&typeof U.loadForEdit=="function"&&"focus"in U&&typeof U.focus=="function"?g.value={loadForEdit:U.loadForEdit.bind(U),loadAttachmentsForEdit:"loadAttachmentsForEdit"in U&&typeof U.loadAttachmentsForEdit=="function"?U.loadAttachmentsForEdit.bind(U):()=>{},focus:U.focus.bind(U)}:g.value=null,j()}const ut=x(!0),zt=x(!1);function En(){const U=He.value;return U?U.scrollHeight-U.scrollTop-U.clientHeight:0}let St=0,Mn=0,Yt=0,xn=0,It=0,an=0;function dn(){return Date.now()1?(ut.value=!1,zt.value=!0):ce<=_a&&K>St+1&&(ut.value=!0,zt.value=!1),St=K,Dn()}let Zt=0;function Dn(){Zt||(Zt=st(()=>{Zt=0,$e()}))}function pn(U=!1){const K=He.value;ut.value=!0,zt.value=!1,K&&(!U&&performance.now()({node:_e,top:Vn(U,_e)})),te=ce.findIndex(_e=>_e.top>=K),we=te<0?Math.max(0,ce.length-1):te;return ce.slice(we,we+2).flatMap(_e=>{const Xe=_e.node.dataset.scrollAnchorId,fn=Xe??_e.node.dataset.turnId;return fn?[{kind:Xe?"tool":"turn",id:fn,top:_e.top}]:[]})}const Ln=new Map;function ns(U,K){for(const ce of K.anchors){const te=ce.kind==="tool"?"data-scroll-anchor-id":"data-turn-id",we=U.querySelector(`[${te}="${Tt(ce.id)}"]`);if(we)return Vn(U,we)-ce.top}return U.scrollHeight-K.oldHeight}function Wt(U,K,ce=U.scrollTop){return U.scrollTop=ce+ns(U,K),St=U.scrollTop,U.scrollTop}async function At(){if(!o.sessionId||!o.loadOlderMessages||o.loadingMore||zn.value||!o.hasMoreMessages)return;const U=o.sessionId,K=He.value,ce=K?.scrollTop??0,te={anchors:K?en(K,ce):[],oldHeight:K?.scrollHeight??0};hs(U,!0),Ts();try{if(await Ue(),await o.loadOlderMessages(U),await Ue(),o.sessionId!==U){Ln.set(U,te);return}const we=He.value;if(!we)return;Wt(we,te),Ln.delete(U)}finally{hs(U,!1)}}function Tt(U){return typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(U):U.replaceAll(/["\\]/g,"\\$&")}function Xt(U){const K=He.value;if(!K)return;const ce=K.querySelector(`.turn-anchor[data-turn-id="${Tt(U)}"]`);ce&&(os(),ut.value=!1,zt.value=En()>_a,ce.scrollIntoView({behavior:"smooth",block:"center"}))}function Ft(){const U=He.value;if(!U)return"none";const K=U.firstElementChild,ce=K instanceof HTMLElement?K.offsetHeight:0,te=Mt.value?.offsetHeight??0;return`${U.scrollHeight}:${U.clientHeight}:${ce}:${te}`}function st(U){return typeof requestAnimationFrame=="function"?requestAnimationFrame(U):setTimeout(U,16)}function vt(U){typeof cancelAnimationFrame=="function"?cancelAnimationFrame(U):clearTimeout(U)}let jt=0,Pt=0,Se=null,be=0;function Ve(){return performance.now(){if(Pt=0,performance.now()>=jt||!Se){Se=null;return}const we=Se.getBoundingClientRect().top-be;we&&(ce.scrollTop+=we),Pt=st(te)};Pt=st(te)}function lt(U=36){if(!ut.value&&!dn())return;const K=++an;let ce="",te=0,we=0;It&&(vt(It),It=0);const _e=()=>{if(It=0,K!==an||!ut.value&&!dn())return;pn(!1);const Xe=Ft();te=Xe===ce?te+1:0,ce=Xe,we++,te<3&&we0&&K.length>=U.length&&U.firstId!==K.firstId&&U.lastId===K.lastId&&U.lastTextLen===K.lastTextLen&&U.lastThinkingLen===K.lastThinkingLen&&U.lastToolsLen===K.lastToolsLen&&U.approvalIds===K.approvalIds}const Lt=$(()=>{const U=(o.approvals??[]).map(_e=>_e.approvalId).join(","),K=o.turns,ce=K.at(-1),te=ce?.thinking?.length??0,we=ce?.tools?.reduce((_e,Xe)=>_e+Xe.name.length+(Xe.arg?.length??0)+(Xe.output?.join("").length??0),0)??0;return{length:K.length,firstId:K[0]?.id??"",lastId:ce?.id??"",lastTextLen:ce?.text.length??0,lastThinkingLen:te,lastToolsLen:we,approvalIds:U}});Oe(Lt,async(U,K)=>{if(zn.value&&Et(K,U)){$e();return}await Ue(),ut.value||dn()?pn(U.length{j()}),Oe(()=>o.mobile,async()=>{await Ue(),Dt()});const Kt=new Map;Oe(()=>o.fileReloadKey,async(U,K)=>{const ce=He.value;K&&ce&&Kt.set(String(K),{top:ce.scrollTop,following:ut.value}),os(),await Ue();const te=He.value,we=U?Kt.get(String(U)):void 0;if(we&&te){const _e=Ln.get(String(U)),Xe=_e?Wt(te,_e,we.top):we.top;_e&&Ln.delete(String(U)),ut.value=we.following,te.scrollTop=Xe,St=te.scrollTop,zt.value=!we.following&&En()>1,we.following&<()}else ut.value=!0,St=0,pn(!1),lt();$e()}),Oe(()=>o.sessionLoading,async(U,K)=>{U||!K||(ut.value=!0,await Ue(),lt(),$e())}),Oe(()=>o.turnActive,async(U,K)=>{U||!K||!ut.value&&!dn()||(await Ue(),lt(48),$e())});function tn(){ut.value=!0,zt.value=!1,Mn=Date.now()+nu,Ue(()=>{pn(!0),lt(16)})}function nn(U){tn(),i("submit",U)}function Bn(U){ut.value=!0,zt.value=!1,Mn=Date.now()+nu,i("editMessage",U)}function js(U){const K=o.queued?.[U],ce=K?.text??"";S(ce,K?.attachments)&&i("editQueued",U)}function fs(U){i("reorderQueue",U)}function ss(){i("steer",Ll)}function jn(U,K){tn(),i("answer",U,K)}function hn(U,K){!U||!K||i("approval",U,K)}let gn=null,Ht=null,yn=null,Gt=null,Kn=0,ms=0,kn=0;const vs=x(new Set),zn=$(()=>!!o.sessionId&&vs.value.has(o.sessionId));function hs(U,K){const ce=new Set(vs.value);K?ce.add(U):ce.delete(U),vs.value=ce}function Fn(){zn.value||kn||(kn=st(()=>{kn=0,!zn.value&&(Ve()||(ut.value||dn())&&pn(!1))}))}function Ts(){an++,It&&(vt(It),It=0),kn&&(vt(kn),kn=0)}function os(){const U=He.value;if(Mn=0,Ts(),jt=0,Se=null,U){const K=U.scrollTop;typeof U.scrollTo=="function"?U.scrollTo({top:K,behavior:"auto"}):U.scrollTop=K}xn=0,Yt=Number.NEGATIVE_INFINITY,U&&(St=U.scrollTop)}function is(){const U=He.value;!U||U.scrollHeight-U.clientHeight<=1&&!o.hasMoreMessages||(ut.value=!1,os(),U.scrollHeight-U.clientHeight>1&&(zt.value=!0))}function gs(U){const K=He.value;if(!K)return!1;for(const ce of U.composedPath()){if(ce===K)return!1;if(ce instanceof HTMLElement&&ce.scrollHeight>ce.clientHeight+1&&ce.scrollTop>1)return!0}return!1}function Ps(U){U.defaultPrevented||U.ctrlKey||U.shiftKey||U.deltaY>=0||gs(U)||is()}function Es(U){const K=He.value;if(!K||U.defaultPrevented||U.button!==0||U.pointerType==="touch")return;const ce=K.getBoundingClientRect(),te=K.offsetWidth-K.clientWidth,we=te>0?te:12;U.target===K&&U.clientX>=ce.right-we&&is()}let Nn=null;function ys(U){Nn=U.touches.length===1?U.touches[0].clientY:null}function Rn(U){const K=U.touches.length===1?U.touches[0].clientY:null;K!==null&&Nn!==null&&K>Nn+2&&!gs(U)&&is(),Nn=K}function Ie(){if(!Ht)return;const U=He.value?.firstElementChild??null;U!==yn&&(yn&&Ht.unobserve(yn),yn=U,U&&Ht.observe(U))}function j(){if(!Ht)return;const U=Mt.value;U!==Gt&&(Gt&&Ht.unobserve(Gt),Gt=U,U&&Ht.observe(U))}function ne(){const U=He.value;Dt(),gn&&(gn.disconnect(),U&&gn.observe(U,{childList:!0,subtree:!0,characterData:!0})),Ht&&(Ht.disconnect(),yn=null,Gt=null,U&&Ht.observe(U),Ie(),j()),Kn=U?.scrollHeight??0,ms=U?.clientHeight??0,Ee()}function kt(){Ie(),Fn(),Ee()}function Gn(){typeof document>"u"||document.visibilityState==="visible"&&ut.value&<()}const Qn=x(!1);let ks=null;function ho(){Qn.value=!0,ks!==null&&clearTimeout(ks),ks=setTimeout(()=>{Qn.value=!1},tA)}function Ks(){ho(),i("interrupt")}function bs(U){U.key==="Escape"&&(o.running||o.working)&&(U.preventDefault(),Ks())}function Ls(){ut.value&&Fn()}mt(()=>{Ue(()=>{typeof MutationObserver=="function"&&(gn=new MutationObserver(kt)),typeof ResizeObserver=="function"&&(Ht=new ResizeObserver(()=>{Ee(),Dt();const U=He.value;if(!U)return;const{scrollHeight:K,clientHeight:ce}=U,te=K>Kn+1,we=ce{gn&&gn.disconnect(),Ht&&Ht.disconnect(),kn&&vt(kn),It&&vt(It),Pt&&vt(Pt),J&&vt(J),ks!==null&&clearTimeout(ks),E!==null&&(clearTimeout(E),E=null),typeof document<"u"&&(document.removeEventListener("visibilitychange",Gn),document.removeEventListener("keydown",bs)),window.visualViewport?.removeEventListener("resize",Ls)});function Do(){(g.value??_.value)?.focus()}return t({loadComposerForEdit:S,focusComposer:Do}),(U,K)=>(a(),c("section",{class:fe(["con",{mobile:e.mobile}])},[!e.mobile&&!(e.turns.length===0&&!e.sessionLoading)?(a(),G(N$,{key:0,"session-id":e.sessionId,"workspace-name":e.workspaceName,"workspace-root":e.workspaceRoot,"session-title":e.sessionTitle,branch:e.gitInfo?.branch,ahead:e.gitInfo?.ahead,behind:e.gitInfo?.behind,"changes-count":ae.value,"git-diff-stats":e.gitDiffStats,"is-git-repo":!!e.gitInfo,pr:e.pr,copied:b.value,"search-active":he.value,onOpenChanges:K[0]||(K[0]=ce=>i("openChanges")),onCopyAll:K[1]||(K[1]=ce=>f.value?.copyConversation()),onCopyFinalSummary:K[2]||(K[2]=ce=>f.value?.copyFinalSummary()),onOpenPr:K[3]||(K[3]=ce=>e.pr&&i("openPr",e.pr.url)),onRenameSession:K[4]||(K[4]=(ce,te)=>i("renameSession",ce,te)),onForkSession:K[5]||(K[5]=ce=>i("forkSession",ce)),onArchiveSession:K[6]||(K[6]=ce=>i("archiveSession",ce)),onExportSession:K[7]||(K[7]=ce=>i("exportSession",ce)),onToggleSearch:ee},null,8,["session-id","workspace-name","workspace-root","session-title","branch","ahead","behind","changes-count","git-diff-stats","is-git-repo","pr","copied","search-active"])):A("",!0),he.value?(a(),G(II,{key:1,query:V.value,total:re.value,"active-index":Q.value,"onUpdate:query":K[8]||(K[8]=ce=>V.value=ce),onNext:De,onPrev:X,onClose:pe},null,8,["query","total","active-index"])):A("",!0),e.conversationToc?(a(),G(RI,{key:2,items:ie.value,"active-turn-id":ke.value,mobile:e.mobile,"session-loading":e.sessionLoading,occluded:B.value,onSelect:Xt},null,8,["items","active-turn-id","mobile","session-loading","occluded"])):A("",!0),r("div",WI,[r("div",{ref:ts,class:fe(["panes chat-scroll",{"is-following":ut.value,"history-prepending":zn.value}]),onScrollPassive:vn,onWheelPassive:Ps,onPointerdownPassive:Es,onTouchstartPassive:ys,onTouchmovePassive:Rn},[r("div",{class:fe(["content-wrap",[e.mobile?"align-mobile":"align-center"]])},[e.turns.length===0&&!e.sessionLoading?(a(),c(ge,{key:0},[K[56]||(K[56]=r("div",{class:"empty-spacer"},null,-1)),r("div",HI,[r("span",{class:fe(["empty-hint-title",{"is-starting":e.starting}])},[e.starting?(a(),G(qt,{key:0,size:"sm"})):A("",!0),r("span",null,d(e.starting?l(s)("conversation.starting"):l(s)("composer.emptyConversationTitle")),1)],2),e.starting?A("",!0):(a(),c("span",UI,d(l(s)("composer.emptyConversation")),1)),h.value&&!e.starting?(a(),c("div",VI,[M(nt,{text:l(s)("conversation.switchWorkspace")},{default:W(()=>[r("button",{type:"button",class:"ws-pick-btn",onClick:K[9]||(K[9]=Re(ce=>u.value=!u.value,["stop"]))},[M(le,{name:"folder",size:"sm"}),r("span",jI,d(m.value),1),M(le,{class:fe(["ws-pick-chev",{open:u.value}]),name:"chevron-down",size:"sm"},null,8,["class"])])]),_:1},8,["text"]),u.value?(a(),c("div",{key:0,class:"ws-pick-backdrop",onClick:K[10]||(K[10]=ce=>u.value=!1)})):A("",!0),u.value?(a(),c("div",KI,[(a(!0),c(ge,null,Te(w.value,ce=>(a(),c("button",{key:ce.id,type:"button",class:fe(["ws-pick-item",{on:ce.id===e.activeWorkspaceId}]),onClick:Re(te=>v(ce.id),["stop"])},[r("span",QI,d(ce.name),1),r("span",YI,d(ce.shortPath),1)],10,GI))),128)),I.value>0?(a(),c("button",{key:0,type:"button",class:"ws-pick-item ws-pick-more",onClick:K[11]||(K[11]=Re(ce=>p.value=!p.value,["stop"]))},[r("span",null,d(l(s)("conversation.moreWorkspaces",{count:I.value})),1)])):A("",!0),K[55]||(K[55]=r("div",{class:"ws-pick-divider"},null,-1)),r("button",{type:"button",class:"ws-pick-action",onClick:K[12]||(K[12]=Re(ce=>{u.value=!1,i("addWorkspace")},["stop"]))},[M(le,{name:"plus",size:"sm"}),r("span",null,d(l(s)("conversation.addWorkspace")),1)])])):A("",!0)])):e.starting?A("",!0):(a(),c("button",{key:2,type:"button",class:"empty-add-workspace",onClick:K[13]||(K[13]=ce=>i("addWorkspace"))},[M(le,{name:"folder-plus",size:"sm"}),r("span",null,d(l(s)("conversation.addWorkspace")),1)]))]),M(vd,{ref_key:"emptyComposerRef",ref:_,class:"empty-composer","session-id":e.sessionId,running:e.running,queued:e.queued,"search-files":e.searchFiles,"upload-image":e.uploadImage,status:e.status,thinking:e.thinking,"plan-mode":e.planMode,"plan-armed":e.planArmed,"swarm-mode":e.swarmMode,"supermoon-mode":e.supermoonMode,"goal-mode":e.goalMode,goal:e.goal,"activation-badges":e.activationBadges,models:e.models,"starred-ids":e.starredIds,skills:e.skills,starting:e.starting,"hide-context":"",onSubmit:nn,onSteer:K[14]||(K[14]=ce=>i("steer",ce)),onCommand:K[15]||(K[15]=(ce,te)=>i("command",ce,te)),onInterrupt:Ks,onUnqueue:K[16]||(K[16]=ce=>i("unqueue",ce)),onEditQueued:K[17]||(K[17]=ce=>i("editQueued",ce)),onSetPermission:K[18]||(K[18]=ce=>i("setPermission",ce)),onSetThinking:K[19]||(K[19]=ce=>i("setThinking",ce)),onTogglePlan:K[20]||(K[20]=ce=>i("togglePlan")),onToggleSwarm:K[21]||(K[21]=ce=>i("toggleSwarm")),onToggleSupermoon:K[22]||(K[22]=ce=>i("toggleSupermoon")),onToggleGoal:K[23]||(K[23]=ce=>i("toggleGoal")),onDismissPlan:K[24]||(K[24]=ce=>i("dismissPlan")),onFocusGoal:D,onCompact:K[25]||(K[25]=ce=>i("compact")),onPickModel:K[26]||(K[26]=ce=>i("pickModel")),onSelectModel:K[27]||(K[27]=ce=>i("selectModel",ce))},null,8,["session-id","running","queued","search-files","upload-image","status","thinking","plan-mode","plan-armed","swarm-mode","supermoon-mode","goal-mode","goal","activation-badges","models","starred-ids","skills","starting"]),K[57]||(K[57]=r("div",{class:"empty-spacer"},null,-1))],64)):(a(),G(ad,{ref_key:"chatPaneRef",ref:f,key:e.fileReloadKey??"no-session",turns:e.turns,approvals:e.approvals,"turn-active":e.turnActive,working:e.working,retry:e.modelRetry,"fast-moon":e.fastMoon,"session-loading":e.sessionLoading,compaction:e.compaction,"has-more-messages":e.hasMoreMessages,"loading-more":e.loadingMore,"loading-more-error":e.loadingMoreError,"is-following":ut.value,"tool-diff-panel":!0,queued:e.queued,"search-query":V.value,"search-active-index":he.value?Q.value:-1,onOpenFile:K[28]||(K[28]=ce=>i("openFile",ce)),onOpenMedia:K[29]||(K[29]=ce=>i("openMedia",ce)),onCopyConversationCopied:O,onOpenThinking:K[30]||(K[30]=ce=>i("openThinking",ce)),onOpenCompaction:K[31]||(K[31]=ce=>i("openCompaction",ce)),onOpenAgent:K[32]||(K[32]=ce=>i("openAgent",ce)),onOpenToolDiff:K[33]||(K[33]=ce=>i("openToolDiff",ce)),onEditMessage:Bn,onLoadOlderMessages:At,onUnqueue:K[34]||(K[34]=ce=>i("unqueue",ce)),onEditQueued:js,onReorderQueue:fs,onSteerQueued:ss,onResumeTurn:K[35]||(K[35]=ce=>i("resumeTurn",ce))},null,8,["turns","approvals","turn-active","working","retry","fast-moon","session-loading","compaction","has-more-messages","loading-more","loading-more-error","is-following","queued","search-query","search-active-index"]))],2)],34),e.turns.length===0&&!e.sessionLoading?A("",!0):(a(),G(wI,{key:0,ref:on,style:rt(Jt.value),"session-id":e.sessionId,running:e.running,starting:e.starting,queued:e.queued,"search-files":e.searchFiles,"upload-image":e.uploadImage,status:e.status,thinking:e.thinking,"plan-mode":e.planMode,"plan-armed":e.planArmed,"swarm-mode":e.swarmMode,"supermoon-mode":e.supermoonMode,"goal-mode":e.goalMode,"activation-badges":e.activationBadges,models:e.models,"starred-ids":e.starredIds,skills:e.skills,goal:e.goal,"goal-expand-signal":y.value,"plan-tool-call-id":ve.value,"dock-panel":se.value,"bash-tasks":T.value,"subagent-tasks":L.value,"bash-running":F.value,"subagent-running":H.value,"todo-done-count":P.value,"has-dock-work":R.value,todos:e.todos,"pending-question":it.value,"question-busy-kind":at.value,"pending-approval":Ge.value,"approval-busy":je.value,terminal:e.terminal,mobile:e.mobile,onToggleDockPanel:K[36]||(K[36]=ce=>me(ce)),onCloseDockPanel:K[37]||(K[37]=ce=>Z()),onOpenAgent:K[38]||(K[38]=ce=>i("openAgent",ce)),onAnswer:jn,onDismiss:K[39]||(K[39]=ce=>i("dismiss",ce)),onApproval:hn,onCancelTask:K[40]||(K[40]=ce=>i("cancelTask",ce)),onControlGoal:K[41]||(K[41]=ce=>i("controlGoal",ce)),onSubmit:nn,onSteer:K[42]||(K[42]=ce=>i("steer",ce)),onCommand:K[43]||(K[43]=(ce,te)=>i("command",ce,te)),onInterrupt:Ks,onSetPermission:K[44]||(K[44]=ce=>i("setPermission",ce)),onSetThinking:K[45]||(K[45]=ce=>i("setThinking",ce)),onTogglePlan:K[46]||(K[46]=ce=>i("togglePlan")),onToggleSwarm:K[47]||(K[47]=ce=>i("toggleSwarm")),onToggleSupermoon:K[48]||(K[48]=ce=>i("toggleSupermoon")),onToggleGoal:K[49]||(K[49]=ce=>i("toggleGoal")),onDismissPlan:K[50]||(K[50]=ce=>i("dismissPlan")),onFocusGoal:D,onCompact:K[51]||(K[51]=ce=>i("compact")),onPickModel:K[52]||(K[52]=ce=>i("pickModel")),onSelectModel:K[53]||(K[53]=ce=>i("selectModel",ce))},null,8,["style","session-id","running","starting","queued","search-files","upload-image","status","thinking","plan-mode","plan-armed","swarm-mode","supermoon-mode","goal-mode","activation-badges","models","starred-ids","skills","goal","goal-expand-signal","plan-tool-call-id","dock-panel","bash-tasks","subagent-tasks","bash-running","subagent-running","todo-done-count","has-dock-work","todos","pending-question","question-busy-kind","pending-approval","approval-busy","terminal","mobile"]))]),M(Yo,{name:"pill"},{default:W(()=>[zt.value?(a(),c("button",{key:0,class:"newmsg-pill",style:rt({bottom:`${xt.value+12}px`}),"aria-label":l(s)("conversation.jumpToLatestAria"),onClick:K[54]||(K[54]=ce=>pn(!0))},[M(le,{class:"pill-chevron",name:"chevron-down",size:"md"}),ue(" "+d(l(s)("conversation.newMessages")),1)],12,ZI)):A("",!0)]),_:1}),M(Yo,{name:"abort-toast"},{default:W(()=>[Qn.value?(a(),c("div",XI,[r("span",JI,d(l(s)("conversation.manuallyAborted")),1)])):A("",!0)]),_:1})],2))}}),sA=Pe(nA,[["__scopeId","data-v-fad3cc77"]]),oA={class:"ui-panel-header__title"},iA={key:0,class:"ui-panel-header__sub"},aA=xe({__name:"PanelHeader",props:{title:{},subtitle:{},closable:{type:Boolean,default:!0},closeLabel:{default:"Close"},wrap:{type:Boolean}},emits:["close"],setup(e){return(t,n)=>(a(),c("div",{class:fe(["ui-panel-header",{wrap:e.wrap}])},[r("span",oA,d(e.title),1),M(nt,{text:e.subtitle},{default:W(()=>[e.subtitle?(a(),c("span",iA,d(e.subtitle),1)):A("",!0)]),_:1},8,["text"]),gt(t.$slots,"default",{},void 0,!0),e.closable?(a(),G(et,{key:0,class:"ui-panel-header__close",size:"sm",label:e.closeLabel,onClick:n[0]||(n[0]=s=>t.$emit("close"))},{default:W(()=>[M(le,{name:"close",size:"sm"})]),_:1},8,["label"])):A("",!0)],2))}}),co=Pe(aA,[["__scopeId","data-v-c47879ad"]]),lA={key:0,class:"fp-empty fp-error"},rA={key:1,class:"fp-empty"},uA={key:2,class:"fp-loading"},cA={class:"fp-path"},dA={class:"fp-meta"},pA={key:0,class:"fp-lines"},fA={class:"fp-size"},mA={key:3,class:"fp-search"},vA=["placeholder"],hA={key:0,class:"fp-search-count"},gA=["href","aria-label"],yA={key:1,class:"fp-code"},kA={class:"fp-line-table"},bA=["data-line"],wA={class:"fp-gutter"},SA=["innerHTML"],CA={key:1,class:"fp-body fp-code"},_A={class:"fp-line-table"},$A=["data-line"],MA={class:"fp-gutter"},xA=["innerHTML"],IA={key:2,class:"fp-body"},AA=["srcdoc","title"],TA={key:1,class:"fp-code"},PA={class:"fp-line-table"},EA=["data-line"],LA={class:"fp-gutter"},BA=["innerHTML"],RA={key:3,class:"fp-body fp-pdf-wrap"},OA=["src","title"],DA={key:1,class:"fp-binary-card"},zA={class:"fp-binary-label"},FA={key:4,class:"fp-body fp-table-wrap"},NA={class:"fp-table"},qA=["data-line"],WA={key:5,class:"fp-body fp-image-wrap"},HA=["src","alt"],UA={key:1,class:"fp-binary-card"},VA={class:"fp-binary-icon"},jA={class:"fp-binary-label"},KA={key:6,class:"fp-body fp-image-wrap"},GA=["src"],QA={key:1,class:"fp-binary-card"},YA={class:"fp-binary-icon"},ZA={class:"fp-binary-label"},XA={key:7,class:"fp-body fp-code"},JA={class:"fp-line-table"},eT=["data-line"],tT={class:"fp-gutter"},nT=["innerHTML"],sT={key:8,class:"fp-body fp-binary-wrap"},oT={class:"fp-binary-card"},iT={class:"fp-binary-icon"},aT={class:"fp-binary-label"},lT=xe({__name:"FilePreview",props:{file:{},loading:{type:Boolean},error:{},line:{},downloadUrl:{},closable:{type:Boolean},externalActions:{type:Boolean},openFile:{type:Function}},emits:["close","openExternal","reveal"],setup(e,{emit:t}){const{t:n}=We();function s(X,Y){const B=Y?Y.split("/").filter(Boolean):[];for(const J of X.split("/"))J===""||J==="."||(J===".."?B.pop():B.push(J));return B.join("/")}const o=po("resolveImage",async X=>X),i=$(()=>{const X=h.file?.path??"",Y=X.lastIndexOf("/");return Y>0?X.slice(0,Y):""});function u(X){if(/^(https?:|data:|blob:)/i.test(X)||X.startsWith("/"))return X;const Y=i.value;return Y?s(X,Y):X}async function p(X){const Y=u(X);return o?o(Y):Y}xo("resolveImage",p);function m(X){let Y=X.path;if(/^(https?:|mailto:|tel:|data:|blob:|#)/i.test(Y)||Y.startsWith("/"))return X;for(const J of["#","?"]){const Ee=Y.indexOf(J);Ee!==-1&&(Y=Y.slice(0,Ee))}const B=i.value;return{...X,path:s(Y,B)}}const h=e,w=t;function I(X){h.openFile?.(m(X))}const v=x(null),f=$(()=>{const X=h.file;if(!X)return"binary";const Y=X.mime??"",B=X.languageId??"",J=X.path.toLowerCase();return Y==="text/markdown"||B==="markdown"||B==="md"||J.endsWith(".mdx")?"markdown":Y==="application/json"||B==="json"?"json":Y==="text/html"||B==="html"||J.endsWith(".html")||J.endsWith(".htm")?"html":Y==="application/pdf"||J.endsWith(".pdf")?"pdf":Y==="text/csv"||B==="csv"||J.endsWith(".csv")?"csv":Y.startsWith("image/")?"image":Y.startsWith("video/")?"video":X.isBinary?"binary":Y.startsWith("text/")||B!==""?"text":"binary"});function _(X){const Y=atob(X),B=Uint8Array.from(Y,J=>J.charCodeAt(0));return new TextDecoder().decode(B)}const g=$(()=>{const X=h.file;if(!X)return"";if(X.encoding==="base64")try{return _(X.content)}catch{return X.content}return X.content}),b=$(()=>{if(f.value!=="json"||!h.file)return"";try{return JSON.stringify(JSON.parse(g.value),null,2)}catch{return g.value}}),y=$(()=>h.file?(f.value==="json"?b.value:g.value).split(`
-`):[]),E=$(()=>h.file?f.value==="json"?b.value:g.value:""),S=x(""),O=x(0),D=$(()=>{const X=S.value.trim().toLowerCase();if(!X)return[];const Y=[];return y.value.forEach((B,J)=>{B.toLowerCase().includes(X)&&Y.push(J+1)}),Y});Oe(S,()=>{O.value=0});function T(X,Y=!1){X&&Ue(()=>{const B=v.value?.querySelector(".fp-body"),J=B?.querySelector(`[data-line="${X}"]`);if(!B||!J)return;Y&&(B.scrollTop=0);const Ee=B.getBoundingClientRect(),Le=J.getBoundingClientRect(),it=Le.top-Ee.top+B.scrollTop;B.scrollTop=it-B.clientHeight/2+Le.height/2})}Oe(()=>[h.file?.path,h.line],()=>T(h.line,!0),{immediate:!0});function L(X){const Y=D.value;Y.length!==0&&(O.value=(O.value+X+Y.length)%Y.length,T(Y[O.value]))}function F(X){const Y=D.value;return{target:h.line===X,hit:Y.includes(X),active:Y[O.value]===X}}function H(X){return X<1024?`${X} B`:X<1024*1024?`${(X/1024).toFixed(1)} KB`:`${(X/(1024*1024)).toFixed(1)} MB`}const k=x(!1),P=x(!1);function R(){h.file&&un(E.value).then(X=>{X&&(k.value=!0,setTimeout(()=>{k.value=!1},1400))})}function se(){h.file&&un(h.file.path).then(X=>{X&&(P.value=!0,setTimeout(()=>{P.value=!1},1400))})}const ae=x("preview"),ve=x("preview"),me=x("fit");function Z(X){ae.value=X}function oe(X){ve.value=X}function ie(X){me.value=X}Oe(f,X=>{ae.value=X==="html"?"preview":"source",ve.value="preview",me.value="fit"});const ke=$(()=>{const X=h.file;return!X||f.value!=="image"?null:X.sourceUrl?X.sourceUrl:X.encoding==="base64"?`data:${X.mime};base64,${X.content}`:X.mime==="image/svg+xml"?`data:${X.mime};charset=utf-8,${encodeURIComponent(X.content)}`:null}),$e=$(()=>{const X=h.file;return!X||f.value!=="video"?null:X.sourceUrl?X.sourceUrl:X.encoding==="base64"?`data:${X.mime};base64,${X.content}`:null}),he=$(()=>{const X=h.file;return!X||f.value!=="pdf"?null:h.downloadUrl?h.downloadUrl:X.encoding==="base64"?`data:${X.mime};base64,${X.content}`:null}),V=$(()=>h.file?["",' ',` `,g.value].join(""):"");function Q(X){const Y=[];let B="",J=!1;for(let Ee=0;Eey.value.slice(0,200).map(Q));function re(X){return X.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function ee(){const X=h.file;if(!X)return"";const Y=X.languageId?.toLowerCase();return Y||(X.path.split(".").pop()?.toLowerCase()??"")}function pe(X){const Y=ee();let B=re(X);return f.value==="json"||Y==="json"||Y==="jsonc"?(B=B.replace(/("[^&]*?")(\s*:)/g,'$1 $2'),B=B.replace(/(:\s*)("[^&]*?")/g,'$1$2 '),B=B.replace(/\b(true|false|null)\b/g,'$1 '),B=B.replace(/(:\s*)(-?\d+(?:\.\d+)?)/g,'$1$2 '),B):f.value==="html"||Y==="html"||Y==="xml"||Y==="svg"?(B=B.replace(/\s([A-Za-z_:][-A-Za-z0-9_:.]*)(=)/g,' $1 $2'),B=B.replace(/(".*?")/g,'$1 '),B=B.replace(/(<\/?)([A-Za-z][\w:-]*)/g,'$1$2 '),B):(B=B.replace(/\b(async|await|break|case|catch|class|const|continue|else|export|extends|finally|for|from|function|if|import|interface|let|new|return|switch|throw|try|type|while)\b/g,'$1 '),B=B.replace(/(".*?"|'.*?')/g,'$1 '),B=B.replace(/(\/\/.*)$/g,''),B)}function De(X,Y=55){return!X||X.length<=Y?X:"…"+X.slice(X.length-Y+1)}return(X,Y)=>(a(),c("div",{ref_key:"rootRef",ref:v,class:"file-preview"},[e.error&&!e.loading?(a(),c("div",lA,[r("span",null,d(e.error),1),e.closable?(a(),G(Ne,{key:0,variant:"secondary",size:"sm",onClick:Y[0]||(Y[0]=B=>w("close"))},{default:W(()=>[ue(d(l(n)("filePreview.close")),1)]),_:1})):A("",!0)])):!e.file&&!e.loading?(a(),c("div",rA,d(l(n)("filePreview.empty")),1)):e.loading?(a(),c("div",uA,[Y[7]||(Y[7]=r("span",{class:"spinner"},null,-1)),r("span",null,d(l(n)("filePreview.loading")),1)])):e.file?(a(),c(ge,{key:3},[M(co,{wrap:"",title:l(n)("common.preview"),closable:e.closable,"close-label":l(n)("filePreview.close"),onClose:Y[6]||(Y[6]=B=>w("close"))},{default:W(()=>[M(nt,{text:e.file.path},{default:W(()=>[r("span",cA,d(De(e.file.path)),1)]),_:1},8,["text"]),r("span",dA,[e.file.lineCount?(a(),c("span",pA,d(l(n)("filePreview.lineCount",{count:e.file.lineCount})),1)):A("",!0),r("span",fA,d(H(e.file.size)),1)]),f.value==="html"?(a(),G(cn,{key:0,"model-value":ae.value,size:"sm",options:[{value:"preview",label:l(n)("filePreview.preview")},{value:"source",label:l(n)("filePreview.source")}],"onUpdate:modelValue":Z},null,8,["model-value","options"])):A("",!0),f.value==="markdown"?(a(),G(cn,{key:1,"model-value":ve.value,size:"sm",options:[{value:"preview",label:l(n)("filePreview.preview")},{value:"source",label:l(n)("filePreview.source")}],"onUpdate:modelValue":oe},null,8,["model-value","options"])):A("",!0),f.value==="image"?(a(),G(cn,{key:2,"model-value":me.value,size:"sm",options:[{value:"fit",label:l(n)("filePreview.fit")},{value:"actual",label:l(n)("filePreview.actual")}],"onUpdate:modelValue":ie},null,8,["model-value","options"])):A("",!0),f.value==="text"||f.value==="json"||f.value==="html"||f.value==="csv"?(a(),c("div",mA,[ht(r("input",{"onUpdate:modelValue":Y[1]||(Y[1]=B=>S.value=B),class:"fp-search-input",type:"search",placeholder:l(n)("filePreview.search")},null,8,vA),[[On,S.value]]),S.value.trim()?(a(),c("span",hA,d(D.value.length),1)):A("",!0),M(et,{size:"sm",disabled:D.value.length===0,label:l(n)("filePreview.prevMatch"),onClick:Y[2]||(Y[2]=B=>L(-1))},{default:W(()=>[M(le,{name:"arrow-up",size:"md"})]),_:1},8,["disabled","label"]),M(et,{size:"sm",disabled:D.value.length===0,label:l(n)("filePreview.nextMatch"),onClick:Y[3]||(Y[3]=B=>L(1))},{default:W(()=>[M(le,{name:"arrow-down",size:"md"})]),_:1},8,["disabled","label"])])):A("",!0),M(et,{size:"sm",class:fe({copied:P.value}),label:P.value?l(n)("filePreview.copied"):l(n)("filePreview.copyPath"),onClick:se},{default:W(()=>[P.value?(a(),G(le,{key:1,class:"fp-check",name:"check",size:"md"})):(a(),G(le,{key:0,name:"link",size:"md"}))]),_:1},8,["class","label"]),e.externalActions?(a(),G(et,{key:4,size:"sm",label:l(n)("filePreview.openInEditor"),onClick:Y[4]||(Y[4]=B=>w("openExternal"))},{default:W(()=>[M(le,{name:"external-link",size:"md"})]),_:1},8,["label"])):A("",!0),e.externalActions?(a(),G(et,{key:5,size:"sm",label:l(n)("filePreview.reveal"),onClick:Y[5]||(Y[5]=B=>w("reveal"))},{default:W(()=>[M(le,{name:"folder",size:"md"})]),_:1},8,["label"])):A("",!0),e.downloadUrl?(a(),c("a",{key:6,class:"fp-download",href:e.downloadUrl,target:"_blank",rel:"noreferrer",download:"","aria-label":l(n)("filePreview.download")},[M(le,{name:"download",size:"md"})],8,gA)):A("",!0),!e.file.isBinary&&f.value!=="image"?(a(),G(et,{key:7,size:"sm",class:fe({copied:k.value}),label:k.value?l(n)("filePreview.copied"):l(n)("filePreview.copy"),onClick:R},{default:W(()=>[k.value?(a(),G(le,{key:1,class:"fp-check",name:"check",size:"md"})):(a(),G(le,{key:0,name:"copy",size:"md"}))]),_:1},8,["class","label"])):A("",!0)]),_:1},8,["title","closable","close-label"]),f.value==="markdown"?(a(),c("div",{key:0,class:fe(["fp-body",{"fp-markdown":ve.value==="preview"}])},[ve.value==="preview"?(a(),G(ci,{key:0,text:g.value,"open-file":h.openFile?I:void 0},null,8,["text","open-file"])):(a(),c("div",yA,[r("div",kA,[(a(!0),c(ge,null,Te(y.value,(B,J)=>(a(),c("div",{key:J,class:fe(["fp-line-row",F(J+1)]),"data-line":J+1},[r("span",wA,d(J+1),1),r("span",{class:"fp-line-text",innerHTML:pe(B)},null,8,SA)],10,bA))),128))])]))],2)):f.value==="json"?(a(),c("div",CA,[r("div",_A,[(a(!0),c(ge,null,Te(y.value,(B,J)=>(a(),c("div",{key:J,class:fe(["fp-line-row",F(J+1)]),"data-line":J+1},[r("span",MA,d(J+1),1),r("span",{class:"fp-line-text",innerHTML:pe(B)},null,8,xA)],10,$A))),128))])])):f.value==="html"?(a(),c("div",IA,[ae.value==="preview"?(a(),c("iframe",{key:0,class:"fp-html-frame",sandbox:"",srcdoc:V.value,title:e.file.path},null,8,AA)):(a(),c("div",TA,[r("div",PA,[(a(!0),c(ge,null,Te(y.value,(B,J)=>(a(),c("div",{key:J,class:fe(["fp-line-row",F(J+1)]),"data-line":J+1},[r("span",LA,d(J+1),1),r("span",{class:"fp-line-text",innerHTML:pe(B)},null,8,BA)],10,EA))),128))])]))])):f.value==="pdf"?(a(),c("div",RA,[he.value?(a(),c("iframe",{key:0,class:"fp-pdf-frame",src:he.value,title:e.file.path},null,8,OA)):(a(),c("div",DA,[r("span",zA,d(l(n)("filePreview.pdfNoPreview")),1)]))])):f.value==="csv"?(a(),c("div",FA,[r("table",NA,[r("tbody",null,[(a(!0),c(ge,null,Te(Ce.value,(B,J)=>(a(),c("tr",{key:J,class:fe(F(J+1)),"data-line":J+1},[r("th",null,d(J+1),1),(a(!0),c(ge,null,Te(B,(Ee,Le)=>(a(),c("td",{key:Le},d(Ee),1))),128))],10,qA))),128))])])])):f.value==="image"?(a(),c("div",WA,[ke.value?(a(),c("img",{key:0,src:ke.value,alt:e.file.path,class:fe(["fp-image",{actual:me.value==="actual"}])},null,10,HA)):(a(),c("div",UA,[r("span",VA,[M(le,{name:"image-off",size:"lg"})]),r("span",jA,d(l(n)("filePreview.imageNoPreview",{mime:e.file.mime,size:H(e.file.size)})),1)]))])):f.value==="video"?(a(),c("div",KA,[$e.value?(a(),c("video",{key:0,src:$e.value,class:"fp-image",controls:"",playsinline:"",preload:"metadata"},null,8,GA)):(a(),c("div",QA,[r("span",YA,[M(le,{name:"image-off",size:"lg"})]),r("span",ZA,d(l(n)("filePreview.videoNoPreview",{mime:e.file.mime,size:H(e.file.size)})),1)]))])):f.value==="text"?(a(),c("div",XA,[r("div",JA,[(a(!0),c(ge,null,Te(y.value,(B,J)=>(a(),c("div",{key:J,class:fe(["fp-line-row",F(J+1)]),"data-line":J+1},[r("span",tT,d(J+1),1),r("span",{class:"fp-line-text",innerHTML:pe(B)},null,8,nT)],10,eT))),128))])])):(a(),c("div",sT,[r("div",oT,[r("span",iT,[M(le,{name:"file-off",size:"lg"})]),r("span",aT,d(l(n)("filePreview.binaryNoPreview",{mime:e.file.mime||l(n)("filePreview.unknownType"),size:H(e.file.size)})),1)])]))],64)):A("",!0)],512))}}),rT=Pe(lT,[["__scopeId","data-v-ded222d2"]]),uT={class:"tp"},cT=xe({__name:"ThinkingPanel",props:{text:{},subtitle:{}},emits:["close"],setup(e,{emit:t}){const n=e,s=t,{t:o}=We(),i=x(null);return Oe(()=>n.text,()=>{const u=i.value;!u||!(u.scrollHeight-u.scrollTop-u.clientHeight<24)||Ue(()=>{i.value&&(i.value.scrollTop=i.value.scrollHeight)})},{immediate:!0}),(u,p)=>(a(),c("div",uT,[M(co,{title:l(o)("common.preview"),subtitle:e.subtitle??l(o)("thinking.panelTitle"),"close-label":l(o)("thinking.close"),onClose:p[0]||(p[0]=m=>s("close"))},null,8,["title","subtitle","close-label"]),r("pre",{ref_key:"bodyEl",ref:i,class:"tp-body"},d(e.text),513)]))}}),su=Pe(cT,[["__scopeId","data-v-98c343f3"]]),dT={class:"ap"},pT={key:0,class:"ap-type"},fT={key:1,class:"ap-reason"},mT={key:2,class:"ap-field"},vT={class:"ap-field-label"},hT={class:"ap-field-body"},gT={key:3,class:"ap-field"},yT={class:"ap-field-label"},kT={class:"ap-field-body ap-live"},bT={key:4,class:"ap-field"},wT={class:"ap-field-label"},ST={class:"ap-field-body ap-progress"},CT={key:0,class:"ap-call"},_T={key:1,class:"ap-output"},$T=["onClick"],MT={key:5,class:"ap-field"},xT={class:"ap-field-label"},IT={class:"ap-field-body"},AT=8,ou=5,iu=2,TT=xe({__name:"AgentDetailPanel",props:{member:{}},emits:["close"],setup(e,{emit:t}){const n=e,s=t,{t:o}=We(),i=$(()=>(n.member.outputLines??[]).map(g=>g.trimEnd()).filter(g=>g.length>0)),u=$(()=>(n.member.text??"").trimEnd());function p(g){const b=[];let y=null,E=0;for(const S of g)S.startsWith("Calling ")?(y={key:`g${E++}`,call:S,output:[]},b.push(y)):y?y.output.push(S):(y={key:`g${E++}`,call:"",output:[S]},b.push(y));return b}const m=$(()=>p(i.value)),h=x(new Set);function w(g){return h.value.has(g)}function I(g){const b=new Set(h.value);b.has(g)?b.delete(g):b.add(g),h.value=b}function v(g){return g.output.length-ou-iu}function f(g){switch(g){case"queued":return"Queued";case"working":return"Working";case"suspended":return"Suspended";case"completed":return"Completed";case"failed":return"Failed"}}const _=x(null);return Oe(()=>i.value.length+u.value.length,()=>{const g=_.value;!g||!(g.scrollHeight-g.scrollTop-g.clientHeight<24)||Ue(()=>{_.value&&(_.value.scrollTop=_.value.scrollHeight)})},{immediate:!0}),(g,b)=>(a(),c("div",dT,[M(co,{title:l(o)("common.preview"),subtitle:e.member.name,"close-label":l(o)("thinking.close"),onClose:b[0]||(b[0]=y=>s("close"))},{default:W(()=>[M(Nt,{variant:"neutral",size:"sm",class:"ap-phase"},{default:W(()=>[ue(d(f(e.member.phase)),1)]),_:1})]),_:1},8,["title","subtitle","close-label"]),r("div",{ref_key:"bodyEl",ref:_,class:"ap-body"},[e.member.subagentType?(a(),c("div",pT,d(e.member.subagentType),1)):A("",!0),e.member.suspendedReason?(a(),c("div",fT,d(e.member.suspendedReason),1)):A("",!0),e.member.prompt?(a(),c("div",mT,[r("span",vT,d(l(o)("tasks.fieldTask")),1),r("div",hT,d(e.member.prompt),1)])):A("",!0),u.value?(a(),c("div",gT,[r("span",yT,d(l(o)("tasks.fieldOutput")),1),r("div",kT,d(u.value),1)])):A("",!0),m.value.length>0?(a(),c("div",bT,[r("span",wT,d(l(o)("tasks.fieldProgress")),1),r("div",ST,[(a(!0),c(ge,null,Te(m.value,y=>(a(),c("div",{key:y.key,class:"ap-group"},[y.call?(a(),c("div",CT,[b[1]||(b[1]=r("span",{class:"ap-glyph","aria-hidden":"true"},"▶",-1)),ue(" "+d(y.call),1)])):A("",!0),y.output.length>0?(a(),c("div",_T,[y.output.length<=AT||w(y.key)?(a(!0),c(ge,{key:0},Te(y.output,(E,S)=>(a(),c("div",{key:S,class:"ap-out-line"},d(E),1))),128)):(a(),c(ge,{key:1},[(a(!0),c(ge,null,Te(y.output.slice(0,ou),(E,S)=>(a(),c("div",{key:S,class:"ap-out-line"},d(E),1))),128)),r("button",{type:"button",class:"ap-fold",onClick:E=>I(y.key)}," … ("+d(v(y))+" more) ",9,$T),(a(!0),c(ge,null,Te(y.output.slice(-iu),(E,S)=>(a(),c("div",{key:"t"+S,class:"ap-out-line"},d(E),1))),128))],64))])):A("",!0)]))),128))])])):A("",!0),e.member.summary?(a(),c("div",MT,[r("span",xT,d(l(o)("tasks.fieldResult")),1),r("div",IT,d(e.member.summary),1)])):A("",!0)],512)]))}}),PT=Pe(TT,[["__scopeId","data-v-59df0789"]]),hd=["off","protanopia-deuteranopia","tritanopia"],ET=["pierre-light","pierre-light-protanopia-deuteranopia","pierre-light-tritanopia","pierre-dark","pierre-dark-protanopia-deuteranopia","pierre-dark-tritanopia"];function LT(e){return typeof e=="string"&&hd.includes(e)}function au(e){return LT(e)?e:"off"}function BT(e,t){const n=e?"pierre-dark":"pierre-light";return t==="off"?n:`${n}-${t}`}function RT(e,t,n=ET){const s=BT(e,t);return n.includes(s)?s:null}const OT={"pierre-light":{add:"#18a46c",addSoft:"#18a46c33",del:"#d52c36",delSoft:"#d52c3633"},"pierre-light-protanopia-deuteranopia":{add:"#216cab",addSoft:"#216cab33",del:"#ac6023",delSoft:"#ac602333"},"pierre-light-tritanopia":{add:"#1e858e",addSoft:"#1e858e33",del:"#d5512f",delSoft:"#d5512f33"},"pierre-dark":{add:"#07c480",addSoft:"#07c4801a",del:"#ff2e3f",delSoft:"#ff2e3f1a"},"pierre-dark-protanopia-deuteranopia":{add:"#97c4ff",addSoft:"#97c4ff1a",del:"#fe8c2c",delSoft:"#fe8c2c1a"},"pierre-dark-tritanopia":{add:"#92dde4",addSoft:"#92dde41a",del:"#ff855e",delSoft:"#ff855e1a"}},DT=["data-theme"],zT={key:0,class:"hunk-text"},FT={class:"dl-gutter old"},NT={class:"dl-gutter new"},qT={class:"dl-sign"},WT={class:"dl-text"},HT=xe({__name:"DiffLines",props:{lines:{},theme:{default:null}},setup(e){const t=e,n=$(()=>{const u=t.theme?OT[t.theme]:void 0;return u?{"--dl-add":u.add,"--dl-add-soft":u.addSoft,"--dl-del":u.del,"--dl-del-soft":u.delSoft}:null});function s(u){return u.oldNo!==void 0?String(u.oldNo):""}function o(u){return u.newNo!==void 0?String(u.newNo):""}function i(u){return`dl-${u.type}`}return(u,p)=>(a(),c("div",{class:"diff-lines","data-theme":n.value?t.theme:null,style:rt(n.value)},[(a(!0),c(ge,null,Te(e.lines,(m,h)=>(a(),c("div",{key:h,class:fe(["dl",i(m)])},[m.type==="hunk"?(a(),c("span",zT,d(m.text),1)):(a(),c(ge,{key:1},[r("span",FT,d(s(m)),1),r("span",NT,d(o(m)),1),r("span",qT,d(m.type==="add"?"+":m.type==="del"?"-":" "),1),r("span",WT,d(m.text),1)],64))],2))),128))],12,DT))}}),gd=Pe(HT,[["__scopeId","data-v-26e24204"]]),UT={class:"tdp"},VT={class:"tdp-body"},jT={key:1,class:"tdp-output"},KT={key:2,class:"tdp-empty"},GT=xe({__name:"ToolDiffPanel",props:{target:{}},emits:["close"],setup(e,{emit:t}){const n=t,{t:s}=We();return(o,i)=>(a(),c("div",UT,[M(co,{title:e.target.title,subtitle:e.target.path,"close-label":l(s)("thinking.close"),onClose:i[0]||(i[0]=u=>n("close"))},null,8,["title","subtitle","close-label"]),r("div",VT,[e.target.lines&&e.target.lines.length>0?(a(),G(gd,{key:0,lines:e.target.lines},null,8,["lines"])):e.target.output&&e.target.output.length>0?(a(),c("div",jT,[(a(!0),c(ge,null,Te(e.target.output,(u,p)=>(a(),c("div",{key:p},d(u),1))),128))])):(a(),c("div",KT,d(l(s)("diff.noDiff")),1))])]))}}),QT=Pe(GT,[["__scopeId","data-v-76f2fbca"]]),YT={class:"sc"},ZT={key:0,class:"sc-empty"},XT={key:2,class:"sc-loading","aria-hidden":"true"},JT={class:"sc-composer"},eP=["placeholder"],tP=["aria-label","disabled"],nP=xe({__name:"SideChatPanel",props:{turns:{},running:{type:Boolean},sending:{type:Boolean},title:{},subtitle:{}},emits:["send","close"],setup(e,{emit:t}){const n=e,s=t,{t:o}=We(),i=$(()=>n.turns.find(E=>E.role==="user")?.text?.trim()??""),u=$(()=>n.title?.trim()||o("sideChat.title")),p=$(()=>n.subtitle?.trim()?n.subtitle.trim():i.value||o("sideChat.subtitle")),m=x(""),h=x(null),w=x(null);function I(){const y=m.value.trim();y&&(s("send",y),m.value="",Ue(()=>{h.value&&(h.value.style.height="auto"),v()}))}function v(){const y=w.value;y&&(y.scrollTop=y.scrollHeight)}const f=$(()=>{const y=n.turns;if(y.length===0)return"0";const E=y.at(-1),S=E.thinking?.length??0,O=E.tools?.reduce((D,T)=>D+T.name.length+(T.arg?.length??0)+(T.output?.join("").length??0),0)??0;return`${y.length}:${E.text.length}:${S}:${O}`});Oe(f,async()=>{!n.running&&!n.sending||(await Ue(),v())});const _=$(()=>n.sending?n.turns.at(-1)?.role==="user":!1);function g(y){y.key==="Enter"&&!y.shiftKey&&!y.isComposing&&(y.preventDefault(),I())}function b(){const y=h.value;y&&(y.style.height="auto",y.style.height=`${Math.min(y.scrollHeight,160)}px`)}return(y,E)=>(a(),c("div",YT,[M(co,{title:u.value,subtitle:p.value,"close-label":l(o)("thinking.close"),onClose:E[0]||(E[0]=S=>s("close"))},null,8,["title","subtitle","close-label"]),r("div",{ref_key:"bodyRef",ref:w,class:"sc-body"},[e.turns.length===0?(a(),c("div",ZT,d(l(o)("sideChat.empty")),1)):(a(),G(ad,{key:1,turns:e.turns,approvals:[],"turn-active":e.running,working:e.sending||e.running},null,8,["turns","turn-active","working"])),_.value?(a(),c("div",XT,[M(sd,{label:l(o)("conversation.waitingForResponse")},null,8,["label"])])):A("",!0)],512),r("div",JT,[ht(r("textarea",{ref_key:"inputRef",ref:h,"onUpdate:modelValue":E[1]||(E[1]=S=>m.value=S),class:"sc-input",rows:"1",placeholder:l(o)("sideChat.placeholder"),onInput:b,onKeydown:g},null,40,eP),[[On,m.value]]),M(nt,{text:l(o)("sideChat.send")},{default:W(()=>[r("button",{type:"button",class:"sc-send","aria-label":l(o)("sideChat.send"),disabled:!m.value.trim(),onClick:I},[M(le,{name:"arrow-right",size:"sm"})],8,tP)]),_:1},8,["text"])])]))}}),sP=Pe(nP,[["__scopeId","data-v-867ab366"]]),oP={class:"changes-pane"},iP={class:"dv-path"},aP={class:"diff-head"},lP={class:"back-label"},rP={class:"dv-cb-label"},uP={key:0,class:"empty-state"},cP={key:1,class:"dv-lines-wrap"},dP={key:2,class:"empty-state"},pP={class:"dv-change-count"},fP={class:"ch-head"},mP={class:"br-label"},vP={class:"br-name"},hP={key:0,class:"sync-info"},gP={key:0,class:"ahead"},yP={key:0,class:"behind"},kP={key:1,class:"empty-head"},bP={key:0,class:"ch-list"},wP=["onClick"],SP={class:"fpath"},CP={key:1,class:"ch-list ch-tree"},_P={class:"tree-list"},$P=["onClick"],MP={class:"tree-name"},xP=["onClick"],IP={class:"tree-name"},AP={key:2,class:"empty-state"},TP={key:3,class:"empty-state"},PP=xe({__name:"DiffView",props:{changes:{},gitInfo:{},fileDiff:{},selectedDiffPath:{},fileDiffLoading:{type:Boolean},mode:{default:"full"},hideBack:{type:Boolean,default:!1},closable:{type:Boolean,default:!0}},emits:["open","back","close"],setup(e,{emit:t}){const{t:n}=We(),s=e,o=t;function i(Z){const oe=Z.toLowerCase();return oe==="modified"?"modified":oe==="added"?"added":oe==="deleted"?"deleted":oe==="renamed"?"renamed":oe==="untracked"?"untracked":oe==="conflicted"?"conflicted":oe==="ignored"?"ignored":oe==="clean"?"clean":"unknown"}const u={modified:"M",added:"A",deleted:"D",renamed:"R",untracked:"U",conflicted:"C",ignored:"I",clean:"·",unknown:"?"};function p(Z){return u[i(Z)]??"?"}function m(Z,oe=60){return Z.length<=oe?Z:"…"+Z.slice(Z.length-oe+1)}const h=$(()=>s.gitInfo!==null),w=$(()=>s.changes.length>0),I=$(()=>(s.selectedDiffPath??null)!==null),v=$(()=>s.mode==="detail"||s.mode==="full"&&I.value),f=$(()=>s.fileDiff??[]),_=$(()=>s.fileDiffLoading===!0),g=Xc(),b=x(au($t(qe.diffColorblind))),y=$(()=>b.value==="off"?null:RT(g.value,b.value)),E={off:"colorblindOff","protanopia-deuteranopia":"colorblindRedGreen",tritanopia:"colorblindBlueYellow"},S=$(()=>hd.map(Z=>({value:Z,label:n(`diff.${E[Z]}`)})));function O(Z){const oe=au(Z);b.value=oe,Ot(qe.diffColorblind,oe)}function D(Z){o("open",Z)}function T(){o("back")}function L(){o("close")}const F=x("list");function H(Z){F.value=Z}function k(Z){const oe={children:[]},ie=[...Z].sort((ke,$e)=>ke.path.localeCompare($e.path));for(const ke of ie){const $e=ke.path.split("/");let he=oe;for(let V=0;V<$e.length;V++){const Q=$e[V],Ce=V===$e.length-1,re=$e.slice(0,V+1).join("/");let ee=he.children.find(pe=>pe.name===Q&&pe.kind===(Ce?"file":"folder"));ee||(ee={name:Q,path:re,kind:Ce?"file":"folder",status:Ce?ke.status:void 0,children:[]},he.children.push(ee)),he=ee}}return oe.children}const P=$(()=>k(s.changes)),R=x(new Set);function se(Z){return!R.value.has(Z)}const ae=$(()=>{const Z=[];function oe(ie,ke){for(const $e of ie)Z.push({node:$e,depth:ke}),$e.kind==="folder"&&se($e.path)&&oe($e.children,ke+1)}return oe(P.value,0),Z});function ve(Z){const oe=new Set(R.value);oe.has(Z.path)?oe.delete(Z.path):oe.add(Z.path),R.value=oe}function me(Z){return`${16+Z*16}px`}return(Z,oe)=>(a(),c("div",oP,[v.value?(a(),c(ge,{key:0},[M(co,{title:l(n)("diff.title"),closable:e.closable,"close-label":l(n)("diff.close"),onClose:L},{default:W(()=>[M(nt,{text:e.selectedDiffPath??""},{default:W(()=>[r("span",iP,d(m(e.selectedDiffPath??"",50)),1)]),_:1},8,["text"])]),_:1},8,["title","closable","close-label"]),r("div",aP,[e.hideBack?A("",!0):(a(),G(Ne,{key:0,variant:"ghost",size:"sm",onClick:T},{default:W(()=>[oe[0]||(oe[0]=r("span",{"aria-hidden":"true"},"←",-1)),r("span",lP,d(l(n)("diff.back")),1)]),_:1})),f.value.length>0?(a(),c(ge,{key:1},[r("span",rP,d(l(n)("diff.colorblind")),1),M(cn,{class:"dv-cb-toggle","model-value":b.value,size:"sm",options:S.value,"onUpdate:modelValue":O},null,8,["model-value","options"])],64)):A("",!0)]),_.value?(a(),c("div",uP,d(l(n)("diff.loading")),1)):f.value.length>0?(a(),c("div",cP,[M(gd,{lines:f.value,theme:y.value},null,8,["lines","theme"])])):(a(),c("div",dP,d(l(n)("diff.noDiff")),1))],64)):(a(),c(ge,{key:1},[M(co,{title:l(n)("diff.title"),closable:e.closable,"close-label":l(n)("diff.close"),onClose:L},{default:W(()=>[r("span",pP,d(l(n)("diff.changeCount",{count:e.changes.length})),1),M(cn,{"model-value":F.value,size:"sm",options:[{value:"list",label:l(n)("diff.list")},{value:"tree",label:l(n)("diff.tree")}],"onUpdate:modelValue":H},null,8,["model-value","options"])]),_:1},8,["title","closable","close-label"]),r("div",fP,[h.value?(a(),c(ge,{key:0},[r("span",mP,d(l(n)("diff.branch")),1),r("span",vP,d(e.gitInfo.branch),1),e.gitInfo.ahead>0||e.gitInfo.behind>0?(a(),c("span",hP,[M(nt,{text:l(n)("diff.aheadTitle")},{default:W(()=>[e.gitInfo.ahead>0?(a(),c("span",gP,"↑"+d(e.gitInfo.ahead),1)):A("",!0)]),_:1},8,["text"]),M(nt,{text:l(n)("diff.behindTitle")},{default:W(()=>[e.gitInfo.behind>0?(a(),c("span",yP,"↓"+d(e.gitInfo.behind),1)):A("",!0)]),_:1},8,["text"])])):A("",!0)],64)):(a(),c("span",kP,d(l(n)("diff.empty")),1))]),w.value&&F.value==="list"?(a(),c("div",bP,[(a(!0),c(ge,null,Te(e.changes,ie=>(a(),G(nt,{key:ie.path,text:ie.path},{default:W(()=>[r("button",{type:"button",class:"ch-row",onClick:ke=>D(ie.path)},[r("span",{class:fe(["badge",i(ie.status)])},d(p(ie.status)),3),r("span",SP,d(m(ie.path)),1)],8,wP)]),_:2},1032,["text"]))),128))])):w.value&&F.value==="tree"?(a(),c("div",CP,[r("ul",_P,[(a(!0),c(ge,null,Te(ae.value,({node:ie,depth:ke})=>(a(),c("li",{key:ie.path,class:"tree-node"},[ie.kind==="folder"?(a(),c("button",{key:0,type:"button",class:"tree-row tree-folder",style:rt({paddingLeft:me(ke)}),onClick:$e=>ve(ie)},[M(le,{class:"tree-icon",name:"folder-solid",size:"sm"}),r("span",MP,d(ie.name),1)],12,$P)):(a(),G(nt,{key:1,text:ie.path},{default:W(()=>[r("button",{type:"button",class:"tree-row tree-file",style:rt({paddingLeft:me(ke)}),onClick:$e=>D(ie.path)},[r("span",{class:fe(["badge",i(ie.status)])},d(p(ie.status)),3),r("span",IP,d(ie.name),1)],12,xP)]),_:2},1032,["text"]))]))),128))])])):h.value?(a(),c("div",AP,d(l(n)("diff.clean")),1)):(a(),c("div",TP,d(l(n)("diff.empty")),1))],64))]))}}),EP=Pe(PP,[["__scopeId","data-v-6591e558"]]);function Bl(e,t){let n=null;mt(()=>{n=typeof document<"u"&&document.activeElement instanceof HTMLElement?document.activeElement:null,Ue(()=>{const s=t?.value??e.value;try{s?.focus()}catch{}})}),Tn(()=>{const s=n;if(n=null,!(!s||typeof document>"u"||!document.contains(s)))try{s.focus()}catch{}})}const LP={class:"search-wrap"},BP={key:0,class:"tab-strip"},RP={key:1,class:"state-row"},OP={key:2,class:"state-row unavail"},DP={key:3,class:"model-list"},zP=["aria-selected","onClick","onMouseenter"],FP={class:"check"},NP={class:"model-main"},qP={class:"model-name"},WP={class:"model-id"},HP={key:0,class:"caps"},UP={class:"model-provider"},VP={class:"model-ctx"},jP={key:0,class:"empty"},KP={class:"footer-hint"},GP=xe({__name:"ModelPicker",props:{models:{},current:{},starredIds:{},loading:{type:Boolean},unavailable:{type:Boolean}},emits:["select","toggle-star","close"],setup(e,{emit:t}){const{t:n}=We(),s=e,o=t,i=$(()=>new Set(s.starredIds??[]));function u(S){return i.value.has(S)}const p=x(""),m=x(null),h=x(null),w=x("all");Bl(h,m);const I=$(()=>{const S=new Set,O=[{id:"all",label:n("model.allTab")}];for(const D of s.models)S.has(D.provider)||(S.add(D.provider),O.push({id:D.provider,label:D.provider}));return O}),v=$(()=>{const S=p.value.toLowerCase().trim(),O=s.models.filter(D=>{if(w.value!=="all"&&D.provider!==w.value)return!1;const T=(D.displayName??D.model).toLowerCase().includes(S),L=D.provider.toLowerCase().includes(S),F=D.id.toLowerCase().includes(S);return!S||T||L||F});return w.value!=="all"?O:O.sort((D,T)=>{const L=u(D.id)?1:0;return(u(T.id)?1:0)-L})}),f=$(()=>v.value),_=x(0);Oe([p,w],()=>{_.value=0}),Oe(I,S=>{S.some(O=>O.id===w.value)||(w.value="all")}),Oe(f,S=>{_.value=Math.min(_.value,Math.max(S.length-1,0))});function g(S){if(S.key==="Escape"){o("close");return}if(S.key==="ArrowDown")S.preventDefault(),_.value=Math.min(_.value+1,f.value.length-1);else if(S.key==="ArrowUp")S.preventDefault(),_.value=Math.max(_.value-1,0);else if(S.key==="Enter"){const O=f.value[_.value];O&&o("select",O.id)}}mt(()=>{document.addEventListener("keydown",g)}),yt(()=>{document.removeEventListener("keydown",g)});function b(S){o("select",S)}function y(S){return f.value.indexOf(S)}function E(S){w.value=S}return(S,O)=>(a(),G(ps,{open:!0,"close-on-esc":!1,title:l(n)("model.title"),size:"xl",height:"fixed",onClose:O[1]||(O[1]=D=>o("close"))},{default:W(()=>[r("div",{ref_key:"dialogRef",ref:h,class:"mp"},[r("div",LP,[M(Un,{ref_key:"searchRef",ref:m,modelValue:p.value,"onUpdate:modelValue":O[0]||(O[0]=D=>p.value=D),placeholder:l(n)("model.searchPlaceholder"),autocomplete:"off",spellcheck:"false",autofocus:""},null,8,["modelValue","placeholder"])]),I.value.length>1?(a(),c("div",BP,[(a(!0),c(ge,null,Te(I.value,D=>(a(),G(Ne,{key:D.id,variant:D.id===w.value?"secondary":"ghost",size:"sm",onClick:T=>E(D.id)},{default:W(()=>[ue(d(D.label),1)]),_:2},1032,["variant","onClick"]))),128))])):A("",!0),e.loading?(a(),c("div",RP,[M(qt,{size:"sm"}),r("span",null,d(l(n)("model.loading")),1)])):e.unavailable?(a(),c("div",OP,[M(le,{name:"alert-triangle",size:"lg"}),r("span",null,d(l(n)("model.unavailable")),1)])):(a(),c("div",DP,[(a(!0),c(ge,null,Te(f.value,D=>(a(),c("div",{key:D.id,class:fe(["model-row",{"is-current":D.id===e.current,"is-selected":y(D)===_.value}]),role:"option","aria-selected":D.id===e.current,onClick:T=>b(D.id),onMouseenter:T=>_.value=y(D)},[r("span",FP,[D.id===e.current?(a(),G(le,{key:0,name:"check",size:"sm"})):A("",!0)]),r("span",NP,[r("span",qP,d(D.displayName??D.model),1),r("span",WP,d(D.id),1),D.capabilities&&D.capabilities.length>0?(a(),c("span",HP,[(a(!0),c(ge,null,Te(D.capabilities,T=>(a(),G(Nt,{key:T,variant:"info",size:"sm"},{default:W(()=>[ue(d(T),1)]),_:2},1024))),128))])):A("",!0)]),r("span",UP,d(D.provider),1),r("span",VP,d(l(n)("model.contextSuffix",{size:l(ds)(D.maxContextSize)})),1),M(et,{size:"sm",label:u(D.id)?l(n)("model.unstarTitle"):l(n)("model.starTitle"),onClick:Re(T=>o("toggle-star",D.id),["stop"])},{default:W(()=>[u(D.id)?(a(),G(le,{key:0,name:"star",size:"md"})):(a(),G(le,{key:1,name:"star-outline",size:"md"}))]),_:2},1032,["label","onClick"])],42,zP))),128)),f.value.length===0&&!e.loading&&!e.unavailable?(a(),c("div",jP,d(s.models.length===0?l(n)("model.emptyNoModels"):l(n)("model.emptyNoMatch")),1)):A("",!0)])),r("div",KP,d(l(n)("model.footerHint")),1)],512)]),_:1},8,["title"]))}}),QP=Pe(GP,[["__scopeId","data-v-56cefe51"]]),YP={key:0,class:"ui-field__label"},ZP={key:1,class:"ui-field__error"},XP={key:2,class:"ui-field__hint"},JP=xe({__name:"Field",props:{label:{},hint:{},error:{}},setup(e){return(t,n)=>(a(),c("div",{class:fe(["ui-field",{"has-error":!!e.error}])},[e.label?(a(),c("label",YP,d(e.label),1)):A("",!0),gt(t.$slots,"default",{},void 0,!0),e.error?(a(),c("span",ZP,d(e.error),1)):e.hint?(a(),c("span",XP,d(e.hint),1)):A("",!0)],2))}}),Cs=Pe(JP,[["__scopeId","data-v-49bce958"]]),eE=["value","disabled"],tE=xe({__name:"Select",props:{modelValue:{},size:{default:"md"},disabled:{type:Boolean},error:{type:Boolean}},emits:["update:modelValue"],setup(e,{emit:t}){const n=t;function s(o){n("update:modelValue",o.target.value)}return(o,i)=>(a(),c("select",{class:fe(["ui-select",[`ui-select--${e.size}`,{"has-error":e.error}]]),value:e.modelValue,disabled:e.disabled,onChange:s},[gt(o.$slots,"default",{},void 0,!0)],42,eE))}}),Ya=Pe(tE,[["__scopeId","data-v-92a040fd"]]),nE={class:"prov-list"},sE={key:0,class:"state-row"},oE={key:1,class:"state-row unavail"},iE={key:2,class:"empty"},aE={class:"prov-info"},lE={class:"prov-type"},rE={key:0,class:"prov-url"},uE={class:"prov-meta"},cE={key:0},dE={class:"prov-actions"},pE={key:0,class:"add-section"},fE={key:0,class:"add-btns"},mE={key:1,class:"add-form"},vE=["value"],hE={key:0,class:"add-error"},gE={class:"form-btns"},yE={key:2,class:"import-form"},kE={class:"import-head"},bE={class:"import-title"},wE={key:0,class:"state-row"},SE={key:1,class:"import-error"},CE={key:2,class:"empty"},_E={key:3,class:"catalog-list"},$E=["aria-disabled","onClick"],ME={class:"catalog-check"},xE={class:"catalog-main"},IE={class:"catalog-name"},AE={class:"catalog-id"},TE={key:0,class:"catalog-wire"},PE={class:"catalog-meta"},EE={key:2,class:"catalog-count"},LE={key:4,class:"catalog-selected"},BE={class:"form-btns"},RE={key:3,class:"import-form"},OE={class:"import-head"},DE={class:"import-title"},zE={key:0,class:"add-error"},FE={class:"form-btns"},NE={class:"footer-hint"},qE=xe({__name:"ProviderManager",props:{providers:{},loading:{type:Boolean},unavailable:{type:Boolean}},emits:["add","refresh","delete","openLogin","import-catalog","import-registry","close"],setup(e,{emit:t}){const{t:n}=We(),s=x(null);Bl(s);const o=t;function i(he){o("delete",he)}const u=x(!1),p=Pn({type:"moonshot",apiKey:"",baseUrl:"",defaultModel:""}),m=x(""),h=["moonshot","anthropic","openai","custom"];function w(){p.type="moonshot",p.apiKey="",p.baseUrl="",p.defaultModel="",m.value="",u.value=!0}function I(){u.value=!1}function v(){if(!p.apiKey.trim()){m.value=n("providers.apiKeyRequired");return}m.value="",o("add",{type:p.type,apiKey:p.apiKey.trim()||void 0,baseUrl:p.baseUrl.trim()||void 0,defaultModel:p.defaultModel.trim()||void 0}),u.value=!1}const f=x(!1),_=x(""),g=x([]),b=x(!1),y=x(""),E=x(""),S=x("");let O;const D=$(()=>Jy(g.value,_.value).map(lr)),T=$(()=>g.value.find(he=>he.id===E.value)??null),L=$(()=>T.value===null?null:lr(T.value));async function F(he){b.value=!0,y.value="";try{g.value=await Ae().browseCatalogProviders(he)}catch{y.value=n("providers.import.catalogLoadError")}finally{b.value=!1}}Oe(_,he=>{E.value="",S.value="",O!==void 0&&clearTimeout(O),O=setTimeout(()=>void F(he),250)});function H(){f.value=!0,_.value="",E.value="",S.value="",y.value="",g.value=[],F("")}function k(){f.value=!1,O!==void 0&&(clearTimeout(O),O=void 0)}function P(he){E.value=he,S.value=""}function R(){const he=T.value;he!==null&&(o("import-catalog",{catalogId:he.id,baseUrl:he.needsBaseUrl&&S.value.trim()||void 0}),k())}const se=x(!1),ae=Pn({url:"",apiKey:""}),ve=x("");function me(){ae.url="",ae.apiKey="",ve.value="",se.value=!0}function Z(){se.value=!1}function oe(){const he=ae.url.trim();if(he===""){ve.value=n("providers.import.registryUrlRequired");return}ve.value="",o("import-registry",{url:he,apiKey:ae.apiKey.trim()||void 0}),Z()}function ie(he){if(he.key==="Escape"){if(f.value){k();return}if(se.value){Z();return}if(u.value){I();return}o("close")}}mt(()=>document.addEventListener("keydown",ie)),yt(()=>{document.removeEventListener("keydown",ie),O!==void 0&&clearTimeout(O)});function ke(he){return he==="connected"?"var(--color-success)":he==="error"?"var(--color-danger)":"var(--color-text-faint)"}function $e(he){return n(he==="connected"?"providers.status.connected":he==="error"?"providers.status.error":"providers.status.unconfigured")}return(he,V)=>(a(),G(ps,{open:!0,"close-on-esc":!1,title:l(n)("providers.title"),size:"xl",height:"fixed",onClose:V[10]||(V[10]=Q=>o("close"))},{default:W(()=>[r("div",{ref_key:"dialogRef",ref:s,class:"pm"},[r("div",nE,[e.loading?(a(),c("div",sE,[M(qt,{size:"sm"}),r("span",null,d(l(n)("providers.loading")),1)])):e.unavailable?(a(),c("div",oE,[M(le,{name:"alert-triangle",size:"md"}),r("span",null,d(l(n)("providers.unavailable")),1)])):e.providers.length===0?(a(),c("div",iE,d(l(n)("providers.empty")),1)):(a(!0),c(ge,{key:3},Te(e.providers,Q=>(a(),c("div",{key:Q.id,class:"prov-row"},[M(nt,{text:$e(Q.status)},{default:W(()=>[r("span",{class:fe(["status-dot",{"status-dot--empty":Q.status!=="connected"&&Q.status!=="error"}]),style:rt(Q.status==="connected"||Q.status==="error"?{background:ke(Q.status)}:void 0)},null,6)]),_:2},1032,["text"]),r("div",aE,[r("span",lE,d(Q.type),1),Q.baseUrl?(a(),c("span",rE,d(Q.baseUrl),1)):A("",!0),r("span",uE,[M(Nt,{variant:Q.hasApiKey?"success":"neutral",size:"sm"},{default:W(()=>[ue(d(Q.hasApiKey?l(n)("providers.keySet"):l(n)("providers.keyNotSet")),1)]),_:2},1032,["variant"]),Q.models&&Q.models.length>0?(a(),c("span",cE," · "+d(l(n)("providers.modelCount",{count:Q.models.length})),1)):A("",!0)])]),r("div",dE,[M(nt,{text:l(n)("providers.refreshTitle",{type:Q.type})},{default:W(()=>[M(Ne,{variant:"secondary",size:"sm",onClick:Ce=>o("refresh",Q.id)},{default:W(()=>[ue(d(l(n)("providers.refresh")),1)]),_:1},8,["onClick"])]),_:2},1032,["text"]),M(nt,{text:l(n)("providers.deleteTitle",{type:Q.type})},{default:W(()=>[M(Ne,{variant:"danger-soft",size:"sm",onClick:Ce=>i(Q.id)},{default:W(()=>[ue(d(l(n)("providers.delete")),1)]),_:1},8,["onClick"])]),_:2},1032,["text"])])]))),128))]),e.unavailable?A("",!0):(a(),c("div",pE,[!u.value&&!f.value&&!se.value?(a(),c("div",fE,[M(Ne,{variant:"secondary",size:"sm",onClick:V[0]||(V[0]=Q=>o("openLogin","moonshot"))},{default:W(()=>[M(le,{name:"user",size:"sm"}),ue(" "+d(l(n)("providers.loginKimi")),1)]),_:1}),M(Ne,{variant:"secondary",size:"sm",onClick:V[1]||(V[1]=Q=>o("openLogin","anthropic"))},{default:W(()=>[M(le,{name:"user",size:"sm"}),ue(" "+d(l(n)("providers.loginAnthropic")),1)]),_:1}),M(Ne,{variant:"primary",size:"sm",onClick:w},{default:W(()=>[M(le,{name:"plus",size:"sm"}),ue(" "+d(l(n)("providers.enterApiKey")),1)]),_:1}),M(Ne,{variant:"secondary",size:"sm",onClick:H},{default:W(()=>[M(le,{name:"globe",size:"sm"}),ue(" "+d(l(n)("providers.import.fromCatalog")),1)]),_:1}),M(Ne,{variant:"secondary",size:"sm",onClick:me},{default:W(()=>[M(le,{name:"download",size:"sm"}),ue(" "+d(l(n)("providers.import.fromRegistry")),1)]),_:1})])):u.value?(a(),c("div",mE,[M(Cs,{label:l(n)("providers.fieldType")},{default:W(()=>[M(Ya,{modelValue:p.type,"onUpdate:modelValue":V[2]||(V[2]=Q=>p.type=Q)},{default:W(()=>[(a(),c(ge,null,Te(h,Q=>r("option",{key:Q,value:Q},d(Q),9,vE)),64))]),_:1},8,["modelValue"])]),_:1},8,["label"]),M(Cs,{label:l(n)("providers.fieldApiKey")},{default:W(()=>[M(Un,{modelValue:p.apiKey,"onUpdate:modelValue":V[3]||(V[3]=Q=>p.apiKey=Q),type:"password",placeholder:"sk-…",autocomplete:"off",spellcheck:"false"},null,8,["modelValue"])]),_:1},8,["label"]),M(Cs,{label:l(n)("providers.fieldBaseUrl")},{default:W(()=>[M(Un,{modelValue:p.baseUrl,"onUpdate:modelValue":V[4]||(V[4]=Q=>p.baseUrl=Q),placeholder:l(n)("providers.baseUrlPlaceholder"),autocomplete:"off",spellcheck:"false"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),M(Cs,{label:l(n)("providers.fieldDefaultModel")},{default:W(()=>[M(Un,{modelValue:p.defaultModel,"onUpdate:modelValue":V[5]||(V[5]=Q=>p.defaultModel=Q),placeholder:l(n)("providers.optional"),autocomplete:"off",spellcheck:"false"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),m.value?(a(),c("div",hE,d(m.value),1)):A("",!0),r("div",gE,[M(Ne,{variant:"primary",size:"sm",onClick:v},{default:W(()=>[ue(d(l(n)("providers.add")),1)]),_:1}),M(Ne,{variant:"secondary",size:"sm",onClick:I},{default:W(()=>[ue(d(l(n)("common.cancel")),1)]),_:1})])])):f.value?(a(),c("div",yE,[r("div",kE,[M(Ne,{variant:"ghost",size:"sm",onClick:k},{default:W(()=>[ue(d(l(n)("providers.import.back")),1)]),_:1}),r("span",bE,d(l(n)("providers.import.catalogTitle")),1)]),M(Cs,{label:l(n)("providers.import.catalogSearchLabel")},{default:W(()=>[M(Un,{modelValue:_.value,"onUpdate:modelValue":V[6]||(V[6]=Q=>_.value=Q),placeholder:l(n)("providers.import.catalogSearchPlaceholder"),autocomplete:"off",spellcheck:"false"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),b.value?(a(),c("div",wE,[M(qt,{size:"sm"}),r("span",null,d(l(n)("providers.import.catalogLoading")),1)])):y.value?(a(),c("div",SE,d(y.value),1)):D.value.length===0?(a(),c("div",CE,d(l(n)("providers.import.catalogEmpty")),1)):(a(),c("div",_E,[(a(!0),c(ge,null,Te(D.value,Q=>(a(),c("div",{key:Q.id,class:fe(["catalog-row",{"is-selected":Q.id===E.value,"is-rejected":Q.rejected}]),"aria-disabled":Q.rejected?"true":void 0,onClick:Ce=>Q.rejected?void 0:P(Q.id)},[r("span",ME,[Q.id===E.value?(a(),G(le,{key:0,name:"check",size:"sm"})):A("",!0)]),r("span",xE,[r("span",IE,d(Q.name),1),r("span",AE,d(Q.id),1),Q.wireType?(a(),c("span",TE,d(Q.wireType),1)):A("",!0)]),r("span",PE,[Q.rejected?(a(),G(Nt,{key:0,variant:"danger",size:"sm"},{default:W(()=>[ue(d(l(n)("providers.import.catalogRejected",{reason:Q.rejectReason??""})),1)]),_:2},1024)):Q.needsBaseUrl?(a(),G(Nt,{key:1,variant:"warning",size:"sm"},{default:W(()=>[ue(d(l(n)("providers.import.catalogNeedsBaseUrl")),1)]),_:1})):(a(),c("span",EE,d(l(n)("providers.modelCount",{count:Q.modelCount})),1))])],10,$E))),128))])),L.value?(a(),c("div",LE,[L.value.needsBaseUrl?(a(),G(Cs,{key:0,label:l(n)("providers.fieldBaseUrl"),hint:l(n)("providers.import.catalogBaseUrlHint")},{default:W(()=>[M(Un,{modelValue:S.value,"onUpdate:modelValue":V[7]||(V[7]=Q=>S.value=Q),placeholder:l(n)("providers.baseUrlPlaceholder"),autocomplete:"off",spellcheck:"false"},null,8,["modelValue","placeholder"])]),_:1},8,["label","hint"])):A("",!0)])):A("",!0),r("div",BE,[M(Ne,{variant:"primary",size:"sm",disabled:T.value===null||L.value?.needsBaseUrl===!0&&S.value.trim()==="",onClick:R},{default:W(()=>[ue(d(l(n)("providers.import.importAction")),1)]),_:1},8,["disabled"]),M(Ne,{variant:"secondary",size:"sm",onClick:k},{default:W(()=>[ue(d(l(n)("common.cancel")),1)]),_:1})])])):se.value?(a(),c("div",RE,[r("div",OE,[M(Ne,{variant:"ghost",size:"sm",onClick:Z},{default:W(()=>[ue(d(l(n)("providers.import.back")),1)]),_:1}),r("span",DE,d(l(n)("providers.import.registryTitle")),1)]),M(Cs,{label:l(n)("providers.import.registryUrlLabel")},{default:W(()=>[M(Un,{modelValue:ae.url,"onUpdate:modelValue":V[8]||(V[8]=Q=>ae.url=Q),placeholder:l(n)("providers.import.registryUrlPlaceholder"),autocomplete:"off",spellcheck:"false"},null,8,["modelValue","placeholder"])]),_:1},8,["label"]),M(Cs,{label:l(n)("providers.import.registryApiKeyLabel")},{default:W(()=>[M(Un,{modelValue:ae.apiKey,"onUpdate:modelValue":V[9]||(V[9]=Q=>ae.apiKey=Q),type:"password",autocomplete:"off",spellcheck:"false"},null,8,["modelValue"])]),_:1},8,["label"]),ve.value?(a(),c("div",zE,d(ve.value),1)):A("",!0),r("div",FE,[M(Ne,{variant:"primary",size:"sm",onClick:oe},{default:W(()=>[ue(d(l(n)("providers.import.importAction")),1)]),_:1}),M(Ne,{variant:"secondary",size:"sm",onClick:Z},{default:W(()=>[ue(d(l(n)("common.cancel")),1)]),_:1})])])):A("",!0)])),r("div",NE,d(l(n)("providers.escClose")),1)],512)]),_:1},8,["title"]))}}),WE=Pe(qE,[["__scopeId","data-v-b1859ac1"]]),HE={key:0,width:"36",height:"36",viewBox:"0 0 36 36",fill:"none",stroke:"var(--color-success)","stroke-width":"2","aria-hidden":"true"},UE={key:1,width:"28",height:"28",viewBox:"0 0 28 28",fill:"none",stroke:"var(--color-danger)","stroke-width":"1.5","aria-hidden":"true"},VE={key:2,width:"28",height:"28",viewBox:"0 0 28 28",fill:"none",stroke:"var(--color-warning)","stroke-width":"1.5","aria-hidden":"true"},$a=xe({__name:"AuthStateIcon",props:{kind:{}},setup(e){return(t,n)=>e.kind==="success"?(a(),c("svg",HE,[...n[0]||(n[0]=[r("circle",{cx:"18",cy:"18",r:"15"},null,-1),r("polyline",{points:"10,18 15,24 26,12"},null,-1)])])):e.kind==="expired"?(a(),c("svg",UE,[...n[1]||(n[1]=[r("circle",{cx:"14",cy:"14",r:"12"},null,-1),r("line",{x1:"14",y1:"8",x2:"14",y2:"15"},null,-1),r("circle",{cx:"14",cy:"19",r:"1.2",fill:"var(--color-danger)"},null,-1)])])):(a(),c("svg",VE,[...n[2]||(n[2]=[r("path",{d:"M14 3 L26 24 H2 Z"},null,-1),r("line",{x1:"14",y1:"12",x2:"14",y2:"18"},null,-1),r("circle",{cx:"14",cy:"21.5",r:"1",fill:"var(--color-warning)"},null,-1)])]))}}),jE={key:0,class:"center-body"},KE={class:"center-text"},GE={key:1,class:"nb"},QE={class:"nb-lead"},YE=["href"],ZE={class:"nb-or"},XE={class:"nb-fallback"},JE={class:"nb-fb-text"},eL=["href"],tL={class:"nb-code-row"},nL={class:"nb-code"},sL={class:"nb-status"},oL={class:"nb-status-text"},iL={class:"nb-countdown"},aL={key:2,class:"center-body"},lL={class:"center-text success-text"},rL={class:"center-hint"},uL={class:"center-body"},cL={class:"center-text err-text"},dL={class:"center-hint"},pL={class:"actions"},fL={class:"center-body"},mL={class:"center-text warn-text"},vL={class:"center-hint"},hL={class:"actions"},gL=3,yL=xe({__name:"LoginDialog",props:{onStartOAuthLogin:{type:Function},onPollOAuthLogin:{type:Function},onCancelOAuthLogin:{type:Function}},emits:["success","close"],setup(e,{emit:t}){const{t:n}=We(),s=x(!0),o=t,i=e,u=x("starting"),p=x(!1),m=x(null),h=x(0),w=x(!1);let I=null,v=null,f=0;mt(async()=>{await _()}),yt(()=>{y()});async function _(){y(),m.value=null,p.value=!1,f=0,u.value="starting";const T=await i.onStartOAuthLogin();if(!T){u.value="error";return}if(T.status==="authenticated"){y(),u.value="success",setTimeout(()=>{o("success"),o("close")},800);return}m.value={flowId:T.flowId,verificationUri:T.verificationUri,verificationUriComplete:T.verificationUriComplete,userCode:T.userCode,expiresIn:T.expiresIn,interval:T.interval},h.value=T.expiresIn,u.value="device-code",g(),b(T.interval)}function g(){v&&clearInterval(v),v=setInterval(()=>{h.value>0?h.value--:(v&&clearInterval(v),v=null)},1e3)}function b(T){I&&clearTimeout(I),I=setTimeout(async()=>{const L=await i.onPollOAuthLogin();if(L===null){if(f+=1,f>=gL){y(),p.value=!0,u.value="error";return}b(T);return}f=0,L.status==="authenticated"?(y(),u.value="success",setTimeout(()=>{o("success"),o("close")},1200)):L.status==="expired"||L.status==="cancelled"?(y(),u.value="expired"):b(T)},T*1e3)}function y(){I&&(clearTimeout(I),I=null),v&&(clearInterval(v),v=null)}async function E(){await _()}async function S(){!m.value||!await un(m.value.userCode)||(w.value=!0,setTimeout(()=>{w.value=!1},2e3))}async function O(){y(),u.value==="device-code"&&i.onCancelOAuthLogin(),o("close")}function D(T){const L=Math.floor(T/60),F=T%60;return`${L}:${String(F).padStart(2,"0")}`}return(T,L)=>(a(),G(ps,{open:s.value,"onUpdate:open":L[0]||(L[0]=F=>s.value=F),title:l(n)("login.title"),"close-on-overlay":!1,onClose:O},{default:W(()=>[u.value==="starting"?(a(),c("div",jE,[M(qt,{size:"md"}),r("span",KE,d(l(n)("login.starting")),1)])):u.value==="device-code"&&m.value?(a(),c("div",GE,[r("div",QE,d(l(n)("login.lead")),1),r("a",{class:"nb-primary",href:m.value.verificationUriComplete,target:"_blank",rel:"noopener noreferrer"},[ue(d(l(n)("login.authorizeInBrowser"))+" ",1),M(le,{name:"external-link",size:"sm"})],8,YE),r("div",ZE,d(l(n)("login.orDivider")),1),r("div",XE,[r("div",JE,[ue(d(l(n)("login.fallbackPrefix")),1),r("a",{class:"nb-fb-link",href:m.value.verificationUri,target:"_blank",rel:"noopener noreferrer"},d(m.value.verificationUri),9,eL),ue(d(l(n)("login.fallbackSuffix")),1)]),r("div",tL,[r("span",nL,d(m.value.userCode),1),M(Ne,{class:fe(["nb-copy",{"is-copied":w.value}]),variant:"secondary",size:"sm",onClick:S},{default:W(()=>[w.value?(a(),c(ge,{key:0},[M(le,{name:"check",size:"sm"}),ue(" "+d(l(n)("login.copied")),1)],64)):(a(),c(ge,{key:1},[M(le,{name:"copy",size:"sm"}),ue(" "+d(l(n)("login.copy")),1)],64))]),_:1},8,["class"])])]),r("div",sL,[M(qt,{size:"sm",label:l(n)("login.waitingAuth")},null,8,["label"]),r("span",oL,d(l(n)("login.waitingAutoClose")),1),r("span",iL,d(D(h.value)),1)])])):u.value==="success"?(a(),c("div",aL,[M($a,{kind:"success"}),r("span",lL,d(l(n)("login.success")),1),r("span",rL,d(l(n)("login.successHint")),1)])):u.value==="expired"?(a(),c(ge,{key:3},[r("div",uL,[M($a,{kind:"expired"}),r("span",cL,d(l(n)("login.expiredTitle")),1),r("span",dL,d(l(n)("login.expiredHint")),1)]),r("div",pL,[M(Ne,{variant:"primary",onClick:E},{default:W(()=>[ue(d(l(n)("login.retry")),1)]),_:1}),M(Ne,{variant:"secondary",onClick:O},{default:W(()=>[ue(d(l(n)("login.closeBtn")),1)]),_:1})])],64)):u.value==="error"?(a(),c(ge,{key:4},[r("div",fL,[M($a,{kind:"error"}),r("span",mL,d(p.value?l(n)("login.pollErrorTitle"):l(n)("login.errorTitle")),1),r("span",vL,d(p.value?l(n)("login.pollErrorHint"):l(n)("login.errorHint")),1)]),r("div",hL,[M(Ne,{variant:"primary",onClick:E},{default:W(()=>[ue(d(l(n)("login.retry")),1)]),_:1}),M(Ne,{variant:"secondary",onClick:O},{default:W(()=>[ue(d(l(n)("login.closeBtn")),1)]),_:1})])],64)):A("",!0)]),_:1},8,["open","title"]))}}),kL=Pe(yL,[["__scopeId","data-v-8308a28f"]]),lu=1,bL=6,wL=.25;function yd(e){return Number.isFinite(e)?Math.min(bL,Math.max(lu,e)):lu}function SL(e){return Math.round(e*100)/100}function kd(e,t){return yd(SL(e+t*wL))}function CL(e){return kd(e,1)}function _L(e){return kd(e,-1)}function ru(e,t,n){const s=Math.max(0,(t-n)/2);return Math.min(s,Math.max(-s,e))}const $L=["aria-label"],ML={key:0,class:"ml-loading"},xL=["src","alt"],IL={key:0,class:"ml-zoom-hint"},AL=["src"],TL={key:3,class:"ml-error"},PL={key:4,class:"ml-toolbar"},EL=["aria-label"],LL={class:"ml-zoom-label"},BL=["aria-label"],RL=["disabled","aria-label"],OL=xe({__name:"MediaLightbox",props:{state:{}},emits:["close"],setup(e,{emit:t}){const n=e,s=t,{t:o}=We(),i=x(1),u=x(0),p=x(0);Oe(()=>n.state?.media,()=>{i.value=1,u.value=0,p.value=0});const m=$(()=>n.state?.media.kind==="image"),h=$(()=>{const L=i.value;return L<=1?"":`scale(${L}) translate(${u.value}px, ${p.value}px)`});function w(L){if(!m.value)return;L.preventDefault();const F=yd(i.value+(L.deltaY<0?.25:-.25));i.value=F,v()}const I=x(null);function v(){const L=I.value;L&&(u.value=ru(u.value,L.clientWidth*i.value,L.clientWidth),p.value=ru(p.value,L.clientHeight*i.value,L.clientHeight))}function f(){i.value=CL(i.value),v()}function _(){i.value=_L(i.value),v()}function g(){i.value=1,u.value=0,p.value=0}const b=x(!1);let y=0,E=0;function S(L){!m.value||i.value<=1||(b.value=!0,y=L.clientX,E=L.clientY,L.target.setPointerCapture?.(L.pointerId))}function O(L){b.value&&(u.value+=L.clientX-y,p.value+=L.clientY-E,y=L.clientX,E=L.clientY,v())}function D(L){b.value=!1,L.target.releasePointerCapture?.(L.pointerId)}function T(L){L.key==="Escape"?s("close"):L.key==="+"||L.key==="="?f():L.key==="-"?_():L.key==="0"&&g()}return(L,F)=>(a(),G(io,{to:"body"},[e.state?(a(),c("div",{key:0,class:"media-lightbox",role:"dialog","aria-modal":"true",tabindex:"-1",onKeydown:T},[r("div",{class:"ml-backdrop",onClick:F[0]||(F[0]=H=>s("close"))}),r("button",{type:"button",class:"ml-close","aria-label":l(o)("common.close"),onClick:F[1]||(F[1]=H=>s("close"))},[M(le,{name:"close"})],8,$L),e.state.loading?(a(),c("div",ML,[M(qt)])):e.state.sourceUrl&&m.value?(a(),c("div",{key:1,ref_key:"viewportRef",ref:I,class:"ml-viewport",onWheel:w,onPointerdown:S,onPointermove:O,onPointerup:D,onPointercancel:D},[r("img",{class:"ml-image",src:e.state.sourceUrl,alt:e.state.media.path??"",style:rt({transform:h.value}),draggable:"false"},null,12,xL),i.value>1?(a(),c("div",IL,d(l(o)("media.dragHint")),1)):A("",!0)],544)):e.state.sourceUrl&&!m.value?(a(),c("video",{key:2,class:"ml-video",src:e.state.sourceUrl,controls:"",autoplay:"",playsinline:""},null,8,AL)):(a(),c("div",TL,[r("p",null,d(e.state.error??l(o)("media.noPreview")),1)])),e.state.sourceUrl&&m.value?(a(),c("div",PL,[r("button",{type:"button",class:"ml-btn","aria-label":l(o)("media.zoomOut"),onClick:_},[M(le,{name:"minus"})],8,EL),r("span",LL,d(Math.round(i.value*100))+"%",1),r("button",{type:"button",class:"ml-btn","aria-label":l(o)("media.zoomIn"),onClick:f},[M(le,{name:"plus"})],8,BL),r("button",{type:"button",class:"ml-btn",disabled:i.value<=1,"aria-label":l(o)("media.resetZoom"),onClick:g},[M(le,{name:"expand"})],8,RL)])):A("",!0)],32)):A("",!0)]))}}),DL=Pe(OL,[["__scopeId","data-v-0ff39638"]]);function Za(e){return/^(?:https?:|blob:|data:)/i.test(e)}function zL({client:e,detailTarget:t}){const{t:n}=We(),s=x(null),o=x(null),i=x(!1),u=x(null),p=x(null);let m=0,h=null;function w(){h!==null&&(URL.revokeObjectURL(h),h=null)}const I=$(()=>{const L=p.value;return L?e.getFileDownloadUrl(L):null}),v=$(()=>s.value!==null);function f(L){return L.length>1?L.replace(/\/+$/,""):L}function _(L){const F=[];for(const H of L.split(/[\\/]+/))if(!(!H||H===".")){if(H===".."){F.pop();continue}F.push(H)}return F.join("/")}function g(L){const F=L.trim();if(!F)return{error:n("filePreview.errors.emptyPath")};if(/^[a-z][a-z0-9+.-]*:\/\//i.test(F))return{error:n("filePreview.errors.unsupportedPath")};if(F.startsWith("~"))return{error:n("filePreview.errors.outsideWorkspace")};const H=f(e.status.value.cwd);if(F.startsWith("/")){if(!H||F!==H&&!F.startsWith(`${H}/`))return{error:n("filePreview.errors.outsideWorkspace")};const P=F===H?"":F.slice(H.length+1);if(P.split(/[\\/]+/).includes(".."))return{error:n("filePreview.errors.outsideWorkspace")};const R=_(P);return R?{path:R}:{error:n("filePreview.errors.isDirectory")}}if(F.split(/[\\/]+/).includes(".."))return{error:n("filePreview.errors.outsideWorkspace")};const k=_(F);return k?{path:k}:{error:n("filePreview.errors.emptyPath")}}async function b(L){const F=s.value;if(t.value==="file"&&F&&F.path===L.path&&F.line===L.line){O();return}const H=++m;w(),t.value="file",o.value=null,u.value=null,i.value=!0,s.value=L,p.value=null;const k=g(L.path);if("error"in k){i.value=!1,u.value=k.error;return}p.value=k.path;try{const P=await e.readFileContent(k.path);if(H!==m)return;P?o.value={...P,path:P.path||k.path}:u.value=n("filePreview.errors.loadFailed")}catch(P){if(H!==m)return;u.value=P instanceof Error?P.message:n("filePreview.errors.loadFailed")}finally{H===m&&(i.value=!1)}}function y(L){return/^data:([^;,]+)/i.exec(L)?.[1]}function E(L){if(L.kind!=="image"&&L.kind!=="video")return;const F=++m;w(),t.value="file",s.value=null,p.value=null,u.value=null;const H=L.kind==="video",k={path:L.path??n(H?"filePreview.videoFallback":"filePreview.imageFallback"),content:"",encoding:"utf-8",mime:L.mimeType??y(L.url)??(H?"video/*":"image/*"),isBinary:!0,size:L.bytes??0};L.fileId?(i.value=!0,o.value=k,Ae().getFileBlob(L.fileId).then(P=>{if(F===m){if(t.value!=="file"||!o.value){i.value=!1;return}h=URL.createObjectURL(P),o.value={...o.value,sourceUrl:h},i.value=!1}}).catch(()=>{F===m&&(o.value&&(o.value={...o.value,sourceUrl:L.url}),i.value=!1)})):(i.value=!1,o.value=Za(L.url)?{...k,sourceUrl:L.url}:k)}function S(){m+=1,s.value=null,p.value=null,o.value=null,u.value=null,i.value=!1,w()}function O(){S(),t.value==="file"&&(t.value=null)}Oe(t,(L,F)=>{F==="file"&&L!=="file"&&S()});function D(){const L=o.value?.path??s.value?.path;L&&e.openWorkspaceFile(L,s.value?.line)}function T(){const L=o.value?.path??s.value?.path;L&&e.revealWorkspaceFile(L)}return{previewTarget:s,previewFile:o,previewLoading:i,previewError:u,previewDownloadUrl:I,previewExternalActions:v,openFilePreview:b,openMediaPreview:E,closeFilePreview:O,openPreviewInEditor:D,revealPreviewFile:T}}function FL(e=Ae()){const{t}=We(),n=x(null),s=$(()=>n.value!==null);let o=0;function i(p){if(p.kind!=="image"&&p.kind!=="video")return;const m=++o,h=!!p.fileId;if(n.value={media:p,sourceUrl:null,loading:h,error:null},!p.fileId){n.value={media:p,sourceUrl:Za(p.url)?p.url:null,loading:!1,error:null};return}e.getFileBlob(p.fileId).then(w=>{if(m!==o||!n.value)return;const I=URL.createObjectURL(w);n.value={media:p,sourceUrl:I,loading:!1,error:null}}).catch(()=>{m!==o||!n.value||(n.value={media:p,sourceUrl:Za(p.url)?p.url:null,loading:!1,error:t("filePreview.errors.loadFailed")})})}function u(){o+=1,n.value=null}return{isOpen:s,state:n,open:i,close:u}}function NL(e,t){const n=[...e];return t==="archived-desc"?n.sort((s,o)=>o.updatedAt.localeCompare(s.updatedAt)):t==="created-desc"?n.sort((s,o)=>o.createdAt.localeCompare(s.createdAt)):n.sort((s,o)=>s.title.localeCompare(o.title,"zh")),n}function qL(e,t){const n=new Set(e.map(o=>o.id)),s=t.filter(o=>!n.has(o.id));return[...e,...s]}const bd=xe({__name:"LanguageSwitcher",setup(e){const{locale:t}=We(),n=Iu.map(o=>({value:o.code,label:o.label}));function s(o){t.value!==o&&Au(o)}return(o,i)=>(a(),G(cn,{"model-value":l(t),options:l(n),"onUpdate:modelValue":s},null,8,["model-value","options"]))}}),WL=["href","target","rel"],HL=xe({__name:"Link",props:{href:{},variant:{default:"default"},external:{type:Boolean}},setup(e){return(t,n)=>e.href?(a(),c("a",{key:0,class:fe(["ui-link",`ui-link--${e.variant}`]),href:e.href,target:e.external?"_blank":void 0,rel:e.external?"noopener noreferrer":void 0},[gt(t.$slots,"default",{},void 0,!0)],10,WL)):(a(),c("span",{key:1,class:fe(["ui-link",`ui-link--${e.variant}`])},[gt(t.$slots,"default",{},void 0,!0)],2))}}),uu=Pe(HL,[["__scopeId","data-v-645e7d4e"]]),UL=["aria-checked","aria-label","disabled"],VL=xe({__name:"Switch",props:{modelValue:{type:Boolean},disabled:{type:Boolean},label:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=t;return(s,o)=>(a(),c("button",{class:fe(["ui-switch",{"is-on":e.modelValue}]),type:"button",role:"switch","aria-checked":e.modelValue,"aria-label":e.label,disabled:e.disabled,onClick:o[0]||(o[0]=i=>n("update:modelValue",!e.modelValue))},[...o[1]||(o[1]=[r("span",{class:"ui-switch__thumb"},null,-1)])],10,UL))}}),rs=Pe(VL,[["__scopeId","data-v-e5aecc8e"]]),jL={class:"ps"},KL={class:"ext-hint-title"},GL={key:1,class:"action-error"},QL={class:"plug-sec"},YL={class:"plug-title"},ZL={key:0,class:"plug-state"},XL={key:1,class:"plug-state is-error"},JL={key:3,class:"plug-list"},eB={class:"plug-info"},tB={class:"plug-name"},nB={class:"plug-display"},sB={key:0,class:"plug-version"},oB={key:0,class:"plug-counts"},iB={class:"plug-actions"},aB={class:"plug-sec"},lB={class:"plug-sec-head"},rB={class:"plug-title"},uB={key:0,class:"plug-state"},cB={key:1,class:"plug-state is-error"},dB={key:3,class:"plug-list"},pB={class:"plug-info"},fB={class:"plug-name"},mB={class:"plug-display"},vB={key:0,class:"plug-desc"},hB={key:1,class:"plug-home"},gB={class:"plug-actions"},yB={class:"plug-sec"},kB={class:"plug-title"},bB={key:0,class:"plug-state"},wB={key:1,class:"plug-state is-error"},SB={key:3,class:"plug-list"},CB={class:"plug-info"},_B={class:"plug-name"},$B={class:"plug-display"},MB={key:0,class:"plug-desc"},xB={key:1,class:"cap-progress"},IB={class:"cap-progress-text"},AB={class:"cap-progress-track","aria-hidden":"true"},TB={key:2,class:"cap-error"},PB={key:3,class:"cap-steps"},EB={key:2,class:"cap-step-missing","aria-hidden":"true"},LB={class:"cap-step-label"},BB={class:"plug-actions"},Ma="kimi-webbridge",RB=xe({__name:"PluginSettingsPanel",props:{active:{type:Boolean}},setup(e){const{t}=We(),{confirm:n}=vo(),s=e,o=x([]),i=x(!1),u=x(""),p=x([]),m=x("idle"),h=x([]),w=x(!1),I=x(""),v=x(!1),f=x(""),_=Pn({}),g=Pn({});async function b(){if(!i.value){i.value=!0,u.value="";try{o.value=await Ae().listPlugins()}catch(X){u.value=O(X)}finally{i.value=!1}}}async function y(){if(m.value!=="loading"){m.value="loading";try{p.value=await Ae().listPluginMarketplace(),m.value="ok"}catch{p.value.length===0?m.value="error":m.value="ok"}}}async function E(){if(!w.value){w.value=!0,I.value="";try{h.value=await Ae().listCapabilities()}catch(X){I.value=O(X)}finally{w.value=!1}}}function S(){b(),y(),E()}function O(X){return _n(X)&&X.message?X.message:t("settings.plugins.loadFailed")}Oe(()=>s.active,X=>{X&&!v.value&&(v.value=!0,S())},{immediate:!0});let D;mt(()=>{D=Ek(X=>{if(X.type==="pluginsChanged"){S();return}he(X.capabilityId,X.install),X.install.running||(E(),b())})}),Tn(()=>{D?.()});function T(X){return t(`settings.plugins.source.${X}`)}function L(X){const Y=(J,Ee)=>t(`settings.plugins.counts.${J}`,{n:Ee}),B=[];return X.skillCount>0&&B.push(Y("skill",X.skillCount)),X.mcpServerCount>0&&B.push(Y("mcp",X.mcpServerCount)),X.enabledMcpServerCount>0&&B.push(Y("mcpEnabled",X.enabledMcpServerCount)),X.hookCount>0&&B.push(Y("hook",X.hookCount)),X.commandCount>0&&B.push(Y("command",X.commandCount)),B.join(" · ")}async function F(X,Y){if(!_[X.id]){_[X.id]=!0,f.value="";try{await Ae().setPluginEnabled(X.id,Y),await b()}catch(B){f.value=O(B)}finally{delete _[X.id]}}}async function H(X){f.value="";try{await n({title:t("settings.plugins.remove"),message:t("settings.plugins.confirmRemove"),variant:"danger",action:()=>Ae().removePlugin(X.id)})&&await b()}catch(Y){f.value=O(Y)}}function k(X){return X==="official"?t("settings.plugins.official"):X==="third-party"?t("settings.plugins.thirdParty"):null}async function P(X){if(!_[X.id]){_[X.id]=!0,f.value="";try{const Y=X.capabilityId;Y!==void 0?(await Ae().installCapability(Y,B=>{he(Y,B.install)}),await E()):await Ae().installPlugin(X.source),await b(),await y()}catch(Y){f.value=O(Y)}finally{delete _[X.id]}}}const R=x(!1),se=x(""),ae=x(!1),ve=x("");function me(){se.value="",ve.value="",R.value=!0}function Z(){ae.value||(R.value=!1)}async function oe(){const X=se.value.trim();if(!J0(X)){ve.value=t("settings.plugins.customInstallHint");return}ve.value="",ae.value=!0;try{await Ae().installPlugin(X),R.value=!1,await b()}catch(Y){ve.value=O(Y)}finally{ae.value=!1}}function ie(X){return t(`settings.plugins.capabilityStates.${X}`)}function ke(X){return X==="ready"?"success":X==="partial"?"warning":"neutral"}function $e(X){return ey(X.install,X.state)}function he(X,Y){h.value=h.value.map(B=>B.id===X?{...B,install:zu(B.install,Y)}:B)}async function V(X){if(!g[X.id]){g[X.id]=!0,f.value="";try{await Ae().installCapability(X.id,Y=>{he(X.id,Y.install)}),await E(),await b()}catch(Y){_n(Y)&&Y.code===xk?f.value=t("settings.plugins.capabilityStates.unsupported"):f.value=O(Y),await E()}finally{delete g[X.id]}}}function Q(X){const Y=X.install.percent;if(!(typeof Y!="number"||Number.isNaN(Y)))return Math.min(100,Math.max(0,Math.round(Y)))}const Ce=x($t(qe.pluginExtensionHintDismissed)==="1"),re=$(()=>h.value.find(X=>X.id===Ma)),ee=$(()=>p.value.find(Y=>Y.capabilityId===Ma||Y.id===Ma)?.homepage),pe=$(()=>{if(Ce.value)return!1;const X=re.value;return X!==void 0&&X.supported&&X.state!=="ready"});function De(){Ce.value=!0,Ot(qe.pluginExtensionHintDismissed,"1")}return(X,Y)=>(a(),c("div",jL,[pe.value?(a(),G(od,{key:0,variant:"info",class:"ext-hint"},{default:W(()=>[r("span",KL,d(l(t)("settings.plugins.extensionHintTitle")),1),ee.value?(a(),G(uu,{key:0,href:ee.value,external:"",class:"ext-hint-guide"},{default:W(()=>[ue(d(l(t)("settings.plugins.extensionGuide")),1)]),_:1},8,["href"])):A("",!0),M(et,{size:"sm",class:"ext-hint-dismiss",label:l(t)("settings.plugins.dismissHint"),onClick:De},{default:W(()=>[M(le,{name:"close",size:"sm"})]),_:1},8,["label"])]),_:1})):A("",!0),f.value?(a(),c("div",GL,[M(le,{name:"alert-triangle",size:"sm"}),r("span",null,d(f.value),1)])):A("",!0),r("section",QL,[r("h3",YL,d(l(t)("settings.plugins.sections.installed")),1),i.value?(a(),c("div",ZL,[M(qt,{size:"sm"}),r("span",null,d(l(t)("settings.plugins.loading")),1)])):u.value?(a(),c("div",XL,[r("span",null,d(u.value),1),M(Ne,{variant:"secondary",size:"sm",onClick:b},{default:W(()=>[ue(d(l(t)("settings.plugins.retry")),1)]),_:1})])):o.value.length===0?(a(),G(Qo,{key:2,title:l(t)("settings.plugins.empty")},null,8,["title"])):(a(),c("div",JL,[(a(!0),c(ge,null,Te(o.value,B=>(a(),c("div",{key:B.id,class:"plug-row"},[r("div",eB,[r("div",tB,[r("span",nB,d(B.displayName||B.id),1),B.version?(a(),c("span",sB,d(B.version),1)):A("",!0),M(Nt,{variant:"neutral",size:"sm"},{default:W(()=>[ue(d(T(B.source)),1)]),_:2},1024),B.hasErrors?(a(),G(Nt,{key:1,variant:"danger",size:"sm"},{default:W(()=>[ue(d(l(t)("settings.plugins.hasErrors")),1)]),_:1})):A("",!0)]),L(B)?(a(),c("div",oB,d(L(B)),1)):A("",!0)]),r("div",iB,[M(rs,{"model-value":B.enabled,disabled:_[B.id]===!0,label:l(t)("settings.plugins.enabled"),"onUpdate:modelValue":J=>F(B,J)},null,8,["model-value","disabled","label","onUpdate:modelValue"]),M(Ne,{variant:"danger-soft",size:"sm",disabled:_[B.id]===!0,onClick:J=>H(B)},{default:W(()=>[ue(d(l(t)("settings.plugins.remove")),1)]),_:1},8,["disabled","onClick"])])]))),128))]))]),r("section",aB,[r("div",lB,[r("h3",rB,d(l(t)("settings.plugins.sections.marketplace")),1),M(Ne,{variant:"secondary",size:"sm",onClick:me},{default:W(()=>[M(le,{name:"plus",size:"sm"}),ue(" "+d(l(t)("settings.plugins.customInstall")),1)]),_:1})]),m.value==="loading"?(a(),c("div",uB,[M(qt,{size:"sm"}),r("span",null,d(l(t)("settings.plugins.loading")),1)])):m.value==="error"?(a(),c("div",cB,[r("span",null,d(l(t)("settings.plugins.catalogUnavailable")),1),M(Ne,{variant:"secondary",size:"sm",onClick:y},{default:W(()=>[ue(d(l(t)("settings.plugins.retry")),1)]),_:1})])):p.value.length===0?(a(),G(Qo,{key:2,title:l(t)("settings.plugins.empty")},null,8,["title"])):(a(),c("div",dB,[(a(!0),c(ge,null,Te(p.value,B=>(a(),c("div",{key:B.id,class:"plug-row"},[r("div",pB,[r("div",fB,[r("span",mB,d(B.displayName||B.id),1),k(B.tier)?(a(),G(Nt,{key:0,variant:"info",size:"sm"},{default:W(()=>[ue(d(k(B.tier)),1)]),_:2},1024)):A("",!0),B.installed?(a(),G(Nt,{key:1,variant:"success",size:"sm"},{default:W(()=>[ue(d(l(t)("settings.plugins.installed")),1)]),_:1})):A("",!0),B.updateAvailable?(a(),G(Nt,{key:2,variant:"warning",size:"sm"},{default:W(()=>[ue(d(l(t)("settings.plugins.update")),1)]),_:1})):A("",!0)]),B.description?(a(),c("p",vB,d(B.description),1)):A("",!0),B.homepage?(a(),c("div",hB,[M(uu,{href:B.homepage,external:""},{default:W(()=>[ue(d(l(t)("settings.plugins.homepage")),1)]),_:1},8,["href"])])):A("",!0)]),r("div",gB,[B.updateAvailable?(a(),G(Ne,{key:0,variant:"primary",size:"sm",loading:_[B.id]===!0,disabled:_[B.id]===!0,onClick:J=>P(B)},{default:W(()=>[ue(d(l(t)("settings.plugins.update")),1)]),_:1},8,["loading","disabled","onClick"])):B.installed?(a(),G(Ne,{key:1,variant:"secondary",size:"sm",disabled:""},{default:W(()=>[ue(d(l(t)("settings.plugins.installed")),1)]),_:1})):(a(),G(Ne,{key:2,variant:"primary",size:"sm",loading:_[B.id]===!0,disabled:_[B.id]===!0,onClick:J=>P(B)},{default:W(()=>[ue(d(l(t)("settings.plugins.install")),1)]),_:1},8,["loading","disabled","onClick"]))])]))),128))]))]),r("section",yB,[r("h3",kB,d(l(t)("settings.plugins.sections.capabilities")),1),w.value?(a(),c("div",bB,[M(qt,{size:"sm"}),r("span",null,d(l(t)("settings.plugins.loading")),1)])):I.value?(a(),c("div",wB,[r("span",null,d(I.value),1),M(Ne,{variant:"secondary",size:"sm",onClick:E},{default:W(()=>[ue(d(l(t)("settings.plugins.retry")),1)]),_:1})])):h.value.length===0?(a(),G(Qo,{key:2,title:l(t)("settings.plugins.capabilitiesUnavailable")},null,8,["title"])):(a(),c("div",SB,[(a(!0),c(ge,null,Te(h.value,B=>(a(),c("div",{key:B.id,class:"plug-row"},[r("div",CB,[r("div",_B,[r("span",$B,d(B.displayName||B.id),1),M(Nt,{variant:ke(B.state),size:"sm"},{default:W(()=>[ue(d(ie(B.state)),1)]),_:2},1032,["variant"])]),B.description?(a(),c("p",MB,d(B.description),1)):A("",!0),$e(B).phase==="installing"?(a(),c("div",xB,[r("span",IB,[ue(d(l(t)("settings.plugins.installing"))+" ",1),$e(B).step?(a(),c(ge,{key:0},[ue(" · "+d($e(B).step),1)],64)):A("",!0),Q(B)!==void 0?(a(),c(ge,{key:1},[ue(" · "+d(Q(B))+"% ",1)],64)):A("",!0)]),r("span",AB,[r("span",{class:"cap-progress-fill",style:rt({width:`${Q(B)??0}%`})},null,4)])])):$e(B).phase==="error"?(a(),c("div",TB,[M(le,{name:"alert-triangle",size:"sm"}),r("span",null,d($e(B).error),1)])):A("",!0),B.steps.length>0?(a(),c("ul",PB,[(a(!0),c(ge,null,Te(B.steps,J=>(a(),c("li",{key:J.id,class:"cap-step"},[J.state==="ok"?(a(),G(le,{key:0,name:"check",size:"sm",class:"cap-step-ok"})):J.state==="failed"?(a(),G(le,{key:1,name:"alert-triangle",size:"sm",class:"cap-step-bad"})):(a(),c("span",EB)),r("span",LB,d(J.id),1)]))),128))])):A("",!0)]),r("div",BB,[B.state!=="ready"&&B.state!=="unsupported"&&B.supported?(a(),G(Ne,{key:0,variant:"primary",size:"sm",loading:g[B.id]===!0,disabled:g[B.id]===!0,onClick:J=>V(B)},{default:W(()=>[ue(d(l(t)("settings.plugins.install")),1)]),_:1},8,["loading","disabled","onClick"])):A("",!0)])]))),128))]))]),M(ps,{open:R.value,title:l(t)("settings.plugins.customInstall"),size:"md",onClose:Z},{foot:W(()=>[M(Ne,{variant:"primary",size:"sm",loading:ae.value,disabled:ae.value,onClick:oe},{default:W(()=>[ue(d(l(t)("settings.plugins.install")),1)]),_:1},8,["loading","disabled"]),M(Ne,{variant:"secondary",size:"sm",disabled:ae.value,onClick:Z},{default:W(()=>[ue(d(l(t)("common.cancel")),1)]),_:1},8,["disabled"])]),default:W(()=>[M(Cs,{label:l(t)("settings.plugins.customInstall"),hint:l(t)("settings.plugins.customInstallHint"),error:ve.value},{default:W(()=>[M(Un,{modelValue:se.value,"onUpdate:modelValue":Y[0]||(Y[0]=B=>se.value=B),placeholder:l(t)("settings.plugins.customInstallPlaceholder"),disabled:ae.value,spellcheck:"false",autocomplete:"off",onKeyup:An(oe,["enter"])},null,8,["modelValue","placeholder","disabled"])]),_:1},8,["label","hint","error"])]),_:1},8,["open","title"])]))}}),OB=Pe(RB,[["__scopeId","data-v-8c64da0f"]]),DB=["aria-label"],zB=["aria-selected","onClick"],FB={class:"body"},NB={class:"panel"},qB={class:"sec"},WB={class:"sec-title"},HB={class:"row"},UB={class:"rlabel"},VB={class:"row"},jB={class:"rlabel"},KB={class:"row"},GB={class:"rlabel"},QB={class:"num-field"},YB=["value","aria-label"],ZB={class:"row"},XB={class:"rlabel"},JB={class:"row"},eR={class:"rlabel"},tR={class:"hint"},nR={class:"sec"},sR={class:"sec-title"},oR={class:"row"},iR={class:"rlabel"},aR={key:0,class:"hint"},lR={class:"row"},rR={class:"rlabel"},uR={key:0,class:"hint"},cR={class:"row"},dR={class:"rlabel"},pR={key:0,class:"hint"},fR={class:"row"},mR={class:"rlabel"},vR={class:"panel"},hR={class:"sec"},gR={class:"sec-title"},yR={class:"row"},kR={class:"rlabel"},bR={key:0,class:"rvalue"},wR={class:"actions"},SR={class:"panel"},CR={class:"sec"},_R={class:"sec-head"},$R={class:"sec-title"},MR={key:0,class:"saving"},xR={class:"row"},IR={class:"rlabel"},AR={class:"hint"},TR={key:0,class:"select-wrap"},PR={key:0,value:"",disabled:""},ER=["label"],LR=["value"],BR={key:1,class:"rvalue mono"},RR={class:"row"},OR={class:"rlabel"},DR={class:"hint"},zR={class:"row"},FR={class:"rlabel"},NR={class:"hint"},qR={class:"row"},WR={class:"rlabel"},HR={class:"hint"},UR={class:"row"},VR={class:"rlabel"},jR={class:"hint"},KR={key:1,class:"empty-config"},GR={class:"panel plugins-panel"},QR={class:"panel"},YR={class:"sec"},ZR={class:"sec-title"},XR={class:"row"},JR={class:"rlabel"},eO={class:"rvalue mono"},tO={class:"row"},nO={class:"rlabel"},sO={class:"rvalue mono"},oO={class:"row"},iO={class:"rlabel"},aO={class:"rvalue mono"},lO={key:0,class:"row"},rO={class:"rlabel"},uO={class:"hint"},cO={class:"hint"},dO={class:"row"},pO={class:"rlabel"},fO={key:0,class:"hint"},mO={class:"panel"},vO={class:"panel-head"},hO={class:"panel-kicker"},gO={class:"panel-title"},yO={class:"panel-desc"},kO={class:"archive-toolbar"},bO={class:"archive-search"},wO=["placeholder"],SO={value:"all"},CO=["value"],_O={key:0,class:"archive-empty"},$O={key:0,class:"archive-list"},MO={class:"archive-workspace"},xO={class:"path"},IO={class:"count"},AO={class:"setting-card"},TO={class:"archive-meta"},PO={class:"archive-name"},EO={class:"archive-time"},LO=["disabled"],BO={key:1,class:"archive-empty"},RO=50,OO=xe({__name:"SettingsDialog",props:{colorScheme:{},accent:{},uiFontSize:{},authReady:{type:Boolean},accountModel:{},notify:{type:Boolean},notifyQuestion:{type:Boolean},notifyApproval:{type:Boolean},notifyPermission:{},sound:{type:Boolean},conversationToc:{type:Boolean},config:{},models:{},configSaving:{type:Boolean},serverVersion:{},backend:{}},emits:["setColorScheme","setAccent","setUiFontSize","setNotify","setNotifyQuestion","setNotifyApproval","setSound","setConversationToc","login","logout","openOnboarding","openProviders","updateConfig","close"],setup(e,{emit:t}){const{t:n}=We(),s=e,o=t,i=x("general"),u=[{id:"general",labelKey:"settings.tabs.general"},{id:"agent",labelKey:"settings.tabs.agent"},{id:"account",labelKey:"settings.tabs.account"},{id:"plugins",labelKey:"settings.tabs.plugins"},{id:"advanced",labelKey:"settings.tabs.advanced"},{id:"archived",labelKey:"settings.tabs.archived"}],p=Xd(),m=$(()=>s.backend==="v2"?"v2 (kap-server)":"v1 (server)"),h=["manual","yolo","auto"],w={manual:"status.permissionManual",auto:"status.permissionAuto",yolo:"status.permissionYolo"},I=x(null);Bl(I);function v(re){re.key==="Escape"&&o("close")}mt(()=>document.addEventListener("keydown",v)),yt(()=>document.removeEventListener("keydown",v));function f(){Eu()}const _=$(()=>{const re=new Map;for(const ee of s.models??[])re.set(ee.id,{id:ee.id,label:ee.displayName??ee.model??ee.id,provider:ee.provider});for(const[ee,pe]of Object.entries(s.config?.models??{})){if(re.has(ee))continue;const De=y(pe);re.set(ee,{id:ee,label:E(ee,pe,De),provider:De??ee})}return Array.from(re.values())}),g=$(()=>{const re=new Map;for(const ee of _.value){const pe=re.get(ee.provider)??[];pe.push(ee),re.set(ee.provider,pe)}for(const ee of re.values())ee.sort((pe,De)=>pe.label.localeCompare(De.label));return Array.from(re.entries()).toSorted(([ee],[pe])=>ee.localeCompare(pe)).map(([ee,pe])=>({provider:ee,options:pe}))}),b=$(()=>{const re=s.config?.defaultPermissionMode;return re==="auto"||re==="yolo"||re==="manual"?re:"manual"});function y(re){if(!re||typeof re!="object")return;const ee=re;return typeof ee.provider=="string"?ee.provider:void 0}function E(re,ee,pe){if(!ee||typeof ee!="object")return re;const De=ee,X=typeof De.model=="string"?De.model:void 0,Y=pe??y(ee);return X&&Y?`${re} (${Y}/${X})`:X?`${re} (${X})`:re}function S(re){return re===!0}function O(re){!re||re===s.config?.defaultModel||o("updateConfig",{defaultModel:re})}function D(re){re!==b.value&&o("updateConfig",{defaultPermissionMode:re})}function T(re){const ee=s.config?.[re];o("updateConfig",{[re]:!S(ee)})}function L(){const re=s.config?.thinking;return!re||typeof re!="object"?!0:re.enabled!==!1}function F(){o("updateConfig",{thinking:{enabled:!L()}})}function H(){const re=s.config?.telemetry!==!1;o("updateConfig",{telemetry:!re})}function k(re){i.value=re}const P=Zi(),R=x([]),se=x(!1),ae=x(!1),ve=x(!1),me=x(""),Z=x("all"),oe=x("archived-desc");let ie;async function ke(re){if(!se.value){se.value=!0;try{const ee=await P.loadArchivedSessions({beforeId:re?void 0:ie,pageSize:RO});R.value=re?ee.items:qL(R.value,ee.items),ie=ee.items.at(-1)?.id,ve.value=ee.hasMore&&ee.items.length>0,ae.value=!0}catch(ee){console.warn("fetchArchivedPage failed",ee)}finally{se.value=!1}}}Oe(i,re=>{re==="archived"&&!ae.value&&ke(!0)});const $e=$(()=>{const re=new Set;for(const ee of R.value)re.add(ee.cwd);return Array.from(re).sort((ee,pe)=>ee.localeCompare(pe))}),he=$(()=>{let re=R.value.filter(pe=>pe.archived===!0);Z.value!=="all"&&(re=re.filter(pe=>pe.cwd===Z.value));const ee=me.value.trim().toLowerCase();return ee&&(re=re.filter(pe=>pe.title.toLowerCase().includes(ee))),NL(re,oe.value)}),V=$(()=>{const re=new Map;for(const ee of he.value){const pe=re.get(ee.cwd)??[];pe.push(ee),re.set(ee.cwd,pe)}return Array.from(re.entries()).map(([ee,pe])=>({cwd:ee,items:pe}))});async function Q(re){await P.restoreSession(re)&&(R.value=R.value.filter(pe=>pe.id!==re))}function Ce(re){const ee=new Date(re);if(Number.isNaN(ee.getTime()))return re;const pe=De=>String(De).padStart(2,"0");return`${ee.getFullYear()}-${pe(ee.getMonth()+1)}-${pe(ee.getDate())} ${pe(ee.getHours())}:${pe(ee.getMinutes())}`}return(re,ee)=>(a(),G(ps,{open:!0,"close-on-esc":!1,title:l(n)("settings.title"),size:"xl",height:"fixed",padded:!1,onClose:ee[20]||(ee[20]=pe=>o("close"))},{default:W(()=>[r("div",{ref_key:"dialogRef",ref:I,class:"sd"},[r("nav",{class:"settings-tabs",role:"tablist","aria-label":l(n)("settings.title")},[(a(),c(ge,null,Te(u,pe=>r("button",{key:pe.id,type:"button",class:fe(["tab",{on:i.value===pe.id}]),role:"tab","aria-selected":i.value===pe.id,onClick:De=>k(pe.id)},d(l(n)(pe.labelKey)),11,zB)),64))],8,DB),r("div",FB,[ht(r("section",NB,[r("section",qB,[r("h3",WB,d(l(n)("settings.appearance")),1),r("div",HB,[r("span",UB,d(l(n)("theme.colorSchemeLabel")),1),M(cn,{"model-value":e.colorScheme,options:[{value:"light",label:l(n)("theme.light")},{value:"dark",label:l(n)("theme.dark")},{value:"system",label:l(n)("theme.system")}],"onUpdate:modelValue":ee[0]||(ee[0]=pe=>o("setColorScheme",pe))},null,8,["model-value","options"])]),r("div",VB,[r("span",jB,d(l(n)("theme.accentLabel")),1),M(cn,{"model-value":e.accent,options:[{value:"blue",label:l(n)("theme.accentBlue")},{value:"mono",label:l(n)("theme.accentBlack")}],"onUpdate:modelValue":ee[1]||(ee[1]=pe=>o("setAccent",pe))},null,8,["model-value","options"])]),r("div",KB,[r("span",GB,d(l(n)("settings.uiFontSize")),1),r("label",QB,[r("input",{class:"num-input",type:"number",min:"12",max:"20",step:"1",value:e.uiFontSize,"aria-label":l(n)("settings.uiFontSize"),onInput:ee[2]||(ee[2]=pe=>o("setUiFontSize",Number(pe.target.value)))},null,40,YB),ee[21]||(ee[21]=r("span",{class:"num-unit"},"px",-1))])]),r("div",ZB,[r("span",XB,d(l(n)("sidebar.language")),1),M(bd)]),r("div",JB,[r("span",eR,[ue(d(l(n)("settings.conversationToc"))+" ",1),r("span",tR,d(l(n)("settings.conversationTocHint")),1)]),M(rs,{"model-value":e.conversationToc??!0,label:l(n)("settings.conversationToc"),"onUpdate:modelValue":ee[3]||(ee[3]=pe=>o("setConversationToc",pe))},null,8,["model-value","label"])])]),r("section",nR,[r("h3",sR,d(l(n)("settings.notifications")),1),r("div",oR,[r("span",iR,[ue(d(l(n)("settings.notifyOnComplete"))+" ",1),e.notifyPermission==="denied"?(a(),c("span",aR,d(l(n)("settings.notifyDenied")),1)):A("",!0)]),M(rs,{"model-value":e.notify,disabled:e.notifyPermission==="denied",label:l(n)("settings.notifyOnComplete"),"onUpdate:modelValue":ee[4]||(ee[4]=pe=>o("setNotify",pe))},null,8,["model-value","disabled","label"])]),r("div",lR,[r("span",rR,[ue(d(l(n)("settings.notifyOnQuestion"))+" ",1),e.notifyPermission==="denied"?(a(),c("span",uR,d(l(n)("settings.notifyDenied")),1)):A("",!0)]),M(rs,{"model-value":e.notifyQuestion,disabled:e.notifyPermission==="denied",label:l(n)("settings.notifyOnQuestion"),"onUpdate:modelValue":ee[5]||(ee[5]=pe=>o("setNotifyQuestion",pe))},null,8,["model-value","disabled","label"])]),r("div",cR,[r("span",dR,[ue(d(l(n)("settings.notifyOnApproval"))+" ",1),e.notifyPermission==="denied"?(a(),c("span",pR,d(l(n)("settings.notifyDenied")),1)):A("",!0)]),M(rs,{"model-value":e.notifyApproval,disabled:e.notifyPermission==="denied",label:l(n)("settings.notifyOnApproval"),"onUpdate:modelValue":ee[6]||(ee[6]=pe=>o("setNotifyApproval",pe))},null,8,["model-value","disabled","label"])]),r("div",fR,[r("span",mR,d(l(n)("settings.soundOnComplete")),1),M(rs,{"model-value":e.sound,label:l(n)("settings.soundOnComplete"),"onUpdate:modelValue":ee[7]||(ee[7]=pe=>o("setSound",pe))},null,8,["model-value","label"])])])],512),[[Xn,i.value==="general"]]),ht(r("section",vR,[r("section",hR,[r("h3",gR,d(l(n)("settings.account")),1),r("div",yR,[r("span",kR,d(e.authReady?"managed:kimi-code":l(n)("sidebar.notSignedIn")),1),M(nt,{text:e.accountModel},{default:W(()=>[e.authReady&&e.accountModel?(a(),c("span",bR,d(e.accountModel),1)):A("",!0)]),_:1},8,["text"])]),r("div",wR,[M(Ne,{variant:"secondary",size:"sm",onClick:ee[8]||(ee[8]=pe=>{o("openOnboarding"),o("close")})},{default:W(()=>[ue(d(l(n)("onboarding.reopen")),1)]),_:1}),e.authReady?(a(),G(Ne,{key:0,variant:"danger-soft",size:"sm",onClick:ee[9]||(ee[9]=pe=>o("logout"))},{default:W(()=>[ue(d(l(n)("sidebar.signOut")),1)]),_:1})):(a(),G(Ne,{key:1,variant:"primary",size:"sm",onClick:ee[10]||(ee[10]=pe=>o("login"))},{default:W(()=>[ue(d(l(n)("sidebar.signIn")),1)]),_:1}))])])],512),[[Xn,i.value==="account"]]),ht(r("section",SR,[r("section",CR,[r("div",_R,[r("h3",$R,d(l(n)("settings.agentDefaults")),1),e.configSaving?(a(),c("span",MR,d(l(n)("settings.saving")),1)):A("",!0)]),e.config?(a(),c(ge,{key:0},[r("div",xR,[r("span",IR,[ue(d(l(n)("settings.defaultModel"))+" ",1),r("span",AR,d(l(n)("settings.defaultModelHint")),1)]),g.value.length>0?(a(),c("div",TR,[M(Ya,{"model-value":e.config.defaultModel??"",disabled:e.configSaving,"aria-label":l(n)("settings.defaultModel"),"onUpdate:modelValue":O},{default:W(()=>[e.config.defaultModel?A("",!0):(a(),c("option",PR,d(l(n)("settings.noDefaultModel")),1)),(a(!0),c(ge,null,Te(g.value,pe=>(a(),c("optgroup",{key:pe.provider,label:pe.provider},[(a(!0),c(ge,null,Te(pe.options,De=>(a(),c("option",{key:De.id,value:De.id},d(De.label),9,LR))),128))],8,ER))),128))]),_:1},8,["model-value","disabled","aria-label"])])):(a(),c("span",BR,d(e.config.defaultModel??l(n)("settings.noDefaultModel")),1))]),r("div",RR,[r("span",OR,[ue(d(l(n)("settings.defaultPermission"))+" ",1),r("span",DR,d(l(n)("settings.defaultPermissionHint")),1)]),M(cn,{"model-value":b.value,options:h.map(pe=>({value:pe,label:l(n)(w[pe])})),"onUpdate:modelValue":ee[11]||(ee[11]=pe=>D(pe))},null,8,["model-value","options"])]),r("div",zR,[r("span",FR,[ue(d(l(n)("settings.defaultThinking"))+" ",1),r("span",NR,d(l(n)("settings.defaultThinkingHint")),1)]),M(rs,{"model-value":L(),disabled:e.configSaving,label:l(n)("settings.defaultThinking"),"onUpdate:modelValue":ee[12]||(ee[12]=pe=>F())},null,8,["model-value","disabled","label"])]),r("div",qR,[r("span",WR,[ue(d(l(n)("settings.defaultPlanMode"))+" ",1),r("span",HR,d(l(n)("settings.defaultPlanModeHint")),1)]),M(rs,{"model-value":S(e.config.defaultPlanMode),disabled:e.configSaving,label:l(n)("settings.defaultPlanMode"),"onUpdate:modelValue":ee[13]||(ee[13]=pe=>T("defaultPlanMode"))},null,8,["model-value","disabled","label"])]),r("div",UR,[r("span",VR,[ue(d(l(n)("settings.mergeSkills"))+" ",1),r("span",jR,d(l(n)("settings.mergeSkillsHint")),1)]),M(rs,{"model-value":S(e.config.mergeAllAvailableSkills),disabled:e.configSaving,label:l(n)("settings.mergeSkills"),"onUpdate:modelValue":ee[14]||(ee[14]=pe=>T("mergeAllAvailableSkills"))},null,8,["model-value","disabled","label"])])],64)):(a(),c("div",KR,d(l(n)("settings.configUnavailable")),1))])],512),[[Xn,i.value==="agent"]]),ht(r("section",GR,[M(OB,{active:i.value==="plugins"},null,8,["active"])],512),[[Xn,i.value==="plugins"]]),ht(r("section",QR,[r("section",YR,[r("h3",ZR,d(l(n)("settings.advanced")),1),r("div",XR,[r("span",JR,d(l(n)("sidebar.daemon")),1),r("span",eO,d(l(p)),1)]),r("div",tO,[r("span",nO,d(l(n)("settings.backend")),1),r("span",sO,d(m.value),1)]),r("div",oO,[r("span",iO,d(l(n)("settings.serverVersion")),1),r("span",aO,d(e.serverVersion||"-"),1)]),e.config?(a(),c("div",lO,[r("span",rO,[ue(d(l(n)("settings.telemetry"))+" ",1),r("span",uO,d(l(n)("settings.telemetryHint")),1),r("span",cO,d(l(n)("settings.telemetryRestartHint")),1)]),M(rs,{"model-value":e.config.telemetry!==!1,disabled:e.configSaving,label:l(n)("settings.telemetry"),"onUpdate:modelValue":ee[15]||(ee[15]=pe=>H())},null,8,["model-value","disabled","label"])])):A("",!0),r("div",dO,[r("span",pO,[ue(d(l(n)("settings.exportLog"))+" ",1),l(es)()?A("",!0):(a(),c("span",fO,d(l(n)("settings.logHint")),1))]),M(Ne,{variant:"secondary",size:"sm",onClick:f},{default:W(()=>[ue(d(l(n)("settings.exportLogBtn")),1)]),_:1})])])],512),[[Xn,i.value==="advanced"]]),ht(r("section",mO,[r("div",vO,[r("div",hO,d(l(n)("settings.archivedTitle")),1),r("h4",gO,d(l(n)("settings.archivedTitle")),1),r("p",yO,d(l(n)("settings.archivedDesc")),1)]),r("div",kO,[r("label",bO,[M(le,{name:"search",size:"sm"}),ht(r("input",{"onUpdate:modelValue":ee[16]||(ee[16]=pe=>me.value=pe),placeholder:l(n)("settings.archivedSearch")},null,8,wO),[[On,me.value]])]),M(Ya,{"model-value":Z.value,size:"sm","aria-label":l(n)("settings.archivedAllWorkspaces"),"onUpdate:modelValue":ee[17]||(ee[17]=pe=>Z.value=pe)},{default:W(()=>[r("option",SO,d(l(n)("settings.archivedAllWorkspaces")),1),(a(!0),c(ge,null,Te($e.value,pe=>(a(),c("option",{key:pe,value:pe},d(pe),9,CO))),128))]),_:1},8,["model-value","aria-label"]),M(cn,{size:"sm","model-value":oe.value,options:[{value:"archived-desc",label:l(n)("settings.archivedSortArchived")},{value:"created-desc",label:l(n)("settings.archivedSortCreated")},{value:"name-asc",label:l(n)("settings.archivedSortName")}],"onUpdate:modelValue":ee[18]||(ee[18]=pe=>oe.value=pe)},null,8,["model-value","options"])]),se.value&&!ae.value?(a(),c("div",_O,d(l(n)("settings.archivedLoadingAll")),1)):(a(),c(ge,{key:1},[V.value.length>0?(a(),c("div",$O,[(a(!0),c(ge,null,Te(V.value,pe=>(a(),c("section",{key:pe.cwd,class:"archive-card"},[r("div",MO,[M(le,{name:"folder-closed",size:"sm"}),r("span",xO,d(pe.cwd),1),r("span",IO,d(l(n)("settings.archivedSessionsCount",{count:pe.items.length})),1)]),r("div",AO,[(a(!0),c(ge,null,Te(pe.items,De=>(a(),c("div",{key:De.id,class:"archive-row"},[r("div",TO,[r("div",PO,d(De.title),1),r("div",EO,d(l(n)("settings.archivedAt",{time:Ce(De.updatedAt)})),1)]),M(Ne,{variant:"secondary",size:"sm",onClick:X=>Q(De.id)},{default:W(()=>[ue(d(l(n)("settings.archivedRestore")),1)]),_:1},8,["onClick"])]))),128))])]))),128)),ve.value?(a(),c("button",{key:0,class:"archive-load-more",disabled:se.value,onClick:ee[19]||(ee[19]=pe=>ke(!1))},d(se.value?l(n)("settings.archivedLoading"):l(n)("settings.archivedLoadMore")),9,LO)):A("",!0)])):(a(),c("div",BO,d(R.value.length===0?l(n)("settings.archivedEmpty"):l(n)("settings.archivedNoMatch")),1))],64))],512),[[Xn,i.value==="archived"]])])],512)]),_:1},8,["title"]))}}),DO=Pe(OO,[["__scopeId","data-v-ace56012"]]),zO=/^(?:\/|~(?:\/|$)|[A-Za-z]:[\\/]|\\\\)/,wd=/^[A-Za-z]:[\\/]/,FO=/^\/\/(?!\/)/;function xa(e){return zO.test(e.trim())}function NO(e,t){return e==="~"?t||e:e.startsWith("~/")?(t||"~")+e.slice(1):e}function qO(e){return FO.test(e)?`//${e.slice(2).replaceAll(/\/{2,}/g,"/")}`:e.replaceAll(/\/{2,}/g,"/")}function WO(e){return wd.test(e)||e.startsWith("\\\\")||e.startsWith("//")}function HO(e){return wd.test(e)?3:e.startsWith("\\\\")||e.startsWith("//")?2:e.startsWith("/")?1:0}function Xa(e,t){let n=qO(NO(e.trim(),t));const s=WO(n),o=n==="/"||n==="//"||n==="\\\\"||/^[A-Za-z]:[\\/]$/.test(n),i=s?/[\\/]$/.test(n):n.endsWith("/");!o&&i&&(n=n.slice(0,-1));const u=n.lastIndexOf("/"),p=s?n.lastIndexOf("\\"):-1,m=Math.max(u,p),h=p>u?"\\":"/",w=HO(n),I=mI.value.trim().length>0);let g=0,b=null;const y=$(()=>xa(I.value)),E=x("idle"),S=x(""),O=x("/"),D=x([]),T=x(""),L=x(null),F=x(null),H=$(()=>E.value!=="valid"?null:VO(I.value,T.value,F.value));let k=0,P=null;function R(Ce,re){const ee=Ce.toLowerCase(),pe=re.toLowerCase();let De=0;for(let X=0;X0&&Y=cu))break;B.depth+1{b&&clearTimeout(b),P&&clearTimeout(P),k++,E.value="idle",D.value=[],F.value=null;const re=Ce.trim();if(re===""){g++,f.value=[],v.value=!1;return}if(xa(re)){if(g++,f.value=[],v.value=!1,p.value)return;E.value="checking",P=setTimeout(()=>void ae(re),150);return}b=setTimeout(()=>void se(Ce),220)});async function ae(Ce){const re=++k;E.value="checking",F.value=null;const ee=Xa(Ce,T.value),{target:pe}=ee;try{const X=await s.browseFs(pe);if(re!==k)return;if(X.path){E.value="valid",D.value=[],F.value=pe,m.value=X.path,h.value=X.parent,w.value=X.entries,p.value=!1;return}}catch{}if(re!==k)return;const De=ee.base.toLowerCase();S.value=ee.parent,O.value=ee.separator;try{const X=await s.browseFs(ee.parent);if(re!==k)return;if(X.path){D.value=X.entries.filter(Y=>Y.isDir&&Y.name.toLowerCase().startsWith(De)),E.value="not-found";return}}catch{}re===k&&(D.value=[],E.value="bad-parent")}function ve(Ce){I.value=UO(S.value,Ce,O.value),L.value?.focus()}const me=$(()=>p.value?n("workspace.degradedPlaceholder"):n("workspace.searchPlaceholder")),Z=$(()=>p.value?n("workspace.degradedHint"):y.value&&E.value==="valid"?n("workspace.pathFollowHint"):n("workspace.browseHint"));function oe(Ce){if(Ce.key==="Escape"){I.value?I.value="":o("close");return}if(Ce.key!=="Enter")return;const re=I.value.trim();if(xa(re)){if(Ce.preventDefault(),p.value){const{target:ee}=Xa(re,T.value);ee&&o("add",ee);return}E.value==="valid"?Q():E.value==="not-found"&&D.value[0]&&ve(D.value[0].name)}}const ie=$(()=>{const Ce=m.value;if(!Ce)return[];const re=Ce.split("/").filter(Boolean),ee=[{label:"/",path:"/"}];let pe="";for(const De of re)pe+=`/${De}`,ee.push({label:De,path:pe});return ee}),ke=$(()=>!(m.value.length===0||y.value&&H.value===null));async function $e(Ce){u.value=!0;try{const re=await s.browseFs(Ce);if(!re.path){p.value=!0;return}m.value=re.path,h.value=re.parent,w.value=re.entries,I.value="",p.value=!1}catch{p.value=!0}finally{u.value=!1}}function he(Ce){Ce.isDir&&$e(Ce.path)}function V(){h.value&&$e(h.value)}function Q(){ke.value&&o("add",H.value??m.value)}return mt(async()=>{u.value=!0;try{const Ce=await s.getFsHome().catch(()=>({home:"",recentRoots:[]}));if(Ce.home&&(T.value=Ce.home),s.defaultPath&&(await $e(s.defaultPath),!p.value))return;T.value?await $e(T.value):p.value=!0}catch{p.value=!0}finally{u.value=!1}}),yt(()=>{b&&clearTimeout(b),P&&clearTimeout(P)}),(Ce,re)=>(a(),G(ps,{open:i.value,"onUpdate:open":re[2]||(re[2]=ee=>i.value=ee),title:l(n)("workspace.addTitle"),size:"lg",height:"fixed",onClose:re[3]||(re[3]=ee=>o("close"))},{default:W(()=>[r("div",jO,[p.value?A("",!0):(a(),c("div",KO,[M(et,{size:"sm",disabled:!h.value,label:l(n)("workspace.up"),onClick:V},{default:W(()=>[M(le,{name:"arrow-up",size:"md"})]),_:1},8,["disabled","label"]),r("div",GO,[(a(!0),c(ge,null,Te(ie.value,(ee,pe)=>(a(),c(ge,{key:ee.path},[pe>1?(a(),c("span",QO,"/")):A("",!0),r("button",{class:fe(["crumb",{last:pe===ie.value.length-1}]),onClick:De=>$e(ee.path)},d(ee.label),11,YO)],64))),128))])])),!u.value||p.value?(a(),c("div",{key:1,class:fe(["filterbar",{"has-error":E.value==="not-found"||E.value==="bad-parent"}])},[M(le,{class:"filter-icon",name:"search",size:"md"}),ht(r("input",{ref_key:"filterEl",ref:L,"onUpdate:modelValue":re[0]||(re[0]=ee=>I.value=ee),class:"filter-input",type:"text",placeholder:me.value,autocomplete:"off",spellcheck:"false",onKeydown:Re(oe,["stop"])},null,40,ZO),[[On,I.value]]),v.value||E.value==="checking"?(a(),G(qt,{key:0,size:"sm"})):A("",!0)],2)):A("",!0),p.value?(a(),c("div",fD,d(l(n)("workspace.degradedHint")),1)):(a(),c("div",XO,[u.value?(a(),c("div",JO,d(l(n)("workspace.browsing")),1)):y.value&&E.value!=="valid"?(a(),c(ge,{key:1},[E.value==="checking"?(a(),c("div",eD,d(l(n)("workspace.checkingPath")),1)):E.value==="not-found"?(a(),c(ge,{key:1},[D.value.length>0?(a(),c("div",tD,d(l(n)("workspace.pathPickHint")),1)):A("",!0),(a(!0),c(ge,null,Te(D.value,ee=>(a(),c("button",{key:ee.path,class:"folder-row",onClick:pe=>ve(ee.name)},[M(le,{class:"dir-icon",name:"folder-closed",size:"sm"}),r("span",sD,d(ee.name),1)],8,nD))),128)),D.value.length===0?(a(),c("div",oD,d(l(n)("workspace.noPathMatch",{parent:S.value})),1)):A("",!0)],64)):E.value==="bad-parent"?(a(),c("div",iD,d(l(n)("workspace.badParent",{parent:S.value})),1)):A("",!0)],64)):_.value&&!y.value?(a(),c(ge,{key:2},[(a(!0),c(ge,null,Te(f.value,ee=>(a(),c("button",{key:ee.path,class:"folder-row",onClick:pe=>$e(ee.path)},[M(le,{class:"dir-icon",name:"folder-closed",size:"sm"}),r("span",lD,d(ee.rel),1)],8,aD))),128)),!v.value&&f.value.length===0?(a(),c("div",rD,d(l(n)("workspace.noFilterMatch",{q:I.value.trim()})),1)):v.value&&f.value.length===0?(a(),c("div",uD,d(l(n)("workspace.searching")),1)):A("",!0)],64)):(a(),c(ge,{key:3},[(a(!0),c(ge,null,Te(w.value,ee=>(a(),c("button",{key:ee.path,class:"folder-row",onClick:pe=>he(ee)},[M(le,{class:"dir-icon",name:"folder-closed",size:"sm"}),r("span",dD,d(ee.name),1)],8,cD))),128)),w.value.length===0?(a(),c("div",pD,d(l(n)("workspace.noSubfolders")),1)):A("",!0)],64))])),e.error?(a(),c("div",mD,d(e.error),1)):A("",!0),r("div",vD,[M(nt,{text:m.value},{default:W(()=>[p.value?A("",!0):(a(),G(Ne,{key:0,variant:"primary",disabled:!ke.value,onClick:Q},{default:W(()=>[ue(d(l(n)("workspace.openThisFolder")),1)]),_:1},8,["disabled"]))]),_:1},8,["text"]),M(Ne,{variant:"secondary",onClick:re[1]||(re[1]=ee=>o("close"))},{default:W(()=>[ue(d(l(n)("workspace.cancel")),1)]),_:1})]),r("div",hD,d(Z.value),1)])]),_:1},8,["open","title"]))}}),bD=Pe(kD,[["__scopeId","data-v-a2c2e0eb"]]),wD={key:0,class:"confirm-dialog__message"},SD=xe({__name:"ConfirmDialog",props:{open:{type:Boolean},title:{},message:{},confirmLabel:{},cancelLabel:{},variant:{default:"danger"},loading:{type:Boolean}},emits:["update:open","confirm","cancel"],setup(e,{emit:t}){const n=e,s=t,{t:o}=We();function i(){n.loading||(s("update:open",!1),s("cancel"))}function u(p){if(p.key!=="Enter"||!n.open||n.loading)return;const m=p.target;m instanceof HTMLButtonElement||m instanceof HTMLAnchorElement||m instanceof HTMLTextAreaElement||m instanceof HTMLSelectElement||m instanceof HTMLInputElement||(p.preventDefault(),s("confirm"))}return typeof window<"u"&&window.addEventListener("keydown",u),Tn(()=>{typeof window<"u"&&window.removeEventListener("keydown",u)}),(p,m)=>(a(),G(ps,{open:e.open,title:e.title,height:"auto","initial-focus":".confirm-dialog__confirm","close-on-esc":!e.loading,"close-on-overlay":!e.loading,"onUpdate:open":m[1]||(m[1]=h=>s("update:open",h)),onClose:i},{foot:W(()=>[M(Ne,{variant:"secondary",disabled:e.loading,onClick:i},{default:W(()=>[ue(d(e.cancelLabel??l(o)("common.cancel")),1)]),_:1},8,["disabled"]),M(Ne,{class:"confirm-dialog__confirm",variant:e.variant,loading:e.loading,onClick:m[0]||(m[0]=h=>s("confirm"))},{default:W(()=>[ue(d(e.confirmLabel??l(o)("common.confirm")),1)]),_:1},8,["variant","loading"])]),default:W(()=>[e.message?(a(),c("p",wD,d(e.message),1)):A("",!0)]),_:1},8,["open","title","close-on-esc","close-on-overlay"]))}}),CD=Pe(SD,[["__scopeId","data-v-2e719024"]]),_D=xe({__name:"ConfirmDialogHost",setup(e){const{current:t,busy:n,settle:s,runAction:o}=vo();function i(){o()}return(u,p)=>(a(),G(CD,{open:l(t)!==null,title:l(t)?.title??"",message:l(t)?.message,"confirm-label":l(t)?.confirmLabel,"cancel-label":l(t)?.cancelLabel,variant:l(t)?.variant,loading:l(n),onConfirm:i,onCancel:p[0]||(p[0]=m=>l(s)(!1))},null,8,["open","title","message","confirm-label","cancel-label","variant","loading"]))}}),$D={class:"rows"},MD={class:"row"},xD={class:"row"},ID={class:"row"},AD={class:"row"},TD={class:"row"},PD={class:"row"},ED={class:"row"},LD={class:"ctx-text"},BD={key:0,class:"bar"},RD={class:"row"},OD=xe({__name:"StatusPanel",props:{status:{},thinking:{},planMode:{type:Boolean},swarmMode:{type:Boolean},supermoonMode:{type:Boolean},costUsd:{}},emits:["close"],setup(e,{emit:t}){const{t:n}=We(),s=e,o=t,i=x(!0),u=$(()=>s.status.ctxMax<=0?0:Math.min(100,Math.max(0,Math.ceil(s.status.ctxUsed/s.status.ctxMax*100)))),p=$(()=>s.status.ctxMax>0?n("status.statusContextValue",{used:ds(s.status.ctxUsed),max:ds(s.status.ctxMax),pct:u.value}):n("status.statusNone"));function m(g){return n(g==="yolo"?"status.permissionYolo":g==="auto"?"status.permissionAuto":"status.permissionManual")}const h=$(()=>{const g=s.status.permission;return g==="yolo"?"var(--color-warning)":g==="auto"?"var(--color-danger)":"var(--color-text)"}),w=$(()=>s.planMode?n("status.planOn"):n("status.planOff")),I=$(()=>s.swarmMode?n("status.swarmOn"):n("status.swarmOff")),v=$(()=>s.supermoonMode?n("status.supermoonOn"):n("status.supermoonOff")),f=$(()=>typeof s.costUsd=="number"&&s.costUsd>0),_=$(()=>f.value?`$${s.costUsd.toFixed(4)}`:n("status.statusNone"));return(g,b)=>(a(),G(ps,{open:i.value,"onUpdate:open":b[0]||(b[0]=y=>i.value=y),title:l(n)("status.statusPanelTitle"),onClose:b[1]||(b[1]=y=>o("close"))},{default:W(()=>[r("dl",$D,[r("div",MD,[r("dt",null,d(l(n)("status.statusModel")),1),r("dd",null,d(e.status.model),1)]),r("div",xD,[r("dt",null,d(l(n)("status.statusThinking")),1),r("dd",null,d(e.thinking),1)]),r("div",ID,[r("dt",null,d(l(n)("status.statusPermission")),1),r("dd",{style:rt({color:h.value})},d(m(e.status.permission)),5)]),r("div",AD,[r("dt",null,d(l(n)("status.statusPlanMode")),1),r("dd",{class:fe({"plan-on":e.planMode})},d(w.value),3)]),r("div",TD,[r("dt",null,d(l(n)("status.statusSwarmMode")),1),r("dd",{class:fe({"swarm-on":e.swarmMode})},d(I.value),3)]),r("div",PD,[r("dt",null,d(l(n)("status.statusSupermoonMode")),1),r("dd",{class:fe({"supermoon-on":e.supermoonMode})},d(v.value),3)]),r("div",ED,[r("dt",null,d(l(n)("status.statusContext")),1),r("dd",null,[r("span",LD,d(p.value),1),e.status.ctxMax>0?(a(),c("span",BD,[r("i",{style:rt({width:u.value+"%"})},null,4)])):A("",!0)])]),r("div",RD,[r("dt",null,d(l(n)("status.statusCost")),1),r("dd",null,d(_.value),1)])])]),_:1},8,["open","title"]))}}),DD=Pe(OD,[["__scopeId","data-v-5ba9ba29"]]),zD={class:"ui-toast__icon","aria-hidden":"true"},FD={class:"ui-toast__body"},ND={class:"ui-toast__title"},qD={key:0,class:"ui-toast__msg"},WD=xe({__name:"Toast",props:{variant:{default:"info"},title:{},message:{},dismissLabel:{default:"Dismiss"}},emits:["dismiss"],setup(e){return(t,n)=>(a(),c("div",{class:fe(["ui-toast",`ui-toast--${e.variant}`])},[r("span",zD,[gt(t.$slots,"icon",{},()=>[e.variant==="success"?(a(),G(le,{key:0,name:"check"})):e.variant==="danger"?(a(),G(le,{key:1,name:"close"})):e.variant==="warning"?(a(),G(le,{key:2,name:"alert-triangle"})):(a(),G(le,{key:3,name:"info"}))],!0)]),r("div",FD,[r("div",ND,d(e.title),1),e.message?(a(),c("div",qD,d(e.message),1)):A("",!0),gt(t.$slots,"default",{},void 0,!0)]),M(et,{class:"ui-toast__close",size:"sm",label:e.dismissLabel,onClick:n[0]||(n[0]=s=>t.$emit("dismiss"))},{default:W(()=>[M(le,{name:"close",size:"sm"})]),_:1},8,["label"])],2))}}),HD=Pe(WD,[["__scopeId","data-v-adc6f346"]]),UD={key:0,class:"actions"},VD=["onClick"],jD=["onClick"],KD={key:1,class:"details"},GD=xe({__name:"WarningToasts",props:{warnings:{}},emits:["dismiss"],setup(e,{emit:t}){const n=e,s=t,{t:o}=We();function i(k){return typeof k=="object"&&k!==null}function u(k){return i(k)?k.title:k}function p(k){return i(k)?k.message??"":""}function m(k){return i(k)?k.details:void 0}function h(k){return i(k)?k.severity==="error":k.startsWith(`${o("warnings.errorLabel")}:`)||/\b4\d\d\b|error|失败|failed/i.test(k)}function w(k){if(!i(k))return h(k)?"danger":"warning";switch(k.severity){case"error":return"danger";case"success":return"success";case"info":return"info";default:return"warning"}}function I(k){return i(k)&&k.sticky===!0}function v(k){return i(k)?`notice:${k.severity}:${k.title}:${k.message??""}:${JSON.stringify(k.details??[])}`:`text:${k}`}function f(k){if(!i(k))return k;const P=[k.title];k.message&&P.push(k.message);const R=k.details??[];if(R.length>0){P.push("",`${o("warnings.diagnostics")}:`);for(const se of R)P.push(`${se.label}: ${se.value}`)}return P.join(`
-`)}let _=1;const g=x([]),b=new Map,y=new Map;function E(k){const P=h(k)?12e3:6e3;return typeof window<"u"&&window.matchMedia?.("(hover: none)").matches===!0?P+5e3:P}function S(k,P){const R=b.get(k)??{handle:null,deadline:0,remaining:0};R.handle=setTimeout(()=>H(k),P),R.deadline=Date.now()+P,b.set(k,R)}function O(k){const P=b.get(k);P&&P.handle!==null&&clearTimeout(P.handle),b.delete(k)}function D(k){const P=b.get(k);!P||P.handle===null||(clearTimeout(P.handle),P.handle=null,P.remaining=Math.max(0,P.deadline-Date.now()))}function T(k){if(g.value.find(se=>se.id===k)?.detailsOpen)return;const R=b.get(k);!R||R.handle!==null||S(k,R.remaining)}function L(k){k.detailsOpen=!k.detailsOpen,k.detailsOpen?D(k.id):T(k.id)}async function F(k){if(!await un(f(k.warning)))return;k.copied=!0;const R=y.get(k.id);R&&clearTimeout(R),y.set(k.id,setTimeout(()=>{k.copied=!1,y.delete(k.id)},1400))}function H(k){O(k);const P=y.get(k);P&&clearTimeout(P),y.delete(k);const R=g.value.findIndex(se=>se.id===k);R!==-1&&(g.value=g.value.filter(se=>se.id!==k),s("dismiss",R))}return Oe(()=>n.warnings,k=>{const P=[...g.value];g.value=k.map(R=>{const se=v(R),ae=P.findIndex(Z=>Z.key===se),ve=ae===-1?void 0:P.splice(ae,1)[0];if(ve)return ve.warning=R,ve;const me={id:_++,key:se,warning:R,detailsOpen:!1,copied:!1};return I(R)||S(me.id,E(R)),me});for(const R of P){O(R.id);const se=y.get(R.id);se&&clearTimeout(se),y.delete(R.id)}},{immediate:!0,flush:"post"}),yt(()=>{b.forEach(k=>{k.handle!==null&&clearTimeout(k.handle)}),b.clear(),y.forEach(k=>clearTimeout(k)),y.clear()}),(k,P)=>(a(),G(Td,{name:"toast",tag:"div",class:"toasts",role:"status","aria-live":"polite"},{default:W(()=>[(a(!0),c(ge,null,Te(g.value,R=>(a(),G(HD,{key:R.id,variant:w(R.warning),title:u(R.warning),message:p(R.warning),"dismiss-label":l(o)("warnings.dismiss"),onDismiss:se=>H(R.id),onPointerenter:se=>D(R.id),onPointerleave:se=>T(R.id)},{default:W(()=>[m(R.warning)?.length?(a(),c("div",UD,[r("button",{class:"link",type:"button",onClick:se=>L(R)},d(R.detailsOpen?l(o)("warnings.hideDetails"):l(o)("warnings.showDetails")),9,VD),r("button",{class:"link",type:"button",onClick:se=>F(R)},d(R.copied?l(o)("warnings.copied"):l(o)("warnings.copyDetails")),9,jD)])):A("",!0),R.detailsOpen&&m(R.warning)?.length?(a(),c("dl",KD,[(a(!0),c(ge,null,Te(m(R.warning),se=>(a(),c("div",{key:`${se.label}:${se.value}`,class:"detail-row"},[r("dt",null,d(se.label),1),r("dd",null,d(se.value),1)]))),128))])):A("",!0)]),_:2},1032,["variant","title","message","dismiss-label","onDismiss","onPointerenter","onPointerleave"]))),128))]),_:1}))}}),QD=Pe(GD,[["__scopeId","data-v-c92be17a"]]),YD={class:"topbar"},ZD={class:"wsq"},XD=["aria-label"],JD={class:"tb-path"},ez={class:"ws"},tz={class:"se"},nz={class:"tb-sub"},sz=xe({__name:"MobileTopBar",props:{workspace:{default:null},sessionTitle:{default:""},running:{type:Boolean,default:!1},branch:{default:""},sessionCount:{default:0}},emits:["openSwitcher","openSettings"],setup(e,{emit:t}){const{t:n}=We(),s=e,o=t,i=$(()=>{const m=s.workspace,w=(m?.name||m?.root||"").trim().charAt(0);return w?w.toUpperCase():"K"}),u=$(()=>s.workspace?.name??n("workspace.noWorkspace")),p=$(()=>s.running?n("mobile.running"):n("mobile.idle"));return(m,h)=>(a(),c("div",YD,[r("span",ZD,d(i.value),1),r("button",{type:"button",class:"tb-mid","aria-label":l(n)("mobile.openSwitcher"),onClick:h[0]||(h[0]=w=>o("openSwitcher"))},[r("span",JD,[r("span",ez,d(u.value),1),e.sessionTitle?(a(),c(ge,{key:0},[h[2]||(h[2]=r("span",{class:"sl"},"/",-1)),r("span",tz,d(e.sessionTitle),1)],64)):A("",!0),h[3]||(h[3]=r("span",{class:"cv"},"⌄",-1))]),r("span",nz,[r("span",{class:fe(["rd",{on:e.running}])},null,2),r("span",null,d(p.value),1),e.branch?(a(),c(ge,{key:0},[ue(" · "+d(e.branch),1)],64)):A("",!0),e.sessionCount>0?(a(),c(ge,{key:1},[ue(" · "+d(l(n)("mobile.sessionCount",{n:e.sessionCount})),1)],64)):A("",!0)])],8,XD),M(et,{size:"lg",label:l(n)("mobile.openSettings"),onClick:h[1]||(h[1]=w=>o("openSettings"))},{default:W(()=>[M(le,{name:"sliders",size:"lg"})]),_:1},8,["label"])]))}}),oz=Pe(sz,[["__scopeId","data-v-6b4b901f"]]),iz={key:0,class:"sheet-root"},az=["aria-label"],lz=["aria-label"],rz={key:0,class:"sheet-head"},uz={class:"sheet-title"},cz={class:"sheet-body"},dz=xe({__name:"BottomSheet",props:{modelValue:{type:Boolean},title:{default:""}},emits:["update:modelValue","close"],setup(e,{emit:t}){const{t:n}=We(),s=e,o=t;function i(){o("update:modelValue",!1),o("close")}function u(p){p.key==="Escape"&&i()}return Oe(()=>s.modelValue,p=>{typeof document>"u"||(p?document.addEventListener("keydown",u):document.removeEventListener("keydown",u))},{immediate:!0}),yt(()=>{typeof document<"u"&&document.removeEventListener("keydown",u)}),(p,m)=>(a(),G(Yo,{name:"sheet"},{default:W(()=>[e.modelValue?(a(),c("div",iz,[r("div",{class:"sheet-scrim",onClick:i}),r("div",{class:"sheet-panel",role:"dialog","aria-label":e.title||l(n)("mobile.sheetLabel")},[r("button",{type:"button",class:"sheet-grab","aria-label":l(n)("mobile.closeSheet"),onClick:i},null,8,lz),e.title?(a(),c("div",rz,[r("span",uz,d(e.title),1)])):A("",!0),r("div",cz,[gt(p.$slots,"default",{},void 0,!0)])],8,az)])):A("",!0)]),_:3}))}}),Sd=Pe(dz,[["__scopeId","data-v-745ee5a2"]]),pz={class:"mlist"},fz={key:0,class:"mempty"},mz=["onClick"],vz={class:"mgh-main"},hz={class:"mgh-name"},gz={class:"mgh-path"},yz={key:2,class:"att"},kz={key:0,class:"mempty small"},bz=["onClick"],wz={class:"m"},Sz={class:"s"},Cz={key:0,class:"att"},_z=["disabled","onClick"],$z=["onClick"],Mz=xe({__name:"MobileSwitcherSheet",props:{modelValue:{type:Boolean},groups:{},activeWorkspaceId:{default:null},activeId:{},attentionBySession:{default:()=>({})},attentionByWorkspace:{default:()=>({})}},emits:["update:modelValue","select","create","createInWorkspace","addWorkspace","rename","archive","deleteWorkspace","loadMore"],setup(e,{emit:t}){const{t:n}=We(),s=e,o=t;function i(){o("update:modelValue",!1)}function u(P){o("select",P),i()}function p(P){o("createInWorkspace",P),i()}function m(){o("create"),i()}function h(){o("addWorkspace"),i()}const w=x(new Set);function I(P){return w.value.has(P)}function v(P){const R=new Set(w.value);R.has(P)?R.delete(P):R.add(P),w.value=R,S.value=null,L.value=null}const f=x(new Set);function _(P){return f.value.has(P)}function g(P){const R=new Set(f.value);R.has(P)?R.delete(P):R.add(P),f.value=R}function b(P){if(_(P.workspace.id))return P.sessions;const R=P.sessions.slice(0,P.initialCount);if(s.activeId&&!R.some(se=>se.id===s.activeId)){const se=P.sessions.find(ae=>ae.id===s.activeId);if(se)return[...R,se]}return R}function y(P){if(!f.value.has(P)){const R=new Set(f.value);R.add(P),f.value=R}o("loadMore",P)}function E(P){return s.attentionByWorkspace[P]??0}const S=x(null);function O(P){S.value=S.value===P?null:P,L.value=null}function D(P){S.value=null;const se=(typeof window<"u"?window.prompt(n("sidebar.rename"),P.title):null)?.trim();se&&o("rename",P.id,se)}function T(P){S.value=null,o("archive",P)}const L=x(null);function F(P){L.value=L.value===P?null:P,S.value=null}function H(P){un(P.root),L.value=null}function k(P){L.value=null,o("deleteWorkspace",P.id)}return(P,R)=>(a(),G(Sd,{"model-value":e.modelValue,"onUpdate:modelValue":R[2]||(R[2]=se=>o("update:modelValue",se))},{default:W(()=>[r("button",{type:"button",class:"newrow",onClick:m},[M(le,{name:"message",size:"sm"}),ue(" "+d(l(n)("sidebar.newChat")),1)]),r("button",{type:"button",class:"newrow secondary",onClick:h},[M(le,{name:"folder",size:"sm"}),ue(" "+d(l(n)("sidebar.newWorkspace")),1)]),r("div",pz,[e.groups.length===0?(a(),c("div",fz,d(l(n)("workspace.noWorkspace")),1)):A("",!0),(a(!0),c(ge,null,Te(e.groups,se=>(a(),c("div",{key:se.workspace.id,class:"mgroup"},[r("div",{class:fe(["mgh",{on:se.workspace.id===e.activeWorkspaceId}]),onClick:ae=>v(se.workspace.id)},[I(se.workspace.id)?(a(),G(le,{key:0,class:"mgh-folder",name:"folder-closed",size:"sm"})):(a(),G(le,{key:1,class:"mgh-folder",name:"folder",size:"sm"})),r("div",vz,[r("span",hz,d(se.workspace.name),1),M(nt,{text:se.workspace.root},{default:W(()=>[r("span",gz,d(se.workspace.shortPath),1)]),_:2},1032,["text"])]),I(se.workspace.id)&&E(se.workspace.id)>0?(a(),c("span",yz,d(E(se.workspace.id)),1)):A("",!0),M(et,{size:"lg",class:"mgh-more",label:l(n)("sidebar.options"),onClick:Re(ae=>F(se.workspace.id),["stop"])},{default:W(()=>[M(le,{name:"dots-horizontal",size:"md"})]),_:1},8,["label","onClick"]),M(et,{size:"lg",class:"mgh-add",label:l(n)("workspace.newInGroup"),onClick:Re(ae=>p(se.workspace.id),["stop"])},{default:W(()=>[M(le,{name:"plus",size:"md"})]),_:1},8,["label","onClick"]),L.value===se.workspace.id?(a(),G(qs,{key:3,class:"kmenu wsmenu",onClick:R[0]||(R[0]=Re(()=>{},["stop"]))},{default:W(()=>[M(ct,{size:"lg",onClick:ae=>H(se.workspace)},{default:W(()=>[ue(d(l(n)("sidebar.copyPath")),1)]),_:1},8,["onClick"]),M(ct,{size:"lg",danger:"",onClick:ae=>k(se.workspace)},{default:W(()=>[ue(d(l(n)("sidebar.delete")),1)]),_:1},8,["onClick"])]),_:2},1024)):A("",!0)],10,mz),ht(r("div",null,[se.sessions.length===0?(a(),c("div",kz,d(l(n)("sidebar.noSessions")),1)):A("",!0),(a(!0),c(ge,null,Te(b(se),ae=>(a(),c("div",{key:ae.id,class:fe(["srow",{cur:ae.id===e.activeId}]),onClick:ve=>u(ae.id)},[r("div",wz,[r("div",{class:fe(["t",{run:ae.busy,aborted:!ae.busy&&(e.attentionBySession[ae.id]??0)===0&&l(Mu)(ae)}])},d(ae.title),3),r("div",Sz,d(ae.time),1)]),(e.attentionBySession[ae.id]??0)>0?(a(),c("span",Cz,d(e.attentionBySession[ae.id]),1)):A("",!0),M(et,{size:"lg",class:"kb",label:l(n)("sidebar.options"),onClick:Re(ve=>O(ae.id),["stop"])},{default:W(()=>[M(le,{name:"dots-horizontal",size:"md"})]),_:1},8,["label","onClick"]),S.value===ae.id?(a(),G(qs,{key:1,class:"kmenu",onClick:R[1]||(R[1]=Re(()=>{},["stop"]))},{default:W(()=>[M(ct,{size:"lg",onClick:ve=>D(ae)},{default:W(()=>[ue(d(l(n)("sidebar.rename")),1)]),_:1},8,["onClick"]),M(ct,{size:"lg",danger:"",onClick:ve=>T(ae.id)},{default:W(()=>[ue(d(l(n)("sidebar.archive")),1)]),_:1},8,["onClick"])]),_:2},1024)):A("",!0)],10,bz))),128)),se.hasMore||se.loadingMore?(a(),c("button",{key:1,type:"button",class:"mshow-more",disabled:se.loadingMore,onClick:Re(ae=>y(se.workspace.id),["stop"])},d(se.loadingMore?l(n)("sidebar.loadingMore"):l(n)("sidebar.showMore",{count:Math.max(0,se.workspace.sessionCount-se.sessions.length)})),9,_z)):A("",!0),se.sessions.length>se.initialCount?(a(),c("button",{key:2,type:"button",class:"mshow-more",onClick:Re(ae=>g(se.workspace.id),["stop"])},d(_(se.workspace.id)?l(n)("sidebar.showLess"):l(n)("sidebar.showAll",{count:se.sessions.length-se.initialCount})),9,$z)):A("",!0)],512),[[Xn,!I(se.workspace.id)]])]))),128))])]),_:1},8,["model-value"]))}}),xz=Pe(Mz,[["__scopeId","data-v-53fda211"]]),Iz={class:"group-title"},Az={class:"srow-main"},Tz={class:"srow-label"},Pz={class:"srow-sub"},Ez={class:"srow read-only"},Lz={class:"srow-main"},Bz={class:"srow-label"},Rz={key:0,class:"srow-sub"},Oz={class:"cache-note"},Dz={class:"srow-main"},zz={class:"srow-label"},Fz={class:"srow-sub"},Nz=["aria-checked"],qz={class:"srow-main"},Wz={class:"srow-label"},Hz={class:"srow-sub"},Uz=["aria-checked"],Vz={class:"srow-main"},jz={class:"srow-label"},Kz={class:"srow-sub"},Gz=["aria-checked"],Qz={class:"srow-main"},Yz={class:"srow-label"},Zz={class:"srow read-only"},Xz={class:"srow-main"},Jz={class:"srow-label"},eF={class:"srow-sub"},tF=["aria-label"],nF={class:"group-title"},sF={class:"srow-main"},oF={class:"srow-label"},iF={class:"srow-sub"},aF={class:"srow read-only pref"},lF={class:"srow-main"},rF={class:"srow-label"},uF={class:"srow read-only pref"},cF={class:"srow-main"},dF={class:"srow-label"},pF={class:"srow read-only pref"},fF={class:"srow-main"},mF={class:"srow-label"},vF={class:"num-field"},hF=["value","aria-label"],gF={class:"srow-main"},yF={class:"srow-label"},kF={class:"srow-sub"},bF=["aria-checked"],wF={class:"srow-main"},SF={class:"srow-label"},CF={class:"srow-main"},_F={class:"srow-label"},$F={key:2,class:"srow read-only"},MF={class:"srow-main"},xF={class:"srow-label"},IF={class:"srow-val dim"},AF={class:"arch-subhead"},TF={class:"arch-count"},PF={class:"arch-tools"},EF={key:0,class:"arch-empty"},LF={class:"arch-meta"},BF={class:"arch-name"},RF={class:"arch-time"},OF={key:2,class:"arch-empty"},DF=100,zF=xe({__name:"MobileSettingsSheet",props:{modelValue:{type:Boolean},status:{},thinking:{},planMode:{type:Boolean},swarmMode:{type:Boolean},supermoonMode:{type:Boolean},colorScheme:{default:"system"},uiFontSize:{default:14},authReady:{type:Boolean,default:!1},conversationToc:{type:Boolean},serverVersion:{default:""},models:{default:()=>[]}},emits:["update:modelValue","pickModel","setThinking","togglePlan","toggleSwarm","toggleSupermoon","setPermission","setColorScheme","setUiFontSize","setConversationToc","login","logout"],setup(e,{emit:t}){const{t:n}=We(),s=e,o=t;function i(he){o("setColorScheme",he)}const u=["manual","yolo","auto"],p=$(()=>s.models?.find(he=>he.id===s.status?.modelId)),m=$(()=>Vi(p.value)),h=$(()=>ji(p.value)),w=$(()=>Xo(p.value,s.thinking)),I=$(()=>h.value.includes(w.value)?w.value:""),v=$(()=>h.value.map(he=>({value:he,label:Fa(he)}))),f=$(()=>s.planMode===!0),_=$(()=>s.swarmMode===!0),g=$(()=>s.supermoonMode===!0),b=$(()=>{const he=s.status.permission;return he==="yolo"?"var(--color-warning)":he==="auto"?"var(--color-danger)":"var(--color-text-muted)"}),y=$(()=>{const he=s.status.permission,V=n(he==="yolo"?"mobile.permYoloSub":he==="auto"?"mobile.permAutoSub":"mobile.permManualSub");return`${he} · ${V}`}),E=$(()=>s.status.ctxMax>0?Math.min(100,Math.max(0,Math.ceil(s.status.ctxUsed/s.status.ctxMax*100))):0),S=$(()=>s.status.ctxMax>0?`${ds(s.status.ctxUsed)}/${ds(s.status.ctxMax)}`:n("status.statusNone"));function O(he){o("setThinking",wl(p.value,he))}function D(){const he=u.indexOf(s.status.permission),V=u[(he+1)%u.length];o("setPermission",V)}function T(){o("pickModel"),o("update:modelValue",!1)}function L(){o("login"),o("update:modelValue",!1)}function F(){o("logout"),o("update:modelValue",!1)}const H=Zi(),k=x("main"),P=x([]),R=x(!1),se=x(!1),ae=x(""),ve=x("archived-desc");async function me(){if(!R.value){R.value=!0,se.value=!1;try{const he=[];let V;for(;;){const Q=await H.loadArchivedSessions({beforeId:V,pageSize:DF});if(he.push(...Q.items),!Q.hasMore||Q.items.length===0)break;const Ce=Q.items.at(-1)?.id;if(Ce===void 0)break;V=Ce}P.value=he,se.value=!0}catch(he){console.warn("loadAllArchived failed",he)}finally{R.value=!1}}}function Z(){k.value="archived",ae.value="",me()}function oe(){k.value="main"}const ie=$(()=>{const he=ae.value.trim().toLowerCase();let V=P.value.filter(Q=>Q.archived===!0);return he&&(V=V.filter(Q=>Q.title.toLowerCase().includes(he))),V=V.slice(),ve.value==="archived-desc"?V.sort((Q,Ce)=>Ce.updatedAt.localeCompare(Q.updatedAt)):ve.value==="created-desc"?V.sort((Q,Ce)=>Ce.createdAt.localeCompare(Q.createdAt)):V.sort((Q,Ce)=>Q.title.localeCompare(Ce.title,"zh")),V});async function ke(he){await H.restoreSession(he)&&(P.value=P.value.filter(Q=>Q.id!==he))}function $e(he){const V=new Date(he);if(Number.isNaN(V.getTime()))return he;const Q=Ce=>String(Ce).padStart(2,"0");return`${V.getFullYear()}-${Q(V.getMonth()+1)}-${Q(V.getDate())} ${Q(V.getHours())}:${Q(V.getMinutes())}`}return Oe(()=>s.modelValue,he=>{he||(k.value="main")}),(he,V)=>(a(),G(Sd,{"model-value":e.modelValue,title:l(n)("mobile.settingsTitle"),"onUpdate:modelValue":V[7]||(V[7]=Q=>o("update:modelValue",Q))},{default:W(()=>[k.value==="main"?(a(),c(ge,{key:0},[r("div",Iz,d(l(n)("mobile.groupSession")),1),r("button",{type:"button",class:"srow",onClick:T},[r("span",Az,[r("span",Tz,d(l(n)("status.statusModel")),1),r("span",Pz,d(e.status.model),1)]),V[8]||(V[8]=r("span",{class:"chev"},"›",-1))]),r("div",Ez,[r("span",Lz,[r("span",Bz,d(l(n)("status.statusThinking")),1),m.value==="unsupported"?(a(),c("span",Rz,d(l(n)("status.modeNotSupported")),1)):A("",!0)]),h.value.length>1?(a(),G(cn,{key:0,"model-value":I.value,options:v.value,size:"sm","onUpdate:modelValue":O},null,8,["model-value","options"])):(a(),c("span",{key:1,class:fe(["srow-val",{dim:w.value==="off"}])},d(w.value==="off"?l(n)("status.planOff"):l(Fa)(w.value)),3))]),r("div",Oz,d(l(n)("status.cacheNote")),1),r("button",{type:"button",class:"srow",onClick:V[0]||(V[0]=Q=>o("togglePlan"))},[r("span",Dz,[r("span",zz,d(l(n)("status.statusPlanMode")),1),r("span",Fz,d(l(n)("mobile.planModeSub")),1)]),r("span",{class:fe(["toggle",{on:f.value}]),role:"switch","aria-checked":f.value},null,10,Nz)]),r("button",{type:"button",class:"srow",onClick:V[1]||(V[1]=Q=>o("toggleSwarm"))},[r("span",qz,[r("span",Wz,d(l(n)("status.statusSwarmMode")),1),r("span",Hz,d(l(n)("mobile.swarmModeSub")),1)]),r("span",{class:fe(["toggle",{on:_.value}]),role:"switch","aria-checked":_.value},null,10,Uz)]),r("button",{type:"button",class:"srow",onClick:V[2]||(V[2]=Q=>o("toggleSupermoon"))},[r("span",Vz,[r("span",jz,d(l(n)("status.statusSupermoonMode")),1),r("span",Kz,d(l(n)("mobile.supermoonModeSub")),1)]),r("span",{class:fe(["toggle",{on:g.value}]),role:"switch","aria-checked":g.value},null,10,Gz)]),r("button",{type:"button",class:"srow",onClick:D},[r("span",Qz,[r("span",Yz,d(l(n)("status.statusPermission")),1),r("span",{class:"srow-sub",style:rt({color:b.value})},d(y.value),5)]),V[9]||(V[9]=r("span",{class:"chev"},"›",-1))]),r("div",Zz,[r("span",Xz,[r("span",Jz,d(l(n)("status.statusContext")),1),r("span",eF,d(S.value),1)]),r("span",{class:"ctx-meter","aria-label":S.value},[r("i",{style:rt({width:E.value+"%"})},null,4)],8,tF)]),r("div",nF,d(l(n)("mobile.groupApp")),1),r("button",{type:"button",class:"srow",onClick:Z},[r("span",sF,[r("span",oF,d(l(n)("mobile.archivedSessions")),1),r("span",iF,d(l(n)("mobile.archivedSessionsSub")),1)]),V[10]||(V[10]=r("span",{class:"chev"},"›",-1))]),r("div",aF,[r("span",lF,[r("span",rF,d(l(n)("theme.colorSchemeLabel")),1)]),M(cn,{"model-value":e.colorScheme??"system",options:[{value:"light",label:l(n)("theme.light")},{value:"dark",label:l(n)("theme.dark")},{value:"system",label:l(n)("theme.system")}],"onUpdate:modelValue":i},null,8,["model-value","options"])]),r("div",uF,[r("span",cF,[r("span",dF,d(l(n)("sidebar.language")),1)]),M(bd)]),r("div",pF,[r("span",fF,[r("span",mF,d(l(n)("settings.uiFontSize")),1)]),r("label",vF,[r("input",{class:"num-input",type:"number",min:"12",max:"20",step:"1",value:e.uiFontSize,"aria-label":l(n)("settings.uiFontSize"),onInput:V[3]||(V[3]=Q=>o("setUiFontSize",Number(Q.target.value)))},null,40,hF),V[11]||(V[11]=r("span",{class:"num-unit"},"px",-1))])]),r("button",{type:"button",class:"srow",onClick:V[4]||(V[4]=Q=>o("setConversationToc",!e.conversationToc))},[r("span",gF,[r("span",yF,d(l(n)("settings.conversationToc")),1),r("span",kF,d(l(n)("settings.conversationTocHint")),1)]),r("span",{class:fe(["toggle",{on:e.conversationToc}]),role:"switch","aria-checked":e.conversationToc},null,10,bF)]),e.authReady?(a(),c("button",{key:0,type:"button",class:"srow acct out",onClick:F},[r("span",wF,[r("span",SF,d(l(n)("sidebar.signOut")),1)])])):(a(),c("button",{key:1,type:"button",class:"srow acct in",onClick:L},[r("span",CF,[r("span",_F,d(l(n)("sidebar.signIn")),1)])])),e.serverVersion?(a(),c("div",$F,[r("span",MF,[r("span",xF,d(l(n)("settings.serverVersion")),1)]),r("span",IF,d(e.serverVersion),1)])):A("",!0)],64)):(a(),c(ge,{key:1},[r("div",AF,[r("button",{type:"button",class:"arch-back",onClick:oe},[V[12]||(V[12]=r("span",{class:"chev back"},"‹",-1)),ue(" "+d(l(n)("mobile.archivedBack")),1)]),r("span",TF,d(l(n)("mobile.sessionCount",{n:ie.value.length})),1)]),r("div",PF,[M(Un,{class:"arch-search-input","model-value":ae.value,size:"sm",placeholder:l(n)("settings.archivedSearch"),"onUpdate:modelValue":V[5]||(V[5]=Q=>ae.value=Q)},null,8,["model-value","placeholder"]),M(cn,{size:"sm","model-value":ve.value,options:[{value:"archived-desc",label:l(n)("settings.archivedSortArchived")},{value:"created-desc",label:l(n)("settings.archivedSortCreated")},{value:"name-asc",label:l(n)("settings.archivedSortName")}],"onUpdate:modelValue":V[6]||(V[6]=Q=>ve.value=Q)},null,8,["model-value","options"])]),R.value?(a(),c("div",EF,d(l(n)("settings.archivedLoadingAll")),1)):ie.value.length>0?(a(!0),c(ge,{key:1},Te(ie.value,Q=>(a(),c("div",{key:Q.id,class:"arch-row"},[r("div",LF,[r("div",BF,d(Q.title),1),r("div",RF,d(l(n)("settings.archivedAt",{time:$e(Q.updatedAt)})),1)]),M(Ne,{variant:"secondary",size:"sm",onClick:Ce=>ke(Q.id)},{default:W(()=>[ue(d(l(n)("settings.archivedRestore")),1)]),_:1},8,["onClick"])]))),128)):(a(),c("div",OF,d(P.value.length===0?l(n)("settings.archivedEmpty"):l(n)("settings.archivedNoMatch")),1))],64))]),_:1},8,["model-value","title"]))}}),FF=Pe(zF,[["__scopeId","data-v-5ba9962c"]]),NF={class:"ob-brand"},qF={class:"ob-brand-text"},WF={class:"ob-title"},HF={class:"ob-sub"},UF={class:"ob-sec"},VF={class:"ob-label"},jF={class:"ob-sec"},KF={class:"ob-label"},GF={class:"ob-sec"},QF={class:"ob-label"},YF=xe({__name:"Onboarding",emits:["complete","skip"],setup(e,{emit:t}){const n=t,{t:s,locale:o}=We(),{colorScheme:i,accent:u,setColorScheme:p,setAccent:m}=Ju();function h(I){o.value!==I&&Au(I)}function w(){n("complete")}return(I,v)=>(a(),G(ps,{open:!0,size:"md","close-on-overlay":!1,"close-on-esc":!1,onClose:v[3]||(v[3]=f=>n("skip"))},{head:W(()=>[r("div",NF,[v[4]||(v[4]=r("svg",{class:"ob-logo",viewBox:"0 0 32 22",fill:"none",xmlns:"http://www.w3.org/2000/svg",role:"img","aria-label":"Kimi Code"},[r("defs",null,[r("mask",{id:"obKimiEyes",maskUnits:"userSpaceOnUse"},[r("rect",{x:"0",y:"0",width:"32",height:"22",fill:"#fff"}),r("g",{class:"ob-eyes",fill:"#000"},[r("rect",{class:"ob-eye",x:"11.8",y:"7",width:"2.8",height:"8",rx:"1.4"}),r("rect",{class:"ob-eye",x:"17.4",y:"7",width:"2.8",height:"8",rx:"1.4"})])])]),r("rect",{x:"1",y:"1",width:"30",height:"20",rx:"6",fill:"var(--color-accent)",mask:"url(#obKimiEyes)"})],-1)),r("div",qF,[r("div",WF,d(l(s)("onboarding.title")),1),r("div",HF,d(l(s)("onboarding.subtitle")),1)])])]),default:W(()=>[r("section",UF,[r("div",VF,d(l(s)("onboarding.languageLabel")),1),M(cn,{"model-value":l(o),options:l(Iu).map(f=>({value:f.code,label:f.label})),"onUpdate:modelValue":v[0]||(v[0]=f=>h(f))},null,8,["model-value","options"])]),r("section",jF,[r("div",KF,d(l(s)("theme.colorSchemeLabel")),1),M(cn,{"model-value":l(i),options:[{value:"light",label:l(s)("theme.light")},{value:"dark",label:l(s)("theme.dark")},{value:"system",label:l(s)("theme.system")}],"onUpdate:modelValue":v[1]||(v[1]=f=>l(p)(f))},null,8,["model-value","options"])]),r("section",GF,[r("div",QF,d(l(s)("theme.accentLabel")),1),M(cn,{"model-value":l(u),options:[{value:"blue",label:l(s)("theme.accentBlue")},{value:"mono",label:l(s)("theme.accentBlack")}],"onUpdate:modelValue":v[2]||(v[2]=f=>l(m)(f))},null,8,["model-value","options"])]),M(Ne,{variant:"primary",size:"lg",class:"ob-start",onClick:w},{default:W(()=>[ue(d(l(s)("onboarding.start")),1)]),_:1})]),_:1}))}}),ZF=Pe(YF,[["__scopeId","data-v-fbdd3eab"]]),XF=["aria-label"],JF={class:"gload-box"},eN={class:"gload-text"},tN={key:0,class:"gload-issue"},nN={class:"gload-issue-detail"},sN=xe({__name:"GlobalLoading",props:{issue:{}},setup(e){const{t}=We();return(n,s)=>(a(),c("div",{class:"gload",role:"status","aria-label":l(t)("app.connecting")},[r("div",JF,[s[0]||(s[0]=tl(' ',1)),M(qt,{size:"md",label:l(t)("app.connecting")},null,8,["label"]),r("div",eN,d(l(t)("app.connecting")),1),e.issue?(a(),c("div",tN,[r("div",null,d(l(t)("app.connectRetrying")),1),r("div",nN,d(e.issue),1)])):A("",!0)])],8,XF))}}),oN=Pe(sN,[["__scopeId","data-v-0b6dec6a"]]),iN={class:"kap-root"},aN={class:"kap-head"},lN={class:"kap-count"},rN={class:"kap-head-actions"},uN={class:"kap-filters"},cN=["value"],dN={class:"kap-check"},pN={class:"kap-check"},fN={class:"kap-view-toggle",role:"group"},mN={key:0,class:"kap-empty"},vN=["onClick"],hN={class:"kap-ts"},gN={class:"kap-label"},yN={key:0,class:"kap-detail"},kN={class:"kap-detail-actions"},bN=["onClick"],wN={key:1,class:"kap-agg"},SN={class:"mono"},CN={class:"mono"},_N={class:"num"},$N={class:"num"},MN={key:0},xN={class:"mono"},IN={class:"num"},AN={class:"num"},TN={key:0},PN=xe({__name:"KapDebugView",emits:["close"],setup(e,{emit:t}){const n=t,s=x("all"),o=x(""),i=x(""),u=x(!1),p=x("timeline"),m=$(()=>(ol.value,[..._0()])),h=$(()=>{const H=new Set;for(const k of m.value)k.sessionId&&H.add(k.sessionId);return[...H].sort()});function w(H){return H.kind==="rest:error"||H.code!==void 0&&H.code!==0||H.eventType==="error"||H.eventType==="parse-error"}const I=$(()=>{const H=o.value.trim().toLowerCase();return m.value.filter(k=>!(s.value!=="all"&&k.source!==s.value||i.value&&k.sessionId!==i.value||u.value&&!w(k)||H&&!`${k.label} ${k.kind} ${k.eventType??""} ${k.sessionId??""} ${k.requestId??""}`.toLowerCase().includes(H)))}),v=$(()=>{const H=new Map;for(const k of I.value){if(k.kind!=="ws:in"&&k.kind!=="ws:out")continue;const P=k.kind==="ws:in"?"←":"→",R=`${P} ${k.eventType??"?"} @ ${k.sessionId??"-"}`,se=H.get(R)??{key:R,sessionId:k.sessionId??"-",eventType:k.eventType??"?",dir:P,count:0};se.count++,k.seq!==void 0&&(se.lastSeq=k.seq),H.set(R,se)}return[...H.values()].sort((k,P)=>P.count-k.count)}),f=$(()=>{const H=new Map;for(const k of I.value){if(k.source!=="rest"||k.kind==="rest:request")continue;const P=`${k.method??"?"} ${k.path??"?"}`,R=H.get(P)??{count:0,errors:0,totalMs:0,timed:0};R.count++,w(k)&&R.errors++,k.durationMs!==void 0&&(R.totalMs+=k.durationMs,R.timed++),H.set(P,R)}return[...H.entries()].map(([k,P])=>({key:k,count:P.count,errors:P.errors,avgMs:P.timed>0?Math.round(P.totalMs/P.timed):0})).sort((k,P)=>P.count-k.count)}),_=x(null),g=x(!0),b=x(null),y=x(null);Oe(()=>I.value.length,async()=>{if(!g.value||p.value!=="timeline")return;await Ue();const H=b.value;H&&(H.scrollTop=H.scrollHeight)});function E(H){_.value=_.value===H?null:H}function S(H){const k=new Date(H),P=(R,se=2)=>String(R).padStart(se,"0");return`${P(k.getHours())}:${P(k.getMinutes())}:${P(k.getSeconds())}.${P(k.getMilliseconds(),3)}`}function O(H){return JSON.stringify(H,null,2)}async function D(H){await un(O(H))&&(y.value=H.id,setTimeout(()=>{y.value===H.id&&(y.value=null)},1500))}function T(){Eu(I.value)}function L(H){return w(H)||H.source==="client"?"b-err":H.source==="rest"?"b-rest":H.kind==="ws:lifecycle"?"b-life":H.kind==="ws:out"?"b-out":"b-in"}function F(H){return H.source==="rest"?"REST":H.source==="client"?"APP":"WS"}return(H,k)=>(a(),c("section",iN,[r("header",aN,[k[11]||(k[11]=r("strong",null,"KAP debug",-1)),r("span",lN,d(I.value.length)+"/"+d(m.value.length),1),r("div",rN,[r("button",{type:"button",class:fe({on:l(Vo)}),onClick:k[0]||(k[0]=P=>Vo.value=!l(Vo))},d(l(Vo)?"resume":"pause"),3),r("button",{type:"button",onClick:k[1]||(k[1]=P=>l($0)())},"clear"),r("button",{type:"button",onClick:k[2]||(k[2]=P=>T())},"export jsonl"),M(nt,{text:"Close window"},{default:W(()=>[r("button",{type:"button",onClick:k[3]||(k[3]=P=>n("close"))},"✕")]),_:1})])]),r("div",uN,[ht(r("select",{"onUpdate:modelValue":k[4]||(k[4]=P=>s.value=P),"aria-label":"Source filter"},[...k[12]||(k[12]=[r("option",{value:"all"},"rest + ws + app",-1),r("option",{value:"rest"},"rest",-1),r("option",{value:"ws"},"ws",-1),r("option",{value:"client"},"app errors",-1)])],512),[[Rl,s.value]]),ht(r("select",{"onUpdate:modelValue":k[5]||(k[5]=P=>i.value=P),"aria-label":"Session filter"},[k[13]||(k[13]=r("option",{value:""},"all sessions",-1)),(a(!0),c(ge,null,Te(h.value,P=>(a(),c("option",{key:P,value:P},d(P),9,cN))),128))],512),[[Rl,i.value]]),ht(r("input",{"onUpdate:modelValue":k[6]||(k[6]=P=>o.value=P),type:"text",placeholder:"filter (type / path / id)","aria-label":"Text filter"},null,512),[[On,o.value]]),r("label",dN,[ht(r("input",{"onUpdate:modelValue":k[7]||(k[7]=P=>u.value=P),type:"checkbox"},null,512),[[Ol,u.value]]),k[14]||(k[14]=ue(" errors",-1))]),r("label",pN,[ht(r("input",{"onUpdate:modelValue":k[8]||(k[8]=P=>g.value=P),type:"checkbox"},null,512),[[Ol,g.value]]),k[15]||(k[15]=ue(" follow",-1))]),r("div",fN,[r("button",{type:"button",class:fe({on:p.value==="timeline"}),onClick:k[9]||(k[9]=P=>p.value="timeline")},"timeline",2),r("button",{type:"button",class:fe({on:p.value==="aggregate"}),onClick:k[10]||(k[10]=P=>p.value="aggregate")},"aggregate",2)])]),p.value==="timeline"?(a(),c("div",{key:0,ref_key:"listRef",ref:b,class:"kap-list"},[I.value.length===0?(a(),c("div",mN," No trace entries yet. REST calls and WS frames will appear here. ")):A("",!0),(a(!0),c(ge,null,Te(I.value,P=>(a(),c("div",{key:P.id,class:"kap-row-wrap"},[r("button",{type:"button",class:fe(["kap-row",{expanded:_.value===P.id}]),onClick:R=>E(P.id)},[r("span",hN,d(S(P.ts)),1),r("span",{class:fe(["kap-badge",L(P)])},d(F(P)),3),r("span",gN,d(P.label),1)],10,vN),_.value===P.id?(a(),c("div",yN,[r("div",kN,[r("button",{type:"button",onClick:R=>D(P)},d(y.value===P.id?"copied ✓":"copy json"),9,bN)]),r("pre",null,d(O(P)),1)])):A("",!0)]))),128))],512)):(a(),c("div",wN,[k[20]||(k[20]=r("h4",null,"WS frames by session / type",-1)),r("table",null,[k[17]||(k[17]=r("thead",null,[r("tr",null,[r("th",null,"dir"),r("th",null,"type"),r("th",null,"session"),r("th",null,"count"),r("th",null,"last seq")])],-1)),r("tbody",null,[(a(!0),c(ge,null,Te(v.value,P=>(a(),c("tr",{key:P.key},[r("td",null,d(P.dir),1),r("td",SN,d(P.eventType),1),r("td",CN,d(P.sessionId),1),r("td",_N,d(P.count),1),r("td",$N,d(P.lastSeq??"—"),1)]))),128)),v.value.length===0?(a(),c("tr",MN,[...k[16]||(k[16]=[r("td",{colspan:"5",class:"kap-empty"},"no ws frames",-1)])])):A("",!0)])]),k[21]||(k[21]=r("h4",null,"REST by endpoint",-1)),r("table",null,[k[19]||(k[19]=r("thead",null,[r("tr",null,[r("th",null,"endpoint"),r("th",null,"count"),r("th",null,"errors"),r("th",null,"avg ms")])],-1)),r("tbody",null,[(a(!0),c(ge,null,Te(f.value,P=>(a(),c("tr",{key:P.key},[r("td",xN,d(P.key),1),r("td",IN,d(P.count),1),r("td",{class:fe(["num",{err:P.errors>0}])},d(P.errors),3),r("td",AN,d(P.avgMs),1)]))),128)),f.value.length===0?(a(),c("tr",TN,[...k[18]||(k[18]=[r("td",{colspan:"4",class:"kap-empty"},"no rest calls",-1)])])):A("",!0)])])]))]))}}),EN=Pe(PN,[["__scopeId","data-v-3cda6fe3"]]),LN=xe({__name:"DebugPanel",setup(e){const t=x(!1);let n=null,s=null,o=null;const i=["data-color-scheme","data-accent"];function u(w){const I=document.documentElement,v=w.documentElement;for(const f of i){const _=I.getAttribute(f);_!==null?v.setAttribute(f,_):v.removeAttribute(f)}}function p(w){const I=w.document;I.title="KAP debug";const v=I.createElement("base");v.href=location.href,I.head.appendChild(v);for(const _ of Array.from(document.querySelectorAll('style, link[rel="stylesheet"]')))I.head.appendChild(_.cloneNode(!0));u(I),I.body.style.margin="0";const f=I.createElement("div");return f.style.height="100vh",I.body.appendChild(f),f}function m(){o?.disconnect(),o=null;try{s?.unmount()}catch{}s=null,n=null,t.value=!1}function h(){if(n&&!n.closed){n.focus();return}const w=window.open("","kap-debug","popup=yes,width=1040,height=760");if(!w)return;n=w;const I=p(w),v=hu(EN,{onClose:()=>w.close()});v.mount(I),s=v,t.value=!0,o=new MutationObserver(()=>{n&&!n.closed&&u(n.document)}),o.observe(document.documentElement,{attributes:!0,attributeFilter:[...i]}),w.addEventListener("pagehide",m),w.addEventListener("beforeunload",m)}return mt(()=>{h()}),Tn(()=>{n&&!n.closed&&n.close(),m()}),(w,I)=>(a(),G(nt,{text:t.value?"Focus KAP debug window":"Open KAP debug window"},{default:W(()=>[r("button",{class:"kap-fab",type:"button",onClick:h}," KAP ")]),_:1},8,["text"]))}}),BN=Pe(LN,[["__scopeId","data-v-21346738"]]);function RN({client:e,authLogoRef:t}){const n=$(()=>e.authReady.value),s=$(()=>e.initialized.value&&!n.value),o="/login",i=x(null);let u=null;function p(){return typeof window>"u"?"/":`${window.location.pathname}${window.location.search}${window.location.hash}`}function m(w){typeof window>"u"||window.history.replaceState(window.history.state,"",w)}Oe(s,w=>{if(!(typeof window>"u")){if(w){window.location.pathname!==o&&(i.value=p(),m(o));return}window.location.pathname===o&&(m(i.value??"/"),i.value=null)}},{immediate:!0});function h(){const w=t.value;w&&(w.classList.remove("blink-now"),w.getBoundingClientRect(),w.classList.add("blink-now"),u!==null&&clearTimeout(u),u=setTimeout(()=>{u=null,w.classList.remove("blink-now")},300))}return yt(()=>{u!==null&&clearTimeout(u)}),{showAuthGate:s,blinkAuthLogo:h}}function ON({running:e,showAuthGate:t}){const{t:n}=We(),s=["◐","◓","◑","◒"],o=x(0);let i=null;function u(){i===null&&(o.value=0,i=setInterval(()=>{o.value=(o.value+1)%s.length},250))}function p(){i!==null&&(clearInterval(i),i=null),o.value=0}Oe(e,h=>{h?u():p()},{immediate:!0});const m=$(()=>{const h=e.value?`${s[o.value]} `:"";return t.value?`${h}${n("app.authPageTitle")} - Kimi Code Web`:`${h}Kimi Code Web`});Pd(()=>{typeof document<"u"&&(document.title=m.value)}),yt(()=>{p()})}const Cd=x(typeof window>"u"?0:window.innerWidth);let Ci=0,Hi=!1;function Ja(){Cd.value=window.innerWidth}function DN(){Hi||typeof window>"u"||(window.addEventListener("resize",Ja),Hi=!0,Ja())}function zN(){!Hi||typeof window>"u"||(window.removeEventListener("resize",Ja),Hi=!1)}function _d(e,t,n){return Math.max(t,e-n)}function el(e,t,n){return Math.min(n,Math.max(t,e))}function $d(){return mt(()=>{Ci+=1,DN()}),Tn(()=>{Ci=Math.max(0,Ci-1),Ci===0&&zN()}),{viewportWidth:Cd}}const FN="kimi-web.file-preview-width",$o=320;function NN({client:e,sideWidth:t,detailTarget:n,closeFilePreview:s}){const{viewportWidth:o}=$d(),i=$(()=>Math.max(0,o.value-t.value)),u=$(()=>_d(i.value,$o,$o));function p(B){return el(Math.round(B),$o,u.value)}function m(){return p(i.value/2)}const h=$(()=>m()),w=x(h.value),I=$(()=>el(w.value,$o,u.value)),v=x(null),f=$(()=>{const B=v.value;if(!B)return null;const Ee=e.turns.value.find(Le=>Le.id===B.turnId)?.blocks?.[B.blockIndex];return Ee?.kind==="thinking"?Ee.thinking:null}),_=$(()=>f.value!==null);function g(B){const J=v.value;if(J&&J.turnId===B.turnId&&J.blockIndex===B.blockIndex){v.value=null,n.value==="thinking"&&(n.value=null);return}n.value="thinking",v.value=B}function b(){v.value=null,n.value==="thinking"&&(n.value=null)}const y=x(null),E=$(()=>{const B=y.value;if(!B)return null;const J=e.turns.value.find(Ee=>Ee.id===B.turnId);return J?.role==="compaction"&&J.text?J.text:null}),S=$(()=>E.value!==null);function O(B){if(y.value?.turnId===B.turnId){y.value=null,n.value==="compaction"&&(n.value=null);return}n.value="compaction",y.value=B}function D(){y.value=null,n.value==="compaction"&&(n.value=null)}const T=x(null);function L(B){const J=e.activeAppTasks.value,Ee=J.find(it=>it.id===B)??J.find(it=>it.parentToolCallId===B);if(Ee)return Ee.id;const Le=J.filter(it=>it.kind==="subagent"&&!it.parentToolCallId);if(Le.length===1)return Le[0].id}const F=$(()=>{const B=T.value;if(!B)return null;const J=e.activeAppTasks.value.find(Ee=>Ee.id===B.subagentId);return J?Ub(J):null}),H=$(()=>F.value!==null);function k(B){const J=L(B);if(J){if(T.value?.subagentId===J){T.value=null,n.value==="agent"&&(n.value=null);return}T.value={subagentId:J},n.value="agent"}}function P(){T.value=null,n.value==="agent"&&(n.value=null)}const R=x(null),se=$(()=>{const B=R.value;if(!B)return null;const J=BC(e.turns.value,B);return J?{id:B,title:Vs(J.name),path:LC(J.arg),lines:J.status==="error"?null:Gc(J),output:J.output}:null}),ae=$(()=>se.value!==null);function ve(B){if(n.value==="toolDiff"&&R.value===B){me();return}n.value="toolDiff",R.value=B}function me(){R.value=null,n.value==="toolDiff"&&(n.value=null)}const Z=x("list"),oe=x(null);function ie(){if(n.value==="diff"){ke();return}n.value="diff",Z.value="list",oe.value=null;const B=e.activeSessionId.value;B&&e.loadGitStatus(B)}function ke(){n.value==="diff"&&(n.value=null),Z.value="list",oe.value=null,e.clearFileDiff()}async function $e(B){Z.value="detail",oe.value=B,await e.loadFileDiff(B)}async function he(B){!e.activeSessionId.value&&e.activeWorkspaceId.value?await e.startSessionAndOpenSideChat(e.activeWorkspaceId.value,B):await e.openSideChat(B),n.value="btw"}function V(){e.closeSideChat(),n.value==="btw"&&(n.value=null)}function Q(){n.value==="btw"&&(n.value=null)}const Ce=$(()=>e.sideChatVisible.value),re=$(()=>n.value!==null&&(n.value!=="thinking"||_.value)&&(n.value!=="compaction"||S.value)&&(n.value!=="agent"||H.value)&&(n.value!=="toolDiff"||ae.value)&&(n.value!=="btw"||Ce.value)),ee=x(!1),pe=x({});function De(){switch(n.value){case"thinking":return v.value?{kind:"thinking",...v.value}:null;case"compaction":return y.value?{kind:"compaction",...y.value}:null;case"agent":return T.value?{kind:"agent",...T.value}:null;case"toolDiff":return R.value?{kind:"toolDiff",toolId:R.value}:null;case"btw":return{kind:"btw"};default:return null}}function X(B){if(B)switch(B.kind){case"thinking":v.value={turnId:B.turnId,blockIndex:B.blockIndex},n.value="thinking";break;case"compaction":y.value={turnId:B.turnId},n.value="compaction";break;case"agent":T.value={subagentId:B.subagentId},n.value="agent";break;case"toolDiff":R.value=B.toolId,n.value="toolDiff";break;case"btw":e.sideChatVisible.value&&(n.value="btw");break}}function Y(){return n.value==="thinking"&&_.value?(b(),!0):n.value==="compaction"&&S.value?(D(),!0):n.value==="agent"&&H.value?(P(),!0):n.value==="toolDiff"&&ae.value?(me(),!0):n.value==="file"?(s(),!0):n.value==="diff"?(ke(),!0):n.value==="btw"?(V(),!0):!1}return Oe(e.activeSessionId,(B,J)=>{if(J){const Ee=De();Ee?pe.value[J]=Ee:delete pe.value[J]}s(),b(),D(),P(),me(),ke(),Q(),B&&X(pe.value[B])}),{PREVIEW_WIDTH_KEY:FN,PREVIEW_MIN:$o,previewDefaultWidth:h,previewMax:u,previewWidth:w,previewPanelWidth:I,thinkingPanelText:f,thinkingVisible:_,openThinkingPanel:g,closeThinkingPanel:b,compactionPanelText:E,compactionPanelVisible:S,openCompactionPanel:O,closeCompactionPanel:D,agentPanelMember:F,agentPanelVisible:H,openAgentPanel:k,closeAgentPanel:P,toolDiffTarget:se,toolDiffVisible:ae,openToolDiff:ve,closeToolDiff:me,detailDiffMode:Z,detailDiffPath:oe,openDiffDetail:ie,closeDiffDetail:ke,selectDiffFile:$e,btwVisible:Ce,openSideChatTab:he,closeSideChat:V,hideSideChatPanel:Q,sidePanelVisible:re,panelDragging:ee,closeOpenSidePanel:Y}}const qN=qe.sidebarWidth,du=qe.sidebarCollapsed,pu=270,Ia=220,WN=480,HN=320;function UN(e={}){const{viewportWidth:t}=$d(),n=x(pu),s=x(!1),o=x(null),i=x(!1),u=$(()=>{const v=HN+(Wo(e.previewOpen)?$o:0);return Math.min(WN,_d(t.value,Ia,v))}),p=$(()=>el(n.value,Ia,u.value)),m=$(()=>Wo(e.isNarrow)?o.value??!0:s.value);function h(){try{s.value=$t(du)==="true"}catch{s.value=!1}}function w(){try{Ot(du,String(s.value))}catch{}}Oe(()=>Wo(e.isNarrow),v=>{v||(o.value=null)},{flush:"sync"});function I(){if(Wo(e.isNarrow)){o.value=!m.value;return}s.value=!s.value,w()}return{SIDEBAR_WIDTH_KEY:qN,SIDEBAR_DEFAULT:pu,SIDEBAR_MIN:Ia,sidebarMax:u,sessionColWidth:n,effectiveSidebarCollapsed:m,sidebarCollapsed:s,sidebarDragging:i,sideWidth:p,loadSidebarCollapsed:h,toggleSidebarCollapse:I}}const VN=640,jN=`(max-width: ${VN}px)`;function KN(){const e=x(!1);if(typeof window>"u"||typeof window.matchMedia!="function")return e;const t=window.matchMedia(jN);e.value=t.matches;const n=s=>{e.value=s.matches};return typeof t.addEventListener=="function"?(t.addEventListener("change",n),yt(()=>t.removeEventListener("change",n))):typeof t.addListener=="function"&&(t.addListener(n),yt(()=>t.removeListener(n))),e}function GN(){const e=x(!1),t=I9(x9,n=>{e.value=n});return yt(t),e}const QN={class:"server-auth-overlay",role:"dialog","aria-modal":"true","aria-labelledby":"server-auth-title"},YN={class:"server-auth-card"},ZN={class:"server-auth-head"},XN={id:"server-auth-title",class:"server-auth-title"},JN={class:"server-auth-hint"},eq={class:"server-auth-body"},tq={class:"server-auth-foot"},nq=xe({__name:"ServerAuthDialog",setup(e){const{t}=We(),n=x(""),s=x(null),o=x(!1);mt(()=>{Ue(()=>s.value?.focus())});function i(){const p=n.value;!p||o.value||(o.value=!0,Hu(p),window.location.reload())}function u(p){p.key==="Enter"&&(p.preventDefault(),i())}return(p,m)=>(a(),c("div",QN,[r("div",YN,[r("div",ZN,[r("h1",XN,d(l(t)("serverAuth.title")),1),r("p",JN,d(l(t)("serverAuth.hint",{password:"KIMI_CODE_PASSWORD"})),1)]),r("div",eq,[M(Un,{ref_key:"inputRef",ref:s,modelValue:n.value,"onUpdate:modelValue":m[0]||(m[0]=h=>n.value=h),type:"password",autocomplete:"current-password",placeholder:l(t)("serverAuth.placeholder"),disabled:o.value,onKeydown:u},null,8,["modelValue","placeholder","disabled"])]),r("div",tq,[M(Ne,{variant:"primary",disabled:!n.value||o.value,loading:o.value,onClick:i},{default:W(()=>[ue(d(o.value?l(t)("serverAuth.connecting"):l(t)("serverAuth.connect")),1)]),_:1},8,["disabled","loading"])])])]))}}),sq=Pe(nq,[["__scopeId","data-v-469e14bc"]]),oq=["aria-label"],iq=xe({__name:"InternalBuildBanner",setup(e){const{t}=We(),n=l3;return(s,o)=>l(n)?(a(),c("span",{key:0,class:"internal-build-tag",role:"note","aria-label":l(t)("app.internalBuildBanner")},[M(le,{name:"alert-triangle",size:"sm","aria-hidden":"true"}),r("span",null,d(l(t)("app.internalBuildBanner")),1)],8,oq)):A("",!0)}}),aq=Pe(iq,[["__scopeId","data-v-086c00dc"]]),lq={class:"app-shell"},rq={key:1,class:"auth-page"},uq={class:"auth-page-inner"},cq={class:"auth-page-copy"},dq=["aria-label","aria-hidden"],pq=xe({__name:"App",setup(e){Ny();const t=x(!1);let n=null;const s=Zi(),o=$(()=>!s.dangerousBypassAuth.value&&t.value);xo("resolveImage",s.resolveImageUrl),xo("resolveSwarmMembers",Ie=>s.swarmMembersByToolCallId.value.get(Ie)??[]);const{t:i}=We(),{confirm:u}=vo(),p=es(),m=KN(),h=GN(),w=x(!1),I=x(!1),v=$(()=>{const Ie=s.activeSessionId.value;return s.sessions.value.find(j=>j.id===Ie)?.title??""}),f=$(()=>s.visibleWorkspace.value?.sessionCount??0),_=$(()=>s.activity.value!=="idle"),g=x(null),{showAuthGate:b,blinkAuthLogo:y}=RN({client:s,authLogoRef:g});ON({running:_,showAuthGate:b});function E(Ie){const j=s.models.value.find(Qn=>Qn.id===s.status.value.modelId),ne=ji(j),kt=ne.indexOf(Xo(j,Ie)),Gn=ne[(kt+1)%ne.length]??ne[0]??"off";return wl(j,Gn)}const S=$(()=>{const Ie=s.models.value.find(j=>j.id===s.status.value.modelId);return Xo(Ie,s.thinking.value)}),O=x(!s.onboarded.value);function D(){s.setOnboarded(!0),O.value=!1}function T(){O.value=!0}let L=0;function F(){const Ie=window.visualViewport,j=document.documentElement.style;j.setProperty("--app-height",`${Ie?.height??window.innerHeight}px`),j.setProperty("--app-top",`${Ie?.offsetTop??0}px`)}function H(){L||(L=requestAnimationFrame(()=>{L=0,F()}))}mt(()=>{n=Hy(()=>{t.value=!0,s.clearDangerousBypassAuth()}),s.load(),Ee(),F(),window.visualViewport?.addEventListener("resize",H),window.visualViewport?.addEventListener("scroll",H),window.addEventListener("resize",H),document.addEventListener("keydown",k,!0)}),yt(()=>{document.removeEventListener("keydown",k,!0),window.visualViewport?.removeEventListener("resize",H),window.visualViewport?.removeEventListener("scroll",H),window.removeEventListener("resize",H),L&&(cancelAnimationFrame(L),L=0),document.documentElement.style.removeProperty("--app-height"),document.documentElement.style.removeProperty("--app-top"),n!==null&&(n(),n=null)});function k(Ie){Ie.key==="Escape"&&(Se.value||ns()&&(Ie.stopPropagation(),Ie.preventDefault()))}const P=x(null),R=x(!1);Oe(s.activeSessionId,()=>{R.value=!0,Ue(()=>{R.value=!1})});const{previewTarget:se,previewFile:ae,previewLoading:ve,previewError:me,previewDownloadUrl:Z,previewExternalActions:oe,openFilePreview:ie,closeFilePreview:ke,openPreviewInEditor:$e,revealPreviewFile:he}=zL({client:s,detailTarget:P}),V=FL(),Q=$(()=>m.value||h.value),Ce=$(()=>P.value!==null&&!Q.value),{SIDEBAR_WIDTH_KEY:re,SIDEBAR_DEFAULT:ee,SIDEBAR_MIN:pe,sidebarMax:De,sessionColWidth:X,effectiveSidebarCollapsed:Y,sidebarDragging:B,sideWidth:J,loadSidebarCollapsed:Ee,toggleSidebarCollapse:Le}=UN({previewOpen:Ce,isNarrow:h}),{PREVIEW_WIDTH_KEY:it,PREVIEW_MIN:at,previewDefaultWidth:Ge,previewMax:je,previewWidth:He,previewPanelWidth:Mt,thinkingPanelText:wt,thinkingVisible:xt,openThinkingPanel:Jt,closeThinkingPanel:Vt,compactionPanelText:Dt,compactionPanelVisible:ts,openCompactionPanel:on,closeCompactionPanel:ut,agentPanelMember:zt,openAgentPanel:En,closeAgentPanel:St,toolDiffTarget:Mn,openToolDiff:Yt,closeToolDiff:xn,detailDiffMode:It,detailDiffPath:an,openDiffDetail:dn,closeDiffDetail:vn,selectDiffFile:Zt,btwVisible:Dn,openSideChatTab:pn,closeSideChat:Vn,sidePanelVisible:en,panelDragging:Ln,closeOpenSidePanel:ns}=NN({client:s,sideWidth:J,detailTarget:P,closeFilePreview:ke}),Wt=x(null),At=x(!1),Tt=x(!1),Xt=x(!1),Ft=x(!1),st=x(!1),vt=x(!1),jt=x(null),Pt=x(null),Se=$(()=>So.value>0||At.value||Tt.value||Xt.value||Ft.value||st.value||vt.value||O.value||w.value||I.value),be=x(!1),Ve=x(!1),Qe=x(!1),lt=x(!1),Et=x(!1);async function Lt(){be.value=!0,Ve.value=!1,At.value=!0;try{await s.refreshAllProviders()}catch{Ve.value=!0}finally{be.value=!1}}async function Kt(){Qe.value=!0,lt.value=!1,Tt.value=!0;try{await s.loadProviders()}catch{lt.value=!0}finally{Qe.value=!1}}function tn(){Xt.value=!0}async function nn(Ie){At.value=!1,await Bn(Ie)}async function Bn(Ie){await s.setModel(Ie)&&Ie!==s.defaultModel.value&&s.updateConfig({defaultModel:Ie})}async function js(Ie){await s.addProvider(Ie)}async function fs(Ie){await s.refreshProvider(Ie)}async function ss(Ie){await s.importCatalogProvider(Ie)}async function jn(Ie){await s.importRegistry(Ie)}async function hn(Ie){await u({title:i("sidebar.archive"),message:i("sidebar.archiveConfirm"),variant:"danger",action:()=>s.archiveSession(Ie)})}async function gn(Ie){const j=s.workspacesView.value.find(ne=>ne.id===Ie)?.name??Ie;await u({title:i("sidebar.removeWorkspace"),message:i("workspace.removeWorkspaceConfirm",{name:j}),variant:"danger",action:()=>s.deleteWorkspace(Ie)})}async function Ht(Ie){await u({title:i("providers.delete"),message:i("providers.confirmDelete"),variant:"danger",action:()=>s.deleteProvider(Ie)})}async function yn(Ie){Et.value=!0;try{await s.updateConfig(Ie)&&await s.checkAuth()}finally{Et.value=!1}}async function Gt(){return s.startOAuthLogin()}async function Kn(){return s.pollOAuthLogin()}async function ms(){return s.cancelOAuthLogin()}async function kn(){Xt.value=!1,await s.checkAuth(),await s.load()}async function vs(Ie){await s.undo(1),await Ue(),Wt.value?.loadComposerForEdit(Ie.text,Ie.attachments)}function zn(Ie){if(Ie.skillActivation?.name){s.activateSkill(Ie.skillActivation.name,Ie.skillActivation.args);return}const j=(Ie.attachments??[]).filter(ne=>ne.fileId!==void 0).map(ne=>({fileId:ne.fileId,kind:ne.kind,name:ne.name,mediaType:ne.mediaType,size:ne.size}));s.sendPrompt(Ie.text,j)}function hs(Ie,j){if(Ie==="/compact"||Ie.startsWith("/compact ")){s.compact(Ie.slice(8).trim()||void 0);return}if(Ie==="/swarm"||Ie.startsWith("/swarm ")){const ne=Ie.slice(6).trim();ne==="on"?s.setSwarmMode(!0):ne==="off"?s.setSwarmMode(!1):ne?(s.setSwarmMode(!0),s.sendPrompt(ne)):s.toggleSwarmMode();return}if(Ie==="/goal"||Ie.startsWith("/goal ")){const ne=Ie.slice(5).trim();ne==="pause"||ne==="resume"||ne==="cancel"?s.controlGoal(ne):ne?s.createGoal(ne):s.setGoalMode(!0);return}if(Ie==="/btw"||Ie.startsWith("/btw ")){const ne=Ie.slice(4).trim();!ne&&s.sideChatVisible.value?Vn():pn(ne||void 0);return}switch(Ie){case"/new":case"/clear":Nn();break;case"/fork":s.forkSession();break;case"/export":s.exportSession();break;case"/undo":s.undo();break;case"/plan":s.armPlanMode();break;case"/auto":s.setPermission("auto");break;case"/yolo":s.setPermission("yolo");break;case"/thinking":s.setThinking(E(s.thinking.value));break;case"/status":st.value=!0;break;case"/login":tn();break;default:{const ne=Ie.indexOf(" "),kt=f9((ne===-1?Ie:Ie.slice(0,ne)).slice(1)),Gn=ne===-1?void 0:Ie.slice(ne+1).trim()||void 0;if(!kt)break;!s.activeSessionId.value&&s.activeWorkspaceId.value?s.startSessionAndActivateSkill(s.activeWorkspaceId.value,kt,Gn,j):s.activateSkill(kt,Gn,void 0,j);break}}}function Fn(Ie){s.unqueue(Ie)}function Ts(Ie){s.unqueue(Ie)}function os(Ie){s.reorderQueue(Ie.from,Ie.to)}async function is(Ie){const j=s.activeWorkspaceId.value;if(!s.activeSessionId.value&&j){await s.startSessionAndSendPrompt(j,Ie.text,Ie.attachments);return}if(!s.activeSessionId.value&&!j){jt.value=Ie,Ft.value=!0;return}s.sendPrompt(Ie.text,Ie.attachments)}async function gs(Ie){if(Pt.value=null,!await s.addWorkspaceByPath(Ie)){Pt.value=i("workspace.addFailed");return}Ft.value=!1;const ne=jt.value;jt.value=null;const kt=s.activeWorkspaceId.value;ne&&kt&&await s.startSessionAndSendPrompt(kt,ne.text,ne.attachments)}function Ps(){jt.value=null,Pt.value=null,Ft.value=!1}function Es(){Ue(()=>{Wt.value?.focusComposer()})}function Nn(){const Ie=s.activeWorkspaceId.value;Ie?s.openWorkspaceDraft(Ie):s.clearActiveSession(),Es()}function ys(Ie){s.openWorkspaceDraft(Ie),Es()}function Rn(Ie){Ie&&window.open(Ie,"_blank","noopener")}return(Ie,j)=>(a(),c("div",lq,[o.value?(a(),G(sq,{key:0})):A("",!0),l(b)?(a(),c("section",rq,[r("div",uq,[(a(),c("svg",{ref_key:"authLogoRef",ref:g,class:"auth-page-logo ch-logo",viewBox:"0 0 32 22",fill:"none",xmlns:"http://www.w3.org/2000/svg",role:"img","aria-label":"Kimi Code",onMousedown:j[0]||(j[0]=Re(()=>{},["prevent"])),onClick:j[1]||(j[1]=(...ne)=>l(y)&&l(y)(...ne))},[...j[103]||(j[103]=[tl(' ',2)])],544)),r("div",cq,[r("h1",null,d(l(i)("app.authPageTitle")),1),r("p",null,d(l(i)("app.authPageMessage")),1)]),M(Ne,{class:"auth-page-btn",variant:"primary",onClick:tn},{default:W(()=>[M(le,{name:"log-in",size:"md"}),r("span",null,d(l(i)("app.authPageLogin")),1)]),_:1})])])):(a(),c("div",{key:2,class:fe(["app",{mobile:l(m),"sidebar-collapsed":l(Y)&&!l(m),"macos-desktop":l(Po)}]),style:rt({"--preview-w":l(Mt)+"px"})},[l(m)?(a(),G(oz,{key:1,workspace:l(s).visibleWorkspace.value,"session-title":v.value,running:_.value,branch:l(s).status.value.branch,"session-count":f.value,onOpenSwitcher:j[19]||(j[19]=ne=>w.value=!0),onOpenSettings:j[20]||(j[20]=ne=>I.value=!0)},null,8,["workspace","session-title","running","branch","session-count"])):(a(),c(ge,{key:0},[M(D3,{collapsed:l(Y),dragging:l(B),"col-width":l(J),"active-workspace":l(s).visibleWorkspace.value,"active-workspace-id":l(s).activeWorkspaceId.value,sessions:l(s).sessionsForView.value,groups:l(s).workspaceGroups.value,"pinned-session-ids":l(s).pinnedSessionIds.value,"active-id":l(s).activeSessionId.value,"attention-by-session":l(s).attentionBySession.value,"pending-by-session":l(s).pendingBySession.value,"unread-by-session":l(s).unreadBySession.value,"workspace-sort-mode":l(s).workspaceSortMode.value,backend:l(s).backend.value,onSelect:j[2]||(j[2]=ne=>l(s).selectSession(ne)),onCreate:Nn,onCreateInWorkspace:j[3]||(j[3]=ne=>ys(ne)),onSelectWorkspace:j[4]||(j[4]=ne=>l(s).openWorkspace(ne)),onAddWorkspace:j[5]||(j[5]=ne=>Ft.value=!0),onRename:j[6]||(j[6]=(ne,kt)=>l(s).renameSession(ne,kt)),onArchive:j[7]||(j[7]=ne=>hn(ne)),onFork:j[8]||(j[8]=ne=>l(s).forkSession(ne)),onExport:j[9]||(j[9]=ne=>l(s).exportSession(ne)),onRenameWorkspace:j[10]||(j[10]=(ne,kt)=>l(s).renameWorkspace(ne,kt)),onDeleteWorkspace:j[11]||(j[11]=ne=>gn(ne)),onReorderWorkspaces:j[12]||(j[12]=ne=>l(s).reorderWorkspaces(ne)),onSetWorkspaceSortMode:j[13]||(j[13]=ne=>l(s).setWorkspaceSortMode(ne)),onLoadMoreSessions:j[14]||(j[14]=ne=>void l(s).loadMoreSessions(ne)),onLoadAllSessions:j[15]||(j[15]=ne=>void l(s).loadAllSessions()),onOpenSettings:j[16]||(j[16]=ne=>vt.value=!0),onCollapse:l(Le)},null,8,["collapsed","dragging","col-width","active-workspace","active-workspace-id","sessions","groups","pinned-session-ids","active-id","attention-by-session","pending-by-session","unread-by-session","workspace-sort-mode","backend","onCollapse"]),ht(M(Rr,{class:"side-handle","storage-key":l(re),"default-width":l(ee),min:l(pe),max:l(De),"onUpdate:width":j[17]||(j[17]=ne=>X.value=ne),"onUpdate:dragging":j[18]||(j[18]=ne=>B.value=ne)},null,8,["storage-key","default-width","min","max"]),[[Xn,!l(Y)]])],64)),M(sA,{ref_key:"conversationPaneRef",ref:Wt,mobile:l(m),turns:l(s).turns.value,"session-id":l(s).activeSessionId.value,approvals:l(s).pendingApprovals.value,changes:l(s).changes.value,"git-info":l(s).gitInfo.value,tasks:l(s).tasks.value,todos:l(s).todos.value,goal:l(s).goal.value,"activation-badges":l(s).activationBadges.value,status:l(s).status.value,thinking:l(s).thinking.value,"plan-mode":l(s).planMode.value,"plan-armed":l(s).planArmed.value,"swarm-mode":l(s).swarmMode.value,"supermoon-mode":l(s).supermoonMode.value,"goal-mode":l(s).goalMode.value,models:l(s).models.value,"starred-ids":l(s).starredModelIds.value,skills:l(s).skills.value,questions:l(s).questions.value,"pending-question-actions":l(s).pendingQuestionActions,"pending-approval-actions":l(s).pendingApprovalActions,running:_.value,"turn-active":l(s).turnActive.value,queued:l(s).queued.value,"search-files":l(s).searchFiles,"upload-image":l(s).uploadImage,working:l(s).working.value,"model-retry":l(s).modelRetry.value,starting:l(s).isStartingFirstPrompt.value,"fast-moon":l(s).fastMoon.value,"file-reload-key":l(s).activeSessionId.value,"session-loading":l(s).sessionLoading.value,compaction:l(s).compaction.value,"has-more-messages":l(s).hasMoreMessages.value,"loading-more":l(s).loadingMoreMessages.value,"loading-more-error":l(s).loadMoreMessagesError.value,"load-older-messages":l(s).loadOlderMessages,"workspace-name":l(s).visibleWorkspace.value?.name,"workspace-root":l(s).visibleWorkspace.value?.root??l(s).status.value.cwd,"git-diff-stats":l(s).gitDiffStats.value,workspaces:l(s).workspacesView.value,"active-workspace-id":l(s).activeWorkspaceId.value,"session-title":v.value,terminal:l(s).terminal,pr:l(s).activePullRequest.value,"conversation-toc":l(s).conversationToc.value,onOpenChanges:j[21]||(j[21]=ne=>l(dn)()),onSelectWorkspace:j[22]||(j[22]=ne=>ys(ne)),onAddWorkspace:j[23]||(j[23]=ne=>Ft.value=!0),onOpenPr:Rn,onSubmit:j[24]||(j[24]=ne=>is(ne)),onSteer:j[25]||(j[25]=ne=>l(s).steerPrompt(ne.text,ne.attachments)),onApproval:j[26]||(j[26]=(ne,kt)=>l(s).respondApproval(ne,kt)),onCancelTask:j[27]||(j[27]=ne=>l(s).cancelTask(ne)),onAnswer:j[28]||(j[28]=(ne,kt)=>l(s).respondQuestion(ne,kt)),onDismiss:j[29]||(j[29]=ne=>l(s).dismissQuestion(ne)),onCommand:hs,onInterrupt:j[30]||(j[30]=ne=>l(s).abortCurrentPrompt()),onUnqueue:Fn,onEditQueued:Ts,onReorderQueue:os,onSetPermission:j[31]||(j[31]=ne=>l(s).setPermission(ne)),onSetThinking:j[32]||(j[32]=ne=>l(s).setThinking(ne)),onTogglePlan:j[33]||(j[33]=ne=>l(s).togglePlanArm()),onToggleSwarm:j[34]||(j[34]=ne=>l(s).toggleSwarmMode()),onToggleSupermoon:j[35]||(j[35]=ne=>l(s).toggleSupermoonMode()),onToggleGoal:j[36]||(j[36]=ne=>l(s).toggleGoalMode()),onDismissPlan:j[37]||(j[37]=ne=>l(s).dismissPlanMode()),onControlGoal:j[38]||(j[38]=ne=>l(s).controlGoal(ne)),onRefreshGitStatus:j[39]||(j[39]=ne=>l(s).activeSessionId.value&&l(s).loadGitStatus(l(s).activeSessionId.value)),onRenameSession:j[40]||(j[40]=(ne,kt)=>l(s).renameSession(ne,kt)),onForkSession:j[41]||(j[41]=ne=>l(s).forkSession(ne)),onArchiveSession:j[42]||(j[42]=ne=>hn(ne)),onExportSession:j[43]||(j[43]=ne=>l(s).exportSession(ne)),onCompact:j[44]||(j[44]=ne=>l(s).compact()),onPickModel:j[45]||(j[45]=ne=>Lt()),onSelectModel:j[46]||(j[46]=ne=>Bn(ne)),onOpenFile:j[47]||(j[47]=ne=>l(ie)(ne)),onOpenMedia:j[48]||(j[48]=ne=>l(V).open(ne)),onOpenThinking:j[49]||(j[49]=ne=>l(Jt)(ne)),onOpenCompaction:j[50]||(j[50]=ne=>l(on)(ne)),onOpenAgent:j[51]||(j[51]=ne=>l(En)(ne)),onOpenToolDiff:j[52]||(j[52]=ne=>l(Yt)(ne)),onEditMessage:vs,onResumeTurn:zn},null,8,["mobile","turns","session-id","approvals","changes","git-info","tasks","todos","goal","activation-badges","status","thinking","plan-mode","plan-armed","swarm-mode","supermoon-mode","goal-mode","models","starred-ids","skills","questions","pending-question-actions","pending-approval-actions","running","turn-active","queued","search-files","upload-image","working","model-retry","starting","fast-moon","file-reload-key","session-loading","compaction","has-more-messages","loading-more","loading-more-error","load-older-messages","workspace-name","workspace-root","git-diff-stats","workspaces","active-workspace-id","session-title","terminal","pr","conversation-toc"]),!l(m)&&(l(Po)||l(Y))?(a(),G(et,{key:2,class:"sidebar-toggle-btn",size:"sm",label:l(Y)?l(i)("sidebar.expandSidebar"):l(i)("sidebar.collapseSidebar"),onClick:l(Le)},{default:W(()=>[M(le,{name:l(Y)?"panel-expand":"panel-collapse"},null,8,["name"])]),_:1},8,["label","onClick"])):A("",!0),l(en)&&!Q.value?(a(),G(Rr,{key:3,class:"preview-handle","storage-key":l(it),"default-width":l(Ge),min:l(at),max:l(je),reverse:"","aria-label":l(i)("layout.resizePreviewAria"),"onUpdate:width":j[53]||(j[53]=ne=>He.value=ne),"onUpdate:dragging":j[54]||(j[54]=ne=>Ln.value=ne)},null,8,["storage-key","default-width","min","max","aria-label"])):A("",!0),!Q.value||l(en)?(a(),c("aside",{key:4,class:fe(["global-preview",{open:l(en),overlay:Q.value,"no-anim":l(Ln)||R.value}]),role:"complementary","aria-label":l(i)("layout.detailPanelAria"),"aria-hidden":!l(en)},[P.value==="thinking"&&l(xt)?(a(),G(su,{key:0,text:l(wt)??"",onClose:l(Vt)},null,8,["text","onClose"])):P.value==="compaction"&&l(ts)?(a(),G(su,{key:1,text:l(Dt)??"",subtitle:l(i)("conversation.summaryTitle"),onClose:l(ut)},null,8,["text","subtitle","onClose"])):P.value==="agent"&&l(zt)?(a(),G(PT,{key:2,member:l(zt),onClose:l(St)},null,8,["member","onClose"])):P.value==="btw"&&l(Dn)?(a(),G(sP,{key:3,turns:l(s).sideChatTurns.value,running:l(s).sideChatRunning.value,sending:l(s).sideChatSending.value,onSend:j[55]||(j[55]=ne=>l(s).sendSideChatPrompt(ne)),onClose:l(Vn)},null,8,["turns","running","sending","onClose"])):P.value==="diff"?(a(),G(EP,{key:4,mode:l(It),changes:l(s).changes.value,"git-info":l(s).gitInfo.value,"file-diff":l(s).fileDiff.value,"selected-diff-path":l(s).selectedDiffPath.value,"file-diff-loading":l(s).fileDiffLoading.value,closable:"",onOpen:l(Zt),onBack:j[56]||(j[56]=ne=>{It.value="list",an.value=null,l(s).clearFileDiff()}),onClose:l(vn)},null,8,["mode","changes","git-info","file-diff","selected-diff-path","file-diff-loading","onOpen","onClose"])):P.value==="toolDiff"&&l(Mn)?(a(),G(QT,{key:5,target:l(Mn),onClose:l(xn)},null,8,["target","onClose"])):P.value==="file"?(a(),G(rT,{key:6,file:l(ae),loading:l(ve),error:l(me),line:l(se)?.line,"download-url":l(Z),closable:"","external-actions":l(oe),"open-file":l(ie),onClose:l(ke),onOpenExternal:l($e),onReveal:l(he)},null,8,["file","loading","error","line","download-url","external-actions","open-file","onClose","onOpenExternal","onReveal"])):A("",!0)],10,dq)):A("",!0),M(aq,{class:"internal-build-fab"}),At.value?(a(),G(QP,{key:5,models:l(s).models.value,current:l(s).status.value.modelId,"starred-ids":l(s).starredModelIds.value,loading:be.value,unavailable:Ve.value,onSelect:j[57]||(j[57]=ne=>nn(ne)),onToggleStar:j[58]||(j[58]=ne=>l(s).toggleStarModel(ne)),onClose:j[59]||(j[59]=ne=>At.value=!1)},null,8,["models","current","starred-ids","loading","unavailable"])):A("",!0),vt.value?(a(),G(DO,{key:6,"color-scheme":l(s).colorScheme.value,accent:l(s).accent.value,"ui-font-size":l(s).uiFontSize.value,"auth-ready":l(s).authReady.value,"account-model":l(s).defaultModel.value,notify:l(s).notifyOnComplete.value,"notify-question":l(s).notifyOnQuestion.value,"notify-approval":l(s).notifyOnApproval.value,"notify-permission":l(s).notifyPermission.value,sound:l(s).soundOnComplete.value,"conversation-toc":l(s).conversationToc.value,config:l(s).config.value,models:l(s).models.value,"config-saving":Et.value,"server-version":l(s).serverVersion.value,backend:l(s).backend.value,onSetColorScheme:j[60]||(j[60]=ne=>l(s).setColorScheme(ne)),onSetAccent:j[61]||(j[61]=ne=>l(s).setAccent(ne)),onSetUiFontSize:j[62]||(j[62]=ne=>l(s).setUiFontSize(ne)),onSetNotify:j[63]||(j[63]=ne=>l(s).setNotifyOnComplete(ne)),onSetNotifyQuestion:j[64]||(j[64]=ne=>l(s).setNotifyOnQuestion(ne)),onSetNotifyApproval:j[65]||(j[65]=ne=>l(s).setNotifyOnApproval(ne)),onSetSound:j[66]||(j[66]=ne=>l(s).setSoundOnComplete(ne)),onSetConversationToc:j[67]||(j[67]=ne=>l(s).setConversationToc(ne)),onUpdateConfig:j[68]||(j[68]=ne=>yn(ne)),onLogin:j[69]||(j[69]=()=>{vt.value=!1,tn()}),onLogout:l(s).logout,onOpenOnboarding:j[70]||(j[70]=()=>{vt.value=!1,T()}),onOpenProviders:j[71]||(j[71]=()=>{vt.value=!1,Kt()}),onClose:j[72]||(j[72]=ne=>vt.value=!1)},null,8,["color-scheme","accent","ui-font-size","auth-ready","account-model","notify","notify-question","notify-approval","notify-permission","sound","conversation-toc","config","models","config-saving","server-version","backend","onLogout"])):A("",!0),Tt.value?(a(),G(WE,{key:7,providers:l(s).providers.value,loading:Qe.value,unavailable:lt.value,onAdd:j[73]||(j[73]=ne=>js(ne)),onRefresh:j[74]||(j[74]=ne=>fs(ne)),onDelete:j[75]||(j[75]=ne=>Ht(ne)),onImportCatalog:j[76]||(j[76]=ne=>ss(ne)),onImportRegistry:j[77]||(j[77]=ne=>jn(ne)),onOpenLogin:j[78]||(j[78]=()=>{Tt.value=!1,tn()}),onClose:j[79]||(j[79]=ne=>Tt.value=!1)},null,8,["providers","loading","unavailable"])):A("",!0),st.value?(a(),G(DD,{key:8,status:l(s).status.value,thinking:S.value,"plan-mode":l(s).planMode.value,"swarm-mode":l(s).swarmMode.value,"supermoon-mode":l(s).supermoonMode.value,"cost-usd":l(s).sessionCost.value,onClose:j[80]||(j[80]=ne=>st.value=!1)},null,8,["status","thinking","plan-mode","swarm-mode","supermoon-mode","cost-usd"])):A("",!0),Ft.value?(a(),G(bD,{key:9,"browse-fs":l(s).browseFs,"get-fs-home":l(s).getFsHome,"default-path":l(s).visibleWorkspace.value?.root??l(s).status.value.cwd,error:Pt.value,onAdd:j[81]||(j[81]=ne=>gs(ne)),onClose:Ps},null,8,["browse-fs","get-fs-home","default-path","error"])):A("",!0),M(Yo,{name:"gload-fade"},{default:W(()=>[l(s).initialized.value?A("",!0):(a(),G(oN,{key:0,issue:l(s).connectIssue.value},null,8,["issue"]))]),_:1}),l(s).initialized.value&&O.value&&!l(b)?(a(),G(ZF,{key:10,onComplete:D,onSkip:D})):A("",!0),M(QD,{warnings:l(s).warnings.value,onDismiss:l(s).dismissWarning},null,8,["warnings","onDismiss"]),l(p)?(a(),G(BN,{key:11})):A("",!0),M(_D),l(m)?(a(),G(xz,{key:12,modelValue:w.value,"onUpdate:modelValue":j[82]||(j[82]=ne=>w.value=ne),groups:l(s).workspaceGroups.value,"active-workspace-id":l(s).activeWorkspaceId.value,"active-id":l(s).activeSessionId.value,"attention-by-session":l(s).attentionBySession.value,"attention-by-workspace":l(s).attentionByWorkspace.value,onSelect:j[83]||(j[83]=ne=>l(s).selectSession(ne)),onCreate:Nn,onCreateInWorkspace:j[84]||(j[84]=ne=>ys(ne)),onAddWorkspace:j[85]||(j[85]=ne=>Ft.value=!0),onRename:j[86]||(j[86]=(ne,kt)=>l(s).renameSession(ne,kt)),onArchive:j[87]||(j[87]=ne=>hn(ne)),onDeleteWorkspace:j[88]||(j[88]=ne=>gn(ne)),onLoadMore:j[89]||(j[89]=ne=>void l(s).loadMoreSessions(ne))},null,8,["modelValue","groups","active-workspace-id","active-id","attention-by-session","attention-by-workspace"])):A("",!0),l(m)?(a(),G(FF,{key:13,modelValue:I.value,"onUpdate:modelValue":j[90]||(j[90]=ne=>I.value=ne),status:l(s).status.value,thinking:l(s).thinking.value,models:l(s).models.value,"plan-mode":l(s).planMode.value,"swarm-mode":l(s).swarmMode.value,"supermoon-mode":l(s).supermoonMode.value,"color-scheme":l(s).colorScheme.value,"ui-font-size":l(s).uiFontSize.value,"auth-ready":l(s).authReady.value,"conversation-toc":l(s).conversationToc.value,"server-version":l(s).serverVersion.value,onPickModel:j[91]||(j[91]=ne=>Lt()),onSetThinking:j[92]||(j[92]=ne=>l(s).setThinking(ne)),onTogglePlan:j[93]||(j[93]=ne=>l(s).togglePlanMode()),onToggleSwarm:j[94]||(j[94]=ne=>l(s).toggleSwarmMode()),onToggleSupermoon:j[95]||(j[95]=ne=>l(s).toggleSupermoonMode()),onSetPermission:j[96]||(j[96]=ne=>l(s).setPermission(ne)),onSetColorScheme:j[97]||(j[97]=ne=>l(s).setColorScheme(ne)),onSetUiFontSize:j[98]||(j[98]=ne=>l(s).setUiFontSize(ne)),onSetConversationToc:j[99]||(j[99]=ne=>l(s).setConversationToc(ne)),onLogin:j[100]||(j[100]=()=>{I.value=!1,tn()}),onLogout:l(s).logout},null,8,["modelValue","status","thinking","models","plan-mode","swarm-mode","supermoon-mode","color-scheme","ui-font-size","auth-ready","conversation-toc","server-version","onLogout"])):A("",!0)],6)),Xt.value?(a(),G(kL,{key:3,"on-start-o-auth-login":Gt,"on-poll-o-auth-login":Kn,"on-cancel-o-auth-login":ms,onSuccess:kn,onClose:j[101]||(j[101]=ne=>Xt.value=!1)})):A("",!0),M(DL,{state:l(V).state.value,onClose:j[102]||(j[102]=ne=>l(V).close())},null,8,["state"])]))}}),fq=Pe(pq,[["__scopeId","data-v-489f3058"]]);P0();hu(fq).use(dt).mount("#app");export{gq as I,le as _,Pe as a};
diff --git a/apps/kimi-code/dist-web/index.html b/apps/kimi-code/dist-web/index.html
index 095e64c0ad..9d3bcb5737 100644
--- a/apps/kimi-code/dist-web/index.html
+++ b/apps/kimi-code/dist-web/index.html
@@ -14,14 +14,14 @@
the server's Content-Security-Policy forbids inline scripts. -->
Kimi Code Web
-
+
-
+